# 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 ¨C 99)") elif tall > 80: print("... har verdi mellom 80 og 90 (81 ¨C 89)") elif tall > 70: print("... har verdi mellom 70 og 80 (71 ¨C 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"