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

Slides:



Advertisements
Lignende præsentationer
Atomer Et programmeret forløb. En måde at lære på.
Advertisements

Velkommen til Softwarekonstruktion
Trivselsundersøgelse og ledelsesevaluering
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.
Oversættelse af Java-programmer JavaBytecode javac Normalt oversættes Java-programmer til bytecode, som fortolkes af en JVM (Java Virtual Machine). Java.
Grundlæggende programmering Efterår 2001
GP 4, 19/ Grundlæggende programmering Efterår 2001 Forelæsning 4 onsdag 19/ kl. 9:15 – 12:00.
Grundlæggende Programmering (GP) Efterår Forelæsning 1 – Velkommen
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.
Hvordan man skriver koden.
01 – Java platform for starters. 2 NOEA2009Java-kursus – Java Platform Introduktion til Java Baggrund Hvad er Java? Faciliteter i Java.
Intro Variabler - datatyper. 2. forelæsning Hvad skete sidste gang Hvad er PHP? Kursussammensætning: læse – newsgroup – forelæsning – øvelsestime – aflevering.
Structs Structs allokeres på stakken Memory-allokering sker ved oprettelse af variabel og ikke ved new Der kan defineres metoder incl. Constructor. Eksempel.
Kursus om borger.dk og brugen af digital signatur
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.
FEN IntroJava AAU1 Opsamling: afvikling af Java-programmer Input fra keyboard og fil Fra en prompt Fra BlueJ Fra NetBeans.
FEN IntroJava AAU1 Java grundelementer Variable og datatyper Sætninger og udtryk Metoder.
Trivselsundersøgelse og ledelsesevaluering Anæstesiologisk Afdeling Flere ledere
Begreber og Redskaber 2 BRP.
Delphi og C++ Builder C++ Referencer og pointere.
Begreber og Redskaber 2. Plan for idag Noget om bestanddelene i et programmeringssprog Syntaksbeskrivelse af java Næste gang: –Binære tal –Repræsentation.
Matematik B 1.
Claus Brabrand, ITU, Denmark Mar 10, 2009EFFECTIVE JAVA Effective Java Presentation Workshop Claus Brabrand [ ] ( “FÅP”: First-year Project.
Intro til C# apps Kodegennemgang af simpel C# app
Begreber og Redskaber 3 BRP.
Rapporter (Access, del 5). RHS – Informationsteknologi – Udgangspunkt Vi har oprettet en database Vi har defineret en eller flere tabeller, og.
1 Tråde 2 Plan Trådbegrebet Synkronisering Koordinering Eksempel: et flertrådet spil.
Grunde til at jeg elsker dig
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.
Claus Brabrand, ITU, Denmark Mar 17, 2009Projekt: “Visualisering” Claus Brabrand [ ] ( “FÅP”: First-year Project Course, ITU, Denmark )
Fundamentale datastrukturer
GP 5, 26/ Grundlæggende programmering Efterår 2001 Forelæsning 5 onsdag 26/ kl. 9:15 – 12:00.
Objekter og klasser Rasmus D. Lehrmann DM
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.
Procestræ under afvikling af cp init login shell cp cp src dest.
Primitive typer. dIntProg, F08Typer.2 Subtyperelation for primitive typer byte ≤ short ≤ int ≤ long ≤ float ≤ double char boolean double d; int i; d =
8 RÅD VEDRØRENDE GOD PROGRAMMERING Effective (brown) Java.
FEN IntroJava AAU1 Klasser og objekter Grundbegreber Student-Course.
PD – kursusgang 3 Introduktion til Java Script. Mål Viden om hvordan JavaScripts indlejres i HTML dokumenter Viden om programmering i JavaScript  Erklæring.
Opfølgning på Dygtig Skildpadde (Michael) To algoritmeskabeloner findEn findAlle Primitive typer (forfremmelse og begrænsning) Identitet versus lighed.
GP4, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 4 Vi begynder Slides ligger på hjemmesiden. Du er velkommen til.
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.
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.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6B.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
DAIMIIntroducerende objektorienteret programmering4B.1 Typer og tilstand i Java Typer, tilstand, erklæring, variable, primitive datatyper, reference- og.
Klasser og objekter. dIntProg, E08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
DAIMIIntroducerende objektorienteret programmering3B.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
DAIMIIntroducerende objektorienteret programmering4B.1 Grundlæggende og Reference Typer i Java Typer, tilstand, erklæring, reference- og værdi semantik,
 Jens Bennedsen 2001Multimedie programmering1.1 Skildpadder Modeller, objekter og opførsel.
Fundamentale sprogbegreber Typer. dIntProg, F08Typer.2 Typer Primitive typer –boolean –byte, char, short, int, long, float, double Objekttyper –klassetype.
Klasser og objekter. dIntProg, F08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence s; int i; int j; Sequence s; String s; int i; int j;
I o p o DAIMI, AU, September 1999Introducerende objektorienteret programmering5C.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence s; int i; int j; Sequence s; String s; int i; int j;
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 4 – Mandag
Forelæsning Uge 2 – Mandag
Klasser og objekter (Afsnit i manualen).
Forelæsning Uge 2 – Mandag
Forelæsning Uge 4 – Torsdag
Præsentationens transcript:

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

GP2, Martin Lillholm 2 Praktiske Oplysninger Nyhedsgruppe –it-c.courses.GP –Via Afleveringsopgaver –Offentliggøres onsdag (senest fredag); afleveres senest efterfølgende onsdag –Afleveres til René Kofoed –I grupper af to personer –Papirkopi med ”rapport”, programmer og dokumenteret uddata i dueslag foran studieadministrationen –Forside med kursusnavn, instruktornavn og navn(e) og CPR-numre på gruppens medlemmer (maks. 2) – med programmer i teksformat (ASCII), der kan oversættes... såfremt I fik det til at virke... –Står altsammen i opgaveformuleringen...

GP2, Martin Lillholm 3 Sidste gang En datamats opbygning og miljø –CPU, primært lager, sekundært lager, ydre enheder, netværk, internet, WWW Programmeringsprocessen –Problem, løsningsforslag (Algoritmer+datastrukturer), implementation (programmering), fejlretning, afprøvning (Java) programmer –Klasser, objekter, syntaks, semantik, reserverede word, Java programmers ”anatomi” Oversættelse og programafvikling –Kildekode, editor (ex. Notepad ); byte-kode, oversætter ( javac ), afvikling, køretidsmiljø ( java ). Tre slags Java programmer –”Almindelige” via konsol, programmer med GUI, Appletter

GP2, Martin Lillholm 4 Denne gang Mere om oversættelse, køretidsmiljø, klasser, objekter, Java programmers anatomi Navne (identifiers) Variable (variables) Typer (types) Operatorer (operators) Udtryk (expressions) Bibliotekter (libraries) Mere om Appletter, GUI og grafik

GP2, Martin Lillholm 5 Hvad er programmering egentlig… Problem / opgave Analyse Algoritmer + datastrukturer Design (evt. OO) Implementation (i eksempelvis Java) Oversættelse Afprøvning Find det største af 10 positive tal …

GP2, Martin Lillholm 6 Fra kildekode til ”kørende program” (Java) Kildekode (Editor) Oversætter Hello.java tekst (ASCII) Hello.class (Java mellemkode eng. bytecode) Resultat Fortolker (JVM) Java Virtual Machine JIT Opgave Løsningsforslag

GP2, Martin Lillholm 7 Oversættelsestid og køretid Kildekode Oversætter Fortolker (JVM) Syntaks- og typefejl Køretids- og løsningsfejl

GP2, Martin Lillholm 8 Java programmers elementer (igen) White spaces –mellemrum (space), tabulator stop ( \t ), linieskift ( \n ) Kommentarer // Enkelt linies kommentarer /* Kommentarer over flere linier... */ Reserverede ord; grundstammen af Java. Navne (Identifiers)

GP2, Martin Lillholm 9 Et Java programs anatomi class KlasseNavn { felter; // objekternes tilstand konstruktører; // kaldes ved instantiering metoder // objekternes arbejdsheste public static void main (String[] args) { lokale variable, kommandoer, udtryk... } Flere klasser i samme fil... kun én med main metode.

GP2, Martin Lillholm 10 Navne (Identifiers) Bruges til alle programelementer der skal/kan navngives: –Klasse –Felt –Metode –Parameter –(Lokal) variabel, –Pakker Regler for navne: –Skal begynde med et Java bogstav –Derefter et valgfrit antal Java bogstaver eller Java tal –Java bogstav: A,...,Z, a,...z, $, _ (plus diverse...) –Java tal: 0,...,9 –Ingen mellemrum! –Syntaksdiagram... (side 32 L&L)

GP2, Martin Lillholm 11 Mere om Navne Eksempler: –Lovlige: HelloWorld, HelloGUI, label, i, j,... –Ulovlige eksempler: 3label, !navn Konventioner –Klasser, pakker med stort begyndelsesbogstav og store bogstaver for hver nyt ord: HelloApplet –Felter, parametre, variable, metoder med lille begyndelsesbogstav og store bogstaver for hvert nyt ord: labelColor –(Navngivne) konstanter udelukkende med store bogstaver og en _ (underscore) til at adskille ord: MAX_HEIGHT –Se i øvrigt L&L appendiks F

GP2, Martin Lillholm 12 Konstantudtryk (Literals) Benyttes til at give programmer konkrete data/”oplysninger” Inddelt i en række typer –Tal int: double: 0.1, -45, –Bogstaver char: ’a’ ’3’ ’K’ ’ ’ (I virkeligheden også tal: ASCII (256), UNICODE(65536)) –Tekststrenge string: ”Hello World” ”Velkommen til GP!” ”h” ”” Escape Sequences: L&L side 67 –Boolske værdier (sandhedsværdier) Boolean: true false

GP2, Martin Lillholm 13 Et eksempel

GP2, Martin Lillholm 14 Metoder – runde et Metoder benyttes til at navngive og samle kommandoer er løser en bestemt opgave Metoder kan modtage oplysninger (parametre/argumenter) og returnerer oplysninger (returværdi) Metoder kaldes typisk af andre metoder... Programafviklingen starter altid i en metode – main -metoden Metoder og opgaveabstraktion

GP2, Martin Lillholm 15 Mere om metoder int metodenavn (int a, int b) { // metode krop variabelErklæring1; kommando1; kommando2; variabelErklæring2;... kommando3; return... } int, double, char, boolean, string Skal nu se på kroppens ”indmad”.

GP2, Martin Lillholm 16 Lokale variable En navngiven plads i lageret/hukommelsen der kan tildeles en værdi og aflæses en eller flere gange. Pladsen allokeres af operativsystemet. En variabel er lokal når den erklæres i en metode En variable har altid en type –Primitive typer: Heltal: byte, short, int, long Bogstaver: char Decimal tal: float, double Boolske værdier: boolean Hvorfor typer? Lagerplads, robusthed.

GP2, Martin Lillholm 17 Typer af tal... Type byte short int long float double Lager 8 bits 16 bits 32 bits 64 bits 32 bits 64 bits Min Værdi ,768 -2,147,483,648 < -9 x /- 3.4 x med 7 betydende cifre +/- 1.7 x med 15 betydende cifre Max Værdi ,767 2,147,483,647 > 9 x 10 18

GP2, Martin Lillholm 18 Erklæring af variable En variable skal erklæres inden den kan benyttes i en metode (final) type identifier; int height; char firstLetter; boolean isDigit; String firstName; Syntaksdiagram L&L side 69

GP2, Martin Lillholm 19 Tildelinger En variable kan tildeles en værdi med en tildelingssætning. Variable tildeles enten et konstantudtryk eller resultatet af et udtryk; se senere. Syntaksdiagram L&L side 72 height = 23; firstLetter = ’m’; isDigit = true; firstName = ”Martin”;

GP2, Martin Lillholm 20 Samtidige erklæringer og initialisering Flere variable af samme type kan erklæres på samme linie Variable kan (initialiseres) tildeles værdier når de erklæres int height, weight=50, size; char firstLetter=’M’; double num1 = 12.23, num2, num3=-23.0; Syntaksdiagram L&L side 69 Højre og venstre side i tildelingssætninger

GP2, Martin Lillholm 21 Eksempel 1

GP2, Martin Lillholm 22 Eksempel 2

GP2, Martin Lillholm 23 Konstanter Konstanter benytte til at navngive størrelser der benyttes en eller flere gange i løbet af et program, men som ikke ændrer størrelse. Eksempelvis matematiske konstanter som PI ; alternativt en maksimalt tilladt højde MAX_HEIGHT. Hvor for nu det? Skal kun ændre et sted. Navngivning er beskrivende. Erklæres og initialiseres samtidig. Kan ikke tildeles en ny værdi. Erklæres og initialiseres som varibable, men med et final foran: final int MAX_HEIGHT = 180; final double PI = ;

GP2, Martin Lillholm 24 Udtryk Et udtryk er en kombination af en eller flere operander og operatorer; for det meste beregninger. Se dog strenge senere. Et aritmetrisk udtryk beregner numeriske resultater og benytter 0 eller flere af aritmetriske operatorer + - * / % (binære og unære operatorer) Hvis en eller flere operander er af en decimaltals type (float, double) bliver resultattypen den tilsvarende decimaltalstype. Udtryk kan indeholde variable. Variable der indgår i udtryk bliver kun ”aflæst” og ændre ikke værdi. Udtryk kan være højresiden i tildelingssætninger (syntaksdiagram side 72) Eksempel 2 igen.

GP2, Martin Lillholm 25 Eksempler på udtryk *414 10/52 10/ /4, 10/4.0, 10.0/ int i=4, int j=4; int k; k = i+j;8 k = k+4;12 double x=3, double y=1; double z; z = x/y + 4;7.0 z = 1/3;0 z = 1.0/3;1/3=

GP2, Martin Lillholm 26 Operator Præcedens Udtryk evalueres før tildeling. Udtryk evalueres generelt fra venstre mod højre, dog Har multiplikation og division højere præcedens end addition og division. Parenteser kan gennemtvinge anden række følge. Præcedens niveauOperator 1Unært + - 2* / % = Rest ved heltalsdivision Strengsammensætning

GP2, Martin Lillholm 27 Eksempler på udtryk og evalueringsrækkefølge a + b + c + d + e 1432 a + b * c - d / e 3241 a / (b + c) - d % e 2341 a / (b * (c + (d - e))) 4123 Hvis du er i tvivl: Brug parenteser, men med omtanke.

GP2, Martin Lillholm 28 Eksempel

GP2, Martin Lillholm 29 Typekonvertering Java er et stærkt typet sprog. Det kan være nødvendigt og/eller behændigt at kunne konvertere mellem typer. F.eks. ønsker vi nogen gange at benytte et heltal som et decimaltal. Det ændrer ikke på variablens type eller værdi, men kan benyttes som en del af eksempelvis udtryk. Skal altid passe på ikke at tabe information i forbindelse med konverteringer.

GP2, Martin Lillholm 30 Type konvertering Widening konvertering: fra en ”mindre” datatype til en ”større”. short -> int, float -> double. Er i reglen sikre og ingen information går normalt tabt. Narrowing konvertering: fra en ”større” type til en ”mindre”. int -> shot, double -> float. Er i reglen usikre og information vil gå tabt.

GP2, Martin Lillholm 31 Tildelingskonvertering Tildelingskonvertering (assignment conversion) sker når en variabel af en type bliver tildelt til en variabel af en anden type Kun Widening konvertering ved tildeling Typen og værdien af variablen på højresiden ændres ikke int dollars; float money; money = dollars // dollars værdi konverteres // automatisk til en float

GP2, Martin Lillholm 32 Forfremmelseskonvertering Forfremmelse (promotion) sker når operatorer forfremmer deres operander float sum, average; int count; average = sum/count; Sker også ved strengsammensætning; se senere

GP2, Martin Lillholm 33 Tvungen typekonvertering (casting) Tvungen typekonvertering er et ”voldsomt” værktøj og bør benyttes med omtanke. Både widening og narrowing er muligt med casting. Gøres ved at sætte den ønskes type i parenteser foran et udtryk. int total, count; float average; average = (float) total/count;

GP2, Martin Lillholm 34 Strenge Literaler: ”Martin Lillholm” Strengvariable - tænk indtil videre på dem som almindelige variable... String name = ”Martin Lillholm”; System.out.println(name); System.out.println(”Martin Lillholm”); System.out.print(name);

GP2, Martin Lillholm 35 Strengsammensætning (string concatenation)

GP2, Martin Lillholm 36 Lidt om grafik og billeder Digitale billeder og/eller grafik består af punkter (pixels) Et billede er typisk ordnet som et rektangel Bredden og højden målt i antal pixels kaldes billedets opløsning (resolution) Det antal (igen bredde og højde) pixels en skærm kan vise kaldes skærmens opløsning

GP2, Martin Lillholm 37 Koordinatsystem Hvert punkt i et billede eller på en skærm kan identificeres ved et koordinatpar (x,y) Java og mange andre computersystemer benytter et koordinatsystem med origo i øverste venstre hjørne: Y X(0, 0) (112, 40)

GP2, Martin Lillholm 38 Sort/hvid, gråtoner og farver Sort/hvide billeder repræsenteres typisk som 0=sort og 1=hvid Gråtonebilleder som et tal mellem (8-bit) Farvebilleder som en triple (R,G,B), der repræsenterer en blanding af primærfarver rød, grøn og blå R,G og B er typisk tal mellem 0 og 255 –(0,0,0) er sort –(255,255,255) er hvid –(128,128,128) er en gråtone ”halvvejs” mellem sort og hvid –(255,0,0) er rød … osv.

GP2, Martin Lillholm 39 Klassen Color Farver i Java repræsenteres ved hjælp af klassen Color, der er indeholdt i pakken java.awt Klassen indeholder en del foruddefinerede farver: Objekt Color.black Color.blue Color.cyan Color.orange Color.white Color.yellow RGB værdier (0, 0, 0) (0, 0, 255) (0, 255, 255) (255, 200, 0) (255, 255, 255) (255, 255, 0)

GP2, Martin Lillholm 40 Appletter Et almindeligt Java-program kan køres selvstændigt – ved hjælp af javas køretidsmiljø ( java ) En Java applet er beregnet til at blive overført via nettet og udført i en browser Alternativt kan den udføres med appletviewer En applet har ikke en main -metode paint -metoden kan eksempelvis benyttes i stedet paint -metoden modtager en parameter af typen Graphics Graphics objekter definerer blandt andet en ”tegne-kontekst” Eksempel: Einstein.java (L&L side 97)

GP2, Martin Lillholm 41 Html-skal til appletten Einstein The Einstein Applet

GP2, Martin Lillholm 42 Stregtegning med Graphics X Y page.drawLine (10, 20, 150, 45); page.drawLine (150, 45, 10, 20); eller

GP2, Martin Lillholm 43 Rektangler med Graphics X Y page.drawRect (50, 20, 100, 40);

GP2, Martin Lillholm 44 Ovaler med Graphics X Y page.drawOval (175, 20, 50, 80); bounding rectangle

GP2, Martin Lillholm 45 Sodoku (Hvis tiden tillader det )