Introduktion till programmering Föreläsning 1: Programmets väg 1 1
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
programs can run on only one kind of computer and have to be rewritten to run on 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. Interpretering Two kinds of programs process high-level languages into low-level languages: interpreters and compilers. An interpreter reads a high-level program and executes it, meaning that it Sker does vid what the körning program says. It processes the provarje gram a little at a time, alternately reading lines and performing computations. SOURCE CODE INTERPRETER OUTPUT Läsbarthe text Program som it completely Resultat A compiler reads program and translates before the program i något språk texten körningen starts running. In this case, thetolkar high-level program isavcalled the source code, och utför det code or the executable. Once and the translated program is called the object a program is compiled, you can execute repeatedly without further translation. textenitsäger 3 SOURCE CODE COMPILER OBJECT CODE EXECUTOR OUTPUT 3
executes it, meaning that it does what the program says. It processes the program a little at a time, alternately reading lines and performing computations. SOURCE CODE INTERPRETER Kompilering OUTPUT A compiler reads the program and translates it completely before the program starts running. In this case, the high-level program is called the source code, 1 gång and the translated program is called the object code or the executable. Once Många gånger a program is compiled, you can execute it repeatedly without further translation. SOURCE CODE COMPILER OBJECT CODE EXECUTOR OUTPUT Läsbar text Program som Obegripliga Kan direkt tolka Resultat Python is considered an interpreted language because Python programs are exöversätter bitmönstren som commandecuted by an interpreter. Therebitmönster are two ways to use the interpreter: line mode and script mode. mode, you type Python programs texten till In command-line (fil.exe) maskininstruktioner and the interpreter prints the result: maskinkod 4 4
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
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
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 2 samt en ny prompt. Sessionen kan avslutas med (ctrl)d 7 7
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.py kommer resultatet 2 att skrivas ut, varefter interpretatorn avslutas direkt 8 8
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
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
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
Tre typer av buggar Syntaxfel Din 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-fel Programmet 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 fel Programmet körs färdigt, men resultatet blir inte det önskade. Betyder att du skrivit ett annat program än du tänkt dig! 12 12
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
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
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
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