You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

Det meste er likt, men forskjellig...

Det meste av det du kan om programmering med Python er nyttig når du skal lære Java. F.eks. har Java også variabler, tall- og tekstverdier, funksjoner (kalles metoder i Java), og kontrollstrukturer (nøkkelord som styrer programmet) som if, while og for. Samtidig er veldig mange av detaljene i et Java-program forskjellig fra et tilsvarende Python-program. F.eks. så bruker Python : (kolon) etter if og else og innrykk i hver gren, mens Java bruker ( ) rundt if-betingelsen og { } rundt koden i hver gren (hvis en trenger mer enn én setning) og innrykket spiller ingen rolle. Det er også noen mer vesentlige forskjeller, som at Java krever at en deklarerer variabler og hvilken type verdi de kan ha, før de brukes, og generelt har strengere regler for hva slags kode som kan være hvor i en programfil.

Vi skal her gå gjennom de viktigste forskjellene, med utgangspunkt i Python-leksjonen om koding av tekst. Dersom du ikke husker hva det dreide seg om så finner du hele denne leksjonen her: lesson03.pdf

Fra Python til Java

Versjon 1
alphabet = "abcdefghijklmnopqrstuvwxyz"

def encode(letter, secret):
    pos = alphabet.find(letter)
    newpos = (pos + secret)
    if newpos >= 26:
        newpos = newpos - 26
    return alphabet[newpos]

def decode(letter, secret):
    pos = alphabet.find(letter)
    newpos = (pos - secret)
    if newpos < 0:
        newpos = newpos + 26
    return alphabet[newpos]

secret = 17
message = "hello world"
output = ""
for character in message:
    if character in alphabet:
        output = output + encode(character, secret)
    else:
        output = output + character
    print(output)

secret = 17
message = "yvccf nficu"
output = ""
for character in message:
    if character in alphabet:
        output = output + decode(character, secret)
    else:
        output = output + character
    print(output)
Versjon 2
# alphabet-variablen er lagt utenfor funksjonene, slik at den kan brukes av dem alle
alphabet = "abcdefghijklmnopqrstuvwxyz"

def encode(letter, secret):
    pos = alphabet.find(letter)
    newpos = (pos + secret)
    if newpos >= 26:
        newpos = newpos - 26
    return alphabet[newpos]

def decode(letter, secret):
    pos = alphabet.find(letter)
    newpos = (pos - secret)
    if newpos < 0:
        newpos = newpos + 26
    return alphabet[newpos]

# run()-funksjonen samler koden som tidligere lå utenfor funksjonene
def run():
    message = "hello world"
    secret= 17
    output = ""
    for character in message:
        if character in alphabet:
            output = output + encode(character, secret)
        else:
            output = output + character
        print(output)
    message = "yvccf nficu"
    output = ""
    for character in message:
        if character in alphabet:
            output = output + decode(character, secret)
        else:
            output = output + character
        print(output)

# her kalles samlefunksjonen, som vi vil kalle "hovedprogramfunksjonen"
run()

For å gjøre det litt lettere å "oversette" Python-koden til Java, så gjør vi først en liten omstrukturering av Python-koden. Versjon 1 over til venstre er originalkoden fra pdf-filen, mens vi i versjon 2 har samlet (det meste av) koden som ikke allerede er inni en funksjon, i en run()-funksjon. Den eneste koden utenfor funksjonene er 1) variabler som er greit at alle funksjonene bruker og 2) et kall til "hovedprogrammetoden", dvs. funksjonen vi samlet vi samlet koden i.

 

  • No labels