Kursusarbejde 4 Grundlæggende Programmering

Størrelse: px
Starte visningen fra side:

Download "Kursusarbejde 4 Grundlæggende Programmering"

Transkript

1 Kursusarbejde 4 Grundlæggende Programmering Arne Jørgensen, klasse dm032-1a 19. december 2003 Indhold 1. Kode Header-filer Queue.h Bog.h Bogsamling.h Klasseimplementeringer Queue.cc Bog.cc Bogsamling.cc Hovedprogram bibliotek.cc Om koden Afprøvning 11 A. Datafiler 11 A.1. bogsamling.txt A.2. reservationer.txt B. Hovedprogrammets frie funktioner 13 C. Driverprogram til test af kø 16

2 KURSUSARBEJDE 4, ARNE JØRGENSEN 2/ Kode 1.1. Header-filer Queue.h #ifndef QUEUE_H #define QUEUE_H #include <iostream> 5 struct frame int item; frame next; ; class Queue private: frame head, last; public: Queue(); // pre: post: an empty queue object is constructed 20 Queue(const Queue& q); // pre: post: the object and its data is copied 25 virtual ~Queue(); // pre: post: frees all allocated memory from the heap Queue& operator = (const Queue& q); // pre: post: the object has been assigned the values of f void add(const int& item); 30 // pre: post: item is added to the queue 35 int remove(); // pre: the queue must be non empty // post: returns the longest waiting element and removes it from the queue bool isempty() const; // pre: post: returns true if the queue is empty; returns false otherwise friend std::ostream& operator << (std::ostream& str, const Queue& q); 40 // pre: if str is a file is it opened // post: each item is written to str followed by a blank and terminated by \n ; 5 #endif // QUEUE_H Bog.h #ifndef BOG_H #define BOG_H #include <string> #include "queue.h" class Bog private: std::string isbn, forfatter, titel; 10 int antal_eksemplarer, udgivelsesaar, eksemplarer_hjemme; Queue reservationer; public: Bog(); 15 // pre: post: default constructor; object skabt uden betydende oplysninger i Bog(std::string titel_); // pre: post: objekt skabt med kun titel sat; primært til brug ved sammenligninger

3 KURSUSARBEJDE 4, ARNE JØRGENSEN 3/17 20 Bog(std::string isbn_, std::string forfatter_, std::string titel_, int antal_eksemplarer_, int udgivelsesaar_); // pre: post: objekt skabt med argumenter som oplysninger; eksemplarer hjemme sat til antal eksemplarer i alt; primært til nye bøger 25 Bog(std::string isbn_, std::string forfatter_, std::string titel_, int antal_eksemplarer_, int udgivelsesaar_, int eksemplarer_hjemme); // pre: post: objekt skabt med argumenter som oplysninger; primært til indlæsning af bøger fra fil Bog(const Bog& b); // copy constructor virtual ~Bog(); 30 Bog& operator = (const Bog& b); friend bool operator < (const Bog& b1, const Bog& b2); friend bool operator == (const Bog& b1, const Bog& b2); std::string hent_isbn() const; 35 std::string hent_forfatter() const; std::string hent_titel() const; int hent_antal_eksemplarer() const; int hent_udgivelsesaar() const; int hent_eksemplarer_hjemme() const; 40 Queue& hent_reservationer(); // pre: post: returnerer reservations køen bool udlaan(); 45 // pre: post: bogen registreres udlånt (og returnerer true) hvis der er eksemplarer hjemme; ellers false bool aflever(); // pre: post: bogen registreres hjemkommet (og returnerer true) hvis der er eksemplarer ude; ellers false 50 bool reserver(int laaner_id); // pre: laaner_id er et unikt id for låneren (ej implementeret nærmere i denne opgave) // post: låner er sat i reservationskø (og returnerer true) hvis alle ekseplarer er udlånt; ellers false ; 55 #endif // BOG_H Bogsamling.h #ifndef BOGSAMLING_H #define BOGSAMLING_H #include "bog.h" #include <fstream> class BogSamling private: Bog list; 10 int used, max; bool grow(); int find(const Bog& item); // pre: item indeholder (blot) titlen på den bog der ønskes fundet // post: returnerer positionen i arrayet; eller 1 hvis titlen ikke findes 15 void save(); // pre: post: gem bøger og reservationer til næste kørsel (persistens) void load(); 20 // pre: post: hent bøger og reservationer fra foregående kørsel (persistens) public: BogSamling(); BogSamling(const BogSamling& sl); 25 virtual ~BogSamling(); BogSamling& operator = (BogSamling& sl); 30 bool isempty() const; // pre: post: returnerer true hvis der ikke er bøger i samlingen; ellers false bool insert(bog& item); // pre: item er en bog med de nødvendige oplysninger sat // post: bogen indsættes hvis den ikke fandtes i forvejen (afgøres af titel); returnerer true hvis indsat; ellers false

4 KURSUSARBEJDE 4, ARNE JØRGENSEN 4/17 35 bool remove(bog& item); // pre: item er et objekt med (blot) titlen på den bog der ønskes fjernet // post: returnere true hvis bogen er fjernet; ellers (bogen fandtes ikke) false; item sættes samtidig til den fundne bog ; 40 #endif // BOGSAMLING_H 1.2. Klasseimplementeringer Queue.cc #include <cstdlib> #include "queue.h" Queue::Queue() 5 head = NULL; last = NULL; 10 Queue::Queue(const Queue& q) head = NULL; last = NULL; 15 frame temp = q.head; if (!q.isempty() ) add(temp >item); while ( temp >next ) 20 temp = temp >next; add(temp >item); ; 25 Queue::~Queue() int temp; 30 while (!isempty() ) temp = remove(); Queue& Queue::operator = (const Queue& q) 35 if (this == &q) return this; while (!isempty() ) 40 remove(); frame temp = q.head; if (!q.isempty() ) 45 add(temp >item); while ( temp >next ) temp = temp >next; add(temp >item); 50 ; 55 return this; void Queue::add(const int& item) frame temp; temp = new frame; 60 temp >item = item; temp >next = NULL; if ( isempty() )

5 KURSUSARBEJDE 4, ARNE JØRGENSEN 5/17 head = temp; else 65 last >next = temp; last = temp; int Queue::remove() 70 if ( isempty() ) exit(1); int item = head >item; frame temp = head; 75 head = temp >next; delete temp; return item; bool Queue::isempty() const return!head; std::ostream& operator << (std::ostream& str, const Queue& q) using namespace std; 90 frame temp = q.head; while (temp) str << temp >item << ' '; 95 temp = temp >next; ; return str; Bog.cc #include "bog.h" #include <string> #include "queue.h" 5 Bog::Bog() isbn = ""; forfatter = ""; titel = ""; 10 antal_eksemplarer = 0; udgivelsesaar = 0; eksemplarer_hjemme = 0; 15 Bog::Bog(std::string titel_) isbn = ""; forfatter = ""; titel = titel_; 20 antal_eksemplarer = 0; udgivelsesaar = 0; eksemplarer_hjemme = 0; 25 Bog::Bog(std::string isbn_, std::string forfatter_, std::string titel_, int antal_eksemplarer_, int udgivelsesaar_) isbn = isbn_; forfatter = forfatter_; titel = titel_; 30 antal_eksemplarer = antal_eksemplarer_; udgivelsesaar = udgivelsesaar_; eksemplarer_hjemme = antal_eksemplarer_;

6 KURSUSARBEJDE 4, ARNE JØRGENSEN 6/17 35 Bog::Bog(std::string isbn_, std::string forfatter_, std::string titel_, int antal_eksemplarer_, int udgivelsesaar_, int eksemplarer_hjemme_) isbn = isbn_; forfatter = forfatter_; titel = titel_; 40 antal_eksemplarer = antal_eksemplarer_; udgivelsesaar = udgivelsesaar_; eksemplarer_hjemme = eksemplarer_hjemme_; 45 Bog::Bog(const Bog& b) isbn = b.isbn; forfatter = b.forfatter; titel = b.titel; 50 antal_eksemplarer = b.antal_eksemplarer; udgivelsesaar = b.udgivelsesaar; eksemplarer_hjemme = b.eksemplarer_hjemme; reservationer = b.reservationer; 55 Bog::~Bog() / itentionally left blank... / Bog& Bog::operator = (const Bog& b) 60 if (this == &b) return this; isbn = b.isbn; forfatter = b.forfatter; 65 titel = b.titel; antal_eksemplarer = b.antal_eksemplarer; udgivelsesaar = b.udgivelsesaar; eksemplarer_hjemme = b.eksemplarer_hjemme; reservationer = b.reservationer; 70 return this; 75 bool operator < (const Bog& b1, const Bog& b2) return (b1.titel < b2.titel); bool operator == (const Bog& b1, const Bog& b2) return (b1.titel == b2.titel); std::string Bog::hent_isbn() const return isbn; 80 std::string Bog::hent_forfatter() const return forfatter; std::string Bog::hent_titel() const return titel; 85 int Bog::hent_antal_eksemplarer() const return antal_eksemplarer; int Bog::hent_udgivelsesaar() const return udgivelsesaar; int Bog::hent_eksemplarer_hjemme() const return eksemplarer_hjemme; 90 Queue& Bog::hent_reservationer() return reservationer; bool Bog::udlaan() if (eksemplarer_hjemme < 1) 95 return false; eksemplarer_hjemme ; return true; 100 bool Bog::aflever() if (eksemplarer_hjemme == antal_eksemplarer) return false; eksemplarer_hjemme++; 105 return true;

7 KURSUSARBEJDE 4, ARNE JØRGENSEN 7/17 bool Bog::reserver(int laaner_id) 110 if (eksemplarer_hjemme > 0) return false; reservationer.add(laaner_id); return true; Bogsamling.cc #include "bogsamling.h" #include <cstdlib> #include <iostream> #include "bog.h" namespace int initial_size = 50; int grow_by = 20; char bookfile = "bogsamling.txt"; 10 char resfile = "reservationer.txt"; BogSamling::BogSamling() 15 list = new Bog[initial_size]; used = 0; max = initial_size; load(); BogSamling::BogSamling(const BogSamling& sl) if (this == &sl) return; delete [] list; list = new Bog[initial_size]; for (int i=0; i < sl.used; i++) insert(sl.list[i]); BogSamling::~BogSamling() save(); 35 delete [] list; BogSamling& BogSamling::operator = (BogSamling& sl) 40 if (this == &sl) return this; delete [] list; list = new Bog[initial_size]; 45 for (int i=0; i < sl.used; i++) insert(sl.list[i]); 50 return this; bool BogSamling::grow() Bog temp; temp = new Bog[max+grow_by]; 55 for (int i=0; i < used; i++) temp[i] = list[i]; list = temp; delete temp; 60 max += grow_by; return true;

8 KURSUSARBEJDE 4, ARNE JØRGENSEN 8/17 bool BogSamling::isempty() const 65 return!used; bool BogSamling::insert(Bog& item) 70 if (find(item)!= 1) return false; if (used == max) 75 grow(); list[used] = item; Bog temp; 80 for (int i=used; i > 0; i ) if (list[i] < list[i 1]) temp = list[i]; list[i] = list[i 1]; 85 list[i 1] = temp; used++; 90 return true; bool BogSamling::remove(Bog& item) int index = find(item); 95 if (index == 1) return false; item = list[index]; 100 for (int i=index; i < used 1; i++) list[i] = list[i+1]; used ; 105 return true; int BogSamling::find(const Bog& item) // binaer soegning int start=0, stop=used; int mid; 110 while (start < stop) mid = ((stop start)/2)+start; if (list[mid] == item) return mid; 115 else if (list[mid] < item) start = mid+1; else stop = mid; 120 return 1; void BogSamling::save() 125 using namespace std; ofstream save_file(bookfile); ofstream res_file(resfile); 130 if (save_file.fail() res_file.fail()) return; for (int i=0; i < used; i++) 135 save_file << list[i].hent_isbn() << endl;

9 KURSUSARBEJDE 4, ARNE JØRGENSEN 9/17 save_file << list[i].hent_forfatter() << endl; save_file << list[i].hent_titel() << endl; save_file << list[i].hent_antal_eksemplarer() << endl; save_file << list[i].hent_udgivelsesaar() << endl; 140 save_file << list[i].hent_eksemplarer_hjemme() << endl; 145 res_file << list[i].hent_titel() << endl; res_file << list[i].hent_reservationer() << endl; res_file.close(); save_file.close(); 150 void BogSamling::load() using namespace std; ifstream load_file(bookfile); 155 ifstream res_file(resfile); string isbn, forfatter, titel; int antal_eksemplarer, udgivelsesaar, eksemplarer_hjemme; 160 if (load_file.fail() res_file.fail()) // silently ignore missing file(s) on start up return; while (!load_file.fail()) 165 getline(load_file, isbn); if (!load_file.fail()) getline(load_file, forfatter); 170 getline(load_file, titel); load_file >> antal_eksemplarer; load_file >> udgivelsesaar; load_file >> eksemplarer_hjemme; Bog temp(isbn, forfatter, titel, antal_eksemplarer, udgivelsesaar, eksemplarer_hjemme); 175 insert(temp); load_file.ignore(1000, '\n'); load_file.close(); 180 char next; int laaner_id; getline(res_file, titel); 185 while (!res_file.fail()) Bog temp(titel); remove(temp); res_file.get(next); 190 while (next!= '\n') res_file.putback(next); res_file >> laaner_id; temp.reserver(laaner_id); 195 res_file.get(next); res_file.get(next); insert(temp); getline(res_file, titel); 200 res_file.close(); 1.3. Hovedprogram bibliotek.cc #include "bogsamling.h" #include <iostream>

10 KURSUSARBEJDE 4, ARNE JØRGENSEN 10/17 int main_menu(); 5 void opret_bog(bogsamling& samling); void slet_bog(bogsamling& samling); void udlaan_bog(bogsamling& samling); void aflever_bog(bogsamling& samling); void reserver_bog(bogsamling& samling); 10 void vis_bog(bogsamling& samling); int main() BogSamling samling; 15 int valg; 20 do valg = main_menu(); switch (valg) case 1: opret_bog(samling); 25 break; case 2: slet_bog(samling); break; case 3: 30 udlaan_bog(samling); break; case 4: aflever_bog(samling); break; 35 case 5: reserver_bog(samling); break; case 6: vis_bog(samling); 40 break; 45 return 0; while (valg!= 7); 2. Om koden Opgaveløsningen er delt op i hovedprogram med tilhørende frie funktioner og tre klasser indeholdende containere mm. (bogsamling, bog og reservationskø). Bogsamlingen implementerer et sorteret, dynamisk array der kan indeholder bøger (objekter af klassen Bog). Det dynamiske array er valgt da det giver fleksibilitet med hensyn til størrelse i forhold til et statisk array. Bøgerne indsættes i arrayet sorteret efter titel hvilket kræver at operatorerne == og < er overloaded til at måle på titlen i bogklassen. Indsættelse og fjernelse af elementer i arrayet foretages i lineær tid, O(n) og søgning i arrayet kan foretages i tiden O(log 2 n). I bogklassen er implementeret de nødvendige attributter og medlemsfunktioner. Reservationskøen er implementeret som en attribut direkte i bogklassen (men dog med detaljerne i sin egen klasse). Det er valgt da reservationerne naturligt hører til som egenskaber ved bogen. Reservationskøen er implementeret som en hægtet liste. Den hægtede liste har det dynamiske arrays fordel med hensyn til fleksibilitet. I modsætning til et dynamisk array er det med en kø implementeret som en hægtet liste muligt både at foretage indsættelse og fjernelse af elementer i konstant tid, O(1). Persistens er opnået ved at lade bogsamlingens konstruktor indlæse de persistente data fra filer og lade sammes destruktor gemme dataene. Datafilernes opbygning kan ses og er beskrevet nærmere i appendiks A på den følgende side. Hovedprogrammet er opdelt ved at lade main-funktionen stå for kontrollen og de frie funktioner for brugerdialog udførelsen af den ønskede funktionalitet. De frie funktioner udfører generelt deres operationer på et bogobjekt ved at tage bogen ud af samlingen. Udfører de nødvendige operationer/manipulationer og derefter sætter bogen ind i samlingen igen. Netop til

11 KURSUSARBEJDE 4, ARNE JØRGENSEN 11/17 Figur 1: En bog oprettes. denne brug er remove-funktionen i bogsamlingsklassen (bogsamling.h, linje 35) implementeret med en call-byreference parameter. Af hensyn til pladsforbruget er pre- og post-betingelser på de mest simple og intuitive funktioner udeladt (fx på get- og set-funktioner, samt udvalgte konstruktorer, destruktorer og the big three). Desuden er de frie funktioner i hovedprogrammet flyttet til appendiks B på side Afprøvning Såvel det færdige program som de enkelte programdele har gennemgået en grundig afprøvning. Løbende under udviklingen er funktionaliteten af de enkelte klasser og komponenter afprøvet med mindre driver-programmer der tester grænsetilfælde mm. Et eksempel på sådan et test-program og dets udførsel kan ses i appendiks C på side 16. Som det fremgår viser kørslen det ønskede og forventede resultat. Ved at holde designet rent og grænseflader mellem programmets dele klare har det været muligt at føre grundig test af de enkelte dele og det har været nemt at lokalisere hvilke kodedele fejl har befundet sig i. Afprøvningen af det færdige program har ligeledes budt på diverse kørsler der afprøver grænsetilfælde mm. Fx er testen af persistensen bla. foretaget ved at gemme, indlæse og atter gemme dataene og derefter sammenligne datafilerne før og efter. Den færdige version består denne test Af figurerne 1 til 3 på side ses en række testscenarier og i appendiks A findes de tilhørende datafiler. De afsluttende test har ikke afsløret fejl eller mangler. A. Datafiler De persistente data skrives til to filer bogsamling.txt og reservationer.txt. Valget af to datafiler skyldes primært opgave formuleringen. I forhold til den valgte implementering i øvrigt ville det være lige så naturligt og tilmed mere overskueligt at skrive oplysninger om reservationerne på en bog sammen med bogens øvrige data. A.1. bogsamling.txt Dataene om en bog skrives med en oplysning per linje i filen. Rækkefølgen er betydende og de kan derfor indlæses igen i samme rækkefølge (det antages at filen altid er korrekt opbygget) George Orwell 1984

12 KURSUSARBEJDE 4, ARNE JØRGENSEN 12/17 Figur 2: Et reserveret bog bliver afleveret. Figur 3: Oplysninger vises om en bog.

13 KURSUSARBEJDE 4, ARNE JØRGENSEN 13/ Svend Åge Madsen Kvinden uden krop Jakob Ejersbo Nordkraft A.2. reservationer.txt Reservationerne skrives til filen over to linjer. Første linje indeholder titlen på bogen og anden linje lånernes id efterfulgt af et mellemrum. Bemærk at det er et efterfølgende mellemrum og der derfor også er et mellemrum efter det sidste låner id hvilket nødvendiggør en ekstra get under indlæsningen i bogsamling.cc, linje Kvinden uden krop Nordkraft B. Hovedprogrammets frie funktioner int main_menu() 50 using namespace std; int valg; cout << "\nprovinsbibliotek\n"; 55 cout << " \n"; cout << "1) Opret ny bog\n"; cout << "2) Slet bog\n"; cout << "3) Udlån bog\n"; cout << "4) Aflevér bog\n"; 60 cout << "5) Reservér bog\n"; cout << "6) Vis oplysninger om bog\n"; cout << "7) Afslut\n"; cout << "\nindtast dit valg: "; 65 cin >> valg; return valg; 70 void opret_bog(bogsamling& samling) using namespace std; string isbn, forfatter, titel; 75 int antal_eksemplarer, udgivelsesaar; cin.ignore(1000, '\n'); // ryd op på input streamen cout << "\nopret ny bog\n"; cout << " \n";

14 KURSUSARBEJDE 4, ARNE JØRGENSEN 14/17 80 cout << "ISBN-nummer: "; getline(cin, isbn); cout << "Forfatter: "; getline(cin, forfatter); cout << "Titel: "; 85 getline(cin, titel); cout << "Antal eksemplarer: "; cin >> antal_eksemplarer; cout << "Udgivelsesår: "; cin >> udgivelsesaar; 90 Bog temp(isbn, forfatter, titel, antal_eksemplarer, udgivelsesaar); if (samling.insert(temp)) cout << "\nbogen er oprettet.\n"; 95 else cout << "\nbogen er IKKE oprettet (den findes i forvejen).\n"; void slet_bog(bogsamling& samling) 100 using namespace std; string titel; 105 cin.ignore(1000, '\n'); // ryd op på input streamen cout << "\nslet bog\n"; cout << " \n"; cout << "Titel på bogen der ønskes slettet: "; getline(cin, titel); 110 Bog temp("", "", titel, 0, 0); if (samling.remove(temp)) cout << "\nbogen er slettet.\n"; 115 else cout << "\nbogen findes ikke og er derfor IKKE slettet.\n"; void udlaan_bog(bogsamling& samling) 120 using namespace std; string titel; 125 cin.ignore(1000, '\n'); // ryd op på input streamen cout << "\nudlån bog\n"; cout << " \n"; cout << "Titel på bogen der ønskes lånt: "; getline(cin, titel); 130 Bog temp("", "", titel, 0, 0); if (!samling.remove(temp)) 135 cout << "\nbogen findes ikke og er derfor IKKE lånt.\n"; return; if (temp.udlaan()) 140 cout << "\nbogen er nu udlånt.\n"; else cout << "\nbogen kunne ikke lånes da der ikke er flere eksemplarer hjemme.\n"; if (!samling.insert(temp)) 145 cout << "\nukendt fejl (ved indsættelse af udlånt bog).\n"; void aflever_bog(bogsamling& samling) 150 using namespace std; string titel;

15 KURSUSARBEJDE 4, ARNE JØRGENSEN 15/17 cin.ignore(1000, '\n'); // ryd op på input streamen 155 cout << "\naflevér bog\n"; cout << " \n"; cout << "Titel på bogen der ønskes afleveret: "; getline(cin, titel); 160 Bog temp("", "", titel, 0, 0); if (!samling.remove(temp)) cout << "\nbogen findes ikke og kan IKKE afleveres.\n"; 165 return; if (temp.aflever()) 170 cout << "\nbogen er afleveret.\n"; if ((temp.hent_reservationer()).isempty()) cout << "Bogen er IKKE reserveret." << endl; else cout << "Bogen er reserveret af (låner id): " << (temp.hent_reservationer()).remove() << endl; 175 else cout << "\nbogen kunne IKKE afleveres da der ikke er nogen eksemplarer udlånt.\n"; if (!samling.insert(temp)) 180 cout << "\nukendt fejl (ved indsættelse af afleveret bog).\n"; void reserver_bog(bogsamling& samling) 185 using namespace std; string titel; int laaner_id; 190 cin.ignore(1000, '\n'); // ryd op på input streamen cout << "\nreservér bog\n"; cout << " \n"; cout << "Titel på bogen der ønskes reserveret: "; getline(cin, titel); 195 Bog temp("", "", titel, 0, 0); if (!samling.remove(temp)) 200 cout << "Bogen findes ikke og er derfor IKKE reserveret.\n"; return; cout << "Reserver til (låner id): "; 205 cin >> laaner_id; if (temp.reserver(laaner_id)) cout << "\nbogen er reserveret.\n"; else 210 cout << "\nbogen er IKKE reserveret da der er flere eksemplarer hjemme.\n"; 215 if (!samling.insert(temp)) cout << "\nukendt fejl (ved indsættelse af reserveret bog).\n"; void vis_bog(bogsamling& samling) using namespace std; 220 string titel; cin.ignore(1000, '\n'); // ryd op på input streamen cout << "\nvis oplysninger om bog\n"; cout << " \n"; 225 cout << "Titel på bogen der ønskes vist: ";

16 KURSUSARBEJDE 4, ARNE JØRGENSEN 16/17 getline(cin, titel); Bog temp(titel); 230 if (!samling.remove(temp)) cout << "Bogen findes ikke og oplysninger kan derfor IKKE vises.\n"; return; 235 cout << endl; cout << "ISBN : " << temp.hent_isbn() << endl; cout << "Forfatter.....: " << temp.hent_forfatter() << endl; cout << "Titel : " << temp.hent_titel() << endl; 240 cout << "Udgivelsesår...: " << temp.hent_udgivelsesaar() << endl; cout << "Antal eksemplarer.: " << temp.hent_antal_eksemplarer() << endl; cout << "Eksemplarer hjemme: " << temp.hent_eksemplarer_hjemme() << endl; cout << "Reserveret af...: " << temp.hent_reservationer() << endl; 245 if (!samling.insert(temp)) cout << "\nukendt fejl (ved indsættelse af vist bog).\n"; C. Driverprogram til test af kø #include "queue.h" #include <iostream> int main() 5 using namespace std; Queue Q1; 10 Queue Q2(Q1); Queue Q3; Q3 = Q1; 15 int temp; // test add do cout << "Læs et tal ind og afslut med nul: "; 20 cin >> temp; Q1.add(temp); while (temp!= 0); // test copy constructor 25 Queue Q4(Q1); Queue Q5; Q5 = Q1; // test remove 30 cout << "\nq1 (must be the entered values): "; while (!Q1.isempty() ) cout << Q1.remove() << ' '; cout << "\nq2 (must be empty)...: "; 35 while (!Q2.isempty() ) cout << Q2.remove() << ' '; cout << "\nq3 (must be empty)...: "; while (!Q3.isempty() ) 40 cout << Q3.remove() << ' '; 45 cout << "\nq4 (must be values from Q1)...: "; while (!Q4.isempty() ) cout << Q4.remove() << ' '; cout << "\nq5 (must be values from Q1)...: "; while (!Q5.isempty() )

17 KURSUSARBEJDE 4, ARNE JØRGENSEN 17/17 Figur 4: Driverprogram der tester en kø. cout << Q5.remove() << ' '; 50 cout << "\nq1 (must be empty now)...: "; while (!Q1.isempty() ) cout << Q1.remove() << ' '; cout << endl;

Kursusarbejde 3 Grundlæggende Programmering

Kursusarbejde 3 Grundlæggende Programmering Kursusarbejde 3 Grundlæggende Programmering Arne Jørgensen, 300473-2919 klasse dm032-1a 21. november 2003 Indhold 1. Kode 2 1.1. forestillinger.h............................................. 2 1.2. forestillinger.cc.............................................

Læs mere

Kursusarbejde 2 Grundlæggende Programmering

Kursusarbejde 2 Grundlæggende Programmering Kursusarbejde 2 Grundlæggende Programmering Arne Jørgensen, 300473-2919 klasse dm032-1a 31. oktober 2003 Indhold 1. Kode 2 1.1. hotel.h.................................................... 2 1.2. hotel.cc...................................................

Læs mere

Kursusarbejde 1 Grundlæggende Programmering. Arne Jørgensen, 300473-2919 klasse dm032-1a

Kursusarbejde 1 Grundlæggende Programmering. Arne Jørgensen, 300473-2919 klasse dm032-1a Kursusarbejde 1 Grundlæggende Programmering Arne Jørgensen, 300473-2919 klasse dm032-1a 3. oktober 2003 Kode //File Name: kaalhovede.cc //Author: Arne Jørgensen //Email Address: arne@arnested.dk, arnjor@niels.brock.dk

Læs mere

Den forudsætter kendskab til C++ og lidt kendskab til SQL og MySQL C API.

Den forudsætter kendskab til C++ og lidt kendskab til SQL og MySQL C API. Denne guide er oprindeligt udgivet på Eksperten.dk Brug af MySQL i C++ Denne artikel bygger ovenpå artiklen "MySQL C API" og forklarer hvordan man kan programmere mere objekt orienteret. Den forudsætter

Læs mere

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

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 fjj@noea.dk. Besvarelsen skal

Læs mere

Introduktion til datastrukturer. Philip Bille

Introduktion til datastrukturer. Philip Bille Introduktion til datastrukturer Philip Bille Plan Datastrukturer Stakke og køer Hægtede lister Dynamiske tabeller Datastrukturer Datastrukturer Datastruktur: Metode til at organise data så det kan søges

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2019 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 27. februar, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2016 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 29. februar, 2016 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

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

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

Læs mere

Introduktion til datastrukturer

Introduktion til datastrukturer Introduktion til datastrukturer Datastrukturer Stakke og køer Hægtede lister Dynamiske tabeller Philip Bille Introduktion til datastrukturer Datastrukturer Stakke og køer Hægtede lister Dynamiske tabeller

Læs mere

Skriftlig eksamen i Datalogi

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

Læs mere

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

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

Læs mere

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

Stakke, køer og lidt om hægtede lister - kapitel 16 og 17 Datastrukturer & Algoritmer, Datalogi C Forelæsning 2/11-2004 Henning Christiansen Stakke, køer og lidt om hægtede lister - kapitel 16 og 17 Fundamentale datastrukturer man får brug for igen og igen Et

Læs mere

INGENIØRHØJSKOLEN I ÅRHUS Elektro- og IKT-afdelingen. I3PRG3 + I3DTM3 + I3ISY1-3. semester

INGENIØRHØJSKOLEN I ÅRHUS Elektro- og IKT-afdelingen. I3PRG3 + I3DTM3 + I3ISY1-3. semester INGENIØRHØJSKOLEN I ÅRHUS Elektro- og IKT-afdelingen Side 1 af 7 Eksamenstermin: DECEMBER 2003 / JANUAR 2004 Varighed: 4 timer - fra kl. 9.00 til kl. 13.00 Ingeniørhøjskolen udleverer: 3 omslag samt papir

Læs mere

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

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 4 DM502 Forelæsning 4 Flere kontrolstrukturer for-løkke switch-case Metoder Indhold Arrays og sortering af arrays String-funktioner for-løkke Ofte har man brug for at udføre det samme kode, for en sekvens

Læs mere

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

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3 DM502 Forelæsning 3 Indlæsning fra tastatur Udskrift til skærm Repetition Beregning af middelværdi Gentagelse med stop-betingelse (while) Heltalsdivision Division med nul Type-casting ( (double) ) Betinget

Læs mere

Abstrakte datatyper C#-version

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

Læs mere

PROGRAM. using System; using System.Collections.Generic; using System.Text; using System.Collections;

PROGRAM. using System; using System.Collections.Generic; using System.Text; using System.Collections; PROGRAM using System; using System.Collections.Generic; using System.Text; using System.Collections; namespace EventManager class Program static void Main(string[] args) string hovedmenu = ""; string svar;

Læs mere

Netværksalgoritmer 1

Netværksalgoritmer 1 Netværksalgoritmer 1 Netværksalgoritmer Netværksalgoritmer er algoritmer, der udføres på et netværk af computere Deres udførelse er distribueret Omfatter algoritmer for, hvorledes routere sender pakker

Læs mere

Skriftlig eksamen i Datalogi

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

Læs mere

Løsning af møntproblemet

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

Læs mere

Programmering i C. Lektion november 2008

Programmering i C. Lektion november 2008 Programmering i C Lektion 3 18. november 2008 Kontrolstrukturer Udvælgelse Gentagelse Eksempler Fra sidst 1 Kontrolstrukturer 2 Udvælgelse 3 Gentagelse 4 Eksempler Kontrolstrukturer Udvælgelse Gentagelse

Læs mere

Løsning af skyline-problemet

Løsning af skyline-problemet Løsning af skyline-problemet Keld Helsgaun RUC, oktober 1999 Efter at have overvejet problemet en stund er min første indskydelse, at jeg kan opnå en løsning ved at tilføje en bygning til den aktuelle

Læs mere

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

Design by Contract Bertrand Meyer Design and Programming by Contract. Oversigt. Prædikater Design by Contract Bertrand Meyer 1986 Design and Programming by Contract Michael R. Hansen & Anne Haxthausen mrh@imm.dtu.dk Informatics and Mathematical Modelling Technical University of Denmark Design

Læs mere

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

I denne artikel vil vi bruge en User klasse som vi så vil gruppere på forskellige måder. Denne guide er oprindeligt udgivet på Eksperten.dk Collections i.net Når du kigger i namespacet System.Collections finder du over 10 forskellige klasser. At vælge den rigtige til netop din applikations

Læs mere

Tredjepart webservices

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

Læs mere

Scripting. Opslag til (Vol. D. Dahlerup. Bemærk. Anvendte bøger: "Sams. og proteiner.

Scripting. Opslag til (Vol. D. Dahlerup. Bemærk. Anvendte bøger: Sams. og proteiner. Bioinformatisk C++ Scripting i Xubuntu Vol. 2 Opslag til Dybdegående Bioinformatisk Scripting i Xubuntu 12.10 (Vol. 2) Henrik D. Dahlerup, Maj 2015 kontakt: henrik@ddahlerup.com Anvendte bøger: "Sams Publishing"-books.

Læs mere

Programmering i C. Lektion 4. 5. december 2008

Programmering i C. Lektion 4. 5. december 2008 Programmering i C Lektion 4 5. december 2008 Funktioner Eksempel Fra sidst 1 Funktioner 2 Eksempel Funktioner Eksempel Eksempel: 1 / f u n k t i o n s p r o t o t y p e r / i n t i n d l a e s ( void )

Læs mere

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

Stakke, køer og lidt om hægtede lister Datastrukturer & Algoritmer, Datalogi C Forelæsning 4/11-2003 Henning Christiansen Stakke, køer og lidt om hægtede lister - kapitel 16 og 17 Hvorfor? Fundamentale datastrukturer man får brug for igen og

Læs mere

Programmering i C. Lektion september 2009

Programmering i C. Lektion september 2009 Programmering i C Lektion 2 14. september 2009 Kontrolstrukturer Udvælgelse Gentagelse Eksempler Kommentarer Format - scanf og printf 2 / 27 Fra sidst 1 Kontrolstrukturer 2 Udvælgelse 3 Gentagelse 4 Eksempler

Læs mere

DM507 Algoritmer og datastrukturer

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

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2013 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 5. marts, 2013 Dette projekt udleveres i to dele. Hver del har sin deadline, således

Læs mere

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

Programmeringscamp. Implementer funktionerne én for én og test hele tiden. 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

Læs mere

ODIN-webservice ændringer release 2010 v2.0

ODIN-webservice ændringer release 2010 v2.0 DOKUMENTATION OG VEJLEDNING ODIN-webservice ændringer release 2010 v2.0 Indholdsfortegnelse 1. Nye webservice metoder... 2 1.1 Anvendelse af køretøjer og personel fra fremmede beredskaber ifm. indberetning

Læs mere

Spil Master Mind. Indledning.

Spil Master Mind. Indledning. side 1 af 16 Indledning. Spillet som denne rapport beskriver, indgår i et større program, der er lavet som projekt i valgfaget programmering C på HTX i perioden 9/11-98 til 12/1-99. Spillet skal give de

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2015 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 3. marts, 2015 Dette projekt udleveres i to dele. Hver del har sin deadline, således

Læs mere

DM507 Algoritmer og datastrukturer

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

Læs mere

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

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

Læs mere

PHP 3 UGERS FORLØB PHP, MYSQL & SQL

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

Læs mere

Datastrukturer. Datastruktur = data + operationer herpå

Datastrukturer. Datastruktur = data + operationer herpå Prioritetskøer Prioritetskøer? Datastrukturer Datastruktur = data + operationer herpå Datastrukturer Data: Datastruktur = data + operationer herpå Ofte en ID + associeret data. ID kaldes også en nøgle

Læs mere

PROJEKT 3. The Design Diaries. LINK TIL BLOG: Af Mikkel Borg Svendsen & Sebastian Frank MUL B

PROJEKT 3. The Design Diaries. LINK TIL BLOG:  Af Mikkel Borg Svendsen & Sebastian Frank MUL B PROJEKT 3 The Design Diaries LINK TIL BLOG: http://mbsgraphic.dk/blog/ Af Mikkel Borg Svendsen & Sebastian Frank MUL B 1 INDHOLDS- FORTEGNELSE HVEM ER BLOGGERNE? 3 USE CASE 4 ATTRIBUT TABEL 5 PHP CODE

Læs mere

//--------------------------------- Definition af porte og funktioner -------------------------

//--------------------------------- Definition af porte og funktioner ------------------------- Temeraturmåler (C-program).txt // Initialiserings-sekvens #include #pragma model=medium #pragma code=0x0000 #pragma xdata=0x4000 #pragma asm=on #pragma parameters=register //#define display P4

Læs mere

Objektorienteret Programmering

Objektorienteret Programmering Objektorienteret Programmering Struktureret Systemudvikling Jan Bendtsen Automation and Control Indhold Lidt om programmeringssprog Klasser i Java Klasser i C++ Oversættelse og kørsel af kode Et eksempel:

Læs mere

Specifikation Abstrakt OO OS-API Rev. 1.7. Specifikation. Abstrakt, objektorienteret operativsystem-api

Specifikation Abstrakt OO OS-API Rev. 1.7. Specifikation. Abstrakt, objektorienteret operativsystem-api Specifikation Abstrakt, objektorienteret operativsystem-api Indhold 1 Indledning... 3 1.1 Introduktion... 3 1.2 Formål... 3 1.3 Overordnede krav... 3 2 Ressourcer i OS-API et... 4 2.1 Tråde... 4 2.2 Timere...

Læs mere

ArbejsskadeAnmeldelse

ArbejsskadeAnmeldelse ArbejsskadeAnmeldelse OpretAnmeldelse 001 All Klassifikations: KlassifikationKode is an unknown value in the current Klassifikation 002 All Klassifikations: KlassifikationKode does not correspond to KlassifikationTekst

Læs mere

Hent filoplysninger fra billeder og filer

Hent filoplysninger fra billeder og filer Hent filoplysninger fra billeder og filer I denne vejledning bliver det gennemgået, hvordan man via Power Forespørgsel kan hente filoplysninger fra en mappe ind i Excel. Der skal opbygges følgende elementer:

Læs mere

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

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2 DM502 Forelæsning 2 Repetition Kompilere og køre Java program javac HelloWorld.java java HeloWorld.java Debugge Java program javac -g HelloWorld.java jswat Det basale Java program public class HelloWorld

Læs mere

Udvikling af DOTNET applikationer til MicroStation i C#

Udvikling af DOTNET applikationer til MicroStation i C# Udvikling af DOTNET applikationer til MicroStation i C# Praktiske tips for at komme i gang. Gunnar Jul Jensen, Cowi Hvorfor nu det? Mdl og Vba kan det hele Fordelene er : udviklingsmiljøet er eksternt

Læs mere

Kursusgang 12. Oversigt: Sidste kursusgang Layout-manager Event-håndtering. Design af brugerflader 12.1

Kursusgang 12. Oversigt: Sidste kursusgang Layout-manager Event-håndtering. Design af brugerflader 12.1 Kursusgang 12 Oversigt: Sidste kursusgang Layout-manager Event-håndtering Design af brugerflader 12.1 Sidste kursusgang Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design

Læs mere

Generisk programmering - opgave 2 - Doxygen

Generisk programmering - opgave 2 - Doxygen Generisk programmering - opgave 2 - Doxygen Morten Wendelboe Datalogisk Institut, Københavns Universitet Universitetsparken 1, 2100 København Ø morty@diku.dk Resumé. Denne opgave ser på mulighederne for

Læs mere

Datastrukturer. Datastruktur = data + operationer herpå

Datastrukturer. Datastruktur = data + operationer herpå Prioritetskøer Prioritetskøer? Datastrukturer Datastruktur = data + operationer herpå Datastrukturer Data: Datastruktur = data + operationer herpå Ofte en ID + associeret data. ID kaldes også en nøgle

Læs mere

Sekvensafstand DM34 - Eksamensopgave. Jacob Aae Mikkelsen

Sekvensafstand DM34 - Eksamensopgave. Jacob Aae Mikkelsen Sekvensafstand DM34 - Eksamensopgave Jacob Aae Mikkelsen 19 10 76 kokken@grydeske.dk 27. maj 2005 Resumé Rapporten her beskriver tre forskellige rekursive metoder til at sammenligne tekst strenge med.

Læs mere

DM14-1. Obligatorisk opgave F.06. System Call. Jacob Aae Mikkelsen Ingen andre gruppe medlemmer. 6. marts 2005

DM14-1. Obligatorisk opgave F.06. System Call. Jacob Aae Mikkelsen Ingen andre gruppe medlemmer. 6. marts 2005 - 1. Obligatorisk opgave F.06 System Call Jacob Aae Mikkelsen - 191076 Ingen andre gruppe medlemmer 6. marts 2005 1 Indhold 1 Opgave beskrivelse 2 2 Analyse 2 2.1 Hukommelses allokering.....................

Læs mere

Binære søgetræer. Binære søgetræer. Nærmeste naboer. Nærmeste nabo

Binære søgetræer. Binære søgetræer. Nærmeste naboer. Nærmeste nabo Philip Bille Nærmeste naboer. Vedligehold en dynamisk mængde S af elementer. Hvert element har en nøgle key[] og satellitdata data[]. operationer. PREDECESSOR(k): returner element med største nøgle k.

Læs mere

Modern Concurrency Abstractions for C#

Modern Concurrency Abstractions for C# Modern Concurrency Abstractions for C# Nick Benton Luca Cardelli Cédric Fournet Presenter: Henrik Kragh-Hansen September 27, 2007 Motivation for concurrency Forbedring af concurrency Baggrundsinformation

Læs mere

Programmering og Problemløsning, 2017

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

Læs mere

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

I profil-feltet kan imastra-kunder vælge om upload skal ske ligesom filerne var indsendt til mailboksen eller Upload fil Upload fil skal ses som et alternativ til at indsende tællefiler vedhæftet til mails Upload fil kan være en hurtigere og mere håndholdt måde at få data ind i Mastra på. Man starter med via Gennemse

Læs mere

if (symbol == IDENTIFIER) { object = findprocedureobject(symboltable, identifier);

if (symbol == IDENTIFIER) { object = findprocedureobject(symboltable, identifier); procedureimplementation() { struct item_t* item; struct object_t* object; item = malloc(sizeof(struct item_t)); returntype(item); if (symbol == IDENTIFIER) { object = findprocedureobject(symboltable, identifier);

Læs mere

Forelæsning Uge 2 Mandag

Forelæsning Uge 2 Mandag Forelæsning Uge 2 Mandag Sætninger Simple sætninger (assignment, interne og eksterne metodekald) Sammensatte sætninger (blok, selektion, gentagelse) Udtryk og operatorer Java syntax og style guide Afleveringsopgave:

Læs mere

Boost Concept Check Library

Boost Concept Check Library Boost Concept Check Library Kasper Egdø and Konstantin Barkaia Department of Computer Science University of Copenhagen Boost Concept Check Library p.1/19 Eksempel #include #include int

Læs mere

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507) Skriftlig Eksamen Algoritmer og Datastrukturer (DM507) Institut for Matematik og Datalogi Syddansk Universitet, Odense Onsdag den 0. juni 009, kl. 9 Alle sædvanlige hjælpemidler (lærebøger, notater, osv.)

Læs mere

Lige siden den elektroniske computers opfindelse i slutningen af 1940, har det været muligt at få en computer til at beregne ting.

Lige siden den elektroniske computers opfindelse i slutningen af 1940, har det været muligt at få en computer til at beregne ting. Denne guide er oprindeligt udgivet på Eksperten.dk C++ Historie og Programmering - Del 1 Denne guide er til dig der altid har undret dig over hvordan du får en computer til at udføre specifikke opgaver.

Læs mere

BRP Sortering og søgning. Hægtede lister

BRP Sortering og søgning. Hægtede lister BRP 18.10.2006 Sortering og søgning. Hægtede lister 1. Opgaver 2. Selection sort (udvælgelsessortering) 3. Kompleksitetsanalyse 4. Merge sort (flettesortering) 5. Binær søgning 6. Hægtede lister 7. Øvelser:

Læs mere

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

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æs mere

Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version

Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version Finn Nordbjerg 1/9 Indledning I det følgende introduceres et par abstrakte

Læs mere

METODER ARV KLASSER. Grundlæggende programmering Lektion 5

METODER ARV KLASSER. Grundlæggende programmering Lektion 5 METODER KLASSER ARV Grundlæggende programmering Lektion 5 1 METODER Sekvenser af kode om samme emne 2 REPETITION Række af statements der udfører en handling Mindst én metode der hedder main Forskellen

Læs mere

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.

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. Exercise 1: Opgave 9.1 på CodeJudge. a) Lav klasserne Cirkel, Rektangel og Kvadrat, som implementerer vedhæftede interface From.java (se CodeJudge). Lav Rektangel før du laver Kvadrat. Kan du bruge nedarvning

Læs mere

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { int wmid, wmevent; programmering med

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) { int wmid, wmevent; programmering med LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam) int wmid, wmevent; PAINTSTRUCT Introduktion ps; til HDC hdc; programmering med switch (message) case WM_COMMAND: wmid = LOWORD(wParam);

Læs mere

Start på Arduino og programmering

Start på Arduino og programmering Programmering for begyndere Brug af Arduino Start på Arduino og programmering EDR Hillerød Knud Krogsgaard Jensen / OZ1QK 1 Start på Arduino og programmering Sidste gang (Introduktion) Programmeringssproget

Læs mere

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

Ø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

Læs mere

Derfor vil jeg bygge dette eksempel på een table hvor der kan tilkyttes personer til ALLE noder og der kan tilføjes et vilkårligt antal niveauer

Derfor vil jeg bygge dette eksempel på een table hvor der kan tilkyttes personer til ALLE noder og der kan tilføjes et vilkårligt antal niveauer Denne guide er oprindeligt udgivet på Eksperten.dk TreeView i Access II Jeg vil i denne anden udgave af treeview føljetonen begynde på et mere brugbart eksempel med et TreeView. Vi laver en ny database

Læs mere

Objektorienteret design med arv og polymorfi:

Objektorienteret design med arv og polymorfi: Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Objektorienteret design med arv og polymorfi: Substitutionsprincippet Composite Design Pattern Finn Nordbjerg Side 1 Objektorienteret

Læs mere

16/04/12 50% 50% Waveform Chart Waveform Graph XY Graph Indicator Graph 33% 17% 88% 13%

16/04/12 50% 50% Waveform Chart Waveform Graph XY Graph Indicator Graph 33% 17% 88% 13% Samuel Alberg Thrysøe, PhD, PostDoc, Kontakt info: Email: sat@iha.dk, Tlf: +45 25533552 2 4. 5 Waveform Chart Waveform Graph XY Graph Indicator Graph 4. 33% Waveform Chart Waveform Graph XY Graph Indicator

Læs mere

DM507 Algoritmer og datastrukturer

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

Læs mere

PUT og INPUT funktionerne

PUT og INPUT funktionerne PUT og INPUT funktionerne Af: Peter Kellberg Danmarks Statistik Sejrøgade 11 DK-2100 København Ø pke@dst.dk PUT og INPUT-funktionerne Denne artikel er foranlediget af en henvendelse til vores interne SAS

Læs mere

Internt interrupt - Arduino

Internt interrupt - Arduino Programmering for begyndere Brug af Arduino Internt interrupt - Arduino - Afslutning EDR Hillerød Knud Krogsgaard Jensen / OZ1QK 1 Intern interrupt Jeg vil rydde lidt op. Her er nogle punkter vil har glemt

Læs mere

Binære søgetræer. Nærmeste naboer Binære søgetræer Indsættelse Predecessor og successor Sletning Trægennemløb. Philip Bille

Binære søgetræer. Nærmeste naboer Binære søgetræer Indsættelse Predecessor og successor Sletning Trægennemløb. Philip Bille Binære søgetræer Nærmeste naboer Binære søgetræer Indsættelse Predecessor og successor Sletning Trægennemløb Philip Bille Binære søgetræer Nærmeste naboer Binære søgetræer Indsættelse Predecessor og successor

Læs mere

Privat-, statslig- eller regional institution m.v. Andet Added Bekaempelsesudfoerende: string No Label: Bekæmpelsesudførende

Privat-, statslig- eller regional institution m.v. Andet Added Bekaempelsesudfoerende: string No Label: Bekæmpelsesudførende Changes for Rottedatabasen Web Service The coming version of Rottedatabasen Web Service will have several changes some of them breaking for the exposed methods. These changes and the business logic behind

Læs mere

Forelæsning Uge 2 Torsdag

Forelæsning Uge 2 Torsdag Forelæsning Uge 2 Torsdag Java syntax og style guide Sætninger Simple sætninger (assignment, interne og eksterne metodekald) Sammensatte sætninger (blok, selektion, gentagelse) Udtryk og operatorer Brug

Læs mere

Kapitel 4 Løkker i C#

Kapitel 4 Løkker i C# Kapitel 4 Løkker i C# Løkker en vigtig del af alle programmeringssprog, og C# er ikke andeles. En løkke er en måde at udføre en del af koden gentagne gange. Ideen er at du fortsætter med at udføre en opgave

Læs mere

SWC eksamens-spørgsmål. Oversigt

SWC eksamens-spørgsmål. Oversigt SWC eksamens-spørgsmål Oversigt #1 Typer og variable #2 Aritmetik og logik #3 Klasser (definition, objekter) #4 Klasser (metoder) #5 Klasser (nedarvning, polymorfi) #6 Conditional statements #7 Repetition

Læs mere

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

Software Construction 1. semester (SWC) januar 2014 Spørgsmål 1 Spørgsmål 1 Grundlæggende objektorienterede begreber o Klasse (class) o Objekt (object) o Metode (method), herunder return type og parametre o Instansvariable (instance variables) & egenskaber (properties),

Læs mere

DM502. Peter Schneider-Kamp (petersk@imada.sdu.dk) http://imada.sdu.dk/~petersk/dm502/

DM502. Peter Schneider-Kamp (petersk@imada.sdu.dk) http://imada.sdu.dk/~petersk/dm502/ DM502 Peter Schneider-Kamp (petersk@imada.sdu.dk) http://imada.sdu.dk/~petersk/dm502/ 1 DM502 Bog, ugesedler og noter De første øvelser Let for nogen, svært for andre Kom til øvelserne! Lav opgaverne!

Læs mere

Som sagt kræves der helst lidt viden om OOP hvis man virkelig vil lærer noget, og ikke bare lave copypaste

Som sagt kræves der helst lidt viden om OOP hvis man virkelig vil lærer noget, og ikke bare lave copypaste Denne guide er oprindeligt udgivet på Eksperten.dk Indkøbsvogn i PHP I denne artikel vil jeg prøve at lave en indkøbskurv som let kan udvides, og som ikke er svær at forstå. Det er bedst med viden om OOP(klasser),

Læs mere

Hvilket sprog er hurtigst

Hvilket sprog er hurtigst Denne guide er oprindeligt udgivet på Eksperten.dk Hvilket sprog er hurtigst Denne artikel forsøger at aflive forskellige myter om hvilke sprog der er hurtigst. Den forudsætter ikke noget særligt. Skrevet

Læs mere

Hvad er Objekter - Programmering

Hvad er Objekter - Programmering Denne guide er oprindeligt udgivet på Eksperten.dk Hvad er Objekter - Programmering En rigtig god gennemgang af hvad objekter er! Hvordan de oprettes og anvendes! Det er helt klart til nybegyndere, som

Læs mere

Hvordan vælger jeg dokumentprofilen?

Hvordan vælger jeg dokumentprofilen? Hvordan vælger jeg dokumentprofilen? Valget af OIOUBL profil i en konkret dokumentudveksling vil bl.a. afhænge af, hvilke OIOUBL profiler den anden part i udvekslingen understøtter. Et konkret eksempel

Læs mere

Sortering af information er en fundamental og central opgave.

Sortering af information er en fundamental og central opgave. Sortering Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 Mange opgaver er hurtigere i sorteret information (tænk på ordbøger, telefonbøger,

Læs mere

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

Aarhus Universitet, Science and Technology, Computer Science. Exam. Wednesday 27 June 2018, 9:00-11:00 Page 1/12 Aarhus Universitet, Science and Technology, Computer Science Exam Wednesday 27 June 2018, 9:00-11:00 Allowed aid: None The exam questions are answered on the problem statement that is handed

Læs mere

F# - hvorfor, hvordan og til hvad? Rune Ibsen Jyske Bank

F# - hvorfor, hvordan og til hvad? Rune Ibsen Jyske Bank F# - hvorfor, hvordan og til hvad? Rune Ibsen Jyske Bank 03-10-2018 Rune Ibsen Softwareudvikling Seniorkonsulent Mentoring 10 konsulenter F# Programmeringssprog som oversættes til.net Functional-first,

Læs mere

Eksempel: et ordresystem note 5 Lagdeling s. 1

Eksempel: et ordresystem note 5 Lagdeling s. 1 Eksempel: et ordresystem note 5 Lagdeling s. 1 Eksempel: et ordre-system NiceHair er et firma, som sælger udstyr, inventar og frisørartikler til frisørsaloner over hele landet. Det er ejet af et ægtepar

Læs mere

Kapitel 3 Betinget logik i C#

Kapitel 3 Betinget logik i C# Kapitel 3 i C# er udelukkende et spørgsmål om ordet IF. Det er faktisk umuligt at programmere effektivt uden at gøre brug af IF. Du kan skrive små simple programmer. Men når det bliver mere kompliceret

Læs mere

Sortering. Eksempel: De n tal i sorteret orden

Sortering. Eksempel: De n tal i sorteret orden Sortering 1 / 32 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 2 / 32 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden

Læs mere

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer Skriftlig Eksamen DM507 Algoritmer og Datastrukturer Institut for Matematik og Datalogi Syddansk Universitet, Odense Mandag den 6. juni 2016, kl. 15:00 19:00 Besvarelsen skal afleveres elektronisk. Se

Læs mere

Indhold. Side 2 af 26

Indhold. Side 2 af 26 Tema Design Design, Programmering og test af Adressebog Fra d. 17 april til 20 april 2012 Vejledere: Gunhild Marie Andersen Kis Boisen Hansen Gruppe B Deltagere Side 1 af 26 Indhold Indledning.... 3 Kodestandard...

Læs mere

Forelæsning Uge 4 Mandag

Forelæsning Uge 4 Mandag Forelæsning Uge 4 Mandag Algoritmeskabeloner findone, findall, findnoof, findsumof Primitive typer (forfremmelse og begrænsning) Identitet versus lighed (for objekter, herunder strenge) Opfølgning på Skildpadde

Læs mere

Klasser og objekter. (Afsnit i manualen)

Klasser og objekter. (Afsnit i manualen) Klasser og objekter (Afsnit 4 + 5 i manualen) Grundbegreber Klasser og objekter beskrivelse oprettelse Attributter og metoder tilstand opførsel Indkapsling afskærmning datarepræsentationsuafhængighed Klasser

Læs mere

Kryptologi Homework 1

Kryptologi Homework 1 Kryptologi Homework 1 Rune Højsgaard 13. februar 2007 1 Indledning Dette er besvarelsen af øvelsesopgave 1 på kurset Kryptologi 2007, Københavns Universitet. Opgaven består i at dekryptere tre ciffertekster.

Læs mere

Sortering. Eksempel: De n tal i sorteret orden

Sortering. Eksempel: De n tal i sorteret orden Sortering 1 / 34 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 2 / 34 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden

Læs mere