Balkan SA:MP

San Andreas Multiplayer - www.sa-mp.com => Tutorijali u vezi SA-MPa => Temu započeo: Slay poslato Mart 05, 2013, 16:51:28 POSLE PODNE

Naslov: [TUT] Zašto ne koristiti strlen u iteraciji
Poruka od: Slay poslato Mart 05, 2013, 16:51:28 POSLE PODNE
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!
Naslov: Odg: [TUT] Zašto ne koristiti strlen u iteraciji
Poruka od: Streetboy poslato Mart 05, 2013, 22:36:07 POSLE PODNE
Dobro objasnjen tutorial,no ipak sumnjam da ce ovo svi razumjeti :D
Naslov: Odg: [TUT] Zašto ne koristiti strlen u iteraciji
Poruka od: Slay poslato Mart 05, 2013, 22:57:09 POSLE PODNE
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
Naslov: Odg: [TUT] Zašto ne koristiti strlen u iteraciji
Poruka od: ChampaWasTaken poslato Mart 12, 2013, 23:32:38 POSLE PODNE
Dobar tut( sad mi reci sta ovo znači)
Å ala mala xD
Pohvale
Naslov: Odg: [TUT] Zašto ne koristiti strlen u iteraciji
Poruka od: Tomek poslato Mart 13, 2013, 02:19:04 PRE PODNE
dobar tutorial...povhale ;)
Naslov: Odg: [TUT] Zašto ne koristiti strlen u iteraciji
Poruka od: TiXoR_ poslato Mart 13, 2013, 13:28:24 POSLE PODNE
Citat: [iLife]Champa poslato Mart 12, 2013, 23:32:38 POSLE PODNE
Dobar tut( sad mi reci sta ovo znači)
Å ala mala xD
Pohvale

http://wiki.sa-mp.com/wiki/Strlen




Stvarno vrhunski tutorial, pohvale.
Naslov: Odg: [TUT] Zašto ne koristiti strlen u iteraciji
Poruka od: 99Mile99 poslato Mart 13, 2013, 14:21:35 POSLE PODNE
Lijepo lijepo :D