Weblessen.nl - Voor iedereen die wat wil leren..


REXX

Index
REXX Index
Voorwoord
De eerste stap
Een inleiding tot REXX
Programma besturing
Toekennen en Logisch vergelijken
Functies en Variabelen
Strings en Tabellen
Parsing
Standaard Invoer / Uitvoer
Bestands Invoer / Uitvoer
Structuren
Karaktermanipulatie

Appendix
Naamgeving
Voorbeeldprogramma's
Totaal programma
Scherm-/bestandsbeschrijvingen Een FTP client voor Windows95/98

Structuren

 

Een beschrijving van de structuur

Een structuur is een door de gebruiker zelf gedefinieerd datatype. Je hebt als programmeur de mogelijkheid een datatype te definiëren dat aanmerkelijk complexer is als de datatypes die we tot nu toe in de cursus gebruikt hebben. Een structuur is opgebouwd uit variabelen van datatypes die eerder werden gedefinieerd. Anders gezegd, een structuur is een groepering van aan elkaar gerelateerde gegevens. Structuren kunnen het leven van de programmeur bijzonder veraangenamen. Laten we eens naar een voorbeeld gaan kijken. Bestudeer daarom het programma STRUCT1.rex. /* REXX */ ROW = 1 /* definitie structuur element */ COLUMN = 2 LENGTH = 3 VELD.1.ROW = 6 VELD.1.COLUMN = 12 VELD.1.LENGTH = 20 VELD.2.LENGTH = 32 VELD.2.COLUMN = 12 VELD.2.ROW = VELD.1.ROW + 2 Say 'VELD 1 staat op rij 'VELD.1.ROW', kolom 'VELD.1.COLUMN, 'en is 'VELD.1.LENGTH' tekens lang' Say 'VELD 2 staat op rij 'VELD.2.ROW', kolom 'VELD.2.COLUMN, 'en is 'VELD.2.LENGTH' tekens lang' Exit 0 Het programma begint met de definitie van een aantal structuur elementen, d.w.z. koppelt een naam aan een structuur nummer. Deze vormen de componenten van de structuur. VELD is nu een variabele bestaande uit drie componenten, ROW, COLUMN en LENGTH. Elk van deze drie componenten zijn gerelateerd aan VELD en kunnen gegevens opslaan afhankelijk van hun type. Van de variabele VELD zijn meerdere exemplaren mogelijk. In het voorbeeld is voor twee exemplaren gekozen. Er is gekozen om het exemplaar nummer op nivo twee te zetten en de structuur element op nivo drie.

Laten we eens wat nauwkeuriger naar de variabele VELD.1 kijken. De drie componenten waaruit deze structuur is opgebouwd, zijn alle integers en kunnen in principe overal toegepast worden in een REXX programma waar een gewone integer gebruikt mag worden. Je kunt er dus mee rekenen, afdrukken, in- of uitvoeren, enz. Het probleem is nu hoe een component van een structuur (ook wel structuur member genoemd) aan te wijzen in een programma. We doen dit door beide namen te gebruiken, dat wil zeggen structuur naam plus component naam met een puntje ertussen. Dus VELD.1.LENGTH is de naam van de variabele die de lengte component van het eerste veld aanwijst. Het is niet toegestaan aan de component naam alleen te refereren, omdat de interpreter dan niet kan bepalen om welke component het gaat.

Het programma kent vervolgens aan elk van de drie componenten van VELD.1 een waarde toe. De componenten van VELD.2 krijgen in omgekeerde volgorde een waarde, om aan te tonen dat de volgorde waarin structuur members een waarde krijgen niet relevant is.

Nu alle variabelen een waarde hebben, kunnen we er iets mee doen. Om het eerste voorbeeld eenvoudig te houden, werd alleen met de rij van het tweede veld een berekening uitgevoerd en worden de variabelen slechts gebruikt om af te drukken. Het Say statement vertoont geen echte bijzonderheden. De samengestelde naam van de variabelen wordt gebruikt, omdat dit de enige geldige manier is om ze aan te wijzen.

Structuren zijn bijzonder handig om gegevens te structureren en maken het je makkelijker om programma's te schrijven en te begrijpen. Dit eerste voorbeeld is te eenvoudig om je de kracht ervan te laten zien. De volgende voorbeelden zullen je al wat meer inzicht geven en zijn een goede basis om het Totaal Programma te doorgronden.

Compileer en test het programma.


Een tabel van structuren

Bestudeer het programma STRUCT2.rex. Dit programma bevat dezelfde structuur als het vorige, echter deze keer declareren we 8 velden in de vorm van een tabel. Dit programma bevat dus 8 maal 3 is 24 variabelen, die alle een integer waarde kunnen bevatten. Tevens wordt een lus variabele gedeclareerd, om via een iteratie de structuur te vullen. /* REXX */ ROW = 1 /* definitie structuur element */ COLUMN = 2 LENGTH = 3 Do i=1 To 8 VELD.i.ROW = i + 4 VELD.i.COLUMN = 12 VELD.i.LENGTH = 20 End Do i=1 To 8 Say 'VELD 'i': ', 'rij 'Right(VELD.i.ROW,2)', ', 'kolom 'Right(VELD.i.COLUMN,2)', ', 'lengte 'Right(VELD.i.LENGTH,2) End Exit 0 De for lus wordt 8 keer doorlopen en in elke stap van de iteratie wordt aan de drie componenten van een veld een waarde toegekend. Op deze manier kan de interne administratie van het Yahtzee spel georganiseerd worden. Hier wordt geadministreerd op welke regel en welke kolom van het scherm een veld begint en wat de maximale lengte is.

In de volgende drie statements wordt aan sommige lengte componenten een andere waarde gegeven. Dit is om te laten zien hoe dat moet. In REXX is het niet mogelijk een structuur via een toekenning te vullen vanuit een andere structuur.

Tenslotte worden alle gegenereerde waarden middels een iteratie afgedrukt. Compileer en test dit programma.


Een voorbeeld programma

Bestudeer nu het programma ZEGTYD.rex. Dit programma bevat heel veel elementen van hetgeen je tot op heden hebt bestudeerd. Alle onderwerpen in een klein programma. De bedoeling van het programma is dat het de systeemtijd afdrukt als ware het gesproken tekst. Een conversie van numeriek naar uitgesproken tekst als het ware. Laten we er maar eens naar kijken. /* REXX */ W = 'twaalf een twee drie vier vijf zes zeven', 'acht negen tien elf twaalf dertien veertien' Parse Value Time() With HH ':' MM ':' . HH = HH + 1 Call CharOut,'Het is ' Select When (MM < 1) Then Call CharOut,'precies 'Word(W,HH//12)' uur' When (MM < 2) Then Call CharOut,'een minuut over 'Word(W,HH//12) When (MM < 15) Then Call CharOut,Word(W,MM+1)' minuten over 'Word(W,HH//12) When (MM < 16) Then Call CharOut,'kwart over 'Word(W,HH//12) When (MM < 29) Then Call CharOut,Word(W,31-MM)' minuten voor half 'Word(W,HH//12+1) When (MM < 30) Then Call CharOut,'een minuut voor half 'Word(W,HH//12+1) When (MM < 31) Then Call CharOut,'half 'Word(W,HH//12+1) When (MM < 32) Then Call CharOut,'een minuut over half 'Word(W,HH//12+1) When (MM < 45) Then Call CharOut,Word(W,MM-29)' minuten over half 'Word(W,HH//12+1) When (MM < 46) Then Call CharOut,'kwart voor 'Word(W,HH//12+1) When (MM < 59) Then Call CharOut,Word(W,61-MM)' minuten voor 'Word(W,HH//12+1) Otherwise Call CharOut,'een minuut voor 'Word(W,HH//12+1) End Say '...' Exit 0 Er wordt een REXX string-tabel gedeclareerd. De strings zijn de woorden van de uren. De subscript op de tabel komt overeen met het uur of de minuut; het element komt overeen met het uur of de minuut plus 1. Uur nul is uur twaalf is element 1 is subscript 1. Minuut veertien is element 15 is subscript 15.

In het hoofdprogramma volgt de declaratie van twee integer hulpvariabelen HH en MM, voor respectievelijk de uren en minuten.

Middels functie Time() wordt de systeemtijd opgehaald. Van deze tijd hebben we alleen uur en minuut nodig. Middels de Parse Value instructie worden die onderdelen eruit gehaald.

De wijzerplaat wordt nu in een aantal specifieke delen geknipt en van elk deel de uitspraak bepaald. Een Select statement zou hier op zijn plaats zijn, en is dus ook toegepast.

De variabele W is gebruikt als een eendimensionale tabel van strings. Met behulp van de CharOut functie en de Word functie wordt een van toepassing zijnde tekst afgedrukt. Het programma sluit af met het afdrukken van drie puntjes en een NewLine karakter.

Compileer en test dit programma.


Maak van Weblessen.nl uw startpagina!
Plaats Weblessen.nl bij uw favorieten. Neem contact met me op.
Heb je een Hosting?
Geef hier jouw mening over jouw web hosting


One.com
Domein - Hosting- E-mail

(Advertentie)

Webadres.info: Goede domeinnaam kiezen

Gesponsorde links:
Budget Webhosting
Web2host.nl
10eurohost.nl
Denit Hosting Solutions
YourHosting.nl
Starthosting.nl
Eduvision.nl
Educruitment.nl
One.com
Webadres.info


De link top 5:
Gratis Computercursussen
Gratis Leren
WebmasterStartpagina
MijnStartpagina.nu
Gratis Software
Link aanmelden
Alle Partners

Webmasterwoordenboek
A | B | C | D | E | F
G
| H | I | J | K | L | M
N
| O | P | Q | R | S | T
U | V | W | X | Y | Z

Films vanavond op Tv:

De klok:

(advertentie)

HTML leren
PHP cursus
XML lessen
XHTML les
CSS leer
leer C
REXX online
Red Hat Linux cursus

 

 
(Advertentie)