BAZA WIEDZY
KURSY
Bazy danych w PHP
Kurs AdvancedAJAX
Kurs ASP
Kurs ASP.NET
Kurs C++
Kurs CSS
Kurs HTML
Kurs HTML drugi
Kurs JavaScript
Kurs MySQL
Kurs PHP
Kurs RSS
Kurs XHTML
Obiekty DOM
MANUALE
CSS1 - W3C
DOM - w budowie
PHP 2005
PHP 2006
Wyrażenia regularne
SHOUTBOX
STAT
Online: 7 | UU: 210

Zmienne i stałe

Umiemy już wypisywać tekst w konsoli i tworzyć własne funkcje. Niestety, nasze programy są na razie zupełnie bierne, jeżeli chodzi o kontakt z użytkownikiem. Nie ma on przy nich nic do roboty oprócz przeczytania komunikatu i wciśnięcia dowolnego klawisza.

Najwyższy czas to zmienić. Napiszmy więc program, który będzie porozumiewał się z użytkownikiem. Może on wyglądać na przykład tak:

// Input - użycie zmiennych i strumienia wejścia
#include <string>
#include <iostream>
#include <conio.h>
void main()
{
std::string strImie;
std::cout << "Podaj swoje imie: " ;
std::cin >> strImie;
std::cout << "Twoje imie to " << strImie << "." << std::endl;
getch();
}

Po kompilacji i uruchomieniu widać już wyraźny postęp w dziedzinie form komunikacji :) Nasza aplikacja oczekuje na wpisanie imienia użytkownika i potwierdzenie klawiszem ENTER, a następnie chwali się dopiero co zdobytą informacją.

Patrząc w kod programu widzimy kilka nowych elementów, zatem nie będzie niespodzianką, jeżeli teraz przystąpię do ich omawiania :D

Zmienne i ich typy

Na początek zauważmy, że program pobiera od nas pewne dane i wykonuje na nich operacje. Są to działania dość trywialne (jak wyświetlenie rzeczonych danych w niezmienionej postaci), jednak wymagają przechowania przez jakiś czas uzyskanej porcji informacji.

W językach programowania służą do tego zmienne.

Zmienna (ang. variable ) to miejsce w pamięci operacyjnej, przechowujące pojedynczą wartość określonego typu. Każda zmienna ma nazwę, dzięki której można się do niej odwoływać.

Przed pierwszym użyciem zmienną należy zadeklarować , czyli po prostu poinformować kompilator, że pod taką a taką nazwą kryje się zmienna danego typu. Może to wyglądać choćby tak:

std::string strImie;

W ten sposób zadeklarowaliśmy w naszym programie zmienną typu std::string o nazwie strImie . W deklaracji piszemy więc najpierw typ zmiennej, a potem jej nazwę.

Nazwa zmiennej może zawierać liczby, litery oraz znak podkreślenia w dowolnej kolejności. Nie można jedynie zaczynać jej od liczby. W nazwie zmiennej nie jest także dozwolony znak spacji.

Zasady te dotyczą wszystkich nazw w C++ i, jak sądzę, nie szczególnie trudne do przestrzegania.
Z brakiem spacji można sobie poradzić używając w jej miejsce podkreślenia ( jakas_zmienna ) lub rozpoczynać każdy wyraz z wielkiej litery ( JakasZmienna ).

W jednej linijce możemy ponadto zadeklarować kilka zmiennych, oddzielając ich nazwy przecinkami. Wszystkie będą wtedy przynależne do tego samego typu.

Typ określa nam rodzaj informacji, jakie można przechowywać w naszej zmiennej. Mogą to być liczby całkowite, rzeczywiste, tekst (czyli łańcuchy znaków, ang. strings ), i tak dalej. Możemy także sami tworzyć własne typy zmiennych, czym zresztą niedługo się zajmiemy. Na razie jednak powinniśmy zapoznać się z dość szerokim wachlarzem typów standardowych, które to obrazuje niniejsza tabelka:

nazwa typu

opis

int

liczba całkowita (dodatnia lub ujemna)

float

liczba rzeczywista (z częścią ułamkową)

bool

wartość logiczna (prawda lub fałsz)

char

pojedynczy znak

std::string

łańcuch znaków (tekst)

Tabela 1. Podstawowe typy zmiennych w C++

Używając tych typów możemy zadeklarować takie zmienne jak:

int nLiczba; // liczba całkowita, np. 45 czy 12 + 89
float fLiczba; // liczba rzeczywista (1.4, 3.14, 1.0e-8 itp.)
std::string strNapis; // dowolny tekst

 

Być może zauważyłeś, że na początku każdej nazwy widnieje tu przedrostek, np. str czy n . Jest to tak zwana notacja węgierska; pozwala ona m.in. rozróżnić typ zmiennej na podstawie nazwy. Zapis ten stał się bardzo popularny, szczególnie wśród programistów języka C++ - spora ich część uważa, że znacznie poprawia on czytelność kodu.
Szerszy opis notacji węgierskiej możesz znaleźć w Dodatku A.

Strumień wejścia

Cóż by nam jednak było po zmiennych, jeśli nie mieliśmy skąd wziąć dla nich danych?.

Prostych sposobem uzyskania ich jest prośba do użytkownika o wpisanie odpowiednich informacji z klawiatury. Tak też czynimy w aktualnie analizowanym programie - odpowiada za to kod:

std::cin >> strImie;

Wygląda on podobnie do tego, który jest odpowiedzialny za wypisywanie tekstu w konsoli. Wykonuje jednak czynność dokładnie odwrotną: pozwala na wprowadzenie sekwencji znaków i zapisuje ją do zmiennej strImie .

std::cin symbolizuje strumień wejścia , który zadaniem jest właśnie pobieranie wpisanego przez użytkownika tekstu. Następnie kieruje go (co obrazują "strzałki" >> ) do wskazanej przez nas zmiennej.

Zauważmy, że w naszej aplikacji kursor pojawia się w tej samej linijce, co komunikat "Podaj swoje imię". Nietrudno domyśleć się, dlaczego - nie umieściliśmy po nim std::endl , wobec czego nie jest wykonywane przejście do następnego wiersza. Jednocześnie znaczy to, iż strumień wejścia zawsze pokazuje kursor tam, gdzie skończyliśmy pisanie - warto o tym pamiętać.

***

Strumienie wejścia i wyjścia stanowią razem nierozłączną parę mechanizmów, które umożliwiają nam pełną swobodę komunikacji z użytkownikiem w aplikacjach konsolowych.


Schemat 3. Komunikacja między programem konsolowym i użytkownikiem

Stałe

Stałe są w swoim przeznaczeniu bardzo podobne do zmiennych - tyle tylko że są. niezmienne :)) Używamy ich, aby nadać znaczące nazwy jakimś niezmieniającym się wartościom w programie.

Stała to niezmienna wartość, której nadano nazwę celem łatwego jej odróżnienia od innych, często podobnych wartości, w kodzie programu.

Jej deklaracja, na przykład taka:

const int STALA = 10 ;

przypomina nieco sposób deklarowania zmiennych - należy także podać typ oraz nazwę. Słówko const (ang. constant - stała) mówi jednak kompilatorowi, że ma do czynienia ze stałą, dlatego oczekuje również podania jej wartości. Wpisujemy ją po znaku równości = .

W większości przypadków stałych używamy do identyfikowania liczb - zazwyczaj takich, które występują w kodzie wiele razy i mają po kilka znaczeń w zależności od kontekstu. Pozwala to uniknąć pomyłek i poprawia czytelność programu.

Stałe mają też tę zaletę, że ich wartości możemy określać za pomocą innych stałych, na przykład:

const int NETTO = 2000 ;
const int PODATEK = 22 ;
const int BRUTTO = NETTO + NETTO * PODATEK / 100 ;

Jeżeli kiedyś zmieni się jedna z tych wartości, to będziemy musieli dokonać zmiany tylko w jednym miejscu kodu - bez względu na to, ile razy użyliśmy danej stałej w naszym programie. I to jest piękne :)

Inne przykłady stałych:

const int DNI_W_TYGODNIU = 7 ; // :-)
const float PI = 3.141592653589793 ; // w końcu to też stała!
const int MAX_POZIOM = 50 ; // np. w grze RPG

| | | |
Copyright © 2006-2013 egrafik.pl | Kontakt | Reklama | Projekty domów
jocker