Pseudokode og flytskjema#
Pseudokode og flytskjema er måter å representere programmer eller rutiner. Disse representasjonsformene er nyttig for å kommunisere på tvers av programmeringsspråk.
Vi skal vi ta utgangspunkt i FizzBuzz
for å lage diagrammer og skrive pseudokode.
FizzBuzz
Lag et program som skriver ut tallene fra og med \(1\) til og med \(100\), men…
… om tallet er delbart på \(3\) skal du skrive ut
Fizz
… om tallet er delbart på \(5\) skal du skrive ut
Buzz
… om tallet er delbart på både \(3\) og \(5\) skal du skrive ut
FizzBuzz
Forslag: FizzBuzz i Python
for a in range(1, 101):
if a % 3 == 0 and a % 5 == 0:
print("FizzBuzz")
elif a % 3 == 0:
print("Fizz")
elif a % 5 == 0:
print("Buzz")
else:
print(a)
Pseudokode#
I pseudokode bruker vi et uformelt språk for å representere en programflyt, men uten å kompilere det til et program som skal kunne kjøre på datamaskinen. Selv om språket er uformelt, så er det nyttig å være enig om hvordan man skriver enkelte ting. Her kommer noe av det språket som brukes på eksamen.
Logiske operatorer#
Logiske operatorer returnerer sannhetsverdier (True
eller False
) for utsagn. Man kan sette sammen flere utsagn med AND
eller OR
.
a LESSER THAN 100
a LESSER THAN 100 OR a EQUAL TO 100
a < 100
a <= 100
Output og input#
I Python tar vi input med input()
og skriver output med print()
.
READ a
a = input()
Man kan også bruke PRINT eller SHOW
DISPLAY "Hello World!"
print("Hello World!")
Operasjoner#
Operasjoner er ting som å sette lik, lese fra input og vise output til bruker.
SET a TO 1
SET ferdig TO False
a = 1
a = False
INCREMENT a
DECREMENT b
a += 1
b -= 1
SET a TO 4
CALL sqrt(a) RETURNING svar
DISPLAY svar
a = 4
svar = sqrt(a)
print(svar)
Flytkontroll (branching)#
Flytkontroll gjør at vi kan styre flyten av programmet. I Python gjør vi det med løkker, if-setninger, klasser og funksjoner.
FOR x IN liste
DISPLAY x
ENDFOR
FOR n IN [1, 2, ..., 100]
DISPLAY n
ENDFOR
for x in liste:
print(x)
for n in range(1, 101):
print(n)
SET n TO 1
WHILE n LESSER THAN 10
DISPLAY n
INCREMENT n
ENDWHILE
n = 1
while n < 10:
print(n)
n += 1
FUNCTION f(x)
RETURN x**2
ENDFUNCTION
def f(x):
return x**2
IF alder GREATER THAN 67
THEN SET pris TO 50
ELSE IF alder LESS THAN 18
THEN SET pris TO 25
ELSE SET pris TO 75
IF kunde_type EQUALS TO "Administrator"
THEN SEQUENCE
DISPLAY "Trykk 1 for å vise passordene"
READ a
IF a EQUALS TO "1"
THEN DISPLAY passord_liste
if alder > 67:
pris = 50
elif alder < 18:
pris = 25
else:
pris = 75
if kunde_type == "Administrator":
a = input("Trykk 1 for å vise passordene")
if a == "1":
print(passord_liste)
Eksempel: FizzBuzz#
Her er et eksempel på hvordan man kan skrive FizzBuzz med pseudokode. Prøv gjerne selv før du åpner eksempelet.
Forslag: FizzBuzz med pseudokode
SET a TO 1
WHILE a LESSER THAN 100 OR a EQUAL TO 100
IF a % 3 EQUALS TO 0 AND a % 5 EQUALS TO 0 THEN DISPLAY "FizzBuzz"
ELSE IF a % 3 EQUALS TO 0 THEN DISPLAY "Fizz"
ELSE IF a % 5 EQUALS TO 0 THEN DISPLAY "Buzz"
ELSE DISPLAY a
INCREMENT a
ENDWHILE
Flytskjema#
Her er et flytskjema som representerer programflyten for FizzBuzz. Flytskjemaet er tegnet i draw.io.
Her er en forklaring på tegnene som brukes.
Diamanter ♦️ brukes for if-setninger
Parallellogrammer brukes for input/output
Bokser brukes for prosesser hvor man endrer på data.
Rundede bokser brukes til start og stopp på programmet.
Sirkelen nede til venstre er bare en måte å rydde litt i tegnene; litt cable management.
Oppgaver#
Oppgave 1 🅰️
Et karaktersystem er som følger:
Måloppnåelse |
Prosent riktig |
---|---|
Høy |
80% - 100% |
Middels |
60% - 79% |
Lav |
0% - 59% |
Du skal lage et program som tar en poengsum
og en maks_poengsum
som input, regner ut prosent riktig, og printer en måloppnåelse basert på tabellen over.
Lag et flytskjema for programmet.
Lag en pseudokode for programmet.
Implementer programmet i Python.