"Tommy Helgevold" <tommyhe@e-m*nospam*ail.dk> wrote in message
news:3c19bc05$0$67505$edfadb0f@dspool01.news.tele.dk...
> Hej gruppe,
>
> Jeg er *helt* fersk i C++, og har for 3-4 dage siden downloadet min
> "free" udgave af Borland C++ builder v.5.
>
> Nu har jeg plugget mig igennem div. tutorials og det ser ud til at
> køre riktig så godt, men jeg har nogle spørgsmål som jeg håber i
> kan hjelpe mig med:
>
> 1) - Includes og Libraries, - Jeg har set at mange af jer foretrækker
> at skrive f.eks #include <iostream> istedet for
> #include <iostream.h>, hvorfor? Min compiler brokker sig
> dersom jeg fjerner ".h" de to tegn.
Fordi det er ISO C++ Standard at skrive "#include <iostream> og det er
gammel stil (før Standard) at skrive "#include <iostream.h>.
En af de gode ting ved at skrive ISO C++ Standard compliant kode, er at det
er en fast, rimelig præcis, reference.
Dermed kan det understøttes af mange compilere, og der er overensstemmelse
med hvad compilerene opfatter som rigtigt, og hvad der står beskrevet i gode
bøger.
Hvad brokker din compiler sig over ?
Min Borland C++Builder V5.0 brokker sig ikke (normal - "cassert" er en dum
untagelse) over at bruge ISO C++ compliant includes
>
> 2) - Er der nogen god dokumentation på nettet over includes & libraries
> om hvad man kan bruge den enkelte include til og hvordan man
> bruger den (f.eks til et grafisk vindu hvis man vil kode et spil)?
>
www.dinkum.com er en mulighed.
Men ellers er der mange gode bøger.
Vær opmærksom på at ISO C++ _ikke_ har noget GUI bibliotek. Man bruger
typisk noget platform og compiler specifikt.
Når du bruger C++Builder er det nærliggende at bruge VCL - men vær opmærksom
på at GUI koden ikke kan flyttes til andre compilere og platforme (med
mindre Borland bestemmer det).
> 3) - Jeg lavede i morges dette lille program for at teste om jeg
overhovedet
> kan finde ud af C++. Min opgave gik ud på at lave et lille
program
> der oversetter et binært tal til en synlig "8-bit" blok (til f.eks
> display
> af punkterne i en 8 bits blok:
>
> // program starter her------------------------------------------
> #include<iostream.h>
> int doof(1),baffle(0);
>
> // initializing b1 - b8 with the value 0 (in order to reset the bits)
>
> int b1(0),b2(0),b3(0),b4(0),b5(0),b6(0),b7(0),b8(0);
> int main (void)
> {
> do {
> baffle=0;
> b1=0;b2=0;b3=0;b4=0;b5=0;b6=0;b7=0;b8=0;
skriv typen (int) på variable - selvom det ikke er påkrævet.
Det gør programmet tydeligere.
> cout << "Decimal to bit (0-255):";
> cin >> baffle;
> doof = baffle;
>
> if (baffle>=128)
Det er tydligere at skrive
if(baffle & (1 << 7))
hvor & er bitwise and
og << er skifte operation
> }
> // Program slutter her -----------------------------------------
>
> 3) fortsat......mit spørgsmål er ....der må da være en nemmere
> måde at lave overstående kode på, men de tutorials på nettet jeg
> har været igennem (dem jeg har fundet) kunne jeg ikke finde
> en forklaring på f.eks følgende problemstilling:
>
>
> spørgsmålet er....hvordan kan jeg effektivisere min c++ rutine
> med bedre kode? Jeg kunne bruge nogle forslag til overstående.
En umiddelbar løsning, som ikke ligger langt fra din er
#include <iostream>
using namespace std;
int main(void)
{
unsigned char baffle = 176;
for(int bit = 7; bit >= 0; --bit) {
cout << ((baffle & (1 << bit)) ? '1' : '0');
}
cout << endl;
return 0;
}
En lidt kortere og direkte måde er at bruge template klassen "std::bitset"
#include <iostream>
#include <bitset>
int main(void)
{
unsigned char baffle = 176;
std::cout << std::bitset<8>(baffle) << std::endl;
}
Venlig hilsen
Mogens Hansen