Kurs C++ częśd II – Podstawowa obsługa konsoli + zmienne. Autor

Transkrypt

Kurs C++ częśd II – Podstawowa obsługa konsoli + zmienne. Autor
Kurs C++ częśd II – Podstawowa obsługa konsoli + zmienne.
Autor: Dawid Chróścielski.
Wprowadzanie i wyprowadzanie danych z/do konsoli.
Jak wyprowadzad dane dowiedzieliśmy się już wcześniej (metoda „cout” z przestrzeni nazw „std”).
Nowym jest dla nas wprowadzanie ich. Służy do tego metoda „cin” (od angielskiego console input).
Przykład zastosowania:
// Wprowadzanie i wyprowadzanie danych z/do konsoli
#include <iostream>
using namespace std;
// *1
int wiek;
char imie[20];
// ----------int main()
{
cout << "Podaj swoje imie: ";
cin >> imie; // *2
cout << "Podaj swoj wiek: ";
cin >> wiek; // *3
cout << "Twoje imie to: " << imie << endl // *4
<< "Twoj wiek to :"; // *5
cout << wiek << "\n"; // *6
system("PAUSE");
return 0;
}
Ok. Rozbijmy to na czynniki pierwsze, pomijając fragmenty, które już znamy:
*1 – są to deklaracje zmiennych (zajmiemy się tym w następnym paragrafie), które wprowadzamy do
konsoli.
*2 – jest to wywołanie funkcji „cin” (po niej następują znaki strumienia wejścia „>>”). Jako argument,
do którego wpisana zostanie wartośd (w tym przypadku napis) podajemy zmienną „imie”.
Przechowuje ona w sobie dane, które do niej za pomocą procedury „cin” wpisaliśmy.
*3 – prawie to samo co w *2, jednak tym razem wprowadzamy zmienną o typie liczbowym, co
oznacza, że możemy tam zapisad nasz wiek w postaci liczby, nie jako napis (to zasadnicza różnica dla
komputera).
*4 – chciałem tutaj pokazad, jak można łączyd strumienie, które chcemy wyprowadzid z konsoli.
Wystarczy rozdzielid poszczególne elementy znakami strumienia wyjścia („<<”). W ten sposób w
jednej linijce wypisaliśmy napis „Twoje imię to:”, zmienną „imie” oraz znak przejścia do następnej
linii.
*5 – przenieśliśmy komendę do następnej linii, żeby wszystko się mieściło na ekranie, znów użyliśmy
„<”, aby wypisad nowy strumieo i zakooczyliśmy funkcję „cout” średnikiem.
*6 – wywołujemy funkcję „cout” jeszcze raz (dla przykładu, że można i tak dołączad strumienie
wyjścia, co jest przecież logiczne), wypisujemy zmienną liczbową „wiek” oraz znak „\n”, który oznacza
to samo co „endl”, jednak zawarty i zinterpretowany jest w ciągu znaków. Aby uzyskad więcej znaków
specjalnych typu „\n”, należy wpisad hasło „Znaki specjalne C++” do wyszukiwarki.
Zmienne.
Czym są zmienne? Są to wartości przechowywane w pamięci posiadające swoją charakterystyczną
nazwę. Każda zmienna posiada swój unikalny adres oraz nazwę, wartości mogą się powielad. Jak w
C++ deklarujemy zmienną?
typ nazwa;
Jak definiujemy?
nazwa = wartośd;
Czym różni się deklaracja od definicji? Deklaracja to zakomunikowanie kompilatorowi, że dany obiekt
(np. zmienna) istnieje w programie i istnieje możliwośd jej użycia. Definicja natomiast to nadanie jej
wartości. Deklarację z definicją możemy łączyd:
typ nazwa = wartośd;
Wartości jakie przybiera dana zmienna zależne są od jej typu. Przykładowo dla typu liczbowego,
zmienna przybiera wartośd liczbową (np. int zmienna = 5;). Wartośd zmiennej nie może przekroczyd
zakresu wartości jakie dany typ przewidział. Np. zmienna typu unsigned char nie może przyjąd
wartości 300, gdyż wykracza to poza zakres jej typu.
Typy zmiennych:
źródło: http://m4tx.pl/wp-content/uploads/2010/08/table.png
Przy typach podstawowych, kompilator często konwertuje jeden typ, do drugiego, gdy chcemy je np.
porównad, wykonad operację dodawania, przypisad, itd. Zawsze konwertuje typ bardziej złożony do
bardziej podstawowego. Robi to jednak niejawnie i może w tych miejscach wypisywad ostrzeżenia o
takiej sytuacji. Możemy zrobid to jawnie, są 2 sposoby: reinterpret_cast < nowy_typ> (zmienna), lub
starym sposobem, znanym z C: (nowy_typ)zmienna. Aby uzyskad więcej informacji na ten temat
polecam wyszukiwarkę internetową.
Napiszmy przykładowy program, w którym wykorzystamy nasze zmienne.
// Dodawanie
#include <iostream>
using namespace std;
int liczba1; // *1
int liczba2, wynik; // *2
char imie[20]; // *3
int main()
{
cout << "Podaj swoje imie: ";
cin >> imie;
cout << "Podaj 1-sza liczbe: ";
cin >> liczba1;
cout << "Podaj 2-ga liczbe :";
cin >> liczba2;
wynik = liczba1 + liczba2; // *4
cout << "Twoje imie to: " << imie << endl;
cout << liczba1 << " + " << liczba2 << " = " << wynik << endl;
system("PAUSE");
return 0;
}
*1 – czytamy: „Deklaracja zmiennej typu integer”
*2 – jeżeli zmienne są tego samego typu, możemy deklarowad je po przecinku, koocząc średnikiem.
Możemy również wykonywad definicję, czyli nadad im wartości początkowe. Również w miejscu
deklaracji. Definicja taka wyglądałaby tutaj np. tak:
int liczba2 = 20, wynik = 25;
Jednak, później w kodzie następuje ponowne wpisanie wartości, więc nie ma potrzeby wpisywania
ich na początku, gdyż i tak zostaną nadpisane przez nowe. Przykładowo, gdybyśmy w późniejszym
wywołaniu „cin >> liczba2” podali wartośd 22, wówczas zmienna „liczba2” od tego miejsca
zwracałaby wartośd 22.
*3 – jest to deklaracja zmiennej tablicowej typu char. Zajmiemy się tym nieco później.
*4 – użyliśmy tutaj 2 operatorów: przypisania „=” oraz dodawania „+”. Chyba nie muszę tłumaczyd do
czego służą. Wytłumaczę natomiast jak działają. Operator przypisania służy nadaniu wartości
wyrażeniu stojącemu po stronie lewej operatora, z wyrażenia, które stoi po jego prawej stronie. W
tym przypadku zmiennej „wynik” przypisujemy wartośd wyrażenia „liczba1 + liczba2”. Gdybyśmy
spotkali na przykład taką instrukcję:
wynik = liczba1 = liczba2;
Wówczas liczba2 przekazuje wartośd liczbie1 przez operator przypisania. Następnie liczba1
przekazuje swoją wartośd (czyli już tą samą co liczba2) do zmiennej wynik.
Operator dodawania sumuje stojące po jego obu stronach wyrażenia.
Zakres dostępu i „życie” zmiennych.
Zmierzyd musimy się tu z dwoma zagadnieniami:
Zmienne globalne – są to obiekty dostępne w całym pliku od miejsca ich zadeklarowania. Muszą byd
one zadeklarowane poza wszystkimi funkcjami, przestrzeniami nazw, pętlami, itd. Do tej pory
posługiwaliśmy się w programach właśnie takimi zmiennymi. Były one deklarowane na zewnątrz
funkcji main, lecz przypisanie im wartości znajdowało się już w tej metodzie. Początkowo jednak
wszystkie zmienne globalne przyjmują zależnie od typu: NULL, 0 lub false. Są więc wypełniane
neutralnymi wartościami początkowymi. Obiekty deklarowane globalnie istnieją w naszym programie
od jego startu, do zakooczenia.
Zmienne lokalne – tu z kolei, póki nie nadamy wartości sami, przechowywane są wewnątrz „śmieci”,
czyli wartości losowe. Przykład zmiennej lokalnej uzyskamy, deklarując wewnątrz naszej funkcji main
jakąś zmienną. Do tak zdeklarowanego obiektu mamy dostęp jedynie wewnątrz tej funkcji, a czas
przez jaki on istnieje, to czas od startu funkcji, do jej zakooczenia. Wewnątrz funkcji main, nie wynika
z tego nic, gdyż jest to metoda główna programu, więc jej zakooczenie jest równe z zamknięciem
pracy programu, jednak to nie jest jedyna funkcja, z jaką przyjdzie się nam zmierzyd.

Podobne dokumenty