Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Introduktion til programmering Uge 38 Python 2 Learning Python, kap 8-12.

Lignende præsentationer


Præsentationer af emnet: "Introduktion til programmering Uge 38 Python 2 Learning Python, kap 8-12."— Præsentationens transcript:

1 Introduktion til programmering Uge 38 Python 2 Learning Python, kap 8-12.

2 Plan Sidste gang Sætninger og udtryk Kontrolstrukturer  Selektion If…:  Gentagelse While…: For…: Funktioner Dokumentation Anden obligatoriske øvelse

3 Sidste gang Værdier og typer Type(værdi) Id(variabel) Simple typer (scalarer)  Tekst (string), index, slicing  Tal (int, float) Sammensatte typer  List []  Tuple ()  Dictionary () Udtryk

4 Udtryk: noget der repræsenterer en værdi  1, ’Peter’ Et udtryk (expression) er en kombination af andre udtryk og operatorer der repræsenterer og producerer en (ny) værdi  1 + 2 repræsenterer 3 –et tal  'Peter'[1:3] repræsenterer 'et’ – en tekst  [1,2,3][1] repræsenterer 2 – et tal  [1,2,3][0:2] repræsenterer [1, 2] – en liste  [1:3] repræsenterer en operation

5 Semiotisk set Udtryk er repræsentationer Deres objekt er værdier De frembringer de værdier de repræsenterer Det gør de naturlige sprog ikke  At sige ”en Peugeot 307” frembringer ingen bil  Men at skrive 'Peter'[1:3] frembringer teksten 'et' Repræsentamen: termer og udtryk Objekt: værdier, f.eks. tekster, tal, lister, tupler, dictionaries Interpretant: Python fortolkeren

6 'Peter'[1:3][::-1] = 'te’. Hvorfor? 'Peter'[1:3][::-1] Peter et te slicing R O R O R O R O R O Operationer er også værdier der har en repræsentation

7 Sætninger og udtryk Programmer består af moduler Moduler består af sætninger (statements) Sætninger indeholder udtryk Udtryk repræsenterer og producerer værdier Sætninger og udtryk  Sætninger repræsenterer ikke værdier  Sætninger regulerer hvordan værdierne produceres Eksempel  >>> len('peter') 5  >>> x = 'peter’ >>> Udtryk: producerer 5 sætning: producerer ingenting men ændrer variables værdier

8 Påstande – Boolske udtryk Udtryk der repræsenterer sand eller falsk.  De repræsenterer værdierne 1 og 0 (i nyere versioner True og False) Naturlige sprog: påstande Bussen går kl. 9.13. Det er løgn! Nogle sproghandlinger som ordrer kan hverken være sande eller falske Gå nu op i bussen. Det er løgn – lyder mærkeligt. >>> 1 + 3 == 4  True >>> 'Peter' == 'Karl’  False >>> 'Peter' <> 'Karl’  True

9 Sandhedsværdier Boolske operatorer  And, or, not >>> 1+2 == 3 and 4+5 == 9  True >>> not (1+2 == 3 and 4+5 == 9)  False >>> (1+2 == 3 or 1+2 == 9)  True

10 Sandhedstabeller pqp and q true false truefalse pqp or q true falsetrue falsetrue false pNot q truefalse true

11 Nye operatorer kan defineres ved de gamle P implies Q = not(P and not(Q)) = not(P) or Q Hvis P så Q pqNot pnot (p) or q true falsetrue false true false true

12 Naturlige sprog og logiske Naturlige sprog lægger en årsagsfortolkning ind i hvis-så Hvis 2 + 2 = 5, så vinder socialdemokraterne næste valg  Logisk: altid sand fordi 2 + 3 = 5 er logisk falsk  Naturligt sprog: nonsens fordi der ikke er nogen årsagssammenhæng pqNot pnot (p) or q true falsetrue false true false true

13 If-kontrolstruktur if : er en selektionsstruktur skal referere til en sandhedsværdi Handlingssætningerne udgør en blok Blokke er indenteret med tabulator eller mellemrum if :

14 ’if’ if-sætninger kan indeholde mange forskellige betingelser if : elif : else:

15 Funktioner Funktioner er en måde at gruppere sætninger så de kan kaldes igen og igen En funktion er er værdi (et objekt) Det er en måde at strukturere et program i overskuelige enheder To keywords:  Def : sætter et navn til at referere til et funktionsobjekt  Return: får funktionen til at returnere en værdi (et objekt)

16 Funktioner def funktionsnavn ( param1, param2,..., paramN):  sætning1  sætning2 ...  sætningN  return resultat

17 Eksempel def udskrivOmvendt(tekst):  print tekst[::-1] def udskrivOmvendt2(tekst):  return tekst[::-1] >>>x = udskrivOmvendt('peter') >>> x  'retep’ >>> udskrivOmvendt1('peter')  'retep’

18 Pass by reference Parameternavne refererer til samme objekt som de aktuelle parametre Pas på! >>> x = [1,2,3] >>> def func(y):... del(y[0])... >>> func(x) >>> x [2, 3] x y [1,2,3] R O R O

19 Globale og lokale variable >>> def func():... z =[]... >>> z = [1,2,3] >>> func() >>> z  [1, 2, 3] >>> def func() :... global z... z = [] >>> func() >>> z  [] 1,2,3 []

20 Naturlige sprog Hvis Anders Fogh har et problem med sin spindoktor Og ”Anders Fogh” refererer til samme person som ”Danmarks statsminister” Så er det sandt at Danmarks statsminister har et problem med sin spindoktor

21 Funktionsværdier Funktioner i Python er first-class citzens Et funktionsnavn refererer til en værdi med typen ’function’ >>> type(func)  >>> Derfor kan man bruge et funktionsnavn som parameter i en anden funktion.

22 Funktionsværdier def union (sekvens1, sekvens2):  resultat = sekvens1[:]  for x in sekvens2: if not(x in sekvens1):  resultat.append(x)  return resultat def intersection(sekvens1,sekvens2):  resultat = sekvens1[:]  for x in sekvens1: if not(x in sekvens2):  resultat.remove(x)  return resultat def do(sekvens1,operation, sekvens2): return operation(sekvens1, sekvens2)

23 Funktionsnavn og funktionsresultater Do er en metafunktion der sætter andre funktioner sammen med deres argumenter print do([1,2,3],union,[3,4,5])  [1, 2, 3, 4, 5] Funktionsnavnet union bruges som parameter og dets værdi udføres i do funktionen. print intersection(union([1,2,3],[3,4,5]),[1,4])  [1, 4] Resultatet af Union ([1,2,3],[3,4,5]), nemlig [1, 2, 3, 4, 5], gives som parameter til Intersection hvis anden parameter er [1,4] Union repræsenterer en funktion Union ([1,2,3],[3,4,5]) repræsenterer en liste.

24 Apply Apply er en generel indbygget metafunktion der knytter funktionsnavne til deres parametre. print apply(union, ([1,2,3], [3,4,5]))  [1, 2, 3, 4, 5]

25 Kald af funktioner Et funktionskald repræsenterer en sammenstilling af en funktion og nogle værdier Disse repræsenterer og producerer funktionens resultat Union'[1,2,3][3,4,5] funktion liste R O R O R O R O

26 Naturlige sprog Kancellisprog foretrækker ofte metafunktioner og beskriver funktioner ved navneord Ransag mistænktes hus Foranstalt en ransagelse af mistænktes hus FunktionParameter Funktions navn Parameter Metafunktion

27 Returnering af flere værdier fra en funktion Brug en tupel Brug tupel-unpacking def funktion(a,b):  res1 = a+b  res2 = a* b  res3 = a-b return (res1,res2,res3) x,y,z = funktion(23,34)

28 if __name__ == “__main__”: Hvordan får man startet et program fra kommandolinjen hvis de kun består af funktioner? def f1(): pass def f2(): print “Morten” if __name__ ==”__main__”:  f1()  f2()

29 Funktioner - igen Funktioner er en metode til at skifte fortolkning Funktionens navn repræsenterer én del af verden – f.eks. problemområdet Funktionens indre repræsenterer en anden del af verden – f.eks. computeren.

30 Fra Python til madlavning def TagOpAf(enKontainer): EtElement = spand[0] del enKontainer[0] return EtElement def LaegI(etElement,enKontainer): enKontainer.append(etElement) def FyldI(etIndhold): return etIndhold def DerErNogetI(enKontainer): return enKontainer <> [] def ErLukket(etElement): return etElement == 0 def KoekkenTilstand(): print '''spandens indhold: %s.Grydens indhold: %s. Affaldsposens indhold: %s''' % (spand, gryde, affaldspose)

31 Madlavning # Spanden indeholder muslinger. 0 betyder lukket, 1 betyder åben spand = FyldI([1,0,0,1,0,1,0,0]) # gryde og affaldspose er tomme i starten gryde = FyldI([]) affaldspose = FyldI([]) KoekkenTilstand() # sålænge der er muslinger i spanden while DerErNogetI(spand): # tag en musling op enmusling = TagOpAf(spand) # hvis muslingen er lukket if ErLukket(enmusling): #så læg den i gryden LaegI(enmusling,gryde) # ellers else: #læg den i affaldsposen LaegI(enmusling,affaldspose) KoekkenTilstand()

32 Moduler Moduler er Pythonprogrammer der kan bruges fra andre Pythonprogrammer De ”importeres” ved at bruge kommandoen import. Moduler kan indkapsle en verden man ønsker at bruge men ikke at forstå. Modulet beskriver hvordan man bruger dets verden men ikke hvordan den fungerer i detaljer Vi tager alle funktionerne ud af programmet og lægger dem i et modul. Når vi skal skrive programmer om muslinger, importerer vi modulet.

33 Et muslingemodul ''' Dette modul tilvejebringer metoder til tillavning af muslinger TagOpAf: Liste --> element LeagI: Element, Liste --> ingenting. Tilfoejer elementet til listen FyldI: Liste,Liste. Returnere Liste DerErNogetI: Liste --> True eller False. Sand hvis listen ikke er tom ErLukket: Element --> True eller False. Sand hvis elementet er 0 KoekkenTilstand(). Printer køkkentilstanden ud ''' ef TagOpAf(enKontainer): EtElement = spand[0] del enKontainer[0] return EtElement def LaegI(etElement,enKontainer): enKontainer.append(etElement) def FyldI(etIndhold): return etIndhold def DerErNogetI(enKontainer): return enKontainer <> [] def ErLukket(etElement): return etElement == 0 def KoekkenTilstand(): print '''spandens indhold: %s. Grydens indhold: %s. Affaldsposens indhold: %s''' % (spand, gryde, affaldspose) Dokumentation: fortæller hvordan modulet kan bruges

34 Et program der bruger muslingemodulet import muslingemodul spand = FyldI([1,0,0,1,0,1,0,0]) # gryde og affaldspose er tomme i starten gryde = FyldI([]) affaldspose = FyldI([]) # sålænge der er muslinger i spanden while DerErNogetI(spand): # tag en musling op enmusling = TagOpAf(spand) # hvis muslingen er lukket if Erlukket(enmusling): #så læg muslingen i gryden LaegI(enmusling,gryde) else: #læg muslingen i affaldsposen LaegI(enmusling,affaldspose) Vi kan nu næsten skrive programmet i det sprog som hører til muslingetilberedning

35 Hvad skete der? Vi fik skabt cohæsion  Coherence occurs when the meaning of the text can be arranged in simple symmetrical structures within a limited set of dimensions. The set of dimensions is normally called the isotopy of the text, because they are meanings that recur as a part of many sentences and words. Symmetrier:  TagOpAf(enKontainer) vs  LaegI(etElement,enKontainer) Isotopier:  I eller ikke i en kontainer  Åben eller lukket

36 Janus tegn Funktionskaldet repræsenterer  Den kode der eksekveres når vi møder kaldet  Den betydning programmet har i problemområdet O: muslingerR: kaldet O: lister I: madlavning I: programmering TagOpAf(spand) EtElement = spand[0] del enKontainer[0] return EtElement Tage en musling op af spanden

37 Kommentarer & Docstring Kommentarer i pythonprogrammer starter med # Kommentarer ignoreres af fortolkeren Docstring er en kommentar der gemmes med koden def funktion():  “”” Dette er en docstring “””  pass

38 Docstring dir() dir(str), dir(list) help(str.startswith) Dir(muslingemodul) Help(muslingemodul) Help(muslingemodul.LaegI)

39 Dokumentation og hjælp >>> help(muslingemodul)  Help on module muslingemodul:  NAME muslingemodul  FILE c:\python24\pythonfiles\37\muslingemodul.py  DESCRIPTION Dette modul tilvejebringer metoder til tillavning af muslinger TagOp: Liste --> element LeagI: Liste, Element --> ingenting. Tilføjer elementet til listen FyldI: Liste,Liste. Returnere Liste HarIndhold: Liste --> True eller False. Sand hvis listen ikke er tom ErLukket: Element --> True eller False. Sand hvis elementet er 0 KoekkenTilstand(). Printer køkkentilstanden ud  FUNCTIONS ErLukket(etElement) FyldI(etIndhold) HarIndhold(enKontainer) KoekkenTilstand() LaegI(enKontainer, etElement) TagOp(enKontainer)

40 Docstrings I muslingemodulet def LaegI(etElement,enKontainer):  '''læg noget ned i kontainer'''  enKontainer.append(etElement) >>> help(muslingemodul.LaegI) I det aktive vindue:  Help on function LaegI in module muslingemodul:  LaegI(etElement, enKontainer)  læg noget ned i kontainer

41 Obligatorisk opgave Emne: sætninger, udtryk, sandhedsværdier, kontrolstrukturer, funktioner, kommentarer Obl øvelse 2. Skriv et program der åbner en tekstfil og tæller hvor mange linjer og ord der er i den: >>> python opg2-XXXX.py... Indtast filnavn: Test.txt... Filen indeholder: 34 linjer og 354 ord.


Download ppt "Introduktion til programmering Uge 38 Python 2 Learning Python, kap 8-12."

Lignende præsentationer


Annoncer fra Google