F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

Relevanta dokument
Klassdeklaration. Metoddeklaration. Parameteröverföring

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

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

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

SMD 134 Objektorienterad programmering

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

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering

Programmeringsteknik I

Tentamen ID1004 Objektorienterad programmering December 15, 2012

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

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

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

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

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

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

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

F4. programmeringsteknik och Matlab

F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander

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

TDIU01 - Programmering i C++, grundkurs

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

Övning2. Variabler. Data typer

Föreläsning 3-4 Innehåll

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

TENTAMEN OOP

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

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket

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?

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

TDIU01 - Programmering i C++, grundkurs

Lite logik. Kap 6: Sid 2

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Instuderingsfrågor, del B

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

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

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

Tentamen ID1004 Objektorienterad programmering October 29, 2013

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

TENTAMEN OOP

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

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

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

Föreläsning 2 Datastrukturer (DAT037)

Programmering A. Johan Eliasson

(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

Data, typ, selektion, iteration

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

Programmering i C, 7,5 hp

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

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

1 Iteration. 1.1 for-satsen

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

TDDC77 Objektorienterad Programmering

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)

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

Tentamen OOP

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

Objektorienterad Programmering (TDDC77)

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

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

TDDC77 Objektorienterad Programmering

Parallellism, återblick

729G74 IT och programmering, grundkurs. Tema 2, Föreläsning 2 Jody Foo,

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

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

Imperativ programmering. Föreläsning 2

729G04 Programmering och diskret matematik. Python 3: Loopar

Tentamen ID1004 Objektorienterad programmering April 7, 2015

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

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

Typkonvertering. Java versus C

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Föreläsning 2 Programmeringsteknik och C DD1316

DOM (Document Object Model) är modellen efter vilken en webbläsaren är uppbyggd. Alla objekt/element i webbläsaren finns hierarkiskt ordnade i DOM.

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

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

Föreläsning 4 Innehåll

OOP Objekt-orienterad programmering

Iteration while-satsen

Lösningsförslag till omtentamen för TDA540 Objektorienterad Programmering

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

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

Språket Python - Del 1 Grundkurs i programmering med Python

En villkorssats är den konstruktion som finns i C++ för att göra en selektion av två alternativa sekvenser. Formen för if satsen är

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

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

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

F7 - Arrayer. ID1004 Objektorienterad programmering Fredrik Kilander

LÖSNINGSFÖRSLAG TENTAMEN

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

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

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

Recap Mera om nya typer Kort Fält. Programmering. Sommarkurs Verónica Gaspes. IDE-sektionen.

Föreläsning 3. Iteration while-satsen

Tentamen Programmeringsteknik II och NV2 (alla varianter) Skriv bara på framsidan av varje papper.

Föreläsning 1 & 2 INTRODUKTION

729G74 IT och programmering, grundkurs. Tema 3. Föreläsning 2 Jody Foo,

Transkript:

F5 Selektion och iteration ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se

Boolska uttryck Boolska uttryck använder sig av jämförelseoperatorer < > <= >= ==!= Resultatets datatyp är boolean (true, false) 3 < 99 ger värdet true 99 > 99 ger värdet false 1!= 0 ger värdet true

Boolska uttryck - if Boolska värden gör det möjligt att välja vilken kod som ska exekveras if (boolean) t-stmt; t-stmt exekveras endast om det boolska uttrycket är sant (true) if (x < 0) { x = -x;

Boolska uttryck if-else Boolska värden gör det möjligt att välja vilken kod som ska exekveras if (boolean) t-stmt; else f-stmt; t-stmt exekveras om det boolska uttrycket är sant (true), annars exekveras f-stmt if (n == 1) { s = thing ; else { s = things ;

Likhetsoperatorn == Prövar om två uttryck har samma värde if (count == 6) {... if (b == false) {...

Likhetsoperatorn == Om två referenser jämförs så måste det vara samma referens för att det ska bli true Die die1 = new Die(); // En instans Die die2 = new Die(); // En annan instans boolean b = (die1 == die2); // false die2 = die1; // die2 blir alias till die1 b = (die1 == die2); // true

Likhetsoperatorn == Tänk på att den liknar tilldelning! Die die1 = new Die(); Die die2 = new Die(); boolean b = (die1 == die2); if (b = true) { System.out.println(b); Alltid sant...

Logiska operatorer Logiska operatorer tar boolska värden som argument! negation!true ger värdet false && konjunktion, logiskt OCH: båda sidor måste vara true disjunktion, logiskt ELLER: en eller båda sidorna måste vara true

Logiska operatorer Används for kombinerade villkor if (done (maxlimit <= count)) {... // stop if (!done && (count < maxlimit)) {... // go on Vilken datatyp har variabeln done?

Satsblock Med hjälp av satsblock {... kan flera programsatser behandlas som en enhet if (count < maxlimit) { count += 1; sum /= 2;...

Satsblock Satsblock är ibland obligatoriska public class Foo { int[] nums = new int[]{2,3,5,7,11; public void getnum() {...

Satsblock Satsblock rekommenderas i if-satser, for-, while- och do-loopar. if (count < maxlimit) { count += 1; sum /= 2;... else { return sum;

Villkorsoperatorn? Operatorn? tar tre argument villkor? t-värde : f-värde ; public int min(int a, int b) { return (a < b)? a : b;

Villkorsoperatorn? Operatorn? tar tre argument villkor? t-värde : f-värde ; System.out.print( You have ); System.out.print(score); System.out.print( point ); System.out.println ((score == 1)?. : s. ); You have 0 points. You have 1 point. You have 2 points.

Nästlade if-satser Använd satsblock och indentering för att undvika förvirring if (num1 < num2) if (num1 < num3) min = num1; else min = num3; else if (num2 < num3) min = num2; else min = num3; rekommenderas ej if (num1 < num2) if (num1 < num3) min = num1; else min = num3; else if (num2 < num3) min = num2; else min = num3; indenterad if (num1 < num2){ if (num1 < num3) { min = num1; else { min = num3; else { if (num2 < num3) { min = num2; else { min = num3; indenterad och med satsblock

Jämföra data floating point == operatorn kräver exakt likhet (alla bitar) Flyttal avrundas ofta vid beräkningar Definiera likhet som tillräckligt nära float f1, f2; // Två flyttal... if (f1 == f2) {... // exakt lika if (Math.abs(f1 f2) < TOLERANCE) { // tillräckligt lika...

Jämföra data - char Tecken kodas som 16-bitars positiva heltal Dessa tal kan jämföras (t ex vid sortering) De första 127 koderna är samma som ASCII De första 256 koderna är samma som ISO-8859-1 if (ch1 > ch2) { // do stuff I praktiken är det sällan man tittar på teckens numeriska värde Java har goda verktyg för att hantera text.

Jämföra data - String Strängar är objekt; en referensdatatyp == är bara sann om det är samma objekt Strängar jämförs med metoder i java.lang.string if (name1.equals(name2)) {... if (name1.equalsignorecase(name2)) {... if (name1.compareto(name2) == 0) {... if (name1.compareto(name2) < 0) {... if (name1.compareto(name2) > 0) {... Samma tecken Samma ord Likvärdigt equals name1 före name2 name1 efter name2 if (firstname.equals( Allan )) {... if ( Allan.equals(firstName)) {... Strängkonstanter är också objekt

Mer om String Textsträngar är instanser av klassen String Varje instans är slutgiltig (immutable) En ändrad String är en ny String: String s = foo ; s = s + bar ; String s = new String( foo ); String t = new String( bar ); s = new String( foobar ); System.out.println(s); foobar >

Iteration - while while (villkor) t-stmt; while (villkor) {... Villkoret prövas först, därefter utförs programsatsen eller blocket så länge villkoret är sant int count = 1; while (count < 5) { System.out.println(count); count++;

Oändliga loopar Det är lätt att skriva loopar som pågår längre än man tänkt sig int count = 1; while (count <= 25) { System.out.println(count); count--; Denna loop pågår tills dess att count når Integer.MIN_VALUE, varvid den slår om och får värdet Integer.MAX_VALUE. Exekvering fortsätter efter loopen.

Oändliga loopar Det här är en oändlig loop int count = 1; while (count == count) { System.out.println(count); count--; Denna loop pågår tills dess att programmet avbryts.

Oändliga loopar Det här är också en oändlig loop int count = 1; boolean done = false; while (!done) { System.out.println(count); count--; Denna loop pågår tills dess att programmet avbryts.

Oändliga loopar Ibland vill man ha en oändlig loop Tänk web-server, mail-server, operativssystem protected void dowork() { while (true) {... // Serve next request Denna loop pågår tills dess att programmet avbryts.

Nästlade loopar En loop inuti en annan loop int outercount = 10; while (0 < outercount) { int innercount = 5; while (0 < innercount) { System.out.println (outercount*10+innercount); innercount--; outercount--; Hur många gånger anropas System.out.println()? 105 104 103 102 101...

Mer kontroll över loopar break hoppa ut ur det närmaste satsblocket continue hoppa direkt till början på loopen while (...) {... // gör lite arbete if (...) break; // redan färdig med loopen?... // gör lite mer arbete while (...) {... // gör lite arbete if (...) continue; // redan färdig med detta varv?... // gör lite mer arbete

Iteratorer java.util.iterator En Iterator är ett hjälpobjekt för att gå igenom en datasamling Vissa metoder i vissa klasser erbjuder en Iterator Varje Iterator erbjuder tre metoder: boolean hasnext() finns ett nästa element? E next() hämta nästa element void remove() ta bort senast hämtade från samlingen

Iteratorer java.util.iterator boolean hasnext() finns ett nästa element? E next() hämta nästa element void remove() ta bort senast hämtade från samlingen Iterator<Card> ic = deck.iterator(); while (ic.hasnext()) { Card cd = ic.next();... // Gör nåt med kortet

Iteratorer java.util.iterator boolean hasnext() finns ett nästa element? E next() hämta nästa element void remove() ta bort senast hämtade från samlingen for (Iterator<Card> ic = deck.iterator(); ic.hasnext();) { Card cd = ic.next();... // Gör nåt med kortet

Interface java.lang.iterable Fr o m Java 5 Objekt som implementerar java.lang.iterable kan användas direkt i for-loopen java.lang.iterable!= java.util.iterator for (char c : String s) {if (c == a )...; int numbers[100]; int sum = 0; for (int n : numbers) { sum += n;

Loopar - sammanfattning do minst en gång genom loopen while villkoret testas först for antalet varv är känt for each alla element i en samling break hoppa ut i förtid continue nästa varv genast

wha... SLUT PÅ BILDER

Selektion switch Satsen switch kan ersätta nästlade if-satser if (idchar == A ) { acount = acount + 1; else if (idchar == B ) { bcount = bcount + 1; else if (idchar == C ) { ccount = ccount + 1; else { System.out.println ( Error in... );

Selektion switch Satsen switch kan ersätta nästlade if-satser switch (idchar) { case A : acount = acount + 1; break; case B : bcount = bcount + 1; break; case C : ccount = ccount + 1; break; default: System.out.println ( Error in... );

Selektion switch Satsen switch kan ersätta nästlade if-satser switch (idchar) { char, byte, short, eller int* case A : acount = acount + 1; break; case B : en konstant bcount = bcount + 1; break; case C : ccount = ccount + 1; break; hoppar ur switch-satsen default: System.out.println ( Error in... ); *) I Java 7 tillåts även String

Iteration do - while do {... while ( villkor ); Programsatsen utförs alltid första gången Därefter igen så länge villkoret är sant int count = 0; do { count++; System.out.println(count); while (count < 5);

Iteration - for for loopen sammanfattar initiering, villkor och uppdatering Detta gör koden enklare for ( initering ; villkor ; uppdatering ) { // kod i loopen initering while (villkor) { // kod i loopen uppdatering

Iteration - for for loopen sammanfattar initiering, villkor och uppdatering for (int count = 0; count < 25; count++) { System.out.println(count); Variabeln count finns bara i for-loopen. Mindre risk för förväxling.

Iteration - for for loopen sammanfattar initiering, villkor och uppdatering Tomma delar kan utelämnas for (Iterator<Card> ic = deck.iterator(); ic.hasnext(); ) { Card cd = ic.next();