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

Slides:



Advertisements
Lignende præsentationer
Velkommen til Softwarekonstruktion
Advertisements

Udsagn (propositioner)
Introduktion til programmering
Indledende Programmering Uge 2 - Efterår 2006 Selektioner og interaktion mellem objekter Susanne Brix Lindros.
KONCEPT Klasser og objekter En klasse beskriver et World ArrayList
Symbolsk maskinsprog.
NP struktur - Eller hvordan engelsk er nominelt, mens dansk er verbalt.
Intro Forelæsning 2 Linux install-party lør.14.sept kl – man. 14.okt – Kursets omfang :7,5 ECTS Kursussammensætning: forelæsning.
Array vs. ArrayList. Arrays Et array er en struktureret metode til at gemme flere værdier af den samme datatype. Data’en i et array ligger op ad hinanden.
Grundlæggende programmering Efterår 2001
Hvordan man skriver koden.
Opret en database i Reference Manager, ver. 11 Åbn programmet. Opret en ny database. Placér basen ude på ”skrivebordet ” (kun i denne sammenhæng – da baserne.
Introduktion til programmering Uge 40 Python 2 Learning Python, kap 8-12.
Indledende Programmering Uge 5 - Efterår 2006 Om at udvikle korrekte og pålidelige programmer Susanne Lindros.
GP5, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 5 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi begynder.
GP 10, 7/ Grundlæggende programmering Efterår 2001 Forelæsning 10 onsdag 7/ kl. 9:15 – 12:00.
FEN IntroJava AAU1 Java grundelementer Variable og datatyper Sætninger og udtryk Metoder.
Intro Projekttyper v/ Lise Louv, Uddannelsesafdelingen Siden sidst: evaluering på opgaver og virtuel kursus. Kursets ugeforløb læse – forelæsning – øvelsestime.
Delphi og C++ Builder C++ Referencer og pointere.
Intro til C# apps Kodegennemgang af simpel C# app
Delphi og C++ Builder C++ Builder. C++ Historie Sproget blev designet for AT&T af danskeren Bjarne Stoustrup En objektorienteret videreudvikling.
Program Design – 4 Introduktion til PHP. Dagens lektion Hvad er PHP?  - og lidt historie Hvordan virker PHP? Grundlæggende PHP  Variable  Typer  Løkker.
W1b1 PC baseret analyse og simulering. w1b2 Definition Digital Elektronisk beregningsmaskine, der har intern hukommelse til lagring af program og mellem-regninger.
1 PC baseret dataanalyse og simulering Week2 A. 2 SAS input/output filer Inddata -textfil - SAS-program -textfil- SAS datasæt SAS system SAS listing -print.
Lektion 7 Læsestof: Kopier fra Caranno
1 JavaScript Lektion 6: Repetition i JavaScript Math TIDY Litteratur: JST lektion 10.
FEN KbP/seminar 1: Specifikationer/Notationen Q 1 Kontraktbaseret programmering: Seminar 1 Om specifikationer Algoritmenotationen Q.
Procestræ under afvikling af cp init login shell cp cp src dest.
DIEB4.1 Kursusgang 4 Oversigt: Sidste kursusgang Opgaver Aktivitet 2: Generer design (fortsat) Design af interaktionselementer.
Paradigmer i Programmering 2. Sammensatte typer Tupler og lister Programmering med rekursion Programmering med pipe-lines Programmering med polymorfe.
Paradigmer i Programmering 1. Program for idag : Funktioner og udtryk i SML : Øvelse : Frokost – 14.00: Deklarative.
Begreber og Redskaber 7. Plan for idag Rekursive underprogrammer Rekursive datastrukturer Rekursion vs iteration Rekursivt: Flette sortering.
8 RÅD VEDRØRENDE GOD PROGRAMMERING Effective (brown) Java.
FEN IntroJava AAU1 Klasser og objekter Grundbegreber Student-Course.
Paradigmer i Programmering 1. Plan for kurset 4 x Mads R, 4 x Torben B, 2 x opgave MR: Funktionsprogrammering, SML TB: Logikprogrammering, Prolog Opgave:
KF04 GRAY Item 2, 12, 22, 32, 42, 52. Consider a builder when faced with many constructor parameters Item 2.
C#: Udtryk og metoder Kilde: Joe Hummel. 2 Nordjyllands Erhvervakademi – 2008 Indhold “With regards to programming statements and methods, C# offers what.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
PD – kursusgang 3 Introduktion til Java Script. Mål Viden om hvordan JavaScripts indlejres i HTML dokumenter Viden om programmering i JavaScript  Erklæring.
Intro Siden sidst: evaluering på opgaver og virtuel kursus.
Intro Siden sidst: evaluering på opgaver og virtuel kursus Kursussammensætning: forelæsning – læse – arbejde selvstændigt – newsgroup – øvelsestime – aflevering.
GP4, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 4 Vi begynder Slides ligger på hjemmesiden. Du er velkommen til.
9. Interfaces. 2 Nordjyllands Erhvervakademi Objectives “Good class design starts with good application design — how many classes, do they relate.
Paradigmer i Programmering 3. Højere ordens funktioner Idag: Højere ordens funktioner Algebraiske datatyper Næste gang: I/O, Filer, interaktive programmer.
Effective Java Blå gruppe. Item 18: Interfaces frem for abstrakte klasser Kan implementeres i klasser der ikke nedarver Eksisterende klasser kan nemt.
Begreber og Redskaber 4. Plan for idag Om metoder, parametre, returværdier Et par ord om objekt-orientering Håndkøring af programmer.
Begreber og Redskaber 3. Plan for idag Om metoder, parametre, returværdier Overblik over klasser,objekter,nedarvning Et par ord om objekt-orientering.
Quiz 3.1. Quiz 1 – Assignment dIntProg, E14 Hvad er værdierne af x og y efter udførelse af følgende program? 1.x er 6, y er 3 2.x er 8, y er 5 3.x er.
Fundamentale sprogbegreber Sætninger og udtryk Niveauer af programbeskrivelse (statisk versus dynamisk syn)
DAIMIIntroducerende objektorienteret programmering4B.1 Typer og tilstand i Java Typer, tilstand, erklæring, variable, primitive datatyper, reference- og.
Klasser og objekter. dIntProg, E08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
DAIMIIntroducerende objektorienteret programmering3B.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
DAIMIIntroducerende objektorienteret programmering4B.1 Grundlæggende og Reference Typer i Java Typer, tilstand, erklæring, reference- og værdi semantik,
Indledende Programmering Uge 6 - Efterår 2006
Klasser og objekter – grundbegreber.  Michael E. Caspersen, 2001Introducerende objektorienteret programmeringKlasser og objekter.2 Klasser og objekter.
Klasser og objekter. dIntProg, F08Klasser og objekter.2 Grundbegreber Klasser og objekter –beskrivelse –oprettelse Attributter og metoder –tilstand –opførsel.
Jesper Mosegaard Multimedie Programmering E2003 MMProg uge44 Java til Lingo Klasser, statements og lister.
Forelæsning Uge 2 – Torsdag Java syntax og style guide Sætninger –Simple sætninger (assignment, interne og eksterne metodekald) –Sammensatte sætninger.
Forelæsning Uge 2 – Torsdag
Lav et nyt projekt og tilføj denne gang pakken Graphic LCD.
Quiz – Uge 2 – torsdag – første time
Forelæsning Uge 2 – Mandag
”Avanceret” Programmering
IOT – Elkedel på internettet
Studiepraktik Thomas Bøgholm Mikkel Hansen Jacob Elefsen
Dokumentation.
Programmering.
Quiz Uge 2 – mandag.
Forelæsning Uge 2 – Mandag
Forelæsning Uge 4 – Torsdag
Præsentationens transcript:

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

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

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

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  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

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

'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

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

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 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. >>> == 4  True >>> 'Peter' == 'Karl’  False >>> 'Peter' <> 'Karl’  True

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

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

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

Naturlige sprog og logiske Naturlige sprog lægger en årsagsfortolkning ind i hvis-så Hvis = 5, så vinder socialdemokraterne næste valg  Logisk: altid sand fordi = 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

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 :

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

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)

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

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

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

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 []

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

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.

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)

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.

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]

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

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

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)

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()

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.

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)

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()

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.

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

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

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

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

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

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

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)

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

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.