GP4, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 4 Vi begynder 9.15. Slides ligger på hjemmesiden. Du er velkommen til.

Slides:



Advertisements
Lignende præsentationer
Torbenfeldvej Vallensbæk strand Tlf.: – – dagligt brug af vores hjemmeside •AGEN LYS har en stor og omfattende.
Advertisements

Velkommen til Softwarekonstruktion
Indledende Programmering Uge 2 - Efterår 2006 Selektioner og interaktion mellem objekter Susanne Brix Lindros.
KONCEPT Klasser og objekter En klasse beskriver et World ArrayList
Symbolsk maskinsprog.
Intro Forelæsning 2 Linux install-party lør.14.sept kl – man. 14.okt – Kursets omfang :7,5 ECTS Kursussammensætning: forelæsning.
GP 2, 13/ Grundlæggende programmering Forår 2002 Forelæsning 2 onsdag 13/ kl. 9:15 – 12:00.
Grundlæggende programmering Efterår 2001
GP10, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 10 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi.
GP9, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 9 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.
Intro Variabler - datatyper. 2. forelæsning Hvad skete sidste gang Hvad er PHP? Kursussammensætning: læse – newsgroup – forelæsning – øvelsestime – aflevering.
GP5, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 5 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.
GP 10, 7/ Grundlæggende programmering Efterår 2001 Forelæsning 10 onsdag 7/ kl. 9:15 – 12:00.
FEN IntroJava AAU1 Opsamling: afvikling af Java-programmer Input fra keyboard og fil Fra en prompt Fra BlueJ Fra NetBeans.
GP12, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 12 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi.
FEN IntroJava AAU1 Java grundelementer Variable og datatyper Sætninger og udtryk Metoder.
Intro Projekttyper v/ Lise Louv, Uddannelsesafdelingen Siden sidst: evaluering på opgaver og virtuel kursus. Kursets ugeforløb læse – forelæsning – øvelsestime.
Begreber og Redskaber 2 BRP.
1 Unified Expression Language Copyright © Lund & Bendsen A/S Unified Expression Language.
Anvendelser I Leg og spil.
Begreber og Redskaber 2. Plan for idag Noget om bestanddelene i et programmeringssprog Syntaksbeskrivelse af java Næste gang: –Binære tal –Repræsentation.
Intro til C# apps Kodegennemgang af simpel C# app
Delphi og C++ Builder C++ Builder. C++ Historie Sproget blev designet for AT&T af danskeren Bjarne Stoustrup En objektorienteret videreudvikling.
GP6, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 6 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.
Fundamentale datastrukturer
GP 8, 24/ Grundlæggende programmering Efterår 2001 Forelæsning 8 onsdag 24/ kl. 9:15 – 12:00.
GP 5, 26/ Grundlæggende programmering Efterår 2001 Forelæsning 5 onsdag 26/ kl. 9:15 – 12:00.
GP2, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 2 Vi begynder Slides ligger på hjemmesiden. Du er velkommen til.
Klasser.
GP8, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 8 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
GP 3, 12/ Grundlæggende programmering Efterår 2001 Forelæsning 3 onsdag 12/ kl. 9:15 – 12:00.
Paradigmer i Programmering 2. Sammensatte typer Tupler og lister Programmering med rekursion Programmering med pipe-lines Programmering med polymorfe.
Primitive typer. dIntProg, F08Typer.2 Subtyperelation for primitive typer byte ≤ short ≤ int ≤ long ≤ float ≤ double char boolean double d; int i; d =
GP7, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 7 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.
8 RÅD VEDRØRENDE GOD PROGRAMMERING Effective (brown) Java.
FEN IntroJava AAU1 Klasser og objekter Grundbegreber Student-Course.
Fundamentale sprogbegreber
Begreber og Redskaber 1. Plan for kurset Formål –Give et begrebsmæssigt grundlag for programudvikling, samt overblik over udvalg af redskaber og metoder.
C#: Udtryk og metoder Kilde: Joe Hummel. 2 Nordjyllands Erhvervakademi – 2008 Indhold “With regards to programming statements and methods, C# offers what.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
PD – kursusgang 3 Introduktion til Java Script. Mål Viden om hvordan JavaScripts indlejres i HTML dokumenter Viden om programmering i JavaScript  Erklæring.
Intro Siden sidst: evaluering på opgaver og virtuel kursus.
Opfølgning på Dygtig Skildpadde (Michael) To algoritmeskabeloner findEn findAlle Primitive typer (forfremmelse og begrænsning) Identitet versus lighed.
GP 4, 27/ Grundlæggende programmering Forår 2002 Forelæsning 4 onsdag 27/ kl. 9:15 – 12:00.
Grundlæggende programmering Forår 2002
GP9, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 11 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.
GP3, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 3 Vi begynder Slides ligger på hjemmesiden. Du er velkommen til.
Forelæsning 7.1 – repetition
Tekst filer Tekstfiler opbygges normalt af linier, hvor disse ikke behøver at være samme længde. Når man skal arbejde med tekstfiler, ønsker man metoder.
Identitet vs lighed. Spørgsmål Hvad udskriver run metoden? 1.”Ens!” 2.”Forskellige!” 3.Ved ikke public class Driver{ public static void run(){ String.
Paradigmer i Programmering 3. Højere ordens funktioner Idag: Højere ordens funktioner Algebraiske datatyper Næste gang: I/O, Filer, interaktive programmer.
Effective Java Blå gruppe. Item 18: Interfaces frem for abstrakte klasser Kan implementeres i klasser der ikke nedarver Eksisterende klasser kan nemt.
Begreber og Redskaber 4. Plan for idag Om metoder, parametre, returværdier Et par ord om objekt-orientering Håndkøring af programmer.
Begreber og Redskaber 3. Plan for idag Om metoder, parametre, returværdier Overblik over klasser,objekter,nedarvning Et par ord om objekt-orientering.
I o p o DAIMI, AU, November 1999Programkonstruktion I9E.1 Konstruktion og brug af klasser – en stak og en HP-regnemaskine push pop.
DAIMIIntroducerende objektorienteret programmering4B.1 Typer og tilstand i Java Typer, tilstand, erklæring, variable, primitive datatyper, reference- og.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6A.1 Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Programmering med interfaces Separering af specifikation, anvendelse og implementation.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Fundamentale sprogbegreber Typer. dIntProg, F08Typer.2 Typer Primitive typer –boolean –byte, char, short, int, long, float, double Objekttyper –klassetype.
DAIMIIntroducerende objektorienteret programmering4D.1 Betingelsessætninger if.
Forelæsning Uge 2 – Torsdag Java syntax og style guide Sætninger –Simple sætninger (assignment, interne og eksterne metodekald) –Sammensatte sætninger.
Algoritmeskabeloner findOne, findAll, findNoOf, findSumOf Primitive typer (forfremmelse og begrænsning) Identitet versus lighed (for objekter, herunder.
Forelæsning Uge 2 – Torsdag
Forelæsning Uge 4 – Mandag
Forelæsning Uge 2 – Mandag
Studiepraktik Thomas Bøgholm Mikkel Hansen Jacob Elefsen
Forelæsning Uge 2 – Mandag
Forelæsning Uge 4 – Torsdag
Præsentationens transcript:

GP4, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 4 Vi begynder Slides ligger på hjemmesiden. Du er velkommen til at printe dem nu. Martin Lillholm

GP4, Martin Lillholm 2 Obligatorisk opgave Var opgaven til i onsdags 1.For nem 2.For svær 3.Tilpas 4.Er der nogen, der ikke har afleveret fordi den slet ikke var til at få hul på? Generelle kommentarer... … eventuelt til sidst i dagens forelæsning

GP4, Martin Lillholm 3 Eksamensdato? Baggrund Er den nogen der ikke kan fredag den 6. januar? Indtil videre er det stadig onsdag den 4. januar der gælder! Jeg vender tilbage med status.

GP4, Martin Lillholm 4 Sidste gang Klasser, objekter (instanser) Felter (instans data) Metoder, konstruktører (lidt om statiske metoder og felter) Indkapsling Objektvariable String, Random, Math og Scanner klasserne Formatteret udskrivning Frames, paneler (kursorisk)

GP4, Martin Lillholm 5 Scanner klassen igen Indlæsning af flere (eksempelvis) tal på en linie:

GP4, Martin Lillholm 6 Formattering af telefonnumre Opgave fra sidst: L&L Programming Project DecimalFormat fmt = new DecimalFormat("00000"); System.out.println(fmt.format(23));

GP4, Martin Lillholm 7 Beskrivelser af Javas klassebibliotek Beskrivelser af Javas Klassebibliotek –Appendix M –

GP4, Martin Lillholm 8 Hvad har vi sprunget over? Tidligere: –Det binære talsystem –Opremsningstyper (enumerated types) –Wrapper klasser og autoboxing –OO – den rigtig store tur –GUI – andet end grafik I dag: –Iteratorer (iterators) afsnit 5.6

GP4, Martin Lillholm 9 Denne gang Afviklingsrækkefølge igen (flow of control) Boolske (logiske) udtryk Sammenligningsoperatorer og logiske operatorer (Relational and logical operators) Betingede sætninger og sammenligning af data –if og switch sætninger Løkkekonstruktioner –for, do, while konstruktioner Programblokke (block statements) Grafik med løkker og betingede sætninger

GP4, Martin Lillholm 10 Hvor passer dagens pensum ind? Programafviklingen starter i main og arbejder sig ordre for ordre igennem main – programafviklingsrækkefølgen (flow of control) Metodekald afvikler først ordrene i metodekroppen, men fortsætter derefter i main (med forbehold for eventuelle indlejrede metodekald) – opgaveabstraktion. Betingede forgreninger Gentagelser ordre1 ordre2 ordre3 ordre4 ordre1 ordre2 hvis (betingelse) ordre3 // sand ordre 4 eks. 10 gange Benyttes i metodekroppe herunder main

GP4, Martin Lillholm 11 Logiske udtryk (boolean expressions) Logiske udtryk  sand ( true ) eller falsk ( false ) Er af typen boolean I modsætning til aritmetiske udstryk  1, Er af typen integer, double,... Dannes normalt ved brug af sammenligningsoperatorer og logiske operatorer

GP4, Martin Lillholm 12 OperatorBetydningEksempel <Mindre end x < 60 <=Mindre end eller lig med x <= 60 >Større end x > 60 >=Større end eller lig med x >= 60 ==Lig med x == 60 !=Forskellig fra x != 60 Sammenligningsoperatorer (Relational operators) Argumenttyperne typisk integer, double, char (primitive typer) Resultattypen er boolean dvs. true eller false Binder svagere (har lavere præcedens) end de aritmetiske operatorer, >= binder stærkere end == og !=

GP4, Martin Lillholm 13 Logiske udtryk med sammenligningsoperatorer Eksempler ( x=2 og y=4 ): UdtrykVærdi false true true == falsefalse x != ytrue x < 3 + ytrue y < x + 3true (x + y > 3) == falsefalse false != x < 3true x == y == falsetrue

GP4, Martin Lillholm 14 Logiske operatorer (Logical operators) OperatorBetydningEksempel ! Ikke (negation, not) !(x == 60) && Og (konjunktion, and) 0<= x && x <= 60 || Eller (Disjunktion, or) x =60 Argumenttypen og resultattypen er boolean dvs. true eller false ! binder stærkere end && som binder stærkere end || ! binder også stærkere end sammenligningsoperatorerne og de aritmetiske operatorer && og || binder svagere end sammenligningsoperatorerne og de aritmetiske operatorer Hvis udtryk1 er falsk i udtryk1 && udtryk2 så udregnes udtryk2 ikke Hvis udtryk1 er sandt i udtryk1 || udtryk2 så udregnes udtryk2 ikke

GP4, Martin Lillholm 15 Logiske operatorer, sandhedstabeller x!x truefalse true xyx && yx || y false truefalsetrue false true

GP4, Martin Lillholm 16 Eksempler ( x=2 og y=4 ): Logiske udtryk med logiske operatorer UdtrykVærdi !falsetrue !truefalse !true == falsetrue !(true == false)true true && falsefalse false || truetrue (x + y > 3) && x < ytrue x + y == 3 || x < 4true x < y && (3*4 == 2*6-1*2+2) == !(3<x)true

GP4, Martin Lillholm 17 if ordren Benyttes til at påvirke programafviklingsrækkefølgen på baggrund af logiske udtryk Kan altså benyttes til træffe valg på baggrund af data –Er et tal større end et andet? –Ligger et tal i et vist interval eller udenfor? –Er to tegnstrenge ens? Benyttes typisk når vi vil –Reagere på data vi ikke kender når et program skrives –Indtastede tal, strenge mv. –Indlæsning fra fil –Tilfældige tal –... betingelse ordre(r) sand falsk

GP4, Martin Lillholm 18 if ordren – syntaks if ( udtryk ) ordre; if er et reserveret ord i Java Udtrykket skal være et logisk udtryk, som evaluerer til true eller false Hvis udtrykket er sandt (true) udføres ordre ellers springes ordre over

GP4, Martin Lillholm 19 if ordren – eksempler int a=5; if (a > 10) a = a – 5; System.out.println(”a er: ” + a); if (a>0 && a <=10) System.out.println(”a ligger i intervallet fra 1 til 10”); if (a 10) System.out.println(”a ligger udenfor intervallet fra 1 til 10”); if (a == 5) a = 3; if (a != 5) a = 5; if (a 10000) System.out.println(”a er negativt eller meget stort”);

GP4, Martin Lillholm 20 if ordren – eksempel Begrænsninger ? Enten eller... flere sætninger i ”sand-grenen”

GP4, Martin Lillholm 21 if-else ordren Syntaks (diagram side 210) if (udtryk) ordre1; else ordre2; Eksempler: if (level > MAX) System.out.println(”Level Critical!”); else System.out.printlnt(”Level ok”); if (a > b -.01 && a < b +.01) a = b; else System.out.println(”a is different from b”); betingelse ordre1 sandfalsk ordre2

GP4, Martin Lillholm 22 if-else – eksempel

GP4, Martin Lillholm 23 if-else – eksempel

GP4, Martin Lillholm 24 Ordrer i blokke (block statements) if (a > b) // swap a and b tmp = a; a = b; b = tmp; else a = a + 1; if (a > b) { // swap a and b tmp = a; a = b; b = tmp; } else a = a + 1; {... } bruges til at samle ordrer i blokke ligesom for klasser, konstruktører og metoder En blok kan benyttes, hvor vi eller ville benytte en enkelt ordre Indrykningen betyder rent logisk intet, men betyder meget for læseren!

GP4, Martin Lillholm 25 Ordrer i blokke - eksempel

GP4, Martin Lillholm 26 Indlejrede if ordrer – eksempel

GP4, Martin Lillholm 27 Indlejrede if ordrer – en faldgrube if (b < 0) if (a < b) System.out.println(”Både a og b er negative”); else System.out.println(”b er negativ”); if (b < 0) { if (a < b) System.out.println(”Både a og b er negative”); } else System.out.println(”b er negativ”); else binder altid til nærmeste ikke matchede if – NB {} ’er

GP4, Martin Lillholm 28 Sammenligning af data Heltalstyper ( integer, long, short, byte ) sammenlignes som hidtil. Decimaltalstyper ( float, double ) er stadig ikke præcise, derfor sammenlignes de inden for en valgt tolerance og ikke direkte med == final double TOLERANCE = ; if (Math.abs(f1-f2) < TOLERANCE) System.out.println(”f1 and f2 are approx. equal”); Tegntypen char sammenlignes vha. tegnets (bogstavets) Unicode: ’0’.. ’9’ < ’A’.. ’Z’ < ’a’... ’ z’ Men hvad med æøå og ÆØÅ (Appendix C side 674).

GP4, Martin Lillholm 29 Sammenligning af data (objekter) Vi kan tænke på strenge som en liste (fra venstre mod højre) af tegn og får dermed en naturlig ordning (leksikografisk orden) ”Martin” før ”anders”, ”have” før ”haveslange” Vi kan dog ikke bruge eksempelvis == og <= direkte equals og compareTo metoder i String klassen if (name1.equals(name2)) System.out.println (”The names are the same”); else System.out.println (”The names are not the same”); int result = nam1.compareTo(name2); if (result < 0) System.out.println(name1 + ” comes before ” + name2); else if (result == 0) System.out.println (”The name are the same”); else System.out.println (name1 + ” follows ” + name2);

GP4, Martin Lillholm 30 Sammenligning af data (objekter) Vi vender tilbage til sammenligning af objekter i almindelighed. Men == mellem objekter sammenligner referencerne!

GP4, Martin Lillholm 31 switch ordren Alternativ konstruktion til at vælge de(n) næste ordre der udføres På baggrund af et udtryk vælges en mulighed fra en given liste af mulige værdier eller måske en ’standard’ mulighed Programafviklingen fortsætter ved den mulighed der er lig med udtrykkets resultat switch (option) { case 'A': aCount++; break; case 'B': bCount++; break; case 'C': cCount++; break; default: System.out.println(”No match”); }

GP4, Martin Lillholm 32 switch ordren Betydningen af break Betydningen af default Implicitte blokke Udtrykket skal være en integral type: ( int, char eller (opremsningstype)) ”Indgangene” skal være konstanter Kan skrives ved hjælp af en række indlejrede if ordrer

GP4, Martin Lillholm 33 switch – eksempel

GP4, Martin Lillholm 34 while løkker Bruges til at gentage en ordre eller en blok 0 eller flere gange while (udtryk) (syntakdiagram L&L side 228) ordre; Hvis udtryk evalueres til true udføres ordre udtryk evalueres igen og hvis det evalueres til true udføres ordre igen Sådan fortsættes indtil udtryk evalueres til false int count = 1; while (count <= 5) { Sytem.out.println (count); count++; } logisk udtryk ordre sand falsk betingelse

GP4, Martin Lillholm 35 while løkker – eksempel

GP4, Martin Lillholm 36 while løkker – eksempel

GP4, Martin Lillholm 37 Uendelig uløkke int count = 1; while (count <= 25) { System.out.println (count); count = count - 1; } while (true) { System.out.println (”This will take a while...”); } int j = 0; while (j < 10) { j = j + 0; System.out.println(j); } double num = 1.0; while (num != 0.0) num = num – 0.1;

GP4, Martin Lillholm 38 Indlejrede løkker int count1, count2; count1 = 1; while (count1 <= 10) { count2 = 1; while (count2 <= 50) { System.out.println(”Here again”); count2++; } count1++; }

GP4, Martin Lillholm 39 Indlejrede løkker

GP4, Martin Lillholm 40 do løkker Minder meget om while løkker, men udføres altid mindst en gang do ordre; while (udtryk) Syntaksdiagram L&L side 243 int count = 0; do { count++; System.out.println(count); } while (count < 5); sand betingelse ordre falsk logisk udtryk

GP4, Martin Lillholm 41 do løkker – eksempel

GP4, Martin Lillholm 42 for løkker for ( initialisering ; betingelse ; forhøjelse ) ordre; Initialiseringen bliver udført en gang inden løkken begynder ordren udføres indtil betingelse bliver falsk “forhøjelse” udføres i slutningen af hver iteration

GP4, Martin Lillholm 43 for løkker statement true condition evaluated false increment initialization

GP4, Martin Lillholm 44 Eksempler på for løkker int i; for (i=0; i<10; i++) System.out.println(”i:” + i); for (int j=1; j<10; j++) System.out.println(”j:” + j); for (i=9; i >= 0; i--) { k = i + 2; System.out.println(”k:” + k); } –L&L Multiples.java ( side 248 ) –L&L Stars.java ( side 250 )

GP4, Martin Lillholm 45 Alle løkker kan det samme... while do for

GP4, Martin Lillholm 46 Gode råd om erklæringer og initialiseringer Erklær (altid) variable så lokalt så muligt Erklær (altid) variable tæt på hvor de bruges første gang Erklær eventuelle løkke-/tællevariable tæt på eller i selve løkkekonstruktionen ( for løkker).

GP4, Martin Lillholm 47 Grafik med løkker –Bullseye.java og BullseyePanel.java i BlueJ (L&L side ) –Boxes.java (L&L side )

GP4, Martin Lillholm 48 Denne uges første opgave Tal i skuffen – L&L Programming Projects 5.8 Nogen ideer ?

GP4, Martin Lillholm 49 Mini-evaluering Kommentarer ?