BRP 6.9.2006 Kursusintroduktion og Java-oversigt



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

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

Skriftlig eksamen i Datalogi

Løsning af møntproblemet

Kursus navn: Indledende programmering Kursus nr

DM502. Peter Schneider-Kamp

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

Løsning af skyline-problemet

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

Eksempel: Skat i år 2000

BRP Sortering og søgning. Hægtede lister

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

Abstrakte datatyper C#-version

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

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)

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

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

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

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

Programmering 2. dprog2 E

Skriftlig eksamen i Datalogi

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

Rekursion og dynamisk programmering

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

Datalogi C + Datastrukturer og Algoritmer

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

Programmering 2. dprog2 E

Algoritmisk geometri

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

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

Test af It-komponent

DM507 Algoritmer og datastrukturer

Tabelbegrebet. Klassediagrammer (III) Oversigt. Anvendelse af Tabeller. Tabeller og qualified associations

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

Skriftlig eksamen i Datalogi

DATALOGI 0GB. Skriftlig eksamen tirsdag den 6. januar 2004

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

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

Studiepraktik. Thomas Bøgholm Mikkel Hansen Jacob Elefsen

Intervalsøgning. Algoritmisk geometri. Motivation for intervaltræer. Intervalsøgning. Lad der være givet en database over ansatte i en virksomhed

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer

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

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

DANMARKS TEKNISKE UNIVERSITET

Hashing og hashtabeller

Introduktion til funktioner, moduler og scopes i Python

Forelæsning Uge 5 Mandag

BOSK F2011, 1. del: Udsagnslogik

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

Hvordan vælger jeg dokumentprofilen?

Programmering i C. Lektion december 2008

Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Ideen er simpel:

Forelæsning Uge 4 Mandag

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

MM4. Algoritmiske grundprincipper. Lister, stakke og køer. Hash-tabeller og Træer. Sortering. Søgning.

Stakke, køer og lidt om hægtede lister - kapitel 16 og 17

Hanne Niels Edith Harald Carsten Jørgen Henrik.

Forelæsning Uge 6 Mandag

Tilfældige tal. Denne artikel introducerer generering af tilfældige tal og viser lidt om hvad man kan og ikke mindst hvad man ikke bør bruge.

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Rolf Fagerberg. Forår 2013

18 Multivejstræer og B-træer.

Parallelle algoritmer

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer

Rolf Fagerberg. Forår 2012

Stakke, køer og lidt om hægtede lister

Forelæsning Uge 3 Mandag

Parallelle algoritmer

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

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

Introduktion til DM507

SWC eksamens-spørgsmål. Oversigt

14.1 Internationale programmer

Prepared Statements. Denne artikel beskriver hvorfor prepared statements er gode. Den forudsætter lidt kendskab til Java og JDBC.

Rolf Fagerberg. Forår 2014

Databaseadgang fra Java

DM507 Algoritmer og datastrukturer

Forelæsning Uge 3 Mandag

Grundlæggende køretidsanalyse af algoritmer

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

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

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.

Offset til terminalskærm i Java

Undervisningsbeskrivelse

Rekursion C#-version

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

Tree klassen fra sidste forelæsning

Forelæsning Uge 5 Mandag

Et udtryk på formena n kaldes en potens med grundtal a og eksponent n. Vi vil kun betragte potenser hvor grundtallet er positivt, altså a>0.

Dokumentation af programmering i Python 2.75

Anvendelse af metoder - Programmering

Lær Python dag 1 - modul 1

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

Tabeller (I) Tabeller

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 4 Mandag

Transkript:

BRP 6.9.2006 Kursusintroduktion og Java-oversigt 1. Kursusintroduktion 2. Java-oversigt (A): Opgave P4.4 3. Java-oversigt (B): Ny omvendings -opgave 4. Introduktion til næste kursusgang

Kursusintroduktion: rammer Forudsætninger: Indledende Programmering (IP) eller tilsvarende Tidligere afholdtes BRP parallelt med IP, men nu forudsættes dette kendt ved kursusstart Formiddag: læreroplæg, eftermiddag: øvelser (som tommelfingerregel) Eksamen: 2 timers skriftlig eksamen Lærebog: Cay Horstmann. Big Java (2. udgave) eller Java Concepts (4. udgave) Jørgen Villadsen. Notes on Data Structures and Algorithms. (Fås i Bogladen til 30 kr.) BRP IP ISP

Kursusindhold Redskaber betyder fagelementer som støtter programmeringsaktiviteten algoritmer (fx til søgning og sortering) (x) datastrukturer (fx lister, træer) (x) kompleksitetsteori (fx lineær og eksponentiel kompleksitet) grammatik (fx syntaks af java kildetekst-fil) repræsentation af data (fx tal) Begreber betyder at fagelementerne er overvejende teoretiske Også programmering (i Java) Arbejde med begreberne i praksis Nye måder at programmering på (fx rekursion) Også redskaber af praktisk karakter Fagelementer fra software engineering (fx test) Håndkøring af programmer

Eksempel på (søge-) algoritme (Horstmann kap 19.6) Problem 1: Du har en telefonbog, og vil finde navnet på en person hvis nummer du kender. Algoritme: start fra enden af, undersøg hvert enkelt post i telefonbogen (lineær søgning) Problem 2: Du har en telefonbog, og vil finde nummeret på en person, du kender navnet på. Basis for forbedret algoritme: posterne er sorteret efter navn. Algoritme: Veldefineret metode til løsning af et givet problem (cirka, der findes ingen kanonisk definition, men mange gode)

Formål med at studere algoritmer Algoritme-begrebet er centralt i datalogien - faget rummer en række kendte, afprøvede algoritmer - vigtigt at anvende kendte metoder isf. at genopfinde dem - vigtigt at kunne analysere (finde svagheder i) anvendte algoritmer (tids- og pladsforbrug, kompleksitetsteori) - teorien om algoritmer siger også noget om computerens begrænsninger (Turings stopproblem) Specifikt er søgning centralt i mange typer software, blandt andet i databaser.

Datastrukturer Array hurtigt opslag/læs Hægtet liste ikke-destruktiv indsæt Træ hurtig, ikkedestruktiv indsæt

Tal, logaritme-funktion log 2 = 1 log 4 = 2 log 8 = 3 log 16 = 4.. log 64 = 6.. log 1024 = 10.. Hvor mange sammenligninger ved lineær søgning? Svar: n/2 Ved normal telefonbogssøgning? Svar: log n (log n betyder her totals-logaritmen af n, dvs. med grundtal 2)

Algoritmer + datastrukturer + logaritmer + kompleksitetsanalyse En algoritme er ofte knyttet til en bestemt datastruktur, fx en søgealgoritme der er knyttet til et binært søgetræ Logaritme-funktionen er bl.a. vigtig at forstå for at forstå tidsforbruget af visse søgealgoritmer Kompleksitetsanalyse er studiet af algoritmers tids- og pladsforbrug m.v.

Kursets teoretiske/begrebslige del versus programmeringsdelen Kurset er primært begrebsligt orienteret Programmering indgår begreber illustreres helst med program-eksempler øget træning i programmering er en vigtig sidegevinst ved kurset kursets begreber omfatter også meget programmeringsnære begreber, fx rekursion Vi arbejder eksemplarisk og praktisk med udvalgte algoritmer og datastrukturer m.v.

Eksamen To timers skriftlig eksamen hjælpemidler: skriftlige, ikke elektroniske Opgave 1, vinter 2005/2006. Betragt følgende program: Public class LinkedList {.. Delopgave 1.1. Håndkør programmet med henblik på at angive indholdet af den hægtede liste x til slut.

Eksamen Formål BRPs læringsmål kan til en vis grad måles på denne måde Kræver at færdigheder indøves som en form for rutine, bl.a. ved at regne mange opgaver. Det kan give en god forståelse for stoffet. Generelt vigtigt at datalogi har forskellige former for eksamen, at ikke alle eksamener er afleveringsopgaver Giver en form for objektiv feedback til studerende

BRP 6.9.2006 Kursusintroduktion og Java-oversigt 1. Kursusintroduktion 2. Java-oversigt (A): Opgave P4.4 3. Java-oversigt (B): Ny omvendings -opgave 4. Introduktion til næste kursusgang

Java-oversigt: formål At vi i dag får berørt det centrale Java-stof, som forudsættes som startniveau for kurset For at I derved får lejlighed til at genopfriske det teste om I kan det, så I kan afgøre om I selv skal arbejde yderligere med det Horstmann: 1.1, 1.3-1.8, 2.1-2.4, 2.6-2.7, 3.1-3.2, 3.4-3.5, 3.8-3.9, 4, 6, 7, 8.1-8.2, 8.4-8.7, 9.1-9.4, 9.6-9.9.

Horstmann opgave P4.4 Write a program that prompts the user for two numbers, then prints the sum the difference..

Kapitel 1: bl.a. om oversættelse Man kan oversætte filer med tomme klasse-erklæringer. Pair.java public class Pair { PairTest.java public class PairTest { XP-agtig udvikling: Incremental udvikling, problem-opdeling

PairTest.java Kapitel 2: Using objects - bl.a. om test-programmer (s. 47) package brp.scanning; import java.util.scanner; public class PairTest { public static void main(string[] args) { System.out.println("Skriv to reelle tal:"); Scanner sc = new Scanner(System.in); Pair p = new Pair(sc.nextDouble(),sc.nextDouble()); System.out.println("Summen er:"); System.out.println(p.getSum()); System.out.println("Differencen er:"); System.out.println(p.getDifference());

Pair.java Kapitel 3: Implementing classes - overordnet design af en klasse public class Pair { public Pair(double d1, double d2) {.. private double d1, d2; public double getsum() {.. public double getdifference() {.. Offentlige tilgangs metoder Private instans variable

Kapitel 4: Fundamental data types - bl.a. om input og class Scanner PairTest.java import java.util.scanner; public class PairTest { public static void main(string[] args) { System.out.println("Skriv to reelle tal:"); Scanner sc = new Scanner(System.in); Pair p = new Pair(sc.nextDouble(),sc.nextDouble()); System.out.println(..);..

class java.util.scanner (se Horstmann Appendix C) Scanner(InputStream in) Scanner(String s).. boolean hasnext() boolean hasnextdouble() // og int o.s.v. boolean hasnextline().. String next() Double nextdouble() // og int o.s.v. String nextline()..

BRP 6.9.2006 Kursusintroduktion og Java-oversigt 1. Kursusintroduktion 2. Java-oversigt (A): Opgave P4.4 3. Java-oversigt (B): Ny omvendings -opgave 4. Introduktion til næste kursusgang

Omvendings -opgave Skriv et program, der beder brugeren om en sætning, og derefter skriver sætningen ud i omvendt rækkefølge. Det sunde vink: Skab et genbrugeligt program med samme programstruktur som i P4.4. Sæt et grænse for antal ord. Alternativt vink: Lav et hack med et kort, rekursivt program.

class Strings public class Strings { public Strings(String s) { Scanner sc = new Scanner(s); while (sc.hasnext()) {add(sc.next()); private ArrayList strings = new ArrayList(); public void add(string s) { strings.add(s); public String get(int i) { if (0 <= i && i <= size()) return (String) strings.get(i); else return null; public int size() { return strings.size();

class StringsTest import java.util.scanner; public class StringsTest { public static void main(string[] args) { /* get sentence */ System.out.println("Skriv en sætning:"); Scanner sc = new Scanner(System.in); String s = sc.nextline(); /* store sentence */ Strings strings = new Strings(s); /* print reverse sentence */ System.out.println("Her kommer sætningen i omvendt rækkefølge:"); for (int i=strings.size() 1; i>=0; i ) System.out.print(strings.get(i) + " "); System.out.println();

class Hack import java.util.scanner; public class Hack { public static void main(string[] args) { System.out.println("Skriv en sætning:"); Scanner sc = new Scanner(System.in); String s = sc.nextline(); System.out.println("Her kommer sætningen i omvendt.. ); print(new Scanner(s)); System.out.println(); private static void print(scanner sc) { if (sc.hasnext()) { String s = sc.next(); print(sc); System.out.print(s + " ");

Rekursion i class Hack Metoden print() kalder sig selv rekursivt. Metodens krop: 1. Udtag det forreste ord. 2. Kald rekursivt. 3. Udskriv det forreste ord. Foretag håndkørsel: 1. Udtag forreste ord. (Hej) 2. Kald rekursivt 1. Udtag forreste ord. (med) 2. Kald rekursivt... 3. Udskriv forreste ord (med) 3. Udskriv forreste ord (Hej)

BRP 6.9.2006 Kursusintroduktion og Java-oversigt 1. Kursusintroduktion 2. Java-oversigt (A): Opgave P4.4 3. Java-oversigt (B): Ny opgave om omvending af sætning. 4. Introduktion til næste kursusgang

Næste gang: 13.9. Tal. Computerrepræsentation og -manipulation af tal. Logaritmer. Litteratur: 1. Jørgen Villadsens noter, s. 5-14. 2. Horstmann: Hvis du har Big Java: Appendix L og M Hvis du har Java Concepts: Download Appendix L og M fra http://www.wiley.com/college/horstmann

Opgaver Forudsætningsstof: Lav en udgave af omvendings -programmet uden øvre grænse for antal ord. Vink: Brug ArrayList. Talstof: Løs Problem 2 i Exercise 2 (E1.pdf) (tidsangivelsen på 20 min. er optimistisk) E1.pdf er skrevet af Jørgen Villadsen og kan downloades fra resources/opgaver på ecampus.