Ga naar inhoud

Scripting Intro S1 — Cheatsheet

Python, algoritmisch denken en PowerShell — 2024–2025


Inhoudstafel


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.

start
  lees invoer
  valideer invoer
  verwerk gegevens
  toon resultaat
stop
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

for number in range(1, 11):
    print(number)

attempts = 0
while attempts < 3:
    attempts += 1

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))
numbers = [3, 1, 4]
numbers.append(2)
numbers.sort()
for number in numbers:
    print(number)

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

[int]$number = Read-Host 'Geef een geheel getal'
[double]$price = Read-Host 'Prijs'

Kernregel voor oplossingen

invoer → typeconversie → validatie → verwerking → duidelijke uitvoer

Test bewust

Een programma dat één normaal voorbeeld verwerkt is niet klaar. Test ook foute types, lege invoer, grenswaarden en herhaalde uitvoering.