TDDC76 - Programmering och Datastrukturer

Relevanta dokument
C++ - En introduktion

C++ - En introduktion

TDIU01 - Programmering i C++, grundkurs

TDIU01 (725G67) - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs

Föreläsning 1: Momstabellen i C++

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs

TDDC76 - Programmering och Datastrukturer

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

TDDC76 - Programmering och Datastrukturer

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Programmering i C++ EDA623 Strömmar och filer. EDA623 (Föreläsning 9) HT / 19

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Introduktionslaboration

Klassdeklaration. Metoddeklaration. Parameteröverföring

Funktionens deklaration

Introduktionslaboration

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

TDP004. Minne och pekare. Eric Elfving Institutionen för datavetenskap

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen

F4. programmeringsteknik och Matlab

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

TDIU01 Programmering i C++

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Objektorienterad Programmering (TDDC77)

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Grunderna i C++ T A. Skapad av Matz Johansson BergströmLIMY

Programmering i C, 7,5 hp

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

C++ Lektion Tecken och teckenfält

Avrundning och manipulatorer

Programmering i C++ EDAF hp. EDAF30 (Föreläsning 2) HT / 18

FÖRSLAG TILL LÖSNING AV Tentamen i Objektorienterad programmering C++ I

Objektorienterad Programmering (TDDC77)

Introduktion C-programmering

En villkorssats är den konstruktion som finns i C++ för att göra en selektion av två alternativa sekvenser. Formen för if satsen är

Programmeringsteknik med C och Matlab

Repetition C-programmering

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

SMD 134 Objektorienterad programmering

TDIU01 - Datortenta (DAT2)

Skizz till en enkel databas

Variabler och konstanter

Introduktion till algoritmer - L0 - Grunder i C++ Matematikgymnasiet, Läsåret L0 - Grunder i C++

Enkla datatyper minne

C++ Slumptalsfunktioner + switch-satsen

Övning2. Variabler. Data typer

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

PROGRAMMERING 2 GRUNDLÄGGANDE SEMANTIK 4

Föreläsning 2. Variabler, tilldelning och kodblock{} if-satsen Logiska operatorer Andra operatorer Att programmera

System.out.println("Jaså du har "+ antalhusdjur+ " husdjur"); if ( antalhusdjur > 5 ) System.out.println("Oj det var många);

1 Datorn som miniräknare. 1.1 Räkneoperationer. 1.2 Variabler

Översikt över Visual Basic

C++ Objektorientering - Klasser. Eric Elfving Institutionen för datavetenskap

EDAf30: Programmering i C++, 7.5 hp. EDAf30: Programmering i C++, 7.5 hp Administration. EDAf30: Programmering i C++, 7.5 hp Obligatoriska moment

LÖSNINGSFÖRSLAG TILL Tentamen i objektorienterad programmering i C++ I

Outline. For. I istället för att följa det normala ordningen, man ändra den. I i Java får man inte göra hopp hur som helst

Parameteröverföring. Exempel. Exempel. Metodkropp

1 Funktioner och procedurell abstraktion

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

1 Texthantering. 1.1 Typen char. Exempel, skriv ut alfabetet

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser

C++ Objektorientering - Klasser. Eric Elfving

Språket Python - Del 1 Grundkurs i programmering med Python

Användarhandledning Version 1.2

Exempel på ett litet Ada-program

Tecken. char. char ch = A ; sizeof(char) = 1 byte (ej 16-bitars tecken som i Java) char namn[]= "Nils"; // längd = 5 bytes

Nedan skapar vi klassen Person innehållande datamedlemmar för förnamn, efternamn, ålder, längd och vikt:

Föreläsning 7. Nyckelord I Java. Uttryck. Uttryck, Operatorer Och Kontrollflöden

Villkor och tester. Utförande satser bygger upp metoderna, man brukar finindela detta i: sekvenser. Ett program består i princip av: selektioner (val)

Innehåll. Introduktion till objektorientering. OOP (objektorienterad programmering) Objekt, instanser, klasser

Data, typ, selektion, iteration

OBS! All teori i detta och följande dokument kompletteras med genomgångar på lektionerna. Så det är viktigt att närvara och göra egna anteckningar.

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud.

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer

Föreläsning 3: Booleans, if, switch

Programmering i C++ EDA623 Mer om klasser. EDA623 (Föreläsning 6) HT / 26

Planering Programmering grundkurs HI1024 HT 2014

Inledande programmering med C# (1DV402) 27+15=42 1 (22)

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Strukturdiagram. Styra. Algoritmer. Val

Operatorer Tilldelning Kodblock { } if satsen Logiska uttryck Att programmera

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Tentamen i. för D1 m fl, även distanskursen. lördag 26 februari 2011

DD1314 Programmeringsteknik

Frågor TDP004. ExaminaBon. KursinformaBon. Tid i kursen. Tid i kursen Första chansen Bll frågor.

TDDC77 Objektorienterad Programmering

Övningsuppgifter till föreläsning 2 Variabler och uttryck

Föreläsning 2 Programmeringsteknik och C DD1316

Transkript:

TDDC76 - Programmering och Datastrukturer C++ - en introduktion Eric Elfving Institutionen för datavetenskap

1 / 72 Översikt 1 Grunderna 2 Uttryck och satser 3 Funktioner 4 Poster

1 Grunderna Ett första program Variabler och datatyper I/O - Inläsning och utskrift 2 Uttryck och satser 3 Funktioner 4 Poster

3 / 72 Ett första C++-program 1 #include <iostream> 2 using namespace std; 3 4 int main() 5 6 cout << "Ett litet C++-program" << endl; 7 return 0; 8

4 / 72 Ett första C++-program #include <iostream> using namespace std; hello.cc int main() cout << "Ett litet C++-program" << endl; return 0; lit15-1 <203> g++ hello.cc lit15-1 <204>./a.out Ett litet C++-program lit15-1 <205>

5 / 72 Variabler Har alltid tre egenskaper Namn Datatyp Värde Måste deklareras innan de används Kan ses som en " låda" i datorns internminne int val; int y 4; val:? int

6 / 72 Datatyper Bestämmer vad vi kan göra med variabeln och vad (vilka värden) som kan lagras i den Vi använder ofta följande datatyper : int Lagrar ett heltal double Lagrar flyttal, en representation av de reella talen char Lagrar ett tecken bool Sanningsvärden, true eller false string Lagrar text, en samling av tecken (char)

7 / 72 Ett kort C++-program #include <iostream> using namespace std; // Ett kort program för att visa C++ int main() int x,y5; const int z 6; y = 4; x = x*y; // En beräkning return 0; /* Kommentarer kan vara flera rader! */

8 / 72 Inläsning och utskrift - IO Formaterad inmatning Formaterad inläsning - ignorerar inledande "vita tecken"(mellanslag, tabbar, nyradstecken osv) och tolkar nästa ord beroende på datatypen på variabeln där datat ska lagras. int x; cout << "Mata in ett heltal: "; cin >> x;

9 / 72 Inläsning och utskrift - IO Formaterad inmatning Inläsning är buffrad!

10 / 72 Inläsning och utskrift - IO Formaterad utskrift Skaparna av språket väljer hur data formateras vid utskrift. Här kommer några saker man kan använda sig av för att ändra utseendet. '\n' Gå till nästa rad i utskriften '\r' Börja om på samma rad i utskriften flush Skriv ut allt i utmatningsbufferten endl flush följt av \n

11 / 72 Inläsning och utskrift - IO Instruktioner från <iomanip> fixed Skriv ut flyttal med 6 decimaler setprecision(n) Använd N decimaler vid utskrift scientific Visa flyttal på formatet 1.234e+02 setw(n) Använd minst N tecken för nästa utskrift setfill(c) Använd tecknet C som utfyllnadstecken left Vänsterjustera utskriften right Högerjustera utskriften

12 / 72 Inläsning och utskrift - IO Formaterad utskrift #include <iostream> #include <iomanip> using namespace std; int main() int i 10; double d 3.141592; cout << setw(6) << setfill('.') << i << endl; cout << setw(6) << fixed << setprecision(2) << d << endl; cout << setw(10) << left << "hej\n"; cout << setfill(' '); cout << setw(10) << right << "hej" << endl;...10..3.14 hej... hej

13 / 72 Inläsning och utskrift - IO Oformaterad inläsning Formaterad inläsning är bra men ibland vill man få veta exakt vad som matades in, då passar oformaterad inläsning bra. Antag att vi har dessa deklarationer: string str; char c; cin.get(c); getline(cin, str); getline(cin, str, ':'); cin.ignore(28, ':'); cin.peek(); Läs nästa tecken Läs nästa rad Läs en rad eller tills nästa kolon. Ignorera alla tecken tills tecknet ':' eller max 28 tecken. Tittar på nästa tecken.

1 Grunderna Ett första program Variabler och datatyper I/O - Inläsning och utskrift 2 Uttryck och satser 3 Funktioner 4 Poster

15 / 72 Uttryck Uttryck beräknar värden i språket.

16 / 72 Litteraler Litteraler är värden som skrivs direkt i källkoden. Litteraler konverteras till inbyggda typer med regler givna i språket. Exempel: Litteral Typ Värde 1 int 1 0x1b int 27 1.2 double 1.2 1.2e2 double 120.0 'c' char 'c' "c" const char[2] "c" "kalle"s string "kalle"

17 / 72 Operatorer Aritmetiska operatorer C++ har de vanligaste matematiska operatorerna inbyggt: +,-,*,/ utför normalt sett det man väntar sig... Beräkningsordning precis som i matematiken, kan ändras med parenteser. Det finns ett undantag från första punkten, heltalsdivision! a Matematiskt: b = c + d b C++: a/b = c a%b = d Två heltal (int) dividerade ger ett heltal (hur många gånger kan jag dela a med b?) Resten ges av modulo, i C++ används operatorn %.

18 / 72 Operatorer Sammansatt tilldelning Man kan modifiera en variabel med sammansatt tilldelning x += 3 ökar x med tre. Kan såklart även skrivas x = x + 3 Fungerar för alla aritmetiska operatorer (och några fler)

19 / 72 Operatorer Stegning En vanlig operation är att öka eller minska en variabel med värdet 1 Därför finns det operatorer för just detta: ++ och -- Finns i prefix- (++x) och postfix-versioner (x++) Båda ökar värdet med 1, varför finns det två?

20 / 72 Operatorer Prefix stegning Prefix stegning är den som används oftast Ökar värdet och resultatet är det nya värdet int x 1; cout << x << endl; cout << ++x << endl; cout << x << endl; 1 2 2

21 / 72 Operatorer Postfix stegning Ökar värdet och resultatet är det gamla värdet. x++ motsvarar följande beräkning, resultatet är tmp: int tmp x; x = x + 1; int x 1; cout << x << endl; cout << x++ << endl; cout << x << endl; 1 1 2

22 / 72 Operatorer Jämförelseoperatorer Man vill ofta jämföra värden, då använder man jämförelseoperatorer Operator Betydelse == Likhet!= Olikhet < Mindre än > Större än >= Större eller lika <= Mindre eller lika Alla ger logiska värden som svar (bool, true eller false)

23 / 72 Operatorer Logiska operatorer Med hjälp av logiska operatorer kan man slå ihop logiska uttryck Operator Betydelse && Logiskt OCH Logiskt ELLER! Logiskt ICKE Beräkningsordning:! > && > (> tolkas här som beräknas innan )

24 / 72 Strömoperatorer Det finns två strömoperatorer: << och >>. Utskriftsoperatorn << används för att skriva ut ett värde på en ström. Värdet kan vara konstant, till exempel en litteral. Inläsningoperatorn >> används för att hämta ett värde från en ström till en variabel. Vi har tagit upp två grundläggande strömmar, cin för inläsning och cout för utskrift. int x; cout << "Mata in ett tal: "; cin >> x;

25 / 72 Satser Ett C++-program består av satser som körs i en sekvens Ett programs satser körs alltid i den ordning de står i källkoden Satser består av uttryck Satser avslutas oftast med ett semikolon

26 / 72 Satser Uttryckssatsen Uttryckssatsen är den enklaste formen av sats. Uttryck följt av ett semikolon. x++; cout << x; 4;

27 / 72 Satser Deklarationer En variabel deklareras innan den kan användas. Ett namn får endast användas en gång i ett program. Vi får ett kompileringsfel om vi omdeklarerar en variabel. int x 3; int x 4; // Ger ett fel! x = 5; // korrekt double x 4.3; // Fel!

28 / 72 Satser Satsblock Man kan när man vill skapa ett nytt block för att gruppera satser som hör bra ihop. Görs med klammerparenteser (... ) Deklarationer som görs i ett block gäller endast där - blocket skapar ett eget område (scope) där variabler lever och dör. int x 3, y 5; int x 4; // EJ fel, x skapas lokalt! int z; cout << x << ' ' << y; // skriver ut "4 5" z = 6; // Fel, z finns inte här!

29 / 72 Satser Villkor if ( uttryck ) sats else sats if-satsen: om sant, gör följande uttryck ska vara eller gå att konvertera till ett sanningsvärde (bool) else: annars, gör detta else kan utelämnas

30 / 72 Satser Villkor if ( uttryck ) sats1; sats2;... Ibland räcker inte en sats i villkoret, då kan man använda block! Detta är det vanliga skrivsättet, använd alltid block för att slippa problem.

31 / 72 Satser Villkor if ( uttryck1 ) sats1 else if ( uttryck2 ) sats2 else sats3 Ibland vill man kontrollera flera villkor Byt ut else-grenens sats mot en ny if-sats! Väldigt vanlig operation - många språk har egna namn såsom elsif och elif Kan byggas på med valfritt antal else if

32 / 72 Satser Villkor uttryck1 T sats1 if ( uttryck1 ) sats1 else if ( uttryck2 ) sats2 else sats3 F uttryck2 F T sats2 sats3

33 / 72 Satser Uppräkning switch ( uttryck ) case v1: sats1 case v2: sats2 default: sats3 switch-satsen är bra på att kontrollera värdet på ett (uppräkningsbart) uttryck Om ett värde hittas utförs alla satser nedanför detta. Det kallas att man faller igenom övriga villkor.

34 / 72 Satser Uppräkning switch ( uttryck ) case v1: sats1 case v2: sats2 default: sats3 uttryck == v1 F uttryck == v2 F sats3 T T sats1 sats2

35 / 72 Satser Uppräkning switch ( uttryck ) case v1: case v2: sats1 break; case v3: sats2 break; default: sats3 För att utföra samma satser för flera värden har man flera case. Om man vill få switch-satsen att fungera mer som if, kan man använda sig av break.

36 / 72 Satser Uppräkning switch ( uttryck ) case v1: case v2: sats1 break; case v3: sats2 break; default: sats3 uttryck == v1 uttryck == v2 F uttryck == v3 F sats3 T T sats1 sats2

37 / 72 Satser Upprepning Ofta vill man upprepa kod C++ har tre upprepningssatser; while do... while for

38 / 72 Satser Upprepning - while while ( uttryck ) satser while - den enklaste. Utför satser så länge uttryck är sant En förtestad upprepningssats

39 / 72 Satser Upprepning - while while ( uttryck ) satser uttryck T satser F

40 / 72 Satser Upprepning - do-while do satser while ( uttryck ); do-while - en eftertestad while-loop. Utför satser minst en gång.

41 / 72 Satser Upprepning - do-while do satser while ( uttryck ); satser uttryck T F

42 / 72 Satser Upprepning - for for ( init; cond; end ) satser for - En loop med inbyggd räknare. Utför init en gång, kör satser följt av end så länge cond är sant.

43 / 72 Satser Upprepning - for init for ( init; cond; end ) satser end cond F T satser

44 / 72 Skriv ut talen 1..5 int i 1; while ( i <= 5 ) cout << i << endl; ++i; int i 1; do cout << i << endl; ++i; while ( i <= 5 ); for ( int i 1; i <= 5; ++i ) cout << i << endl;

45 / 72 Upprepning Vilken ska jag välja 1. Vet jag hur många gånger det ska upprepas for for(;;) för oändligt många gånger. 2. Ska jag utföra det minst en gång do-while 3. Annars Det som känns bäst... (ofta while)

46 / 72 Räkna antal vita tecken #include <iostream> #include <cctype> using namespace std; int main() char c; int space ; while ( cin.get(c) ) if ( isspace(c) ) ++space; cout << "Du matade in " << space << " vita tecken."

47 / 72 Räkna antal vita tecken med for #include <iostream> #include <cctype> using namespace std; int main() int space ; for (char c; cin.get(c); ) if ( isspace(c) ) ++space; cout << "Du matade in " << space << " vita tecken."

48 / 72 cctype I inkluderingsfilen <cctype> finns teckenhanteringsfunktioner Samtliga tar emot ett tecken och ger 0 som svar vid falskt, nollskilt vid sant. Endast garanterat att de fungerar som väntat för engelska tecken (ASCII) Namn Funktion isaplpha(c) c är ett alfabetiskt tecken isspace(c) c är ett vitt tecken isdigit(c) c är ett numeriskt tecken isupper(c) c är en versal islower(c) c är en gemen

1 Grunderna Ett första program Variabler och datatyper I/O - Inläsning och utskrift 2 Uttryck och satser 3 Funktioner 4 Poster

50 / 72 Funktioner Ett kort exempel #include <iostream> using namespace std; void hello(); // deklaration int main() hello(); // Anrop cout << "------" << endl; hello(); void hello() // definition cout << "Hejsan" << endl; Hejsan ------ Hejsan

51 / 72 Parametrar Med hjälp av parametrar kan man skicka data till sin funktion void hello(string name) // deklaration + definition cout << "Hello " << name << '!' << endl; int main() hello("anna"); Hello Anna!

52 / 72 Parametrar Värdeöverföring Detta var exempel på värdeöverföring Värden kopieras vid överföring - en lokal kopia skapas i funktionen och kan användas som en lokal variabel Eventuella ändringar vi gör på parametern syns inte utifrån Kan också deklareras const för att förbjuda förändringar

53 / 72 Parametrar Värdeöverföring void hello(string name); int main() string user "Nisse"; hello(user); main user: hello name: string "Nisse" string "Nisse"

54 / 72 Parametrar Referensparametrar Om vi vill kunna ändra på vår anropares variabler får vi ta emot parametrarna som referenser En referensparameter deklareras med & void append_word(string & a, string b) a += " " + b; int main() string s1 "Hejsan"; append_word(s1, "svejsan"); cout << s1 << endl; Hejsan svejsan

55 / 72 Parametrar Referensparametrar void append(string & a, string b); int main() string s1"a", s2"b"; append(s1, s2); main s1: s2: append a: b: string "A" string "B" string& string "B"

56 / 72 Parametrar const-referenser Värdeöverföring leder till (ofta onödig) kopiering referensöverföring gör att vi kan råka ändra på anroparens variabler Dessutom kräver referenser att värdet går att ändra på (fungerar inte med konstanter eller litteraler) Därför kan man deklarera sin parameter som const-referens! Bra att ha vid överföring av stora variabler såsom strängar som man inte vill ändra på Kompilatorn ger fel om vi råkar ändra parametern

57 / 72 Parametrar const-referenser void hello(const string & name) cout << "Hello " << name << '!' << endl;

58 / 72 Parametrar Vilken ska jag välja? 1. Vill jag ändra på parametern? referens 2. Är det en inbyggd datatyp (int, double, char, bool)? 1. Vill jag kunna ändra på den lokalt? värdeöverföring 2. Annars const 3. Annars const-referens (blir vanligaste valet)

59 / 72 Parameteröverföring - sammanfattning Figur : Sammanfattning från C++ Core Guidelines

60 / 72 Defaultargument Om man vill kan man ange defaultvärden (skönsvärden) för sina parametrar void print_stars(const int n = 10) for ( int i ; i < n; ++i ) cout << '*'; cout << endl; int main() print_stars(20); print_stars(); ******************** **********

61 / 72 Defaultargument Parametrar med defaultargument måste anges i slutet av parameterlistan void fun(int a, int b=5, int c); g++ -c args.cc args.cc:1:6: error: default argument missing for parameter 3 of 'void fun(int, int, int)'

62 / 72 Defaultargument void fun(int a=1, int b=5, int c=4); Anrop a b c f() 1 5 4 f(2) 2 5 4 f(3,4) 3 4 4 f(3,4,6) 3 4 6

63 / 72 Returvärden Alla funktioner vi skapat hittills har haft returtypen void för att symbolisera avsaknad av returvärde. Alla funktioner kan returnera ett värde I C++ görs det med return: return expr; där expr är ett uttryck med samma datatyp som funktionens returtyp. Funktionen avslutas direkt när return nås. En funktion kan ha flera return-satser, all kod efter den första nås inte.

64 / 72 Returvärden int max(const int a, const int b) if ( a > b ) return a; return b; int main() int a,b; cout << "Mata in två tal: "; cin >> a >> b; int m max(a,b) ; cout << "Det största är " << m << endl; Mata in två tal: 2 6 Det största är 6

string concat(string const & s1, string const & s2) return s1+s2; 65 / 72

1 Grunderna Ett första program Variabler och datatyper I/O - Inläsning och utskrift 2 Uttryck och satser 3 Funktioner 4 Poster

67 / 72 Poster - struct struct Book string title; string author; int pages; ; int main() Book b; b.title = "C++ Primer"; b.author = "Lippman"; b.pages = 976; Man kan med hjälp av poster gruppera data som hör bra ihop till en datatyp. En post är ett exempel på en sammansatt datatyp. Posten har namngivna fält som man kommer åt med punktoperatorn.

68 / 72 Poster struct Book string title; string author; int pages; ; int main() Book b; b.title = "C++ Primer"; b.author = "Lippman"; b.pages = 976; b: Book string title:"c++ Primer" string author: "Lippman" int pages: 976

69 / 72 Poster Initiering och tilldelning // Initiering, fälten fylls från vänster... Book primer "C++ Primer", "Lippman", 976; Book b2 "Professional C++"; // författare och antal sidor får ett // "nollvärde" (tom sträng resp. 0) b2 = primer; // Tilldelning, alla delar kopieras

70 / 72 Poster Poster och funktioner Precis som andra datatyper kan man skicka poster till funktioner. Vi har en komplicerad datatyp (const-)referens bör användas.

71 / 72 Poster Poster och funktioner int main() Book my_book; cout << "Mata in information om en bok" << endl; input(my_book); // Låt användaren mata in information cout << "Inmatat data:" << endl; print(my_book); // Skriv ut bokens information

72 / 72 Poster Poster och funktioner void print(const Book & b) cout << "Titel: " << b.title << '\n' << "Författare: " << b.author << '\n' << "Antal sidor: " << b.pages << endl; void input(book & b) cout << "Titel: "; cin >> b.title; // getline? cout << "Författare: "; cin >> b.author; cout << "Antal sidor: "; cin >> b.pages;

Eric Elfving Institutionen för datavetenskap www.liu.se