introduktion till programmeringtddd73/python/fo/2013/fo1301.pdf · 2013-09-01 · pythons historik...
TRANSCRIPT
TDDC66 Datorsystem och programmeringFöreläsning 1
Introduktion till programmering
Peter Dalenius
Institutionen för datavetenskap
2013-09-02
Översikt
• Vad är programmering?
• Kursens målsättning och organisation
• Hur använder man progamspråket Python?
3
Vad är ett program och hur programmerar man?
4
Programmering i ett nötskal
program en uppsättning regler eller instruktioner med uppgift att styra en dators beräkningar (Nationalencyklopedin)
5
komponenternaprogramspråket ochdess konstruktioner
processenprinciper för hur man
utformar program
resultatethur program körs ochhur de påverkar folk
Datorns utveckling – en kort historik
6
1940 1950 1960 1970 1980 1990 2000 2010
Stordatorer för industrin60-, 70-talet
Persondatorerför hem och kontor80-, 90-talet
Internet förvanligt folk90-,00-talet
Tidiga datorer,ofta militära40-, 50-talet
Mobilaenheter10-talet
Hur långt kommer vii den här kursen?
7
Några roliga saker vi inte hinner med...
• Hur man designar grafiska gränssnitt
• Hur datorer kommunicerar med varandra över nätverk
• Hur man lagrar information i databaser
• Hur man startar processer för att få saker att hända samtidigt
• Hur man hanterar större programmeringsprojekt
• Hur man gör appar
8
Vi kommer att fokusera på grunderna i programmering och hur man etablerar goda vanor för att bli en bra programmerare.Allt det andra – och mycket mer – kommer längre fram.
Hur passar programmering ini mitt framtida jobb?
9
Svensk industri är beroende av mjukvara...
10
Hur lär man sigatt programmera?
11
Enligt Peter Norvig, forskningschef på Google...
• Bli intresserad av programmering, så att du orkar lägga ner 10000 timmar på träning.
• Skriv många olika program.
• Prata med andra programmerare och läs deras kod.
• Om du vill, läs på universitet.
• Arbeta i projekt tillsammans med andra programmerare.
• Ta över projekt efter andra programmerare.
• Lär dig åtminstone ett halvt dussin olika programmeringsspråk.
12
Peter Norvig (2001) Teach Yourself Programming in Ten Years. http://norvig.com/21-days.html
Varför har vi valtprogramspråket Python?
13
Pythons historik
• Skapades i slutet av 1980-talet av holländaren Guido van Rossum, som fortfarande spelar en stor roll för språkets utveckling.
• Det åttonde mest populära programspråket i världen. [1]
• Version 3.0, som vi kommer använda, kom i december 2008. Det var en ganska stor förändring som inte är bakåtkompatibel.
• Fri programvara.
14
[1] TIOBE Programming Community Index July 2012http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Fördelar med Python
• Lätt att komma igång med.
• Har en stabil användarbas både på universitet och i industrin.
• Funkar bra både för systemprogram och för tillämpningar.
• Neutralt i förhållande till olika programmeringsparadigm.
• Kan användas för att illustrera koncept inom programmering.
15
Målsättning
• Datorsystem
• använda IDA:s datorsystem såpass bra att det inte blir så mycket praktiska problem i framtida programmeringskurser
• Programmering
• konstruera enklare program i Python
• förklara hur program fungerar genom att använda korrekt datavetenskaplig terminologi
16
Upplägg
Aktivitet Tid i HT1 Innehåll
Föreläsningar 24 h Introduktion, översikt, sammanfattning (ligger
alltid steget före)
Lektioner 8 h Genomgångar, förberedelser, exempel,
torrövningar
Laborationer 26 h Arbete med övningar och uppgifter, diskussioner,
redovisningar
Eget arbete 60 h Läsa, öva, experiementera, arbeta med övningar
och uppgifter
17
TDDD73Funktionell och imperativ programmeringi Python
TDDC66 Datorsystem och programmering
Examination
18
Webbaserad datorintroduktionSlutuppgiftProva på-laborationer
Laborationsomgång 1-2
Laborationsomgång 3-7
Datortentamen
UPG1
LAB1
LAB1
DAT1
vecka 35-38
vecka 38-51
Python
Tillåtet och otillåtet samarbete
• Allt arbete med examinerande uppgifter i kursen TDDC66 Datorsystem och programmering ska ske enskilt (förutom i prova på-laborationerna när arbetet sker i par).
• I kursen TDDD73 Funktionell och imperativ programmering i Python (d.v.s. i praktiken från labbomgång 3) kommer ni att arbeta i par som ni själva får välja.
• Vad är enskilt arbete? Var går gränsen för fusk?
• Universitetets disciplinnämnd kan vid fusk stänga av studenter upp till sex månader, vilket innebär att man ej får delta i undervisning och inte får några studiemedel.
19
Kurslitteratur
• John M. Zelle (2010) Python Programming: An Introduction to Computer Science. Second Edition. ISBN 978-1-59028-241-0
• Boken har ett bra pedagogiskt upplägg som ansluter väl till det vi vill göra i kursen.
• Den täcker dock inte allt som vi vill gå igenom, så en del saker kommer enbart att tas upp på föreläsningar.
• Om man skaffar en annan Python-bok, se till att den täcker Python 3!
20
Personal
• Examinator: Peter Dalenius
• Kursadministratör: Anna Grabska Eklund
• Lektions- och laborationsassistenter:
• D1A: Anders Märak Leffler, Hugo Lindholm
• D1B: Peter Larsson Green, Torbjörn Lönnemark
• D1C: Jonas Wallgren, Per Eklund
• U1: Fredrik Heintz, Rickard Andersson
21
Information och kommunikation
• På kurswebben finns all information om kursen man behöver:
http://www.ida.liu.se/~TDDC66
• Laborationsmaterial
• Föreläsningsbilder
• Länk till schema
• Planering och deadlines
• Regler för redovisning och komplettering
• m.m.
22
Hur man startar Python-interpretatorn
23
Hur man använder Python-interpretatorn
24
>>> 2+3
5
>>> 2+4*5-6
16
>>> print("Hello world!")
Hello world!
>>> def greeting():
... print(”Nobody expects the Spanish Inquisition.")
... print(”Our chief weapon is surprise... and fear.")
...
>>> greeting()
Nobody expects the Spanish Inquisition.
Our chief weapon is surprise... and fear.
Hur man använder Python-interpretatorn
25
>>> def skryt(namn):
... print("Det är bra att kunna Python.")
... print(namn, "är jättebra på Python.")
...
>>> skryt("Peter")
Det är bra att kunna Python.
Peter är jättebra på Python.
>>> skryt("Jenny")
Det är bra att kunna Python.
Jenny är jättebra på Python.
>>>>>> skryt
<function skryt at 0x218390>
<built-in function print>
Vårt första Python-program
26
Vad gör programmet?
27
def find_root():
print("This program tries to find the square root of a number.")
x = eval(input("Enter a number: "))
guess = x/2
for i in range(5):
guess = (guess + x/guess)/2
print(guess)
find_root()
1. Skriv ut lite informativ text
2. Läs in en rad från användaren, försök tolka vad som matades in och spara detta i variabeln x
3. Börja gissa att roten ur x är x/2 och spara gissningen i variabeln guess
4. Upprepa de följande raderna 5 gånger
5. Räkna ut en ny bättre gissning och skriv ut den
Newton-Raphsons metod för att räkna ut kvadratroten av ett tal x.
Varför så mycket mellanrum?
28
def find_root():
print("This program tries to find the square root of a number.")
x = eval(input("Enter a number: "))
guess = x/2
for i in range(5):
guess = (guess + x/guess)/2
print(guess)
find_root()
Newton-Raphsons metod för att räkna ut kvadratroten av ett tal x.
Underordnaderader måste skjutas in en bit på raden, indenteras.
Olika sätt att köra vårt program
29
zaza4 <23> zaza4 <23> python3 newton.pyzaza4 <23> python3 newton.py
This program tries to find the square root of a number.
Enter a number:
zaza4 <23> python3 newton.py
This program tries to find the square root of a number.
Enter a number: 2
zaza4 <23> python3 newton.py
This program tries to find the square root of a number.
Enter a number: 2
1.5
1.4166666666666665
1.4142156862745097
1.4142135623746899
1.414213562373095
zaza4 <24>
zaza4 <23> python3 newton.py
This program tries to find the square root of a number.
Enter a number: 2
1.5
1.4166666666666665
1.4142156862745097
1.4142135623746899
1.414213562373095
zaza4 <24> python3
zaza4 <23> python3 newton.py
This program tries to find the square root of a number.
Enter a number: 2
1.5
1.4166666666666665
1.4142156862745097
1.4142135623746899
1.414213562373095
zaza4 <24> python3
Python 3.2.2 (default, Mar 7 2012, 13:44:00)
[GCC 3.4.6] on sunos5
Type "help", "copyright", "credits" or "license" for more
information.
>>>
Hur man använder Python-interpretatorn
30
>>> import newton
This program tries to find the square root of a number.
Enter a number: 2
1.5
1.4166666666666665
1.4142156862745097
1.4142135623746899
1.414213562373095
>>> newton.find_root()
This program tries to find the square root of a number.
Enter a number: 10
3.5
3.178571428571429
3.162319422150883
3.1622776604441363
3.162277660168379
Hur man använder Python-interpretatorn
31
>>> >>> from newton import *>>> from newton import *
This program tries to find the square root of a number.
Enter a number:
>>> from newton import *
This program tries to find the square root of a number.
Enter a number: 3
>>> from newton import *
This program tries to find the square root of a number.
Enter a number: 3
1.75
1.7321428571428572
1.7320508100147274
1.7320508075688772
1.7320508075688772
>>>
>>> from newton import *
This program tries to find the square root of a number.
Enter a number: 3
1.75
1.7321428571428572
1.7320508100147274
1.7320508075688772
1.7320508075688772
>>> find_root()
>>> from newton import *
This program tries to find the square root of a number.
Enter a number: 3
1.75
1.7321428571428572
1.7320508100147274
1.7320508075688772
1.7320508075688772
>>> find_root()
This program tries to find the square root of a number.
Enter a number:
>>> from newton import *
This program tries to find the square root of a number.
Enter a number: 3
1.75
1.7321428571428572
1.7320508100147274
1.7320508075688772
1.7320508075688772
>>> find_root()
This program tries to find the square root of a number.
Enter a number: 5
>>> from newton import *
This program tries to find the square root of a number.
Enter a number: 3
1.75
1.7321428571428572
1.7320508100147274
1.7320508075688772
1.7320508075688772
>>> find_root()
This program tries to find the square root of a number.
Enter a number: 5
2.25
2.236111111111111
2.2360679779158037
2.23606797749979
2.23606797749979
Ordning och reda på programkoden
Programkod organiseras i moduler, och om man inte gör något speciellt kommer varje fil att bli en modul.
import newton
Ladda in modulen (filen) newton. Funktioner i modulen går att anropa med newton.funktionsnamn
from newton import *
Ladda in modulen (filen) newton så att allt som finns i den går att anropa direkt. Detta är bra för våra små program, men blir rörigt när vi kommer lite längre fram.
32
Satser – ryggraden i ett program
• Ett Python-program består av ett antal satser (eng. statements)som utförs i tur och ordning. Än så länge har vi i huvudsak stött på följande typer av satser:
• Enkla satser
• Tilldelning (eng. assignment)
• Funktionsanrop
• Sammansatta satser
• Iteration med for
• Funktionsdefinition
33
Olika typer av satser: Tilldelning
34
def find_root():
print("This program tries to find the square root of a number.")
x = eval(input("Enter a number: "))
guess = x/2
for i in range(5):
guess = (guess + x/guess)/2
print(guess)
find_root()
Hur ser det ut? namn = uttryckVad händer? Uttrycket beräknas och resultatet sparas i den namngivna variabeln.
Olika typer av satser: Funktionsanrop
35
def find_root():
print("This program tries to find the square root of a number.")
x = eval(input("Enter a number: "))
guess = x/2
for i in range(5):
guess = (guess + x/guess)/2
print(guess)
find_root()
Hur ser det ut? funktionsnamn(frivilliga argument)Vad händer? Argumenten skickas till funktionen, underprogrammet, för behandling.
Funktionsanrop som inte är självständiga satser
Olika typer av satser: Iteration med for
36
def find_root():
print("This program tries to find the square root of a number.")
x = eval(input("Enter a number: "))
guess = x/2
for i in range(5):
guess = (guess + x/guess)/2
print(guess)
find_root()
Hur ser det ut? for namn in område: undersatserVad händer? Undersatserna körs så många gånger som området specificerar.
Olika typer av satser: Funktionsdefinitioner
37
def find_root():
print("This program tries to find the square root of a number.")
x = eval(input("Enter a number: "))
guess = x/2
for i in range(5):
guess = (guess + x/guess)/2
print(guess)
find_root()
Hur ser det ut? def funktionsamn(frivilliga argument): undersatserVad händer? Undersatserna sparas för att kunna anropas senare.
Olika typer av satser: Selektion
38
if a > 0:
print(“positivt")
Enkelt val
if a > 0:
print(“positivt")
else:
print(“negativt")
Två alternativ
if 0 <= a < 10:
print("ental")
elif a < 0:
print("negativt")
else:
print("tio eller mer")
Tre eller fler alternativ
Inför första laborationstillfället
• Ta reda på vilken labbgrupp du är med i (se kurswebben).
• Ta reda på när den labbgruppen har sitt första labbtillfälle (se schemat).
• Dyk upp på rätt plats i rätt tid. Våra laborationer brukar börja kvart över. De flesta har sin första laboration i eftermiddag.
39
www.liu.se
Bildkällor:http://en.wikipedia.org/wiki/File:Windows_9X_BSOD.pnghttp://mcsp.wartburg.edu/zelle/python/http://en.wikipedia.org/wiki/File:Eniac.jpghttp://en.wikipedia.org/wiki/File:UnivacII.jpghttp://en.wikipedia.org/wiki/File:IBM_PC_5150.jpghttp://en.wikipedia.org/wiki/File:Acer_Aspire_8920_Gemstone_by_Georgy.JPGhttp://en.wikipedia.org/wiki/File:Htc_Touch_Pro2_Georgy.JPGhttp://en.wikipedia.org/wiki/File:Lego_Color_Bricks.jpghttp://commons.wikimedia.org/wiki/File:Lego_at_Work.jpghttp://www.swedsoft.se/