Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

GP 2, 13/2 20021 Grundlæggende programmering Forår 2002 Forelæsning 2 onsdag 13/2 2002 kl. 9:15 – 12:00.

Lignende præsentationer


Præsentationer af emnet: "GP 2, 13/2 20021 Grundlæggende programmering Forår 2002 Forelæsning 2 onsdag 13/2 2002 kl. 9:15 – 12:00."— Præsentationens transcript:

1 GP 2, 13/2 20021 Grundlæggende programmering Forår 2002 Forelæsning 2 onsdag 13/2 2002 kl. 9:15 – 12:00

2 GP 2, 13/2 20022 Dagens program Det praktiske Taltyper: Aritmetiske udtryk og operatorer, konversion, præcedens Sandhedsværdier: Logiske operatorer, præcedens Tegnemaskine Betingede ordrer Gentagelse af ordrer: while-løkker Gentagelse af ordrer: for-løkker Syntaks og formattering: Programlayout, semikolon

3 GP 2, 13/2 20023 Det praktiske Foredrag: Michael Kölling, ”BlueJ -- The Past, Present and Future”, torsdag, kl. 15:15-16:15, lok. 0.10 (HER!). Be (t)here!BlueJ -- The Past, Present and Future Øvelseshold: fra i dag hver onsdag, kl. 13:00-16:00 (undtagen uge 42) –Hold 1: Eske, lok. 3.15 –Hold 2: Thomas L., lok. 3.16 –Hold 3: Kasper, lok. 3.17 –Hold 4: Thomas B. J., lok. 3.19 Tilmelding til øvelser: Kontakt Thomas L., thomaslynge@it.edu (eller i person onsdag 13-16 i lok. 3.16). Der er pladser til kursister fra GPF og ”gamle” GP-studerende.thomaslynge@it.edu Nyhedsgruppe: Brug nyhedsgruppe it-c.courses.GP på nyhedsserver news.it.edu for at stille og besvare spørgsmål angående kurset. Se også andre nyhedsgrupper på news.it.edu: f.eks. it-c.announce, it-c.chat, it-c.adm.sysadm, it-c.degrees.{swu, int, dkm, mmt, tit, ebuss, tit}, it-c.fredag_morgen.)it-c.courses.GP Kursussoftware: En CD-ROM med kursussoftware til hjemmeinstallation kan lånes fra studievejledningen (lige ved siden af studieadministrationen). Installationsvejledninger: til Windows, Linux, MacOS X. Se hjemmesiden. Spørgetime: Hver torsdag, kl. 12-13, i lok. 3.15.

4 GP 2, 13/2 20024 Operatorer En operator er et symbol, som står for et eller flere operationer på 2 argumenter Eksempel: x + 2 Eksempel: 2.75 + 8.08 Eksempel: “stra” + “bads” Operator: addition på int argumenter Venstre argument: int Højre argument: int Operator: addition på double argumenter Venstre argument: double Højre argument: double Operator: konkatenering på String argumenter Venstre argument: String Højre argument: String

5 GP 2, 13/2 20025 Overloading og konversion Når en operator står for flere end kun en operation, så er operatoren overloaded (“overlasset” med operationer). Typen af argumenterne bestemmer hvilken operation en overloaded operator står for. Hvis argumenttyperne ikke er ens, konverteres argumenterne automatisk: –int konverteres til double (men ikke omvendt) –int, double, etc. konverteres til String (men ikke omvendt) Eksempler: –8.5 + 5  8.5 + 5.0 –“Resultatet er “ + 5  “Resultatet er “ + Int.toString(5)

6 GP 2, 13/2 20026 Aritmetiske operatorer Operatorer med høj præcedens binder stærkere end operatorer med lav præcedens, og udregnes først. Operatorerne *, /, og % har højere præcedens end + og - og udregnes altså før + og -. Når operatorer har samme præcedens (binder lige stærkt) regnes fra venstre mod højre. OperatorBetydningEksempel (int)Eksempel (double) *Multiplikation16 * 816.42 * -44.73 /Division9 / 59.0 / 5.0 %Rest9 % 512.44 % 5.52 +Addition2 + 22.75 + 7.25 -Subtraktion2 - 22.0 – -2.1

7 GP 2, 13/2 20027 Eksempler: Aritmetiske udtryk (1) Aritmetisk udtrykUdtrykkets typeUdtrykkets værdi 1.5 * 60 24 * 60 150.0 / 60 150 / 60 134.0 % 60 134 % 60 1.1 + 60 14 + 60 1.1 - 60 134 - 60

8 GP 2, 13/2 20028 Komplicerede udtryk Vi kan lave vilkårligt komplicerede udtryk ved hjælp af operatorer, f.eks.: 22 - 34 + 43 % 34.0 * 23 + 122 / 43.22 * 23 + 43 giver 302.92364645997225. Uden præcedensregler kan udtryk være tvetydige: vil 2 + 4 * 4 give 24 eller 18? Eftersom * har højere præcedens (binder stærkere) end +, udregnes 4 * 4 først, og derefter lægges 2 til. Hvis vi vil lægge sammen først, skal vi benytte parenteser: (2 + 4) *4 giver 24. Eftersom * og / har samme præcedens, regnes fra venstre mod højre: 2 * 5 / 2 giver 5. Vi kan dividere først ved at sætte en parentes: 2 * (5 / 2) giver 4.

9 GP 2, 13/2 20029 Eksempler: Aritmetiske udtryk (2) Lad x = 2 og y = 4. UdtrykVærdi x + y * 2 x * y / 2 y / 2 * x (x + y) / 2 y % 2 + 1 (x + y) % (x + 1) x – 2 + y x – (2 + y)

10 GP 2, 13/2 200210 Sammenligningsoperatorer OperatorBetydningEksempel <Mindre endx < 60 <=Mindre end eller lige medx <= 60 >Større endx > 60 >=Større end eller lige medx >= 60 ==Lig medx == 60 !=Forskellig frax != 60 Resultattypen er boolean. Dvs. resultatet er true eller false. De aritmetiske operatorer *, /, %, +, - binder alle stærkere end sammenligningsoperatorerne, >=. Sammenligningsoperatorerne, >= binder alle stærkere end == og !=.

11 GP 2, 13/2 200211 Eksempler: Logiske udtryk (1) Lad x = 2 og y = 4. Logisk udtrykVærdi false true true == false x != y x < 3 + y y < 3 + x x + y > 3 == false false != x < 3 x == y == false

12 GP 2, 13/2 200212 Logiske operatorer Argumenttyperne er boolean og resultattypen er boolean. Operatoren ! binder stærkere end &&, som binder stærkere end ||. ! binder også stærkere end sammenligningsoperatorerne og de aritmetiske operatorer. && og || binder svagere end sammenligningsoperatorerne og de aritmetiske operatorer. Udtrykket udregnes fra venstre mod højre. Operatorerne && og || udregner ikke mere end højst nødvendigt: –Hvis udtryk1 er falsk i udtryk1 && udtryk2 så udregnes udtryk2 ikke. –Hvis udtryk1 er sand i udtryk1 || udtryk2 så udregnes udtryk2 ikke. OperatorBetydningEksempel !Ikke (negation)!(x == 60) &&Og (konjunktion)0 <= x && x < 60 ||Eller (disjunktion)x = 60

13 GP 2, 13/2 200213 Eksempler: Logiske udtryk (2) Logisk udtrykVærdi ! false ! true ! true == false ! (true == false) true && false false && true true || false false || true x + y > 3 && x < y x + y == 3 || x < 4 x > y && (3 * 4 == 2 * 6 – 1 * 2 + 2) == ! (3 < x) Lad x = 2 og y =4.

14 GP 2, 13/2 200214 Skriv logiske udtryk Heltallet m er mindst 1 og højst 12: Tallet h er større end eller lig med 0, og mindre end 24: x i anden er mindre end 25: y er mindre end 40 eller større end 100: aar er delelig med 4: aar er ikke delelig med 100: aar er ikke delelig med 400: aar er et skudår: delelig med 4 men ikke med 100, eller delelig med 400: Var 1900 skudår?

15 GP 2, 13/2 200215 En Java tegnemaskine Et farvekridt modelleres i Java ved klassen Tegnemaskine. Vi vælger at se bort fra en række egenskaber, og være mere præcis med nogle andre. Vi lader den have en position. En af de ting vi kan gøre med farvekridtet er at flytte det til et andet sted – det trækker så en streg efter sig. Vi kan også flytte det uden at tegne. Vi skal kikke på denne tegnemaskine for at se på kontrolstrukturer

16 GP 2, 13/2 200216 Skabelse af et tegnemaskine objekt Under Tools er der et punkt der hedder ”Use Library Class” Vi skriver det fulde navn på klassen: edu.it.tegnemaskine.Tegnemaskine Vi vælger den første linje, som vil skabe et tegnemaskine objekt. Når der tykkes OK kommer der en lille dialog boks frem, som spørger hvad jeg vil kalde objektet. Der fremkommer et objekt (rød kasse med runde hjørner) nederst i BlueJ vinduet (som vist på forrige slide).

17 GP 2, 13/2 200217 Brug tegnemaskine Samtidigt med at vi lavede maskine1 kom der en tegneflade frem i et andet vindue. Vi skal nu prøve kridtet af. 1) aktiveringen af moveTo bringer en dialog boks frem hvor vi skal skrive hvor vi vil flytte hen. 2) Når der trykkes OK i dialog boksen flytter pennen til position 300, 300, og tegner en streg undervejs. Tegnemaskinen starter på midten, som er på plads 200,200.

18 GP 2, 13/2 200218 Tegnemaskinen (0,0) (0,399) (399,0) (399,399) Koordinat systemet for tegnemaskinen har (0,0) i øverste venstre hjørne. Første aksen er vandret, fra venstre mod højre, og anden aksen er lodret, fra oven og ned.

19 GP 2, 13/2 200219 Betingede ordrer Ud over det at kunne give variable nye værdier, er der to centrale ting man gør i et program, nemlig at vælge om man skal gøre A eller B, og at gentage en given ting et antal gange. F.eks. finde det største af to tal. if (a>b) { max = a; } else { max = b; } System.out.println(”Max af a og b er: ” + max); Dette er kriteriet vi vælger efter. Kriteriet er et udtryk der returnerer en sandhedsværdi (true/false) Dette er det der udføres hvis kriteriet er sandt (true) Dette er det der udføres hvis kriteriet er falsk.

20 GP 2, 13/2 200220 Gentagelse Ofte vil man udføre den samme ting flere gange. Hvis man vil bruge farvekridtet til at tegne et kvadrat med, så kan det gøres ved at lave følgende metode: Dette gentages 4 gange

21 GP 2, 13/2 200221 While-løkker En typisk måde at gentage på, er ved at gøre noget indtil et kriterie er opfyldt. (I Java er det den eneste måde at gentage på.) Variablen gange tæller hvor mange sider vi har tegnet Kriteriet for gentagelse er at vi ikke har fået tegnet alle sider endnu. Tæl op med en. Tegn en side, og drej. Her vil vi gentage 4 gange. Dette må vi gøre med en variabel som vi benytter som tæller.

22 GP 2, 13/2 200222 While-løkker Ved at ændre sidelængden løbende, og dreje lidt mere end 90 grader hver gang får man en ganske andet figur. Vi starter med at gå ind til midten variablen sidelængde sættes til 5 til at begynde med Sålænge værdien i sidelængde variablen er mindre end 200, gentager vi kroppen af løkken. Efter hvert gennemløb lægger vi 2 til værdien i variablen sidelængde.

23 GP 2, 13/2 200223 For løkker Java er en videreudvikling af programmeringssproget C. Derfra har det arvet en løkke form der kaldes en ”for” løkke. Det er en anden syntaks for en while løkke, hvor det er pointeret at stop kriteriet er baseret på en variabel der tælles op i hvert løkke gennemløb. variablen erklæres inde i for løkken. den tælles op og kriteriet undersøges også separat fra løkke-kroppen.

24 GP 2, 13/2 200224 For-løkken og ++ operatoren Et idiom er en særegen fast vending i et sprog eller dialekt. Der knytter sig et særlig idiom til forløkken, som gælder løkker hvor man tæller en variabel op med en i hvert gennemløb. Hvis variablen ”tæl” skal gennemløbe værdierne 1, 2, 3,..., 100, gøres det ofte ved at følge følgende idiom: for (int tæl = 1; tæl<=100; tæl++){... } tæl++ er et udtryk der returnerer indholdet af variablen tæl, og derefter lægger 1 til tæl’s værdi. I eksemplet ovenfor bruger vi ikke værdien af udtrykket til noget, men udnytter blot at der bliver lagt en til tæl. Her anvendes for-løkken til at tælle fra 1 til 1.000.000 for at forsinke tegningen således at man kan se hvad der sker. Der er ikke nogen krop til denne løkke

25 GP 2, 13/2 200225 ”Gætteleg” Hvad betyder tæl -- ++tæl tæl += 2 tæl *= 2 tæl += tæl++ tæl = ++tæl Hvor mange gange udføres kroppen på følgende for-løkker: for (int i = 0; i<=100; i++){...} for (int i = 0; i<100;i++){...} for (int i = 100;i>0;i--){...} for (int i = 100; i>0;i++){...}

26 GP 2, 13/2 200226 Hvor skal der være semikolon? Intet semikolon efter en `født' ordre: if, while osv. Put semikolon efter en ordre lavet af et udtryk: tildeling, metodekald, osv. Put semikolon efter variabel-erklæringer. Der skal ikke semikolon efter en blok {... } Der skal være præcis to semikolonner i hovedet på en for-løkke.


Download ppt "GP 2, 13/2 20021 Grundlæggende programmering Forår 2002 Forelæsning 2 onsdag 13/2 2002 kl. 9:15 – 12:00."

Lignende præsentationer


Annoncer fra Google