Programmeringscamp. Implementer funktionerne én for én og test hele tiden.
|
|
|
- Børge Asmussen
- 10 år siden
- Visninger:
Transkript
1 Programmeringscamp De to opgaver træner begge i at lave moduler som tilbyder services der kan bruges af andre, samt i at implementere services efter en abstrakt forskrift. Opgave 1 beder jer om at implementere den abstrakte datastruktur en kø. Opgave 2 beder jer om at implementere pseudokode der specificerer søgninger i websider. Abstrakte datastrukturer og pseudokode blev gennemgået i uge 44. Mens I udvikler modulerne er det nemmeste at teste funktionerne i selve modulet: Definition af funktioner.. if name == " main ": test af funktioner. Implementer funktionerne én for én og test hele tiden. Opgave 1. Implementering af en kø Opgaven træner i at implementere en abstrakt datastruktur og i at indkapsle den så andre kan bruge det. Den abstrakte datastruktur skal være en kø: En kø er FIFO: first in first out Har følgende metoder: enqueue(elem) indsæt et element bagerst i køen og returner det dequeue() fjern elementet forrest i køen og returner dette. size() returner tal der angiver køens længde isempty() returner Boolean der angiver om køen er tom I behøver kun lave: enqueue, size, og isempty. tail head
2 2 Tail Head Lav et modul queuemodule hvor følgende klasser er defineret: class element: def init (self,name): self.name = name self.next = None class queue: def init (self): self.tail = None self.head = None Tail peger på køens hale (den sidst tilkomne), head på køens hoved (den først tilkomne). Man laver en ny kø ved at skrive queue() og et nyt element ved at skrive element(navn), f.eks. element( Hansen ) Modulet skal tilbyde følgende services på køer: def enqueue(queue,anelement): '''add anelement as the tail for the queue and return it''' def dequeue(queue): '''remove the head of the queue and return it''' def size(queue): '''return the size of the queue''' def isempty(queue): '''return true if the queue is empty''' Skriv et andet modul der importerer kømodulet. from queuemodule import * Det nye modul skal indeholde følgende kommandoer der bruger jeres implementation print 'lav ny koe' dagligbrugsen = queue() print 'Er koeen tom?', isempty(dagligbrugsen) print 'indsaet tre elementer' enqueue(dagligbrugsen,element('hansen')) enqueue(dagligbrugsen,element('karlsen')) enqueue(dagligbrugsen,element('jensen')) print 'Er koeen tom?', isempty(dagligbrugsen)
3 3 Og give følgende output lav ny koe Er koeen tom? True indsaet tre elementer Er koeen tom? False Stoerrelse = 3 Stoerrelse = 2 Stoerrelse = 1 Stoerrelse = 0 Stoerrelse = 0 Husk at opdatere køens variable head og tail. Faldgruber i dequeue: Hvad skal der ske hvis vi kalder funktionen på en tom kø? Hvad skal der ske når vi fjerner det sidste element i køen og den bliver tom? Opgave 2. Lav et modul der downloader en webside og søger i den Opgaven træner i at implementere pseudokode samt at indkapsle services i et modul ordfindermodul så andre kan bruge dem. I behøver kun lave er frivilling. 1.1 Obligatorisk Modulet skal indeholde følgende. Det starter med: import httplib def getwebpage(server,url): '''server er navnet pa en server. Url er dokumentets url. Returnerer HTMLkoden som en string. Hvis der opstaar fejl returneres den tomme string og fejlinformation printes ud Man faar fat i websitets indexside ved at saette url til den tomme streng''' connectionobject = httplib.httpconnection(server)#get the server connectionobject.request("get", url)#send a request result = connectionobject.getresponse()#get the response status = result.status if status == 200: #OK return result.read() else: #not OK print result.status, result.reason return '' Hvis vi vil fiske DMI s side om østjyllands vejr frem skriver man: thepage = getwebpage(' '/dmi/index/danmark/regionaludsigten/ostjylland.htm') Server = ' url = '/dmi/index/danmark/regionaludsigten/ostjylland.htm' Dernæst skal det indeholde følgende funktioner, beskrevet i pseudokode: findtags(atext,starttag, endtag) '''returnerer en liste af alle forekomster af starttag...starttag i atext Ved soegning efter links kan starttag f.eks. vaere = <a og sluttag vaere </a>'''
4 4 initialiser taglisten lav alle bogstaver om til lowercase. Find er case-sensitiv find positionen af første forekomst af start-tag mens vi har fundet et start-tag find slut-tag'et fra en position efter start-taget hvis vi fandt et slut-tag tilfoej hele tag'et til taglisten led efter nyt start-tag fra en position efter slut-taget ellers vi kunne ikke finde tag'et. Hop ud af løkken returner taglisten I skal bruge funktionen find til at løse opgaven. Find er en metode hos typen string. Den kaldes: S.find(sub [,start [,end]]), hvor S er en string, sub er den tekst man vil finde, start angiver den position hvorfra søgningen starter, end den position hvor søgningen slutter. Funktionen returnerer sub s startposition. 'Peter boegh Andersen'.find('boegh') giver f.eks. resultatet 6. Hvis sub ikke kan findes, returneres -1. Find er case-sensitiv. Et muligt output fra funktionen kan være: <a href="/about/website">website maintained by the python community</a> <a href=" title="web and hosting provided by xs4all, netherlands">hosting by xs4all</a> <a href=" title="design and content management system by pollenation internet, yorkshire">design by pollenation</a> Man kan f.eks. forestille sig funktionen brugt af en såkaldt webcrawler der systematisk leder nettet igennem efter websider den kan indeksere. Den vil bruge de fundne hyperlinks til at downloade nye websider. Implementer følgende pseudokode: 1.2 Frivillig def findwords(atext, wordlist): '''finder ordne i wordlist i atext. Returnerer en citationsliste med ordenes kontekst''' lav alle bogstaver i wordlist om til lowercase. Find er case-sensitiv initialiser citationslisten for alle ord i ordlisten find foerste forekomst af ordet i atext mens ordet blev fundet tilfoej fundkonteksten til citationslisten find naeste forekomst af ordet i atext returner citationslisten Fundkonteksten laves på følgende måde: def makecontext(awordposition,atext): '''returner 20 bogstaver foran og efter ordpositionen''' hvis positionen er udenfor teksten returner den tomme streng ellers find starten af konteksten find slutningen af konteksten returner atext[start:slutning] Output af findwords, der leder efter ordet python, kan f.eks. være: ally, support other python conferences a the world, and fund python related devel ="about/">about the python software found o:psf%40python.org">psf< sf<span>@</span>python<span>.</s for questions about python, please write :help%40python.org">help lp<span>@</span>python<span>.</s for comments on the python.org web pages
5 5 Faldgruber i makecontext: hvad skal der ske, hvis der er mindre end 20 bogstaver foran findestedet, eller mindre end 20 bogstaver efter findestedet? Man kan forestille sig funktionen brugt af politiet der leder efter sider med børnepornografi. I skal dernæst lave et nyt modul der importerer jeres modul og anvender dets services. F.eks. således: from ordfindermodul import * thepage = getwebpage(' '/psf/') #print thepage linkliste = findtags(thepage,'<a', '</a>')#finder alle hyperlinks for link in linkliste: print link citations = findwords(thepage, ['python','website'])#leder efter ordene python og website for citation in citations: print citation
Programmeringscamp Opbygning og specialisering af klassehierarki. Simulering af en kasselinje
Programmeringscamp Opgave 9 var helt tydeligt for svær det var imponerende at 7 faktisk afleverede! Vi bruger uge 48 til at gå lidt grundigere igennem objektorienteret programmering, specielt teknikken
Klasser og Objekter i Python. Uge 46 Learning Python: kap 15-16, 19-22.
Klasser og Objekter i Python Uge 46 Learning Python: kap 15-16, 19-22. Klasser og objekter En klasse beskriver en klump af samhørende funktioner og variable En klasse er en beskrivelse. En kage form Klassens
Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer
Introduktion til datastrukturer Introduktion til datastrukturer Philip Bille Datastrukturer Datastruktur. Metode til at organise data så det kan søges i/tilgås/manipuleres effektivt. Mål. Hurtig Kompakt
klient Webside Forespørgsel/ Nye data Python program Database kommando svar Database
Øvelse 10. Dynamiske web-sider og cgi-modulet I denne opgave skal vi bygge de foregående opgaver sammen til en mini-udgave af det samlede system I skal aflevere til vintereksamen. klient Forespørgsel/
Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer
Introduktion til datastrukturer Introduktion til datastrukturer Philip Bille Datastrukturer Datastruktur. Metode til at organise data så det kan søges i/tilgås/manipuleres effektivt. Mål. Hurtig Kompakt
Øvelse 9. Klasser, objekter og sql-tabeller insert code here
Øvelse 9. Klasser, objekter og sql-tabeller Denne opgave handler om hvordan man opbevarer data fra databasekald på en struktureret måde. Den skal samtidig give jer erfaringer med objekter, der kommer til
Skriftlig eksamen i Datalogi
Roskilde Universitetscenter side 1 af 9 sider Skriftlig eksamen i Datalogi Modul 1 Vinter 1999/2000 Opgavesættet består af 6 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 5% Opgave 2
Skriftlig eksamen i Datalogi
Roskilde Universitetscenter Skriftlig eksamen i Datalogi Modul 1 Sommer 1999 Opgavesættet består af 5 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 15% Opgave 2 15% Opgave 3 8% Opgave
Abstrakte datatyper C#-version
Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Abstrakte datatyper C#-version Finn Nordbjerg 1/9 Abstrakte Datatyper Denne note introducerer kort begrebet abstrakt datatype
Python programmering. Per Tøfting. MacFest
Python programmering MacFest 2005 Per Tøfting http://pertoefting.dk/macfest/ Indhold Måder at afvikle Python program på Variabler Data typer Tal Sekvenser Strenge Tupler Lister Dictionaries Kontrolstrukturer
Lær Python - Dag 4, modul 2 Objektorienteret programmering
Lær Python - Dag 4, modul 2 Objektorienteret programmering Simon J. Larsen 28. oktober 2017 Institut for Matematik og Datalogi Metoder Metoder Indtil videre har vi kun brugt objekter til at gemme værdier.
Lær Python dag 1 - modul 1
Lær Python dag 1 - modul 1 Introduktion, basis python Steffen Berg Klenow Jonas Bamse Andersen Syddansk Universitet Indhold 1. Velkommen 2. Programmering i python 3. Typer, variabler og udtryk 1 Velkommen
2. Husk at give execute-tilladelser. I Filezilla højreklikker I på den overførte file, så vælger I fileattributes og sætter kryds i execute.
Øvelse 10. Dynamiske web-sider og cgi-modulet I denne opgave skal vi bygge de foregående opgaver sammen til en mini-udgave af det samlede system I skal aflevere til vintereksamen. I får udleveret et lille
klient Webside Forespørgsel/ Nye data Python program Database kommando svar Database
Øvelse 12. Dynamiske web-sider og cgi-modulet Teori: CGI Øvelse: anvendelse af cgi-modulet. I denne opgave skal vi bygge de foregående opgaver sammen til en mini-udgave af det samlede system I skal aflevere
Introduktion til funktioner, moduler og scopes i Python
Denne guide er oprindeligt udgivet på Eksperten.dk Introduktion til funktioner, moduler og scopes i Python Denne artikel er fortsættelsen af "I gang med Python", som blevet publiceret her på sitet for
Tredjepart webservices
Tredjepart webservices 4. juni 2015 USS Dok. Klik her for at angive tekst. 1/12 Indholdsfortegnelse Introduktion... 3 Miljøer... 3 Adgang... 3 API kald... 4 GET: /authorizations... 4 Input 4 Output 4 Output
Programmering og Problemløsning, 2017
Programmering og Problemløsning, 2017 Martin Elsman Department of Computer Science University of Copenhagen DIKU September 27, 2017 Martin Elsman (DIKU) Programmering og Problemløsning, 2017 September
PHP 3 UGERS FORLØB PHP, MYSQL & SQL
PHP 3 UGERS FORLØB PHP, MYSQL & SQL Uge 1 & 2 Det basale: Det primære mål efter uge 1 og 2, er at få forståelse for hvordan AMP miljøet fungerer i praksis, og hvordan man bruger PHP kodesproget til at
DM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 20. marts, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
Netværk & elektronik
Netværk & elektronik Oversigt Ethernet og IP teori Montering af Siteplayer modul Siteplayer teori Siteplayer forbindelse HTML Router (port forwarding!) Projekter Lkaa Mercantec 2009 1 Ethernet På Mars
Introduktion til programmering. Uge 38.1 Python 2 Learning Python, kap 8-12.
Introduktion til programmering Uge 38.1 Python 2 Learning Python, kap 8-12. Opsummering Store dele af Python kan forstås gennem følgende simple model: En repræsentation/udtryk står for et objekt/en værdi
Opgaven fortsat. Opfølgning på Opgave 2 og Use Cases. Opgaven. Trin 1: Væsentlige begreber. Resultatliste: 100 bryst, herrer
Opfølgning på Opgave 2 og Use Cases originally by Michael R. Hansen modified/extended by Anne E. Haxthausen Informatics and Mathematical Modelling Technical University of Denmark Opgaven fortsat Efter
SmartWeb Brugermanual
SmartWeb Brugermanual Table of Content Table of Content... 1 Best Practice SmartWeb:... 2 Implementering... 4 Egenskaber:... 5 Filer:... 7 Oprettelse af Kategori... 9 Sider og Tekster:... 11 Slideshow...
Løsning af møntproblemet
Løsning af møntproblemet Keld Helsgaun RUC, oktober 1999 Antag at tilstandene i problemet (stillingerne) er repræsenteret ved objekter af klassen State. Vi kan da finde en kortest mulig løsning af problemet
Programmering og Problemløsning, 2017
Programmering og Problemløsning, 2017 Typer og Mønstergenkendelse Martin Elsman Datalogisk Institut Københavns Universitet DIKU 23. Oktober, 2017 Martin Elsman (DIKU) Programmering og Problemløsning, 2017
AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007
AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007 Opgavebesvarelsen skal afleveres som enten en printerudskrift eller som et passende dokument sendt via email til [email protected]. Besvarelsen skal
Klasser og Objekter i Python. Uge 11
Klasser og Objekter i Python Uge 11 Klasser og objekter En klasse beskriver en klump af samhørende funktioner og variable En klasse er en beskrivelse. Klassens objekter er instanser af klassen. En programudførelse
Programmering I Java/C#
Programmering I Java/C# Dit første projekt Datatekniker Intro to C# C# (C Sharp) Et enkelt, moderne, generelt anvendeligt, objektorienteret programmeringssprog Udviklet af Microsoft, ledet af danskeren
DM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 13. marts, 2018 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
3. PROJEKT, 2 SEMESTER
3. PROJEKT, 2 SEMESTER Bruger undersøgelse, af sociale medie. KENDSKAB TIL OG BRUG AF ONLINE SOCIALE MEDIER FORENINGEN AF DANSKE INTERAKTIVE MEDIER, FÅET TIL OPGAVE AT AFDÆKKE DANSKERNES BRUG AF SOCIALE
Python 3 kursus lektion 1:
Python 3 kursus lektion 1: Her laves et nyt program Her køre programmet! Her skrives koden: Gem (CTRL-s) Tryk F5 (for at køre) www.madsmatik.dk d.14-01-2016 1/5 At skrive til skærmen: Hello World Man kan
DM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2012 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 15. marts, 2012 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
1. Redegør for Lister, stakke og køer mht struktur og komplexitet af de relevante operationer
1. Redegør for Lister, stakke og køer mht struktur og komplexitet af de relevante operationer på disse. Typer af lister: Array Enkelt linket liste Dobbelt linket Cirkulære lister Typer af køer: FILO FIFO
Programmering for begyndere Lektion 2. Opsamling mm
Lektion 2 Opsamling mm God tone Der er indlagt spørge sessioner Lektion 2 - Agenda Programmering for Lidt ændringer til teknikken, herunder hvordan du genser en lektion Lidt generelle tilbagemeldinger
3 Algebraisk Specifikation af Abstrakte Datatyper.
3 Algebraisk Specifikation af Abstrakte Datatyper. Specifikation kontra program. Bestanddele af en algebraisk specifikation. Klassificering af funktioner i en ADT. Systematisk definition af ligninger.
Jeg har i forbindelse med it og programmering designet og udviklet et it-produkt, som kan beregne rødder i en anden gradsligning.
Indhold Beregn rødder... 2 Beskrivelse af kærneproblemet... 2 Plan for brugerfladen for programmet... 3 Operationer på inddata... 4 Output - Beskrivelse af uddata... 4 Flowchart - programmets logiske opbygning/struktur...
Tree klassen fra sidste forelæsning
Programmering 1999 Forelæsning 12, fredag 8. oktober 1999 Oversigt Abstrakte klasser. Grænseflader. Programmering 1999 KVL Side 12-1 Tree klassen fra sidste forelæsning class Tree { int age; // in years
DDD Runde 2, 2015 Facitliste
DDD Runde 2, 2015 Facitliste Søren Dahlgaard og Mathias Bæk Tejs Knudsen Opgaver og løsninger til 2. runde af DDD 2015. 1 4. 19. februar, 2015 linetest DK v1.0 Line Test Sigurd er begyndt i gymnasiet og
Danmarks Tekniske Universitet
side af sider Danmarks Tekniske Universitet Skriftlig prøve, den 6. maj 0. Kursusnavn: Algoritmer og datastrukturer I Kursus nr. 005. Tilladte hjælpemidler: Skriftlige hjælpemidler. Varighed: timer Vægtning
Kursus i OOP og Java. Kursus i Objektorienteret programmering i Java
Kursus i OOP og Java Kursus i Objektorienteret programmering i Java Åben Dokumentlicens Dette foredragsmateriale er under Åben Dokumentlicens (ÅDL) Du har derfor lov til frit at kopiere dette værk Bruger
Det er muligt at chekce følgende opg. i CodeJudge: og
Det er muligt at chekce følgende opg. i CodeJudge:.1.7 og.1.14 Exercise 1: Skriv en forløkke, som producerer følgende output: 1 4 9 16 5 36 Bonusopgave: Modificer dit program, så det ikke benytter multiplikation.
IT Support Guide. Installation af netværksprinter (direkte IP print)
IT Support Guide Denne guide er hentet på www.spelling.dk Program: Microsoft Windows Vista Program sprog version: ENG (US) Guide emne: Installation af netværksprinter (direkte IP print) Publikationsnr.:
Databaseadgang fra Java
Databaseadgang fra Java Grundlæggende Programmering med Projekt Peter Sestoft Fredag 2007-11-23 Relationsdatabasesystemer Der er mange databaseservere Microsoft Access del af Microsoft Office MySQL god,
Enigma. Et programmeringssprog. Forfatter: Niels Serup X. Y Vejleder: A B C. Fag: Programmering Uddannelsessted: N M
Enigma Et programmeringssprog Forfatter: Niels Serup X. Y Vejleder: A B C Fag: Programmering Uddannelsessted: N M 25. maj 2010 Indholdsfortegnelse Indledning 3 Sproget 3 Syntax.............................................
Software Construction 1 semester (SWC) Spørgsmål 1
Spørgsmål 1 Objekter #1 Giv en kort præsentation af begrebet objekt, samt hvorledes du erklærer(declare), opretter(create) og bruger objekter Du kan beskrive o Datatyper o Variable / Instans variable /
BRP 6.9.2006 Kursusintroduktion og Java-oversigt
BRP 6.9.2006 Kursusintroduktion og Java-oversigt 1. Kursusintroduktion 2. Java-oversigt (A): Opgave P4.4 3. Java-oversigt (B): Ny omvendings -opgave 4. Introduktion til næste kursusgang Kursusintroduktion:
Opsætning (GIS udbyder)
Indholdsfortegnelse Opsætning (GIS udbyder)... 1 Opsætning (GeoServer)... 2 Opsætning (Skyhost WebPortalen)... 3 Udførelsen (Skyhost Webportalen)... 5 Udførelsen (Jobs Appen)... 8 Ekstern redigering af
PHP Snippets. De små korte. Skrevet af Daniel Pedersen
PHP Snippets De små korte Skrevet af Daniel Pedersen Indhold PHP Snippets De små korte er en samling af små og praktiske kode eksempler med kort forklaring, som med formål at kunne benyttes til opsalgsværk
