Podstawy wej%c5%9bcia i wyj%c5%9bcia w C


PODSTAWY WEJŚCIA/WYJŚCIA, ZMIENNE I OPERACJE NA NICH
5.1. Podstawowe operacje na zmiennych
Wiemy ju\ co to są zmienne - teraz zajmiemy się ich praktycznym wykorzystaniem. Zacznijmy od
prostego przykładu.
#include
#include
using namespace std;
int main()
{
int a;
int b;
cout<<"Podaj pierwsza liczbe: ";
cin>>a;
cout<<"Podaj druga liczbe: ";
cin>>b;
cout<<"liczba a: "< cout<<"liczba b: "< cout<<"Suma a+b wynosi: "< cout<<"Roznica a-b wynosi: "< cout<<"Roznica b-a wynosi: "< cout<<"Iloczyn a*b: "< cout<<"Wynik rownania ((a+b)*b+a)*a wynosi: "<<((a+b)*b+a)*a< cout<<"Calkowity wynik z dzielenia a/b wynosi: "< cout<<"Reszta z dzielenia a/b wynosi: "< cout<<"Calkowity wynik z dzielenia b/a wynosi: "< getch();
return(0);
}
Program ten pokazuje nam podstawowe operacje matematyczne, jakie mo\emy wykonywać na
zmiennych. W C++ obowiązują takie same zasady wykonywania działań na liczbach jak w matematyce.
Najpierw mno\ymy (dzielimy), pózniej dodajemy (odejmujemy). Jeśli chcemy, aby działania wykonały się
w innej kolejności, korzystamy z okrągłych nawiasów. Operację dodawania symbolizuje + operację
odejmowania -, operację mno\enia *, operację dzielenia /, a operację reszty z dzielenia %.
5.2. Jak poprawiać czytelność programu
Poniewa\ operacje arytmetyczne są instrukcjami, które najczęściej są pisane, na przestrzeni wielu lat
powstało sporo ułatwień do wykonywania operacji matematycznych. Kolejny przykład prezentuje ich
zapis i działanie.
#include
#include
using namespace std;
int main()
{
int a;
cout<<"Podaj liczbe: ";
cin>>a;
cout<<"liczba a: "< a=a+10;// dodaj do siebie: (a+10) i przypisz otrzymany wynik do zmiennej (a)
cout<<"liczba a: "< a+=15;// do aktualnej wartości zapisanej w zmiennej o nazwie 'a' dodaj
wartość 15
cout<<"liczba a: "< a++;//Inkrementacja wartości o 1 (post inkrementacja)
cout<<"liczba a: "< ++a;//Inkrementacja wartości o 1 (pre inkrementacja)
cout<<"liczba a: "< int b;
cout<<"Podaj liczbe: ";
cin>>b;
cout<<"liczba b: "< b=b-9;
cout<<"liczba b: "< b-=8;
cout<<"liczba b: "< b--;
cout<<"liczba b: "< --b;
cout<<"liczba b: "< int c;
c=a+b;
cout< int d,e,f;//deklaracja kilku zmiennych naraz
cout<<"Podaj liczbe d: ";
cin>>d;
cout<<"Podaj liczbe e: ";
cin>>e;
cout<<"Podaj liczbe f: ";
cin>>f;
d*=5;//aktualną wartość zmiennej mno\y razy 5;
e/=2;//aktualną wartość zmiennej dzieli przez 2;
f%=3;//liczy resztę z dzielenia aktualnej wartości w zmiennej modulo 3;
cout<<"liczba d: "< cout<<"liczba e: "< cout<<"liczba f: "< getch();
return(0);
}
Pojęcia:
" Inkrementacja - zwiększenie wartości zmiennej o jeden;
" Dekrementacja - zmniejszenie wartości o jeden;
W podanym przykładzie łatwo mo\na zauwa\yć, \e polecenie a++; jest równowa\ne a+=1; jak
równie\ a=a+1; i ++a;. Ka\dy z tych zapisów jest wygodny ze względu na swoją długość. Jednak jeśli nasza
zmienna zmieni swoją nazwę na np. int bardzo_niewygodna_nazwa; to inkrementacja wartości zmiennej o
1 będzie niezbyt wygodna korzystając np. z tej instrukcji przypisania: bardzo_niewygodna_nazwa=
bardzo_niewygodna_nazwa+1;. W takim wypadku warto korzystać z krótszych zapisów, chocia\by po to,
\eby oszczędzić i tak ju\ wytarte klawisze na klawiaturze. Co więcej, powinieneś dbać o estetykę swojego
kodu. Na pewno zgrabniej będzie wyglądała krótka i treściwa wiadomość, ni\ wiersz na pół ekranu.
5.3. Wczytywanie danych do zmiennych
Za pomocą polecenia (strumienia) cin>>, wczytujemy dane do zmiennej. Poleceniem tym będziemy
wczytywali zmienne ka\dego typu prostego (czyli np. unsigned int, char). To oczywiście nie jedyny sposób
na wczytywania danych do zmiennych. Do innych rozwiązań dojdziemy w swoim czasie.
5.4. Praca domowa
1. Napisz program, który poprosi o podanie wieku dla poszczególnych osób w twojej rodzinie.
Następnie wyliczy ró\nice lat miedzy poszczególnymi członkami rodziny.
Przykładowe wyświetlenie:
Podaj swój wiek: 17
Podaj wiek siostry: 15
Podaj wiek brata: 13
Podaj wiek mamy: 44
Podaj wiek taty: 48
Podaj wiek babci: 69
Podaj wiek dzidka:72
Ja mam  13 lat.
Moja mama ma 40 lat a tata 45 lat.
Mój tato jest starszy od mamy & . lat.
Ja jestem starszy od siostry o & . lat.
Siostra jest starsza od & & & .. lat
Itp.
2. Napisz program który będzie zamieniał minuty na godz.
Np.
Podaj ilość min.: 30
30 min. to 0,5 godz.
Obsługa strumienia wyjściowego
Zapoznanie się z obsługą standardowego wyjścia za pomocą funkcji printf oraz strumienia std::cout.
W niniejszym rozdziale będziemy zajmować się wyświetlaniem danych. Jak
ju\ zapewne wiesz język C++ jest potomkiem języka C. W związku z tym do
istniejących komponentów C zostały dodane ich odpowiedniki w stylu C++. W celu
zachowania wstecznej zgodności, tj. z językiem C - stare komponenty zostały
zachowane i równie\ mo\na z nich korzystać w C++. W konsekwencji mamy do
dyspozycji dwa mechanizmy do wypisywania danych na standardowe wyjście, które w
naszym wypadku jest konsolą. W niniejszym rozdziale wymienimy te dwie stosowane
techniki, jednak szerzej zostanie omówiona metoda prostsza w u\yciu, nale\ąca
do języka C++.
Funkcja printf
Funkcję printf mieliśmy okazję zobaczyć w działaniu ju\ kilkukrotnie. W tym
rozdziale poznamy ją trochę lepiej, jednak to będzie ostatni rozdział
poświęcony tej funkcji w podstawowej części kursu. Funkcja ta wywodzi się
bowiem z języka C i nie jest zbyt przyjemna w u\yciu dla początkującego
programisty. Przejdzmy teraz do wcześniej omawianego przykładu:
#include
int main()
{
printf( "Test dzialania Code::Blocks" );
return 0;
}
Powy\szy wiersz jakby się mogło wydawać na pierwszy rzut oka jest oczywisty i
efekt działania powy\szego programu jest łatwo przewidywalny. Jak ju\ pisałem w
jednym ze wcześniejszych rozdziałów powy\szy wiersz wyświetli komunikat:
Test dzialania Code::Blocks
Funkcja printf mo\e przyjmować jednak więcej ni\ jeden argument, co
przedstawiam w poni\szym przykładzie:
#include
int main()
{
printf( "Czy %d jest wieksze od %s?", 3 + 4, "siedem" );
return 0;
}
O ile pierwszy wariant wywołania był oczywisty tak tutaj ju\ tak nie jest. Pojawiają się bowiem tajemnicze
argumenty, które nie wiadomo jak zadziałają w programie. Warto jednak najpierw wtrącić słowo co to jest
argument. Argumentem nazywamy wartość przekazywaną do funkcji. Kolejne argumenty są rozdzielone
przecinkami. Innymi słowy funkcja printf przyjęła trzy argumenty. Pierwszym z nich jest tekst "Czy %d jest
wieksze od %s?", drugim działanie arytmetyczne 3+4 i trzecim znowu tekst o treści "siedem".
Pytanie jakie tu nale\y zasadniczo zadać to co wyświetli wy\ej wspomniane wywołanie funkcji i dlaczego.
Po uruchomieniu tego programu ujrzymy następującą treść:
Czy 7 jest wieksze od siedem?
Porównując wywołanie funkcji z treścią którą otrzymaliśmy mo\na łatwo zauwa\yć, \e zamiast zapisu %d
pokazała się nam liczba 7, natomiast w miejscu %s ukazał się napis siedem. Pierwszy argument funkcji
printf w rzeczywistości słu\y do formatowania wyjścia, tj. sposobu prezentacji danych. Znak % jest
znakiem specjalnym, po którym następuje określenie sposobu prezentacji kolejnych argumentów funkcji
printf. Zapis %d informuje, \e argumentem będzie liczba całkowita, natomiast %s mówi funkcji, \e będzie
to łańcuch znaków. Funkcja printf jest znacznie bardziej rozbudowana ni\ te dwa podstawowe typy. Nie
będziemy się jednak w nią zagłębiać ze względu na to, i\ będziemy wykorzystywali inne i znacznie
prostsze narzędzie do wypisywania danych.
Strumień wyjścia std::cout
Pomimo, i\ znamy ju\ powierzchownie jedną technikę wypisywania ró\nych danych
na ekranie - pora poznać inną, którą znacznie bardziej docenisz w toku nauki
programowania. Jest nią u\ycie strumienia std::cout. Na początek przytoczę
program, który ju\ widzieliśmy wcześniej z tą ró\nicą, \e będzie on napisany w
C++. Oto on:
C/C++
#include
int main()
{
std::cout << "Test dzialania Code::Blocks";
return 0;
}
Powy\szy program wypisze dokładnie to, co jest zawarte w podwójnych
apostrofach. Zapis std::cout powoduje skierowanie danych na standardowy
strumień wyjściowy tak samo jak to robiła funkcja printf. W programie tym
występują równie\ znaki <<, które nazywamy operatorem. Za pomocą operatora <<
'wskazujemy' dane, które mają zostać przekazane do strumienia.
Pierwszy przykład jest na tyle oczywisty, \e nie wymaga on dalszych wywodów,
tak więc przejdzmy do kolejnego programu.
#include
int main()
{
std::cout << "Czy ";
std::cout << 3 + 4; //drugi argument w printf
std::cout << " jest wieksze od ";
std::cout << "siedem"; //trzeci argument w printf
return 0;
}
Powy\szy kod realizuje dokładnie to samo, co wcześniej przedstawiony program,
u\ywający printf (nie trzeba chyba wskazywać o który kod konkretnie chodzi).
Jak widać wiersze w których występują komentarze zawierają te same dane, które
były przekazane za pomocą drugiego i trzeciego argumentu funkcji printf.
Istotną ró\nicą jest jednak brak %d oraz brak %s. Fakt ten powinien mieć dla
Ciebie istotne zaczenie - mniej musisz pamiętać by otrzymać ten sam efekt.
Powy\szy fakt jest głównym powodem dlaczego będziemy korzystali ze strumienia
wyjściowego std::cout. Zanim zaczniesz narzekać na to, \e zapis jest du\o
dłu\szy - miej świadomość tego, \e język C++ oferuje kilkanaście typów
podstawowych, np. liczba całkowita krótka 16-bitowa, zwykła 32-bitowa i długa
64-bitowa. Ka\da z wcześniej wymienionych liczb mo\e być ze znakiem lub bez. Do
tego dochodzą znaki, liczby zmiennoprzecinkowe, wartości logiczne, wsazniki i
być mo\e jeszcze inne podstawowe typy, które w chwili obecnej pominąłem. Dla
ka\dego wy\ej wymienionego typu zapis w funkcji printf występujący po % będzie
wyglądał inaczej, natomiast w przypadku u\ycia mechanizmu C++ kompilator 'wie'
co z danym typem zrobić. Na deser warto jeszcze przedstawić jak mo\na zapisać
ten sam kod krócej.
#include
int main()
{
std::cout << "Czy " << 3 + 4 << " jest wieksze od " << "siedem";
return 0;
}
Jak widać strumień std::cout jest znacznie wygodniejszym narzędziem w rękach
początkowego programisty.
Znaki specjalne
Zanim przejdziemy do następnego rozdziału dobrze będzie zapoznać się jeszcze ze
znakami specjalnymi, jakie mo\na wstawić we wypisywanym tekście. Do najczęściej
u\ywanych znaków nale\ą: tabulacja, przejście do nowego wiersza, backslash i
podwójny apostrof. Aby wyświetlić znaki specjalne w treści nale\y je poprzedzić
backslashem (\ ). Poni\sza tabelka przedstawia tylko te najczęściej u\ywane:
Opis Język C Język C++
przejście do nowego wiersza \n std::endl
tabulacja \t (brak - patrz zapis języka C)
backslash \\ (brak - patrz zapis języka C)
Na koniec krótki przykład wykorzystujący powy\sze znaki specjalne:
#include
#include
int main()
{
std::cout << "\t tekst \"C:\\Hej\\ho.txt.\"" << std::endl;
printf( "Uczymy sie \" pisac \t tekst C:\\Hej\\ho.txt. w stylu C\n" );
printf( "\n\na tu konczymy zabawe" );
std::cout << std::endl << std::endl << "zrob sobie przerwe :)" << std::endl;
return 0;
}
Po uruchomieniu zobaczymy na ekranie następującą treść:
tekst "C:\Hej\ho.txt."
Uczymy sie " pisac tekst C:\Hej\ho.txt. w stylu C
a tu konczymy zabawe
zrob sobie przerwe :)
Praca domowa
Napisz program, który wyświetli na ekranie:
==============
= To proste! =
==============
A jak to zrobic?
Koniec :)


Wyszukiwarka

Podobne podstrony:
wejscie wyjscie
Porty wejścia wyjścia
operacje wejscia wyjscia 13
operacje wejscia wyjscia 7
JAVA 06 wejście i wyjście
Uklady wejscia wyjscia (TAK13)
Wejście, wyjście V rok 2016
operacje wejscia wyjscia 8
Obsluga wejscia wyjscia KIA PRz
07 Strumienie, operacje wejścia wyjścia
Asynchroniczne wejście wyjście w systemie Linux
04 operacje wejscia wyjscia
operacje wejscia wyjscia 10
operacje wejscia wyjscia 3
operacje wejscia wyjscia 6
Wykład 10 Wejście wyjście

więcej podobnych podstron