Lekcja 4LEKCJA 4
Programy przechowują informacje jako zmienne
Wszystkie programy przedstawione do tej pory były bardzo proste. Gdy tworzone
przez Ciebie programy zaczną robić coś istotnego, to będą musiały przechowywać
podczas wykonywania różne wartości. Na przykład, program drukujący plik powinien
znać jego nazwę, a może też liczbę kopii, które chcesz wydrukować. Podczas
wykonywania programy przechowują takie informacje w pamięci komputera. Aby
korzystać z konkretnych miejsc w pamięci, programy używają zmiennych. Mówiąc
najprościej zmienna jest nazwą miejsca w pamięci, które może przechowywać
konkretną wartość. Podczas tej lekcji powiemy Ci, w jaki sposób tworzyć i
wykorzystywać zmienne w programach w C++. Po jej przerobieniu będziesz rozumiał
następujące istotne zagadnienia:
Musisz zadeklarować wszystkie zmienne, których masz zamiar używać w programie
informując kompilator o ich nazwie i typie.
Typ zmiennej określa typ wartości (np. liczba całkowita albo
zmiennoprzecinkowa), jaką może ona przechowywać, a także operacje, jakie twój
program może na niej wykonywać.
Do przypisywania wartości zmiennej służy operator przypisania C++ (oznaczany
symbolem równości).
Do wyświetlania wartości zmiennej na ekranie służy strumień wyjściowy cout.
Przy deklarowaniu zmiennych powinieneś przydzielać im nazwy znaczące, aby
program był bardziej czytelny i zrozumiały dla innych programistów.
W programach powinieneś przy użyciu komentarzy opisywać operacje, jakie
program wykonuje, co może być przydatne innym programistom. W ten sposób gdyby
ktoś inny miał modyfikować twój program, to będzie miał do dyspozycji dokładny
opis jego działania.
Przypisując zmiennej pewną wartość traktuj tę zmienną jak pudełko, w którym
umieszczasz wartość. Gdy później będziesz chciał wykorzystać tę wartość,
komputer po prostu zajrzy do pudełka.
Deklarowanie zmiennych w programach
Programy przechowują informacje w postaci zmiennych. W zależności od tego,
jakiego rodzaju wartości chcesz przechowywać, liczbę całkowitą, literę alfabetu
czy liczbę zmiennoprzecinkową, będziesz do tego używać zmiennych różnego typu.
Typ zmiennej określa typ wartości, jakie może ona przechowywać, jak również
zbiór operacji (takich jak dodawanie, mnożenie itd.), jakie program może
wykonywać na jej wartości. Większość programów pisanych w C++ korzysta ze
standardowych typów zmiennych przedstawionych w tabeli 2.
Tabela 2. Najbardziej powszechnie wykorzystywane typy zmiennych w
C++TypPrzechowywane wartości
charLiczby z zakresu od -128 do 127. Normalnie przechowuje litery alfabetu
(i inne znaki).
intLiczby z zakresu od -32 768 do 32 767
unsignedLiczby z zakresu od 0 do 65 535
longLiczby z zakresu od -2 147 483 648 do 2 147 483 647
floatLiczby z zakresu od -3.4 x 10-38 do 3.4 x 1038
doubleLiczby z zakresu od -1.7 x 10-308 do 1.7 x 10308
Zanim użyjesz jakiejś zmiennej, musisz zadeklarować ją w swoim programie. Innymi
słowy, musisz przedstawić ją kompilatorowi C++. Aby zadeklarować zmienną w
programie, musisz określić jej typ i nazwę, przez którą program będzie się
odwoływać do tej zmiennej. W tym celu za klamerką otwierającą program główny
(main) podajesz typ i nazwę zmiennej, tak jak tutaj:
typ_zmiennej nazwa_zmiennej;
Najczęściej typem zmiennej będzie jeden z typów wymienionych w tabeli 2. Nazwa
zmiennej powinna być znacząca i opisywać (na potrzeby kogoś, kto chciałby czytać
twój program) sposób jej wykorzystywania. Na przykład, twój program może używać
zmiennych nazwisko_pracownika, wiek_pracownika itd. Zwróć uwagę na średnik za
nazwą zmiennej. W C++ deklaracja zmiennej jest traktowana jako instrukcja. W
związku z tym należy umieszczać na jej końcu średnik.
Przedstawiony niżej fragment programu deklaruje trzy zmienne przy użyciu
standardowych typów int, float i long:
#include
void main (void)
{
int wynik_testu;
float zarobki;
long odl_do_Marsa;
}
Jak widzimy, ten program nie robi nic poza zadeklarowaniem trzech zmiennych.
Łatwo zauważyć, że deklaracja każdej zmiennej jest zakończona średnikiem. Jeśli
deklarujesz więcej niż jedną zmienną pewnego typu, to C++ pozwala rozdzielać ich
nazwy przecinkami. Na przykład, poniższa instrukcja deklaruje trzy zmienne
zmiennoprzecinkowe:
float zarobki, podatek_od_dochodu, fundusz_emerytalny;
Znaczenie zmiennych
Zmienna jest nazwą miejsca przeznaczonego do przechowywania informacji w pamięci
komputera. Programy podczas wykonywania się umieszczają w zmiennych dane i
wykorzystują je. Przy tworzeniu programów musisz deklarować zmienne podając
kompilatorowi nazwę i typ każdej z nich. Przykładowa poniższa instrukcja
deklaruje zmienną pod nazwą wiek typu int:
int wiek;
Używaj znaczących nazw zmiennych
Każda ze zmiennych, które tworzysz w programie, musi mieć niepowtarzalną nazwę.
Aby twoje programy były czytelne i zrozumiałe, powinieneś używać znaczących nazw
zmiennych. Na przykład, poniższa instrukcja jest deklaracją trzech zmiennych o
nazwach x, y i z:
int x, y, z;
Jeśli te zmienne mają przechowywać wiek studenta, wynik testu oraz stopień, to
następujące nazwy zmiennych będą znacznie bardziej odpowiednie:
int wiek_studenta, wynik_testu, stopień;
Dobierając nazwy zmiennych możesz korzystać z kombinacji liter (poza znakami
charakterystycznymi dla języka polskiego, takimi jak ż, ą itp.), cyfr oraz
dolnych kresek (_). Pierwszym symbolem nazwy musi być litera lub dolna kreska.
Nie można zatem umieszczać cyfr na początku nazwy. Ponadto w języku C++
rozróżniane są duże i małe litery. Na początku programowania w tym języku
zalecamy Ci używanie tylko małych liter i dolnych kresek. W miarę nabierania
wprawy w C++ będziesz mógł korzystać z dużych i małych liter w celu otrzymania
nazw znaczących, takich jak w przykładzie:
float ZarobkiMiesieczne, PodatekOdDochodu;
Słowa, które nie mogą być nazwami zmiennych
Przy tworzeniu nazw zmiennych musisz pamiętać, że w C++ są zarezerwowane słowa
przedstawione w tabeli 3. Są to słowa kluczowe, które mają specjalne znaczenie
dla kompilatora. Nie możesz użyć jako nazwy zmiennej żadnego ze słów kluczowych
C++.
Tabela 3. Słowa kluczowe C++asmautobreakcasecatchcharclass
constcontinuedefaultdeletedodoubleelse
enumexternfloatforfriendgotoif
inlineintlongnewoperatorprivateprotected
publicregisterreturnshortsignedsizeofstatic
structswitchtemplatethisthrowtrytypedef
unionunsignedvirtualvoidvolatilewhile
Do czego programy wykorzystują zmienne
W bardziej złożonych programach będziesz realizować operacje działające na wielu
różnych elementach. Na przykład, jeśli piszesz program obsługujący listę płac,
to będzie on musiał przetwarzać informacje na temat każdego pracownika. W takim
programie możesz wykorzystywać zmienne noszące nazwy nazwisko_pracownika,
ident_pracownika, zarobki_pracownika itd. Program rozpoczynając swoje działanie
przypisze tym zmiennym odpowiednie informacje dotyczące pierwszego pracownika.
Po obliczeniu jego zarobków powtórzy ten sam proces dla następnego pracownika.
Aby obliczyć zarobki drugiego pracownika, program przypisze wymienionym zmiennym
informacje dotyczące tego pracownika (nazwisko, identyfikator i zarobki), a
następnie będzie kontynuować przetwarzanie. Innymi słowy, program w trakcie
wykonywania się przypisuje zmiennym rozmaite wartości zmieniając w ten sposób
wartości zmiennych.
Przypisywanie zmiennym wartości
Jak już mówiliśmy, w trakcie działania programu zmienne przechowują wartości. Po
zadeklarowaniu zmiennej, przy użyciu operatora przypisania (oznaczonego symbolem
równości) języka C++ możesz przypisać jej wartość. Poniższe instrukcje
przypisują wartości kilku różnym zmiennym. Zwróć uwagę, że na końcu każdej z
instrukcji umieszczono średnik:
wiek = 32;
zarobki = 25000.75;
odl_do_Kiezyca = 238857;
Nazwy zmiennych nie zawierają polskich liter (odl_od_Ksiezyca).
Uwaga: Wartości przypisywane zmiennym nie zawierają przecinków (nie piszesz
zgodnie z konwencją amerykańską 25,000.57 ani 238,857), ani spacji (tak jak
25000.57 czy 238857). Jeślibyś wprowadził spacje albo przecinki, kompilator
wygeneruje i wyŚwietli komunikaty o błędach syntaktycznych.
Przedstawiony niżej program deklaruje opisane właśnie zmienne, a następnie przy
użyciu operatora przypisania nadaje każdej z nich wartość:
#include
void main (void)
{
int wiek;
float zarobki;
long odl_do_Ksiezyca;
wiek = 32;
zarobki = 25000.75;
odl_do_Kiezyca = 238857;
}
Przypisywanie wartości przy deklarowaniu
Często przy deklarowaniu zmiennej wygodnie będzie przypisywać jej wartość
początkową. Aby to ułatwić, C++ pozwala programiście przypisywać zmiennym
wartości w momencie deklaracji, tak jak w poniższym przykładzie:
int wiek = 32;
float zarobki = 25000.75;
long odl_do_Kiezyca = 238857;
W wielu spośród przedstawionych w tej książce programów przy deklaracji będziemy
nadawać zmiennym wartości.
Przypisywanie zmiennej wartości
Zmienne przechowują informacje podczas wykonywania programu. Aby umieścić w
zmiennej jej wartość, musisz użyć w programie operatora przypisania (oznaczonego
symbolem równości) języka C++. Poniższa instrukcja przy użyciu operatora
przypisania nadaje zmiennej lekcja wartość 4:
lekcja = 4;
Aby uprościć przypisywanie wartości zmiennym, język C++ pozwala przypisywać
zmiennej jej wartość początkową przy deklaracji:
int lekcja = 4;
Wykorzystywanie wartości zmiennej
Po przypisaniu zmiennej wartości, pisane przez Ciebie programy mogą
wykorzystywać tę wartość po prostu odwołując się do nazwy zmiennej.
Przedstawiony poniżej program PISZZMIE.CPP przypisuje wartości trzem zmiennym, a
następnie wyświetla je przy użyciu strumienia cout:
#include
void main (void)
{
int wiek = 32;
float zarobki = 25000.75;
long odl_do_Kiezyca = 238857;
cout << "Pracownik ma " << wiek << " lat" << endl;
cout << "Pracownik zarabia " << zarobki << " złotych" << endl;
cout << "Księżyc jest oddalony o " << odl_do_Ksiezyca << "mil od Ziemii" <<
endl;
}
Uwaga: Ostatnia instrukcja, wykorzystująca strumień cout, nie mieści się w
jednej linii. W związku z tym część słów przeniesiono do następnego wiersza.
Ponieważ w języku C++ średnik oznacza koniec instrukcji, można dzielić linie w
ten sposób. Gdy musisz przenieść część instrukcji do następnej linii, to nie
powinieneś dzielić w ten sposób tekstów (ciągów znaków w cudzysłowach), a dalszy
ciąg instrukcji w nowej linii przesuwaj o kilka spacji w prawo w stosunku do
pierwszej linii instrukcji, tak jak w naszym przykładzie.
Po skompilowaniu i uruchomieniu tego programu otrzymasz na ekranie następujące
wyjście:
C:\> PISZZMIE
Pracownik ma 32 lata
Pracownik zarabia 25000.75 złotych
Księżyc jest oddalony o 238857 mil od Ziemi
Jak widzimy, aby wykorzystać wartość zmiennej, wystarczy odwołać się w programie
do jej nazwy.
Przekraczanie pojemności miejsca zmiennej w pamięci
Jak już mówiliśmy, typ zmiennej definiuje zbiór wartości, jakie może ona
przechowywać. Na przykład, zmienna typu int może przechowywać liczby z zakresu
od -32 768 do 32 767. Jeśli przypiszesz zmiennej wartość spoza tego przedziału,
otrzymasz błąd nadmiaru. Na przykład, przedstawiony poniżej program NADMIAR.CPP
ilustruje, w jaki sposób przekroczenie zakresu wartości zmiennej da w wyniku
błąd podczas wykonywania programu. Jak widzimy, ten program przypisuje każdej ze
zmiennych liczbę spoza zakresu jej poprawnych wartości:
#include
void main (void)
{
int dodatnia = 40000;
long duza_dodatnia = 4000000000;
char mala_dodatnia = 210;
cout << "dodatnia wynosi teraz: " << dodatnia << endl;
cout << "duża_dodatnia wynosi teraz: " << duza_dodatnia << endl;
cout << "mała_dodatnia wynosi teraz: " << mala_dodatnia << endl;
}
Po skompilowaniu i uruchomieniu tego programu otrzymasz na ekranie następujące
wyjście:
C:\> NADMIAR
dodatnia wynosi teraz: -25536
duża_dodatnia wynosi teraz: -294967296
mała_dodatnia wynosi teraz: 0
Jak widzimy, program przypisuje zmiennym typu int, long oraz char wartości
wykraczające poza pojemność miejsca w pamięci dla każdego z wymienionych typów,
co daje w wyniku błąd nadmiaru. Operując na zmiennych musisz mieć na uwadze
zakres wartości, jaki może przechowywać dany typ. Błędy tego typu są delikatne
oraz trudne do wykrycia i poprawienia. Zwróć uwagę na to, jaką wartość wyświetla
program dla zmiennej mala_dodatnia. Ponieważ ta zmienna jest typu char, strumień
wyjściowy cout próbuje przedstawić jej wartość jako znak. W związku z tym
wyświetlona wartość odpowiada znakowi z rozszerzonego zbioru ASCII o kodzie 210.
Więcej informacji na temat znaków z rozszerzonego zbioru ASCII znajdziesz w
książce Jamsa's 1001 C\C++ Tips, wydanej przez wydawnictwo Jamsa Press w roku
1993.
Znaczenie precyzji liczb
Z poprzednich podrozdziałów wiesz, że błędy nadmiaru mają miejsce wtedy, gdy
przypisujesz zmiennym liczby spoza zakresu wartości ich typów. W analogiczny
sposób musisz również zrozumieć, że komputery mogą przechowywać liczby z
ograniczoną precyzją. Na przykład, jeśli operujesz na liczbach
zmiennoprzecinkowych (wartościach z kropką dziesiętną), to zdarza się, że
maszyna nie może reprezentować tych liczb dokładnie. Błędy tego typu bywają
trudne do wykrycia w programach.
Przedstawiony poniżej program PRECYZ.CPP przypisuje zmiennym typu float oraz
double wartość mniejszą od 05. Niestety komputer ma ograniczoną możliwość
reprezentowania liczb i dlatego zmienne w programie nie zawierają przypisywanych
im wartości, ale 0.5:
#include
void main (void)
{
float f_nie_polowa = 0.49999990;
double d_nie_polowa = 0.49999990;
cout << "Liczba typu float dla 0.49999990 to " << f_nie_polowa << endl;
cout << "Liczba typu double dla 0.49999990 to " << d_nie_polowa << endl;
}
Po skompilowaniu i uruchomieniu tego programu otrzymasz na ekranie następujące
wyjście:
Liczba typu float dla 0.49999990 to 0.5
Liczba typu double dla 0.49999990 to 0.5
Jak widzimy, wartości, które program przypisuje zmiennym i wartości, które te
zmienne rzeczywiście przechowują, nie są dokładnie takie same. Takie błędy
precyzji mają miejsce dlatego, że komputer musi reprezentować wartości przy
użyciu ustalonej liczby zer i jedynek. W wielu sytuacjach maszyna może
przechowywać liczby dokładnie. Niekiedy, tak jak w przedstawionym przykładzie,
reprezentacja liczby w komputerze jest przybliżona, ale nie jest dokładna.
Programując musisz pamiętać o precyzji. W zależności od tego, jakimi wartościami
twój program operuje, mogą pojawić się błędy precyzji, które są bardzo trudne do
wykrycia.
Stosuj komentarze dla podniesienia czytelności programów
Gdy będziesz pisać bardziej złożone programy, okaże się, że z powodu dużej
liczby instrukcji programy stają się niezrozumiałe. Ponieważ być może po tobie
również inni programiści będą musieli zrozumieć i ewentualnie modyfikować twoje
programy, powinieneś przy ich pisaniu mieć na uwadze ich maksymalną czytelność.
Oto sposoby zwiększania zrozumiałości programów:
Stosuj znaczące nazwy zmiennych, które opisują ich rolę.
Instrukcje powinny być w odpowiedniej odległości od lewej i odpowiednio
wyrównane między sobą (patrz lekcja 7).
Przy użyciu pustych linii oddzielaj nie powiązane ze sobą instrukcje.
Przy pomocy komentarzy objaśniaj sposób przetwarzania informacji przez
program.
Podczas pisania programów możesz umieszczać w plikach źródłowych uwagi
objaśniające sposób przetwarzania informacji w danym miejscu (znaczenie
instrukcji). Takie uwagi (noszące nazwę komentarzy) mają za zadanie nie tylko
pomagać innym programistom w zrozumieniu twojego programu, ale pozwolą Ci po
paru miesiącach przypomnieć sobie, dlaczego w danym miejscu użyłeś konkretnych
instrukcji. Aby umieścić komentarz w programie napisanym w C++, trzeba po prostu
wprowadzić przed nim dwa znaki slash (//), tak jak tutaj:
// To jest komentarz
Gdy kompilator C++ napotka znaki //, to pominie wszystko, co jest za nimi w tej
samej linii. Komentarze trzeba umieszczać przynajmniej na początku każdego
programu, podając kto napisał program, kiedy i w jakim celu:
// Program: BUDZET.CPP
// Autor: Kris Jamsa
// Data: 1.10.96
//
// Przeznaczenie: Przechowuje comiesięczne informacje o budżecie.
Gdy program wykonuje konkretne obliczenia, powinieneś je opatrywać odpowiednimi
komentarzami przed lub za realizującymi je instrukcjami objaśniając ich
znaczenie. Na przykład, weźmy taką instrukcję przypisania:
dl_od_Ksiezyca = 328857; //Odległość w milach
Komentarz umieszczony na prawo od instrukcji przypisania dostarcza dodatkowych
informacji dla osoby czytającej program. Początkujący programiści mają często
trudności z ustaleniem co i kiedy komentować. Przyjmijmy zasadę, że nie można
umieszczać w programach zbyt wielu komentarzy. A komentarze muszą być
zrozumiałe. Poniższe komentarze nie dostarczają żadnych dodatkowych informacji
osobie czytającej kod programu:
wiek = 32 //Przypisanie liczby 32 zmiennej wiek
zarobki = 25000.75 //Przypisanie liczby 25000.75 zmiennej zarobki
Celem stosowania komentarzy jest objaśnianie, czemu ma służyć dana operacja.
Dodawanie komentarzy do programów
Tworząc programy powinieneś włączać do nich komentarze, objaśniające operacje
wykonywane przez program. Gdyby inni programiści musieli modyfikować twoje
programy, to dzięki komentarzom będą mogli zrozumieć sposób ich działania. W C++
komentarze są zaznaczane symbolami // (podwójny slash):
// To jest komentarz w języku C++
Gdy kompilator C++ napotka podwójny slash, to pominie wszystko w bieżącej linii,
co znajduje się dalej. Dobry program powinien być czytelny i zrozumiały. A
komentarze poprawiają czytelność programów.
Uwaga: W celu podniesienia czytelności programów należy oprócz komentarzy
wstawiać puste linie rozdzielając w ten sposób nie powiązane ze sobą instrukcje.
Gdy kompilator C ++ napotka pustą linię, to po prostu ją pominie.
Zapamiętaj
Podczas tej lekcji dowiedziałeś się, że programy podczas wykonywania się
przechowują informacje jako zmienne. Krótko mówiąc zmienna jest nazwą, jaką
program nadaje miejscu w pamięci komputera, w którym przechowywana jest
informacja. Przed użyciem każdej zmiennej w programie musi być zadeklarowana jej
nazwa i typ. Podczas lekcji 5 nauczysz się wykonywać proste operacje na
zmiennych, takie jak dodawanie i odejmowanie. Zanim jednak przejdziemy do lekcji
5 upewnij się, że opanowałeś już następujące zagadnienia podstawowe:
Aby móc używać zmiennej w programie, musisz najpierw zadeklarować jej nazwę i
typ.
Nazwy zmiennych muszą być niepowtarzalne i powinny opisywać ich znaczenie, tak
by było ono zrozumiałe dla innych programistów czytających kod źródłowy .
Nazwa zmiennej musi się zaczynać od litery lub dolnej kreski (_).
C++ rozróżnia duże i małe litery.
Typ zmiennej określa zakres wartości, jakie może ona przechowywać. Najczęściej
używane typy zmiennych to: char, int, float oraz long.
Komentarze objaśniające działanie programu podnoszą jego czytelność. W języku
C++ komentarze są oznaczane podwójnym slashem (//).
WsteczSpis treściDalej
Wyszukiwarka
Podobne podstrony:
Kris Jamsa Wygraj Z C lekcja32
Kris Jamsa Wygraj Z C lekcja 5
Kris Jamsa Wygraj Z C lekcja23
Kris Jamsa Wygraj Z C lekcja38
Kris Jamsa Wygraj Z C lekcja35
Kris Jamsa Wygraj Z C lekcja20
Kris Jamsa Wygraj Z C lekcja27
Kris Jamsa Wygraj Z C lekcja34
Kris Jamsa Wygraj Z C lekcja18
Kris Jamsa Wygraj Z C lekcja17
Kris Jamsa Wygraj Z C lekcja25
Kris Jamsa Wygraj Z C lekcja14
Kris Jamsa Wygraj Z C lekcja36
Kris Jamsa Wygraj Z C lekcja 4
Kris Jamsa Wygraj Z C lekcja33
Kris Jamsa Wygraj Z C lekcja 7
Kris Jamsa Wygraj Z C lekcja30
Kris Jamsa Wygraj Z C lekcja12
Kris Jamsa Wygraj Z C lekcja28
więcej podobnych podstron