Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

Variabler, datatyper og uttrykk

Liknende presentasjoner


Presentasjon om: "Variabler, datatyper og uttrykk"— Utskrift av presentasjonen:

1 Variabler, datatyper og uttrykk
Eksempel side 2 Algoritmer og programfeil side 3 Testdata side 4 Setninger, blokker og navn side 5 Om navn side 6 Variabler side 7-8 Datatyper for heltall side 9-10 Datatyper for desimaltall side 11 Datatyper for logiske verdier og tegn side 12 En datatype for tekster: String side 13 Tilordninger og aritmetiske uttrykk side 14 Typeomforming side 15-16 versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003.

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

3 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. Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003.

4 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 feilmelding Oppgave: Vis hvordan vi kan prøve ut programmet vårt med disse dataene. Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003.

5 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: class Arealberegning { public static void main(String[] args) { double lengde = 5.0; // meter double bredde = 2.3; // meter double arealet = lengde * bredde; System.out.println("Arealet av rektangelet er " + arealet + " kvadratmeter"); } Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003.

6 Om navn Syntaks: Eksempler: tall, Tall, antallSmåHøner, student21
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. Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003.

7 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 = 24.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. Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003.

8 Variabler, forts. Hvorfor lager vi variabelen moms med konstant innhold i stedet for å skrive tallet 24 der vi trenger det i et program? Navnet forteller leseren mer enn tallet 24. 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 24 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 36. Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003.

9 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 [-128, 127] short [ , ] int [ , ] long [ , ] char [0, ] Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003.

10 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. Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003.

11 Datatyper for desimaltall
Anonyme konstanter: 1.25, , 6.7e10 (= 6.71010), 3.256e-5 (= 3.25610-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. Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003.

12 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. ASCII-systemet fra 1968. sju biter per tegn  128 forskjellige verdier ASCII-utvidelser åtte biter (en byte) for å dekke for eksempel æ, ø og å ikke standardisert, eksempelvis har æ, ø og å forskjellige nummer i Windows og MS-DOS. Unicode nummereringssystem – brukes i Java to byte pr tegn  forskjellige 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). Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003.

13 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 42. Vi kaller variabler av typen String for ”tekststrenger”, eller bare ”strenger”. Merk! Enkle apostrofer for tegn, anførselstegn for strenger. Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003.

14 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: 8 + 7 * 2 = (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 = / 3 = / -3 = 0 Modulusoperatoren % gir resten fra en divisjon (dette er ikke prosent!) 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 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003.

15 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 datatype 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” ”casting” Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003.

16 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 48. Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk 2003.


Laste ned ppt "Variabler, datatyper og uttrykk"

Liknende presentasjoner


Annonser fra Google