Läsöversikt. Föreläsningar 2-6. Genomförande av laborationer

Relevanta dokument
Tutorial: Python på 90 minuter

TDP002 - Imperativ programmering

TDP002 Imperativ programmering

TDP002 - Imperativ programmering

Översikt. Varför lära sig detta? Motivering Syntax och semantik Imperativa språkets byggstenar och Python. PL-boken Kap 1 (repetition):

729G04 Programmering och diskret matematik. Föreläsning 7

TDP002 - Imperativ programmering

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...

Imperativ och Funktionell Programmering i Python #TDDD73. Fredrik Heintz,

Språket Python - Del 2 Grundkurs i programmering med Python

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Grundläggande datalogi - Övning 1

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

Ordlistor, filhantering och ut på webben. Linda Mannila

Använda Python Laboration 1 GruDat, DD1344

DD1314 Programmeringsteknik

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

Språket Python - Del 1 Grundkurs i programmering med Python

TDDE44 Programmering, grundkurs

729G04 Programmering och diskret matematik. Python 3: Loopar

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

Funktioner. Linda Mannila

Repetition i Python 3. Exemplen fac. Exemplen fac motivering. Exemplen fac i Python

Översikt. Stegvis förfining. Stegvis förfining. Dekomposition. Algoritmer. Metod för att skapa ett program från ett analyserat problem

Grundläggande databehandling ht 2005

Pythons standardbibliotek

Introduktion till programmering SMD180. Föreläsning 9: Tupler

Grundläggande Datalogi

Sammanfattning. Listor. List-manipulering. Matris. /home/lindahlm/activity-phd/teaching/11dd1310/exercise3/exercise3.py September 13, 20111

Användarhandledning Version 1.2

Föreläsning 2 Programmeringsteknik och C DD1316

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Övning 6. Ali Tofigh 24 Oktober, 2006

Python. Datatyper. Mer om datatyper. Heltal - 3 Flyttal - 2,456 Listor - [1,2,3,4] Strängar - spam!

Översikt 5 delar. 1: Fysisk representation. Binär, oktal och hexadecimal representation

Föreläsning 5 Programmeringsteknik DD1310. Modulen doctest. Exempel. Doctest Dictionary Filhantering

Laboration: Whitebox- och blackboxtesting

1/15/2013. DD1310/DD1314/DA3009 Programmeringsteknik. Lärandemål... Vilka läser kursen? ...fler lärandemål VARFÖR? Föreläsning 1

DD1310/DD1314/DA3009 Programmeringsteknik LÄRANDEMÅL... Vilka läser kursen? ...FLER LÄRANDEMÅL. Föreläsning 1

Introduktion till programmering SMD180. Föreläsning 4: Villkor och rekursion

Repetition C-programmering

Multipel tilldelning. Introduktion till programmering D0009E. Föreläsning 6: Iteration. while-satsen. Kom ihåg. Snurror kontra rekursion

Kurslitteraturen. C-nivå Villkorssatser [kap 8] if & elif & else and & or Loopar [kap 9] for

Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E. Föreläsning 4: Villkor och rekursion. Modulus-operatorn.

Föreläsning 6: Introduktion av listor

Introduktion C-programmering

Introduktion till programmering D0009E. Föreläsning 9: Tupler och dictionaries

JavaScript. Innehåll. Historia. Document object model DHTML. Varför Javascript?

Principer för (imperativa) programmeringsspråk

DD1361 Programmeringsparadigm. Carina Edlund

Erfarenheter från labben

Föreläsning 3: Booleans, if, switch

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

Beräkningsvetenskap föreläsning 2

Imperativ programmering. Föreläsning 2

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

729G74 IT och programmering, grundkurs. Tema 3. Föreläsning 2 Jody Foo,

Sätt att skriva ut binärträd

Datalogi för E Övning 3

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Python. Vi har ofta behov av att behandla datastrukturer på ett enhetligt sätt så att vi kan göra samma sak i flera olika program.

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Backcode. Jonathan Crusoe TDP019 Projekt: Datorspråk Linköpings universitet

729G04 Programmering och diskret matematik. Python 2: Villkorssatser, sanningsvärden och logiska operatorer

MicroPython Ett textbaserad programmeringsspråk för Micro:bit

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

Föreläsning 3-4 Innehåll

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4:

Problemlösning och algoritmer

Föreläsning 18 Filer och avbildningar

Variabler och konstanter

Introduktion till programmering SMD180. Föreläsning 3: Funktioner

Platser för att skriva och testa kod online. Workshop om programmering i matematikkurser, version 0.7 senast sparat

Selektion och iteration

Tentamen i Introduktion till programmering

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

Programmering grundkurs

Hur man programmerar. TDDC66 Datorsystem och programmering Föreläsning 3. Peter Dalenius Institutionen för datavetenskap

Konvexa höljet Laboration 6 GruDat, DD1344

Fly me to the moon. Laboration om relationer, TDDC75 Diskreta strukturer. Mikael Asplund. 5 september 2017

Programmeringteknik. Planering MÅL LABB: MOMENT LAB4 HTML - EXEMPEL HTML. Webbdelen

Planering av ett större program, del 2 - for och listor. Linda Mannila

TDIU01 - Programmering i C++, grundkurs

TDDE44 Programmering, grundkurs

Planering Programmering grundkurs HI1024 HT TIDAA

Översikt. Installation av EasyPHP 1. Ladda ner från Jag använder Release Installera EasyPHP.

Grundläggande datalogi - Övning 4

Den klassiska programmodellen. Introduktion till programmering D0009E. Föreläsning 11: Filer och undantag. Filsystem. Interaktiva program.

Kort om programmering i Python

Datalogi, grundkurs 1

Problemlösning och funktioner Grundkurs i programmering med Python

Objektorienterad programmering i Java

Programmering i C, 7,5 hp

Föreläsning 5 Mer om funktioner, villkor

Transkript:

Läsöversikt LP Part I Part IV, kap 18 PL: kap 1, 2 (Sem 1), 3 (Sem 3), 5.1-5.3, 5.8 intro, 6.1-6.3, 7.1-7.3, 8.1-8.3, 9.1-9.2 Wikipedia kan användas som stöd för PL-avsnitten. Föreläsningar 2-6 Genomförande av laborationer Föreläsning 2: översikt över Python Föreläsning 3: algoritmer och imperativt tänkande Föreläsning 4: Datastrukturer, procedurell och dataabstraktion Föreläsning 5: Principer för programmeringsspråk Föreläsning 6: Inför tentamen Arbetar parvis Välj själva labbpartner Läs igenom laborationer i förväg börja läsa laboration 1 nu... Installationslaborationen måste vi fixa före resten... Schema Må-ti är intensivdagar med eget arbete i PC6-7 Handledningsmöte 4 ggr per vecka gemensamt för TDP002 och TDP003 (må, 2 ggr ti, fre)

Konceptuell struktur (jmf. PL-boken) LP Part II: Types and Operations PL: kap 6 Data types LP Part III: Statements and Syntax LP Part IV: Functions PL: kap 7 Expressions and Assignment Statements PL: kap 8 Statement-Level Control Structures PL: kap 9 Subprograms Ex 0: Moduler: import/reload (Kap 3) Python Standard Library Utvidgar Python-språket med bra-att-ha kommandon/funktioner http://docs.python.org/ Källkod: /usr/lib/python import laddar en modul help interaktiv hjälp (jmf man) reload laddar om en modul (bra vid utveckling) Typer och operationer

Tal Strängar Inbyggda (built-in) icke-muterbara (immutable) Matematiska beräkningar Inbyggda (built-in) Sekvenstyp icke-muterbara (immutable) metoder med strängspecifika operationer Listor Dictionary listor är sekvenser av objekt - dynamiska arrayer muterbara både storlek och värden Elementen kan vara vilket typ av objekt som helst Listor kan blanda typer av objekt Metoder ger specifika operationer för listor Hashtabell/map Lagrar nyckel-värde associationer nycklarna är ickemuterbara objekt Metoder för typspecika operationer

Tupler Tupler är sekvenser av objekt de är icke-muterbara Längden är fixerad Elementvärdena är fixerade Filer Filen writetest.py: Datafiler är objekt i språket Metoder ger operationer Plus open Och kom ihåg att... Program = fil = modul Kommando = sats Moduler har sideffekter Pythons programstruktur Satser och syntax 1. Program består av moduler 2. Moduler består av satser 3. Satser innehåller uttryck Här 4. Uttryck skapar och beräknar objekt

Tilldelningssatsen print print print Uttryck är det som räknar ut något i språket Jmf. matematiska uttryck Även struktur-uttryck t ex strängar. listor Variabler för att mellanspara värden = tilldela uttryck till variabel for-loopen while-loopen print print for print print For (each): för varje element gör något For-loopen är bra för förutbestämda loopar Eng Definite iterations print while print print while (condition): så länge villkoret är sant gör något Bra för obestämda loopar Loop = iteration OBS kolon och indentering nödvändig Eng indefinite iterations OBS kolon och indentering nödvändig

Funktioner def-satsen def print def Funktioner är subprogram defineras och anropas Paketering av källkod under visst namn Indentering avgör när defintionen slutar OBS: inget händer när detta körs förutom att print_hello blir definerad som en funktion... Anrop av funktioner Parametrar, returvärden och lokala variabler def print def print Hej Hej Hej Anrop kan ske från modulnivå Funktioner kan anropa andra funktioner def return print 16 Funktioner kan ha indata i form av parametrar De värden som binds till parametrarna i ett anrop kallas argument Parametrar och variabler i en funktion är lokala för funktionen Kan bara refereras inom funktionen

Räckvidd och skuggning def return def global return print print Variabler/parametrar har räckvidd (scope) Parametrar och lokala variabler skuggar globala variabler 22 45 Moduler Egna moduler file_handler.py: open def return def return present_results.py: Delar upp större program i flera filer Konceptuell klarhet Återanvändning import def while print Några större exempel (i mån av tid...)

Ex: Manipulera filer os-modulen - interaktion med fil/kataloger/skal För automatisk hantering/ bearbetning av filer Ex: Kommandorad och os.system pdf_html.py: ett skript för att generera pdf och html-filer argument 1 abspath: /home/larde/svndoc/courses/tdp002/py-2 basename: py-2 cwd:/home/larde/svndoc/courses/tdp002/py-2 listdir: ['.svn', 'storedata_2.py', 'sumprod.py', 'config.py',...] stat: (33188, 5478488L, 2053L, 1...) is dir: False argument 2 Anrop: pdf_html.py lecture-1 ~TDP002/www-pub/lectures (Lite) större exempel: store_data Initial pseudokod: WHILE användaren vill: läs in ny data spara data på fil Frågor: 1) vilken fil? 2) hur avsluta? Programskiss storedata_1.py: read_data Funktion som läser in indata Förfining: Öppna filen data.txt WHILE användaren vill: läs in ny data IF NOT \q: spara data på fil Stäng filen %:./storedata_1.py Enter data ('\q' to quit): Kom ihåg: X Enter data ('\q' to quit): Händelse Y Enter data ('\q' to quit): Ring Z Enter data ('\q' to quit): \q Added 3 lines to file data.txt format_data Funktion som väljer filformat Anropar Huvudprogram

storedata_1: huvudprogram storedata_2: tidsmärkning och filhantering if name == " main ": data_file = open("data.txt", "a") more_data = True no_of_lines = 0 while more_data: data = read_data() if data == "\Q": more_data = False else: data_file.write(format_data(data)) no_of_lines = no_of_lines + 1 print "Added %i of lines to file %s" % ( (no_of_lines, 'data.txt')) data_file.close() Testar om modul är toppmodul Egna funktioner Förändringar (refactorings): 1) Jag vill spara i antingen egen fil eller default. (Framtid: konfigurerbart) 2) Jag vill tidsstämpla varje data Ny pseudokod: Välj fil (sep konfig-modul) Öppna vald fil WHILE användaren vill: läs in ny data IF NOT \q: formattera data spara data på fil Stäng filen Filen ~/.myapp/data.txt: Tue 08/28/07 (05:19:59 PM)::KOM IHÅG: X Tue 08/28/07 (05:20:03 PM)::HÄNDELSE Y Tue 08/28/07 (05:20:06 PM)::RING Z Programskiss två moduler storedata_2: huvudprogram storedata_2.py: Anropar read_data Ändrad format_data Ny get_file Anropar Huvudprogram config.py: get_default_data_file get_user_specific_data_file if name == " main ": file_name = get_file() data_file = open(file_name, "a") more_data = True no_of_lines = 0 while more_data: data = read_data() if data == "\Q": more_data = False else: data_file.write(format(data)) no_of_lines = no_of_lines + 1 print "Added %i lines to file %s" % ( (no_of_lines, file_name)) data_file.close() Nya funktioner: minimalt ingrepp i gammal källkod getfile anropar config format anropar time

Separat config-modul: config.py import os import os.path _metadata={"application_home": "/usr/local/myapp", "default_user_directory": "~/.myapp", "data_file": "data.txt"} def get_default_data_file(): return os.path.join(_metadata["application_home"], _metadata["data_file"]) Summering Översikt över Learning Python Part II-IV, kap 18 Vi återkommer till detaljer i laborationer och teori på föreläsningar Glöm inte läsa Kap 2-3 och wikipedia från föreläsning 1! Gör egna övningar! def get_user_specific_data_file(): return os.path.join( os.path.expanduser(_metadata["default_user_directory"]), _metadata["data_file"])