Laboration 1. "kompilera"-ikonen "exekvera"-ikonen



Relevanta dokument
Laboration 1. "kompilera"-ikonen "exekvera"-ikonen

Laboration 1. Objektorienterad programmering, Z1. Syfte

Iteration while-satsen

Objektorienterad programmering D2

Editering, Kompilering och Exekvering av Javaprogram

Laboration 1 Introduktion till Visual Basic 6.0

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

Föreläsning 3. Iteration while-satsen

Föreläsning 1 & 2 INTRODUKTION

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer

Föreläsning 1 & 2 INTRODUKTION

JAVAUTVECKLING LEKTION 4

Laboration 10 - Eclipse

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Om att lära sig programmera. Föreläsning 1-2 Innehåll.

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

NetBeans 7. Avsikt. Projektfönster

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Här beskrivs Eclipse, den programutvecklingsmiljö som utnyttjas i programmeringskurserna. Mera information finns på:

Laboration 4: Digitala bilder

Inledande programmering med C# (1DV402) Ditt första C#-program med Visual Studio

Objektorienterad programmering

NetBeans 5.5. Avsikt. Projektfönster

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

Tentamen i Grundläggande programmering STS, åk

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Objektorienterad Programmering (TDDC77)

Inledande programmering med C# (1DV402) Summera med while"-satsen

Instuderingsfrågor, del A

Innehållsförteckning. 9 Större projekt Övningsuppgifter...32

JAVA Mer om klasser och objektorientering

Institutionen för TENTAMEN CTH HT-15 Datavetenskap TDA540. Tentamen för TDA540 Objektorienterad programmering

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

JAVAUTVECKLING LEKTION 3

Eclipse en handledning

Kompilera och exekvera Javakod

Laboration 10 - NetBeans

Eclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas.

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Objektorienterad programmering Föreläsning 2

Objektorienterad programmering i Java

Grundläggande programmering med C# 7,5 högskolepoäng

Objektorienterad programmering i Java I

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Programmering för språkteknologer I, VT2012. Rum

Programstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser

Dagens program. Programmeringsteknik och Matlab. Viktiga datum. Ett första exempel. Programmall, vad behöver vi i ett javaprogram?

Programexempel: tärningsspel. Programexempel: tärningsspel Kasta tärning tills etta. Klassen Die Specifikation. Slumptalsgenerator Klassen Random

"if"-satsen. Inledande programmering med C# (1DV402)

System.out.println("Jaså du har "+ antaldollar + " stycken.");

Tentamen OOP

Statistik över heltal

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Objektorienterad Programmering (TDDC77)

OOP Objekt-orienterad programmering

Institutionen för TENTAMEN CTH VT-15 Datavetenskap TDA540. Tentamen för TDA540 Objektorienterad programmering

Instuderingsfrågor, del B

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

DAT043 Objektorienterad Programmering

Tentamen i Programmering

TDDC77 Objektorienterad Programmering

Översikt 732G11 PROGRAMMERING 1. Personal. Kursens mål. Litteratur. Kursens innehåll

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Laboration 1. Utgåva 1 Gäller från

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

Testning av program. Verklig modell för programutveckling

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

2 Eclipse en handledning

Föreläsnings 9 - Exceptions, I/O

Föreläsning 3. Iteration. while-satsen for-satsen do-satsen

Föreläsning 1. Presentation av kursen Vad är programmering? Lite om java och utvecklingsmiljöer Aktivitetsdiagram Ett första program

Övning 1. Datateknik A, Java I, 5 poäng. Att ladda hem och installera Java Att skriva ditt första Javaprogram Att kompilera och exekvera ditt program

System.out.println("Jaså du har "+ antalhusdjur+ " husdjur"); if ( antalhusdjur > 5 ) System.out.println("Oj det var många);

Chapter 3: Using Classes and Objects

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: Tid: kl

Code-Lite tutorial ( /RoJ)

Anteckningar 1: Grundläggande saker

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Lektion Java Grunder. Javas historia. Programmeringsspråket Java. Skillnaderna mellan Java och C++ JVM (Javas Virtuella Maskin)

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

Föreläsning 3-4 Innehåll

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

Introduktion till programutveckling

Föreläsning 1-2 innehåll

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Tentamen , Grundläggande programmering i Java

Lösningsförslag: Instuderingsfrågor, del A

Outline. For. I istället för att följa det normala ordningen, man ändra den. I i Java får man inte göra hopp hur som helst

Lab 1: Första labben (2p) Inledning:

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

Övningsuppgifter till föreläsning 2 Variabler och uttryck

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

for-satsen Fält for-satsen Föreläsning 8 (OH-bilder 7) for-satsen for-sats är en styrsats för iterationer. for-sats har följande generella utseende:

Iteration. Föreläsning 3. TDA540 - Objektorienterad Programmering

Laboration 3: Musikbibliotek

Programmeringsteknik med C och Matlab

Transkript:

Syfte Laboration 1. Objektorienterad programmering, Z1 Syftet med denna laboration är dels att göra dej bekant med de verktyg som kan vara aktuella i programmeringsarbetet, dels ge en första inblick i att skriva enkla Javaprogram och få övning i att nyttja if- och while-satserna. Redovisning Uppgifterna i del A av denna laboration behöver inte redovisas, men bör (skall) göras under första läsveckan. Uppgifterna i del B skall vara inlämnade i Fire senast torsdag 18/9. Del A: Förberedande övningar. Uppgift 1 - Att kompilera och köra ett Java program 1. Logga in. 2. Skapa en ny mapp med namnet TDA540 (i din filarea på fileservern). Klicka med höger mus -> Nytt -> Mapp. Döp den nya mappen till TDA540. 3. Skapa en ny mapp Lab1 i mappen TDA540. Gå till mappen TDA540 genom att dubbelklicka på mappen. Klicka med höger mus -> Nytt -> Mapp. Döp den nya mappen till Lab1. 4. Gå till kursens hemsida http://www.cse.chalmers.se/edu/year/2014/course/tda540 5. Lägg upp en snabblänk till kursens hemsida, det är inte sista gången du kommer att besöka denna sida. 6. Kopiera filen Uppgift1.java, som du hittar vid rubriken Laboration 1 under fliken Laborationer på kurshemsidan. Kopieringen av filen tillgår enligt följande: Vänsterklicka på länken Uppgift1.java på kursens hemsida. Högerklicka på filen Uppgift1.java och välj "Spara mål som.." Ett fönster öppnas, dubbelklicka på mappen TDA540 och sedan på mappen Lab1. Välj "Spara". 7. Kompilera programmet. När du dubbelklicka Uppgift1.java (i mappen Lab1) skall jgrasp startas. Startas någon annan editor skall du kontakta handledaren. Välja "kompilera"-ikonen (se figur nedan). "kompilera"-ikonen "exekvera"-ikonen 8. Kör programmet genom att välja "exekvera"-ikonen. 9. Studera programkoden och försök förstå varför programmet gör vad det gör. Laboration 1 1 (5) Z1 Objektorienterad programmering, HT14

Uppgift 2 - Kompileringsfel När man skriver ett program kan man naturligtvis göra fel. En typ av fel är s.k. kompileringsfel vilka uppstår då man inte följer de språkregler som finns för det programspråk man använder. Denna typ av fel upptäcks av kompilatorn när man försöker kompilera programmet och man erhåller felmeddelanden från kompilatorn. Dessa felmeddelanden kan, särskilt för den ovane, ofta vara svåra att tyda. Denna uppgift går ut på att lära sig tyda felutskrifter från kompilatorn för att lokalisera och korrigera felen i ett program. Inför nedanstående fel i programmet Uppgift1.java. Kompilera om programmet efter varje fel som införs och se vilka felutskrifter som erhålls. Återställ programmet till sitt ursprungliga utseende inför varje förändring. Ändra Uppgift1 på rad 2 till uppgift1. Ta bort void på rad 3. Ta bort { på rad 3. Ändra String på rad 4 till string. Ta bort ; på rad 5. Sätt in ett semikolon (;) sist på rad 12. Ändra == på rad 15 till =. Ta bort } på rad 21. Ta bort [] på rad 3. Varför går programmet att kompilera, men inte att exekvera? Tips: I felutskriften anger kompilatorn på vilken rad i programmet den upptäckt felet. För att få radnumren utskrivna i programmet i jgrasp går du in i menyn View och markerar LineNumbers. Uppgift3 Mer kompileringsfel Nedanstående Javaprogram som innehåller ett antal fel finns på kursens hemsida. public class TExFel { public static void main(string[] arg) { indata = JOptionPane.showInputDialog("Ange första talet"); int tal1 = parseint(indata); indata = JOptionPane.showInputDialog("Ange andra talet); int Tal2 = Integer.parseInt(indata); double tal3 = tal1 / tal2; JOptionPane.showMessageDialog(null, "Resultatet blev" + tal3); } //main } // ExFel 1) Kopiera programmet ExFel.java som finns lagrat på kursens hemsida, vid rubriken Laboration 1 under fliken Laborationer, och lagra detta under namnet ExFel.java i ditt eget bibliotek Lab1. Vänsterklicka på länken ExFel.java på kursens hemsida. Högerklicka på filen ExFel.java och välj "Spara mål som.." Ett fönster öppnas, dubbelklicka på mappen TDA540 och sedan på mappen Lab1. Välj "Spara". 2) Ladda in filen ExFel.java i jgrasp trycka på Open i menyn File. Kompilera programmet. Försök förstå de felutskrifter som erhålls och försök rätta felen. Konsultera handledaren om ni får problem. Laboration 1 2 (5) Z1 Objektorienterad programmering, HT14

3) När ni lyckas kompilera programmet, kör programmet och ge värdena 2 och 5 som indata. Varför blir resultatet 0.0? Borde det inte vara 0.4? Förklaring: Värdet som skrivs ut beräknas i satsen tal3 = tal1 / tal2; I denna sats är båda operanderna, tal1 och tal2, i divisionen heltal, vilket i Java innebär en heltalsdivision som betyder att resultatet av divisionen blir ett heltal!! I vårt aktuella fall där 2 divideras med 5 blir resultatet 0. Att utskriften blir 0.0 beror på att resultatet som erhölls från divisionen lagras i variabeln tal3 som är av typen double, vilket innebär att heltalet 0 konverteras till det reella talet 0.0 när det lagras i variabeln. För att erhålla ett reellt tal från en division måste minst en av operanderna vara ett reellt tal. För att göra om heltalet heltal till ett reellt tal skriver man i Java (double) heltal. Ändra i programmet så att indatavärdena 2 och 5 ger resultatet 0.4. Utskriften av resultatet blev inte så snygg (texten och talet skrivs ihop). Rätta till! Uppgift 4 Anmäl er laborationsgrupp i Fire-systemet (se på kursens hemsida hur det går till). Får ni problem så fråga handledarna om hjälp. Observera att båda medlemmarna i en grupp måste anmäla sig samtidigt. Om någon inte hittat en laborationspartner är det dags att söka efter en sådan. Uppgift 5 Kopiera filen Triangel.java som finns lagrat på kursens hemsida, vid rubriken Laboration 1 under fliken Laborationer, och lagra detta i ditt eget bibliotek Lab1 (under namnet Triangel.java). Kör programmet och försök förstå vad det gör. Utgå sedan från programmet Triangel och försök skriv ett nytt program som via dialogrutor läser in värdena på de båda katetrarna i en rätvinklig triangel samt beräknar hypotenusan och skriver ut resultatet i en dialogruta. Döp ditt nya program till t.ex. Triangel2. Uppgift 6 Kopiera programmet Circle.java som finns lagrat på kursens hemsida, vid rubriken Laboration 1 under fliken Laborationer, och lagra detta i ditt eget bibliotek Lab1. Kör programmet och försök förstå vad det gör. Utgå från programmet Circle.java och försök skriv ett nytt program som förutom ytan också beräknar och skriver ut cirkelns omkrets. Döp ditt nya program till t.ex. Circle2.java. Uppgift 7 Kopiera programmet Pris.java som finns lagrat på kursens hemsida, vid rubriken Laboration 1 under fliken Laborationer, och lagra detta i ditt eget bibliotek Lab1. Kör programmet och försök förstå vad det gör. Utgå sedan från programmet Pris och försök skriv ett nytt program som ger 5 procents rabatt om totalpriset är större än 750 kronor, 10 procents rabatt om totalpriset är större än 1500 kronor och 15 procent om totalpriset är större än 3000 kronor. Ändra också utskriften på så sätt att uppgifter om bruttopris, rabatt och nettopris skrivs ut. Döp ditt nya program till t.ex. Pris2.java. Laboration 1 3 (5) Z1 Objektorienterad programmering, HT14

Del B: Källkoden för följande uppgifter skall vara inlämnade i Fire senast torsdag 18/9. Lämna in samtliga källkodsfiler som en komprimerad zip-fil. Efter tredje föreläsningen har allt kunskapsmaterial gåtts igenom som behövs för att lösa samtliga uppgifter i denna laboration. Konsultera OH-bilderna för dessa föreläsningar vid behov. Uppgift 8 Skriv ett program som läser in dels den gällande växelkursen mellan Euro och svenska kronor, dels ett antal svenska kronor, samt beräknar och skriver ut hur många Euro detta motsvarar. Antalet erhållna Euro skall skrivas ut med exakt två decimaler. Uppgift 9 Skriv ett program som läser utgångshastigheten v (m/sek) och en kastvinkel (i grader) och sedan beräknar banhöjden h och kastlängden d enligt nedanstående formler för kast utan luftmotstånd: h= v 2 sin 2 2 g och d= v 2 sin2 g där tyngdkraftsaccelerationen g = 9.81 m/sek2. Utskriften av banhöjd och kastlängd skall göras med ett lämpligt antal decimaler. Tips: I Java finns en standardklass Math. Gå in på kursens hemsida under fliken Övriga resurser och vidare till Dokumentation av Java API. Du kommer till en sida där alla standardklasser i Java finns beskrivna. Leta upp klassen Math och se efter vad det finns för "matnyttigt". Vilken enhet används i de trigonometriska funktionerna? Uppgift 10 Testdata: En utgångshastighet på 20 m/sek och en kastvinkel på 45 grader ger en banhöjd på ca 10.19 meter och en kastlängd på ca 40.77 meter. För att en båt skall klassas som en 12:a får inte nedanstående uttryck avvika från värdet 12 med mer än 0.05 2 d A L f 2,37 I formeln betecknar d båtens omfång, A båtens segelyta, L båtens längden och f båtens fribordshöjd. Skriv ett Javaprogram som läser in värden på d, A, L och f och avgör om båten uppfyller villkoret för att klassas som en 12:a. Läs in samtliga indatavärden via en och samma dialogruta, dvs använd ett objekt av klassen Scanner för att avkoda de enskilda indatavärdena. Testdata: Följande värden ger att båten är en 12:a d = 6.3, A = 63.7, L = 8.85 och f = 1.02 Uppgift 11 Skriv ett program som läser ett datum på formen yymmdd (t.ex 131211) och skriver ut datumet på den amerikanska formen mm/dd/yy (t.ex 11/12/13). Använd dialogrutor för inmatning och utskrifter. Utforma programmet på så sätt att körningen upprepas tills man trycker på Cancel-knappen i inmatningsrutan. Du får anta att den indata som ges till programmet är ett korrekt datum på formen yymmdd. Uppgiften skall lösas med användning av heltalsdivision och rest vid heltalsdivision. Tips: Vad blir resultaten av följande uttryck 1234/100 och 1234%100? Testdata: Resultatet av indatasträngen 010101 skall bli 01/01/01. Laboration 1 4 (5) Z1 Objektorienterad programmering, HT14

Uppgift 12 Den berömde matematikern Gottfried Leibniz gav följande formel för 4 =1 1 3 1 5 1 7 1 9 1 11... a) Skriv ett program som beräknar π enligt denna formel och tar med de 500 första termerna. Metoden Math.pow får inte användas i lösningen! Tips: Uttrycket är en summa. En summa är en serie termer som adderas. I vårt aktuella uttryck består termerna av en täljare och en nämnare. En term kan beräknas från den föregående termen. Nämnaren är 2 större än nämnaren i föregående term. Täljaren är till absolutbelopp alltid 1, men byter tecken mellan varje term (dvs är varannan gång positiv och varannan gång negativ). b) Skriv ett program som beräknar enligt denna formel och tar med så många termer att den sist medtagna termen är den första termen som till sitt absolutbelopp är mindre än 0.00001. Med vetskapen om hur beräknas, vad kan du då säga om hur stor noggrannheten blir i resultatet du erhåller om den sist medtagna termen till absolutbelopp är mindre än 0.00001? Hur många decimaler bör du då skriva ut? Uppgift 13 I Scientific American, Februari 1981, fanns följande algoritm för att beräkna vilket datum påskdagen infaller under åren mellan 1900 och 2099: 1. Kalla årtalet för Y. Subtrahera 1900 från Y och kalla skillnaden för N. 2. Dividera N med 19. Kalla resten (återstoden) för A. 3. Dividera (7A+1) med 19. Kalla kvoten för B. 4. Dividera (11A+4-B) med 29. Kalla resten för M. 5. Dividera N med 4. Kalla kvoten för Q. 6. Dividera (N+Q+31-M) med 7. Kalla resten för W. 7. Beräkna 25-M-W. Kalla resultatet D. 8. Om D är positivt infaller påskdagen i April och dagen är D, annars infaller påskdagen i Mars och dagen erhålls ur nedanstående tabell: D Dag 0 31-1 30.... -8 23-9 22 Alla variabler i algoritmen är heltal och alla operationer är heltalsoperationer. Skriv ett program som använda dialogrutor (enligt figuren nedan) för att upprepade gånger läsa in ett årtal, samt (med användning av ovan beskrivna algoritm) beräknar och skriver ut när påskdagen infaller för det inlästa årtalet. Exekveringen av programmet avbryts genom att användaren trycker på Cancelknappen. Programmet skall kontrollera att det inlästa årtalet ligger mellan 1900 och 2099. Om felaktigt årtal ges skall en felutskrift göras. Testdata: 2011 infaller påskdagen 24 april 2000 inföll påskdagen 23 april 1964 inföll påskdagen 29 mars 1910 inföll påskdagen 27 mars Laboration 1 5 (5) Z1 Objektorienterad programmering, HT14