Om man ska skriva ett portabelt C-program, alltså ett som också kan kan kompileras och sen köras på en dator med till exempel Mac OS X eller Linux, måste man hålla sig till in- och utmatning av text. De grafiska gränssnitten, och hur man arbetar med fönster och knappar och liknande, är helt olika på de olika systemen. Grundspråket C, alltså det som specificeras av C-standarden, innehåller inga grafiska funktioner.
Från och med Visual Studio 2013 är C-dialekten äntligen uppdaterad så att man kan använda en del av finesserna från C99-standarden. Bland annat kan man numera blanda deklarationer och körbara satser, och man kan deklarera en loopvariabel direkt i for-loopen. Det tog bara 14 år! |
Varje projekt får en egen katalog på disken. När man skapar ett projekt kan man ange var projektets katalog ska placeras.
Om man arbetar hemma kan man lägga den var man vill, men i universitetets datorsalar har vi inte samma frihet. Normalt fungerar det att spara på default-platsen under Mina dokument, men ta reda på om det finns särskilda anvisningar. Information som sparas på den lokala disken på datorn (C:) finns kanske inte kvar nästa dag, och man kommer inte åt den från andra datorer.
I alla fall tidigare har varje student haft en hemkatalog, som automatiskt monteras som M:. Det kan vara bra att skapa en katalog där, till exempel kallad M:\PCSA\Program, och placera alla projekt där.
Ett tips:
Erfarenheten lär oss att även om det ska fungera med mellanslag, skiljetecken och ÅÄÖ i olika namn på datorer, så är det tyvärr inte alltid det verkligen gör det. Plötsligt får man något konstigt fel som efter flera timmars letande visar sig bero på att man hade ett svenskt tecken eller ett mellanslag i ett filnamn. Därför kan det vara en god idé att undvika andra tecken än bokstäver, siffror och kanske understreck (_), åtminstone i namn som slutanvändarna inte ser. (Och allra helst borde det kanske vara på engelska?) Därför är just Hej världen! som i exemplet ovan kanske inte ett så bra namn på projektet, och till exempel Hej_varlden kunde kanske varit ett bättre förslag. |
Alternativt kan man skapa ett tomt projekt redan från början.
Alternativt kan man gå via Project -> Add New Item.
Nu valde vi alltså C++, trots att det egentligen är C vi ska använda, men det ordnar sig i och med att vi ger filen ett namn som slutar på .c och inte på .cpp.
Kom ihåg: filen ska heta nånting.c, inte nånting.cpp!
Om det uppstod några fel, skrivs felmeddelanden ut i rutan. Man kan klicka på felmeddelandena för att komma till den plats i källkoden där (Visual Studio tror att) felet finns.
Man kan som synes också köra utan debuggern (Start Without Debugging), men medan vi skriver programmet är det ofta praktiskt att jobba i debuggern.
Det beror på att utmatningen från programmet, dvs texten Hej, världen!, skrivs ut i ett textfönster, men sen är ju programmet slut, och eftersom programmet avslutats så stängs fönstret.
Om man startar programmet med Start Without Debugging i stället för Start Debugging kommer Visual Studio automatiskt att skriva Press any key to continue . . . och vänta på att man trycker en tangent innan fönstret stängs.
Alternativt kan vi modifiera programmet så det inte avslutas direkt efter utskriften. Man kan göra på flera sätt, och ett vanligt sätt är att man anropar den Windows-specifika funktionen _getch, men här är ett som följer C-standarden, vilket betyder att programmet går att kompilera och köra även på till exempel Linux:
#include <stdio.h> int main(void) { printf("Hej, "); printf("v\204rlden!\n"); printf("Tryck RETUR f\224r att avsluta programmet.\n"); while (getchar() != '\n') ; return 0; } |
Koderna: Å = \217 Ä = \216 Ö = \231 å = \206 ä = \204 ö = \224
(Teckenkoderna skrivs med det oktala talsystemet, dvs med basen 8. I det vanliga decimala talsystemet, dvs med basen 10, skrivs exempelvis teckenkoden för Å som 143.)
Notera att det här är något man råkar ut för just med konsolprogram i Visual Studio, och när man sen ska utveckla riktiga program arbetar man sällan så. Gör man fönsterprogram i Windows, eller jobbar på en Mac eller i Linux, slipper vi problemet.
Bry dig inte om att lära dig koderna utantill inför tentan! På tentan räcker det att bara skriva ÅÄÖ.
Jag tycker att man oftast kan strunta i det, och bara skriva åäö som vanligt. Det är ett problem som uppstår just när man utvecklar textbaserade program i Visual Studio. För enkelhets skull är det den kombinationen vi använder i programmeringskursen, men annars är det ganska sällan man jobbar så. I andra sammanhang, som när man utvecklar fönsterprogram i Visual Studio, eller när man programmerar i Linux eller Mac OS X, fungerar tecknen som de ska, utan att man behöver skriva konstiga teckenkoder. Om man står ut med att det blir lite fult i våra övningar, tycker jag att det kan vara bättre att koncentrera sig på andra saker än på att sitta och skriva \206\204\224.
#include <stdio.h> #include <windows.h> int main(void) { SetConsoleOutputCP(1252); SetConsoleCP(1252); printf("ÅÄÖ! Och åäö! Räksmörgås!\n"); printf("En gång till! ÅÄÖ! Och åäö! Räksmörgås!\n"); printf("På krångliska: å = \206, ä = \204, ö = \224\n"); getchar(); return 0; } |
Med det ändrade typsnittet och anropen till SetConsoleOutputCP och SetConsoleCP fungerar svenska tecken i det här projektet i Visual Studio. När man skapar ett nytt projekt måste man ändra typsnittet i textfönstret på nytt.
Om man vill ändra textfönstrets typsnitt permanent (för aktuell användare) i hela systemet måste man ändra i systemregistret. Starta registereditorn (regedit). Under HKEY_CURRENT_USER\Console lägger man till ett nytt "string value" med namnet FaceName och värdet Lucida Console.
(Tack till Nikola Tomic, som rett ut det här.)