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

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

  • Upload
    enya

  • View
    46

  • Download
    0

Embed Size (px)

DESCRIPTION

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 - PowerPoint PPT Presentation

Citation preview

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

1

Repetisjon JSP

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

Førsteamanuensis Alf Inge Wang

TDT4110 IT Grunnkurs

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

2

Repetisjon JSP

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!

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

3

Repetisjon JSP

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.

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

4

Repetisjon JSP

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; %>

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

5

Repetisjon JSP

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”);

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

6

Repetisjon JSP

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!

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

7

Repetisjon JSP

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;

%>

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

8

Repetisjon JSP

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;

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

9

Repetisjon JSP

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);

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

10

Repetisjon JSP

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.”;

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

11

Repetisjon JSP

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”,

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

12

Repetisjon JSP

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”);

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

13

Repetisjon JSP

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 = 99999955;String sp = ”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’);

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

14

Repetisjon JSP

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

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

15

Repetisjon JSP

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

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

16

Repetisjon JSP

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”;

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

17

Repetisjon JSP

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)

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

18

Repetisjon JSP

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];

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

19

Repetisjon JSP

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

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

20

Repetisjon JSP

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

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

21

Repetisjon JSP

if-setning med flere alternativer: else ifMange påfølgende betingelser og handlinger:if(<betingelse>){

<handling(er)>;}else if(<betingelse>){

<handling(er)>;}... (evt. flere else if)else {<handling(er)>;}

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

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

22

Repetisjon JSP

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.

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

23

Repetisjon JSP

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

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

24

Repetisjon JSP

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)

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

25

Repetisjon JSP

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”);}

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

26

Repetisjon JSP

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..”);}

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

27

Repetisjon JSP

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

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

28

Repetisjon JSP

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.

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

29

Repetisjon JSP

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

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

30

Repetisjon JSP

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:1. Initialiser teller (f.eks. int x=0;2. Sjekk betingelse og hvis den er true utfør blokk3. Endre teller4. Sjekk betingelse og hvis den er true utfør blokk5. ...

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

31

Repetisjon JSP

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.

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

32

Repetisjon JSP

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

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

33

Repetisjon JSP

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

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

34

Repetisjon JSP

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?

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

35

Repetisjon JSP

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

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

36

Repetisjon JSP

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

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

37

Repetisjon JSP

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

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

38

Repetisjon JSP

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

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

39

Repetisjon JSP

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.

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

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

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

41

Eksamensoppgave

Repetisjon JSP