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 7 å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
Läs merStandard 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
Läs merTDDI14 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
Läs merTDIU01 - 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
Läs merTDDI 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
Läs merTDDI22 (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
Läs merTDDI 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
Läs merLektionsuppgifter. 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..........................................
Läs merIntroduktionslaboration
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
Läs merAlgoritmbiblioteket (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,
Läs merProgrammering 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
Läs merObjektorienterad 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
Läs merKursmaterial 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
Läs merTDDC74 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
Läs merTentamen, 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
Läs merTentamen 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.
Läs merIntro 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)
Läs merOperatorö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 + - * / % ^ & ~! > = += -= *= /= %= ^= &= = = < > = ==!= && ++ -- -> ->*, [ ]
Läs merProgrammering 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
Läs merUppgift 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
Läs merTDDC77 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
Läs merInnehå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
Läs merProgrammering 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
Läs merInnehå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
Läs merC++ 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
Läs mer2D1387, 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
Läs merRä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
Läs merObjektorienterad 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
Läs merC++ - 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
Läs merTDDI 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
Läs merTDDI 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
Läs merTDIU01 - 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
Läs merKapitel 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
Läs merKapitel 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
Läs merKapitel 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
Läs merSkizz 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
Läs merObjektorienterad 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
Läs merTentamen 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
Läs merTDIU01 (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
Läs merTDIU01 - 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; ;
Läs merDatatyper 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
Läs merInnehå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
Läs merTentamen 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
Läs merObjektorienterad 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
Läs merParameterö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
Läs merTentamen 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
Läs merADT 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
Läs merTentamen *: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
Läs merKlassdeklaration. 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
Läs merJohan 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
Läs merTentamen 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
Läs merTDIU01 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
Läs merAnvä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...
Läs merAnmä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
Läs merInnehå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
Läs merNedan 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),
Läs merKalkylator 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
Läs merDet ä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
Läs merTentamen 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
Läs merInnehå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
Läs merLaboration 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
Läs merAnmä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
Läs merObjektorienterad 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
Läs merIntroduktionslaboration
TDDC76 Laborationshandledning 1 TDDC76 Programmering och datastrukturer Introduktionslaboration Denna introduktionslaboration introducerar programmeringsspråket C++, hur du skriver enkla C++-program samt
Läs merLaboration 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
Läs merUppgifter 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
Läs merInnehå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
Läs merTentamen 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äs merLÖ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
Läs merProgrammering 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,
Läs mer1 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
Läs merGrunderna 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
Läs merProgrammering 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
Läs merTUTORIAL: 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
Läs merFö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
Läs merTDIU01 - 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
Läs merLaboration 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.
Läs merÖ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
Läs merGenerell (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)
Läs merGrunderna 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
Läs merTDIU 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
Läs merProgrammering, 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
Läs merTentamen 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
Läs mer1 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
Läs merHI1024 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
Läs merUttryck, 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-
Läs merInnehå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
Läs merTDIU01 - 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
Läs merTentamen 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
Läs merAnvä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
Läs merFö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
Läs merHej 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
Läs merObjektorienterad 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
Läs merTENTAMEN 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,
Läs merÖ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
Läs merTDDC74 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
Läs merTentamen 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
Läs merTDIU20 (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
Läs merTDDC76 - 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
Läs merTentamen: 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.
Läs mer