[TUT] Zašto ne koristiti strlen u iteraciji

Započeo Slay, Mart 05, 2013, 16:51:28 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 2 gostiju pregledaju ovu temu.

Ovo je mali tutorial samo zato jer vidim puno vas radi ovu grešku pa ću vam pojasniti zašto ne koristiti strlen u petljama u, pogotovo for petlji u iteraciji.

Primjer:

for(Početno stanje; Uvjet; Izraz)

Početno stanje - Od kuda se petlja počinje vrtiti
Uvjet - Iteracija, do kada će se petlja vrtiti
Izraz - Povečanje, smanjenje, najčešće inkrement i dekrement

Primjer u praksi:

new niz[] = "AbCdEfG";
for(new i = (0); i < strlen(niz); ++ i) // POREÅ NO!


Zašto:

new string[128] = "\0"; // stvaramo prazni string
format(string, (sizeof string), "ABCDEF"); // zapisujemo u string ABCDEF
printf("sizeof = %d", (sizeof string)); // Return 128
printf("strlen = %d", strlen(string)); Return 5


strlen prebrojava svako polje, što bi rezultiralo u petljama da svaku iteraciju prebrojava polja ispočetka, što nepotrebno usporava petlju, ispravan način bi bio da jednom prebrojite polja tj. spremite ih u varijablu koja nije u iteraciji kako bi u iteraciji pristupila petlja već postojećoj varijabli u glavnoj memoriji.

primjer u praksi:


new nesto[] = "AAAAAAAAAA";
for(new i = (0), duzina = strlen(nesto); i < duzina; ++ i) // Ispravno!


ili

new nesto[] = "AAAAAAAA", duzina = strlen(nesto);
for(new i = (0); i < duzina; ++ i) // Ispravno!


Isto je i sa drugim petljama:

while(uvjet)

primjer u praksi:


new i = (0), string[] = "AAAAAA";
while(i < strlen(string)) // krivo!


Razlog je isti kao i sa for petljom, svaku iteraciju će prebrojavati string, a to je ne potrebno tj. može doči do lagga

new string[] = "aaaaaaa", i = (0), duzina = strlen(string);
while(i < duzina) // ispravno!


do while

primjer u praksi:


new nesto[] = "AAAAA";
do
{
      ++ i;
}
while(i < strlen(nesto)); // krivo!


new nesto[] = "AAAAA", duzina = strlen(nesto);
do
{
      ++ i;
}
while(i < nesto); // Ispravno!
Poslednja Izmena: Mart 05, 2013, 16:54:28 POSLE PODNE od Slay_
Kristijan Stipić


Citat: Streetboy poslato Mart 05, 2013, 22:36:07 POSLE PODNE
Dobro objasnjen tutorial,no ipak sumnjam da ce ovo svi razumjeti :D

Pa Å¡ta im ima biti nejasno, objasnio sam samo da kada koriste strlen, ne koriste u iteraciji
Kristijan Stipić

Dobar tut( sad mi reci sta ovo znači)
Å ala mala xD
Pohvale
Mislim dakle Boze
Na Zari sve i svasta

dobar tutorial...povhale ;)
Mnogi me znaju, a mnogi misle da znaju.