1 / 16

Variabler, datatyper og uttrykk

Variabler, datatyper og uttrykk.

kizzy
Download Presentation

Variabler, datatyper og uttrykk

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

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

  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, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.

  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 1000000 bøker, selv om de aller fleste realistiske data ligger godt innenfor disse grensene • testdata for arealprogrammet: datasett nr. lengde høyde forventet resultat 1 0.0 0.0 feilmelding 2 100 10 1000 3 2.3 4.5 10.35 4 -2.5 3 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, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.

  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, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.

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

  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, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.

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

  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 = 1234567891234L; • Oversikt over heltallstypene: navn antall byte tallområde byte 1 [-128, 127] short 2 [-32 768, 32 767] int 4 [-2 147 483 648, 2 147 483 647] long 8 [-9 223 372 036 854 775 808, 9 223 372 036 854 775 807] char 2 [0, 65 535] Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.

  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 = 123456789056666; 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, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.

  11. Datatyper for desimaltall • Anonyme konstanter: 1.25, -0.0067, 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, 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, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.

  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. • Unicodenummereringssystem – brukes i Java • to byte pr tegn 65 536 forskjellige tegn • tegn nr 0-127 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, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.

  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 65. • 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, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.

  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 = 22 (5 + 7) * 5 = 60 6.0 / 3.0 *4.0 = 8.0 6.0 / (3.0 * 4.0) = 0.5 • Divisjon mellom heltall gir ingen rest (heltallsdivisjon): 5 / 2 = 2 -5 / 2 = -2 1 / 3 = 0 -1 / -3 = 0 • Modulusoperatoren % gir resten fra en divisjon (dette er ikke prosent!) 3 % 4 = 3 -3.7 % 2 = -1.7 10 % 3 = 1 -5.5 % -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 68. Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.

  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 = 5674.33; int antall = 14; double gjennomsnitt = sum / antall; // beregner 5674.33/14.0 = 405.31 • 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, 3.utgave, Stiftelsen TISIP og Gyldendal Akademisk 2004.

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

More Related