Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Kursusintroduktion Introduktion til programmering

Lignende præsentationer


Præsentationer af emnet: "Kursusintroduktion Introduktion til programmering"— Præsentationens transcript:

1 Kursusintroduktion Introduktion til programmering
Forelæsning 1.1 Kursusintroduktion Introduktion til programmering Greenfoot

2 Hvad kan I forvente at lære på kurset?
Simpel programmering til husbehov I vil lære nogle grundliggende ting omkring programmering Efter kurset vil I kunne lave simple programmer og forstå de vigtigste principper bag programmering. Men I bliver ikke verdensmestre i at programmere på 7 uger. Det kræver masser af træning – gennem flere år Sammenlign med at lære at spille guitar eller fodbold Programmering kræver masser af praktisk øvelse I lærer ikke at programmere ved at læse bøger eller se videoer I lærer det ved at øve jer igen og igen Der er masser af basale ting som skal sidde på rygmarven og som I skal kunne gøre i søvne Sammenlign med guitar/fodbold – og en køreprøve dIntProg, E14

3 Michael E. Caspersen (Aud. E)
Bemanding Kurt Jensen (Aud. F) Michael E. Caspersen (Aud. E) Benjamin Blankholm, Casper Benjamin Freksen, Christoffer Skovgaard, Christopher Riis Bubeck Eriksen, Helene Flyvholm Haagh, Joakim Gregersen Quach, Jon Bjerrum Jacobsen, Jonathan Ahlers Marino, Kenneth Kaiser Kudsk, Kristoffer Theis Skalmstang, Marcus Flyvholm Haagh, Markus Andreassen, Martin Toldam Torp, Mathias Kraft Mathiasen, Mikkel Brun Jakobsen, Morten Bech, Morten Birk, Rasmus Lunding Henriksen, Sune Ohrt Sørensen, Thor Bagge dIntProg, E14

4 Indhold Hvad er programmering? Info om kurset
Eksemplificeret med sudoku-løser Info om kurset Hvad skal I lære? Hvordan lærer I det? Hvordan tester vi at I har lært det? Kursets web-sider cs.au.dk/dIntProg Hvad skal læres? Hvordan skal det læres? dIntProg, E14

5 Hvad er programmering?

6 Oprindelsen af Sudoku Opfundet af Leonhard Euler
Schweizisk matematiker, Største matematiker på sin tid Latinske kvadrater: dIntProg, E14

7 Moderne udgave af Sudoku
Spillepladen har 9 rækker 9 søjler 9 blokke (3 x 3) Hver blok, række og søjle har 9 felter Udfylde de manglende felter Hver række, søjle og blok har tallene 1..9 præcis en gang. dIntProg, E14

8 Moderne udgave Introduceret af Howard Garnes, 1979
Amerikansk puslespilsblad (Math Puzzles and Logic Problems, Dell Magazines) Under navnet ”Number Place” Blev enormt populær i Japan (og andre steder) fra 1984 og frem Sudoku, som er en forkortelse af ”Suji wa dokushin ni kagir” som betyder ”tallene må kun forekomme én gang” Stort hit fra 1986 (registreret varemærke) I dag udgives der fem Sudoku-blade hver måned i Japan dIntProg, E14

9 GADs bestsellerliste, 14. oktober 2005
Litas: Sudoku 1 Litas: Sudoku 2 Litas: Sudoku 3 Sudoku for begyndere Sudoku Su Doku Su Doku 2 Flere Sudoku Junior Sudoku Mange flere Sudoku dIntProg, E14

10 Sudoku og computerprogrammer
Wayne Gould Startede i 1997 på et program der kunne konstruere Sudoku-spil Det tog ham efter sigende over seks år... waynegouldpuzzles.com/sudoku/ Levereandør til engelske aviser... Debut i The Times, 12. november 2004 ... og danske Politiken, 12. juni 2005 Jyllands-Posten, 13. juni 2005 Ekstra Bladet, 15. juni 2005 ... dIntProg, E14

11 Strategi med udgangspunkt i værdi
1 1 1 1 1 Eliminering: tag udgangspunkt I de blikke hvor der ikke står et 1-tal. Eliminér rækker og søjler hvor 1 allerede forekommer. … Afledt udelukkelse: Når 2 I nederste venstre blok kun kan forekomme I midterste søjle I blokken, kan vi afledt heraf udelukke feltet med de blå kryds dIntProg, E14

12 Strategi med udgangspunkt i felt
3 Komplettering kan I sin rene form kun finde sted når én værdi mangler. I andre tilfælde kan strategien kombineres med de øvrige. Sweeping er den der er benyttet I sudoku-løseren der kommer… dIntProg, E14

13 Hvis man har muskler nok
Rå kraft (brute force) Afprøv systematisk alle lovende muligheder 3 9 a b c d e f g h i a1 c1 e1 g1 i1 a2 b2 e2 h2 i2 ... 1 2 3 4 5 6 7 8 9 3 9 2 7 8 9 1 7 9 2 2 7 8 7 8 8 1 4 7 9 2 4 dIntProg, E14

14 Hvis man har muller nok Rå kraft (brute force)
Afprøv systematisk alle lovende muligheder 3 9 a b c d e f g h i a1 c1 e1 g1 i1 a2 b2 e2 h2 ... 1 2 3 4 5 6 7 8 9 3 9 2 7 8 9 1 7 9 4 2 7 8 7 8 8 1 4 7 9 2 4 dIntProg, E14

15 Hvis man har muller nok Og så videre... Rå kraft (brute force)
Afprøv systematisk alle lovende muligheder 3 9 a b c d e f g h i a1 c1 e1 g1 i1 a2 b2 e2 h2 ... 1 2 3 4 5 6 7 8 9 3 9 2 7 8 9 4 2 7 8 7 8 8 1 4 Og så videre... 7 ? 9 2 4 dIntProg, E14

16 Algoritmen 3 9 2 7 8 1 7 9 4 prøvAlleMuligheder() {
if <alle felter er udfyldt> { <udskriv grid> } else { <husk felt> <gå til næste frie felt> for <hvert ciffer c> { if <c er lovende> { <fastfrys feltværdi> prøvAlleMuligheder() // backtrack to previous field <fortryd fastfrosne værdi> <gå tilbage til forrige felt> a b c d e f g h i 3 9 2 7 8 1 2 3 4 5 6 7 8 9 1 7 9 4 dIntProg, E14

17 Hvad har vi brug for at kunne på et Grid
prøvAlleMuligheder() { if <alle felter er udfyldt> { <udskriv grid> } else { <husk seneste felt> <gå til næste frie felt> for <hvert ciffer c> { if <c er lovende> { <fastfrys feltværdi> prøvAlleMuligheder() // backtrack to previous field <fortryd fastfrosne værdi> <gå tilbage til forrige felt> // tryAll() // allFilled() // printGrid() // Previous = currentField() // advanceToNextUnfilled() // promissing(c) // setFieldValue(c) // clearCurrentField() // setToField() dIntProg, E14

18 Demo Java-version public void tryAll() { if ( g.allFilled() ) {
g.printGrid(); } else { // try all promissing values at next field Field previous = g.currentField(); g.advanceToNextUnfilled(); for ( int c = 1; c <=9; c++ ) { if ( g.promissing(c) ) { g.setFieldValue(c); tryAll(); // backtrack to previous field g.clearCurrentField(); g.setToField(previous); Demo dIntProg, E14

19 Klassemodel Grid Solver 1 boolean allFilled() void printGrid()
Field currentField() void advanceToNextField() boolean promissing(int c) void setFieldValue(int v) void clearCurrentField() void setToField(Field f) 1 void tryAll() dIntProg, E14

20 Mennesket mod maskinen... (hjerne)
1997 Deep Blue vinder matchen 3,5 – 2,5 dIntProg, E14

21 Mennesket mod maskinen... (muskler)
Kasper Dyb Gul Dyb Gul løfter 187,5 kg mod Kaspers 180 kg dIntProg, E14

22 Computere og intelligens...
En computer der spiller skak udviser menneskelige træk i samme grad som en gaffeltruck der løfter gods... dIntProg, E14

23 Computerens styrke At kunne foretage simple beregninger lynhurtigt
På kort tid at kunne lagre store datamængder søge i store datamængder bearbejde store datamængder afsøge et stort antal muligheder og kombinationer Informations-Repræsentations-Transformations-Maskine hurtig og sikker i detaljen skal programmeres! dIntProg, E14

24 Computer og program En computer er en generel maskine, men uden program(mer) er den intet værd! Computer + X-program = X-maskine X = Windows, Linux, OS X, … skak, sudoku, tekst, musik, studieadministration, social interaktion, flykontrol, stråle- behandling, DNA-forskning, kommunikation, spil, læse, regne, undervise, motorstyring, bremsestyring, bolighandel, bilhandel, dagligvarehandel, billeddeling, videodeling, søge, oversættelse, … Program Program Program Program Computer dIntProg, E14

25 En Sudoku-maskine … Sudoko-løser Java Java VM C++ Computer
dIntProg, E14

26 En Sudoku-maskine … Sudoko-løser: Solver Grid Java Java VM C++
Computer dIntProg, E14

27 Programmering… Programmering = + Problemløsning Kodning (i Java)
dIntProg, E14

28 Problemløsning Kodning (i Java) dIntProg, E14

29 Om programmering Programmering Faser Anderledes Svær tankegang
Motivation Begejstring Tvivl Frustration Eksistentiel krise Heureka! Fascination Kompetencer Indsigt Magt over teknologien Begejstring Tid ”Human beings are not accustomed to being perfect, and few areas of human activity demand it. Adjusting to the requirement for perfection is, I think, the most difficult part of learning to program.” F. Brooks, The Mythical Man-Month, pp. 7-8 dIntProg, E14

30 men ufatteligt mange ting kan lade sig gøre.
Time Magazine, 1984 In 1984, TIME magazine quoted the chief editor of a certain software publication as saying: "Put the right kind of software into a computer, and it will do whatever you want it to. There may be limits on what you can do with the machines themselves, but there are no limits on what you can do with software.” Sludder! Der er grænser – masser af grænser – men ufatteligt mange ting kan lade sig gøre. dIntProg, E14

31 Info om kurset Greenfoot

32 Programmeringsomgivelser
Greenfoot Greenfoot-eksempler: Wombats -- fillers: Little Crab 5, Lunar Lander, MiksAsteroids, Baloons, Ants, Ants and Spiders, ... (hvad tiden tillader og humøret er til) Demo dIntProg, E14

33 Afleveringsopgave 1.1: Solnedgang
I opgave i BlueJ bogen laver I et lille program, der kan tegne nedenstående billede. I afleveringsopgaven skal I udvide programmet, således at solen går ned.

34 Og hvordan tjekker vi at I har lært det?
Hvad skal I lære? Og hvordan tjekker vi at I har lært det?

35 Mål og valg af prøveform
Deltagerne skal ved afslutning af kurset kunne anvende grundlæggende konstruktioner i et sædvanligt programmeringssprog identificere og forklare arkitekturen af simple programmer identificere og forklare betydningen af simple specifikationsmodeller implementere simple specifikationsmodeller i et sædvanligt programmeringssprog anvende standardklasser ved realisering af programmer. Mundtlig prøve Skriftlig prøve Multiple choice Praktisk prøve Det obligatoriske program checker lidt bredere ift. læringsmålene dIntProg, E14

36 Undervisningsformer i dIntProg
Forelæsninger overblik, begreber, principper og eksempler (forud) detaljer (bagud) Videoer alternativ præsentation af centralt stof tilgængeligt når som helst Hjemmearbejde læs bogen og lav opgaverne samtidig med (se video) forbered øvrige opgaver Øvelser (vigtigst!) praktisk arbejde under vejledning styret refleksion (efter behov) Afleveringsopgaver holde jer til ilden (kærligt spark bagi) feedback (til jer og til os) Projekt (uge 6) bringer mange ting sammen ”højdetræning” inden eksamen dIntProg, E14

37 Studieformer Par-programmering (driver og navigator) Disciplin
øvelser afleveringsopgave studier Disciplin lav jeres ting til tiden kurset er tilrettelagt ud fra den forudsætning Kreativitet find selv på udvidelse af opgaverne udfordr jeres forståelse og kompetencer Spørg vent ikke! brug hinanden, jeres instruktor, os, webboardet, ... dIntProg, E14

38 Vejledende timeforbrug
Forelæsninger: Øvelser: ”Hjemmearbejde”: Ialt < 4 timer 4 timer > 7 timer ~15 timer dIntProg, E14

39 cs.au.dk/dIntProg dIntProg, E14

40 dIntProg, E14


Download ppt "Kursusintroduktion Introduktion til programmering"

Lignende præsentationer


Annoncer fra Google