programmeren H3 Controlestructuren en Procedures.pdf

Full Transcript

PROGRAMMEREN THEORIE H3: CONTROLESTRUCTUREN / PROCEDURES CONTROLESTRUCTUREN 2 CONTROLESTRUCTUREN Een controlestructuur dient om een logische controle over de volgorde van de programmaregels te krijgen. 3 LOGISCHE SYMBOLEN IN PYTHON Symbolen Betekenis > Groter dan < Kleiner dan == Gelij...

PROGRAMMEREN THEORIE H3: CONTROLESTRUCTUREN / PROCEDURES CONTROLESTRUCTUREN 2 CONTROLESTRUCTUREN Een controlestructuur dient om een logische controle over de volgorde van de programmaregels te krijgen. 3 LOGISCHE SYMBOLEN IN PYTHON Symbolen Betekenis > Groter dan < Kleiner dan == Gelijk aan != Niet gelijk aan >= Groter dan of gelijk aan <= Kleiner dan of gelijk aan 4 LOGISCHE OPERATOREN Er zijn 4 belangrijke logische operatoren. Deze kunnen oneindig gecombineerd worden. • and • or • xor • not 5 AND (WAARHEIDSTABEL) A B Resultaat 0 0 0 1 0 0 0 1 0 1 1 1 6 OR (WAARHEIDSTABEL) A B Resultaat 0 0 0 1 0 1 0 1 1 1 1 1 7 XOR (WAARHEIDSTABEL) A B Resultaat 0 0 0 1 0 1 0 1 1 1 1 0 8 NOT (WAARHEIDSTABEL) A Resultaat 0 1 1 0 9 BELANGRIJKSTE CONTROLE STRUCTUREN De belangrijkste controlestructuren zijn: •IF - THEN - ELSE •Case / switch •Loops •Procedures (functies) 10 IF - THEN - ELSE if age >= 18: uitkomst = ‘you may vote' else: uitkomst = ‘sorry' 11 CASE / SWITCH Stel, je hebt een variabele die het nummer van de dag bijhoudt. Deze kan een waarde hebben tussen 1 en 7, respectievelijk maandag en zondag. Dan zijn er 2 manieren om de conversie van het cijfer naar de dag te doen. 12 MANIER 1 ( ZONDER CASE / SWITCH) In Python: if daynumber == 1: dayname = "monday" elif daynumber == 2: dayname = "tuesday" elif daynumber == 3: dayname = "wednesday" ... elif daynumber == 7: dayname = "sunday" 13 MANIER 2 (MET CASE / SWITCH) Voorbeeld in c# switch (daynumber) { case 1: dayname = "monday"; break; case 2: dayname = "tuesday"; break; ... case 7: dayname = "sunday"; break; } 14 LOOPS Een loop dient als een controlestructuur om een bepaalde opeenvolging van code te herhalen tot aan een bepaalde voorwaarde is voldaan. De positie waar men in de code beslist om de herhaling uit te voeren is bepalend hoeveel keer de code wordt herhaald. Wij maken onderscheid tussen 2 soorten loops § Leading decision loops § Tailing decision loops 15 LEADING DECISION LOOPS Python for number in range(10): statement ; In python is range(10) een iterator met nummers 0,1... 9 16 LEADING DECISION LOOPS MET WHILE while total < 100: statements total = total + 4 17 TAILING DECISION LOOPS Voorbeeld in c# do { Statement; count += 1; } while (count <= 9); 18 NESTING Het is mogelijk om binnen een controlestructuur een andere controlestructuur te gebruiken. Dit proces kan meerdere keren na elkaar gebeuren. Een onderliggende controlestructuur dient wel begrensd te zijn binnen de grenzen van de bovengelegen controlestructuur. 19 VOORBEELD NESTING 9 8 for floor in range(10): for flat in range(5): print_flat_at_positon(floor,flat) 7 6 5 4 3 2 1 0 0 1 2 3 4 20 VOORBEELD NESTING getal1 = 10 getal2 = 20 if getal1 == getal2: print('Ze zijn gelijk') else: if getal1 < getal2: print('Getal 2 is het grootst') else: print('Getal 1 is het grootst') 21 VOORBEELD NESTING Conditie 1 Nested conditie 2 Nested conditie 3 22 VOORBEELD FOUTE NESTING if age < 24: if sex == "male": statement elsif age < 65: elsif sex == "female": Statement 23 VOORBEELD FOUTE NESTING Conditie 1 Nested conditie Conditie 2 24 0-1-ONEINDIG REGEL Als iets 1 keer kan, dan kan het 0 keer en kan het oneindig keer (indien aangegeven) Toepasbaar op alles! Statements Controle structuren Logische operatoren ... Etc 25 TERNARY CONDITIONAL OPERATOR Korte notatie voor if in een expressie: retourneert een waarde afhankelijk van een voorwaarde. Voorbeelden: meerderjarig = True if age >= 18 else False print(“meerderjarig” if age >= 18 else “minderjarig”) absoluut = x if x >= 0 else -x 26 PROCEDURES / FUNCTIES 27 PROCEDURES EN FUNCTIES Een programma kan opgesplitst worden in verschillende kleinere problemen, die elk apart kunnen geprogrammeerd worden. Procedure: een procedure is een controlestructuur die kan opgeroepen worden in een programma. Deze behandelt een specifiek sub-probleem. Functie: een functie is een procedure die een waarde teruggeeft. 28 VOORBEELD FUNCTIE def average(x, y): a=0 a = (x+y) / 2 return a a=3 b=8 c = average(a, b) print(c) 29 VOORBEELD PROCEDURE def do_stuff(x, y): a=0 a=x+y a=3 b=8 do_stuff(a, b) print(a) 30 PROCEDURE IN PYTHON Zelfde syntax als een functie maar geen return statement. Onderliggend wordt de waarde None geretourneerd. 31 PARAMETERS EN ARGUMENTEN def do_stuff(x, y): a=0 a=x+y do_stuff (a, b) x en y zijn parameters: variabelen enkel bruikbaar binnen de scope van de functie a en b zijn argumenten: expressies die doorgegeven worden als waarde voor de parameters a wordt aan x doorgegeven !(wordt bepaad door de volgorde) b wordt aan y doorgegeven !(wordt bepaad door de volgorde) Er wordt een nieuwe a aangemaakt ( in de geheugenstack) 32 PASS BY REFERENCE Naam Adres Type Waarde a OO1 Integer 3 b OO2 Integer 8 x OO3 Reference OO1 y OO4 Reference OO2 a OO5 Integer 11 33 PASS BY VALUE Naam Adres Type Waarde a OO1 Integer 3 b OO2 Integer 8 x OO3 Integer 3 y OO4 Integer 8 a OO5 Integer 11 34 OPTIONELE PARAMETERS (PYTHON) def do_stuff(x, y=2): a=0 a=x+y do_stuff (a) do_stuff (a, b) De tweede parameter is niet verplicht, krijgt een standaardwaarde. Parameters zonder standaardwaarde (verplichte parameters) moeten altijd vóór de parameters met standaardwaarde (optionele parameters) staan. 35 BENOEMDE ARGUMENTEN (PYTHON) def draw_circle(center_x, center_y, radius, color=‘blue’, axis=True, x_label=‘X’, y_label=‘Y’, x_tick=1, y_tick=1, graph_title=None): …. …. draw_circle(0, 0, 1, axis=False) draw_circle(0, 0, 1, graph_title= ‘Cirkel met straal 1’, color=‘red’) draw_circle(0, 0, 1) Handig als er veel optionele parameters zijn. Volgorde van benoemde argumenten is niet van belang. 36 THEORIE: Len Lemeire Hoofdlector EB24 Henleykaai 84, 4G08 [email protected] PRAKTIJK : Els Clarysse : [email protected] Ghent University @ugent Ghent University

Use Quizgecko on...
Browser
Browser