Kilka pytań odnośnie switchy, tablic...
sebul
20.02.2011
Witam. Mam parę pytań, na które nie jestem pewien odpowiedzi, a i wujek gogle nic nie powiedział, a przynajmniej nie tak dokładnie. To może po kolei
1. Na jakiej zasadzie działa switch? Może podam to na przykładzie
Czy
oznacza to samo co
czy
?? Różnica jest zasadnicza, więc dlatego pytam.
2. Jeśli do tablicy, np. "tab[3]" przypiszemy 1, czyli
to będzie to oznaczać to samo co
?? Czy tylko do pierwszej przypisze 1, a do reszty 0?
3. No i jeszcze jedno. Często w jakichś pluginach różnie zapisuje się jakieś funkcje, raz jest z "public", raz z "stock", a raz w ogóle nic nie ma, czyli od razu jest nazwa funkcji. Stock wiem na jakiej zasadzie działa (gdy nie jest użyty, to tak jakby w ogóle go nie było), ale skąd mogę wiedzieć jak najlepiej zapisać daną funkcję? Ogólnie kiedy używać "stock", kiedy "public", a kiedy nic? Chodzi mi, np. o takie coś
No i skąd wywnioskować jak najlepiej zapisać daną funkcję?
1. Na jakiej zasadzie działa switch? Może podam to na przykładzie
Czy
switch(cos) {
case 1: cos1
case 2: cos2
case 3: cos3
}
oznacza to samo co
if(cos == 1) cos1
else if(cos == 2) cos2
else if(cos == 3) cos3
czy
if(cos == 1) cos1
if(cos == 2) cos2
if(cos == 3) cos3
?? Różnica jest zasadnicza, więc dlatego pytam.
2. Jeśli do tablicy, np. "tab[3]" przypiszemy 1, czyli
tab[3] = 1
to będzie to oznaczać to samo co
tab[0] = 1
tab[1] = 1
tab[2] = 1
?? Czy tylko do pierwszej przypisze 1, a do reszty 0?
3. No i jeszcze jedno. Często w jakichś pluginach różnie zapisuje się jakieś funkcje, raz jest z "public", raz z "stock", a raz w ogóle nic nie ma, czyli od razu jest nazwa funkcji. Stock wiem na jakiej zasadzie działa (gdy nie jest użyty, to tak jakby w ogóle go nie było), ale skąd mogę wiedzieć jak najlepiej zapisać daną funkcję? Ogólnie kiedy używać "stock", kiedy "public", a kiedy nic? Chodzi mi, np. o takie coś
public funkcja() {
// kod
}
stock funkcja() {
// kod
}
funkcja() {
// kod
}
No i skąd wywnioskować jak najlepiej zapisać daną funkcję?
FreZZy
20.02.2011
1. switch jest jak else if, w PAWNie przynajmniej bo w Cpp sie to komplikuje - jest jeszcze instrukcja break;
2. Jak przypisujesz wartość tablicy, to oznacza to adres jej - czyli zerowy element
to to samo co
reszta jest pusta
3. nie znam sie tak na PAWN'ie ,nie pomoge ci w tym :C
2. Jak przypisujesz wartość tablicy, to oznacza to adres jej - czyli zerowy element
to to samo co
tab[0] = 1
reszta jest pusta
3. nie znam sie tak na PAWN'ie ,nie pomoge ci w tym :C
R3X
20.02.2011
Przypisanie wszystkim elementom wartości jest dostępne tylko przy inicjalizacji:

publiczne funkcje są dostępne z zewnątrz pluginu, a zwykłe (od razu nazwa) lub stocki są tylko jego; dostęp zewnętrzny jest potrzebny AMXXowi przy wywoływaniu forwardów, więc wszystkie funkcje typu register_* potrzebują funkcji publicznych, tzn "callbacki"; taski także są zrealizowane na forwardach, więc przypisujesz im funkcje publiczne;
Ogólnie:
jeśli sam wywołujesz funkcję: stock lub zwykła
jeśli pozwalasz AMXXowi na jej wywołanie: public
new Tablica[10] = {1, ...};a potem to już tylko pętle

publiczne funkcje są dostępne z zewnątrz pluginu, a zwykłe (od razu nazwa) lub stocki są tylko jego; dostęp zewnętrzny jest potrzebny AMXXowi przy wywoływaniu forwardów, więc wszystkie funkcje typu register_* potrzebują funkcji publicznych, tzn "callbacki"; taski także są zrealizowane na forwardach, więc przypisujesz im funkcje publiczne;
Ogólnie:
jeśli sam wywołujesz funkcję: stock lub zwykła
jeśli pozwalasz AMXXowi na jej wywołanie: public
sebul
20.02.2011
A jest jakaś różnica w przeciążeniu serwera? Takie mało ważne pytanie, ale warto wiedzieć na przyszłość ;]Ogólnie:
jeśli sam wywołujesz funkcję: stock lub zwykła
jeśli pozwalasz AMXXowi na jej wywołanie: public
FreZZy
21.02.2011
a jeszcze jedno
jak jest taki zapis:
tablica1[5] = {0}
to wtedy wszystkie elementy mają wartość 0 ?
jak jest taki zapis:
tablica1[5] = {0}
to wtedy wszystkie elementy mają wartość 0 ?
R3X
21.02.2011
to co zaraz napiszę też będzie na necie:
nie, tylko pierwszytablica1[5] = {0}
to wtedy wszystkie elementy mają wartość 0 ?
sebul
21.02.2011
Sory, ale jak widać C/Tablice - Wikibooks, biblioteka wolnych podręczników tutaj jest właśnie napisane, że takie coś zeruje całą tablicę, zresztą chyba nie tylko tam, bo gdzieś jeszcze widziałem, ale teraz tego nie znajdę tak szybko. No ale skoro to wał, co wypisują na necie, to dobrze wiedzieć.
Użytkownik sebul edytował ten post 21.02.2011 13:17
Użytkownik sebul edytował ten post 21.02.2011 13:17
GoldeN
21.02.2011
Z tego co mi wiadomo, to zapis:
Zrobi coś takiego:
Czyli zapis:
Nada pierwszej tablicy ([0]) wartość 0 i reszte także ustawi na 0. Czyli ile wartości w { } tym tylko początkowym nada wartość, resztę nada zera.
A teraz cytat z Symfonii C++ Grębosza, by moje słowa nie były "puste"
Użytkownik GoldeN edytował ten post 21.02.2011 16:31
tablica1[5] = {1}
Zrobi coś takiego:
tablica[0] = 1 tablica[1] = 0 tablica[2] = 0 tablica[3] = 0 tablica[4] = 0
Czyli zapis:
tablica1[5] = {0}
Nada pierwszej tablicy ([0]) wartość 0 i reszte także ustawi na 0. Czyli ile wartości w { } tym tylko początkowym nada wartość, resztę nada zera.
A teraz cytat z Symfonii C++ Grębosza, by moje słowa nie były "puste"
int t[4] = { 17,5 };
Jak widać, liczb jest tu za mało.
Inicjalizacja taka spowoduje, że żądane wartości początkowe zostaną nadane tylko tym dwóm pierwszym elementom. Elementom t[0] i t[1]. Pozostałe dwa elementy będą inicjalizowane zerami.
Użytkownik GoldeN edytował ten post 21.02.2011 16:31
R3X
21.02.2011
w C takie coś wyzeruje tablice
no dobra, to to i tak zerowanie,a kolego pytał o przypisanie wartości
tablica1[5] = {0,}w Pawnie takie:
tablica1[5] = {0,...}
no dobra, to to i tak zerowanie,a kolego pytał o przypisanie wartości
sebul
21.02.2011
Ja pytałem o przypisywanie, a o co pytał FreZZy to za niego nie odpowiem, ale chodziło mu chyba o zerowanie. Teraz chyba już całkowicie temat wyczerpany.no dobra, to to i tak zerowanie,a kolego pytał o przypisanie wartości