Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

Programmering i Java versjon 2001-05-18 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.

Liknende presentasjoner


Presentasjon om: "Programmering i Java versjon 2001-05-18 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik."— Utskrift av presentasjonen:

1 Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 2 Variabler, datatyper og uttrykk Eksempelside 2-3 Algoritmer og programfeilside 4 Testdataside 5 Setninger, blokker og navnside 6 Om navnside 7 Variablerside 8-9 Datatyper for heltallside Datatyper for desimaltallside 12 Datatyper for logiske verdier og tegnside 13 En datatype for tekster: Stringside 14 Tilordninger og aritmetiske uttrykkside 15 Typeomformingside 16-17

2 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 2, side 2 Eksempel Å pusse opp en leilighet: –Hvor mye maling, hvor mye tapet, hvor mye golvbelegg og hva koster det? Her: Program som beregner arealet til en flate, dvs. vegg eller golv. Flere programeksempler utover i boka, til slutt et, forhåpentligvis, nyttig program med grafisk brukergrensesnitt (figur 15.8). Grunnleggende spørsmål når vi skal løse et programmeringsproblem: –Utdata: Hva forventer vi ut? Hva skal programmet skrive på skjermen, som brukeren kan lese? –Inndata: Hva må brukeren legge inn av data for at programmet skal kunne produsere de gitte utdata? I dette eksemplet: –Utdata: arealet i kvadratmeter –Inndata: lengde og bredde Desverre vanskelig å lese inn data, vi må forenkle her i kapittel 2. /* Kjøring av programmet: Skriv lengde (meter): 5 Skriv høyde (meter): 2.3 Arealet av veggen er 11.5 kvadratmeter */

3 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 2, side 3 Kildekoden ser slik ut class Veggberegninger { public static void main(String[] args) { double lengde = 5.0; double høyde = 2.3; double arealet = lengde * høyde; System.out.println("Arealet av veggen er " + arealet + " kvadratmeter"); } /* Kjøring av programmet: Arealet av veggen er 11.5 kvadratmeter */ inndata legges inn direkte i stedet for å leses inn beregning utdata 5.0 lengde 2.3 høyde 11.5 arealet Tre variabler. En variabel er en lagerplass i maskinens primærminne. Innholdet tolkes i henhold til datatypen, som her er desimaltall (double). Gjør oppgave 2 side 30. OBS: Legg merke til at vi bruker punktum som desimalskille i program. Vi skriver 2.3 og ikke 2,3.

4 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 2, side 4 Algoritmer og programfeil En algoritme er et begrenset og ordnet sett med veldefinerte regler (instrukser) for løsning av et problem. Eksempler er bruksanvisninger og kakeoppskrifter. Algoritme for å beregne arealet til en flate: –Les inn lengde og høyde. –Beregn arealet etter en gitt formel. –Skriv ut arealet. Syntaks er regler som vi må sette opp et program etter for at kompilatoren skal skjønne hva vi mener. Logikken i et program sier hvordan vi programmerer algoritmen. Programfeil: –Syntaksfeil: Ord og skilletegn er ikke satt opp i henhold til syntaksreglene. Kompilatoren varsler om syntaksfeil. –Logiske feil: Vi har enten programmert algoritmen feil, eller vi har brukt feil algoritme. Kompilatoren hjelper oss ikke med å finne logiske feil Oppgave: Lag noen syntaksfeil og logiske feil i programmet foran.

5 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 2, side 5 Testdata Et testdatasett er en mengde inn- og utdata-verdier der hensikten er å påvise logiske feil i programmet. –skal teste programmets ”yttergrenser” –testdata er sjelden realistiske data –eksempel: et arkivsystem i et bibliotek må fungere både for 0 bøker og for bøker, selv om de aller fleste realistiske data ligger godt innenfor disse grensene –testdata for arealprogrammet: datasett nr. lengde høyde forventet resultat feilmelding Oppgave: Vis hvordan vi kan prøve ut programmet vårt med disse dataene.

6 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 2, side 6 class Veggberegninger { public static void main(String[] args) { double lengde = 5.0; double høyde = 2.3; double arealet = lengde * høyde; System.out.println("Arealet av veggen er " + arealet + " kvadratmeter"); } Setninger, blokker og navn En setning er en instruksjon til datamaskinen. Avsluttes med semikolon. En blokk er en eller flere setninger omsluttet av {}. Ordene i et program er enten reserverte ord (se vedlegg B) eller ord som er forklart ved hjelp av deklarasjoner. En deklarasjon introduserer et ord til Java og forteller hva dette er navnet på. Mange deklarasjoner følger med Java. Andre ord deklarerer vi selv. Oppgave: Markér blokker, reserverte ord, deklarasjoner som følger med Java og egne deklarasjoner i følgende program:

7 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 2, side 7 Om navn Syntaks: –Et navn kan bestå av bokstaver og sifre, samt understrekingstegnet _ og $. –Første tegn kan ikke være siffer. –Mellomrom kan ikke benyttes. –Stor og liten bokstav er to forskjellige tegn. –Ingen begrensning på antall tegn i navnet. Eksempler: tall, Tall, antallSmåHøner, student21 Navn bør gi direkte assosiasjon til den virkeligheten som programmet modellerer. For norske forhold: –æ, ø og å kan brukes i navn (gjelder ikke andre vanlige programmeringsspråk). –Men: Bruk ikke æ, ø og å i klassenavn, da vi får laget en fil for hver klasse, og æ, ø og å kodes ikke likt i Windows og MS-DOS.

8 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 2, side 8 Variabler En variabel er en lagerplass i maskinens primærminne. En variabel kan inneholde en verdi, f.eks. et tall eller en bokstav. Vanligvis kan innholdet i en variabel endres: double pris = 14.50; pris = 21.70; pris = 29.90; En variabel deklarert inne i en metode kalles en lokal variabel. En lokal variabel må gis verdi før den kan brukes. Vanligvis gir vi variabelen verdi samtidig med at den deklareres. Vi initierer variabelen. Men kan også skrive: double pris; // dette er en deklarasjon uten initiering pris = 14.50; // her gir vi variabelen dens første verdi Definisjonsområdet til en variabel er den delen av et program der deklarasjonen gjelder. Definisjonsområdet til en lokal variabel er resten av den blokken der variabelen er deklarert. Innholdet i en variabel kan være konstant: final double moms = 23.0; final er en modifikator, det vil si et reservert ord som endrer på betydningen av det som kommer etterpå. Her får variabelen moms den egenskapen at den ikke kan forandres.

9 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 2, side 9 Variabler, forts. Hvorfor lager vi variabelen moms med konstant innhold i stedet for å skrive tallet 23 der vi trenger det i et program? –Navnet forteller leseren mer enn tallet 23. –Dersom momsen endres, er det nok å forandre verdien ett sted, nemlig der konstanten moms er deklarert. –Tall med mange desimaler blir like overalt. Vi bruker for eksempel ikke 3,14 et sted og 3,14159 et annet sted. moms er nå en navngitt konstant, mens tallet 23 er en anonym konstant. Vi anbefaler følgende når det gjelder navn på variabler: –Liten forbokstav –Understrekingstegn og $ unngås –Hvis navnet består av flere ord, bruk stor forbokstav for hvert ord fra og med det andre ordet, eksempel: alleByeneIBelgia Gjør oppgave 1 og 2 side 38.

10 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 2, side 10 Datatyper for heltall En datatype (eller bare “type”) beskriver en samling verdier. Vi begynner med datatyper som beskriver heltall. Anonyme konstanter: 105, -67, 0 Variabler av heltallstyper: int tall = 30; long stortTall = L; Oversikt over heltallstypene: navn antall byte tallområde byte 1 [-128, 127] short 2 [ , ] int 4 [ , ] long 8 [ , ] char 2 [0, ]

11 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 2, side 11 Datatyper for heltall, forts. En heltallskonstant som begynner med sifferet 0 tolkes etter 8- tallsystemet. Dette er en årsak til mange ”uforklarlige feil.” System.out.println(”Utskrift av 056 gir ” + 056); gir følgende utskrift: Utskrift av 056 gir 46 Dersom vi prøver å lagre et for stort tall direkte i i en heltallsvariabel, f.eks. slik: tall = ; får vi kompileringsfeil. Vi får imidlertid ikke feilmelding dersom resultatet fra en heltallsberegning ikke får plass i den heltallsvariabelen der vi prøver å lagre resultatet. Divisjon med 0 gir feilmelding, og programmet stopper.

12 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 2, side 12 Datatyper for desimaltall Anonyme konstanter: 1.25, , 6.7e10 (= 6.7  ), 3.256e-5 (=  ) Variabler: double tall1 = 2.35; float tall2 = 2.35f; Vi har to datatyper for desimaltall: –float, 4 byte, tallområde ca ±[10-38, 10+38]. Antall sign. sifre er ca 7. –double, 8 byte, tallområde ca ±[10-308, ]. Ant. sign. sifre er ca 15. I tillegg inneholder tallområdene verdien 0.0. Hva skjer hvis vi kommer utenfor tallområdet ved regning med desimaltall? –Vi får verdien Infinity (uendelig) eller 0 som svar (i motsetning til ved heltall, der svaret blir feil). Divisjon med 0.0 gir verdien Infinity. (I motsetning til ved heltall, der programmet stopper ved divisjon med 0) Verdien til uttrykket 0.0/0.0 er NaN (Not-a-Number). Det har liten hensikt å fortsette beregningene med verdier lik Infinity eller NaN.

13 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 2, side 13 Datatyper for logiske verdier og for tegn En datatype for logiske verdier - boolean –En variabel av denne typen kan ha verdien true eller false. boolean ferdigMedAlleVeggene = false; ferdigMedAlleVeggene = true; En datatype for tegn - char Anonyme konstanter omsluttes av apostrofer (bruk apostrofen ved siden av æ’en på det norske tastaturet): ' O ', ' 7 ', ' # ' Variabler: char bokstav = ' A ' ; char siffer = ' 4 ' ; Hvert tegn har sitt eget nummer i datamaskinen. –De fleste programmeringsspråk benytter ASCII-systemet, som bruker en byte pr. tegn. Dette gir maksimalt 256 verdier, men kun verdi er standardisert. Spesielt er ikke æ, ø og å standardisert, de har forskjellige nummer i Windows og MS-DOS. –Java bruker Unicode-nummereringssystem, som bruker to byte pr tegn. Dette gir maksimalt tegn. Tegn nr er sammenfallende med ASCII, æ, ø og å er standardisert. Se vedlegg D. Merk forskjellen mellom en variabel som inneholder tegnet ' 5 ' (datatypen char) og en som inneholder tallet 5 (datatypen int).

14 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 2, side 14 En datatype for tekster: String Anonyme konstanter av denne datatypen omsluttes av anførselstegn: " Dette er en tekst " " A " "" Eksempler: String by = " Trondheim " ; String tekst = " Dette er fire ord. " ; int antall = 17; System.out.println( " Vi har " + antall + " grupper " ); String byer = by + " Bergen " ; System.out.println(byer); Oppgave 1: Hva skrives ut på skjermen når kodebiten foran legges inn i et program og kjøres? Oppgave 2: Gjør oppgave 3 side 44. Vi kaller variabler av typen String for ”tekststrenger”, eller bare ”strenger”. Merk! Enkle apostrofer for tegn, anførselstegn for strenger.

15 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 2, side 15 Tilordninger og aritmetiske uttrykk De fire regningsartene + - * / –Multiplikasjon og divisjon har prioritet over addisjon og subtraksjon. –Dersom vi i et sammensatt uttrykk har flere operasjoner med samme prioritet, tolkes disse fra venstre mot høyre. –Prioriteten kan overstyres med parenteser: * 2 = 22 (5 + 7) * 5 = / 3.0 *4.0 = / (3.0 * 4.0) = 0.5 –Divisjon mellom heltall gir ingen rest (heltallsdivisjon): 5 / 2 = 2-5 / 2 = -21 / 3 = 0-1 / -3 = 0 Modulusoperatoren % gir resten fra en divisjon 3 % 4 = % 2 = % 3 = % -2.2 = -1.1 Tegnet = i programkode betyr tilordning. Høyre side regnes ut, og resultatet legges i variabelen på venstre side. int tall = 4; tall = tall + 8; // etter denne setningen er innholdet i variabelen tall lik 12 Gjør oppgave 1 og 3 side 47.

16 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 2, side 16 Typeomforming Dersom operandene i et uttrykk er av forskjellig datatype, vil operanden som tilhører den minste datatypen av de to, omformes til den datatypen som den andre operanden tilhører. En datatype er mindre enn en annen datatyper dersom tallområdet til typen er mindre. Følgende rekkefølge gjelder for talltypene (fra størst til minst): double, float, long, int, short, byte. Eksempel: double sum = ; int antall = 14; double gjennomsnitt = sum / antall; // beregner /14.0 = Av og til trenger vi å styre typeomformingen. Spesielt dersom uttrykket er en heltallsdivisjon. Eksempel: int antallUnger = 5; int antallEpler = 23; double antEplerPrUnge = (double) antallEpler / (double) antallUnger; // svar 4.6 Spørsmål: Hva blir resultatet uten casting? Styrt typeomforming kalles ”casting”. Merk at innholdet i en variabel ikke forandres ved casting. Verdien hentes ut og omformes deretter, men før beregningen. ”casting”

17 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 2, side 17 Omforming fra desimaltall til heltall Skjer ved avkutting, ikke avrunding. Eksempler: int a = (int) 1.7; // a blir lik 1 int b = (int) ( ); // b blir lik 3 int c = (int) (int) 1.7; // c blir lik 2 Vi får til avrunding ved å legge 0,5 til den opprinnelige verdien: int a = (int)( ); // a blir 2, ikke 1 som i eksemplet over Gjør oppgavene 1 og 3 side 50.


Laste ned ppt "Programmering i Java versjon 2001-05-18 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik."

Liknende presentasjoner


Annonser fra Google