Programmering i C, 7,5 hp

Relevanta dokument
Föreläsning 4. Val, boolska värden, läsbarhet, osv

Loopar och datatyper. Föreläsning 3

Loopar och datatyper. Föreläsning 3

En kort text om programmering i C.

TDIU01 - Programmering i C++, grundkurs

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy cards. Slingor

Klassdeklaration. Metoddeklaration. Parameteröverföring

Data, typ, selektion, iteration

Uttryck och villkor. Föreläsning 2

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Operatorer Tilldelning Kodblock { } if satsen Logiska uttryck Att programmera

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Övningsuppgifter till föreläsning 2 Variabler och uttryck

Föreläsning 2. Variabler, tilldelning och kodblock{} if-satsen Logiska operatorer Andra operatorer Att programmera

Några småsaker. switch break, continue, goto Kommentarer

3 Styrning av programflöde. Här exekveras satserna enligt först sats1 sedan sats2 och sist sats3.

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,

Uttryck och villkor. Föreläsning 2

Switch, Array (fält) switch break, continue, goto (scary) Sammansatta tilldelningar Kommentarer Array Sortering

Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl 19. Omtentamen i Programmering C, 5p, fristående, kväll,

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Problemlösning. Veckodagsproblemet Gissa talet Siffersumman

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

Programmering, grundkurs, 8.0 hp HI1024, TEN1. Fredagen den 2 mars 2012

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

3.3 for-satsen. Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Föreläsning 3

Programmering, grundkurs, 8.0 hp HI1024, omtentamen, TEN1. Tisdagen den 7 juni 2011,

Programmering i C. Christer Sandberg, Gunilla Eken, Stefan Bygde Olof Andersson Linus Källberg Caroline Uppsäll Johan Hägg

Instuderingsfrågor, del B

1 Iteration. 1.1 for-satsen

Skriv i mån av plats dina lösningar direkt i tentamen. Skriv ditt kodnummer längst upp på varje blad.

Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl Tentamen i Programmering C, Fri, Kväll,

Programmeringsteknik med C och Matlab

Programmering, grundkurs, 8.0 hp HI1024, extra tentamen, TEN1, för TIDAA1. Fredagen den 11 mars 2011,

Problemlösning. Veckodagsproblemet Gissa talet Siffersumman

C++ Slumptalsfunktioner + switch-satsen

Outline. For. I istället för att följa det normala ordningen, man ändra den. I i Java får man inte göra hopp hur som helst

String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning

PROGRAMMERING 2 GRUNDLÄGGANDE SEMANTIK 4

Variabler och konstanter

Arrays (indicerade variabler) Föreläsning 6

Metodanrop - primitiva typer. Föreläsning 4. Metodanrop - referenstyper. Metodanrop - primitiva typer

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Strukturdiagram. Styra. Algoritmer. Val

Inledande programmering med C# (1DV402) Summera med while"-satsen

Johan Karlsson Datavetenskap för teknisk kemi, 10p, moment 1 Datavetenskap Umeå Universitet. Tentamen

2.1 Variabler. 2.2 Regler för namngivning i C. Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Föreläsning 2

C++ - En introduktion

En villkorssats är den konstruktion som finns i C++ för att göra en selektion av två alternativa sekvenser. Formen för if satsen är

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

F4. programmeringsteknik och Matlab

Lösningar till uppgifterna sätts ut på kurssidan på nätet idag kl Omtentamen i Programmering C, 5p, A1, D1, E1, Fri, Pr1, Te/Ek1,

Boken?!?! Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera och ett enkelt program Variabler printf

729G04 Programmering och diskret matematik. Python 3: Loopar

Enkla uppgifter. Uppgift 1. Uppgift 2

GPT föreläsning 8. Förra veckan: Man kan ta tiden på en sorterad teckensträng Förra gången: Problemlösning på lägre nivå kan sortera funktioner

Funktioner och programstruktur. Föreläsning 5

Villkor och tester. Utförande satser bygger upp metoderna, man brukar finindela detta i: sekvenser. Ett program består i princip av: selektioner (val)

*Pekarvärden *Pekarvariabler & *

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk:

Enkla datatyper minne

Imperativ programmering. Föreläsning 2

Numeriska Metoder och Grundläggande Programmering för P1, VT2014

Fråga 13. Skriv en loop som fyller arrayen int v[100] med talen

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010

Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: Fredagen den 21 oktober 2011,

Lösningar till uppgifterna sätts ut på kurssidan på nätet i dag kl Omtentamen i Programmering C, Fri, Kväll,

6.5 Spelserien Gissa tal

Vi programmerar Java!

Agenda (obs! halvdag)

TDIU01 - Programmering i C++, grundkurs

Blandat. Föreläsning 5

Visual Basic, en snabbgenomgång

Lösningsförslag till övningsuppgifter till föreläsning 6 Funktioner

Planering Programmering grundkurs HI1024 HT TIDAA

Multipel tilldelning. Introduktion till programmering D0009E. Föreläsning 6: Iteration. while-satsen. Kom ihåg. Snurror kontra rekursion

Objektorienterad programmering Föreläsning 2

JAVAUTVECKLING LEKTION 4

Tentamen ges för: Tentamensdatum: Tid:

TDDC76 - Programmering och Datastrukturer

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

Repetition C-programmering

Föreläsning 3: Booleans, if, switch

Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E. Föreläsning 4: Villkor och rekursion. Modulus-operatorn.

2 Pekare och dynamiska variabler.

Att komma igång. Föreläsning 1

Grundkurs i programmering, 6 hp (725G61) Dugga 1 tillfälle 3

Funktioner och programstruktur. Föreläsning 5

Introduktion C-programmering

Lösningar till uppgifterna sätts ut på kurssidan och på WebCT (Gamla Tentor) i dag kl 19. Tentamen i Programmering C, 5p, Distans, övriga,

Tentamen *:58/ID100V Programmering i C Exempel 3

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

GPT- föreläsning 10. För en vecka sedan Problemlösning på lägre nivå kan sortera funktioner Förra gången

Agenda. Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer. Övningar nu och då

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN1 - Teoretisk tentamen Tid: Torsdagen den 20 oktober 2011,

Lathund. Pacific C för MS-DOS

Komponentvisa operationer,.-notation Multiplikation (*), division (/) och upphöj till (ˆ) av vektorer följer vanliga vektoralgebraiska

6.1 Kompilering och lite grundläggande information

Transkript:

Programmering i C, 7,5 hp Föreläsning 4 VÄLKOMNA! 31

switch-satsen Antag att vi har en heltalsvariabel a som skall styra programflödet Antag vidare att a kan anta tex 5 olika värden 1,2,3,4,5 printf( Mata in ett tal i intervallet 1-5 > ); scanf( %d, &a); if (a == 1) /* OBS! Måsvingar saknas av utrymmesskäl */ printf( Hejsan\n ); else if (a == 2) printf( Godagens\n ); else if (a == 3) printf( Tjena\n ); else if (a == 4) printf( Hej\n ); else if (a == 5) printf( Angenämt\n ); else printf( Nämen nu blev det fel ); 32

switch-satsen (forts) Ett smidigare sätt är att använda switch-satsen int a; /* OBS! Koden är kompakt av utrymmesskäl */ printf( Mata in ett tal i intervallet 1-5 > ); scanf( %d, &a); switch(a) { case 1: printf( Hejsan\n ); break; case 2: printf( Godagens\n ); break; case 3: printf( Tjena\n ); break; case 4: printf( Hej\n ); break; case 5: printf( Angenämt\n ); break; default: printf( Nämen nu blev det fel\n ); break; 33

break-satsen Varför behövs break? Programflödet hoppar till det case som matchar det aktuella värdet på variabeln Därefter utförs alla satser som följer detta case Om vi inte vill det så måste vi uttryckligen tala om för datorn att den skall avbryta efter den aktuella case-satsen För att göra detta används break break är ett exempel på en styrsats som låter oss kontrollera programflödet 34

Mer om case-satsen case-variablen kan bara vara av typen int eller char Kom ihåg att använda default för att fånga upp alla andra värden switch-satsen använder sig av { Men satser efter respektive case behöver/bör oftast inte vara inrammade av { Exekvering forsätter tills ett break stöts på eller switchsatsen tar slut 35

Iteration För att programmeringsspråket C skall vara användbart måste man kunna uttrycka - sekvenser av satser - styra vilka satser som skall utföras beroende på vad som händer i programmet, dvs uttrycka val - upprepningar av satser (iteration) 36

for-satsen for-satsen låter oss upprepa andra satser flera gånger: int i; for (i = 1 ; i <= 5 ; i = i + 1) { printf( %d, i); Ovanstående kommer att skriva ut: 1 2 3 4 5 37

for-satsen (forts) [INIT] utförs en gång när for-satsen startas C-syntax for ( [INIT] ; [VILLKOR] ; [UPPDATERING] ) { [SATS]; for ( [INIT] ; [VILLKOR] ; [UPPDATERING] ) { SATS1; SATS2;... Efter varje test av [VILLKOR] som är sant kommer [SATS] att utföras Därefter kommer [UPPDATERING] att utföras och vi går tillbaks för att se om [VILLKOR] fortfarande är sant Allt inom hakparenteser kan utelämnas, men tänk på läsbarhet (är for-satsen då lämpligast?) 38

for-satsen - uppräkning I for-satsen använder vi oftast en loop-variabel för att ha kontroll på antalet varv Att räkna upp en variabel i med värdet 1 (dvs i = i + 1) kan istället skrivas i++ Att räkna ner en variabel med värdet 1 (dvs i=i-1)kan skrivas i-- int i; for (i = 4 ; i > 0 ; i--) { printf( %d, i); Ovanstående kommer att skriva ut: 4 3 2 1 39

for-satsen - block Satsen som skall utföras i varje iteration kan givetvis vara en sammansatt sats int sum = 0; for (int i = 0 ; i < 5 ; i++){ sum += i; printf( %d, sum); Att räkna upp en variabel sum med ett tal i kan skrivas sum += i Utskrift: 0 1 3 6 10 40

for-satsen uppdatering Uppdateringen av loop-variabeln behöver inte vara +1 eller -1 int main(void) { double meter; printf(" Fot Meter \n"); for (int foot = 50 ; foot > 0 ; foot -= 5) { meter = 0.3048 * foot; printf("%6d %6.2f\n", foot, meter); return 0; 41

for-satsen loop-variabeln Loop-variabeln behöver inte vara ett heltal for (double s = 1 ; s < 10 ; s *= 1.7) { printf( %f\n, s); som skriver ut: 1.000000 1.700000 2.890000 4.913000 42

Exempel Skriv ett program som skriver ut de n första raderna i x:ans multiplikationstabell int main(void) { int table_x = 4; int n = 5; for (int i = 1 ; i <= n ; i++) { printf("%2d * %2d = %3d\n", i, table_x, i * table_x); return 0; 43

while-satsen C-syntax: while ( VILLKOR ) { SATS; while ( VILLKOR ) { SATS1; SATS2;... for-satsen är mycket lämplig att använda när vi vet hur många varv vi vill iterera, om vi inte vet det kan vi använda while-satsen Så länge VILLKOR är sant utförs SATS VILLKOR testas innan SATS körs första gången 44

Vår uppgift med while-loop Skriv ett program som skriver ut de n första raderna i x:ans multiplikationstabell int main(void) { int i, table_x = 4, n = 5; i = 1; while (i <= n) { printf("%2d * %2d = %3d\n", i, table_x, i * table_x); i++; return 0; Kom ihåg att uppdatera variablerna i villkoret!!! 45

while-satsen oändliga loopar Se till att villkoret kan uppfyllas int a = 0; while (a < 10) { printf("i m stuck.\n "); 46

do-while satsen Ibland är det önskvärt att utföra satsen innan villkoret prövas Typfall är att kontrollera användarinmatningar och be om ett nytt värde om det första var fel på något sätt Detta kan man göra med do-while satsen C-syntax do { SATS; while ( VILLKOR ); do { SATS1; SATS2;... while ( VILLKOR ); 47

do-while satsen - exempel int n; do { printf("ange ett heltal i intervallet 0 till 100 > "); scanf("%d", &n); while ( n < 0 n > 100 ); printf( n = %d\n, n); Exempelkörning: Ange ett heltal i intervallet 0 till 100 > -5 Ange ett heltal i intervallet 0 till 100 > 345 Ange ett heltal i intervallet 0 till 100 > 34 n = 34 48

Vår uppgift med do-while Skriv ett program som skriver ut de n första raderna i x:ans multiplikationstabell int main(void) { int i, table_x = 4, n = 5; i = 1; do { printf("%2d * %2d = %3d\n", i, table_x, i * table_x); i++; while (i <= n); return 0; 49

Ackumulera en summa #include <stdio.h> int main(void) { int n, sum = 0; printf( \nskriv in positiva heltal så summerar jag\n ); printf("(avsluta med -1)\n\n"); n = 1; /* För att komma in i loopen */ while (n > 0) { printf("tal > ); scanf("%d", &n); if (n > 0) { sum += n; printf("\nsumman är %d\n\n", sum); return 0; 50

Ackumulera en summa - alternativ #include <stdio.h> int main(void) { int n, sum = 0; printf("\nskriv in positiva heltal så summerar jag\n ); printf("(avsluta med -1)\n\n"); do { printf("tal > ); scanf("%d", &n); if (n > 0) { sum += n; while (n > 0); printf("\nsumman är %d\n\n", sum); return 0; 51

Vanliga fel Glömma semikolon i for-satsen Glömma måsvingar Se upp med decimaltal vid test av villkor = istället för == i test av villkor Var försiktig med syntaktiskt socker i komplexa uttryck 52