Skip to main content

Programmering i C++

Page 1


Programmering i C++

Gyldendal-TISIP-serien – databøker på norsk!

Gyldendal Akademisk og Stiftelsen TISIP ved Høgskolen i Sør-Trøndelag har gått sammen om å utvikle en portefølje av databøker på norsk som er skreddersydde for pensummarkedet ved universitet og høgskoler. De passer også godt for selvstudium og etterutdanning.

Målet med bokserien er å utvikle litteratur som er fullt på høyden med den engelskspråklige, både faglig og pedagogisk. Bøkene skal alltid være faglig à jour og ha gode nettsider som er tilpasset behovene til studenter og forelesere.

Per Borgesen: Dynamiske websider, 1. utgave 2003

Marie Christensen og Louis Harder Fischer: Utvikling av multimedier, 1. utgave 2004

Mads E. Eilertsen og Arne B. Mikalsen: Linux tjenestedrift, 1. utgave 2003

Helge Hafting og Mildrid Ljosland: Algoritmer og datastrukturer, 1. utgave 2003

Kjell Toft Hansen og Tore Mallaug: Databaser, 1. utgave 2003

Tore Berg Hansen og Greta Hjertø: Kvalitet og programvareutvikling, 1. utgave 2003

Svend Andreas Horgen: Webprogrammering i PHP, 1. utgave 2004

Stig Jensen: Introduksjon til datakommunikasjon, 1. utgave 2002

Else Lervik og Vegard B. Havdal: Programmering i Java, 3. utgave 2004

Else Lervik og Mildrid Ljosland: Programmering i C++, 1. utgave 2003

Geir Maribu: Praktisk Linux, 1. utgave 2003

Programmering i C++

En innføring i strukturert og objektorientert programmering

© Forfatterne, Stiftelsen TISIP og Gyldendal Norsk Forlag AS 2003

1. utgave, 3. opplag 2009

Boka er en utvidet og bearbeidet versjon av tittelen Grunnleggende programmering i C++ som ble utgitt på AdNotam Gyldendal i 1993.

ISBN 978-82-05-30733-9

Omslagsdesign: Kristin Berg Johnsen

Layout: Designlaboratoriet

Sats: Forfatterne

Brødtekst: Times New Roman 11/11

Papir: 90 g One Matt

Trykk: Dimograf, Polen 2009

Boka er utgitt i samarbeid mellom

Gyldendal Akademisk og Stiftelsen TISIP

Alle henvendelser om boka kan rettes til Gyldendal Akademisk

Postboks 6730 St. Olavs plass 0130 Oslo

www.gyldendal.no/akademisk akademisk@gyldendal.no www.tisip.no

Verken forfatterne, Stiftelsen TISIP eller Gyldendal Akademisk tar ansvar for at programmene i boka og på bokas internettside kan brukes til annet enn undervisningsformål.

Det må ikke kopieres fra denne boka i strid med åndsverkloven eller avtaler om kopiering inngått med KOPINOR, interesseorgan for rettighetshavere til åndsverk. Kopiering i strid med lov eller avtale kan medføre erstatningsansvar og inndragning, og kan straffes med bøter eller fengsel.

Forord

Dette er ei lærebok i grunnleggende programmering, der C++ brukes som programmeringsspråk. Boka er tenkt brukt ved grunnkurs i programmering, fortrinnsvis på høgskolenivå, men også andre som ønsker en grunnleggende innføring i programmering, vil ha glede av boka.

Boka bygger på "Grunnleggende programmering i C++" og "Objektorientert programmering i C++" som kom ut i henholdsvis 1993 og 1994. Strukturen til boka følger i hovedtrekk den første av disse bøkene, men flere av emnene i den andre boka er tatt med. Ti år er lang tid i databransjen, men C++ er fortsatt et meget aktuelt programmeringsspråk. Vi har derfor valgt å lage en ny utgave med de endringene som var nødvendige for å tilpasse den til dagens virkelighet.

De vesentligste endringene er:

– Klassen string benyttes i stedet for nullterminerte strenger, som nå kun er tatt med for helt spesielle anvendelser.

– Det har kommet inn et kapittel om Standard Template Library (STL), der spesielt vektorer får en grundig behandling.

– Mer stoff om klasser og objekter er tatt med, for eksempel konstruktører og destruktører, utvidelse av bruksområdet til operatorer ("operator overloading"), polymorfi og arv.

– Boka har fått egen nettside, www.tisip.no/boker/cpp, og stoff som tidligere fulgte med på diskett, kan du nå finne der. Også løsning på småoppgavene ligger nå på denne nettsiden.

Vi takker …

– Stiftelsen TISIP, som i sin tid gjorde det mulig for oss å skrive denne boka, og som nå gjør det mulig å få revidert den.

– de mange studenter og andre som opp gjennom årene har brukt boka og kommet med verdifulle kommentarer og forslag.

– student Ingvar Ljosland som har foretatt alle de trivielle endringene, slik at vi kunne konsentrere oss om de vesentlige tingene.

Trondheim juli 2003

Else Lervik

Mildrid Ljosland

5-2 Data leses inn og behandles i løkke 137

5-3 Å huske en dataverdi fra et løkkegjennomløp til neste 141

5-4 Tellerkontrollerte løkker 143

5-5 Nøstede kontrollstrukturer 149

5-6 Kontroll av inndata 151

5-7 Testing og feilsøking 153

Repetisjonsoppgaver 159

Programmeringsoppgaver 161

6 Tekststrenger 165

6-1 Strengobjekter 166

6-2 Strengobjekt som funksjonsargument og returverdi 174

6-3 Funksjoner knyttet til strengobjekt 180

6-4 Nullterminerte tekststrenger 188

6-5 Innlesing av tekst og tall om hverandre 190

6-6 Å omforme tekst til tall og omvendt 194

6-7 Pseudokode 199

7 Funksjoner med ut-argumenter

7-1 Verdioverføring

7-2 Referanseoverføring

7-3 Funksjoner på flere nivåer

7-4 Funksjoner med utvidet bruksområde

7-5 Funksjonsargument med standardverdi

Repetisjonsoppgaver

8 Datatyper, operatorer og uttrykk

8-1 Uttrykk

8-2 De enkelte operatorene

8-3 Datatyper

8-4 Typeomforming

Repetisjonsoppgaver

9 Tabeller

9-1 Datastrukturen tabell

9-2 Å definere og bruke en tabell

9-3 Aktuell og maksimal lengde av tabellen

9-4 Tabell som argument til en funksjon

9-5 Søking og sortering 291

9-6

10 Objektorientert programmering

10-1 Eksempel på en klasse som byggekloss

10-3 Å programmere med klasser

10-4 Tekststrenger som datamedlemmer

10-5 Relasjoner mellom objekter av samme klasse

13-1 Betingelsesoperatoren og rekkefølgeoperatoren

13-3 Mer om for-setningen

13-4 do-while -setningen

13-5 Løkker – sammendrag

13-6 Hva er en kontrollstruktur?

Programmeringsoppgaver

14 Mer om klasser

14-1 Funksjonsargumenter og returverdier

14-2 Konstruktører

14-3 Destruktører 447

14-4 En-del-av-forhold mellom objekter

15 Utvidet bruksområde for operatorer 463

15-1 Hva menes med å utvide bruksområdet for en operator? 464

15-2 Eksempel: klassen Broek 467

15-3 Å definere operatorer som ikke-medlemsfunksjoner 478

15-4 Spesielle ting å ta hensyn til 482 Repetisjonsoppgaver 485

16 Adresser og pekere 489

16-1 Å lage og bruke en peker

16-2 Tabeller og pekere 493

16-3 Aritmetikk på og sammenlikning av pekere 497

16-4 Pekere må behandles med forsiktighet! 502

16-5 Peker til et objekt 503

16-6 new og delete 505

16-7 Fra flerdimensjonal til endimensjonal tabell 509

16-8 Peker til en tabell og en tabell av pekere 515

Repetisjonsoppgaver 520 Programmeringsoppgaver 522

17 STL-vektorer og -algoritmer 525

17-1 Hva er STL? 526

17-2 Konteineren vektor 526

17-3 Iteratorer 535

17-4 Elevregisteret som et objekt 538

17-5 Algoritmer 544

17-6 Vektorer, et gløtt bak kulissene 559

Repetisjonsoppgaver 568

Programmeringsoppgaver 569

18 Arv og polymorfi 573

18-1 Er-forhold og en-del-av-forhold 574

18-2 Et er-forhold er et arvehierarki 576

18-3 Å implementere et arvehierarki 580

18-4 Å bruke objekter av avledede klasser 586

18-5 Arv av funksjoner med utvidet bruksområde 597

18-6 Medlemsfunksjoner med spesielle arveegenskaper599

18-7 Vektorer og objekter i et arvehierarki 602

18-8 Syntaksbeskrivelser 604

Repetisjonsoppgaver 609

Programmeringsoppgaver 610

Litteratur 615

Vedlegg 617

V-1 ASCII-tegnsettet 618

V-2 Operatorer i C++ 619

V-3 Reserverte ord 621

V-4 Tallsystemer 622

V-5 Strukturer 625

V-6 Oversikt over standardbibliotekene 627

V-7 Norsk/engelsk ordliste 654

V-8 Programmeringsstandard 660

Stikkord 671

Turn static files into dynamic content formats.

Create a flipbook