Föreläsning 3. Flödesscheman while For Max/min-algoritm Datatyper Konvertering Dubbelloop (m. For)

Slides:



Advertisements
Liknande presentationer
F. Drewes, Inst. f. datavetenskap1 Föreläsning 13: Resolution •Resolution i satslogiken •Resolution i predikatlogiken.
Advertisements

Repetition av språket Java
Villkor Booelska operatorer Villkorsatser Switchsatser Villkor och annat.
Programstruktur: C för enchipsdatorer
Repetition inför provet
2D1311 Programmeringsteknik med PBL Föreläsning 7 Skolan för Datavetenskap och kommunikation.
Föreläsning 3 Repetition Operatorer Styrstrukturer Deklaration och anrop av metoder.
Vilken/vilka av följande satser ger syntaxfel:
2D1311 Programmeringsteknik med PBL
Föreläsning 2. Operatorer Tilldelning Kodblock { } if – satsen Logiska uttryck Att programmera.
2D1311 Programmeringsteknik med PBL Föreläsning 7 Skolan för Datavetenskap och kommunikation.
Grundläggande programmering
Föreläsning 2 Datalogi för E1 2D1343
Föreläsning 2 Primitiva datatyper Variabler och konstanter Tilldelning Inläsning Operatorer Villkorssatsen if Slingor: while och for.
Flödeskontroll Satser i ett program utförs en och en efter varandra. Detta kallas sekvensiell flödeskontroll. Ofta är det dock nödvändigt att modifiera.
Iteration i C ”upprepa”
Föreläsning 4, Kapitel 4 Gruppera objekt Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling.
Programmering B PHP Lektion 2
INTRODUKTION TILL PROGRAMMERING
1 ITK:P1 Föreläsning 5 Iteration, slumpning och arrayer DSV Peter Mozelius.
Anders Sjögren Selektion i C ”vägval” if och switch - satserna.
Programmeringsbegrepp
Föreläsning 4 Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö.
Programmering B PHP Lektion 3
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Föreläsning 3 Programmeringsteknik och Matlab DD1312
Internet A Javaskript.
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Generiska algoritmer Kan användas på containertyper och arrays Använder iteratorer Implementerar.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 4 ( ) INNEHÅLL: -Logiska opertorer -Poster.
Metoder och slingor Metoder och dess typ Slingor med while och for-satser.
1 Föreläsning 3 programmeringsteknik och Matlab 2D1312/ 2D1305 Matlab fortsättning Funkioner, styrstrukturer, manipulering av matriser.
Grundläggande programmering
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Jämförelseoperatorer -Villkorssatser -Logiska operatorer.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Jämförelseoperatorer -Villkorssatser -Logiska operatorer.
OOP F3:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 3 Iteration Många variabler av samma sort – Arrayer.
1 Föreläsning 5 Programmeringsteknik och Matlab 2D1312/2D1305 Repetition Metoder Array API och klassen ArrayList.
DD1310/DD1314/DA3009 Programmeringsteknik Föreläsning 2 Skolan för Datavetenskap och kommunikation.
Problemlösningsmetodik
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Tabeller -Villkorssatser -Repetitionssatser.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 4 ( ) INNEHÅLL: -Logiska operatorer och logiska uttryck -Referenstyper.
Anders Sjögren Selektion i C ”vägval” if och switch - satserna.
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Repetitionssatser: do-satsen och for-satsen -Operatorer:
2D1311 Programmeringsteknik med PBL
OOP F13:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 13 Repetition variabler, selektion och iteration.
OOP F2:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 2 Deklaration och tilldelning Programsatser Tilldelning Input/Output Selektion.
Föreläsning 3 Villkorssatsen if Slingor: while och for Felsökning.
1 Matlab, föreläsning 1 Oktober MATLAB Perspektiv på materialdesign Lina Kjellqvist Rum: K324 Telefon:
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
Mer om operatorer logiska operatorer bit-operatorer adress-operatorn ”komma”-operatorn punkt - operatorn.
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
Föreläsning 3 Operatorer Flödeskontroll Primitiva datatyperKlasser i API och egna klasser int double byte float char boolean short long String BufferedReader.
OOP&M - teori1 OOP&M – Föreläsning 5 kap 8-13 Operatorer,typkonvertering, booleska operatorer, if och else.
Föreläsning4 Repetition slingor Metoder. while-sats består av följande delar: 1. while 2. Villkor-sats (condition) 3. uttryck (statement) while-sats int.
OOP&M - teori1 OOP – Föreläsning 7 (Sista oop I) Konstruktioner för att hantera upprepningar Kapitel 11.
Iteratorer och generiska algoritmer sid. 1 6/28/2015 CD5250 OOP med C++ Mats Medin MDH/IDT Iterator vector ::iterator b = ivec.begin() vector ivec vector.
Selektion jämförande och logiska operatorer
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 13: Resolution Resolution i satslogiken Resolution i predikatlogiken.
Anders Sjögren Operatorer. Anders Sjögren Operand(er)
Mer om operatorer logiska operatorer bit-operatorer adress-operatorn ”komma”-operatorn punkt - operatorn.
Ett litet exempel på vad man kan gör i detta verktyg.
Börja och avsluta med tid
KPP053, HT2015 MATLAB, Föreläsning 4
Formell logik Kapitel 7 och 8
Föreläsning 2 Programmeringsteknik DD1310
Närvaro
Föreläsning 3: Booleans, if, switch
Iteration – Repetitionssats - while
Anna Heino & Mika Gissler
Presentationens avskrift:

Föreläsning 3

Flödesscheman while For Max/min-algoritm Datatyper Konvertering Dubbelloop (m. For)

sats

villkor sats sant falskt

villkor sats falskt sant

while betyder ”så länge som” while(villkor) { sats1 sats2 … } -satserna upprepas så länge som villkoret är sant

while(1){ printf (”det roliga tar aldrig slut\n”); } //ctrl-c i terminal, build-abort i codeblocks

int i = 0; while(i<10){ printf("%d, ", i); i=i+1; }

#include int main(void) { int n=1; while(n != 0) { scanf("%d",&n); printf("Du skrev:%d \n", n); } return 0; }

//Summera heltal #include int main(void) { printf("Summera heltal\n"); printf("Skriv in heltal, avsluta med 0\n"); int n=1, summa=0; while(n != 0) { scanf("%d",&n); summa = summa + n; } printf("Summa:%d \n", summa); return 0; }

do { sats1 sats2 … } while(villkor); jämförelsen görs sist körs minst en gång ibland naturligare, tex i exemplen nyss

#include int main(void) { int n; do { scanf("%d",&n); printf("Du skrev:%d \n", n); } while(n != 0); return 0; }

for – för (följande värden) om villkoret är sant Startvärde anges, och hur man stegar. Används gärna när man vet hur många gånger något ska upprepas.

Startsats, utförs först och endast en gång int n; for (n = 0;n<10;n++) { printf("%d, ", n); } Utförs sedan och först i varje påföljande varv. Om resultatet blir true utförs {}. Utföres sist efter {} i varje varv. Används normalt för att stega upp eller ner n betyder öka n med 1, dvs n = n+1. Resultatet blir: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,

int n; for (n=10;n>0;n--) { printf("%d, ", n); } for(;1;) { printf("evig loop\n"); }

int k; int summa = 0; for(k=1;k<=7;k=k+1) { summa = summa + k; printf("Summa hittills: %d\n", summa); } En körning ser ut så här: Summa hittills: 1 Summa hittills: 3 Summa hittills: 6 Summa hittills: 10 Summa hittills: 15 Summa hittills: 21 Summa hittills: 28

#include int main(void){ int max,min,k,tal; printf("Tal nr 1: "); scanf("%d",&tal); min=tal; max=tal; for(k=2;k<=5;k++){ printf("Tal nr %d: ",k); scanf("%d",&tal); if (tal<min) min=tal; if (tal>max) max=tal; } printf("%d %d\n",max,min); return 0; } Resultat: Tal nr 1: 100 Tal nr 2: 50 Tal nr 3: -40 Tal nr 4: 2 Tal nr 5:

Vi har hitintills använt int (heltal) och float (decimaltal) för att lagra data. Även om vi främst ska använda dessa är det viktigt att veta att det finns fler datatyper om man exempelvis behöver lagra större tal än som får plats. Vi ska också titta på datatypen char som bl.a används för att lagra bokstäver.

Typminsta värdestörsta värdeprintf,scanf short int %hd unsigned short int %hu int %d unsigned int %u long int %ld unsigned long int %lu Hur många bitar och därmed hur stora tal som kan representeras med datatyper i c är implementationsberoende (varierar). Vanliga värden på en 32-bitars maskin för de olika heltalstyperna: Med en header som heter kan man ta reda på dessa värden i ett program. Om man försöker stoppa in ett för stort tal får man ”overflow”. På en signed int är betendet odefinierat. Pröva gärna vad som händer.

Decimaltal har både fördelen att de kan ha en decimaldel och att de har plats för större tal tack vare exponenten. Detta på bekostnad av att de inte är exakta. Det finns tre typer: float, double och long double. Använd helst double. Enda nackdelen är att man måste hålla i minnet att scanf kräver %lf, medan printf måste ha %f då double används. ALLTID decimalpunkt. Observera att 3,7  skrivs 3.7e-2 TypMinsta positiva värde Största värdePresicionprintf, scanf float e e386 siffror%f, %f double e e30815 siffror%f, %lf

I datatypen char lagrar vi bokstäver, tecken. Egentligen lagras de som tal som tolkas som bokstäver (mm.) enligt ASCII (sid 801 i King). char b1, b2; b1 = 'a'; b2 = 97; printf("b1: %c, %d; b2: %c, %d\n",b1,b1,b2,b2); Resultat: b1: a, 97; b2: a, 97 I utökad ASCII (fler än 128 tecken) finns fler tecken såsom åäö. Vi kommer i kursen oftast nöja oss med de tecken som finns i ASCII.

Oftast struntar vi att char egentligen innehåller ett tal och tänker på char som att den lagrar en bokstav men ibland kan det vara användbart: char ch; scanf("%c",&ch); if('a' <= ch && ch <= 'z') { ch = ch - 'a' + 'A'; } printf("%c",ch); Resultat: g G

Det finns 2 typer av konvertering i C: EXPLICIT (som kallas ”cast” på Eng.) AUTOMATISK konvertering. (Om man blandar heltal och float i ett uttryck.)

( typ ) – denna operator (=cast) konverterar om möjligt talet till höger till datatypen typ. Ex: int i = (int) 3.45; Auttomatisk konvertering sker dock ”vid behov”: int i = 3.45;//ger samma resultat float f = 3 / 2; //f blir 1.0, VANLIGT FEL f = 3.0 / 2;//f blir 1.5 int i1 = 3; int i2 =2; f = i1 / i2;//f blir 1.0 f = (float) i1 / i2;//f blir 1.5

int i,j;( antag att 2 heltal deklarerats) I en dubbelloop står den ena variabeln stilla (den yttre) medan den inre loopar runt: i=1 j=1,2,3, skriv ut talparet (i,j) i=2 j= 1,2,3 skriv ut talparet (i,j) Resultat: (1,1) (1,2) (1,3) (2,1) (2,2) (2,3) (3,1) (3,2) (3,3) (4,1) (4,2) (4,3) (5,1) (5,2) (5,3)

int i,j; for(i=1;i<=5;i++) { for(j=1;j<=3;j++) { printf("(%d,%d) ", i, j); } printf("\n"); } Resultat: (1,1) (1,2) (1,3) (2,1) (2,2) (2,3) (3,1) (3,2) (3,3) (4,1) (4,2) (4,3) (5,1) (5,2) (5,3)

Skriv tre while-loopar som skriver ut följande: a) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, b) 10,9,8,7,6,5,4,3,2,1, c) 1, 2, 4, 8, 10, Skriv tre for-loopar som skriver ut ovanstående. Läs (testa på datorn samtidigt som du läser) Gör om cd-skivsprogrammet så att användaren efter att ha fått reda på priset får frågan om hon vill göra ett nytt köp eller avsluta. Om användaren vill göra ett nytt köp ska programmet köra igen. På så sätt kan man göra valfritt antal köp innan programmet avslutar. Gör K6 P1, P2, P3 (sid ) Skumma igenom 7.1 och 7.2. Läs om oktala och hexadecimala tal sid 128 ordentligt om du inte kan detta. Läs 7.3 sid och 7.3 andra halvan av sid 139 Gör K7 P15 (fakultet: 4! = 1  2  3  4), och som alltid gör fler om du hinner! E-excercises, P-programming projects