Programmeringscamp. Implementer funktionerne én for én og test hele tiden.



Relaterede dokumenter
Programmeringscamp Opbygning og specialisering af klassehierarki. Simulering af en kasselinje

Introduktion til datastrukturer. Philip Bille

Klasser og Objekter i Python. Uge 46 Learning Python: kap 15-16,

Introduktion til datastrukturer

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer

klient Webside Forespørgsel/ Nye data Python program Database kommando svar Database

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer

Stakke, køer og lidt om hægtede lister - kapitel 16 og 17

Øvelse 9. Klasser, objekter og sql-tabeller insert code here

Stakke, køer og lidt om hægtede lister

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi

Abstrakte datatyper C#-version

<meta name="dcs.dcssta" content="404"/>

I denne artikel vil vi bruge en User klasse som vi så vil gruppere på forskellige måder.

Python programmering. Per Tøfting. MacFest

Lær Python - Dag 4, modul 2 Objektorienteret programmering

Lær Python dag 1 - modul 1

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.

klient Webside Forespørgsel/ Nye data Python program Database kommando svar Database

Orienterede grafer. Orienterede grafer. Orienterede grafer. Orienterede grafer

DM01 DM Obl. Afl. Jacob Christiansen, , D12, Elias 18/ Side 1 af 11

Introduktion til funktioner, moduler og scopes i Python

Aarhus Universitet, Science and Technology, Computer Science. Exam. Wednesday 27 June 2018, 9:00-11:00

Orienterede grafer. Introduktion Repræsentation Søgning Topologisk sortering og DAGs Stærke sammenhængskomponenter Implicitte grafer.

Tredjepart webservices

It og informationssøgning Forelæsning 7 1. november 2006 Jakob Grue Simonsen. Indlejring og Nedarvning

JEM1 LAB14. Journal. Jonas Lange, Martin Funding Fisker og Torben Porsgaard 11/4/2009

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 4

Skriftlig eksamen i Datalogi

Programmering og Problemløsning, 2017

PHP 3 UGERS FORLØB PHP, MYSQL & SQL

IBM WebSphere Operational Decision Management

DM507 Algoritmer og datastrukturer

Netværk & elektronik

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

public Set(int size) { this.listelement = new LinkedList<Integer>(); }

Software 1 with Java. Recitation No. 7 (Servlets, Inheritance)

Orienterede grafer. Orienterede grafer. Orienterede grafer. Vejnetværk

Opgaven fortsat. Opfølgning på Opgave 2 og Use Cases. Opgaven. Trin 1: Væsentlige begreber. Resultatliste: 100 bryst, herrer

SmartWeb Brugermanual

Løsning af møntproblemet

I profil-feltet kan imastra-kunder vælge om upload skal ske ligesom filerne var indsendt til mailboksen eller

Webside score digitalenvelopes.

Aarhus Universitet, Science and Technology, Computer Science. Mock Exam. Wednesday 27 June 2018, 9:00-11:00

It og informationssøgning Forelæsning december 2006 Jakob Grue Simonsen. Diverse emner af almen interesse

Design by Contract Bertrand Meyer Design and Programming by Contract. Oversigt. Prædikater

Programmering og Problemløsning, 2017

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007

It og informationssøgning Forelæsning november 2006 Jakob Grue Simonsen. Hypertekst og Python. Andersen & Simonsen: kap. 12

Klasser og Objekter i Python. Uge 11

Programmering I Java/C#

Internetsøgemaskiner. Gerth Stølting Brodal Datalogisk Institut Aarhus Universitet

DM507 Algoritmer og datastrukturer

3. PROJEKT, 2 SEMESTER

Webside score qbsupportcustomerservice.com

Python 3 kursus lektion 1:

IBM WebSphere Operational Decision Management

Danmarks Tekniske Universitet

DM507 Algoritmer og datastrukturer

Opfølgning på Dygtig Skildpadde (Michael) To algoritmeskabeloner

JSP, Tomcat. Tutorial lavet af Jákup W. Hansen TSU semester 10.october 2007

Tech College Aalborg. ASP.NET Hjemmeside. Projekt Smart Zenior Home - Guide til ASP.NET hjemmeside med Visual Studio

1. Redegør for Lister, stakke og køer mht struktur og komplexitet af de relevante operationer

b) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne.

Programmering for begyndere Lektion 2. Opsamling mm

3 Algebraisk Specifikation af Abstrakte Datatyper.

Danmarks Tekniske Universitet

Jeg har i forbindelse med it og programmering designet og udviklet et it-produkt, som kan beregne rødder i en anden gradsligning.

Webside score seo-haip.com

Tree klassen fra sidste forelæsning

Forelæsning 17, tirsdag 2. november 1999 Søgning efter en given værdi i en tabel. Programmering 1999

Civilingeniøreksamen januar Skriftelig prøve den 12. januar 2001 Kursusnummer 49104

DDD Runde 2, 2015 Facitliste

Danmarks Tekniske Universitet

Tracking af YouTube i Google Tag Manager og Universal Analytics (Seneste version)

Webside score assin.co

Kursus i OOP og Java. Kursus i Objektorienteret programmering i Java

dmasark Aflevering - Uge 50

Forelæsning Uge 5 Mandag

Det er muligt at chekce følgende opg. i CodeJudge: og

IT Support Guide. Installation af netværksprinter (direkte IP print)

Databaseadgang fra Java

Enigma. Et programmeringssprog. Forfatter: Niels Serup X. Y Vejleder: A B C. Fag: Programmering Uddannelsessted: N M

Forelæsning Uge 3 Mandag

Software Construction 1 semester (SWC) Spørgsmål 1

Da beskrivelserne i danzig Profile Specification ikke er fuldt færdige, foreslås:

Terminologi. Search Engine Marketing (SEM) Search Engine Optimization (SEO) Black Hat SEO White Hat SEO Pay Per Click (PPC)

Forelæsning Uge 4 Torsdag

Mbridge tilmeldingssystem Version Vejledning.

Webside score templatedownload.org

Øg sporbarhed og produktivitet gennem integration

BRP Kursusintroduktion og Java-oversigt

Webside score printersupportnu mbercare.blogspot.com

IBM WebSphere Operational Decision Management

Quiz Creator - Faciliteter

Opsætning (GIS udbyder)

PHP Snippets. De små korte. Skrevet af Daniel Pedersen

Transkript:

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 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 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 1.1. 1.2 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('www.dmi.dk', '/dmi/index/danmark/regionaludsigten/ostjylland.htm') Server = 'www.dmi.dk', 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 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="http://www.xs4all.com/" title="web and email hosting provided by xs4all, netherlands">hosting by xs4all</a> <a href="http://www.pollenation.net/" 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 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('www.python.org', '/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