Informatica DELPHI lesnr.1 Informatica DELPHI lesnr. 1 INLEIDING In de hoofdstukken 6 en 7 hebben jullie kennis gemaakt met JavaLogo. Dit is een programmeertaal met Logo-commando’s, die verpakt zijn in een Java-omgeving. Met deze taal kunnen op ‘vrij eenvoudige wijze’ allerlei 2D- en 3D-tekenapplets gemaakt worden. In hoofdstuk 8 wordt gekeken naar een paar andere programmeertalen, nl. BASIC en PASCAL. Deze talen zijn min of meer verouderd. We onderscheiden 4 verschillende generaties programmeertalen: 1. Eerste generatietaal (Machinetaal). De computer wordt rechtstreeks geprogrammeerd door het invoeren van lange series nullen en enen. Dat ziet er zo uit: 000000 100000 00111 00100 00101 00000 2. Tweede generatietaal (Assembleertaal). De binaire instructies van de machinetaal zijn vervangen door ‘begrijpelijke code’s’. Dat ziet er zo uit: ADD R7 , R4 , R5 3. Derde generatietaal (PASCAL, FORTRAN, COBOL, BASIC). Verschillende binaire instructies worden gecombineerd tot één programmaopdracht. Dat ziet er zo uit: som := getal1 + getal2; 4. Vierde generatietaal (SQL, JAVA, Delphi (= opvolger PASCAL), C++). Met één enkele opdracht kan de programmeur door de computer verschillende taken laten uitvoeren Programmeertalen van de eerste en tweede generatie zijn machinegerichte talen. Programmeertalen van de derde en vierde generatie zijn machine-onafhankelijke talen. Programmeertalen van de derde generatie noemen we ook wel proceduregerichte talen. Programmeertalen van de vierde generatie noemen we ook wel probleemgerichte of object-georiënteerde talen. Of je nu programmeert in een tweede, derde of vierde generatietaal, jouw programma moet ‘vertaald’ worden naar voor de computer ‘begrijpelijke’ machinetaal. Een programma geschreven in een tweede generatietaal wordt vertaald naar machinetaal m.b.v. een assembler. Een programma geschreven in een derde of vierde generatietaal wordt vertaald naar machinetaal m.b.v.een compiler. Gedurende 8 lessen gaan wij stoeien met de vierde generatietaal DELPHI. De compiler en de IDE (= Integrated Development Environment) zijn beide als Freeware via Internet te downloaden: -1- Informatica DELPHI lesnr.1 Huidige versie: Delphi6.0 Personal Edition via http://www.borland.com Op de site van Borland kun je een Software Registration Account aanmaken. Vervolgens krijg je via email een Serial Number en een Authorization Key. Nadat je de Delphi Personal Edition hebt gedownload (140 Mb), kun je met deze 2 nummers het pakket activeren. DELPHI Het openingsscherm van DELPHI 6.0 ziet er zo uit: 1. Standaard objecten 2. Objecten overzicht 4. Source-code 3. Object eigenschappen -2- 5. Ontwerpveld voor de GUI Informatica DELPHI lesnr.1 DELPHI 6 is een ‘visuele programmeeromgeving’. De Graphic User Interface (GUI) kan ontworpen worden door op een werkblad te tekenen. DELPHI 6 produceert vervolgens volledig automatisch de noodzakelijke source-code. 1. Standaard objecten Hier staan de standaardknoppen, labels, tekstvelden enz., die allemaal gebruikt kunnen worden bij het ontwerpen van de GUI. 2. Objecten overzicht Hier staat het overzicht van alle objecten, die bij het ontwerpen van de GUI zijn gebruikt. 3. Object eigenschappen Hier kunnen alle eigenschappen (naam, kleur, afmetingen enz.) van het geselecteerde object worden ingesteld. (Eigenschappen heten ook wel properties.) 4. Source-code Hier staat alle source-code van het programma. Veel code wordt automatisch door DELPHI 6 aangemaakt. Een gedeelte van de code (wat moeten knoppen doen, welke variabelen worden gebruikt) moet je zelf intikken. 5. Ontwerpveld voor de GUI Hier kun je de GUI ontwerpen. Knoppen, tekstvelden, enz. kunnen gewoon op dit veld getekend worden. VOORBEELD (Staat op de werkdiskette in Lesnr1OptelMachine) Productomschrijving: Bouw een DELPHI-applicatie, waarmee 2 getallen kunnen worden opgeteld. Gebruikersinterface: Ontwerp een GUI, die bestaat uit 3 labels, 3 tekstvelden en 1 knop. De achtergrondkleur van de GUI is geel. De afmetingen van de GUI zijn 200 x 300 pixels. Interface Gebruikte objecten -3- Informatica DELPHI lesnr.1 Implementatie: Labels, tekstvelden (die ‘Edits’ heten), buttons enz. kun je gewoon op het Ontwerpveld voor de GUI tekenen. Nadat je een object hebt getekend, geef je het object een logische naam. Het label Getal 1: in het voorbeeld heeft de naam ‘Getal1Label’ gekregen. In het vakje ‘Name’ vul je de naam van het object in. In het vakje ‘Caption’ komt de inhoud van het label (Dat is de tekst, die getoond wordt in de GUI.) Je kunt een heleboel attributen/eigenschappen van het object instellen. Eigenschappen van het object We plaatsen de 3 labels, de 3 tekstvelden en de knop op het Ontwerpveld. DELPHI maakt nu volledig automatisch alle noodzakelijk source-code aan. Nu komt het denkwerk. Wanneer op de knop wordt gedrukt, dan moeten de getallen in de bovenste 2 tekstvelden worden gelezen. Vervolgens moeten deze 2 getallen worden opgeteld. Tenslotte moet de uitkomst van deze optelling worden getoond in het onderste tekstveld. We noemen deze source-code de ‘event-handler’ van de knop. -4- Informatica DELPHI lesnr.1 1. unit 2. uses 3. type 4. var 5. procedure 1. unit De naam van deze unit (= een gedeelte van een project) is ‘Optellen’. 2. uses Hier staan alle standaard bibliotheken, waar DELPHI gebruik van kan maken. Deze standaardbibliotheken bevatten grote stukken source-code, die al helemaal klaar is. We hebben voor ons optelmachientje lang niet alle standaardbibliotheken nodig. Je -5- Informatica DELPHI lesnr.1 kunt standaardbibliotheken verwijderen (gewoon proberen). Wanneer je overbodige standaardbibliotheken verwijderd, dan neemt de applicatie minder geheugenruimte in beslag. (En wordt dus een stuk sneller!) 3. type Hier staat aangegeven (wordt gedeclareerd) van welk type de verschillende objecten zijn. Getal1Label is van het type TLabel. Ook deze source-code is automatisch aangemaakt. 4. var In dit gedeelte worden alle variabelen gedeclareerd, die gebruikt gaan worden in het programma. (Je kunt ook gebruik maken van de secties ‘private declarations’ en ‘public declarations’, maar dat valt (voorlopig) buiten het bestek van deze lessen.) De variabelen x1, x2 en x3 zijn van het type ‘double’ (= gebroken getal). De variabelen s1, s2 en s3 zijn van het type ‘string’ (= tekst). Deze variabelen moeten we wel zelf invullen. 5. procedure Tenslotte de event-handler van de knop. (DELPHI noemt dat een procedure.) De source-code van de event-handler komt te staan tussen ‘begin’ en ‘end;’. s1 := Getal1Edit.Text; s2 := Getal2Edit.Text; De tekst, die staat in Getal1Edit, wordt opgeslagen in de variabele s1. De tekst, die staat in Getal2Edit, wordt opgeslagen in de variabele s2. x1 := StrToFloat(s1); x2 := StrToFloat(s2); DELPHI beschouwt onze invoer als tekst. We moeten er eerst getallen van maken. Dat gaat met de opdracht ‘StrToFloat’. (Maak van een string een getal met een komma. DELPHI noemt zo’n opdracht een function.) De uitkomst van deze omzetting wordt opgeslagen in de getalvariabelen x1 en x2. x3 := x1 + x2; De inhoud van de variabelen x1 en x2 wordt bij elkaar opgeteld. De uitkomst van deze optelling wordt opgeslagen in de variabele x3. s3 := Float ToStr(x3); In de variabel x3 hebben we een getal opgeslagen. Dit getal moet eerst worden omgezet naar tekst, en opgeslagen in de variabele s3. -6- Informatica DELPHI lesnr.1 UitkomstEdit.Text := s3; In het Uitkomst-tekstveld wordt de inhoud van de variabele s3 getoond. DELPHI BESTANDEN Terwijl je bezig bent met DELPHI, worden er een heleboel verschillende bestanden aangemaakt op je diskette. Begin dus altijd met het aanmaken van een directory, waar je alle bestanden van je project in kunt opbergen. Wanneer je DELPHI start, dan geef je het project een naam: File | Save Project As DELPHI vraagt eerst om de naam van de Unit: Optellen.pas Vervolgens wordt gevraagd om de naam van het project: OptelMachine.dpr (Let op: De naam van de Unit en de naam van het Project moeten verschillend zijn.) Op je werkdiskette worden nu 6 bestanden aangemaakt. Sommige bestanden bevatten de source-code, andere bestanden bevatten informatie over het project. Nadat je de Optelmachine hebt gemaakt, moet je de source-code door de compiler heen halen: Project | Compile Optelmachine Op je werkdiskette wordt nu de toepassing OptelMachine gemaakt. Dit is de applicatie, die je hebt gemaakt. (En kunt verkopen aan eventuele klanten.) (Let op: De Applicatie krijgt dezelfde naam als het project.) SYNTAX opdracht; Alle DELPHI-opdrachten worden afgesloten met een puntkomma. Opmerkingen in je programma worden voorafgegaan door 2 schuine streepjes. ‘Assignment operator’, spreek uit als ‘wordt’. X krijgt de waarde 2. Declaratie als gebroken getal. Declaratie als tekstvariabele. Declaratie als geheel getal. Object . Eigenschap String wordt omgezet naar gebroken getal. String wordt omgezet naar geheel getal. Gebroken getal wordt omgezet naar string. Geheel getal wordt omgezet naar string. // opmerkingen van de programmeur X := 2 X : double S : string N : int Getal1Edit . Text X := StrToFloat(S) N := StrToInt(S) S := FloatToStr(X) S := IntToStr(N) -7- Informatica DELPHI lesnr.1 OPDRACHTEN Opdracht 1 Open het voorbeeldproject OptelMachine, dat op je diskette staat. Bekijk de source-code. Breng een fout aan. (Verwijder bijvoorbeeld een ;) Compileer het project en bestudeer de foutmelding, die de compiler geeft. Herstel de fout. Compileer opnieuw. Test de applicatie, die je hebt gemaakt. Opdracht 2 Productomschrijving: Bouw een DELPHI-applicatie met de naam Rekenmachine, waarmee 2 getallen kunnen worden opgeteld, afgetrokken, vermenigvuldigd en gedeeld. Ook moeten alle tekstvelden kunnen worden leeggemaakt. (Resetten.) Gebruikersinterface: Ontwerp een GUI, die bestaat uit 3 labels, 3 tekstvelden en 5 knoppen. De achtergrondkleur van de GUI is geel. De afmetingen van de GUI zijn 425 x 235 pixels. (Hinten: Wanneer je de eigenschap ‘ReadOnly’ van het object UitkomstEdit instelt op ‘True’, dan is het veld niet toegankelijk. Wanneer je de eigenschap ‘MaxLength’van de objecten Getal1Edit en de Getal2Edit instelt op bijv. 10, dan kan er een getal van maximaal 10 characters worden ingevoerd.) -8-