Algoritmiek Doel Gevoel en inzicht ontwikkelen voor het

  • Slides: 26
Download presentation
Algoritmiek Doel Gevoel en inzicht ontwikkelen voor het stapsgewijs, receptmatig oplossen van daartoe geeigende

Algoritmiek Doel Gevoel en inzicht ontwikkelen voor het stapsgewijs, receptmatig oplossen van daartoe geeigende [biologische] probleem-stellingen, en dat inzicht gebruiken in het vormgeven van een programmeerbare oplossing. Eindniveau In staat zijn te onderscheiden welke problemen in welke vorm geschikt (te maken) zijn voor een algoristische aanpak, en deze aanpak ook vorm te geven. Vorm geven gebeurt in pseudotaal, tot op een niveau waar de oplossing programmeerbare proporties heeft gekregen. Hoe te realiseren 12 uur college, werkgroep, zelfwerkzaamheid

Algoritmiek Tentamen = Syllabus + College Open vragen, gesloten boek Syllabus: Voorbeelden Blackboard: Oefeningen,

Algoritmiek Tentamen = Syllabus + College Open vragen, gesloten boek Syllabus: Voorbeelden Blackboard: Oefeningen, Opdrachten WWW + BB: Oude tentamens (+ antwoorden) Werkgroep: Opdracht maken + nakijken Oefenen op eigen initiatief Blackboard, H 11, syllabus Eindoordeel: Tentamen (60 %) Werkgroep opdracht (18 + 7 %) OMP + college opdrachten (15 %)

Vergeetbestendigheid Lecture Only Reading Classroom with Labs/Exercises/Audio/Video Demonstration/Work Through Practice by doing Teaching others

Vergeetbestendigheid Lecture Only Reading Classroom with Labs/Exercises/Audio/Video Demonstration/Work Through Practice by doing Teaching others 5% 10% 20% 30% 75% 90% Without application of the information learned, the amount retained is reduced by 50% within a month and nearly 0% by 2 months. Use it or lose it…

Algoritmiek: Welke stappen moeten we nemen om een probleem op te lossen Data Structuren:

Algoritmiek: Welke stappen moeten we nemen om een probleem op te lossen Data Structuren: Hoe bewaren we de informatie die nodig is om problemen op te lossen, en hoe blijft die informatie toegankelijk. Programmeertalen: Hoe coderen we algoritmen en data structuren Software engineering: Welke systematische methoden bestaan er voor het schrijven van grote, foutloze en betrouwbare systemen.

Algoritmiek Data-bases: Hoe slaan we grote hoeveelheden informatie op en hoe houden we die

Algoritmiek Data-bases: Hoe slaan we grote hoeveelheden informatie op en hoe houden we die beschikbaar voor efficiënte raadpleging (data -mining). Symbolisch en numeriek rekenen: Hoe maken we nauwkeurige wiskundige modellen van toestanden en processen in de echte wereld. Kunstmatige intelligentie: Hoe kunnen we de vaardigheid om zelfstandige beslissingen te nemen coderen. Kunstmatig leven: Studie van en naar emergent, ongeprogrammeerd gedrag in organismen die leven (= ontstaan, bewegen, eten, reproduceren, doodgaan) binnen computers.

Algoritmiek Welke stappen moeten we nemen om een probleem op te lossen. Hoe lossen

Algoritmiek Welke stappen moeten we nemen om een probleem op te lossen. Hoe lossen wij eigenlijk problemen op ? ? ? We ‘doen’ het gewoon. . . Op goed geluk raden naar een oplossing. . . Via ‘Trial & Error’. . . Door ervaring (van jezelf of van anderen). . . “Wetenschappelijk”. . .

Probleem oplossen. . . ? Analyse Probleem specificatie Ontwerp Algoritme Implementatie Programma Compilatie Executable

Probleem oplossen. . . ? Analyse Probleem specificatie Ontwerp Algoritme Implementatie Programma Compilatie Executable (Oplossing)

Probleem oplossen. . . ? "Dokter, ik heb hoofdpijn" Analyse Patient heeft een verhoogde

Probleem oplossen. . . ? "Dokter, ik heb hoofdpijn" Analyse Patient heeft een verhoogde druk in de voorste parietale kwab. Probleem specificatie 1. Sterilizeer schedel zaag 2. Verdoof de patient 3. Verwijder schedeldak 4. Neem een grote lepel. . . 5. etc. , etc. Ontwerp Algoritme Implementatie Programma Compilatie Executable (Oplossing) sterilizeer(zaag, alcohol); hef_hamer(); laat hamer neerkomen(snel); begin(zaag); /* etc. */ 010011101011001010100101001100101010010110 1001110101001001011101001 11101011111010001101000 01101. . .

Algoritmiek De leer van algoritmen Algoritme: Beschrijving van de stappen die een processor (mens,

Algoritmiek De leer van algoritmen Algoritme: Beschrijving van de stappen die een processor (mens, computer, machine) moet doen om een proces uit te voeren, c. q. een probleem op te lossen. Karakteristiek: Invoer, Uitvoer, Eindigheid, Bepaaldheid, Effectiviteit Uitvoering verloopt stapsgewijs Een stap bestaat vaak zelf weer uit deel-algoritmen.

Algoritme Algorism Al"go*rism, Algorithm Al"go*rithm, n. [OE. algorism, algrim, augrim, OF. algorisme, F. algorithme

Algoritme Algorism Al"go*rism, Algorithm Al"go*rithm, n. [OE. algorism, algrim, augrim, OF. algorisme, F. algorithme (cf. Sp. algoritmo, OSp. alguarismo, LL. Algorismus) the Ar. al-Khow[=a]rezm[=i] of Khow[=a]rezm, the modern Khiwa, surname of Abu Ja'far Mohammed ben Mus[=a], author of a work on arithmetic early in the 9 th century, which was translated into Latin, such books bearing the name algorismus. The spelling with th is due to a supposed connection with Gr. ? number. ] 1. The art of calculating by nine figures and zero. 2. The art of calculating with any species of notation; as, the algorithms of fractions, proportions, etc. algorism 1: the Arabic (or decimal) system of numeration 2: computation with Arabic figures

Algoritme Muhammed ibn Musa Al-Khwarizmi Circa 160 -230 A. H. (anno Hegirae) Hegira He*gi"ra

Algoritme Muhammed ibn Musa Al-Khwarizmi Circa 160 -230 A. H. (anno Hegirae) Hegira He*gi"ra (? ; 277), n. [Written also hejira. ] [Ar. hijrah flight. ] The flight of Mohammed from Mecca, September 13, A. D. 622 (subsequently established as the first year of the Moslem era) Circa 780 -850 A. D.

Algoritme Muhammad ibn Musa Al-Khwarizmi http: //www-groups. dcs. st-andrews. ac. uk/~history/Mathematicians/Al-Khwarizmi. html Boek over

Algoritme Muhammad ibn Musa Al-Khwarizmi http: //www-groups. dcs. st-andrews. ac. uk/~history/Mathematicians/Al-Khwarizmi. html Boek over rekenen: Hindu notatie van getallen, gebroken getallen, gebruik van het getal nul, methode voor het oplossen van vierkantsvergelijkingen Latijnse vertaling (c. 1120 AD): “Algoritmi de numero Indorum” Boek over algebra Hisab al-jabr w’al-muqabala

Al-Kwarizmi (khiva)

Al-Kwarizmi (khiva)

Algoritme Beschrijving van de stappen die een processor (mens, computer, machine) moet doen om

Algoritme Beschrijving van de stappen die een processor (mens, computer, machine) moet doen om een proces uit te voeren, c. q. een probleem op te lossen. Kook / Bak recept Spelregels van een spel Instructies voor het bedienen van een video recorder Route beschrijving van A naar B Een brei patroon Notenschrift. . .

Algoritme 0 1 2 3 4 5. . 8 9 0 1 2 3

Algoritme 0 1 2 3 4 5. . 8 9 0 1 2 3 4 5 6 3 4 5 6 7 8 9. . 8 9 10 11 12 13 5 5 6 7 8 9 10. . 13 14 6 6 7 8 9 10 11. . 14 15 7 7 8 9 10 11 12. . 15 16 8 8 9 10 11 12 13. . 16 17 9 9 10 11 12 13 14. . 17 18

Algoritme Optellen van getallen onder de 10 (incl. nul) Het algoritme in de ‘black

Algoritme Optellen van getallen onder de 10 (incl. nul) Het algoritme in de ‘black box’: + Van welke kennis kunnen we uitgaan ? tabel met uitkomsten van optellingen van 2 getallen < 10 Welk aspecten kent dit probleem ? Hoe bekijken we een getal dat buiten het kader van de tabel valt ? Ontbinden in elementen die wel in kennis-kontekst passen Doet de volgorde van de getallen in de optelling er toe ? Wat doen we met een uitkomst die meer dan 1 plaats inneemt ? 1 onthouden regel Wat doen we met meerdere van dergelijke uitkomsten ? Cascade regel Invoer, Uitvoer, Eindigheid, Bepaaldheid, Effectiviteit

Algoritmiek Omschrijving van alle legale inputs en Omschrijving van de gewenste outputs als functie

Algoritmiek Omschrijving van alle legale inputs en Omschrijving van de gewenste outputs als functie van de inputs Algoritmisch probleem een legale input Algoritme Gewenste output Algoritmische oplossing

Algoritmiek Algoritme dat door een computer uitgevoerd kan worden heet een programma Een computer

Algoritmiek Algoritme dat door een computer uitgevoerd kan worden heet een programma Een computer heet programmeerbaar omdat hij gevoed kan worden met een algoritme naar keuze Een programma is een formele tekst iedere letter, elk cijfer, elk interpunctie-teken, en elke operator speelt daarin een rol. Programma’s vragen ongewone nauwkeurigheid in het opstellen.

Syntax & Semantiek Syntaxis: grammatica regels zinsbouw, correct symbool gebruik Stik de naden van

Syntax & Semantiek Syntaxis: grammatica regels zinsbouw, correct symbool gebruik Stik de naden van de mouw vs Mouw de naden a + b = vs a+=b H 2 O vs 2 OH Semantiek: betekenis Een recht, een averecht Kosten : = prijs * aantal Programmeertaal: Syntaxis en semantiek zijn onafhankelijk ! ‘Colorless green ideas sleep furiously’ Noteer de naam van de achtste dag van de week

Syntax & Semantiek Mens Nederlands Grote woordenschat Ingewikkelde grammatica Context afhankelijke betekenis Woorden vaak

Syntax & Semantiek Mens Nederlands Grote woordenschat Ingewikkelde grammatica Context afhankelijke betekenis Woorden vaak meer dan 1 betekenis Computer Machinetaal Kleine woordenschat (0/1) Simpele grammatica Betekenis niet context afhankelijk Woorden (symbolen) hebben 1 betekenis

Syntaxis & Semantiek Algoritmen Operaties op en met objecten Betekenis van stap in Algoritme:

Syntaxis & Semantiek Algoritmen Operaties op en met objecten Betekenis van stap in Algoritme: Kennis van eigenschappen van objecten Relaties tussen de objecten Noteer de naam van de achtste dag van de week Bedenk een getal tussen 1 en 9 Noem het getal N Noteer de naam van dag N Bereken de omtrek van de cirkel door de straal met pi te vermenigvuldigen Elementaire aktie

Syntax & Semantiek Processor moet in staat zijn om: De symbolen waarin de stap

Syntax & Semantiek Processor moet in staat zijn om: De symbolen waarin de stap is geformuleerd te herkennen. Betekenis aan de stap toe te kennen in termen van de uit te voeren handelingen. De bijbehorende handelingen uit te voeren.

Syntax & Semantiek Programmeertaal Eenvoudige en beknopte formulering van algoritmen toestaan. Voor computer eenvoudig

Syntax & Semantiek Programmeertaal Eenvoudige en beknopte formulering van algoritmen toestaan. Voor computer eenvoudig te begrijpen. Voor mens eenvoudig te begrijpen: Veranderingen en verbeteringen De kans op fouten minimaliseren bij omzetten van algoritme in programma (implementatie). Analyse van programma tekst moet aan kunnen tonen dat uitvoering het gewenste proces tot stand brengt.

Pseudotaal Niet werkend vocabulair Nederlands de beperkende factor Werkend vocabulair beperkt Zie hoofdstuk 11

Pseudotaal Niet werkend vocabulair Nederlands de beperkende factor Werkend vocabulair beperkt Zie hoofdstuk 11 syllabus Controle structuren Als. . . Dan. . . Anders. . . Eindals Wanneer … Eindwanneer Zolang. . . Doe. . . Eindzolang Herhaal … Totdat. . . Eindherhaal Voor … Tot. . . Eindvoor Modules 75 stuks kant en klaar gereedschap

Pseudotaal Zoek het grootste getal uit een rij Grootste wordt eerste getal uit de

Pseudotaal Zoek het grootste getal uit een rij Grootste wordt eerste getal uit de rij Zolang nog niet alle getallen zijn bekeken Doe Bekijk volgende getal in de rij Als het getal groter is dan Grootste Dan Grootste wordt dit getal Eindals Eindzolang geef Grootste als antwoord

Pseudotaal PROGRAM ‘BIG param’ {Zoek het grootste getal uit een rij} rij : =

Pseudotaal PROGRAM ‘BIG param’ {Zoek het grootste getal uit een rij} rij : = param teller : = 1 grootste : = rij[teller] Zolang teller KLEINER DAN 1 PLUS LENGTE rij Doe getal : = rij[teller] Als getal GROTER DAN grootste Dan grootste : = getal Eindals teller : = teller PLUS 1 Eindzolang SCHRIJF grootste