Föreläsning 4 Val, boolska värden, läsbarhet, osv
Exempel /* Programmeringsteknik med C och Matlab Programmering i C HT13 Exempel Fil: plus_one.c Författare: Jonny Pettersson Användare: jonny Datum: 7 oktober 2013 Beskrivning: Ett enkelt program för att visa utskrift, inläsning, variabler och tilldelning till variabler. Inpt: Ett heltal. Output: Heltalet närmast efter det inlästa. Begränsning: Det finns ingen kontroll av input. */ #include <stdio.h> int main(void) { int n; /* Läs in ett heltal från användaren */ printf("skriv in ett heltal > "); scanf("%d", &n); /* Lägg till 1 till talet */ n = n + 1; /* Skriv ut det nya talet */ printf("talet efter ditt tal är %d \n", n); return 0; #include <stdio.h> int main(void) { int n; printf("skriv in ett heltal > "); scanf("%d", &n); n = n + 1; printf("talet efter ditt tal är %d\n", n); return 0;
#include <stdio.h> int main(void) { int n; /* Läs in ett heltal från användaren */ printf("skriv in ett heltal > "); scanf("%d", &n); /* Lägg till 1 till talet */ n = n + 1; /* Skriv ut det nya talet */ printf("talet efter ditt tal är %d\n", n); return 0;
Sanningstabell A B A && B A B!A Sant Sant Sant Sant Falskt Sant Falskt Falskt Sant Falskt Falskt Sant Falskt Sant Sant Falskt Falskt Falskt Falskt Sant
Mer komplexa uttryck # include <stdio.h> int main( void ){ int a = 1, b = 2, c = a; if (a == c b <= a && 2!= b){ printf("skrivs detta ut?\n"); if ((a == c b <= a) && 2!= b){ printf("eller det här?\n");
Prioritetsordning () Paranteser! Icke/negering * / % Multiplikation, division, modulo + - Addition, substraktion < <= >= Relationsoperatorer ==!= Likhet, olikhet && Logiskt och Logiskt eller = Tilldelning Om flera operatorer har samma prioritet utförs de från vänster till höger (OBS det finns fler)
int x = 10; if(x > 10) printf("större än 10"); if(x > 10){ printf("större än 10"); printf("eller hur"); if(x > 10) printf("större än 10"); printf("eller hur"); Detta är hur en if-sats ser ut i C, villkoret skrivs inom parenteser och nästa rad är den kod som ska utföras om villkoret var sant. Om det är flera saker som ska utföras måste måsvingar användas. Det som finns innanför dem utförs om det är sant. Vanligt fel - avsikten är att utföra två satser men det är inga måsvingar där!! Då blir det samma sak som if(x > 10) printf("större än 10"); printf("eller hur"); dvs den sista utskriften kommer alltid att ske!! Använd ALLTID måsvingar även om det bara är en sats
if-else if(villkor) /* Kod som utförs om villkoret är sant */ else /* Kod som utförs om villkoret är falskt */ /* Kod som alltid utförs */ Detta sätt att skriva lider av samma problem som jag nyss visade så jag råder er att skriva på detta sätt i stället if(villkor){ /* Kod som utförs om villkoret är sant */ else{ /* Kod som utförs om villkoret är falskt */ /* Kod som alltid utförs */
#include <stdio.h> int main(void) { int first, second; printf("skriv in ett heltal > "); scanf("%d", &first); printf("skriv in ett heltal till > "); scanf("%d", &second); if( first == second ){ printf("talen är lika\n"); else{ if( first < second ){ printf("det första talet är minst\n"); else{ printf("det andra talet är minst\n"); return 0;
#include <stdio.h> int main(void) { int first, second; printf("skriv in ett heltal > "); scanf("%d", &first); printf("skriv in ett heltal till > "); scanf("%d", &second); if( first == second ){ printf("talen är lika\n"); else if( first < second ){ printf("det första talet är minst\n"); else{ printf("det andra talet är minst\n"); return 0;
Sammansatta villkor if( n == 0 ){ if( m > 1 ){ printf("the number n is zero\n"); printf("the number m is greater than 1\n"); if( n == 0 && m > 1 ){ printf("the number n is zero\n"); printf("the number m is greater than 1\n");
Kolla vikten på en matkasse. Skriv ut att den är för tung om den väger mer är 30 kg. Om den väger mindre än 30 kg Tung, om den väger mindre än 5 kg Lätt och väger den mindre än 15 kg OK if( weight > 30 ){ printf("matkassen är för tung\n"); if( weight <= 30 ){ printf("matkassen är tung\n"); if( weight <= 5 ){ printf("matkassen är lätt\n"); if( weight <= 15 ){ printf("mattkassens vikt är OK\n"); Test: 32 kg: Matkassen är för tung 25 kg: Matkassen är tung 15 kg: Matkassen är tung och Mattkassens vikt är OK
if( weight > 30 ){ printf("matkassen är för tung\n"); if( weight > 15 && weight <= 30 ){ printf("matkassen är tung\n"); if( weight <= 5 ){ printf("matkassen är lätt\n"); if( weight > 5 && weight <= 15 ){ printf("mattkassens vikt är OK\n");
Byt strategi <= 5 <= 15 <= 30 > 30 if( weight <= 5 ){ printf("matkassen är lätt\n"); else if( weight <= 15 ){ printf("mattkassens vikt är OK\n"); else if( weight <= 30 ){ printf("matkassen är tung\n"); else{ printf("matkassen är för tung\n");
Ett annat problem med if printf("mata in ett tal i intervallet 1-5 > "); scanf("%d", &input); if (input == 1) printf("hejsan\n"); else if (input == 2) printf("godagens\n"); else if (input == 3) printf("tjena\n"); else if (input == 4) printf("hej\n"); else if (input == 5) printf("angenämt\n"); else printf("nämen nu blev det fel");
printf("mata in ett tal i intervallet 1-5 > "); scanf("%d", &input); switch(input) { case 1: printf("hejsan\n"); case 2: printf("godagens\n"); case 3: printf("tjena\n"); case 4: printf("hej\n"); case 5: printf("angenämt\n"); default: printf("nämen nu blev det fel\n");
switch(input) { case 1: printf("hejsan\n"); case 2: printf("godagens\n"); case 3: printf("tjena\n"); case 4: printf("hej\n"); case 5: printf("angenämt\n"); default: printf("nämen nu blev det fel\n");
switch(input) { case 1: printf("hejsan\n"); case 2: printf("godagens\n"); case 3: printf("tjena\n"); case 4: printf("hej\n"); case 5: printf("angenämt\n"); default: printf("nämen nu blev det fel\n");
switch(input) { case 1: printf("hejsan\n"); case 2: printf("godagens\n"); case 3: printf("tjena\n"); case 4: printf("hej\n"); case 5: printf("angenämt\n"); default: printf("nämen nu blev det fel\n");
Vanliga fel if( 0 <= x <= 4 ){ printf("alltid sant\n"); if( 0 <= x && x <= 4){ printf("bara om x är 0, 1, 2, 3 eller 4\n");
Vanliga fel a = 1; if( a = 3 ){ printf("detta skrivs alltid ut"); a = 0; if( a = 0 ){ printf("detta skrivs aldrig ut"); a = 1; if( a == 3 ){ printf("om a är 3"); a = 0; if( a == 0 ){ printf("om a är 0");
Vanliga fel if( a == 0) printf("hej "); printf("världen"); if( a == 0){ printf("hej "); printf("världen");