Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

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

Liknende presentasjoner


Presentasjon om: "Repetisjon av JSP Variabler, tabeller, if-setninger, for/while-løkker"— Utskrift av presentasjonen:

1 Repetisjon av JSP Variabler, tabeller, if-setninger, for/while-løkker
Førsteamanuensis Alf Inge Wang Repetisjon JSP TDT4110 IT Grunnkurs

2 Informasjon om eksamen
Fikk spørsmål etter forelesning 10/11 angående om det er lov å ta med seg tilleggshefte på eksamen? Svar: Ja det er lov å ta med seg hefte på eksamen. Dere må imidlertid sjekke at dere har et tilleggshefte med CSS (grønn). Hvis ikke må dere lære dere alt om CSS utenat :( Repetisjon JSP

3 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

4 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

5 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

6 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”); Forklar overgang med deklarering og initialisering på samme linje!!! Eksempel01-02_bak.jsp Repetisjon JSP

7 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

8 Svar på oppgave 1: <% 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; %> Repetisjon JSP

9 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

10 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

11 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

12 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

13 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: String vers=”Jeg gikk tur på stien”; vers = vers + ”og \”gidda\” ikke mer”; out.println(”Variabelen: ”+ vers +” og litt til”); Repetisjon JSP

14 Bruk av metoder som har String som parameter (2)
Å bruke en egen streng til spørring i databasen kan være nyttig for executeUpdate(): String navn = ”Alf Inge”; String status = ”smurf”; int telefonnr = ; String sp = ”INSERT INTO person”; sp = sp + ”VALUES (’” + navn + ”’,”; sp = sp + ”’” + status + ”’,”; sp = sp + telefonnr + ”)”; st.executeUpdate(sp); Strengene er understreket Repetisjon JSP

15 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 < true <= Mindre eller lik antallVerdensdeler <= 5 true > Større enn PI > true >= Større enn eller lik PI >= true != Ikke lik (ulik) 7 != 5 true == Lik 8 == 8 true ! Snur sannhetsverdien !false true Logisk utrykk kalles også boolsk uttrykk eller sannhetsuttrykk Vis eksempel på bruk Repetisjon JSP

16 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<8 For at uttrykket skal være sant, må minst en av sidene av || være sanne (true). Repetisjon JSP

17 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 = new String[20]; Denne strengen inneholder 20 elementer fra index 0 til 19. navneliste[0] = ”Petter Hansen”; navneliste[1] = ”Johan Pedersen”; Repetisjon JSP

18 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

19 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]; Man trenger kun 1bit for boolean, men man får ikke til å adressere mindre enn 1 byte. Repetisjon JSP

20 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

21 Valg: if-setning Krøllparantes
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

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

23 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

24 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

25 To alternative skrivemåte av samme if-setning:
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”); } Variabelen sant kan få verdien true eller false - det samme som uttrykket (c>a+b) Repetisjon JSP

26 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

27 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..”); Kan ha flere nivåer. Repetisjon JSP

28 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

29 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

30 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

31 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 ... Repetisjon JSP

32 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. For-løkka blir utført 10 ganger Repetisjon JSP

33 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

34 Bruk av tabell.length for tabeller av flere dimensjoner
tabell.length gir antall rader i en tabell tabell[0].length gir lengden på rad 1 tabell[0][0].length gir lengden på rad 2 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

35 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? Svar: zx81 (Sinclare Micro Computer) Repetisjon JSP

36 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, Her må man bruke nøstende for-løkker oppgave1.jsp Repetisjon JSP

37 Oppsummering Variabler: Tabeller:
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 Sjekk URL!!! Repetisjon JSP

38 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

39 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

40 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 ... Nøstede for-løkker er nyttige til å gå igjennom flerdimensjonale tabeller. Repetisjon JSP

41 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. Linje 2: int table -> int[] table Linje 3: i<= table.length -> i<table.length Linje 12: Mangler ; Linje 13: table[i].length -> table.length Linje 15: Mangler } Hva gjør koden? -Setter inn -Skriver ut hvert element Repetisjon JSP

42 Eksamensoppgave Vis metodeheaderen? Repetisjon JSP


Laste ned ppt "Repetisjon av JSP Variabler, tabeller, if-setninger, for/while-løkker"

Liknende presentasjoner


Annonser fra Google