Forelæsning Uge 2 Torsdag

Relaterede dokumenter
Fundamentale sprogbegreber

Forelæsning Uge 2 Mandag

Forelæsning Uge 2 Mandag

Forelæsning Uge 2 Mandag

Forelæsning Uge 2 Mandag

Forelæsning Uge 2 Torsdag

Forelæsning Uge 2 Torsdag

Forelæsning Uge 2 Torsdag

Klasser og objekter. (Afsnit i manualen)

Forelæsning Uge 3 Mandag

Forelæsning Uge 4 Mandag

Forelæsning Uge 2 Mandag

Forelæsning Uge 4 Mandag

Forelæsning Uge 1 Torsdag

Forelæsning Uge 1 Torsdag

Forelæsning Uge 4 Mandag

Forelæsning Uge 4 Torsdag

Forelæsning Uge 4 Torsdag

Opfølgning på Dygtig Skildpadde (Michael) To algoritmeskabeloner

Kursus navn: Indledende programmering Kursus nr

Forelæsning Uge 3 Torsdag

Forelæsning Uge 3 Torsdag

Greenfoot En kort introduktion til Programmering og Objekt-Orientering

Studiepraktik. Thomas Bøgholm Mikkel Hansen Jacob Elefsen

Forelæsning Uge 5 Mandag

Forelæsning Uge 4 Torsdag

Forelæsning Uge 6 torsdag repetition

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

Noter til C# Programmering Iteration

Forelæsning Uge 6 torsdag repetition

Virkefeltsregler i Java

Forelæsning Uge 3 Mandag

Forelæsning Uge 3 Mandag

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

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

Polymorfi. Arv (inheritance) Abstrakte klasser, substitutionsprincippet, overriding, statisk og dynamisk type. Coercion

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

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

DRONNINGER (QUEENS) Opgave 1

Forelæsning Uge 3 Mandag

Ugeseddel 4 1. marts - 8. marts

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

Forelæsning Uge 10 Torsdag

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

Noter til C# Programmering Selektion

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

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

#AlleKanKode. Lektion 2 - Konstanter og Variabler

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

Kapitel 3 Betinget logik i C#

Python programmering. Per Tøfting. MacFest

Tree klassen fra sidste forelæsning

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

Vejledende løsninger

Programmering i C. Lektion september 2009

Eksempel: Skat i år 2000

Forelæsning Uge 3 Torsdag

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

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

b) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne.

Forelæsning Uge 12 Torsdag

Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version

Forelæsning Uge 12 Mandag

COMPUTERSPIL 1. Opgave 1. Opgave 2

DANMARKS TEKNISKE UNIVERSITET

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

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

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.

Forelæsning Uge 3 Torsdag

Baggrundsnote om logiske operatorer

Sproget Rascal (v. 2)

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

Anvendelse af metoder - Programmering

Forelæsning Uge 3 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.

Python 3 kursus lektion 1:

Forelæsning Uge 6 Mandag

BRP Tal. Om computer-repræsentation og -manipulation. Logaritmer

Skriftlig eksamen i Datalogi

Start på Arduino og programmering

Eksamens spørgsmål i Java HTML - DataBase 3. Semester (i)

Skriftlig eksamen i Datalogi

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

Kapitel 4 Løkker i C#

Programmering. Det rent og skært nødvendige, det elementært nødvendige! Morten Dam Jørgensen

#AlleKanKode. Lektion 4 - Kontrol flow

Datalogi OB, Efterår 2002 OH er, forelæsning 10/ Klasser og nedarvning

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

Lær Python dag 1 - modul 1

Forelæsning Uge 5 Mandag

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

BOSK F2011, 1. del: Udsagnslogik

DM507 Algoritmer og datastrukturer

Forelæsning Uge 5 Mandag

Bits, bit operationer, integers og floating point

JavaScript. nedarvning.

PHP Snippets. De små korte. Skrevet af Daniel Pedersen

Design by Contract Bertrand Meyer Design and Programming by Contract. Oversigt. Prædikater

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

Transkript:

Forelæsning Uge 2 Torsdag Java syntax og style guide Sætninger Simple sætninger (assignment, interne og eksterne metodekald) Sammensatte sætninger (blok, selektion, gentagelse) Udtryk og operatorer Brug af BlueJ s Code Pad Afleveringsopgave: Skildpadder (Turtles)

Syntaktiske elementer i Java Reserverede ord (keywords) class, new, public, private Navne (identifiers) Person, int, boolean, String, Date, p, a, turn, move, day, month, year,... Konstanter (literals) "Aarhus Universitet", 1928, 5.78, true,... Specialtegn (special characters) ; ( ). { = + == < <= // /* */ /**... Luft (white space) linjeskift, mellemrum, tab,... kan indsættes vikårligt mellem syntaktiske elementer uden at betydningen påvirkes 2

Java style guide Navngivning Navne skrives på engelsk (eller amerikansk) og skal være velvalgte (beskrivende) Klasser: med stort CamelCase eks.: Person, String, NumberDisplay, Variabler og metoder: med lille camelcase eks.: firstname, trackname, displaystring Indrykning Alt mellem { rykkes ét hak ind For hvert ekstra niveau af { rykkes endnu et hak ind public class Person { private int age; public Person() { age = 32; BlueJ editor public class Person { private int age; public Person() { age = 32; Mine slides BlueJ styleguide: http://www.bluej.org/objects-first/styleguide.html Link 3

Hvad gør nedenstående kode? 4

Hvad gør nedenstående kode? Præcis det samme Det er de samme instruktioner De er nu meget lettere at læse og forstå Vi har været omhyggelige med linjeskift og indrykningerne, og brugt editorens Auto-layout funktion Bemærk at editoren bruger farver til at vise kodens komponenter Grøn: Klassen Gul: Konstruktører og metoder Gråtoner: if-sætninger, for-løkker og lignende Hvid: simple sætninger 5

Simple sætninger Assignment udregner værdien af udtrykket på højresiden og tildeler denne værdi til variablen på venstresiden v = exp; x = x + 1; x = 3 * w.getleaveseaten(); Internt metodekald (i samme objekt) method( ); move(100); turn(90); Eksternt metodekald (i andet objekt) object-reference.method( ); w.eatleaf(); c.moveto(200,300); 6

Interne metodekald public class Wombat extends Actor { public boolean foundleaf(){... UML sekvensdiagram w: Wombat public void eatleaf(){... leaveseaten= leaveseaten + 1; act() public void act() { if ( foundleaf() ) { foundleaf() eatleaf();... eatleaf() 7

Eksterne metodekald public class AnimalTrainer {... private SkilledTurtle t;... t = new SkilledTurtle();... public void doshow() { t.square(50); t.square(100); t.boxes(10); UML sekvensdiagram a: AnimalTrainer t: SkilledTurtle doshow() square(50) square(100) boxes(10) 8

Sammensatte sætninger Blok (sekvens) { S1 S2 Sn Selektion (valg) if ( exp ) S1 if ( exp ) S1 else S2 Iteration (gentagelse) for (exp1; exp2; exp3) S while ( exp ) S 9

Eksempel på blok (sekvens) public void settime(int hour, int minute) { hours.setvalue(hour); minutes.setvalue(minute); updatedisplay(); Blok med to eksterne og et internt metodekald 10

Eksempel på selektion (valg) public void timetick() { minutes.increment(); if ( minutes.getvalue() == 0 ) { // it just rolled over! hours.increment(); updatedisplay(); Hvis minut-værdien er lig med 0, er vi netop startet på en ny time, og time-værdien skal derfor tælles op 11

Eksempel på selektion (valg mellem to) public String getdisplayvalue() { if ( value < 10 ) { return "0" + value; else { return "" + value; Hvis et af argumenterne til + operatoren er en streng, konverteres det andet argument automatisk til en streng (og + betyder konkatenation) Kan denne del undværes? Nej. Så returnerer vi værdien af feltvariablen value, som er et heltal (og vi vil få en typekonflikt) 12

Eksempel på indlejret selektion public void act() { if( foundleaf() ) { eatleaf(); else { if( canmove() ) { move(); else { turnleft(); Den "røde" if-sætning er indlejret i else-delen af den "grønne" if-sætning 13

Eksempel på dårlig kode public boolean isteenager() { boolean result; if ( 13 <= age && age <= 19 ) { result = true; boolsk udtryk else { result = false; return result; Metoden tjekker om personen er teenager public boolean isteenager() { return (13 <= age && age <= 19); 8 linjer kode 1 linje kode 14

Andet eksempel på dårlig kode if ( female == true ) {... feltvariabel af type boolean (boolsk udtryk) if (female) {... negation if ( female == false ) {... if (!female) {... Helt galt går det, hvis man kommer til at skrive if (female = true) {... if (female = false) {... Parenteserne indeholder lovlige boolske udtryk, men de tester ikke det, vi havde til hensigt, og de ændrer female Assignment, som ændrer værdien af female Hvorfor klager oversætteren ikke? Parenteserne skal jo indeholde et boolsk udtryk x = y = 37; Assignment, men også et udtryk med værdien 37, som så assignes til x 15

Eksempler på iteration for-løkke for ( int i=0; i<4; i++ ) { c.move(length); c.turn(90); while-løkke int i = 0; while ( i<4 ) { c.move(length); c.turn(90); i++; for-løkker bruges, når man på forhånd ved, hvor mange gange løkken skal gennemløbes while-løkker er mere fleksible end for-løkker Man skal selv huske at initialisere og opdatere De to løkker gør det samme (gentager move og turn operationerne 4 gange) 16

Udtryk bruges forskellige steder Højresiden af assignment skal have sammenlignelig type med variablen på venstresiden Argumenter til metodekald skal have sammenlignelig type med parametrene Betingelser i selektions- og iterationssætninger boolsk udtryk (sandhedsværdi: true eller false) initialiserings- og opdateringsudtryk i for-løkke 17

Udvalgte operatorer Aritmetiske operatorer + - * / %... Logiske operatorer &&!... Relationelle operatorer ^ ==!= < > <= >= bitvis eksklusiv OR Nogle operatorer er overloadede Kan bruges på argumenter af forskellig type + kan betyde læg sammen + kan også betyde konkatenation af strenge Præcedens regler Bestemmer rækkefølgen, som operatorerne udføres i 4 + 3 * 5 evaluerer til 19 new er også en operator new Class(...); Java har 15 niveauer Brug parenteser, når I er i tvivl Søg i Google efter: java operator precedence 18

Brug af BlueJ s Code Pad Code Pad I Code Pad en kan man indtaste erklæringer, sætninger og udtryk Erklæringer og sætninger udføres Udtryk evalueres Brug Code Pad en til hurtige eksperimenter Mere komplekse eksperimenter laves via en testklasse 19

Afleveringsopgave: Skildpadder (Turtles) Skildpadde World I Greenfoot skal I lave en subklasse til klassen Turtle med metoder til at tegne en række forskellige avancerede tegninger, i stil med nedenstående: 20

Opsummering Java styleguide Navngivning Indrykning Sætninger Simple sætninger (assignment, interne og eksterne metodekald) Sammensatte sætninger (blok, selektion og iteration) Udtryk Operatorer, overloadning, præcedens regler, og brug af parenteser Brug af BlueJ s Code Pad Eksperimenter med erklæringer, sætninger og udtryk Afleveringsopgave: Skildpadder (Turtles) 21

Det var alt for nu.. spørgsmål 22