Programmering Visual C++ Grunder
 9789175310220, 9175310228

Citation preview

Till denna bok medföljer ett antal övningsfiler på cd-skiva (filerna finns i mappen Programmering A Visual C++ 2008). Kopiera filerna till lämplig mapp på din hårddisk. Du kan även ladda ner övningsfilerna från vår webbplats www.docendo.se: 1. Starta webbläsaren, skriv www.docendo.se i adressfältet och tryck på Enter. 2. Skriv artikelnumret, 1244, i sökrutan och klicka på Sök. 3. Klicka på titeln Programmering A med Visual C++ 2008. 4. Klicka på filen 1244.zip högst upp på sidan. 5. Klicka på Spara, välj var du vill spara filen, exempelvis på skrivbordet, och klicka på Spara. 6. När filen har hämtats stänger du dialogrutan och avslutar webbläsaren. 7. Om du har valt att spara filen på skrivbordet visas den som en ikon med namnet 1244. Dubbelklicka på ikonen för att packa upp filerna till lämplig mapp på din hårddisk.

Copyright © Docendo AB Detta verk är skyddat av upphovsrättslagen. Kopiering, utöver lärares rätt att kopiera för undervisningsbruk enligt BONUS-avtal är förbjuden. BONUS-avtal tecknas mellan upphovsrättsorganisationer och huvudman för utbildningsanordnare, exempelvis kommuner/universitet. Våra böcker och tillhörande produkter är noggrant kontrollerade, men det är ändå möjligt att fel kan förekomma. Vi tar gärna emot förbättringsförslag. Produkt- och producentnamnen som används i boken är ägarens varumärken eller registrerade varumärken. ISBN: 978-91-7531-022-0 Artikelnummer: 1257E Författare: Jonas Byström Omslag: Iréne Friberg

1

Allmänt om C++

I detta kapitel I detta kapitel kommer du att få veta lite om C++ och dess historia. Du kommer också att få reda på lite om vad som kommer att krävas av dig för att bli en fullfjädrad programmerare. Dessutom blir det lite grunder i terminologin och information om hur programmering fungerar.

Historia Programmeringsspråket C utvecklades 1969–1973 av Bell Laboratories i samband med utvecklingen av operativsystemet Unix. Föregångaren till C var ett programspråk vid namn B. På 80-talet förfinade Bell Laboratories språket och gjorde det objektorienterat. Den nya versionen fick det fantasifulla tillägget ”++”. Objektorienterat innebär att man som programmerare tänker i termer av vilka delar, objekt, som finns med i systemet man ska bygga. Icke objektorienterad programmering tenderar att fokusera mer på hur ett problem ska lösas. Därför är det lättare att ”tänka objektorienterat” och därmed skapa program med färre fel i. Det finns också andra fördelar med objektorientering, till exempel att det är lättare att återanvända objekt nästa gång man gör ett liknande system. Om man förstår C++ så förstår man även C. C och C++ tillhör fortfarande de absolut mest använda programspråken.

Hur fungerar det att programmera? Hårdvara och mjukvara Hårdvara och mjukvara talas det ofta om i databranschen, även kallade maskinvara och programvara. Vad är då detta? Helt enkelt kan man förklara det så att hårdvara är ”hårda saker”, det vill säga saker man kan ta på. Mjukvara är själva programmet, till exempel Windows och Word. Det går inte riktigt att ta på Windows eller Word, utan de liknar mer idéer eller funktioner för användaren. För programmeraren, å andra sidan, är ett program en uppsättning instruktioner som talar om för datorn hur den ska bete sig. Ett program kan också kallas en applikation; det är samma sak.

7

1 Allmänt om C++

Fel i mjukvaran – avlusning Ibland när programmeraren gör ett fel så blir det märkbart för användaren i slutändan. Då talar man om en ”bugg”. En bugg kan leda till allt ifrån irriterande brister, till exempel att det plötsligt inte går att zooma i Word, till mer allvarliga fel som att hela Windows bryter ihop och visar en blå skärm med felinformation. När man letar efter ett fel med avsikten att ta bort det så kallas det för ”debugging” eller avlusning. Bugg kommer av engelskans ”bug”, och det är som bekant engelska för insekt. Som kuriosa kan man nämna en lustig anekdot om hur det ordet kommit att användas för programmeringsproblem, och det har att göra med att de första datorerna såg helt annorlunda ut än dagens. Då användes datorer som fyllde flera stora rum och som drog enorma mängder ström med sladdar och radiorör om vartannat. En dator då hade de ungefärligen samma kapacitet som en vanlig, enkel digital klocka har idag. Ett vanligt fel som uppstod vid driften av dessa datorer var att kackerlackor och andra insekter nästlade sig in mellan strömförande ledningar. Samtidigt som de gjorde sig själva en otjänst och blev elektrifierade så lyckades de kortsluta en del av datorn, och programfel tillsköt. Därav bugg.

CPU En mycket central del i varje dators hårdvara är dess CPU. CPU betyder Central Processing Unit, eller centralprocessor. Det är CPU:n som steg för steg utför alla instruktioner som programmeraren matat in för hand. Centralprocessorn innehåller logiska enheter för att kunna utföra addition, subtraktion, multiplikation med mera. Det finns också funktioner för datakopiering och jämförelser, till exempel större än, mindre än eller lika med, lika med, skilt från, et cetera. En CPU kan bara läsa och utföra ett särskilt sorts kodsystem. Detta kodsystem kallas maskinkod och varierar mellan olika märken och olika sorters CPU:er. Maskinkod är helt obegripligt för den oinvigde: till exempel betyder 1000101111000011 ”flytta data från b till a” för en Pentium-kompatibel CPU; fullkomligt meningslöst och obegripligt alltså. Det viktiga du behöver veta här är bara att maskinkod är en lista med instruktioner som CPU:n kan förstå.

Källkod För att slippa skriva ettor och nollor så skriver programmeraren ”källkod”, eller ”kod”, som sedan översätts till maskinkod. Källkoden är text i en helt vanlig textfil, men språket man använder har en avsevärt enklare grammatik än vad vi är vana vid. Även i dess mest avancerade form är den väldigt basal och mycket långt ifrån vanlig enkel svenska eller engelska.

8

1 Allmänt om C++

Källkoden skriver man in ungefär som vanlig text i en ordbehandlare: rad för rad, i små stycken eller satser. Ett komplett program kan innehålla allt ifrån 10 rader till miljontals rader. En programsats motsvarar ungefär ”en mening” i vanlig skrift. En sats är helt enkelt en grupp med ord som kompilatorn kan förstå.

Nyckelord Specifika ord som används i ett språk kallas ”nyckelord”. Dessa ord är i C++ på engelska och är ofta koncisa. Några exempel: if, while, switch och case. I andra programmeringsspråk används andra nyckelord.

Kompilering För att kunna köra programmet så måste man ”översätta” källkoden till maskinkod som CPU:n kan förstå. Den här översättningen från källkod till maskinkod kallas kompilering. Programmet som kompilerar heter kompilator. Ofta används nuförtiden ett och samma verktyg för att skriva in källkod, kompilera och avlusa. Förr användes ofta ett vanligt textredigeringsverktyg för källkoden och en kompilator som man startade från kommandotolken; om man vill vara lite retro så kan man fortfarande göra på detta vis. Den här kursen kommer att gå in mer djuplodande på ett integrerat verktyg av Microsoft: Visual C++ 2008 Express Edition. Kompileringen sker egentligen i två steg: kompilering och länkning. Det beror på att man oftast har flera källkodsfiler som man vill slå ihop till ett enda program. Till exempel kanske man har en källkodsfil för att rita ut 3D-objekt och en annan för TCP/IP-kommunikation. Källkod

Objektkod

Kompilering

Källkod

Exekverbar kod

Länkning

Objektkod

9

1 Allmänt om C++

Verktyg Det finns massor av olika verktyg för att jobba integrerat med källkod, kompilering, avlusning, et cetera. Dessa verktyg brukar benämnas utvecklingsverktyg eller utvecklingsmiljöer, på engelska IDE = Integrated Development Environment. Här är några få av de vanligaste idag: • Microsoft Visual C++ • Code::Blocks • Eclipse • NetBeans • GNU Emacs (textredigerare) + GNU Compiler Collection (kompilator)

Programmeringsspråk Det finns många olika programmeringsspråk; vissa riktar sig mer mot hårdvaran, så kallade lågnivåspråk, andra siktar på att vara enklare att producera och förstå, så kallade högnivåspråk. Varje språk har sin egen kompilator, dock finns det utvecklingsmiljöer som stödjer användning av flera programspråk samtidigt. Microsoft Visual Studio 2008 är ett sådant. Ett lågnivåspråk är ofta plattformsberoende, det vill säga de fungerar bara för en särskild sorts maskinkod och därmed bara en särskild sorts CPU. Lågnivåspråk kan i sällsynta fall vara mycket kraftfulla när man behöver specialanpassa en liten programsnutt till en specifik plattform. Oftast är dock så ej fallet. Programkod i ett lågnivåspråk är dessutom mer specialiserad och därigenom svårare att producera och förstå. Programmeringsspråk som riktar sig mot många plattformar och har som mål att vara enklare att producera och förstå kallas för högnivåspråk. C++ är i första hand ett högnivåspråk, men kompromisser gör att det även kan leverera högsta prestanda.

Programexekvering När ett program exekveras (körs) så kan man tänka på det som att CPU:n läser och utför koden uppifrån och ner, från vänster till höger. Det hela fungerar lite som att läsa en instruktionsbok (till exempel med instruktioner för montering av en möbel).

10

1 Allmänt om C++

Loopar Vissa instruktioner kan få CPU:n att ”hoppa” i koden, det vill säga fortsätta exekveringen på en annan position. Detta kan till exempel utnyttjas till att upprepa ett stycke av koden flera gånger fast med olika indata. Då är det vanliga att exekveringen börjar om ifrån början på satsen. Det kallar programmeraren för en loop eller en slinga. Ett vardagsexempel på en loop kan man ofta finna i visor. Verserna i en visa upprepar man inte men på refrängen händer det att man lägger en loop: helt enkelt läser och utför stycket flera gånger. Ett loop-exempel till kan vara att leta rätt på ett namn i en lista. Proceduren för att leta rätt på ett namn är detsamma för varje rad i listan med namnen; det är bara data (namnen) som varierar från en rad till annan.

Oftast kan man urskilja tre övergripande delar i ett mer avancerat program: startfasen, den interaktiva fasen och avslutningsfasen. Under den interaktiva fasen loopar ofta applikationen i väntan på indata från tangentbordet och musen. Ännu ett exempel på varför loopar behövs: se hur Windows fungerar! Om programkoden för Windows exekverades rakt igenom, allt på en gång, så skulle det ju avslutas direkt efter att ha startats. Nu fungerar det inte så eftersom Windows har en interaktiv loop som väntar på indata från användaren.

Inspiration Det finns inga programmeringsuppgifter man inte kan lösa med C++. Programmeringsspråket uppmuntrar inte alltid till det smartaste sättet att lösa en uppgift, så det kräver lite mer av programmeraren i vissa fall. Men resultatet är ofta rakt på sak och prestandan på programmen blir mycket god. De allra flesta prestandakrävande program som görs idag använder C++. Det gäller allt ifrån dataspel till avancerade beräkningar för forskningssyfte. Dataspel kan till synes vara enkel underhållning, men faktum är att de är något av det svåraste man kan ägna sig åt i databranschen – men vansinnigt kul! Målet med din programmeringskurs måste vara att det ska bli roligt. Det är då man lär sig fortast, och det är då man blir riktigt, riktigt bra på det. Ett av delmålen med detta material är därför att göra det så roligt som det bara går. Försök själv att göra uppgifter och program i materialet så underhållande som möjligt för dig själv. På så sätt kommer du att få ut mesta möjliga av det.

11

1 Allmänt om C++

I slutet av kursen kommer du att göra en fraktalzoomare, det vill säga en applikation som ritar ut en synnerligen vacker och kaosartad matematisk funktion. Du kommer att få hjälp med hur du går vidare efter kursen och det medföljer fler roliga övningsexempel (public domain) som du kan använda och modifiera som du finner bäst.

Styrkan i C++ Genomslagskraften i C++ beror på många faktorer, men det är framförallt dessa: • Det är objektorienterat. • Mycket hög prestanda. • God kontroll. Man kan delvis tänka sig C++ som ett lågnivåspråk på grund av den strikta kontrollen över både vad programkoden gör och hur datahållningen ser ut. • Mycket stor basfunktionalitet. Man behöver inte återfinna hjulet. • Det är enkelt att koppla ihop programkod i C++ med så kallade bibliotek skrivna i andra programspråk. • Det är standardiserat och fungerar likadant på alla datorer.

12

1 Allmänt om C++

Övningsuppgifter Övning 1.1

På 80-talet utvecklades C till C++. Vad var den största nyheten?

Övning 1.2

Vad är hårdvara och vad är mjukvara? Ge även exempel på var och en av dem.

Övning 1.3

Vad kallas ett programmeringsfel?

Övning 1.4

Vad heter den centrala exekverande enheten i datorn?

Övning 1.5

Vad kallas en lista med instruktioner som den centrala exekverande enheten i datorn kan förstå?

Övning 1.6

Vad kallas processen som omvandlar källkod i C++ till instruktioner som centralprocessorn kan förstå?

Övning 1.7

Man skiljer på två olika nivåer på programspråk. Den ena är specialanpassad till en viss sorts CPU, medan den andra är anpassad för att funka med många plattformar och vara enklare att skriva och läsa. Vad kallas de två nivåerna?

Övning 1.8

Körs alltid programkoden sekventiellt, eller kan du som programmerare avgöra vilken del som körs härnäst?

13

2

Utvecklingsverktyget

I detta kapitel Här kommer grunderna för hur du arbetar med programmering i allmänhet och med utvecklingsverktyg för C++ i synnerhet. Vi har valt utvecklingsverktyget Microsoft Visual C++ 2008 Express Edition (Visual). Om du arbetar i ett annat program kan du ändå känna igen dig och göra övningarna. Bilder, exempel och instruktioner i detta kapitel visar Visual. Men alla övningar i boken är generella och kan göras med en annan version, och även med ett helt annat verktyg.

Utvecklingsverktyg Visual (eller något annat utvecklingsverktyg efter eget val) använder du för att skriva källkod i, kompilera den, köra programmen du skrivit och sist, men inte minst, för att avlusa programmen. Du får också veta lite om huvudfunktioner och du kommer att få lära dig att skapa en enkel konsolapplikation och hur du öppnar ett befintligt projekt.

Säkerhetskopiera Börja med att kopiera övningsfilerna som medföljer materialet. Det bästa är om du hela tiden arbetar med lokala kopior. Lägg till exempel källkoden någonstans under Mina dokument; exempelvis i den mapp som skapas automatiskt av Visual vid installationen, mappen Mina dokument\Visual Studio 2008\. Om det är lämpligt för dig så skapar du också en ny mapp kallad: C++ A till vilken du kopierar övningsfilerna.

Arbetssätt När du programmerar så kommer du i mycket stor utsträckning att använda dig av tangentbordet. Det beror på att arbetsgången ser ut som den gör. När en programmerare jobbar brukar det se ut ungefär så här: man skriver korta kodsnuttar, kompilerar, rättar några fel, kompilerar, funderar ett par sekunder, lägger till ytterligare några rader och kompilerar igen. Det hade helt enkelt blivit för irriterande och långdraget om man var tvungen att använda musen i alla moment. Därför kommer du snabbt att lära dig de vanligaste kortkommandona.

14

2 Utvecklingsverktyget

Starta programmet Du ska börja med att starta programmet (utvecklingsverktyget). 1. Klicka på Start-knappen, välj Alla Program, Microsoft Visual C++ 2008 Express Edition, välj Microsoft Visual C++ 2008 Express Edition. När programmet startas för allra första gången kan det se annorlunda ut mot hur det ser ut då du startar det fortsättningsvis.

Ser programmet annorlunda ut kan du hoppa över nästföljande steg och gå direkt till avsnittet Arbetsytan. 2. Klicka på knappen Close i övre högra hörnet av startsidan.

15

2 Utvecklingsverktyget

Arbetsytan Du ser nu en tom arbetsyta:

Benämningar De vanligaste delarna du kommer att använda dig av är: • Textytan • Arbetsfältet • Utdatafältet • Verktygsfältet Verktygsfältet

Arbetsfältet Textytan

Utdatafältet

16

2 Utvecklingsverktyget

Textytan Här kommer den faktiska texten i källkoden synas när du arbetar med ett projekt.

Arbetsfältet Ett projekt kan innehålla ett stort antal olika filer. Alla filer i projektet kommer att listas i Arbetsfältet.

Utdatafältet I Utdatafältet visas textinformation till dig som användare. I listrutan Show output from hittar du kommandot Build som visar kompileringsinformation, kommandot Debug visar avlusningsinformation.

Notera att detta endast syns när man har öppnat ett projekt och kört resultatet. När man kompilerar växlar Visual automatiskt till ”Build”-vyn och när man kör ett program så visas automatiskt informationen med ”Debug”-vyn. Build, eller att bygga, kallar Visual processen att kompilera och länka ett helt projekt till en körbar fil. Ett projekt kan ju innehålla flera individuella källkodsfiler.

Verktygsfältet På verktygsfältet hittar du knappar som du säkert känner igen: Open och Save. Men det finns även knappar som du måhända inte har sett förut, som till exempel Start Debugging.

Skapa en ny konsolapplikation Vad är en konsolapplikation, undrar du kanske. Jo, en konsolapplikation är motsatsen till en grafisk applikation. I en konsolapplikation jobbar man med text i ett konsolfönster. Ett konsolfönster ser helt identiskt ut med ett kommandotolksfönster, skillnaden är att i stället för att kommandotolken körs i fönstret så är det din egen applikation som körs. All indata och utdata går via konsolfönstret i en konsolapplikation.

17

2 Utvecklingsverktyget

Ett tomt konsolfönster ser ut så som följande bild:

Nu ska du skapa din första körbara fil (filtillägget är .exe). Det finns färdiga funktioner i Visual för att skapa ett tomt program som inte gör någonting. 1. Gå in under menyn File, New, Project... Nu visas en dialogruta, se nedan. 2. Välj Win32 till vänster och sedan Win32 Console Application till höger. Klicka på fältet Name; skriv Test1.

3. Klicka på knappen OK. En ny dialogruta dyker upp.

18

2 Utvecklingsverktyget

4. Klicka på knappen Finish. Projektet är skapat och klart. Källkodsfiler i C++ har filtillägget .cpp. .cpp-filer samarbetar ofta (men inte alltid) med .h-filer, headerfiler. Till exempel Car.cpp och Car.h. I detta fall ”exponerar” Car.h information om källkoden i Car.cpp; det kan vara färg, bensinmängd, position, et cetera. Vidare finns det projektfiler som håller reda på innehållet i dina projekt (med filtillägget .vcproj) och filer för hela arbetsytan som kan innehålla flera projekt (Visual Studio Solution, .sln). I Textytan visas nu källkoden till ditt första program: Test1.cpp.

• De första två raderna med grön text är kommentarer. • Rad tre är tom. stdafx.h (i include-satsen) är en fil som • På rad fyra kommer en include-sats, den skapas automatisk av Visual (faktiskt för att kunna kompilera snabbare). I andra kan du ignorera tills vidare. verktyg finns inte den funktionen, och därmed inte heller filen. Om det inte • Raderna fem och sex är tomma. finns någon include-sats, eller om den ser • På raderna nedanför kommer det som är annorlunda ut, så är det ingenting att bry själva programkoden. sig om. Alla ord i blått är nyckelord för C++. Det betyder att de är reserverade för en specifik tolkning av kompilatorn. Nyckelordet return betyder till exempel ”avsluta funktionen”, i detta fall blir det alltså ”avsluta funktionen main”.

Dessa färger är standard i Microsoft Visual C++, men om du använder andra verktyg så kanske du har andra färger. Det går också att ändra inställningarna om du vill ha en annan färgsättning.

19

2 Utvecklingsverktyget

Huvudfunktionen _tmain eller main

_tmain står som andra ord på rad sju. Från och med nu kommer _tmain att kallas för helt enkelt för main, eftersom det är ett standardiserat namn.

main

Det är main som är huvudfunktionen i en konsolapplikation; det vill säga på den raden börjar CPU:n att exekvera ditt program. När CPU:n har exekverat sista raden i main, så avslutas programmet. main har samma karakteristika som alla andra funktioner: • En returtyp. • Ett namn. • Ett antal parametrar avskilda med kommatecken och omgärdade med parenteser. • Klammerparenteser som anger vad som är innehållet i funktionen.

int main(int argc, char* argv[]) Returtyp

Parametrar

Funktionsnamn

Du ska få allt detta förklarat grundligt för dig i senare kapitel. Tills vidare nöjer vi oss med att säga att all källkod som du skriver in efter vänster klammerparentes men före return 0; kommer att exekveras när du kör programmet. När det kommer till vänsterklammerparentesens placering så gäller att den kan placeras hur som helst mellan högerparentesen (i main) och den första satsen. Den behöver inte ens börja på ny rad.

return

Satsen return 0; avslutar funktionen.

20

2 Utvecklingsverktyget

Kompilera och kör Kommandot Kompilera Nu ska du kompilera och länka programmet Test1.exe. 1. Gå in under menyn Build, välj Build Solution. Informationen i Utdatafältet säger dig flera saker, men sammanfattningsvis att inga fel uppstod när Text1.exe byggdes. Detta steg (menykommandot Build Solution eller kortkommandot Ctrl+Shift+B) kommer i fortsättningen refereras till som ”kompilera” helt enkelt.

Kommandot Kör Nu ska du testköra applikationen. 1. Gå in under menyn Debug, välj Start Without Debugging (kortkommando Ctrl+F5).

Ditt program startas, och konsolfönstret visas, men det avslutas lika fort, eftersom du inte ännu lagt till något innehåll. Texten Tryck på en valfri tangent för att fortsätta... kommer upp när programmet avslutats. Alla utdata visas i detta fönster när du gör en konsolapplikation, och det är även här du matar in data. 2. Tryck på någon tangent för att stänga konsolfönstret.

21

2 Utvecklingsverktyget

Kompileringsfel Felaktig källkod ger upphov till kompileringsfel. Kompileringsfelen är lätta att upptäcka eftersom de gör att du inte kan kompilera och köra applikationen. Du ska nu testa att orsaka ett kompileringsfel. 1. Lägg till tecknet a i början på satsen return 0; så att det i stället står areturn 0;. 2. Kompilera (det vill säga tryck Ctrl+Shift+B). Du kommer då faktiskt att få två felmeddelanden på detta enkla fel:

Först står filens namn, i detta fall c:\...\test1.cpp, sedan radnummer. Här finner du att de två felen härrör från rad 9. Sist på raden står felmeddelandet. Det första felmeddelandet lyder ’areturn’ : undeclared identifier.

Leta rätt på kompileringsfel 1. Dubbelklicka på första felmeddelandet (eller tryck kortkommandot F4). Visual flyttar då markören till början på raden med felet. Det kan vara mycket praktiskt om du har många rader kod, så att du slipper manuellt leta rätt på felet. 2. Korrigera felet genom att ta bort a:et så att det återigen står return 0;. 3. Kompilera.

Snabbt om att stega i programmet För att ge dig en bild av hur programexekveringen ser ut, så ska du nu prova att stega igenom programmet. Med ”stega i programmet” menas att du exekverar programmet rad för rad. Varje ny rad körs när du trycker på ”stega-knappen”. 1. Tryck kortkommandot F10.

22

2 Utvecklingsverktyget

Programmet laddas och exekveringen börjar på den första raden i programmet. Sedan pausas exekveringen och Visual väntar på att du ska fortsätta exekveringen. Det ska se ut så här:

Pilen visar vilken rad exekveringen är på för tillfället. 2. Tryck F10 igen. Pilen flyttar sig till nästa kodrad. 3. Tryck F10 ännu en gång. Ännu en kodrad har exekverats. 4. Tryck F5 för att exekvera normalt, det vill säga utan att manuellt stega igenom koden. Programmet exekveras färdigt och avslutas sedan. Efteråt blir utdatafältet sig likt igen.

Stänga projekt

1. Stäng Test1.cpp (File, Close). 2. Gå in under menyn File, välj Close Solution.

Öppna ett projekt Du ska nu öppna ett färdigt projekt som följer med kursen och titta lite på källkoden däri. 1. Välj File, Open, Project/Solution...

23

2 Utvecklingsverktyget

2. Bläddra till den plats där projektfilerna som medföljer kursen finns. Klicka på PhoneBook/PhoneBook.sln och klicka sedan på knappen Öppna.

Projektet PhoneBook har nu öppnats. 3. Visa (expandera) projektet PhoneBook genom att klicka på krysset till vänster om PhoneBook i arbetsfältet. 4. Expandera sedan Source Files och dubbelklicka på PhoneBook.cpp. Nu syns källkoden i Textytan.

5. Bläddra runt och kika lite på källkoden. Om du vill kan du också kompilera och exekvera programmet.

24

2 Utvecklingsverktyget

Stäng ännu en gång Nu ska du avsluta även detta projekt. 1. Välj File, Close Solution.

Sammanfattning Du har nu lärt dig hur man skapar ett tomt program. Du vet hur man öppnar källkodsfilen och du vet var du ska skriva in din egen källkod. Kompilering och körning av program har du också lärt dig, tillsammans med hur det fungerar med kompileringsfel, programstegning och lite allmän hantering av Visual.

Övningsuppgifter Övning 2.1

Vad är orsakerna till att du som programmerare kommer att använda mycket kortkommandon i stället för att arbeta med musen?

Övning 2.2

Vissa delar av källkoden får grön färg i Visual, vilka?

Övning 2.3

Vad betyder ord i källkoden med blå färg?

Övning 2.4

Vilket filtillägg används för källkodsfiler i C++?

Övning 2.5

Vad heter huvudfunktionen i ett program?

Övning 2.6

Genomför följande procedur: 1. Skapa en ny, enkel konsolapplikation och kalla den för MittTest1. 2. Använd kortkommandot för att kompilera. 3. Använd kortkommandot för att exekvera. 4. Stäng konsolfönstret. 5. Öppna källkodsfilen. 6. Ta bort alla tomma rader och alla rader med kommentarer. 7. Kompilera. 8. Exekvera. 9. Stäng konsolfönstret (om det fortfarande är öppet). 10. Avsluta Visual (File, Exit).

25

3

Skriva egen programkod

I detta kapitel Nu ska du lära dig grunderna i C++ och de absolut mest fundamentala nyckelorden och begreppen. Dessutom kommer du att skriva några små program.

Kommentarer En bra programmerare lägger hela tiden små förklaringar till vad han eller hon gör i programkoden. Som du snart ska se är kommentarer användbara; inte bara för att få förklaring av vad som sker, utan även när du vill minnas vad din programkod gör. Annars är det vanligt att man går tillbaka och tittar på några månader gammal programkod som man skrivit och inser att man inte förstår någonting. Kommentarer kan skrivas på två sätt: enkelrads- eller flerradskommentarer. Det vanligaste är kommentarer på en rad. Symbolen för en enkelradskommentar är två snedstreck i direkt följd, utan mellanslag. // Detta är en kommentar. // Här är en till! // Alla enkelradskommentarer börjar vid // snedstrecken och slutar när det är slut på // texten på den raden.

En flerradskommentar börjar med ett snedstreck och en asterisk och avslutas med en asterisk och ett snedstreck – i den ordningen. /* Detta är en flerradskommentar. Här kan du skriva hur många rader som helst innan du avslutar kommentaren. */

Slut på satsen Varje gång man skrivit en programsats så måste man informera C++-kompilatorn om det så att den inte blandar ihop kodsnuttar som inte har med varandra att göra. Man markerar slut på satsen med ett semikolon.

26

3 Skriva egen programkod

Data och algoritmer I programmeringens värld skiljer man på data och algoritmer. Data är det man bearbetar, informationen, och algoritmerna är det som utför bearbetningen. Den källkod som du kommer att skriva kommer att bilda maskinkod som beskriver algoritmerna för CPU:n, men också reservera utrymme i minnet för data. Senare i materialet finns ett kapitel om just detta, men för stunden nöjer vi oss med att säga att data är utrymme som reserveras för att kunna lagra information.

Variabler Variabler är det samma som data. Det finns olika typer av variabler för olika ändamål. För att kunna använda en variabel så måste man först ”deklarera” den. Det innebär att man ger den ett namn och talar om vilken sorts variabel det är.

Heltal Med heltal kan man göra enkla, diskreta beräkningar. För att deklarera en heltalsvariabel med namnet x så skriver man så här: int x;

Heltal heter ”integer” på engelska, därav ”int”. Semikolonet avslutar satsen. När du deklarerar en variabel på detta vis, så avsätter du alltså en liten, liten del av minnet för att kunna lagra ett heltal i. int x; Variabeltyp

Variabelnamn

Ett variabelnamn kan i teorin vara hur långt som helst, men det finns några begränsningar: • Namnet får inte börja med en siffra. • Variabeln får inte ha samma namn som något nyckelord. • Namnet får inte innehålla något slags skiljetecken, men understrykningstecknet går bra. • Endast amerikanska alfanumeriska tecken accepteras. Det betyder att å, ä och ö inte fungerar.

27

3 Skriva egen programkod

Några exempel på acceptabla heltalsdeklarationer: int int int int

H2O; iint; intt; Hej_Paa_Dig;

Enkel matte med variabeltilldelning För att ge en variabel ett värde så måste man göra en tilldelning. Det kan se ut så här med två kommentarer: // Först deklarerar vi heltalsvariabeln x. int x; // Sedan tilldelar vi den värdet 5000. x=5000;

En tilldelning använder sig alltså av ett likamedtecken. Likamedtecknet kallas i detta fall för en operator, eftersom den utför en tilldelningsoperation på variabeln. Variabeln som är på vänstra sidan om likamedtecknet ges värdet av det som står på högra sidan. Det finns flera olika operatorer. Addition använder ett vanligt plustecken. Ett exempel på en tilldelning med addition är följande: int x; x=4; x=x+5;

// Här deklareras x. // x får värdet 4. // x tilldelas värdet x+5.

Vad tror du att x får för värde efter att exekveringen passerat tredje raden? Om du tror att värdet blir 9 så har du alldeles rätt!

På andra raden får x värdet 4. På sista raden står det i vänstra ledet då egentligen 4+5. 4+5 tilldelas x, alltså blir x lika med 9.

Vid en deklaration av ett heltal exekveras ingen programkod, utan då sker bara en reservation av datautrymme för heltalet. Vid tilldelning eller addition skapas maskinkod för att utföra operationerna, men inget datautrymme reserveras. Om du vill kan du deklarera en variabel och tilldela den ett värde på samma gång: int x=710;

28

3 Skriva egen programkod

Blanksteg Mellan de olika uttrycken i C++ är det helt OK att lägga in blanksteg. För en kompilator i C++ räknas både mellanslag och retur som blanksteg. // Sats ett: x=4534; // Sats två: x = 4534 ;

Sats ett och två ger alltså exakt samma resultat! Detta gäller alla typer av uttryck. Som parentes kan nämnas att det till och med finns tävlingar som går ut på att skriva fungerande programkod som är fullkomligt obegriplig. Vissa deltagare skriver sin kod så att den formar bilder av djur, maskiner, symboler och så vidare. Du kan själv prova det lite längre fram.

Skiftlägeskänslig Språket C++ är skiftlägeskänsligt, det vill säga det gör åtskillnad på gemener och versaler. INT HEJ;

Är alltså något helt annat än: int hej;

Skriva ut information Nu ska du lära dig att presentera information också. Så här kan en kodsnutt se ut som skriver ut någonting: int x; x=-13000; cout så letar kompilatorn enbart i de include-filer som följer med Visual.

Instruktioner för Microsoft C++ Om du jobbar med Microsofts C++-kompilator så måste du alltid inkludera filer efter stdafx.h, annars kommer kompilatorn inte att hitta dem.

using namespace std

Raden using namespace std; bör du skriva in efter raden där du inkluderar filen iostream. using namespace std; är ett direktiv som talar om att du vill använda dig av ett ”namespace” vid namn ”std”. Nyckelordet namespace används för att kategorisera olika strukturer i C++. Du kommer att lära dig mer om detta i framtida kurser i objektorienterad programmering.

Skapa en matteapplikation Nu ska du göra en enkel applikation (det vill säga ett program) där du får prova på att använda dig av de fyra räknesätten och skriva ut resultaten vid addition, subtraktion, multiplikation och division. 1. Starta Visual. 2. Skapa en enkel konsolapplikation, låt projektet få namnet Matte. 3. Öppna Matte.cpp.

30

3 Skriva egen programkod

I textytan bör du nu se följande källkod (observera att radnummer bara finns med här som hjälp). 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.

// Matte.cpp : ... // #include ”stdafx.h” int main(int argc, char* argv[]) { return 0; }

4. Gå till rad fem och skriv: #include using namespace std;

5. Gå ner till raden med return-satsen och flytta ner den ett steg. På den nu tomma raden ovanför return-satsen skriver du: cout