TOP met iTasks 2.

Slides:



Advertisements
Verwante presentaties

Advertisements


Inleiding programmeren in C++ Life Science & Technology 1 maart Universiteit Leiden.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Een programma opbouwen.
PHP & MYSQL LES 03 PHP & DATABASES. PHP & MYSQL 01 PHP BASICS 02 PHP & FORMULIEREN 03 PHP & DATABASES 04 CMS: BEST PRACTICE.
Uitwerking tentamen Functioneel Programmeren 29 januari 2009.
Hogere-ordefuncties nEen lijst langs lopen en met elk element iets doen nEen lijst langs lopen en sommige elementen selecteren map filter.
GESPRG Les 14 Gestructureerd programmeren in C. 174 Details! The devil is in the details.
Hoofdstuk 6: Controle structuren
Hogere-orde functies: herhaald patroon? Parametrizeer! product :: [Int]  Int product [ ]= product (x:xs)= 1 product xs x * and :: [Bool]  Bool and [
Functies op Proposities evalueer:: Bedeling  Prop  Bool tautologie:: Prop  Bool contradictie:: Prop  Bool equivalentie:: Prop  Prop  Bool vervulbaar::
Hoger-ordefuncties op lijsten nDoorloop een lijst en... map :: (a  b)  [a]  [b] filter :: (a  Bool)  [a]  [a] foldr :: (a  a  a)  a  [a]  a.
Les 2 Basisbouwstenen (deel 1)
Inleidend probleem Data structuur (hiërarchie van classes)
Functies als Getallen Jan Martin Jansen.
Numerieke Natuurkunde
Flow controle Keuzes maken. Het if-statement Soms moet code alleen in bepaalde situaties uit gevoerd worden Hiervoor heeft C de if-else constructie: if(voorwaarde1){
GESPRG Les 7 Gestructureerd programmeren in C. 92 Verwisselen Schrijf een functie waarmee twee int variabelen verwisseld kunnen worden. void wissel(int.
Hogere-ordefuncties nVoeg de elementen van een lijst samen nCombineer twee functies foldr :: (a  b  b)  b  [a]  b [a] (.) :: (b  c)  (a  b)  a.
Reguliere talen nReguliere grammatica: versimpelde Contextvrije grammatica nFinite-state Automaton: andere manier om een taal te beschrijven nReguliere.
Hoofdstuk Strings en arrays. Primitieve types nint gehele getallen-17, -5, 0, 3, 178 ndouble reëele getallen3.141, 2.0, -1.5E8 nbool waarheidswaarden.
Inleiding programmeren in C++ Life Science & Technology 9 februari Universiteit Leiden.
Visual Basic.
PHP functies.
LauwersCollege Buitenpost Java Applet programma dat op een website zichtbaar is Java Application programma dat zelfstandig werkt Javascript Scripttaal.
Arrays.
PHP & MYSQL LES 02 PHP & FORMULIEREN. PHP & MYSQL 01 PHP BASICS 02 PHP & FORMULIEREN 03 PHP & DATABASES 04 CMS: BEST PRACTICE.
Taal nEen Alfabet is… een eindige verzameling symbolen nEen Taal is… een deelverzameling van T* bij een bepaald alfabet T nEen Zin is… een element van.
Tircms03-p les 2 Hfdst 3,4 Meer operatoren Functies.
Tircms02-p les 3 Functies Strings Structuren. Functies 1. main() 2. { int k; k = 10 ; printf(“%d\n”,fac(k)); } 3. int fac(n) int n; 4. { int f; f= 1;
tircms02-p les 1 Operating Systems practicum
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 C programmeren voor niet-C programmeurs les 3 redirection,
Functioneel programmeren Een snelle herhaling…. Functie-definitie static int kwad (int x) { return x*x ; } kwad x = x * x Haskell kwad :: Int  Int.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag top-down decompositie Opdrachten:
Hoofdstuk 10.3 Tekst-editor: MDI-interface Dialogen Files lezen Abstracte klassen.
Algoritmiek Controle-structuren Loops; Switch-statement. Hoorcollege 5 - Ma. 2 okt L.M. Bosveld-de Smet.
Instructie Programmeren Task 7
Les 0 Structured Query Language SQL. Programma Les 0 – Introductieopdracht Les 1 Les 2 Les 3 Schriftelijke toets.
1 PI1 week 9 Complexiteit Sorteren Zoeken. 2 Complexiteit van algoritmen Hoeveel werk kost het uitvoeren van een algoritme (efficiëntie)? –tel het aantal.
Java Objectgeoriënteerd Programmeren in Java met BlueJ
Codetuts Academy Les 6 Module 2a Php Fundamentals 1.
Loops en errors Array's Random try catch for loop while loop do while loop.
IF() ELSE() LES 4: VOORWAARDEN. BOOL Een variabele die slechts 2 mogelijke waarden kan hebben: true(waar) of false(niet waar) duid je aan met bool bool.
Informatie beoordelen If else Switch En Wiskunde.
Robby de Robot. Javascript Tot nu toe gebruikt: – document.write(" Hello World "); – alert("tekst") – Toon een waarschuwingsvenster – prompt("tekst",
4/10/2017 Opleiding BINNENISOLATIE voor thermische renovatie Module 3 Train the trainer – 06/12/ Brugge.
Wageningen University Meteorologie en Luchtkwaliteit
Handboek Commercieel Budgetteren: toegepast J. Vanhaverbeke & L
Veevoeding Blok 3 en 4: Ruwvoerbalans melkveehouderij
Dynamica van luchtstromen
Natuurkunde Overal Hoofdstuk 1: Beweging in beeld.
Mictieklachten bij mannen
Aanroep van een methode voert opdrachten uit in de body daarvan
Gameprogrammeren: Keuzeopdrachten
Hoofdstuk 9.2 Strings.
Gameprogrammeren: Expressies
vandaag èn vrijdag deadline maandag 12 dec.
Tinpro015b-les 1 C++ voor C-kenners Voor Technische Informatica.
Gameprogrammeren: Herhalingen
Tinpro015b-les3 Hfdst 3,4 Meer operatoren Functies.
Voorbeeld: Simulatie van bewegende deeltjes
Voortborduren op eerder gedaan werk
Gameprogrammeren: Recursie
Opdrachten herhalen public void tekenScherm (object o, PEA pea)
Wat gaan we doen? Herhaling ARM assembler instructies
Software Development fundamentals
Small Basic Console deel 2
Sharing.
Gameprogrammeren: Arrays
Transcript van de presentatie:

TOP met iTasks 2

Gebruik van return Een task levert een resultaat van type: Task a op waarbij a een Clean type is. Het is ook mogelijk iets van type Task a op te leveren zonder enterInformation o.i.d te gebruiken. Dit gaat mbv het return statement (dit is iets anders dan de return in Java, het is eigenlijk gewoon een functie) 8-6-2019

Voorbeeld return recTasks :: Task Int recTasks = enterInformation "Geef positief getal " [] >>= herhaalTaak 0 herhaalTaak :: Int Int -> Task Int herhaalTaak a 0 = viewInformation “Som" [] a herhaalTaak a n = enterInformation "Getal" [] >>= \g->herhaalTaak (a+g) (n-1) Netter is: herhaalTaak a 0 = return a En in aanroep >>= herhaalTaak 0 a >>= \a -> viewInformation “Som" [] a 8-6-2019

Hogere Orde Taken Een hogere orde taak is een taak die een taak als argument of als resultaat kan opleveren Hogere orde taken maken het mogelijk om algemene voorschriften (patronen) te maken die later met concrete taken kunnen worden ingevuld. doAndShow :: (Task a) -> Task a | iTask a doAndShow task = task >>= \a -> viewInformation "Het resultaat is" [] a 8-6-2019

Hogere Orde Taken Mbv hogere orde constructies kan men algemene herhaal constructies maken. Herhaal een taak net zolang tot het resultaat aan een bepaalde conditie voldoet repeatTask :: (a -> Bool) (Task a) -> Task a | iTask a repeatTask cond task = task >>= \a -> if (cond a)(return a)(repeatTask cond task) 8-6-2019

Hogere Orde Taken Gebruik repeatTask: getal raden repeatExample :: Task Int repeatExample = enterInformation "Geef te raden getal" [] >>= \g -> repeatTask (\a -> a == g) (enterInformation "Raad het getal" []) 8-6-2019

Kiezen Kiezen kan met enterChoice (kies 1) of enterMultipleChoice (kies meerdere) chooseExample :: Task Int chooseExample = enterChoice "Kies maar wat" [] [1..5] mchooseExample :: Task [Int] mchooseExample = enterMultipleChoice "Kies maar wat" [] [1..10] 8-6-2019

And - Or iTasks heeft mogelijkheden om taken parallel uit te voeren. De simpelste zijn And en Or. Later volgen er nog anderen. //Simple And doBoth :: Task (Int,Int) doBoth = recTasks -&&- chooseExample //Simple Or doEither :: Task Int doEither = recTasks -||- chooseExample 8-6-2019

Acties Normale enterInformation taken kunnen alleen met Ok afgesloten worden In de praktijk wil je ook taken kunnen annuleren e.d Dit kan met acties Voor veel voorkomende acties bestaan er handige shortcuts :: Action = Action String| ActionOk| ActionCancel| ActionYes| ActionNo|ActionQuit|ActionClose | … 8-6-2019

Acties actionTest :: Task Int actionTest = updateInformation "Geef getal" [] 33 >>* [OnAction (Action "1") hasValue (return o getValue) ,Always (Action "2") (return 42) ,AnyTime (Action "3") f ,WithoutResult (Action "4") (return 43) ,WithResult (Action "5") (\a -> a > 5) (\a -> return (a+1)) ,WhenValid (\a -> a == 23) (\a -> return (a+2)) ,WhenStable (\a -> return (a+67))] where f (Just r) = return r f Nothing = return 42 hasValue (Value _ _) = True hasValue _ = False getValue (Value a _) = a 8-6-2019

Acties Voorbeeld van handig gebruik van acties Voer een aantal getallen na elkaar in tot de gebruiker het genoeg vindt. intList :: Task [Int] intList = enterInformation "Please fill in the form" [ ] >>* [Always (Action "Quit") (return []) ,WithResult (Action "Add one") (const True) (\p -> intList >>= \ps -> return [p:ps]) ,WithResult (Action "Done") (const True) (\p -> return [p]) ] 8-6-2019

Acties Palindrone met acties. palindrome :: Task (Maybe String) = enterInformation "Enter a palindrome" [] >>* [ WithResult ActionOk palindrome (\p -> return (Just p)) , Always ActionCancel (return Nothing) ] where palindrome s = lc == reverse lc // nodig omdat array geen reverse kent where lc :: [Char] lc = fromString s 8-6-2019

Acties Continu monitoren tot een bepaalde conditie geldt raadGetal = enterInformation "Raad het getal" [] >>* [WhenValid (\a -> a == 23) (\a -> return (a+2)) ,Always ActionCancel (return 42) ] 8-6-2019