1 / 26

Grundlæggende programmering Forår 2002

Grundlæggende programmering Forår 2002. Forelæsning 2 onsdag 13/2 2002 kl. 9:15 – 12:00. Dagens program. Det praktiske Taltyper: Aritmetiske udtryk og operatorer, konversion, præcedens Sandhedsværdier: Logiske operatorer, præcedens Tegnemaskine Betingede ordrer

burton
Download Presentation

Grundlæggende programmering Forår 2002

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Grundlæggende programmeringForår 2002 Forelæsning 2 onsdag 13/2 2002 kl. 9:15 – 12:00

  2. 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. 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! • Ø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. • 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.) • 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. 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” Højre argument: int Venstre argument: int Operator: addition på int argumenter Højre argument: double Venstre argument: double Operator: addition på double argumenter Højre argument: String Venstre argument: String Operator: konkatenering på String argumenter

  5. 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. 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.

  7. Eksempler: Aritmetiske udtryk (1)

  8. 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 giver302.92364645997225. • Uden præcedensregler kan udtryk være tvetydige: vil 2 + 4 * 4 give24 eller 18? • Eftersom * har højere præcedens(binder stærkere) end +, udregnes 4 * 4 først, ogderefter 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. Eksempler: Aritmetiske udtryk (2) Lad x = 2 og y = 4.

  10. Sammenligningsoperatorer • 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. Eksempler: Logiske udtryk (1) Lad x = 2 og y = 4.

  12. 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.

  13. Eksempler: Logiske udtryk (2) Lad x = 2 og y =4.

  14. 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. 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. En Java tegnemaskine Vi skal kikke på denne tegnemaskine for at se på kontrolstrukturer

  16. 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). Skabelse af et tegnemaskine objekt

  17. Samtidigt med at vi lavede maskine1 kom der en tegneflade frem i et andet vindue. Vi skal nu prøve kridtet af. Brug tegnemaskine 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. Tegnemaskinen (399,0) 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. (0,0) (0,399) (399,399)

  19. 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. 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. 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å.) While-løkker Her vil vi gentage 4 gange. Dette må vi gøre med en variabel som vi benytter som tæller. Variablen gange tæller hvor mange sider vi har tegnet Kriteriet for gentagelse er at vi ikke har fået tegnet alle sider endnu. Tegn en side, og drej. Tæl op med en.

  22. 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. 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. 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. For-løkken og ++ operatoren 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. 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++){...} ”Gætteleg”

  26. 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.

More Related