2D1310 Programmeringsteknik för K, Media, CL Laborationer läsåret 2002/2003 Fyll i ditt namn och personnummer med bläck eller motsvarande. Kursledare

Storlek: px
Starta visningen från sidan:

Download "2D1310 Programmeringsteknik för K, Media, CL Laborationer läsåret 2002/2003 Fyll i ditt namn och personnummer med bläck eller motsvarande. Kursledare"

Transkript

1 2D1310 Programmeringsteknik för K, Media, CL Laborationer läsåret 2002/2003 Fyll i ditt namn och personnummer med bläck eller motsvarande. Kursledare är: prgk02: prgmedk02 : Ann Pan, panda@nada.kth.se, för K2, CL1 Linda Kann, linda@nada.kth.se, för K1, Media1 Namn... Personnr... Laborationer Laboration 1 Klar den... Kvitteras... Timmar... Laboration 2 Klar den... Kvitteras... Timmar... Laboration 3 Klar den... Kvitteras... Timmar... Laboration 4 Klar den... Kvitteras... Timmar... Laboration 5 Klar den... Kvitteras... Timmar... Slutprov Godkänt den... Kvitteras... Timmar... J-del Spec Godkänt den... Kvitteras... Timmar... Granskning Godkänt den... Kvitteras... Timmar... Redovisning Godkänt den... Kvitteras... Timmar...

2 2 2D1310 K, Media, CL 2002/2003 Laboration 1: Introduktion till datormiljön Nyckelord: katalog, katalogträd, rot, fil, källkod, kompilering, avlusning, program, exekvering, tolkning, prototypprogrammering, textbaserat användargränssnitt, inmatning, utmatning, paket. Mål: Att du efter laborationen ska klara dig på egen hand i datorsalarna, ha registrerat dig på kursen och förstå uppbyggnaden av ett enkelt Javaprogram. Att du ska förstå innebörden av varje nyckelord och förberedelsefrågor samt kunna ge beskrivande exempel. Föreberedelse: Skaffa konto, användarnamn och lösenord till Nadas datorer, hitta en jämnbra labbkompis och besvara förberedelsefrågorna. Förberedelsefrågor Alla frågor måste besvaras innan du kan få hjälp med och/eller bli klar med laborationen. Vilka är punkterna i programmeringsstrategin? Tips! Titta på kurshemsidan. Vilka är de primitiva datatyperna? Hur ser minnet ut för en primitiv variabel? Rita en exempelbild med namn, datatyp och innehåll. Ge exempel på referensdatatyper. Hur ser minnet ut för en referensvariabel? Rita en exempelbild med namn, datatyp och innehåll.

3 2D1310 K, Media, CL 2002/ Hur ser du från källkoden att något är en klass, variabel eller metod? Vad är vad i följande program? Hitta och markera alla klassnamn, primitiva datatyper, referensdatatyper, variabelnamn, metodnamn och litteraler. Du behöver inte kunna förstå programmet. import java.io.*; class Test public static void main(string[] args) throws IOException BufferedReader stdin = new BufferedReader (new InputStreamReader(System.in)); String s; int i = 3; s = "test"; System.out.println("Det här är ett " + s + "program."); System.out.print("Vad ska jag skriva ut? "); s = stdin.readline(); if (i < 5) i = 5; while (i < 10) System.out.print(s + "... "); i = i + 1; System.out.println(); I ovanstående program, vilka delar är deklarationer respektive tilldelningar?

4 4 2D1310 K, Media, CL 2002/2003 När behövs throws IOException? Sammanfattning av labben I den här labben ska du lära dig om operativsystemet UNIX och redigeringsprogrammet Emacs. Du ska också skriva ett enkelt Javaprogram och registrera dig på labbkursen. Efter den här laborationen ska du klara dig på egen hand i datorsalarna. Betydligt mer information om hur man hanterar datorerna finns i häftet Introduktion till Unixanvändning som finns under Nadas datorsystems hemsida (se kurshemsidans information om datorsalar) eller kan köpas från Nadas studentexpedition. Inloggning Sätt dig vid en dator tillsammans med din labbkompis. Ni bör ha kvitterat ut var sitt användarnamn och tillhörande lösenord. Välj ett av kontona. Skriv ditt användarnamn (kontonamnet eller username) och tryck på returtangenten. (All inmatning till datorn, d v s allt du skriver på tangentbordet, måste avslutas med returtangenten). Login: u1xxxxxx Password: Skriv lösenordet och tryck på returtangenten igen. Lägg märke till att lösenordet inte syns på skärmen när du skriver det (för att försvåra för lösenordstjuvar). Om du har skrivit rätt är du nu inloggad, annars får du göra om proceduren. Skärmen kommer att se ut ungefär så här: Det finns nu ett eller flera fönster på skärmen. I vårt exempel är det stora fönstret ett terminalfönster. När du skriver i det fönstret ger du kommandon

5 2D1310 K, Media, CL 2002/ till kommandotolken. Kom ihåg att kommandotolken skiljer mellan stora och små bokstäver. Terminalfönstret motsvarar ett DOS-fönster på en PC. Längst ned finns frontpanelen. Den används för att starta vissa program, skriva ut filer m m. Läs gärna mer om den i Unixhäftet. Prova att flytta ett fönster genom att peka på fönstrets överkant, trycka ner vänsterknappen och flytta musen med knappen nedtryckt. Filer och kataloger Med en filhanterare kan du utforska datorns och nätverkets kataloger. En katalogs innehåll kan bestå av andra kataloger och filer. Kataloger som ligger i en annan katalog kallas ibland underkataloger. Kataloger med underkataloger bildar en grenliknande struktur där varje gren är en katalog. Denna grenstruktur kallar man ofta katalogträd. Till skillnad från verkliga träd brukar man dock låta katalogträd breda ut sig nedåt och till höger istället för rakt upp. En bieffekt av detta är att katalogträdets rot hamnar längst upp till vänster samt att man pratar om att gå ned ienkatalog (eller underkatalog). En fullständig beskrivning av den plats en fil ligger på brukar kallas sökväg och kan till exempel se ut på följande sätt: /info/prgt/exempelfiler/labbar/exempel /home/x/u1xxxxxx/exempel Notera att katalognamn och filnamn separeras av tecknet '/'. Ett annat speciellt tecken är 'Λ' (uttalas tilde ) som är en förkortning av den inloggades hemkatalog vilken i verkligheten ligger någonstans under katalogen /home i katalogträdet (/home/...). Hemkatalogen är den katalog du hamnar i när du loggar in och i vilken du har rätt att spara filer och kataloger. Starta filhanteraren genom att klicka på filhanterarens ikon (en låda fylld med mappar) i frontpanelen. Filhanteraren kommer då att visa vilka filer du har i din hemkatalog. Du kan skapa nya kataloger med menykommandot File! New Folder....Skapa en katalog som du kallar för prg. Gå ner i prg genom att dubbelklicka på filens ikon. Gå upp igen till din hemkatalog genom att dubbelklicka på ikonen.. (go up). Om du skulle vilja gå högre upp i katalogträdet än din hemkatalog så kan det ta lång tid att hitta den fil du söker. Men det finns ett snabbare sätt: öppna en ny filhanterare med menykommandot View! Open New View.

6 6 2D1310 K, Media, CL 2002/2003 I det nya fönstret ersätter du katalogangivelsen (där det står /afs/nada.kth.se /home/...) med/info/prgt/exempelfiler, som är namnet på kurskatalogen för denna kurs. Tryck därefter på returtangenten. Leta sedan reda på filen exempel i underkatalogen labbar, håll kontrolltangenten (knappen märkt Ctl, Ctrl eller Control på tangentbordet) nedtryckt och dra filen mellan fönsterna till mappen (dvs katalogen) prg som du skapade tidigare. Detta kopierar filen från /info/prgt/exempelfiler/labbar till din egen katalog. Vill du bara flytta en fil gör du på samma sätt, men håller inte kontrolltangenten nedtryckt (du kan inte flytta filer från kurskatalogen, endast kopiera dem). I den första filhanteraren går du återigen ner i katalogen prg. Där kan du se filen du kopierade. Vill du kasta filer eller kataloger drar du dem till papperskorgen som ligger längst till höger i frontpanelen. För att ändra namn på en fil eller katalog klickar du på filnamnet och redigerar sedan på vanligt sätt. Innan du går vidare ska du kopiera filen.emacs från kurskatalogen till din hemkatalog. Alla filer som börjar med '.' är gömda och för att se dem i filhanteraren måste man aktivera View! Show Hidden Objects. Gör detta och kontrollera att filen verkligen hamnade i din hemkatalog och inte i någon underkatalog. Terminalfönstret Vissa kommandon skriver man i terminalfönstret (allt ovanstående går också att göra med skrivna kommandon). Till exempel kan du lista alla filer i en katalog med kommandot ls (list). Vill du lista alla underkataloger och filer i kurskatalogen skriver du ls /info/prgt/exempelfiler. Det du framför allt behöver veta är hur du flyttar dig mellan olika kataloger i terminalfönstret. För att gå ner i katalogen prg skriver du cd prg, vilket utläses change directory to prg. För att gå upp en nivå skriver du cd.. (glöm inte mellanslaget före punkterna). Det finns genvägar för att slippa skriva så mycket i terminalfönstret; till exempel behöver du sällan skriva ut hela filnamnet. Tryck på TAB eller (längst till vänster) så fylls kommandon, filnamn och katalognamn i om de är

7 2D1310 K, Media, CL 2002/ entydiga (detta kallas TAB completion på engelska). Vill du få upp föregående kommando räcker det att trycka på uppåtpiltangenten som sitter nere till höger på tangentbordet. Trycker du flera gånger bläddrar du successivt tillbaka bland gamla kommandon. Vill du veta mer om något kommando kan du ta fram ett manualblad med kommandot man kommando, till exempel man more för att få reda på mer om kommandot more. Användbara kommandon Terminalfönstret har en mängd kommandon och nedan finns exempel på de mest användbara för denna kurs. Funktion Lista innehåll i ls aktuell katalog Lista innehåll i ls -a aktuell katalog, visa även gömda filer Byt aktuell katalog till cd Kommandoexempel hemkatalogen Λ Byt aktuell katalog till cd lab1 underkatalogen lab1 Byt aktuell katalog till cd.. katalogen ovanför Skapa en underkatalog mkdir lab1 som heter lab1 Kopiera filen exempel cp /info/prgt/exempelfiler/labbar/exempel Λ/prg/lab1/. till din lab1-katalog Kopiera filen.emacs cp /info/prgt/exempelfiler/labbar/.emacs. till aktuell katalog Ta bort filen exempel rm exempel Obs! Filen försvinner för alltid Ta bortkatalogen lab2 rm -r lab2 och alla underkataloger Obs! Innehållet försvinner för alltid Kompilera Javakällkod javac Programmet.java Exekvera Javaprogram java Programmet Skriv ut filen exempel print exempel till skrivaren Registrering på kursen Nu när du provat några kommandon är det dags att du registrerar dig på kursen. Det gör du genom att använda kommandona course och res. Börja med att använda kommandot res checkin prgk02 res checkin prgmedk02 om du går K2, CL1 om du går K1, Media1

8 8 2D1310 K, Media, CL 2002/2003 och följ instruktionerna. Du har nu registrerat dig på kursen så att vi kan föra in dina resultat. Obs! Detta är inte samma registrering som ditt kansli gör. Skriv sedan course join prgk02 course join prgmedk02 om du går K2, CL1 om du går K1, Media1 Kommandot course join gör att du på ett smidigt sätt får tillgång till kursinformation. Du som jobbar ensam hoppar nu fram till nästa avsnitt Emacs. Ni som jobbar i grupp fortsätter med att utföra följande kommando: course include prg u1xxxxxx (labbkompisens kontonamn) Genom detta kommando kan nu båda jobba i katalogen prg. Katalogen finns på det konto du just nu använder och heter prg (testa med kommandot ls eller titta i filhanteraren). Alla kataloger som någon av er skapar under prg är gemensamma för labbgruppen. Logga sedan ut genom att trycka på EXIT-knappen i frontpanelen. Logga in på det andra kontot i gruppen. Upprepa kommandona: res checkin prgk02 course join prgk02 res checkin prgmedk02 course join prgmedk02 om du går K2, CL1 om du går K1, Media1 men byt ut det tidigare course include mot course labdir prg u1xxxxxx (labbkompisens kontonamn) Glöm inte att byta ut labbkompisens namn. Tag fram filhanteraren. Det ska nu finnas en så kallad länk till den katalog, prg, som du skapade tidigare. Redigeringsprogrammet Emacs För att skapa och ändra filer används ett redigeringsprogram. Emacs är ett kraftfullt redigeringsprogram som har flertalet finesser om man skall skriva Javakällkod. En av de viktigaste är indentering. Med indentering menas att texten i Javakällkoden skjuts in en bit beroende på vilken del av programmet som texten utgör. Du startar Emacs genom att trycka ner höger musknapp i bakgrunden på skärmen. Du får då upp en meny där du väljer Emacs. Innan du fortsätter med Emacs ska duskapa en ny katalog i prg och kalla den lab1. Kontrollera att katalogen lab1 syns. Skapa sedan ytterligare en katalog i prg för varje laboration (lab2, lab3,..., lab6) så blir det enklare för dig att hålla reda på filerna under kursens gång. Kopiera sedan filen Maze.java från kurskatalogen (eller lämplig underkatalog till kurskatalogen) till din katalog lab1. Filer och buffertar Två viktiga begrepp i Emacs är fil och buffert ( file, buffer ). En fil är något som finns sparad på en hårddisk. Om datorn slås av kommer en fil finnas kvar och kan utnyttjas när datorn startas igen. En buffert är något som används

9 2D1310 K, Media, CL 2002/ tillfälligt under tiden du skriver. Ändringarna i en buffert finns inte automatiskt kvar om datorn slås av. Det är alltså viktigt att spara ändringar i en buffert till en fil lite då och då. Detta gäller speciellt om filen ska utnyttjas till något annat(texkompilering). Öppna en existerande eller en ny fil Öppna den befintliga filen exempel. Detta kan göras via menyn (Files! Open File) eller genom tangentkombinationer (C-x C-f, dvs håll ned kontrolltangenten, tryck på x, håll ned kontrolltangenten, tryck på f). Längst ned i Emacs dyker då en rad med den aktuella sökvägen upp. Ersätt den aktuella sökvägen med Λ/prg/exempel. Notera hur Emacs använder tecknet / för att separera katalognamn och filnamn, precis som i terminalfönstret. Tips! TAB completion kan användas. När hela sökvägen är inskriven trycker du på returtangenten för att bekräfta valet. Innehållet i filen exempel ska nu dyka upp i en av Emacs buffertar och börja enligt: Prinsessan av Babylonien Det var en mörk vinterafton i den lilla stugan i Skrolycka. Kattrinna, hustrun i gården, satt och spann, och katten låg i hennes knä och spann, han också, så gott han kunde. Mannen, Jan Andersson, satt vid spisen och värmde sig med ryggen mot elden. Han hade hela dagen gått och huggit ved i Erik i Fallas skog, så att ingen kunde begära, att han skulle ta sig före något arbete nu, när han var hemma. Inte en gång Kattrinna hade något att anmärka på att han nu inte gjorde annat än lekte och pratade med deras lilla flicka, som den här vintern gick på sitt femte år.... Observera att om den valda filen inte existerar, så kommer Emacs öppna en ny fil med det valda namnet. Med andra ord används med fördel Files! Open File eller C-x C-f både för att öppna en befintlig fil och för att skapa en ny! Redigering och användbara kommandon Så fort du redigerar lite i en buffert i Emacs så kommer buffertens innehåll inte stämma överens med den sparade filens innehåll. Detta visas i Emacs genom att markeringen ** visas till vänster om filnamnet längst ned. Sparas bufferten i en fil så försvinner markeringen. Börja med att spara den aktuella bufferten i en fil med namnet exempel.txt. Att spara till en fil med annat namn görs med Files! Save Buffer As eller C-x C-w. Var noggrann med STORA och små bokstäver! Ändra någonting i bufferten. Notera hur markeringen ** dyker upp. Spara bufferten (Files! Save Buffer eller C-x C-s) och notera hur markeringen ** försvinner. Du har nu använt några av de vanligaste kommandona i Emacs. Det finns otroligt många fler, men för denna kurs kan nedanstående kommandon vara bra att komma ihåg. Med C- avses kontrolltangenten nedtryckt, med M- avses meta -tangenten nedtryckt. På en UNIX-dator fungerar både diamant - tangenten (bredvid mellanslagstangenten) och Esc-tangenten (uppe till vänster) som metatangent.

10 10 2D1310 K, Media, CL 2002/2003 Funktion Menyval Kommando Avbryt C-g Öppna befintlig fil/ Files! Open File... C-x C-f skapa ny fil Spara buffert i fil Files! Save Buffer C-x C-s Spara i fil under Files! Save Buffer As... C-x C-w annat namn Stäng buffert Files! Kill Current Buffer C-x k Ångra Edit! Undo C-_ Klipp ut från markören C-k till slutet av raden (kan upprepas) Start avmarkering C-mellanslag Slut av markering Edit! Copy M-w (kopiera) Slut av markering Edit! Cut C-w (klipp ut) Klistra in Edit! Paste C-y Indentera Javakällkod TAB på en rad Skriv ut aktuell buffert Tools! Print! Print Buffer Sök Search! Search... C-s Sök och byt Search! Query Replace... M-% Gå till rad C-x C-g Skrivaren För att få en pappersutskrift av en fil drar du filikonen från filhanteraren till skrivarsymbolen på frontpanelen. I dialogfönstret fyller du i skrivarens namn och trycker sedan på print. Skrivarna på Nada heter oftast samma som salen de är placerade i. Kommandot från terminalfönstret är print. Spara papper! Skriv inte ut i onödan! Att köra Javaprogram Om du inte redan gjort det, börja med att kopiera filen Maze.java från kursbibliotekets lab1-katalog till din egen lab1-katalog. Alla Javaprogram måste ha ett namn som slutar med.java för att Javakompilatorn ska veta att det är en källkodsfil. Javakällkoden till ett program måste först kompileras till sk Javabyte-kod för att senare kunna exekveras (köras). Att kompilera Javakällkod görs med kommandot javac, där c:et står för compiler. Försök nu kompilera programmet i terminalfönstret: javac Maze.java (Om datorn påstår att det inte finns någon sådan fil så befinner du dig inte i samma katalog som den du kopierade filen till. Flytta i så fall antingen filen, eller byt katalog i terminalfönstret.) Om filen Maze.java innehåller rätt skriven Javakällkod kommer inga fel uppträda och nya filer som slutar med.class skapas. Eftersom det finns ett fel i programmet får du ett fel liknande:

11 2D1310 K, Media, CL 2002/ Maze.java:68: cannot resolve symbol symbol : variable brown location: class java.awt.color Color[] color = Color.brown, ^ 1 error Det betyder att det finns ett fel på rad 68 i filen Maze.java. Feletberorpåatt det inte finns någon fördefinierad färg med namnet Color.brown i Java. Öppna filen i Emacs och rätta till detta genom att bytautfärgenmotcolor.black. Glöm inte att spara. Försök sedan kompilera programmet på nytt. Nu ska det gå bra! Det har nu skapats ett antal nya filer som alla slutar med.class.dessa filer innehåller det körbara programmet. Varje fil motsvarar en del (klass) av programmet. Filen Maze.class innehåller den klass där programmet startar. Det kompilerade programmet (Maze.class) kan exekveras med en Javatolk som översätter (tolkar) Java-byte-koden till den kod som datorn förstår (maskinkod). Exekvera (kör) nu programmet med hjälp av Javatolken: java Maze (Obs!.class skrivs inte ut.) Titta nu efter vilka filer du har. Förutom Maze.java, som innehåller källkoden, och class-filerna, som innehåller exekverbar kod, finns det säkert också filer med ett Λ-tecken efter. Detta är backup-kopior som Emacs skapar; de innehåller tidigare versioner av motsvarande filer utan Λ. Det finns ingen anledning att spara sådana filer. Du kan städa bort dem innan du loggar ut. Om du vill kan du också städa bort.class-filerna. Första Javauppgiften Du ska skriva ett program som heter Hej.java som frågar efter ditt namn och din ålder och som svarar med ditt namn och hur gammal du kommer att vara när du tar examen på KTH (om du tar ytterligare 4 år på dig). Gör så här: 1. Skapa en fil med namn Hej.java. Det gör du genom att öppna en fil i Emacs med namnet Hej.java i katalogen lab1. Om det inte redan finns en fil med det namnet så skapas en tom fil med namn Hej.java. 2. Skriv av följande program precis som det står men med ditt eget namn på andra raden: // Hej.java // Första programmet av <ditt namn> import java.io.*; class Hej public static void main(string[] args) throws IOException BufferedReader stdin = new BufferedReader (new InputStreamReader(System.in)); System.out.print("Vad heter du? "); String namn; namn = stdin.readline();

12 12 2D1310 K, Media, CL 2002/2003 System.out.println("Hej " + namn + "!"); // Lägg till fråga om användarens ålder här. // Lägg till inläsning av användarens ålder här. // Lägg till beräkningar här. // Lägg till den slutliga utskriften här. 3. Kompilera programmet. Om du har skrivit fel kommer du att få kompileringsfel. Rätta till felen och prova igen. När du inte har några fel testkör du programmet. Obs! Kompilera programmet efter varje ändring och rätta till eventuella fel. Det blir mycket lättare att hitta fel då. 4. Lägg till en rad som frågar efter användarens ålder. 5. Lägg till en variabel för strängen som kommer innehålla användarens ålder (String åldertext). 6. Lägg till en rad som läser in åldern som en sträng till åldertext. 7. Lägg till en variabel som kommer innehålla användarens ålder men som ett heltal (int åldertal). 8. Skriv den kod som omvandlar åldertext till en int (med hjälp av Integer.parseInt(åldertext))och lägger resultatet i variabeln åldertal. 9. Lägg till en variabel som ska innehålla åldern på användaren när hon/han tar examen på KTH (int examensålder). 10. Beräkna hur gammal användaren kommer att vara då den tar examen och lägg resultatet i variabeln examensålder. 11. Lägg till en rad som skriver ut hur gammal användaren kommer att vara vid examen. 12. Kompilera programmet igen. Rätta till eventuella fel tills man kan kompilera och köra programmet. Testkör programmet. 13. Se till att programmet är snyggt och skriv ut det på skrivaren. 14. Se till att du förstår programmet. Kursinformation Programmet Netscape är en webbläsare och används för att hämta information från hela världen, bland annat kursinformation från Nada. Starta programmet genom att trycka ner höger musknapp i bakgrunden på skärmen. Du får då upp en meny där du väljer Netscape. (Alternativt kan du använda kommandot netscape & i ett terminalfönster.) Du får först upp en sida med licensinformation. Tryck på Accept. Klicka en gång i det fönster du nu får upp. Skriv in följande adress i Netscape: Klicka på knappen med ett K1, K2, Media eller CL. Du ska nu få upp en sida med kursinformation för din programmeringsteknikkursomgång. Denna sida är

13 2D1310 K, Media, CL 2002/ viktig! Här kommer vi att lägga ut information under kursens gång, så vänj dig att alltid titta på sidan när du loggar in. För att slippa klicka dig fram till sidan varje gång ska du spara adressen till sidan med ett bokmärke. Du gör det genom att välja menykommandot Bookmarks! Add bookmark. Hur ser menyn Bookmarks ut efter detta? När du i fortsättningen vill gå till denna sida väljer du sidan i menyn. Besvara följande frågor: Vilket är det första sätt du ska försöka få hjälp på? Vilken alternativ kursbok rekommenderas för dem som har programmerat tidigare? Vilken version har häftet Lathund i Unixanvändning på Nada under Nadas datorsystems hemsida? Vilka är de fem reglerna i hederskodexen? Den kompletta dokumentationen till Java hittar du på kursenhemsidan under rubriken Referenser: Java TM 2 Platform, Standard Edition v1.4 API. Lägg ett bokmärke även där; det kommer du att behöva många gånger under kursens gång. Prov och redovisning När laborationen är färdig och du har klarat det frivilliga provet ger handledaren dig en kvittens på detta. Vid senare labbtillfällen kan du kolla att dina resultat har blivit rapporterade med kommandot res show prgk02 res show prgmedk02 om du går K2, CL1 om du går K1, Media1 Vid redovisningen under J-delen får du visa upp ditt program och dina minnesbilder samt svara på de frågor handledaren ställer. Tänk på att laborationerna tar betydligt längre tid än den schemalagda datorsalstiden, så förbered dig och påbörja laborationen innan det schemalagda laborations tillfället! Du har tillgång till Nadas terminaler dygnet runt, men salarna kan vara bokade vissa tider. Behöver du hjälp, se kurshemsidan. Byt lösenord! Det lösenord du fick med kontot är säkert svårt att komma ihåg, dessutom kan någon ha sett det. Du ska därför byta lösenord. När du fick ditt konto på Nada

14 14 2D1310 K, Media, CL 2002/2003 fick du häftet Ansvarsförbindelse för datoranvändning på Nada. Där finns det information och tips om lösenord. Läs igenom det. Byte av lösenord gör du i terminalfönstret med kommandot passwd. Skriv passwd och tryck returtangenten. Det kommer upp instruktioner på skärmen som berättar vad du ska göra. Logga ut För att logga ut trycker man på EXIT-knappen. En praktisk detalj inför fortsättningen För att redigeringsprogrammet Emacs ska fungera bra ska du efter du har loggat ut en gång, åter logga in och skriva följande kommando i ett terminalfönster: prgfix Detta gör att Emacs startar när du klickar på en fil-ikon i filhanteraren ifortsättningen. Logga nu ut och låt din labbkompis göra samma sak. Kontroll innan prov och nästa laboration Jag har svarat på frågorna som ställts i labben genom att fylla i svarsrutorna. Jag förstår innebörden av alla nyckelord och kan visa användbara exempel. Jag vet hur jag hittar information på kurshemsidan. Jag vet hur man skapar, öppnar och sparar filer samt kan använda Emacs. Jag kan skriva ett enkelt Javaprogram. Jag vet när (throws IOException) ska användas och var det ska stå. Jag förstår vilka delar gör vad i Hej.java, speciellt hur utskrifter från och inläsning till programmet fungerar. Jag kan deklarera en variabel och tilldela variabler olika värden. Jag kan kompilera och provköra Javaprogram. Jag kan läsa kompileringsmeddelanden och rätta fel i ett Javaprogram.

15 2D1310 K, Media, CL 2002/ Laboration 2: Experiment med Java Nyckelord: sats, block, deklaration, datatyp, sträng, heltal, variabel, tilldelning, inmatning, utmatning, val, villkor, slinga, iteration, spårutskrift. Mål: Att du ska förbättra din färdighet i att modifiera Javakällkod samt kunna skriva egna program enligt prototypprogrammeringsprincipen. Att du ska förstå innebörden av varje nyckelord och förberedelsefrågor samt kunna ge beskrivande exempel. Föreberedelse: Besvara förberedelsefrågorna. Förberedelsefrågor Alla frågor måste besvaras innan du kan få hjälp med och/eller bli klar med laborationen. Vad är omslags/wrapper-klasserna för följande primitiva datatyper? primitiv datatyp omslags/wrapper-klass int double boolean float char byte Var och till vad har du redan använt en omslagsklass till i laboration 1? Vad är likheten och skillnaden mellan int, char och String? Vilken av == och = är en tilldelningsoperator? Vilken är en boolesk operator? Hur skriver du i Java följande booleska operation? betydelse booleska operatorn och eller icke/inte

16 16 2D1310 K, Media, CL 2002/2003 Hur kan du kolla följande i Java på en gång:om värdet av en heltalsvariabel p är mindre än värdet av en annan heltalsvariabel q och om p är större än noll? Följande är deklarerat i ett Javaprogram: char b1; char b2; // b1 och b2 får något värde. Vad skriver du för att kolla följande på en gång: om b1 är samma bokstav som b2 eller om b1 kommer senare än b2 i alfabetet? Vad skriver du för att kolla följande på en gång: om b1 inte är samma bokstav som tecknet 'g' och om b1 kommer före b2 i alfabetet? Varför vill man använda if? Skriv exempel på en if-sats och markera de olika delarna. Vilka delar finns alltid med? Varför vill man använda while?

17 2D1310 K, Media, CL 2002/ Skriv exempel på en while-slinga och markera de olika delarna. Vilka delar finns alltid med? Varför vill man använda for? Skriv exempel på en for-slinga och markera de olika delarna. Vilka delar finns alltid med? Titta på koden till programmet Test som användes i förberedelsen till laboration 1. Utan att skriva in och köra programmet, vad gör det? Ge exempel på utskrift från programmet. Följande felmeddelande dök upp vid kompilering av ett program. Fel.java:9: ';' expected System.out.println("Det här är ett " + s + "program.") ^ Fel.java:8: cannot resolve symbol symbol : variable str location: class Fel str = "test"; ^ 2 errors Vilken fil ligger felet i? Vilka rader är det fel på? Vad är felen? Tips! Kolla lydelsen till laboration 1.

18 18 2D1310 K, Media, CL 2002/2003 Sist men inte minst: Läs igenom avsnittet Egna program och besvara för varje program alla punkterna utom implementeringen i programmeringsstrategin. Använd ett textblad per program. Sammanfattning av labben I denna laboration ska du titta på flera Javaprogram och experimentera med källkoden genom att ändra och lägga till Javasatser. Du ska: ffl Kontrollera vad som händer då användaren matar in felaktiga data. ffl Experimentera med val (if-satsen). ffl Experimentera med slingor (while- och for-satser), samt översätta från den ena varianten till den andra. ffl Använda spårutskrifter. ffl Skriva två program. Det ena skall beräkna kvadrat och kubik av ett givet tal, det andra skall beräkna medelvärdet av ett godtyckligt antal positiva tal. Val När ett program ska utföra olika saker beroende på olika omständigheter (så som olika indata) måste programmet utföra ett val. Programmet Val.java innehåller val. Kopiera Valmall.java från kurshemsidan, öppna programmet i Emacs, spara som Val.java, ändra klassnamnet till Val och lägg till följande källkod mellan och i beskrivningen av main() : utdata.print("hur kul tycker du det ska bli att "); utdata.print("programmera (på en skala 1-10)? "); String svar = indata.readline(); int kulfaktor = Integer.parseInt(svar); if (kulfaktor > 5) utdata.println("vad roligt!"); else utdata.println("inte mer än så?"); Innan du kompilerar och exekverar programmet ska du läsa igenom det och fundera på vad det gör. Nedan finns lite hjälp. Raderna utdata.print("hur kul tycker du det ska bli att "); utdata.print("programmera (på en skala 1-10)? "); skriver ut texten Hur kul... på skärmen. Nästa rad

19 2D1310 K, Media, CL 2002/ String svar = indata.readline(); utför tre saker. Det första är att deklarera en strängvariabel vid namn svar (String svar). Det andra är att säga åt datorn att läsa en rad från tangentbordet (indata.readline()).det tredje är att tilldela variabeln svar det inlästa värdet, d v s den inlästa raden (ordnas av tilldelningsoperatorn =). Notera hur källkoden kan brytas ned i satser (t ex som ovanstående tilldelningssats) och att satserna i sin tur kan delas in i flera delar (i detta fall variabeldeklaration, inläsning från tangentbordet och själva tilldelningen). Följande rad int kulfaktor = Integer.parseInt(svar); utför också tre saker: deklaration av heltalsvariabeln kulfaktor, omvandling av strängen svar till ett heltal och till sist att tilldela variabeln kulfaktor det omvandlade värdet (heltalet). Resterande källkod utgör valet med dess villkor och åtgärdssatser beroende på om villkoret är uppfyllt (sant) eller inte. Spara, kompilera, rätta eventuella fel och exekvera. Vad händer om du svarar med talet 3, talet 7, ett negativt heltal, ett decimaltal (t ex 3.14) eller en textsträng som inte är ett heltal (t ex jättekul)? Om det blir fel vid exekveringen, vilken del i programmet gick snett? Skriv om programmet så att det skriver ut Toppen! om du matar in ett tal som är större än 10. Tips! else if-satsen. Vad ändrade du/lade du till? Slingor När ett program upprepade gånger ska utföra samma sak använder man ofta iteration (upprepning) med hjälp av slingor (while- och for-slingor). Hämta programmet Iteration.java från kurshemsidan, kompilera och exekvera. import java.io.*; public class Iteration public static void main(string[] args) throws IOException

20 20 2D1310 K, Media, CL 2002/2003 BufferedReader indata = new BufferedReader(new InputStreamReader(System.in)); PrintStream utdata = System.out; utdata.print("hur kul tycker du det ska bli att "); utdata.print("programmera (på en skala 1-10)? "); String svar = indata.readline(); int kulfaktor = Integer.parseInt(svar); while (kulfaktor < 5) utdata.print("inte mer än " + kulfaktor + "!? "); utdata.print("ska det inte bli roligare (1-10)? "); svar = indata.readline(); kulfaktor = Integer.parseInt(svar); utdata.println("vad roligt!"); Efter while (kulfaktor < 5) kommer ett block, dvs.... Vad händer om klamrarna och tas bort? Spara och exekvera. Tips! Ett program kan avbrytas med C-c, d v s håll ned kontrolltangenten och tryck på c. Varför blir resultatet som det blir? Vad är alltså poängen med block? Nedan finns programmet Forsats.java från kurshemsidan. Detta program använder en for-slinga. Kopiera, kompilera och exekvera programmet. import java.io.*; public class Forsats public static void main(string[] args) throws IOException BufferedReader indata = new BufferedReader(new InputStreamReader(System.in)); PrintStream utdata = System.out; utdata.print("hur kul tycker du det ska bli att "); utdata.print("programmera (på en skala 1-10)? "); int kulfaktor = Integer.parseInt(indata.readLine());

21 2D1310 K, Media, CL 2002/ for (int i = 0; i < kulfaktor; ++i) utdata.println("vad roligt!"); Vad händer om du matar in 0 (noll) eller ett negativt heltal? Varför? Spårutskrifter är ett praktiskt sätt att se vad som händer i ett program när det exekveras. De kan till exempel ge tips om programmet gör något fel. Lägg till en rad först inuti for-slingan som skriver ut värdet på variabeln i på skärmen. Spara, kompilera och exekvera. Testa med att mata in olika heltal (även negativa). Hur ser minnet för variabeln i ut efter varje varv i slingan? Visa med en minnesbild. Spara programmet som Whilesats.java och döp om klassnamnet till Whilesats. Skriv nu om programmet så att det använder en while-slinga i stället för for-slingan. Kontrollera att programmet fungerar precis som förut. Hur ser de nya raderna i källkoden ut? Egna program Nu är det dags för dig att skriva två egna små program. Kom ihåg att inte skriva för mycket på en gång, utan arbeta enligt prototypprogrammeringsprincipen och alltså lägga till lite i taget och kompilera och provköra ofta. Utgå gärna från tidigare skrivna program, men kom ihåg att spara filen med ett nytt namn och ändra namnet på klassen till samma namn (utan tillägget.java)! Kvadrat och kubik Skriv ett program som frågar användaren efter ett heltal, läser in detta tal, räknar ut kvadraten och kubiken av det inmatade talet samt skriver ut båda resultaten. Ett exekveringsexempel kan se ut som följer:

22 22 2D1310 K, Media, CL 2002/2003 Skriv in ett heltal: 5 Kvadrat: 25 Kubik: 125 Lägg märke till att indatat ska hamna på samma rad som ledtexten. Medelvärde Skriv ett program som upprepande frågar efter ett tal och fortsätter så länge som talet är större än eller lika med 0 (noll). Varje inskrivet tal skall summeras ihop till en totalsumma som sedan delas med antalet inskrivna tal för att på så sätt ge medelvärdet. Ett exekveringsexempel kan se ut som följer: Skriv in första talet: 12 Skriv in nästa tal: 3 Skriv in nästa tal: 7.2 Skriv in nästa tal: 3.14 Skriv in nästa tal: -1 Medelvärdet blir 6.335! Tips! Gör som i Iteration.java att ni ställer frågan och läser in svaret en gång före slingan och en gång inuti slingan. Använd double istället för int, samt Double.parseDouble() istället för Integer.parseInt(). Detta behövs då vi vill använda decimaltal istället för heltal. Kontroll innan prov och nästa laboration Jag har svarat på frågorna som ställts i labben genom att fylla i svarsrutorna. Jag förstår innebörden av alla nyckelord och kan visa användbara exempel. Jag vet hur if-, else if- och else-satserna fungerar och kan ge ett beskrivande exempel. Jag vet hur while- och for-satserna fungerar, kan ge beskrivande exempel och översätta från den ena till den andra. Jag vet varför man använder block (... ). Jag har använt spårutskrifter, kan lägga in dem i min källkod samt vet när de är bra att använda. Jag har skrivit två egna program som fungerar som de ska och är lätta att läsa. Jag har läst igenom målet med labben och diskuterat eventuella frågor med min labbkompis och/eller handledare.

23 2D1310 K, Media, CL 2002/ Laboration 3: Klasser, variabler och metoder Nyckelord: klass, instansvariabel, instansmetod, metodanrop, anropsparameter, metoddeklaration, metoddeklarationshuvud, returdatatyp, formell parameter, lokal variabel, kropp, prototypprogrammering. Mål: Att du ska kunna skriva egna klasser med instansvariabler och metoder samt anropa metoder både inom och mellan klasser. Att du ska förstå innebörden av varje nyckelord och förberedelsefrågor samt kunna ge beskrivande exempel. Föreberedelse: Besvara förberedelsefrågorna. Förberedelsefrågor Alla frågor måste besvaras innan du kan få hjälp med och/eller bli klar med laborationen. Läs igenom hela laborationen. Många förklaringar finns i lydelsen! Antag att klassen Kalkylator beskriver en kalkylator och att ett Kalkylatorobjekt k redan finns. Ge exempel på hur ett anrop till följande instansmetod hos k kan användas: double addera(double a, int b) // ointressanta detaljer som inte visas Hur ser metoddeklarationshuvudet för metoden beräknaomkrets ut hos kalkylatorn k? Tips! Inparameter till metoden är en radie och returvärdet är ett decimaltal som motsvarar omkretsen. Leta rätt på någon matematisk metod i klassen Math. (Kolla Java API.) Hur ser metoddeklarationshuvudet ut? Ge exempel på ett anrop av denna metod.

24 24 2D1310 K, Media, CL 2002/2003 Är metoden parseint(), som du har använt i laboration 1 och 2, en instansmetod eller en klassmetod? (Kolla Java API.) Motivera svaret. Vilken metod använder du för att få längden av en sträng samt hur skriver du motsvarande Javakod om du har en sträng som heter str? Vad skriver du för att skriva ut det tredje tecknet i str ensamt påenrad? Vad skriver du för att skriva utvarje tecken i str så attdufåretttecken per rad? Tips! Använd en for-slinga. Rita en minnesbild med namn, datatyp och exempel på innehåll av följande variabel String svar = indata.readline(); Nedanstående kod: class Anropsfel public static void main(string[] args) double a = -3; double b = -5; double c; c = Math.cos(a, b); System.out.println("cos = " + c); c = Math.cos(double a); System.out.println("cos = " + c);

25 2D1310 K, Media, CL 2002/ ger följande fel vid kompilering: Anropsfel.java:8: '.class' expected c = Math.cos(double a); ^ Anropsfel.java:8: ')' expected c = Math.cos(double a); ^ Anropsfel.java:6: cos(double) in java.lang.math cannot be applied to (double,double) c = Math.cos(a, b); ^ Anropsfel.java:8: unexpected type required: value found : class c = Math.cos(double a); ^ 4 errors Uppenbarligen är del fel på raderna sex och åtta. Vad är det för fel och hur ser de korrekta raderna ut? Tips! Felet på rad åtta är egentligen bara ett fel, inte tre olika fel som javac påstår. Kolla även Java API. Nedanstående kod: class Tankefel public static void main(string[] args) double a = -3.0; System.out.println("a = " + a); Math.abs(a); System.out.println("abs(a) = " + a); ger inga kompileringsfel men ger följande felaktiga information vid exekvering: a = -3.0 abs(a) = -3.0 Varför blir det fel och hur fixar du programmet?

26 26 2D1310 K, Media, CL 2002/2003 Nedanstående kod: class VariabelFel public static void main(string[] args) String s = "Hej"; start(); public static void start() System.out.println(s); ger följande kompileringsfel: VariabelFel.java:7: cannot resolve symbol symbol : variable s location: class VariabelFel System.out.println(s); ^ 1 error Varför blir det fel och hur fixar du programmet? Sist men inte minst: Läs igenom hela laborationen och besvara alla punkterna utom implementeringen i programmeringsstrategin. Använd ett annat blad. Sammanfattning av labben I denna laboration ska du modifiera innehållet i en given klass samt skriva en egen klass. Du kommer experimentera med instansvariabler och instansmetoder. Duska: ffl Undersöka en befintlig klass Bokstavspusslare och lägga till metodanrop i metoden pussla(). ffl Lägga till instansmetoder i klassen Bokstavspusslare. ffl Skriva en egen klass Bokstavsräknare med instansvariabler och instansmetoder. Metoderna kommer att utnyttjas av bokstavspusslaren. Ett exekveringsexempel av den slutgiltiga versionen av programmet i denna laboration kan se ut som följer: Börjar pussla... Vad heter du? Erik Välkommen Erik!

27 2D1310 K, Media, CL 2002/ Ange en bokstav: a Ange en textrad: ananas ananas innehåller 3 stycken a! Ange en bokstav: k Ange en textrad: krossad ananas i burk krossad ananas i burk innehåller 2 stycken k! Totalt räknades 5 tecken! Huvudklassen Lab3 Börja med att hämta Lab3.java från kurshemsidan. Kompilera och provkör programmet. Läs igenom programmet och fundera över de delar som du inte känner igen sedan tidigare. Programmet är än så länge uppbyggt av två klasser. Klassen Lab3 innehåller bara (klass)metoden main(). Denna metod skapar en instans/ett objekt av den andra klassen, Bokstavspusslare, och anropar metoden pussla() hos det skapade objektet. Klassen Bokstavspusslare beskriver något som just nu innehåller två instansvariabler samt två instansmetoder, varav den ena metoden är pussla(). Hur ser raden som skapar en bokstavspusslare ut samt vilket ord säger till Java att ett nytt objekt/en ny instans ska skapas? Lägg märke till att metoden skrivvälkomsttext() hittills aldrig använts (anropats). (Om den använts skulle ju texten Välkommen! skrivits ut vid exekvering, vilket inte gjordes.) I det befintliga programmet finns alltså metoden skrivvälkomsttext() deklarerad men inte anropad. Vid exekvering utför datorn uppifrån och ned det som står i main() (och därmed det som står i instansmetoden pussla()). Vill man utnyttja en metod så lägger man in ett metodanrop till metoden i main(), eller i någon annan metod som anropas indirekt från main(). Se till att metoden skrivvälkomsttext() anropas från pussla(). Spara, kompilera och exekvera. Hur ser den nya raden i källkoden ut? När programmet exekveras får användaren nu i alla fall upp en välkomsttext! För att hålla reda på användarens namn under hela den tid programmet exekveras ska du lägga till en instansvariabel. Se till att det är en strängvariabel och hitta på ett beskrivande namn, t ex användarnamn. Kom ihåg att det är mycket viktigare att ha beskrivande namn än korta namn! Vad lade du till? Spara och kompilera för att försäkra dig om att du skrivit rätt.

28 28 2D1310 K, Media, CL 2002/2003 Egna metoder När du ska beskriva (deklarera) en metod måste du veta hur den ska användas (anropas). Vid anropet anges alltid metodens namn och metodparenteserna. Ofta måste metoden även ha tillgång till vissa indata (inparametrar), vilket anges mellan metodparenteserna. Exempel: int x = 17; görnågot(x); Då dessa indata/inparametrar skrivs i samband med metodanropet kallas de för anropsparametrar. Observera att det alltid är värdena av anropsparametrarna som skickas till metoden. Eftersom en metod beskriver vad en klass eller ett objekt/en instans av en klass kan göra måste alla metoder deklareras inuti någon klass. Samma sak gäller för variabler med den extra finessen att variabler även kan ligga inuti metoder, så kallade lokala variabler. Vid beskrivning/deklaration av metoder finns fyra viktiga delar att komma ihåg: metodens namn, formella parametrar, returdatatyp och kropp. Namnet skall beskriva vad metoden gör. De formella parametrarna är lokala variabler i metoden som får anropsparametrarnas värden. Returdatatypen är datatypen för det värde som metoden räknar fram (jmf. metoden cos() som räknar fram och returnerar ett decimaltal). Metodens kropp är den del som utgör innehållet i metoden. Då en kropp utan huvud är lite otrevligt, brukar man säga att returdatatypen, namnet och de formella parametrarna utgör metoddeklarationshuvudet. Exempel på deklaration av metoden görnågot(): double görnågot(int någottal) return 0.01 * någottal; där double är returdatatypen, görnågot är metodens namn, int någottal är en formell parameter och... är metodens kropp. Du ska nu lägga till en metod i klassen Bokstavspusslare. Den nya metoden skall ta reda på användarens namn, så ett bra namn på metoden torde vara taredapånamnet. Metoden behöver inte ha några formella parametrar eftersom allt den behöver veta matas in med hjälp av tangentbordet. Metoden behöver inte heller returnera någonting eftersom resultatet lagras i instansvariabeln användarnamn. Obs! Eftersom en inläsning från tangentbordet sker med metodanropet readline() vilket kan ge upphov till fel, så måste metoddeklarationen innehålla throws IOException. Om vi bortser från innehållet i metoden blir alltså källkoden public void taredapånamnet() throws IOException där void är returdatatypen då ingenting ska returneras. (Ordet public anges för att metoden ska kunna anropas från en annan klass, vilket är ganskavanligt). Placera källkoden inuti klassen men utanför andra metoder. Skriv källkoden i metodens kropp. Hur ser de nya raderna i metoden ut?

29 2D1310 K, Media, CL 2002/ Lägg till ett anrop till metoden taredapånamnet() före anropet till skrivvälkomsttext() i pussla(). Spara och kompilera. Följande felmeddelande uppträder: Lab3.java:XX: unreported exception java.io.ioexception; must be caught or declared to be thrown taredapånamnet(); ^ 1 error Varför? Enligt deklarationen av taredapånamnet() kan fel (IOException) inträffa när metoden anropas. Där metodanropet till taredapånamnet() görs måste man därför också ta hand om IOException. Detta kan göras genom att även låta metoden som anropar taredapånamnet få throws IOException i sitt deklarationshuvud. Åtgärda, kompilera och provkör! Ett snyggare och vanligare sätt att ta hand om exceptions är att använda try... och catch (IOException e)..., mendetäröverkurs just nu. Den intresserade kan läsa om detta i boken. Ändra även välkomsttexten till att vara Välkommen följt av användarnamnet och ett'!'. Försäkra dig om att programmet fungerar som du vill innan du fortsätter! Egen klass Du ska nu skriva en egen klass med en instansvariabel (totalantal) och två metoder. Skriv klassen i filen Lab3.java och kalla den Bokstavsräknare. Eftersom klassen ligger i en fil med ett annat namn än klassnamnet (följt av.java), så kan klassen inte vara public. Klassdeklarationen blir således class Bokstavsräknare och kan lämpligtvis läggas sist i filen. Som första sats i denna klass lägger du till instansvariabeln totalantal. Den ska vara ett heltal och kommer hålla reda på totala antalet räknade tecken. Nu kommer en del arbete i klassen Bokstavspusslare. Först behöver din bokstavspusslare kunna hålla reda på en bokstavsräknare. Fixa detta genom att deklarera en instansvariabel av typen Bokstavsräknare där kommentaren anger så! Sedan behöver du i pussla() se till att bokstavsräknaren skapas och att din bokstavsräknarvariabel refererar till den nyskapade bokstavsräknaren. Bokstavsräknaren skapas med hjälp av den klass som beskriver en bokstavsräknare, d v s klassen Bokstavsräknare (med stort B). Se efter hur main() skapade en bokstavspusslare och skriv motsvarande rad för skapandet av din bokstavsräknare. Tips! Skriv inte allt på en gång. Börja med deklarationen av klassen med dess instansvariabel, samt deklarationen och tilläggen i metoden pussla(). Spara och kompilera. Fortsätt sedan med punkterna nedan. Spara, kompilera och provkör med jämna (och korta) mellanrum. Bygg på detta sätt vidare mot den slutgiltiga versionen, d v s se till att alltid ha ett fungerande program, helt enligt principen med prototypprogrammering. Den nya klassen ska innehålla en metod med följande metoddeklarationshuvud: public int räknabokstav(char bokstav, String text)

30 30 2D1310 K, Media, CL 2002/2003 Som namnet anger ska metoden räkna förekomsten av en given bokstav i en given text och returnera detta tal. Se till att programmet fungerar som du vill innan du lägger till den kompletta källkoden i räknabokstav(). Tips! Först kan metoden t ex bara returnera -17. (Detta brukar kallas att tillverka dummymetoder ; de finns och kan anropas, men gör inget vettigt.) Lägg också till en metod frågaochräkna() i klassen Bokstavspusslare. Denna metod frågar efter en bokstav och en textrad innan den anropar räkna- Bokstav() och skriver ut antalet räknade tecken. Glöm inte att ha med throws IOException i metoddeklarationshuvudet om metoden använder readline(). Hur kan anropet till räknabokstav() se ut? Glöm inte anropsparametrarna. Tips! Metoden räknabokstav() ligger hos din bokstavsräknare men anropas från frågaochräkna() som ligger hos din bokstavspusslare, på samma sätt som pussla() finns hos bokstavspusslaren men anropas från main() som finns i klassen Lab3. I båda fallen anropas en metod som är beskriven i en annan klass. Glöm inte lägga till lämpliga anrop i pussla() innan du exekverar. Det blir lika många anrop till frågaochräkna() som antalet gånger programmet ska räkna bokstäver i en text (se exekveringsexemplet!). Kompilera och provkör! När programmet inte innehåller några kompilerings- eller körningsfel kan du fortsätta med att skriva klart metoden räknabokstav(). Tips! Man kan komma åt bokstav nummer i från en sträng str med str.charat(i) och man kan få reda på antalet tecken i strängen med str.length(). Den första bokstaven är bokstav nummer 0 (noll). Deklarera gärna en lokal heltalsvariabel antal som håller reda på antalet förekomster av tecknet under räkningens gång. Det är värdet på antal som ska returneras sist i metoden. Precis innan värdet av antal returneras ska även instansvariabeln totalantal uppdateras. Kompilera flitigt och provkör! Som sista metod i bokstavsräknaren lägger du till totaltantalräknade() som ska returnera det värde som finns i instansvariabeln totalantal. Metoden behöver inga indata. Hur ser koden för metoden ut (inklusive metodhuvudet)? En exekvering av det slutgiltiga programmet ska förutom språklig formulering överensstämma med exemplet i labbens början! Lägg alltså till sist in de anrop som behövs i pussla().

31 2D1310 K, Media, CL 2002/ Kontroll innan prov och nästa laboration Jag har läst hela labblydelsen noggrant, gjort allt som jag uppmanats till samt fyllt i svarsrutorna. Jag förstår innebörden av alla nyckelord och kan visa användbara exempel. Jag vet var i en Javafil klasser, variabler och metoder kan deklareras (utanför en klass, inuti en klass men utanför en metod, inuti en metod). Jag kan deklarera en metod. Jag kan anropa en metod som finns i samma eller i annan klass/objekt/instans. Jag vet skillnaden mellan metoddeklarationer och metodanrop. Jag vet skillnaden mellan formella parametrar och anropsparametrar. Jag har skrivit väl fungerande och snyggt skriven källkod. Jag inser att en stor fördel med metoder är att mer övergripande metoder (så som pussla()) får betydligt enklare struktur och blir lättare att läsa. pussla() består till största delen av anrop till metoder. Det är sedan dessa metoder som gör själva jobbet. Jag vet när (throws IOException) ska användas och var det ska stå. Jag har läst igenom målet med labben och diskuterat eventuella frågor med min labbkompis och/eller handledare. Frivillig uppgift Modifiera programmet så att det fortsätter så länge som användaren svarar något på frågan Ange en bokstav:. Tips! Då metoden frågaochräkna() är den som vet vad användaren skriver in bör denna metod returnera ett värde som säger om användaren matade in något. I metoden pussla() kan sedan detta värde kontrolleras för att avgöra om en slinga ska fortsätta eller ej. Returvärdet bör vara en boolean, dvs true eller false. Man vet att en inmatad sträng (en String) inte innehåller några tecken genom att kontrollera om strängens längd är 0 (noll): if (strängen.length() == 0) return false; // Ska inte fortsätta Visa stolt upp ditt program!

32 32 2D1310 K, Media, CL 2002/2003 Laboration 4: Från specifikation till prototyp av en mini-j-uppgift Nyckelord: klass, instansiering, instans, instansvariabel, klassvariabel, instansmetod, klassmetod, konstruktormetod, this, vektor, datastruktur, programmeringsstrategi, specifikation, prototyp, static, public, private. Mål: Att du ska kunna konstruera datastrukturer på ett bra sätt samt kunna skriva lättlästa metoder som utnyttjar dessa datastrukturer. Att du ska förstå innebörden av varje nyckelord och förberedelsefrågor samt kunna ge beskrivande exempel. Föreberedelse: Besvara förberedelsefrågorna. Förberedelsefrågor Alla frågor måste besvaras innan du kan få hjälp med och/eller bli klar med laborationen. Läs igenom hela laborationen. Många förklaringar finns i lydelsen! Beskriv något du har hemma (en sak/objekt, levande eller ej). Vad har det för egenskaper? Vad kan göras med det? Skriv en klass som beskriver ovanstående sak (objekt). Var noga med deklarationer av instansvariabler för varje egenskap och deklarationer av instansmetoder för varje sak som kan göras med objektet. Använd ett annat blad. Antag att det finns en instans prylen av din klass. Gör något med prylen (anropa en metod)! Instansvariabler ritar du som små lådor som har namn, datatyp och innehåll. Objekt/instanser av klasser ritar du som stora lådor som innehåller instansvariabler och instansmetodernas deklarationshuvud. Rita en minnesbild med namn, datatyp exempel på och innehåll av variabeln prylen (som refererar till ett objekt/en instans av din klass). Ta med alla instansvariabler och instansmetoder. Använd ett annat blad.

33 2D1310 K, Media, CL 2002/ Nedanstående kod: class Staticfel public static void main(string[] args) Banan b = new Banan(); b.skala(); class Banan boolean skalad; public static void skala() skalad = true; ger följande kompileringsfel: Staticfel.java:11: non-static variable skalad cannot be referenced from a static context skalad = true; ^ 1 error Varför? Vad behöver ändras i programmet för att det ska fungera? Tips! En klassmetod/variabel har inget att göra med objekt/instanser eller instansvariabler/metoder. I en klassmetod kan alltså inte en instansvariabel/metod användas direkt. Vanligaste felet till ovanstående felmeddelande är att metoden av misstag är en klassmetod istället för en instansmetod. Sist men inte minst: Läs igenom den färdigskrivna specifikationen Lab4.java, kontrollera och bocka av punkt efter punkt enligt programmeringsstrategin. Sammanfattning av labben I denna laboration ska du lära dig detaljerna kring instansiering, d v s hur man skapar instanser/objekt beskrivna av en klass. Du ska också beskriva vad som ska kunna göras med dessa instanser, d v s skriva instansmetoder, samt utnyttja dessa instansmetoder. Uppgiften går ut på att skapa ett monsterspel. Du kommer att fortsätta att utveckla spelet i laborationerna 5 och 6.Du ska: ffl Läsa igenom inledningen noga, svara på frågorna och återgå till denna under labbens gång för att hämta inspiration. ffl Läsa igenom dokumentet om programmeringsstrategi från kurshemsidan.

34 34 2D1310 K, Media, CL 2002/2003 ffl Skriva början till ett monsterspel med hjälp av en specifikation över hur programmet ska fungera samt stegvis utveckla programmet till en prototyp som kan köras men som inte är ett komplett spel. ffl Göra en minnesskiss på papper hur dina objekt/instanser med respektive instansvariabler och instansmetoder hänger ihop! Inledning Det program du ska skriva liknar i stora drag hundfarmsprogrammet Hundfarm.java. Skillnaden är att du här ska ta hand om monster istället för hundar och att ditt program måste vara bättre uppdelat i metoder för att du ska kunna bygga vidare på det i laboration 5 och 6.Hämta hundfarmsprogrammet från kurshemsidan/kurskatalogen och titta på det medan du löser resterande laborationer. Börja med att kompilera och provköra programmet samt försök hitta vilka rader i källkoden som ger de olika utskrifterna. Java ärettobjektorienterat programmeringsspråk, vilket innebär att objekt från det verkliga livet lätt ska kunna beskrivas (eller modelleras). I verkliga livet klassificerar vi objekt. T ex är Hund en klassificering av hundarna (objekten) Lady och Lufsen. Omvänt kan man säga att Lady och Lufsen är två olika identiteter eller objekt/instanser av klassen Hund. Således utgör klassen Hund en mall för världens alla hundar. Ett objekt/en instans har vissa egenskaper. Exempelvis kanske vi vill hålla reda på ett namn för varje hund. Datorn håller reda på allt i variabler, och en variabel som hör till en instans blir således en instansvariabel. Egenskaper som ett objekt/en instans har beskrivs alltså av klassens instansvariabler. Vilka instansvariabler har ett Hund-objekt i hundfarmsexemplet? Vad är de av för datatyp? Rita även minnesbild över en hund med dess instansvariabler. Det kan även finnas variabler som inte hör till ett visst objekt utan hör till hela klassen: klassvariabler. En klassvariabel kännetecknas av ordet static och är gemensam för och kan utnyttjas av alla objekt/instanser skapade av den klassen. Finns det någon klassvariabel i klassen Hund? Om så, vilken/vilka är det och vad används den/de till? Skriv även datatypen och rita minnesbild över variabeln och det den eventuellt refererar till. Objekt/instanser kan också göra något. Vi kan tex uppmana hunden (objektet/instansen) lady att gå till husse: lady.gåtill(husse);

35 2D1310 K, Media, CL 2002/ där husse kanske är ett människoobjekt. Detta liknar väldigt mycket ett metodanrop, och det är precis vad det är: vad ett objekt/en instans kan göra beskrivs av klassens instansmetoder. Vilka instansmetoder finns hos ett Hund-objekt i hundfarmsprogrammet? Skriv hela metoddeklarationshuvudet. IJava kan alla objekt/instanser göra något, d v s de kan alla ha instansmetoder. Precis som med variabler finns det metoder som hör till klassen och är märkta static: klassmetoder. Finns det någon/några klassmetoder i hundfarmsprogrammet? Om så, hur ser metoddeklarationshuvudena ut och i vilken klass ligger de? Innan ett objekt kan användas måste det skapas. Så länge hundbeskrivningen (klassen Hund) finns kan en hund (instans/objekt av klassen Hund) skapas: new Hund("Lady"); Nästan alltid vill man ta hand om det nyskapade objektet genom att låta en variabel (här lady) referera till det: Hund lady = new Hund("Lady"); där new Hund("Lady") innehåller två viktiga moment: skapande av instansen och initiering av den nyskapade instansens instansvariabler. Det förstnämnda ges av new Hund. Det senare ges av ett metodanrop till metoden Hund(). Denna metod brukar kallas konstruktormetod (eftersom den bara används vid konstruktion av instansen) och har alltid samma namn som klassen själv (d v s med stor bokstav i början). En klass kan ha flera konstruktormetoder och metoddeklarationshuvudet till den ovanstående skulle vara: public Hund(String namn) Notera speciellt att en konstruktormetod inte har något utskrivet returvärde (inte ens en void). Anledningen är att resultatet efter konstruktionen alltid är en instans av klassen. Något man ska tänka på när man skriver källkod inuti en instansmetod är att metoden alltid tillhör en speciell instans. Vilken instans det gäller beror på anropet! Jämför lady.gåtill(husse) och lufsen.gåtill(husse). När en instansmetod anropas och källkoden i en instansmetod exekveras dyker det också upp en speciell variabel som refererar till den aktuella instansen: this. Poängen med this är att kunna komma åt en instansvariabel trots att det finns en lokal variabel med samma namn deklarerad inuti metoden. Titta i

36 36 2D1310 K, Media, CL 2002/2003 de båda konstruktorerna i Hund-klassen. Vilka tilldelningar måste ha this och vilka behöver inte ha this? Varför? Observera att this aldrig finns i en klassmetod. Varför? De läskiga monstrens värld Att hålla koll på en hundfarm kan vara nog så intressant. Din uppgift i denna laboration blir dock att skriva början på ett program (en prototyp) som håller koll på ett antal hungriga monster med kakor. Till din hjälp har du en färdigskriven specifikation på hur prototypen ska fungera: Lab4.java. Hämta denna fil från kurshemsidan/kurskatalogen! Titta först på den övergripande strukturen av specifikationen. De tre viktigaste punkterna från programmeringsstrategin (titta på den!) finns där: skärm/användargränssnitt, minne/datastrukturer samt algoritm. Dessutom finns ett programskelett med alla klasser, variabler och metoder som omnämns under de tre punkterna. Till J-delen i kursen kommer vi kräva en liknande (men komplett) specifikation av dig över din J-uppgift! Läs noga igenom specifikationen och lägg speciellt märke till de variabler och metoder som utnyttjas i algoritmen. Kraven på denna laboration är att: ffl Du ska skriva en prototyp, d v s början av ett monsterspel. Utnyttja skelettet genom att lägga till egen källkod i metoderna. Glöm inte att också anropa de skrivna metoderna! Allt som står i algoritmen ska göras. Hur programmet kan se ut finns under punkten användargränssnitt i specifikationen. Titta på det! ffl Du ska skriva kommentarer till alla klasser, instansvariabler och metoder du använder. Kommentarerna ska stå precis ovanför varje klass-, variabel- och metoddeklaration och med dina egna ord beskriva vad klassen/variabeln är till för eller vad metoden gör. Se till att skriva kommentaren som en flerradskommentar med en extra *, d v s med texten mellan /** och */. (Detta kommer senare användas för att skapa dokumentation över programmet med hjälp av javadoc.) ffl Du ska skissa på papper hur dina instanser/objekt med respektive instansvariabler och instansmetoder hänger ihop! Använd ett exekveringsexempel med max tre monster som grund för minnesskissen.

37 2D1310 K, Media, CL 2002/ ffl Du ska anpassa den specifikationen du jobbat med så den passar för det kompletta monsterspelet som du kommer skriva i laboration 5. Resultatet ska vara en komplett specifikation! Ett exekveringsexempel på ett komplett monsterspel finns sist i denna laboration. Markera gärna vilka utskrifter i exekveringsexemplet som hör till vilket steg i algoritmen! Tips! Kolla i Hundfarm.java hur ett tal slumpas fram. Utskrift av strängen "nn" ger en radmatning. Utskrift av "nt" ger hopp till nästa tabstopp. Ett heltal (int) kan göras om till en sträng med hjälp av Integer.toString(17). public eller private Varje variabel och metod kan göras public eller private. public-variabler/metoder kan utnyttjas från någon annan klass likväl som inom den egna klassen. privatevariabler/metoder kan bara utnyttjas från den egna klassen. Vilka variabler och metoder kan vara private i ditt monsterspel? Se till att allt som kan vara private blir det! Kontroll innan prov och nästa laboration Jag har tittat på hundfarmsprogrammet, diskuterat de ingående delarna med min labbkompis och fyllt i svarsrutorna. Jag förstår innebörden av alla nyckelord och kan visa användbara exempel. Jag vet skillnaden mellan en klassvariabel, instansvariabel och lokal variabel. Jag vet skillnaden mellan en klassmetod och instansmetod. Jag vet vad poängen med en konstruktormetod är. Jag har skrivit kommentarer (/**... */) med mina egna ord för alla klasser, instansvariabler och metoder jag använt. Jag har ritat en minnesskiss över hur minnet ser ut med alla objekt/instanser inklusiver deras instansvariabler och instansmetoder samt hur allt hänger ihop (med referenspilar)! Skissen grundar sig på ett exekveringsexempel med tre monster. Jag har noggrant tittat igenom den givna specifikationen och skrivit en komplett specifikation för monsterspelet i laboration 5.

38 38 2D1310 K, Media, CL 2002/2003 Jag kan beskriva hur programmet steg för steg ger upphov till utskrifterna i exekveringsexemplet. (Speciellt instansmetoden ätellersvält() hos monsterspelet.) Jag har läst igenom målet med labben och diskuterat eventuella frågor med min labbkompis och/eller handledare. Exekveringsexempel av ett komplett monsterspel Välkommen till Monsterspelet! I det här spelet finns kakmonster som uppenbarligen gillar att äta kakor. Du, kära användare, har det stora uppdraget att tillgodose dessa kakätare! Till din hjälp har du en oändlig mängd kakor som du delar ut i slumpmässigt stora portioner. Blah, blah, blah... Ange antalet kakmonster: 4 Antal kakor som varje monster har: 1:2 2:5 3:4 4:2 Kakor att ge bort: 3. Ange kakmonster att ge till: 4 aargh! mums... mums... mums... Antal kakor som varje monster har: 1:-- 2:2 3:2 4:5 Inga kakor att ge bort! mums... mums... Antal kakor som varje monster har: 1:-- 2:1 3:-- 4:1 Kakor att ge bort: 5. Ange kakmonster att ge till: 2 mums... aargh! Antal kakor som varje monster har: 1:-- 2:4 3:-- 4:-- Du lyckades hålla monstren vid liv 3 gånger. Tack för att du spelade!

39 2D1310 K, Media, CL 2002/ Laboration 5: Komplett mini-j-uppgift Nyckelord: prototypprogrammering, filinläsning, algoritm, implementering, avlusning, Javadokumentation, API, javadoc. Mål: Att kunna jobba vidare med ett program på ett professionellt sätt. Att du ska förstå innebörden av varje nyckelord och förberedelsefrågor samt kunna ge beskrivande exempel. Föreberedelse: Besvara förberedelsefrågorna. Förberedelsefrågor Alla frågor måste besvaras innan du kan få hjälp med och/eller bli klar med laborationen. Läs igenom hela laborationen. Många förklaringar finns i lydelsen! Vad innebär prototypprogrammering? Hur ofta ska du kompilera programmet? Hur läser du in en textrad från en fil? Tips! Titta i SimpleTextFileReader.java. Nedanstående kod: class Instansfel public static void main(string[] args) Banan b1 = new Banan(); Banan b2 = new Banan(); System.out.println("b1 " + b1.skalad + ", b2 " + b2.skalad + "."); b2.skala(); // Skala bara b2. System.out.println("b1 " + b1.skalad + ", b2 " + b2.skalad + "."); class Banan static String skalad;

40 40 2D1310 K, Media, CL 2002/2003 public Banan() skalad = "är ej skalad"; public static void skala() skalad = "är skalad"; ger inga kompileringsfel men ger följande felaktiga information vid exekvering: b1 är ej skalad, b2 är ej skalad. b1 är skalad, b2 är skalad. Varför blir det fel och hur fixar du programmet? Sammanfattning av labben I denna laboration ska du skriva ett komplett monsterspel med hjälp av den kompletta specifikationen du skrev i laboration 4. Du ska: ffl Prototypprogrammera, d v s successivt lägga in fler anrop och komplettera källkoden i de metoder du använder, kompilera och provköra ofta. ffl Komplettera din minnesskiss med de variabler och metoder som lagts till. ffl Låta ditt program läsa inledningstexten från en fil. ffl Använda javadoc för att generera dokumentation till programmet. ffl Rita användargränssnittet för ditt monsterspel i laboration 6 på papper. Utökning av monsterspelet Börja med att kopiera din javafil som innehåller den kompletta specifikationen du skrev i laboration 4. Se till att filnamnet och klassnamnet är Lab5.java respektive Lab5. Skriv sedan en textfil med någon fin inledningstext på flera rader. Denna inledningstext är allt prat i början av exekveringsexemplet. Anpassa välkommen() till att läsa in texten från filen (rad efter rad till dess den är slut) och samtidigt skriva ut varje rad på skärmen. Tips! Att läsa från en fil är lika enkelt som från tangentbordet om du istället för en BufferedReader använder en SimpleTextFileReader som hämtas från kurshemsidan/kurskatalogen. Hur skapar och håller man reda på en SimpleTextFileReader?

41 2D1310 K, Media, CL 2002/ Uppdatera nu spela() så att den helt följer algoritmen i din kompletta specifikation! Kompilera och provkör flitigt för att slippa konstiga fel. Tänk på att varje metod ska vara kort och överskådlig. Blir metoden många rader ska den styckas upp i flera korta metoder som anropas i turordning! Glöm inte att kommentera metoderna. När spelet fungerar som det ska kan du anpassa det antal kakor användaren får att ge bort samt det antal kakor varje monster äter. Poängen är att spelet ska vara lagom svårt! Vilken taktik ska användaren använda för att hålla monstren vid liv så länge som möjligt? javadoc - automatisk dokumentation Eftersom du skrivit fina kommentarer innanför /** och */ till alla klasser, variabler och metoder, kan programmet javadoc generera Javadokumentation över dessa. Skapa först en katalog docs i din lab5-katalog. Använd sedan terminalfönstret. Se till att du står i din lab5-katalog samt skriv följande på en enda rad: javadoc -private -d docs -link " Lab5.java Du har nu skapat Javadokumentationen för Lab5.java. Allt ligger i katalogen docs och består av en samling webbfiler (HTML-filer). Öppna därför en webbläsare och sedan filen index.html som ligger i katalogen docs. Jämför dokumentationen med din Lab5.java för att se hur de hänger ihop. Vad finns under rubrikerna Field Summary, Constructor Summary och Method Summary? Vad betyder informationen i den vänstra kolumnen under Field Summary?

42 42 2D1310 K, Media, CL 2002/2003 Vad betyder informationen i den vänstra kolumnen under Method Summary? Under vilken rubrik ligger klassmetoder? Klassvariabler? Var hittar du metoddeklarationshuvudet till en metod? Alla klasser som finns i Javas inbyggda klassbibliotek (String, BufferedReader, System, Double,...) beskrivs på liknande sätt i Java API (se länk från kurshemsidan). Om du undrar hur någon klass kan användas är Java API det första stället att ta hjälp från! Grafiskt användargränssnitt Rita ett grafiskt användargränssnitt till monsterspelet! Tänk på vilka saker användaren ska se och vad användaren ska kunna göra (med hjälp av musklick, inmatning av text i textfält m m). Var noga med att hålla dig till samma spelidé, annars exploderar programmet i storlek och svårighetsgrad! Se av samma anledning till att inte använda för många olika grafiska komponenter. Nedan är exempel på grafiska komponenter du kan använda. Om du vill veta hur de fungerar, titta i Java API respektive den automatgenererade hjälpen till laborations 6:s Monsterknapp som kan nås från kurshemsidan/kurskatalogen. Label TextField TextArea Button Monsterknapp Kontroll innan prov och nästa laboration Jag har diskuterat de ingående delarna med min labbkompis och fyllt i svarsrutorna. Jag förstår innebörden av alla nyckelord och kan visa användbara exempel.

43 2D1310 K, Media, CL 2002/ Jag har ett tufft spel som väntar på att grafikanpassas. Jag har en kompletterad minnesskiss. Jag anser att min version av monsterspelprogrammet är så välstrukturerad och välkommenterad att mina klasskamrater skulle kunna redogöra för programmet i detalj utan förberedelser. Jag litar på att den fina uppdelningen av programmet gör grafikanpassningen enklare. Jag har skapat Javadokumentation till mitt program, tittat på den och kan framförallt hitta igen variabler och metoder med deras deklarationshuvuden. Jag har (som alltid) läst igenom målet med labben och diskuterat eventuella frågor med min labbkompis och/eller handledare. Exempel på frivilliga utvidgningar ffl Ge monstren riktiga namn! Namnen kan till exempel läsas in från en textfil. Notera att du då måste leta rätt på monstret i hakvektorn innan du kan ge kakor till det. ffl Detärjutristattmonstrengåroch dör under spelets gång utan att man kan göra något. Ge spelaren en portion av kårens ruggiga älgleverpaella, och kommandot att kunna ge denna till ett valfritt monster vid ett valfritt tillfälle. Detta uppväcker även ett stendött monster från sin fridfulla vila. ffl Gör så att monstren kan snatta kakor från varandra. Indikera ett lyckat snatteri med att monstret säger något annat än mums.

44 44 2D1310 K, Media, CL 2002/2003 Laboration 6: Grafikanpassning av mini-j-uppgift Nyckelord: grafik, grafikanpassning, grafikkomponent, Frame, Panel, Label, TextField, TextArea, Button, Monsterknapp, LayoutManager, ActionListener. Mål: Att grafikanpassa ett välskrivet textbaserat program. Att du ska ha hört nyckelorden och bildat en något sånär korrekt uppfattning av dem. Föreberedelse: Besvara förberedelsefrågorna. Förberedelsefrågor Alla frågor måste besvaras innan du kan få hjälp med och/eller bli klar med laborationen. Läs igenom dokumentet Grafikanpassning från kurshemsidan. Markera de delar som verkar helt obegripliga. Vilka layout managers finns i java.awt? Vilka layout managers finns i javax.swing? Dela upp följande bild (en Frame) med hjälp av olika layout managers och awteller swingkomponenter (framför allt Panel eller JPanel).

2D1311 L1 och Bio2 2001/ Laboration 1: Introduktion till Nadas datormiljö och Java Nyckelord: katalog, fil, källkod, kompilera, avlusa, program,

2D1311 L1 och Bio2 2001/ Laboration 1: Introduktion till Nadas datormiljö och Java Nyckelord: katalog, fil, källkod, kompilera, avlusa, program, 2D1311 L1 och Bio2 2001/2002 1 Laboration 1: Introduktion till Nadas datormiljö och Java Nyckelord: katalog, fil, källkod, kompilera, avlusa, program, exekvera, textbaserat användargränssnitt, inmatning,

Läs mer

2D1310 Programmeringsteknik för CL1 Laborationer läsåret 2004/2005

2D1310 Programmeringsteknik för CL1 Laborationer läsåret 2004/2005 2D1310 Programmeringsteknik för CL1 Laborationer läsåret 2004/2005 Fyll i ditt namn och personnummer med bläck eller motsvarande. OBS: Om inte denna kvittenssida tas med vid redovisningen får du ingen

Läs mer

Introduktion till datormiljön och Python

Introduktion till datormiljön och Python Introduktion till datormiljön och Python Nyckelord: katalog, katalogträd, rot, fil, källkod, program, exekvering, tilldelning, inmatning, utmatning. Mål: Att du efter laborationen ska klara dig på egen

Läs mer

DD1310 Programmering för OPEN1 LAB1: Laborationer i Python läsåret 2011/2012

DD1310 Programmering för OPEN1 LAB1: Laborationer i Python läsåret 2011/2012 DD1310 Programmering för OPEN1 LAB1: Laborationer i Python läsåret 2011/2012 Räkna med att varje laboration kan ta upp till 10 timmar att göra. Du behöver alltså tillbringa en hel del tid i datorsalarna.

Läs mer

DD1310 Programmeringsteknik för Open1 och Med2 Laborationer läsåret 2014/2015

DD1310 Programmeringsteknik för Open1 och Med2 Laborationer läsåret 2014/2015 DD1310 Programmeringsteknik för Open1 och Med2 Laborationer läsåret 2014/2015 Fyll i ditt namn och personnummer med bläck eller motsvarande. OBS: Om inte denna kvittenssida tas med vid redovisningen får

Läs mer

2D1310 Programmeringsteknik för Media1 och CL1 Laborationer läsåret 2003/2004

2D1310 Programmeringsteknik för Media1 och CL1 Laborationer läsåret 2003/2004 2D1310 Programmeringsteknik för Media1 och CL1 Laborationer läsåret 2003/2004 Fyll i ditt namn och personnummer med bläck eller motsvarande. OBS: Om inte denna kvittenssida tas med vid redovisningen får

Läs mer

2D1311 V1 2002/ Laboration 1: Introduktion till datormiljön Nyckelord: katalog, katalogträd, rot, fil, källkod, kompilering, avlusning, program,

2D1311 V1 2002/ Laboration 1: Introduktion till datormiljön Nyckelord: katalog, katalogträd, rot, fil, källkod, kompilering, avlusning, program, 2D1311 V1 2002/2003 1 Laboration 1: Introduktion till datormiljön Nyckelord: katalog, katalogträd, rot, fil, källkod, kompilering, avlusning, program, exekvering, tolkning, prototypprogrammering, textbaserat

Läs mer

2D1310 Programmeringsteknik för Media1 Laborationer läsåret 2004/2005

2D1310 Programmeringsteknik för Media1 Laborationer läsåret 2004/2005 2D1310 Programmeringsteknik för Media1 Laborationer läsåret 2004/2005 Fyll i ditt namn och personnummer med bläck eller motsvarande. OBS: Om inte denna kvittenssida tas med vid redovisningen får du ingen

Läs mer

DD1315 Programmeringsteknik och Matlab för I1 Laborationer läsåret 2013/2014

DD1315 Programmeringsteknik och Matlab för I1 Laborationer läsåret 2013/2014 DD1315 Programmeringsteknik och Matlab för I1 Laborationer läsåret 2013/2014 Fyll i ditt namn och personnummer med bläck eller motsvarande. OBS: Om inte denna kvittenssida tas med vid redovisningen får

Läs mer

DD1316 Programmeringsteknik och C för E1 Laborationer läsåret 2015/2016

DD1316 Programmeringsteknik och C för E1 Laborationer läsåret 2015/2016 DD1316 Programmeringsteknik och C för E1 Laborationer läsåret 2015/2016 Fyll i ditt namn och personnummer med bläck eller motsvarande. OBS: Om inte denna kvittenssida tas med vid redovisningen får du ingen

Läs mer

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

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning. Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java

Läs mer

2D1311 Programmeringsteknik med PBL för S1 Laborationer läsåret 2003/2004

2D1311 Programmeringsteknik med PBL för S1 Laborationer läsåret 2003/2004 2D1311 Programmeringsteknik med PBL för S1 Laborationer läsåret 2003/2004 Fyll i ditt namn och personnummer med bläck eller motsvarande. OBS: Om inte denna kvittenssida tas med vid provet och redovisningen

Läs mer

Att skriva till och läsa från terminalfönstret

Att skriva till och läsa från terminalfönstret Att skriva till och läsa från terminalfönstret Oftast används grafiska komponenter i Java för att kommunicera med användaren (användargränssnitt), men det finns objekt i standardbiblioteken för de tillfällen

Läs mer

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

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel Programmeringsteknik för Bio1 och I1 Övning 2 Kort repetition Övningsgrupp 3 (Sal E33) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1310/

Läs mer

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

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 AID-nummer: Datum: 2014-12-18 Kurskod: 725G61 Provkod: LAB1 Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 Skrivningstid: 2014-12-18 klockan 8.00-10.00. Hjälpmedel: Inga. För varje fråga

Läs mer

UNIX. 2D1339 Programkonstruktion Hösten 2001 Datorintroduktion Laboration 1. Mål. Vad laborationen går ut på. Redovisning

UNIX. 2D1339 Programkonstruktion Hösten 2001 Datorintroduktion Laboration 1. Mål. Vad laborationen går ut på. Redovisning Numerisk analys och datalogi KTH 100 44 Stockholm Ann Bengtsson, Kerstin Frenckner 2D1339 Programkonstruktion Hösten 2001 Datorintroduktion Laboration 1 UNIX Mål Syftet med denna laboration är att ni ska

Läs mer

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

Dagens program. Programmeringsteknik och Matlab. Viktiga datum. Ett första exempel. Programmall, vad behöver vi i ett javaprogram? Programmeringsteknik och Matlab Övning 2 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312

Läs mer

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

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk

Läs mer

F4. programmeringsteknik och Matlab

F4. programmeringsteknik och Matlab Programmeringsspråk Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer 1 Ett program är en eller flera instruktioner

Läs mer

DD1311 Programmeringsteknik för CL1 Laborationer läsåret 2008-2009

DD1311 Programmeringsteknik för CL1 Laborationer läsåret 2008-2009 DD1311 Programmeringsteknik för CL1 Laborationer läsåret 2008-2009 Fyll i ditt namn och personnummer med bläck eller motsvarande. Kursledare är Linda Kann, linda@nada.kth.se. Namn... Personnr... Laborationer

Läs mer

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

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition. Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Vem är vem på kursen Objektorienterad programvaruutveckling GU (DIT011) Kursansvarig : Katarina Blom, tel 772 10 60 Rum: 6126 (E-huset)

Läs mer

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 i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6 Laboration 2 Objektorienterad programmering i Java I Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6 Syfte: Att kunna använda sig av olika villkors- och kontrollflödeskonstruktioner

Läs mer

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

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Skriven av Michael Andersson Introduktion Programmering I högnivåspråk fokuserar på själv problemet (algoritmen) istället

Läs mer

(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

(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 (Man brukar säga att) Java är... Denna föreläsning Allmänt om Java Javas datatyper, arrayer, referenssemantik Klasser Strängar enkelt baserat på C/C++ objekt-orienterat från början dynamiskt utbyggbart

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Kompilera och köra programmet under terminal 2: I Skapa Hej.java

Läs mer

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

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 Kompilera och köra programmet Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 under terminal 2: I Skapa Hej.java

Läs mer

Laboration 1 Introduktion till Visual Basic 6.0

Laboration 1 Introduktion till Visual Basic 6.0 Laboration 1 Introduktion till Visual Basic 6.0 Förberedelse Förbered dig genom att läsa föreläsningsanteckningar och de kapitel som gåtts igenom på föreläsningarna. Läs även igenom laborationen i förväg.

Läs mer

Kort-kort om utdelade användarkonton och datormiljön på NADA

Kort-kort om utdelade användarkonton och datormiljön på NADA Kort-kort om utdelade användarkonton och datormiljön på NADA UNIX-konto, användaridentitet Namn Du har fått ett konto med ett användarnamn bestående av prefixet ip99_ och ytterligare tre bokstäver. Dessa

Läs mer

SMD 134 Objektorienterad programmering

SMD 134 Objektorienterad programmering SMD 134 Objektorienterad programmering Dagens agenda: Typer i Java: primitiva datatyperna, referenstyper Variabler och variabeltilldelningar med primitiva typer Konstanter av de olika typerna. Heltalsräkning

Läs mer

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling metoder Föreläsning 2 Objektorienterad programmering DD1332 Array [modifierare] String metodnamn (String parameter) Returtyp (utdata typ) i detta fall String Indata typ i detta fall String 1 De får man

Läs mer

Lab5 för prgmedcl04 Grafik

Lab5 för prgmedcl04 Grafik Lab5 för prgmedcl04 Grafik Viktigt läs detta först:den här labblydelsen är ganska lång, detta betyder inte att labben tar lång tid.en hel del av lydelsen är anvisning om hur man går tillväga för att kunna

Läs mer

Kompilera och exekvera Javakod

Kompilera och exekvera Javakod Kompilera och exekvera Javakod Förberedelser För att kunna göra dessa övningar måste du ha installerat Java Development Kit, JDK, som bland annat innehåller Java kompilatorn, javac. Hur du installerar

Läs mer

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4:

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4: (22 januari 2016 F2.1 ) Föreläsning 2 Täcker material från lektion 1, 2, 3 och 4: Datatyper Aritmetik Tecken och strängar Klasser, Objekt Metoder Villkor, villkorssatser och iterationer main-metoden Kodstandard

Läs mer

Objektorienterad programmering i Java

Objektorienterad programmering i Java Objektorienterad programmering i Java Föreläsning 4 Täcker i stort sett kapitel 6 i kursboken Java Software Solutions 1 Läsanvisningar Den här föreläsningen är uppbyggd som en fortsättning av exemplet

Läs mer

DD1311 Programmeringsteknik för S1 Laborationer läsåret 2007-2008

DD1311 Programmeringsteknik för S1 Laborationer läsåret 2007-2008 DD1311 meringsteknik för S1 Laborationer läsåret 2007-2008 Fyll i ditt namn och personnummer med bläck eller motsvarande. Kursledare är Linda Kann, linda@nada.kth.se. Namn... Personnr... Laborationer Labb

Läs mer

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

Laboration 1. kompilera-ikonen exekvera-ikonen Programmerade system I1 Syfte Laboration 1. 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

Läs mer

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

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet ITK:P1 Föreläsning 1 Att programmera i språket Java DSV Peter Mozelius Programmering Olika typer av programmering som t ex: o Imperativ programmering (C, Pascal m fl) o Funktionell programmering (Lisp,

Läs mer

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

Programstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser // En första version av BankKonto-klassen class BankKonto { private String namn; private long nr; private double saldo; private double ränta; // Klassen TestaBankKonto // Klassens uppgift är att skapa

Läs mer

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt Föreläsning 2 Programmeringsteknik och C DD1316 Mikael Djurfeldt Föreläsning 2 Programmeringsteknik och C Python introduktion Utskrift Inläsning Variabler Datatyp Aritmetiska operatorer Omvandling

Läs mer

2D1339 Programkonstruktion för F1, ht 2003

2D1339 Programkonstruktion för F1, ht 2003 2D1339 Programkonstruktion för F1, ht 2003 Kontrollskrivning 1 Onsdag 19/11 2003 kl 9.15 10.00 Endast ett svar är rätt på varje fråga! Om mer än ett svar givits blir det noll poäng på frågan. Alla skriftliga

Läs mer

Mer källkod. Styrstrukturer Val Slingor Operatorer Källkodsexempel med minne. Erik Forslin. Rum 1445, plan 4 på Nada

Mer källkod. Styrstrukturer Val Slingor Operatorer Källkodsexempel med minne. Erik Forslin. Rum 1445, plan 4 på Nada Mer källkod Styrstrukturer Val Slingor Operatorer Källkodsexempel med minne Erik Forslin efo@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 1 Styrstrukturer i Java En styrstruktur är något som påverkar

Läs mer

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

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten? Programmeringsteknik och Matlab Övning 4 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312

Läs mer

Tentamen , Introduktion till Java, dtaa98, dtea53

Tentamen , Introduktion till Java, dtaa98, dtea53 Mittuniversitetet 2007-09-01 Institutionen för informationsteknologi och medier Sid:1(3) dtaa98, dtea53 Martin Kjellqvist; Linda Karlsson, Ulf Reiman Lösningsansatser Tentamen 2007-09-01, Introduktion

Läs mer

Föreläsning 3-4 Innehåll

Föreläsning 3-4 Innehåll Föreläsning 3-4 Innehåll Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer Datavetenskap (LTH) Föreläsning 3-4 HT 2017 1 / 36 Diskutera Vad gör programmet programmet? Föreslå

Läs mer

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic Inledning Starta Microsoft Visual Studio 2005. Välj create Project Välj VB + Vindows Application och välj ett nytt

Läs mer

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

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 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 riktiga provet tar 45 minuter (en lektionstimme) och det

Läs mer

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34 Tentamen Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Lördagen den 30 november 2002 kl 9.00 14.00, salar E33, E34 Inga hjälpmedel 30 poäng ger säkert godkänt, 40 poäng ger betyg 4 50 poäng ger

Läs mer

NetBeans 5.5. Avsikt. Projektfönster

NetBeans 5.5. Avsikt. Projektfönster NetBeans 5.5 Avsikt Att bekanta dig med NetBeans programmeringsmiljö, dvs att med hjälp av NetBeans 1. skapa ett nytt projekt 2. skriva in källkod (sparas som.java-fil) 3. kompilera (översätta) koden till

Läs mer

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C. Idag Javas datatyper, arrayer, referenssemantik Klasser Arv, polymorfi, typregler, typkonvertering Strängar Tänker inte säga nåt om det som är likadant som i C. Objectorienterad programmering Sida 1 Ett

Läs mer

Kort-kort om utdelade användarkonton och datormiljön på NADA

Kort-kort om utdelade användarkonton och datormiljön på NADA Kort-kort om utdelade användarkonton och datormiljön på NADA UNIX-konto, användaridentitet Namn Du har fått ett konto med ett användarnamn bestående av prefixet ip98- och ytterligare tre bokstäver. Dessa

Läs mer

Ö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

Ö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 Datateknik A, Syfte: Att ladda hem och installera Java Att skriva ditt första Javaprogram Att kompilera och exekvera ditt program Att läsa: Lektion 1 Antal uppgifter: 3 Inlämning: Sker via inlämningsuppgifter

Läs mer

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod Föreläsning 3-4 Innehåll Diskutera Vad gör programmet programmet? Föreslå vilka satser vi kan bryta ut till en egen metod. Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer

Läs mer

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

Programmering för språkteknologer I, VT2012. Rum Programmering för språkteknologer I, VT2012 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.lingfil.uu.se/~evelina/uv/uv12/pst1/ Idag - Kursplan - Börja programmera - Lokala variabler - aritmetiska

Läs mer

Programutveckling med Java Development Kit. (JDK 1.1.x) och Programmers File Editor (PFE 7.02)

Programutveckling med Java Development Kit. (JDK 1.1.x) och Programmers File Editor (PFE 7.02) UMEÅ UNIVERSITET Institutionen för datavetenskap Thomas Johansson Oktober 1998 Programutveckling med Java Development Kit (JDK 1.1.x) och Programmers File Editor (PFE 7.02) Umeå universitet 901 87 Umeå.

Läs mer

NetBeans 7. Avsikt. Projektfönster

NetBeans 7. Avsikt. Projektfönster NetBeans 7 Avsikt Att bekanta dig med NetBeans programmeringsmiljö, dvs att med hjälp av NetBeans 1. skapa ett nytt projekt 2. skriva in källkod (sparas som.java-fil) 3. kompilera (översätta) koden till

Läs mer

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner 732G11 Linköpings universitet 2011-01-21 1 2 3 4 5 6 Skapa program Kompilera: Källkod Kompilator bytekod Köra: Bytekod Virtuell maskin Ett riktigt program Hej.java class Hej { public static void main (

Läs mer

DN1212, Numeriska metoder & grundläggande programmering. Laboration 1 del 1-3 (frivilliga delar) Del 1-3 (dvs upg 1.1-1.17) behöver inte redovisas

DN1212, Numeriska metoder & grundläggande programmering. Laboration 1 del 1-3 (frivilliga delar) Del 1-3 (dvs upg 1.1-1.17) behöver inte redovisas DN1212, Numeriska metoder & grundläggande programmering för P1. Laboration 1 del 1-3 (frivilliga delar) Del 1-3 (dvs upg 1.1-1.17) behöver inte redovisas Introduktion till UNIX och MATLAB Del 1: UNIX och

Läs mer

Objektorienterad programmering i Java I

Objektorienterad programmering i Java I Laboration 0 Objektorienterad programmering i Java I Uppgifter: 2 Beräknad tid: ca 2 3 timmar Att läsa: sidan 45 52 Syfte: Att ladda hem och installera utvecklingsmiljön Att skriva ditt första Javaprogram

Läs mer

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

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering. EDAA20 Programmering och databaser Mål komprimerat se kursplanen för detaljer Läsperiod 1 7.5 hp anna.aelsson@cs.lth.se http://cs.lth.se/edaa20 Mer information finns på kursens webbsida samt på det utdelade

Läs mer

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer Java: Utvecklingsverktyg, datatyper, kontrollstrukturer Sven-Olof Nyström Uppsala Universitet 13 juni 2005 1 Utvecklingsverktyg för Java Vi rekommenderar Suns utvecklingsverktyg (SDK, tidigare JDK), se

Läs mer

Datorintro för elektro på Solaris

Datorintro för elektro på Solaris Datorintro för elektro på Solaris Innehåll Fönsterhanterare Inloggning Byte av lösenord Filhantering och andra unix-kommandon Att skriva ut dokument Texteditorn emacs Dela katalog med din labbkompis Fjärrinloggning

Läs mer

Datastrukturer. Erik Forslin. Rum 1445, plan 4 på Nada

Datastrukturer. Erik Forslin. Rum 1445, plan 4 på Nada Datastrukturer Vad är en datastruktur? Vad är en datatyp? Primitiva datatyper i Java Icke-primitiva datatyper i Java Minnesexempel med datastrukturer Vektorer i Java Erik Forslin efo@nada.kth.se Rum 1445,

Läs mer

Kungl. Tekn. Högskolan Förel 1, bild 1 Föreläsning 1: Introduktion ffl Kursinnehåll ffl Javarepetition ffl Referenser ffl Nyckelordet static ffl Klass

Kungl. Tekn. Högskolan Förel 1, bild 1 Föreläsning 1: Introduktion ffl Kursinnehåll ffl Javarepetition ffl Referenser ffl Nyckelordet static ffl Klass Kungl. Tekn. Högskolan Förel 1, bild 1 Föreläsning 1: Introduktion ffl Kursinnehåll ffl Javarepetition ffl Referenser ffl Nyckelordet static ffl Klassen Mio ffl Särfall ffl Interface Kungl. Tekn. Högskolan

Läs mer

Administrativt. Programmeringsteknik för I1. Dagens program. Objektorienterad programmering

Administrativt. Programmeringsteknik för I1. Dagens program. Objektorienterad programmering Programmeringsteknik för I1 Övning 2 Administrativt Övningsgrupp 2 (Sal E32/D32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kontrollera att ni har fått Lab2 inrapporterad

Läs mer

OBS! Snabbinsatt Matlab-intro vissa fönsterhanteringsdetaljer kan vara fel men gör gärna Matlab-uppgifterna. DN1240, Numeriska metoder för OPEN1.

OBS! Snabbinsatt Matlab-intro vissa fönsterhanteringsdetaljer kan vara fel men gör gärna Matlab-uppgifterna. DN1240, Numeriska metoder för OPEN1. OBS! Snabbinsatt Matlab-intro vissa fönsterhanteringsdetaljer kan vara fel men gör gärna Matlab-uppgifterna. DN1240, Numeriska metoder för OPEN1. Laboration 0 del 1-3 (frivilliga delar) Del 1-3 (dvs upg

Läs mer

SF1672, Linjär Algebra med Matlab för F1 Lab0

SF1672, Linjär Algebra med Matlab för F1 Lab0 SF1672, Linjär Algebra med Matlab för F1 Lab0 Denna labb är tänkt att öva datorhantering och öva inledande Matlab. Eftersom förkunskaperna varierar finns en hel del uppgifter så att alla kan få något att

Läs mer

Kort om klasser och objekt En introduktion till GUI-programmering i Java

Kort om klasser och objekt En introduktion till GUI-programmering i Java Kort om klasser och objekt En introduktion till GUI-programmering i Java Klasser En klass är en mall för hur man ska beskriva på något. Antag att vi har en klass, Bil. Den klassen innehåller en lista på

Läs mer

TDDC77 Objektorienterad Programmering

TDDC77 Objektorienterad Programmering TDDC77 Objektorienterad Programmering Föreläsning 5 Sahand Sadjadee IDA, Linköpings Universitet Hösttermin 2018 Outline Arrayer Metoder Räckvidd och Livslängd Arrayer Vända om inlästa värdena Vända om

Läs mer

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

Laboration 1. kompilera-ikonen exekvera-ikonen 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

Läs mer

Elias Castegren. (Version 1, 2012)

Elias Castegren. (Version 1, 2012) Liten Emacs-referens Elias Castegren (Version 1, 2012) Det här är en kort genomgång av några väldigt grundläggande kommandon i Emacs. Dokumentet är inte utförligt eller ens särskilt pedagogiskt, utan jag

Läs mer

2 b) Bodega bodegan = new Bodega(); double moms = 0.235; String namn = "Vargtass"; System.out.println(namn + " " + moms + bodegan.ändra(moms, namn); S

2 b) Bodega bodegan = new Bodega(); double moms = 0.235; String namn = Vargtass; System.out.println(namn +   + moms + bodegan.ändra(moms, namn); S Namn: Personnr: 1 2D1310 Programmeringsteknik i Java för M1, K2, Media1 och I1 (1p) 16 december 2000 Hjälpmedel: En Javabok. System.out är ett objekt kopplat till skärmen, dvs samma sak som i labbarna

Läs mer

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016 Command line argumenter Objektorienterad Programmering (TDDC77) Föreläsning VI: eclipse, felsökning, felhantering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 /* Cla. java * Programmet illustrerar

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning VI: eclipse, felsökning, felhantering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Outline Felhantering Eclipse Felsökning Command line argumenter

Läs mer

Översikt 732G11 PROGRAMMERING 1. Personal. Kursens mål. Litteratur. Kursens innehåll 2010-04-22

Översikt 732G11 PROGRAMMERING 1. Personal. Kursens mål. Litteratur. Kursens innehåll 2010-04-22 Översikt 732G11 PROGRAMMERING 1 Institutionen för datavetenskap Om kursen Vad är programmering (bra för)? Programmeringsspråket Java Utvecklingsmiljön Eclipse Genomgång av några programexempel Programmering

Läs mer

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

Inledande programmering med C# (1DV402) Ditt första C#-program med Visual Studio Ditt första C#-program med Visual Studio Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får använda detta verk så

Läs mer

Objektorienterad programmering i Java

Objektorienterad programmering i Java bild 1 Objektorienterad programmering i Java Föreläsning 1 Kapitel 1-3 i kursboken Java Software Solutions bild 2 Läsanvisningar Kapitel 1 är en repetition av det ni förväntas kunna sedan tidigare. Det

Läs mer

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.

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. EDAA20 Programmering och databaser Mål komprimerat se kursplanen för detaljer Läsperiod 1 7.5 hp anna.axelsson@cs.lth.se http://cs.lth.se/edaa20 Mer information finns på kursens webbsida samt på det utdelade

Läs mer

SF1546, Numeriska Metoder för O1 Lab0 - frivillig. (dvs uppgifterna behöver inte redovisas!)

SF1546, Numeriska Metoder för O1 Lab0 - frivillig. (dvs uppgifterna behöver inte redovisas!) SF1546, Numeriska Metoder för O1 Lab0 - frivillig. (dvs uppgifterna behöver inte redovisas!) Denna labb är tänkt att öva datorhantering och öva inledande Matlab. Eftersom förkunskaperna varierar finns

Läs mer

DN1240, Numeriska metoder. Laboration 0 (frivilliga delar) (dvs uppgifterna behöver inte redovisas) Introduktion till UNIX och MATLAB

DN1240, Numeriska metoder. Laboration 0 (frivilliga delar) (dvs uppgifterna behöver inte redovisas) Introduktion till UNIX och MATLAB DN1240, Numeriska metoder för O1. Laboration 0 (frivilliga delar) (dvs uppgifterna behöver inte redovisas) Introduktion till UNIX och MATLAB Del 1: UNIX och kontoadministration Uppgift 1.1 Ni bör jobba

Läs mer

Programmeringsteknik med C och Matlab

Programmeringsteknik med C och Matlab Programmeringsteknik med C och Matlab Kapitel 2: C-programmeringens grunder Henrik Björklund Umeå universitet Björklund (UmU) Programmeringsteknik 1 / 32 Mer organisatoriskt Imorgon: Datorintro i lab Logga

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning I: kursinfo, att programmera datorer, första programmet Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2015 Outline Hemsida Organization Examination

Läs mer

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P UME UNIVERSITET Datavetenskap 981212 TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P Datum : 981212 Tid : 9-15 HjŠlpmedel : Inga Antal uppgifter : 9 TotalpoŠng : 60 (halva pošngtalet kršvs normalt fšr

Läs mer

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin TENTAMEN I IKB007 INTERNETPROGRAMMERING MED JAVA för SY2 1999-03-17, kl 14.00-18.00 Hjälpmedel: En lärobok i Java programmering Återlämningstillfälle:

Läs mer

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

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer Programmering hh.se/db2004 Föreläsning 3: Java. Grundtyper, variabler och arrayer Hej Då, Karel! Verónica Gaspes www2.hh.se/staff/vero www2.hh.se/staff/vero/programmering Center for Research on Embedded

Läs mer

Numeriska metoder och grundläggande programmering för T1

Numeriska metoder och grundläggande programmering för T1 Laborationer i Numeriska metoder och grundläggande programmering för T1 hösten 2009-våren 2010 Namn................................... Personnr............................. Lab 1 Introduktion tog timmar

Läs mer

Föreläsning 1 & 2 INTRODUKTION

Föreläsning 1 & 2 INTRODUKTION Föreläsning 1 & 2 INTRODUKTION Denna föreläsning Vad händer under kursen? praktisk information Kursens mål vad är programmering? Skriva små program i programspråket Java Skriva program som använder färdiga

Läs mer

Lab1 inginfo07. Detta dokument innehåller övningar för introduktion till Media-programmets datorsystem (Mac OS X).

Lab1 inginfo07. Detta dokument innehåller övningar för introduktion till Media-programmets datorsystem (Mac OS X). Lab1 inginfo07 Detta dokument innehåller övningar för introduktion till Media-programmets datorsystem (Mac OS X). Inloggning Du borde ha fått ett personligt användarnamn och ett lösenord från Delfi, om

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP Objekt-orienterad programmering OOP F1:1 Delkursansvarig Epost Kursens webbsidor sm@fc.dsv.su.se http://people.dsv.su.se/~sm/oop/ Föreläsning 1 Introduktion till kursen OOP Vad är Java? Ett första

Läs mer

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

Eclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas. Eclipse Avsikt Att bekanta dig med Eclipse programmeringsmiljö, dvs att med hjälp av Eclipse 1. skapa ett nytt projekt 2. skriva in källkod (sparas som.java-fil) 3. kompilera (översätta) koden till byte-kod

Läs mer

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305 Klass Object, instans av klass public/private Klassvariabler och klassmetoder 1 Array och ArrayList Arrayer och ArrayList är till för att innehålla

Läs mer

Objektorienterad programmering i Java

Objektorienterad programmering i Java bild 1 Objektorienterad programmering i Java Föreläsning 2 Till och med kapitel 4 (och 5) i kursboken Java Software Solutions bild 2 Läsanvisningar Den här föreläsningen är i huvudsak uppbyggd kring ett

Läs mer

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

Föreläsnings 9 - Exceptions, I/O Föreläsnings 9 - Exceptions, I/O Josef Svenningsson Tisdag 6/11 Undantag - Exceptions Kommer ni ihåg det här programmet? Det var ett av de första ni såg i första föreläsningen. import javax.swing.*; public

Läs mer

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser Föreläsning 5-6 Innehåll Exempel på program med objekt Skapa och använda objekt Skriva egna klasser public class DrawSquare { public static void main(string[] args) { SimpleWindow w = new SimpleWindow(600,

Läs mer

TDDC77 Objektorienterad Programmering

TDDC77 Objektorienterad Programmering TDDC77 Objektorienterad Programmering Föreläsning 2 Sahand Sadjadee IDA, Linköpings Universitet Hösttermin, 2018 Outline Emacs Introduktion till Objektorienterad Programmering Introduktion till Java Variabler

Läs mer

Klassdeklaration. Metoddeklaration. Parameteröverföring

Klassdeklaration. Metoddeklaration. Parameteröverföring Syntax: Class Declaration Modifier Class Body Basic Class Member Klassdeklaration class Class Member Field Declaration Constructor Declaration Method Declaration Identifier Class Associations Motsvarar

Läs mer

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl Högskolan Dalarna sid 1 av 6 DI-institutionen Hans-Edy Mårtensson Sten Sundin FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY2 2001-03-16, kl 14.00-18.00 1. Grunderna i

Läs mer

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... } En klassdefinition class A extends B {... Arv definierar en klass A som ärver av B. Klassen A ärver alla fält och metoder som är definierade för B. A är en subklass till B. B är en superklass till A. class

Läs mer

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

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 Tentamen Programmeringsteknik I 2018-03-16 Skrivtid: 8:00 13:00 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer

Läs mer

Föreläsning 5-6 Innehåll

Föreläsning 5-6 Innehåll Föreläsning 5-6 Innehåll Skapa och använda objekt Skriva egna klasser Datavetenskap (LTH) Föreläsning 5-6 HT 2017 1 / 32 Exempel på program med objekt public class DrawSquare { public static void main(string[]

Läs mer

Fält av referenser. Konstruktorerna används för att skapa Bilar och Trafikljus.

Fält av referenser. Konstruktorerna används för att skapa Bilar och Trafikljus. Fält av referenser Tanken med objekt är man kan bygga ihop olika sorts objekt till nya saker. Sålunda kan man exempelvis använda Bil och Trafikljus att konstruera ett Väg-objekt. Om Bil och Trafikljus

Läs mer