Sat
2
Aug '08

Cocoa Brown

Posted in Personal | 1 Comment

That’s what the package said: cocoa brown. Look at it, doesn’t it look yummy? erm… gorgeous, I mean?

cacaobruin.jpg

Fortunately Solar had time to help me, and dyed my hair all profesionally: layer by layer. So here’s the result. The way it looked before on the left, and after the dying on the right.

hairdye200808.jpg

Not really cocoa brown is it? Perhaps a very very milky chocolate? But it is a tad darker, and the colour is more intense. I like it. Next time I’ll just have to pick something with ‘black’ in the name ^_~

Sun
13
Jul '08

FP Les 3. Rekenen

Posted in Programming | No Comments

De vorige keer hebben we kennis gemaakt met variabelen en ons eerste variabeletype: string. Deze les leren we twee nieuwe types kennen, voor het opslaan voor getallen.

Voor gehele getallen gebruik je smallint. Dit is een afkorting voor ’small integer’. Integer het engelse woord voor gehele getallen (in de wiskunde ook wel natuurlijke getallen genoemd). Het type integer kent FP ook, maar het hangt van je compiler en computer af wat het kleinste en grootste getal is wat je erin kunt opslaan. Van smallint weten we dat wel: die gaat van -32768 tot en met 32767.

Voor getallen met cijfers achter de komma (ook wel reële getallen genoemd) is er het type real (wat reëel betekent in het Engels). Het getal wordt dan opgeslagen met 15 significante getallen.

Voorbeeld

Hier volgt een voorbeeld dat laat zien hoe je met deze types kunt rekenen. Neem het door en kijk of je alles kunt volgen.

program GetallenVoorbeeld;

var

geheelGetal : smallint;
reeelGetal : real;

begin

writeln(‘INLEZEN EN SCHRIJVEN’);

{ een geheel getal inlezen van toetsenbord }
write(‘Geef een geheel getal: ‘);
readln(geheelGetal);
{ een geheel getal schrijven naar het scherm }
writeln(‘Het getal is: ‘, geheelGetal);

{een reeel getal inlezen van toetsenbord }
write(‘Geef een reeel getal: ‘);
readln(reeelGetal);
{ een reeel getal schrijven naar het scherm }
{ exponentiele notatie }
writeln(‘Het getal is: ‘, reeelGetal);
{ decimale breuk }
writeln(‘Het getal is: ‘, reeelGetal:1:2);

{ het resultaat van een rekensom schrijven }
writeln(‘De som is: ‘, geheelGetal + reeelGetal);

writeln; { dit schrijft een lege regel }
writeln(‘REKENEN’);

writeln(‘1+2 = ‘, 1+2); { optellen }
writeln(‘1-2 = ‘, 1-2); { aftrekken }
writeln(‘1*2 = ‘, 1*2); { vermenigvuldigen }
writeln(‘1/2 = ‘, 1/2); { delen }
writeln;

{ meneer Van Dalen wacht Op Antwoord: Vermenigvuldigen en Delen gaat voor Optellen en Aftrekken. TIP: gebruik haakjes voor een andere volgorde. }
writeln(‘1 + 2 * 3 - 4 / 5 = ‘, 1+2*3-4/5);
writeln(‘1 + (2*3) - (4/5) = ‘, 1+(2*3)-(4/5));
writeln(‘(((1+2)*3)-4)/5 = ‘, (((1+2)*3)-4)/5);
writeln;

readln; { wacht op enter }

end.

Broncode: getallenvoorbeeld

Regel voor regel

Net als de vorige keer zullen we dit programma niet letterlijk regel voor regel langslopen, maar alleen de nieuwe dingen bekijken.

writeln;
Hier heeft writeln geen tekst gekregen om op het scherm te zetten. Het resultaat is dan een lege regel.

writeln(‘Het getal is: ‘, geheelGetal);
Net zoals bij string-variabelen kun je de waarde van een smallint-variabele op het scherm zetten met write, of writeln. Zoals je ziet kun je het, gescheiden door komma’s, combineren met andere typen zoals strings.

writeln(‘Het getal is: ‘, reeelGetal);
De inhoud van de real-variabele kun je op exact dezelfde manier op het scherm zetten. Als je niets bijzonders aangeeft doet hij dit in de exponentiele notatie (ook wel bekend als de wetenschappelijke notatie). Dit betekent dat hij het getal zo schrijft dat er een cijfer voor de komma komt, de rest erachter, en op het eind aangeeft hoe de komma verschoven moet worden.
Voorbeeld: 5.000000000000000E-001. De komma moet -001 naar rechts geschoven worden, oftewel 1 naar links. Het resultaat is dan 0.5 (met een hele reeks significante nullen). 1.000000000000000E+002 is dus … 100.

writeln(‘Het getal is: ‘, reeelGetal:1:2);
Die exponentiele notatie leest niet echt lekker. Gelukkig kun je aangeven dat je het getal op het scherm wilt zetten als decimale breuk, oftewel gewoon als 0.5 in plaats van 5.000000000000000E-001. Dit doe je door twee cijfers achter de variabele te zetten. Het eerste geeft aan hoeveel ruimte je getal minimaal in gaat nemen op het scherm, en het tweede getal is het aantal cijfers achter de komma. Zie de extra opgaven bij deze les om hier meer over te lezen.

+, -, *, /
Met deze operatoren kun je optellen, aftrekken, vermenigvuldigen en delen.
Normaal houdt FP zich aan de regel dat vermenigvuldigen en delen voor optellen en aftrekken gaat, en dan van links naar rechts. Wil je een andere volgorde, dan kun je bepaalde dingen eerst laten uitrekenen door er haakjes omheen te zetten.

Als je het programma uitvoert zul je zien dat +, -, en * op twee smallints weer een smallint oplevert (als je er over nadenkt kun je bewijzen dat dit zo is!), terwijl het resultaat van / een real is - het laat het getal zien in de exponentiele notatie. Als je +, -, of * gebruikt met een real, dan is het resultaat ook een real.

Tips

Je hoeft dit echt niet allemaal direct te onthouden. Als je meer programmeert gaat dat vanzelf. Het belangrijkste is dat je het ongeveer kunt volgen, en dat je op kunt zoeken hoe je dingen zou moeten doen.

Om te zien wat voor type integer er bij jou wordt gebruikt, kun je de volgende code gebruiken: writeln(sizeof(integer)); Is het antwoord 2, dan is het hetzelfde als smallint. Maar vergeet niet dat het als je het op een andere computer compileert weer iets anders kan zijn!

Opdracht

Maak een programma dat vraagt om vier smallints: a, b, c en x. Laat FP de volgende sommen berekenen met deze variabelen en zet de som en het antwoord op het scherm.

  • a + b - c
  • -b / 2a
  • -b / (2a)
  • ax² + bx + c

Tip: 3² = 3 . 3!

Oplossing: komt binnenkort

Volgende keer

In de extra opgaven wordt de notatie van de decimale breuk nog wat duidelijker uitgelegd met voorbeelden. Verder staan er een paar opgaven om de stof van deze les mee te kunnen oefenen.

Sat
12
Jul '08

FP Les 2b. Extra

Posted in Programming | 1 Comment

Variabelen kunnen in het begin wat lastig zijn. Om wat extra ervaring op te doen kun je daarom de volgende opgaven maken.

In plaats van een variabele een waarde te geven door deze waarde in te lezen van het toetsenbord kun je ook zelf aangeven wat voor waarde je in de variabele wilt opslaan. Dat is iets nieuws wat je ook zult tegenkomen in deze opdrachten.

Extra 1. Te zijn of niet te zijn

Een wordt-opdracht is een regel met een dubbelepunt-is-teken :=. Het wordt gebruikt om de variabele die links van het wordt-teken wordt genoemd een nieuwe waarde te geven. De nieuwe waarde is wat rechts van het wordt-teken staat.

Voorbeelden van wordt-opdrachten:

program VariabeleVoorbeelden;

var

naam : string;
voornaam : string;

begin

{voorbeeld 1}
naam := ‘Jenny’;
writeln(‘naam: ‘, naam); {naam: Jenny}

{voorbeeld 2}
voornaam := naam;
writeln(‘voornaam: ‘, voornaam);
{voornaam: Jenny}

{voorbeeld 3}
voornaam := ‘naam’;
writeln(‘voornaam: ‘, voornaam);
{voornaam: naam}

end

Broncode: variabelevoorbeelden.pas

Let goed op het verschil tussen letterlijke strings (tekst tussen aanhalingstekens, zoals ‘dit’) en namen van variabelen (zonder aanhalingstekens). Het eerste voorbeeld slaat de letterlijke waarde ‘Jenny’ op in de variabele naam.

In het tweede voorbeeld krijgt voornaam de waarde van de variabele naam. Er staan geen aanhalingstekens om naam, dus het is geen letterlijke string. De waarde die is opgeslagen in naam is ‘Jenny’, want dat hebben we in de regel daarboven gedaan. Dus voornaam krijgt de waarde van naam, en naam heeft als waarde ‘Jenny’. Wat is de nieuwe waarde van voornaam? ‘Jenny’!

Het derde voorbeeld laat zien wat er zou gebeuren als je wel aanhalingstekens om naam zet. naam wordt dan niet meer gezien als variabele, maar als letterlijke string. voornaam krijgt dan dus als waarde ‘naam’.

Tijd voor een korte opdracht:

Schrijf een programma dat eerst de voornaam van de gebruiker inleest van het toetsenbord.
Het programma zegt hallo tegen de gebruiker.
Vervolgens geeft het programma de variabele voornaam een nieuwe waarde: ‘Piet’.
En het eindigt met zeggen dat het jammer is dat de gebruiker niet zo heet, gebruik makende van de variabele voornaam bij het schrijven hiervan.

Pseudocode: jeheetgeenpiet.txt (probeer het eerst zelf!)

Oplossing: jeheetgeenpiet.pas

Extra 2. Volg de variabele

Neem de volgende code over en zet als commentaar achter elke writeln wat je verwacht dat het programma op het scherm zal zetten. Run vervolgens het programma en kijk of het klopt. Het kan helpen om achter elke wordt-opdracht commentaar te zetten over wat je denkt dat de nieuwe waarde van de variabele is geworden. Laat je niet afleiden door de namen van de variabelen!

program SpelenMetVariabelen;

var

groente : string;
fruit : string;

begin

groente := ’sla’;
fruit = ‘aardbei’;
writeln(groente, ‘ en ‘, fruit);

groente := fruit;
writeln(groente, ‘ en ‘, fruit);

fruit := groente;
writeln(groente, ‘ en ‘, fruit);

fruit := ‘fruit’;
groente := ‘groente’;
writeln(groente, ‘ en ‘, fruit);

readln; {wacht op enter}

end.

Broncode: spelenmetvariabelen.pas

En, was de uitvoer van het programma zoals je had verwacht? Als niet, kijk dan nog eens naar Extra 1. Het kan ook helpen om nog eens terug te gaan naar les 2. Je kunt me natuurlijk ook vragen stellen als je er niet uit komt. Het is belangrijk dat variabelen duidelijk zijn voordat je verder gaat met de volgende opdrachten. We zullen namelijk nog heel veel variabelen tegen komen.

Oplossing: spelenmetvariabelenopl.pas

Volgende keer

De volgende les worden twee nieuwe types variabelen geintroduceerd en leer je hoe je Pascal je wiskundehuiswerk kunt laten maken.

Mon
7
Jul '08

FP Les 2. Hallo Jij

Posted in Programming | 1 Comment

Deze les gaan we beginnen met variabelen. Variabelen kun je zien als potjes om gegevens in op te slaan. Wat er precies in een potje zit is variabel: het kan veranderen. Vandaar de term ‘variabele’.

De variabelenaam is de naam op het etiket van het potje. Met deze naam kun je makkelijk je potje vinden.naamvariabele.png

Potjes kunnen verschillende groottes en vormen hebben waardoor je bepaalde soorten gegevens beter kwijt kunt in bepaalde soorten potjes. Dit noemen we het type van de variabele.

De inhoud van het potje heet ook wel de waarde van de variabele. Er kan maar een waarde in een potje (hoewel we later nog kennis zullen maken met arrays en records die iets ingewikkelder in elkaar zitten). Een nieuwe waarde overschrijft de oude. Als je dus eerst ‘Jenny’ erin stopt, dan ‘Karin’, en je kijkt vervolgens wat voor waarde in de variabele zit, dan zie je ‘Karin’ en ben je ‘Jenny’ kwijt.

De opdracht deze keer is een programma schrijven dat de naam van de gebruiker inleest van het toetsenbord en vervolgens hallo zegt.

Pesudocode

Net zoals in les 1 beginnen we weer met het schrijven van de commando’s in pseudocode. Probeer eerst zelf de stappen op te schrijven die de computer moet doen voordat je kijkt naar het antwoord.

schrijf: ‘Wat is jouw naam?’
lees: naam
schrijf: ‘Hallo’ naam

Code

program HalloJij;

var

naam : string;

begin

{vraag naam}
write(‘Wat is jouw naam? );
readln(naam);

{zeg hallo}
write(‘Hallo ’);
writeln(naam);
readln;

end.

Broncode: hallojij.pas

Regel voor regel

Ik zal alleen ingaan op de regels met iets nieuws. Als je een van de andere regels niet begrijpt moet je even terugkijken bij les 1.

var
Als je variabelen wilt gebruiken in je programma moet je die eerst declareren. Dit betekent dat je FP vertelt wat de naam en het type gaat zijn van je variabele. Variabeles declareren moet in een speciaal blok dat voor het begin van de commando’s komt. Het blok geef je aan met het sleutelwoord var.

naam : string
Hier wordt een variabele genaamd naam gedeclareerd van het type string. In het Nederlands kun je string hier vertalen als ketting of reeks. In dit geval gaat het om een ketting van tekens. En is dat niet wat een naam is: J, e, n, n, y ?

{vraag naam}
{zeg hallo}

Tekst tussen de accolades is commentaar. Het wordt door FP volledig genegeerd, maar kan wel handig zijn om de leesbaarheid van je code te vergroten.

write(‘Wat is jouw naam? ‘);
write(‘Hallo ‘);

Dit commando werkt vrijwel hetzelfde als writeln. Het belangrijkste verschil is dat na writeln een nieuwe regel wordt begonnen, terwijl na write op dezelfde regel wordt doorgegaan. Als je de gebruiker bijvoorbeeld de naam direct na de vraag wilt laten typen, moet je dus geen writeln gebruiken. En ‘Hallo’ wordt met write gedaan zodat de naam zelf er meteen achter komt, in plaats van op de volgende regel.

readln(naam);
De vorige keer gebruikten we readln om te wachten tot de gebruiker op enter drukte. Nu gebruiken we het om informatie van het toetsenbord te lezen. Je kunt dus nu je naam intypen. Net als eerder gaat het programma pas verder als de gebruiker op <enter> drukt. Dan wordt de tekst die is getypt opgeslagen in de variabele naam.

Nieuwe woorden

sleutelwoorden: var, string
commando’s: write

Tips

Misschien dat je nu wel weet wat je programma doet, maar weet je het over een maand nog? Of als je de code naar iemand anders stuurt: begrijpt die persoon wat je overal mee bedoelt? Je programma’s zijn nu nog vrij klein en simpel, maar ze zullen steeds ingewikkelder worden. Commentaar toevoegen aan je code is daarom zeker aan te raden!

In plaats van ‘Hallo’ naam in twee opdrachten op het scherm te zetten, kan het ook met een writeln. Je zet dan de verschillende dingen die je naar het scherm wilt schrijven achter elkaar, met een komma ertussen. Hier zijn een paar voorbeelden:

writeln(‘Hallo ‘, naam);
writeln(naam, ‘ is heel lief’);
writeln(‘Hallo ‘, naam, ‘. Zeg, ‘, naam, ‘. Wist je dat dit ook kon?’);

Extra opgave

Schrijf een programma dat vraagt om de lievelingskleur van de gebruiker en vervolgens het volgende versje op het scherm zet - hier als voorbeeld met de kleur groen:

groen, groen, groen zijn al mijn kleren
groen, groen, groen is waar ik van houd
ik houd van alles, alles wat groen is
daarom houd ik, houd ik van jou!

Voorbeeldoplossing: lievelingskleur.pas

Volgende keer

De extra opgaven geven nog wat oefening met variabelen en hoe ze werken. Op naar de extra opgaven!

Sun
6
Jul '08

FP Les 1b. Extra

Posted in Programming | 1 Comment

Hier zijn wat extra opdrachten de je niet per se hoeft te doen, maar die je wel wat meer inzicht geven. De laatste opdracht is een soort eindtoets waarin je alles wat je daarvoor hebt geleerd gebruikt om de fouten in een voorbeeld op te sporen. Veel succes!

Extra 1. Geen ruimte

Haal eens alle witruimte (whitespace) uit het programma. Met witruimte wordt bedoelt spaties, tabs (inspringen), en nieuwe regels. Houd spaties die de verschillende woorden scheiden er wel in. Wat je overhoudt zou er als volgt uit moeten zien:

program HalloWereld;begin writeln(‘Hallo Wereld’); readln; end.

Denk je dat het programma nog steeds zal werken? Waarom wel of niet? Test het maar eens!

En wat als je echt alle spaties verwijderd - ook die tussen de woorden? Dat zou er dan zo uitzien:

programHalloWereld;beginwriteln(‘Hallo Wereld’);readln;end.

Heb je het uitgeprobeerd? De eerste variant zou gewoon moeten werken. Als dit bij jou niet het geval is, kijk dan even of je niet per ongeluk iets te veel hebt weggehaald.

De tweede variant geeft een foutmelding:

Syntax error, “BEGIN” expected but “identifier PROGRAMHALLOWERELD” found

In het Nederlands: Syntaxfout, “BEGIN” verwacht, maar “naam PROGRAMHALLOWERELD” gevonden. Zie je wat er hier mis gaat? Hij ziet programHalloWereld als een geheel en niet als een combinatie van het sleutelwoord program met de naam (wat Free Pascal identifier noemt) HalloWereld.

Maar waarom zegt Free Pascal dan dat hij begin wil zien, en niet program? Omdat je die eerste regel met de programmanaam weg kunt laten. Je programma begint dan met begin, en het werkt nog steeds. Wij zullen echter altijd de programma’s een naam geven.

De broncode van de hierboven genoemde programma’s:

Extra 2. Een punt maken van puntkomma’s

Commando’s worden gescheiden met puntkomma’s. Wat denk je dat er gebeurt als je er een vergeet? Haal maar eens de puntkomma op het eind van de program regel weg. Wat gebeurt er?

program HalloWereld
begin

writeln(‘Hallo Wereld’);
readln;

end.

Wat als je de puntkomma op het eind van de writeln regel weglaat?

program HalloWereld;
begin

writeln(‘Hallo Wereld’)
readln;

end.

En de puntkomma na de readln?

program HalloWereld;
begin

writeln(‘Hallo Wereld’);
readln

end.

Als het goed is kreeg je bij de eerste twee testen een foutmelding:

Syntax error, “;” expected but … found

maar bij de laatste niet. Waarom denk je dat dat is? Bij de laatste opdracht scheidt de puntkomma niet twee commando’s! Waarom kan de puntkomma na de programmanaam dan niet ook weg? begin en end worden gebruikt een een serie commando’s te groeperen tot een opdracht - het telt dus wel als commando.

Broncode:

Wat als je de punt op het eind na end vergeet?

program HalloWereld;
begin

writeln(‘Hallo Wereld’);
readln;

end

Of als je een puntkomma doet op het eind van het programma in plaats van een punt?

program HalloWereld;
begin

writeln(‘Hallo Wereld’);
readln;

end;

Kun je al een beetje voorspellen wat voor foutmelding FP (Free Pascal) gaat geven? In het eerste geval is het:

Syntax error, “.” expected but “end of file” found.

En voor de laatste:

Syntax error, “.” expected but “;” found.

Als je nu zo’n foutmelding ziet weet je dus precies wat er aan de hand is. De compiler zegt zelfs waar hij ongeveer denkt dat de fout zit. De hele regel van een foutmelding bestaat namelijk uit:

bestandsnaam (regel, kolom) omschrijving van de fout.

In het geval van de laatste test die we hebben gedaan zijn staat er als regel en kolom (6,4). Dit moet je dus lezen als regel 6 en kolom 4. Regel 6 is end; en kolom 4 is het vierde teken ;. Je weet dus precies waar je moet kijken.

broncode:

Extra 3. Spellingtoets

Je weet nu al aardig wat foutmeldingen te herkennen en je weet wat je dan moet doen. Er is nog een soort foutmelding waar we nog niet naar hebben gekeken, namelijk: wat als je woorden verkeerd spelt?

Zoals writeline ipv writeln?

program HalloWereld;
begin

writeline(‘Hallo Wereld’);
readln;

end.

Of programma ipv program?

programma HalloWereld;
begin

writeln(‘Hallo Wereld’);
readln;

end.

En

eind in plaats van end?

program HalloWereld;
begin

writeln(‘Hallo Wereld’);
readln;

eind.

Als reactie op het eerste voorbeeld zegt FP: Identifier not found “writeline” waarmee hij bedoelt dat hij de naam writeline niet kent. De tweede foutmelding Illegal expression is daar een gevolg van.

Bij het tweede voorbeeld krijg je: “BEGIN” expected but “identifier PROGRAMMA” found. Deze lijkt veel op de foutmelding die je kreeg bij de tweede witruimte-opdracht. Je ziet dus dat hij aangeeft dat hij een bepaald woord wil zien, en nog niet verteld dat hij de naam programma niet kent.

De foutmelding bij voorbeeld 3 is weer makkelijk herkenbaar: Identifier not found “eind”.

Broncode:

Extra 4. Readln

Waarom staat die readln er voor het eind van het programma? Het is al kort genoemd in Les 1, maar laten we het eens testen.

program HalloWereld;
begin

writeln(‘Hallo Wereld’);

eind.

Waarschijnlijk je het scherm wel even flikkeren, maar je krijgt de uitvoer van je programma niet te zien. FP gaat namelijk meteen weer terug naar het typscherm. Hoewel het makkelijker is om die readln toe te voegen aan het eind van je programma, kun je de uitvoer nog steeds te zien krijgen. Ga hiervoor in het menu naar Debug, User screen (Alt+F5). Als je op <enter> drukt ga je weer terug naar FP.

Broncode: hallowereldwachtniet.pas

Extra 5. Debuggen

Debuggen komt uit het Engels en betekent: fouten uit een computerprogramma halen. Het kan gaan om allerlei verschillende soorten fouten: een missende puntkomma, een verkeerd gespeld woord, of misschien dat de opdrachten niet helemaal goed zijn zodat het programma niet doet wat je wilt.

Debug het volgende programma:

programmeWieDitLeest

begin

writelijn(‘Wie dit leest kan goed debuggen.’);

eind;

Als je meedere foutmeldingen tegelijk ziet, begin dan met het verbeteren van de eerste die je herkent. Kom je er niet helemaal uit? Kijk dan nog eens naar de opdrachten hierboven. Alles wat je nodig hebt is al verteld.

Broncode: wieditleest.pas

Volgende keer

Geweldig dat je al zover bent gekomen! Vanaf nu wordt het alleen maar leuker: volgende keer gaan we beginnen met variabelen en invoer. Hier is les 2.

Sat
5
Jul '08

FP L1. Hallo Wereld

Posted in Programming | 1 Comment

Vandaag gaan we bezig met een klassieker in de programmeerwereld: “Hello World”, oftewel “Hallo Wereld”. Het doel van dit programma is deze zin op het scherm te zetten.

Pseudocode

Als je nog niet zo vloeiend bent in een programmeertaal kan het handig zijn om je algoritme (stappen die de computer uit moet voeren om een probleem op te lossen) eerst in ‘gewone taal’ op te schrijven. Die ‘gewone taal’ noemen we pseudocode. Elke opdracht die de computer uit moet voeren is een regel. De exacte woorden die je gebruikt in pseudocode maakt niet uit, maar blijf consistent.

Voorbeeld

schrijfnaarscherm: ‘Hallo Wereld’

Code

In Pascal ziet dat er dan zo uit:

program HalloWereld;
begin

writeln(‘Hallo Wereld’);
readln;

end.

Regel voor regel

program HalloWereld;
program vertelt de compiler (het programma dat jouw code omzet naar computertaal) dat hier je programma begint.
HalloWereld is de naam van dit programma. Je kunt een programma elke naam geven die je wilt, als het maar begint met een letter en verder bestaat uit letters of cijfers. Verder mag de naam niet hetzelfde zijn als een keyword (sleutelwoord, een woord met speciale betekenis in de programmeertaal). Een goede richtlijn is een simpele naam te nemen die goed aanduidt wat het programma is of doet.
; werkt als scheiding tussen commandoregels. Bijna al je regels in Pascal zullen hiermee eindigen.

begin
Na dit keyword komen de opdrachten die je programma zal uitvoeren. Let op: geen ; !

writeln(‘Hallo Wereld’);
writeln() is het commando waarmee je de opdracht geeft om tekst op het scherm te zetten. writeln staat voor write line, wat Engels is voor schrijf regel. Tussen de ronde haken zet je wat er op het scherm geschreven moet worden.
‘Hallo Wereld’ is de tekst die op het scherm gaat komen.

readln;
readln staat voor read line, wat Engels is voor lees regel. Als het programma bij deze regel aangekomen is, gaat hij pas door als je op enter drukt. Deze regel voegen we toe zodat we te zien krijgen wat we eerder op het scherm hebben gezet. Free Pascal laat anders namelijk je uitvoerscherm niet zien.

end.
Het programma eindigt hier. Let op: hierachter komt geen ; maar een . !

Nieuwe woorden

Sleutelwoorden: program, begin, end
Commando’s: writeln, readln

Tips

Pascal is niet hoofdlettergevoelig: writeln en WriteLn doen hetzelfde.

De inspringing van de opdrachten tussen begin en end. is alleen om de leesbaarheid te vergroten. Als je die extra ruimte weghaalt doet je programma het nog steeds, maar het is wel handig voor jezelf om de opdrachten wel op deze manier te schrijven. Je kunt dan precies zien wat waarbij hoort.

De ; op het eind van de laatste commandoregel voor end. kun je weglaten als je wilt.

Compileren en runnen

We hebben nu code voor een programma maar hoe zorg je ervoor dat de computer daadwerkelijk gaat doen wat je hebt opgeschreven? Eerst moeten we de code opslaan, bijvoorbeeld als hallowereld.pas. Dit doe je door in het menu naar File, Save te gaan, of door op F2 te drukken. Vul nu de naam van je programma in bij Name en klik op OK.

In de introductie stond uitgelegd dat je code eerst omgezet moet worden naar machinecode die je PC begrijpt. Je .pas bestand wordt dan omgezet naar een .exe bestand, die de computer wel kan uitvoeren. Free Pascal doet deze twee stappen direct achter elkaar als je in het menu naar Run, Run gaat (alternatief: CTRL-F9). Als je geen fouten hebt in je programmacode, wordt het programma nu uitgevoerd.

freepascalrun.png

Probeer het maar eens met dit eerste HalloWereld programma. Lukte het niet? Check dan nog een keer of je de code wel goed hebt overgetypt. Kun je het probleem niet vinden, dan kan het helpen om te kijken bij de extra opgaven. Daar worden wat extra dingen uitgelegd.

Als laatste oplossing kun je de broncode hier downloaden: hallowereld.pas. In Free Pascal (FP) kun je in het menu naar File, Open… te gaan om het bestand te openen.

Volgende keer

De volgende keer geef ik een aantal extra opgaven die je kunt doen om bekend te raken met fouten die je kunt maken in je programmacode en wat voor foutmelding de compiler dan geeft. Fouten maken doen we allemaal, dus het is erg handig om te weten wat ze kunnen zijn, en hoe je ze kunt herkennen en vinden. Klik hier om er naar toe te gaan.

Fri
4
Jul '08

FP Les 0. Installatie

Posted in Programming | 1 Comment

This summer holiday I’m going to teach my sister to code in Pascal and prepare her for the first round of the Dutch olympiad in informatics (NIO). I will post these tutorials on my blog, so she has easy access to them, and so perhaps they can be of use for other people as well. As my sister’s first language is Dutch, the lessons will be in Dutch as well. Sorry about that.

Deze les is nog niet zo interessant, maar wel belangrijk, want we gaan de gratis programmeeromgeving Free Pascal installeren onder Windows. Zonder deze omgeving kunnen we niets.

Downloaden

Klik hier voor de downloadpagina van Free Pascal voor Windows (voor andere besturingssystemen, kijk hier). Het kan een tijdje duren voordat het installatieprogramma is gedownload.

Installeren

Als de download klaar is kun je Free Pascal installeren door erop te dubbelklikken. Klik gewoon steeds op ‘Next’. Het kan handig zijn bij ‘Additional Tasks’ het vakje voor ‘Associate .pas files with Free Pascal IDE’ aan te zetten, maar het is niet verplicht.

freepascalsetuppath.png

freepascalsetupoptions.png

Starten

Om de Free Pascal IDE (Integrated Development Environment - geintegreerde ontwikkelomgeving) te starten dubbelklik het Free Pascal icoon dat nu op je bureaublad staat.

Volgende les

Je kunt direct door naar les 1 - kunnen we eindelijk beginnen met het leuke werk: programmeren.

Fri
27
Jun '08

Paradox of Choice

Posted in Brain and Mind | No Comments

If you haven’t seen this TED talk yet, you really should. Barry Schwartz is a great speaker, and tackles an important premise of our Western society: to maximize wellfare you have to maximize freedom; freedom is maximized by maximizing choice.

And we do have have a -lot- of choice: in stores, in health care packages, but also: you can work anywhere requiring you to decide on a minute to minute basis whether you are going to work or not.

Unfortunately so much choice results in a number of negative psychological effects:

  1. Paralysis: People do not make a decision altogether, even is making any decision is better than none.
  2. Less satisfaction: People are never happy with the choice they do make. Because there are so many options there is bound to be a better one out there: higher standards. And if you make a less good choice than it is purely your fault as the better options -are- out there.
Mon
23
Jun '08

Veggie BBQ Recipes

Posted in Cooking | No Comments

vegetarian bbq recipes

Some time ago Cynni asked for vegetarian barbeque recipes. At my recent student apartment reunion I learned a couple of interesting dishes from fellow vegetarians that really blew me away. The briljant thing is that the food is wrapped in tin foil, so laying them on spots that have previously been used for meat is no problem. So to all you vegetarians out there: you don’t have to fear the BBQ no more! Even carnivores will enjoy these.

Lisette’s Filled Sweet Peppers
My personal favourite

Ingredients:

  • Sweet peppers (a half per person, or maybe even a quarter)
  • Goat cheese
  • Mushrooms (about one and a half per half pepper)
  • Walnuts
  • Honey
  • Tin foil

Preparation:

  1. Cut the sweet peppers in half.
  2. Cut out the seeds.
  3. Spread goat cheese over the inside of the pepper halves.
  4. Cut the mushrooms in small pieces.
  5. Fill the pepper with the mushroom pieces.
  6. Add walnut pieces to the filling about the same sice as the mushroom pieces.
  7. Add a little honey to the mix.
  8. Wrap the pepper in tin foil in such a way that the juices will not slip out between the cracks.
  9. Put on the BBQ - or in the oven - until the juice from the mushrooms is starting to fill the pepper and the pepper is nice and soft.
  10. Enjoy!

Susanne’s Seasoned Butter Mushrooms
My boyfriend loves these

Ingredients:

  • Mushrooms (about 4 per person)
  • Seasoned butter - like Miree or Paturain

Preparation:

  1. Clean the mushrooms by whiping off the dirt.
  2. Cut out the stems with a kitchen knife.
  3. Fill the holes where the stems were with the seasoned butter with a teaspoon.
  4. Wrap the mushrooms in tin foil in such a way that the juices will not slip out between the cracks. You can pack about four mushrooms together.
  5. Put on the BBQ - or in the oven - until the juices from the mushroom and seasoned butter seem to have melted nicely.
  6. Enjoy!

P.S. Sorry about the bad quality pictures. I’m not a professional photographer, plus my camera is not one of the best I’m afraid.

Thu
19
Jun '08

Reboot

Posted in Personal | No Comments

To all you spampeople and spambots out there: do you seriously think that filling my personal inbox with spam that you’d like to appear underneath my posts will help attaining your goal?

This time I used the installation feature from my webspace provider, hoping that they will also keep the installation up to date. And hoping that the most up to date version will have the most up to date anti-spam features.

Of course this is also a great moment to start working on a new layout - which has been on my to do list for over half a year now. Is it possible to make something look professional, fun, and cute at the same time? We can only try…

This new start would also be a great moment to start writing more regularly. I know, I’ve said it so many times before already. But this time, it is going to happen for sure!

P.S. No, I don’t need a penis enlargement >_<

P.P.S. OMG, I just saw the spam in my lj rss - how did that get there? I guess the problem was more serious than I thought…