"Zmienne i Stałe" : Kiedy ich urzyć ?

marcinmx

Użytkownik
Dołączył
Lipiec 1, 2004
Posty
98
Witam !
Niedawno zaczolem przygode z jezykiem c++ (ansi), zakupilem ksiazke "C++ dla karzdego", ksiazka naprawde spoko ale jak dla osoby takiej jak ja w wieku 15 lat zagadnienia z matematyki dwujkowo i szesnastkowo to jest dosc trudne, juz siedze nad tym drugi dzien ale juz zaczynam lapac o co chodzi z tymi kolumnami itp juz potrafie napisac prosty ze tak powiem programik, lecz nie potrafi on nic zbyt wielkiego zrobic tylko wyswietlac napisy za pomoca cout, ale zawsze cos, i doszlem do 3 rozdzialu "Zmienne i Stałe" Tu mam dosc duze problemy, juz wiem w maire dobrze po co jest pamiec i na jakiej zasadzie dziala mniej wiecej, gdyz wczesniej wiedzalem tyle ze jest oan potrzebna do dzialania programow, ze zostaja tam ladowene jakis dane z programu aby program mogl sie poprawnie uruchomic, teraz moja wiedza na ten temat jest szersza, z czego sie ciesze. No wlasnie chodzi mi o ten trzeci rozdzial zmienne i stałe, czyli jak mam rozumeic np typem zmiennej jest int (int main {kod}) czyli ten int (integret czy jakos tak) jest potrzebne aby program mogl zaladowac sie w pamieci, i u mnie wykorzysta on 4 bajty, sa jakie takie typy jak shrt, long, cher bool double i float, przynajmneij ja znam jak narazie tylko tyle. No ale kiedy mam uzyc innej np typu long cher itp ? Dlaczego przy main jest int a nie cos innego ? W jakich przypadkach mam urzywac roznych typow zmiennych i od czego to bedzie zalezec ? Kiedy mam wiedziec aby urzyc zmeinenj o wartosci 1 bajt a kiedy o wartosci 4 bajty ? Czyli to są zmienne a o co chodzi ze stałymi ???


Marcin
 

Ivim

Użytkownik
Dołączył
Sierpień 14, 2004
Posty
11
luzik

czesc ja mam 13 lat i jakos wszystko zajazylem przyjdzie z czasem
<


a tu odp. na twoje pytanko
smile.gif



zmiennej CHAR uzwammy kiedy chcemy aby zawierala jakoms literka (podajze tylko jednom)

zmiennej INT gdy chcemy aby zawierala jakoms liczbe calkowito(jest ogranicza ale mozna wielkie liczby w nim wpakowac
smile.gif
dokladnie chyba 7 znakow )

zmiennej SHORT uzywa sie podajze tagze do cyfr tyle ze mniejsze wielkosc(podajze 2 znaki)

tyle wiem
smile.gif

narazie
 
G

Guest

Gość
Originally posted by marcinfb
Witam !
Niedawno zaczolem przygode z jezykiem c++ (ansi), zakupilem ksiazke "C++ dla karzdego", ksiazka naprawde spoko ale jak dla osoby takiej jak ja w wieku 15 lat zagadnienia z matematyki dwujkowo i szesnastkowo to jest dosc trudne, juz siedze nad tym drugi dzien ale juz zaczynam lapac o co chodzi z tymi kolumnami itp juz potrafie napisac prosty ze tak powiem programik, lecz nie potrafi on nic zbyt wielkiego zrobic tylko wyswietlac napisy za pomoca cout, ale zawsze cos, i doszlem do 3 rozdzialu "Zmienne i Stałe" Tu mam dosc duze problemy, juz wiem w maire dobrze po co jest pamiec i na jakiej zasadzie dziala mniej wiecej, gdyz wczesniej wiedzalem tyle ze jest oan potrzebna do dzialania programow, ze zostaja tam ladowene jakis dane z programu aby program mogl sie poprawnie uruchomic, teraz moja wiedza na ten temat jest szersza, z czego sie ciesze. No wlasnie chodzi mi o ten trzeci rozdzial zmienne i stałe, czyli jak mam rozumeic np typem zmiennej jest int (int main {kod}) czyli ten int (integret czy jakos tak) jest potrzebne aby program mogl zaladowac sie w pamieci, i u mnie wykorzysta on 4 bajty, sa jakie takie typy jak shrt, long, cher bool double i float, przynajmneij ja znam jak narazie tylko tyle. No ale kiedy mam uzyc innej np typu long cher itp ? Dlaczego przy main jest int a nie cos innego ? W jakich przypadkach mam urzywac roznych typow zmiennych i od czego to bedzie zalezec ? Kiedy mam wiedziec aby urzyc zmeinenj o wartosci 1 bajt a kiedy o wartosci 4 bajty ? Czyli to są zmienne a o co chodzi ze stałymi ???


Marcin
1) nie ma czegos takiego jak "shrt" i "cher".
2) nie "int main { kod }" tylko "int main() { kod; return(int) }"
3) long i short sa 'przedrostkami' dla zmiennych liczbowych, czyli np.:

short int - 2 B
long int - 4 B
int - 2/4 B (w zaleznosci od procesora. w 32-bitowych int ma 4 bajty.)
bool - 2 b (oznacza tylko dwie wartosci: TRUE lub FALSE [0 lub !=0])
double, float - 8 B (liczby zmienno przecinkowe)
char - 1 B (jeden znak lub liczba w zakresie -127 do +127 [signed] lub od 0 do 255 [unsigned])

Mozesz tworzyc tez tablice (indeksy), ktore zawieraja wiecej okreslonych zmiennych oraz tworzyc wlasne typy (typedef). Przykladowo mozesz stworzyc tablice znakow:

char tablica[1024];

i bedzie ona mogla w tym przypadku pomiescic do 1024 znakow (1024 * 1B == 1 KB). Mozesz tez tworzyc tablice liczbowe.

Jesli uzywasz funkcji, to ich typ nie oznacza ich wielkosci, tylko typ zmiennej, jaka beda zwracaly.

Przy funkcji main mozesz uzywac dowolnego typu. int jest standardowym typem funkcji main. Jesli Twoj program ma zwracac do systemu inny typ zmiennej to typ funkcji main() tez musi byc inny.

W programie uzywasz takich zmiennych, jakie sa Ci potrzebne.

Zmienne i stale roznia sie tym, ze stale sa deklarowane i inicjowane jednoczesnie i nie mozna ich juz zmienic w trakcie dzialania programu. Z reszta to chyba logiczne, nie?

PS: z Twoich pytan wynika, ze cos niezbyt dokladnie czytales ta ksiazke.
 

marcinmx

Użytkownik
Dołączył
Lipiec 1, 2004
Posty
98
1. Hmm chodzilo o short i char
<
Pomyłka.
2. Hmm zapomnialem o (), a propo do return dlaczego return (int); ?
Ja w ksiazce jak narazie mialem return 0; ale do czego sluzy to return ?
W konsolach musze urzywac jeszcze:
int x;
std::cin >> x;
Dlaczego, co one spelniaja, jak ich nie urzyje na koncu przet return to wtedy okienko sie szybko zamyka ;(, uzywam Dev4, mam mozliwosc urzycia takrze VisualC++ 6 , ksiazka jest oprata na tych dwuch komplikatorach bardziej na vivual ale ja wole dev, chjociaz nie mam pojecia dlaczego
<

3. Tak znam jakie wartosci maja te typy zmiennych, wiem ze zmeinnych można urzyć do tego aby np obliczyuć pole trójkąta obwód itp. Ale do czego jescze ? Np w kodzie ktory mailem w ksiazce bylo

unsigned short x;
...

zmienilem unsigned na signed czyli ze znakiem nadal bylo to samo program sie uruchmił, potem zmienilem short na long i terz bylo wszystko ok, a wiec po co mi to ?w ksiazce mam opsiane ze znakiem i bez znakyu ale nie pisze do czego sie je wykorzystuje i kiedy ? nie mam pojecia takrze nie wiem kiedy np zamiast tego short mam urzyc np char lub long ? wiem ze te short itp sa wukorzystuwane do tego aby zaladowac sie w pameici, ale nei mam pojecia do czego sa te znaki i bez znaków, x to oczywisice nazwa a sredink jako koniec deklarowania zmiennej, reszte w zmiennych jak narazie rozumiem, ale nie wiem o co chodzi z tymi ze znakami i bez znaków ? aha i keidy mam urzyć np short a kiedy long ? skad mam wiedziec keidy program napsiany wymaga aby zaladowac wiecej bajtów do pamieci ? jest jakas zasada moze ? aha i co do short int i long int jak to ? dlaczego zostalo dodane int ? i np dlaczego na smaym poczatku jest int main() dlazcego akurat int ? I nastepnie True lub False 1 lub 0 kiedy mam to przypisywać ? chodzi tu o system dwujkowy, binarny ? kiedy mam go wykorzystac, a kiedy szesnastkowy ?

" -127 do +127 [signed] lub od 0 do 255 [unsigned])"
wiec wartosci dla tych zmeinych ze znakiem to od - 127 do + 127, ale keidy mam wiedziec kiedy ich urzyć i do czego te np 127 sluzy ?

"Mozesz tworzyc tez tablice (indeksy), ktore zawieraja wiecej okreslonych zmiennych oraz tworzyc wlasne typy (typedef). Przykladowo mozesz stworzyc tablice znakow:
char tablica[1024]; "
Te type def bede mail za 3 kartki do przodu
<
Hmm jzu nie rozumeim nic chyab ?! char tablica[1024]; char to jest typ zmiennej a gdzie znak lub bez znaku ? tablica to nazwa ? [1024] czyli moge tam urzyc do 1024 znakow np wartosci ze width=5 height=8 i potem urzyc do czegos obliczania, to o to chodzi z tymi zmiennymi ? ale wtedy nasuwa sie pytanie po co są w nich bajty ? moze one nie sa wogule potzrebne ?
hmmm juz cos lapie chyba tylko neiw iem czy poprawnie i w dobra strone
<


"W programie uzywasz takich zmiennych, jakie sa Ci potrzebne. "
Ale skad mam to wiedziec musze wczesneij zalozyc ilu znakow bede potzrbowal, a np jezli jest - 127 to ilu znakow moge urzyc, - + 127 jak to z tym jest ?

Czytalem dokladnie, napewno tylko popelnilem tych kilak bledow z cher > char ale nie przyzwyczailem sie z tym, ale to samo wejdze do glowy jak bede sie uczyc to zapamieam bo chyab jest bez sensu ucznie sie regolek i ile np kazda zmienna ma bajtow, przynajmniej ja sie szybciej naucze jak bede probowac samemu psiac cos na onsole, a propo zaniedbałem moze troche wstep przeczytalem tylko dwa razy bo zaczelo mnie wkurzac np opis programowania zorietowanego obiektowo, gdize pisalo ze lepiej je poznamy w chyba 16 rozdziale, a rezte czytalem 4 , 5 razy, bo nie rozumialem wszystkiego, sczeolnie trudne bylo dla mnie system dwujkowy i szesnastkowy ale sie nauczylem i juz spokojnie potrawie zmaienic licznbe z systemuy dziesietnego na dwojkowy lub szesnastkowy, lub z 16 na 10 i na 2
<
Juz 3 dzien sie mecze nad zmeinnymi, a moglbys napsiac czym roznia sie stałe od zmeinnych ?

Prosze o odp
Marcin
 

Ivim

Użytkownik
Dołączył
Sierpień 14, 2004
Posty
11
więc tak retourn 0; to zakonczenie programu
cin >> x; to popranie znakow z klawiatury i zapisanie ich w zmiennej x
a z tymi typami to sie uzywa inny ch poniewarz:

jak wiesz ze zmienna bedzie miala malo znakow to po co robic jebitnom zmiennom, to tylko pamiec wieksza programu jest...
 

marcinmx

Użytkownik
Dołączył
Lipiec 1, 2004
Posty
98
Hmm ivan troche nie zrozumielem co napisales !?

RAVEN moglbys napisac odp, prosze ?!
Aha juz mneij wiecej wiem o co chodzi ze zmiennymi, napisze i jak zle cos to prosze popraw i odp na powyzszy moj post, nadal nie rozumeim o co chodzi z tymi signe albo z unsigned, np jezeli twozymy zmienna
unsigned short int ma ona wartosc od 0 do ~65 000 czyli np jak
width=1233 a height=333 age=34 to to wszystko sie sumuje i jezli to nie przekroczy tej wartosci zaokraglonych 65 tys to zmienna undigned short jest w porzadku, a jezeli przekroczy to trzreba zmienic na ta o wyzszej wartosci, ale w ksiazce np mialem takie cos ze np litera a ma wartosc 97 pod wzgledm ASCII, czyli wartosci literek liczyc czy nie, chyba nie ? bo mam tu mala niescislosc ?!

Doszedlem juz do typedef
<
a np jak typ zmiennej ma wartosc od - 32 768 do 32 768 czyli jakich wtedy wartosci moge urzyc ?


Prosze o najlepeij szybka odp jak mozna


Marcin
 
G

Guest

Gość
Originally posted by Ivim+--><div class='quotetop'>CYTAT(Ivim)</div>
więc tak retourn 0; to zakonczenie programu
cin >> x; to popranie znakow z klawiatury i zapisanie ich w zmiennej x
a z tymi typami to sie uzywa inny ch poniewarz:

jak wiesz ze zmienna bedzie miala malo znakow to po co robic jebitnom zmiennom, to tylko pamiec wieksza programu jest...[/b]

return to nie jest zakonczenie programu tylko powrot z funkcji i zwrocenie wartosci do programu lub systemu.

<!--QuoteBegin-marcinfb

RAVEN moglbys napisac odp, prosze ?!
Aha juz mneij wiecej wiem o co chodzi ze zmiennymi, napisze i jak zle cos to prosze popraw i odp na powyzszy moj post, nadal nie rozumeim o co chodzi z tymi signe albo z unsigned, np jezeli twozymy zmienna
unsigned short int ma ona wartosc od 0 do ~65 000 czyli np jak
width=1233 a height=333 age=34 to to wszystko sie sumuje i jezli to nie przekroczy tej wartosci zaokraglonych 65 tys to zmienna undigned short jest w porzadku, a jezeli przekroczy to trzreba zmienic na ta o wyzszej wartosci, ale w ksiazce np mialem takie cos ze np litera a ma wartosc 97 pod wzgledm ASCII, czyli wartosci literek liczyc czy nie, chyba nie ? bo mam tu mala niescislosc ?!

Doszedlem juz do typedef a np jak typ zmiennej ma wartosc od - 32 768 do 32 768 czyli jakich wtedy wartosci moge urzyc ?


Prosze o najlepeij szybka odp jak mozna


Marcin
signed oznacza zmienne ze znakiem (czyli moga byc ujemne), a unsigned bez znaku (same dodatnie).
Nie bardzo rozumiem o co Ci chodzi z tymi wartosciami 'width, height, age', ale w kazdym razie jesli chcesz miec takie zmienne to deklarujesz je jako osobne wartosci, np.:
unsigned short width = 1233;
unsigned short height = 333;
unsigned short age = 34;

Kazda z tych zmiennych moze pomiescic wartosci od 0 do 65535, wiec jak widzisz kazda sie miesci.
Jesli przekroczysz ta wartosc to licznik zacznie leciec od poczatku, czyli np.:
jesli wartosc zmiennej unsigned short osiagnie wartosc 65540 to licznik sie 'przekreci' i zacznie liczyc od poczatku, czyli wynikiem bedzie 5.
Jesli wartosc zmiennej signed short osiagnie np. wartosc 32770 (przekroczy o 3) to jej wartoscia bedzie -32765.

Znak "a" ma wartosc 97 w tablicy kodow ASCII, a znaki sa przechowywane w zmiennych char (1 bajt), ktora moze pomiescic wartosci od 0 do 255 (unsigned) lub od -128 do +127 (signed). Czyli dokladnie tak samo jak tablica ASCII. Jesli bedziesz chcial przeznac zmiennej liczbowej wartosc jakiegos znaku, to bedzie to wartosc jego kodu ASCII.

Wartosci zmiennych uzywasz jakich chcesz. Nie rozumiem pytania.
 

marcinmx

Użytkownik
Dołączył
Lipiec 1, 2004
Posty
98
return to nie jest zakonczenie programu tylko powrot z funkcji i zwrocenie wartosci do programu lub systemu.[/b]
Hmm, nie rozumiem tego, czyli to jest konieczna komenda return 0; , o zawroceniu wartosci czytalem w ksiazce ze np jak wartsc w komplikatorze damy ~37 000 a dopuszczalna to wlasnie 37 000 to jezli dodamy o jedno wiecej to w tych unsigned sie zacznie od nowa najpierw od 0 a potem znowu jak sie doda jedno to bedzie jeden itd. a przy zmiennych ze zankami np wartosc od - 100 do 100 gdy wartosc 100 zostanei przekroczona bedize - 101 i nastepnei - 100 itd, ale co to ma do return ?


Tak ale jezli przekroczy to wartosc to zadziala jakos zle na program ?
A jak potem idze na minus to jak to wartosci - hmm z tym minusem to nie rozumiem nie wiem co o tym myslec, moze ma dojsc do zera ale to bedzie mneij wiecej co unsigned bo to jest przecierz polowka ?


Czy no jak mam wartosci
unfigned short int jeden, dwa, trzy;
jeden = 1
dwa=2
trzy=a

Czyli wartosc a liczy jako 97 tak czyli razem wychodzi ze wartosc bedzie wynosic 100 ? tak ?a cz sie liczny np tylko to co jest w "?" czy inne literki terz maja znaczenie w kodzie zrodlowym ?
 
G

Guest

Gość
Originally posted by marcinfb
<div class='quotetop'>CYTAT
return to nie jest zakonczenie programu tylko powrot z funkcji i zwrocenie wartosci do programu lub systemu.
Hmm, nie rozumiem tego, czyli to jest konieczna komenda return 0;[/b][/quote]
NIE. Jesli funkcja nie jest typu void to powinna zwracac jakas wartosc takiego typu, jakiego ona jest. Jesli masz np. 'int funkcja() {}' to powinna zwracac wartosc int, jesli masz 'char *funkcja() {}' to powinna zwracac wskaznik do zmiennej char.

, o zawroceniu wartosci czytalem w ksiazce ze np jak wartsc w komplikatorze damy ~37 000 a dopuszczalna to wlasnie 37 000 to jezli dodamy o jedno wiecej to w tych unsigned sie zacznie od nowa najpierw od 0 a potem znowu jak sie doda jedno to bedzie jeden itd.[/b]
To nie ma nic wspolnego ze zwracaniem wartosci.

a przy zmiennych ze zankami np wartosc od - 100 do 100 gdy wartosc 100 zostanei przekroczona bedize - 101 i nastepnei - 100 itd, ale co to ma do return ?[/b]
NIC!


Tak ale jezli przekroczy to wartosc to zadziala jakos zle na program ?[/b]
Domysl sie.
A jak potem idze na minus to jak to wartosci - hmm z tym minusem to nie rozumiem nie wiem co o tym myslec, moze ma dojsc do zera ale to bedzie mneij wiecej co unsigned bo to jest przecierz polowka ?[/b]
Sorry, ale juz trace powoli cierpliwosc. Zadajesz naprawde tepe pytania, na ktore sam mozesz znalezc odpowiedz, ale oczywiscie, jak przystalo na to forum, masz wszystko w dupie i czekasz na gotowe. Obejrzyj sobie przykladowe zrodla z tej ksiazki, poprobuj sam cos pisac, z roznymi zmiennymi, zmieniac je, itd. Wtedy sam zobaczysz co sie bedzie dzialo.


Czy no jak mam wartosci
unfigned short int jeden, dwa, trzy;
jeden = 1
dwa=2
trzy=a

Czyli wartosc a liczy jako 97 tak czyli razem wychodzi ze wartosc bedzie wynosic 100 ? tak ?a cz sie liczny np tylko to co jest w "?" czy inne literki terz maja znaczenie w kodzie zrodlowym ?[/b]
Po pierwsze: CZYTAJ WYZEJ.
Po drugie: zapis 'trzy=a' oznacza przyznanie zmiennej 'trzy' wartosci zmiennej 'a', ktore nie istnieje. Jesli chcesz cos takiego zrobic to musisz podac znak w '', np.: trzy='a';
Poza tym, zacznij (auto cenzura) sam cos robic. Nawet nie pomyslales o tym, zeby napisac te ****** 10 linijek kodu i sprawdzic co sie stanie...
 

NETKOJI

Były Moderator
Dołączył
Sierpień 31, 2004
Posty
113
Teraz to nasz kolega się już zupełnie do C++ zniechęci
<

Ale fakt... pytania są dość podstawowe i podejrzewam, że na większość z nich odpowiedź znajdziesz w książce.
Jeśli jest ona napisana językiem dla Ciebie niezrozumiałym to lepiej poszukaj w internecie (Google Twoim przyjacielem) jakiegoś kursu napisanego przez "zwykłego" człowieka. Przeważnie używany tam język jest na tyle prosty by móc cokolwiek zrozumieć
smile.gif
 

marcinmx

Użytkownik
Dołączył
Lipiec 1, 2004
Posty
98
pozno odpisuje ale juz dawno zrozumialem o co chodzi, a nie mam tego w dupie tylko nie rozumialem o co chodzi bo niektoreteksty w ksiazce sa za mocno zamotane! ale juz wiem jak ich urzyć, kolega mi wytłumaczył
<
 
Do góry Bottom