eBook
PDF
n z m
" " "
z mt
z
"
Proste ra e w ści ścia
" Tabli , itera e oraz podprogramy
"
Programowanie obiektowe i pliki kstowe
Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości
lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione.
Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie
książki na nośniku filmowym, magnetycznym lub innym powoduje
naruszenie praw autorskich niniejszej publikacji.
Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi
bądz towarowymi ich właścicieli.
Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte
w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej
odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne
naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo
HELION nie ponoszą również żadnej odpowiedzialności za ewentualne
szkody wynikłe z wykorzystania informacji zawartych w książce.
Redaktor prowadzÄ…cy: Ewelina Burska
Projekt okładki: Radosław Zbytniewski
Materiały graficzne na okładce zostały wykorzystane za zgodą iStockPhoto Inc.
Wydawnictwo HELION
ul. Kościuszki le, 44-100 GLIWICE
tel. 32 231 22 19, 32 230 98 63
e-mail: helion@helion.pl
WWW: http:/!helion.pl (księgarnia internetowa, katalog książek)
Drogi Czytelniku!
Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres
http:/!helion.pl/user/opinie ?cppzad_p
Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.
Kody wykorzystane w książce można znalezć pod adresem:
p://ftp.helion.pl/przykłady/cppzad.zip
ISBN: 978-83-246-3707-2
Numer katalogowy: 6900
Copyright © Helion 2011
Printed in Poland.
" "
Poleć książkę na Facebook.com Księgarnia internetowa
" "
Kup w wersji papierowej Lubię to! Nasza społeczność
"
Oceń książkę
Od autora 5
Rozdział 1. Proste operacje wejścia-wyjścia 7
Rozdział 2. Podejmujemy decyzje w programie 17
Rozdział 3. Iteracje 29
Rozdział 4. Tablice 57
Tablice jednowymiarowe 57
Tablice dwuwymiarowe 61
Rozdział 5. Podprogramy 79
Rozdział 6. Programowanie obiektowe 97
Rozdział 7. Pliki tekstowe 111
4 C ++. Zadani a z progr a mowani a z przykł adowymi rozwi ązani ami
Trójzbiór Zadania z progran1owania z rozwiqzanian1i to pie1,wszy
w Polsce zbióI' zadań ad1,esowany do wszystkich osób zaintereso
wanych p1,ogramowaniem, które w k1'ótkim czasie, pop1,zez analizę
zaproponowanych I'ozwiązań, chciałyby na11czyć się solidnych podstaw
Pl'Ogramowania w tI'Zech językach : Tt1rbo Pascaltl, c+ + OI'aZ Javie.
Składa się on z trzech zbiorów zadań:
Turbo Pascal. Zadania z progra111owania z przyklado n1i
" " "
rozw1qzan1a1111.
C+ +. Zadania z progran1owania z przykłado mi roz qzanian1i.
Java. Zadania z progran1owania z przyklado n1i rozwiqzanian1i.
Chociaż każdy z tych zbiorów stanowi odrębną całość, to zostały
one napisane w taki sposób, aby ten sam 111b bardzo podobny pro
blem prog1,amistyczny (np . napisz p1,ogram, który oblicza pole pro
stokąta) został rozwiązany w trzech językach p1,ogramowania: T11rbo
Pascalu, C+ + i Javie, strt1kturalnie i obiektowo . Tak skonstruowany
t1'ójzbiór Zadania z progra1nowania zyskt1je zupełnie nowy wymiar
dydaktyczny w na11ce tych trzech języków.
Zadania z progran1owania można również wykorzystać jako 11z11peł
nienie wiedzy zaczerpniętej z innych książek do nat1ki prog1,amowa
nia. Zakres i stopień t1,udności zadań pokrywa się z tradycyjnym
p1,ocesem na11czania wymienionych języków. Zbiór ten może też pełnić
I'olę podręcznej pomocy dla początk11jących p1,ogramistów, w której
szybko znajdÄ… oni pot1,zebne im rozwiÄ…zanie.
6 C ++. Zadani a z pr og r amowani a z przykł adowymi rozwi qzani ami
Trójzbiór adresowany jest również do matt1rzystów, studentów, na
t1czycieli informatyki oraz osób zainteresowanych programowaniem
lub rozpoczynających naukę programowania w języku c+ +.
Uczniowie techników informatycznych mogą zbiory zadań wykorzy
stać do szybkiej powtó1'ki przed egzaminem zawodowym.
W trakcie pisania tej książki korzystałem z tzw. aplikacji konsolowych
(ang. co11sole application) i kompilatora firmy Borland (C+ + ) .
Mirosław J. Kt1biak
. , .
SCIO-W
W 1 rozdziale zan1ieszczono proste zadania z przyklado n1i roz q
zania111i ilustrujące, w jaki sposób kon1puter kon1unikuje się z użyt
kownikien1 w języku C + +.
Każda aplikacja powinna posiadać możliwość kom11nikowania się
z użytkownikiem. Wyko1,zystując p1,oste p1,zykłady, pokażemy, w jaki
sposób progi,am napisany w języku c+ + komunikuje się z nim poprzez
standardowe operacje wejścia-wyjścia.
Plik nagłówkowy z instr11kcji
#i ncl ude
zawiera definicje klas 1 trmożliwiających wykonywanie operacji wejścia
wyjścia na strumieniach. Do wyprowadzania danych na ekran sł11ży
standardowy str1rmień wyjściowy cout, któI'Y w językt1 C+ + domyślnie
p1,zypisuje ekran do standa1,dowego tu,ządzenia wyjściowego systemt1
ope1,acyjnego. Aby wyświetlić komt1nikat lt1b dane, trzeba do strtrmie
nia wyjściowego cout zastosować symbol podwójnego znak11 mniejszo
ści<< (operacja wstawiania). Dwa znaki mniejszości należy wprowadzić
z klawiatury.
1 Więcej informacji na ten1at klas czytelnik znajdzie w rozdziale 6.
8 C ++. Zadani a z pr og r amowani a z przykł adowymi rozwi qzani ami
Do wprowadzania danych do programu służy standardowy strt1mień
wejściowy ci n oraz operatOI' >> (dwa znaki większości, które również
wprowadzamy z klawiatt1ry), np . ci n >> a : .
Do formatowania strt1mienia wyjściowego będziemy t1żywali flagi for
matt1jącej fi xed i manipulatora s etpreci si on ( n) . Flaga fi xed używa do
liczb zmiennoprzecinkowych t1stalonej k1,opki dziesiętnej , natomiast
manipulator setp reci si on(n) t1stala ich precyzjÄ™ na n np.
zapis cout
<< setpreci si on ( 2) : oznacza, że liczby zmiennoprzecinkowe będą wy
świetlane z dokładnością dwóch miejsc po k1,opce.
Zastosowanie manipulatora setpreci si on (n) wymaga włączenia do pro
gramt1 pliku nagłówkowego:
#i ncl ude
Opisane powyżej podejście do operacji wejścia-wyjścia nazywa się
obiektowym 2.
ZADANIE
Napisz program, który oblicza pole prostokąta. Wartości boków
b
a i wprowadzamy z klawiatury. W programie należy p1,zyjąć,
że zmienne a i b oraz pol e są typt1 fl oat (rzeczywistego). PI'Zyj
mujemy format wyświetlania ich na ekranie z dokładnością
dwóch miejsc po kropce.
Przy adowe 1żÿozwiqzanie - listing 1. 1
#i ncl ude I I Zadanie 1.1
#i ncl ude
#i ncl ude
ma i n ( )
{
fl oat a . b, pol e:
cout << "Program ob l i cza pol e prostokata . " << endl :
cout << "Podaj bok a . " << endl :
c1n >> a :
cout << "Podaj bok b . " << endl :
ci n >> b:
pol e = a*b :
2 Więcej informacji na temat obiektowych operacji wejścia-wyjścia, flag
i manipulatorów znajdzie czytelnik na stronach WWW poświęconych
językowi programowania c+ + pod adrese1n http://www.cplusplus.co1n/.
R zdzi ał 1. " Proste oper acj e wejści a-wyjśc i a 9
cout << fi xed : I I flaga
cout << setpreci si on ( 2) : I I ustalenie precyzji
cout << "Pol e prostokata o boku a = " << a << " i boku b = " << b:
cout << " wynosi " << pol e << " . " << endl :
getch ( ) : I I czeka na nacisniecie dowolnego klawisza
}
Linijka kod11
fl oat a. b, pol e:
t1możliwia zadeklarowanie zmiennych a, b i pol e (wszystkie zmienne
w p1·og1,amie sÄ… typ11 rzecz wistego fl oat). Inst1,11kcja
cout << "Program obl i cza pol e prostokata . " << eridl :
wyświetla na ekranie komp11tera komunikat Progra111 oblicza pole
prostokata. Instr11kcja ci n >> a: czeka na wprowadzenie z klawiatury
kompt1tera liczby, która następnie zostanie przypisana zmiennej a.
Pole prostokąta zostaje obliczone w wyrażeniu
pol e = a*b :
Za wyświetlenie wartości zmiennych a i b oraz pol e wraz z odpo
wiednim opisem są odpowiedzialne następujące linijki kodt1:
cout << "Pol e prostokata o boku a = " << a << " i boku b = " << b:
" "
cout << wynosi << pol e << " . " endl :
<<
Flaga fi xed t1żywa 11stalonej kropki dziesiętnej dla liczb zmienno
przecinkowych. Zapis
cout << setpreci sion ( 2) :
oznac a, że liczby te będą wyświetlane na ek1,anie z dokładnością
dwóch miejsc po kropce. Natomiast ft1nkcja
getch( ) :
(ang. get character wczytaj znak) czeka na wczytanie dowolnego
znakt1 z klawiatury (naciśnięcie dowolnego klawisza) . Prototyp tej
ft1nkcji znajduje się w plikt1 nagłówkowym conio.h. Instrt1kcja
endl :
(ang. end of line - koniec linii) przenosi k11rsor na początek następ
nej linii.
Komentarze w programie oznaczamy dwoma 11kośnikami
I I to jest komentarz do programu
1 0 C ++. Zadani a z pr og r amowani a z przykł adowymi rozwi qzani ami
SÄ… one ignorowane w procesie kompilacji.
Rez11ltat działania program11 można zobaczyć na rysunk11 1. 1.
Program oblicza pole prostokata.
Podaj bok a.
1
Podaj bok b.
2
Pole prostokata o boku a = 1.00 i boku b = 2.00 wynosi 2.00.
Rysunek 1.1. Efekt dziaÅ‚ania prog1żÿamu Zadanie 1.1
ZADANIE
Napisz program, który wyświetla na ekranie komp11tera war
tość predefiniowanej stałej n = 3,14 . . . Należy przyjąć fo1,mat
prezentowania tej stałej, oznaczanej w język11 C+ + jako M_PI,
z dokładnością pięcit1 miejsc po kropce.
Wskazówka
Stała M_PI znajduje się w pliku nagłówkowym 111ath.h, który poleceniem
#i ncl ude