Avatar billede exp-ralle Nybegynder
04. november 2002 - 13:30 Der er 12 kommentarer og
2 løsninger

3 i 1 om C++ (nybegynder)

Hejsa...

1. Hvad ER en konstant, hvad bruger man dem til og hvorfor er de smarte?

2. Findes der en form for elseif i C++?

3. Hvad er en opregnet konstant (eks. enum Farve { Roed, Blaa, Groen, Hvid, Sort), hvad bruger man dem til og hvorfor er de smarte?'

Der er point til dem der svarer godt på et eller flere af spørgsmålene.



Ralle
Avatar billede soreno Praktikant
04. november 2002 - 13:33 #1
håber det giver mening:

1>>
#define sunde 1
#define usunde 2

2>>
int kager = sunde;
//int kager = usunde;

if(kager == sunde)
{
  printf("kager er sunde");
}
else if(kager == usunde);
{
  printf("kager er usunde");
}
Avatar billede soreno Praktikant
04. november 2002 - 13:35 #2
1>> det er egentlig nok const du tænker på
const int sunde = 1;
const int usunde = 2;

const gør variablen skrivebeskyttet. det ser umiddelbart ikke ud til at være en fordel. men hvis du laver store programmer eller benytter 3. parts api'er kan man sikre nogle variabler mod at blive modificeret.
Avatar billede di8leva Nybegynder
04. november 2002 - 13:37 #3
og 3>>
med en opregnet konstant (enum) sikkerstiller du att en variabel ær något av de givne værdi:n (rod, blaa, groen, hvid, sort) men den kan IKKE vare gul eller magenta...
Avatar billede exp-ralle Nybegynder
04. november 2002 - 13:39 #4
1. Så en const Test "Test" laver en skrivebeskyttet veriabel ved navn Test med indholdet "Test" ik?

2. Hvorfor skriver du // før int kager = usunde;?
Avatar billede exp-ralle Nybegynder
04. november 2002 - 13:43 #5
di8leva --> Så hvis jeg laver sådan en enum Farve { Roed, Blaa, Groen, Hvid, Sort)
Så kan jeg lave en variabel sådan her eller hvad?:

Farve Blaa;

???

Kan bare ikke se noget smart i det...
Avatar billede chries Nybegynder
04. november 2002 - 13:47 #6
en konstant er en der ikke kan ændre sig (unden du fusker det væk med casts).

feks.
const int i = 13;

"i" vil altid være 13. Hvis du prøver at ændre den, får du en compiler fejl. (du kan dog godt ændre den, men der skal fuskes )

ved klasse funktioner, lover du ikke at ændre i klassen:

f.eks, i func lover du ikke at ændre x (og det kan du heller ikke)
class C
{
public:
    int func( int &i ) const
    {
//        x = i; <- resulter i kompiler fejl

        return i+i;
    }

    int x;
};

elseif ->

if( a == b )
{
....
}
else if( c == d )
{
....
}
else
{
...
}

enum Farve { Roed, Blaa, Groen, Hvid, Sort }

gør koden lettere at læse og mere struktureret. Hver værdi representer en uniqie værdi.
Roed = 0, blaa = 1, Groen = 2 ... osv

så kan du skrive:
enum Farve { Roed, Blaa, Groen, Hvid, Sort };
   
int main(int argc, char* argv[])
{
    Farve x = Roed;

    if( x == Blaa )
    {

    }

    return 0;
}

istedet for:

int main(int argc, char* argv[])
{
    int x = 2;

    if( x == 2 )
    {

    }

    return 0;
}
Avatar billede soreno Praktikant
04. november 2002 - 13:48 #7
2. Hvorfor skriver du // før int kager = usunde;?
jeg udkommenterede den ene linie for at vise princippet. i praksis ville det jo ikke give mening at sætte en variable lig med en værdi for så straks efter at sætte den lig noget andet..

1>>
syntaksen for const er
const [variabeltype] [variabelnavn] = [værdi];

eks.
const *char ERROR1 = "Du har udført en ulovlighandling og skal i fængsel";
const *char ERROR2 = "Du har ikke indbetalt penge på min konto - gør det straks!";
const int WND_SIZE_MINIMIZED = 0;
const int WND_SIZE_MAXIMIZED = 1;
const int WND_SIZE_NORMAL = 2;
Avatar billede exp-ralle Nybegynder
04. november 2002 - 13:57 #8
Okay...

Men kan du ikke lige sige mig hvad flg. betyder:

const --->*char <--- ERROR1

Er det fordi man at det er en tekst og så er navnet på konstanten ERROR1?
Avatar billede chries Nybegynder
04. november 2002 - 13:58 #9
nej typo fejl :-), skal være:
const char* ERROR1 = "Du har udført en ulovlighandling og skal i fængsel";
Avatar billede exp-ralle Nybegynder
04. november 2002 - 14:01 #10
Jamen char* er det typen der fortæller at det er tekst?

int = Heltal

char* = Tekst?

Kan man også godt bruge char* til en variabel så den kan indeholde tekst?
Avatar billede soreno Praktikant
04. november 2002 - 14:03 #11
det er fordi det er et char array.

* foran en variabel betyder at variablen er en pointer (søg på "pointer" der er mange gode forklaringer..).

pointeren peger på det første element i teksten "Du har udført en ulovlighandling og skal i fængsel"
Avatar billede exp-ralle Nybegynder
04. november 2002 - 14:06 #12
Sidste spørgsmål:

Hvilken variabel type skal jeg bruge til at få tekst i en variabel.
Avatar billede soreno Praktikant
04. november 2002 - 14:15 #13
eks kunne du bruge et char array.

char tekst[123]; //opretter et char array med plads til 123 elementer.
tekst = "hello world";
printf("mit program siger: %s", tekst);

du skal være opmærksom på ikke at fylde mere i tekst end der er plads til. hvis det er nødvendigt at udvide pladsen i array'et kan det også lade sig gøre. men det er nok en fordel hvis du venter lidt endnu med at sætte dig ind i det.

du skriver du bruger c++ - det giver faktisk adgang til en datatype som kan automatisere en del for dig.
#include <iostream>
#include <string>

uses namespace std;

//eksemplet er ikke testet..!
int main(int argc, char **argv)
{
  string tekst = "hello";
  tekst += " world";
  cout << tekst << endl;

  return 0;
}
Avatar billede exp-ralle Nybegynder
04. november 2002 - 14:16 #14
Mange tak
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester