Programmering I Tobias Wrigstad tobias@dsv.su.se
Vad är programmering? Lågnivåspråk och högnivåspråk Kompilering och interpretering Variabler Notation för flödesschema (flow chart) Kontrollstrukturer (conditionals, branching) Loopar Trivial input och output Arrayer och selektion Funktioner och rekursion
Assembler
C
Java
Python
Javakod Motsvarande bytekod int x = 1; int y = 20; int z = x + y; iconst_1 istore_1 bipush 20 istore_2 iload_1 iload_2 iadd istore_3
Superviktigt! Nytt i Python 3.0 print är numer en funktion, d.v.s. man måste skriva print( Hej ) eller print(1+2) eller print(alder) print Hej är deprecated Python 2.5 och över gäller fortfarande, men se till att använda samma version om ni jobbar i par!
Superviktigt! Nytt i Python 3.0 raw_input har ändrats till input Med andra ord skriver vi namn = input("skriv in ditt namn: "), istället för namn = raw_input("skriv in ditt namn: ")
Input/ Output Decision Start/Stop Sequence
Vad gör detta program?
Tentan kommer att ha en likvärdig uppgift
Trivial Input och Output i Python Python 2.5 Läs in text med x = raw_input("skriv in något! ") Skriv ut text med print x Python 3.0 Läs in text med x = input("skriv in något! ") Skriv ut text med print(x)
Datatyper I programmering skiljer man normalt mellan olika slags värden, t.ex. Strängar (text) Heltal (1, 2, 3, 4, 5, 6 ) Flyttal (1.00001, 3.14, 234.7283201, 1.0) Booleska värden (True eller False) Listor med flera värden, t.ex. [1,2,3] eller [7, False, "Hej"] Vissa operationer fungerar bara på vissa datatyper, t.ex., är det inte vettigt att göra 1 + "Hej" eller 44 > True eller "Tjoho" - 23
Variabler i Python En variabel är ett namn i programmet som motsvarar en plats i datorns minne Att tilldela (=) till en variabel sparar ett värde på den platsen i minne (och skriver över det gamla värdet) Alla variabler tas bort när en program avslutas Olika programmeringsspråk behandlar variabler på olika sätt
a = 1 # Tilldelar värdet 1 till variabeln a print a # Hämtar värdet ur a och skriver ut det print a + 2 # Hämtar värdet ur a, adderar 2 och skriver ut resultatet print a # a har fortfarande värdet 1 a = 2 print a print a + 2 name = "Tobias" print "Hej", name # skriver ut Hej Tobias på skärmen Python 2.5!
a = 1 # Tilldelar värdet 1 till variabeln a print(a) # Hämtar värdet ur a och skriver ut det print(a + 2) # Hämtar värdet ur a, adderar 2 och skriver ut resultatet print(a) # a har fortfarande värdet 1 a = 2 print(a) print(a + 2) name = "Tobias" print("hej", name) # skriver ut Hej Tobias på skärmen Python 3!
Booleska värden True och False Resultatet av jämförelser (t.ex. < och >) är alltid True eller False Boolesk algebra är ett sätt att utföra operationer på booleska värden and or not
result1 = 3 < 5 print result1 result2 = 5 < 3 print result2 print True and False print True and True print False and True print False and False print 3 < 5 and 5 > 3 Python 2.5! (För Python 3 och uppåt, använd print(result1) etc.) print True or False print True or True print False or True print False or False print 3 < 5 or 5 > 3 print not False print not True
Kontrollstrukturer Styr programmets exekvering med hjälp av villkor om ett villkor är uppfyllt gör si, annars gör så Start/Stop Read this slide You understand it True Go to next slide False
Python 2.5! a = raw_input("mata in ett tal: ") b = raw_input("mata in ett till tal: ") if a < b: print a, "är det minsta talet" else: if b < a: print b, "är det minsta talet" else: print "Talen är lika stora"
Python 3! a = input("mata in ett tal: ") b = input("mata in ett till tal: ") if a < b: print(a, "är det minsta talet") else: if b < a: print(b, "är det minsta talet") else: print("talen är lika stora") (Överkurs för dig som kan programmera: man kan skriva "if a < b: elif a > b: else: " för att slippa nästade if-satser.)
Ekvivalens == == är motsvarigheten till = i matematiken Ex.: 1 == 2 är falskt, men 2 == 2 är sant!=!= är motsvarigheten till i matematiken Ex.: 1!= 2 är sant men 2!= 2 är falskt <> <> är samma som!= Om man skriver = när man menar == får man en bugg som i regel är svår att hitta! (Varför???)
Python 2.5! a = "Tobias" b = "Henrik" if a == "Tobias": print "Intro DV" # print("intro DV") i Python 3 if b == "Henrik": print "ITP" # print("itp") i Python 3
Python 2.5! currentuser = "Tobias" action = "View exam" if action == "View exam": if currentuser!= "Tobias": print "Not allowed" else: print "Fråga 1: Ge ett exempel på en if-sats..."
Python 3! currentuser = "Tobias" action = "View exam" if action == "View exam": if currentuser!= "Tobias": print("not allowed") else: print("fråga 1: Ge ett exempel på en if-sats...")
Loopar En loop är ett kommando som utför en eller flera andra kommandon en eller flera gånger i följd De kommandon som skall utföras kallas för kroppen (the loop body) Python har två loop-konstruktioner while, som utför kroppen så länge ett villkor är sant for, som utför kroppen för varje element i en lista
Python 2.5! # Count down antal = 10 while antal > 0: print antal antal = antal - 1 print "Boom!"
Python 3! # Count down antal = 10 while antal > 0: print(antal) antal = antal - 1 print("boom!")
Python 2.5! # Count down antal = [1,2,3,4,5,6,7,8,9,10] antal.reverse() for el in antal: print el print "Boom!"
Python 3! # Count down antal = [1,2,3,4,5,6,7,8,9,10] antal.reverse() for el in antal: print(el) print("boom!")
Fler fancy exempel på forloopar
Python 2.5! # Count down antal = range(1,11) antal.reverse() for el in antal: print el print "Boom!"
Python 3! # Count down antal = range(1,11) antal.reverse() for el in antal: print(el) print("boom!")
Python 2.5! # Count down antal = range(10,0,-1) for el in antal: print el print "Boom!"
Python 3! # Count down antal = range(10,0,-1) for el in antal: print(el) print("boom!")
Python 2.5! # Count down for el in range(10,0,-1): print el print "Boom!"
Python 3! # Count down for el in range(10,0,-1): print(el) print("boom!")
Python 2.5! # Hej, x from input name = raw_input("skriv in ditt namn: ") print "Hej", name
Python 3! # Hej, x from input name = raw_input("skriv in ditt namn: ") print("hej", name)
Funktioner En funktion är ett sätt att ge ett namn till 1 eller flera rader kod Ett program delas med fördel upp i olika funktioner e ersom det blir lättare att läsa och lättare att ändra i Det är viktigt att ge bra namn till funktioner annars kommer man att förvirra den som använder dem Att använda en funktion i ett program kallas för att anropa den Du kan tänka på ett anrop som att du klistrade in koden från funktionen där anropet sker
Python 2.5! # Defining a function def my_first_function(): print "You have just used my first function" # print( ) i 3.0 my_first_function()
Funktioner med argument En funktion kan ta ett eller flera argument Ett argument är något som skickas till funktionen i samband med att man anropar den Argument är ett sätt att skicka med data till en funktion
Python 2.5! # Defining a function with an argument def my_second_function(argument): print "Du skickade mig en", argument # print( ) i 3.0 my_second_function(4711) # Defining a function with three arguments def my_third_function(a, b, c): print a*b*c my_third_function(10, 5, 3)
Returnera ett värde från en funktion En funktion kan utföra en beräkning och sedan returnera (ung. skicka tillbaka) resultatet till den som anropade den Nyckelordet return kan används för detta Om man skriver return utan att ange ett värde som skickas med så avslutas funktionen där Det är så resultatet från funktionen raw_input (input i Python 3) skickas tillbaka till huvudprogrammet
Python 2.5! # Returning a value def calculation(a,b): return a+b result = calculation(4000, 711) print result # print(result) i Python 3 # Returning a value at different points from a function def return_greatest(a,b): if a < b: return b if a > b: return b return "De är lika stora" result = return_greatest(3, 5) print result # print(result) i Python 3
Python 2.5 & 3 # Playing with lists [] # the empty list [1] # list containing the number 1 [1,3,5,7] # list containing four numbers a = [1,4,3,5] # storing a list in a variable a[0] # == 1 (the element on the first position in the list) a[0:2] # == [1,4] slice out the first two elements a[-1] # == 5 (the element on the last position in the list) a[0:-1] # == [1,4,3] slice out all elements except last
Python 2.5! def print_many_greetings(people): if people!= []: print "Hello", people[0] print_many_greetings(people[1:]) def ask_name(): return raw_input("skriv in ditt namn: ") who = ask_name() names = [] while not who == "": names.append(who) who = ask_name() print_many_greetings(names)
Python 3! def print_many_greetings(people): if people!= []: print("hello", people[0]) print_many_greetings(people[1:]) def ask_name(): return input("skriv in ditt namn: ") who = ask_name() names = [] while not who == "": names.append(who) who = ask_name() print_many_greetings(names)
Att köra ett Pythonprogram Du kan med fördel ta något av exempelprogrammen i dessa bilder och spara som en textfil med filändelsen.py, t.ex., test.py Du kan sedan köra denna fil från kommandoraden med python test.py (Givet att Python är installerat och att du står i samma katalog som test.py)