TDIU06 Programmering g.k. Laborationer LAB2. Vt1, Dessa laborationer ingår i examinationsmomentet LAB2 och ska göras i läsperiod Vt1.
|
|
- Britt Hansson
- för 8 år sedan
- Visningar:
Transkript
1 LINKÖPINGS TEKNISKA HÖGSKOLA Institutionen för datavetenskap Avdelningen för programvara och system (SaS) Tommy Olsson TDIU06 Programmering g.k. Laborationer LAB2 Vt1, 2007 Dessa laborationer ingår i examinationsmomentet LAB2 och ska göras i läsperiod Vt1. Innehåll 9. Containrar, algoritmer, iteratorer Infixkalkylator Associativa containrar och funktionsobjekt Map, sortering, funktionsobjekt Funktionsobjekt... 8
2 2 Laborationshandledning TDIU06
3 TDIU06 Laborationshandledning 3 Laboration 9 Containrar, algoritmer, iteratorer I den här laborationen ska du prova på att arbeta med container-objekt (vector och list) i kombination med iteratorer och algoritmer. De tre första labtillfällena (varav ett reservtillfälle är avsedda att disponeras för denna uppgift). Skriv ett program som gör följande: 1. Öppna en textfil som innehåller heltal i textformat. Textfilens namn ska anges på kommandoraden och vanliga kontroller av kommandoraden och öppning av textfilen ska göras av programmet. 2. Läs in heltal från textfilen och lagra talen i en std::vector. 3. Skriv ut de inlästa talen på cout. Använd for-sats och indexering för att stega igenom vectorn. 4. Sortera talen i stigande ordning med algoritmen std::sort. 5. Skriv ut de sorterade talen på cout. Använd for-sats och iterator för att stega igenom vectorn. 6. Ta bort alla dubbletter som eventuellt finns. Detta görs i två steg: Använd först algoritmen std::unique. Observera att unique endast flyttar om värdena så att alla unika värden återfinns i början av vectorn. unique returnerar en iterator som anger slutet för de unika värdena, i form av positionen efter sista unika värdet. Ta sedan bort de värden som finns efter det sista unika värdet i vectorn med medlemsfunktionen erase. Undersök dock gärna vad som egentligen finns i vectorn efter det sista unika värdet. 7. Skriv ut talen i vectorn (som nu ska innehålla enbart unika värden i stigande ordning) på cout. Använd algoritmen std::copy och std::ostream_iterator. 8. Kopiera värdena i vectorn till en annan vector så att de kommer i omvänd ordning (dvs i sjunkande ordning). Använd algoritmen std::reverse_copy. 9. Skriv ut talen i kopian på cout. 10. Kopiera värdena från kopian till en std::list med hjälp av std::copy och std::back_inserter. 11. Skriv ut innehållet i listan på cout (värdena ska komma i sjunkande ordning). 12. Sortera listan. 13. Skriv ut den sorterade listan på cout (värdena ska alltså komma i stigande ordning). Nivå 2 (frivillig) Utskrifter har gjorts på flera olika sätt i uppgifterna ovan. Ytterligare en möjlighet är att överlagra operator<< för vector, så att man kan skriva ut en vectors, t.ex., innehåll med ett uttryck på formen: cout << vec << endl; Nivå 3 (frivillig) Prova ytterligare algoritmer på datastrukturena vector och list om tiden medger. Redovisning Lämna in programkoden på papper till din assistent (använd IDAs omslag för laborationsredovisning). Skicka även koden via e-post. Läsanvisningar C++ direkt, kapitel 12 och Appendix C.
4 4 Laborationshandledning TDIU06 Laboration 10 Infixkalkylator Uppgifter är att skriva ett program som kan läsa enkla aritmetiska uttryck och beräkna deras värde. Ett uttryck i taget ska kunna matas i på en rad och programmet ska beräkna och skriva ut resultatet. Använd standardbibliotekskomponenter i så hög grad som möjligt (strömmar, containrar, iteratorer, algoritmer, etc. utan att gå till överdrift:). Försök välja den mest lämpade komponenten då det finns flera tänkbara alternativ. Om man behöver en sekventiell datastruktur kan ju t.ex. vector, list eller deque vara möjliga alternativ men någon av dem kanske är att föredra, beroende på hur man ska sätta in och ta bort element i strukturen. Diskutera gärna lösningsförslag med assistenten innan du kodar. Det kommer en forsättning på denna uppgift i kursen TDDI10 Objektorienterad programmering. Ni som ska gå den kursen bör se till att lösningen, speciellt då det gäller hanteringen av prioritet och associativitet, följer anvisningarna nedan.. Annars kan detta behöva göras om i TDDI10! Addition, subtraktion, multiplikation och division ska kunna utföras på heltalsvärden (innehåller enbart siffror 0-9) och reella värden (innehåller enbart siffror och en decimalpunkt). När programmet körs kan det se ut enligt följande (inmatning med fet stil): Välkommen till räknedosan! Skriv ett uttryck i taget på en egen rad: = / / = * * = 55.5 Ett inläst infixuttryck ska först omvandlas till motsvarande postfixuttryck med den s.k. järnvägsalgoritmen. De tre infixuttrycken i exemplet ovan motsvaras av följande postfixuttryck (till höger): / / * * I postfixuttryck (även kallad omvänd polsk notation) kommer operatorerna i den ordning de ska utföras och efter sina operander. Det gör att postfix lämpar sig väl för maskinell bearbetning. Ingen kunskap om vad som följer längre fram i uttrycket behövs för att kunna ta beslut om åtgärd i olika lägen. Om man t.ex. läser det tredje uttrycket ovan ( * ) och kommer till *, kan multiplikationen utföras eftersom 3 och 12 redan har lästs. Man behöver alltså spara operander man läser, så att man lätt kan återfinna dem när de ska ingå i en beräkning. När man läser vidare och kommer till +, är det redan lästa värdet 21 och resultatet av den föregående multiplikationen som ska adderas. Man behöver alltså även spara resultat av beräknade deluttryck. Både järnvägsalgoritmen och postfixberäkningsalgoritmen kan förefalla komplicerade, men de är enkla genom att en stack kan användas för att spara saker som ska användas senare. I järnvägsalgoritmen sparas operatorer på en stack, enligt regler som baseras på operatorernas prioritet och associativitet. Vid postfixberäkningen sparas operander och beräknade deluttryck enligt mycket enkla regler. Båda algoritmerna gås igenom på den andra lektionen i läsperioden. Använd std::map för att hantera operatorernas prioritet, t.ex. en map för operatorernas inkommande prioritet och en map för deras stackprioritet. Att använda två prioriteter för varje operator är egentligen ett sätt att någorlunda enkelt hantera prioritet och associativitet. I ett sammansatt uttryck som ska 1+2 beräknas först, eftersom addition och subtraktion har samma prioritet och är vänsterassociativa. Även detta kommer att gås igenom på den andra lektionen. Två funktioner ska finnas, en för att omvandla ett inläst infixuttryck till motsvarande postfixuttryck och en funktion för att beräkna värdet av ett postfixuttryck.
5 TDIU06 Laborationshandledning 5 Det är tillåtet att förutsätta att det alltid finns ett mellanrum mellan operander och operatorer i indata (det förenklar inläsningen avsevärt) och att inmatade infixuttryck alltid är korrekta (inga felkontroller krävs alltså). Nivå 2 (frivillig) Lägg in felkontroller, så att felaktiga uttryck upptäcks och felmeddelanden skrivs ut, i stället för det beräknade värdet. Det kan t.ex. se ut enligt följande: Felaktigt uttryck: operand där operator förväntades + 1 Felaktigt uttryck: operator där operand förväntades Felaktigt uttryck: operator avslutar 1 / 0 Felaktigt uttryck: division med 0 foo + 1 Felaktigt uttryck: otillåten symbol Felkontroller kan tänkas läggas in vid inläsningen av ett infixuttryck och/eller vid beräkningen av ett postfixuttryck. Det ingår i uppgiften att försöka komma på så många (alla) felmöjligheter som möjligt. Om man inte matar in något på en rad ska inte det betraktas som ett fel, utan programmet ska då hoppa över postfixberäkningen och vänta på en ny inmatning. Använd gärna undantag (exception) för att hantera fel. För att göra det någorlunda enkelt kan man kasta undantag av typen const char* (t.ex. throw "division med 0"). Nivå 3 (frivillig) Utöka syntaxen så att även parenteser kan ingå i infixuttrycken, t.ex. (postfix till höger) ( ) * ( ) * ( 1 ) 1 ( ) tomt parentesuttryck enbart tillåts (eller så förbjuder man) Lägg in ytterligare felkontroller som behövs när nu syntaxen utökats med parenteser, för att upptäcka fel som t.ex. följande: ( ) ( ) 3 1 ( + 2 ) 1 ( ) + 2 Nivå 4 (frivillig) Gör det möjligt att skriva infixuttryck utan att behöva ha mellanrum mellan elementen. Detta komplicerar inläsningen en hel del. Redovisning Lämna in programkoden på papper till din assistent (använd IDAs omslag för laborationsredovisning). Skicka även koden via e-post. Läsanvisningar C++ direkt, kapitel 12 och Appendix C.
6 6 Laborationshandledning TDIU06 Laboration 11 Associativa containrar och funktionsobjekt Denna laborationsuppgift består av ett två mindre uppgifter, som främst gäller associativa containrar och funktionsobjekt. Övning på användning av std::priority_queue och std::pair. Skriv ett program som skapar en "att-göra-lista". Först ska programmet läsa in ett antal uppgifter som ska utföras med tillhörande prioritet (heltal 1-9, högt värde hög prioritet). Inmatningen till programmet kan se ut enligt följande: Ange på varje rad prioritet och uppgift (avsluta med Control-D): 3 Mata fågeln 4 Klippa gräset 1 Städa rummet 5 Mata hunden 4 Mata katten 2 Diska 2 Tvätta Utskriften kan se ut enligt följande: Att göra: 5: Mata hunden 4: Mata katten 4: Klippa gräset 3: Mata fågeln 2: Tvätta 2: Diska 1: Städa rummet Använd std::priority_queue och lagra prioritet och uppgift i std::pair. Nivå 2 (frivillig) Ändra i programmet så att lågt prioritetsvärde i stället betyder hög prioritet. Deklarationen för priority_queue är (något förenklad ): template <class T, class Container = vector<t>, class Compare = less<t> > class priority_queue; T är alltså den typ av element som ska lagras, Container är den containertyp som används för att lagra elementen (förval är std::vector) och Compare är den jämförelse som ska användas för att ordna element i prioritetskön (funktionsobjektsklassen std::less är förvald). Här kan man, genom att uttryckligen ange en annat funktionsobjektsklass än std::less<t>, styra hur prioritetsjämförelsen ska göras. Standardvalen motsvarar att man uttryckligen deklarerar ett priority_queue-objekt för T lika med int på följande sätt: priority_queue<int, vector<int>, less<int> > pq; Denna deklaration kan vi alltså göra betydligt enklare genom: priority_queue<int> pq; I vårt fall vill vi alltså ha något annat än less<int>, och måste då också ange argumentet vector<int>. Finns det något standardfunktionsobjekt som kan användas?
7 TDIU06 Laborationshandledning 7 Laboration 12 Map, sortering, funktionsobjekt Övning på std::map, std::sort och funktionsobjekt. Skriv ett program som läser en text från en textfil och räknar hur många gånger varje bokstav förekommer i texten. Det är tillåtet att anta att endast bokstäver i det engelska alfabetet (A-Z) förekommer. Ingen skillnad mellan stora och små bokstäver ska göras. Använd std::map. När hela texten är läst ska programmet skriva ut en tabell som (i bokstavsordning) visar hur många gånger varje bokstav förekom i texten. Bokstäver i alfabetet som inte alls förekommer i texten kommer inte heller att ingå i tabellen. Nivå 2 (obligatorisk) Ändra i (en kopia) av programmet så att tabellen skrivs ut i frekvensordning, dvs de vanligast förekommande bokstäverna ska komma först och de mindre vanligt förekommande sist. Detta kan man göra genom att kopiera innehållet i mappen till en std::vector och sortera vectorn med avseende på bokstävernas frekvensen. Algoritmen std::sort finns i två varianter, en som (underförstått) använder operator <. För std::pair, som vi alltså har i mappen och kopierat till vectorn, finns två jämförelseoperatorer definierade, operator == och operator <. Operator == returnerar: x.first == y.first && x.second == y.second Operator < (som är den som bestämmer hur elementen i mappen ordnas) returnerar: x.first < y.first (!(x.first < y.first) && x.second < y.second) Algoritmen std::sort finns också i en variant som antingen kan ges en vanlig funktion eller ett funktionsobjekt som ska användas vid jämförelser. För att sortera element med avseende på frekvens måste vi alltså skriva en funktion eller konstruera ett funktionsobjektstyp, vilka i första hand jämför med avseende på komponenten second i paren (där antalet lagras), eventuellt i andra hand på komponenten first. Skriv en vanlig funktion, t.ex. med namnet descending, som kan jämföra två pair med avseende på komponenten second (eventuellt i andra hand på komponenten first). Använd den som tredje argument till sort: sort(v.begin(), v.end(), descending); Nivå 3 (frivillig) Definiera ett funktionsobjekt för att göra jämförelsen. Ska man göra det helt efter konstens alla regler ska man härleda från hjälpklassen std::binary_function men i detta fall kan vi definiera en struct, t.ex. med namnet descending som har medlemsfunktionen operator(). Ett objekt av typen descending kan ges till sort som tredje argument: sort(v.begin(), v.end(), descending()); Ett objekt av typ descending skapas alltså av descending().
8 8 Laborationshandledning TDIU06 Laboration 13 Funktionsobjekt Detta är främst en övning på funktionsobjekt. Uppgiften går ut på att skriva ett program som läser en text och sparar alla vanliga ord i texten i en std::vector. När hela texten har lästs ska orden sorteras och alla dubbletter ska tas bort. Sedan ska programmet skriva ut orden, separerade med mellanrum. Utskriftsraderna ska ha en maxlängd (t.ex. 72 tecken). Så länge som det finns plats för nästa ord och ett mellanrum till på den aktuella utskriftsraden, skrivs ordet och mellanrummet ut, annars skrivs först ett nyradstecken ut och sedan ordet och mellanrummet. Enbart ord som innehåller minst två bokstäver ska sparas i vectorn. Stora och små bokstäver är distinkta, till exempel ska ord, Ord och ORD ska behandlas som tre olika ord. Indata kan bestå av strängar som antingen är riktiga ord eller namn (innehåller enbart bokstäver och enkla bindestreck inuti orden, t.ex. hej, Nisse och Karl-Jan ), eller innehåller annat än bokstäver och enkla, inneslutna bindestreck (t.ex. X15, -foo, foo--bar och bar-, som alltså inte är "ord"). Interpunktionstecken (komma, punkt, kolon, semikolon, frågetecken, utropstecken, citattecken) kan förekomma. Sådana sitter först eller sist i ett ord, dvs inget mellanrum före till exempel ett kommatecken men däremot efter, om inte radslut följer direkt. Apostrof för att ange genitiv när subjektet slutar på s, t.ex. Anders bil kan förekomma i en svensk text. I en engelsk text kan den engelska konventionen ( s) för att ange genitiv förekomma, t.ex. Andy s car. Parenteser kan förekomma. För varje läst sträng kan man göra följande för att hitta ett riktigt ord: Ta bort alla inledanden citattecken och vänsterparenteser. Ta bort alla avslutande interpunktionstecken, citattecken, apostrofer och högerparenteser. Ta bort engelsk genitivändelse ( s). Kontrollera att strängen endast innehåller bokstäver och bindestreck. Om det finns bindestreck, kontrollera att endast enskilda, inneslutna sådana finns. Om en sträng klarar den sista kontrollen och har minst längd 2, sparas den som ett riktigt ord. Programmet ska läsa strängar från indatatexten och hitta de "riktiga" ord som finns i texten. Efter att vectorn med orden har sorterats och alla dubbletter tagits bort, ska orden skrivas ut. Använd algortimen std::for_each och en egen funktion print_word för att skriva ut orden. Funktionen print_word anropas av for_each för varje ord i vectorn och har i uppgift, förutom att skriva ut varje ord följt av ett mellanrum, även att kontrollera när det är dags att generera en ny rad i utskriften. Utskrift ska göras på std::cout. Nivå 2 (obligatorisk) Byt funktionen print_word mot en funktionsobjektsklass print_word av struct-typ. Variabler för att hålla reda på maximal radlängd (konstant) och aktuell radlängd kan vara statiska variabler i operator(), för att undvika datamedlemmar i klassen i detta skede. Utskrift ska göras på std::cout. Nivå 3 (frivillig) Gör om struct:en till class. Maximal radlängd och aktuell radlängd ska vara datamedlemmar i klassen och ska initieras av en konstruktor, vilken ska ha den maximala radlängden som parameter (med förvalt argument 72). Utskrift ska göras på std::cout. Nivå 4 (frivillig) Lägg till möjligheten att även binda utströmmen via ett konstruktorargument (typ ostream&) med std:.cout som förvalt argument. Nu ska man alltså kunna skapa funktionsobjekt av typen print_word på tre olika sätt, dels utan argument (då ska utströmmen vara cout och maximal radlängd ska vara 72), del genom att ange ett heltalsvärde som anger den maximala radlängden (utströmmen ska vara cout), eller genom att ange både en utström och en maximal radlängd.
Övningsuppgifter. TDIU04 Programmering i C++, standardbibliotek. Innehåll. Vt Lektion Lektion Lektion Lektion 4...
TDIU04 Programmering i C++, standardbibliotek Vt1 2015 Övningsuppgifter Innehåll Lektion 1... 2 Lektion 2... 3 Lektion 3... 4 Lektion 4... 5 Lektion 5... 6 De tre senaste tentorna finns tillgängliga via
Standard Template Library
Linköpings Universitet Institutionen för datavetenskap (IDA) UPP-gruppen 2015-11-01 Standard Template Library Mål Denna laboration går ut på att öva på att använda de givna klasser och algoritmer som finns
TDDI14 Objektorienterad programmering
LINKÖPINGS TEKNISKA HÖGSKOLA Institutionen för datavetenskap Avdelningen för programvara och system Tommy Olsson 2015-05-27 Datortentamen i TDDI14 Objektorienterad programmering Provkod DAT1 Datum 2015-06-01
TDIU01 - Programmering i C++, grundkurs
TDIU01 - Programmering i C++, grundkurs Sammanfattning period 1 Eric Elfving Institutionen för datavetenskap 1 oktober 2013 Översikt Ett C++-programs uppbyggnad Variabler Datatyper Satser Uttryck Funktioner
TDDI TDDI22 Tentaregler
Inloggning TDDI22 Tentaregler Logga in i tentasystemet genom att välja session exam system och logga in med ditt vanliga LiU- ID. Välj inte att ha denna session som standardsession. Verifiera att dina
TDDI22 (exempel) TDDI22 Tentaregler
Inloggning TDDI22 Tentaregler Logga in i tentasystemet genom att välja session exam system och logga in med ditt vanliga LiU- ID. Välj inte att ha denna session som standardsession. Verifiera att dina
TDDI TDDI22 Tentaregler
Inloggning TDDI22 Tentaregler Logga in i tentasystemet genom att välja session exam system och logga in med ditt vanliga LiU- ID. Välj inte att ha denna session som standardsession. Verifiera att dina
Lektionsuppgifter. TDDI14 Objektorienterad programmering. Lektionsplanering Lektion Lektion Lektion
LINKÖPINGS TEKNISKA HÖGSKOLA Institutionen för datavetenskap Programvara och system Tommy Olsson 2014-02-05 Lektionsplanering.................................. 2 Lektion 1..........................................
Introduktionslaboration
LINKÖPINGS TEKNISKA HÖGSKOLA Institutionen för datavetenskap Avdelningen för programvara och system (SaS) Tommy Olsson 2006-08-31 TDIU06 Programmering g.k Introduktionslaboration Ht1, 2006 Detta häfte
Algoritmbiblioteket (STL) Designstrategi Generiska algoritmer som fungerar på godtyckliga samlingsdatatyper, vilka har iteratorer.
Algoritmbiblioteket (STL) (f.d.) Standard Template Library Samlingstyper (containers) Algoritmer Funktionsobjekt Adaptrar Designstrategi Generiska algoritmer som fungerar på godtyckliga samlingsdatatyper,
Programmering C: Tentamen of 5 Prioritet och associativitet hos operatorerna i C De viktigaste operatorerna: Prioritet Kategori Operator
Programmering C: Tentamen 2008-05-31 1 of 5 Örebro universitet Institutionen för teknik Thomas Padron-McCarthy (Thomas.Padron-McCarthy@tech.oru.se) Tentamen i Programmering grundkurs och Programmering
Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6
Laboration 2 Objektorienterad programmering i Java I Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6 Syfte: Att kunna använda sig av olika villkors- och kontrollflödeskonstruktioner
Kursmaterial för laborationer i
Kursmaterial för laborationer i IMPA TDDC 68 Sammanställt av Torbjörn Jonsson 2007-02-09 INNEHÅLL Allmänt om C++-laborationerna 1 De olika laborationerna: Lab0: Grundläggande C++ 3 Lab1: Sortering med
TDDC74 Lab 02 Listor, sammansatta strukturer
TDDC74 Lab 02 Listor, sammansatta strukturer 1 Översikt I denna laboration kommer ni att lära er mer om: Mer komplexa rekursiva mönster, procedurer och processer. Hur man kan hantera listor och andra enklare
Tentamen, Algoritmer och datastrukturer
UNDS TEKNISKA ÖGSKOA (6) Institutionen för datavetenskap Tentamen, Algoritmer och datastrukturer 23 8 29, 8. 3. Anvisningar: Denna tentamen består av fem uppgifter. Totalt är skrivningen på 36 poäng och
Tentamen EDAF30 Programmering i C++
LUNDS TEKNISKA HÖGSKOLA 1(6) Institutionen för datavetenskap Tentamen EDAF30 Programmering i C++ 2016 01 11, 8.00 13.00 Hjälpmedel: En valfri C++-bok. OH-bilderna från föreläsningarna är inte tillåtna.
Intro till standardbiblioteket. Eric Elfving
Intro till standardbiblioteket Eric Elfving 1 Behållare (containers) 2 Iteratorer 3 Algoritmer 15 mars 2018 2 / 13 Bibliotekets behållare delas in i tre grupper: Sekevensbehålare (Sequence containers)
Operatoröverlagring. endast operatorsymboler definierade i C++ kan överlagras = += -= *= /= %= ^= &= = <<= >>= < > <= >= ==!= && > ->*, [ ] ( )
TDDC76 PoD OH Föreläsning C++ 83 Operatoröverlagring endast operatorsymboler definierade i C++ kan överlagras + - * / % ^ & ~! > = += -= *= /= %= ^= &= = = < > = ==!= && ++ -- -> ->*, [ ]
Programmering i C++ EDA623 Mallar. EDA623 (Föreläsning 12) HT / 29
Programmering i C++ EDA623 Mallar EDA623 (Föreläsning 12) HT 2013 1 / 29 Mallar Innehåll Klassmallar Funktionsmallar EDA623 (Föreläsning 12) HT 2013 2 / 29 Containerklasserna vector, deque och list utgör
Uppgift 1 ( Betyg 3 uppgift )
2008-03-12.kl.14-19 Uppgift 1 ( Betyg 3 uppgift ) Du skall skriva ett program som läser igenom en textfil som heter FIL.TXT och skriver ut alla rader där det står ett decimaltal först på raden. Decimaltal
TDDC77 Objektorienterad Programmering
TDDC77 Objektorienterad Programmering Föreläsning 3 Sahand Sadjadee IDA, Linköpings Universitet Hösttermin 2018 Outline Operatorer Java Standard Library Inmatning Operatorer operatorer En operator är en
Innehåll. Pekaren this Självreferens. Klasser Resurshantering, representation. Överlagring av operatorer. Överlagring av operatorer
Innehåll EDAF30 Programmering i C++ 8. Klasser; resurshantering och polymorfism Sven Gestegård Robertz Datavetenskap, LTH 2016 1 Klasser 2 Operatorer 3 Klasser, resurshantering Rule of three Move semantics
Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p
Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Skriven av Michael Andersson Introduktion Programmering I högnivåspråk fokuserar på själv problemet (algoritmen) istället
Innehåll. 1 Funktionsmalllar. 2 Klassmallar. struct Name { string s; //... }; const Name & minimum ( const Name & a, const Name & b) { if(a.s < b.
Innehåll EDAF30 Programmering i C++ Generisk programmering med templates (mallar) Sven Gestegård Robertz Datavetenskap, LTH 2015 1 Funktionsmalllar 2 Generisk programmering med templates (mallar) 2/1 Generisk
C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen
C++ Funktioner 1 Teori När programmen blir större och mer komplicerade är det bra att kunna dela upp programmet i olika delar som gör specifika saker, vilket kan göra programmet mer lättläst. Ett sätt
2D1387, Programsystemkonstruktion med C++ 01/02 1
2D1387, Programsystemkonstruktion med C++ 01/02 1 Slide 1 Del4 Klassmallar, funktionsmallar och STL Ämnesområden denna föreläsning: Funktionsmallar (function templates) Klassmallar Mallar för medlemmar
Räkna med C# Inledande programmering med C# (1DV402)
Räkna med C# Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får använda detta verk så här: Allt innehåll i verket
Objektorienterad programmering Föreläsning 9. Copyright Mahmud Al Hakim Agenda (halvdag)
Objektorienterad programmering Föreläsning 9 Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Agenda (halvdag) Fält Grunderna Fält med komponenter av struct-typ Fält med referenser Standardklassen
C++ - En introduktion
C++ - En introduktion De imperativa grunderna för dig som kan programmera Eric Elfving Institutionen för datavetenskap 1 / 72 Översikt 1 Grunderna 2 Uttryck och satser 3 Funktioner 4 Poster 1 Grunderna
TDDI TDDI22 Tentaregler
Inloggning TDDI22 Tentaregler Logga in i tentasystemet genom att välja session exam system och logga in med ditt vanliga LiU- ID. Välj inte att ha denna session som standardsession. Verifiera att dina
TDDI TDDI22 Tentaregler
Inloggning TDDI22 Tentaregler Logga in i tentasystemet genom att välja session exam system och logga in med ditt vanliga LiU- ID. Välj inte att ha denna session som standardsession. Verifiera att dina
TDIU01 - Programmering i C++, grundkurs
TDIU01 - Programmering i C++, grundkurs Grundläggande satser och uttryck Eric Elfving Institutionen för datavetenskap 5 augusti 2014 Översikt Uttryck Litteraler Operatorer Satser Villkor Upprepning Teckenhantering
Kapitel 4 - Mallar. Kapitel 4. Introduktion till mallar STL. 2D1387 Programsystemkonstruktion med C++ 1
Kapitel 4 Introduktion till mallar STL 2D1387 Programsystemkonstruktion med C++ 1 Kapitel 4 - Klassmallar, funktionsmallar och STL Funktionsmallar Klassmallar Mallar för medlemmar Specialisering Standardbiblioteket
Kapitel 4. Funktionsmallar. Mallar. Introduktion till mallar STL
Kapitel 4 Introduktion till mallar STL Kapitel 4 - Klassmallar, funktionsmallar och STL Funktionsmallar Klassmallar Mallar för medlemmar Specialisering Standardbiblioteket för mallar (STL): Namnrymden
Kapitel 4. Funktionsmallar. Mallar. Introduktion till mallar STL
Kapitel 4 Introduktion till mallar STL Kapitel 4 - Klassmallar, funktionsmallar och STL Funktionsmallar Klassmallar Mallar för medlemmar Specialisering Standardbiblioteket för mallar (STL): Namnrymden
Skizz till en enkel databas
Skizz till en enkel databas Data: Register En vektor Funktioner: Databas Initiera huvudloop Avsluta Poster (struct( struct) val Mata in Skriv ut Spara Hämta Ändra Radera Enligt diskussion 1999-11-23 Bertil
Objektorienterad programmering Föreläsning 4
Objektorienterad programmering Föreläsning 4 Copyright Mahmud Al Hakim mahmud@dynamicos.se www.webbacademy.se Agenda Introduktion till objektorientering Klasser och Objekt Instansvariabler Metoder Introduktion
Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag
Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag Datum: 2008-08-14 Tid: 08-12 Plats: PC6-PC7 i E-huset. Jour: Per-Magnus Olsson, tel 285607 Jourhavande kommer att besöka skrivsalarna varje
TDIU01 (725G67) - Programmering i C++, grundkurs
. TDIU01 (725G67) - Programmering i C++, grundkurs Program, datatyper och IO Eric Elfving Institutionen för datavetenskap 7 oktober 2015 Översikt 2/14 Struktur på ett C++-program Köra ett program Variabler
TDIU01 - Programmering i C++, grundkurs
. TDIU01 - Programmering i C++, grundkurs Datalagring - poster och vektorer Eric Elfving Institutionen för datavetenskap 7 oktober 2015 Poster 2/17 struct Book string title; string author; int pages; ;
Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek
De åtta primitiva typerna Java, datatyper, kontrollstrukturer Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Typ Innehåll Defaultvärde Storlek boolean true, false false 1 bit char Tecken \u000
Innehåll. Exceptionella händelser (exceptions, undantag ) Felhantering Tre nivåer av felhantering: Nivå 2: exceptions (eller returvärde)
Innehåll EDAF30 Programmering i C++ 7. Felhantering. Sven Gestegård Robertz Datavetenskap, LTH 2017 1 Felhantering Exceptions Exceptions och resurshantering Specifikation av exceptionella händelser Static
Tentamen EDAF30 Programmering i C++
LUNDS TEKNISKA HÖGSKOLA 1(5) Institutionen för datavetenskap Tentamen EDAF30 Programmering i C++ 2017 04 20, 14:00 19:00 Hjälpmedel: En valfri C++-bok. Andra papper med anteckningar eller utskrifter är
Objektorienterad programmering D2
Objektorienterad programmering D2 Laboration nr 2. Syfte Att få förståelse för de grundläggande objektorienterade begreppen. Redovisning Källkoden för uppgifterna skall skickas in via Fire. För senaste
Parameteröverföring. Exempel. Exempel. Metodkropp
Exempel atriangle.changesize (100, 50); // OK atriangle.changesize (100); // fel antal atriangle.changesize ( 1, 50); // fel datatyp char c = atriangle.getarea (); // fel datatyp Parameteröverföring I
Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag
Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag Datum: 2009-04-15 Tid: 8-12 Plats: SU-salar i B-huset. Jour: Per-Magnus Olsson, tel 285607 Jourhavande kommer att besöka skrivsalarna ungefär
ADT Kö. Seminarium 4 Köer och Stackar Innehåll. Operationer. ADT Stack. Definition. Definition
Seminarium 4 Köer och Stackar Innehåll ADT:erna Kö och Stack Definitioner Operationer Exempel på användning Givna klasser i Java Interfacet Queue Klassen Stack Klassen LinkedList Klassen PriorityQueue
Tentamen *:85/2I4123 C
DSV Sid 1(6) *:85/2I4123 Jozef Swiatycki 2006-01-21 Tentamen *:85/2I4123 C++ 2006-01-21 Denna tentamen består av fyra uppgifter som tillsammans kan ge maximalt 30 poäng. För godkänt resultat krävs minst
Klassdeklaration. Metoddeklaration. Parameteröverföring
Syntax: Class Declaration Modifier Class Body Basic Class Member Klassdeklaration class Class Member Field Declaration Constructor Declaration Method Declaration Identifier Class Associations Motsvarar
Johan Karlsson Datavetenskap för teknisk kemi, 10p, moment 1 Datavetenskap Umeå Universitet. Tentamen
Tentamen för teknisk kemi, 10p, moment 1 29 november 1999 Skrivtid 9-15 Hjälpmedel: av följande böcker. - U. Bilting och J. Skansholm: Vägen till C - A. Kelley & I. Pohl: A Book on C Maxpoäng: Gräns för
Tentamen i. för D1 m fl, även distanskursen. lördag 26 februari 2011
1 of 7 Örebro universitet Akademin för naturvetenskap och teknik Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se) Tentamen i Programmering grundkurs och Programmering C för D1 m fl, även distanskursen
TDIU01 Programmering i C++
TDIU01 Programmering i C++ Föreläsning 6 - Klasser Eric Elfving, eric.elfving@liu.se Institutionen för datavetenskap (IDA) Avdelningen för Programvara och system (SaS) Klasser När vi skapade vår lista
Användarhandledning Version 1.2
Användarhandledning Version 1.2 Innehåll Bakgrund... 2 Börja programmera i Xtat... 3 Allmänna tips... 3 Grunderna... 3 Kommentarer i språket... 4 Variabler... 4 Matematik... 5 Arrayer... 5 på skärmen...
Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper
Tentamen Programmeringsteknik I 2018-03-16 Skrivtid: 8:00 13:00 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer
Innehåll. Introduktion till objektorientering. OOP (objektorienterad programmering) Objekt, instanser, klasser
Föreläsning 1 Innehåll Introduktion till objektorientering OOP (objektorienterad programmering) Objekt, instanser, klasser C++ OO i C++ Standardbibliotek Utökningar från C (syntaktiskt socker) Introduktion
Nedan skapar vi klassen Person innehållande datamedlemmar för förnamn, efternamn, ålder, längd och vikt:
8. Objektorientering Skälet till att C++ är ett av de mest använda programspråken är att det är objektorienterat. Detta bygger vidare på begreppet struct (ursprungligen från språket C som inte är objektorienterat),
Kalkylator för aritmetiska uttryck
Linköpings Universitet Institutionen för datavetenskap (IDA) UPP-gruppen 2016-08-26 Kalkylator för aritmetiska uttryck I den här uppgiften ska du arbeta med ett program för att behandla enkla aritmetiska
Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.
Tentamen Programmeringsteknik II 2014-0-27 Skrivtid: 0800 100 Tänk på följande Skriv läsligt! Använd inte rödpenna! Skriv bara på framsidan av varje papper. Börja alltid ny uppgift på nytt papper. Lägg
Tentamen i. för D1 m fl, även distanskursen. fredag 13 januari 2012
1 of 6 Örebro universitet Akademin för naturvetenskap och teknik Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se) Tentamen i Programmering grundkurs och Programmering C för D1 m fl, även distanskursen
Innehåll. Parametriserade typer. Klassmallar. Klassmallen Vektor Konstructor med std::initializer_list. Klassmallen Vektor Medlemsfunktioner
Innehåll EDAF30 Programmering i C++ 10. Generisk programmering. Mallar och funktionsobjekt Sven Gestegård Robertz Datavetenskap, LTH 2017 1 Funktionsobjekt Mallar med variabelt antal argument 10. Generisk
Laboration 1. "kompilera"-ikonen "exekvera"-ikonen
Programmerade system I1 Syfte Laboration 1. Syftet med denna laboration är dels att göra dej bekant med de verktyg som kan vara aktuella i programmeringsarbetet, dels ge en första inblick i att skriva
Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper
Tentamen Programmeringsteknik II 2018-10-19 Skrivtid: 8:00 13:00 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer
Objektorienterad programmering
Objektorienterad programmering Föreläsning 22 Copyright Mahmud Al Hakim mahmud@dynamicos.se www.webacademy.se Agenda Rekursion Samlingar Listor Mängder Avbildningstabeller 1 Rekursion För att förstå rekursion
Introduktionslaboration
TDDC76 Laborationshandledning 1 TDDC76 Programmering och datastrukturer Introduktionslaboration Denna introduktionslaboration introducerar programmeringsspråket C++, hur du skriver enkla C++-program samt
Laboration 3. Kalkylator för aritmetiska uttryck. Kalkylatorn ska kunna läsa antingen enbokstavskommandon eller infixuttryck. Exempel på infixuttryck:
TDDC76 Laborationshandledning 1 Laboration 3 Kalkylator för aritmetiska uttryck I den här uppgiften att du ska arbeta med ett program för att behandla enkla aritmetiska uttryck. Delar av programmet är
Uppgifter till praktiska tentan, del A. (7 / 27)
Uppgifter till praktiska tentan, del A. (7 / 27) I. Sortering/Sökning: III II. Representation/Omvandling/format/protokoll: II III. Strukturering: II I alla problem, där bokstäver förekommer, antar vi att
Innehåll. Klasserna vector och deque
Innehåll EDAF30 Programmering i C++ Standardbiblioteket: Datastrukturer och algoritmer Sven Gestegård Robertz Datavetenskap, LTH 2015 1 Datastrukturer, containerklasser Sekvenser Insättning 2 Insättningsiteratorer
Tentamen i Programmering grundkurs och Programmering C
1 of 8 Örebro universitet Institutionen för naturvetenskap och teknik Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se) Tentamen i Programmering grundkurs och Programmering C för D1 m fl, även distanskursen
LÖSNINGSFÖRSLAG TENTAMEN
LÖSNINGSFÖRSLAG TENTAMEN OBJEKTORIENTERAD PROGRAMMERING I JAVA 5P FRISTÅENDE KURS, DAG (ITM - ÖSTERSUND) MÅNDAG 2 JUNI, 2003, KL. 8-13 TID: 5 TIMMAR ANTAL UPPGIFTER: 8 MAX POÄNG: 43 BETYGSKALA: UNDERKÄND
Programmering B med Visual C++ 2008
Programmering B med Visual C++ 2008 Innehållsförteckning 1 Repetition och lite nytt...5 I detta kapitel... 5 Programexekvering... 5 Loop... 5 Källkod... 6 Verktyg... 6 Säkerhetskopiera... 6 Öppna, kompilera,
1 Klasser och objektorientering Vad är objektorientering?
1 Klasser och objektorientering Vad är objektorientering? Det finns olika synsätt på programmering, dessa olika synsätt kallas för paradigm. De vanligaste paradigmen är det imperativa/proceduriella, det
Grunderna i SQL del 1
Grunderna i SQL del 1 1. SELECT-frågor 2. SELECT 3. WHERE 4. ORDER BY 5. Inre join 6. Yttre join 7. Andra typer av join 8. Union 9. Aggregatfunktioner 10. Gruppera och summera Kap. 3 Kap. 4 Kap. 5 utom
Programmering A. Johan Eliasson johane@cs.umu.se
Programmering A Johan Eliasson johane@cs.umu.se 1 Jag Undervisar mest grundläggande programmering på Institutionen för datavetensakap Applikationsutveckling för iphone Applikationsutveckling i Java Datastrukturer
TUTORIAL: KLASSER & OBJEKT
TUTORIAL: KLASSER & OBJEKT I denna tutorial lär vi oss att använda klasser och objekt samt hur vi bygger en enkel applikation kring dessa. I tutorialen kommer det finnas en mängd kod som du antingen kan
Föreläsning 3. Stack
Föreläsning 3 Stack Föreläsning 3 ADT Stack Stack JCF Tillämpning Utvärdera ett postfix uttryck Stack implementerad med en array Stack implementerad med en länkad lista ADT Stack Grundprinciper: En stack
TDIU01 - Programmering i C++, grundkurs
TDIU01 - Programmering i C++, grundkurs Strömmar, externa filer och kommandoradsargument Eric Elfving Institutionen för datavetenskap 7 oktober 2015 Översikt 2/32 Strömmar Kommandoradsargument Jämförelseoperatorer
Laboration 1 Introduktion till Visual Basic 6.0
Laboration 1 Introduktion till Visual Basic 6.0 Förberedelse Förbered dig genom att läsa föreläsningsanteckningar och de kapitel som gåtts igenom på föreläsningarna. Läs även igenom laborationen i förväg.
Övningsuppgifter kapitel 8
Inst. för Systemteknik Introduktion till programmering (SMD 180), 5 p Övningsuppgifter kapitel 8 1. Listor är en viktig datatyp i Python. Hur definierar kursboken lista? Vad kallas de värden som tillsammans
Generell (template) programmering. Effektiv C++ Slutliga tips Genomgång av gammal tenta. Daniel Aarno Allt som fungerar som x ÄR x
Generell (template) programmering Funktionsobjekt och funktionspekare Iteratorer Algoritmer Effektiv C++ Slutliga tips Genomgång av gammal tenta Daniel Aarno bishop@kth.se 2 int compare(int i1, int i2)
Grunderna i C++ T A. Skapad av Matz Johansson BergströmLIMY
Grunderna i C++ ARK 385: Virtuella Verktyg i en Materiell värld AT Arkitektur & Teknik Chalmers Tekniska Högskola 2009 - Kursen skapades (3 förel.) 2010-6 förel. + 2 projekt 2011-8 förel. Helt omarbetade
TDIU Regler
Regler Student får lämna salen tidigast en timme efter tentans start. Vid toalettbesök eller rökpaus ska pauslista utanför salen fyllas i. All form av kontakt mellan studenter under tentans gång är strängt
Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,
Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1 Måndagen den 10 januari 2011, 8.15 12.15 Tentamen består av två delar, del A och del B. Del A innehåller 10 kryssfrågor på olika teman
Tentamen i. Programmering i språket C
1 of 6 Örebro universitet Akademin för naturvetenskap och teknik Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se) Tentamen i Programmering i språket C för D1 m fl, även distanskursen lördag 25 februari
1 Texthantering. 1.1 Typen char. Exempel, skriv ut alfabetet
1 Texthantering I detta avsnitt tas det upp två sätt att arbeta med text i C++ program. Det första sättet som behandlas är hanteringen av textfält. Texter i C++ består utav en serie med enstaka tecken
HI1024 Programmering, grundkurs TEN
HI1024 Programmering, grundkurs TEN2 2016-12-22 KTH STH Flemingsberg 8.15-13.00 Tillåtna hjälpmedel: Kursboken C PROGRAMMING A Modern Approach K. N. King helt utan anteckningar Alternativt C från början
Uttryck, satser och strömhantering
Linköpings Universitet Institutionen för datavetenskap (IDA) UPP-gruppen 2018-09-06 Mål Uttryck, satser och strömhantering I denna laboration ska du lära dig Formaterad inläsning och utskrift Vanliga repetitions-
Innehåll. Användardefinierade typer. Användardefinierade typer Kategorier. Konstruktorer. Konstruktorer Två sätt att skriva initiering av medlemmar
Innehåll EDAF30 Programmering i C++ 3. Mer om klasser. Funktionsanrop Sven Gestegård Robertz Datavetenskap, LTH 2017 1 Klasser pekaren this const för objekt och medlemmar Kopiering friend inline 2 Funktionsanrop
TDIU01 - Programmering i C++, grundkurs
TDIU01 - Programmering i C++, grundkurs Underprogram - Funktioner Eric Elfving Institutionen för datavetenskap 18 september 2014 Översikt 2/22 Återblick till satsblocken Funktioner - Namngivna satsblock
Tentamen i Programmering grundkurs och Programmering C
1 of 7 Örebro universitet Institutionen för teknik Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se) Tentamen i Programmering grundkurs och Programmering C för D1 m fl, även distanskursen fredag 15
Användning av typeid. Operatorerna typeid och. Filen typeinfo.h måste inkluderas. typeid
Operatorerna typeid och dynamic_cast mm - 1 Användning av typeid mm - 2 Vid dynamiskt bindning av funktioner vet man inte vilket objekt som funktionen binds till vid exekveringstillfället. Ofta saknar
Föreläsning 18 Filer och avbildningar
Föreläsning 18 Filer och avbildningar Grundkurs i programmering Jan Lönnberg Institutionen för datateknik -universitetets högskola för teknikvetenskaper 15.11.2011 Avbildningar Hur skulle du göra en: Ordlista
Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer
Programmering hh.se/db2004 Föreläsning 3: Java. Grundtyper, variabler och arrayer Hej Då, Karel! Verónica Gaspes www2.hh.se/staff/vero www2.hh.se/staff/vero/programmering Center for Research on Embedded
Objektorienterad programmering
Objektorienterad programmering Föreläsning 7 Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Agenda Konstanter och readonly Statiska klasser Standardklassen Math Parameteröverföring Referensen
TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng
TENTAMEN I PROGRAMMERING Ansvarig: Jan Skansholm, tel 7721012 Betygsgränser: Hjälpmedel: Sammanlagt maximalt 60 poäng. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng Skansholm,
Övning från förra gången: readword
(9 september 2010 T4.1 ) Övning från förra gången: readword /** readword.c * * int readword(char w[], int n) { * * Läser tecken tills en bokstav påträffas. * Läser och lagrar sedan högst n-1 bokstäver
TDDC74 Lab 04 Muterbara strukturer, omgivningar
TDDC74 Lab 04 Muterbara strukturer, omgivningar 1 Översikt I den här laborationen kommer ni att lära er mer om: Tillstånd, och skillnader mellan ren funktionell programmering och imperativ. Skillnaden
Tentamen i. för D1 m fl, även distanskursen. lördag 28 maj 2011
1 of 7 Örebro universitet Akademin för naturvetenskap och teknik Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se) Tentamen i Programmering grundkurs och Programmering C för D1 m fl, även distanskursen
TDIU20 (exempel) TDIU20 Tentaregler
Inloggning TDIU20 Tentaregler Logga in i tentasystemet genom att välja session exam system och logga in med ditt vanliga LiU- ID. Välj inte att ha denna session som standardsession. Verifiera att dina
TDDC76 - Programmering och Datastrukturer
TDDC76 - Programmering och Datastrukturer Objektorientering - Klasser Eric Elfving Institutionen för datavetenskap 1 / 20 Återblick struct struct är bra att ha för att skapa aggregat - slå ihop flera data
Tentamen: Datordel Programmeringsteknik
Tentamen: Datordel Programmeringsteknik Datum: 2013-02-22 Tid: 9:00-14:00 Sal: Ansvarig: Resultat: Hjälpmedel: Betygsgränser: Ulf Johansson Anslås inom 3 veckor. Inga Sammanlagt 30 p för G, 45 p för VG.