ANSI C 2

ANSI C 2



3 STEROWANIE

Dwuznaczność la jest szczególnie szkodliwa w sytuacjach podobnych do tej:    |

if (n >= 0)    I

for (i = 0; i < n; i++)    I

if (s[i] > 0) {    I

printf(”...”);    j

return i;    I

}    I

else I* ŹLE */    I

printf("Błąd — n jest ujemne\n”);    I

Wcięcie wyraźnie pokazuje, o co Ci chodzi, lecz kompilator o tym nie wie i przypo-i rządkuje else wewnętrznej instrukcji if. Ten rodzaj błędu może być bardzo trudny do wykrycia; przy zagnieżdżonych instrukcjach if dobrym pomysłem jest stosowanie nawiasów klamrowych.    I

Przy okazji zwróć uwagę na średnik po wyrażeniu z = a w konstrukcji    1

if (a > b)    1

z = a;    , I

else

z = b;    i; I

Wynika to z faktu, że zgodnie z gramatyką języka C po if następuje instrukcja, a in-strukcja-wyrażenie, jak z = a;, jest zawsze zakończona średnikiem.    ;


Konstrukcja else-if

Konstrukcja if (wyrażenie) instrukcja else if (wyrażenie) instrukcja else if (wyrażenie) instrukcja else if (wyrażenie) instrukcja else

instrukcja

pojawia się na tyle często, że warto ją omówić oddzielnie. Taki ciąg| najbardziej ogólnym sposobem zapisania decyzji wielowariantowych. Kolejno oblicza się wartości wyrażeń: pierwsze napotkane wyrażenie prawdziwe spowoduje wykonanie związanej z nim instrukcji i zakończenie wykonywania całej konstrukcji. Jak zwykle, instrukcją może być zarówno jedna instrukcja, jak i grupa instrukcji ujęta w nawiasy klamrowe.

Ostatnia część else oznacza „żaden z powyższych warunków", określa więc akcję podejmowaną w sytuacji, w której wszystkie poprzednie wyrażenia były fałszywe. Czasem taka akcja nie jest jawnie określona, wówczas końcówkę

else

instrukcja

można pominąć bądź użyć do sygnalizacji błędu - wystąpienia sytuacji „niemożliwej”.

Aby zilustrować decyzję trójwariantową, napiszemy funkcję wyszukiwania metodą bisekcji, która sprawdza, czy dana wartość x występuje w uporządkowanej tablicy v. Elementy tablicy v muszą być uporządkowane rosnąco. Jeśli wartość x jest elementem tablicy V, to funkcja zwróci jego pozycję (liczbę z przedziału od 0 do n-1); w przeciwnym przypadku zwróci -1.

Przy wyszukiwaniu metodą bisekcji najpierw porównuje się daną wartość X ze środkowym elementem tablicy v. Jeśli jest ona mniejsza niż wartość tego elementu, poszukiwanie skupia się na pierwszej - „niższej” - połowie tablicy, jeśli zaś jest większa- na drugiej „wyższej”. W obu przypadkach następnym krokiem jest porównanie wartości x ze środkowym elementem wybranej połowy. Ten proces dzielenia terenu poszukiwań na pół powtarza się dopóty, dopóki wartość nie zostanie znaleziona lub okaże się, że teren poszukiwań jest pusty.

Zasadniczą decyzję podejmuje się w zależności od tego, czy wartość x jest mniejsza, większa czy równa wartości środkowego elementu v[mid], wskazanego w każdym kroku pętli. Tego rodzaju rozstrzyganie jest charakterystyczne dla konstrukcji else-if.


I* binsearch: szukaj x wśród v[0] <= v[11 <=...<= v[n-1] */ •nt binsearch(int x, int v[], int n)

{

int Iow, high, mid;

Iow = 0; high = n - 1;



Wyszukiwarka

Podobne podstrony:
IMAG0076 * Zasad* la jest szczególnie przydatna w przypadku gdy entalpia denty reakcji nie jest tabl
higeina 26 97 H2S. jest szczególnie niebezpieczny, ponieważ wysokie stężenia tego ~ł=u nie są częst
DSC05 (2) Określenie poziomu wydolności fizycznej (V02max) jest szczególnie istotne przy kwalifikow
DSCK0021 (6) Zastosowanie czynników- fizycznych jest szczególnie korzystne, gdyż w przeciwieństwie d
page0007 ■WSTĘP.O zadaniu statystyki moralności szczególniej w naszym kraju i o materyałacli do tej
Zastaw Zastaw - jest ograniczonym prawem rzeczowym podobnym do hipoteki a w przeciwieństwie do niej
DSC03056 2) komory dzielone, tj. takie, których objętość jest podzielona na dwie przestrzenie; do te
Nasz Podopieczny Dominik jest osobą z niepełnosprawnością w stopniu znacznym Do tej pory opieko
10578701 43 żc się tam gaz znajduje. Woń tu jest niemal zupełnie podobną, do tej jaka się ezuć daj
DSCN7890 422 Część lV. Freud; polityku Jest to sytuacja „strukturalnie” bardzo podobna do tej, którą
ssmamZgadnij co jest w środkuZabawa z pudełkami Pudełka potrzebne do tej zabawy możemy wykonać sami
burak ćwikłowy Pobudza apetyt i jest lekkostrawny. Zawiera związki podobne do estrogenów. Działa odk

więcej podobnych podstron