Grundläggande databehandling ht 2005

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

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?

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

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

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

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

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

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

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

Föreläsning 2 Programmeringsteknik och C DD1316

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

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

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

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

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

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

TDIU01 - Programmering i C++, grundkurs

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Program & programmering

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

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

729G04 Programmering och diskret matematik. Python 3: Loopar

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

DD1314 Programmeringsteknik

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

TDP002 - Imperativ programmering

Objektorienterad Programmering (TDDC77)

TDP002 Imperativ programmering

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Pythons standardbibliotek

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

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

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

Introduktion till programmering och Python Grundkurs i programmering med Python

Grundläggande datalogi - Övning 1

Sätt att skriva ut binärträd

Introduktion till programmering SMD180. Föreläsning 7: Strängar

Erfarenheter från labben

TDP002 - Imperativ programmering

Tentamen i Introduktion till programmering

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

Uppgifter teknik HT17 (uppdaterad v. 40)

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

Föreläsning 4 Programmeringsteknik och Matlab DD1312. Logiska operatorer. Listor. Listor, tupler, strängar och forslingor

Introduktion till programmering D0009E. Föreläsning 1: Programmets väg

Föreläsning 2. Operativsystem och programmering

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

TDDE44 Programmering, grundkurs

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Grundläggande Datalogi

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

Övning 1 - Abstrakta datatyper

Imperativ programmering. Föreläsning 2

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

Användarhandledning Version 1.2

Använda Python Laboration 1 GruDat, DD1344

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

Classes och Interfaces, Objects och References, Initialization

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

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud.

Objektorienterad Programmering (TDDC77)

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

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

Programmering för språkteknologer I, VT2012. Rum

F4. programmeringsteknik och Matlab

Klassdeklaration. Metoddeklaration. Parameteröverföring

729G04 Programmering och diskret matematik

Programmering för språkteknologer II, HT2014. Rum

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

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

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

Grundläggande datalogi - Övning 4

Dataabstraktion. TDDD73 Funktionell och impterativ programmering i Python Föreläsning 12. Peter Dalenius Institutionen för datavetenskap

TDIU01 - Programmering i C++, grundkurs

Variabler, värden och typer

Repetition C-programmering

729G75: Programmering och algoritmiskt tänkande. Tema 1, föreläsning 1 Jody Foo

729G04 Programmering och diskret matematik

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

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

Datalogi I, grundkurs med Java 10p, 2D4112, Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera förs

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

Funktioner. Linda Mannila

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

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

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

725G61 - Laboration 2 Loopar och arrayer. Johan Falkenjack

Föreläsning 1: Intro till kursen och programmering

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk:

Introduktion C-programmering

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

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

v. 42 Python HT17 En introduktion Oscar Bergqvist

TDDD78, TDDE30, 729A Introduktion till Java -- för Pythonprogrammerare

Transkript:

Grundläggande databehandling ht 2005 Programmering Filip Salomonsson <salo@stp.lingfil.uu.se> 1

Idag Program, programmering Pythonintro 2

Programspråk Lågnivåspråk (maskinspråk); instruktioner på datorns språk. Högnivåspråk abstraherade uttryckssätt som människor lättare förstår. Populära högnivåspråk: Python, Java, Perl, C, C++,... 3

Fördelar med högnivåspråk Lättare att skriva Lättare att läsa(!) Lättare att göra rätt Portabilitet 4

Nackdelar med högnivåspråk Förstås inte direkt av datorn - måste översättas Inte alltid lika effektiva 5

Översättningen Två sätt: Interpretering: en tolk läser programmet och exekverar det (gör som det säger) varje gång programmet ska köras. Kompilering: en kompilator översätter programmet en gång för alla, och sedan används den kompilerade versionen. Den ursprungliga (högnivå-)formen kallas källkod. 6

Program Ett program är en uppsättning instruktioner för hur en beräkning (i vid mening) ska utföras (av datorn). Beräkningen kan vara, typ, vad som helst! Program kan sägas bestå av två huvudkomponenter: Algoritmer är generella beskrivningar av lösningar på specifika klasser av problem Datastrukturer innehåller de data som algoritmerna arbetar med. 7

Programmering Programmering är framför allt problemlösning, och handlar om att formellt beskriva lösningar på (abstrakta) problem. Till detta används något programmeringsspråk, som är formella språk för att uttrycka vissa operationer. inmatning (input) utmatning (output) matematik/aritmetik villkor upprepning Olika programmeringsspråk erbjuder olika nivåer av abstraktion. 8

Programmeringsspråk Programmeringsspråk är formella språk som är utformade för att uttrycka beräkningar. Strikt syntax Entydiga Bokstavliga 9

Python Python is an interpreted, interactive, object-oriented programming language. Ett första program: print "Hello world!" Python består, utöver själva språket, av ett stort standardbibliotek med användbara moduler för att läsa många olika typer av problem. 10

Ett andra program snubbar = [ Stellan, Staffan, Jörgen, Kalle, Tom ] snubbar.sort() # Skriv ut snubbarna for snubbe in snubbar: print snubbe antal = len(snubbar) print "Totalt %d snubbar." % antal 11

Värden och typer Värden är innehållet i de datastrukturer som programmet arbetar med. Varje sådant värde är av en specifik typ. "Hello world!" är ett strängvärde (string). 42 är ett heltalsvärde (integer) [ Stellan, Staffan ] är ett listvärde (list) 12

Variabler (namn) Värden kan lagras genom att skapa namn som refererar till dem. name = "Filip Salomonsson" age = 25 shoesize = 42.5 Namn ordnas i namnrymder. 13

Funktioner En funktion är en uppsättning instruktioner samlade under ett gemensamt namn för enkelt återanvändning. En funktion kan ta ett antal argument och returnera ett värde (returvärde). def repeat(string, n): """Return the string repeated n times.""" repeated = string * n return repeated 14

Duck typing If it walks like a duck and quacks like a duck, it s probably a duck. Alla objekt i python är av någon specifik typ, men det viktiga är inte exakt vilken typ objektet har, utan vad man kan göra med det. 15

Allmänt om syntaxen Inga explicita variabeldeklarationer variablerna skapas när man tilldelar dem ett värde. Inga variabeltyper (variabler är bara referenser, och kan referera till vad som helst). Inga måsvingar ; block markeras med indentering (och kolon). Om ett block är tomt används pass som platshållare. 16

Strängar "Det här är en sträng " Det här är också en "sträng" """Det här är en "sträng" som kan spänna över flera rader.""" Kan konstrueras med str(). Bakstreck fungerar som escapetecken: "Här finns \"citattecken\" och en\nradbrytning." 17

Numerärer Heltal: 1, 4711, -10 Kan konstrueras med int(). Decimaltal: 3.14,.5, 1., -273.15 Kan konstrueras med float(). 18

Villkorssatser: if if some_condition: pass elif other_condition: pass else: pass elif och else kan utelämnas. 19

Sanningsvärden Rena sanningsvärden är True och False (av typen bool). Alla värden kan dock användas som sanningsvärden. Falska: None, 0, [], (), {} (och vissa egna klasser). Sanna: allt annat. 20

Sanningsvärden: operatorer ==!= likhet/olikhet < > större/mindre än <= >= större/mindre än eller lika med is is not objektidentitet not a a and b a or not b sant om a är falskt; annars falskt a om a är falskt; annars b b om a är falskt; annars a and och or evaluerar sin andra operand endast om det behövs för att avgöra slutresultatet. 21

Sekvenser: sekvenstyper Listor (list) lista = [1, foo, bar, [42, baz ]] Listor är muterbara; man kan förändra deras innehåll. Tuplar (tuple) tupel = (1, foo, bar, (42, baz )) Strängar [sekvenser av tecken] (str) s = "python" (Egna klasser) len() ger längden på en sekvens. 22

Sekvenser: indexåtkomst Elementen i en sekvens kan refereras med hjälp av indexoperatorn []. >>> tokens = [ jag, känner, en, pudel ] >>> tokens[0] jag >>> tokens[1] = är >>> tokens.insert(2, inte ) >>> " ".join(tokens) jag \xe4r inte en pudel Notera escapesekvensen \xe4 för ä. 23

Sekvenser: indexåtkomst (forts) Negativt index räknar från slutet: >>> s = "python" >>> s[-1] n 24

Sekvenser: operatorer + konkatenerar: >>> språk + teknologi spr\xe5kteknologi * upprepar: >>> "hi" * 3 hihihi Existensoperatorn in: >>> 5 in [0,2,4,6,8] False >>> tekno in språkteknologi # substräng True 25

Mappningstyper Effektiv lagring av nyckel värde-par (hashtabell). Lexikon (dict) (eng. dictionary) (Egna klasser) >>> eng = { pudel : poodle, känner : know,... jag : I, en : a } >>> eng[ pudel ] poodle >>> eng[ är ] = am Muterbara typer får inte användas som nycklar. 26

None None är en särskild typ som representerar frånvaron av något värde (men None är ett värde i sig!). Funktioner som inte returnerar något värde returnerar i själva verket None. Observera att None inte är detsamma som t ex null i Java. 27

Iteration: for for element in sequence: print element Att tilldela ett nytt värde till element inom for-blocket påverkar inte sequence! for i in range(10): print i for i in range(len(tokens)): if tokens[i] == "städare": tokens[i] = "hygientekniker" 28

Iteration: while i = 0 while i < 10: print i i += 1 while True: if some_condition:... break # loop forever break avbryter iterationen. continue hoppar direkt till nästa iterationssteg. 29

Funktioner >>> def translate(words, dictionary):... """Translate words according to the given... dictionary."""... translated = []... for word in words:... if word in dictionary:... translated.append(dictionary[word])... else:... translated.append("<%s>" % word)... return translated... 30

Funktioner (forts) >>> sve_eng = { pudel : poodle, känner : know,... jag : I, en : a } >>> translate([ jag, känner, en, liten,... pudel ], sve_eng) [ I, know, a, <liten>, poodle ] 31

Klasser Klasser används för att definiera egna datatyper. >>> class Student:... """Represent a student."""... def init (self, first_name, last_name):... self.first_name = first_name... self.last_name = last_name... def str (self):... return "%s %s" % (self.first_name,... self.last_name)... >>> ego = Student( Filip, Salomonsson ) 32

Klasser (forts) >>> ego = Student( Filip, Salomonsson ) >>> ego < main.student instance at 0xb7f67fcc> >>> ego.first_name Filip >>> ego.age = 25 >>> print ego Filip Salomonsson 33

Rätt Sätt TM Skriv alltid dokumentationssträngar i dina funktioner, klasser och metoder. Kommentera koden lagom mycket. Använd inbyggda funktioner/metoder när de finns. Krångla inte till det! Följ stilguiden: <http://www.python.org/peps/pep-0008.html> 34

När ni behöver hjälp Använd Pythonskalet! Dokumentationen på nätet: <http://www.python.org/doc/2.3.3/> Tutorial Library Reference Fråga en kursare Googla! Fråga Filip 35

Labben Lära känna python Läsa kod Modifiera kod Skriva ny kod (tjoho!) Jobba i par! 36