De Free Pascal Compiler en Turbo Pascal lijken op elkaar. Zelf denk ik dat Turbo Pascal een programmeertechniek kent dat Free Pascal nog niet kent. Omdat ik nog nooit met Free Pascal geprogrammeerd heb, weet ik eerlijk gezegd daar ook geen antwoord op. Zelf neem ik aan dat de meeste voorbeelden, die hier zullen verschijnen, in Free Pascal ook gebruikt kunnen worden.

In begin jaren ’90 leerde ik Turbo Pascal in alleen de eerste klas van de MTS in Ede. Al snel merkte ik nog meer van de taal te weten dan de anderen en, nadat ik de tweede klas helaas niet haalde maar ze mij toch als ‘stageloper’ lieten werken, begon ik les te geven in Pascal aan dertig leerlingen uit de 3de klas. Daarom is programmeren ook mijn sterkste punt. Ook 5de generatietalen heb ik op de MTS gebruikt voor het programmeren van robots. Tien robotarmen programmeerde ik met BBC BASIC en één grote robot met een rolbaan moest geprogrammeerd worden met Scara.

Het hoofdblok of ook wel genoemd de programmakern

In Pascal moeten we ons aan een hele andere structuur houden dan we in andere programmeertalen gewend zijn. Codeblokken moeten binnen een begin en een end staan, net zoals de accolades in C. Basic kent geen statements of symbolen die de codeblokken moeten bepalen. Toch is er in Visual Basic .NET wel zoiets bijgekomen, zoals de accolades die nodig zijn om waarden in declaraties te initialiseren.

Het hoofdblok begint optioneel met een program. Daarna een begin, het codeblok en als laatst een end met een punt. De punt is uniek. Voor zover ik een aantal programmeertalen ken, heeft alleen Pascal een end met een punt. Als er toch nog code eronder staat, wordt dat door de compiler genegeerd.

program Welkom;

begin

Writeln('Welkom bij de programmeertaal Pascal!');

Readln

end.

Het statement dat voor een end staat hoeft geen puntkomma te hebben. Het kan geen kwaad om achter Readln een puntkomma te plaatsen, maar de compiler beschouwd het dan wel als een null-statement.

Als u een foutje maakt, bijvoorbeeld ‘Writelm’ dan zal de compiler melden:

Error 3: Unknown identifier

Strings

Een string hoort tussen enkele aanhalingstekens te staan. Hoewel de lengte van een string 255 tekens is, kan Turbo Pascal alleen regels met een lengte van 127 tekens compileren. Toch is het in de editor van Turbo Pascal mogelijk 248 tekens per regel in te tikken. Andere editors handhaven soms andere lengtes. Dit soort details kunnen u grijze haren bezorgen, besteed er maar niet teveel aandacht aan.

Om lange strings te kunnen gebruiken, kunnen we deze splitsen met het plus-teken. Dit is handig om lange regels te voorkomen, zoals hieronder:

Writeln('Een voor allen ' +
'en allen ' +
'voor een.');

Het concateneren (samenvoegen) kan ook met variabelen worden gedaan.

Wanneer we een enkel aanhalingsteken willen afdrukken, moeten we deze nog eens intikken en erachter met de rest van de string verder gaan, bijvoorbeeld:

Writeln('Daar rijdt weer zo''n mooie auto!');

Variabelen

De plaatsen waar variabelen gedeclareerd moeten worden is altijd voor een begin, maar nooit in een codeblok zelf. Ze worden gedeclareerd na een program, na een procedure en na een functie. Er zijn nog meer plaatsen waar variabelen gedeclareerd mogen worden, maar dat is altijd weer voordat een codeblok begint.

program WieBentU;

var

UwNaam: string[40];

begin

Write('Hoe heet u? ');

Readln(UwNaam);

Writeln('Hallo ', UwNaam, '!');

Readln

end.

Onthoud dat u codeblokken mag nesten, maar het is dan niet toegestaan variabelen voor een binnenst begin te declareren.

begin

var A: Integer;

begin

...

end

end.

De compiler zal tegenstribbelen en de foutmelding ‘Illegal expression’ geven.

Constanten

Wanneer u vaak met dezelfde waarden te maken heeft, is het zinvol om constanten te gebruiken. Ook de constantendeclaratie moet voor een begin staan, maar ook voor de variabelendeclaratie.

program Constanten;

const

Naam = 'Anne';

Gewicht = 59;

Spaargeld = 375;

begin

Writeln('Naam : ', Naam);

Writeln('Gewicht: ', Gewicht, ' kilo');

Writeln(Naam, ' heeft € ', Spaargeld, ' gespaard.');

Readln

end.

Subranges

Pascal kent een mogelijkheid om waarden binnen een bepaalde grens te houden. Buiten de grens zal de compiler niet accepteren. Het declareren van subranges werkt als volgt:

var Gewicht: 2..125;

Probeert u een toekenning te geven als:

Gewicht := 130;

dan zal de compiler een foutmelding geven, omdat de waarde 130 buiten de grens ligt.

Toch kan het gewicht bij sommige mensen hoger zijn dan 125. Het gebruik van constanten is dan weer nuttig, zoals onderstaand programma laat zien.

program HetGewicht;

const

ZwaarsteGewicht = 140;

var

Gewicht: 2..ZwaarsteGewicht;

begin

Write('Wat is uw gewicht? ');

Readln(Gewicht);

Writeln('Uw gewicht is: ', Gewicht);

Readln

end.

Typt u een getal in die kleiner is dan 2 of groter is dan ZwaarsteGewicht, dan zal de compiler een waarschuwing geven:

Warning: Range check error while evaluating constants

Op internet is heel veel te vinden over hoe Pascal werkt. Hebt u een leuk stukje over Pascal, stuur deze dan op.

De volgende keer komen recordtypes en objecttypes aan bod en laat ik een andere Pascal programmeertaal zien – Lazarus. Lazarus is een Windows IDE object georiënteerde taal met veel componenten. Naast de recordtypes en objecttypes worden ook de structuren gebruikt, zoals lussen, keuzes, meervoudige keuzes, condities en expressies, procedures en functies.