Integer.parseInt(args[0]) konverterer tegnstreng (f.eks. "10") til heltal (10). if (udtryk) else



Relaterede dokumenter
University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2

Programmering. Udvidet Programmering. Kurserne. Kurset: programmering i sproget Java. Lærerne: Morten Larsen og Peter Sestoft

Kursus 02199: Programmering. Kontrol af programudførelsen. afsnit if (indkomst > ) topskat = (indkomst ) * 0.

Forelæsning Uge 2 Mandag

Forelæsning 17, tirsdag 2. november 1999 Søgning efter en given værdi i en tabel. Programmering 1999

Eksempel: Skat i år 2000

Der er fejl i programmer. Ikke-trivielle programmer er næsten altid fejlbehæftede.

Noter til C# Programmering Iteration

Forelæsning Uge 2 Mandag

Programmering 1999 KVL Side 5-4. Klassen Time: metoder. Metoder i objektet giver mulighed for at ændre tilstanden, eller kigge på tilstanden.

Aritmetiske Forelæsning Pr ogrammering operatorer tir 1999 sda præcedens september 1999 Logiske Sammenligningsoperatorer operatorer præcedens

class Time { int hours, min; } } Time t1; // Erklær variabel af type Time class Time1 { public static void main(string[] args) { Time t1; t1.

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 4

Forelæsning Uge 2 Torsdag

Start på Arduino og programmering

Forelæsning Uge 2 Mandag

Forelæsning Uge 2 Mandag

Programmering i C. Lektion december 2008

Grundlæggende Programmering ITU, Efterår Skriftlig eksamen i Grundlæggende Programmering

dintprog Manual Revision: 731 September 30, Introduktion Notation... 3 I Begreber 4 2 Grundbegreber om programmering 4

Virkefeltsregler i Java

Forelæsning Uge 4 Torsdag

Programmering i C. Lektion oktober 2008

Programmering i C. Lektion september 2009

Noter til C# Programmering Selektion

5. Kontrolstrukturer - Motivation og Oversigt

Forelæsning Uge 4 Torsdag

DM502. Peter Schneider-Kamp

Sproget Rascal (v. 2)

Kursus 02199: Programmering. Lidt om forelæseren. Velkommen til. Praktisk information: kursusaktiviteter. Praktisk information: forelæsninger

Forelæsning Uge 4 Torsdag

Bevisteknikker. Bevisteknikker (relevant både ved design og verifikation) Matematisk induktion. Matematisk induktion uformel beskrivelse

Sproget Limba. Til brug i G1 og K1. Dat1E 2003

//Udskriver System.out.println("Hej " + ditfornavn + " " + ditefternavn + "."); System.out.println("Du er " + dinalder + " aar gammel!

Undervisningsbeskrivelse

Studiepraktik. Thomas Bøgholm Mikkel Hansen Jacob Elefsen

Bevisteknikker (relevant både ved design og verifikation)

Algoritmedesign med internetanvendelser ved Keld Helsgaun

LØKKER METODER C S HISTORIE. Grundlæggende programmering Lektion 4

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3

Jacob Christiansen, Institut for MAtematik og DAtalogi, Syddansk Universitet, Odense

Fundamentale sprogbegreber

Forelæsning Uge 4 Mandag

Programmering for begyndere Lektion 2. Opsamling mm

dintprog Manual Revision: 1241 August 24, 2010 I Introduktion 3 1 Notation 3 II Begreber 4 2 Grundbegreber om programmering 4

Undervisningsbeskrivelse

Skriftlig eksamen, Programmer som Data januar 2014

BOSK F2012, 1. del: Prædikatslogik

Kursusarbejde 3 Grundlæggende Programmering

Klasser. Grundlæggende Programmering med Projekt. Peter Sestoft Tirsdag 2. september (Tak til Jakob Bardram for nogle slides) Dagens begreber

Tree klassen fra sidste forelæsning

Forelæsning Uge 2 Torsdag

Indledning. Hvorfor det forholder sig sådan har jeg en masse idéer om, men det bliver for meget at komme ind på her. God fornøjelse med læsningen.

Kapitel 4 Løkker i C#

DM507 Algoritmer og datastrukturer

Forelæsning Uge 1 Torsdag

Python programmering. Per Tøfting. MacFest

Kontrol-strukturer i PHP

Forelæsning Uge 1 Torsdag

Programmering i C. Kurt Nørmark 2005 Institut for Datalogi, Aalborg Universitet. Sammendrag

Skriftlig eksamen i Datalogi

Eksamens spørgsmål Software Construction. Objekter. Spørgsmål 1: Januar Giv en beskrivelse af Objekt-begrebet og deres brug

Løsning af møntproblemet

DM507 Algoritmer og datastrukturer

Kursusgang 11. Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing

class subklasse-navn extends superklasse-navn { } NorwaySpruce har superklassen Spruce, som igen har superklassen Tree.

Software Construction 1. semester (SWC) januar 2014 Spørgsmål 1

Hanne Niels Edith Harald Carsten Jørgen Henrik.

#AlleKanKode. Lektion 4 - Kontrol flow

SWC eksamens-spørgsmål. Oversigt

Java Programmering. En bog for begyndere. Skrevet af Henrik Kressner

Ugeseddel 4 1. marts - 8. marts

Forelæsning Uge 4 Mandag

Programmering i C. Lektion september 2009

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer

University of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11

Det er muligt at chekce følgende opg. i CodeJudge: og

Kursusarbejde 2 Grundlæggende Programmering

Forelæsning Uge 3 Torsdag

2) Det er let at være produktiv med Python, da Python som regel kun har mellem 67 og 80% færre linier end tilsvarende C eller Java kode.

It og informationssøgning Forelæsning oktober 2006 Nils Andersen

Forelæsning Uge 2 Torsdag

BOSK F2011, 1. del: Induktion

Forelæsning Uge 4 Mandag

Undervisningsbeskrivelse

Kursusarbejde 1 Grundlæggende Programmering. Arne Jørgensen, klasse dm032-1a

Martin Olsen. DM507 Projekt Del I. 19. marts 2012 FOTO: Colourbox

Lige siden den elektroniske computers opfindelse i slutningen af 1940, har det været muligt at få en computer til at beregne ting.

Forelæsning Uge 2 Mandag

Forelæsning Uge 2 Torsdag

Kapitel 3 Betinget logik i C#

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { int wmid, wmevent; programmering med

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007

Syntaks og syntaksgenkendelse, særligt regulære udtryk og tilstandsmaskiner og lidt om anvendelser i bioinformatik

Lektion 4. Grundlæggende programmering i VR

14 Algoritmeanalyse. Noter. Algoritmebegrebet. Hvad er algoritmeanalyse? Problemstørrelse og køretid. Køretid for forskellige kontrolstrukturer.

It og informationssøgning Forelæsning 7 1. november 2006 Jakob Grue Simonsen. Indlejring og Nedarvning

Kursus i OOP og Java. Kursus i Objektorienteret programmering i Java

Forelæsning Uge 3 Torsdag

Transkript:

Programmering 1999 Forelæsning 2, fredag 3. september 1999 Betingede ordrer: if-, if Indlejrede betingede ordrer Løkker med begrænset iteration: for Løkker med ubegrænset iteration: while Betingede ordrer, if public class Best { int karakter; karakter = Integer.parseInt(args[0]); Semikolon omdanner et udtryk til en ordre Tildeling og optælling: forkortede skrivemåder Programkommentarer og program-layout Generelt format: if (udtryk) ordre1 Programmering 1999 KVL Side 2-1 Programmering 1999 KVL Side 2-3 Repetition: betingede ordrer, if- public class Best { int karakter; karakter = Integer.parseInt(args[0]); System.out.println("Dumpet"); Husk: erklæring, variabel, tildeling, udtryk, ordre. En blok består af flere ordrer En række ordrer kan grupperes til én ordre med {... : En blok kan forekomme hvor som helst en ordre kan forekomme. { antalbestaaet = antalbestaaet + 1; Integer.parseInt(args[0]) konverterer tegnstreng (f.eks. "10") til heltal (10). Hvad ville der ske her? Generelt format for if- ordre: if (udtryk) ordre1 antalbestaaet = antalbestaaet + 1; ordre2 Programmering 1999 KVL Side 2-2 Programmering 1999 KVL Side 2-4

-problemet Hvad giver dette hvis x er 4: if (x > 5) if (y > 5) System.out.println("gren A"); System.out.println("gren B"); Regel: En -gren knytter sig til den seneste uafsluttede if. Man kan afslutte en if ved at lukke den inde i en blok: if (x > 5) { if (y > 5) System.out.println("gren A"); System.out.println("gren B"); Men det er langt bedre at bruge en for-løkke public class Sum1 { for (int n=1; n <= 10000; n = n + 1) System.out.println(sum); Ordren sum = sum + 1.0/n udføres 10000 gange, med n = ½ ¾ ½¼¼¼¼. Dvs. programmet beregner ¼ ½ ¼ ½ ½ ¼ ¾ ½ ¼ ½ ¼ ½¼¼¼¼. Brug gerne ekstra {... til at gøre meningen med en ordre klar. Ligesom man bruger ekstra (... ) til at gøre meningen med et regneudtryk klar. Programmering 1999 KVL Side 2-5 Programmering 1999 KVL Side 2-7 Løkke-eksempel 1: begrænset iteration Beregn summen for-løkker ÙÑ ½ ½ ½ En for-løkke har denne form: ½ Det kunne gøres sådan: ¾ for ( initialisering ; beting ; optælling ) ½¼¼¼¼ public class Sum0 { ordre sum = sum + 1.0/1; sum = sum + 1.0/2; sum = sum + 1.0/3; sum = sum + 1.0/4; sum = sum + 1.0/5; sum = sum + 1.0/6;... sum = sum + 1.0/10000; System.out.println(sum); Den virker sådan: (1) Udfør initialisering. (2) Udregn beting; hvisfalse, fortsæt efter løkken. (3) Udfør løkke-kroppen ordre. (4) Udfør optælling. (5) Fortsæt med punkt 2. Ordren under for kaldes løkkekroppen. Programmering 1999 KVL Side 2-6 Programmering 1999 KVL Side 2-8

Løkke-eksempel 2: Ubegrænset iteration Bestemt mindste n så Eksempler Standard-løkke, hvor i gennemløber 10, 9, 8, 7, 6, 5, 4, 3, 2, 1: for (int i = 10; i >= 1; i = i - 1) Det kan gøres sådan: public class Sum2 { ½ ½ ¾ ½ Ò ½¼ ½ Standard-løkke, hvor i gennemløber 1, 3, 5, 7, 9: for (int i = 1; i <= 10; i = i + 2) Standard-løkke, hvor i gennemløber 1, 2, 4, 8, 16, 32, 64: for (int i = 1; i <= 100; i = i * 2) int n = 0; n = n + 1; System.out.println(n); Løkken kører så længe sum < 10.Når løkken standser gælder altså sum >= 10. Programmering 1999 KVL Side 2-9 Programmering 1999 KVL Side 2-11 Opgaver Skriv en løkke hvor i gennemløber 64, 32, 16, 8, 4, 2, 1: for (int i = ; ; ) Skriv en løkke hvor i gennemløber 2,4,6,8,...,100: for (int i = ; ; ) Skriv en løkke hvor i gennemløber 100,110,120,...,200: for (int i = ; ; ) Løkker, while Generelt format: while (udtryk) ordre Den virker sådan: (1) udregn udtryk (2) hvis true, så udfør ordre, og fortsæt ved (1) Dvs. while-løkken kører sålænge betingn (udtryk) er sand. Indmaden i while kaldes løkkekroppen. Programmering 1999 KVL Side 2-10 Programmering 1999 KVL Side 2-12

Indlejrede løkker public class For2 { for (int i = 1; i <= 10; i = i+1) { for (int j = 1; j <= 5; j = j + 1) System.out.print("*"); System.out.println(); Den ydre løkke kører 10 gange med i ½ ¾ ½¼. For hvert i kører den indre løkke 5 gange med j ½ ¾. Ordren System.out.print("*") skriver en enkelt stjerne på skærmen. Ordren System.out.println() går til den næste linie på skærmen. Hvad vises på skærmen? Semikolon forvandler et udtryk til en ordre Mange ordrer består faktisk af udtryk. For eksempel er tildelingen i = 3 + 4 et udtryk (med værdien 7). Det har en bivirkning: det ændrer tilstanden ved at sætte i til 7. Semikolon efter et udtryk forvandler det til en ordre: i = 3 + 4; Denne ordre sætter i til 7. En ordre har ingen værdi. Semikolon forvandler et udtryk til en ordre ved at smide udtrykkets værdi væk. Husk: Intet semikolon efter en født ordre: if,while, osv Put semikolon efter en ordre lavet af et udtryk: tildeling, metodekald, osv. Put semikolon efter variabel-erklæringer. Der skal ikke semikolon efter en blok {... Hvad sker der hvis 5 erstattes med i? Programmering 1999 KVL Side 2-13 Programmering 1999 KVL Side 2-15 Ulykker Hvad er der galt her: og her for (int i=0; i < 10; i = i - 1) int j = 0; while (j < 10) { j = j + 0; System.out.println(j); if (x!= 0) { antal = antal + 1 if (x!= 0) sum = 0 if (x!= 0) { sum = 0 if (x!= 0) if (y!= 0) sum = sum + 1.0/y Programmering 1999 KVL Side 2-14 Programmering 1999 KVL Side 2-16

Tildeling, forkortede skrivemåder Udtryk Svarer til Virkning n += 1 n = n + 1 Læg 1 til n n -= 1 n = n - 1 Træk 1 fra n sum += n sum = sum + n Læg n til sum saldo *= (1 + rente) saldo = saldo * (1 + rente) Forøg saldo med rente rest /= 2 rest = rest / 2 Halvér rest Optælling og nedtælling Programkommentarer Erklæringer og ordrer er instrukser til datamaskinen. En programkommentar har ingen virkning på datamaskinen. Hvorfor skrive programkommentarer? Af hensyn til mennesker der skal læse programmet. En-liniers kommentarer // Solving the quadratic equation 2xˆ2 + 3x - 2 = 0 public class Quadratic1 {... Udtryk ++n --n n++ n-- Bivirkning og værdi Læg1tilnog returnér den nye værdi af n Træk 1 fra n og returnér den nye værdi af n Læg1tilnog returnér den gamle værdi af n Træk 1 fra n og returnér den gamle værdi af n Fler-liniers kommentarer /* Solving the quadratic equation 2xˆ2 + 3x - 2 = 0 sestoft@dina.kvl.dk 1997-09-04 */ public class Quadratic1 {... Programmering 1999 KVL Side 2-17 Programmering 1999 KVL Side 2-19 Programlayout, indrykning Eksemplet fra før n = n + 1; kan skrives kortere: n++; sum += 1.0/n; eller endda while (sum < 10) sum += 1.0/++n; Men det sidste er hverken klarere eller hurtigere. Indrykning har ikke nogen betydning for datamaskinen. Men for mennesker er det meget nemmere at læse int n = 0; n = n + 1; System.out.println(n); end at læse double sum=0; int n=0; n=n+1; sum =sum+1.0/n; System.out.println ( n ) ; Datamaskinen er ligeglad, men det er jeres lærer og instruktor ikke... Indryk altid underordnede linier (grenene i en if, kroppen i en løkke, indmaden i main,...) Programmering 1999 KVL Side 2-18 Programmering 1999 KVL Side 2-20

Oversigt over udtryk Udtryks-art Eksempel konstant 7 variabel x aritmetisk udtryk x + 1 optælling x++ logisk udtryk x > 0 metodekald Math.sqrt(d) betinget udtryk (x!= 0? 1/x : 1) Nyt i dag for-løkker: begrænset iteration while-løkker: ubegrænset iteration Semikolon, udtryk og ordrer Tildeling og optælling: forkortede skrivemåder Programkommentarer og program-layout Læsning for denne uge Lewis og Loftus, kapitel (2 og) 3, samt side 196 199 Opgaver til øvrne næste uge Se løbeseddel 1 Programmering 1999 KVL Side 2-21 Programmering 1999 KVL Side 2-23 Oversigt over ordrer Ordre-art Eksempel assignment x = x + 1; if-ordre if (x!= 0) y = 1/y; if--ordre if (x!= 0) y = 1/x; y = 0; metodekald System.out.println("Hello"); blok { x = 1; y = 1/x; System.out.print(y); for-løkke for (int i=1; i<100; i++) sum += i; while-løkke while (sum < 100) sum += 1; do-while-løkke do { sum += 1; while (sum < 100); switch switch (x) { case 0: y = 0; break; case 1: y = 117; break; default: y = 1/x; break Ordrer kan kun skrives inde i en metode (f.eks. i main), ikke ude i en klasse. Appendiks N i Lewis og Loftus indeholder en præcis syntaks for Java. Programmering 1999 KVL Side 2-22