Instuderingsfrågor till Steg 1

Relevanta dokument
TDIU01 - Programmering i C++, grundkurs

Programmeringsteknik med C och Matlab

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

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

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

Enkla datatyper minne

Klassdeklaration. Metoddeklaration. Parameteröverföring

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.

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

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

TDIU01 - Programmering i C++, grundkurs

1 Funktioner och procedurell abstraktion

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

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

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

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

Lektion 1 - Steg 1. Introduktion. Hello World

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

TDIU01 - Programmering i C++, grundkurs

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

Objektorienterad programmering Föreläsning 4

Parameteröverföring. Exempel. Exempel. Metodkropp

TDDC77 Objektorienterad Programmering

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

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

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

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

SMD 134 Objektorienterad programmering

Data, typ, selektion, iteration

Programmering A. Johan Eliasson

Objektorienterad programmering Föreläsning 2

PROGRAMMERING 2 GRUNDLÄGGANDE SEMANTIK 4

C++ - En introduktion

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

Funktionens deklaration

Användarhandledning Version 1.2

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

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

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

I denna laboration undersöker vi hur aritmetiska beräkningar utförs. Vi tittar på olika variabeltyper: 8-bitars, 16-bitars, 32-bitars och flyttal.

Introduktion till programmering SMD180. Föreläsning 4: Villkor och rekursion

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

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

Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E. Föreläsning 4: Villkor och rekursion. Modulus-operatorn.

TDIU01 - Programmering i C++, grundkurs

Datalogi I, grundkurs med Java 10p, 2D4112, Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera förs

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

Att använda pekare i. C-kod

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

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

TDDC76 - Programmering och Datastrukturer

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

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

C++ Slumptalsfunktioner + switch-satsen

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

Programmering B med Visual C

Boken?!?! Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera och ett enkelt program Variabler printf

Operatorer Tilldelning Kodblock { } if satsen Logiska uttryck Att programmera

Föreläsning 3.1: Datastrukturer, en översikt

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

1 Språket C Valet av språket C++ för kompendiet. 1.2 Språket. 1.3 Att programmera. 1.4 Hello World Börja programmera

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

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk:

Programmeringsteknik I

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

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

Objektorienterad programmering i Java

Repetition C-programmering

C-programmering, föreläsning 2 Jesper Wilhelmsson

TUTORIAL: KLASSER & OBJEKT

2.1 Variabler. 2.2 Regler för namngivning i C. Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Föreläsning 2

TDDD78, TDDE30, 729A Introduktion till Java -- för Pythonprogrammerare

Programmering i C. Christer Sandberg, Gunilla Eken, Stefan Bygde Olof Andersson Linus Källberg Caroline Uppsäll Johan Hägg

Planering Programmering grundkurs HI1024 HT 2014

Variabler använder man sig av för att under programkörningen spara data eller information i primärminnet. En variabel har typ, namn och värde.

Innehållsförteckning

Introduktionslaboration

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

Grunderna i stegkodsprogrammering

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

LEU240 Mikrodatorsystem

Föreläsning 1 & 2 INTRODUKTION

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

TDDD78, TDDE30, 729A Introduktion till Java -- för Pythonprogrammerare

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,

Visual Basic, en snabbgenomgång

Datastrukturer. Erik Forslin. Rum 1445, plan 4 på Nada

Linköpings Tekniska Högskola Instutitionen för Datavetenskap (IDA) Torbjörn Jonsson, Erik Nilsson Lab 2: Underprogram

Pascal... Pascal. Pascal... Pascal...

Lektion Java Grunder. Javas historia. Programmeringsspråket Java. Skillnaderna mellan Java och C++ JVM (Javas Virtuella Maskin)

Introduktion C-programmering

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

Pascal. reserverade ord fördefinierade funktioner och procedurer egendefinierade funktioner, procedurer och objekt

Uppgifter teknik HT17 (uppdaterad v. 40)

float Mindre rella tal ( floating point number ) double Rella tal/flyttal ( double precision floating point number )

Variabler och konstanter

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Chapter 3: Using Classes and Objects

729G04 Programmering och diskret matematik. Python 2: Villkorssatser, sanningsvärden och logiska operatorer

Transkript:

Instuderingsfrågor till Steg 1 Följande frågor har till avsikt att underlätta inläsningen av det teoriavsnitt som hör till steg1. Frågorna är anpassade till kursboken C++ from the Ground Up av Herbert Schildt men bör kunna passa vilken C++ bok som helst. Omfattning Motsvarande Schildt Kap 1 - Kap 3 Kapitel 1 - The Story of C++ Kapitlet går igenom historien om hur C++ utvecklades från C, som är ett strukturerat, procedurorienterat språk, genom att lägga till möjligheter att utveckla objektorienterade program. Kapitlet tar också upp de grundläggande egenskaperna hos ett objektorienterat språk, dvs inkapsling, polymorfism och arv. Avslutningsvis jämförs C++ med några andra språk såsom Java och C#. För att kunna ta till sig innehållet i detta kapitel krävs att man har en viss tidigare kännedom om programspråk och kan därför läsas vid ett senare tillfälle. Några begrepp kan vi dock försöka lära oss redan nu. 1.1 Vilka två personer (efternamn) är förknippade med att ha tagit fram programspråket C? De har också skrivit boken The C Programming Language. 1.2 Vem skapade C++? 1.3 Vad var det för programmeringsparadigm som tillfördes C i och med att C++ skapades? Hur brukar denna förkortas? 1.4 Vilka tre egenskaper kännetecknar objektorienterade språk. Kapitel 2 - An Overview of C++ Kapitlet ger en översikt över hur ett enkelt C++ program ser ut och hur det kompileras, länkas och körs. De grundläggande byggstenarna hos ett program visas, såsom variabler där man kan spara data under programkörningen, enkla funktioner för att strukturera programmet i underprogram samt användning av funktionsbibliotek med färdiga funktioner för t ex absolutbelopp. Även enkla exempel på hantering av villkor (if -satsen) och repetitioner (for-satsen) tas upp. Även om exempelprogrammen är lätta att förstå, så är det en helt annan sak att skriva dem själv. Därför är det viktigt att du själv övar på att skriva liknande program för att alla detaljer ska fastna i ryggmärgen. I uppgifterna nedan finns därför små program som du kan öva på. Försök göra dem utan att titta i boken (vilket är målet), om det inte går hittar du liknande i boken. Det räcker att skriva dessa små program på papper, men det är naturligtvis inget som hindrar att du använder editor och kompilator. 2.1 Vad menas med källkod resp.objektkod (source code resp. object code)? 2.2 Vilken filändelse ska källkod i C++ ha? 2.3 Varför kan inte processorn köra C++ - källkoden? Hur löser man det? 2.4 Vilken filtyp skapas av kompilatorn resp. länkaren? (Länkaren är inte beskriven i boken). 2.5 På vilka två sätt kan man skriva kommentarer i C++? Vad skiljer dem åt? 1

2.6 Vilka två rader är nödvändiga i ett program som ska använda cout. (cout finns i standardbibliotekets "iostream-hylla"). 2.7 Alla program i C++ innehåller minst en funktion där programkörningen startar. Vad heter den? 2.8 Skriv ett fullständigt program som skriver ut "FEL" och returnerar 2 till operativsystemet. 2.9 Vad är egentligen en variabel (sid 17)? Vad måste man göra med en variabel innan den kan användas? Vad är int? Vad kallas det på svenska när man ger en variabel ett värde (assign)? Hur ser tilldelningstecknet ut i C++? 2.10 Skriv ett kort program som läser in ett antal timmar och skriver ut hur många sekunder det blir. Använd ledtexter vid både in och utmatning. Lägg märke till skillnaden att skriva ut en text (sträng) och värdet av en variabel. 2.11 Vilken datatyp använder man vanligen om man vill spara ett tal med decimaler (flyttal)? 2.12 Ett antal personer ska dela på en krognota. Skriv ett program som läser in antalet (heltal) personer som ska vara med och betala och beloppet på notan. Låt programmet lägga på 10 % i dricks och räkna ut hur mycket var och en ska betala. Skriv ut resultatet. 2.13 Vad kallas de "byggblock" som bygger upp ett C++ program och som det måste finnas minst en av? 2.14 Vad menas med en funktionsprototyp och en funktionsdefinition? 2.15 Funktioner som inte returnerar något värde brukar i många andra programspråk kallas för procedurer - De returnerar inte något utan utför i stället en uppgift, t ex skriver ut något. I C++ gör man inte skillnad på procedurer och funktioner. Hur deklareras en funktion som inte returnerar något värde i C++? I standardbibliteket <cmath> (som ska inkluderas) finns funktionen sqrt() som tar ett tal som argument och returnerar kvadratroten ur detta tal. T ex ger satsen: cout << "Roten ur 9 = " << sqrt(9); svaret: Roten ur 9 = 3 2.16 Skriv ett kort program som läser in ett flyttal och skriver ut kvadratroten ur talet. 2.17 Vad kallas de värden som man skickar som indata till en funktion (i parentesen)? 2.18 Skriv definitionen (=koden till) av en funktion som heter add och skriver ut summan av de två heltalsargument som skickas till funktionen. Funktionen ska inte returnera något. 2.19 Skriv ett fullständigt program som skriver ut summorna 5+12, 12+(-5) och (-5)+(-12). Programmet ska använda funktionen add från föregående uppgift. 2.20 Vad är det som kallas argument resp. parametrar? 2.21 Skriv om add-funktionen (eg. proceduren) från programmet ovan så att den istället för att skriva ut summan returnerar denna med return. Hur ska man nu anropa funktionen i main så att vi kan få samma utskrifter som i programmet ovan? 2.22 Var i programkoden kan man skriva funktionen main? Var placerar man vanligen main? Hur många main-funktioner kan man ha i ett program? 2.23 Använd "orden": funktionskropp, {, funktionsnamn, ( ), returtyp, return, parameterlista, funktionskod och skapa ett generellt "funktionsskelett" med dessa ord. När kan return utelämnas? 2.24 Vad har (escape-)sekvensen \n för inverkan på koden nedan: cout << "Rad 1\n"; cout << "Rad 2\n"; Hur skulle utskriften bli om newline (nyrads)-tecknet \n utelämnades i koden ovan? 2

Schildt använder tyvärr en lite slarvig stil i sina if och for - satser. Det finns goda skäl att skriva ifsatserna på lite annorlunda sätt. T ex if(a<b) cout << "First number is less than second."; // Citat från boken - allt på en rad bör istället skrivas: if (a<b) // mellanslag mellan if och ( ) cout << "First number is less than second."; // indentera "om-sant" satsen // Nästa rad här eller ännu bättre: if (a < b) // använd mellanslag i uttrycket { // lägg "om-sant" satser indenterade cout << "First number is less than second."; // i ett block // Nästa rad här 1. Använd mellanslag mellan if och parentesen för att skilja uttrycket från vad som skulle kunna vara ett anrop till en funktion if() om det nu fanns någon sådan. 2. Skriv de satser, som ska utföras om villkoret är sant, på raden under indenterat (=indraget) inom klammerparenteser som visas ovan. (Om det är mer än en sats MÅSTE dessa ligga i ett block, {) 3. Indentering görs med ett TAB-steg. Kod mellan { indenteras ALLTID! 4. Lägg helst in mellanslag i uttryck, så dessa blir tydligare. Detta ger mer läsbar kod strukturen syns bättre! Debuggern kör en rad i taget vi kan då lättare se om "om-sant"-koden verkligen körs! Det som sagts om if-satsen GÄLLER ÄVEN FOR-SATSEN! Var konsekvent! Skriv alltid på SAMMA genomtänkta sätt! Att skriva ut en "tabell" med talen 1 till 10 under varandra skulle man rent teknisk kunna göra med 10 cout - satser under varandra: cout << 1 << "\n"; cout << 2 << "\n"; cout << 3 << "\n";...... cout << 10 << "\n"; Det är inte speciellt flexibelt! Det har flera nackdelar med sig här är några! Det går inte att ändra från 10 till 20 utan att skriva om koden och kompilera om programmet. Tänk om vi vill skriva ut 1 till 1000. Detta blir orimligt många rader kod! Med en for-sats kan vi repetera en eller flera satser hur många gånger som helst och samtidigt öka en räknare. Vi får då mycket mindre kod och antalet repetitioner kan lätt ändras. 2.25 Skriv en for-sats som skriver ut talen från 1 till 1000 under varandra! Det räcker med själva forsatsen och definition av de variabler du behöver. 3

2.26 Skriv ett alternativ till count = count + 1; och till count = count - 1; 2.27 Hur skriver man för att kunna repetera mer än en sats i for-satsen? 2.28 Skriv en if-sats som testar variablerna a och b. Om a är mindre än b ska "mindre" skrivas ut i ett meddelande och a ska ökas med 1. Efter if-satsen ska b minskas med 1. 2.29 Ge exempel på 4 nyckelord som du träffat på i tidigare exempel. Dessa ord är reserverade och du får inte använda ett nyckelord till ett variabelnamn. 2.30 Hitta på 3 identifierare (namn på egna variabler, funktioner mm) som bryter mot 3 olika regler. (OBS! När Schildt skriver bokstav menar han amerikanska bokstäver, dvs. ÅÄÖ m fl. är inga bokstäver enligt honom) 2.31 Koden till biblioteksfunktioner, t ex till abs() eller sqrt(), finns i C++ standardbibliotek. Hur går det till när ditt.exe program får tillgång till denna kod? Kapitel 3 - The Basic Data Types När vi vill spara data, t ex ett antal eller ett pris gör vi det i en variabel. En variabel är en synonym för en minnesadress i datorns RAM-minne (primärminne/användarminne). För att slippa hålla reda på olika adresser kan dessa i stället knytas till ett variabelnamn. Sedan är det kompilatorns och länkarens uppgift att hålla reda på var i minnet data kommer att lagras. Olika data tar olika stor plats. För att lagra ett tecken, t ex bokstaven A, räcker det med 1 byte medan det går åt 8 byte för att lagra ett flyttal, t ex 7,5. För att kompilatorn ska veta hur många byte som ska reserveras för en variabel är det programmerarens uppgift att tala om för kompilatorn vad som behövs. Detta görs genom att ange datatyp för alla variabler som skapas. När man i programmet skriver ut värdet av en variabel så måste kompilatorn veta hur många byte som ska hämtas från minnet och hur dessa ska tolkas, datatypen innehåller då denna information. Figur 3.1 visar resultatet av följande satser. double pris = 7.5; // double (flyttal) tar 8 byte av minnet i anspråk int antal = 2; // int (heltal) tar 4 byte av minnet i anspråk char tkn = 'A'; // char (heltal) tar 1 byte av minnet i anspråk pris, antal och tkn blir synonymer för de adresser där värdet sparas. Ett variabelnamn kan betyda två saker 1. Adressen där den sparas (lvalue = leftvalue - variabeln står på vänster sida) 2. Värdet som är sparat i adressen (rvalue = rightvalue - variabeln står på höger sida) Uttrycket: pris = pris * 1.10; ska tolkas så här: Värdet i variabeln pris på höger sida (rvalue), ska multipliceras med 1.10 och därefter åter sparas på minnesadressen med namnet pris (lvalue) pris antal 117 116 115 114 113 112 111 110 109 108 107 106 105 104 103 102 101 100 0111 1111 0100 0000 0001 1110 0000 0010 1000 0000 1011 0000 1110 0001 1000 0001 tkn 99 0111 1111 Variabel Adress Minne Figur 3.1 Nedanstående beskrivning av lagringsformat är översiktlig. Du behöver inte kunna detaljerna (ännu) men du bör vara allmänt informerad. All data lagras med binärkoder i datorns minne enligt olika principer. Heltalen finns tillgängliga i olika storlekar i 8, 16, 32, 64 bitar. För heltal kan man välja att endast lagra positiva värden (unsigned), talområdet blir då 0 - (2 n -1) där n är antalet bitar. Som standard (default) är heltalen signed. C:a hälften av det tillgängliga talområdet används då till att lagra negativa tal. Negativa tal lagras i något som kallas 4

tvåkomplementform och innebär bl a att högsta biten blir 1. De positiva talen har högsta biten 0 och kan tolkas som vanliga binärtal. Talområde för unsigned char och char (8 bitar) unsigned char signed char (default) 0 255 = 2 8-1 -128 = -2 7 0 127 = 2 7-1 Figur 3.2 Figur 3.2 visar hur det tillgängliga talområdet utnyttjas för unsigned char resp signed char. char lagras i 8 bitar, dvs. största talet blir då 1111 1111 = 255. Det är detta talområde vi får om vi endast vill spara positiva heltal. Genom att låta högsta biten fungera som en teckenbit, dvs. 0 ger + och 1 ger -, så blir det bara 7 bitar kvar att spara tal i. Högsta talet blir då 0111 1111 = 127, resten av talen blir negativa, dvs. 1000 0000 till 1111 1111 vilket motsvarar -128 till -1. Detta lagringsformat kallas tvåkomplementform och det är enligt denna förkortade beskrivning inte helt uppenbart hur talen ska tolkas, (men det var inte heller avsikten med denna lilla förklaring, som du bara behöver läsa översiktligt). Överskrida talområdet för heltal Om en heltalsvariabel ökas så att den överskrider talområdet så "går den runt" och börjar om från början. T ex 127 + 1 blir -128 och 127 + 2 blir -127 osv. för en char. Det är samma fenomen som skulle hända om 999 ökas med 1 och vi endast har plats för tre siffror. 999 + 1 = 000, ettan i 1000 får helt enkelt inte plats och svaret blir 0. -128 = -2 7 Overflow i heltal char 0 127 = 2 7-1 Flyttal (t ex double) finns också i olika talområden med olika antal siffrors precision. Lagringsprincipen för ett flyttal påminner om sättet som man brukar skriva små och stora tal med 10-potenser. T ex brukar man skriva 0,003456 som 3,456 10-3. Detta tal skulle då kunna lagras som [0 3,456-3], där första nollan betyder positivt tal och resten att det är talet 3,456 10-3. Flyttal sparas på liknande sätt i minnet, fast naturligtvis i binär form och med basen 2 i stället för 10. Det är alltså ganska komplicerat. Tecken lagras vanligen med datatypen char som egentligen är en heltalstyp. För att koda ett tecken som ett heltal används olika teckentabeller där varje tecken får sin kod. Tyvärr använder olika operativsystem olika koder. Ett tecken skrivet med en windows-editor, som sedan visas i ett console-fönster, kommer att medföra att specialtecken såsom Å,Ä och Ö förmodligen visas annorlunda, då dessa har olika koder i Windows och i Console. De engelska bokstäverna kodas vanligen enligt ASCII-tabellen och visas lika i båda miljöerna. wchar_t är en 16-bitars datatyp som gör det möjligt att lagra 65536 olika tecken, vilket räcker till de flesta alfabet på jorden. Denna kodning kallas UNICODE. Tumregel Det finns många varianter av de enkla datatyperna. Detta ger stora möjligheter att anpassa datatypen efter storlek och önskad precision. Använd följande tumregel vid val av datatyp om inget speciellt talar emot detta. int väljs till heltal double väljs till tal med decimaler char till tecken 32 bitar, talområde c:a ±2 miljarder 64 bitar, talområde c:a 10 ±308 med 19 siffrors precision 8 bitar, klarar västvärldens alfabet bool till logiska värden true eller false 8 bitar, endast två värden, false (=0) och true (=1). 5

3.1 Vad menas med en lokal variabel? Hur länge existerar den? Hur lång är räckvidden? 3.2 Är det tillåtet att två funktioner definierar lokala variabler med samma namn? 3.3 Vad menas med en global variabel? Hur länge existerar den? Hur lång är räckvidden? Då de flesta datorer idag har 32 bitars ordlängd eller mer kan du lugnt hoppa över tabellen med datatyper för 16-bitars maskiner, Table 3-2a. Tabellen Table 3-2b är dock intressant, men tumregeln ovan fungerar mycket bra. 3.4 Skriv en for- loop som skriver ut det engelska alfabetet framlänges. Definiera använda variabler. 3.5 Vad innebär bokstäverna efter talen, resp. före tecknet? a) i = 123L; b) j = 123U c) k = 123UL d) d = 25.3F e) e = 25.3L f) wch = L'A'; 3.6 Vad blir utskrifterna av följande satser? a) cout << 0x10; b) cout << 010; 3.7 Vad är 'A' resp. "A" för typ av data? 3.8 Beskriv hur utskriften av följande sats blir: cout << "\ahej\nalla\glada\n\"bagare\""; 3.9 Vad blir globala variabler initierade till om man inte anger något annat? 3.10 Nedanstående program är en variant av exemplet på sid 45 i boken. Meningen är att det ska skriva ut: Summan av 1+3 = 4 Summan av 1+3+5 = 9 Men något är fel, det blir inte rätt svar! Vad är det som är fel? Ledtråd: Exemplet i boken vill illustrera något speciellt. Det är detta som är glömt i exemplet. #include <iostream> using namespace std; int total(int n); int main() { cout << "Summan av 1+3 =" << total(3) << '\n'; cout << "Summan av 1+3+5 = " << total(5); return 0; int total(int n) { int sum; for (int i = 1; i<=n; i = i + 2) { sum = sum + i; return sum; OBS! Operatorer Det finns många operatorer I C++, de vanligaste (-,+,*,/,%,--, ++) räknas upp i Table 3-4 i boken Tänk på att divisions-operatorn ( / ) fungerar på två sätt: Om både täljare och nämnare är ett heltal så blir också resultatet ett heltal. T ex: 10/3 = 3 (inte 3.3333) Om någon av operanderna är ett flyttal blir också resultatet ett flyttal. T ex 10/3.0 = 3.333 6

Modulo-operatorn %, ger resten vid en heltalsdivision Ex 10 % 3 = 1 (3 går 3 gånger i 10, 3*3 = 9 så resten blir 10-9 = 1) 6 % 4 = 2 (4 går 1 gång i 6, 1*4 = 4 så resten blir 6-4 = 2) 1 % 2 = 1 (2 går 0 gånger i 1, 0*2=0 så resten blir 1-0 = 1) 2 % 2 = 0 3 % 2 = 1 4 % 2 = 0 % används oftast för att kontrollera om ett tal är delbart med ett annat. Som du ser ovan blir tal % 2 lika med 0 för jämna tal och = 1 för udda. (Kan vara bra att lägga på minnet!) % kan bara användas med heltal. % är mer användbar än vad man kan tro! 7