Pretraga

Pritisnite Enter za pretragu ili Escape za zatvaranje

Zaključano

[TUT] Zašto ne koristiti strlen u iteraciji

Započeo Slay
pre 12 godina
1,971
pregleda
7
postova
Ova tema je zaključana. Samo moderatori i administratori mogu odgovarati.
taft
Underboss
pre 12 godina
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!
STREETBOY
Kingpin
pre 12 godina
Dobro objasnjen tutorial,no ipak sumnjam da ce ovo svi razumjeti 😄
taft
Underboss
pre 12 godina
Streetboy wrote on March 5, 2013, 9:36 pm:
Dobro objasnjen tutorial,no ipak sumnjam da ce ovo svi razumjeti 😄


Pa šta im ima biti nejasno, objasnio sam samo da kada koriste strlen, ne koriste u iteraciji
Champa22
Underboss
pre 12 godina
Dobar tut( sad mi reci sta ovo znači)
Å ala mala xD
Pohvale
Tomek
Hustler
pre 12 godina
dobar tutorial...povhale 😉
aleluja
Godfather
pre 12 godina
Quote from March 12, 2013, 10:32 pm:
Dobar tut( sad mi reci sta ovo znači)
Å ala mala xD
Pohvale


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




Stvarno vrhunski tutorial, pohvale.
mile12345
Underboss
pre 12 godina
Lijepo lijepo 😄

Morate biti prijavljeni da biste odgovorili na ovu temu.

Prijava