Professional Documents
Culture Documents
PRZYKADOWY ROZDZIA
SPIS TRECI
KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG
Wstp do
programowania
w jzyku C++
Autor: Radosaw Sok
ISBN: 83-246-0179-1
Format: B5, stron: 400
TWJ KOSZYK
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK
CZYTELNIA
FRAGMENTY KSIEK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Spis treci
Wstp .............................................................................................. 9
Cz I
Cz II
Spis treci
5
Napisy .......................................................................................................................... 161
Kopiowanie zawartoci zmiennych acuchowych ................................................ 162
Doczanie tekstu do zmiennej ............................................................................... 163
Porwnywanie tekstu ............................................................................................. 164
Wyszukiwanie tekstu ............................................................................................. 165
Podsumowanie ............................................................................................................. 168
Spis treci
Dodatki ......................................................................................375
Dodatek A Tabela kodw znakw ASCII ......................................................... 377
Dodatek B Polskie znaki diakrytyczne w programach pisanych w jzyku C++ ... 383
Skorowidz ..................................................................................... 387
Rozdzia 5.
Tablice, ptle
i wyraenia warunkowe
W poprzednim rozdziale nauczye si tworzy programy o tak zwanym przebiegu liniowym. W przypadku takich programw komputer rozpoczyna wykonywanie ich
kodu w cile okrelonym miejscu, realizuje kod skadajcy si na kolejne wyraenia
w sposb sekwencyjny (jedno po drugim), po czym dochodzi do koca bloku instrukcji i koczy dziaanie programu.
W realnych zastosowaniach oprogramowania takie programy nale do rzadkoci.
Program musi prawie zawsze reagowa na pewne specjalne sytuacje, wykonujc jeden z kilku blokw instrukcji w zalenoci od tego, jaki zestaw warunkw speniaj
dane wejciowe lub porednie wyniki oblicze. Podczas wprowadzania danych przez
uytkownika program powinien weryfikowa podawane informacje i zgasza wszelkie nieprawidowoci. Niektre zastosowania komputerw wymagaj te przeprowadzania powtarzalnych oblicze na duych blokach danych tego samego typu. Widzisz
chyba, e prba sprostania wszystkim tym wymaganiom za pomoc programu o przebiegu liniowym byaby z gry skazana na niepowodzenie.
Jzyk C++, jak kady rozbudowany jzyk wysokiego poziomu, daje Ci jednak do
dyspozycji zestaw narzdzi umoliwiajcych wprowadzenie do programu fragmentw
wykonywanych w sposb powtarzalny (wielokrotny, w ptli) lub warunkowy (zaleny
od zestawu warunkw) oraz upraszczajcych obrbk duych iloci danych tego samego typu. Narzdzia te to:
tablice umoliwiaj przechowywanie pod jedn nazw wielu zmiennych
Cz II Jzyk C++
76
Tablice
Tak naprawd o tablicach dowiedziae si ju co nieco z poprzedniego rozdziau,
przy okazji nauki korzystania ze zmiennych acuchowych. Zmienna acuchowa
przechowujca napis skadajcy si z pojedynczych znakw jest niczym wicej, jak
tablic znakw, pod jedn nazw grupujc wiele pojedynczych elementw typu
char. Definicja:
char Napis[200];
oznacza, e pod nazw Napis przechowywanych bdzie 200 elementw typu char,
numerowanych kolejnymi liczbami od 0 do 199. Taki sposb numerowania, w ktrym
pierwszy element zawsze ma indeks 0, w wiecie komputerw nie jest niczym niezwykym, a w jzykach C oraz C++ jest norm. Aby efektywnie korzysta z tablic,
musisz wpoi sobie ten sposb numerowania (czyli w jzyku programistw indeksowania) elementw tablic (rysunek 5.1).
Rysunek 5.1.
Elementy tablicy
i sposb ich
indeksowania
Tablice (inaczej nazywane zmiennymi tablicowymi) s komputerowym odpowiednikiem macierzy uywanych w matematyce.
Tak, znw nieco utrudniem zadanie. Drugi wiersz powyszego przykadu deklaruje
zmienn przechowujc 25 tablic (numerowanych od 0 do 24) skadajcych si z 50
elementw typu char. Moe Ci si to wyda skomplikowane, jednak rwnie dobrze
moesz zinterpretowa ten zapis jako deklaracj zmiennej NazwyPrzedmiotow skadajcej si z 25 napisw po 50 znakw kady.
77
To nie jest bd. Jeszcze raz przypominam, e pierwszy element tablicy ma indeks
0 (m[0]), za element m[5] jest szstym elementem zmiennej tablicowej m.
Tablice wielowymiarowe
Tablica wielowymiarowa to tablica skadajca si z wielu tablic. Najprostszym przykadem tablicy wielowymiarowej jest tablica dwuwymiarowa, z ktr zetkne si
przed chwil. Tablica dwuwymiarowa to zbir elementw indeksowanych nie jedn,
a dwiema liczbami: jedna okrela numer wiersza, a druga numer kolumny, w ktrej
znajduje si szukany element (rysunek 5.2).
W identyczny sposb moesz stworzy tablice trj- lub czterowymiarowe, w ktrych
odwoanie si do kadego z elementw wymaga podania trzech lub czterech liczbindeksw. Mona nawet wyobrazi sobie sensowne zastosowanie tak skomplikowanej
tablicy wyobra sobie, e budujesz baz danych suc do przechowywania informacji o zajtoci miejsc w pocigach, przy czym kady z 20 pocigw moe mie
do 10 wagonw, w ktrych znajduj si 3 przedziay po sze miejsc. Tre takiego
programu znajdziesz na listingu 5.1, a wynik jego dziaania na rysunku 5.3.
Cz II Jzyk C++
78
Rysunek 5.2.
Tablica
dwuwymiarowa
79
Rysunek 5.3.
Efekt dziaania
programu
Uyteczno tego programu jest adna, poniewa dane o zajtoci miejsc nie s nigdy
wprowadzane. To, czy miejsce zostanie zgoszone jako wolne (stan zajtoci miejsca
rwny 0), czy zajte (stan zajtoci miejsca rny od 0) jest kwesti przypadku
zawarto zmiennych, do ktrych nigdy nic nie zapisae jest cakowicie przypadkowa.
Program jednak doskonale ilustruje trzy bardzo istotne zagadnienia, z ktrymi bdziesz
musia si zmaga:
Najprostszym problemem jest brak obsugi typu danych bool przez funkcj
printf(). Aby w prosty sposb wyprowadzi zawarto zmiennej tego typu
na ekran, naley posuy si kodem formatujcym %i, jednak jego uycie
spowoduje wyprowadzenie liczby: 0 dla wartoci false oraz dowolnej
innej (rnej od zera) dla wartoci true. Na szczcie za pomoc wyrae
80
Cz II Jzyk C++
Podczas pisania wasnych programw pamitaj, by nie naduywa tablic wielowymiarowych. Stosuj si do nastpujcych zasad:
tablice jednowymiarowe stosowane s niezwykle czsto choby jako
81
Cz II Jzyk C++
82
Rysunek 5.5.
Efekt dziaania
programu
Przykad programu dokonujcego zmian w tekcie (zapisanym w zmiennej acuchowej) za pomoc zwykych operacji odwoywania si do pojedynczych elementw typu
char tablicy przedstawiony zosta na listingu 5.3, a na rysunku 5.6 efekt dziaania
tego programu.
Listing 5.3. Przykad traktowania zmiennej acuchowej jak zwykej tablicy elementw typu char
#include <stdio.h>
int main()
{
char Napis[40] = "To jest napis 12345678901234567890";
// Zamie dziewity znak z 'n' na 'Z'.
Napis[8] = 'Z';
// Obetnij napis po 20 znakach.
Napis[20] = '\0';
Rysunek 5.6.
Efekt dziaania
programu
Nic nie stoi na przeszkodzie, by tablic elementw typu char wykorzystywa wycznie jako zbir znakw, a nie jako zmienn acuchow. W takim przypadku
moesz przechowywa w poszczeglnych elementach znaki o dowolnych kodach,
pamitaj jednak, by nigdy nie uywa takiej tablicy jako parametru funkcji operujcych na zmiennych acuchowych.
Wicej informacji na temat manipulowania tekstem zapisanym w zmiennych acuchowych znajdziesz w rozdziaach 7. i 9.
83