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

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

Eksempel: Skat i år 2000

DANMARKS TEKNISKE UNIVERSITET

Virkefeltsregler i Java

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

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

DM01 DM Obl. Afl. Jacob Christiansen, , D12, Elias 18/ Side 1 af 11

Forelæsning Uge 3 Torsdag

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

Studiepraktik. Thomas Bøgholm Mikkel Hansen Jacob Elefsen

Forelæsning Uge 2 Mandag

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

Kursusarbejde 3 Grundlæggende Programmering

Noter og opgaver. Programmering A IMADA. Niels Kjeldsen & Jacob Aae Mikkelsen. Med grundig korrektur og rettelser af Edmund Christiansen

Forelæsning Uge 4 Torsdag

Forelæsning Uge 2 Mandag

Forelæsning Uge 4 Torsdag

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

Ugeseddel 4 1. marts - 8. marts

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

DM507 Algoritmer og datastrukturer

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

Civilingeniøreksamen januar Skriftelig prøve den 12. januar 2001 Kursusnummer 49104

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

BRP Kursusintroduktion og Java-oversigt

Abstrakte datatyper C#-version

Forelæsning Uge 4 Mandag

DM507 Algoritmer og datastrukturer

Løsning af møntproblemet

DM01 DM Obl. Afl. Jacob Christiansen, , D12, Elias 13/ Side 1 af 7

Programmering i C. Lektion december 2008

Forelæsning Uge 4 Mandag

Forelæsning Uge 3 Mandag

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.

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

public Set(int size) { this.listelement = new LinkedList<Integer>(); }

Forelæsning Uge 3 Mandag

DM507 Algoritmer og datastrukturer

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

Programmering i C. Lektion november 2008

Python programmering. Per Tøfting. MacFest

Forelæsning Uge 3 Torsdag

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

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

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

Forelæsning Uge 2 Mandag

Forelæsning Uge 3 Mandag

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

Programmering i C. Lektion september 2009

Forelæsning Uge 5 Mandag

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

Hashing og hashtabeller

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.

Forelæsning Uge 2 Mandag

Forelæsning Uge 3 Mandag

Forelæsning Uge 4 Mandag

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

PROGRAM. using System; using System.Collections.Generic; using System.Text; using System.Collections;

Forelæsning Uge 2 Torsdag

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

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

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer

Datalogi OB, Efterår 2002 OH er, forelæsning 3/ forstå datastrukturer og algoritmer (teoretisk forståelse og intuition)

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

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

9.8 Kildekode. side 88. Pakke Klasse Sidenummer. fortsætter..

Forelæsning Uge 2 Mandag

Programmering i C. Lektion oktober 2008

Forelæsning Uge 4 Torsdag

Forelæsning Uge 6 Mandag

Forelæsning Uge 2 Torsdag

Rekursion og dynamisk programmering

DM502. Peter Schneider-Kamp

Klasser og objekter. (Afsnit i manualen)

Forelæsning Uge 1 Torsdag

Klasser og nedarvning

DM507 Algoritmer og datastrukturer

Tree klassen fra sidste forelæsning

Hashing og hashtabeller

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

Test af It-komponent

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

Forelæsning Uge 3 Torsdag

Videregående Programmering Obligatorisk opgave - 3. semester, efterår 2004

Prioritetskøer ved»heap«, simulering

Forelæsning Uge 3 Torsdag

Offset til terminalskærm i Java

Lær Python dag 1 - modul 1

Forelæsning Uge 3 Torsdag

Forelæsning Uge 6 Mandag

Skriftlig eksamen i Datalogi

Forelæsning Uge 1 Torsdag

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

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

Sekvenser af længde mellem 1 og 4 ord repræsenteres ved en klasse Segment, som uden grundlæggende ser således ud:

Programmering i C. Lektion september 2009

Fundamentale sprogbegreber

Opgaven fortsat. Opfølgning på Opgave 2 og Use Cases. Opgaven. Trin 1: Væsentlige begreber. Resultatliste: 100 bryst, herrer

Transkript:

DM502 Forelæsning 4

Flere kontrolstrukturer for-løkke switch-case Metoder Indhold Arrays og sortering af arrays String-funktioner

for-løkke Ofte har man brug for at udføre det samme kode, for en sekvens af tal/elementer Dette kan selvfølgelig gøres med en while-løkke int i = 1; while (i <= 10) { System.out.println(i); ++i; Alternativt med en for-løkke int i; for (i=1; i<=10; ++i) { System.out.println(i); Eller lidt mere kompakt for (int i=1; i<=10; ++i) { System.out.println(i);

for-løkke Vi kan også gennemløbe elementerne i (f.eks.) en ArrayList ArrayList<Integer> list = new ArrayList<Integer>(); Collections.addAll(list, 1,5,7,9,5); for (int x=0; x<list.size(); ++x) { System.out.println(list.get(x)); Eller mere kompakt for (Integer i : list) { System.out.println(i);

if (i == 0) {...; else if (i == 1) {...; else if (i == 2) {...;....... else {...; switch-case

switch (i) { case 0:...; break; case 1:...; break; case 2:...... default:...; break; switch-case

switch-case String navn; switch (dag) { case 1: navn = Mandag ; break; case 2: navn = Mandag ; break; case 3: navn = Mandag ; break;... case 7: navn = Mandag ; break; default: navn = Ikke en gyldig dag ; break;

int antal; switch (maaned) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: antal = 31; break; case 4: case 6: case 9: case 11: antal = 30; break; case 2: if (skudaar) { antal = 29; else { antal = 28; switch-case

Metoder Også kaldet funktioner De muliggør genbrug af kode Skal kun skrive koden én gang Men kan bruges mange steder En metode er meget lig en matematisk funktion Man propper noget ind i den og får noget ud i den anden ende Fx f(x) =x 3 Man kalder x et argument til funktionen f

Metoder Vi har allerede set metoder brugt flere gange median = list.get( index - 1 ); get er en metode på ArrayLister Den tager en int som argument tal = tastatur.nextint(); nextint er en metode på ArrayLister Den tager ingen argumenter Ligesom matematiske funktioner Man propper noget ind (evt. ingenting) Fx en int - et index Man får noget ud i den anden ende Fx et element i listen - elementet i listen på det pågældende index

Metoder i Java Erklæring Hvilke argumenter Hvad returneres (sendes tilbage) Fx en int i nextint() tilfældet Implementation Hvordan skrives selve koden Brug af argumenter Returnering Brug af en metode. Hvordan anvendes en metode Det har vi allerede set flere gange

Erklæring af metoder public static RETURTYPE metodenavn( ARGUMENTLISTE ) {... KODE... public static Ignorer vi foreløbigt RETURTYPE Typen af det der returneres fra funktionen Fx int i nextint() tilfældet Kan være void hvis der ikke returneres noget Bruges ofte ved sideeffekter metodenavn Navnet på metoden

Erklæring af metoder ARGUMENTLISTE En liste, adskilt med komma, af argumenter til metoden Evt. er listen tom (ingen argumenter) Som fx for nextint() Hvert argument i listen angives som TYPE navn Fx er argumentet til metoden get fra ArrayList int index Bemærk: Flere ting ind (argumenter) Kun én ting ud (retur-værdi)

nextint() på Scanner Eksempler på erklæringer public int nextint() Kan også ses i API et println() fra System.out public void println( String x ) Metoden tager et argument, en String Metoden returner ingenting Erklæringen på en metode der opløfter x i y te Metoden skal tage x og y som argumenter Returnere x y public static int power( int x, int y )

Implementation af metoder Argumenter kan bruges ligesom alle andre variable (de har den værdi brugeren af metoden har angivet) Returnering sker med return Variable erklæret i en metode kan ikke ses i en anden metode (scope) Man kan altså godt bruge samme variabelnavn i flere metoder

public static int power( int x, int y ) { int result = 1; int i; for( i = 1; i <= y; ++i ) { result = result * x; return result; Eksempel

public static int power( int x, int y ) { int result = 1; int i; for( i = 1; i <= y; ++i ) { result = result * x; return result; Ækvivalent med: Eksempel public static int power( int x, int y ) { int result = 1; int i; i = 1; while( i <= y ) { result = result * x; ++i; return result;

public class PowerExample {! public static void main( String[] args ) {!! int result;!! int a, b;!! a = 2;!! b = 4;!! result = power( a, b );!! System.out.println( result );!! result = power( b, 0 );!! System.out.println( result ); Komplet eksempel!! System.out.println( power( 1, 2 ) );!! public static int power( int x, int y ) {!! int result = 1;!! int i;!! for( i = 1; i <= y; ++i ) {!!! result = result * x;!!!! return result;!

Arrays En statisk liste i Java Dvs. ingen indsættelser/tilføjelser (længden er fast) Må dog godt ændre i et array Erklæring Hvordan laves et array? Initialisering Hvordan kommes ting ind i arrayet? Brug Hvordan læses og ændres i arrayet?

Arrays TYPE[] navn; Hvilken type elementer skal der ligge i arrayet Fx int[] speeddial; navn = new TYPE[ LÆNGDE ]; Hvor mange pladser skal der være i arrayet Fx speeddial = new int[20]; Eller det hele på en linie int[] speeddial = new int[20]; Bemærk: Ikke noget antal mellem første sæt klammer Initialisering int[] speeddial = {12345678, 13579246 Længden givet ved længden af initialiseringslisten

Arrays int[] speeddial = new int[20]; Husk at lister i Java er 0-indekseret! speeddial har elementer på plads 0-19 Læs det 5. element i listen speeddial[4]; Skriv en værdi på den 5. plads i arrayet speeddial[4] = 21323454; Bemærk at nogle pladser godt kan være uinitialiseret Længden af arrayet kan læses speeddial.length

public class ArrayExample {! public static void main( String[] args ) {!! int[] speeddial = new int[5];!! int i;!! speeddial[0] = 12345678;!! speeddial[1] = 90123456; Array - eksempel!! System.out.println( "Plads 0: " + speeddial[0] );!! System.out.println( "Plads 1: " + speeddial[1] );!! System.out.println( "Længde: " + speeddial.length );!! for( i = 0; i < speeddial.length; ++i ) {!!! speeddial[i] = i;!!!! for( i = 0; i < speeddial.length; ++i ) {!!! System.out.println( speeddial[i] );!!!

import java.util.arrays; public class ArraySortExample {! public static void main( String[] args ) {!! int[] a = {1,78,4,67,4,2,2,5,7;!! System.out.println(Arrays.toString(a));!! Arrays.sort(a);!! System.out.println(Arrays.toString(a));! Array - sortering

String Strenge på dansk En type der kan indeholde tekst Vi har allerede set String brugt flere gange Erklæring og initialisering String s; s = Hej med dig ; String s = Hej med dig ; Man kan ikke ændre på indholdet af en String (fx ændre et bogstav) En String er i virkeligheden et char array Men vi kan ikke ændre det der står på den enkelte plads

String - vigtige funktioner Eksempel: String s = Hej med dig ; char charat( int index ) s.charat( 2 ); Returnerer j boolean equals( String str ) s.equals( HEj med dig ); Returnerer false boolean equalsignorecase( String str ) s.equalsignorecase( HEj med dig ); Returnerer true int length() s.length(); Returnerer 11

String - vigtigt Man kan IKKE sammenligne på følgende måde: String s = Hej med dig ; String t = Hej med dig ; if( s == t ) {...

String - eksempel public class StringExample {! public static void main( String[] args ) {!! String s = "Hej med dig";!! System.out.println( s.charat( 2 ) );!! System.out.println( s.equals( "HEj med dig" ) );!! System.out.println( s.equalsignorecase( "HEj med dig" ) );!! System.out.println( s.length() );

String - eksempel public class StringExample {! public static void main( String[] args ) {!! String s = "Hej med dig";!! System.out.println( s.charat( 2 ) );!! System.out.println( s.equals( "HEj med dig" ) );!! System.out.println( s.equalsignorecase( "HEj med dig" ) );!! System.out.println( s.length() );!! System.out.println( substring( s, 0, 2 ) );!! public static String substring( String str, int i, int j ) {!! String result = "";!! while( i <= j ) {!!! result = result + str.charat( i );!!! i++;!!!! return result;!

main-metoden Helt almindelig metode Pånær det er her programmer starter public static void main( String[] args ) {... Returnerer altså ingenting Tager et String-array som argument Det er argumenter som er givet på kommandolinjen

main-metoden - eksempel public class CommandLineExample {! public static void main( String[] args ) {!! int i;!! for( i = 0; i < args.length; i++ ) {!!! System.out.println( args[i] );!!!

main-metoden - eksempel public class CommandLineExample {! public static void main( String[] args ) {!! int i;!! for( i = 0; i < args.length; i++ ) {!!! System.out.println( args[i] );!!!

main-metoden - eksempel public class CommandLineExample {! public static void main( String[] args ) {!! int i;!! for( i = 0; i < args.length; i++ ) {!!! System.out.println( args[i] );!!!