Scripting Intro S1 — Cheatsheet
Python, algoritmisch denken en PowerShell — 2024–2025
Inhoudstafel
- Algoritmes en basisbegrippen
- Variabelen, types en operatoren
- Selectie
- Herhalingen
- Strings en collecties
- Functies
- Bestanden
- Debuggen en foutafhandeling
- PowerShell-basis
Algoritmes en basisbegrippen
Een algoritme is een eindige, ondubbelzinnige reeks stappen die invoer omzet in uitvoer. Bouw eerst de logica met pseudocode of een flowchart en vertaal die daarna naar code.
| Flowchartvorm | Betekenis |
|---|---|
| Ovaal | start/einde |
| Rechthoek | verwerking/toekenning |
| Ruit | beslissing |
| Parallellogram | invoer/uitvoer |
Kleine stappen
Los eerst één geval correct op. Voeg daarna validatie, herhaling en uitzonderingen toe.
Variabelen, types en operatoren
Python
name = input("Naam: ")
age = int(input("Leeftijd: "))
height = float(input("Lengte in meter: "))
active = True
print(f"{name} is {age} jaar")
| Type | Voorbeeld |
|---|---|
int |
42 |
float |
3.14 |
str |
"tekst" |
bool |
True, False |
list |
[1, 2, 3] |
dict |
{"naam": "Ada"} |
input() levert altijd een string. Converteer expliciet wanneer je wilt rekenen.
Operatoren
| Soort | Python | PowerShell |
|---|---|---|
| optellen/aftrekken | +, - |
+, - |
| vermenigvuldigen/delen | *, / |
*, / |
| gehele deling/rest | //, % |
[math]::Floor($a/$b), % |
| gelijk/ongelijk | ==, != |
-eq, -ne |
| vergelijken | <, <=, >, >= |
-lt, -le, -gt, -ge |
| logisch | and, or, not |
-and, -or, -not |
Volgorde: haakjes → machten → vermenigvuldigen/delen → optellen/aftrekken → vergelijkingen → logische operatoren.
Selectie
Python
score = float(input("Score: "))
if score < 0 or score > 10:
print("Ongeldige score")
elif score >= 8.5:
print("A")
elif score >= 7.5:
print("B")
else:
print("C of lager")
Python gebruikt inspringing om blokken te bepalen. De volgorde van voorwaarden telt: test specifieke/hoge grenzen vóór ruimere/lage grenzen.
PowerShell
$weight = [double](Read-Host 'Gewicht')
if ($weight -gt 20) {
'Toeslag van 25 euro'
} elseif ($weight -eq 20) {
'Precies goed'
} else {
'Goede reis!'
}
switch -Wildcard ($department) {
'R&D' { 'Research and development' }
'Sales*' { 'Sales' }
default { $department }
}
Herhalingen
| Constructie | Gebruik |
|---|---|
while |
herhalen zolang voorwaarde waar is; mogelijk nul keer |
do...while |
minstens één keer, herhalen zolang waar |
do...until |
minstens één keer, stoppen zodra waar |
for |
gekend aantal iteraties/teller |
foreach |
elk element van een collectie |
Python
PowerShell
for ($i = 1; $i -le 10; $i++) {
$i
}
foreach ($item in $items) {
$item
}
do {
$number = [int](Read-Host 'Positief getal')
} until ($number -gt 0)
break: verlaat de dichtstbijzijnde lus.continue: slaat de rest van de huidige iteratie over.exit: beëindigt het volledige script/de PowerShell-sessie.
foreach versus ForEach-Object
foreach heeft de collectie vooraf beschikbaar en ondersteunt break. ForEach-Object verwerkt pipeline-objecten zodra ze binnenkomen en is geschikt voor streaming.
Strings en collecties
text = "De Heilige Handgranaat"
print(len(text))
print(text.lower())
print(text[0])
print(text[3:10])
vowels = set()
for char in text.lower():
if char in "aeiou":
vowels.add(char)
print(len(vowels))
Een list is geordend en wijzigbaar; een tuple is geordend en onveranderlijk; een set bewaart unieke waarden; een dictionary koppelt keys aan values.
$names = @('Ada', 'Linus', 'Grace')
$names.Count
$names[0]
$names += 'Guido'
$person = @{ Name = 'Ada'; Age = 36 }
$person.Name
Functies
Functies verdelen een probleem in testbare, herbruikbare onderdelen.
def calculate_bmi(weight, height):
"""Return BMI rounded to two decimals."""
if height <= 0:
raise ValueError("height must be positive")
return round(weight / height ** 2, 2)
bmi = calculate_bmi(75, 1.80)
| Begrip | Betekenis |
|---|---|
| Parameter | naam in de functiedefinitie |
| Argument | concrete waarde bij oproep |
| Returnwaarde | resultaat voor de oproeper |
| Lokale variabele | bestaat binnen de functie |
function Get-Bmi {
param(
[Parameter(Mandatory)] [double]$Weight,
[Parameter(Mandatory)] [double]$Height
)
[math]::Round($Weight / ($Height * $Height), 2)
}
Ontwerpvoorbeeld: sliding puzzle
Splits een groter programma op in verantwoordelijkheden:
make_grid() → rooster en lege positie maken
print_grid() → toestand tonen
check_move() → invoer valideren
apply_move() → toestand wijzigen
check_grid() → winstconditie testen
Dit voorkomt één lange lus waarin invoer, controle, datawijziging en output door elkaar lopen.
Bestanden
with open("data.txt", "r", encoding="utf-8") as file:
for line in file:
print(line.rstrip())
with open("result.txt", "w", encoding="utf-8") as file:
file.write("resultaat\n")
| Modus | Effect |
|---|---|
r |
lezen |
w |
schrijven en overschrijven |
a |
achteraan toevoegen |
x |
nieuw bestand maken; faalt als het bestaat |
with sluit het bestand ook wanneer een fout optreedt.
Voor /etc/passwd-achtige data:
with open("passwd.txt", encoding="utf-8") as file:
for line in file:
fields = line.rstrip().split(":")
username, uid, home, shell = fields[0], fields[2], fields[5], fields[6]
Debuggen en foutafhandeling
Veelvoorkomende fouten:
| Fout | Oorzaak |
|---|---|
SyntaxError |
code is grammaticaal ongeldig |
IndentationError |
foutieve inspringing |
NameError |
onbekende variabelenaam |
TypeError |
bewerking past niet bij type |
ValueError |
conversie/waarde ongeldig |
ZeroDivisionError |
delen door nul |
IndexError |
index buiten collectie |
while True:
try:
divisor = float(input("Deler: "))
result = 10 / divisor
except ValueError:
print("Geef een getal in")
except ZeroDivisionError:
print("Delen door nul kan niet")
else:
print(result)
break
Debug systematisch: reproduceer de fout, lees traceback van onder naar boven, controleer types en tussenwaarden, verklein het probleem en test grensgevallen (0, leeg, negatief, eerste/laatste index).
PowerShell-basis
PowerShell werkt met objecten, niet enkel tekst. Cmdlets volgen meestal Verb-Noun.
Get-Command *Process*
Get-Help Get-Process -Examples
Get-Process | Get-Member
Get-Process |
Where-Object CPU -gt 10 |
Sort-Object CPU -Descending |
Select-Object -First 5 Name, CPU
Variabelen en interpolatie
$name = 'Ada'
$count = 3
"Hallo $name, aantal: $count" # interpolatie
'Hallo $name' # letterlijk
"Resultaat: $($count * 2)" # expressie in string
Invoer veilig converteren
Kernregel voor oplossingen
Test bewust
Een programma dat één normaal voorbeeld verwerkt is niet klaar. Test ook foute types, lege invoer, grenswaarden en herhaalde uitvoering.