Blandat Föreläsning 5
Blandat switch break, continue, goto Kommentarer Problemlösning
switch int weekday; printf("mata in veckodagnummer 1-7: "); scanf("%d", &weekday); switch(weekday) { case 1: printf("monday\n"); break; case 2: printf("tuesday\n"); break; case 3: printf("wednesday\n"); break; case 4: printf("thursday\n"); break; case 5: printf("friday\n"); break; default: printf("weekend!\n"); } jmf: if(weekday==1) printf("monday\n"); else if(weekday==2) printf( Tuesday\n"); else if(weekday==3) printf( Wednesday\n"); else if(weekday==4) printf( Thursday\n"); else if(weekday==5) printf( Friday\n"); else printf( Weekend! \n ");
break Skrivs inuti en switch, for, while eller do-while sats När den exekveras hoppar programmet genast ut ur den sats (switch, for, while, do-while) den står i Med undantag för switch-satsen behöver den normalt inte användas int i=1,summa=0,tmp; for(i=0;i<10;i++) { printf("skriv in tal %d:",i); scanf("%d",&tmp); if(tmp==0) break; else summa = summa+tmp; } printf("summa:%d",summa);
continue Skrivs inuti en for, while eller do-while sats När den exekveras påbörjas ett nytt varv Finns egentligen aldrig en bra anledning att använda denna
goto Använd aldrig under några omständigheter denna sats! Möjligen kan användandet av goto tillfälligt under debugging vara motiverat men jag tycker att även här använder vi regel ett för att reglera användandet Den sammanlagda kostnaden för världen pga goto hann innan användandet begränsades överstiga kostnaden för NASA och CERN tillsammans! (källa: ingen alls men jag känner på mig att det stämmer)
Kommentarer Finns av två typer: //resten av raden ignoreras av kompilatorn /*kan löpa över flera rader och avslutas vid*/ OBS att den senare inte kan nästlas! Skall förklara koden men inte förklara sådant som man förstår om man förstår C. Man ska ha lagom många kommentarer! Endast genom övning lär man sig vilka kommentarer som behövs och vilka som är överflödiga. Till labbarna försök skriva de kommentarer du tror du behöver för att enkelt förstå koden om två veckor. Läs koden två veckor senare och se om det hade behövts fler kommentarer och om några var överflödiga.
Miniräknaren Konstruera en miniräknare som låter användaren addera, subtrahera, multiplicera eller dividera två tal valfritt antal gånger. Gör om miniräknaren så att användaren använder svaret från en beräkning i nästa beräkning
Steg 1 Skriv en start (hello world) och kompilera så att du vet att allt funkar
Steg 2 Fixa inläsningen av data ( vi väntar med att fixa så att man kan göra flera beräkningar till sist) Kontrollera att du lyckas läsas in dina indata!
Steg 3 Gör beräkningen baserat på indata
Steg 4 Ge användaren möjlighet att göra fler beräkningar
Steg 5 Använda svaret i nästa beräkning Nu ska vi göra om programmet så att det delvis löser en annan uppgift Det är vanligt att kunden ändrar sig under ett projekts gång. Det är när man ska införa ändringar man märker hur välskrivet programmet är. Ett bra program är modulärt uppbyggt och det är enkelt att göra ändringar utan att man behöver skriva om hela koden
Tändsticksspel Det finns ett tändsticksspel där man lägger upp 15 tändstickor på ett bord. Två spelare ska sedan turas om att ta en, två eller tre tändstickor. Den som tar den sista stickan vinner. Programmera ett program som låter användaren spela mot datorn. Extra för den som hinner och vill: Implementera en strategi där datorn vinner varje gång om denne får börja
Tändsticksspel I det här spelet för två spelare börjar spelarna med att det ligger femton tändstickor på bordet. Spelarna turas om att ta tändstickor från bordet. När en spelare ska ta tändstickor får hon välja mellan att ta 1, 2 eller 3 tändstickor. Den som tar sista stickan är vinnaren av partiet. Du ska skriva ett program som låter användaren spela detta spel mot datorn. Programmet ska slumpa vem som börjar. En körning bör kunna se ut så här: Valkommen till tandsticksspelet. Du vann lottningen och borjar. Hur manga stickor vill du ta? (1-3) 3 Datorn tar 1 stickor. Hur manga stickor vill du ta? (1-3) 1 Datorn tar 2 stickor. Hur manga stickor vill du ta? (1-3) 2 Datorn tar 2 stickor. Hur manga stickor vill du ta? (1-3) 1 Datorn tar 3 stickor. Datorn vann. Frivilligt: Datorn skall spela optimalt i mening att om den kan säkra en seger så skall den göra det. Det betyder bland annat att om datorn börjar kommer den alltid att vinna. Om den vid ett drag inte kan säkra segern får den göra valfritt drag.