LIACS >Kristian Rietveld >Courses >Programmeermethoden NA, Najaar 2017
headerimg

Banner image by Sebastian Niedlich on Flickr, CC BY-NC-SA 2.0

Programmeermethoden NA
Werkcollege 5: Op papier I en Tweede opgave II

Het vijfde werkcollege van het vak Programmeermethoden NA vindt plaats in de computerzalen van het Snellius-gebouw op dinsdag 10 oktober 2017, van 11:00 tot 12:45 uur.

Voorbereiding

Als voorkennis wordt bekend verondersteld:
  • Inhoud colleges tot en met deze week.
  • Kennis betreffende het omgaan met files. Zie onder meer het collegedictaat Python, Hoofdstuk 9.

Het eigenlijke werkcollege

Ter voorbereiding op het schriftelijke tentamen, maak de opgaven die hier kunnen worden gedownload op papier. De uitwerking is nu hier te vinden!

Doe nu achtereenvolgens deze opdrachten, die van alles met de tweede programmeeropgave te maken hebben:

  1. Schrijf een programma dat een gegeven (invoer)file, zeg invoer.txt, onveranderd kopieert naar een uitvoerfile, zeg uitvoer.txt. Maak zelf een geschikte invoerfile als testfile. Hint: College dictaat Python, Hoofdstuk 9.
  2. Laat de gebruiker voorlopig nog geen namen van in- en uitvoerfile kiezen. Bij het testen is het namelijk handig niet steeds die namen te hoeven invoeren. En noem je testfiles bijvoorbeeld x, dat scheelt typewerk.
  3. Tel het aantal karakters in de file. Tel hierbij de regelovergangen (LineFeed: '\n') ook apart.
  4. Laat alle cijfers uit de file op het beeldscherm afdrukken. (Iets dergelijks is bij de programmeeropgave ook nodig.)
  5. Print op het beeldscherm de kwadraten van de getallen die in de file voorkomen, één per regel. Pas daartoe het programma subtiel aan!
    Bouw cijfers karakter voor karakter op tot getallen. Tip: als je getal 123 is, en je leest nu een 4 (als karakter!), hoe maak je dan het getal 1234? Gebruik dus een integer die het "huidige" getal bevat, en die meestal gewoon 0 is.
    De ruwe programastructuur is (het kan ook anders ...):
    open file
    for regel in file:
        for karakter in regel:
            if karakter is een cijfer:
                update een en ander
            else:
                print (kwadraat van) getal
                update van alles
            print huidig karakter
            onthoud vorig karakter (altijd handig)
    
  6. Dat afdrukken gebeurt toch wel met een functie verwerkgetal(...)?
  7. Maak geregeld (elk kwartier) een backup van je Python-file, zo nu en dan onder een andere naam! In geval van problemen kun je dan terugzoeken.
  8. Tot nu toe was dit om er een beetje in te komen. Nu de opgave, waarvoor je het bovenstaande grotendeels kunt gebruiken. Verander steeds weinig aan je programma. Voorlopig nog niet doen: filenamen kiezen.
    Maak eerst het ontcijferen zoals wordt omschreven in de opdracht. Neem eerst aan dat er geen cijfers in de originele file staan. Zorg dat het ontcijferen voor eenvoudige voorbeelden gaat werken. Tip: maak ook steeds zelf geschikte testfiles om je programma te testen. Begin met een eenvoudig geval en maak de invoerfile dan steeds ingewikkelder.
  9. Zorg ervoor dat je het bovenstaande 13 oktober af hebt!

  10. =======================================
  11. Al verder werken? Zie het zesde werkcollege.