1 ELEMENTARZ
1 ELEMENTARZ
’\n’llc==’\t’)
if (C >= 'O' && C <= ’9') -H-ndigitfc-O']; else if ( c == ’ ’ || c == -H-nwhite; else
++nother;
Wzorzec
if (warunek-1) instrukcja-1 else if (warunek-2) instrukcja-2
else
instrukcja-n
pojawia się ciągle w programach jako sposób wyrażania decyzji wielowariantowycl Warunki są obliczane kolejno, począwszy od najwyższego, aż zostanie znaleziony m runek prawdziwy, po czym wykonuje się związaną z nim instrukcję i resztę się pomijj (Każda instrukcja może być zbudowana z kilku instrukcji zawartych w nawiasach kl« rowych.) Niespełnienie żadnego z warunków spowoduje wykonanie instrukcji znajduj* cej się po ostatnim słowie else, o ile takie występuje. Jeśli końcowe else i instrukcja opuszczone, jak w programie zliczania słów, to nie podejmuje się żadnej akcji. Międz] początkowym if i końcowym else może wystąpić dowolna liczba zestawów
else if (warunek) instrukcja
Sposób zapisu tej konstrukcji jest kwestią stylu, radzimy jednak robić to tak, jak pokfr zaliśmy; gdyby każde wystąpienie if było odsunięte od lewego marginesu wyznaczo-nego przez poprzednie else, wówczas długa sekwencja takich decyzji wymaszerowa łaby poza prawą krawędź strony.
W rozdziale 3 omawiamy instrukcję switch pozwalającą zapisać decyzje wielow* riantowe w inny sposób. Jest ona szczególnie użyteczna w sytuacjach, w który* sprawdza się przynależność wartości wyrażenia całkowitego lub znakowego do okre! lonego zbioru stałych. Dla porównania w p. 3.4 prezentujemy inną wersję tego pi gramu, zawierającą właśnie instrukcję switch.
Ćwiczenie 1.13. Napisz program tworzący histogram długości słów wejściowych. Łatwiej rysuje się histogram z wykresami poziomymi; pionowa orientacja jest bardziej wymagająca.
1-7 FUNKCJE
Ćwiczenie 1.14. Napisz program tworzący histogram częstości wyst nych znaków pochodzących z wejścia.
Funkcja w języku C jest równoważna podprogramowi lub funkcji w Fortranie, a także procedurze lub funkcji w Pascalu. Funkcja jest wygodnym sposobem zamknięcia pewnych obliczeń w „czarnej skrzynce”, której później można używać nie dbając o to, jak je zrealizowano. Dzięki dobrze zaprojektowanym funkcjom można zignorować to, jak zadanie zostało wykonane; wystarczy wiedzieć co będzie zrobione. Język C opracowano tak, aby posługiwanie się funkcjami było łatwe, wygodne i skuteczne; często w programach napotkasz funkcje, których definicje składają się z kilku wierszy i które są wywołane tylko raz - po prostu dla większej czytelności fragmentu programu.
Dotychczas korzystaliśmy jedynie z funkcji, w które zostaliśmy wyposażeni, jak printf, getchar czy putchar; nadszedł czas, aby napisać kilka własnych. W języku C nie występuje operator potęgowania, taki jak ** w Fortranie, mechanizm definiowania funkcji zademonstrujemy więc pisząc funkcję power(m,n), podnoszącą liczbę całkowitą m do potęgi całkowitej dodatniej n. Na przykład wartością wyrażenia power(2,5) jest 32. Funkcja ta nie jest zbyt użyteczna, gdyż oblicza jedynie dodatnie potęgi małych liczb całkowitych, ale dla naszych potrzeb zupełnie wystarczy. (W bibliotece standardowej występuje funkcja pow(x,y), która podnosi wartość x do potęgi y.)
Oto funkcja power i program główny, który ją wywołuje; od razu można więc zobaczyć całą strukturę programu.
#include <stdio.h>
int power(int m, int n);
/* testowanie funkcji power */ main()
int i;
for (i = 0; i < 10; -f+i)
printf(”%d %ć %d\n”, i, power(2,i), power(-3,i)); return 0;
47