Upload
others
View
17
Download
0
Embed Size (px)
Citation preview
L U L E Å T E K N I S K A U N I V E R S I T ETS M D 1 8 0S Y S T E M T E K N I K
INTRODUKTION TILL PROGRAMMERING
Introduktion till programmeringSMD180
1
Föreläsning 1: “Programmets väg”
1
L U L E Å T E K N I S K A U N I V E R S I T ETS M D 1 8 0S Y S T E M T E K N I K
INTRODUKTION TILL PROGRAMMERING
Vad är en dator?
En maskin vars beteende styrs av de bitmönster som finns lagrade i datorns minne(inte helt olikt förra seklets självspelande pianon!)
Att programmera en dator handlar alltså om att lägga in önskade bitmönster i datorns minne...
Problemet är bara att människor har väldigt svårt att tänka i termer av bitmönster(jämför att spela piano genom att stansa hålrullar)
Lyckligtvis kan vi ta hjälp av andra program när vi programmerar!
2
2
L U L E Å T E K N I S K A U N I V E R S I T ETS M D 1 8 0S Y S T E M T E K N I K
INTRODUKTION TILL PROGRAMMERING
Interpretering
3
2 The way of the program
languages.” Loosely speaking, computers can only execute programs written inlow-level languages. Thus, programs written in a high-level language have to beprocessed before they can run. This extra processing takes some time, which isa small disadvantage of high-level languages.
But the advantages are enormous. First, it is much easier to program in ahigh-level language. Programs written in a high-level language take less timeto write, they are shorter and easier to read, and they are more likely to becorrect. Second, high-level languages are portable, meaning that they canrun on di!erent kinds of computers with few or no modifications. Low-levelprograms can run on only one kind of computer and have to be rewritten to runon another.
Due to these advantages, almost all programs are written in high-level languages.Low-level languages are used only for a few specialized applications.
Two kinds of programs process high-level languages into low-level languages:interpreters and compilers. An interpreter reads a high-level program andexecutes it, meaning that it does what the program says. It processes the pro-gram a little at a time, alternately reading lines and performing computations.
OUTPUTSOURCECODE
INTERPRETER
A compiler reads the program and translates it completely before the programstarts running. In this case, the high-level program is called the source code,and the translated program is called the object code or the executable. Oncea program is compiled, you can execute it repeatedly without further translation.
OUTPUTCODEOBJECT EXECUTOR
CODESOURCE COMPILER
Python is considered an interpreted language because Python programs are ex-ecuted by an interpreter. There are two ways to use the interpreter: command-line mode and script mode. In command-line mode, you type Python programsand the interpreter prints the result:
Läsbar texti något språk
Program somtolkar textenoch utför dettexten säger
Resultatav körningen
Sker vid varje körning
3
L U L E Å T E K N I S K A U N I V E R S I T ETS M D 1 8 0S Y S T E M T E K N I K
INTRODUKTION TILL PROGRAMMERING
Kompilering
4
2 The way of the program
languages.” Loosely speaking, computers can only execute programs written inlow-level languages. Thus, programs written in a high-level language have to beprocessed before they can run. This extra processing takes some time, which isa small disadvantage of high-level languages.
But the advantages are enormous. First, it is much easier to program in ahigh-level language. Programs written in a high-level language take less timeto write, they are shorter and easier to read, and they are more likely to becorrect. Second, high-level languages are portable, meaning that they canrun on di!erent kinds of computers with few or no modifications. Low-levelprograms can run on only one kind of computer and have to be rewritten to runon another.
Due to these advantages, almost all programs are written in high-level languages.Low-level languages are used only for a few specialized applications.
Two kinds of programs process high-level languages into low-level languages:interpreters and compilers. An interpreter reads a high-level program andexecutes it, meaning that it does what the program says. It processes the pro-gram a little at a time, alternately reading lines and performing computations.
OUTPUTSOURCECODE
INTERPRETER
A compiler reads the program and translates it completely before the programstarts running. In this case, the high-level program is called the source code,and the translated program is called the object code or the executable. Oncea program is compiled, you can execute it repeatedly without further translation.
OUTPUTCODEOBJECT EXECUTOR
CODESOURCE COMPILER
Python is considered an interpreted language because Python programs are ex-ecuted by an interpreter. There are two ways to use the interpreter: command-line mode and script mode. In command-line mode, you type Python programsand the interpreter prints the result:
Läsbar text Program somöversättertexten tillmaskinkod
Obegripligabitmönster
(fil.exe)
Kan direkt tolkabitmönstren som
maskininstruktioner
Resultat
1 gångMånga gånger
4
L U L E Å T E K N I S K A U N I V E R S I T ETS M D 1 8 0S Y S T E M T E K N I K
INTRODUKTION TILL PROGRAMMERING
Kompilering/interpretering
Kompilering:• Det översatta programmet kräver liten eller ingen
tolkning när det ska köras, ger ofta bättre prestanda• Själva översättningen tar dock tid och gör
programutvecklingsarbetet krångligare
Interpretering:• Tolkning måste göras varje gång programmet körs,
tar längre tid än att köra redan översatt maskinkod• Programutvecklingen blir dock betydligt enklare och
kan ske interaktivt
5
5
L U L E Å T E K N I S K A U N I V E R S I T ETS M D 1 8 0S Y S T E M T E K N I K
INTRODUKTION TILL PROGRAMMERING
Python
Ett modernt interpreterat högnivåspråk
Exempel på andra språk som du kanske hört talas om: C, Pascal, C++, Java, Ada, Tcl, Perl, Visual Basic, C#, ...
Exempel på språk som enbart kan beskriva data men inte beräkningar: HTML, XML, ASN.1, ...
Python är fritt tillgängligt (python.org) och stödjer en mängd datorplattformar – installera gärna hemma!
Populärt inom open-source-världen, används bl a av Google, NASA, AstraZeneca, Honywell och NYSE
Blir allt vanligare på universiteten, på LTU från 2006!6
6
L U L E Å T E K N I S K A U N I V E R S I T ETS M D 1 8 0S Y S T E M T E K N I K
INTRODUKTION TILL PROGRAMMERING
Python-interpretatorn
Kan startas direkt från datorns kommandorad: python
Interpretatorn svarar då Python 2.3.5 (#1, Mar 20 2005, 20:38:20) Type "help", "copyright", "credits" or "license" for more information. >>>
Prompten >>> markerar att interpretatorn är beredd att ta emot kommandon, t ex print 1+1
Interpretatorns svar på detta kommando blir 2samt en ny prompt. Sessionen kan avslutas med (ctrl)D
7
7
L U L E Å T E K N I S K A U N I V E R S I T ETS M D 1 8 0S Y S T E M T E K N I K
INTRODUKTION TILL PROGRAMMERING
Python-script
Alternativt kan de kommandon man önskar köra samlas i en fil, ett s k script
Exempel: antag att filen kalle.py innehåller kommandot print 1+1
Om interpretatorn nu startas genom att man skriver python kalle.pykommer resultatet 2att skrivas ut, varefter interpretatorn avslutas direkt
8
8
L U L E Å T E K N I S K A U N I V E R S I T ETS M D 1 8 0S Y S T E M T E K N I K
INTRODUKTION TILL PROGRAMMERING
Python-miljön IDLE
Vi kommer dock oftast att arbeta med Python-program i den integrerade utvecklingsmiljön IDLE
IDLE är ett fönster-baserat program som• kör Python-interpretatorn som en underprocess i
fönstret Python Shell• kan öppna och redigera Python-script (filer som
slutar på .py) i separata fönster
Fönstren använder färger för att göra Python-texterna mer lättlästa
Aktuellt script kan enkelt laddas in i interpretatorn med knappen F5
9
9
L U L E Å T E K N I S K A U N I V E R S I T ETS M D 1 8 0S Y S T E M T E K N I K
INTRODUKTION TILL PROGRAMMERING
Byggstenarna i ett program
Hämta indata (från tangentbord, fil, nätverk, ...)
Producera utdata (på skärm, fil, nätverk, ...)
Matematiska operationer (+, -, *, <, ...)
Villkorlig körning
Repetition
Vi har redan sett exempel på produktion av utdata (kommandot print) och matematik (uttrycket 1+1). Övrigt följer, men är i grunden lika enkelt.
Konsten att programmera är att kunna sätta samman dessa byggstenar till meningsfulla större enheter!
10
10
L U L E Å T E K N I S K A U N I V E R S I T ETS M D 1 8 0S Y S T E M T E K N I K
INTRODUKTION TILL PROGRAMMERING
Men om jag skriver fel...?
Oundvikligt! Alla (även erfarna programmerare) gör fel.
Programfel kallas ofta för buggar, felsökning/rättning för debugging
Man kan säga att konsten att programmera handlar mycket om konsten att kunna hitta och rätta programfel
Ett interaktivt interpreterande språk som Python gör denna process mycket mer hanterlig
Det gäller dock att förstå att debugging är en konst man lär sig just genom att göra fel! Så misströsta inte :-)
11
11
L U L E Å T E K N I S K A U N I V E R S I T ETS M D 1 8 0S Y S T E M T E K N I K
INTRODUKTION TILL PROGRAMMERING
Tre typer av buggar
SyntaxfelDin text uppfyller inte Python’s formregler och interpretatorn vägrar acceptera den. Kan handla om att ett : saknas, eller att du skrivit ett ( för mycket
Runtime-felProgrammet accepteras men körningen avbryts i förtid. Beror på att programmet försöker utföra någon odefinierad operation, t ex division med 0
Semantiska felProgrammet körs färdigt, men resultatet blir inte det önskade. Betyder att du skrivit ett annat program än du tänkt dig!
12
12
L U L E Å T E K N I S K A U N I V E R S I T ETS M D 1 8 0S Y S T E M T E K N I K
INTRODUKTION TILL PROGRAMMERING
Om formella språk
Exempel: matematisk notation, kemiska molekylformler, den notation som används i bridge- och schack-böcker
Upplevs ofta som petiga och fantasilösa jämfört med naturliga (talade) språk
Notera dock formella språks långt mer begränsade syften
Naturliga språk är ofta både tvetydiga (betydelsen måste förstås ur sammanhanget) och redundanta (betydelsen framgår även om vissa fragment faller bort)
I formella språk försöker man normalt minimera just dessa egenskaper
13
13
L U L E Å T E K N I S K A U N I V E R S I T ETS M D 1 8 0S Y S T E M T E K N I K
INTRODUKTION TILL PROGRAMMERING
Jämför:
Poesi:• Ords klang och rytm lika viktig som deras betydelse• Syftar till en känslomässig upplevelse• Tvetydighet och redundans inte bara vanligt utan
också eftersträvansvärt
Prosa:• Jämförelsevis fattigt vad gäller klang och rytm• Syftar i första hand till att överföra information• Tvetydiga ord kan ofta förstås av sammanhanget
14
14
L U L E Å T E K N I S K A U N I V E R S I T ETS M D 1 8 0S Y S T E M T E K N I K
INTRODUKTION TILL PROGRAMMERING
Jämför:
Program:• Saknar fullständigt egenskaper som klang och rytm• Syftar till att definiera beteendet hos en maskin• Tvetydighet är något negativt (hur ska maskinen i så
fall bete sig?) och korta koncisa program upplevs ofta mer lättlästa än program fulla med redundans
Ett gott tips är att acceptera formella programtexter för vad de är, och inte betrakta dem med samma ögon som när vi läser naturligt språk
... precis som vi gör när vi läser t ex nyhetstexter och dikter med olika förväntningar!
15
15
L U L E Å T E K N I S K A U N I V E R S I T ETS M D 1 8 0S Y S T E M T E K N I K
INTRODUKTION TILL PROGRAMMERING
Det klassiska första programmet
Brukar användas som exempel på den mest triviala uppgift ett program kan ha: skriv ut texten
Hello, World!
som resultat och avsluta sedan
I Python blir detta rätt och slätt kommandot
print ”Hello, World!”
Observera citat-tecknen, de är exempel på en syntaktisk detalj av avgörande betydelse i ett formellt språk men som ofta kan utelämnas i naturligt språk
I nästa kapitel ska vi titta vidare på dessa skillnader!16
16