C++ & C# Programming page
 

 

# Úvod
# Tvůrci
# C++
# C#
# Linky





Chybovat je lidské, avšak dost nepříjemné

V tomto článku hodlám napsat pár chyb, kterých se programátoři dopouštějí.

1. snad ta nejčastějši chyba, u které si kazdy programátor říká "To si to sakra nemůžeš domyslet?!"
int a // chyba, pred dalsim radkem nenasel prekladac strednik
int b;
// poznamka: pokud nekde dal v kodu zapomenu na strednik, tak to jen dokazuje, ze nadpis je spravny a pravdivy :)

2. tuto chybu udělá člověk asi jen 1x za život...
TCHAR szText[100];
switch (szText) // nelze testovat string
{
case "ahoj":
       printf("Rekl jsi ahoj!");
       break;
}

3. problém, který lze někdy vyřešit za pár vteřin a někdy za hodinu.
void Funkce()
{
      Funkce2(); // Funkce2 neni znama v tuto chvili, musi se prehodit nad deklaraci Funkce, dobre reseni jsou headery
}
void Funkce2() // a tady prekladac potesi tim, ze tuto funkci predefinovavate ;)
{
     printf("baf");
}

4. někdy víte kdy "to" napsat správně, někdy ne a prostě je nutné přeložit projekt, aby se zjistilo kde překladač "to" chce :)
RECT rect;
GetClientRect(rect); // ajaj, funkce pozaduje lpRect, neboli pointer a proto musime zapsat &rect 

5. výmluva jako "Však já mám paměti dost" zde neplatí :)
void Kresleni(HWND hWnd)
{
     PAINTSTRUCT ps;
     hdc = BeginPaint(hWnd, &ps);
     HPEN hPen;
     // nejake pouziti
     EndPaint(hWnd, &ps);
     // konec funkce ale nerusi se hPen, takze za chvili se zahlti pamet
}   // problem je, ze na toto prekladac neupozorni, proto je dobre si to hlidat a rusit vse co vytvorime

6. docela dost začátečníků si myslí, že když má program v konzolovém režimu, tak může zapnout DOS a pustit svůj program. Bohužel je to omyl, konzolová aplikace je v podstatě emulace, už jen z toho důvodu, že velikosti datových typů jsou jiné.

7. je rozdíl mezi přiřazením a porovnáním:
int i = 10; // prirazeni
if(i = 10) // toto uz neni prirazeni, porovnani je ==
{
     Beep(100, 100); // muj oblibeny testovaci prostredek, pipani PC speakeru je proste old-school ;)
}

8. Zapomínáme na nulu?
TCHAR szText[10];
szText[10] = "a"; // delka tohoto pole je 0 - 9, tudiz na 10ku jiz nemuzeme zapisovat

9. A zapomínáme na ni podruhé...
TCHAR szText[10];
szText[9] = "a"; // sz znamena String Zero ending (koncici nulou)
 // = nemuzeme zapisovat ani na 9tou pozici, kde musi zustat binarni nula
// bez ni by prekladac nepoznal konec promenne

10. smyčky jsou zrádné
int a = 10;
while(a != 20)
{
     sleep(5); // cekani 5ms
}//tak tady zustaneme dlouho, "int a" se totiz nikdy nezmeni
// programator zde zrejme zapomel na "a++" a podobne.
// Jinak by bylo lepsi pouzit prikaz "for"

11. a překlepy ve smyčkách také...
for(int i=0; i<10; i--) // zde chtel programator 10x provest smycku, avsak se preklepl a misto i++ udelal i--
{
     // kvuli tomu se i bude stale zmensovat do minusu a kdo vi kdy to zkonci
}

Další seznam zajímavých chyb a překlepů čekám že přinesu v dalším díle. Předpokládám totiž, že jich ještě pár udělám :)

Ještě poznámka k zápisu: uvedené zdrojové kódy nemají funkci, jsou pouze demonstrační. Diakritika ve zdrojovém kódu chybí záměrně, není nic horšího než dostat zdroják s češtinou a pak ho celý přepisovat, protože si s ní překladač nedokáže úplně poradit.



Správce sekce: Dejvino



14.2 2005

C++: pridano par odkazu na clanky o OpenGL, IRC, POP3 a BMP
14.8 2004

C++: přidán klient pro Internet Relay Chat (IRC)
11.7 2004

C++: opravil jsem zdrojak WebServeru, byla tam navic jedna funkce kterou jsem nepridal a mnoho zacatecniku by si s tim nemuselo vedet rady...
27.6 2004

Vytvořen IRC kanál #c-prog na serveru Quakenet
10.6 2004

C++: přidán program WebServer, stojí za prohlédnutí!
5.6 2004

C++: přidán článek o CheckBoxu
29.5 2004

C++: přidán program WinSock Mail
28.5 2004

C#: přidán program DNStoIP
Vaše IP je 54.92.170.142
Stránka byla načtena za 0.01519 sekund.