Föreläsning 2 sept 05 (Onsdag v 36). DD Chapter 2.

Relevanta dokument
Föreläsning 3 sept 10 (Måndag v 37). DD Chapter 3.

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Klassdeklaration. Metoddeklaration. Parameteröverföring

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

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

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

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

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

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

(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

SMD 134 Objektorienterad programmering

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

TDIU01 - Programmering i C++, grundkurs

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

Parameteröverföring. Exempel. Exempel. Metodkropp

Programmering A. Johan Eliasson

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

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

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

1 Datorn som miniräknare. 1.1 Räkneoperationer. 1.2 Variabler

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

Objektorienterad programmering Föreläsning 4

Typkonvertering. Java versus C

Objektorienterad Programmering (TDDC77)

Övning2. Variabler. Data typer

4.4 Swing ett interaktivt grafiskt gränssnitt

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.

JAVAUTVECKLING LEKTION 4

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 2. Variabler, tilldelning och kodblock{} if-satsen Logiska operatorer Andra operatorer Att programmera

OOP Objekt-orienterad programmering

Föreläsning 5-6 Innehåll

TDDC77 Objektorienterad Programmering

Anteckningar 1: Grundläggande saker

F4. programmeringsteknik och Matlab

Programmeringsteknik med C och Matlab

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

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

TDDC77 Objektorienterad Programmering

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

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

Föreläsning 3: Booleans, if, switch

Java, klasser, objekt (Skansholm: Kapitel 2)

Föreläsning 5&6 LOGISKA VARIABLER; IMPLEMENTERA KLASSER; MER ALGORITMER

Undervisning. Examination

Undervisning. Examination

Programmeringsteknik I

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

Objektorienterad programmering i Java

OOP Objekt-orienterad programmering

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Datalogi I, grundkurs med Java 10p, 2D4112, Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera förs

Objektorienterad programmering

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

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

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

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

Objektorienterad programmering i Java

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud.

OOP Objekt-orienterad programmering

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Inledande programmering med C# (1DV402) 27+15=42 1 (22)

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

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

TDDC77 Objektorienterad Programmering

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

Föreläsning 1 & 2 INTRODUKTION

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

Applets med komponenter

OOP Objekt-orienterad programmering

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

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

Läsanvisning: Dessa OH bilder samt kap 1-3

Föreläsning 3-4 Innehåll

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

Föreläsning 1 & 2 INTRODUKTION

Föreläsningsmaterial (Syntax och variabler)

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

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Strukturdiagram. Styra. Algoritmer. Val

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

OOP Objekt-orienterad programmering

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

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

Dagens föreläsning. Sett i datorsalarna. Mer om arrayer. Matriser. Formatering av utskrifter. Inläsning med hjälp av Scanner-klassen

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

[] Arrayer = Indexerad variabel

Objekt och klasser - Introduktion

JAVAUTVECKLING LEKTION 3

Lektion 1, del b Utskrifter av variabelvärden Inläsning av värden till variabler

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

Föreläsning 7. Nyckelord I Java. Uttryck. Uttryck, Operatorer Och Kontrollflöden

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

Introduktion till programutveckling

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

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Varför ha kännedom om datateknik och programmering?

Transkript:

Föreläsning 2 sept 05 (Onsdag v 36). DD Chapter 2. Hur vi jobbar med ett program. 1. Vad vi skriver (med hjälp av redigeringsprogrammet Emacs) på datorn: // Fig. 2.1: Welcome1.java // A first program in Java public class Welcome1 { public static void ( String args[]){.out.println( "Welcome to Java!" ); } } 2. Vi beordrar Emacs lagra denna text på en fil Welcome1.java. (En fil är ett minnesutrymme på den dators skivminne, "hård disk") 3. Kör javakompilatorn javac på datorn och dvs låtkompilatorn översätta texten som finns på filen Welcome1.java....>javac Welcome1.java OM kompilatorn inte finner några fel blir resultatet blir en översättning på filen Welcome1.class typfel syntaxfel tills komp. OK 4. Kör översättningen:...>java Welcome1 Exekveringsfel gör att programmet avslutas på ett onormalt sett. Logiska fel leder till felaktiga resultat exekveringsfel, logiska fel tills körningen ger avsett resultat

Semantiken för programmet Welcome1 ALU (styrning ) CPU (aritmetik) statiska (klass).out metoder Översatt -metod (Kod som styr datorn) println-metod (Kod som styr datorn) inenhet utenhet sekundärminnen Welcome to Java programmeing! Welcome1.java Welcome1.class En fil. Data finns kvar så länge man vill 1234567890+ qwertyuiopå asdfghjklöä <zxcvbnm,.- Skivminne (hard disc, "hård disk") kommunikation med användare yttre enheter (periferienheter).out.println("welcome to Java programming!"); -metoden anropar (calls, invokes ).out-ets println-metod..out-et kommer att finnas automatiskt om man nämner det i Java.programmet.

Semantiken för programmet Welcome4 ALU (styrning ) CPU (aritmetik) statiska (klass) metoder (översattkod som styr dator inenhet utenhet JOptionPane showmessagedialog exit sekundärminnen Welcome4 Skivminne (hard disc, "hård disk") Welcome to Java programmeing! Welcome4.java Welcome4.class En fil. Data finns kvar så länge man vill javax swing JOptionPane.class 1234567890+ qwertyuiopå asdfghjklöä <zxcvbnm,.- kommunikation med användare yttre enheter (periferienheter) java.lang importeras automatiskt java lang.class Joptionpane.showMessageDialog(null, "Welcome\n to\n Java\n programming!"); -metoden anropar (calls, invokes ) den statiska metoden showmessagedialog i klassen Joptionpane med två argument ( pane betyder ruta, det som är inne i ett fönster).

Semantiken för programmet Addition Efter nedanstående rad ( rad 17 och 18 i DD fig 2.8) : firstnumber = JOptionPane.showInputDialog( "Enter first integer" ); ALU (styrning ) CPU (aritmetik) statiska Lokala firstnumber secondnumber number1 number2 sum "45" metoder (översattkod som styr dator Addition JOptionPane showmessagedialog showinputdialog exit inenhet utenhet sekundärminnen Enter first integer 45 Welcome4.java Welcome4.class En fil. Data finns kvar så länge man vill javax 1234567890+ qwertyuiopå asdfghjklöä <zxcvbnm,.- Har egentligen just försvummit java.lang importeras automatiskt swing JOptionPane.class java lang.class

Minnet efter nedanstående rad ( rad 20 och 21 i DD fig 2.8) : secondnumber = JOptionPane.showInputDialog( "Enter second integer" ); statiska Lokala firstnumber secondnumber number1 number2 sum "45" "72" metoder (översattkod som styr datorn) Addition JOptionPane showmessagedialog showinputdialog exit Minnet efter nedanstående rad ( rad 24i DD fig 2.8) : number1 = Integer.parseInt( firstnumber ); statiska Lokala metoder (översattkod som styr datorn) firstnumber secondnumber number1 number2 sum 45 "45" "72" Addition JOptionPane showmessagedialog showinputdialog exit

Minnet efter nedanstående rad ( rad 25 i DD fig 2.8) : number2 = Integer.parseInt( secondnumber ); statiska Lokala metoder (översattkod som styr datorn) firstnumber secondnumber number1 number2 sum 45 72 "45" "72" Addition JOptionPane showmessagedialog showinputdialog exit Minnet efter nedanstående rad ( rad 28 i DD fig 2.8) : sum = number1 + number2; statiska Lokala metoder (översattkod som styr datorn) firstnumber secondnumber number1 number2 sum 45 72 117 "45" "72" Addition JOptionPane showmessagedialog showinputdialog exit

Några olika sorters primitiva typer. Hittils har vi bara definierat (lokala för metoden ) med heltalsvärden, t ex int k = 5; // k "plats" i minnet för heltal första innnehåll talet 5 Detta sätt att både deklarera en variabel och ge den ett första värde används inte i DD redan i kap 2, utan introduceras senare. Det finns flera primitiva datatyper än int i Java. Man kan med dessa datatyper deklarera som skall innehålla andra sorters värden, t ex: double x = 5.5; // x plats för flyttal första innnehåll talet 5.5 double y = 5.5E2; // x plats för flyttal första innnehåll talet 550.0 double z = x+y; // z plats för flyttal första innnehåll 5505.5 Uttryck kan bildas på likande sätt som i matematiken. T ex har olika operatorer har olika prioritet eller presedens, som kan upphävas med paranteser z = 3.0*x+7.1; // z liten del av minnet fylls med fylls med 23.6 z = 3.0*(x+7.1); // z liten del av minnet fylls medfylls med 37.8 Att man kan "räkna med" sanningsvärden (boolean) och tecken (char) käns ovant i början men är inte konstigt när man vant sig, fast man gör lätt fel med && och : boolean b = k+k > 7 k <3 // b plats fylls med true && och är "lata", dvs den högra operanden beräknas ej om det inte behövs. ( I uttryck som 3+5 eller b && c kallas + och && för operatorer, 3 och b för vänsteroperander och 5 och c för högeroperander). Man kan också förvandla värden mellan olika typer, kallas "cast". int k = (int) 5.4; // k platsför heltal första innnehåll talet 5 Övning2: int i = 5; int j = 2;double x = 4.5;double y = 1.0E2; char l = a ; char d = 2 ; boolean b= true; boolean bb, cc; Vad blir i+j i/j i% j i+x x/y i>5 (l < a ) && b (l < a ) b 3 < i < 7? Betyder!(bb && cc) samma sak som (!bb!cc)? Mer detaljer och övningar i böckerna.

Översikt av de viktigaste primitiva datatyperna och de viktigaste operatorerna med vars hjälp vi kan bilda uttryck : % (rest vid heltalsdivision) / (heltalsdivision) + - * (32 bit) int 2 12-67 2356789-976543 + - / * + - / * (64 bit) double 23.67-890.78-45.89 56.34E23 && (logiskt och, båda true) < <= > >= ==!= boolean true false < <= > >= ==!= < <= > >= ==!= (lika med, inte lika med) char A a 7! /u0040 (16 bit) (8 bit?)! (logiskt inte) Det finns fler primitiva datatyper än int för heltal, det som skiljer är hur många bitar som krävs för platsen i minnet och därmed vilka tal som "får plats". Det finns förutom double ytterligare en primitiva datatyp float för flyttaltal ("decimaltal"), det som skiljer är att bara 32 bit tilldelas sådan i minnet i stället för 64 bitar och att antalet signifikanta siffror och största och minsta exponent är därför är mindre. Typen String är ej en primitiv typ Att två strängar a, b är lika skrivs så här: a.equals(b).

Sammanfattning. I mallarna nedan skall det som är skrivit med - typsnittet Courier skrivas av. ( reseverade ord och teckn i Javas syntax) - typsnittet Courier ersattas med det du själv hiitar på. - typsnittet Palantino är förklaringar som förstås inte skall skrivas av. Mall för en enkel klassdeklaration Klassens rubrik (heading, "huvud") "publik", offentlig allmän klass. 1 publik klass/ fil. Klassnamnet på publika klassen klassens namn = Filnamnet.java Vi deklarerar en klass Klassinnehållet (body, "kropp") public class klassnamn { Inleder klassinnehållet I kapitel 2 deklaration av -metoden } Avslutar klassinnehållet

Mall deklaration av -metod Metodens rubrik (heading, "huvud") Kopiera -metodens rubrik helt och hållet. Du behöver inte förstå allt än "publik", offentlig allmän metod. klassmetod metoden returnerar inget metodens namn public static void (String [] arg) { Metodinnehållet (body, "kropp") Inleder metodinnehålle } följd (sekvens) med variabeldeklarationer och kommandon (satser) Avslutar metodinnehållet Mall deklaration av lokal variabel i metod: Namn på variabel avslutar deklaration typnamn variabelnamn ; Exempel deklaration av lokala : Typnamn med liten initialbokstav: variabeln innehåller ett värde av en primitv typ. I detta fall innehåller i ett heltal. int i; String text; Typnamn med Stor Initalbokstav: variabeln innehåller en referens till ett, i dett fall refererar text till ett String- (tecknsträng + metoder för att pulera stängar)

Mall tilldelningskommando Namn på variabel, del av minnet som kommer att få ett nytt innehåll som blir värdet på uttrycket till höger om = tilldelning uttryck som datorn räknar ut och ger ett värde avslutar kommanot variabelnamn = uttryck (nåt som har värde) ; Exempel tilldelningskommando k = i + j; Mallar och exempel för uttryck literal variabelnamn 5 k Namn på variabel, datorn ser efter vilket värde som finns i den del av minnet som har detta vaiabeln uttryck operator uttryck i + j; i + j uttrycken kallas operander ( uttryck ) (5*(i + j)) returnerandemetodanrop Math.sqrt(16.0) Mer om anrop nedan

Mall anrop av klassmetod i annan klass: Namn på klass. OBS STOR INITIALBOKSTAV. Genetiv-s rätt antal uttryck (argument) som ger klassmetoden infomation som den bearbetar.datorn räknar först ut uttryckens värde som sänds till klassmetoden. Klassnamn. klassmetodnamn ( uttryck, uttryck,..., uttryck ) Paranteserna gör att java-kompilatorn ; förstår att den skall översätta ett anrop. (engelska call, invocation). Även anrop av argumentlösa metoder måste ha paranteser, som då inte har något uttryck mellan sig. Exempel anrop av (void) klassmetod i annan klass: Att metoden är "void" innebär att den inte sänder tillbaka något. Sådana anrop bildar ett eget kommando (sats) avslutar kommanot JOptionPane.showMessageDialog(null, "Welcome"); Exempel anrop av returnerande klassmetod i annan klass: Att metoden är retunerande innebär att från den anropade metoden får den anropande metoden ett värde som den använder som ett uttryck. firstnumber = JOptionPane.InputDialog("Input first integer: "); Att metoden är returnerar en teckensträng som bildar uttrycket till höger om = i en tilldelningsats.

Mall anrop av metod i i annan klass: Namn på (referens till). obs liten initalbokstav. Genetiv-s rätt antal uttryck (argument) som ger metoden infomation som den bearbetar.datorn räknar först ut uttryckens värde som sänds till klassmetoden. (referens)namn. metodnamn( uttryck, uttryck,..., uttryck ) Paranteserna gör att java-kompilatorn ; förstår att den skall översätta ett anrop. (engelska call, invocation). Även anrop av argumentlösa metoder måste ha paranteser, som då inte har något uttryck mellan sig. Exempel anrop av (void) metod i ett : Att metoden är "void" innebär att den inte sänder tillbaka något. Sådana anrop bildar ett eget kommando (sats).out.println("welcome"); Objektet out finns i annan klass (som finns i java lang) avslutar kommanot