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

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

Programmeermethoden
Werkcollege 2: Eerste opgave I

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

Voorbereiding

Als voorkennis wordt bekend verondersteld:

  • Inhoud van de colleges tot en met het tweede.
  • Hoe start je de interactieve-modus van de Python interpreter (en hoe kom je er weer uit).
  • Hoe edit en executeer je een Python-programma.
  • Doorgelezen: de eerste programmeeropgave.

Het eigenlijke werkcollege

  1. Maak om te oefenen met types zoals vandaag besproken in het hoorcollege de volgende kleine opdrachten in de interactieve Python-interpreter (dus python opstarten in een terminalvenster zonder argumenten):
    • Maak twee variabelen a en b aan met een geheel getal of floating-point getal als initiële waarde. Voer vervolgens een aantal berekeningen uit zoals a + b, a * b, a ** b enzovoort. Probeer ook het resultaat op te vangen in een variabele c. Tip: je kunt met ``pijl omhoog'' terug bij je voorgaande invoeren
    • Wat gebeurt er als a een integer is en b een floating-point getal?
    • Maak een aantal meer variabelen aan en probeer een paar langere expressies: (a + b) * c, (a ** 3 * c) / d.
    • Ga na dat het optellen van een string en een getal niet werkt, maar het vermenigvuldiging van een string en een getal wel. Kun je het resultaat verklaren?
    • (Voor de liefhebber) Probeer ook eens te rekenen met complexe getallen.
    • Maak twee variabelen met floating-point getallen en zet deze met behulp van print en .format netjes op het scherm. Maak het eerste getal 4 vakjes breed met 1 getal achter de komma en het tweede getal 10 vakjes breed met 6 plaatsen achter de komma.
    • Gegeven de string s = "een twee drie vier vijf zes zeven acht". Maak met behulp van de slice notatie (s[x:y]) expressies die de woorden "twee", "vier" en "zeven" isoleren. Voorbeeld: s[:3] isoleert het woord "een".
    • Om de interpreter af te sluiten gebruik je het statement exit().
  2. Maak de eerste programmeeropgave (af). Denk hierbij aan de huisregels. Lees ook de richtlijnen bij programmeeropgaven eens door.
    Tijdens het derde werkcollege kan overigens ook weer aan de eerste programmeeropgave gewerkt worden.
  3. Tip voor gedit-gebruikers: zet bij "Edit-Preferences" "Display line numbers" en "Enable automatic indentation" aan, "Insert spaces instead of tabs" "Tab width" op 4. En rechter kantlijn laten zien (op bijvoorbeeld 80 posities).
    Ook handig: onder "Plugins" kan een "Python Console" plugin worden aangezet. Kies hierna bij het menu "View" voor "bottom panel" en in de onderkant van het scherm verschijnt een interactieve Python interpreter. Hierin kun je regels code snel uitproberen.
  4. Bedenk een goed plan. Welke vragen moet je aan de gebruiker stellen? En in welke volgorde? Welke variabelen zijn nodig om de antwoorden, oftewel de invoer van de gebruiker in op te slaan? Welke variabelen zijn nodig om het rekenwerk te doen? Welke "formule" berekent de leeftijd? (Hint: een variabele leeftijd?) Hoe zou je uit je hoofd de geboortedag bepalen? Wat zijn schrikkeljaren?
  5. Doe eerst het gedeelte met de datum, daarna de rekenvraag en de rest.
  6. Tip: Het UNIX-commando cal levert een kalender, bijvoorbeeld cal 2015 geeft de kalender van 2015. Probeer voor de aardigheid eens cal 1752 (He, september!? En cal 1582).
  7. Maak het programma stapsgewijs. Maak het eerst zo dat de "gewone" gevallen goed gaan, en daarna dat ook niet bestaande maanden en dagen goed worden afgewikkeld (het programma moet dan meteen, via een sys.exit(1), stoppen). Dat is bijvoorbeeld het geval als iemand meteen een kansloos jaartal ingeeft.
  8. Veel gestelde vragen:
    • Mag je strings/arrays/lists gebruiken?
      Eigenlijk niet. Maar voor diegenen die al weten hoe dat werkt, mag het — mits netjes.
    • En functies?
      Idem. Hoeft niet.
    • En while-loops?
      Idem.
  9. Zorg ervoor dat je het verschil tussen het infoblokje en commentaar binnen de Python-code snapt. Euuuh ... wat is een infoblokje?