Søger du en specifik kategori?

 



Oprettet tor. d. 05. februar 2009 kl. 08:58

visualdeveloper
visualdeveloper (20.359 point)
Guidens karaktér
1
2
3
4
5

C++ for begyndere

Jeg har lavet denne artikelserie som giver en god start til at lære c++. Artiklen er stor da det er 2 artikler der er slået sammen.
Der er to af disse artikler, fordi jeg har slået nr 1 og nr 2 sammen i en artikel. Jeg vil ikke slette den ene af hensyn til dem der har betalt for den !

Lad os starte med c++.

Når vi skal skrive et program i c++ skal vi have to stykker software:

1. en editor
2. en compiler

Editoren & Compileren
Til at skrive al teksten/kildekoden og gemme det som en .cpp fil skal vi bruge en editor. En simpel editor kunne fx være notesblok. Der skriver man bare programmet og så gemmer man det som en .cpp fil. En anden god editor som jeg godt kan anbefale er TextPad som kan downloades her: http://www.textpad.com/ (...)
Men....
Den aller simpleste vej er et program hvor man både kan skrive programmet og compile det. Sådan et program kaldes IDE eller Integrated Development Environment. Et IDE program jeg kan anbefale er Dev-C++ som kan downloades her: http://www.bloodshed.net/ (...)
Det er også Dev-C++ jeg vil tage udgangspunkt fra i denne artikel.

Dit første program
I om ikke alle så i hvert fald 99.9 % af artikler/bøger om c++ starter man med eksemplet "Hello World", så hvorfor ikke også starte med det her.

// Mit første C++ program

#include <iostream>

using namespace std;

int main ()
{
  cout << "Hello World!";
  return 0;
}


Sæt dette ind i editoren og gå ind i menuen Kompiler --> Kompiler og kør.

Du kan måske lige nå at ane en sort boks komme op og lukke igen.
Det var dit program.
Hvis du gerne vil nå at se dit program skal vi lige indsætte en "pause"

// Mit første C++ program med pause

#include <iostream>

using namespace std;

int main ()
{
  cout << "Hello World!";
  std::cin.get();
  return 0;
}


Nu skulle du gerne få et console vindue (DOS-vindue) hvor der står 
Hello World
Press any key to continue...



Lad os kigge nærmere på programmet

// Mit første C++ program - dette er bare en kommentar som du til hver en tid kan indsætte i dit program. Bare lav to skråstreger (//) og skriv så din kommentar bagefter.

#include <iostream> - alle sætninger der begynder med #include fortæller at programmet skal inkludere iostream som indeholder dekarationer på c++'es standart output bibliotek, som vi bruger i vores program (cout).

using namespace std; - dette er et namespace, og som der står i ANSI C++ standart (En standart indenfor C++, for hvordan en kode skal være skrevet og opstillet. Fx kan man nu skrive <iostream> i stedet for <iostream.h> (.h = headerfile (som jeg vil komme ind på senere))) skal alle klasser, objekter og funktioner være defineret i std;. Istedet for at skrive using namespace std;
kunne vi også skrive std::cout << "hello word!";

int main() - int main() er en den funktion hvor dit program starter selvom main funktionen er i midten af dit program er det altid her programmet starter. Efter main kommer de to paranteser der betyder at main er en funtion, efter alle funktioner kommer der to paranteser.

{ - her starter din funktion.

cout << "Hello World!"; - cout står for console output og udskriver til dit standart output, som normalt er skærmen. Cout er deklereret i iostream headerfil, så hvis vi vil bruge cout skal vi altid inkludere iostream i vores program. Efter hver sætning skal der være et semikolon

std::cin.get(); - denne kommando sørger for at programmet holder "pause" indtil man trykker på en tast.

return 0; - her slutter dit program. return 0; er den mest almindelige måde at slutte programmet på. 0 er den værdi programmet returnerer.

} - her afslutter vi funktionen main.

Vores program kunne også have set sådan ud:

int main () { cout << " Hello World "; system("pause"); return 0; }


Det er bare for at gøre det lettere at læse, at man stiller det op  på den måde. Det er en af de smarte ting ved Dev-C++ at den gør det automatisk.

En anden måde at kommentere sit program på er at bruge /* kommentar */

som her:
/* Her kan du kommentere på flere
linjer */

#include <iostream>

using namespace std;


int main ()

{
  cout << "Hello World!";      // Her kan du kommentere på en linje
  std::cin.get();
  return 0;
}




Ny linje

Der er to måder at lave et linjeskrift på:

1. \n
2. endl;

\n kan benyttes sådan:

cout << "Forste linje \nAnden linje";


endl; kan benyttes sådan:

cout << "Forste linje" << endl;
cout << "Anden linje";


En anden sjov 'escape code' er \a som giver en bip lyd.
Prøv selv !

Artikel 2

Videre i c++

I denne artikel vil jeg gå lidt mere i dybten med c++. Jeg vil gennemgå flg. ting:

- Input (cin)
- Variabler
- Konstanter
- Udtryk
- Operatorer

Cin (console input)
Cin er en kommando fra C++'es standart input/output bibliotek, lige som cout. Den kan læse en indtastet værdi og gemme den i en variabel (som jeg kommer ind på senere). I dette eksempel bruger jeg cout, cin og en variabel:

#include <iostream>

using namespace std;

int main()
{
    int tal;                        // Her erklæres en variabel son i dette tilfælde er en Integer
    cout << "Indtast et tal: ";
    cin >> tal;                  // Her læser den det indtastede tal og gemmer den i variablen 'tal'
    cout << tal << endl;  // Her udskrives variablen 'tal'
    std::cin.get();
    return 0;
}


Har du evt brug for at få genopfrisket alle de andre sætninger som cout og using namespace std; kan du læse min første artikel om c++ her: http://www.eksperten.dk/ (...)

Lad os kigge nærmere på cin
Hvis du kigger godt på sætningen "cin >> tal;", vil du lægge mærke til at >> er istedet for << og det er fordi cin er et input og cout er et output.

Variabler

En variabel er en mængde plads, på computerens elektroniske hukomelse (bedre kendt som RAM eller Random Access Memory), som programmet 'reserverer' til at gemme en værdi (fx tallet 5).


Du kan selv bestemme værdien af en variabel ved at tildele den en værdi. Til det bruger du tildelingsoperatoren (=), som jeg vil komme ind på senere i denne artikel.
Det er faktisk meget simpelt at erklære en variabel. Her er et eksempel:

int a;
a = 22;


Her erklæres en variabel og den tildeles en værdien 22.
Dette kan også gøres i én sætning:

int a = 22;


Du kan selv bestemme navnet på din variabel, med nogle få untagelser som disse nøgle-ord i ANSI C++ standart:

asm, auto, bool, break, case, catch, char, class, const, const_cast, continue, default, delete, do, double, dynamic_cast, else, enum, explicit, extern, false, float, for, friend, goto, if, inline, int, long, mutable, namespace, new, operator, private, protected, public, register, reinterpret_cast, return, short, signed, sizeof, static, static_cast, struct, switch, template, this, throw, true, try, typedef, typeid, typename, union, unsigned, using, virtual, void, volatile, wchar_t


- Det er heller ikke klogt at bruge æøå I dine varibler da der ikke er alle compilere der opfatter disse som alm. bogstaver


Der findes forskellige typer af variabler, og de kaldes Data typer. Her er de så:

Da det er lidt svært at sætte det op her på exp.dk har jeg sat dem ind her:
www.faarup.1go.dk/typer.html

Jeg har medvilje ikke skrevet hvor meget data typerne fylder da det afhænger af den compiler du bruger, og din computer. Men det er der heldigvis råd for. I dette eksempel vil jeg vise hvordan man finder størrelsen af en data type, ved hjælp af funktionen sizeof() (som leveres af din compiler):

#include <iostream>

using namespace std;

int main()
{
    cout << "Storrelsen paa en double er: ";
    cout << sizeof(double) << " bytes." << endl;
    std::cin.get();
    return 0;
}


Mit program udskrev:
Storrelsen paa en double er: 8 bytes.

Dvs. at størrelsen (pladsen som variablen optager i computerens elektroniske hukommelse (RAM)) er på 8 bytes !
- læs evt mere om bytes her:
http://computer.howstuffworks.com/ (...)
eller på en af de mange andre sider:
http://www.google.dk/ (...)

- Prøv evt selv at finde resten af dine værdier på data typerne.

Konstanter

Konstanter minder meget om variabler, men der er dog den forskel at værdien på en konstant ikke kan ændres, efter man har erklæret den. Men kan fx godt først give en varibel værdien 1 og så senere i programmet ændre værdien til 2 eller til noget helt tredje !


Når du først har initialiseret (erklæret og tildelt en værdi) en konstant kan værdien ikke ændres senere i programmet.

En konstant erklæres men nøgleordet const

[/div]

const
Når du konstaterer en variabel med nøgleordet const kan du ikke ændre på værdien mere. Den bruges sådan:

const double PI = 3.1415;


Her kan man også bestemme typen af konstanten (data typen, her en double).

Der er også noget man kalder for opregnede konstanter men det vil jeg ikke komme ind på i denne artikel (måske i næste ;)).


Udtryk

Et udtryk er når man fx skriver x = a + b. Dette udtryk betyder ikke at x er lig a + b, men at x skal tildeles værdien af summen af a + b. Efter alle udtryk/sætninger skal der være et semikolon (;).
Mellemrummene mellem x og = og mellem = og a osv. er noget som compileren ignorerer, så den kan godt undlades: x=a+b.


Til alle udtryk bruger man operatorer. Operatorer er et symbol der får compileren til at foretage en handling som fx at lægge to tal sammen.

Her er nogle brugbare (matematiske) operatorer:

+  = plus. Lægger to tal sammen
-    = minus. Trækker to tal fra hinanden
*  = gange. Ganger to tal
/    = dele. Deler to tal
%  = module. Finder resten af to delte tal.


Tildelingsoperatoren er =.
Tildelingsoperatoren kopierer data fra højre til venstre side.
fx
a = 1;


her kopieres værdien 1 som tildeles til a

! Pas på du ikke kommer til at blande den sammen med denne operator ==, som sammenligner data fra højre og venstre side.

Her er et lille eksempel på brug af dem begge:
if((a=b)==1)


her kopieres fra b til a
og sammenlign a med 1

...og et til lille eksempel:
a = (b == c);


her sammenlignes b og c og resultatet gemmes i a (forudsætter at a er af typen bool).

Da operatorer er et ret stort emne vil jeg ikke komme mere ind på det i denne artikel. Men jeg håber at du har fået fat i hvad det er.


Til sidst vil jeg angive et eksempel på hvordan man beregner arealet af en cirkel ud fra nogle indtastede værdier. Jeg gennemgår også alt det du har lært i denne artikel:

#include <iostream>

using namespace std;

main()
{
      double r, A;  // Her erklæres to doubler
      double pi = 3.1415;  // Her defineres en konstant
      cout << "Dette program beregner arealet af en cirkel" << endl;
      cout << "Indtast radius i cm: ";
      cin >> r;  // Her læser den det indtastede tal og gemmer den i variablen 'r'
      A = pi * r * r;  // Her foretages en beregning (et udtryk)
      cout << "Arealet af cirklen er: " << A << " cm2." << endl;  // Her udskrives resultatet
      system("pause");
      return 0;
}


Dette program beregner arealet af en cirkel
Indtast radius i cm: 4
Arealet af cirklen er: 50.264 cm2.


Slut på artikel 1
Det var så slut på artikel 1 om c++ for begyndere. Jeg håber du har fået et godt indblik i c++ og måske har fået lidt interesse for det. I undrer jeg sikkert over at jeg har skrevet slut på artikel 1, og det er der en grund til. Jeg arbejder allerede nu på en 2'er som vil gå lidt mere i dybten med c++.

Alt kritik vil blive modtaget, så hvis du kan finde en stavefejl eller en anden mangel i artiklen så skriv endelig.

Hvis du ikke kan vente med at lære mere c++ så vil jeg anbefale at låne eller købe bogen
C++ Grundbog af Jesse Liberty
som kan findes på: http://idgforlag.dk/
Eller nogle af de mange tutorials der findes (mest på engelsk) på nettet.

Masser af simple eksempler på www.faarup.1go.dk

Jeg kan ikke anslå en dato for hvornår c++ for begyndere 3 kommer men det bliver nok i starten af oktober.


De værste fejl skulle være rettet nu. Ellers skriv til mig.

MVH VISUALDEVELOPER

Skrevet søn. d. 14. august 2005 kl. 14:50| #1


Skrevet søn. d. 14. august 2005 kl. 15:23| #2

iostream (9.195 point)
I top...forklarer godt om det mest basale ting i c++. Hvis der kommer flere som han skriver ville det være rigtig godt.

Skrevet søn. d. 14. august 2005 kl. 16:30| #3

webcreator (15.311 point)
Ja, det var da godt nok en begynderartikel. Den er hele nede på jorden med meget simple (og alt for få) eksempler. Efter denne artikel vil du kunne lave et program, der udskriver noget til en konsol. Jeg synes du skulle skrive mere på din artikel - fx omkring datatyper, betingelser, løkker, input/output til programmet osv. Godt udgangspunkt du har lavet - men gør den lige færdig, ik' :)

Skrevet søn. d. 14. august 2005 kl. 16:32| #4

henrik6666 (15.170 point)
Hmmmm kort - men jeg ser frem til næste del :-)

Skrevet søn. d. 14. august 2005 kl. 16:49| #5

syltetoej (11.770 point)
fatede ikke enne brik... ville bare lave et computer spil som det her http://outsidethere.com/ (...)

Skrevet søn. d. 14. august 2005 kl. 21:41| #6

the_email (23.972 point)
OK artikel. Glæder mig til 2'eren

Skrevet man. d. 15. august 2005 kl. 08:09| #7

Fint nok. Beskriv dog gerne lidt mere >> "cout står for console output og udskriver til dit standart output, som normalt er skærmen" Oki, og det vil sige? ;) Hvis det er til begyndere (som mig) så ville det være kanon at få nogle ting lidt mere forklaret selvom der er mange ting der er forklaret :) /Htmlkongen

Skrevet man. d. 15. august 2005 kl. 23:58| #8

skwat (25.306 point)
Ok, men i dag skal man da bruge iostream og namespaces og ikke iostream.h

Skrevet ons. d. 17. august 2005 kl. 17:00| #9

h0lte (12.370 point)
Niiice, c++ er mega svært :D google er jo lavet i c++

Skrevet fre. d. 19. august 2005 kl. 17:10| #10

madsgr (12.900 point)
Disse problemer er altså løst nu så jeg vil give denne artikel topkarakter !

Skrevet tor. d. 22. september 2005 kl. 10:23| #11

bif_pin (13.890 point)
Jeg synes at beskrivelserne er korte og fine. Det er jo noget af en udfordring at kaste sig ud i en artikler omrking C++ pga. områdets størelse. Selvfølgekig er der ikke gået i detaljer i en artikel om C++ for nybegyndere. Hvis man vil have alle detaljer med kan man gå ud og købe en bog på 600 sider om c++. Dog ser det ud til at der er en fejl i eksemplet under konstanter. I cirkeleksemplet skal PI defineres som en konstant (double pi = 3.1415). Denne linie skulle ud fra artiklens beskrivelse være "const double pi = 3.1415".

Skrevet tir. d. 25. oktober 2005 kl. 16:55| #12

peter_bf (11.530 point)
Jeg er enig med bif_pin jeg synes at beskrivelserne er gode, og at det helt klart er et svært emne at skrive en artikel om. Det synes jeg at du klarer meget godt, og derfor giver jeg denne artikel 8.5/10
Du er heldig for nu fordi jeg runder min vurdering op til fuld karma :o)

Skrevet ons. d. 26. oktober 2005 kl. 01:25| #13

bertelbrander (16.735 point)
Selv om man ikke skal forvente at lære at lave et 3D spil i en begynder artikel om C++, må jeg sige at denne er tynd.
Men det er ikke det størte problem, det største problem er mængden af fejl i artiklen. Jeg har forsøgt at gøre forfatteren opmærksom på disse, men det er blevet ignoreret (http://eksperten.dk/ (...)).

Artiklen kan ikke anbefales.

Skrevet man. d. 14. november 2005 kl. 08:12| #14

mysitesolution (13.914 point)
std::cin.get() kan laves om til cin.get() så snart der bruges std namespace

Skrevet ons. d. 16. november 2005 kl. 10:39| #15

h7iws (12.340 point)
hmm ... den er lidt overfladisk, men det er jo for begyndere ...

Skrevet fre. d. 02. december 2005 kl. 20:13| #16

cronck (11.582 point)
Ville være bonus hvis at du samtidig viste hvordan at man laver punktum'et om til et komma ;-)

Skrevet ons. d. 08. april 2009 kl. 00:23| #17

opiman (11.235 point)
Wow... Da jeg begyndte at læse artiklen, fik jeg straks meget høje tanker om både den og dens skaber; dette på grund af denne sætning alene:

"I om ikke alle så i hvert fald 99.9 % af artikler/bøger om c++"

Det er virkelig en god brug af en indskudt sætning. Men ikke mange linjer nede begyndte artiklen at drukne i stavefejl, trykfejl og fejl.

For det første virker det underligt, at du skriver cout uden std:: men cin.get() med std::... Specielt da du har skrevet "using namespace std;".

For det andet skriver du her:
"alle sætninger der begynder med #include fortæller at programmet skal inkludere iostream"

At en sætning som
#include <windows.h>

vil inkludere <iostream>. Det var godt nok en interessant udtalelse. Er du helt sikker på, du har ret i det? he he.

"%  = module. Finder resten af to delte tal."
Operatoren hedder modulo, med tryk på første stavelse.

Standard ender med d, ikke t.

"int main() er en den funktion hvor dit program starter selvom main funktionen er i midten af dit program er det altid her programmet starter."

For det første er den ikke nødvendigvis placeret i midten. For det andet er det ikke _nødvendigvis_ dér, programmet starter. Det er _sædvanligvis_ dér, programmet starter. I Visual Studio kan du selv vælge, hvilken funktion, der skal kaldes først.


Man kan så diskutere relevansen og moralen i at sidde og kommentere den slags fejl, men da de afgjort er med til at sænke artiklens niveau, skulle det nok kunne betale sig. Forresten bør I (hvem I så end er) ikke ignorere Bertel Branders indlæg. Personligt kender jeg ikke nogen, der er bedre/mere erfaren indenfor C++ end ham (måske med undtagelse af Bjarne Stroustrup og Charles Petzold, hvis vi taler Win32).

Skriv en kommentar



Mest populære guides

Guidens karakter
!!!Karaktér: 3
12 stemmer
31/01 - 2011
Af: heinzdmx

Dropbox - gratis online lagerplads

Jeg vil i denne guide forklare lidt om hvad Dropbox er og også hvordan du får mest mulig plads på Dropbox. Dropbox er kort sagt en service hvor du har dine data lagt til backup på både nettet og din egen computer.
Guidens karakter
!!!Karaktér: 4
33 stemmer
02/02 - 2009
Af: jkrons

Dato- og tidsberegninger i Excel

En introduktion til simple beregninger med dato og tid i Excel. Opdateret med afsnit om beregning af tillæg.
Excel  |  Læs »
Guidens karakter
!!!Karaktér: 4
21 stemmer
06/11 - 2011
Af: fromsej

Sådan fjerner du virus og malware

Udviklingen går stærkt på "skidt"fronten, så vi har sammensat en ny og effektiv programpakke til fjernelse af det.
Virus  |  Læs »

Log ind

   

   

Seneste guides

Installer win 7
Den gode bruger


   




Tips & Tricks fra PC World

Teaser billede

Gør dig selv en tjeneste: Køb et ordentligt SD-kort

Der kan være meget stor hastighedsforskel på to umiddelbare ens SD-kort. Se her hvad du skal være opmærksom på, når du køber ekstra hukommelse til din mobil, tablet eller kamera.


Anmeldelser fra PC World

Teaser billede

Test: Denne super-tablet er iPads hårdeste konkurrent

Eee Pad Transformer Prime er frygtindgydende med sin quadcore processor og evne til at trylle sig om til bærbar. Apple bør kigge i bagspejlet, for Asus' tablet-pc kommer buldrende - og gør det...


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Gratis flysimulator fra Microsoft

Den legendariske Flight Simulator fra Microsoft genopstår den 29. februar - og denne gang er spillet gratis.


Nyheder fra Computerworld

Teaser billede

Bank: Derfor er login uden NemID helt i orden

Der er ikke hold i påstanden om sikkerhedsproblemer i forbindelse med bankkunders login uden brug af NemID, lyder det fra Nykredit Bank.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger