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

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

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

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

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)

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

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

Objektorienterad Programmering (TDDC77)

TDDC77 Objektorienterad Programmering

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)

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

Klassdeklaration. Metoddeklaration. Parameteröverföring

Föreläsning 3-4 Innehåll

TENTAMEN OOP

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

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

TENTAMEN OOP

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

F4. programmeringsteknik och Matlab

PROGRAMMERING-Java Omtentamina

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

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

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

OOP Objekt-orienterad programmering

Tentamen OOP

I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else

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

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

Typkonvertering. Java versus C

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

Föreläsning 2, vecka 8: Repetition

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

Del A (obligatorisk för alla)

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

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

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

Användarhandledning Version 1.2

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

Tentamen , Introduktion till Java, dtaa98, dtea53

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

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

OOP Objekt-orienterad programmering

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

Programmeringsteknik I

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

JAVAUTVECKLING LEKTION 4

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

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

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

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

Objektorienterad Programmering DAT043. Föreläsning 2 15/1-18 Moa Johansson

Föreläsning 9-10 Innehåll

Anteckningar 1: Grundläggande saker

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

SMD 134 Objektorienterad programmering

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

Sammanfattning och repetition utgående från typiska tentamensuppgifter

Skillnader mellan Python och Java

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

Lite mer om Javas stöd för fält. Programmering. Exempel: vad är det största talet? hh.se/db2004. Fält samt Input/Output

PROGRAMMERING-JAVA TENTAMINA

Programmering A. Johan Eliasson

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

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

725G61 - Laboration 2 Loopar och arrayer. Johan Falkenjack

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

Föreläsning 3. Iteration while-satsen

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

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

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

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

Metodanrop - primitiva typer. Föreläsning 4. Metodanrop - referenstyper. Metodanrop - primitiva typer

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

Lite logik. Kap 6: Sid 2

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Iteration while-satsen

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Objektorienterad programmering i Java

Föreläsning REPETITION & EXTENTA

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.

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

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

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

OOP Objekt-orienterad programmering

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

5. En metod som anropar sig själv a) får inte förekomma i Java-program b) kallas destruktiv c) kallas iterativ d) kallas rekursiv 6. Vilka värden har

(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

Namn: Personnr: 1 2D1310 Programmeringsteknik i Java för B,V (1p) 13 januari 2001, kl Hjälpmedel: En Javabok. För betyget godkänt krävs at

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

Föreläsning 3. Iteration. while-satsen for-satsen do-satsen

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

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

TENTAMEN OOP

Algoritmanalys. Genomsnittligen behövs n/2 jämförelser vilket är proportionellt mot n, vi säger att vi har en O(n) algoritm.

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

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

Sammanfattning och repetition utgående från typiska tentamensuppgifter

Föreläsning 11. Arrayer. Arrayer. Arrayer. Lagrar flera värden av samma typ Kan vara primitiva typer eller objekt. Kan ha en array av t.

Transkript:

Varför? 732G11 Linköpings universitet 2011-02-08

Varför? 1 2 3 Varför? 4 5

Medelvärde av 5000 tal Varför? while-loopen int nrofints = 5000; int [] integers = new int [ nrofints ]; int pos = 0; while ( pos < nrofints ) { System. out. println (" Mata in ett heltal :"); integers [i] = in. nextint (); pos = pos + 1;

Varför? Synlighet och livslängd En variabel är bara synlig inom den omgivning där den definierats. När den omgivningen inte längre finns glöms variabeln bort. Variabler deklarerade i en slinga är bara åtkomlig inifrån den slingan.

For for-loopen Varför? for ( initiering ; villkor ; uppdatering ){ gör ngt ; initiering villkor JA Gör något NEJ uppdatering

Varför? Används väldigt ofta tillsammans med arrayer. For Försöker minimera risken att börja/sluta för tidiget/sent eller att glömma uppdatera räknarvariabeln. for-loopen int [] arr = new int [ nrofelements ]; long sum = 0; for ( int i = 0; i < nrofelements ; i ++) { sum = sum + arr [i];

Do/while Varför? do/while-loopen do { gör ngt ; while ( villkor ); Gör något Är a<b? NEJ JA

Varför? Do/while Exakt som while-loopen från förra föreläsningen, men den kör alltid minst ett varv (kontrollerar villkoret efter varje varv). Kan vara bra för saker som behöver repeteras om det inte går så bra första gången, exempelvis inläsning av data från användaren. do/while-loopen int tal = 0; do { System. out. print (" Ange ett tal mellan " + "3 och 26: "); tal = in. nextint (); while (( tal < 3) ( tal > 26));

break Varför? Avbryter en slinga (eller switchsats). Programmet fortsätter köra efter slingan. breaksatsen for ( int a = 0; a < 5; a ++){ if (q > 12) { break ;

Varför? Avbryter ett varv i en slinga. continue Programmet fortsätter köra slingan från början igen (med variabeln uppdaterad om det är en for-slinga). breaksatsen for ( int a = 0; a < 5; a ++){ if (q > 12) { continue ;

Varför? Det går att lägga en slinga i en annan. Nästlade slingor Den inre slingan utförs då x gånger för varje varv i den yttre loopen. Nästlade slingor for ( int a = 0; a < 5; a ++){ for ( int b = 0; b <= a; b ++){ System. out. print ("*"); System. out. print (" ");

Varför? Riktig javakod Multiplikationstabellen Scanner in = new Scanner ( System. in ); int table ; do { int row = 0; System. out. print (" Vilken tabell önskas?"); table = in. nextint (); while ( row < 10) { System. out. println ( table + "*" + row + " = " + ( table * row )); row = row + 1; while ( table!= 0);

Varför? Rövarspråket Skriv ett program som gör om svenska till rövarspråket. Rövarspråket Ange ord : hare hoharore Ange text : luftballong lolufoftotbobalollolonongog Ange text :

Varför? Javakod Rövarspråket String word ; do { word = in. nextline (); for ( int i =0; i< word. length (); i ++){ char letter = word. charat ( i); if ( letter == a letter == e letter == i letter == o letter == u letter == y letter == å letter == ä letter == ö ) { print ( letter ); else { print ( letter + "o" + letter ); while (! word. equals (" quit " ));

Varför? cards Övervägande positivt både om kursen, personal och Fö [20/23]. Tunga laborationer [5/23]. Fler övningar [2/23]. Bra/lagom laborationer [9/23]. Långa laborationer. (Blir bättre i de sanare laborationerna) Fler laborationstillfällen. (kommer att planeras in) Trångt på LA (förklaring av schemat). Mer eclipse på FÖ. Senare deadline? (antagligen en dålig idé) Diverse andra synpunkter.

Varför? Funktioner i matematiken Funktioner i matematiken: f (x) = 3x + 4 Inga sidoeffekter. (Kan inte påverka något utanför funktionen, förutom att returnera ett värde.) Deterministiska. (Samma argument ger alltid samma resultat.)

Funktioner i Java Varför? En funktion i Java... public static int f( int x){ return (3 * x + 4);... Kallas även. Kan ha sidoeffekter. (Kan påverka variabler utanför funktionen, förutom att returnera ett värde.) Kan vara icke-deterministiska. (Samma argument ger inte alltid samma resultat.)

Varför? Tydligare kod En metod har alltid ett namn. Ofta är det enklare att förstå vad som händer när man ser namnet än när man ser den kod som faktiskt körs. Namnet kan vara mer allmänt (abstrakt), och underlättar en översiktlig läsning av programmet. Tydlighet... if ( grade >= 3 && grade < 5) { grade ++;... grade = increasegradebyone ( grade );

Varför? Kortare kod Eftersom man kan använda koden igen så behöver man inte upprepa sig så ofta. Arbetsbesparande public static int getinteger ( int min, int max int n; do{ n = in. nextint (); while ( n < min n > max ); return n;

Att skapa en metod Varför? En metod... // Ökar ett tal med ett public static int increasebyone ( int value ){ int bigvalue = value + 1; return bigvalue ; public static void main ( String [] args ){ System. out. println ( increasebyone (41));...

Varför? Att skapa en metod public static int nextint()... betyder att vi får ett heltal i retur public static void println()... betyder att vi inte får något i retur alls public static int nextint()... betyder att vi inte använder några parametrar public static void println(string s)... betyder att vi kräver en String som parameter

Varför? Parametrar Fungerar som variabler, men de måste tilldelas ett värde när funktionen körs. Man brukar säga att man skickar med värden till tunktionen. Precis som vanliga variabler måste de ha både typ och namn. Efter att metoden är slut glöms parametrar och lokala variabler bort. Primitiva typer kopieras, medan referenstyper (läs Arrayer) delar på samma värde.

Varför? Resultatet av att köra en funktion. Kan vara void: (inget resultat genereras). Returvärden Anges med nyckelordet return: ex: return värde; När return körs avslutas funktionen (även om man inte kört färdigt den. För funktioner som inte returnerar något värde kan man fortfarande köra return; för att avsluta funktionen.

Varför? Metodanrop En metod anropas genom att skriva funktionsnamnet(parameter1, parameter2,...) Om funktionen returnerar ett värde av rätt typ kan funktionsanropet användas som det värdet: int a = beräkna(3, 7) + 4; Om du vill anropa i andra filer (klasser) måste du ange var de ligger: Klass.metod(...) exempelvis Math.random().

Att skapa en metod Varför? En metod... // Ökar ett tal med ett public static int increasebyone ( int value ){ int bigvalue = value + 1; return bigvalue ; public static void main ( String [] args ){ System. out. println ( increasebyone (41));...

Varför? Javakod Rövarspråket String word ; do { word = in. nextline (); for ( int i =0; i< word. length (); i ++){ char letter = word. charat ( i); if ( letter == a letter == e letter == i letter == o letter == u letter == y letter == å letter == ä letter == ö ) { print ( letter ); else { print ( letter + "o" + letter ); while (! word. equals (" quit " ));

Rövarspråket Varför? Javakod med metoden isvowel() do{ String word = in. nextline (); for ( int i =0; i< word. length (); i ++){ char letter = word. charat ( i); if ( isvowel ( letter )) { print ( letter ); else { print ( letter + "o" + letter ); while (! word. equals (" quit " ));

Rövarspråket Varför? Metoden isvowel() static boolean isvowel ( char letter ) { return letter == a letter == e letter == i letter == o letter == u letter == y letter == å letter == ä letter == ö ;

Rövarspråket Varför? En bättre isvowel() static boolean isvowel ( char letter ) { char [] vowels = { a, e, i, o, u, y, å, ä, ö ; for ( int j =0; j< vowels. length ; j ++){ if ( letter == vowels [j]) return true ; return false ;

Rövarspråket Varför? Globala variabler static char [] vowels = { a, e, i, o, u, y, å, ä, ö ; static boolean isvowel ( char letter ) { for ( int j =0; j< vowels. length ; j ++){ if ( letter == vowels [j]) return true ; return false ;

Varför? Koda Skriv en metod max(int[] s) som returnerar det högsta talet i arrayen s. Körexempel int [] arr = {1, 2, 3; System. out. println ( max ( arr )); => "3"

Varför? Koda Skriv en metod sorted(int[] s) som avgör om en array är sorterad (minst till störst). Körexempel int [] arr = {1, 2, 3; System. out. println ( sorted ( arr )); => true

Varför? Koda Skriv en metod equal(int[] s, int[] t) som avgör om en array är likadan som en annan. Körexempel int [] arr = {1, 2, 3; int [] arr2 = {1, 3, 3; System. out. println ( equal (arr, arr2 )); => false

Varför? class Prog { static String text = " ABCDEF "; public static void main ( String [] args ) { String text = " 123456 "; System. out. println ( text. charat (5)); System. out. println ( Prog. text. charat (5));

Varför? /* Schematiskt */ class Prog { static String text ; /* Schematiskt */ class System { static PrintWriter out ; System. out. println ( Prog. text. charat (5) ); System.out.println(...) Prog.text.charAt(...)

Varför? När Java exekverar en funktion, evalueras först argumenten och sedan körs själva funktionen. Detta illustreras genom att den beräknade delen av uttrycket stryks under, och ersätts på raden under av det beräknade värdet. Detta brukar kallas substitutionsmetoden.

Varför? I vilken ordning sker det? class Prog { static int square ( int a) { return a*a; static int average ( int a, int b) { return (a+b )/2; public static void main ( String [] args ) { println ( square (5*4-15)* average (8+2, 2*2))

Varför? println(square(5*4-15)*average(8+2, 2*2)); println(square(20-15)*average(8+2, 2*2)); println(square(5)*average(8+2, 2*2)); println(25*average(8+2, 2*2)); println(25*average(10, 2*2)); println(25*average(10, 4)); println(25*7); println(175);

Varför? En sträng av siffror static String foo ( int a) { String result = ""; for ( int i =0; i < a; i = i + 1) { result = result + i; return result ; foo(3*2+3).substring(0, 6).substring(2, 3*(5+3)/6)

Varför? foo(3*2+3).substring(0, 6).substring(2, 3*(5+3)/6) foo(6+3).substring(0, 6).substring(2, 3*(5+3)/6) foo(9).substring(0, 6).substring(2, 3*(5+3)/6) 012345678.substring(0, 6).substring(2, 3*(5+3)/6) 012345.substring(2, 3*(5+3)/6) 012345.substring(2, 3*8/6) 012345.substring(2, 24/6) 012345.substring(2, 4) 23

Varför? Logiskt? evalueras från vänster till höger Så fort ett svar är klart så avbryts evalueringen int a=3, b=4, c =5; if(b>a && b>c && a <10) average (a, b, c); else average (a, c, c);

Varför? int a=3, b=4, c=5; b > a && b > c && a < 10 true && b > c && a < 10 true && false && a < 10 false && a < 10 false

Varför? Hmm, vad skrivs ut? public static void main ( String [] args ) { String [] words = new String [ 2]; words [0] = " Bil "; words [1] = " Cykel "; println ( words [3-2]. substring (2, 4). length ());

Varför? println(words[3-2].substring(2, 4).length()) println(words[1].substring(2, 4).length()) println( Cykel.substring(2, 4).length()) println( ke.length()) println(2)