Banner image by Sebastian Niedlich on Flickr, CC BY-NC-SA 2.0
Programmeermethoden NA
Werkcollege 4: Functies en Tweede opgave I
Het vierde werkcollege van het vak Programmeermethoden NA vindt plaats in zaal 302/304, zaal 303, zaal 306/308 en zalen 307 en 309 (de PC-zalen), op dinsdag 27 september 2016, van 11:15 tot 13:00 uur.
Spreek/Vragenuur in zalen 302 ... 309: dinsdag 27 en donderdag 29 september 2016, van circa 15:30 tot 17:00 uur.
Voorbereiding
Als voorkennis wordt bekend verondersteld:- Inhoud colleges tot en met deze week.
- Elementaire kennis over functies. En over de controlestructuren.
Het eigenlijke werkcollege
Maak allereerst een kaal Python-programma, zoiets als:
def main(): pass if __name__ == '__main__': main()Doe achtereenvolgens deze opdrachten (plaats de zelfgeschreven functies in dit programma, en test ze (dus roep ze aan vanuit de main-functie)):
- Schrijf een functie telop (x, y)
die de waardes van x en y optelt
en deze som retourneert.
Dit is dus een uiterst simpele functie die met behulp van een return-value informatie doorgeeft.
Roep de functie aan met telop (11,12), en telop (u,v) (met geschikte variabelen u en v), en gebruik zowel print telop (...) als u = telop (...). - Schrijf een functie plus_en_maal (x, y) die de waardes van x en y optelt en vermenigvuldigt en beide waarden retourneert (met behulp van een tuple). Roep de functie aan met som, product = plus_en_maal (3, 45).
- Schrijf een functie telop_breuken (x1, x2, y1, y2)
die de waardes van de "breuken"
x1/x2 en y1/y2 optelt
in de breuk z1/z2. Vereenvoudigen hoeft niet.
-
Schrijf een functie die x tot de macht y berekent.
Neem aan dat x van type float is en y van type
int. Gebruik geen functies uit math en niet de
ingebouwd operator voor machtsverheffing. Gebruik gewoon een for-loop.
Werkt het ook voor negatieve exponenten?
- Schrijf een functie die bij gegeven geheel getal n de cijfers van n op aparte regels zet, het laatste cijfer eerst. Dus getal 725 levert drie regels, respectievelijk met 5, 2 en 7. En laat de functie meteen het aantal cijfers van het getal uitrekenen (3 in het voorbeeld).
- 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 8.
- 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.
- Tel het aantal karakters in de file. Tel hierbij de regelovergangen (LineFeed: '\n') ook apart.
- Laat alle cijfers uit de file op het beeldscherm afdrukken. (Iets dergelijks is bij de programmeeropgave ook nodig.)
- 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 ...):
lees karakter in while not einde file: 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) lees karakter in
- Dat afdrukken gebeurt toch wel met een functie verwerkgetal (...)?
- 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.
- Begin nu aan de tweede programmeeropgave; zie daartoe het vijfde werkcollege.
- Schrijf een functie upcase (zin), waarbij zin van het type str is, die een nieuwe string retourneert waarbij alle kleine letters zijn omgezet in hoofdletters. Schrijf zelf een test om te bepalen of een karakter een kleine letter is. Voor het omzetten naar hoofdletters, denk aan de ASCII tabel.
- Schrijf een functie die de alfabetisch eerste van twee gegeven kleine letters retourneert.
- Schrijf een functie die aan de gebruiker een getal vraagt,
zeg n, en vervolgens n regels afdrukt op het scherm,
waarbij op de i-de regel de eerste i
i-vouden staan. Een voorbeeld voor n gelijk aan 4:
1
2 4
3 6 9
4 8 12 16 - Schrijf een functie, die bij gegeven positief geheel getal m, maximaal n stappen uit het 3x+1-algoritme doorrekent. De tussenresultaten moeten, als de gebruiker dat wil, op het scherm gezet worden.
- Schrijf een functie die een getal in factoren ontbindt. Bijvoorbeeld: 84=2^2 x 3^1 x 7^1.
Ter voorbereiding op de tweede programmeeropgave ...
Voor verder oefenen ...