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

background image

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 <iostream>

#include <conio.h>

using

namespace

std;

int

main()

{

int

a;

int

b;

cout<<

"Podaj pierwsza liczbe: "

;

cin>>a;
cout<<

"Podaj druga liczbe: "

;

cin>>b;
cout<<

"liczba a: "

<<a<<endl;

cout<<

"liczba b: "

<<b<<endl;

cout<<

"Suma a+b wynosi: "

<<a+b<<endl;

cout<<

"Roznica a-b wynosi: "

<<a-b<<endl;

cout<<

"Roznica b-a wynosi: "

<<b-a<<endl;

cout<<

"Iloczyn a*b: "

<<a*b<<endl;

cout<<

"Wynik rownania ((a+b)*b+a)*a wynosi: "

<<((a+b)*b+a)*a<<endl;

cout<<

"Calkowity wynik z dzielenia a/b wynosi: "

<<a/b<<endl;

cout<<

"Reszta z dzielenia a/b wynosi: "

<<a%b<<endl;

cout<<"

Calkowity wynik z dzielenia b/a wynosi: "

<<b/a<<endl;

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óźniej 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 <iostream>

#include <conio.h>

using

namespace

std;

int

main()

{

int

a;

cout<<

"Podaj liczbe: "

;

cin>>a;
cout<<

"liczba a: "

<<a<<endl;

a=a+10;

// dodaj do siebie: (a+10) i przypisz otrzymany wynik do zmiennej (a)

cout<<

"liczba a: "

<<a<<endl;

a+=15;

// do aktualnej warto

ś

ci zapisanej w zmiennej o nazwie 'a' dodaj

warto

ść

15

cout<<

"liczba a: "

<<a<<endl;

a++;

//Inkrementacja warto

ś

ci o 1 (post inkrementacja)

cout<<

"liczba a: "

<<a<<endl;

background image

++a;

//Inkrementacja warto

ś

ci o 1 (pre inkrementacja)

cout<<

"liczba a: "

<<a<<endl;

int

b;

cout<<

"Podaj liczbe: "

;

cin>>b;
cout<<

"liczba b: "

<<b<<endl;

b=b-9;
cout<<

"liczba b: "

<<b<<endl;

b-=8;
cout<<

"liczba b: "

<<b<<endl;

b--;
cout<<

"liczba b: "

<<b<<endl;

--b;
cout<<

"liczba b: "

<<b<<endl;

int

c;

c=a+b;
cout<<endl<<

"liczba c: "

<<c<<endl;

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: "

<<d<<endl;

cout<<

"liczba e: "

<<e<<endl;

cout<<

"liczba f: "

<<f<<endl;

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.



background image

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.

background image

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. Przejd

ź

my teraz do wcze

ś

niej omawianego przykładu:


#include <cstdio>

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 <cstdio>

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.

background image

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

ą

ż

nic

ą

,

ż

e b

ę

dzie on napisany w

C++. Oto on:

C/C++

#include <iostream>

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 przejd

ź

my do kolejnego programu.

#include <iostream>

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

ą

ż

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, wsa

ź

niki 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 <iostream>

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

background image

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 <iostream>

#include <cstdio>

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:
Podstawowe pojŕcia Mikro
WEJ—CIŕWKA Z BON BIOLOGICZNYCHx
1.Podstawowe pojŕcia. Pielŕgniarstwo, Opiekun medyczny
F W Kron, Podstawowe pojŕcia pedagogiki i jej dyscyplin cz stkowych
T-2- podstawowe pojŕcia wspˇ-czesnej kryminalistyki
1 Podstawowe pojŕcia Pielŕgniarstwo
Podstawowe pojŕcia, biologia, Zajęcia praktyczne, praktyka zawodowa
Analiza i synteza kombinacyjnych układów logicznych, PWr W9 Energetyka stopień inż, III Semestr, Pod
Folie 01 Podstawowe pojŕcia 2
OPIEKA PALIATYWNA podstawowe pojŕcia i definicje, opieka paliatywna
Podstawowe pojŕcia Mikro
realizacja rozszerzenia iloœci wejœć wyjœć sterownika JAZZ wire chip
Pytania z Patofizjologii zebrane do 12 wИеcznie wersja 0 01 DODANE TESTY z wyjШЖ, wykИadвwek i egza
pan wołodyjowski, 14, Po wyj˙ciu z zamku Ketling potrzebuj˙c zebra˙ my˙li i otrz˙sn˙˙ si˙ ze zdumien
wyznaczanie staˆej planka oraz pracy wyj˜cia, Wyznaczanie sta?ej Planka oraz pracy wyj?cia

więcej podobnych podstron