1.    Developer Studio

 

 

·     Dosprojekt.

·     Kommandon i Windows.

·     Att anpassa verktygsfält.

·     Debug/Release.

·     Filtyper.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Dosprojekt

[File  - New...]

 

Det första vi behöver för att kunna lära oss språken C/C++ är en utvecklings­miljö. Förr hade man en konsolanpassad editor, en kompilator samt en länkare, och man skrev program avsedda för konsolen. Konsolen var från början en skrivmaskin försedd med möjligheter att kommunicera med en dator. Datorn tog emot sina kommandon från skrivmaskinens tangentbord och skrev ut sina kommentarer på skrivmaskinens papper. Listor hanterades separat, oftast som filer.

 

Med bildskärmens intåg följde att konsolen blev det som vi i dag känner igen som Dos kommandoprompt. T.o.m. i dagens grafiska användargränssnitt (GUI) finns tillgång till Dos-prompt. Det kommer vi att utnyttja till att börja med.

 

Det är mycket mer komplicerat att programmera för grafiskt användargränssnitt än för konsol. Därför borde vi sitta i den gamla Dos-miljön när vi lär oss själva språket. Jag ser dock ingen anledning att inte genast börja använda de utveck­lings­verktyg som finns till hands i Windows-miljö, eftersom det understödjer utveckling av konsolbaserade program.

 

Vi kommer alltså att arbeta i Windows-miljö, men utveckla enklare program för Dos-miljö, medan vi lär oss själva språket C/C++. Programmering för Windows tar vi senare.

 

Microsoft har skapat en utvecklingsmiljö som kallas ‘Developer Studio’. Den innehåller i stort sett allt vi behöver för att skapa program för såväl Dos som Windows. Vi lär oss om ‘Developer Studio’ efterhand som vi behöver, och för stunden behöver vi kunna skapa ett Dos-projekt.

 

Redan när vi startar Developer Studio kommer vi att se tecken på användar­vänlighet. Programmet är utvecklat med tanke på att alltid förse program­meraren med informatio så nära till hands som möjligt.

 

Böckerna finns med i ett litet bibliotek till vänster på skärmen. Vi ska senare se hur annan information dyker upp i detta fönster, och hur det kan hjälpa oss att inte bara snabbt hitta olika avsnitt i vårt eget projekt, utan även att lägga till funktioner och variabler på rätt ställen.

 

Många kommandon finns såväl som menykommandon som verktygsknappar och snabbtangenter. Dessutom kan man anpassa själv. Men låt oss nu komma igång!

Först måste vi naturligtvis starta Developer Studio. Så här ser ikonen ut:

 

Det vi först ser är en menyrad, några verktygsfält samt diverse fönster. Vad som visas på skärmen kan anpassas. Men över alltihopa ligger en dialogruta med dagens tips:

 

 

 

 

                

 

 

 

 

Tursamt nog fick jag upp ett tips som handlar just om ett slags anpassning. Låt kryssrutan ‘Show tips at startup’ vara förbockad, du kommer att finna många intressanta tips via denna ruta, men läs bara ett nytt tips varje dag, och använd det!

 

Skulle inte denna ruta komma upp när du startar Developer Studio, så har någon avmarkerat ‘Show tips at startup’. Man kan aktivera tips igen genom att välja meny­kom­mandot [Help - Tip of the Day], så att rutan dyker upp, och bocka för ‘Show tips at startup’.

 

? Help - Tip of the Day.


I början finns också ett verktygsfält som heter ‘Info Viewer’, vilket ligger ‘i vägen’ på skärmen. Du kan antingen ‘docka’ det genom att dra det till någon kant (dra i titelraden) eller stänga det (tryck på ‘x’ på dess titelrad).

 

Vi ska titta mer på hur man anpassar verktygsfält och andra finesser senare, men nu tar vi och följer receptet på ett Dos-projekt, steg för steg.

 

Det första vi ska skapa är ett s.k. projekt. Projektet är en sammanställning av vad vi vill skapa, och vad vi utgår ifrån. Det finns motsvarigheter i de flesta programmeringsspråk. Välj menykommandot [File - New], så kommer dialogrutan ‘New’ fram. Välj ‘Project Workspace och klicka på ‘OK’...

 

 

                                  

 

 

...varvid dialogrutan ‘New Project Workspace’ dyker upp:

 

 

                

 

Här väljer vi ‘Console Application’, letar upp rätt arbetskatalog, samt fyller i ‘Hello’ i fältet Name. Till sist trycker vi på Create, men läs nedanstående först.

 

Observera knappen ‘Help’. De flesta dialogrutor har denna knapp, vilken leder till ett hjälpavsnitt som förklarar hur man fyller i dialogrutan. Avsnittet ger dock vanligen bara lite hjälp om de olika sakerna man kan välja/fylla i. Prova gärna knappen, och prova gärna den sammanhangskänsliga hjälpen (F1).

 

Detta kurshäfte har förslag på vad man bör söka upp i hjälpen. Under de flesta avsnitt anges detta med kursiv stil nederst på sidan:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

? Help-knappen i dialogrutan ‘New Project Workspace’.


Nu har vi ett projekt. För att kunna skriva en källkod måste vi skapa en textfil till den. Välj [File - New] igen, men välj ‘Text File’ i dialogrutan ‘New’ denna gång. Du kan också klicka på denna knapp:

 
 


Textredigeraren blir nu aktiv (det tomma vita utrymmet till höger på skärmen, där markören står), och vi kan skriva in vårt program. Skriv in följande källkod:

 

#include <stdio.h>

void main()

{

    puts(”Hello World”);

}

 

Oroa dig inte, vi kommer att diskutera vad det betyder senare. Just nu vill vi bara lära oss hur man arbetar med projektet, inte hur man skriver C-program.

 

Filen har dock inte skapats än, det sker först när den sparas. Välj menykom­mandot [File - Save As...]

 

                

 

 

Denna dialogruta är alltid inställd på senast använda katalog. Har du ändrat detta måste du leta upp den innan du fortsätter!

 

Om Filformat är inställt på filtret ‘*.*’ så att alla filer syns, ser vi de två filer vi redan skapat. Det är de som beskriver projektet. Nu ska vi spara en ny fil i samma katalog. Fyll i namnet ‘Hello.c’. Filnamnstillägget ‘.c’ betyder att denna textfil ska kompileras enligt programmeringsspråket C. När vi vill skriva C++ program anger vi i stället filnamnstillägget ‘.cpp’. Detta håller du själv reda på under resten av kursen, ibland använder vi C, ibland C++!


När vi klickar på knappen ‘Spara’ sparas filen tillsammans med de andra två. Dock är det bara katalogen som innehåller källkoden. Projektet måste nu få veta att denna källkod ingår. Därför väljer vi menykommandot [Insert - Files into Project]:

 

Dialogrutan ‘Insert Files into Project’ låter oss redigera projektet med avseende på ingående filer:

 

 

 

 

 

                

 

 

 

 

Här väljer vi vår källkod, och klickar på ‘Add’. Det går också bra att bara dubbelklicka på filnamnet i listan.

 

Observera nu att vi borde ha rätt katalog vald, om vi inte ändrat detta. Dock ser vi inte de två projektfilerna. Detta beror av det filter som valts under ‘Filfor­mat’. Om du klickar på den s.k. ‘drop-down’-pilen längst till höger i textrutan kan du se vilka format som kan väljas.

 

Prova att välja något annat, och se hur fillistan ändras. Återställ till C/C++ filer när du är klar (det filter du ser på bilden ovan).
Nu, kan vi kompilera och länka. Dessa två steg kan utföras automatiskt av Developer Studio, och kallas då för ‘Build’. Det kan göras via menykommando, snabbtangent eller knapp i verktygsfältet. De knappar som har med ‘Build’ att göra ligger som en grupp längst till vänster i standardverktygsfältet:

 

 

 

                                           

 

 

 

Den första knappen kompilerar endast, och då endast den fil som är aktuell för redigering (d.v.s. syns i redigeringsfönstret samtidigt som redigeringsfönstret är aktivt).

 

Den andra kompilerar och länkar alla filer som har nyare ändringsdatum/tid än sin motsvarande resultatfil. Har man ändrat i källkoden är den nyare än objekt­koden (om den existerar). Efter kompilering är programfilen äldre än objekt­filer­na, varvid länkning sker. Det är den knappen vi ska använda nu.

 

Den tredje knappen (som nu är passiv) är till för att avbryta Build. Den blir aktiv när man tryckt på någon av de andra två.

 

Betänk följande situation: Du har en källkod som ingår i projektet. Du ändrar inte i denna källkod, men det finns ett s.k. kompileringsdirektiv som anger att kompilatorn ska läsa en fil till. (Detta är vanligt i många programmeringsspråk.) I C/C++ heter detta direktiv #include.

 

Nu kan det vara så att vi har ändrat i den filen i stället. Det står ingetnting i projektet om att denna fil ska vara med. Den kommer med först när kompilatorn ser #include-satsen. Alltså fungerar inte knapp två i denna situation.

 

Lösningen är att först kompilera källkoden m.h.a. den första knappen. Då kompileras även den ‘osynliga’ filen vi har ändrat i, varvid ändringarna återspeglas i objektfilen.

 

Därefter tvingar vi fram länkning genom att trycka på den andra knappen. Objektfilen är ju nu nyare än exe-filen.

 

Det finns situationer då det behövs en knapp till. Vi ska titta på det när vi testat vårt projekt.
När allt är klart bör det se ut ungefär så här på bildskärmen. Om inte, så justera fönsterstorlek och välj fliken ‘File View’ samt klicka på + framför ‘Hello files’:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Skulle kompilatorn vara oförskämd nog att märka ord, är det bara att rätta i källkoden och klicka på ‘Build’-knappen igen.


Sedan är det bara att prova programmet. Developer Studio har inbyggd funktion för att starta program. Jag föredrar personligen snabbtangenten Ctrl+F5, men det finns andra sätt. Titta själv i Build-menyn. Prova även att peka på de olika verktygsknapparna. Info syns i korthet bredvid muspekaren och lite mera utförligt i statusraden (nederst).

 

Så här blev resultatet:

 

 

 

 

 

 

 

 

Övningsuppgift:

·      Skapa katalogen c:\ccpp.

·      Starta Developer Studio.

·      Skapa projektet Hello enligt ovanstående.

·      Skapa källkoden och infoga filen i projektet.

·      Kompilera, länka och testa.

·      Denna procedur bör du kunna utantill.

 

 

 

? Klicka i det vita utrymmet i redigeringsfönstret (under sista raden) och tryck på F1. Läs informationen. Upprepa för de övriga två fönstren.


Kommandon i Windows

 

Du har vid det här laget säkert förstått att många saker kan göras på olika sätt. Ett kommando kan i regel ges på flera olika sätt.

 

Det finns menykommandon, vilka jag anger hierarkiskt med bindestreck emellan, samt inom hakparanteser. [File - New] betyder att du ska klicka på ordet ‘File’ i menyraden (den andra raden i programfönstret, den första är den blåa raden med programmets titel), och sedan på ordet ‘New’ som finns i listan som just dök upp.

 

Om det skulle vara ett menyval där fler nivåer finns anges de med fler bindestreck, t.ex. [Build - Debug - Go]. I de fallen följs varje menyval som öppnar en ny lista på menyer av en pil längst till höger:

 

Line Callout 3 (No Border): Obs, pilen betyder ‘pop-up’-meny.

 

 

En del menyval följs av tre punkter... vilket betyder att de inte utför något omedelbart, utan öppnar en dialogruta som du måste fylla i innan något sker. I så fall kan du alltid ångra dig.

 

Ett annat sätt att ge kommandon är via verktygsknappar, vilket vi ska titta mer på i nästa avsnitt.

 

Dessutom finns snabbtangenter (accelerators). Dessa är en kombination av någon kvalificerartangent eller kombination av sådana (Ctrl eller Ctrl + Shift) samt en vanlig tangent, eller bara en funktionstangent. Se menyn ovan. Go kan utföras genom att man trycker på F5,  medan Ctrl + F5 leder till kommandot Execute.exe.
En sak du kanske undrat över, är varför vissa bokstäver är understrukna. Det är en speciell sorts snabbtangenter, vilka alltid utförs i kombination med Alt-tangenten. Många menyer och menyval har dessa. Man kan t.ex. öppna File-menyn genom att trycka på Alt + F.

 

Dessa snabbtangenter heter ‘shortcuts’ på engelska, men jag har inte sett någon svensk översättning. Möjligen skulle de kunna kallas ‘genvägar’.

 

Om man bara trycker en gång på Alt öppnas första tillgängliga menyrad (men ej menyval). I Windows versioner före Windows 95 syntes detta på att programmets systemmenyruta bytte färg. Man kan sedan manövrera m.h.a. piltangenterna, eller använda Alt-snabbtangenterna (shortcuts).

 

Observera att när en meny väl är öppen behöver man inte trycka på Alt, endast bokstaven räcker. Således får följande knapptryckningssekvenser samma resultat: Alt + F, Alt + N = Alt + F, N = Alt, F, N.

 

Alt-kombinationerna används även för att välja kontroller i dialogrutor. Det är därför många kontrollnamn har en understruken bokstav. Det går att välja kontroll i en dialogruta med hjälp av tabulatortangenten också (tillsammans med skift hoppar vi baklänges). En aktuell kontroll kan t.ex. aktiveras m.h.a. Enter-tangenten.

 

Detta gäller alla typer av kontroller, även flikar, grupper, listrutor etc.

 

I en listruta kan man välja med piltangenterna. Har listan kryssrutor eller alternativknappar kan man välja dessa m.h.a. mellanslagstangenten.

 

En mapp som är vald kan öppnas m.h.a. Enter-tangenten. (Men bara när mappen är aktiverad, annars går enter till någon annan kontroll!)

 

 

 

Övningsuppgift:

·      Öppna filen C:\Msdev\Mfc\include\Afxres.h med skrivskydd utan att använda musen.

·      Tips: byte till annan katalog: Alt + pil upp i ‘Leta i’, Öppna katalog, markera m.h.a. piltangenter, tryck Enter.

·      Stäng filen utan att varken ändra i den (vilket du inte kan när du öppnat med skrivskydd) eller att förstå vad det står i den.


Att anpassa verktygsfält.

[Tools - Customize...]

Med detta menykommando får man tillgång till dialogrutan ‘Customize’. Det är en dialogruta med tre flikar. ‘Toolbars’, ‘Tools’ samt ‘Keyboard’.

 

‘Toolbars’ anpassar verktygsfält. Här kan man lägga till och ta bort knappar i de olika verktygsfälten, samt skapa nya verktygsfält. Se även nästa sida!

 

‘Tools’ ger dig möjlighet att lägga till nya kommandon i menyn ‘Tools’.

 

‘Keyboard’-fliken skapar snabbtangenter till olika kommandon.

 

Så här ser dialogrutan ut när man har valt fliken ‘Toolbars’:

 

                

 

 

Observera att jag har klickat på knappen ‘Rebuild all’. Det är därför den ser intryckt ut, men också anledningen till att fältet ‘Description’ upplyser oss om vad just den knappen gör.

 

Observera även att kombinationsrutan överst i gruppen ‘Buttons’ också kan läggas in i ett verktygsfält, och faktiskt redan finns på din bildskärm.


Vill man återställa verktygsfält till att innehålla det som fanns vid installations­tillfället, eller om man vill ta bort verktygsfält man själv skapat, behöver man använda dialogrutan ‘Toolbars’. Välj [View - Toolbars]:

 

 

                      

 

 

 

Observera att knappen ‘Reset’, vilken återställer valt verktygsfält till standard, byts till ‘Delete’ när man väljer ett verktygsfält man själv skapat.

 

 

                     

 

 

 

Här kan man även byta namn på egna verktygsfält, samt aktivera/avaktivera verktygsfält.

Här kommer ett par dubbelbottnade övningar. De går inte bara ut på att öva sig i att använda ovanstående dialogrutor, utan även att finna information i hjälpen. Du måste nämligen själv söka i hjälpen för att kunna utföra det som krävs av dig. Förslag till hur du söker står nederst på sidan.

 

Övningsuppgift:

·      Lägg till verktygsknappen ‘Rebuild all’ mellan knapparna ‘Build’ och ‘Stop build’. (Dessa namn refererar till informationen i de gula rutor som dyker upp när man håller muspekaren över en knapp.)

·      Verktygsfältet blev för stort, knappen längst till höger hamnar utanför. Ta bort knappen ‘Rebuild all’ igen.

·      Gör ett eget verktygsfält med de fyra ‘Build’-knapparna.

·      Stäng verktygsfältet.

·      Öppna det igen.

·      Prova att ‘docka’ det först i nederkanten, sedan i höger kant.

·      Tag bort det.

 

Övningsuppgift:

·      Lägg till verktyget ‘Global Finder’ i ‘Tools’-menyn. Filen du behöver heter O:\VCPP\Globfind.exe.

·      Det behövs inga argument.

·      Prova att starta programmet via ditt nya menyval [Tools - Global Finder].

 

Övningsuppgift:

·      Skapa en snabbtangent Alt + X som har funktionen att växla redigeringsfönstret mellan normalläge och fullskärm.

·      Prova snabbtangenten. Stäng verktygsfältet ‘T...’ om du inte vill ha det.

 

Övningsuppgift:

·      I en av böckerna finns en ‘tutorial’, en steg-för-steg övningsuppgift som demonstrerar hur man använder Visual C++ för att skapa ett Windows­program. Uppgiften heter ‘Scribble’. Leta upp den.

·      Läs i den inledande texten vad programmet gör (i korthet!).

 

 

? Help-knappen i dialogrutan ‘Customize’. Observera att denna knapp leder till olika hjälpavsnitt beroende på vilken flik som är vald. Prova även ‘See Also’-knappen i hjälpavsnitten.

 

? [Help - Search] Prova olika nyckelord för att se hur man kan leta sig fram till samma information.

 

? ‘InfoView’-fliken i det vänstra fönstret tar fram manualerna.


Debug/Release

 

Developer Studio har, som de flesta andra utvecklingsverktyg, möjligheter att felsöka program, en s.k. ‘debugger’, avlusare. Dock skapar kompilatorn ren maskin­kod, och sådan är inte direkt anpassad för felsökning. När man ska felsöka behövs mer i exe-filen än bara maskinkoden. Kompilatorn kan lägga in s.k. symbolisk kod, vilken kan användas vid felsökning. Denna kod gör dock att både objektfilerna och programfilen blir betydligt större.

 

I den gamla Visual Workbench var man tvungen att kompilera om alla filer varje gång man bytte mellan release och debug. Detta kunde ta ganska så lång tid, vilket ju är rätt så irriterande. Developer Studio håller dubbla uppsättningar av objekts och programfiler. Därigenom behöver man bara kompilera allt en gång för debug och en gång för release. Man byter sedan bara genom att välja miljö i nedanstående kombina­tionsruta:

 

                                  

 

Har man ändrat i någon fil räcker det med ‘Build’ för den miljö man vill provköra. Observera att man blir påmind om att allt inte är kompilerat/länkat när man försöker starta ett program, om så är fallet. Då får man möjlighet att ångra sig, köra ‘Build’ eller köra programmet i sin tidigare version:

 

                          

 

 

Observera att man inte ska lämna ifrån sig en programfil som innehåller den symboliska koden. Den är inte bara onödigt stor, det ger även ‘hackern’ större möjligheter att ändra i ditt program, och t.ex. ta bort licensskydd etc.


Filtyper     

 

De vanligaste filtyperna som används i C/C++ är:
                 *.c             Källkodsfiler, C-program.
                 *.cpp         Källkodsfiler, C++ program.
                
*.h             Headerfiler (include-filer).
                
*.obj          Kompilerat objekt.

                 *.exe          Exekverbar fil.

 

Källkodsfilerna är de filer du själv skriver med hjälp av Developer Studio Editor.

Headerfilerna innehåller definitioner etc. som man använder ofta och därför förvarar i separata filer som hämtas in av kompilatorn m.h.a. kommandot #include <filnamn.h>.

En objektfil innehåller maskinkod som skapats vid kompilering av en källkodsfil (inklusive eventuella headerfiler som inkluderats).

Den exekverbara filen är en eller flera objektfiler som sammanlänkats och försetts med speciell information som talar om för operativsystemet hur programmet ska köras.

Dessutom använder sig Developer Studio av projektfiler (*.mak, även kallade make-filer) vilka anger bl.a. vilka filer som ingår i ett projekt, *.ncb vilken innehåller inställningar för projektet, samt definitionsfiler (*.def), vilka innehål­ler definitioner som anger hur programmet ska köras (det som läggs till vid länk­ningen enligt ovan) samt en lista på de funktioner som skall exporter­as/importeras.

 

Varje projekt använder ett antal filer. Därför är det nödvändigt att skapa en katalog för varje projekt, om man vill kunna hålla reda på vilka filer som hör till respektive projekt. Vi kommer att skapa en katalog för C-program på vår hemmakatalog: c:\CCpp under vilken Developer Studio lägger en katalog för varje övningsexempel. Övningsexemplets katalog får samma namn som programmet, fast utan filnamnstillägget.