Computers & progrmmeren { de progrmmeertl Python Theorie : werking vn een computer Exmen : schriftelijk (gesloten oek) Prcticum : de progrmmeertl Python Permnente evlutie Studieegeleiding: docent ssistenten ij de prktijkzittingen: monitort: A Vn Hperen (lokl C205) { B Aerts, A Philips, J Mngelschots en A Vn Hperen Softwre verzmelingen instructies die er voor zorgen dt de hrdwre operties en erekeningen uitvoert Softwre wordt geschreven in een progrmmeertl Zo n progrmmeertl moet een ntl elementen evtten om de processor erekeningen te lten uitvoeren; om informtie efficiënt eschikr te heen in het werkgeheugen; om de communictie te verzekeren met de geruiker vi toetsenord, muis, eeldscherm, ; om grote hoeveelheden gegevens te kunnen lezen vn secundire geheugens en om resultten te kunnen schrijven nr die secundire geheugens voor ltere rdpleging Bsiselementen vn een computer secundir geheugen CD-ROM hrd disk USB-stick tpe computer ox Proleem erekening oplossing de som vn een ntl getllen; een tel met x-wrden en ijhorende functiewrden; een nulpunt vn een functie; de eplde integrl vn een functie tussen twee grenzen; de oplossing vn een stelsel lineire vergelijkingen; in/uitvoer pprtuur scnner toetsenord eeldscherm muis printer
Algoritmes een duidelijke en precieze procedure (een opeenvolging vn goed-gedefinieerde stppen) om een gegeven proleem op te lossen Vooreeld : lgoritme vn Guss : oplossen vn een stelsel lineire vergelijkingen Voor heel veel prolemen estn (nog) geen lgoritmes die het proleem exct oplossen Een procedure die een enderende oplossing genereert Vooreeld : trpeziumregel : het erekenen vn een eplde integrl Deze routines (procedures of functies) worden neergeschreven met ehulp vn instructies De processor voert deze instructies sequentiëel (één n één) uit Een computerprogrmm moet dus (in het lgemeen) zols een tekst gelezen worden: lijn per lijn vn oven nr onder Elke lijn evt een ntl instructies voor de processor Nst een sequentiële uitvoering vn een progrmm is er de mogelijkheid voor een lus : de mogelijkheid om een verzmeling instructies een ntl ml n elkr uit te voeren; keuze : de mogelijkheid om te eslissen welke verzmeling instructies uitgevoerd worden Hiervoor evt een progrmmeertl een ntl specile keywords Progrmm een lgoritme : een precieze eschrijving vn de oplossingsprocdure mr meestl niet door een computer interpreteerr Het lgoritme moet omgezet worden in een progrmm of script: een lijst vn instructies welke door de processor interpreteerr en uitvoerr zijn Een progrmm is geschreven in een progrmmeertl: progrmm compileren nr mchinetl en dn uitvoeren; script interpreteren en uitvoeren Begin instructie 1 instructie 2 instructie 3 instructie i 1 instructie i instructie n Einde Controlestroom Begin instructie 1 while voorwrde instructie 2 instructie 3 instructie 4 instructie 5 instructie n Einde Begin instructie 1 if voorwrde instructie 2 else instructie 3 instructie 4 instructie n Einde Een progrmm kn ook gezien worden ls een verzmeling vn dt en routines om deze dt te verwerken sequentie herhling keuze
Som vn twee getllen 13405 + 9852 heeft een elementire mchine-instructie om optelling uit te voeren Gereedschp: deze rekenkundige expressie leest, interpreteert, uitvoert en het resultt toont Python in interctieve mode: Python 265 ( r265 :79063, Jul 5 2010, 11:46:13) [GCC 450 20100604 [ gcc 4 5 rnch revision 160292]] on linux2 Type help, copyright, cr edits or l ic ens e for more informtion >>> 13405 + 9852 23257 >>> Toekenning: = 13405 13405 : een wrde of een oject een geheel getl : type int type eplt de grootte vn de geheugenplts, dus ereik vn de wrde type eplt welke operties mogelijk zijn op wrden vn type int : +, -, *, /, %, ** : nm vn het oject met ndere woorden n het oject met wrde 13405 wordt de nm toegewezen vnf dn is dit oject onder de nm gekend >>> (chevron): uitnodiging om iets in te tikken (prompt) Interctieve mode Niet lleen ls rekenmchine, mr ook voor korte stukken progrmm >>> = 13405 >>> = 9852 >>> + 23257 >>> 3553 >>> het = teken : toewijzen vn een nm n het oject zo n oject wordt in het centrl geheugen vn de computer gestockeerd het + teken : wrden vn ojecten worden opgeteld Een script versie # som1py: eerste poging 13405 + 9852 commentr : lles wt n een # komt heeft geen etekenis voor de computer voor de (menselijke) lezer vn het progrmm estemd lok : de sttements wt moet uitgevoerd worden sttement : (rekenkundige) expressie tot einde vn de lijn Interprettie en uitvoering: % python som1py Resultt: niets Computer heeft de erekening wel gedn mr het resultt wordt niet getoond
Een zinvolle versie communictie met de geruiker vi toetsenord en eeldscherm vrielen voor willekeurige getllen # som2py: een meer zinvolle poging def min ( ) : invoer = rw input ( Geef getl 1: ) = int ( invoer ) invoer = rw input ( Geef getl 2: ) = int ( invoer ) som = + print som # strtoproep min () % python som2py Geef getl 1: 27 Geef getl 2: 19 46 Vrielen { vn een geheugenplts in vriele : symolische nm met een wrde, dus met type computer ox 34 40 wrde : de inhoud vn zo n geheugenplts nm : om het oject n te duiden 6 som geheugenplts 1 geheugenplts 2 geheugenplts 3 moeilijk leesr # commentr def min(): min() sttement sttement sttement De min functie nm vn een functie: gevolgd door hkjes () en duelpunt : lokstructuur: indenttie vn sttements vn lichm ltste lijn vn het progrmm: oproep vn de functie de uitvoering vn deze functie wordt gestrt Afsprk: elk python script evt minstens de functie min hoofding lichm oproep Type de wrde vn een oject heeft een type grootte geheugenplts : ntl ytes int : cht ytes type int : verzmeling gehele getllen toegelten operties: rekenkundige ewerkingen 34 + 6 --> 40 optelling 34-6 --> 28 ftrekking 34 * 6 --> 204 vermenigvuldiging 34 / 6 --> 5 quotiënt 34 % 6 --> 4 rest 34 ** 6 --> 1544804416 mchtsverheffing
Berekening en toekenning neem de inhoud vn vriele (wrde vn oject) ; neem de inhoud vn vriele (wrde vn oject) ; tel de twee wrden op ; geef het oject met resulttwrde de nm som (vriele) 34 6 + computer ox 34 40 40 som 6 som = + ; nieuwe nm toekenning wrden Inlezen invoer = rw input( Geef getl 1: ) functie nm vn resulterend oject externe 34 Enter 6 Enter toetsenord interne 34 uitnodigende tekst invoer 6 invoer 10 0010 00 0110 Communictie met de geruiker functie rw input met rgument en resultt sttement print met opernds rw input toetsenord print invoer int som eeldscherm en omzetting nr geheel getl invoer vn toetsenord invoer = rw input( Geef getl 1 ) omzetting nr geheel getl = int(invoer) uitvoer nr eeldscherm print som som print, +,, >, som Resultt tonen tekstelementen uitvoer 10 0010 00 0110 10 1000 interne 34 + 6 > 40 eeldscherm wrden vn ojecten (vi nmen) print, print +,, print >, som externe
Omzetting mijl nr kilometer Algoritme: vermenigvuldig het ntl mijl met de fctor 1609 # mijl1kmpy: omzetting vn 10 mijl nr km 2 def min ( ) : mijl = 100 4 km = mijl 1609 print mijl, mijl i s, km, kilometer 6 #strtoproep min () toekenning met wrde 100 : oject is vn type flot mogelijke wrden : reële getllen lgoritme vn Euclides: Berekening vn de grootste gemene deler 1 Noem de twee getllen x en y met x < y 2 Bereken de rest r ij deling vn y door x 3 Vervng y door x, en x door r 4 Herhl stp 2 en 3 totdt r nul is 5 De grootste gemene deler is gelijk n y Vooreeld : ggd(16966, 34017) x y r 16966 34017 85 85 16966 51 51 85 34 34 51 17 17 34 0 0 17 Afstnd in mijl inlezen 1 # mijl2kmpy: omzetting vn mijl nr km def min ( ) : 3 invoer = rw input ( Geef twee fstnden in mijl : ) mijl1, mijl2 = invoer s p l i t () 5 fstnd1 = f l o t ( mijl1 ) fstnd2 = f l o t ( mijl2 ) 7 km = ( fstnd1 fstnd2 ) 1609 print verschil tussen, fstnd1, en, fstnd2, i s, km, kilometer 9 #strtoproep min () split methode : splitsen vn een string in verschillende delen op sis vn spties omzetten vn een string nr een wrde vn type flot : flot functie # ggd py: ereken grootste gemene deler vn twee getllen 2 def min ( ) : invoer = rw input ( Geef eerste getl : ) 4 = int ( invoer ) invoer = rw input ( Geef tweede getl : ) 6 = int ( invoer ) if > : 8 x = y = 10 else : x = 12 y = while x!= 0 : 14 r = y % x y = x 16 x = r print ggd(,,,,, ) i s, y 18 # strtoproep min ()
Controle sttements if sttement : keuze : de vrielen x en y krijgen de getlwrden vn de twee ingelezen getllen zodt x < y while sttement : herhling : een mogelijke Python-vertling vn de Herhl stp in het lgoritme vn Euclides compound of lok sttements : onderdelen ervn zelf sttements indenttie lok weergve leesrheid Verschil tussen lgoritme en progrmm: de test of de rest gelijk is n 0 (reeds voor de eerste resterekening) nodig voor een goede floop vn het progrmm wnneer één vn de ingelezen getllen gelijk is n nul (ggd(0,1) = 1!) Een lgoritme Begrippen Een script (progrmm): interprettie (compiltie) en uitvoering Ojecten: wrden (met type) en symolische nmen (vrielen) min functie : definitie en oproep rekenkundige expressie toekenningssttement Sttement: invoer en conversie functies print sttement Python: zowel interctieve ls script mode Python omgeving Oefeningen: schrijven vn progrmm s (of scripts) en uitvoeren in script mode Interctieve mode: een volledig script uitvoeren mv execfile functie >>> e x e c f i l e ( mijl1km py ) 100 mijl is 1609 kilometer Wt volgt constnten, vrielen, opertoren, expressies controle structuren : keuze en herhling functies, prmeters, rgumenten, terugkeerwrden smengestelde ojecten : rry types : int, long, flot, str smengestelde ojecten : list, tuple, dictionry invoer en uitvoer, estnden overzicht vn de Python tl