INF1 Practicum 10 / 17 oktober 2014 Functies Werk de vijf opdrachten stapsgewijs uit. Zet alle Schemecode in één bestand, laat ook waar van toepassing de pdfbestanden zien. Voor deze opdrachten heb je de bestanden nodig die te vinden zijn op https://github.com/marcdinkum/inf De benodigde theorie kun je vinden in de syllabus op http://sogm.hku.nl/inf/infbook/ Opdracht 1 • Maak een functie die uitrekent wat de tijd in milliseconden is tussen twee pulsen bij een door de gebruiker in te voeren BPM. Zie voor de benodigde berekening het MAX-practicum van 19 september. Voorbeeld: >(bpm-naar-ms 120) Geeft als resultaat > 500 Opdracht 2 • • Definieer twee motiefjes met daarin vier noten. Noem deze motief1 en motief2 Maak een functie draai-om die motief1 of motief2 omgedraaid achter het origineel plaatst. Voorbeeld >(draai-om motief1) Geeft als resultaat >'(a b c d d c b a) sogm.hku.nl [email protected] [email protected] Maak een functie heen-en-weer die motief1 voor- en achterwaarts vastgeplakt aan motief2 achter- en voorwaarts teruggeeft. Voorbeeld: > (heen-en-weer motief1 motief2) Geeft als resultaat > '(a b c d d c b a e b g f f g b e) Exporteer dit resultaat naar een Lilypond-bestand • • Opdracht 3 Maak een functie eerste die bij invoer van een lijst het eerste item uit de lijst als een lijst teruggeeft. Voorbeeld: > (eerste '(a c gis a e) Geeft als resultaat > '(a) Maak een functie roteer-linksom die een lijst linksom roteert en een functie roteer-rechtsom die een lijst rechtsom roteert. Met roteren wordt bedoeld dat alle waarden in een lijst een plek opschuiven. De laatste in de lijst zal de eerste worden. Voorbeeld: > (roteer-linksom '(a b c d e)) Geeft als resultaat > '(b c d e a) • • Opdracht 4 • • Maak een functie geef-helft die de eerste helft van een lijst teruggeeft, ongeacht uit hoeveel items de lijst bestaat. Zoek daarbij uit hoe Scheme aangeeft hoeveel elementen er in een lijst staan. Voorbeeld: > (geef-helft '(a bes c dis e f g gis)) Geeft als resultaat > '(a bes c dis) Maak een functie draai-helft-om die de eerste helft van een even lijst omgekeerd teruggeeft. Voorbeeld: > (draai-helft-om ('a bes c dis e f g gis)) Geeft als resultaat > '(dis c bes a) sogm.hku.nl [email protected] [email protected] • Voor gevorderden: Zorg dat de bovenstaande functies ook werken als de lijst een oneven aantal items bevat. Bepaal zelf of er naar onder of boven afgerond wordt. Opdracht 5 • • Maak een muzikaal interessante compositie bestaand uit een aantal motiefjes die bewerkt wordt door functies die je gemaakt hebt in opdracht twee tot en met vier. Pas ook bewerkingen toe die je vorige weken hebt gebruikt in de opdrachten. Denk aan omdraaien, willekeur, inkorten, transponeren etc. Exporteer dit naar Lilypond. Voor gevorderden: Maak een functie die uitrekent hoeveel halve, kwart- of achtste noten er in twee minuten muziek bij een bepaald tempo passen. Maak vervolgens de bovenstaande compositie twee minuten lang. sogm.hku.nl [email protected] [email protected]
© Copyright 2024 ExpyDoc