# forelesning_02.py versjon 26. januar 2026 kl. 15.35 # Prøvekjør gjerne setningene før forelesningen. Noen setninger kan gi feilmelding. # Disse fjernes enklest ved å «kommentere dem vekk» a = 4 > 7 # False b = ( 6 + 2 ) * 100 bb = 6 + 2 * 100 # 100*2 + 6 c = b / 3 d = "*" * 30 + " = " + 30 * '*' e = "450" f = b < 1001 # g = b < "abc" g = a and b > 78 # Hver linje over er en programsetning # alle programsetningene ovenfor er tilordninger # høyresiden av =-tegnet er uttrykk som evaluerer til én verdi # uttrykkene består av konstante verdier (litteraler), # variable med verdier og operatorer + - * / (aritmetiske) < > == >= <= (sammenlignings) print("Verdiene er:", a, b + 1, bb, c, d, e, f, g) # Hele linja over er en programsetning. # print er en (biblioteks)funksjon. # Mellom ()-ene finner vi argumentene adskilt med , # Her har print 9 argumenter. # Hvert argument er et uttrykk. # Uttrykk som er høyresiden i en tilordning kan også # være argumenter til funksjoner og omvendt. # Vi lærte forrige gang 3 forskellige programsetninger: # 1. Funksjonskall med null, null (eller flere) uttrykk som argument (print(), input(), int()) # Noen funksjoner (input(), int()) kan også returnere en verdi som kan inngå i uttrykk # 2. Tilordningssetning med variabeldefinisjon på venstresiden # og et uttrykk på høyresiden av tilordningsoperatoren (=) # 3. if-elif-else-setningen med et logisk uttrykk etter if og elif # Uttrykk fant vi 3 steder: # Høyresiden i tilordning # Som argumenter (adskilt med ,) til prosedyrer/funksjoner # logiske uttrykk (True eller False) etter if og elif # Uttrykk reduseres/evalueres/beregnes til én verdi av en bestemt type. # Vi så 4 typer sist gang: # tekst (str) "Hei " + "du!" # heltall (int) 3 + 9 # logisk (bool) 7 == 8 # flyttall (float) 7 / 2 ''' Målet for i dag • Forstå nøyaktig hva som skjer i programmer av typen vi skrev forrige uke • Hvordan (i hvilken rekkefølge) operasjoner helt detaljert utføres på én enkelt linje • Hvordan et program flyter fra linje til linje • Hvilke feil som kan oppstå ved kjøring, og hva feilene betyr • Denne ukens intense flikking baner vei fremover • Å spikre det fundamentale og etablere presis tenkemåte vil gi dere grunnlag for å effektivt lære det som kommer fremover ''' ''' Plan for dagen •Hvordan én enkelt linje utføres: •Datatyper •Evaluering av uttrykk og funksjoner •Hvordan et helt program utføres: •Kodeflyt fra linje til linje •Prosedyrer •Sjekke antagelser og tolke feilmeldinger ''' a = int("75"*2 + "1") # argumentet til int-funksjonen er et uttrykk som evaluerer til en tekststreng (str): print("Verdien til a er", a, "75"*2 + "1") # Kontrollflyt, vi ser litt mer på koden fra sist gang: # Vi kan ha så mange elif som vi ønsker, men kun én if og kun én else heltall = 4 # if kan stå alene if heltall > -4 : print("x") heltall = 10 # if - elif kan stå uten else: if heltall < -4 : print("x") elif heltall > 7 : print("y") # if - else kan stå uten elif: if heltall < -4 : print("x") else: print("æ") # men elif og else må alltid ha en if først. # Rekkefølgen er alltid én if, 0 eller flere elif, 0 eller én else if heltall < -4 : print("x") print("Variabelen heltall har en heltallsverdi som er mindre enn -4") elif heltall > 7 : print("Variabelen heltall har en heltallsverdi som er større enn 7") print("y") tall = heltall elif heltall < 7 : print("z") print("Variabelen heltall har en heltallsverdi som er større enn 7") tall = heltall + 1 else: print("æ") print(tall) # Hvis ingen av setningsblokkene som definerer tall utføres, # vil tall være udefinert og print-setningen ovenfor vil gi feilmelding p.g.a. # feil i uttrykket som er argument til print. Et utrykk vil også feile # i en tilordning hvis et ikke er definert: # verdi = "Hei" + udefinert #. TILBAKE HIT alder = int( input("Skriv et heltall mindre enn 100: ") ) # Argumentet til input er tekstkonstanten "Skriv et heltall mindre enn 100: " # Uttrykket som er argumentet til int er teksten (str) som input-kallet # evalueres til (teksten brukeren skriver) og som input returnerer # Selv ganske enkle sammenligningsuttrykk kan kreve litt tid for å være sikker på hva som skjer: betalerHalvPris = alder < 18 or alder > 66 # True hvis alder == 0, 1, 2, ... 17, 67, 68, ..., 99 betalerFullPris = 17 < alder < 67 # alder > 17 and alder < 67 # True hvis alder = 18, 19, ..., 65, 66 betalerOgsåFullPris = not betalerHalvPris # Operandene (leddene) som inngår i uttrykket må også være av samme type: tall = 5 tekst = "Hallo du!" logisk_verdi = True or False verdi = tall + 6 verdi = tekst + "6" verdi = tekst + 6 verdi = "7" + tall verdi = tall > tekst verdi = logisk_verdi and 7 > 2 verdi = logisk_verdi > tekst # Vi kan sjekke typen til et uttrykk med biblioteksfunksjonen type tall = 5 tekst = "Hallo du!" logisk_verdi = True or False verdi = tall + 6 print("Variabelen 'verdi' har nå datatypen:", type(verdi)) verdi = tekst + "6" print("Variabelen 'verdi' har nå datatypen:", type(verdi)) verdi = tekst + 6 print("Variabelen 'verdi' har nå datatypen:", type(verdi)) verdi = "7" + tall print("Variabelen 'verdi' har nå datatypen:", type(verdi)) verdi = tall > tekst print("Variabelen 'verdi' har nå datatypen:", type(verdi)) verdi = logisk_verdi and 7 > 2 or "ABC" < "abc" print("Variabelen 'verdi' har nå datatypen:", type(verdi)) verdi = logisk_verdi > tekst print("Variabelen 'verdi' har nå datatypen:", type(verdi)) # nøstede beslutninger: tall = input("Skriv et tall større enn 0 med maks 3 siffer: ") tall = int(tall) if tall > 0: print("Tallet er større enn 0 ...") if tall < 1000: print("... og har ikke mer enn 3 siffer, så alt ok") elif tall < 10000: print("... men har 4 siffer, ett siffer for mye") elif tall < 100000: print("... men har 5 siffer, to siffer for mye") elif tall < 1000000: print("... men har 6 siffer, tre siffer for mye") elif tall < 10000000: print("... men har 7 siffer, fire siffer for mye") else: print("... men har alt for mange siffer!") elif tall < 0: print("Negativt tall ikke tillatt!") else: print("Tallet kan ikke være lik 0!") print("Dette skrives alltid ut, den nøstede if-setningen er slutt") # Vi fortsetter med samme verdi i variabelen tall if tall < 100: # Her starter if-selif-else setningen ... print("Tallet har maks 2 sifre, og tallet ...") if tall > 90: print("... har verdi mellom 90 og 100 (91 – 99)") elif tall > 80: print("... har verdi mellom 80 og 90 (81 – 89)") elif tall > 70: print("... har verdi mellom 70 og 80 (71 – 79)") elif tall < 10: print(" det har faktisk akkurat ett siffer") elif tall < 1000: print("tallet har akkurat tre sifre") if tall != 999: print("tallet kan faktisk være noe større") else: print("tallet har for mange siffer") # ... og her er if-setningen slutt print("Dette skrives alltid ut, den nøstede if-setningen er slutt") # Oppgave: Hvor mange if-setninger erndet i eksemplet over? # Vanskelig(?): Hvilke verdier vil gi flest linjer? # Kontrollflyt ved prosedyrekall (funksjonskall) svar = input( input("Hvilket spørsmål vil du stille? ") ) print("Du svarte " + svar + " på spørsmålet.") # Dette er det samme, men mye vanskeligere å skjønne print("Du svarte " + input( input("Hvilket spørsmål vil du stille? ") ) + " på spørsmålet.") # Kall på prosedyrer og funksjoner def skriv_stjernelinje_med_80_stjerner(): print('*' * 80) skriv_stjernelinje_med_80_stjerner() print(30 * ' ' + "Her er noe du må lese!") skriv_stjernelinje_med_80_stjerner def hilsen(): print("Heisann") print("Du ser flott ut i dag") print("Det var alt jeg hadde å si!") def hadet(): print("Takk for i dag") print("Jeg hadde det veldig bra sammen med deg") hilsen() hadet() def giBeskjed(): print("Jeg sier dette bare en gang!") def kallVidere(): print("Her kommer det") giBeskjed() print("Og en gang til") giBeskjed() print("Det var ikke mye") print("Hei, jeg vil si deg noe") kallVidere() print("Fikk du det likevel med deg?") # Så langt kom vi 26. januar tekst = ''' Konklusjon • Programsetninger består av uttrykk som evaluerer til verdier ifølge helt presise regler • En verdi er alltid av én bestemt datatype, f.eks. heltall, flyttall, tekst eller boolsk verdi • Kodeflyt er presist definert etter enkle regler (for påfølgende linjer, beslutninger, prosedyrer osv) ''' print(tekst) 5 "mandag" 3 + 4 "Hei" + "du"