16
L U L E Å T E K N I S K A U N I V E R S I T ET S M D 1 8 0 S Y S T E M T E K N I K INTRODUKTION TILL PROGRAMMERING Introduktion till programmering SMD180 1 Föreläsning 1: “Programmets väg” 1

Introduktion till programmering SMD180 Föreläsning 1 ... · Introduktion till programmering SMD180 1 Föreläsning 1: ... python kalle.py kommer resultatet 2 att skrivas ut, varefter

  • 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