eBook
PDF
•
•
. nia
z programuwama •
z -
• • •
--
-
Proste operacje wejścia/wyjścia Tablice, iteracje oraz podprogramy Programowanie obiektowe i pliki tekstowe
•
•
zamamt
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ądź 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
[email protected] WWW: http:/!helion. pl (księgarnia internetowa, katalog książek)
e-mail:
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 znaleźć pod adresem:
ftp://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 + + . Z a d an i a z p r o g r a m o w ani a z p rz y k ł a d o w y m i rozw i ą z an i a m i
Trójzbiór Zadania z progran1owania z rozwiqzanian1i to pie1,wszy w Polsce zbióI' zadań ad1,esowany d o wszystkich osób zainteres o 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 przykladowyn1i rozw1qzan1a1111. •
•
•
C+ + . Zadania z progran1owania z przykładowymi rozwiqzanian1i. Java. Zadania z progran1owania z przykladowyn1i 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ć j ako 11z11peł nienie wiedzy zaczerpniętej z innych książek do nat1ki prog1,amowa nia. Z akres 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 + + . Z a d a n i a z p r o g r a m o w a n i a z p rz y k ł a d o w y m i rozw i q z a n i a m i
Trójzbiór adresowany jest również d o matt1rzystów, studentów, na t1czycieli informatyki oraz osób zainteresowanych programowaniem lub ro zpoczynających naukę programowania w j ęzyku c+ + . Uczniowie techników informatycznych mogą zbiory zadań wykorzy stać d o 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 tyn1 rozdziale zan1ieszczono proste zadania z przykladowyn1i rozwiq
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 j aki 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 + + . Z a d a n i a z p r o g r a m o w a n i a z p rz y k ł a d o w y m i rozw i q z a n i a m i
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 s i on ( n ) . Flaga fi xed używa do liczb zmiennoprzecinkowych t1stalonej k1,opki dziesiętnej , natomiast manipulator s etp reci s i o n ( n ) t1stala ich precyzję na n np. zapis cout << setpreci s i on ( 2 ) : oznacza, że liczby zmiennoprzecinkowe będą wy świetlane z dokładnością dwóch miejsc po k1,opce. Zastosowanie manipulatora setpreci s i 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ę obiektowym2. ZADANIE
Napisz program, który oblicza pole prostokąta. Wartości boków a i b 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 d okładnością dwóch miejsc po kropce. Przykładowe 1�ozwiqzanie - listing 1 . 1 #i nc l ude I I Zadanie 1 . 1 #i ncl ude #i ncl ude ma i n ( )
{
fl oat a . b, pol e : cout << " P rogram 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 s tronach WWW poświęconych językowi programowania c+ + pod adrese1n http://www.cplusplus.co1n/.
Ro,z d z i a ł 1. cout cout cout cout
<< << << <<
•
P ro s t e o p e r a c j e w e j ś c i a-wyjśc i a
fi xed : I I flaga setpreci si on ( 2 ) : I I ustalenie precyzji " Pol e prostokata o boku a = " << a << " " wynosi " << pol e << " . " << endl :
i
9
boku b = " << b :
getch ( ) : I I czeka na nacisniecie dowolnego klawisza
}
Linijka kod 11 fl oat a . b, pol e :
t1możliwia zadeklarowanie zmiennych a , b i pol e (wszystkie zmienne w p1·og1,amie są typ11 rzecz.ywistego fl oat). Inst1,11kcja cout << " P rogram 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 s i on ( 2 ) :
oznac.za, że liczby te będą wyświetlane na ek1,anie z d okładnością dwóch miej sc p o kropce. Natomiast ft1nkcj a g etch ( ) :
(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 nej linii.
-
koniec linii) przenosi k11rsor na początek następ
Komentarze w programie o znaczamy dwoma 11kośnikami I I to jest komentarz do programu
10
C + + . Z a d a n i a z p r o g r a m o w a n i a z p rz y k ł a d o w y m i rozw i q z a n i a m i
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�a mu Zadanie 1.1
ZADANIE
Napisz program, który wyświetla na ekranie komp11tera war tość pred efiniowanej stałej n = 3 , 1 4 . . . Należy przyjąć fo1,mat prezentowania tej stałej, oznaczanej w j ęzyk11 C+ + jako M_PI, z dokładnością pięcit1 miej sc p o kropce. Wskazówka Stała M_PI znajduje się w p l i ku nagłówkowym 111ath.h, który poleceniem
#i ncl ude