Diferente pentru 12-ponturi-pentru-programatorii-cc intre reviziile #10 si #18

Nu exista diferente intre titluri.

Diferente intre continut:

h1. 12 ponturi pentru programatorii C/C++
(Categoria Limbaje, autor(i) Alexandru Mosoi)
(Categoria _Limbaje de programare_, Autor _Alexandru Mosoi_)
In urmatoarele cateva randuri am sa incerc sa va arat cateva metode de a scrie.... mai bine. Cea mai mare parte este pentru programatorii C.
/* sizeof(struct bla) == 9 */
==
h3. Update
 
Se pare ca pentru ultimele versiuni ale compilatorului aceasta recomandare nu mai este valabila. Structurile de date de dimensiuni 2^k^ au tendinta de a incetini executia programului.
'Sursa 1':http://infoarena.ro/job_detail/371232
'Sursa 2':http://infoarena.ro/job_detail/371233
 
 
Pentru mai multe informatii executati consultati manualul gcc. ("info gcc").
De asemenea, e bine sa nu spargeti aceasta line de cache prea des. Uitati un exemplu:
Ignorand faptul ca $t$ nu este initializat (e doar un program de test, nici inainte nu era :D) timpul de executie scade la {$1.2$}s, Wow! Insa aveti grija sa nu o luati pe urmele lui Silviu: {$sizeof(t)$} ~= {$4$}Mb care e mult peste limita de {$1$}Mb ce se impune de obicei in concursuri (si asta daca folositi gcc). Cel mai probabil veti primi "Killed by signal 11".
h3. a
h2. Pont #6
 
h3. 6.a
{$++i$} e preferabil {$i ++$} (unde nu complica lucrurile).
{$++i$} e preferabil in locul lui {$i ++$} (unde nu complica lucrurile).
h3. b
h3. 6.b
Nu va feriti sa folositi "{$const$}" si "{$static$}". "{$const$}" chiar poate sa faca diferenta ca timp si vizibilitate.
h3. c
h3. 6.c
Utilizati si literele mari pentru anumite variabile mai importante (poate si macro-uri).
h2. Pont #8
h3. a
h3. 8.a
Folositi-va de utilitarele puse la dispozitie de sistemul de operare (linux in cazul meu). RTFM :)
* $splint$ - o versiune free a programului lint: va da foarte multe warning-uri.
* $bash$ - putin scripting
h3. b
h3. 8.b
Compilati-va sursele cu {$-W -Wall$} (tot pentru warning-uri)
h3. c
h3. 8.c
Generatorul de teste si sursa dumneavoastra trebuie sa fie doua programe diferite !
h3. d
h3. 8.d
Pentru debugging folositi {$fprintf(stderr, ...)$}. Daca se intampla sa uitati, macar nu primiti "wrong answer" din cauza unui {$printf$}.
h2. Pont #9
h3. a
h3. 9.a
== code(cpp)|int t[666];
/* toate elementele lui t vor fi -1 */
memset(t, 0xff, sizeof(t));
==
h3. b
h3. 9.b
Pentru valoarea infinit folosesc o constanta
memset(t, 0x3f, sizeof(t));
==
h3. c
h3. 9.c
Daca avem de comparat doua siruri ({$s{~1~}, s{~2~}$}) a caror lungime o stim ({$len_s{~1~}$}, respectiv {$len_s{~2~}$}) este mai rapid
== code(cpp) |strcmp(s1, s2);
==
h3. d
h3. 9.d
== code(cpp)|scanf(" %c", &ch)
==

Nu exista diferente intre securitate.

Diferente intre topic forum:

 
3674