Programmeren in COBOL/Sequentiële bestanden/Oefeningen: verschil tussen versies
kGeen bewerkingssamenvatting |
|||
Regel 29: | Regel 29: | ||
Commons |
Commons |
||
</pre> |
</pre> |
||
====Opgave 4: een record achteraan toevoegen==== |
|||
Hier gaan we verder op opgave 3. Er komt een wiki bij dus willen we die ook toevoegen aan ons .txt bestand. Maak een programma dat dus een wiki en zijn omschrijving toevoegd aan ons .txt bestand. Dit moet terug gebeuren in een lus. Na het toevoevoegen van een record wordt er aan de gebruiker gevraagd of hij wilt doorgaan, geeft hij 0 dan stopt het programma. |
|||
==Oplossingen== |
==Oplossingen== |
||
===Theorie=== |
===Theorie=== |
||
Regel 179: | Regel 181: | ||
END-PERFORM |
END-PERFORM |
||
CLOSE invoer uitvoer |
CLOSE invoer uitvoer |
||
STOP RUN. |
|||
</pre> |
|||
}} |
|||
====Opgave 4: een record achteraan toevoegen==== |
|||
{{code |
|||
|Taal = COBOL |
|||
|Titel = Opgave 3 |
|||
|Code = |
|||
<pre> |
|||
IDENTIFICATION DIVISION. |
|||
PROGRAM-ID. Opgave4. |
|||
ENVIRONMENT DIVISION. |
|||
INPUT-OUTPUT SECTION. |
|||
FILE-CONTROL. |
|||
SELECT uitvoer ASSIGN to "uitvoer.txt" |
|||
LINE SEQUENTIAL. |
|||
DATA DIVISION. |
|||
FILE SECTION. |
|||
FD uitvoer. |
|||
01 regel. |
|||
02 wikinaam PIC X(11). |
|||
02 PIC X. |
|||
02 omschrijving PIC X(50). |
|||
WORKING-STORAGE SECTION. |
|||
77 invoer PIC 9. |
|||
PROCEDURE DIVISION. |
|||
HOOFD. |
|||
OPEN EXTEND uitvoer |
|||
PERFORM UNTIL invoer = 0 |
|||
DISPLAY "Geef de naam van de wiki:" |
|||
ACCEPT wikinaam NO BEEP |
|||
DISPLAY "Geef de omschrijving van de wiki:" |
|||
ACCEPT omschrijving NO BEEP |
|||
WRITE regel END-WRITE |
|||
DISPLAY "Wilt u nog een gebruiker toevoegen(0=stoppen)?" |
|||
ACCEPT invoer NO BEEP |
|||
END-PERFORM |
|||
CLOSE uitvoer |
|||
STOP RUN. |
STOP RUN. |
||
</pre> |
</pre> |
Versie van 21 okt 2007 19:44
Dit zijn oefeningen voor het hoofdstuk sequentiële bestanden. De opgaven zijn opgedeeld in theorie en praktijk. De opgaven komen als eerst en vanonder zijn de oplossingen. Let wel dat er meerdere mogelijke oplossingen zijn voor een opgave, zeker naarmate het moeilijker wordt.
Opgaven
Theorie
Praktijk
Opgave 1: een sequentiële bestand schrijven
Maak een programma waarbij de gebruiker de gegevens van een persoon moet ingeven. De voor-, achternaam, het adres en de gemeente moeten apart opgeven worden en vervolgens weggeschreven in een .txt bestand. Het inlezen en wegschrijven moet gebeuren in een lus. Telkens wanneer er een persoon is weggeschreven wordt de gebruiker gevraagd of hij nog een persoon wilt toevoegen. Als hij 0 ingeeft betekent dat neen als hij iets anders ingeeft betekent dat ja.
Opgave 2: een sequentiële bestand lezen
Een .txt bestand bevat allerlei records. Ieder record bevat een getal van maximaal 2 tekens lang. Tel alle getallen op en bereken daarvan het gemiddelde. Let op! de eerste 5 tekens van ieder record bevat overbodige informatie dus daarmee hoef je niks te doen.
14 26 36 01 12 15
Opgave 3: een sequentiële bestand lezen en schrijven
Lees het volgende .txt bestand in die namen van wiki's bevat en laat de gebruiker een omschrijvingen geven per wiki. De namen en omschrijvingen moeten vervolgens weggeschreven worden in een ander bestand.
Wikipedia Wiktionary Wikimedia Wikiquote Wikibooks Wikinews Wikisource Wikispecies Commons
Opgave 4: een record achteraan toevoegen
Hier gaan we verder op opgave 3. Er komt een wiki bij dus willen we die ook toevoegen aan ons .txt bestand. Maak een programma dat dus een wiki en zijn omschrijving toevoegd aan ons .txt bestand. Dit moet terug gebeuren in een lus. Na het toevoevoegen van een record wordt er aan de gebruiker gevraagd of hij wilt doorgaan, geeft hij 0 dan stopt het programma.
Oplossingen
Theorie
Praktijk
Opgave 1: een sequentiële bestand schrijven
COBOL-code: Opgave 1
IDENTIFICATION DIVISION. PROGRAM-ID. Opgave1. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT uitvoer ASSIGN to "uitvoer.txt" LINE SEQUENTIAL. DATA DIVISION. FILE SECTION. FD uitvoer. 01 regel. 02 voornaam PIC X(15). 02 PIC X. 02 achternaam PIC X(20). 02 PIC X. 02 adres PIC X(20). 02 PIC X. 02 gemeente PIC X(10). WORKING-STORAGE SECTION. 77 invoer PIC 9. PROCEDURE DIVISION. HOOFD. OPEN OUTPUT uitvoer PERFORM UNTIL invoer = 0 DISPLAY "Geef de voornaam:" ACCEPT voornaam NO BEEP DISPLAY "Geef de achternaam:" ACCEPT achternaam NO BEEP DISPLAY "Geef het adres:" ACCEPT adres NO BEEP DISPLAY "Geef de gemeente:" ACCEPT gemeente NO BEEP WRITE regel END-WRITE DISPLAY "Wilt u nog een gebruiker toevoegen(0=stoppen)?" ACCEPT invoer NO BEEP END-PERFORM CLOSE uitvoer STOP RUN.
Opgave 2: een sequentiële bestand lezen
COBOL-code: Opgave 2
IDENTIFICATION DIVISION. PROGRAM-ID. Opgave2. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT invoer ASSIGN TO "getallen.txt" LINE SEQUENTIAL. DATA DIVISION. FILE SECTION. FD invoer. 01 regelin. 02 PIC x(5). 02 getal PIC 99. WORKING-STORAGE SECTION. 77 PIC X. 88 eof VALUE "J". 77 teller PIC 999. 77 som PIC 999. 77 uitkomst PIC 999. PROCEDURE DIVISION. HOOFD. OPEN INPUT invoer READ invoer AT END SET eof TO TRUE END-READ PERFORM UNTIL eof ADD getal TO som ADD 1 TO teller READ invoer AT END SET eof TO TRUE END-READ END-PERFORM DIVIDE som BY teller GIVING uitkomst DISPLAY "Het gemiddelde bedraagt: " uitkomst CLOSE invoer STOP RUN.
Normaal moet je dan als uitkomst 17 krijgen.
Opgave 3: een sequentiële bestand lezen en schrijven
COBOL-code: Opgave 3
IDENTIFICATION DIVISION. PROGRAM-ID. Opgave3. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT invoer ASSIGN TO "invoer.txt" LINE SEQUENTIAL. SELECT uitvoer ASSIGN TO "uitvoer.txt" LINE SEQUENTIAL. DATA DIVISION. FILE SECTION. FD invoer. 01 regelin. 02 naamin PIC X(11). FD uitvoer. 01 regeluit. 02 naamuit PIC X(11). 02 PIC X. 02 omschrijving PIC X(50). WORKING-STORAGE SECTION. 77 PIC X. 88 eof VALUE "J". PROCEDURE DIVISION. HOOFD. OPEN INPUT invoer OUTPUT uitvoer PERFORM UNTIL eof READ invoer AT END SET eof TO TRUE END-READ IF eof THEN DISPLAY "Programma afgelopen" ELSE DISPLAY "Dit is de naam van de wiki: " naamin DISPLAY "Geef een omschrijving:" ACCEPT omschrijving NO BEEP MOVE naamin TO naamuit WRITE regeluit END-WRITE END-IF END-PERFORM CLOSE invoer uitvoer STOP RUN.
Opgave 4: een record achteraan toevoegen
COBOL-code: Opgave 3
IDENTIFICATION DIVISION. PROGRAM-ID. Opgave4. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT uitvoer ASSIGN to "uitvoer.txt" LINE SEQUENTIAL. DATA DIVISION. FILE SECTION. FD uitvoer. 01 regel. 02 wikinaam PIC X(11). 02 PIC X. 02 omschrijving PIC X(50). WORKING-STORAGE SECTION. 77 invoer PIC 9. PROCEDURE DIVISION. HOOFD. OPEN EXTEND uitvoer PERFORM UNTIL invoer = 0 DISPLAY "Geef de naam van de wiki:" ACCEPT wikinaam NO BEEP DISPLAY "Geef de omschrijving van de wiki:" ACCEPT omschrijving NO BEEP WRITE regel END-WRITE DISPLAY "Wilt u nog een gebruiker toevoegen(0=stoppen)?" ACCEPT invoer NO BEEP END-PERFORM CLOSE uitvoer STOP RUN.