You are on page 1of 29

IDZ DO

PRZYKADOWY ROZDZIA
SPIS TRECI

KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG

Programowanie
w jzyku C. Szybki start
Autorzy: Larry Ullman, Marc Liyanage
Tumaczenie: Rafa Joca
ISBN: 83-7361-808-2
Tytu oryginau: C Programming : Visual
QuickStart Guide (Visual Quickstart Guides)
Format: B5, stron: 400

TWJ KOSZYK
DODAJ DO KOSZYKA

CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK

CZYTELNIA
FRAGMENTY KSIEK ONLINE

Byskawiczny kurs programowania aplikacji w jzyku C


Jzyk C, mimo prawie 30-letniej historii, cieszy si niesabnc popularnoci wrd
programistw. Wszyscy jego uytkownicy ceni w nim prost i czyteln skadni,
niewielki i atwy do zapamitania zakres sw kluczowych oraz due moliwoci,
dziki ktrym za pomoc C mona rozwiza niemal kade zagadnienie
programistyczne. Zewntrzne biblioteki, dostpne w sieci oraz doczane do
najpopularniejszych narzdzi programistycznych, dodatkowo rozszerzaj moliwoci C.
Ksika Programowanie w jzyku C. Szybki start to podrcznik dla tych, ktrzy
chc pozna C w praktyce i nie chc przebija si przez dziesitki stron opisw
teoretycznych. Kade zagadnienie od najprostszych, zwizanych ze struktur
programu i zasadami kompilacji a do zoonych typw danych i obsugi plikw
zewntrznych jest przedstawione w postaci bogato ilustrowanej sekwencji czynnoci.
Wykonujc kolejne przykady z ksiki, poznasz wszystkie podstawowe wiadomoci
o programowaniu w jzyku C.
Struktura programu w jzyku C
Typy danych
Sterowanie dziaaniem programu
Korzystanie ze standardowego wejcia i wyjcia
Deklarowanie i stosowanie funkcji
Dyrektywy preprocesora
Wskaniki i zarzdzanie pamici
Obsuga plikw
Zoone typy danych

Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl

Poznaj zalety i moliwoci najpopularniejszego jzyka programowania

Spis treci

Spis treci
Wprowadzenie
9
Dlaczego wanie jzyk C?........................................................................10
Sposb dziaania jzyka C.........................................................................11
Co bdzie potrzebne? ................................................................................12
O ksice ...................................................................................................13
Uzyskanie pomocy ....................................................................................15
Zaczynamy przygod z jzykiem C
17
Skadnia podstawowa................................................................................18
Wywietlanie tekstu ..................................................................................21
Kompilacja i uruchomienie programu.......................................................23
Unikanie zamknicia aplikacji ..................................................................28
Dodanie komentarzy do kodu rdowego................................................30
Stosowanie biaych znakw ......................................................................33

Rozdzia 2.

Typy danych
35
Poprawna skadnia zmiennych ..................................................................36
Przypisanie wartoci do zmiennej .............................................................40
Wywietlanie zmiennych ..........................................................................41
Znaki..........................................................................................................44
Cigi znakw.............................................................................................46
Stae...........................................................................................................48

Rozdzia 3.

Liczby
51
Wybr odpowiedniego typu danych numerycznych .................................52
Operacje arytmetyczne ..............................................................................55
Operatory inkrementacji i dekrementacji ..................................................60
Kolejno wykonywania operatorw ........................................................63
Przepenienie i niedomiar..........................................................................66
Konwersja zmiennych ...............................................................................70

Rozdzia 4.

Struktury sterujce
73
Instrukcja warunkowa if............................................................................74
Operatory logiczne i porwnania.................................................................77
Klauzule else i else if ................................................................................81
5

Spis treci

Rozdzia 1.

Spis treci

Spis treci

Operator trjargumentowy ........................................................................84


Instrukcja switch .......................................................................................87
Ptla while .................................................................................................90
Ptla for .....................................................................................................94
Rozdzia 5.

Standardowe wejcie i wyjcie


97
Pobranie pojedynczego znaku ...................................................................98
Pobranie caego sowa.............................................................................103
Odczyt danych liczbowych .....................................................................107
Odczyt wielu wartoci.............................................................................111
Walidacja otrzymanych danych ..............................................................116
Zaawansowane wykorzystanie funkcji printf() .......................................120

Rozdzia 6.

Tablice
123
Wprowadzenie do tablic..........................................................................124
Przypisywanie wartoci do tablicy ..........................................................126
Dostp do wartoci tablicy ......................................................................131
Definiowanie tablic za pomoc staych...................................................134
Przechodzenie przez elementy tablicy w ptli.........................................136
Tablice znakw .......................................................................................139
Tablice wielowymiarowe ........................................................................144

Rozdzia 7.

Tworzenie wasnych funkcji

149

Tworzenie prostych funkcji.....................................................................150


Funkcje przyjmujce argumenty ..............................................................154
Tworzenie funkcji zwracajcej warto ..................................................159
Tworzenie funkcji typu inline .................................................................165
Rekurencja...............................................................................................168
Zasig zmiennych....................................................................................172
Rozdzia 8.

Preprocesor jzyka C

177

Wprowadzenie do preprocesora jzyka C ...............................................178


Wykorzystanie staych ............................................................................185
Makra przypominajce funkcje ................................................................188
Makra jako funkcje i przyjmowanie argumentw...................................191
Tworzenie i doczanie plikw nagwkowych ......................................196
Doczanie plikw nagwkowych..........................................................200
Tworzenie warunkw ..............................................................................203

Spis treci

Rozdzia 9.

Wskaniki

207

Program w pamici komputera .................................................................208


Operator pobrania adresu zmiennej.........................................................210
Przechowywanie i pobieranie adresw ze zmiennych wskanikowych....214
Inne spojrzenie na zmienne wskanikowe ..............................................218
Dereferencja zmiennych wskanikowych ...............................................220
Przekazanie adresu do funkcji.................................................................224
Tablice, wskaniki i arytmetyka wskanikowa .......................................228
Tablice wskanikw ................................................................................233
Rozdzia 10. Zarzdzanie pamici
239
Pami statyczna i dynamiczna ................................................................240
Rzutowanie typw...................................................................................245
Alokacja tablic o rozmiarze dynamicznym .............................................249
Zmiana rozmiaru bloku pamici...............................................................253
Zwracanie pamici z funkcji ...................................................................262
Zapobieganie wyciekom pamici ..............................................................268

Rozdzia 12. Tworzenie napisw i plansz tytuowych

303

Otwarcie i zamknicie pliku....................................................................304


Zapis danych do pliku .............................................................................310
Odczyt danych z plikw ..........................................................................317
Przetwarzanie danych odczytanych z pliku.............................................321
Zapis danych binarnych...........................................................................323
Odczyt plikw binarnych ........................................................................329
Poruszanie si po pliku binarnym............................................................332
Rozdzia 13. Stosowanie efektw

337

Wprowadzenie do struktur ......................................................................338


Konstrukcja typedef ................................................................................345
Tablice struktur .......................................................................................350
Wprowadzenie do list..............................................................................356
7

Spis treci

Rozdzia 11. Cigi znakw


271
Podstawowa skadnia wskanikw na cigi znakw...............................272
Znajdowanie dugoci cigu znakw.......................................................277
czenie cigw znakw (konkatenacja)................................................281
Porwnywanie cigw znakw ...............................................................285
Kopiowanie cigw znakw ...................................................................291
Sortowanie cigw znakw.....................................................................296

Spis treci

Dodatek A

Instalacja i obsuga narzdzi programistycznych


369
Dev-C++ dla systemu Windows .............................................................370
Korzystanie ze rodowiska Dev-C++......................................................372
Aplikacja Xcode z systemu Mac OS X ...................................................375
Narzdzia dostpne w systemach uniksowych........................................377
Znajdowanie bdw za pomoc programu uruchomieniowego GDB ...378
Inne narzdzia .........................................................................................380

Dodatek B

Materiay dodatkowe

381

Witryny internetowe................................................................................382
Tabele ......................................................................................................384

Spis treci

Skorowidz

387

Struktury sterujce

Struktury sterujce

Cho przykady przedstawione do tej pory


korzystay ze zmiennych, przeprowadzay obliczenia
i wywietlay wyniki, brakowao im dynamicznej
natury prawdziwego programowania. Jednym
z kluczowych elementw prawdziwych aplikacji
jest ich elastyczno zapewniaqna przez struktury
sterujce takie jak ptle i instrukcje warunkowe.

73

Struktury sterujce

Najczciej stosowan struktur sterujc jest warunek


 (jeli) i jego odmiany: ,  oraz
. Rozdzia rozpoczniemy od omwienia
wanie tego warunku. W tym czasie natkniemy si
na nowe operatory jzyka C (poza ju wymienionym
operatorami arytmetycznymi i przypisania). Nastpnie
przejdziemy do dwch pozostaych instrukcji
warunkowych operatora trjargumentowego
i konstrukcji  . Na kocu rozdziau zajmiemy
si dwoma typowymi rodzajami ptli:   i 
.
Po przeczytaniu tego rozdziau bdziesz potrafi pisa
bardziej funkcjonalne aplikacj w jzyku C.

Rozdzia 4.

Instrukcja warunkowa if
Warunki to struktury sterujce pozwalajce
na rozgazianie przebiegu programu, czyli
uzalenianie jego dziaania od rnych parametrw.
Ze wszystkich rodzajw rozgazie najczciej
stosuje si instrukcj . Jej skadnia jest bardzo
prosta:


 


Instrukcja warunkowa if

Warunek umieszcza si wewntrz nawiasw


okrgych, a instrukcje, ktre maj zosta wykonane,
wewntrz nawiasw klamrowych. Jeli warunek
jest prawdziwy, instrukcje zostan wykonane.
W przeciwnym razie zostan pominite.
W jzyk C najprostsz reprezentacj faszu jest
warto 0. Wszystko inne traktowane jest jako
prawda.


     


  
 


W wyniku prawdziwoci warunku wykonana moe


zosta dowoln liczba instrukcji. Jeeli warunek
dotyczy tylko jednej instrukcji, mona pomin
nawiasy klamrowe. Oto przykad:

   
 


Kolejny przykad zobrazuje, w jaki sposb korzysta


z warunkw w jzyku C.

74

Struktury sterujce
Listing 4.1. Podstawowa instrukcja warunkowa
sprawdza, czy zmienna test ma warto rn od 0

Aby utworzy warunek if:


1. Utwrz nowy dokument w edytorze tekstu

lub IDE.
2. Dodaj pocztkowy komentarz i kod (patrz

listing 4.1).
/* if.c - listing 4.1 */

! 
"#
&


3. Zadeklaruj i zainicjalizuj zmienn.


  )

Zmienna test jest liczb cakowit (rwnie


dobrze mogaby by typu  
 ,
jeli chcielibymy by minimalistami). Posuy
nam ona jako element warunku w strukturze
sterujcej.
4. Dodanie komunikatu pocztkowego.

  &
   - 

Komunikat ten zapewni odpowiedni kontekst


dla dowolnego kolejnego tekstu. Gwarantuje,
e aplikacja wywietli jaki tekst niezalenie
od spenienia warunku (w przeciwnym razie
przy faszywym warunku tekst nie zostaby
wywietlony).
5. Zdefiniuj warunek .
  

.../&
   
  01
2- 3  


Jeli warunek jest prawdziwy, zostanie


wywietlony dodatkowy tekst wraz z wartoci
zmiennej . Tak sytuacja wystpi, gdy
zmienna  bdzie zawieraa warto
rn od 0. W przeciwnym razie ()
instrukcja 
  w ogle nie zostanie
wykonana.

75

Instrukcja warunkowa if

/* if.c - listing 4.1 */




! 
"#
$
%&

'
(  )// Zmienna bdca warunkiem.
*
+// Wywietlenie tekstu wprowadzenia.
,
  &
   - 

// Sprawdzenie wartoci zmiennej i wywietlenie
tekstu (jeli test = 0, tekst si nie wywietli).
  
$
.../&
   
 
 012- 3  
%
'
(4 " /* Zatrzymaj, a uytkownik nacinie
klawisz Enter lub Return. */
*
+ 
,
,


Rozdzia 4.
6. Dokocz funkcj 
.
4 " 
 
,


7. Zapisz projekt w pliku if.c.

Rysunek 4.1. Jeli zmienna test ma warto rn


od 0, zostanie wywietlony dodatkowy komunikat

8. Skompiluj i sprawd poprawno kompilacji.


9. Uruchom aplikacj (patrz rysunek 4.1).
10. Aby sprawdzi dziaanie aplikacji dla zmiennej
 rwnej 0, ponownie skompiluj aplikacj,
ustawiajc  na 0 (patrz rysunek 4.2).

W tym przypadku warunek jest faszywy,


wic druga instrukcja 
  nie zostanie
wykonana.

Instrukcja warunkowa if

Wskazwki
 Tworzenie instrukcji warunkowej dla jednego

polecenia bez stosowania nawiasw klamrowych


jest co prawda w peni poprawne, ale moe
prowadzi do bdw, jeli w przyszoci bdzie
si dokonywa modyfikacji warunku. Cho to
rozwizanie jest bardzo kuszce i mona si
na nie natkn, przegldajc kod napisany przez
inne osoby, nie warto go stosowa.
 Standard C99 wprowadza nowy typ danej
o nazwie  warto logiczna. Zmienne

tego typu zawsze bd posiaday warto


0 (fasz) lub 1 (prawda). Wpisanie do zmiennej
jakiejkolwiek wartoci rnej od 0 spowoduje
zamian tej zmiennej na warto 1. rodowisko
Dev-C++ w wersji 4. nie obsuguje typu .
Jest on dostpny dopiero w wersji beta
Dev-C++ 5.
 Dodatkowo standard C99 definiuje plik

stdbool.h, ktry zawiera deklaracj trzech sw


kluczowych:  (odpowiednik ),  
(odpowiednik liczby 1) oraz  (odpowiednik
liczby 0). Czyni to kod jzyka C lepiej
przenonym do jzyka C++.

76

Rysunek 4.2. Jeli zmienna test ma warto


rwn 0, pojawi si tylko jeden komunikat

Struktury sterujce
Tabela 4.1. Operatory logiczne i porwnania
bardzo czsto wystpuj w warunkach i innych
strukturach sterujcych
Operatory logiczne i porwnania
Operator

Znaczenie

wikszy od

mniejszy od

#)

mniejszy od lub rwny

!)

wikszy od lub rwny

))

rwny

>)

rny od

;;

iloczyn logiczny (and)

??

suma logiczna (or)

>

negacja (not)

Operatory logiczne
i porwnania
Korzystanie z prostych zmiennych
(jak w poprzednim przykadzie) raczej nie
pozwoli nikomu zaj daleko w programowaniu
w jzyku C. Aby mc tworzy bardziej
zaawansowane instrukcje warunkowe, trzeba
wykorzysta operatory porwnania i logiczne
(patrz tabela 4.1).


#)*

5  66
78 3
7&94:1


Operatory logiczne bardzo czsto stosuje si


w poczeniu z nawiasami, aby utworzy bardziej
zoone warunki, na przykad zakresy.

#;;
!,

<4=   >


Szczegln uwag naley zwraca na operator


rwnoci (). Jednym z najczstszych bdw
popenianych przez programistw (take tych
wprawionych) jest przypadkowe stosowanie
w miejscu operatora rwnoci operatora
przypisania ().
&)+,

Programista w rzeczywistoci chcia sprawdzi,


czy warto zmiennej  jest rwna 190 (chcia
napisa ), co moe, ale nie musi by
prawd. Niestety, brak jednego znaku powoduje,
i przedstawiony warunek zawsze bdzie
prawdziwy (zmienna przyjmie warto 190,
wic bdzie rna od 0, co przeoy si
na prawdziwo warunku).
W kolejnym przykadzie wykorzystamy operatory
do wywietlenia rnych tekstw w zalenoci
od redniej ocen studenta.
77

Operatory logiczne i porwnania

Operatory porwnania wykorzystuje si dla


wartoci liczbowych, na przykad by wskaza,
czy dana warto jest wysza od innej.
Wykorzystanie wartoci takiego wyraenia
(prawda lub fasz), pozwala konstruowa
bardziej przydatne instrukcje warunkowe.

Rozdzia 4.

Aby wykorzysta operatory logiczne


i porwnania:

Listing 4.2. Dziki operatorom logicznym


i porwnania moliwe jest jednoczesne
sprawdzanie kilku warunkw

1. Utwrz nowy dokument w edytorze tekstu

lub IDE.
2. Dodaj pocztkowy komentarz i kod

(patrz listing 4.2).


/* srednia.c - listing 4.1 */

! 
"#
&


3. Zadeklaruj i zainicjalizuj zmienn.

Operatory logiczne i porwnania

   
)*

Zmienna  
 przechowuje redni ocen
studenta. Na pocztku zostanie ustawiona
na warto .
4. Sprawd, czy studentowi naley si stypendium

za wyniki w nauce.
 
#)$,

@ &  
&


 3
A&0 
62, >- 3
 



Jeli warto  
 jest wysza lub rwna ,
wykonujemy instrukcj wywietlenia tekstu
na ekranie. Jeeli rednia jest mniejsza,
pomijamy instrukcj 
 .
5. Sprawdzenie, czy rednia kwalifikuje si

do otrzymania ksiki.
 
#)+;; 
!$,

@ &
6A83
A&
0 
62, >- 3 



78

/* srednia.c - listing 4.2 */




! 
"#
$
%&

'
(   
)*// rednia ocen studenta.
*
+// Sprawdzenie, czy przysuguje stypendium (rednia
co najmniej 4.0).
  

  

  
! "  # 
$ %&'()"  *
'+

$// Sprawdzenie, czy przysuguje ksika za wyniki.
,  -.//  0

1
  %# 2"  #
 $ %&'()"  *
3+
*
+// Sprawdzenie, czy przysuguje pochwaa za wyniki.
'  -3,//  0-.
' 
 !4 52"  #
 $ %&'()"  *
''+

$4 " /* Zatrzymaj, a uytkownik nacinie
klawisz Enter lub Return. */
%
' 
,
(
*

Struktury sterujce

Rysunek 4.3. W zalenoci od zawartoci zmiennej


srednia na ekranie pojawiaj si rne komunikaty

Korzystajc z operatorw logicznych


i porwnania, sprawdzamy, czy student osign
redni wiksz od 3,9, ale jednoczenie nie
przekroczy redniej 4,0. Z powodu zastosowania
operatora iloczynu logicznego (), aby cay
warunek by prawdziwy, oba warunki skadowe
musz zwrci warto prawdy. Jeli rednia
jest mniejsza od 3,9 lub te rwna albo wiksza
od 4,0, instrukcja z warunku nie zostanie
wykonana.
6. Sprawdzenie, czy student kwalifikuje si

do otrzymania pochway.
 
#)(%;; 
!+

@ &":83
A
&0 
62, >- 3 



7. Dokocz funkcj 
.
4 " 
 
,


8. Zapisz program w pliku srednia.c.


9. Skompiluj i sprawd poprawno kompilacji

(ewentualnie popraw bdy).


10. Uruchom aplikacj (patrz rysunek 4.3).
11. Dla porwnania zmie warto zmiennej
 
 i ponownie skompiluj program

(patrz rysunek 4.4).

Rysunek 4.4. Zastosowanie innej wartoci srednia powoduje uzyskanie innego wyniku

79

Operatory logiczne i porwnania

Ostatni z warunkw dziaa dokadnie tak samo


jak poprzedni, ale korzysta z innych wartoci
w trakcie testw.

Rozdzia 4.
Wskazwki
 Sposb, w jaki zosta napisany przykad,
powoduje, e dla  
 mniejszej od 3,75

nie zostanie wywietlony aden komunikat.


Poprawimy t kwesti w nastpnym przykadzie.
Mona te doda kolejny warunek, ktry
wywietli komunikat dla wartoci mniejszej
od 3,75.

Operatory logiczne i porwnania

 Pamitaj, aby nigdy nie sprawdza rwnoci


dwch zmiennych typu 
 lub 
.

Z racji takiego, a nie innego sposobu


reprezentacji liczb zmiennoprzecinkowych
w komputerze, dwie wartoci wydajce si
by identycznymi mog w rzeczywistoci
rni si na jednej pozycji. Co wicej, liczba
cakowita 2 moe nie by rwna liczbie
zmiennoprzecinkowej 2,0.
 Niektrzy programici zalecaj odwracanie

wartoci w warunku wykorzystujcym rwno,


gdy jednym ze sprawdzanych elementw jest
staa. Oto przykad:
$))4


Zalet takiego rozwizania jest to, e gdy


przypadkowo opucimy jeden ze znakw
rwnoci, kompilator zgosi bd (poniewa
nie mona przypisa zmiennej do konkretnej
wartoci).
 Aby sprawdzi, czy dwa cigi znakw s

identyczne, uywa si specjalnej funkcji


 ! . Funkcja ta zwraca liczb rnic
midzy obu sprawdzanymi tekstami. Jeli
zwrcon wartoci jest 0, oba teksty s
identyczne.
 &&3&)),

Wicej informacji na ten temat znajduje si


w rozdziale 11., Cigi znakw.

80

Dalszy cig kolejnoci


operatorw
Podobnie jak operatory arytmetyczne
take operatory logiczne i porwnania
maj swoj cile okrelon kolejno
wykonywania. Na przykad operatory ", #,
" i # maj wyszy priorytet ni
operatory  i $.
Jeli uwzgldni wszystkie poznane do tej
pory operatory, operatory porwnania
maj wikszy priorytet ni operator
przypisania (), ale niszy priorytet
ni operatory arytmetyczne.
Co wicej, operator negacji ($) ma wikszy
priorytet ni mnoenie i dzielenie,
natomiast operatory iloczynu i sumy
logicznej ( i %%) maj wikszy priorytet
ni operator przypisania (), ale niszy
priorytet ni operatory porwna.
Poza tym operator  jest waniejszy
od operatora %%.
Pogmatwane? Na pewno. Mona
zapamita kolejno wykonywania
wszystkich operatorw (pena lista
priorytetw operatorw znajduje si
w dodatku B) lub te po prostu stosowa
nawiasy.

Struktury sterujce

Klauzule else i else if


Instrukcja warunkowa  jest bardzo uyteczna,
ale moe zosta wzbogacona o dodatkowe elementy
za pomoc klauzul  i . Skadnia
konstrukcji
 jest nastpujca:

/* Zrb co. */
  
/* W przeciwnym razie wykonaj to. */


Rysunek 4.5. Diagram przedstawia


dziaanie warunku if-else

Zauwa, e instrukcje z klauzuli  zostan


wykonane tylko wtedy, gdy gwny warunek nie
bdzie prawdziwy. Innymi sowy, klauzula 
dziaa jak odpowied domylna (patrz rysunek 4.5).

 
/* Zrb co. */
   
/* Zrb co innego. */


Rysunek 4.6. Diagram przedstawia dziaanie


warunku if-else if (elementw else if moe by
nieskoczenie duo)

Liczba klauzul  jest nieograniczona.


Czsto czy si klauzule  i . Wane
jest tylko, by klauzula  by ostatnia (gdy
jest rozwizaniem domylnym). Zmodyfikujmy
wczeniejszy przykad z ocenami, aby uwzgldnia
nowe instrukcje.

81

Klauzule else i else if

Klauzula  jest bardziej rozbudowana, gdy


pozwala dodatkowo sprawdzi kolejny warunek,
jeli okazao si, e pierwszy warunek nie by
prawdziwy (patrz rysunek 4.6).

Rozdzia 4.

Aby skorzysta z klauzul else i else if:


1. Otwrz plik srednia.c (listing 4.2) w edytorze

Listing 4.3. Korzystajc z klauzul else i else if,


zmodyfikowalimy wczeniejszy przykad
ze redni ocen

tekstu lub rodowisku IDE.


2. Usu wszystkie istniejce warunki

(patrz listing 4.3).


Trzy osobne warunki  zostan zastpione
jedn du konstrukcj 
, wic nie bd ju potrzebne.
3. Utwrz gwn ptl.

Klauzule else i else if

 
#)$,

@ &  
&


 3
A&0 
62, >- 3
 

   
#)+

@ &
6A83
A
&0 
62, >- 3 

   
#)(%

@ &":83
A
&0 
62, >- 3 

  

5A :& 78


30 
 
 - 


Same warunki s bardzo podobne do tych


z poprzedniego przykadu, ale teraz wszystko
stanowi jedn du instrukcj warunkow.
Aplikacja bdzie sprawdzaa warunki tak
dugo, a ktry z nich nie okae si
prawdziwy. W przeciwnym razie zostanie
wykonana klauzula .

82

/* srednia2.c - listing 4.3 - przerbka listingu 4.2


 (srednia.c) */


! 
"#
$
%&

'
(   
)*// rednia ocen studenta.
*
+// Raport na temat redniej.
  

  

  
! "  # 
$ %&'()"  *
'+    -.
-
  %# 2"  #
 $ %&'()"  *
+    -3,
,
 !4 52"  #
 $ %&'()"  *
1+  
36# 5
72
  "$    )*
8+
+
,4 " /* Zatrzymaj, a uytkownik nacinie
klawisz Enter lub Return. */

 
,

$

Struktury sterujce
Zauwa, e drugi i trzeci warunek nie musz
sprawdza, czy warto jest mniejsza
od konkretnej liczby. Na przykad, jeli  

wynosi 3,8, pierwszy i drugi warunek jest
faszywy, a dopiero trzeci jest prawdziwy.
W trzecim warunku nie trzeba ju sprawdza,
czy  
 jest mniejsza od 3,9, poniewa
zostao to stwierdzone ju w drugim warunku.
Skoro program sprawdza dany warunek, mamy
pewno, e poprzednie warunki z tej samej
konstrukcji byy faszywe.
4. Zapisz program w pliku srednia2.c, skompiluj

i uruchom go (patrz rysunek 4.7).


5. Zmie warto zmiennej  
 na inn

i ponownie skompiluj oraz uruchom aplikacj


(patrz rysunek 4.8).
Wskazwki
wcicia dla instrukcji znajdujcych si wewntrz
klauzul ,  i . Zwiksza to
czytelno kodu.
 Podobnie jak zwyka konstrukcja , take 
i  nie wymagaj stosowania nawiasw

klamrowych, gdy wystpuje po nich tylko jedna


instrukcja. Warto jednak dodawa te nawiasy,
aby w przyszoci nie popeni bdw.

Rysunek 4.7. Dla wielu rednich aplikacja zachowuje si


dokadnie tak samo jak poprzednio (patrz rysunki 4.3 i 4.4)
pomimo zmian w warunkach

Rysunek 4.8. Nowa odpowied zostanie wywietlona


dla rednich poniej 3,75

83

Klauzule else i else if

 Cho nie jest to wymagane, warto wprowadza

Rozdzia 4.

Operator trjargumentowy
Jzyk C posiada skadni alternatywn dla
konstrukcji . Jest to tak zwany operator
trjargumentowy. Nazwa wynika z faktu,
e operator ten wymaga trzech parametrw
(skada si z trzech czci). Oto jego podstawowa
skadnia:
BC 

Operator trjargumentowy

Zauwamy, e operator ten zwraca jedn z dwch


wartoci w zalenoci od warunku. Zwracan
warto mona przypisa do zmiennej lub
wywietli. Na przykad poniszy kod zwrci
informacj o tym, czy liczba jest wartoci
parzyst czy nieparzyst. Do sprawdzenia
parzystoci uywamy operatora reszty z dzielenia.
!4   D
  
  D
  )
72)),B
EECE E

Gdyby w tym samym celu zastosowa warunek ,


wygldaby on nastpujco:
!4   D
  

72)),
  D
  )EE
  
  D
  )E E


W nastpnym przykadzie operator


trjargumentowy zostanie wykorzystany
do wywietlenia odpowiedniego komunikatu
w zalenoci od temperatury.

Aby wykorzysta
operator trjargumentowy:
1. Utwrz nowy, pusty dokument w edytorze

tekstu lub IDE.


2. Dodaj pocztkowy komentarz i kod

(listing 4.4).
/* pogoda.c - listing 4.4 */

! 
"#
&


84

Listing 4.4. Operator trjargumentowy czsto stosuje


si jako krtsz wersj warunku if-else, jeli trzeba
zwrci jedn z dwch wartoci
/* pogoda.c - listing 4.4 */


! 
"#
$
%&

'
( &   )*// Temperatura
w stopniach Celsjusza.
*
+ &   #,// Sprawd,
czy gorco.
,

F 2 
3
  
 7 4 6- 3 &   

   &   !,// Wywietl
'zimno' lub 'lodowato' w zalenoci
 od temperatury.
$
%
F 2 
3
  
 2>- 3 &   3
 &   !,B C

& 
'
(  // Nie jest ani za gorco, ani za zimno.
*
.9 &"!  
 ! 5    )"
   
 *
,



$4 " /* Zatrzymaj, a uytkownik nacinie
klawisz Enter lub Return. */
%
' 
,
(
*

Struktury sterujce
3. Zadeklaruj i zainicjalizuj zmienn cakowit.
 &   )*

Ta zmienna przechowuje aktualn temperatur


w stopniach Celsjusza.
4. Rozpocznij gwny warunek .
 &   #,

F 2 
3
  
 7 4 6- 3 &   

Pierwszy warunek sprawdza, czy na dworze jest


ponad 30 stopni Celsjusza. Jeli tak, wywietla
aktualn temperatur i informuje o tym, e jest
gorco (jest to program dla osb, ktre lubi,
by komputer informowa je o rzeczach
oczywistych).
5. Dodaj warunek  wraz z operatorem

   &   !,



F 2 
3
  
 2>- 3 &   3 &   
!,B C
& 

Jeli jest poniej 10 stopni, aplikacja wywietli


& lub 
  w zalenoci od tego, jak
bardzo jest zimno. Zamiast uywa osobnej
konstrukcji , stosujemy operator
trjargumentowy wewntrz instrukcji 
 .
Znacznik ' wewntrz tekstu komunikatu okrela
miejsce, w ktrym zostanie wstawiona warto
zwrcona przez operator trjargumentowy
(patrz trzeci parametr funkcji 
 ). Operator
sprawdza, czy temperatura ma warto poniej 0.
Jeli tak, zwraca warto &.
W przeciwnym razie zwraca warto 
 .
Zauwa, e obie wartoci to cigi znakw
(poniewa znajduj si w cudzysowach).

85

Operator trjargumentowy

trjargumentowym wewntrz instrukcji



 .

Rozdzia 4.
6. Dokocz warunek.
  

F 2 
3
  
 :
& &
- 3 &    Rysunek 4.9. Jeli jest ponad 30 stopni, pojawia
si nastpujcy komunikat (patrz listing 4.4)


Jeeli temperatura jest midzy 10 a 30 stopniami,


informujemy o przyjemnej pogodzie za oknem.
7. Zakocz funkcj 
.
4 " 
 
,


8. Zapisz dokument w pliku pogoda.c.


9. Skompiluj kod.

Operator trjargumentowy

10. Uruchom aplikacj (patrz rysunek 4.9).


11. Zmodyfikuj warto zmiennej   ,

a nastpnie ponownie skompiluj i uruchom


aplikacj (patrz rysunek 4.10).
Wskazwki
 Mona zmodyfikowa przedstawiony powyej

kod, na przykad zmieniajc pierwszy warunek


na 22 stopnie i dodajc w instrukcji 
 
operator trjargumentowy rozrniajcy stan
!
( i ) *!.
 Gwn zalet operatora trjargumentowego

jest jego bardzo zwizy zapis w porwnaniu


z konstrukcj
. Wad jest zmniejszona
przejrzysto kodu.

86

Rysunek 4.10. Jeli jest poniej 10 stopni,


za pomoc operatora trjargumentowego
wybierany jest komunikat lodowato lub zimno

Struktury sterujce

Instrukcja switch
Poza operatorem trjargumentowym istnieje rwnie
inna odmiana tradycyjnego warunku, a mianowicie
instrukcja  . Przyjmuje ona jako swj
parametr warto cakowit, a nastpnie sprawdza
j wzgldem kilku wymienionych moliwoci.
Oto przykad:
!4 
!  ,,%C
/* Zrb co. */
7 
!  ,,$C
/* Zrb co innego. */
7 
 
C
/* Zrb to. */
7 


Moliwo   jest opcjonalna, ale gdy ju si


j dodaje, to zazwyczaj na samym kocu instrukcji
 . Jeli adna z wczeniejszych moliwoci
nie bdzie poprawna, wykonany zostanie kod
moliwoci   (dziaa ona mniej wicej
tak samo jak klauzula ).
Kolejny przykad dziaa rnie w zalenoci
od wartoci waciwoci !. Zmienna typu   ,
ktra tak naprawd jest okrojonym typem  ,
bez problemw funkcjonuje w instrukcji  .

87

Instrukcja switch

Instrukcja   jest niezmiernie wana, jeli chodzi


o dziaanie instrukcji  . Po dotarciu do  
aplikacja opuci cay fragment  . Jeli pominie
si  , wykonane zostan take pozostae
instrukcje, nawet te nalece do innych moliwoci.

Rozdzia 4.

Aby uy instrukcji switch:


1. Utwrz nowy, pusty dokument w edytorze

Listing 4.5. Instrukcja switch pozwala okreli


rne odpowiedzi dla rnych wartoci cakowitych
lub znakw

tekstu lub IDE.


2. Dodaj pocztkowy komentarz i kod (listing 4.5).
/* plec.c - listing 4.5 */

! 
"#
&


3. Zadeklaruj i zainicjalizuj zmienn znakow.


!4 )E5E

Zmienna przechowuje pe osoby jako


pojedynczy znak.
4. Rozpocznij instrukcj  .

Instrukcja switch

!4

Poprawna skadnia instrukcji  wymaga


zastosowania sowa kluczowego 
i podania w nawiasach testowanej zmiennej.
Otwierajcy nawias klamrowy oznacza pocztek
zawartoci instrukcji  .
5. Dodaj pierwsz moliwo.
!  E5EC

G
& >- 
7 

Pierwszy element sprawdza, czy zmienna


zawiera warto +. Jeli tak, wywietlany jest
tekst ,
 $. Instrukcja   wymusza
wyjcie z konstrukcji  , aby pozostae
instrukcje 
  nie zostay wykonane.
6. Dodaj drug moliwo.
!  EHEC

G
&
6>- 
7 

Struktura tego elementu jest taka sama jak


elementu z kroku poprzedniego. Po prostu
testowana jest inna warto.

88

/* plec.c - listing 4.5 */




! 
"#
$
%
&
I

'
(" )E5E// Pe jako znak pojedynczy.
*
.!4 !// Zmie wywietlane
pozdrowienie.
,
!  :6:;
'<   ()*
-7 *
$
,!  :=:;
1<  %()*
37 *
*
. 
;
'<  !4()*
' 7 *

'-+// Koniec instrukcji switch.
$
%4 " /* Zatrzymaj, a uytkownik
nacinie klawisz Enter lub Return. */
'
(   ,
*
+

Struktury sterujce
7. Dodaj domylny element i zakocz instrukcj
 .
Rysunek 4.11. Wynik wykonania programu
dla zmiennej ustawionej na warto M

Rysunek 4.12. Jeli zmienna nie jest rwna M


ani F, stosowany jest element domylny

 
C

G
& 
">- 
7 


Jeli zmienna ! nie zawiera wartoci + lub (cho jest to mao prawdopodobne), pojawi si
oglny komunikat.
8. Zakocz funkcj 
.
4 " 
 
,


9. Zapisz dokument w pliku plec.c.


10. Skompiluj przykad.
11. Uruchom aplikacj (patrz rysunek 4.11).
12. Dla porwnania zmie warto zmiennej

Wskazwki
 Gwn wad instrukcji  jest to, e mona
 Nic nie stoi na przeszkodzie, by te same

instrukcje dotyczyy kilku moliwoci.


Wtedy skadnia konstrukcji  jest
nastpujca:
!4
!  E5EC
!  E&EC
/* Zrb co. */
7 
!  EHEC
!  EEC
/* I tak dalej... */
7 


jej uywa tylko dla liczb cakowitych


i pojedynczych znakw. Znacznie ogranicza
to jej przydatno. Gdy jednak mona j
zastosowa, byaby konstrukcj szybsz
i bardziej przejrzyst ni .
 W jzyku C istnieje jeszcze jedna instrukcja

sterujca nieomawiana w tej ksice


instrukcja 

. Osoby zaznajomione
z innymi jzykami, takimi jak na przykad
Basic lub Pascal, powinny j zna, ale tak
naprawd w jzyku C nie jest ona do niczego
potrzebna.

89

Instrukcja switch

na inn liter lub spacj, a nastpnie ponownie


skompiluj i uruchom aplikacj (patrz
rysunek 4.12).

Rozdzia 4.

Ptla while
Instrukcje warunkowe to tylko jeden rodzaj
sterowania dziaaniem programu drugim s ptle.
Jzyk C obsuguje dwie postacie ptli:   (i jego
siostra 
 ) oraz 
. Kady z typw ptli
wykonuje to samo zadanie powtarza okrelony
cig instrukcji a do uzyskania faszywoci pewnego
warunku ale w nieco inny sposb.
Ptla   wyglda bardzo podobnie
do instrukcji , gdy wykonuje pewne
instrukcje, gdy okrelony warunek jest
prawdziwy.

Ptla while

4 
/* Zrb co. */


Gdy wykona si jedna iteracja ptli, warunek


sprawdzany jest ponownie. Jeeli nadal jest
prawdziwy, zachodzi kolejna iteracja ptli. Jeli
jest faszywy, program przechodzi do nastpnej
instrukcji po ptli (patrz rysunek 4.13).
Typowym bdem pocztkujcych programistw
jest tworzenie ptli, w ktrych warunek nigdy
nie stanie si faszywy. Powstaje wtedy ptla
nieskoczona (aplikacja dziaa i dziaa). Z tego
powodu trzeba zapewni takie okrelenie zawartoci
ptli, by w pewnym momencie warunek przesta
by prawdziwy.
W nastpnym przykadzie wykorzystamy ptl
  do napisania programu, ktry obliczy silni
z wybranej liczby. Silna (reprezentowana przez znak
wykrzyknika) to warto uzyskana z mnoenia
wszystkich liczb cakowitych od 1 a do podanej
wartoci. Oto przykad:
%>)...$.%// 120
>)..// 6

90

Rysunek 4.13. Diagram prezentujcy dziaanie


ptli w jzyku C. Instrukcje wykonywane s
tak dugo, jak dugo warunek jest prawdziwy

Struktury sterujce
Listing 4.6. Ptla while pomaga policzy silni
z wybranej liczby. Ptla wykonuje si tak dugo,
jak dugo zmienna mnoznik jest mniejsza
lub rwna zmiennej liczba

1. Utwrz nowy dokument w edytorze tekstu

lub IDE.
2. Dodaj pocztkowy komentarz i kod (listing 4.6).
/* silnia.c - listing 4.6 */

! 
"#
&


3. Zadeklaruj i ustaw wartoci zmiennych.

> 
7)%

> 
)

> & 
)

Aplikacja korzysta z trzech wartoci cakowitych


bez znaku. Przypisujemy zmiennym wartoci
pocztkowe. Zmienna 
! okrela warto,
dla ktrej liczymy silni. Zmienna &.
/
przechowuje wyniki oblicze. Zmienna  
/
jest wykorzystywana w ptli do obliczenia silni.
4. Rozpoczcie ptli  .
4 & 
!)
7

Silni liczymy, mnoc wynik przez kolejne


liczby cakowite od 1 do 
!. Obliczenia
wykonujemy w ptli, wic warunek ptli
musi pozwala wyj z ptli po wykonaniu
odpowiedniej liczby mnoe. Gdy  
/ jest
mniejszy lub rwny zmiennej 
!, oznacza to,
e obliczenia jeszcze si nie zakoczyy i trzeba
wykona zawarto ptli. W przeciwnym razie
wszystkie obliczenia zostay przeprowadzone.

91

Ptla while

/* silnia.c - listing 4.6 */




! 
"#
$
%&

'
(// W tym przykadzie stosujemy tylko liczby
dodatnie.
*
+
> 
7)%// Warto, z ktrej
wyliczamy silni.
,
> 
)// Zmienna
przechowujca przyszy wynik - silni.

> & 
)// Mnonik
uywany do obliczenia silni.

// Przejd przez wszystkie mnoniki od 1 do liczba.
4  0 !7 
,
1 ? *// Mnoenie
wczeniejszego wyniku przez mnonik.
3@@ *// Inkrementacja mnonika.
8
.+// Koniec ptli.
,
// Wywietlenie wyniku.

J


72 2- 3

73


$4 " /* Zatrzymaj, a uytkownik nacinie
klawisz Enter lub Return. */
%
' 
,
(
*

Aby uy ptli while:

Rozdzia 4.
5. Wykonaj obliczenia.

.)& 


Przy wykorzystaniu operatora przypisania


z mnoeniem warto zmiennej &.
/ jest
ustawiana na warto &.
/ pomnoon przez
warto zmiennej  
/. Przy pierwszej
iteracji ptli zmienna &.
/ bdzie rwna 1
(11). W drugiej iteracji bdzie rwna 2 (12),
w trzeciej 6 (23), w czwartej 24 (64),
a w pitej i ostatniej 120 (245).
6. Zwiksz warto zmiennej  
/ o 1.
KK& 


W pewien sposb jest to najwaniejszy wiersz


ptli. Jeli warto zmiennej mnonik nie
byaby zwikszana, warunek trwania ptli
byby zawsze prawdziwy, wic powstaaby
ptla nieskoczona.

Ptla while

7. Dokocz ptl  .


// Koniec ptli.

Gdy kod staje si coraz to bardziej zoony,


warto oznacza komentarzem, ktrej ptli
dotyczy dane zakoczenie.
8. Wywietlenie wynikw oblicze.

J


72 2- 3

73


Instrukcja 
  wywietla zarwno
parametr silni, jak i sam wynik oblicze.
9. Dokocz funkcj 
.
4 " 
 
,


10. Zapisz dokument w pliku silnia.c.


11. Skompiluj kod rdowy.

92

Instrukcje break, continue i exit


Instrukcja   (ktra wystpuje midzy
innymi we wntrzu instrukcji  ) jest
po prostu jedn z konstrukcji jzyka C
stosowan wewntrz struktur sterujcych.
Przypomnijmy, e instrukcja   pozwala
opuci aktualn ptl lub instrukcj
 . Oto przykadowy sposb jej uycia:
4 
/* Wykonaj cokolwiek. */


7 /* Opuszczenie ptli. */



Instrukcja 
  pozwala opuci
aktualn iteracj ptli i powrci
do sprawdzania warunku. Po sprawdzeniu
warunku ptla moe, ale nie musi, by
wykonywana po raz kolejny.
4 
/* Wykonaj cokolwiek. */



/* Powrt do pocztku ptli. */



Warto podkreli, e przedstawione


powyej instrukcje dziaaj tylko w ptlach
i instrukcjach  . Nie s aktywne
w instrukcjach .
Inn konstrukcj jzyka C jest instrukcja
0
 powodujca wyczenie caej aplikacji.
Pod koniec ksiki pokaemy, w jaki
sposb skorzysta z tej instrukcji, jeli
w trakcie dziaania programu wystpi
powany problem.

Struktury sterujce
12. Uruchom aplikacj (patrz rysunek 4.14).
13. Dla porwnania zmodyfikuj warto zmiennej

!, a nastpnie ponownie skompiluj
Rysunek 4.14. Uruchomienie aplikacji
pozwala pozna warto silni dla liczby 5

i uruchom program (patrz rysunek 4.15).


Wskazwki
 Istnieje odmiana ptli   o nazwie

 . Gwna rnica midzy ni

Rysunek 4.15. Wystarczy tylko zmieni


warto zmiennej liczba, aby program
przedstawi now warto silni

a przedstawion wczeniej wersj polega


na tym, e warunek sprawdzany jest na kocu
ptli (co oznacza, e ptla wykona si co
najmniej jeden raz). Oto skadnia tej ptli:

/* instrukcje */
4 

 W rozdziale 5., Standardowe wejcie i wyjcie,


wykorzystamy ptl   do cigego

pobierania znakw z klawiatury.


 Przedstawiona aplikacja z silni moe

93

Ptla while

by doskonaym przykadem problemu


z przepenieniem (patrz rozdzia 3., Liczby).
Gdy oblicza si silni z duych liczb, bardzo
atwo mona przekroczy dopuszczalny zakres
wartoci liczb cakowitych.

Rozdzia 4.

Ptla for
Ostatni struktur sterujc omawian w tym
rozdziale (jak i w caej ksice) jest ptla 
.
Podobnie jak ptla   wykonuje ona pewn
liczb iteracji, a kada iteracja skada si z wczeniej
okrelonych polece. Cho dziaanie obu ptli
jest podobne, ich skadnia jest zdecydowanie inna.

Ptla for

    



  
/* Zrb cokolwiek. */


Gdy aplikacja po raz pierwszy dotrze do ptli,


wykonuje wyraenie inicjalizujce. Nastpnie
sprawdzony zostanie warunek dziaania ptli.
Jeli bdzie prawdziwy, wykona si kod ptli
(reprezentowany tutaj przez komentarz 1 2
!/&
/). Przed przejciem do nastpnej iteracji
zostanie wykonane wyraenie iteracyjne. Nastpnie
dojdzie do ponownego sprawdzenia warunku. Cay
proces bdzie si powtarza (poza wyraeniem
inicjalizujcym, patrz rysunek 4.16) a do uzyskania
faszywego warunku dziaania ptli. W ptli 

wyraenie iteracyjne jest odpowiedzialne
za doprowadzenie w pewnym momencie
do zmiany warunku ptli na fasz.
Zmodyfikujmy przykad z silni w taki sposb, aby
wykorzysta ptl 
. Przekonamy si, e ptli

i   uywa si w bardzo podobny sposb.

Aby uy ptli for:


1. Otwrz plik silnia.c (listing 4.6) w edytorze

tekstu lub rodowisku IDE.


2. Zmodyfikuj nazw zmiennej  
/ na

oraz nie ustawiaj jej wartoci pocztkowej


(patrz listing 4.7).

> 


Przyjo si oznacza w jzyku C zmienn


zwizan z ptl 
liter
. Cho nie jest to
konieczne, w tym rozdziale zastosujemy si
do tego zalecenia. Nie trzeba przy deklaracji
ustawia wartoci pocztkowej zmiennej,
gdy zostanie to wykonane w ptli 
.

94

Listing 4.7. Powrt do przykadu z silni


i zamiana ptli while na ptl for
/* silnia2.c - listing 4.7 - modyfikacja listingu 4.6
(silnia.c) */


! 
"#
$
%&

'
(// W tym przykadzie stosujemy tylko liczby
dodatnie.
*
+
> 
7)%// Warto,
z ktrej wyliczamy silni.
,
> 
)// Zmienna
przechowujca przyszy wynik - silni.

> *// Mnonik uywany
do obliczenia silni.

// Przejd przez wszystkie mnoniki od 1 do liczba.
 *0 !7 *@@
%
1 ?*// Mnoenie wczeniejszego
wyniku przez mnonik.
(
8+// Koniec ptli.
+
,// Wywietlenie wyniku.

J


72 2- 3

73


4 " /* Zatrzymaj, a uytkownik nacinie
klawisz Enter lub Return. */
$
% 
,
'
(

Struktury sterujce
3. Usu ca ptl  .
4. Rozpocznij definicj ptli 
.

)
!)
7KK


Przy pierwszym napotkaniu ptli aplikacja


ustawi warto zmiennej
na 1. Nastpnie,
jeli liczba jest wiksza lub rwna
, ptla
bdzie wykonywa instrukcj z kroku 5.
Po wykonaniu instrukcji z ptli (po kadej
iteracji) nastpi inkrementacja zmiennej
o 1.
5. Dodaj instrukcj wewntrz ptli.

.)


Poniewa mnonik nosi teraz nazw


, trzeba
odpowiednio zmodyfikowa wntrze ptli.
Zauwa, e inkrementacja mnonika wystpuje
teraz w definicji ptli i nie stanowi czci
instrukcji wykonywanych w samej ptli.
6. Zamknij ptl.
// Koniec ptli.

7. Zapisz dokument w pliku silnia2.c.


8. Skompiluj i w razie koniecznoci popraw

kod programu. Uruchom aplikacj wynikow


(patrz rysunek 4.17).
Rysunek 4.17. Ptla for oblicza silni
rwnie wydajnie jak ptla while

9. Jeli chcesz, zmodyfikuj warto zmiennej



!, a nastpnie skompiluj i ponownie

uruchom aplikacj.

95

Ptla for

Rysunek 4.16. Dziaanie ptli for jest nieco


inne od dziaania ptli while, gdy dochodzi
inicjalizacja zmiennej i wyraenie inkrementacyjne

Rozdzia 4.
Wskazwki
 Cho na og w ptli 
korzysta si z trzech

osobnych wyrae, mona utworzy bardziej


rozbudowane rozwizanie. Pierwsza i ostatnia
cz ptli 
(wyraenie pocztkowe
i iteracyjne) moe posiada wiele wyrae,
jeli zostan one oddzielone przecinkami.

)3
)
!)
7KK


 Co wicej, wszystkie z trzech wyrae s

opcjonalne.


Powyszy kod jest w peni poprawny


i powoduje utworzenie ptli nieskoczonej.
 Ptl 
bardzo czsto stosuje si w poczeniu

z tablicami, aby wykona operacje na ich


elementach. To zagadnienie przedstawimy
dokadniej w rozdziale 6., Tablice.
 W trakcie zagniedania ptli 
(patrz ramka)

Ptla for

czsto najbardziej zewntrzna ptla stosuje


zmienn
, bardziej wewntrzna zmienn ,
a najbardziej wewntrzna zmienn /.

96

Zagniedanie instrukcji
warunkowych i ptli
Jzyk C umoliwia zagniedanie rnych
struktur sterujcych, na przykad
umieszczenie jednej instrukcji warunkowej
wewntrz innej, jednej ptli wewntrz
drugiej, ptli wewntrz instrukcji
warunkowej itp. Gdy jednak korzysta si
z tego rozwizania, niezmiernie wane
jest zachowanie odpowiedniej skadni.
Oto kilka sugestii zwizanych
z zagniedaniem struktur sterujcych:
 Zawsze uywaj otwierajcych
i zamykajcych nawiasw klamrowych
do oznaczenia pocztku i koca
struktury sterujcej.
 Stosuj coraz wiksze wcicia
dla kolejnych zagniede.
 Korzystaj z komentarzy w celu opisania
dziaania struktury sterujcej.
W trakcie stosowania zagniede
czsto popenianym bdem jest brak
zrwnowaenia liczby nawiasw
otwierajcych i zamykajcych.
W dalszej czci ksiki pojawi si wiele
zagniede. Wszystkie stosuj si
do powyszych sugestii w celu
zminimalizowania liczby bdw.

You might also like