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

Relevanta dokument
Programmeringsteknik och Matlab. Dagens program. Viktiga datum. Repetitionsexempel. Repetition av if/else, for, while och Scanner

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

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

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

Dagens program. Programmeringsteknik och Matlab. Administrativt. Viktiga datum. Kort introduktion till matlab. Övningsgrupp 2 (Sal Q22/E32)

F4. programmeringsteknik och Matlab

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

Föreläsning 1 & 2 INTRODUKTION

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

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

Föreläsning 1 & 2 INTRODUKTION

Objektorienterad Programmering (TDDC77)

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

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

Kompilera och exekvera Javakod

TDDC77 Objektorienterad Programmering

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

1 Iteration. 1.1 for-satsen

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

Objektorienterad programmering i Java

Tentamen OOP

JAVA Mer om klasser och objektorientering

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. Om att lära sig programmera. Föreläsning 1-2 Innehåll.

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

Programmeringsteknik för Bio1 och I1. Dagens program. Så här tillämpar vi det på J-uppgifterna. Allmänna programmeringstips. Övningsgrupp 3 (Sal E33)

Grundläggande programmering DVG A08 & ISG A04. Allmän information. Å vem är jag då. Karlstads Universitet, Johan Öfverberg 1

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

Villkor och tester. Utförande satser bygger upp metoderna, man brukar finindela detta i: sekvenser. Ett program består i princip av: selektioner (val)

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

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

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

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

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

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

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

String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

Objektorienterad programmering i Java

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

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

Föreläsning 3-4 Innehåll

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Komponentvisa operationer,.-notation Multiplikation (*), division (/) och upphöj till (ˆ) av vektorer följer vanliga vektoralgebraiska

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy cards. Slingor

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

Klassdeklaration. Metoddeklaration. Parameteröverföring

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

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

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

725G61 - Laboration 2 Loopar och arrayer. Johan Falkenjack

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Föreläsning 14. Filhantering

2D1339 Programkonstruktion för F1, ht 2004

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

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

TENTAMEN OOP

Det är principer och idéer som är viktiga. Skriv så att du övertygar examinatorn om att du har förstått dessa även om detaljer kan vara felaktiga.

JAVAUTVECKLING LEKTION 7

Objektorienterad Programmering (TDDC77)

OOP Objekt-orienterad programmering

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

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

Laboration 1 - Grunderna för OOP i Java

Lite logik. Kap 6: Sid 2

Editering, Kompilering och Exekvering av Javaprogram

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Programmering för språkteknologer II, HT2011. Rum

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

Objektorienterad Programmering (TDDC77)

Chapter 4: Writing Classes/ Att skriva egna klasser.

Föreläsning 6: Metoder och fält (arrays)

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Exempelduggan. Luffarschack. Koda spel

Skriftlig tentamen för kursen DV017A. Inledande programmering i Java A

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

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

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

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

Föreläsning 8: Exempel och problemlösning

JAVAUTVECKLING LEKTION 4

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

Objektorienterad Programmering (TDDC77)

Skillnader mellan Python och Java

6.5 Spelserien Gissa tal

Programmeringsteknik med C och Matlab

(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

Grundläggande programmering

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen.

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

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

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

Föreläsning ALGORITMER: SÖKNING, REGISTRERING, SORTERING

Föreläsning 4. Val, boolska värden, läsbarhet, osv

Lite om reella tal. Programmering. I java. Om operatorers associativitet och prioritet

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

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

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

Objektorienterad programmering i Java I

Chapter 3: Using Classes and Objects

Transkript:

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 Övningsanteckningar: http://www.nada.kth.se/ hjorth/teaching/prgi05 Programmall, vad behöver vi i ett javaprogram? Hur skriver vi ut text på skärmen? Hur läser vi in från tangentbordet? Hur skriver vi if och else satser? Hur fungerar for-loopar i java? När använder vi while-loopar? Vad betyder felmeddelandet? Viktiga datum Ett första exempel 2005-09-23 Sista dagen för redovisning av Lab3 med bonus. 2005-09-27 Inlämning av frivilliga Hemtal 1 i Java. Programmet nedan sparas i filen Hej.java, notera att klassnamnet och filnamnet måste matcha. public class Hej { public static void main(string[] inparametrar) { System.out.println("Titta det fungerar!"); För att vi ska kunna köra programmet måste vi först översätta det till ett språk datorn kan förstå. >javac Hej.java Efter att ha kompilerat koden, så kan vi nu köra vårt nyskrivna program på följande sätt: >java Hej Titta det fungerar!

Dissektion av Hej.java Hur läser vi in från tangentbordet? I java kan vi bygga våra program med hjälp av olika byggstenar. Detta underlättar när vi ska göra stora program. Dessa byggstenar kallas i java för klasser. Första raden i Hej.java public class Hej skapar en klass som här börjar vid första måsvingen { och slutar vid sista måsvingen. När vi kör vårt program behöver java veta var den ska börja någonstans. Den vill ha en main-metod. public static void main(string[] inparametrar) All kod som står mellan måsvingarna { och körs rad för rad. I vårt exempel är det bara en rad: System.out.println("Titta det fungerar!"); Många program som vi använder bygger på att man frågar användaren om något: public class Ålder { public static void main(string[] args) { System.out.println("Hej vad heter du?"); String namn = scan.nextline(); System.out.println(namn + " hur gammal är du?"); int ålder = scan.nextint(); System.out.println("Nästa gång fyller du " + (ålder + 1) + " år"); Den raden skriver ut en text på skärmen. Så här gjorde vi... Vi testkör Ålder.java För att få tillgång till den byggsten (klass) som har hand om inläsning behöver vi först importera den: Detta ger oss tillgång till Scanner-komponenten som bland annat används för att läsa in från tangentbordet. Vi skapar sedan en Scanner genom att skriva och använder den sedan för att läsa in från tangentbordet: String namn = scan.nextline(); Vi kompilera och köra Ålder.java, då händer följande: >javac Ålder.java >java Ålder Hej vad heter du? Johannes Johannes hur gammal är du? 26 Nästa gång fyller du 27 år > Notera att vi gjorde olika saker för att läsa in namn och ålder! Vad är skillnaden? Titta också på hur vi gör för att sätta ihop utskriften av dels strängar och tal. Notera att vi måste ha någonstans att spara den inlästa strängen, därför skapar vi en variabel namn som kan innehålla en sträng (String).

Användaren bestämmer! Gammelmormor svarar... Nästa steg är att göra olika saker beroende på vad användaren svarar, för att kunna göra det behöver vi if-satser. public class IfÅlder { public static void main(string[] args) { Om min gammelmormor hade kompilerat och kört det här exemplet hade det sett ut så här: >javac IfÅlder.java >java IfÅlder Vilket år är du född: 1899 Gammeltant... Om istället killen med glasögon längst bak i övningssalen kör programmet: System.out.print("Vilket år är du född: "); int svar = scan.nextint(); if(svar > 1899) { System.out.println("Ungtupp!"); else { System.out.println("Gammeltant..."); >java IfÅlder Vilket år är du född: 1985 Ungtupp! Programmet ger alltså olika utskrift beroende på hur användaren svarar. Precis som vi ville. Vad hade hänt ifall vi tog bort else-satsen? I det här exemplet skrivs olika svar ut beroende på vilken ålder användaren anger. Olika jämförelseoperatorer Samma sak flera gånger, for-loopar I en if-sats kan vi jämföra till exempel två tal med varandra. Nedan är ålder, pris, längd, test variabler av typen int med heltalsvärden. ålder < 65 pris >= 2.1e6 längd == 2.0 test!= 0 Det går också att kombinera dem: ålder < 65 && pris >= 2.1e6 längd == 2.0 test!= 0 Här betyder && logiskt-och medan betyder logiskt-eller. En if-sats kan till exempel se ut så här: if(tid < 45 && risk == 0) { System.out.println("Schyst!"); Antag att vi vill skriva ut texten Hej flera gånger. Ett sätt är att skriva System.out.println fem gånger, men det finns ett bättre sätt: public class HejFleraGånger { public static void main(string[] inparametrar) { for(int i = 0; i < 5; i++) { System.out.println("Hej " + i); Kompilerar vi och kör koden händer följande: >javac HejFleraGånger.java >java HejFleraGånger Hej 0 Hej 1 Hej 2 Hej 3 Hej 4

Vad betyder de olika delarna? while-loopar En for-loop skrivs på följande sätt: for(int i = 0; i < 5; i++) Texten int i = 0 skapar en loop-variabel som håller räkning på hur många gånger vi kört loopen. Villkoret i < 5 testas i varje varv, så länge det är sant fortsätter loopen. Slutligen är i++ ett kortare sätt att skriva i = i + 1, det vill säga den beskriver hur vi ska öka (eller minska!) loop-variabeln till nästa varv. Det som ska utföras i loopen skrivs på raden under. Har vi bara en rad i loopen kan den skrivas direkt efter for-raden. Är det flera rader måste vi rama in dem med måsvingar. Ifall vi vet hur många gånger en loop ska köras så använder vi en for-loop, men ifall vi inte vet det så passar while-loopar bättre. public class EnWhileLoop { while(math.random() < 0.9) { Det här programmet (som ligger i filen EnWhileLoop.java) skriver ut en stjärna för varje varv den kör i while-loopen. >javac EnWhileLoop.java ******* ************ ****** Mera while-loopar Vad gick snett? Antag att vi skulle vilja översätta en for-loop till en while-loop istället. Då inför vi en loop-variabel i: public class EnTillLoop { int i = 0; Först skapade vi en loop variabel i och satte den till noll. Sedan startade vi en while-loop som körs så länge villkoret i < 5 är sant. Första varvet är i noll och villkoret är uppfyllt, andra varvet är i fortfarande noll... Problem! Vi har glömt att öka värdet på loop-räknaren i! Villkoret i while-satsen kommer aldrig bli falskt! Vi har skapat en oändlig loop. Kompilerar vi och kör filen händer följande: >javac EnTillLoop.java >java EnTillLoop *****************^C Hur ska vi göra för att vårt program ska fungera? Programmet får tokspel... vad gjorde vi för fel?

Felmeddelanden Mer felmeddelanden Antag att vi får följande felmeddelande när vi kompilerar filen EnAnnanLoop.java: EnAnnanLoop.java:5: cannot find symbol symbol : variable i location: class EnAnnanLoop ^ 1 error Vi har då gjort fel i filen EnAnnanLoop.java, och problemet är cannot find symbol. Vilken symbol är det strul med, jo; variable i. Med andra ord, den kan inte hitta variabeln i. Har vi skapat en variabel i? Om inte, gör det! Felet uppdagades när kompilatorn försökte förstå while-slingan där variablen i användes för första gången. Vi lägger till raden int i; ovanför while-loopen och får nu följande felmeddelande när vi kompilerar: EnTillLoop.java:5: variable i might not have been initialized ^ 1 error Vi har skapat variabeln i men glömt ge den ett startvärde (initiera). Det ordnas lätt: public class EnAnnanLoop { int i = 0; // Vi måste ge i ett startvärde! i++; Inför labben Vi har nu allt som behövs för att klara av lab 3 och hemtal 1 i Java. Vi kan läsa in från tangentbordet och skriva ut på skärmen Vi kan läsa och förstå javas felmeddelanden Vi vet skillnaden på print och println Vi vet hur if/else-satser fungerar Vi vet hur for-loopar skrivs Vi kan while-slingor samt förstår hur man grupperar rader med måsvingar. Observera att i stort sett alla rader i Java slutar med semikolon! Lycka till!