Java útgáfa /6/2008

Like dokumenter
Java útgáfa /2/2008

C++ Nokkrar æfingar í forritun. Hallgrímur Arnalds

Lausnir Nóvember 2006

SKALI STÆRÐFRÆÐI FYRIR UNGLINGASTIG VERKEFNAHEFTI. Námsgagnastofnun 8667

Verkefnahefti 3. kafli

Þverá, Langadalsströnd vhm 038 Rennslislykill #6

Virkjunarkostir til umfjöllunar í 3. áfanga rammaáætlunar Kafli 6.52 R3154A Blöndudalsvirkjun

t i l l j ó s r i t u n a r

Ordliste for TRINN 1

Ordliste for TRINN 2 (utviklende matematikk-oppgavehefter 2Aog 2B- refleksjonsord som kan hjelpe å forstå oppgaver)

gr. byggingarreglugerðar, nr. 112/2012, sbr. rgl. nr. 1173/2012, 350/2013, 280/2014 og 360/2016 Lög um mannvirki, nr.

dk Viðskiptahugbúnaður Grunn námskeið

VERKEFNABÓK með KENNSLUBÓK Í BÓKHALDI FYRIR GRUNNSKÓLA

R3123A Markarfljótsvirkjun B

EFNISYFIRLIT. Sproti 1a Verkefnahefti til ljósritunar

majl Eríndi nr. Þ /^ 3 /^ 3 komudagur 2% l 20IÍ

Frístundahús. Leiðbeiningar. Leiðbeiningar. Mannvirkjastofnun

Stika 1a Verkefnablöð til ljósritunar. Gyldendal Norsk Forlag AS útgáfa. Heiti á frummálinu: Multi 5 7 Kopiperm 1. útgáfa

2.febrúar 2015 kl. 08:30-11:00

SKALI LAUSNIR STÆRÐFRÆÐI FYRIR UNGLINGASTIG NEMENDABÓK. Námsgagnastofnun 8863

2. Járnbending. Almenn ákvæði, sjá verklýsingu. 2.1 Gæðakröfur, sjá verklýsingu. 2.2 Tákn: F201

BÖRN Í FJÖLTYNGDUM FJÖLSKYLDUM. UPPLÝSINGABÆKLINGUR Islandsk

t i l l j ó s r i t u n a r

3.2 Lausnir af römmum sýrum og bösum

Stika 2a Verkefnablöð til ljósritunar. Gyldendal Norsk Forlag AS útgáfa. Heiti á frummálinu: Multi 5 7 Kopiperm 1. útgáfa

Nutricia. næringardrykkir

Eðli skuldajafnaðar BA-ritgerð í lögfræði

Forkurs INF1010. Dag 1. Andreas Færøvig Olsen Tuva Kristine Thoresen

UM SJÁVARFALLASPÁR. Náttúiufrœðingurinn 69 (I), bls , 2000.

EES-viðbætir við Stjórnartíðindi Evrópusambandsins Nr. 49/321. frá 20. desember 2017

FYLGISEÐILL: UPPLÝSINGAR FYRIR NOTANDA LYFSINS. Husk psyllium fræskurn, hörð hylki. Plantago ovata Forsk.

Stika 3b Verkefnablöð til ljósritunar. Gyldendal Norsk Forlag AS útgáfa. Heiti á frummálinu: Del 2 Kopioriginaler til Multi 7

Lýsing á skrá og leiðbeiningar

Magn og uppspretta svifryks

Beiting enduröflunarverðs við ákvörðun fjárhæðar eignarnámsbóta

Stika 1a Verkefnablöð til ljósritunar. Gyldendal Norsk Forlag AS útgáfa. Heiti á frummálinu: Multi 5 7 Kopiperm 1. útgáfa

Leiðbeiningar

Meginreglur um bótaábyrgð eignarnema

Norska fiskveiðistjórnunarkerfið og markaðssetning norskra afurða. Jóhannes Pálsson, framkvæmdastjóri framleiðslu Norway Seafood AS.

KENNARABÓK. Stærðfræði fyrir unglingastig. Grete Normann Tofteberg Janneke Tangen Ingvill Merete Stedøy-Johansen Bjørnar Alseth. Námsgagnastofnun 7411

viðaukum. Birtist í Tímariti lögfræðinga, 3. hefti, 45. árg., 1995, bls

VERKEFNI ME B ぱKINNI: たSLAND LANDI OKKAR EFTIR ʼn ぱRU KRISTINSD ぱTTUR. Bls. 4 5: Hva heitir landi sem vi b モum タ? Hva heitir landi sem モ kemur fr ァ?

Virkjunarkostir til umfjöllunar í 3. áfanga rammaáætlunar Kafli 6.31 R3133A Bláfellsvirkjun

Notendastýrð persónuleg aðstoð á Norðurlöndum

STOPPISTÖÐVAR Á ÞJÓÐVEGUM Í DREIFBÝLI - SAMANBURÐUR MILLI LANDA

R Ó M V E R J A R M O R G U N. S E N D I Ð F L E I R I H E R M E N N! Verkefnablað 4.7. Verkefnablað 4.8. Verkefnablað Verkefnablað 4.

Kennsluleiðbeiningar. Geisli 3B Kennsluleiðbeiningar Námsgagnastofnun

Leiðbeiningar gr. byggingarreglugerðar, nr. 112/2012, sbr. rgl. nr. 1173/2012, 350/2013, 280/2014 og 360/2016 Lög um mannvirki, nr.

Stika 2a Verkefnablöð til ljósritunar. Gyldendal Norsk Forlag AS útgáfa. Heiti á frummálinu: Multi 5 7 Kopiperm 1. útgáfa

Stika 1b Verkefnablöð til ljósritunar. Gyldendal Norsk Forlag AS útgáfa. Heiti á frummálinu: Multi 5 7 Kopiperm 1. útgáfa

SKALI LAUSNIR STÆRÐFRÆÐI FYRIR UNGLINGASTIG NEMENDABÓK. Menntamálastofnun 8696


Nokkur blöð úr Hauksbók

Hægribeygjur af þjóðvegum Rannsóknarverkefni. Mat á umferðaröryggi mismunandi útfærslna

Leiðbeiningar um samtöl barnaverndarstarfsmanna við börn. Talaðu við mig!

sþ Tillaga til þingsályktunar [200. mál]

Varðar: Athugasemdir við Frummatsskýrslu Samkeppniseftirlitsins, rit nr. 2/2015.

Øvingsoppgaver i norrønt

Tre måter å lese fra terminal. Java 4. Eksempel. Formatert utskrift til skjerm

Héraðsdómurinn var staðfestur í Hæstarétti með vísan til forsendna hans.

Fylgiseðill: Upplýsingar fyrir notanda lyfsins. Ringer-Acetat Baxter Viaflo, innrennslislyf, lausn

Hámarkshraði á tveggja akreina

Islandsk bøyingsskjema

Leiðbeiningar Reglur um veðurathuganir, skýrslufærslu og skeytasendingar á skeytastöðvum

33 Dagurinn minn. 1. Dagurinn hjá Lilju. 1.1 Spyrjið og svarið. Orðaröð

Endurskoðun reglna um greinarmerkjasetningu skýrsla fyrir Íslenska málnefnd

Leiðbeiningar fyrir lögmenn um hvernig uppfylla má kröfur nýrra laga um persónuvernd

Heimildin til nafnleyndar vitna í sakamálum BA ritgerð í lögfræði

Merki og Kerfi - Verklegt - Æfing 5. Albert Ingi Haraldsson

í öðrum norrænum ríkjum Magnús Karel Hannesson sviðsstjóri Samband íslenskra sveitarfélaga

Stærðfræðin - skimun Þróunarverkefni Leikskólans Pálmholts unnið í samstarfi við útgefendur skimunartækisins MÍÓ

heimilistæki Kaupleiðbeiningar VERÐLÆKKUN! Vegna verðlækkunar er verðið í kaupleiðbeiningunum

t i l l j ó s r i t u n a r

LV Heiðagæsaathuganir á Snæfellsöræfum 2012

Del 3: Evaluere uttrykk

INF2100. Oppgaver 23. og 24. september 2010

Alltaf sami Grallarinn?

Um upplýsingaskyldu seljanda í fasteignakaupum og fleiri reglur laga nr. 40/2002 um fasteignakaup

Dæmi um eldvarnarveggi, hæðaskil og eldvarnarhurðir

Kjarnaborun í Tjörnessetlögin til að meta þroska lífrænna efna

SKALI STÆRÐFRÆÐI FYRIR UNGLINGASTIG VERKEFNAHEFTI. Menntamálastofnun 8670

Málið er höfðað með ákæru ríkissaksóknara dagsettri 8. mars 2013, á hendur:

Innlesning fra tastatur med easyio. INF1000 høst Vi må først skrive i toppen av programmet: import easyio.*;

Fréttabréf -átak í sparnaði- Kæra samstarfsfólk gjörgæsludeildar og vöknunar

Helstu nýmæli laga nr. 150/2007

INF2100. Oppgaver 26. september til 1. oktober 2007

Eksempel 1 Eksempel 2 Dramatisering. INF1000 uke 3. Sundvollen 7. september 2015 Dag Langmyhr. INF1000 Sundvollen

1. Inngangur. 2. Önnur móðurmál en íslenska

Íslenskar Áfangaskýrsla olíur til vegagerðar

Eksamen FSP6074 Islandsk II PSP5732 Islandsk nivå II. Nynorsk/Bokmål

Handbók í hönnun rafkerfa

Programmering Høst 2017

Jón Þorvaldur Heiðarsson

Hugtakið gáleysi í skilningi 215. gr. almennra hegningarlaga nr. 19/1940

INF1000 : Forelesning 1 (del 2)

Umhverfismennt í Leikskólanum Reynisholti

Alþingi Erindi nr. Þ 140/1532 komudagur Umsögn. Barnalög (barns, forsjá, umgengni o.fl.) 290. mál lagafrumvarp 140. löggjafarþingi.

Almennt um bókhald ríkisins

Drög að frumvarpi til laga um breytingar á lögum um þjóðskrá og almannaskráningu, nr. 54/1962, með síðari breytingum.

1 Inngangur Kristín Helga Gunnarsdóttir Ríólítreglan Þýðingar og þýðingafræði... 5

Transkript:

Efnisyfirlit Efnisyfirlit... 2 Tilgangur og uppbygging þessara leiðbeininga... 7 Hvað þarf til að búa til forrit í Java... 8 drjava þróunarumhverfi... 10 Grunnatriði form java forrits - skrifað á skjá... 12 Sýnidæmi1. Forrit sem skrifar texta... 12 Æfingaverkefni... 12 Velkomin... 12 Breytur og tag breyta.... 13 Hvað eru breytur.... 13 Sýnidæmi2. Forrit sem notar breytu.... 13 Æfingaverkefni sem nota breytur.... 14 Heiltölubreytur (bok)... 14 Character breytur (vefur)... 14 Reiknivirkjar, gildistökusetningar og reiknisegðir... 15 Sýnidæmi3a. Forrit sem notar eina double breytu og reiknivirkja.... 15 Sýnidæmi 3b. Forrit sem notar double breytur og virkja.... 15 Æfingaverkefni sem nota breytur og reiknisegð.... 16 Rauntölubreytur... 16 Rauntölubreytur deiling (bok)... 16 Nokkrar segðir... 16 Inntak frá lyklaborði... 19 Sýnidæmi4. Forrit sem notar breytur og virkja.... 19 Æfingaverkefni sem nota breytur.... 20 Gildistökusetningar... 20 Æfingaverkefni gildistökusetningar og segðir... 20 Litrafjoldi (bok)... 20 Tommur í sentimetra... 21 Þungaskattur (verkefni)... 21 Eldsneytiseyðsla (verkefni)... 21 Eldsneytiskostnaður (verkefni)... 21 Virðisauki (bok)... 21 Verðlækkun (bok)... 21 Flatarmál hrings... 21 Hitastig1... 21 Skattur1 (bok)... 22 Fastar... 22 Sýnidæmi. Forrit reiknar flatarmál hrings með því að nota fasta.... 22 Æfingaverkefni með fasta... 23 Virdisauki (bok)... 23 Random tölur (tilviljnarkenndar tölur)... 23 Sýnidæmi um forrit sem skrifar út tilviljunarkennda tölu á milli 0 og 1... 23 Sýnidæmi. Forrit sem skrifar út tilviljunarkennda heiltölu á milli 0 og 9... 23 Æfingaverkefni úr tilviljunarkenndum tölum... 24 Teningakast (bok)... 24 Yatzi kast (bok)... 24 If setningar... 24 Sýnidæmi um If setningar... 24 Nokkrar æfingar í forritun bls. 2 Hallgrímur Arnalds

Samanburðarvirkjar... 25 Rökvirkjar... 25 Æfingaverkefni if setningar... 26 Góðan daginn 1 (bok)... 26 Góðan daginn 2 (bok)... 26 Minnsta tala 1 (verkefni)... 26 Minnsta tala 2 (verkefni)... 26 Litrar/gallon... 26 Tommur/sentimetra... 26 Árstíðir 1... 26 Nafn mánaðar (verkefni)... 26 Aldur 1... 27 Aldur_2... 27 Aldur_3... 27 SkatturIf (bok)... 27 Vikulaun... 27 Hlaupaár (bok)... 27 Lögleg dagsetning.... 27 Lykkjur... 28 do.. while lykkjur... 28 while lykkjur... 29 for lykkjur... 29 Break skipunin... 30 Continue skipunin... 30 Æfingaverkefni - lykkjur... 31 Bokstafur1... 31 Bokstafur2 (bok)... 31 Flatarmál ferhyrnings endurtekning... 31 Heiltala - lykkja (bok)... 31 Talnabil1... 31 Talnabil2... 31 Talnabil upp og niður (bok)... 31 Talnabil Oddatölur (bok)... 31 Talnabil - annað veldi (bok)... 32 Summa... 32 Litrar/gallon valmynd (bok)... 32 Tommur/sentimetra valmynd... 32 Talnabil - hropmerkt... 32 Skattur lykkja... 32 SkatturLykkja2 (bok)... 33 Lína í margföldunartöflu... 34 > Margföldunartafla... 34 Teikna ferning (verkefni)... 34 Greiðsluáætlun (verkefni)... 36 Spilið 21 (verkefni)... 36 Formuð útprentun... 38 Static föll... 40 Sýnidæmi um einfalt fall... 40 Sýnidæmi um fall með færibreytu en engu skilagildi... 40 Æfingadæmi um föll með gildisfæribreytum en ekki skilagildi:... 41 Nokkrar æfingar í forritun bls. 3 Hallgrímur Arnalds

Ummál hrings (bók) (vantar upptöku)... 41 Flatarmál ferhyrnings (bók)(vantar upptöku)... 41 Lína í margföldunartöflu með falli... 41 Margföldunartafla með falli... 41 Hitastigstafla (vantar bók)... Error! Bookmark not defined. SkatturLykkja2Fall ( vantar bok)... 42 Sýnidæmi um fall með færibreytu og skilagildi... 43 Sýnidæmi um fall með tveimur færibreytum og skilagildi... 43 Æfingadæmi um föll með gildisfæribreytum og tölulegu skilagildi:... 44 Flatarmál ferhyrnings (vantar bok)... 44 Flatarmál hrings (bok)... Error! Bookmark not defined. Fallið eldsneytiseydsla (bok)... 44 Sýnidæmi um fall sem skilar rökgildi (true eða false)... 44 Æfingadæmi um föll með gildisfæribreytum en ekki skilagildi:... 46 Talnabil - Fall 2... 46 Teikna ferning fall (verkefni)... 46 Æfingadæmi um föll með gildisfæribreytum og skilagildi:... 47 Litrar/gallon með falli, valmynd (bok)... 47 Tommur/sentimetrar með falli, valmynd... 47 Fallið staðgeiðsla... 47 SkatturFall (bok)... 46 Fallið otthungur... 48 Fallið deilanleg (bok)... 45 Talnabil - Fall 1... 48 Hlaupaár (bok)... 48 Dagafjöldi frá áramótum.... 49 Veldi... 49 Modulus... 49 Lán með föllum... 49 Fylki... 50 Sýnidæmi um notkun fylkis í forriti... 51 Æfingadæmi - fylki... 51 Manhitastig2 (bok)... 51 Birtir hæsta, lægsta og meðalhitastig.... 51 Nafn... 51 Vikulaun... 51 Langstökk... 51 Einkunnir (verkefni)... 52 Lögleg dagsetning... 52 Ýmislegt... 52 Æfingadæmi... 52 Bokstafur1 (bok)... 52 Tákn... 52 Prímtölur... 53 Sjóorusta (bok)... 53 Monte Carlo aðferð til að finna pí... 53 Klasar... 54 Sýnidæmi... 54 Klasinn Ferh, dæmi um klasa fyrir ferhyrning... 54 Æfingadæmi... 58 Nokkrar æfingar í forritun bls. 4 Hallgrímur Arnalds

Klasinn hringur... 58 Klasinn Land (bok)... 58 Klasinn dagsetning... 59 Klasinn vinnutimi... 59 Klasinn minnisatridi... 59 Klasinn spil (verkefni)... 59 String klasinn... 61 Upphafsstafir (verkefni)... 61 Keðja (verkefni)... 62 Klasar erfðir... 62 Sýnidæmi úr erfðum... 62 Æfingardæmi úr erfðum... 64 Hus Ibudarhus (bok)... 64 Fjall - Eldfjall... 64 Villumeðhöndlun try catch throw... 65 Viðauki 1. Lausnir nokkurra verkefna... 66 Æfingaverkefni breytur og segðir... 66 Heiltölubreytur (IntBreyta)... 66 Rauntölubreytur deiling... 66 Skattur1... 66 Nafn1... 67 Litrar1... 67 Verd1... 68 Virdisauki1... 68 Mynteiningar1... 68 Mynteiningar með falli... 68 Mynteiningar með falli og fylki... 69 Virdisauki_fasti... 69 Æfingaverkefni random tölur... 69 Yatzikast... 69 Æfingaverkefni if setningar... 70 Góðan daginn 1... 70 Góðan daginn 2... 70 SkatturIf... 70 Hlaupaár.... 71 Æfingaverkefni lykkjur... 71 Bokstafur2... 71 Lína í margföldunartöflu - (MargfoldunTafla1)... 71 Margföldunartafla - (Margföldunartafla2)... 72 Heiltala - lykkja... 72 Talnabil upp og niður... 72 Oddatala... 73 Talnabil - annað veldi... 73 SkatturLykkja2 (bok) reyndar með falli... Error! Bookmark not defined. Litrar/gallon valmynd... 73 Æfingaverkefni föll... 74 Talnabil með falli... 74 Flatarmál ferhyrnings (FlatarmalFerhFall)... 74 Flatarmál hrings útgáfa 1... 75 Lína í margföldunartöflu með falli - (MargfoldunTafla1Fall)... 75 Nokkrar æfingar í forritun bls. 5 Hallgrímur Arnalds

Margföldunartafla með falli - (MargfoldunTafla2Fall)... 75 Flatarmál hrings útgáfa 2... 76 Fallið eldsneytiseydsla... 77 Skattur Fall... 77 Fallið deilanleg... 77 Litrar/gallon með falli, valmynd... 78 Hlaupaár... 79 Dagsetningaföll... 79 Æfingadæmi - fylki... 80 Manhitastig2... 80 Ýmislegt... 80 Bokstafur1... 80 Sjóorusta... 81 Einingar klasi sem inniheldur nokkur föll til að umreikna mismunandi einingar... 82 Æfingaverkefni klasar... 83 Land... 83 Æfingardæmi úr erfðum... 84 Hus Ibudarhus (bok)... 84 Æfingaverkefni skil (interface)... 85 Nokkrar æfingar í forritun bls. 6 Hallgrímur Arnalds

Tilgangur og uppbygging þessara leiðbeininga Þessir punktar eru ætlaðir sem safn af æfingaverkefnum fyrir byrjendur í forritun. Vonandi verður raunin að nemendur telji að þessi verkefni nýtist þeim. Þessi verkefni eru hugsuð sem æfingaverkefni sem nota má með kennslubók en ekki sem sjálfstæð kennslubók. Einnig má nota verkefnin án kennslubókar en þá með leiðbeiningum kennara eða með leiðbeiningum á vef. Nota má þessi verkefni til að æfa sig í mismunandi forritunarmálum, en í þessari útgáfu eru tekin dæmi í Java. Til eru tvær aðrar útgáfur þessa heftis þar sem dæmi úr C++ og Pascal eru notuð. Hugmyndir að fleiri verkefnum og ábendingar um hvað megi betur fara eru vel þegnar, t.d. á tölvupóstfang hallgrimur@ru.is. Uppbygging þessara leiðbeininga er miðuð við að nemandi læri með því leysa verkefni, fremur en að lesa um mismunandi lausnaraðferðir. Reynt er að byrja á kynna ákveðið efni með forritunardæmi, slík dæmi kalla ég sýnidæmi. Dæmið er skýrt með stuttum skýringum á undan dæminu og ekki síður með athugasemdum í dæminu sjálfu. Síðan koma æfingadæmi sem nemandi leysir. Nemandi þarf að meta hversu mörg dæmi hann leysir, en auðvitað gildar það að því fleiri dæmi sem leyst eru, því betur festist viðkomandi atriði í huganum. Æfingadæmi eru þrenns konar: Æfingadæmi með lausn aftast í viðauka í þessu hefti. Eindregið er mælt með að nemandi reyni að leysa dæmi áður en dæmi um lausn er skoðað. Nemandi hefur hins vegar þann kost að skoða lausnirnar ef hann lendir í vandræðum með að leysa dæmið og einnig til að fá huganlega aðrar hugmyndir að lausnaraðferð heldur en hans eigin. Slík æfingadæmi eru auðkennd með merkinu (bok) Dæmi með lausn á vef fyrir þá nemendur sem hafa aðgang að heimasvæði námskeiðs. Slík æfingadæmi eru auðkennd með merkinu (vefur) Dæmi sem hafa reynst ágæt æfingarverkefni fyrir nemendur án lausnar. Það eru hins vegar til lausnir við þessum verkefnum sem einungis leiðbeinandi getur fengið send. Slík æfingadæmi eru auðkennd með merkinu (verkefni) Dæmi án lausna. Kveðja Hallgrímur Arnalds Nokkrar æfingar í forritun bls. 7 Hallgrímur Arnalds

Hvað þarf til að búa til forrit í Java Til að geta keyrt og búið til java forrit þarf java umhverfið að vera sett upp á viðkomandi tölvu. Java umhverfið má t.d. nálgast og hlaða niður af heimasíðu Sun sem þróaði Java. Til eru nokkrar útgáfur af Java umhverfinu og skiptir máli hvaða útgáfa er valin. Þegar við hlöðum niður Java umhverfinu getum við valið hversu mikið við viljum hlaða niður í tölvuna okkar. Við getum hlaðið niður JRE útgáfum, en slíkar útgáfur innihalda einungis það sem til þarf til að geta keyrt Java forrit. Slíkar útgáfur eru því ekki nægjanlegar til að búa til Java forrit eins og við ætlum að gera. JDK (Java Development Kit) útgáfur innihalda það sem þarf til að þróa hugmúnað. Þær eru til í nokkrum útgáfum (þegar þetta er skrifað er JDK 6 nýjasta útgáfan): Java Standard Edition (J2SE) J2SE má nota til að þróa hugbúnað í java sem nota á venjulegum tölvum. Java Enterprise Edition (J2EE) J2EE má nota til að búa til hugbúnað fyrir tölvur sem eru settar upp sem miðlarar (server side applications) t.d. Java servlets og Java ServerPages. Java Micro Edition (J2ME). J2ME má nota til að þróa hugbúnað fyrir minni tæki t.d. farsíma. Í þessu hefti er miðað við að nota J2SE útgáfuna til að kynna forritun í Java. Til að hlaða niður þessari útgáfu má t.d. fara á slóðina: http://java.sun.com/javase/downloads/index.jsp Þegar þessi slóð er valin birtist skjámynd lík og skjámyndin hér að neðan: Nokkrar æfingar í forritun bls. 8 Hallgrímur Arnalds

Þar má velja Download við JDK 6 Þá birtist skjámyndin: Hér er smellt á Accept og valið að hlaða niður Windows Offline Installation, Multilanguage ef þið notist við windows tölvu, en ef ekki þar að velja viðkomandi útgáfu. eftir leiðbeiningum sem þá eru gefnar. Þegar búið er að hlaða þessu á disk tölvunnar þarf að setja upp umhverfið með því t.d. að tvísmella á skráarnafnið og fara Þegar búið er að setja upp umhverfið getum við byrjað að þróa hugbúnað í Java. Oftast er samt hlaðið niður einhverju þróunartóli sem auðveldara er að vinna heldur en hráu Java umhverfi. Ég miða hér við að notað sé umhverfið drjava, en notandi getur auðveldlega valið eitthvert annað umhverfi ef óskað er. Til að hlaða niður drjava umhverfið má t.d. fara á slóðina: http://drjava.org/ Nokkrar æfingar í forritun bls. 9 Hallgrímur Arnalds

drjava þróunarumhverfi Ekki þarf að setja dr Java forritið sérstaklega upp heldur er hægt að ræsa það beint. Þegar forritið er ræst byrjar það á að spyrja um hvar finna megi skránna tools.jar. Þið þurfið að vísa á þá skrá, en þessa skrá er að finna á undirmöppunni lib undir möppu sem inniheldur java (sem þið settuð inn hér að framan). Myndin að neðan sýnir skjáinn eftir að drjava hefur verið ræst og fyrsta sýnidæmið slegið inn Nokkrar æfingar í forritun bls. 10 Hallgrímur Arnalds

Þá þarf að þýða forritið, er það gert með því að velja Tools og compile current document Ef þýðingin tekst án villna koma skilaboðin Last compilation completed successfully. Ef villur koma í þýðingu koma villuboð í stað þessa texta. Til að keyra forritið þarf síðan að velja Tools og Run Documents main method. Þá birtist það sem forritið skrifar á sama stað. Nokkrar æfingar í forritun bls. 11 Hallgrímur Arnalds

Grunnatriði form java forrits skrifað á skjá Sýnidæmi1. Forrit sem skrifar texta. // Fyrsta Java forritið //Þetta er forrit sem skrifar textann Hallo heimur á skjáinn public class Hallo { System.out.println("Hallo heimur"); Sýnidæmi1. Skýringar // Fyrsta Java forritið // Það sem er aftan við þetta tákn í línu er athugasemd sem hefur engin áhrif á virkni forritsins. Hér getur forritarinn sett inn athugasemdir sem gott er að hafa um virkni forritsins o.fl. public class Hallo { Þetta er klasi sem heitir Hallo. Hér byrjar aðalforritið. Hér byrjar framkvæmd forritsins. Forritið er síðan innan slaufusviganna () System.out.println("Hallo heimur"); Sytsem.our.println er notað til að skrifa út á skjá. Æfingaverkefni Velkomin (VelkominJava) Búið til forrit sem skrifar Velkomin að læra Java. Klasinn á að heita VelkominJava og vistast í skránni VelkominJava.java Nokkrar æfingar í forritun bls. 12 Hallgrímur Arnalds

Breytur og tag breyta. Hvað eru breytur. Breytur eru í raun nafn á minnishólfi eða minniseiningu í tölvunni. Þannig notum við breytur til að geyma gögn í forriti. Breytur geta verið af mismunandi tagi, þ.e. við getum geymt mismunandi tegundir af gögnum í breytum. Þannig getum við t.d. geymt heiltölur (1, 2, 10, 251 o.s.frv.), kommutölur eða rauntölur ( 0.0, 2.5, 111,77 o.s.frv.) tákn (svo sem a, b, % $ o.s.frv.) svo dæmi sé nefnt. Eins og áður segir hafa breytur nafn sem notað er til að fá aðgang að gildi sem er í breytunni eða minnishólfinu. Eins og áður segir getum við skilgreint breytur af mismunandi tagi til að geyma mismunandi upplýsingar. Dæmi um tög sem nota má í Java í töflu 1. (Þetta er ekki tæmandi listi heldur einungis dæmi um nokkur tög) Tafla 1. Tag (e. Type) Innihald Dæmi int heiltala 1, 251, -71 double rauntala 7., 7.553, -0.33 char bókstafur, tákn A, a, #, 4 boolean rökgildi true, false String Mörg tákn Jón, Jón Jónsson (ekki grunntag) Sýnidæmi2. Forrit sem notar breytu. // Búinn til klasi sem heitir Breyta2 public class Breyta2 { /** main fall innan klasans skilgreint */ double tala; // búin til breyta sem heitir tala og er // af taginu double. Breytan getur þá geymt rauntölu // (kommutölu) // setja gildið 15.5 inn í breytuna tala tala = 15.5; // Birta innihald breytunnar á skjá System.out.println("Innihald breytunnar tala er: " + tala); // set gildið -7.6 í stað gildising 15.5 inn í breytuna tala tala = -7.6; // Birta innihald breytunnar aftur á skjá System.out.println("Innihald breytunnar tala er nú: " + tala); Nokkrar æfingar í forritun bls. 13 Hallgrímur Arnalds

Æfingaverkefni sem nota breytur. Heiltölubreytur (bok) (IntBreyta) Búið til forrit býr til eina heiltölubreytu (int breytu) setur töluna 5 (ekki 5.0 það er rauntalan eða kommutalan 5.0) breytuna og skrifar síðan innihald breytunnar á skjá. Forritið á síðan að bæta við tölunni 8 við það sem er inn í breytunni og birta á skjá hvert innihald breytunnar er. Character breytur (vefur) (CharBreyta) Búið til forrit býr til eina character breytu (char breytu) setur bókstafinn H í breytuna og skrifar síðan innihald breytunnar á skjá. Forritið á síðan að setja táknið í breytuna í stað bókstafsins H og skrifa síðan innihald breytunnar á skjá. Þegar notaðar eru breytur sem eiga að geyma bókstafi eða tákn þarf að afmarka táknið sem setja á í breytuna með einfaldri kommu, t.d. char takn; takn = a ; eða takn = $ ; Nokkrar æfingar í forritun bls. 14 Hallgrímur Arnalds

Reiknivirkjar, gildistökusetningar og reiknisegðir Reiknivirkjar (Arithmetic operators) Nafn tákn Dæmi samlagning + int summa = 1 + 5 frádráttur - float mismunur = 13.25-1.91 margföldun * float margfeldi = 5 * 7.6 deiling / int nidurstada = 13 / 3 módúlus ("mod") % int afgangur = 11 % 6 samlanging ++ tala++, ++tala frádráttur -- tala--, --tala Sýnidæmi3a. Forrit sem notar eina double breytu og reiknivirkja. // Búinn til klasi sem heitir Breyta1 public class Breyta3 { /** main fall innan klasans skilgreint */ double tala; // búin til breyta sem heitir tala og er // af taginu double. Breytan getur þá geymt rauntölu // (kommutölu) // Hér leggur forritið saman tölurnar 15.5 og 7.6 og setur // niðurstöðuna í breytuna sem heitir tala (þ.e. gildið // 23.1) tala = 15.5 + 7.6; // notum + reiknivirkjann // Birta innihald breytunnar á skjá System.out.println("Innihald breytunnar tala er: " + + tala); // Hér hækkum við gildið í breytunni tala um 5.5 tala = tala + 5.5 ; // Birta innihald breytunnar aftur á skjá System.out.println("Innihald breytunnar tala er nú: " + + tala); Sýnidæmi 3b. Forrit sem notar double breytur og virkja. // Búinn til klasi sem heitir ReiknaFlatarmalHrings public class ReiknaFlatarmalHrings { /** main fall innan klasans skilgreint */ double radius; double flatarmal; // setja gildið 15 inn í breytuna radius Nokkrar æfingar í forritun bls. 15 Hallgrímur Arnalds

radius = 15; // Reikna flatarmálið flatarmal = radius * radius * 3.14159; // Birta niðurstöður á skjá System.out.println("Flatarmál hrings með radius " + radius + " er " + flatarmal); Æfingaverkefni sem nota breytur og reiknisegð. Rauntölubreytur (doublebreyta) Búið til forrit býr til eina rauntölubreytu (double breytu) setur töluna 2.4 í breytuna og skrifar síðan innihald breytunnar á skjá. Forritið á síðan að bæta við tölunni 1.7 við það sem er inn í breytunni og birta á skjá hvert innihald breytunnar er. Rauntölubreytur deiling (bok) (vantar upptöku) (doublebreyta2) Búið til forrit býr til eina rauntölubreytu (double breytu) setur töluna 2.2 í breytuna og skrifar síðan innihald breytunnar á skjá. Forritið á síðan að deila í innihald breytunnar með 3 og vista niðurstöuna aftur í breytunni og birta á skjá hvert innihald breytunnar er. Nokkrar segðir Hér að neðan má finna dæmi um mismunandi segðir. Til að prófa rétt svör er tilvalið að afrita forrit og prófa. // Búinn til klasi sem heitir ReikniSegdir public class ReikniSegdir1 { /** main fall innan klasans skilgreint */ int nidurstada = 2 + 2; // nidurstada verður 4 System.out.println(nidurstada); nidurstada = nidurstada - 1; // nidurstada verður 3 System.out.println(nidurstada); nidurstada = nidurstada / 2; // nidurstada verður 1 System.out.println(nidurstada); nidurstada = nidurstada * 4; // nidurstada verður 4 System.out.println(nidurstada); nidurstada = nidurstada + 8; // nidurstada verður 12 System.out.println(nidurstada); nidurstada = nidurstada % 7; // nidurstada verður 5 System.out.println(nidurstada); Þegar forritið er keyrt skrifast því út: 4 3 1 4 Nokkrar æfingar í forritun bls. 16 Hallgrímur Arnalds

12 5 // Forrit sem sýnir niðurstöðu nokkurra reiknisegða public class ReikniSegdir2 { /** main fall innan klasans skilgreint */ int i; double d; i = 2 + 3 * 8; System.out.println(i); i = 8 * 3 + 2; System.out.println(i); i = -9-4 * 2; System.out.println(i); i = 21 / 3 / -2; System.out.println(i); i = 21 / 2 / -2; System.out.println(i); i = 27-3 - 8; System.out.println(i); i = 9 / 2; System.out.println(i); d = 9.0 / 2.0; System.out.println(d); d = 9.0 / 2; System.out.println(d); i = 8 % 3; System.out.println(i); i = 1 % 2; System.out.println(i); Þegar forritið að ofan er keyrt skrifast út: 26 26 17 3 5 16 4 4.5 4.5 2 1 // Forrit sem sýnir niðurstöðu nokkurra reiknisegða public class ReikniSegdir3 { int i = 2; i++; System.out.println(i); // 3 ++i; System.out.println(i); // 4 System.out.println(++i); // 5 Nokkrar æfingar í forritun bls. 17 Hallgrímur Arnalds

System.out.println(i++); // 5 System.out.println(i); // 6 int val = 2*i++; System.out.println(val); // 12 Nokkrar æfingar í forritun bls. 18 Hallgrímur Arnalds

Inntak frá lyklaborði Til að lesa inn gögn af lyklaborði er hentugt að nota Scanner klasann. Í dæminu hér að neðan má sjá hvernig við getum lesið inn mismunandi gögn af lyklaborði (integer, double, streng og boolean gildi) // það þarf að importa Scanner klasanum // til að fá aðgang að honum public class TestScanner { public static void main(string args[]) { // Búum til tilvik af Scanner klasanum Scanner scanner = new Scanner(System.in); // Dæmi um hvernig lesa má inn heiltölu System.out.print("Sláðu inn heiltölu: "); int intvalue = scanner.nextint(); System.out.println("Þú valdir heiltöluna " + intvalue); // Dæmi um hvernig lesa má inn kommutölu (double tölu) System.out.print("Sláðu inn double tölu: "); double doublevalue = scanner.nextdouble(); System.out.println("Þú valdir kommutöluna " + doublevalue); // Dæmi um hvernig lesa má inn texta sem er eitt orð System.out.print("Sláðu inn eitt orð: "); String string = scanner.next(); System.out.println("Þú valdir orðið" + string); // Dæmi um hvernig lesa má inn rökgildi (boolean gildi) System.out.print("Sláðu inn rökgildi: "); boolean booleanvalue = scanner.nextboolean(); System.out.println("Þú valdir rökgildið " + booleanvalue); Sýnidæmi4. Forrit sem notar breytur og virkja. Þetta dæmi er eins og fyrra dæmi nema gildi er lesið í breytur af lyklaborði með því að nota Scanner klasann // það þarf að importa Scanner klasanum // til að fá aðgang að honum // Búinn til klasi sem heitir ReiknaFlatarmalHrings public class ReiknaFlatarmalHrings { /** main fall innan klasans skilgreint */ double radius; double flatarmal; // Búum til tilvik af Scanner klasanum Scanner lesaaflyklabordi = new Scanner(System.in); System.out.print("Sláðu inn radius hrings: "); radius = lesaaflyklabordi.nextdouble(); Nokkrar æfingar í forritun bls. 19 Hallgrímur Arnalds

System.out.println("Þú valdir radiusinn " + radius); // Reikna flatarmálið flatarmal = radius * radius * 3.14159; // Birta niðurstöður á skjá System.out.println("Flatarmál hrings með radius " + radius + " er " + flatarmal); Æfingaverkefni sem nota breytur. Heiltala (heiltala) Búið til forrit sem biður notanda að slá inn heiltölu. Forritið svarar síðan þú hefur valið töluna: og síðan skrifast réttur tölustafur út. Kommutala (kommutala) Búið til forrit sem biður notanda að slá inn kommutölu. Forritið svarar síðan þú hefur valið töluna: og síðan skrifast rétt tala út. Textastrengur (bok) (Nafn1) Skrifið forrit sem spyr notanda að nafni. Forritið svarar Halló og síðan nafnið. Dæmi Hvað heitir þú: Jónas Halló Jónas eða: Hvað heitir þú: Elísabet Andrea Jónsdóttir Halló Elísabet Andrea Jónsdóttir Gildistökusetningar Æfingaverkefni gildistökusetningar og segðir Litrafjoldi (bok) (Litrar1) Búið til forrit sem spyr um lítrafjölda. Forritið skrifar síðan út lítrafjöldann sem valinn var og hversu mörg gallon sá lítrafjöldi er. Í einu galloni eru um 3,6 lítrar. Nokkrar æfingar í forritun bls. 20 Hallgrímur Arnalds

Tommur í sentimetra (Tommur1) Búið til forrit sem spyr um lengd í tommum. Forritið skrifar síðan út tommufjöldann sem valinn var og hversu margir sentimetrar sá tommufjöldi er. Í einni tommu eru 2,53 sentimetrar. Þungaskattur (verkefni) (Thungaskattur1) Búið til forrit sem spyr um upphæð þungaskatts á hvern ekinn kílómeter og aksturslengd í kílómeturm. Forritið skrifar síðan út upphæð þungaskatts miðað við þennan akstur. Eldsneytiseyðsla (verkefni) (Eldsneyti1) Búið til forrit sem spyr um lítrafjölda og aksturslengd í kílómetrum. Forritið skrifar síðan út eldsneytiseyðslu, þ.e. fjölda lítra per 100 km. Eldsneytiskostnaður (verkefni) (Eldsneytiskostn) Búið til forrit sem spyr um lítrafjölda, verð á benssíni, og aksturslengd í kílómeturm. Forritið skrifar síðan út eldsneytiskostnað per 100 ekna kílómetra. Virðisauki (bok) (Virdisauki1) Búið til forrit sem spyr um upphæð án virðisaukaskatts. Forritið skrifar síðan hver sú upphæð er með virðisaukaskatti. Gera má ráð fyrir að viðisaukaskattsprósentan sé 24.5% Verðlækkun (bok) (Verd1) Búið til forrit sem reiknar verð vöru fyrir og eftir verðlækkun. Forritið spyr um verð vöru fyrir verðlækkun og um hversu mörg prósent varan á að lækka. Forritið birtir síðan verð vörunnar eftir verðlækkun. Dæmi: Ef verð vöru eru 110 kr. fyrir verðlækkun og verðlækkunin er 10% þá er verð vörunnar 99 krónur eftir verðlækkun. Ef verð vöru eru 100 kr. fyrir verðlækkun og verðlækkunin er 6,5% þá er verð vörunnar 93,5 krónur eftir verðlækkun Flatarmál hrings (Flartrmal_hr1) Skrifið forrit sem reiknar flatarmál hrings. Forritið spyr um radius hringsins en skrifar hvert flatarmál hringsins er. Flatarmál hrings má reikna sem radius x radius x PI (eða radius x radius x 3.1415). Hitastig1 (hitastig1) Búið til forrit sem spyr um hitastig í gráðum á Farenheit skala, en skilar til baka hvert hitastigið er í gráðum á Celsius. Ef Tc er hitastig á Celsius skala og Tf er hitastig á Farenheit skala gildir jafnan: Tc = (5/9)*(Tf-32) Ath. Ef þú færð alltaf 0 út úr þessu dæmi þarft þú að skoða betur hvernær heiltöludeiling er notuð og hvenær ekki! Nokkrar æfingar í forritun bls. 21 Hallgrímur Arnalds

Skattur1 (bok) (skattur1) Reikna staðgreiðslu skatts. Látið forritið spyrja um álagningarprósentu, persónuafslátt og laun. Staðgreiðslu má reikna með því að taka álagningarprósentu af launaupphæð og draga síðan persónuafslátt frá. Forritið á að birta hver staðgreiðslan er. Nokkrar segðir með tagbreytingum: Hverju skila eftirfarandi segðir: (int) 7.9 / 2 (double) 9 / 2 Nokkrar segðir með rökvirkjum : Hverju skila eftirfarandi segðir: (5 == 5) (6 <= 4)!(5 == 5)!(6 <= 4)!true!false (5 == 5) && (6 <= 4) (5 == 5) && (6 >= 4) (5 == 5) (6 >= 4) (5 == 5) (6 <= 4) (5!= 5) (6 <= 4) Fastar Stundum getur verið þægilegt að gefa ákveðnum stærðum eða föstum nafn. Nafnið má siðan nota til að kalla fram þessa stærð. Sem dæmi um fasta í stærðfræði mætti t.d. nefna tölurnar PI og e. Þetta er mögulegt í java. Form á skilgreiningu fasta í java er: final datatype CONSTANTNAME = VALUE; t.d. gætum við þá skilgreint fasta á eftirfarandi hátt: final double PI = 3.14159; final int SIZE = 3; Sýnidæmi. Forrit reiknar flatarmál hrings með því að nota fasta. // það þarf að importa Scanner klasanum // til að fá aðgang að honum // Búinn til klasi sem heitir ReiknaFlatarmalHrings public class Fasti_ReiknaFlatarmalHrings { /** Þetta forrit reiknar flatarmál hrings með því að Nokkrar æfingar í forritun bls. 22 Hallgrímur Arnalds

* nota fasta (e. constant) */ final double PI = 3.14159; // Búum til fastann PI, þar sem PI er // fasti er ekki hægt að breyta gildi // á PI síðar í forritinu double radius; double flatarmal; // Búum til tilvik af Scanner klasanum Scanner lesaaflyklabordi = new Scanner(System.in); System.out.print("Sláðu inn radius hrings: "); radius = lesaaflyklabordi.nextdouble(); // Reikna flatarmálið með því að nota fastann PI flatarmal = radius * radius * PI; // Birta niðurstöður á skjá System.out.println("Flatarmál hrings með radius " + radius + " er " + flatarmal); Æfingaverkefni með fasta Virdisauki (bok) (Virdisauki_fasti) Búið til forrit sem spyr um upphæð án virðisaukaskatts. Forritið skrifar síðan hver sú upphæð er með virðisaukaskatti. Í þessu forriti á að nota fasta (constant) til að geyma virðisaukaskattsprósentu. Gera má ráð fyrir að virðisaukaskattur sé 24.5%. Random tölur (tilviljnarkenndar tölur) Oft verða verkefninin sem við erum að forrita skemmtilegri ef við getum kallað fram tilviljunarkenndar tölur. Í þessari grein eru sýnd nokkur dæmi um hverning við getum kallað fram tilviljunarkenndar tölur. Sýnidæmi um forrit sem skrifar út tilviljunarkennda tölu á milli 0 og 1 // Búinn til klasi sem heitir Random1". Klasann þarf að vista // í skrá sem heitir Random1.java public class Random1 { /** main fall innan klasans skilgreint Forritið skrifar út tilviljunarkennda töluu á milli 0 og 1. Prófið að keyra þetta forrit nokkurm sinnum til að sannreyna að það komi tilviljunarkennd tala á þessu bili. */ double tala = Math.random(); System.out.println("Talan sem við fengum er " + tala); Sýnidæmi. Forrit sem skrifar út tilviljunarkennda heiltölu á milli 0 og 9 // Búinn til klasi sem heitir Random2". Klasann þarf að vista í skrá // sem heitir Random2.java public class Random2 { /** main fall innan klasans skilgreint Forritið skrifar út tilviljunarkennda heiltölu á milli 0 og 9 Nokkrar æfingar í forritun bls. 23 Hallgrímur Arnalds

Prófið að keyra þetta forrit nokkurm sinnum til að sannreyna að það komi tilviljunarkennd tala á þessu bili. */ int tala = (int) (Math.random()*10); System.out.println("Talan sem við fengum er " + tala); Æfingaverkefni úr tilviljunarkenndum tölum Teningakast (bok) Búið til forrit sem á að líkja eftir teningakasti. Forritið á að birta eina tilviljunarkennda tölu á bilinu frá 1 til 6, líkt og einum teningi hafi verið kastað upp. Yatzi kast (bok) (Yatzikast) Búið til forrit sem á að líkja eftir einu kasti í tengingspilinu yatzi. Í spilinu eru fimm teningum kastað upp í einu. Forritið á að birta fimm tilviljunarkenndar tölur á bilinu frá 1 til 6, líkt og fimm teningum hafi verið kastað upp. If setningar Sýnidæmi um If setningar Almennt lítur if setning út á eftirfarandi hátt. if (skilyrði) { // skipanir sem framkvæma á ef skilyrði er rétt (true) else { // skipanir sem framkvæma á ef skilyrði er ekki rétt (fales) Form if steningar getur verið einfaldara t.d. ef aðeins þar að framkvæma eina skipun inni í if setningu má sleppa slaufusvigum t.d. if (skilyrði) // skipun sem framkvæma á ef skilyrði er rétt (true) else // skipun sem framkvæma á ef skilyrði er ekki rétt (fales) einnig má sleppa else hlutanum ef einungis á að framkvæma eitthvað er skilyrði er rétt t.d. Nokkrar æfingar í forritun bls. 24 Hallgrímur Arnalds

if (skilyrði) // skipun sem framkvæma á ef skilyrði er rétt (true) Skoðum nú dæmi um notkun if setnignar: public class IfSetning { /** main fall innan klasans skilgreint */ // skilgreinum tvær integer breytur int x = 3; int y = 4; //Skrifum á skjá hvor breytan inniheldur hærra gildi // > er samanburðarvirki sem athugar hvort það sem er fyrir // framan sé stærra en það sem er fyrir aftan virkjann. Sjá // fleiri samanburðarvirkja í töflunni að neðan if (x > y) { System.out.println("x er staerra en y"); else { System.out.println ("x er minna en y") ; Samanburðarvirkjar Samanburðarvirkjar (Equality operators) Nafn tákn Dæmi niðurstaða minna en < boolean result = (4 < 7) true stærra en > boolean result = (3.1 > 3.1) false jafnt og == boolean result = (11 == 8) false minna en eða jafnt og <= boolean result = (41.1 <= 42) true stærra en eða jafnt og >= boolean result = (41.1 >= 42) false ekki jafnt og!= boolean result = (12!= 12) false Rökvirkjar Rökvirkjar (Boolean operators) Nafn tákn Dæmi niðurstaða og virki && boolean result = (4 < 7) && (3.1 > 3.1) false eða virki boolean result = (4 < 7) (3.1 > 3.1) true ekki! boolean result =!(11 == 8) true Hér mætti koma dæmi um forrit með samsettum rökvirkjum Nokkrar æfingar í forritun bls. 25 Hallgrímur Arnalds

Æfingaverkefni if setningar Góðan daginn 1 (bok) (Daginn1) Búið til forrit sem spyr um hvað klukkan er (aðeins klukkustundina). Ef klukkan er 18 eða minna skrifar forritið Góðan daginn en annars skrifar það Gott kvöld. Góðan daginn 2 (bok) (Daginn2) Búið til forrit sem spyr um hvað klukkan er (aðeins klukkustundina). Ef klukkan er 18 eða minna skrifar forritið Góðan daginn en annars skrifar það Gott kvöld. Ef sleginn er inn tala sem er 0 eða minni, eða tala sem er stærri en 24 á forritið að skrifa Rangur innsláttur. Minnsta tala 1 (verkefni) (Minnsta1) Búið til forrit sem spyr um tvær heiltölur. Forritið skrifar síðan hvort talan er minni. Ef tvisvar er slegin inn sama talan á forritið að skrifa Tölurnar eru jafn stórar. Minnsta tala 2 (verkefni) (Minnsta2) Búið til forrit sem spyr um þrjár heiltölur. Forritið skrifar síðan hver talnanna er minnst. Litrar/gallon (LitrarGallon) Búið til forrit umbreytir lítrum í gallon eða öfugt. Forritið spyr um hvort umbreyta eigi lítrum í gallon eða gallonum í lítra. Forritið spyr síðan um aðra stærðina en reiknar hina. Í einu galloni eru um 3,6 lítrar. Tommur/sentimetra (TommurCm) Búið til forrit umbreytir tommum í sentimetra eða öfugt. Forritið spyr um hvort umbreyta eigi tommum í sentimetra eða sentimetrum í tommur. Forritið spyr síðan um aðra stærðina en reiknar hina. Í einni tommu eru 2,53 sentimetrar. Árstíðir 1 (Arstidir1) Búið til forrit sem spyr um númer mánaðar. Forritið skrifar síðan hvort nú sé vetur, sumar, vor eða haust. Ef sleginn er inn talan 1 3 skrifast að það sé vetur, ef sleginn er inn talan 4 5 er vor, 6 8 er sumar, 9 10 er haust og 11 12 er vetur. Ef sleginn er inn talan sem er 0 eða minni eða 13 og hærri á að skrifa rangur innsláttur. Nafn mánaðar (verkefni) (Manudur1) Búið til forrit sem spyr um númer mánaðar. Forritið skrifar síðan hvað mánuðurinn heitir. Ef sleginn er inn tala sem er 0 eða minni eða 13 og hærri á að skrifa rangur innsláttur. Nokkrar æfingar í forritun bls. 26 Hallgrímur Arnalds

Aldur 1 (Aldur1) Búið til forrit sem spyr um aldur. Forritið á að bregðast mismunandi við eftir því hvaða tala er sleginn inn. Ef slegin er inn tala á bilinu: 0 19 þá á að skrifast út Vonandi ætlar þú í Háskólann í Reykjavík annars skrifast aðeins út Það var fróðlegt! Aldur_2 (Aldur2) Búið til forrit sem spyr um aldur. Forritið á að bregðast mismunandi við eftir því hvaða tala er sleginn inn. Ef slegin er inn tala á bilinu: 0 6 þá á að skrifast út Nú, svo þú ferð að byrja í skóla 7 15 Þá spyr forritið hvort viðkomandi ætli í menntaskóla og bregst við á mismunandi hátt eftir því hvort svarað er með J eða N. 16 105 Þá kveður forritið >105 Þá svarar forritið að líklega hafi viðkomandi svarað spurningunni vitlaust. Aldur_3 (Aldur3) Búið til forrit sem virkar á sama hátt og forritið á undan nema spurt er um fæðingarár. Forritið reiknar síðan aldur viðkomandi en er að öðru leyti eins og forrit í næstu æfingu á undan. SkatturIf (bok) (skatturif) Reikna staðgreiðslu skatts. Látið forritið spyrja um álagningarprósentu, persónuafslátt og laun. Staðgreiðslu má reikna með því að taka álagningarprósentu af launaupphæð og draga síðan persónuafslátt frá. Skatturinn má ekki vera neikvæður Forritið á að birta hver staðgreiðslan er. Vikulaun Búið til forrit sem reiknar vikulaun einstaklings. Forritið spyr um laun á klukkustund og fjölda unninna stunda í vikunni. Ef fjöldi unninna stunda er meiri en 40 á forritið að hækka tímakaup unninna stunda fram yfir 40 um 50%. Forritið reiknar síðan og skrifar út vikukaupið. Forritið spyr síðan hvort endurtaka eigi þessa vinnslu. Hlaupaár (bok) (Hlaupaar1) Búið til forrit sem spyr um ártal. Forritið skrifar síðan út hvort viðkomandi ár er hlaupaár eða ekki ( ár er hlaupaár ef 4 gengur upp í ártalinu,undantekning ef 100 gengur upp í en 400 ekki, en til að byrja með má gera ráð fyrir að fjórða hvert ár sé hlaupaár) Lögleg dagsetning. (dagsetning1) Búið til forrit sem spyr um dag, mánuð og ártal (þrjár heiltölur). Forritið skrifar síðan út hvort viðkomandi dagsetning sé lögleg eða ekki. Nokkrar æfingar í forritun bls. 27 Hallgrímur Arnalds

Lykkjur Lykkjur eru notaðar þegar endurtaka á sömu vinnslu nokkrum sinnum. Í C++ eru til þrjár gerðir af lykkjum, þ.e. while lykkja, do.. while lykkja og for lykkjur. Skoðum fyrst do while lykkju. do.. while lykkjur Almennt lítur do while lykkja út á eftirfarandi hátt. do { // skipanir endurtaka á while (skilyrði) Form while lykkju getur verið einfaldara t.d. ef aðeins á að endurtaka eina skipun. do // skipun endurtaka á while (skilyrði) Skoðum nú dæmi um notkun do while lykkju: // það þarf að importa Scanner klasanum // til að fá aðgang að honum // Búinn til klasi sem heitir ReiknaFlatarmalHrings public class do_while1 { /** Þetta forrit reiknar flatarmál hrings með því að * nota fasta (e. constant) */ final double PI = 3.14159; // Búum til fastann PI, þar sem PI er // fasti er ekki hægt að breyta gildi // á PI síðar í forritinu double radius; double flatarmal; // Búum til tilvik af Scanner klasanum Scanner lesaaflyklabordi = new Scanner(System.in); int svar=1; do { // Hér byrjar lykkjan, það sem er innan // lykkjunnar er endurtekið þar til // skilyrðið í lok lykkjunnar er ekki uppfyllt System.out.print("Sláðu inn radius hrings: "); radius = lesaaflyklabordi.nextdouble(); // Reikna flatarmálið með því að nota fastann PI flatarmal = radius * radius * PI; // Birta niðurstöður á skjá System.out.println("Flatarmál hrings með radius " + radius + " er " + flatarmal); System.out.println("Viltu reikna flatarmál annars hrings?: (1 ef já en 2 en nei) "); svar = lesaaflyklabordi.nextint(); // ef 1 er sett inn í breytuna svar verður // lykkjan endurtekin Nokkrar æfingar í forritun bls. 28 Hallgrímur Arnalds

while(svar==1); // Lykkjan er endurtekin á meðan // innihald breytunnar svar er 1 while lykkjur Almennt lítur while lykkja út á eftirfarandi hátt. while (skilyrði) { // skipanir endurtaka á Form while lykkju getur verið einfaldara t.d. ef aðeins á að endurtaka eina skipun. while (skilyrði) // skipun sem á að endurtaka Skoðum nú dæmi um notkun while lykkju: // það þarf að importa Scanner klasanum // til að fá aðgang að honum public class DoWhile1 { /** Main fall */ public static void main(string args[]) { char svar; // breyta sem geymir svar um hvort endurtaka eigi // vinnslu Scanner scanner = new Scanner(System.in); do { System.out.println ("Hallo \n "); System.out.println ("Heilsa aftur? ") ; String strsvar = scanner.next(); // fara þarf þessa leið til að // lesa char gildi þ.e. eitt // takn sem er ekki tala svar = strsvar.charat(0); while (svar == 'j' svar == 'J'); for lykkjur Almennt lítur for lykkja út á eftirfarandi hátt. for (frumstilling;skilyrði;framkvæmd í lok) { Skipanir sem á að endurtaka Skoðum nú dæmi um notkun for lykkju: // Forrit sem inniheldur lykkju sen telur frá einum upp í 10 public class Forlykkja { /** Main fall */ public static void main(string args[]) { Nokkrar æfingar í forritun bls. 29 Hallgrímur Arnalds

for (int teljari = 1; teljari <= 10; teljari++) { System.out.print(teljari + " "); Break skipunin public class TestBreak { /** Main method */ int sum = 0; int number = 0; while (number < 20) { number++; sum += number; if (sum >= 100) break; System.out.println("The number is " + number); System.out.println("The sum is " + sum); Continue skipunin public class TestContinue { /** Main method */ int sum = 0; int number = 0; while (number < 20) { number++; if (number == 10 number == 11) continue; sum += number; System.out.println("The sum is " + sum); Nokkrar æfingar í forritun bls. 30 Hallgrímur Arnalds

Æfingaverkefni lykkjur Bokstafur1 (bokstafur1) Búið til forrit sem biður notanda að slá inn bókstaf. Forritið svarar síðan þú hefur valið bókstafinn: og síðan skrifast réttur bókstafur út. Bokstafur2 (bok) (bokstafur2) Búið til forrit sem biður notanda að slá inn bókstaf. Forritið svarar síðan þú hefur valið bókstafinn: og síðan skrifast réttur bókstafur út. Forritið spyr síðan hvort endurtaka eigi þetta eða ekki. Flatarmál ferhyrnings endurtekning (Flartrmal_ferh_lykkja) Skrifið forrit sem reiknar flatarmál ferhyrnings. Forritið spyr um lengd og breidd ferhyrningsins en skrifar hvert flatarmál ferhyrningsins er. Forritið spyr síðan hvort endurtaka eigi þetta eða ekki. Heiltala lykkja (bok) (HeiltalaLykkja) Búið til forrit sem biður notanda að slá inn heiltölu. Forritið svarar síðan þú hefur valið töluna: og síðan skrifast réttur tölustafur út. Forritið spyr síðan notanda hvort hann vilji slá inn aðra heiltölu. Ef því er svarað játandi er vinnslan endurtekin þar til að notandi velur að slá ekki inn fleiri tölur. Talnabil1 Búið til forrit sem prentar allar tölur á ákveðnu bili, t.d. frá 10 upp í 100. Notandinn á að ákveða hvaða bil er valið. Talnabil2 Skrifið forrit sem les inn tvær heiltölur frá lyklaborði og prentar út á skjáinn allar tölur á bilinu á milli talnanna. Prentið út á skjáinn villuskilaboð ef engar tölur finnast á bilinu þ.e. tölurnar eru jafn háar eða önnur aðeins einum hærri en hin. Talnabil upp og niður (bok) (Talnabil3) Búið til forrit sem skrifar út allar tölur á ákveðnu bili frá byrjunartölu að lokatölu. T.d. ef bilið er frá 6 upp í 11 eiga að skrifast út tölurnar 6 7 8 9 10 11. í þessari röð Ef valin er valið er bilið frá 11 til 6 á að skrifast 11 10 9 8 7 6 í þessari röð. Notandinn á að ákveða hvaða bil er valið. Talnabil Oddatölur (bok) (Oddatolur) Búið til forrit sem skrifar út allar oddatölur á ákveðnu bili. T.d. ef bilið er frá 6 upp í 11 eiga að skrifast út tölurnar 7 9 og 11. Sama myndi skrifast út ef valið er bilið frá 7 upp í 12. Notandinn á að ákveða hvaða bil er valið. Nokkrar æfingar í forritun bls. 31 Hallgrímur Arnalds

Talnabil annað veldi (bok) Búið til forrit sem prentar allar tölur á ákveðnu bili og hvað talan í öðru veldi er. Notandinn á að ákveða hvaða bil er valið. Summa Búið til forrit sem leggur sama allar tölur á ákveðnu bili. T.d. ef bilið er frá 5 upp í 11 á niðurstaðan að vera 5+6+7+8+9+10+11 = 56. Notandinn á að ákveða hvaða bil er valið. Litrar/gallon valmynd (bok) (LitrarGallonMenu) Búið til forrit umbreytir lítrum í gallon eða öfugt. Forritið býður upp á þrjá valmöguleika sem eru: 1. Umbreyta gallon í litra 2. Umbreyta litrum í gallon 3. Hætta í forritinu Forritið spyr um hvort umbreyta eigi lítrum í gallon eða gallonum í lítra. Forritið endurtekur vinnslu þar til notandi velur að hætta. Forritið spyr síðan um aðra stærðina en reiknar hina. Í einu galloni eru um 3,6 lítrar. Tommur/sentimetra valmynd (TommurCmMenu) Búið til forrit umbreytir tommum í sentimetra eða öfugt. Forritið býður upp á þrjá valmöguleika sem eru: 1. Umreikna tommur í sentimetra 2. Umreikna sentimetra í tommur 3. Hætta í forritinu Forritið spyr um hvort umbreyta eigi tommum í sentimetra eða sentimetrum í tommur. Forritið spyr síðan um aðra stærðina en reiknar hina. Forritið endurtekur vinnslu þar til notandi velur að hætta. Í einni tommu eru 2,53 sentimetrar. Talnabil hropmerkt Búið til forrit sem prentar allar tölur á ákveðnu bili og hvað talan er hrópmerkt (þ.e. talan er margfölduð með öllum heiltölum sem eru lægri en viðkomandi tala). Notandinn á að ákveða hvaða bil er valið. Skattur lykkja (skattur_lykkja) Búið til forrit sem reiknar staðgreiðslu skatts fyrir nokkarar launaupphæðir. Látið forritið spyrja um álagningarprósentu, persónuafslátt og laun. Staðgreiðslu má reikna með því að taka álagningarprósentu af launaupphæð og draga síðan persónuafslátt frá (sjá t.d. lausn við verkefninu Skattur1). Skatturinn má ekki vera neikvæður Forritið á að birta hver staðgreiðslan er. Þegar forritið er búið að reikna staðgreiðslu einu sinni spyr það Nokkrar æfingar í forritun bls. 32 Hallgrímur Arnalds

hvort reikna eigi aftur, ef notandi svarar "já" þá spyr forritið aftur um laun og reiknar staðgreiðsluna miðað við sömu álagningarprósendu og persónuafslátt. Þetta er endurtekið þar til notandi svarar að ekki þurfi að endurtaka reikninginn. Dæmi um keyrslu þessa forrits gæti því verið: pesónuafsláttur? 29000 skattprósenta? 35 laun? 100000 Staðgreiðsla verður þá: 6000 viltu reikna fyrir aðra launatölu? já laun? 80000 Staðgreiðsla verður þá: 0 viltu reikna fyrir aðra launatölu? nei takk fyrir í dag. SkatturLykkja2 (bok) Búið til forrit sem birtir töflu yfir skatt miðað við mismunandi laun. Dæmi um slíka töflu má sjá hér að neðan: Álagningarprósenta 38,50% Persónuafsláttur 37000 Stikun 50000 Laun Skattur 50000 0 100000 1500 150000 20750 200000 40000 250000 59250 300000 78500 350000 97750 400000 117000 450000 136250 500000 155500 550000 174750 600000 194000 650000 213250 700000 232500 750000 251750 800000 271000 850000 290250 900000 309500 950000 328750 1000000 348000 Látið forritið spyrja um álagningarprósentu, persónuafslátt og stikun í töflunni. Nokkrar æfingar í forritun bls. 33 Hallgrímur Arnalds

Lína í margföldunartöflu (MargfoldunTafla1) Búið til forrit sem skrifar úr eina línu í marföldunartöflu. Forritið spyr um hvaða línu eigi að skrifa. Ef t.d. er beðið um línu 3 ætti að skrifast: Dæmi um virkni forritsins gæti verið: Hvaða línu á að birta? 3 3 sinnum taflan: 3 6 9 12 15 18 21 24 27 30 > Margföldunartafla (MargfoldunTafla2) Búið til hreiðraða lykkju (þ.e. lykkju innan í lykkju) sem skrifar út 1 10 sinnum margföldunartöflurnar. (þ.e. 1 sinnum töfluna, 2 sinnum töfluna o.s.frv. upp í 10 sinnum töfluna) Dæmi um virkni forritsins gæti verið: 10 x 10 margföldunartaflan 1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 12 14 16 18 20 3 6 9 12 15 18 21 24 27 30 4 8 12 16 20 24 28 32 36 40 5 10 15 20 25 30 35 40 45 50 6 12 18 24 30 36 42 48 54 60 7 14 21 28 35 42 49 56 63 70 8 16 24 32 40 48 56 64 72 80 9 18 27 36 45 54 63 72 81 90 10 20 30 40 50 60 70 80 90 100 Teikna ferning (verkefni) Búið til forrit sem teiknar ferning með því að nota bara * til að teikna ferninginn. Forritið spyr hvort ferningurinn á að vera fylltur eða ekki, og stærð ferningsins (þ.e. fjölda stjarna á hverri hlið) Dæmi um virkni forrits: Á ferningurinn að vera fylltur eða ófyllut (f= fylltur, o=ófylltur)? f Fjöldi stjarna á hlið? 5 ***** ***** ***** ***** ***** Á ferningurinn að vera fylltur eða ófyllut (f= fylltur, o=ófylltur)? o Fjöldi stjarna á hlið? 5 ***** * * * * * * Nokkrar æfingar í forritun bls. 34 Hallgrímur Arnalds

***** Nokkrar æfingar í forritun bls. 35 Hallgrímur Arnalds

Greiðsluáætlun (verkefni) Búið til forrit til að reikna út greiðslur af láni með föstum afborgunum. Forritið á að skrifa út lista þar sem fram kemur (sjá meðfylgjandi dæmi) númer greiðslu, upphæð eftirstöðva fyrir greiðslu, upphæð afborgunar, upphæð vaxta og greiðsla alls. Eins og fram kom hér að framan er afborgun af höfuðstól alltaf sú sama. En vaxtagreiðslan er mismunandi, fyrst eru borgaðir vextir af öllu láninu og svo lækkar vaxtagreiðslan í hlutfalli við lækkun eftirstöðva. Gert er ráð fyrir að það séu mánaðarlegar greiðslur af láninu. Þegar tekið er lán má gera ráð fyrir að alltaf líði 1 mánuður frá lántökudegi til fyrsta afborgunardags. Notandi þarf að skrá inn upphæð láns, vaxtaprósentu og fjöldi afborgana. Til glöggvunar fylgir hér með hvaða niðurstöðu við eigum að fá ef við setjum inn lánsupphæð 120.000, fjöldi afborgana 12 og vexti 12%. Gera má ráð fyrir að mánaðarvextir séu ársvextir/12. Nr. greiðslu Eftirstöðvar Afborgun Vextir Greiðsla alls 1 120000.00 10000.00 1200.00 11200.00 2 110000.00 10000.00 1100.00 11100.00 3 100000.00 10000.00 1000.00 11000.00 4 90000.00 10000.00 900.00 10900.00 5 80000.00 10000.00 800.00 10800.00 6 70000.00 10000.00 700.00 10700.00 7 60000.00 10000.00 600.00 10600.00 8 50000.00 10000.00 500.00 10500.00 9 40000.00 10000.00 400.00 10400.00 10 30000.00 10000.00 300.00 10300.00 11 20000.00 10000.00 200.00 10200.00 12 10000.00 10000.00 100.00 10100.00 Eftirfarandi formúlur má nota í þessum reikningum: afborgun af höfuðstól = upphæð / fjölda greiðsla vextir = eftirstöðvar fyrir greiðslu * vaxtaprósenta / 12 / 100 Eftirst.fyrir.gr = upphæð ((nr greidslu - 1) * afborgun) Spilið 21 (verkefni) Búið til forrit sem líkja á eftir því að við séum að spila 21 í tölvunni. Leikurinn fer þannig fram að tölvan byrjar á að láta leikmann spila. Tölvan gefur þá spil frá 1 fyrir ás upp í 13 fyrir kóng. Síðan spyr tölvan hvort leikmaður vilji fá annað spil. Tölvan leggur saman gildin á spilunum sem leikmaður hefur fengið og ef heildarsumman er stærri en 21 hefur leikmaður tapað spilinu en tölvan unnið. Ef leikmaður stoppar án þess að hafa sprungið gefur tölvan sjálfri sér spil. Tölvan Nokkrar æfingar í forritun bls. 36 Hallgrímur Arnalds

notar þær reglur að hún stoppar ef heildarstigafjöldi er 16 eða meira en heldur annars áfram. Eftirfarandi reglur eru notaðar til að ákveða hver vinnur spilið: Ef sigafjöldi leikmanns er hærri en 21 þá hefur hann sprungið og tapað spilinu. Þá þarf tölvan ekki að gefa sjálfri sér spil. Ef leikmaður springur ekki en tölvan springur (þ.e. fær meira en 21) hefur leikmaðurinn unnið. Ef hvorki leikmaður né tölva springa, þá vinnur sá sem hefur fleiri stig. Ef tölva og leikmaður hafa jafn mörg stig þá vinnur tölvan. Gera má ráð fyrir að hvert spil gildi frá einum upp í 13. Dæmi um hvernig leikur getur spilast : (Það sem tölva skrifar er í þessum fonti, en það sem notandi slær inn í þessum) Nú hefst leikurinn: þú fékkst 9 og ert kominn með samtals 9, viltu fleiri spil? já þú fékkst 7 og ert kominn með samtals 16, viltu fleiri spil? já þú fékkst 6 og ert kominn með samtals 22, viltu fleiri spil? nei Þú sprakkst, tölvan vann. Heildarfjöldi spila: 1 Tölva hefur unnið 1 spil Þú hefur unnið 0 spil Viltu spila annað spil? já þú fékkst 8 og ert kominn með samtals 8, viltu fleiri spil? já þú fékkst 2 og ert kominn með samtals 10, viltu fleiri spil? já þú fékkst 8 og ert kominn með samtals 18, viltu fleiri spil? nei tölvan fékk 3 tölvan fékk 4 tölvan fékk 10 tölvan fékk samtals 17 þú vannst leikinn Heildarfjöldi spila: 2 Tölva hefur unnið 1 spil Þú hefur unnið 1 spil Viltu spila annað spil? nei Nokkrar æfingar í forritun bls. 37 Hallgrímur Arnalds

Formuð útprentun Til að forma útprentun má nota System.out.printf skipun. Dæmi: public class TestPrentunSkjar { double tala=31.999888; for (int i=1 ; i<8 ;i++){ System.out.printf("%18.2f \n",tala); tala *= 10; Út skrifast: 32,00 320,00 3199,99 31999,89 319998,88 3199988,80 31999888,00 Hér sést dæmi um nokkrar tölur (heiltölur og kommutölur) sem skrifaðar út. public class TestPrentunSkjar2 { double tala=31.999888; double tala2 = 3000; for (int i=1 ; i<8 ;i++){ System.out.printf("Nr. %3d %18.2f %10.2f \n",i,tala,tala2); tala *= 10; Út skrifast: Nr. 1 32,00 3000,00 Nr. 2 320,00 3000,00 Nr. 3 3199,99 3000,00 Nr. 4 31999,89 3000,00 Nr. 5 319998,88 3000,00 Nr. 6 3199988,80 3000,00 Nr. 7 31999888,00 3000,00 Einnig má nota svipaða aðferð til að forma tölur inn í beytu sem geymir textastreng. (Um texta strengi er fjallað síðar í þessum leiðbeiningum). Til að forma töluna í textastrenginn er notað fallið String.format( ); public class TestPrentun { double tala=31.999888; String output=""; for (int i=1 ; i<8 ;i++){ output += String.format("%18.2f \n",tala); tala *= 10; System.out.println(output); Hér táknar %18.2f að inn í strenginn eigi að koma tala sem er að minnsta kosti 18 stafir og þar af 2 fyrir aftan kommu. f táknar hvers konar tala skrifast út, en f stendur fyrir floating point tölu, þ.e. kommutölu. Ef skrifa á út heiltölu er notað d í stað f, t.d. %5d sem þýðir þá heiltala sem skrifast út með a.m.k. 5 táknum. \n er sértákn, til þess að færa bendil í nýja línu. Hér skrifast út gildi sem er í breytunni tala. Nokkrar æfingar í forritun bls. 38 Hallgrímur Arnalds