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



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

Klassdeklaration. Metoddeklaration. Parameteröverföring

Programmering A. Johan Eliasson

Programmeringsteknik med C och Matlab

SMD 134 Objektorienterad programmering

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Parameteröverföring. Exempel. Exempel. Metodkropp

Heltal(int) Programmeringsteknik 54

PROGRAMMERING 2 GRUNDLÄGGANDE SEMANTIK 4

TDIU01 - Programmering i C++, grundkurs

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

Enkla datatyper minne

Föreläsning 1 & 2 INTRODUKTION

1 Datorn som miniräknare. 1.1 Räkneoperationer. 1.2 Variabler

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

Data, typ, selektion, iteration

TDIU01 - Programmering i C++, grundkurs

F4. programmeringsteknik och Matlab

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

Övning2. Variabler. Data typer

Föreläsning 7. Nyckelord I Java. Uttryck. Uttryck, Operatorer Och Kontrollflöden

Tentamen OOP

Heltalsrepresentation. Fler byggstenar. Overflow och Underflow. TvŒ-komplement. FlyttalsvŠrden. Fyra heltalstyper. Tecken-bit

1 Funktioner och procedurell abstraktion

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

Inledande programmering med C# (1DV402) 27+15=42 1 (22)

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser

Variabler och konstanter

Grundläggande programmering med C# 7,5 högskolepoäng

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

OOP Objekt-orienterad programmering

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

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

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

Skizz till en enkel databas

Språket Python - Del 1 Grundkurs i programmering med Python

Objektorienterad Programmering (TDDC77)

1 Texthantering. 1.1 Typen char. Exempel, skriv ut alfabetet

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

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

Operatorer Tilldelning Kodblock { } if satsen Logiska uttryck Att programmera

Tentamen i. för D1 m fl, även distanskursen. fredag 13 januari 2012

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

Exempel på ett litet Ada-program

Grunderna i stegkodsprogrammering

Programmering i C, 7,5 hp

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

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

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

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Beräkningsvetenskap föreläsning 2

Att använda pekare i. C-kod

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

Uttryck och villkor. Föreläsning 2

OOP Objekt-orienterad programmering

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

E02 "The Review" Föreläsning 2, HT2013 Grunderna, repetition. Johan Leitet. Kurs: 1dv403 Webbteknik I

Objektorienterad programmering Föreläsning 4

Iteration while-satsen

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

Lathund. C för inbyggda system

Pseudokod. Arbetets gång

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

Programmering i C. Vad är C? Målsättning. Litteratur. Jämförelse med Java. Exempel : Ett program som skriver ut texten Hello, world

Föreläsning 2: Avlusning och antilustekniker

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

"if"-satsen. Inledande programmering med C# (1DV402)

C-programmering, föreläsning 1 Jesper Wilhelmsson

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Översikt Introduktion DST 1. Nicholas Wickström. IDE, Högskolan i Halmstad. N. Wickström

Objektorienterad programmering i Java

Objektorienterad Programmering (TDDC77)

Föreläsning 3. Iteration while-satsen

C konstruerades i början på sjuttiotalet av Dennis Ritchie vid Bell Laboratories.

Visual Basic, en snabbgenomgång

Lektion 4. Datateknik A, Java I, 5 poäng

DD1314 Programmeringsteknik

4 Sammansatta datatyper

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Loopar och datatyper. Föreläsning 3

Testning. 1. Inledning

Introduktion till PHP

Loopar och datatyper. Föreläsning 3

Programstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser

Föreläsning 3-4 Innehåll

Programmeringsteknik I

OOP Objekt-orienterad programmering

DOM (Document Object Model) är modellen efter vilken en webbläsaren är uppbyggd. Alla objekt/element i webbläsaren finns hierarkiskt ordnade i DOM.

Introduktion C-programmering

Objektorienterad programmering Föreläsning 2

TAIU07 Matematiska beräkningar med Matlab

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

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

Repetition C-programmering

Föreläsning 2 Programmeringsteknik och C DD1316

Grunderna i SQL del 1

Tentamen i Programmering grundkurs och Programmering C

C++ Slumptalsfunktioner + switch-satsen

Instuderingsfrågor till Steg 1

Uttryck och villkor. Föreläsning 2

Transkript:

Dagens föreläsning Programmeringsteknik för Ingenjörer VT05 Föreläsning 3-4 Repetition Datatyper Uttryck Operatorer Satser Algoritmer Programmeringsteknik VT05 2 Repetition Repetition - Programmering i C Vad innehåller ett programspråk? Syntax - Språkets grammatik Ord: int, main symboler: +=,& Regler: datatyp identifierare = uttryck ; Semantik - Vad språket betyder Programmeringsteknik VT05 3 Programmeringsteknik VT05 4 Repetition Ett första C-program Repetition - Vad C består av /* Skriver ut "Hello world!" på skärmen*/ printf("hello world!\n"); Preprosessordirektiv Mainfunktion Kommentar funktionsanrop Avslutar programmet Identifierare min_variabel, test123, _namn, _namn Operatorer Aritmetiska + - * / % Tilldelning och beräkning += = ++? Avdelare { ( ;, Konstanter 77, textsträng 3.45, a Nyckelord void, return, int... Programmeringsteknik VT05 5 Programmeringsteknik VT05 6 1

Repetition - Variabler datatyp identifierare ; int t; datatyp identifierare, identifierare,..., identifierare; float x, y, z; datatyp identifierare = uttryck ; int test = 3 + 5; Datatyper En datatyp har en grupp värden samt en grupp operationer som är giltiga för dess värden. C har ett antal primitiva datatyper som är fördeklarerade. Dessa är heltal, flyttal och tecken. datatyp identifierare = uttryck, identifierare = uttryck ; char a = a, b = b, c = c ; Programmeringsteknik VT05 7 Programmeringsteknik VT05 8 Datatyper för heltal Hur stora heltal kan bli beror på hur mycket utrymme datorn reserverar till datatypen. Typ storlek minimum maximum short 2 byte -32,768 32,767 int 4 byte -2,147,483,648 2,147,483,647 long 8 byte -9 x 10 18 9 x 10 18 Heltal (forts) En variabel som deklareras med typen int kan lagra värden i det intervallet som datorn avsett. De operatorer som är giltiga på heltal är främst de aritmetiska operatorerna, dvs + - * / % Eftersom variabler har begränsad lagringskapacitet kan man drabbas av overflow, t.ex. om man försöker multiplicera två variabler vars produkt blir större än det maximala värdet som en variabel kan lagra. Programmeringsteknik VT05 9 Programmeringsteknik VT05 10 Exempel på overflow /* Variabeldeklarationer */ int my_int; short my_short; // -32,768 till 32,767 /* Variabeltilldelningar */ my_int = 50000; // Ok my_short = 50000; // Overflow Programmeringsteknik VT05 11 Positiva heltal unsigned framför en heltalstyp (ex. unsigned int) innebär att enbart positiva tal kan lagras. Detta innebär också att intervallet för tal (positiva) som kan lagras fördubblas. short my_short; // -32,768 till 32,767 unsigned short u_s; // 0 till 65,535 u_s = 50000; // Ok u_s = -5; // Overflow Programmeringsteknik VT05 12 2

Tecken Datatypen char representerar individuella tecken. a Z 3 9 * \n Varje tecken representeras av ett heltalsvärde. a är 97 b är 98 osv. ASCII är en standard för vilka tecken som motsvarar vilket tal. Appendix A i boken. http://www.ascii-table.com Tecken Att tecken har en motsvarighet i siffror kan ses i följande exempel: printf("%c %c %d %d\n", A, 65, A, 65); Vilket ger utskriften: A A 65 65 Programmeringsteknik VT05 13 Programmeringsteknik VT05 14 Specialtecken Name Skrivet i C Heltalsvärde null character \0 0 alert \a 7 backspace \b 8 horizontal tab \t 9 newline \n 10 vertical tab \v 11 formfeed \f 12 carriage return \r 13 double quote \ 34 single quote \ 39 backslash \\ 92 Datatyper för flyttal Det finns tre flyttalstyper: float, double och long double. Variabler av denna typ kan innehålla reella värden som 0.001, 2.0, 3.14159 eller 0.45e2 (= 45.0). Typ storlek värden (ca) precision float 4 byte +/- 3.4 x 10 38 6 tecken doube 8 byte +/- 1.7 x 10 308 15 tecken long double 16 byte +/- 10 4932 19 tecken Programmeringsteknik VT05 15 Programmeringsteknik VT05 16 Exempel på precision float x1 = 1.0001, x2 = 1.000000001, // Mer än 6 signifikanta y = 1.0; printf("utan förlust: %.7f\n",x1-y); printf("med förlust: %.7f\n",x2-y); Skriver ut: Utan förlust: 0.0001000 Med förlust: 0.0000000 Heltal på flyttalsform 3.0. Flyttalskonstanter 1.234567e5 motsvarar 1.234567 10 5 float double 44.5f 44.5L 44.5F 44.5l 0.445e2f 0.445e2 Programmeringsteknik VT05 17 Programmeringsteknik VT05 18 3

Uttryck Ett uttryck (expression) är en programkonstruktion som producerar (evalueras till) ett resultatvärde av en viss datatyp. Ett uttryck kan (bl a) vara: 1: En konstant -5, 1.23e2, c 2: En variabel mitt_heltal, Pi 3: Ett funktionsanrop sqrt(16.0) 4: En tilldelning height = newheight Uttryck (forts) Ett uttryck är en syntaktiskt korrekt kombination av konstanter, variabler, funktionsanrop, tilldelningar och operatorer. (a + b) / (c + d) a = 5.7 + 9.7 * 0.4 b = sqrt(3.5 0.5) Programmeringsteknik VT05 19 Programmeringsteknik VT05 20 Uttryck och konverteringar Datorn beräknar vilken typ ett uttryck får beroende på de ingående delarna variabler uttryck datatyp värde int a=3, b=4; a + b int 7 short c=1, d=2; c + d int 3 int e = 1; e + f double 3.0 double f = 2.0; int g = 0; g = 34.5 int 34 Typkonvertering Kan själva gå in och styra typ på ett uttryck (explicit). Konvertering av konstant. double x = (double)5; // x = 5.0 Konvertering binder hårt, paranteser behövs kring uttryck. double y = (double)(5+8); // y = 13.0 Går bra konvertera värdet av en variabel. int i = 4; double z = (double) i; // z = 4.0, i = 4 Programmeringsteknik VT05 21 Programmeringsteknik VT05 22 Heltalsdivision och rest Operatorn / beräknar heltalsdivision 3 / 15 = 0 15 / 3 = 5 16 / 3 = 5 17 / 3 = 5 18 / 3 = 6 Operatorn % beräknar heltalsrest 3 % 15 = 3 15 % 3 = 0 16 % 3 = 1 17 % 3 = 2 18 % 3 = 0 Programmeringsteknik VT05 23 Relations och logikoperatorer Relationsoperatorer < mindre än > större än <= mindre än eller lika med >= större än eller lika med == lika med!= inte lika med Logikoperatorer! negation && logiskt och logiskt eller Programmeringsteknik VT05 24 4

Relationsoperatorer Alla relationsoperatorer är binära, dvs de tar två uttryck som operander. Som resultat av uttrycket fås en int med värde 0 (falskt) eller 1 (sant). 2 < 3 2 > 3-1.3 >= (x - -1.2) a < b < 3 /* syntaktiskt rätt, men oväntat resultat, Varför? */ Felaktiga: a =< b /* Fel ordning på = och < */ a < = b /* Mellanslag ej tillåtet */ Likhetsopreatorer Likhetsoperatorerna är == och!=. c == A k!= -2 x + y == 3 * z -7 Felaktiga a = b /* tilldelning istf jämförelse */ a = = b /* mellanslag ej tillåtet */ (x + y) =! 44 /* Fel ordning på! och =*/ Programmeringsteknik VT05 25 Programmeringsteknik VT05 26 Logiska operatorer Logiska operatorer är!, && och.!a!(x + 7.7)!(a < b c < d) a && b a b Felaktiga a && /* operand saknas */ a b /* extra mellanslag */ a & b /* bitvis operation (se kap 7) */ & b /* minnesadressen till b */ Logik uttryck1 uttryck2 u1 && u2 u1 u2 noll noll 0 0 noll icke noll 0 1 icke noll noll 0 1 icke noll icke noll 1 1 Programmeringsteknik VT05 27 Programmeringsteknik VT05 28 Kortslutning När datorn utvärderar sanningen i ett uttryck så slutar evalueringen så snart utkomsten är känd. Om vi har uttryck1 && uttryck2, så kommer inte uttryck2 att utvärderas om uttryck1 är falskt. int a = 0, b = 1, c = 0; c = (a && (b=7)); printf("%d\n",b); Skriver ut: 1 Satser Satserna (statements) är grundinstruktionerna i ett programspråk. Block används för att gruppera satserna. { Deklaration eller uttryck. OBS! Varje sats kan i sin tur vara ett block. Programmeringsteknik VT05 29 Programmeringsteknik VT05 30 5

Ordning på satserna Sekvens: Satserna exekveras en efter en. Standard Urval: Man väljer om satser ska exekveras eller ej. If-sats, if-else-sats, switch-sats Repetition: Satsen exekveras ett visst antal gånger while-loop, do-loop, for-loop if (villkor) sats1; If - satsen Villkoret måste evalueras till sant eller falskt. sats1 utförs endast om villkoret är icke noll, d.v.s sant. Exempel på villkor: i == j!(a > b) && (i == j+5-k) Programmeringsteknik VT05 31 Programmeringsteknik VT05 32 if (villkor) sats1; else sats2; If-else - satsen Om villkoret är sant (icke noll) utförs sats1, annars utförs sats2. Exempel int a = 42; if (a==0) printf("a är noll: %d\n",a); else printf("a är inte noll: %d\n",a); /* Igen, nu med fel */ if (a=0) printf("a är noll: %d\n",a); else printf("a är inte noll: %d\n",a); Skriver ut: a är inte noll: 42 a är inte noll: 0 Programmeringsteknik VT05 33 Programmeringsteknik VT05 34 switch (uttryck){ case value1: sats1; break; case value2: sats2; break; default: /* kan satsn; utlämnas */ Switch - sats Uttrycket måste vara heltal eller tecken. Motsvarar nästade if-satser while (villkor) While - sats Gå runt i varv. Villkoret evalueras på nytt före varje varv. Satsen utförs inte en gång till. Villkoret testas inte kontinuerligt. Satsen utförs alltid helt. Programmeringsteknik VT05 35 Programmeringsteknik VT05 36 6

For - sats Do-while - loop for(initialisering; villkor; förändring) sats1; motsvarar: Fast loop. initialisering; Initialisering, villkor while (villkor) { och förändring brukar referera till samma förändring; variabel. Denna bör ej ändras i satsen. do while (villkor); Motsvarar omvänd while-sats. Villkoret evalueras på nytt efter varje varv. Satsen utförs minst en gång. Programmeringsteknik VT05 37 Programmeringsteknik VT05 38 Break och continue För att bryta det normala flödet, kan break och continue användas: break bryter den innersta loopen eller en switchsats. continue hoppar ur ett loop-block och påbörjar nästa varv i loopen. double tal = 0.0; while(1) { scanf("%lf", &tal); if (tal < 0.0) break; printf("%f %f\n", tal, sqrt(tal)); Villkorsoperatorn? : if (a < b) x = a; else x = b; kan skrivas som: Villkorsoperatorn x = a < b? a : b; (tar tre uttryck som operander) Om uttrycket före? är sant returneras uttrycket mellan? och : annars returneras uttrycket efter :. Programmeringsteknik VT05 39 Programmeringsteknik VT05 40 Kort om algoritmer En algoritm är en noggrann plan, en metod för att stegvis göra något som har följande kännetecken: Algoritmer Satser utförs sekventiellt, en rad i taget. Raderna numreras och indenteras. 1. Läs in tal 1 2. Läs in tal 2 3. Beräkna tal 1 + tal 2 4. Skriv ut summan Programmeringsteknik VT05 41 Programmeringsteknik VT05 42 7

Val och villkor Ett val definierar två möjliga vägar för algoritmen att ta beroende på ett villkor. 1. Läs in tal 1. 2. Läs in tal 2. 3. Om tal 1 och tal 2 0. 3.1 Beräkna tal 1 / tal 2. 3.2 Skriv ut kvoten. 4. Annars 4.1 Skriv ut felmeddelande. 4.2 Avsluta. Repetition Vid upprepning, upprepas en eller flera satser allt medan ett villkor är uppfyllt. 1. läs in tal 1. 2. läs in tal 2. 3. så länge som tal 2 = 0. 3.1 skriv ut Tal 2 får inte vara 0. 3.2 läs in tal 2. 4. beräkna tal 1 / tal 2. 5. skriv ut kvoten. Programmeringsteknik VT05 43 Programmeringsteknik VT05 44 Största gemensamma delare Euklides algoritm : bestäm största gemensamma delare till a och b Så länge a b om a > b så a := a b annars b := b a Programmeringsteknik VT05 45 8