1 / 41

Repetisjon av JSP Variabler, tabeller, if-setninger, for/while-løkker

Repetisjon av JSP Variabler, tabeller, if-setninger, for/while-løkker Førsteamanuensis Alf Inge Wang. TDT4110 IT Grunnkurs. Undervisningsmål. Målet for forelesningen er å gjennom gå følgende tema i dybden og gi en repetisjon av: Variabler, Tabeller if-setninger for/while-løkker

enya
Télécharger la présentation

Repetisjon av JSP Variabler, tabeller, if-setninger, for/while-løkker

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. Repetisjon av JSP Variabler, tabeller, if-setninger, for/while-løkker Førsteamanuensis Alf Inge Wang Repetisjon JSP TDT4110 IT Grunnkurs

  2. Undervisningsmål • Målet for forelesningen er å gjennom gå følgende tema i dybden og gi en repetisjon av: • Variabler, • Tabeller • if-setninger • for/while-løkker • Oppfordrer sterk til spørsmål underveis hvis det er enda ting som er uklart i dette stoffet! Repetisjon JSP

  3. Variabler • Variabler brukes til å ta vare på informasjon som vi trenger under kjøring av et program. • I JSP/Java må man deklarere en variabel med en datatype før man kan bruke variabelen. • Navnet på en variabel bør si noe om hvilken type informasjon den skal inneholde. • For tellere og lignende kan man bruke korte variabelnavn som x,y,i, j etc. Repetisjon JSP

  4. Deklarering (opprettelse) og tilordning av verdi (s.31) • Bruker den ”vanlige” JSP-merkelappen <% ... %> • Variabel opprettes slik (deklarerer data type): <% int antall; %> • Deretter kan vi gi variabelen en verdi slik: <% antall = 100; %> • Kan manipulere (endre) på verdi <% antall = antall + 1; %> Repetisjon JSP

  5. Oversikt over datatyper vi bruker i kurset • int brukes til heltall: int antall=1; • double brukes til flyttall: double pi=3.14; • boolean brukes til sannhetsverdier (true eller false): boolean harFunnetElement=false; • String brukes til strenger (samling av flere tegn): String setning=”Dette er en fin setning”; • Variabler av typen String blir objekter som man kan kjøre metoder på: setning.equals(”Nasse nøff”); Repetisjon JSP

  6. Oppgave 1: Lag variabler med datatype til dette problemet • ”Det skal lages et program som skal ta vare på og sende rapporter til bilister som fyller bensin på GasTex bensinstasjoner som inneholder alle nødvendige personinformasjon om kunde, hvor mye bensin har har kjøpt, hvor mye penger han har brukt på bensin, distanse kjørt (basert på at kunde taster inn ved kjøp) gjennomsnittspris på bensin, om kunden har gullkort, og hvor mange ganger kunden har kjøpt bensin”. • Trenger ikke å bruke tabeller! Repetisjon JSP

  7. <% String fornavn; String etternavn; String gateadresse; int postnummer; String poststed; int hjemmeTelefon; int mobilTelefon; int kundenummer; boolean gullkort; double totaltBensin; double totaltDistanse; double totaltBetaling; double snittPris; int antallKjøp; %> Svar på oppgave 1: Repetisjon JSP

  8. Bruk av variabler • Man kan initiere en variabel med en startverdi: int lengde=7; • Man kan beregne aritmetiske uttrykk: lengde=256*23+12*2-12*2; • Man kan regne på andre variabler: lengde=distanse*4+avstand*2; • Man kan øke/minske sin egen verdi: lengde=lengde+10; lengde=lengde-5; Repetisjon JSP

  9. Bruk av variabler (2) • Man kan typeomforme uttrykk til riktig datatype: double svar= (double) 150/100; • Uten typeomformingen (double) får man svaret 1.0 • Alternativ: double svar= 150.0/100; • Man kan beregne sannhetsverdi i logiske uttrykk: int a=2; int b=5; int c=8; boolean sant= (a>b || b>c || c>a); Repetisjon JSP

  10. Bruk av variabler (3) • Konkatenere strenger (sette sammen strenger): String navn=”Alf ”+”Inge ”+” Wang”; • Gir strengen navn=”Alf Inge Wang”; • Legge til tekst i strenger: String vers=”Jeg gikk en tur på stien ”; vers=vers+”og hørte skogens ro, ”; vers=vers+”da hørte jeg fra stien, ”; vers=vers+”en løk som sa koko.”; • Gir strengen vers=”Jeg gikk en tur ... løk som sa koko.”; Repetisjon JSP

  11. Bruk av variabler (4) • For å bruke dobbelfnutter (” ”) i strenger må man bruke backslash (\) foran hver dobbelfnutt: String vers=”Jeg gikk en tur på \”stien\”, ”; vers=vers+”og hørte skogens \”ro\”, ”; out.println(vers); • Gir utskriften: Jeg gikk en tur på ”stien”, og hørte skogens ”ro”, Repetisjon JSP

  12. Bruk av metoder som har String som parameter • I metoder som bruker String som parameter (f.eks. out.println() og executeQuery() kan man gjøre på samme måte som man bruker strenger: Stringvers=”Jeg gikk tur på stien”; vers = vers + ”og \”gidda\” ikke mer”; out.println(”Variabelen: ”+ vers +” og litt til”); Repetisjon JSP

  13. Bruk av metoder som har String som parameter (2) • Å bruke en egen streng til spørring i databasen kan være nyttig for executeUpdate(): Stringnavn = ”Alf Inge”; Stringstatus = ”smurf”; inttelefonnr = 99999955; Stringsp = ”INSERT INTO person”; sp = sp + ”VALUES (’” + navn+ ”’,”; sp = sp + ”’” + status + ”’,”; sp = sp + telefonnr + ”)”; st.executeUpdate(sp); • Resultat: sp blir INSERT INTO person VALUES (‘Alf Inge’, ‘smurf’, ‘99999955’); Repetisjon JSP

  14. Operatorer i logiske uttrykk • Logiske utrykk er et utrykk (påstand) som evaluerer til sann (true) eller usann (false • Operatorer man bruker i logiske uttrykk: < Mindre enn antallStudenter < 10000 true <= Mindre eller lik antallVerdensdeler <= 5 true > Større enn PI > 3.12 true >= Større enn eller lik PI >= 3.14 true != Ikke lik (ulik) 7 != 5 true == Lik 8 == 8 true ! Snur sannhetsverdien !false true Repetisjon JSP

  15. Kombinasjon av logiske uttrykk • Man kan kombinere logiske uttrykk med på bruke && (og) og || (eller): • <%= (5>7)&&(3>9) %> Leses 5>7 OG 3>9 • For at uttrykket skal være sant, må begge sider av && være sanne (true). • <%= (4>2)||(4<9) %> Leses 4>2 ELLER 4<9 • For at uttrykket skal være sant, må minst en av sidene av || være sanne (true). Repetisjon JSP

  16. Tabeller (array) • Brukes til å lagre flere elementer av samme datatype i en variabel • Tabell brukes typisk til å lagre lister av navn, en serie med måledata, og returnering av flere parametere fra en metode. • Eks: String[] navneliste = newString[20]; • Denne strengen inneholder 20 elementer fra index 0 til 19. navneliste[0] = ”Petter Hansen”; navneliste[1] = ”Johan Pedersen”; Repetisjon JSP

  17. Tabeller i flere dimensjoner • I enkelte tilfeller er det ønskelig å kunne lage tabeller av flere dimensjoner: String[][] kartNavn = new String[100][100]; • Oppretter en tabell med navn kartnavn i to dimensjoner med størrelse 100,100. kartNavn[30][50] = ”Nidarosdommen”; • Setter inn verdi på tabellen på index 30,50. int[][][][][] pentaDimensjon = new int[10][10][10][10][10]; • Oppretter en tabell med 5 dimensjoner. • Husk at antall bytes som settes av i minnet: • (Multiplikasjon av størrelsen på alle dimensjoner) x (antall bytes for datatype) Repetisjon JSP

  18. Oppgave 2: Hvor mye plass blir satt av i minnet (bytes)? • Oppgave 2a) int tar 4 bytes (32 bits) int[][][] måledata = new int[30][30][30]; • Oppgave 2b) double tar 8 bytes (64 bits) double[][][][][][] multidimensjon = new double[20][10][15][10][30][40]; • Oppgave 2c) hvor mye trengs for booelan? boolean[][] funnetKart = new boolean[200][200]; Repetisjon JSP

  19. Svar oppgave 2: 1 Kbyte = 1024 bytes (210), 1 Mbyte =1,048,576 (220) • Oppgave 2a) int tar 4 bytes (32 bits) int[][][] måledata = new int[30][30][30]; Svar: 30x30x30 x 4 bytes= 108,000 bytes = ca 105 Kbytes • Oppgave 2b) double tar 8 bytes (64 bits) double[][][][][][] multidimensjon = new double[20][10][15][10][30][40]; Svar: 20x10x15x10x30x40 x 8 bytes= 288,000,000 bytes = 275 Mbytes • Oppgave 2c) boolean tar 1 byte (8 bits) boolean[][] funnetKart = new boolean[200][200]; Svar: 200x200 x 1 byte = 40,000 bytes = 39 Kbytes Repetisjon JSP

  20. Valg: if-setning • Skrivemåte for en betingelse og eventuelt handlinger i JSP: if (<betingelse>) { <handling(er)>; } • Handlingen(e) utføres kun dersom betingelsen er sann • VIKTIG: Betingelsen er hva som helst som evaluerer eller returnerer en av verdiene true eller false. Krøllparantes Repetisjon JSP

  21. if-setning med flere alternativer: else if Mange påfølgende betingelser og handlinger: if(<betingelse>){ <handling(er)>; } else if(<betingelse>){ <handling(er)>; } ... (evt. flere else if) else { <handling(er)>; } • NB! • Bare enav handlingen(e) utføres hver gang programmet utføres • Hvis ikke vi har else til slutt kan evt. ingen ting utføres Repetisjon JSP

  22. Ulike typer if-setninger • Sammenlikning av størrelser på variabler: if (x>5 && (y==2 || z!=9)) { ... } • Her evalueres det logiske uttrykket til å få verdien true eller false • Bruk av metoder som returnerer true/false inne i betingelsen på if-setning: if (fornavn.equals(”Alf Inge”)) { ... } • Her kjøres metoden equals som returnerer enten true eller false if (rs.next()) { ... } • Her kjøres metoden next() som returnerer true eller false avhengig om det finnes mer data igjen. Repetisjon JSP

  23. Ulike typer if-setninger (2) • Bruk av metoder som returnerer andre verdier enn true/false: if (mittNavn.compareTo(dittNavn)>0) {...} • Her kjøres metoden compareTo som returnerer et heltall. Dette heltallet settes inn i uttrykket som evalueres i uttrykket til enten true eller false • Bruk av boolean variabler: if (erSant) { ... } • boolean variabler kan enten ha verdien true eller false og kan settes direkte inn i en if-setning. Denne setningen sjekker om erSant har verdien true Repetisjon JSP

  24. int a=3; int b=8; int c=12; if (c>a+b) { out.println(”Yeah”); } else { out.println(”Noah”); } int a=3; int b=8; int c=12; boolean sant=(c>a+b); if (sant) { out.println(”Yeah”); } else { out.println(”Noah”); } To alternative skrivemåte av samme if-setning: • Variabelen sant kan få verdien true eller false - det samme som uttrykket (c>a+b) Repetisjon JSP

  25. To alternative skrivemåte av samme if-setning: (2) • Alternativt kunne man ha skrevet (smør på flesk): int a=3; int b=8; int c=12; boolean sant=(c>a+b); if (sant==true) { out.println(”Yeah”); } else { out.println(”Noah”); } Repetisjon JSP

  26. Nøstede if-setninger • Man kan ha if-setninger inne i if-setninger (nyttig der du har hierarkiske nivåer): if (livsform.equals(”dyr”)) { if(art.equals(”hund”){ out.println(”Voff”); else { out.println(”Mjau eller noe annet...”); } } else { out.println(”Du er antagelig et menneske..”); } Repetisjon JSP

  27. while-løkke while (<betingelse>) { handling(er); } • Utfører handling(er) i blokka hvis betingelsen er true • Betingelsen er lik som for if-setning og kan inneholde logiske uttrykk som inkluderer variabler, tall og metoder som kan evaluere til true eller false Repetisjon JSP

  28. Huskeregel for while-løkke • Sørg for at betingelsen første gang while-løkka skal kjøres er sann. • Sørg for at handlingene i while-løkka en eller annen gang gjør at betingelsen blir false. • Før du kjørere JSP-skriptet, sjekk betingelsen og sjekk innholdet i handlingene i løkka. Repetisjon JSP

  29. Nyttig bruk av while-løkker • Hente ut resultatsett fra en databasespørring: while(rs.next()) { ... } • Metoden next() returnerer true så lenge det er noe data å hente ut fra spørringen. • Når resultatsettet (rs) er tomt, returnerer next()false og while-løkka stopper. • Algoritmer for sortering: while(harByttet) { harByttet=false; ... (sjekke om data i tabell må bytte plass) • Bruker en boolean variabel for å registrere at to elementer i en tabell har byttet plass og skal dermed fortsette while-løkka Repetisjon JSP

  30. for-løkker • Brukes til å gjenta en blokk et bestemt antall ganger. • Bruker en teller og en betingelse: <% for (initialisering teller; betingelse; endring teller) { handling(er); } • Gangen i en for-løkke: • Initialiser teller (f.eks. int x=0; • Sjekk betingelse og hvis den er true utfør blokk • Endre teller • Sjekk betingelse og hvis den er true utfør blokk • ... Repetisjon JSP

  31. Nyttig bruk av for-løkker • Utføre noe et bestemt antall ganger: for(int i=1; i<=10;i=i+1) { ... } • Hvor mange ganger blir for-løkka utført? • Gå igjennom en tabell: for(int i=0; i<tabell.length;i=i+1) { out.println(tabell[i]+”<br/>”); } • Husk å starte variabelen fra 0 for å få med første element i tabellen • Bruker tabell.length til å få lengden på tabellen. Repetisjon JSP

  32. Hvorfor bruker man ikke i<=tabell.length i betingelsen? String[] tabell = new String[10]; • Gir en tabell med 10 elementer og tabell.length=10 • tabell[0] Husk at index 0 er første element! • tabell[1] • tabell[2] • ... • tabell[9] Husk at index n-1 er siste element der størrelsen er n • Det siste elementet er altså tabell[9] som gjør at i<tabell.length er riktig Repetisjon JSP

  33. Bruk av tabell.length for tabeller av flere dimensjoner • tabell.length gir antall rader i en tabell (Lengden på dimensjon 1) • tabell[0].length gir antall kolonner (Lengden på dimensjon 2) • tabell[0][0].length gir lengden dimensjon 3 osv. • Eks: String[][][] tabell = new String[10][7][5]; out.println(tabell.length); // Skriver ut verdien 10 out.println(tabell[0].length); // Skriver ut verdien 7 out.println(tabell[0][0].length); // Skriver ut verdien 5 Repetisjon JSP

  34. Nøstede for-løkker (for-løkker inne i for-løkker) • Som for if-setningen kan man også ha flere nivåer med for-løkker (dette gjelder også while): int z=0; for (int x=1; x<10; x=x+1) { for (int y=1; y<10; y=y+1) { z=z+1; } // slutt for(y) }// slutt for (x) out.println(”zx”+z); • Hva blir skrevet ut her og hvordan blir programmet kjørt? Repetisjon JSP

  35. Oppgave1: Bruk av for-løkker til traversering av tabell • Gitt at du har en tabell nedbor som er definert: double[][] nedbor = new double[24][60]; • Tabellen inneholder mm nedbør for 24 timer og 60 mintter av en dag: nedbor[time][minutt] • Lag et JSP-script som skriver ut nedbør for hvert kvarter for hver fjerde time: • 00:00, 00:15, 00:30, 00:45, 04:00, 04:15, 04:30, 04:45, 0800 ... • Her må man bruke nøstende for-løkker oppgave1.jsp Repetisjon JSP

  36. Oppsummering • Variabler: • int: Brukes til beregninger og tellere. Aritmetiske uttrykk • double: Brukes til beregninger. Aritmetiske uttrykk • boolean: Tar vare på sannhetsverdier. Logiske uttrykk • String: Tar vare på tekster. Kan konkateneres • Tabeller: • Samling av data av samme type • Kan ha flere dimensjoner • Kan bruke tabell.length for å finne størrelse på tabell (n) • Index på elementer begynner på 0 og slutter på n-1 Repetisjon JSP

  37. Oppsummering (2) • if-setninger • Betingelsen må kunne evalueres til true eller false • Betingelsen kan bestå av evaluering av variabler, en boolean variable, evaluering av resultat fra en metode, eller evaluering av en metode som returnerer true eller false • Kan bestå av else if og avsluttes ofte med else • Kan ha nøstede if-setninger som brukes som regel når betingelsene er av hierarkisk type Repetisjon JSP

  38. Oppsummering (3) • while-løkker • Betingelsen er lik som for if-setninger og må evaluere til true eller false • Bruker i tilfeller der man har en metode som man kaller som en eller gang vil bli false, f.eks. rs.next() • Brukes i tilfeller der man er usikker på når man er ferdig (f.eks. sortering av innhold i en tabell). Repetisjon JSP

  39. Oppsummering (4) • for-løkker: • Brukes i tilfeller der man skal utføre en blokk et beste antall ganger. • Utførelse av for er på følgende måte: • Initialisering av telle variabel • Sjekk av betingelse • Utføre blokk • Øk teller • Sjekk av betingelse • ... • Nøstede for-løkker er nyttige til å gå igjennom flerdimensjonale tabeller. Repetisjon JSP

  40. Eksamensoppgave (5%) Følgende kode inneholder 5 feil. Finn disse feilene. Skriv ned linjenummer hvor feilen er og hva den riktige koden skal være. Repetisjon JSP

  41. Eksamensoppgave Repetisjon JSP

More Related