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

Relevanta dokument
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. Muddy cards. Slingor

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

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

Objektorienterad Programmering (TDDC77)

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

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

Klassdeklaration. Metoddeklaration. Parameteröverföring

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

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

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

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

Övning2. Variabler. Data typer

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

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

Data, typ, selektion, iteration

TDIU01 - Programmering i C++, grundkurs

Enkla datatyper minne

F4. programmeringsteknik och Matlab

DD1314 Programmeringsteknik

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

TDDC77 Objektorienterad Programmering

Parameteröverföring. Exempel. Exempel. Metodkropp

E02 "The Review" Föreläsning 2, HT2013 Grunderna, repetition. Johan Leitet. Kurs: 1dv403 Webbteknik I

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

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

TDIU01 - Programmering i C++, grundkurs

Heltalsrepresentation. Fler byggstenar. Overflow och Underflow. TvŒ-komplement. FlyttalsvŠrden. Fyra heltalstyper. Tecken-bit

SMD 134 Objektorienterad programmering

OOP Objekt-orienterad programmering

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

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

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

Tentamen OOP

Typkonvertering. Java versus 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.

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

1/15/2013. DD1310/DD1314/DA3009 Programmeringsteknik. Lärandemål... Vilka läser kursen? ...fler lärandemål VARFÖR? Föreläsning 1

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

Programmering A. Johan Eliasson

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

OOP Objekt-orienterad programmering

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

DD1310/DD1314/DA3009 Programmeringsteknik LÄRANDEMÅL... Vilka läser kursen? ...FLER LÄRANDEMÅL. Föreläsning 1

Föreläsning 3-4 Innehåll

Visual Basic, en snabbgenomgång

Programmeringsteknik I

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

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

Programmering i C, 7,5 hp

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

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

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

Objektorienterad programmering Föreläsning 4

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

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

JAVAUTVECKLING LEKTION 4

Föreläsning 2. Variabler, tilldelning och kodblock{} if-satsen Logiska operatorer Andra operatorer Att programmera

Översikt Introduktion DST 1. Nicholas Wickström. IDE, Högskolan i Halmstad. N. Wickström

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

Innehållsförteckning

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Variabler, värden och typer

Föreläsning 3. Iteration while-satsen

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

Konvertering från sträng. Winstrand Development

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

Loopar och datatyper. Föreläsning 3

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?

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

TDDC77 Objektorienterad Programmering

OOP Objekt-orienterad programmering

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

TENTAMEN OOP

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

TENTAMEN OOP

OOP F1:1. Föreläsning 1. Introduktion till kursen OOP Vad är Java? Ett första Java-program Variabler Tilldelning. Marie Olsson

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

Föreläsningsmaterial (Syntax och variabler)

Tentamen på kursen DA7351, Programmering , kl Malmö högskola Teknik och samhälle. DA7351, Programmering

Loopar och datatyper. Föreläsning 3

6.5 Spelserien Gissa tal

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

Variabler, värden och typer

JAVAUTVECKLING LEKTION 3

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

Objektorienterad Programmering (TDDC77)

OOP Objekt-orienterad programmering

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

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

(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

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

Planering Programmering grundkurs HI1024 HT 2014

Tentamen Grundläggande programmering

Iteration while-satsen

JavaScript. Innehåll. Historia. Document object model DHTML. Varför Javascript?

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

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Transkript:

732G11 Linköpings universitet 2011-01-26

1 2 3 4

Program recept 1 spaghetti = 100; 2 salt = 1; 3 olja = 5; 4 köttbullar = 8; 5 ketchup = 0,5; 6 koka(salt, spaghetti); 7 micra(köttbullar); 8 Om(micron == klar) hoppa till steg 10; 9 Annars hoppa till steg 8; 10 stek(olja, köttbullar); 11 servera(spaghetti, köttbullar, ketchup);

Datatyper Ett sätt att skilja på data av olika typ. Både data och variabler har en typ, som måste matcha. I hink-liknelsen kan datatypen illustreras av en färg, exempelvis blå för heltal. H 2

Deklaration int tal1 ; float tal2 ; String text ; Deklaration Ett sätt att tala om vilken typ som gäller för en variabel. Motsvarar att måla hinkarna. tal1 tal2 text

Tilldelning tal1 = 2; tal2 = 2. 3; text = " nollan "; Tilldelning Ett sätt att ge en variabel ett värde. Motsvarar att tömma en hink och lägga en boll i en hinken. tal1 tal2 text 2 2.3 nollan

Konstanter Som en variabel, men det går inte att ändra värde på den. Måste ha en typ, precis som en variabel. Deklareras med nyckelordet final. Brukar ges namn med enbart VERSALER och understreck. En konstant final int ANTAL_STOLAR = 40;

Literaler En literal är ett värde som ska tolkas bokstavligt. Inte en variabel eller konstant. Användning av literal int tal2 ; tal2 = 2;

Literaler Använd första bokstaven i typnamnet efter siffrorna för att indikera vilken typ ni menar. Fungerar för l=long, d=double, f=float. Ex 2.0f är en float medan 2.0d är en double. Ex 2f är en float medan 2d är en double.

konvertering int float float tal2 ; tal2 = 2; Implicit typkonvertering Ett sätt att byta typ på ett värde (så att det passar i sin hink) I vissa fall sker det automatiskt. 2 tal2 tal2 2.0

konvertering float int int tal1 ; tal1 = ( int ) 2.0; Explicit typkonvertering Vissa typkonverteringar kan inte ske automatiskt. Då måste man göra en manuell konvertering genom att ange den önskade typen inom parentes innan värdet. 2.0 2 2.0 (int) tal1 tal1

Jämförelser Några olika jämförelser int a = 1; int b = 2; boolean res ; res = (a < b); // true res = (a <= b); // true res = (a > b); // false res = (a >= b); // false res = (a == b); // false res = (a!= b); // true

byte: 128 <= x <= 127 short: 32, 768 <= x <= 32, 767 Heltalstyper int: 2, 147, 483, 648 <= x <= 2, 147, 483, 647 long: 9, 223, 372, 036, 854, 775, 808 <= x <= 9, 223, 372, 036, 854, 775, 807 char: Representerar enstaka tecken, lika stor som en short, men kan bara innehålla positiva tal. Skrivs med apostrofer: a Kan konverteras till/från heltal vilket är förvirrande och bör undvikas.

Flyttalstyper float double Det som skiljer är framför allt precisionen.

Arrayer Ofta behöver man flera likadana variabler, en Array Kallas ibland på svenska för Fält. Skapar en Array av heltal int [] integers = new int [ noofintegers + 1]; float [] floats = {2.2f, 4.6 f};...

används för att visa hur ett program fungerar. Man kan se alla val och upprepningar som sker i programmet. Består av tre (!) enkla beståndsdelar: Start/stop Utför något

Vakna Drick kaffe NEJ JA Slå väckarklockan Tyst? JA Mer än 20 min till FÖ? Åk till uni. NEJ Håll FÖ

Rita ett strukturdiagram över din morgon. Bonusuppgift (om du får tid över): Rita ett strukturdiagram för den perfekta kravallen.

Ordning Normalt sett så körs programmets kodrader i ordning alltså uppifrån och ned. Ibland vill man ändra på detta, exempelvis i vårt laga-middag-program:

Program recept 1 spaghetti = 100; 2 salt = 1; 3 olja = 5; 4 köttbullar = 8; 5 ketchup = 0,5; 6 koka(salt, spaghetti); 7 micra(köttbullar); 8 Om(micron == klar) hoppa till steg 10; 9 Annars hoppa till steg 8; 10 stek(olja, köttbullar); 11 servera(spaghetti, köttbullar, ketchup);

Hopp I tidernas begynnelse använde man programhopp - precis som det antyds i middagsreceptet - för att ändra ordningen som programmet körs i. I java får man inte göra hopp hur som helst. Man använder istället färdiga kontrollstrukturer som ändrar ordningen beroende på något villkor.

/ villkor if-satsen if( villkor ) sats1 ; else sats2 ; i praktiken Är a<b? if(a < b) { Gör något ; } else { Gör något annat ; } JA Gör något NEJ Gör något annat

Satser och block Satser och block sats ; { sats1 ; sats2 ;... } På varje ställe där man kan använda en sats kan man också ha ett block av satser. Ett block av satser omgärdas av måsvingar. Man ska alltid använda block för kroppar i if-satser, loopar och så vidare. Varför?

1 Ta emot ett heltal från användaren. Skriv programmet! 2 Om heltalet är större än fem; skriv För stort och avsluta. 3 Om heltalet är mindre än fem; addera ett till heltalet och hoppa till programpunkt 3. 4 Skriv ut Du får betyg och heltalet.

Många if-satser Inte så vackert if( siffra == 0){ System. out. println (" Noll "); } else if( siffra == 1){ System. out. println (" Ett "); } else if( siffra == 2){ System. out. println (" Två "); } else if( siffra == 3){ System. out. println (" Tre "); } else System. out. println ("?"); }

Bättre switch ( siffra ) { case 0: System. out. println (" Noll "); break ; case 1: System. out. println (" Ett "); break ; case 2: System. out. println (" Två "); break ; case 3: System. out. println (" Tre "); break ; default : System. out. println ("?");

Den enda trinära operatorn. En operator returnerar värde. Ger mer kompakt, men också svårläst kod. Bör i de flesta fall undvikas. villkor? uttryck_om_sant : uttryck_annars ; // ex: float promille = 0.1 f; String hur ; hur = " Jag tog " + ( promille < 0.2? " bilen " : " bussen ") + " hem.";

/ slinga / loop while-loopen while (a < b) { gör ngt ; } Gör något JA Är a<b? NEJ

Vad gör programmet? boolean bossishappy ; int answer = 0; System. out. print (" Vilken lön får jag?"); answer = in. nextint (); while ( answer < 200) { System. out. print (" Mer!"); answer = in. nextint (); } System. out. print ("OK, jag är nöjd!"); bossishappy = Boss. areyouhappy (); if (! bossishappy ) { givebossapple (); }

0-9 Skriver ut alla siffror från 0 till 9. Skriv ett program som: int siffra = 0; while ( siffra < 10){ System. out. print ( siffra + " "); siffra = siffra + 1; }

Skriver ut alla siffror från 0 till 9 Baklänges. Baklänges int siffra = 9; while ( siffra >= 0){ System. out. print ( siffra -- + " "); }

Udda Skriver ut alla siffror från 0 till 9 i ordning, men bara udda siffror. int siffra = 0; while ( siffra < 10){ if ( siffra % 2 == 1) { System. out. print ( siffra + " "); } siffra = siffra + 1; }

En algoritm är ett ändligt antal förutbestämda steg som kan användas för att lösa en specifik uppgift. Ofta upprepning. Ex. Liggande stolen för division.

Rita flödesschema Hur ser flödesschemat ut för middagsreceptet?

Program recept 1 spaghetti = 100; 2 salt = 1; 3 olja = 5; 4 köttbullar = 8; 5 ketchup = 0,5; 6 koka(salt, spaghetti); 7 micra(köttbullar); 8 Om(micron == klar) hoppa till steg 10; 9 Annars hoppa till steg 8; 10 stek(olja, köttbullar); 11 servera(spaghetti, köttbullar, ketchup);

Gissa tal Rita flödesschema och skriv pseudokod för ett program där: Användaren får försöka gissa ett tal mellan 0 och 100. Programmet anger om gissningen är för stor eller för liten. Om gissningen var fel, gissa igen. Om rätt: slut.

Gissa tal Efter ett tag inser du att spelet inte är så intellektuellt stimulerande och vill låta datorn spela mot sig själv. För att göra detta behöver du uppfinna en bra algoritm för hur datorn ska spela. Rita flödesschema och skriv pseudokod för denna algoritm.