This section will present the overview of the basic Java structures and statements, and make a comparison with their usage in Python.

Kjøring av Python - programmer


Små Python- og Java-programmer er egentlig nokså like, og forskjellen er først og fremst logikken knyttet til kjøring av dem. Her skal vi forklare litt nærmere hva som skjer ved kjøring av Python-programmer.

 

Enkelt sagt så utføres Python programmer setning for setning fra toppen av fila og nedover, altså kontrollstrukturen kalt sekvens. En kan godt blande inn forgreininger med if og generelle løkker med while og data-orienterte løkker med for.

En viktig del av å utføre et program, er å håndtere referanser til variabler og funksjoner. Når variabler tilordnes verdier, så noteres variabelnavnet og verdien ned, så de kan refereres til senere. Det samme skjer med funksjonsdefinisjoner: Navnene noteres ned og knyttes til funksjonskoden, slik at de kan kalles lengre ned i programmet. import-setninger utføres ved å kjøre den tilsvarende py-fila (som ikke er så ulik en vanlig Python-fil) og så notere seg navnene på det som importeres.

Notatark med variabler og funksjoner er illustrert under.

print('Hvor gammel er du?')
age = int(input())
daysPrYear = 365

def days(years):
    return years * daysPrYear

print('Du har levd i ' + str(days(age)) + ' dager!')

Når koden utføres så noteres variabler ned. Til høyre vises hvordan "notatarket" utvides ettersom setningene som introduserer nye navn (variabler og funksjoner) utføres. Pilene viser hvilket ark som gjelder på det stedet i koden.

 

 

Et viktig poeng er at når days-funksjonen kalles, så "ser" koden inni alle variablene og funksjonene som er definert så langt, dvs. frem til der funksjonen kalles. Så selv om setningen daysPrYear = 265 ble flyttet til under def days(year): ... så ville det virket, så lenge den ble utført før den ble brukt. Men hva hvis daysPrYear = 265 ble flyttet helt i bunnen? Altså slik:

print('Hvor gammel er du?')
age = int(input())

def days(years):
    return years * daysPrYear

print('Du har levd i ' + str(days(age)) + ' dager!')
daysPrYear = 365

Da ville du fått følgende feilmelding, fordi "notatarket" (illustrert til høyre) ville manglet daysPrYear idet kallet (uthevet med blått) ble utført:

  • No labels