Astronomie · PalmOS software · Roosteren · Informatica · Windows software · Natuurkunde · Wiskunde · Meteorologie · Fietsen · Diversen

Informatica

Algemeen
lesmateriaal 4H/4V
lesmateriaal 5V/5H
lesmateriaal 5H/6V
lesmateriaal: Verdie
PO: Programmeren
PO: Projecten
PO: Werkstukken
PO: CT
PO: Afgerond
tips: Algemeen
tips: Delphi
tips: Delphi (2)
tips: Logo
tips: NSBasic
tips: OpenOffice
links: Software
links: websites
cc: Voorlopig
cc: Voorlichting
cc: Lokaalgeboden
cc: Excursies
cc: Puzzels
Haiti
tips: Small Basic
PO: Programmeren2008
PO: Programmeren2009
PO: Programmeren2010
PO: Programmeren2011
Gamemaker

Programmeer-opdrachten

 

 

Aantal opdrachten dit jaar: 187

 

Rekeningnummerveiligheid

(2 december 2009)

Je hebt geleerd dat de elfproef gebruikt wordt om te controleren of een rekeningnummer geldig is.

Hoe veilig is een geldig bankrekeningnummer bij vergissingen bij de invoer? Daarbij maken we onderscheid tussen hoeveel cijfers er fout ingevoerd worden: 1, 2, etc.

 

Laat je programma bij elk aantal fouten berekenen hoe groot de kans is dat het programma met de elfproef de fout ontdekt.

 

mogelijkheid: bepaal hoeveel procent van alle 9-cijferige nummers te gebruiken is als een bankrekeningnummer?

 

 

Zingever

(24 november 2009)

Een gebruiker kan een lijst met zinnen inlezen. De woorden van de zinnen zijn door elkaar gehusseld. De gebruiker moet daarna de woorden in de juiste volgorde zetten om er een kloppende zin mee te kunnen maken.

Eventueel kunnen er ook zinnen met een deel van de woorden gemaakt worden.

 

Voorbeeld: 'is pieten sint kwijt zijn' wordt 'is sint zijn pieten kwijt'

 

Fotowebsitemaker

(24 november 2009)

Schrijf een programma waarmee je een eenvoudige website voor een serie foto's kunt maken. Thumbnails staan in k kolommen naast elkaar. Als je een foto aanklikt wordt het origineel geopend. De thumbnails en de originelen staan in twee mappen (thumbnails en pictures)

 

 

Rondleidingmaker

(24 november 2009)

Schijf een programma waarmee je een rondleiding door een wijk gemakkelijker kunt maken dan met de handmatige methode.

 

 

Graafmaker

(24 november 2009)

Schrijf een programma waarmee je een graaf kunt ontwerpen. Je moet punten kunnen tekenen, verbindingen die eventueel éénrichtingswegen kunnen zijn. Bij elke verbinding is ook een afstand op te geven.

 

mogelijkheid: Laat het programma de code generen om in Openoffice een formule voor de afstands- of verbindingsgraaf te kunnen invoeren.

 

Orgaan

(24 november 2009)

Schrijf een programma waarmee je een gebruiker de ligging van een orgaan kunt laten aangeven. Je zit een vooraanzicht van een mens. En krijgt dan bijvoorbeeld de vraag om de ligging van de maag te schetsen.

Dit kan het mooiste door het gebied te laten omcirkelen met de muis.

De beheerder van het programma moet de antwoorden door kunnen bladeren op persoon of op orgaan.

 

Woordenweb

(24 november 2009)

Woorden verschillen soms maar heel weinig van elkaar: 'en','een','teen','teken','tekens'

Als je woorden die 'weinig van elkaar verschillen' verbindt, krijg je een woordenweb.

 

Maar wanneer moet je woorden wel/niet met elkaar verbinden.

 

'en' en 'teen' worden niet met elkaar verbonden. Het verschil is 2. Terwijl je via 'een' ook een verschil van twee hebt.

 

Stel dat a,b en c woorden zin. De functie verschil geeft tussen twee worden aan: verschil(a,b).

 

als verschil(a,b)=x en verschil(b,c)=y en verschil(a,c)=>x+y dan pijl(a,b) en pijl(b,c)

 

of omgekeerd:

 

als verschil(a,b)=x en verschil(b,c)=y en verschil(a,c)<x+y dan pijl(a,b) en pijl(a,c)

 

Het principe is wel dat je bij elk woord uit moet kunnen komen (er moet minimaal één pijl heen) en je moet van elk woord naar een ander woord kunnen (minimaal één pijl er vanaf).

 

Als bij een woord meerder woorden zijn met een gelijk verschil, worden die allemaal getekend óf allemaal niet ('en'->'een' dan ook 'en'->'den')

 

 

 

 

 

Stamboom

(19 november 2009)

Schrijf een programma waarmee je een stamboom kunt bijhouden.

De stamboom bestaat uit mensen. Van iedereen kun je een doopnamen, geslacht, geboortedatum en -plaats en een overlijdensdatum en -plaats opgeven.

Verder zijn er relaties:

- partner: <persoon> trouwt/woont samen met <persoon> op <datum> in <plaats>

- kind van: <partnerrelatie>

 

Wikipediaboom

(14 november 2009)

Een hele andere manier of een kennisboom te maken zie in Wikipedia. De relaties zijn links van het ene artikel naar het andere artikel. De boom zelf is niet zichtbaar, maar de beschrijving is veel duidelijker.

 

Schrijf een programma dat bij een zelf te kiezen artikel begint en van daaruit een een kennisboom maakt door de links te volgen.

 

 

Kennisboom

(14 november 2009)

Als in de middeleeuwen tekende Ramon Lull een kennisboom. In een kennisboom zijn twee zaken met elkaar verbonden als ze een relatie met elkaar hebben.

Er zijn computerprogramma's waarmee je relaties tussen onderwerpen kunt visualiseren.

 

 

Een relatie is altijd tussen twee termen (vaak zijn dat woorden, soms ook bijvoorbeeld uitdrukkingen). Een relaties heeft de status 'ongecontroleerd' nadat ze ingevoerd is. Een beheerder kan de status in 'gecontroleerd' veranderen.

Soms geldt een relatie alleen van term 1 naar term 2 of omgekeerd.

Dus zijn er 3 vormen 1<->2, 1->2, 2->1.

Verder kan het nodig zijn dat er een beschrijving van de relatie gegeven wordt, bijvoorbeeld 'is groter dan'.

 

Schrijf een programma waarmee relaties van een kennisboom gemaakt en onderhouden kunnen worden.

 

Bezochte landen

(14 november 2009)

Op de website van Douwe Osinga is een mooi script te zien waarmee je kunt aangeven welke landen je in je leven al bezocht hebt.

Maar een programma of website waarmee dat nog mooier kan. De gebruikers moeten hun lijst in de loop van de tijd kunnen aanvullen, zodat er uiteindelijk een tijdlijn ontstaat waarop te zien is wanneer ze welke land bezocht hebben.

 

Als je niet alleen de eerste keer (dus eigenlijk 'ooit') laat noteren, maar werkelijk elke keer, krijg de per land een aantal en nu alleen wel/niet.

 

mogelijkheid: de website kan een gebruiker na een bepaalde periode er aan herinneren om de lijst aan te vullen.

 

Douwe Osinga

(14 november 2009)

Op de website van Douwe Osinga staat een leuk mozaïek. Schrijf een programma dat uit een foto zo'n (willekeurig) mozaïek maakt.

 

De grootte van de vierkantjes en de kleuren moeten vrij te kiezen zijn.

 

ShutterCal

(12 november 2009)

 

Bij Shuttercal kun je een kalender maken door aan elke dag een foto toe te wijzen.

Ga er vanuit dat foto's op de volgende manier gearchiveerd zijn:

 

In een map foto's staan mappen met de jaren (2010,2009,2008,...), binnen die mappen staan mappen voor elke dag dat er foto's zijn gemaakt (20091125, 20070203, etc.).

 

Schrijf een programma waarmee je aan elke dag een foto kunt toewijzen. Het programma zorgt ervoor dat je alleen in de juiste dag zoekt. Door op een dag te klikken wordt een venster met alle foto's voor die dag geopend.

 

 


 

 

Voetbalspel

(10 november 2009)

Op een speelveld staan voetballers. In werkelijk staan deze op veertjes. Door de speler in een bepaalde richting te verbuigen kan een kogel gelanceerd worden.

De spelers staan in een kommetje, zodat de kogel daarin gevangen kan worden. Bovendien wordt de kogel afgebogen als ze door een kommetje rolt.


Als je zo een spel in een programma na wilt bouwen, zou je dat kunnen realiseren door de gamer op een speler te laten klikken en dan een lijn te laten trekken in een zelf te kiezen richting.

De lengte van de lijn staat voor de kracht waarmee de kogel gelanceerd wordt. Als de muis losgelaten wordt, schiet de kogel in de richting van het verlengde van de lijn.


Het kommetje zou gemodelleerd kunnen worden met een kegel of een bolvorm (bij het echte spel lijkt het meer op een bolvorm).


De rand van het speelveld is recht en de hoeken zijn afgerond.


Programmeer een voetbalspel volgens dit model.


mogelijkheid: Je zou de positie van de speler en de diameter van het kommetje kunnen variëren. Bij de echte spellen kan dat niet.

 

 

Vallende letters -nsbasic -delphi

(5 november 2009)

In de onderstaande afbeelding zie je een vrolijk gekleurde tekst.

Sommige letters lijken te vallen.

 

 

 

Schrijf een programma waarmee je zo een tekst kunt maken.

- je moet een tekst van een paar regels kunnen invoeren

- het lettertype, de fontgrootte en afmeting van een blokje moet in te stellen zijn.

- per letter moet de achtergrond kleur te wijzigen zijn

- per letter moet aan te geven zijn of deze valt (en hoe!)

 

Notaris -nsbasic -delphi

(5 november 2009)

Met dit programma moet een gebruiker meetwaarden kunnen invoeren. Hij wordt herinnert aan meetwaarden die nog moeten worden genoteerd.

 

Voorbeeld:

- een gebruiker wil elke dag tussen 7:00 en 0:00 per uur noteren hoeveel koppen koffie hij dronk

- een gebruiker wil voor een bepaalde (werk)dag noteren of hij met de fiets naar het werk ging

- een gebruiker noteren of hij op een bepaalde dag sneeuwklokjes heeft gezien.

 

 

 

Relatie -nsbasic -delphi

(5 november 2009)

Een gebruiker wil van een groep mensen (een scene) waarnemingen opschrijven.

Van een waarneming wordt het volgende genoteerd:

- datum

- tijd

- persoon (die de actie uitvoert)

- actie

- (optie) personen (die de actie betreffen)

 

Bijvoorbeeld:

 

2009-10-21 12:15 {Piet} komt thuis

2009-10-21 12:17 {Piet} haalt koffie

2009-10-21 12:19 {Piet} belt met {Kees}

 

 

De gebruiker moet van verschillende scenes waarnemingen kunnen noteren.

 

 

Wat groeit waar wanneer -nsbasic -delphi

(5 november 2009)

Als je door je omgeving loopt of fietst zul zien dat de begroeiing van landbouwgrond door de tijd verschilt. Langs een weg (de zwarte lijn in de afbeelding hieronder) worden stukken land voor verschillende gewassen gebruikt (in de afbeelding weergegeven met verschillende kleuren)

 

 

Schrijf een programma waarmee je van een stuk grond de soort begroeiing op een bepaalde datum kunt aangeven.

Het moet mogelijk zijn om voor een bepaald locatie door de tijd te bladeren, zodat je het grondgebruik in het verleden kunt terugvinden.

 

 

Combinatiefoto (1) -delphi

(5 november 2009)

De twee foto's hieronder zijn van verschillende afstanden gemaakt.

 

 

 

Het valt echter op dat de tweede foto bijna helemaal in de eerste foto zit.

Het verschil is kleiner, als het afstandsverschil kleiner is.

 

 

De oorspronkelijke foto is dan te bewaren als een combinatie van twee foto's.

- uit de eerste foto is een deel weggelaten

- daarin kan de twee foto worden ingepast.

- samen levert dat dan weer de oorspronkelijke foto.

 

De twee foto kan natuurlijk ook weer een combinatiefoto zijn.

 

- Maak een serie foto's van een straat. Houd de afstand tussen de opeenvolgende foto's klein.

 

Schrijf een programma waarmee je zo een serie foto's kunt verwerken tot combinatie foto's. De schaal en positie van een foto moet handmatig in te stellen zijn.

 

mogelijkheid 1: Uiteindelijk zijn er bij een combinatie foto toch steeds verschillen met de oorspronkelijke foto.

Laart het programma de verschillen zoeken en deze in een extra afbeelding bewaren.

 

Een combinatiefoto bestaat dan uit drie delen:

- de gereduceerde oorspronkelijke foto

- het binnendeel (dat ook een combinatiefoto kan zijn)

- een foto die de verschillen corrigeert.

 

mogelijkheid 2: Het zou natuurlijk mooi zijn als de computer je helpt om dit alles zo efficiënt mogelijk te doen. Het kost erg veel rekentijd om alle schalen en posities te gaan proberen. Als je de computer alleen in de buurt van de door een mens ingestelde positie en schaal naar een betere plek en schaal laat zoeken (de verschillen moet zo klein mogelijk zijn), geeft dat sneller een oplossing.

 

mogelijkheid 3: Bij de opdracht hierboven maak je fotoseries vooruit of achteruit te lopen.

Je zou ook om een object heen kunnen lopen. Onderzoek om je programma ook dan goede combinatiefoto's maakt.

 

 

Pijplijn -delphi

(5 november 2009)

{gemiddeld} Een gebruiker moet regelmatig bestanden verwerken. Bijvoorbeeld:

- een filmpje comprimeren

- vakantiefoto's sorteren

- Word-bestanden afdrukken

- etc.

 

Het pijplijn is een programma waaraan de gebruiker een serie bestanden met een beschrijving (virtueel) in de pijplijn kan zetten.

 

Als de gebruiker de pijplijn opent kan hij een serie openen. Als hij klaar is met het verwerken van de bestanden, moet hij de serie handmatig verwijderen.

 

 

Muizenspel -nsbasic -delphi

(5 november 2009)

{eenvoudig} Het muizenspel werkt als volgt. Er is een speelveld met de vakjes 1 t/m6. Alle spelers hebben een gelijk aantal fiches.

Ze gooien ombeurten met een dobbelsteen. Stel dat er 3 gegooid wordt. Als er op de 3 een fiche ligt moet we spel die van het speelveld pakken en bij zijn fiches leggen. Als er nog geen fiches op de 3 lag, legt de speler één van zijn fiches op vakje 3.

In vakje 6 zit een sleufje, waardoor de fiches vallen. Deze fiches verdwijnen daardoor uit het spel. Winnaar is degene die het eerst al zijn fiches kwijt is.

 

Schrijf een programma waarmee je het muizenspel kunt spelen.

Je moet het aantal spelers en het aantal fiches in kunnen stellen.

 

De speler moet de computer als bord kunnen gebruiken, naast een echte dobbelsteen.

Maar het moet ook mogelijk zijn om met een computerdobbelsteen te kunnen werken.

 

mogelijkheid: maak het mogelijk om een groot aantal spellen automatisch door de computer te laten spelen. De computer moet het minimaal, maximaal en gemiddeld aantal zetten bijhouden dat een spel duurt (bij een vaste waarde voor het aantal spelers en het aantal fiches).

 

artikelblok -php -javascript

(5 november 2009)

Schrijf een website waarmee je artikelen kunt aanmaken.

Een artikel bestaat uit een artikelnummer, auteur, categorie, titel, aanmaakdatum, tekst en eventueel een afbeelding.

Een vergroting van de afbeelding wordt zichtbaar als je er op klikt.

Bij het artikel staat er 'permalink'  waardoor het artikel op andere website te gebruiken is.

 

 

Er moet een routine zijn waarmee een lijst van titels te maken is voor een selectie van artikelen:

- op artikelnummer

- alle artikelen

- per categorie

- per maand (jan 2009)

- per jaar (2009)

- per maand (alles uit januari, om het even welk jaar)

- auteur

- artikelen die een zoekterm bevatten

 

Bovendien moet er een mogelijkheid zijn om een selectie van artikelen te maken die samen één pagina vormen door op een selectiepagina titels aan te vinken.

 

Verder moet een artikel van een externe website her te gebruiken zijn.

 

mogelijkheid: je kunt je artikelsysteem extra krachtig maken als je selectie van andere websites aan jouw artikel lijst kunt toevoegen.

 

 

 

gezichtenvinder -delphi

(5 november 2009)

{moeilijk} In moderne fototoestelen zit vaak een optie om de foto pas te maken al er gelachen wordt. Het fototoestel moet daarvoor natuurlijk wel eerst herkennen wat een gezicht is.

Schrijf een programma dat een afbeelding gezichten zoekt.

 

Silhouet (1) -delphi

(5 november 2009)

Schrijf een programma dat uit een foto het silhouet van objecten haalt. Het silhouet moet in een aparte afbeelding bewaard worden.

 

Silhouet (2) -delphi

(5 november 2009)

Schrijf een programma dat van een gegeven silhouet bepaald of het het silhouet van een mens is (zou kunnen zijn).

Voorbeelden van silhouetten vind je bijvoorbeeld hier.

 

 

Foto-mozaiek -delphi

(5 november 2009)

In de afbeelding hiernaast kun je een voorbeeld van een fotomozaïek zien. Een groot exemplaar van deze afbeelding staat hier.

Een foto wordt in rechthoekig gebieden opgedeeld die dan een beetje uit elkaar geschoven worden.

Aan de randen worden delen weggelaten.

 

Op de achtergrond staan grijze gebieden die de foto omlijsten.

 

Schrijf een programma dat van een foto een willekeurig mozaïek maakt. Als het mozaïek je bevalt moet je het als jpg-bestand kunnen bewaren.

 

Er zijn natuurlijk wat instellingen die je als gebruiker moet kunnen maken. Bijvoorbeeld:

- wat zijn de minimale en maximale breedte en hoogte van een mozaïek-deel?

- hoeveel ruimte zit er tussen foto's?

 

 

 

Klikklak-boekje -nsb -delphi

(5 november 2009)

Op de basisschool worden in groep 3 zogenaamde klikklak-boekjes gebruikt.

Er zijn drie plekken waar een letter kan staan. Op sommige kaartjes staan de dubbelklanken (aa,ee,oo,uu,ie,eu,ei,(ij), au, ou). Door de blaadjes om te slaan kan de leerling zelf woordjes maken.

Schrijf een programma waarmee je zo een boekje kunt maken.

 

 

 

 

 

 

 

 

 

Kalender -nsb -delphi

(5 november 2009)

Je ziet tegenwoordige regelmatig weer klassieke kalenders en klokken opduiken. De cijfers bestaan uit twee halve delen die omklappen.

Schrijf een programma en routines waarmee je zulke cijfers (bij de maanden kan het ook een tekst zijn) kunt laten zien.

Dat kan door bitmaps te maken en die te laten zien, maar ook door de afbeeldingen met een programma te tekenen.

 

LijstDeler -php

(18 oktober 2009)

Een leerling kan inzendingen insturen. Voor elke inzending krijgt hij een andere inzending (die niet van hemzelf is) toegemaild.

De beheerder moet er voor kunnen kiezen om inzendingen eerste goed te moeten keuren. Na goedkeuring krijgt de leerling toegang tot een ander item.

 

AntwoordDeler -php

(18 oktober 2009)

Maak een website die het volgende moet kunnen:

- Leerlingen moeten uitwerkingen van opdrachten kunnen posten in een bepaalde categorie.

- De docent kan de categorie zo instellen dat een leerling de antwoorden van hemzelf , of die van andere leerlingen kan zien, zodra hij zijn eigen antwoord post.

 

 

Schrijfletters

(13 oktober 2009)

Schrijf een programma waarmee jonge kinderen schrijfletters kunnen oefenen d.m.v. een tablet. Hier kun je een bestand met schrijfletters bekijken.

De geschreven letters moeten worden bewaard, zodat de docent of ouders achteraf kunnen bekijken hoe de vooruitgang is.

 

 

Kinderpraat

(13 oktober 2009)

Als je een jong broertje, zusje, neefje of nichtje hebt kun je aan de volgende opdracht werken. Verzamelen taal (woorden, zinnen) die de jonge telg zegt.

Het is belangrijk dat je datum, tijd en de uitspraak nauwkeurig verzamelt.

Om deze gegevens te verwerken schrijf je een programma. Hiermee moet toename van de woordenschat te meten zijn.

 

 

Mastermind (1)

(13 oktober 2009)

Schrijf een programma dat uit eerdere zetten (en de bijbehorende beoordeling) een geschikte zet bepaald om dichter bij de oplossing te komen.

 

 

Valkuil

(13 oktober 2009)

Bij het spel valkuil kun je horizontaal of verticaal zeven schuifjes in 1 van de drie standen zetten (het speelveld is dus 7x7). De blauw schuifjes liggen boven de rode schuifjes. In sommige standen komt er een gat onder een kogel te liggen. Als in zowel de horizontale als de verticale schuif een gat zit valt de kogel in de valkuil.

 

fotospelsituatie

 

Bij een spel - waarvan één schuif ontbrak - heb ik bekeken hoe de gaten over de schuifjes verdeeld waren:

 

g staat voor gesloten, o staat voor open

 

blauw (bovenste laag)

eerste schuif ontbreekt

gogooog

ogogogo

oogogog

ogogogo

ooogooo

oogoogo

 

rood (onderste laag)

gogooog

gogoogo

ooggooo

oooogog

gooooog

ooggooo

ogoogoo

 

Schrijf een programma waarmee je valkuil kunt spelen.

 

Valkuil (2)

(13 oktober 2009)

Een valkuil spel staat klaar om gespeeld te worden. Er zijn 7x7 vakjes. Elke speler heeft 5 kogels op het speelveld gelegd. Naast de 10 kogels zijn dus nog 39 vakjes over. Daar kan een blauwe of een rode schuif te zien zijn. Als in beide een gat zit, zie je 'niets'.

Schrijf een programma dat berekend wat in elke situatie de beste zet is om een kogel van de tegenstander in de valkuil te laten vallen, of juist om de eigen kogels te beschermen.

 

 

 

 

Gezichtspunt

(1 oktober 2009)

Op deze website kun je het geweldige werk van een kunstenaar zien. Schrijf een programma dat berekend hoe je een lokaal moet schilderen om vanuit een bepaald gezichtspunt (bijvoorbeeld ergens bij de deur) cirkels of schaakbordpatronen te kunnen zien.

 

 

Persoonskenmerken

(29 september 2009)

Schrijf een mobiel programma waarmee je persoonskenmerk aan iemand kunt toewijzen.

Bij persoonskenmerken moet je denken aan opmerkingen die bijvoorbeeld op de volgende manieren gemaakt worden.


-  ik vind hem/haar (heel erg) ...
-  hij/zijn kan heel goed/slecht ...
-  de ouders vinden dat hij/zij ... is/doet
-  de leraar vind hem/haar ...
-  de klasgenoten vinden hem/haar ...
-  ik hoor wel eens dat men hem/haar ... vind

 

Je moet kunt opschrijven welke kenmerk door wie op welke datum toegekend werd.

Per persoon moet er een korte lijst op te vragen zijn waarin staat hoe vaak een kenmerk toegekend werd.

 

Verder moet er een overzichtslijst op te vragen zijn waar per kenmerk te zien is hoe vaak het toegekend werd.

 

Pomodoro

(29 september 2009)

Pomodoro is een tijdmanagment-techniek: 25 minuten werken (geen email, telefoon, wat dan ook), gevolgd door 5 minuten koffie, email, twitter of wat dan ook.

Schrijf een mobiel programma of website waarmee je van taken kunt bijhouden hoeveel pomodoro je er aan besteed hebt.

 

 

Maatmeter

(28 september 2009)

Bij een klusmarkt zijn tegenwoordig afstandsmeters te vinden die met een laser werken.

Het doel van deze opdracht is om met behulp van zo een meter en een programma een nauwkeurig model van een hoofd te maken.

 

- de proefpersoon zit op een draaistoel.

- met een gradenverdeling is de hoek van de draaistoel af te lezen

- de laser staat op een bepaald hoogte ingesteld

- bij de ingestelde hoogte wordt rondom een profiel gemeten met de afstandsmeter door de stoel te draaien.

- het programma verwerkt de metingen tot een 3d-model van de proefpersoon

 

mogelijkheid: Maak bij elke meting ook een foto van het hoofd. Het deel van de foto rond de plek waar de laser scheen (op de foto moet natuurlijk niet een rode vlek staan), wordt op het model 'geplakt'.

 

Motoblur

(10 september 2009)

Op 17 januari 2009 stond hier al de blokkenschuiver als opdracht.

Binnen een jaar hebben allerlei andere telefoonproducten ook hun blokkendoos gebouwd. Hiernaast zie je die van Motorola, ooit één van de belangrijkste telefoonproducten.

Facebook, twitter, het weer en wat snelkoppelingen vullen het scherm. Hoe kun je nu zo een scherm efficiënt vullen en gebruiken? Programmeer een designstudie waarmee je onderzoek wat de mogelijkheden zijn.

Op je op weg te helpen: blokken kunnen ballon krijgen. Misschien worden ze ook wel groter en kleiner? Leef je uit!

 

 

 

 

 

MoonMario

(10 september 2009)

Mario springt en racet niet alleen. Hij probeert ook wel eens op de maan te landen. Het is een leuke mix tussen de oude maanlander-spelletjes en asteroids. Probeer zo'n spelletje ook te programmeren.

 

 

Braille 1

(10 september 2009)

Schrijf een programma waarmee je tekst als braille kunt coderen.

 

mogelijkheid: maak het mogelijk om tussen verschillende Braille coderingen te kunnen kiezen.

 

Braille 2

(10 september 2009)
Schrijf een programma waarmee je een opname (webcam) of foto van braillecode omzet naar leesbare tekst.

 

Braille 3

(10 september 2009)
Schrijf een programma waarmee braille-teksten kun invoeren. De leesbare tekst wordt er dan bij getoond. Het invoeren zou op verschillende manieren kunnen:

- door op een touchscreen de juiste puntjes in een cel te zetten

- door met het toetsenbord met de cijfer 1 t/m 6 (of 8) puntjes aan te zetten

 

twee keer tappen of twee keer hetzelfde cijfer invoeren zet het puntje weer uit.

 

Waterbreker

(7 september 2009)

Water kan echt op prachtige manieren 'breken'. Schrijf een programma waarmee je virtueel water kunt laten breken.

 

 

 

 

 

Sterrenbeelden raden

(7 september 2009)

Schrijf een programma waarmee je door afbeeldingen van sterrenbeelden kunt bladeren.

Er moet een meerkeuzequiz in het programma zitten waarmee je de sterrenbeelden kunt oefenen.

 

 

Boomsoorten

(7 september 2009)

Al eerder was er een opdracht om een programma te schrijven om vlinders te herkennen.

Op een website als bomengids kun je bomen determineren. Bekijk zeker de afstreepmethode.

 

Euromunten -p

(7 september 2009)

(gemakkelijk) Schrijf een programma waarmee je een afbeelding van de verschillende euromunten kunt opzoeken.

 

Medicijnkast -p -wm -php

(7 september 2009)

Schrijf een programma waarmee je kunt bijhouden wie welke medicijnen en welke dosering innam. Denk er aan dat je per dag meer dan één keer iets kunt innemen.

 

Lichaamsmaten

(7 september 2009)

Een verrassende ontdekking is dat mensen groeien. Schrijf een programma waarmee je voor een aantal mensen diverse lichaamsmaten kunt bijhouden. Denk daarbij bijvoorbeeld aan de hoofdomtrek, lichaamslengte, beenlengte, voetlengte, lengte van de vingers, lengte beide gestrekte armen etc.

 

 

Vlekkenkaart -p -wm -php

(7 september 2009)

Het is moet om van moedervlekken bij te houden waar je ze op je lijf hebt zitten en hoe zet eruit zien (kleur, afmeting).

Schrijf een programma waarmee je je gezinsleden op hun lijf kunnen aangeven waar ze een 'vlek' hebben. Voor elke vlek moeten we op meer dan één datum notities gemaakt kunnen worden (kleur, lengte, breedte, notitie, dikte?, tekening/foto?)

Je moet op een één of andere manier een kaart van een menselijk lichaam in het programma inbouwen. Op die kaart moet je een punt kunnen markeren.

 

 

Pannenkoek

(28 juli 2009)

Een kok bakt een serie pannenkoeken. Deze hebben echter niet allemaal dezelfde grootte. Als hij zijn baksels bij de klant op tafel zet moet de pannenkoeken in oplopende volgorde gesorteerd zijn: de grootste ligt onderop, de kleinste ligt bovenop.

Bij het sorteren kan alleen een deel van de stapel pannenkoeken in één keer omgedraaid worden.

 

 

Schrijf een algoritme dat een reeks getallen of strings op deze manier sorteert.

Je moet het algoritme zo schrijven dat het in een andere programma gemakkelijk her te gebruiken is.

 

Als je jouw algoritme vergelijkt met een andere sorteer-algoritme (bv. bubbelsort) is dat een pre.

 

Je denkt misschien dat deze opdracht meer iets voor een pannenkoek is, maar de werkelijkheid is dat een zekere Bill Gates dertig jaar geleden een artikel schreef over een algoritme waarmee dit efficiënt gaat.

 

In 2009 zijn wetenschappers erin geslaagd om bacterieën dit probleem sneller te laten oplossen dan een computer!

 

mogelijkheid 1: Moeilijker is het het om verbrandde pannenkoeken te sorteren. De pannenkoeken zijn allemaal aan 1 kant verbrand. In de begintoestand liggen ze allemaal met de verbrandde kant naar beneden, na het sorteren moeten ze allemaal weer met de verbrande kant beneden liggen (elke pannenkoek moet dus een even aantal keren omgedraaid zijn: 0,2,4,...)

 

 

Logboek (2) -php

(28 juli 2009)

(Zie ook 1 april 2009) Schrijf een website waarmee gebruikers logboeken kunnen bijhouden. Nadat de gebruiker ingelogd is kan hij een bestaand  logboek aanvullen, of een nieuw logboek aanmaken. De naam van een logboek is achteraf te wijzigen.

Een geopend logboek kan een item krijgen (dat automatisch) voor de huidige dag is.

De gebruiker kan 6 items opgeven:

- een beknopte tekst (titel)

- tijdsduur

- een uitgebreide tekst.

- een lijst met de logboeken van andere gebruikers

- een attachment (1 bestand met uitwerking van de opdracht tot dan toe-> meerdere bestanden moeten in een zip-bestand)

- attachments met screenshots

 

Logboek items kunnen gewist worden, maar er kunnen geen items achteraf ingevoegd worden.

 

Het toevoegen van de logboeken van andere gebruikers moet eenvoudig kunnen door:

- de gebruikersnaam op te geven

- daarna verschijnt een lijst met logboek-namen

- daarin wordt de juiste aangeklikt -> deze komt in de lijst te staan.

 

De functie hiervan is dat teams gemakkelijk elkaars logboeken kunnen aanvullen, maar tegelijkertijd ook eigen activiteiten kunnen toevoegen. Logboek items die iemand anders toevoegt worden natuurlijk ook bij de gebruiker zelf getoond. Eventueel kan deze het item wel wissen.

Dit kan natuurlijk nadelig zijn voor zijn collega's. Je kunt er voor kiezen om item dan wel bij de collega's te laten staan totdat zij het item zelf wissen.

 

De beheerder van de website kan alle logboeken met dezelfde naam overzichtelijk naast elkaar in 1 grote tabel naast elkaar te zien krijgen. Logboeken die met elkaar verweven zijn moeten daarbij naast elkaar gezet worden.

De gebruiker kan een items als gezien afvinken. Dit veld is alleen voor de beheerder zichtbaar.

 

 

Dagboek (2) -php

(28 juli 2009)

(Zie ook 26 maart 2008) schrijf een website waarmee gebruikers een eenvoudig dagboek kunnen bijhouden. De gebruikers moeten een account kunnen aanmaken en daarmee kunnen inloggen. Daarna moeten ze door hun dagboek kunnen bladeren.

Het moet mogelijk zijn om een zoekterm op te geven. Daarna worden alleen de dagboekitems getoond die de zoekterm bevatten.

De gebruiker moet zijn dagboek kunnen exporteren als html-bestand.

 

Het is een pre als het dagboek ook als csv-bestand te exporteren is.

 

mogelijkheid: Maak het mogelijk om ingewikkeldere zoektermen op te geven: aap+noot geeft alleen de items waarin zowel 'aap' als 'noot'  staan. 'aap+noot,mies' geeft de items met 'aap+noot' of 'mies'.

 

 

 

Leet

(24 juli 2009)

Alle Noob's zullen ongetwijfeld w00t roepen als ze deze opdracht lezen. Schrijf een programma dat een tekst omzet naar leet. Bouw een optie in waarmee alleen omzettingen van 1 teken gekozen worden (dus niet \\//\\// voor w, maar wel M voor u).

Als er geen omzetting in 1 ander teken is, blijft het teken ongewijzigd.

In de oorspronkelijke tekst mogen geen hoofdletters voorkomen (als dat zo is worden er kleine letters van gemaakt).

 

mogelijkheid 1: Geef de gebruiker de mogelijkheid om zelf zijn leet lijst samen te laten stellen.

Er is voor elke letter een lijst met ALLE mogelijkheden (zie de link). Daaruit kan de gebruiker de mogelijkheden kiezen die hij wil gebruiken, dat wordt de lijst die het programma gebruikt.

 

mogelijkheid 2: Bouw de mogelijkheid in om leet naar normaal schrift terug te vertalen. Ook hier kun je dan weer schakelaars inbouwen:

- één teken per letter

- gebruik de persoonlijke lijst of de lijst met alle vertalingen.

 

Soms zal het programma meer mogelijkheden voor één leet-woord vinden. Bedenk een oplossing om het programma daar gebruikersvriendelijk mee om te laten gaan.

 

 

Steno (1)

(24 juli 2009)

Schrijf een programma dat een tekst omzet (tekent) als steno.

 

 

mogelijkheid 1:

Er zijn manieren om steno nog extra te verkorten probeer die ook te automatiseren.

 

mogelijkheid 2:

Schrijf een programma dat een tekst omzet (tekent) als steno, maar dan wel in de aan elkaar geschreven vorm: de letter van één woord vormen één lang stenoteken dar gevormd wordt door de stenotekens door te schrijven.

 

 

mogelijkheid 3:

Schrijf een programma dat een bitmap met een steno-tekst inleest er hier normaal schrift van maakt.

 

 

Steno (2)

(24 juli 2009)

Schrijf een programma waarmee je een gebruiker steno kunt laten oefenen.

In een eenvoudige vorm kan het een meerkeuze-programma zijn, waarmee je de gebruiker in twee richtingen (tekst->steno en steno->tekst) laat oefenen.

Een geavanceerde vorm zou kunnen bestaan uit een programma waarbij de gebruiker de tekens echt moet schrijven het het programma de invoer beoordeeld.

 

 

 

Virtueel Vuurwerk

(23 juli 2009)

Op internet kun je websites vinden waar je je eigen vuurwerkshow kunt maken.

Er zijn verschillende pijlen met mooie effecten. Deze pijlen kun je op een tijdlijn plaatsen en later eventueel verschuiven. Schrijf een programma waarmee je zelf zo een show kunt maken.

 

 

In de wolken

(19 juli 2009)

In reclame zit soms ook wel eens iets moois.

Schrijf een programma waarmee je gemakkelijk een wolk kunt maken zoals in de afbeelding hiernaast. De foto van het gezicht moet gemaakt zijn tegen een egale achtergrond, zodat het programma die kleur kan wegfilteren. Dan nog een tekst erbij et voila

 

 

 

 

 

 

 

 

 

 

 

 

Sterrenmeter

(17 juli 2009)

Op de afbeelding hiernaast zie je de sterren rond de poolster.

De kaart werd in 1907 in een grot bij Dunhuang in Noordwest-China gevonden.

Ze stamt uit de 7e eeuw na Chr. Het pannetje (grote beer) is goed te herkennen, maar de poolster zelf staat er niet op.

Eerst dacht men dat de kaart een schets was, maar in 2009 werd duidelijk dat de sterren maximaal 1,5 tot 4 graden van de werkelijk positie staan.

Dat is erg nauwkeurig voor die tijd.

Maak een opstelling en een programma waarmee je ook probeert sterposities nauwkeurig te meten.

Je mag gebruik maken van een camera/webcam, maar je mag ook een andere meetmachine maken (mindstorms?).

 

 

Send-a-smile

(17 juli 2009)

Microsoft gebruikt de send-a-smile applicatie om gebruikers feedback te laten geven op Office 2010. Dat een geweldig idee dat meer algemeen in te zetten is.

De gebruiker moet een waardering emoticon, tekst/toelichting en eventueel een screenshot kunnen versturen.

Samen met de naam, datum en tijd komen die in een online database te staan.

De beheerde moet de entries kunnen markeren als 'afgehandeld', en hij moet kunnen wissen.

De items moet te sorteren zijn op datum, naam of emoticon.

 

Tijdschrijver

(17 juli 2009)

Dit programma lijkt wel wat op het vorige. Als de gebruiker het programma opstart wordt periodiek een screenschot naar een database gestuurd. Periodiek kan bv. elke seconde zijn, maar ook als de verandering op het scherm groot genoeg is.

De beheerder kan van de gebruikers een tijdlijn opvragen waarop schematisch te zien is wanneer er werk ingezonden werd. Als een serie aan geklikt wordt, kan de beheerder door de screenshots lopen.

 

 

Cirkelbeweging

(14 juli 2009)

In 2009 had dit hotel een prachtig animatie op haar website. Probeer die te programmeren (relatief eenvoudig).

 

Kubusroller

(8 juli 2009)

Zie het filmpje hieronder. Op een heel erg intuïtieve manier worden aaneengesloten vierkantjes uitgesneden die tot een kubus samen worden gevouwd.

Probeer dit na te maken!

 

 

 

Knikkerroller

(8 juli 2009)

Twee speler moeten met hun knikker zo dicht mogelijk bij de pot (een grote knikker) zien te komen. De knikker wordt in een bepaalde richting gerold met een bepaalde startsnelheid. Elke knikker remt op een iets andere manier af.

Misschien dat je onregelmatigheden in de vloer kunt simuleren (waardoor het nog moeilijker wordt om precies te mikken).

Een speler is de computer. Hoe kun je de computer knikkers laten rollen?

Het is voldoende als je de knikker is bovenaanzicht laat zien, maar als je het mooier wilt maken mag dat natuurlijk best.

 

 

 

lezen

(8 juli 2009)

Schrijf een oefenprogramma waarmee kinderen kunnen oefen met lezen.

Het programma moet de uitspraak van een woord met hakken (p-i-l) plakken ( p i l -> pil) kunnen voordoen van een redelijk set woorden.

Als je slim bent maak je een set geluidsbestanden waarmee elk woord uit te spreken is.

 

Je kunt een leerling laten oefenen door een meerkeuzevraag aan te bieden.

Bij het woord worden vier plaatjes getoond, waaronder natuurlijk een plaatje dat bij het woord hoort.

Omgekeerd kun je het kind bij een plaatje het juiste woord laten bepalen.

 

 

Kloklezen

(8 juli 2009)

Al eerder (zie verderop in deze lijst) hebben we het kloklezen genoemd.

In verschillende stappen kun je kinderen leren om de klok de leren lezen:

 

- eerste hele uren

- dan halve uren

- kwartieren

- tot op 5 minuten

- eventueel tot op 1 minuut.

 

Het programma zou de volgende onderdelen kunnen hebben:

 

- het programma zou met een animatie de overgang van het ene naar het volgende uur kunnen laten zien

- op dezelfde manier voor halve uren etc.

 

Om te oefenen kan de leerling een willekeurig tijdstip getoond worden.

Daarna moet hij uit vier verschillende mogelijkheden kiezen. Als het kind nog niet (goed) kan lezen zou het tijdstip uitgesproken kunnen worden als je er met de muis overheen beweegt.

 

 

 

Woordenwolk

(3 juli 2009)

Op internet zie je regelmatig mooie woordenwolken zoals in de afbeelding hiernaast. Schrijf een programma dat zulke woorden wolken kan maken.

Je moet de volgende dingen kunnen instellen:

 

De afmeting (breedte en hoogte) van de wolk in pixels moet in te stellen zijn.

Verder moet een lijst met woorden op te geven zijn. Voor elk woord moet een kleur, gewicht (hoe hoger het gewicht des te groter het woord geschreven wordt) en een lettertype op te geven zijn. Ten slotte moet je nog een URL aan een woord kunnen koppelen.

 

Het algoritme zou zo kunnen werken:

- bereken van elk woord de breedte en hoogte

- begin met het plaatsen van woorden die de grootste oppervlakte innemen

- werk de lijst af tot het 'kleinste' woord geplaatst is

- als een woord niet past gaat het programma terug in de lijst en zet het vorige woord op een andere plek.

 

Het probleem hiervan is dat het programma misschien nooit een oplossing vind. Al na het plaatsen van een paar grote woorden kan de puzzel onoplosbaar worden. Je zou dat kunnen oplossen door helemaal opnieuw te beginnen als een woord nergens meer past.

 

Één controle kan al aan het begin gebeuren: de totale oppervlakte van alle worden moet kleiner zijn dan de oppervlakte van het tekengebied.

Stel dat je alle woorden met gewicht 6 met fontgrootte 12pt tekent. Het kan dan helpen als je soms een iets kleinere grootte mag kiezen om een woord beter te laten passen.

 

Dit soort netwerken (type een twitter-id in om het te kunnen bekijken) kunnen ook helpen. Elk woord heeft een afmeting en een positie. Woorden moeten elkaar afstoten als ze elkaar overlappen. Als ze dan een bepaalde afstand van elkaar af bewogen zijn, stoten ze elkaar niet meer af. Maar dat is waarschijnlijk niet voldoende. Grote woorden moeten een beetje verspreid liggen en moeten elkaar dus altijd (een beetje) afstoten. Eigenlijk willen grote woorden het liefst langs kleine woorden liggen, een beetje minder graag langs gemiddeld grootte woorden en helemaal niet langs grote buren.

Middelgrote woorden willen niet langs middelgrote worden liggen, maar wel langs klein. Kleine woorden maakt het niets uit.

 

Dan is er nog de manier waarop je een woord exporteert. Het eenvoudigste is een bitmap. Maar dat is wat statisch.

Leuker is het als elk woord linkt naar een URL. Er zijn twee voor de handliggende manieren omdat te doen.

1) Het programma schrijft behalve het plaatje ook de code voor een clickable map in html

2) Het programma zet welke woord in een DIV-tag en zet deze met een CSS-bestand op de juiste plek.

 

Straatnaambord

(30 juni 2009)

Er bestaat een leuk project waarbij straatnamen én de geografische coördinaten uit foto's van straatnaambordjes (en hier) gehaald worden.

Probeer dat ook.

 

 

Druppelverf

(27 juni 2009)

In de afbeelding hiernaast zie je druppels uit een cirkel druppelen. Schrijf een programma waarmee je druppels uit een rechthoek laat druppelen (als extraatje mag je ook een cirkel proberen).

De rechthoek hoeft maar één klein te hebben (als extraatje kun je een kleurverloop in de vorm aanbrengen).

 

mogelijkheid: sla de animatie op als .GIF-bestand

 

 

 

Cirkelafdekking

(27 juni 2009)

Een boer wil een rechthoekig stuk land besproeien. Hij wil daartoe een aantal sproeiers aanschaffen. Van elke sproeier is de sproeiafstand in te stellen tussen een minimum en een maximumafstand door de druk te veranderen. Het moet natuurlijk niet teveel kosten, maar het land moet wel goed besproeid worden.

 

Je wilt de boer graag helpen met dit probleem, maar je voorziet dat er misschien later nog een boer komt met ongeveer dezelfde vraag. Daarom wil je een programma schrijven dat dit soort problemen voor je oplost. We veralgemeniseren het probleem dus.

 

Een rechthoek is te bedekken met cirkels. Dat kan echter nooit zonder dat er ruimte overblijft of dubbel bedekt wordt: cirkels kunnen elkaar overdekken of er zelfs delen van de cirkel buiten de rechthoek vallen. Tussen rakende cirkels kan er oppervlakte onbedekt blijven.

 

Schrijf een programma dat willekeurig n cirkels (sproeiers) op een rechthoek legt met afmeting lengte l en breedte b.

Voor elke van de cirkels legt de gebruiker vast wat de minimum en maximum straal is.

Bovendien heeft elke cirkel een prijs. De boer kan aangeven hoeveel hij minimaal en maximaal wil uitgeven.

 

Eventueel kan de gebruiker de minimum en de maximum afstand tussen de middelpunten van twee cirkel opgeven.

 

Verder geeft hij strafpunten op voor de oppervlakte die:

- oppervlakte die door meer dan één cirkel bedekt wordt

- oppervlakte die niet bedekt is

- cirkeloppervlakte die buiten de rechthoek valt.

 

Als er een gewas op het land staat waarvoor het erg is dat het te veel water krijgt krijgt het eerste geval veel strafpunten.

Als elke plantje water moet krijgen is moet het aantal strafpunten voor de tweede mogelijkheid hoog zijn.

Als er een woonhuizen langs het land liggen krijgt de derde optie veel strafpunten.

 

Je kunt natuurlijk combinaties van strafpunten opgeven.

 

Voor elke van de drie vormen wordt het aantal strafpunten berekend door het met de oppervlakte te vermenigvuldigen.

De som van de drie waarden is het totaal aantal strafpunten.

Laat het programma bedekkingen zoeken met zo weinig mogelijk strafpunten dat binnen het budget van de boer ligt.

 

mogelijkheid 1: Maak een schakelaar waarmee je er voor kunt zorgen dat als een stuk land door s sproeiers bewaterd wordt, dat dit s-1 keer telt. Dus Bij 3 sproeiers 2 keer, bij 10 sproeiers 9 keer etc.

mogelijkheid 2: Neem ook de lengte van de slangen in de berekening mee. Er zijn drie opties denkbaar.

- elke sproeier heeft een eigen slang. Voor elke sproeier moet je dan de positie van het aansluitpunt kunnen opgeven.

- één sproeier zit aan het aansluitpunt. Alle andere sproeiers worden in serie met elkaar doorverbonden.

- een mengvorm. Er zijn een paar sproeiers met een aansluitpunt verbonden, maar de anderen krijgen via een andere sproeier hun water (kan één sproeier aan meer dan 1 sproeier water doorgeven?) 

 

De boer moet een prijs per lengte-eenheid voor de slangen kunnen opgeven. Deze prijs wordt bij de prijs van de sproeiers geteld.

 

 

Onweersdichtheid

(27 juni 2009)

Laat een programma de tweets van @Onweer inlezen. De gebruiker moet met de gegevens in de database een kaart kunnen samenstellen die de verdeling van onweersontladingen laat zien in een bepaalde periode (bv 1 april - 1 mei 2009, of de maand april in elk jaar).

 

Tiendensprong (gemakkelijk)

(27 juni 2009)

De Nederlandse pedagoog Kees Boeke schreef in 1957 het boek Tiendensprong. Het boek is op internet te vinden (hier en hier).

Verwerk de plaatjes en de tekst tot een programma voor de Palm of tot een webapplicatie die op een mobiel apparaat te bekijken is.

Er zijn twee films gemaakt op basis van dit boek. Eén ervan - powers of ten - is hier te zien.

 

Droomtijd

(25 juni 2009)

Verwerk de sleutelwoorden van deze website in een programma, zodat je er gemakkelijk in kunt zoeken.

Je moet de database kunnen werken, zodat de teksten eventueel kunt aanpassen.

 

Fietsroute

(16 juni 2009)

Een groep wielrenners wil een fietstocht in Zuid-Limburg plannen. In de route moeten een paar beklimmingen opgenomen worden. Bij de mooiste routes komen wegen niet twee keer voor in één rit.

Je kunt natuurlijk niet alle heuvels oprijden, daarom moet er een keuze gemaakt worden.

In het programma moeten een graaf te maken zijn. De heuvels zijn een lijnstuk waarbij je met een pijl kunt opgeven in welke richting de klim loopt. Door aaneengesloten lijnstukken aan te klikken kun je de route plannen.

In een lijst is te zien welke heuvels bereden worden en of dat bergop of bergaf is.

 

mogelijkheid: als je bij de punten in de graaf ook de geografische lengte en breedte kunt onthouden is dat een mooi extraatje. Je kunt de samengestelde route dan als .gpx of .kml bestand exporteren!

 

mogelijkheid: Je zou een 'volg-mode'  kunnen inbouwen waarbij het programma automatisch alle tussenliggende lijnstukken toevoegt als er tussen twee opeenvolgende punten geen splitsingen liggen.

 

Kalenderconversie

(16 juni 2009)

Op deze website kun je laten uitrekenen welke datum in onze tijdrekening bij een andere tijdrekening hoort. Er staat bekende vormen bij, maar van de wereldkalender had je waarschijnlijk nog nooit gehoord. Het vreemdste is vooral dat er een andere weekdag (bv. Zaterdag ipv woensdag' aan dezelfde dag gekoppeld kan worden.

Schrijf je programma zo, dat de routines gemakkelijk opnieuw gebruikt kunnen worden in een ander programma. Documenteer dus hoe alles werkt!

 

 

Matrix

(9 juni 2009)

Extreem! Schrijf een programma dat de teksten zo laat invliegen als in deze promo.

Nog beter? Exporteer de animatie als .PNG of .GIF!

 

Do-good

(9 juni 2009)

Beter goed gejat, dan slecht verzonnen: schrijf een programma dat elke dag een goede daad suggereert. Als je ook nog kunt bijhouden welke goede daden je allemaal hebt verricht is dat natuurlijk geweldig.

 

Straattaal

(9 juni 2009)

Op kaarten zie je vaak dat de naam van een straat, in de getekend straat geschreven wordt. De naam volgt daarbij de vorm van de weg.

Een straat is altijd een serie punten die met lijnstukken verbonden zijn.

Als de lijnstukken onder een hoek staan wordt bij het punt een cirkelboogje getekend.

 

Schrijf een routine die een straatnaam binnen een getekend weg kan schrijven.

 

Priem-optel-vierkant

(4 juni 2009)

Op deze pagina kun je een voorbeeld zien van een programma dat 4x4-vierkanten vult met de getallen 1 t/m 16. De som van de getallen in een kolom of rij moet daarbij priem zijn.

Er blijken heel erg veel manieren te zijn om dat te doen. De vraag is nu: zijn er ook zoveel manieren bij 5x5 of nog grotere vierkanten? Schrijf een programma dat oplossingen zoekt voor veel grotere vierkanten. Het is een pre als je ook het aantal mogelijke oplossingen telt (het kan natuurlijk lang duren voor het programma alle oplossingen gevonden heeft, maar dat is niet erg)

 

 

Micropuntadministratie -php

(26 mei 2009)

Een groep leerlingen kan micropunten verdienen voor micro-opdrachten.

Als de docent inlogt kan hij bij elke leerling een micropunt toevoegen. Daarbij wordt ook de datum en een korte beschrijving onthouden. Van elke leerlingen wordt voortdurend het totaal getoond.

Na een periode (een schooljaar) moet een nieuwe telling kunnen beginnen.

De docent moet natuurlijk leerlingen kunnen toevoegen, wijzigen en weghalen. En micropunten kunnen weghalen.

Het totaal aan micropunten per leerling moet tot een deelpunt worden omgerekend met de volgende formule:

 

deelpunt = aantal_micropunten*max/deelfactor

 

De waarden max en deelfactor moeten daarbij in te stellen zijn.

 

 

Antwoordwaardering

(25 mei 2009)

Schrijf een systeem waarbij de gebruikers een vraag kunnen stellen, waarna deze beantwoord kan worden. Bezoekers kunnen aan een antwoord een punt- of een minpunt geven. De antwoorden worden bij een vraag op score gesorteerd (van hoog naar laag).

Het systeem moet open en anoniem zijn, maar er moet een manier zijn waarop de beheerder vragen en antwoorden kan verwijderen.

Bovendien moeten vragen na een tijdje bevroren kunnen worden.

Ten slotte moeten er bij het posten van een antwoord een captcha zijn, waardoor niemand op het idee kan komen om een robot aan het werk te zetten... 

 

 

Collectiviteitsbetrouwbaarheid

(25 mei 2009)

[als context is hier de dagelijkse temperatuur genomen, maar natuurlijk is er ook wel een andere context denkbaar]

Deze opdracht heeft alleen zin als je een bepaalde termijn over temperatuurmetingen kunt beschikken. Van de deelnemers is de positie bekend. De deelnemers noteren van elke meting de datum, de tijd en de waarde.

Die worden in een database gezet. Iemand die de thermometer niet goed afschermt noteert een te hoge waarde als de zon de meter beschijnt.

Het doel is dat je met een programma meetstations opspoort die vaak afwijkende metingen noteren.

Extreme meetwaarden in een bepaalde periode (bijvoorbeeld 25 mei 2009, van 15:00 tot 16:00] kun je uit de database filteren door het gemiddelde van de metingen in die periode uit te rekenen.  

 

 

 

Familieboek

(22 mei 2009)

Schrijf een programma waarmee een stamboom te maken is.

Denk daarbij aan dingen als:

- een lijst met foto's

- achternaam

- doopnamen

- roepnaam

- geboortedatum en -plaats

- een memo waarin andere zaken opgeschreven kunnen worden (lijst met adressen)

 

 

Haargroei

(22 mei 2009)

Schrijf een programma dat een foto van een gezicht op een elipsoïde projecteert.

Bovendien moet er haar groeien op het hoofdje. Om niet voor elke haar de lengte te moeten bepalen zou je voor een paar plekken de lengte kunnen opgeven. Voor de overige haren wordt de lengte dan geïnterpoleerd.

 

mogelijkheid: De kleur van de haren moet in te stellen zijn, en het haar moet slag kunnen krijgen (de zware vorm van slag in de haren heet krullen. De extra zware variant heet kroeshaar).

 

 

Tracklog

(19 mei 2009)

Schrijf een programma voor een mobiel apparaat waarmee een reeks gps-coördinaten in te lezen is (tracklog).

De tracklog moet op het scherm te zien zijn (eventueel met inzoomen).

Naast de actuele track moet ook één of meer oudere tracks te zien zijn, zodat je al lopend-fietsend oudere route opnieuw kunt afleggen.


 

Mama

(19 mei 2009)

Schrijf een programma voor een mobiel apparaat dat de gebruiker herinnert aan elke mogelijk datum voor moederdag.

 

 

 

Ocarina

(19 mei 2009)

Eigenlijk is dit de meest vage programmeeropdracht tot nu toe.

Een ocarina is een soort fluit, gebakken van klei. Maar er bestaat ook een programma voor de iPhone, waarmee je al blazend en tappend muziek kan maken. Over het internet zelfs samen met anderen!

Schrijf een programma waarmee je ook een soort Ocarina maakt. Blazen zal niet eenvoudig zijn (op een pc zou het natuurlijk via de microfoon kunnen), maar tappend met de vingers, een pennetje of de muis moet het wel lukken.

 

 

 

 

Japanse puzzel

(19 mei 2009)

De volgende puzzel is een opgave die volgens deze pagina in Japan (wel eens) aan sollicitanten gegeven wordt.

 

De mensen op de afbeelding moeten allemaal met het vlot naar de overkant.

 

Er kunnen maximaal twee mensen tegelijk op het vlot.

 

Moeder kan niet bij één van de zonen blijven, zonder dat de vader erbij is.

Vader kan niet bij één van de dochters blijven, zonder dat moeder erbij is.

De dief (met het gestreepte truitje) kan bij niemand blijven, tenzij de politieman erbij is.

Alleen de moeder, de vader en de politieman weten hoe je met het vlot moet varen.

 

Schrijf een programma dat deze puzzel voor je oplost door alle mogelijkheden na te gaan. Als er meer dan één oplossing is moet het programma ze allemaal geven.

 

 

Panograaf

(19 mei 2009)

Panografieën noemen we foto's die uit overlappende opnamen samengesteld zijn.

Met photoshop kun je opnamen tot een panografie combineren. Dat is natuurlijk wat gemakkelijk.

De opdracht is, om een programma te schrijven waarmee je een panografie te maken is.

Het programma moet dus een serie foto's kunnen inlezen en die verkleind op het scherm kunnen weergeven. Daarna moet de gebruiker de foto's kunnen verschuiven en draaien.

Het is een pre als ook de helderheid van de foto in te stellen is.

 

p.s. je maakt een serie foto's het beste met een statief.

ps/2 er bestaan natuurlijk ook panorama foto's, maar daar versta ik toch eerder een samengestelde extra brede foto onder.

 

 

Entangle

(19 mei 2009)

Met dit programma kun je onzichtbare verbondenheid tussen mensen zichtbaar maken.

Tussen twee mensen die elkaar kennen is een onzichtbare draad gespannen. In het programma is die draad juist wel zichtbaar. De draad is oneindig op te rekken.

De twee mensen bewegen door de wereld. Telkens als er een object of een ander mens de draad doorkruist, buigt de draad zich om het object of de andere mens heen.

Zo bestaat de draad uiteindelijk uit lijnstukken, die de twee mensen verbindt.

 

Er zijn weer heel veel manieren waarop je de mensen in het programma willekeurig kunt laten bewegen.

 

 

zeepbelversmelting

(19 mei 2009)

Op een wateroppervlak drijven zeepbellen van een sopje. Soms spat zo een bel spontaan uit elkaar, maar soms versmelten ze ook.

Bestudeer het gedrag van zeepbellen en maak een programma dat dit simuleert.

Het is voldoende als je de zeepbellen in bovenaanzicht als cirkels tekent.

 

 

dobbelsteenroller

(19 mei 2009)

Deze opdracht is te danken aan Lucas. Gemakkelijk is ze niet.

Als je een dobbelsteen rolt, rolt deze in één bepaalde richting. Je kunt denkbeeldig een as door het middel van de dobbelsteen steken. Daaromheen rolt de dobbelsteen.

Al rollend kan de as anders komen te liggen, bijvoorbeeld doordat de dobbelsteen links op een punt komt te liggen en daardoor naar rechts overhelt.

Schrijf een programma dat het rollen van een dobbel simuleert.

Behalve het rollen van de kubus, is ook het tekenen van de kubus een uitdaging. Op internet is daar wel wat over te vinden.

 

Moodmeter

(19 mei 2009)

Schrijf een programma waarmee de gebruiker zijn mood kan noteren.

Om een beeld te krijgen zou de gebruiker minimaal 1x per dag zijn gemoedstoestand moeten noteren. Onderzoek allereerst welke factoren de gebruiker zou willen noteren. Bijvoorbeeld:

 

bedroefd 1 2 3 4 5 blij (of moet het een schaal van 1-10 zijn?)

moe 1 2 3 4 5 wakker

hongerig 1 2 3 4 5 voldaan

 

Moodweb

(19 mei 2009)

Schrijf een website waarmee user hun mood kunnen noteren.

De gebruikers moeten hun geboortedatum, geslacht, haarkleur en de hand waarmee ze schrijven opgeven.

 

Op de frontpage moet de gemiddelde 'mood' staan. De mensen die meetellen voor de berekening kun je beperken door het geslacht, leeftijd etc. te selecteren.

 

 

 

Sinuskoppeling

(15 mei 2009)

Stel je twee delen van een sinus-grafiek voor. De helling waar het eerste deel mee eindigt, is exact gelijk aan de helling waar het tweede deel mee begint. Je kunt deze grafiekdelen dus vloeiend in elkaar laten overlopen.

Schrijf een programma daarmee je twee of meer delen van een sinus in elkaar kunt laten overlopen.

Het is een pre als je de gebruiker interactief laat beinvloeden hoe de grafieken eruit zien (periode, amplitude).

 

 

Hint (19 mei 2009): een sinusfunctie is te schrijven als f(x)=a*sin(b(x-c)+d. Kies a,b,c en d willekeurig (binnen bepaalde grenzen). Kies een domein [0,x1]. Bij x1 bereken je de helling: f'(x)=-ab*cos(b*(x-c)). Hierop moet op het domein [x1,x2] de sinus-functie g aansluiten: g(x)=a'*sin(b'*(x-c'))+d'. Allereerst moet de helling hetzelfde zijn bij x1: f'(x1)=g'(x1), dus ab*cos(b(x1-c))=a'b'*cos(b'(x1-c'). Er zijn drie onbekenden a', b' en c'. Kies twee van deze parameters willekeurig binnen zelf te kiezen grenzen (bv. a' en b'). De derde is dan te berekenen (in dit geval c'). Let op dat cos() alleen waarden tussen -1 en 1 levert, dus dat ook arcos alleen berekend kan worden voor waarden tussen -1 en 1.

Nu kan met f(x1)=g(x1) de waarde van d' berekend worden.

 

 

 

Mens-erger-je-niet

(15 mei 2009)

Schrijf jouw versie van het beroemde spel.

 

 

Tetromino (2)

(15 mei 2009)

Tetromino's zijn figuren die uit 4 eenheidsvierkantjes bestaan.

Je kunt ze laten aansluiten tot een grotere figuur (in de onderste tekening staat een vergissing: 1 tetromino heeft 3 blokjes). Schrijf een programma waarmee je deze figuren kunt maken.

 

 

 

Marijn bubbels

(15 mei 2009)

Op een wateroppervlak drijven wel een luchtbellen. Samen met het golvende watteroppervlak maken ze te prachtigste vormen. Een eenvoudig rooster op de bodem laat dat mooi zien.

Schrijf een programma dat dit simuleert.

 

 

Zeshoek

(15 mei 2009)

Binnen een zeshoek zijn prachtige figuren te leggen met dakjes en driehoeken.

Schrijf een programma waarmee je zulke kunstwerkjes kunt maken.

 

 

 

kralenplank

(15 mei 2009)

Niet alleen voor fakirs: de kralenplank. Schrijf een programma waarmee je een virtuele/visuele kralenplank met vrij te kiezen kralen kunt vullen. Het resultaat moet te bewaren en op te vragen zijn.

 

Update: (22 januari 2010)

Download hier een demo voor Delphi waarin een array[] of TColor gebruikt wordt om de kleur te bewaren.

 

In deze demo kun je zien hoe je een cirkelvormige kralenplank maakt.

 

 

 

kralenketting (2)

(15 mei 2009)

Dit is niet de eerste opdracht over kralenkettingen.

Maak een programma waarmee je een kralenketting zoals in de foto hieronder kunt ontwerpen en opslaan.

Je moet vrij kralen kunnen weghalen en toevoegen.

 

 

Overlappingsgeometrie

(15 mei 2009)

Op de onderstaande foto kun je een tekening zien die ontstond door geometrische figuren te laten overlappen.

De overlappende delen bleven wit.

Schrijf een programma waarmee je geometrische figuren kunt tekenen. De gebruiker moet voor elke figuur een kleur kunnen kiezen. Ook de overlappende delen moeten een kleur kunnen krijgen. De afbeelding moet je kunnen bewaren.

 

mogelijkheid: de gebruiker moet ook de instellingen waarmee de tekening gemaakt is kunnen opslaan.

 

 

 

Chevalier de vlekkenton

(15 mei 2009)

Op deze website kun je in 1 afbeelding een kaart, het beeld van een neerslagradar en de verspreiding van pollen zien. De pollen worden met de afgeronde vlekken weergegeven.

Schrijf een routine waarmee je zo een vlekkendiagram kunt maken.

Ga uit van een raster van nxm punten. Elk punt kan een waarde krijgen (een geheel getal). Het is afhankelijk van de punten eromheen welke vorm er rond een punt getekend wordt.

 

 

boekenmaker

(15 mei 2009)

In de afbeelding zie een boek. Schrijf een programma waarmee je een blanco kaft kunt opmaken door er tekst en afbeeldingen op te zetten.

 

 

x-op-een-rij

(15 mei 2009)

Schrijf een routine waarmee je een aantal afbeeldingen/foto's op de onderstaande manier over elkaar heen kunt leggen.

 

 

Verschilweb

(15 mei 2009)

Een webcam slaat foto's op in mappen. Elke map heeft de datum als naam (20090515). Elke foto heeft een combinatie van datum en tijd als naam (200905151320.jpg).

 

Schrijf een programma dat op twee manieren verschillen tussen foto's zoekt:

 

1) tussen opeenvolgende foto's

2) tussen foto's op opeenvolgende dagen op (ongeveer) dezelfde tijd genomen zijn.

 

Voor foto's die te een te groot verschil hebben maakt het programma een HTML-tabel waarin een verkleining en een link naar deze foto weer gegeven is.

In de kolommen van de tabel staan de tijdstippen naast elkaar en de dag onder elkaar (elke dag een rij).

 

 

 

 

opdrachten-database

(15 mei 2009)

Schrijf AJAX/PHP-scripts waarmee een serie teksten kunt filteren. Denk daarbij aan de opdrachten op deze pagina.

Elke opdracht kan een aantal tags krijgen (voor welke klas het geschikt is, in welke talen je de opdracht kunt maken).

Door in een invoerveld een zoekterm op te geven kun je alleen de opdrachten uitfilteren die deze term bevatten. Als je dit live (met ajax?) kunt doen is dat extra mooi!

 

 

 

roosterbotsing

(12 mei 2009)

Een rooster heeft een afmeting van k hokjes naast elkaar en r rijen boven elkaar.

Over de lijnen van dit rooster bewegen b balletjes. Bij elk roosterpunt kan de bewegingsrichting van een balletje wijzigen.

In elke stap kan een balletje precies van het ene roosterpunt naar het volgende bewegen.

 

Het programma moet allerlei tellingen bijhouden. Hoe vaak bezoekt een balletje een roosterpunt? Hoevaak zijn er botsingen tussen twee (of meer) balletjes?

 

De gebruiker van het programma moet k, r en b zelf kunnen instellen.

Er is een schakelaar waarmee je kunt instellen of een balletje ook kan besluiten om op een roosterpunt te blijven liggen.

 

mogelijkheid: er zijn natuurlijk allerlei variaties mogelijk:

- Balletjes kunnen verschillende snelheden hebben.

- Balletjes kunnen asynchroon door het rooster bewegen: ze komen niet meer persé tegelijk bij een roosterpunt aan.

- tellen botsen tussen twee roosterpunten ook?

 

Ladingsgericht

(12 mei 2009)

Net als n de vorige opdracht bewegen er balletjes over roosterlijnen.

De balletjes hebben een (electrische) lading +1. De roosterpunten zelf hebben een lading die varieert. Afhankelijk van die lading wordt de beweging van balletjes beinvloedt.

 

De gebruiker van het programma moet k, r en b zelf kunnen instellen.

Bovendien kun je variëren hoe groot de lading van een roosterpunt minimaal en maximaal kan worden. Verder moet je nadenken over hoe je de lading laat variëren. Dat kan op veel manieren:

 

- kies een streefwaarde en laat de lading met een bepaalde snelheid naar die waarde veranderen

- laat de lading volgens een periodieke functie veranderen

- kies na een periode een waarde die erbij of eraf moet

 

Pascal

(12 mei 2009)

Delphi is de nakomeling van de programeertaal die naar de beroemde wiskundige Pascal genoemd is.

Uit de wiskundeles ken je misschien de driehoek van Pascal. Op deze website kun je nalezen wat de driehoek is.

 

Schrijf een programma rond de driehoek van Pascal. Je programma moet drie driehoeken kunnen tekenen:

 

- 1 met lege cellen die je verder zelf kunt invullen. De computer kleurt de foute waarde rood als de gebruiker op een controle-knop klikt.

- 1 met alle getallen in de vakjes.

- 1 met alleen de getallen die deelbaar zijn door n (bijvoorbeeld alle getallen die door n=2 deelbaar zijn).

 

De gebruiker moet het aantal rijen kunnen instellen.

Er moet een schakelaar in het programma zitten waarmee je ervoor kunt kiezen om de tweede driehoek (alleen de getallen deelbaar door n) af te beelden als gekleurde puntjes. Deelbaar is dan bijvoorbeeld zwart, niet-deelbaar wordt wit.

Op deze website kun je daarvan een voorbeeld zien.

 

Je kunt je programma op allerlei manier verfraaien:

- de gebruiker kan zelf de kleuren instellen

- op deze website zie je dat er afhankelijk van de rest van de deling een kleur gekozen wordt (deelbaar -> rest=0 -> zwart; rest=1->groen; rest=2->blauw; etc.)

 

 

Grasmaaier

(12 mei 2009)

Een menselijke grasmaaier zal een gazon netjes in parallele banen proberen te maaien.

Een robotgrasmaaier waarschijnlijk niet.

Schrijf een simulatie waarin je een een bitmap kunt inlezen. Groen staat voor gras, zwart staat voor alles wat geen gras is.

 

Als de maaier over het veld rijdt verandert groen in wit. Zo kan de computer door pixels te tellen zien hoeveel gras er gemaaid is.

 

De robotmaaier rijdt tot aan de rand van het grasveld en draait dan om. In het programma moet je verschillende manieren van omdraaien kunnen instellen (bijvoorbeeld):

 

- Draai een willekeurige hoek tussen 90 en 270 graden

- Draai 90 graden, rijd 20 pixels, draai waar 90 graden, rijd tot de volgende rand.

- en natuurlijk alle betere ideeen.

 

Bouw een schakelaar in waarmee je er voor kunt kiezen om de robot ook op een willekeurig moment van richting te laten veranderen. Er zijn veel manieren denkbaar waarop dat gebeurt:

 

- bijvoorbeeld altijd 30 graden naar links

- de maaier begint spontaan in een spiraal te maaien.

- en jouw veel betere idee!

 

De gebruiker moet de breedte en de snelheid van de maaier kunnen instellen.

 

De gebruiker moet kunnen instellen hoeveel simulaties het programma uitvoert (bv. 20).

Voor elke simulatie krijgt de maaier een in te stellen tijd.

 

Tijdens de simulaties laat het programma een afbeelding van het grasveld zien (met daarop natuurlijk de gemaaide banen). Als de tijd om is telt het programma hoeveel pixels groen en wit zijn. Die waarden komen in een tabel.

Op deze manier kun je uitzoeken welke strategieen goed werken.

 

 

 

woordeninpakker

(7 mei 2009)

Bij een woordzoeken is er een reeks woorden gegeven die je in de puzzel moet gaan opzoeken. Het gevonden woord kun je dan in de puzzel wegstrepen. Uiteindelijk blijven er een paar letters over die samen een woord of een zin vormen.

 

Het maken van een woordzoeker is een moeilijk karwei: je begint met niets en uiteindelijk moet je een serie woorden hebben die mooi in een puzzel passen!

 

Het doel van dit programma is dan ook niet om een woordzoeker te maken, maar om een serie woorden zo compact mogelijk in te pakken.

Dezelfde letters van verschillende woorden mogen natuurlijk samenvallen.

Woorden kun in verschillende richtingen in de puzzel staan vlnr, vrnl, omlaag omhoog en op 4 manieren diagonaal.

 

Laat het programma tellen hoeveel lege cellen er TUSSEN de woorden overblijven.

De beste oplossingen moeten in een tekst-bestand geschreven worden.

 

Je kunt de volgende serie gebruiken om je programma te testen

 

adoptie

alaska

arendsnest

babykleren

cactusblad

deftig

doolhof

dweiltje

erker

goudklomp

hieltje

kampeerder

korting

lepelbak

nichtje

opening

slurf

tehuis

tentje

traptrede

verftube

verloofde

vinden

 

mogelijkheid 1:

Maak een schakelaar in je programma waarmee je woorden in verschillende richtingen kunt laten lopen (bijvoorbeeld eerst een stap naar rechts, dan een stap omhoog, dan een stap diagonaal naar rechtsboven etc.

Zie het woord 'vinden' in de tabel hieronder:

 

 

 

n

 

i

d

n

v

 

e


 

 

Met een tweede schakelaar kun je het programma laten kiezen of de slang van een woorden zichzelf mag kruisen. In het woord lepelbak hieronder wordt de L en de E dubbel gebruikt.

 

l

e

p

b

 

 

a

k

 


 

 

 

Kortschrift

(7 mei 2009)

Schrijf een programma met routines voor een mobiel apparaat waarmee je snel teksten kunt invoeren op een T9-achtige manier.

 

Er is een knop voor de letter abc, één voor de letter def etc.

Er zijn aparte knoppen voor de spatie, de punt en andere leestekens. Deze geven meteen aan wanneer het einde van een woord bereikt is.

 

De invoer past niet meteen op één woord omdat er per knop eigenlijk 3 letters ingevoerd worden.

Het programma moet in een woordenlijst passende woorden zoeken.

Als er één woord matcht wordt dat gekozen. Het kan ook zijn dat het programma ontdekt dat er geen enkel woord meer kan matchen. In dat geval moet het programma op een normaal toetsenbord overschakelen.

 

Stel dat de invoer [abc] [pqrs] [mno] [mno] [def] is. Er zijn dan 3x4x3x3x3=324 mogelijk lettervolgordes. Het programma kan bij het invoeren van een volgende reeks steeds een nieuwe lettervolgordes maken. Alleen de lettervolgordes die in het woordenboek voorkomen worden bewaard.

 

[abc] a b c

[pqrs] ap aq ar as  bp* bq* br bs* cp* cq* cr cs* (* komt niet voor)

[mno] apm aqm* arm asm brm* crm* apn aqn arn asn brn* crn*  apo aqo* aro aso bro cro 

 

Zo zouden er na 3 reeksen nog maar 12 lettervolgordes over zijn.

 

Cirkelschrift

(5 mei 2009)

Schrijf een programma waarmee je de volgende soort decoratie kunt maken:

 

Je moet een tekst kunnen opgeven met een een zelf te kiezen lettertype en kleur.

Daarna moet je een middelpunt voor de cirkels op kunnen geven.

Bovendien moet de dikte van de cirkels en de afstand er tussen te kiezen zijn.

De opgemaakte decoratie moet op twee manieren te bewaren zijn:

- als bitmap

- in een tekstbestand dat de instellingen bewaard. Deze moeten ook weer in te lezen zijn.

 

Letteroverlapper

(18 juni 2009)

Het logo van NSBasic kan het onderwerp van he programma zijn.

Het moet teksten kunnen maken waarvan de letters afwisselend een andere kleur hebben en deel over elkaar heen liggen.

 

 

Het oude V&D-logo is ook een voorbeeld van een uitdaging. Het doel is dan om opeenvolgende letter deels achter en deels voor een voorgaande of volgende letter te tekenen.

 

 

Vierkantkaart (2)

(4 mei 2009)

Schrijf een programma dat een willekeurige kaart geneert. De continenten bestaan uit aaneengesloten vierkantjes.

Er moeten regels op te geven zijn:

 

- aantal continenten

- minimaal en maximaal aantal vierkantjes in een continent.

- grenzen voor de breedte en hoogte van een continent.

 

- mag het continent raken aan een ander continent (er moeten natuurlijk minimaal 2 van dit soort continenten zijn, wil dit voorkomen).

 

De opgemaakte kaart moet op twee manieren te bewaren zijn:

- als bitmap

- in een tekstbestand dat de instellingen bewaard. Deze moeten ook weer in te lezen zijn.

 

Vierkantkaart

(4 mei 2009)

Schrijf een programma waarmee een afbeelding van een kaart in te lezen is.

Het programma moet deze kaart veranderen in een afbeelding met vierkantje. Deze vierkantjes moet 1 pixels uit elkaar liggen.

 

De strategie zou als volgt kunnen gaan:

 

- verdeel de kaart met een rooster in vierkantjes.

- doorloop daarna alle vierkantjes

- het aantal pixels in het vierkantjes dat niet wit is bepaald de grijswaarde.

 

De gebruiker moet de volgende instellingen kunnen maken.

 

- zijde van de vierkantjes

- aantal grijswaarden (2=alleen zwart en wit)

 

De kaart moet als bitmap te bewaren zijn.

 

Krantenkop

(4 mei 2009)

In sommige kranten zie je wel eens schreeuwerige koppen staan.  Soms vult zo een kop een hele pagina!

 

Easter

flight

brings

more

people

 

Schrijf een programma waarmee je de tekst kunt opgeven.

Daarna moet je per regel instellen kunnen maken:

 

- uitlijning per regel (links, rechts, gecentreerd, over de hele breedte)

- grootte van het font

- kleur

 

De opgemaakte tekst moet op twee manieren te bewaren zijn:

- als bitmap

- in een tekstbestand dat de instellingen bewaard. Deze moeten ook weer in te lezen zijn.

 

 

Regenboog

(4 mei 2009)

Schrijf een programma waarmee je in een cirkelrand een kleurverloop kunt maken, met de volgende stappen.

- straal van de cirkel opgeven (of de cirkel tekenen met de muis!)

- dikte van de cirkelrand opgeven.

- punten in de cirkelrand klikken. Bij elk punt is een kleur in te stellen

- de computer rekent nu een kleurverloop uit naar het volgende punt.

- door nogmaals op een punt te klikken verdwijnt het uit de lijst

 

De gemaakt afbeelding moet op twee manieren te bewaren zijn:

- als bitmap

- in een tekstbestand dat de instellingen bewaard. Deze moeten ook weer in te lezen zijn.

 

mogelijkheid: Doe hetzelfde met veelhoeken (vierkant, vijfhoek etc.). De door de gebruiker gekozen punten kunnen op een willekeurige plek liggen!

 

 

Vierkantvuller

(4 mei 2009)

Schrijf een programma dat telt op hoeveel manieren een rechthoek met breedte b en hoogte h te vullen is met vierkantjes. De kleinste vierkanten hebben zijde m, de grootste M (de grootste die past is natuurlijk min(b,h).

Er moet een schakelaar in het programma zitten waarmee je kun bepalen een vierkant met een bepaalde grootte meer dan één keer voor mag komen.

 

De oplossingen moeten in een tekstbestand geschreven worden.

 

 

Fast Export

(4 mei 2009)

In een kalender staan allerlei gebeurtenissen chronologisch in volgorde.

De gebeurtenissen moet in een HTML-tabel gezet worden met dezelfde data naast elkaar (zie de tabel hieronder)

 

 

 

2003

2004

1-1

 

 

2-1

 

 


 

 

Een strategie zou de volgende kunnen zijn:

 

-  doorloop de tabel en bepaal het eerste jaar (E) en laatste jaar (L) dat in de kalender voorkomt.

-  doorloop nu alle dagen op de volgende manier:

-- eerst  1 januari van het eerste jaar (E) tot het laatste jaar (L).

-- daarna 2 januari van E tot en met L

-- ga zo door tot en met 31 december

 

Je moet eerst 1 jan, dan 2jan etc doorlopen omdat je een HTML-tabel per rij noteert.

 

Het nadeel van deze methode is dat je mogelijk heel veel data doorloopt waarop geen gebeurtenis vermeldt staat. In dat geval duurt dit proces onnodig lang.

 

Schrijf een routine en een bijbehorend testprogramma in ns-basic dat deze tabel sneller maakt. Je programma moet een kalender met willekeurige data kunnen maken om je routine te kunnen testen.

 

 

 

 

 

Seinfield Chain

(22 april 2009)

Een Seinfield chain is een visuele manier om te laten zien dat je elke dag een actie hebt afgehandeld.

Schrijf een eenvoudig todo-programma waarmee de gebruiker het volgende kan:

 

- voeg todo's toe in categorieen.

- geef op hoeveel todo's er uit een categorie per dag minimaal moeten worden afgehandeld (standaard: één).

- Laat in een overzichtsscherm de Seinfield-Chain zien.

 

mogelijkheid: bij een echte todo-app moet je natuurlijk ook andere items van een todo kunnen opgeven:

- aanmaakdatum

- streefdatum

- herhaal na ... dagen

- alarm om ... uur

 

 

 

Twtr

(18 april 2009)

Schrijf een programma waarmee je een tekst kun invoeren.

In een tweede tekstveld wordt dezelfde tekst dan in een korte (sms) stijl getoond.

Bijvoorbeeld: ik wordt k, een wordt n, etc. Je moet een woordenboek kunnen gebruiken met daarin verkortingen.

Voor woorden die nog niet in het woordenboek staan moet het programma alle verkortingen met (maximaal) vier medeklinkers voorstellen.

 

De tekst in beide tekstvelden moet te kopiëren en te plakken zijn.

 

update 7 mei 2009: Zie de compress button in deze applicatie:

 

 

 

 

Zagen zagen wiede wiede wagen

(18 april 2009)

Een timmerman in opleiding heeft n latten van m centimeter lengte.

Daarmee wil hij het frame van een huisje timmeren (zie de tekening hiernaast). De wanden worden later met een folie bedekt.

Het huisje is a cm breed, b cm diep en c cm hoog.

Drie of vier zijwanden wil hij verstevigingen met een kruisconstructie. Bovendien twijfelt hij of het dak open moet zijn, of ook met een kruis-constructie verstevigd moet worden.

 

De timmerman heeft voor a, b en c minimum-waarden in gedachten (Het huisje mag niet te smal of te laag worden).

 

Schrijf een programma dat berekent hoe de timmerman de latten moet zagen, zodat hij de juiste stukken krijgt om het huisje in elkaar te zetten. Het programma moet daarbij natuurlijk rekening houden met de minimum-maten.

Bij een huisje met een bepaalde afmeting zullen er meerdere oplossingen zijn.

Het gaat erom dat je oplossingen vindt die zo weinig mogelijk latten gebruiken.

 

Er is geen oplossing als:

- er stukken zijn die langer zijn dan de kortste lat

- de som van alle stukken groter is dan de totale lengte van alle latten

 

Stel dat er 8 latten zijn. Het algoritme kan dan elke stuk aan één van de latten toewijzen, maar een verdeling van de stukken over de latten is alleen geldig als de totale lengte die aan een lat toegewezen is, maximaal de lengte van de lat is.

 

In de tekening hierboven zijn 22 latten. Die kunnen op 8^22 manier worden toegewezen aan 8 latten. Dat zijn ongeveer 8*10^19 mogelijkheden. Het doorzoeken van alle mogelijkheden zal dus nagenoeg onmogelijk zijn. Toch zijn er wel manier om goede oplossingen te vinden:

- kies willekeurige indelingen

- tabu search (vraag je docent)

 

 

mogelijkheid: geef de timmerman de optie om een zadeldak of een spits dak op zijn huisje te zetten. Denk er aan dat je de hoogte dan ook kunt variëren.

 

mogelijkheid : Geef de timmerman de mogelijkheid om in een zijwand een kozijn voor een deuropening of kozijnen voor ramen te maken.

 

 

 

 

 

 

Kamertje verhuren

(16 april 2009)

Bij het spel kamertje-verhuren (voor het eerst beschreven in 1889) ontstaat er uiteindelijk een rooster. Er zijn twee kleuren lijnstukken (bijvoorbeeld rood en blauw).

Bij een groot spel zijn er heel veel mogelijkheden om het rooster in te kleuren.

Schrijf een programma dat dat aantal mogelijkheden telt.

Je moet hierbij de afmeting van het rooster opgeven (r rijen en k kolommen).

Bouw de optie in om gedraaide en/of gespiegelde inkleuringen niet dubbel te tellen.

Bovendien moet je kunnen aangeven of iemand die een kamertje afstreept, de beurt verliest. Of juist door mag gaan tot er geen kamertje meer af te strepen valt.

 

mogelijkheid: Er is een moment in het spel waarop er (als er geen fouten gemaakt worden) nog net geen kamertje afgestreept zijn. A

 

 

Kamertje verhuren (2)

(16 april 2009)

Maak het spel kamertje-verhuren. Je moet tegen de computer kunnen spelen.

Hoe bepaalt de computer wat de beste zet is (zie ook deze puzzelpagina).

 

 

Scandisk

(16 april 2009)

Schrijf een programma dat op op te geven momenten van de dag alle vaste schijven van de computer scant. In een logbestand worden alle bestanden opgesomd die sinds de vorige scan gewijzigd zijn.

Zo'n logbestand heeft als naam de datum+tijd waarop de scan begon, bijvoorbeeld 20090416-1000.log

 

Op de eerste regel staat de datum en tijd waaro de scan begon. Op de laatste regel de datum en tijd waarop de scan afgerond werd.

Daartussen staan alle gewijzigde bestanden.

 

filename              old_datetime        old_size new_datetime      new_size

c:\temp\basic.txt 20090417-090123 123       20090417-090546 234

 

Bij nieuw aangemaakte bestanden ontbreekt de oude datum, tijd en bestandsgrootte.

Bij verwijderde bestanden ontbreken de nieuwe waarden.

 

Als het programma de eerste keer start worden een groot bestand met alle bestanden op de computer aangemaakt:

 

filename      datetime             size

c:\basic.txt 20090417-090123 123 

 

Alle veranderingen worden hierin bijgehouden, zodat alle oude besandsgegevens op te zoeken zijn.

 

Omdat het scannen van een harddisk erg lang kan duren zou je slimme methoden in kunnen bouwen. Zo kun je bestanden die vaak gewijzigd worden voorin de lijst kunnen zetten. Hetzelfde geldt voor mappen. Als je een lijst met mappen maakt zou je de mappen waarin regelmatig iets wijzigt bovenin kunnen zetten.

 

Het programma moet onzichtbaar of in de tasktray werken.

Bovendien moet het mogelijk om een scan met een knop te starten. De gewijzigde bestanden (het logbestand) moet in een memo te zien zijn.

 

 

mogelijkheid: Er zijn natuurlijk momenten in de week waarop meer gewijzigd wordt dan andere momenten. Je zou dat in een week view kunnen laten zien door alle scans als een cirkel weer te geven. Als er meer bestanden gewijzigd worden, is de cirkel ook groter. Vaak wordt de straal van de cirkel evenredig met de logaritme van het aantal gekozen. 

 

mogelijkheid: maak het mogelijk om een alarm (geluidssignaal) af te laten gaan als er een bestand in een bepaald map veranderd is. Je zou dit kunnen doen door een lijst van mappen in een bestand alarm.txt op te slaan.

 

 

herkenbaar

(9 april 2009)

(moeilijk) Schrijf een programma dat een gezicht op een foto markeert door er een vierkant omheen te tekenen. In dit bestand staat een groot aantal foto's.

 

Het programma is perfect als het daarna ook nog kan zeggen wiens gezicht het is.

 

Kruisende grafen

(9 april 2009)

In de onderstaande afbeelding zie je vliegroutes. Deze route snijden elkaar en dus zouden daar toestellen kunnen botsen. Het doel is om de punten te verschuiven, zodat er geen routes meer snijden.

 

 

 

Het netwerk van routes vormt een graaf.

Maak een programma waarmee je een mens zulke zulke puzzels kunt laten oplossen.

Er zijn een paar dingen waarop je moet letten:

 

- de graaf moet wel een oplosbare puzzel opleveren (elke graaf die niet K5 of K3,3 als deelgraaf bevat is goed)

- de begintoestand moet niet meteen een oplossing zijn (er moeten dus lijnen snijden)

- het programma moet kunnen controleren of er nog snijdende lijnen over zijn.

 

 

mogelijkheid 1: Maak een mode waarin de computer de punten zo neerzet dat de lijnen elkaar niet snijden.

 

mogelijkheid 2: Houd bij welke puzzels je al gemaakt hebt en hoe lang je er over deed om ze op te lossen. Eventueel kun je dan later proberen om dezelfde puzzel sneller op te lossen.

 

 

Sociaal netwerk

(2 april 2009)
Onderzoek hoe een website als Twitnet een sociaal netwerk opbouwt. Bouw dit na in een mobiel of Windows-programma.

 

Multitaal

(1 april 2009)

Schrijf een programma waarin je in een grote tabel meer dan 1 versie van een document/website kunt bijhouden.

Onder elkaar staat in de opeenvolgende cellen een paragraaf. Naast elkaar staan de verschillende versies. Op deze manier kun je naast elkaar verschillen talen onderhouden, of verschillende niveau''s.

Het programma moet het multitaal-document kunnen exporteren als HTML-pagina. Op de website moet een manier bestaan om van taal te wisselen (door HTML-elementen onzichtbaar te maken).

 

mogelijkheid: maximaal twee talen naast elkaar te kunnen tonen.

 

 

Logboek aftekenen

(1 april 2009)

In een Excel-sheet wordt een logboek bijgehouden. Kolom A bevat de datum, kolom B de locatie en kolom C de activiteit.

Schrijf een programma dat in kolom D een code zet die bepaald/berekend wordt door de inhoud van kolom A, B en C te versleutelen. Deze code dient als ondertekening van de voorafgaande cellen. Als deze veranderd worden komt de code niet meer met die cellen overeen.

Bij het inlezen moet het programma ook op gewijzigde cellen controleren (en die - indien nodig - markeren)

 

TwitterDIV

(31 maart 2009)

Schrijf een programma dat delers van grote getallen zoekt. De gevonden resultaten (d deelt x) moeten worden getwitterd. Andere instanties van het programma moeten die tweets opvragen om dubbelwerk te voorkomen.

 

TwitterPalm

(31 maart 2009)

Schrijf een eenvoudig Twitter-programma voor een smartphone.

D.m.v. een timer moet het programma periodiek berichten opvragen. Verder moeten ook updates gepost kunnen worden. De berichten moeten in een database bewaard worden.

Door een zoekterm in een field in te voeren moeten alle berichten met die term uitgefilterd worden.

 

mogelijkheid 1: Zorg dat de database naar een textbestand te exporteren is.

mogelijkheid 2: Maak het mogelijk om groepen van de followers te maken. Alleen berichten van de geselecteerde followers zijn zichtbaar.

mogelijkheid 3: Maak de mogelijkheid om Retweets die je al als normale Tweet ontving weg te filteren.

 

Base64 + URLencode/decode

(31 maart 2009)

De meeste opdrachten bestaan uit een compleet programma. Deze opdracht bestaat uit drie routines met een bijbehorend testprogramma. Simpel, zou je dus zeggen.

Schrijf een converteringroutine die een string naar base64 omzet, en twee routines waarmee je tekst kunt url-encoden/decoden.

Doe dit voor NSBasic of voor Basic4PPC. Voor andere talen is zo'n routine op internet te vinden.

 

 

Polyminos

(27 maart 2009)

Schrijf een programma dat het aantal polymino's met n vierkantjes telt. Maak een schakelaar waarmee je kunt bepalen of er een gat in de polymino mag zitten.

 

24

(24 maart 2009)

De naam van deze opdracht heeft niets met de dag waarop ik dit schrijf te maken. Kies vier getallen. Probeer met de opdrachten x, :, +, - het getal 24 te maken.

Er zijn verschillende varianten op dit probleem.

 

- laat de computer de puzzel oplossen

- laat de computer een oplosbaar probleem genereren en laat een mens het dan oplossen

- laat de computer tellen hoeveel verschillende oplossingen er zijn die tot 24 leiden (wanneer vind je oplossingen verschillend?)

- laat de computer tellen hoeveel verschillende oplossingen tot een andere - vrij te kiezen - eindwaarde leiden.

 

Je kunt het probleem inperken door voorwaarden te stellen aan het aantal keer dat een operator gebruikt mag/moet worden. Bijvoorbeeld x, :, + en - moeten elk 1x gebruikt worden.

Bij het originele spel zijn alleen de getallen 1 t/m 10 toegestaan. Maar ook daarin zou je kunnen variëren. Ten slotte bestaat er een variant waarbij ook machtsverheffen toegestaan is.

 

 

 

Woordenboek

(15 maart 2009)

Een verzameling van N teksten (denk maar aan krantenartikelen of emails) bevat w verschillende woorden. Sommige woorden zoals 'een' zullen vaak voorkomen. Andere woorden, zoals 'exclusiviteit', minder.

Als je de helft van de woordenlijst gebruikt, zul je niet elke tekst (van de N teksten) kunnen schrijven. Met welke deel van de woordenlijst kun je wel zoveel mogelijk teksten schrijven? Er zullen meerdere manieren zijn om een deellijst samen te stellen, waarmee je 60% van de teksten kunt schrijven. Er zullen ook woorden zijn die in (bijna) al die lijsten staan. Als je die woorden weglaat, kun je nooit aan 60% komen.

 

Schrijf een programma waarmee je deellijsten kunt maken die een bepaald percentage van een verzameling teksten afdekken.

 

 

Mogelijk: geef elk woord een eigen gewicht geeft. Het gewicht moet dan staan voor het aantal keer dan het woord in de verschillende gevonden lijsten voorkomt.

 

 

Twitter (2)

(14 maart 2009)

Twitter is een veelbelovende manier van communiceren. Ik weet niet of Twitter al eens gebruikt is om programma's met elkaar te laten praten, maar daarover gaat deze opdracht.

Een programma moet delers van (grote) getallen zoeken. Als het een deler vindt twittert het de deler (bv. met het volgende bericht: 101 deelt 37338!+1).

Tegelijk kijkt het programma regelmatig of andere programma's via hetzelfde kanaal ook delers getwittert hebben. Die schrapt je dan uit de lijst te controleren getallen.

Daardoor kun je door hetzelfde programma een paar keer te starten, sneller werken.

Uitlge over hoe dit werkt met getallen van de (bv.) vorm n!+1 kun je hier lezen.

 

Twitter (1)

(14 maart 2009)

Twitter is een veelbelovende manier van communiceren. Je kunt zelf programma's schrijven waarmee je kunt twitteren. In de zogenaamde API staat beschreven hoe dat moet. In essentie zijn het HTTP-requests die je POST.

Schrijf een eenvoudig twitter programma, waarmee je zelf kunt twitteren.

 

mogelijkheid: Laat ook het twitteren van andere users zien. 

 

OSM

(14 maart 2009)

Behalve de commerciele aanbieders van digitale kaarten is er ook een Open Source project: openstreetmaps. Het is vrij eenvoudig om punten en wegen van een klein gebied van de aarde in een eigen programma in te lezen.

Als dat lukt is kun je er natuurlijk ook een kaartje van tekenen.

Schrijf een programma voor een mobiel apparaat waarmee je een kaartje kunt laten teken rond de plek waar je nu bent (in te lezen uit een GPS).

 

Geheimschrift

(14 maart 2009)

Hiernaast zie je twee soorten geheimschrift staan (zogenaamde Emma-geheimschriften).

In het bovenste zie je hoge en lage bergjes (omgekeerde V-tjes). Samen vormen die een code voor een letter.

Met 1 bergje kun je twee codes maken (laag (L) of hoog (H)). Met twee bergjes kun je vier codes maken (LL,LH,HL,HH).

Om te beginnen moet je afspreken welke code voor elke letter staat. Dat moet in een code-bestand staan. Omdat het steeds omgekeerde v-tje zijn kun je dat in het code bestand als volgt opschrijven:

 

a=vv

b=Vv

c=V

d=VvV

...

etc.

 

In de tweede regel gebeurd eigenlijk hetzelfde. De bergjes zijn nu echter wel even hoog, maar hebben wel een andere kleur.

 

In dit voorbeeld is zwart hetzelfde als Laag, en roze hetzelfde als Hoog.

 

 

Schrijf een programma dat één van beide geheimschriften kan schrijven.

Het programma moet een code in kunnen lezen en daarna een tekst in een plaatje met de gecodeerde tekst kunnen omzetten.

 

mogelijkheid 1: Laat je programma beide vormen coderen.

 

mogelijkheid 2: Laat het programma op dubbel voorkomende codes controleren.

 

 

mogelijkheid 3: Laat het programma onderzoeken of de code prefix-vrij kan worden genoteerd (zoals de Huffman-code). In dat geval mag je de spaties zelfs weglaten (je mag de codes achterelkaar doorschrijven). Het wordt dan natuurlijk veel moeilijker om het geheimschrift te kunnen lezen.

 

mogelijkheid 4: Je verdient extra punten als je in het programma zelf de codes kunt bewerken.

 

Hint: Een probleem wat je zult tegen komen is dat je aan het eind van een regel moet bepalen of de code nog wel past.

Je kunt dat oplossen door de code in een bitmap te schrijven. Als de benodigde breedte kleiner is dan de resterende ruimte in de regel, ga je op de volgende regel verder.

 

 

 

Select-Mail

(8 maart 2009)

De wilt 25 mensen foto's sturen, maar niet iedereen moet dezelfde foto's krijgen.

 

Schrijf een programma met ongeveer de volgende interface

 

emailadres            dsc2039.jpg  dsc7475.jpg   dsc8473.jpg

pietje@puk.nl        x                 x

puk@pietje.nl                           x                     x

....                                                               x

 

Het is dus een tabel waaraan je emailadres en foto's kunt toevoegen. Door kruisjes te zetten worden de foto's aan een email adres gekoppeld.

Je kunt het programma gebruikers vriendelijk maken door ook een kolom voor de naam toe te voegen.

 

De ingevulde tabel moet je kunnen bewaren (om er later aan verder te kunnen werken).

Ten slotte moet je de foto's natuurlijk per email kunnen verzenden. 

 

 

 

Meta-Sudoku

(4 maart 2009)

Hoe maak je een sudoku? Een sudoku is een vierkant van 9x9 waarin in elk blok van 3x3 alle getallen 1..9 voorkomen. Hetzelfde geldt voor elke rij en kolom.

 

Je zou de onderstaande tabel als startpunt kunnen nemen. Probeer te begrijpen hoe je hem verder kunt invullen.

 

1

2

3

4

5

6

7

8

9

4

5

6

7

8

9

1

2

3

7

8

9

1

2

3

4

5

6

2

3

1

5

6

4

8

9

7

5

6

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

Daarna verwissel je willekeurig wat rijen of kolommen. De getallen staan dan willekeurig door elkaar.

 

Nu ga je getallen weghalen om open vakjes te creeeren. Maar de sudoku moet wel oplosbaar blijven. Als je 80 getallen weghaalt lukt dat zeker niet meer. Als je maar 2 getallen weghaalt lukt het zeker wel, maar is de puzzel te eenvoudig.

 

Kortom: wanneer moet je stoppen met het weghalen van getallen? Schrijf een programma dat je daarbij helpt.

Lees meer in dit bestand.

 

 

Boekhouden

(3 maart 2009)

Schrijf een eenvoudig boekhoudprogramma. Een penningmeester moet er per jaar inkomsten en uitgaven in kunnen bijhouden.

 

Het jaaroverzicht bestaat uit 1 scherm. In de linkerkolom worden de inkomsten bijgehouden:

 

inkomsten
datum Hoe omschr wie bedrag
20080101 stond al op rekening restant vorig kalenderjaar 1361.99
20080108 bank contributie 2008 Piet en Jan 80
20080125 contant contributie 2008 Karel 40

 

 

In de rechtkolom op dezelfde manier de uitgaven.

 

Onderin het scherm staat wat er netto op de rekening staat.

 

Alle jaren worden in één bestand bewaard. Bovendien moet de hele administratie als excel-bestand of als webpagina te exporteren zijn.

 

 

 

 

Filecheck

(2 maart 2009)

Nee, het gaat bij deze opgave niet erom of je controleert of er een file is.

Deze opdracht gaat over de controle van bestanden.

 

De gebruiker van het programma moet een reeks programma's en de kopiëren daarvan kunnen opgeven. Dat moet op de volgende manieren kunnen:

 

- bestand <-> bestand

- map <-> map

- map met submappen <-> map met submappen

 

Deze gevallen zijn eigenlijk hetzelfde als je jokers toestaat (*.* zijn dan alle bestanden).

 

Het programma houdt van deze controle-items een lijst bij. Omdat bestanden op externe verwisselbare drives kunnen staan, moet van deze drives de drivenaam mee opgeslagen worden.

 

Als een bestand gecontroleerd is verhuisd het naar het eind van de lijst. Nieuwe bestanden komen aan het begin van de lijst. Als een bestand niet te controleren is (bijvoorbeeld omdat een usb-drive niet aangesloten is), gaat het met het volgende bestand verder.

 

Het programma moet in de achtergrond werken en als icoontje in de tasktray staan.

 

mogelijkheid: Als een drive een andere naam krijgt worden de controle items onbruikbaar. Het zou mooi zijn als je daar een rename-optie voor maakt.

 

Plakplaatjes

(2 maart 2009)

Ook in de moderne wereld wil kinderen op de basisschool graag complimentjes krijgen.

Dat moet dan wel op een digitaal bord.

Allereerst moet je juf voor elk (les-)uur van de week kunnen aangeven aan welke kinderen ze les geeft.

Als het programma 'loopt' verandert het 'live' door alleen de icoontjes of foto's van de aanwezige kinderen te laten zien.

Verder is er een set plakplaatjes die naar een kind gesleept kunnen worden.

 

 

Datetime-filename

(2 maart 2009)

Een reeks bestanden heeft naam. Maar op elk moment in de tijd komt maximaal 1x voor.

Dit programma moet twee dingen kunnen doen:

 

Voor elke bestand moet in een andere map een bestand gemaakt worden met de datetime (YYYYMMDDHHMMSS) als bestandsnaam. De extensie moet hetzelfde blijven.

 

Bovendien moet er een controle optie zijn die de twee bestanden die bij elkaar horen byte voor byte met elkaar vergelijkt.

 

 

Retrieve

(24 februari 2009)

Schrijf een PHP-script waarmee een admin aan de leden van een groep gebruikers een emailadres en een wachtwoord kan geven.

Een gebruiker kan via dit script dan zijn wachtwoord opvragen door het emailadres in te vullen. Om misbruik te voorkomen moet woordverificatie toegevoegd zijn.

 

Ark van Noach

(13 februari 2009)

Op internet kun je het spelletje Noah's Ark wel vinden.

Het doel is om twee dezelfde dieren te paren tot het veld leeg is. Behalve de dieren staan er ook blokkades in het veld.

Dieren kunnen niet aan elkaar gekoppeld worden als er iets tussen hen in staan.

 

Als de twee dieren hetzelfde zijn tekent het programma een verbinding tussen de twee dieren.

 

Ontwerp twee algoritmen:

 

- Om het speelveld te vullen. Als het je lukt om een moeilijkheid graad mee te nemen is dat een pre.

 

- ontwerp het algoritme om de verbinding tussen de twee dieren te tekenen.

 

Een startpunt voor een algoritme vind je hier. Dit algoritme kan vaak, maar niet altijd het vlak vullen. Als je de werking van dit algoritme bekijkt kun je hieruit een werkend algoritme afleiden.

 

 

Leren formu-leren

(8 februari 2009)

Vreemd is het, soms, dat oude ideeen er zolang over kunnen doen, eer ze opgeschreven worden.

 

In een natuurkundeopgave staan waarden voor grootheden gegeven. Een ander grootheid moet je berekenen. Daarbij moet je formules uit dat onderdeel van de natuurkunde gebruiken (bij electriciteitsleer bijvoorbeeld U=ixR, P=ixU, etc).

 

Schrijf een programma waarmee je een formule op een werkblad kunt zetten.

De waarde van grootheden kun je koppelen aan getallen in de opgave.

De onbekende in de formule wordt dan berekend. Die uitkomst kan eventueel weer als invoer voor een volgende formule dienen.

 

Maak een set opgaven en de bijbehorende set formules, zodat je het programma kunt testen.

 

 

Kinderhand

(4 februari 2009)

Schrijf een programma waarmee jonge kinderen een tekst met plaatjes kunnen maken.

Het programma moet zeer intuïtief werken (dus niet zoals Word).

 

 

Testcircus

(29 januari 2009)

Deze opdracht is bijvoorbeeld met delphi te maken.

Je moet een systeem bedenken om allerlei testje bij users af te kunnen nemen.

Van een user worden wat voor de hand liggende dingen geregistreerd: username, geslacht, geboortedatum, nationaliteit.

 

Een vraag bestaat uit een titel, een tekst (HTML) met daarin eventueel links naar afbeeldingen. Bovendien zit een vraag in een groep. Vragen van dezelfde soort zitten in dezelfde groep.

Ten slotte is het antwoord op een vraag van een bepaalde soort.

- een keuze (bij een meerkeuze vraag is het antwoord dan bijvoorbeeld een letter)

- een getal uit een bepaalde schaal (bijvoorbeeld van 1..5)

- aantal goed/fout

 

Gebruikers zitten in groepen, die we voor de eenvoud maar klassen zullen noemen.

 

Vragen kunnen gecombineerd worden tot een set van vragen, die we voor de eenvoud maar toetsen zullen noemen.

 

Daarnaast is een manier om een groepgebruikers een toets aan te bieden.

Als de gebruiker inlogt ziet hij welke toetsen er aan hem gekoppeld zijn. De toetsen die hij nog niet gemaakt heeft, kan hij maken. De andere alleen inzien.

 

Van elke vraag registreert het systeem wanneer deze door de gebruiker gemaakt is (datum, tijd, duur=benodigde tijd voor naar de volgende vraag gegaan werd)

 

Kiekeboe

(29 januari 2009)

Schrijf een programma dat een barcode inleest (dat is gemakkelijk). Daarna moet de gebruiker voor een webcam gaan staan. Na een bepaalde tijd (2 seconde) neemt de webcam een foto. Deze foto wordt met datum en tijd opgeslagen. Op deze manier kan iedere gebruiker een digitaal fotoalbum in de tijd van zichzelf maken.

Een administrator moet van iedere gebruiker foto's kunnen wissen.

Eventueel moeten gebruikers ook geblokkeerd kunnen worden (na misbruik van het systeem).

 

mogelijkheid: denk na over mogelijkheden om bijvoorbeeld 3 foto's te maken en de gebruiker daaruit de beste te laten kiezen.

Ook zou het mooi zijn als de gebruiker andere opdrachten kan geven als:

- mail deze foto naar mij

- mail alle foto's naar mij

- wis deze foto

 

 

Rain

(22 januari 2009)

Schrijf een programma dat regen animeert. Zoek in Google op "rain animation" om een idee te krijgen hoe je verder kunt.

 

Systeemtijd

(22 januari 2009)

Schrijf een programma dat bijhoudt hoelang een pc gebruikt werd. Het programma komt in de systemtray komt te staan. Het moet tussentijds ook gegevens bewaren voor het geval de PC crasht.

Via een menu moet je statistieken kunnen opvragen. Gemiddeld gebruik per dag, week dag, maand, jaar. Gebruik sinds een bepaald datum.

 

mogelijkheid: maak de mogelijkheid om de tijd te labelen: privé, werk, studie etc. De gebruiker moet zelf labels erbij kunnen maken en bestaande labels kunnen hernoemen.

 

 

Screenbook

(21 januari 2009)

Schrijf een programma dat het volgende moet doen.

Een leerling moet inloggen met een leerlingnummer en een wachtwoord. Daarna wordt om de minuut een screenshot gemaakt. Die schermafdruk wordt op een ftp-server bewaard.

Als de leerling klaar is met zijn werk wordt de totale duur in een tabel bijgeschreven en ook op de webserver bewaard. Voor de zekerheid kun je dat ook al tussentijds doen.

 

 

P_(x+1)<P_x

(21 januari 2009)

Maak een programma waarmee leerlingen opgaven kunnen inleveren (zie ook collector 14 januari 2009). Het programma moet zelf proberen de overeenkomst tussen de verschillende opgaven kunnen bepalen. Het geeft dit dan als suggestie aan de docent.

Bv. Het antwoord op Opgave 1 van Tim lijkt veel op (of is zelfs gelijk aan) het antwoord van Sam. De docent bepaald uiteindelijke welke antwoorden echt gelijk zijn.

Van de gelijke/gelijksoortige antwoorden moeten later ingediende antwoorden minder punten krijgen dan de eerste (en dus waarschijnlijk originelere antwoorden).

 

Goede antwoorden die maar één keer voorkomen in de lijst moeten relatief hoeger gewaardeerd worden dan "gekopieerde" antwoorden die 10x voorkomen.

 

Bedenk vooraf een manier om een eerlijke score te berekenen.

 

 

Display2Text

(18 januari 2009)

Probeer met een webcam de tekst op een display uit te lezen en naar tekst om te zetten. Voorbeeld-code in Delphi is beschikbaar.

 

 

Geheugentest

(17 januari 2009)

Schrijf een programma waarmee je het geheugen van de gebruikers kunt test.

Je toont een aantal woorden (let op de spelfout) op het scherm (aantal is te variëren), die de de gebruiker een bepaalde tijd te zien krijgt (tijd is te variëren). Daarna moet de gebruiker zoveel mogelijk woorden invullen die hij onthouden heeft.

(het schijnt dat 12 uit 40 gemiddeld is).

De prestatie moet in een tabel bewaard wordt: gebruikers id, datum, tijd, testsoort (=1)data (aantal, tijd, aantalgoed)

 

 

Sterrenvouwen

(17 januari 2009)

Op deze website kun je zien hoe je met vouwen en knippen een ster kunt maken. Schrijf een computerprogramma waarmee je virtueel een vel papier kunt vouwen en knippen.

Hint: als je vouwt deel je een veelhoek op in nieuwe veelhoeken die met elkaar verbonden blijven langs minimaal 1 zijde. Als je knipt verdeel je een veelhoek ook in nieuwe veelhoeken, maar langs de kniplijn zijn ze dan niet meer verbonden (eventueel wel nog langs andere zijden).

 

MDI

(17 januari 2009)

Schrijf een kleine tekstverwerker die meer dan één tekst kan openen (MDI= Multiple Document Interface). Bij je programma hoort een website met instructie's waarmee iemand je programma stap voor stap kan nabouwen. Bij elke stap moet je ook het project tot-dan-toe als zip-bestand kunnen downloaden.

 

 

Blokkenschuiver

(17 januari 2009)

Op moderne telefoons zie je tegenwoordig allerlei gadget staan die je over het scherm van de telefoon kunt schuiven.

Zo'n gadget kan een klok zijn, een notitie, de datum, een foto. In feit alles wat je je maar kunt bedenken.

In essentie schuif je blokken over het scherm. Maak voor een Palm- of WM-smartphone een voorbeeld-programma waarmee je een aantal eenvoudige gadgets over het scherm kunt schuiven. Wat gebeurd er als gadgets elkaar overlappen? En wat als ze deels buiten het scherm schuiven?

Je programma moet eenvoudig uit te breiden zijn.

 

Als je er voor zorgt dat je gadgets kun aan- en uitzetten, is dat een pré.

 

 

Tijdrecorder

(17 januari 2009)

Tegenwoordigen hebben allerlei apparaten een ingebouwde klok. Soms wordt zo een klok automatisch op de juiste tijd ingesteld (bijvoorbeeld door via DCF77 het nauwkeurige signaal van een atoomklok op te vangen).

Andere apparaten lopen om allerlei reden regelmatig uit de pas met de werkelijke tijd. Alleen de zomertijd kan voor een verschil van een uur zorgen.

 

Schrijf een programma waarmee je van allerlei apparaten de aangegeven tijd kunt bijhouden. Dat kan het beste voor een smartphone.

Er moet een now-Button in het programma zitten waarmee je eenvoudig kun aangeven dat de klok een minuut verspringt.

De lijst met genoteerde tijden moet te exporteren zijn naar een csv-bestand.

Als het programma de dagen de zomertijd omgezet wordt een alarm af laat lopen is dat een pré.

 

Waarzegger

(17 januari 2009)

Het weer voorspellen in een ingewikkelde zaak, daar gaan we ons dus niet echt aan wagen. Toch is het wel mogelijk om een idee te hebben van het te verwachten verloop.

Dat werk zo:

 

Bekijk de afgelopen twee weken en de komende twee weken.

In die periode is de temperatuur gemiddeld 6 graden.

De afgelopen twee weken was het gemiddeld 2 graden. Neem aan dat de temperatuur in de vierde week weer gemiddeld is (bijvoorbeeld 6,7 graden). Welke temperatuur moet het komende week dan gemiddeld zijn, om over de hele periode weer op 6 graden uit te komen?

 

De berekening is eenvoudig: (2+2+x+6,7) = 4*6 = 24. Dus x=24-10,7=14,7.

 

Deze berekening kun je natuurlijk ook voor andere periodes (voorspel de temperatuur van morgen op grond van de afgelopen en komende week) en grootheden (neerslag, windsnelheid) maken.

Het knmi stelt op haar website een enorme collectie aan historische weergegevens beschikbaar (voor neerslag nog veel meer). Die gegevens zijn als eenvoudig tekst-bestand in te lezen.

 

 

foto's stapelen

(14 januari 2009)

Als je foto's op tafel legt, verdraaien en verschuiven ze soms tot een mooie stapel. Schrijf routines en voorbeeld programma waarmee je een aantal foto's op het scherm als zo'n stapeltje kunt tonen. Een foto moet aan te klikken en te verschuiven zijn (hoe bepaal je of de muis binnen of buiten een gedraaide rechthoek klikt. En hoe zit dat al je een aantal van die rechthoeken op elkaar legt).

Er is overigens een script voor GIMP waarmee je zo'n stapels kunt maken.

 

 

 

Wachten tot het regent

(14 januari 2009)

Als je deze opdracht gaat maken krijg je een grote verzameling met radarbeelden van deze website. De beelden worden per kwartier gemaakt. Je ziet dat de hoeveelheid neerslag met een kleur aangegeven wordt. Als je beelden uit een bepaalde periode met elkaar combineert, kun een beeld van de neerslagkans maken.

Als je bijvoorbeeld voor 28 januari wilt weten wat de neerslagkans is, kun je de beelden van 28 januari uit de afgelopen jaren middelen.

Als dat er te weinig zijn, neem je een paar dagen voor en na de gewenste datum mee in de berekening (bijvoorbeeld +-5 dagen --> die waarde kun je natuurlijk variabel maken, zodat je kunt experimenteren). Zo kun je voor elke dag van het jaar de neerslagkans bepalen.

Een laatste probleempje dat je moet oplossen is, dat je niet precies weet waar de kleurcodes voor staan. Je zult dus zelf moeten bepalen hoeveel neerslag er bij elke kleur in een kwartier valt.

Ten slotte kun je misschien ook de tijd van de dag variabel maken. Zo kun je dan neerslagkansbeelden voor de dag en de nacht maken.

Er is al wat code geschreven die je bij dit project kunt gebruiken (delphi).

Je kunt hier radarbeelden downloaden.

 

Tele-toekomst

(14 januari 2009)

Op teletekst vind je de weersverwachting tot 5 dagen in de toekomst.

De verwachting wordt in de loop van die 5 dagen echter vaak bijgesteld. Dit programma is bedoeld om deze verwachtingen te verzamelen, zodat je kunt analyseren in hoeverre de voorspellingen aangepast worden.

Een bepaalde dag komt 5x in de voorspellingen voor (resp 5,4,3,2 en 1 dag in de toekomst).

Stel dat vandaag voor over 5 dagen een neerslagkans van 70% gegeven wordt. Je kunt dan in de tabel nagaan wat er in het verleden met de dagen die ook vijf dagen van te voren 70% als kans hadden, gebeurd is.

 

Zo komt het wel eens voor dat de voorspelling klopt:

 

dagen +5 -> +4 -> +3 -> +2 -> +1

kans 70 -> 70 -> 70 -> 70 ->70

 

maar ook dat ze er helemaal naast zaten:

 

dagen +5 -> +4 -> +3 -> +2 -> +1

kans 70 -> 70 -> 70 -> 30 ->10

 

Hopenlijk komt dat laatste het minste voor, maar jouw programma kan dat tellen!

Je kunt de waarde van je programma op een paar manier verhogen.

 

1) maak het mogelijk om de periode in het jaar die geteld wordt te beperken. Als je wil weten hoe betrouwbaar de gegevens rond 3 februari zijn, wil je hooguit de voorspelling een paar dagen voor en erna (maar wel in verschillende jaren!) meetellen. De periode die meegeteld wordt, moet je dus kunnen instellen.

2) je kunt de voorspellingen die meegeteld wordt ook beperken door alleen de voorspellingen mee te nemen, die het sterkst op de huidige voorspelling lijken. daarvoor moet je naar keuze één of meer andere grootheden mee kunnen laten tellen. Als je bijvoorbeeld de temperatuur op 5 zet, worden alleen de voorspellingen die ook 5 graden als voorspelling hadden, meegeteld.

 

 

Graplab

(14 januari 2009)

Schrijf een collectie PHP-scripts waarmee je moppen kunt verzamelen. Allereerst moeten users zich kunnen aanmelden.

Daarna moeten ze moppen kunnen toevoegen en moppen van andere kunnen beoordelen.

De website moet de mogelijkheid hebben om moppen pas te tonen nadat ze goedgekeurd zijn (maar dat is uit te zetten). Bovendien moeten moppen als 'ongepast' aangemeldt kunnen worden. Een moderator kan de mop daarna verwijderen.

Op de homepage moeten de laatste tien moppen aan te klikken zijn.

Ook de tien leukste en slechtste moppen zijn in een lijstje te vinden.

Bovendien met je moppen met een bepaald woord kunnen zoeken.

 

mogelijkheid: bedenkt een manier waar je het programma kunt laten bepalen of een mop al sterk lijkt op een bestaande mop.

 

mogelijkheid: de gebruiker moeten kunnen aangeven of de nieuwe moppen in hun mailbox willen ontvangen

 

 

 

Collector

(14 januari 2009)

Ze zijn er zo weinig, de echte PHP-opdrachten. Dit is er dan eindelijk weer eens één. De Collector is een verzameling scripts waarmee een docent huiswerk kan verzamelen.

De docent kan een opdracht aanmaken (id, titel, beschrijving, klas(sen), zichtbaar j/n, actief j/n) en bewerken.

Verder zijn er natuurlijk klassen aan te maken, met daarin leerlingen.

Als een leerling inlogt, krijgt hij de zichtbare opdrachten te zien. Bovendien is te zien welke daarvan ingeleverd zijn. Bij de actieve opdrachten kan de leerling één bestand uploaden. Dat kan de leerling zo vaak doen als hij wil, zolang de opdracht actief is. Alleen de eerste en de laatste versie wordt bewaard met de datum waarop de opdracht ingeleverd is.

Op een overzichtspagina kan de docent zien welke opdrachten ingeleverd werden (de laatste staat bovenaan).

De docent kan een overzicht krijgen van alle actieve opdrachten met een lijst van de leerlingen erbij. Per leerling staat de eerste en eventueel de laatste upload vermeld (met de data). Met een link zijn deze bestand te downloaden.

Het programma moet de opdrachten in een hoofdmap met submappen bewaren. Binnen de hoofdmap staan mappen met het leerlingnummer, daarbinnen dan weer mappen met de titel van de opdracht als naam. Zo is de hele inlevergeschiedenis van alle leerlingen snel per ftp te downloaden.

Je website mag gebruik maken van MySQL.

 

 

Webcam

(14 janauri 2009)

Er zijn niet zoveel freeware programma's waarmee een webcam uit te lezen is. Dorgem is waarschijnlijk één van de weinig.

Er zijn wel freeware componenten waarmee een webcam uit te lezen is.

Schrijf een freeware webcam programma en wordt wereldberoemd.

De beelden moet minimaal als jpg-bestanden bewaard worden. Daarbij moet het mogelijk zijn om pas bij een in te stellen verschilfactor een beeld te bewaren, of na een vaste periode.

 

mogelijkheid: upload de bestanden per ftp naar een website.

 

 

Leitner (2)

(12 januari 2009)

We hadden het ook eerder over kaartenbakjes als studiehulp.

Dit programma is een variant daarop. Op een kaartje staat een woord of een zin een te oefenen taal (Spaans, Engels, Duits) en het Nederlands.

Het idee is weer dat een kaartje in bakje 1 snel herhaald moet worden en dan - als het juist vertaald werd - naar bakje twee verhuisd. Hoe hoger het nummer van het bakje, des te langer het duurt eer het herhaald wordt. Als het woord onjuist vertaald werd komt het één bakje lager te staan.

Voor elk onderdeel staat vermeldt in welk bakje het zit en op welke datum het in dat bakje terecht gekomen is.

Zie bijvoorbeeld deze kaartjes:

 

Item

bakje

datum

Der Hund läuft im Garten

2

20090102

De hond loopt in de tuin

1

20090102


 

 

Item

bakje

datum

Hund

2

20090101

Hond

1

20090103


 

Het nummer van het bakje en de datum bepalen wanneer het item weer afgevraagd wordt:

 

datum-nieuw = datum + nummer bakje

 

Eventueel kun je de formule aanpassen, zodat de leersnelheid te variëren is:

 

datum-nieuw = datum + 10* nummer bakje / leersnelheid

 

leersnelheid is dan een getal van 1..10. Als de leersnelheid 10 is worden de items het snelst herhaald.

 

Als het juist vertaald wordt, schuift het kaartje op naar het volgende bakje (bakje=bakje+1), anders één terug (bakje=bakje-1 --> behalve als het al in bakje 1 zat).

 

 

Anti-Life

(12 Januari 2009)

Al twee keer eerder hebben we het over het programma Life van Conway gehad. Het doel van dit programma is om een toestand te bepalen die voor een bekende toestand zou kunnen voorkomen (dat kunnen er méér dan één zijn).

De afmetingen van het speelveld en de zwarte cellen moeten willekeuig in te stellen zijn. Het programma moet dan terugrekenen naar de vorige toestand.

Deze opdracht komt hier vandaan.

 

 

Sketch 'n Etch

(12 januari 2009)

Misschien ken je uit je jonge jaren de sketch 'n etch nog. Er bestaat ook een digitale versie van Sketch 'n Etch. Helaas kun je er aleen maar verticaal, horizontaal en onder een hoek van 45 graden mee tekenen.

Bij een echte kun je de draaisnelheid van de knoppen vrij variëren waardoor je onder elke hoek kunt tekenen. Als je heel handig bent zou je bijvoorbeeld een cirkel moeten kunnen tekenen.

Het probleem is natuurlijk dat je op een computer niet die twee draaiknoppen hebt. Misschien dat je de draaiknoppen kunt vervangen door twee muizen op een computer aan te sluiten. Ook met een wii-driver is het misschien mogelijk om twee bewegingen tegelijk te volgen.

 

Schuifpuzzel

(12 januari 2009)

Het is vrij onwaarschijnlijk dat je nog nooit een schuifpuzzel gemaakt hebt. Ooit was de puzzel op de afbeelding een grote rage.

Schrijf een programma dat een oplossing voor een schuifpuzzel zoekt.

Je kunt je programma alle mogelijkheden laten doorzoeken. Dat duurt echter zo lang, dat je nooit alle mogelijkheden kunt doorzoeken. Er zijn slimmere methoden (A*-algoritme) waarmee het in een paar seconde moet lukken om zelfs een optimale oplossing te vinden.

Er bestaan ook andere vormen van schuifpuzzels, kijk bijvoorbeeld hier eens.

 

 

 

 

Lezen is duur

(9 januari 2009)

Schrijf een programma waarmee je kunt vastleggen hoelang iemand een bepaalde regel van een tekst in beeld heeft gehad: de leesduur.

De tekst staat in een HTML-bestand.

 

Er zitten nogal wat moeilijkheden aan dit programma. Zo wordt een regel afgebroken als ze niet meer op een regel past. Daarnaast is het aantal regels dat in beeld is, afhankelijk van de hoogte van het venster.

 

Er is in ieder geval altijd een bepaald deel van het bestand te zien.

In het volgende schema wordt dat uitgebeeld.

 

Als het bestand geopend wordt is het begin van het bestand in beeld, de start niet:

 

|xxxxxxx|------------

 

Als de gebruiker omlaag scrollt verdwijnt het begin uit beeld.

 

---|xxxxxxx|---------

 

Als de gebruiker de laatste regel leest is alleen het einde in beeld

 

------------|xxxxxxx|

 

Als het venster dan verkleind wordt is er minder in beeld:

 

----------------|xxx|

 

Op deze manier is elke letter/woord van de tekst een bepaalde tijd in beeld.

 

Zo kan het aantal seconden/minuten dat een deel van de tekst in beeld geweest is, vastgelegd worden (na 9 tellen we met letters door a=10, z=36):

 

37876589abklllkgc8320

 

Er is ook een ander manier denkbaar. Je legt dan telkens als de gebruiker scrollt vast hoelang een blok in beeld was (als dat minder dan een seconde was bewaren we het niet, omdat dat niet te lezen is).

 

plek:[van, tot] datumtijd[van,tot]

 

[1,100] [9-1-2009:16:20:00:16:20:10]

[721,10265] [9-1-2009:16:20:22:16:22:11]

 

Met zo een lijst kun je dan ook bepalen hoelang een stuk tekst in beeld was.

 

Deze informatie kan nuttig gebruikt worden.

Allereerst voor de lezer zelf. Met een gekleurde band links naast de tekst kan de tekstverwerker laten zien welke tekst al uitgebreid gelezen is en welke niet (bv. door een kleurverloop te maken van wit naar groen).

 

Als je de tweede methode van vastleggen gebruikt kun je ook laten hoe lang het geleden is dat een tekst gelezen werd!

 

 

 

Verschilbeeld

(9 januari 2009)

Een webcam bewaart een afbeelding zodra er een beweging of een verschil te zien is. Deze afbeeldingen worden in een map als jpg-bestand bewaard.

Vaak zullen deze afbeeldingen maar een beetje van elkaar verschillen. Je kunt misschien veel ruimte bewaren als je de volgende strategie volgt:

 

  • Bewaar de afbeelding zonder verandering
  • Bewaar daarna van elke afbeelding alleen de verschillen

 

Ze zijn verschillende manieren denkbaar waarop je dat zou kunnen doen.

 

  • Bereken pixel voor pixel het verschil. De verschilafbeelding is dan even groot als het origineel.
  • Bepaal het gebied waarin de verandering plaatsvond (een rechthoek). Bewaar alleen deze rechthoek. De plek waar de linkbovenhoek van de rechthoek hoort ze je in een tekst-bestandje. Met een geschikt programma kun je de afbeelding dan reconstrueren. Het probleem is natuurlijk dat er heel veel kleine verandering te zien zullen zijn. Je kunt natuurlijk een serie veranderingen op dezelfde manier opslaan. Maar een pixel waarvan de helderheid een beetje veranderd is, hoeft niet bewaard te worden. Bedenk bovendien dat de helderheid van het hele beeld ook kan verschillen. Als het beeld in de loopt van een middag steeds donkerder wordt, moet je dat toch vastleggen.

 

 

Melkpak

(2 januari 2009)

Schrijf een programma waarmee je een melkpak kunt ontwerpen. Je moet dit doen door tekst en afbeeldingen op de uitslag van een balk te zetten.  Het ontwerp moet in een bestand te bewaren zijn. Bovendien moet je het kunnen afdrukken.

 

Wetenschapsquiz

(1 januari 2009)

Schrijf een programma dat de vragen van de wetenschapsquiz aanbiedt. De gebruiker kan aangeven hoeveel vragen en uit welke jaren hij de vragen wil krijgen. Na afloop krijgt je te zien welke vragen (on-)juist beantwoord zijn.

Het juiste antwoord is daarbij ook op te vragen.

 

Ten slotte moet je willekeurig door de vragen kunnen wandelen en het juiste antwoord kunnen opvragen.

 

Het moet eenvoudig mogelijk zijn om nieuwe vragen toe te voegen.

 

 

Toonhoogte

(1 januari 2009)

Schijf een programma waarmee je van een luisteraar kunt bepalen welke toonhoogte hij nog goed kan horen.

Je moet dus een geluid met een bepaalde frequentie en geluidssterkte kunnen produceren. De gebruiker moet op een toets drukken (spatiebalk?) als hij een geluid denkt te horen. Je moet allereerst bepalen welke geluiden je wilt aanbieden. Die serie laat je in willekeurige volgorde horen. Eventueel worden geluiden meer dan één keer aangeboden. Het resultaat moet in een bestand bewaard worden. Bovendien moet er een diagram getoond worden waarin je kunt zien welke geluiden nog hoorbaar waren.

Een aanvullende vraag is natuurlijk of je er vanuit moet gaan of de luisteraar het geluid echt gehoord heeft als hij op de toets drukt. Daar een geluid herhaald aan te bieden kun je daar (meer) zekerheid over krijgen. Bovendien is het interessant om te zien hoe vaak de luisteraar op de toets druk terwijl er geen geluid te horen is.

 

 

Verschilbeeld

(9 januari 2009)

Een webcam neemt een beeld op als er beweging of verandering in het beeld optreedt en bewaard dat beeld als jpg-bestand.