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



Relaterede dokumenter
Kursusarbejde 2 Grundlæggende Programmering

Kursusarbejde 3 Grundlæggende Programmering

Kursusarbejde 4 Grundlæggende Programmering

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

Noter til C# Programmering Iteration

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

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

Studiepraktik. Thomas Bøgholm Mikkel Hansen Jacob Elefsen

Skriftlig eksamen i Datalogi

Eksempel: et ordresystem note 5 Lagdeling s. 1

Programmering for begyndere Lektion 2. Opsamling mm

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

Indholdsfortegnelse If-sætningen... 3 Opgaver... 4 OR, AND sammen med if-sætningen... 5 Rand() funktion... 5 Opgave... 5 Include() funktionen...

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

Forelæsning Uge 2 Mandag

Start på Arduino og programmering

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

Kapitel 3 Betinget logik i C#

Undtagelseshåndtering i C#

Abstrakte datatyper C#-version

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

Forelæsning Uge 2 Mandag

QUICKGUIDE. til Skab overflade i icp41/42

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

Programmering I Java/C#

// Definition af porte og funktioner

Python programmering. Per Tøfting. MacFest

Programmering i C. Lektion november 2008

Vejledning om aktivitetsindberetning for efterskoler og frie fagskoler

Hvad er Objekter - Programmering

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

Hvilket sprog er hurtigst

Programmering i C. Lektion september 2009

Indledning. Hvorfor det forholder sig sådan har jeg en masse idéer om, men det bliver for meget at komme ind på her. God fornøjelse med læsningen.

Ide med Diff. Mål. Tidsplan. 1.uge: 2.uge:

Programmering i C. Lektion september 2009

LØKKER METODER C S HISTORIE. Grundlæggende programmering Lektion 4

Indlæsning fra bank Faktura passer med indbetalt dage

SWC eksamens-spørgsmål. Oversigt

Forelæsning Uge 2 Torsdag

Forelæsning Uge 2 Mandag

Lektion 4. Grundlæggende programmering i VR

Udvikling af DOTNET applikationer til MicroStation i C#

Forelæsning Uge 2 Mandag

Klasse 1.4 Michael Jokil

Vejledning om aktivitetsindberetning for. folkehøjskoler og ungdomshøjskoler

Programopdatering Maj ver

Forelæsning Uge 1 Torsdag

Noter til KAP HORN programmer den 23 januar 2006

Reeksamen, DSDS, forår 2008

Plugin-arkitektur med.net

Sproget Six. Til brug i rapportopgaven på kurset Oversættere. Vinter Abstract

DM502. Peter Schneider-Kamp

Løsning af møntproblemet

Integer.parseInt(args[0]) konverterer tegnstreng (f.eks. "10") til heltal (10). if (udtryk) else

Navn: Søren Guldbrand Pedersen Klasse: 2i Fag: up/ansi Opgave: Brev til Sigurd Lære: John Austin Side 1 af 8 Dato:

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

ISCC. IMM Statistical Consulting Center. Brugervejledning til beregningsmodul til robust estimation af nugget effect. Technical University of Denmark

Rekursion C#-version

Indholdsfortegnelse. Side 3

SWC Elementer i klassedefinition

// inkluder library kode: #include <LiquidCrystal.h> #include <Serial.h> // Initialiser display LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

G-MAIL (GOOGLE)

ATTRIBUTES MULTITHREADING DYNAMIC PROGRAMMING. Grundlæggende programmering Lektion 11

Kapitel 4 Løkker i C#

Objektorienteret Programmering

Programmering og Problemløsning, 2017

Assignment #5 Toolbox Contract

//Udskriver System.out.println("Hej " + ditfornavn + " " + ditefternavn + "."); System.out.println("Du er " + dinalder + " aar gammel!

Dat2a G2 Korteste vej med betingelser. Espen Højsgaard Rune Højsgaard Bo Bendtsen

dintprog Manual Revision: 1241 August 24, 2010 I Introduktion 3 1 Notation 3 II Begreber 4 2 Grundbegreber om programmering 4

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

#AlleKanKode. Lektion 3 - Operatorer

Arduinostyret klimaanlæg Afsluttende projekt informationsteknologi B

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

Indholdsfortegnelse Databaser og PHP... 3 Opgave... 4 Opgave... 5 Opgave... 6 Sidste opgave er en lille gæstebog... 7 Kilder og nyttige links:...

Vejledning i brugen af økonomiportalen 2010 Indhold

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

Listen over reserverede ord er meget lang, men de væsentligste vil jeg beskrive her i denne artikel:

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

I3PRG3+I3DTM3+I3ISY1-3. semester

Java Programmering. En bog for begyndere. Skrevet af Henrik Kressner

idata Side 1/6 Indholdsfortegnelse

Vejledning i brugen af økonomiportalen for menighedsråd Indhold

Kursus 02199: Programmering. Kontrol af programudførelsen. afsnit if (indkomst > ) topskat = (indkomst ) * 0.

Vejledning til validator test af metadata

Terese B. Thomsen 1.semester Formidling, projektarbejde og webdesign ITU DMD d. 02/

Spil Master Mind. Indledning.

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

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

Programmering C Eksamensprojekt. Lavet af Suayb Köse & Nikolaj Egholk Jakobsen

Eksempel: Skat i år 2000

Dækbranchens Miljøfond Vejledning til digital dækindberetning

Jacob Christiansen, Institut for MAtematik og DAtalogi, Syddansk Universitet, Odense

I adressen skrives: indberetninger.uvm.dk. Husk at der ikke skal stå adressen.

Vejledning om aktivitetsindberetning for efterskoler, efterskoler godkendt med et samlet særligt undervisningstilbud

Program Dokumentation PC Software Skrevet af. Gruppen. Version 1.0

MANUAL TIL. OptitecRS CIPHERLAB SCANNER

Sekvenser af længde mellem 1 og 4 ord repræsenteres ved en klasse Segment, som uden grundlæggende ser således ud:

Anvendelse af metoder - Programmering

Transkript:

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 //Description: Et program der holder styr på en sending kålhoveder 5 //Last Changed: October 2, 2003 10 #include <iostream> #include <cmath> #include "Sending.h" void opret_objekt(sending& ny_sending); // Pre: ny_sending er et objekt (i princippet uinitialiseret) // Post: ny_sending indeholder et nykonstrueret objekt initialiseret med indlæste værdi 15 void indtast_nyt_kaalhovede(sending& min_sending); // Pre: min_sending indeholder objektet kålhovedet skal tilføjes // Post: kålhovedets vægt er indlæst og lagt i objektet min_sending void tilfoej_hoved(sending& min_sending, double vaegt); 20 // Pre: kålhovedet med vægten vaegt ønskes tilføjet til sendingen min_sending // Post: kålhovedet er tilføjet sendingen såfremt kålhovedet ligger indenfor grænseværdierne void fjern_hoved(sending& min_sending, double vaegt); // Pre: kålhovedet med vægten vaegt ønskes fjernet fra sendingen min_sending 25 // Post: kålhovedet er fjernet fra sendingen såfremt kålhovedet ligger indenfor grænseværdierne // og ikke overstiger den samlede vægt i sendingen void udskriv_vejledning(); // Pre: 30 // Post: til skærmen er udskrevet en brugsvejledning til programmet 35 void udskriv_loebende_status(sending& min_sending); // Pre: min_sending indeholder en sending der ønskes en status over // Post: status over manglende/for meget vægt er udskrevet til skærmen void udskriv_afsluttende_status(sending& min_sending); // Pre: min_sending indeholder en sending der ønskes en status over // Post: den samlede og endelige vægt på sendingen er udskrevet til skærmen 40 int main() udskriv_vejledning(); // jeg konstruerer objektet med nogle dummy værdier da de rette 45 // værdier bliver indlæst mm. i opret_objekt() Sending min_sending(0, 0.0, 0.0, 0, 0); opret_objekt(min_sending); // tilføj og fjern kålhoveder sålænger er ikke er for meget eller for lidt 50 do indtast_nyt_kaalhovede(min_sending); udskriv_loebende_status(min_sending); while (min_sending.for_meget() > 0.0 min_sending.mangler() > 0.0); 55 udskriv_afsluttende_status(min_sending); return 0; void opret_objekt(sending& min_sending) 60 65 int kg_der_skal_vaere; double max_kg_pr_hovede, min_kg_pr_hovede, pct_over, pct_under; 1

cout << "Indtast sendingens vægt i kg: "; cin >> kg_der_skal_vaere; cout << "Hvormange procent lavere end " <<kg_der_skal_vaere << " kg er tilladeligt: "; cin >> pct_under; 70 cout << "Hvormange procent højere end " <<kg_der_skal_vaere << " kg er tilladeligt: "; cin >> pct_over; cout << endl; cout << "Indtast den mindste tilladte vægt for et kålhovede: "; cin >> min_kg_pr_hovede; 75 cout << "Indtast den højeste tilladte vægt for et kålhovede: "; cin >> max_kg_pr_hovede; 80 85 // konstruér et nyt anonymt objekt ud fra de indtastede data og til det til min_sending min_sending = Sending(kg_der_skal_vaere, max_kg_pr_hovede, min_kg_pr_hovede, pct_over, pct_under); void indtast_nyt_kaalhovede(sending& min_sending) double vaegt; cout << endl; cout << "Indtast vægten på det tilføjede/fjernede kålhovede: "; 90 cin >> vaegt; // skal hovedet tilføjes eller fjernes? if (vaegt < 0) fjern_hoved(min_sending, fabs(vaegt)); 95 tilfoej_hoved(min_sending, vaegt); void tilfoej_hoved(sending& min_sending, double vaegt) 100 if (min_sending.for_stort(vaegt) min_sending.for_lille(vaegt)) cout << "Den indtastede vægt skal være mellem " <<min_sending.hent_min_pr_hoved() << " og " << min_sending.hent_max_pr_hoved() << " kg.\n"; 105 min_sending.tilfoej_hoved(vaegt); cout << "Kålhovedet er tilføjet.\n"; 110 115 void fjern_hoved(sending& min_sending, double vaegt) if (min_sending.for_stort(vaegt) min_sending.for_lille(vaegt)) cout << "Den indtastede vægt skal være mellem " <<min_sending.hent_min_pr_hoved() << " og " << min_sending.hent_max_pr_hoved() << " kg.\n"; 120 if (min_sending.fjern_hoved(vaegt)) cout << "Kålhovedet er fjernet.\n"; cout << "Kålhovedet er ikke fjernet da det er større end den totale vægt i sendingen.\n"; 125 void udskriv_vejledning() 130 cout << "Pakning af kål\n\n" 2

<< "Først indtastes de nødvendige oplysninger om sendingen.\n" << "Derefter indtastes vægten på hvert kålhoved efter nedenstående:\n\n" 135 << "Indtast vægten af hvert kålhoved, der fjernes fra eller tilføjes til sendingen.\n\n" << "Tilføjes et kålhovede skal antal kg indtastes.\n" << "Fjernes et kålhovede skal der indtastes er minus (-) foran antal kg.\n\n"; 140 void udskriv_loebende_status(sending& min_sending) if (min_sending.for_meget() > 0.0) 145 cout << "Maksimum for sendingen er overskredet med " <<min_sending.for_meget() << " kg, fjern et kålhoved.\n"; if (min_sending.mangler() > 0.0) cout << "Der mangler " << min_sending.mangler() << " kg.\n"; 150 void udskriv_afsluttende_status(sending& min_sending) 155 cout << "\nsendingen er færdigpakket.\n\n" << "Samlet levering: " << min_sending.hent_aktuelt_antal_kg() << " kg." << endl; Stort set al programmets funtionalitet er lagt ud i frie funktioner og main (linje 40-57) indeholder således kun funktionskald og en iteration der kontrollerer indlæsningen af dataene. De frie funktioner er af hensyn til overskueligheden skåret ned til at gøre brug af højest 1-2 selektioner. Hvor der har været brug for yderligere er noget af funktionaliteten flyttet ud i yderligere funktioner. Alle de frie funktioner henter nødvendige oplysninger om sendingen direkte i objektet som de alle har fået givet med som en call-by-reference parameter. Afprøvning Afprøvningen af programmet i figur 1 på den følgende side viser en kørsel af programmet på data der er brugt som eksempel i opgaveformuleringens side 5. Bug i Sending.h? Yderligere afprøvning afslørede en mulig bug i Sending.h. I Sending.h defineres funktionen fjern_hoved: 125 bool Sending::fjern_hoved(double kg) if ( for_stort(kg) for_lille(kg) ) return false; if (kg < aktuelt_antal_kg) 130 aktuelt_antal_kg = kg; return true; return false; 135 Som det fremgår af funktionen fjernes et kålhovede kun fra sendingen hvis dets vægt er mindre end den samlede vægt af sendingen. Funktionen burde nok snarere være defineret med et mindre end eller lig med ( ) i linje 129 for at undgå situationen i figur 2 på næste side. 129 if (kg <= aktuelt_antal_kg) 3

Figur 1: Afprøvning med data fra opgaveformuleringen Figur 2: Forsøg på at fjerne et kålhoved hvis vægt er lig med den samlede vægt 4