Z. Rudnicki: MATLAB - KOMPENDIUM
c) Napisz program „ekspercki” pomagający stwierdzić przyczynę nie świecenia lampy (żarówka, bezpieczniki, kabel,...), to znaczy wydający polecenia, zadający pytania oraz udzielający rad.
Instrukcja SWITCH (czyli „przełącznik”) ma postać: switch w case wl instrl case w2 instr2
otherwise
instrN
end
gdzie: w - zmienna lub wyrażenie, które musi mieć wartość skalarną lub znakową,
instrl, instr2, ... , instrN - to bloki instrukcji, wl, w2, ... - wartości zapisane w postaci stałych Pozwala ona wybrać i wykonać jeden z wielu bloków instrukcji.
Instrukcja wyznacza wartość wyrażenia „w” umieszczonego po słowie „switch” a następnie wykonuje ten blok instrukcji, przed którym zapisano po słowie „case” stałą równą wartości wyrażenia „w”. Jeśli żadna ze stałych „wl, w2, ...” nie jest równa wartości wyrażenia „w”, to zostanie wykonany blok instrukcji zapisany po słowie kluczowym otherwise.
Przykład 2:
elear; disp('Kalkulator cztero-działaniowy:') x=input('x='); y=input('y='); zn=input('wpisz znak działania:', 's'); switch zn case 1+' wynik=x+y
wynik=x-y case ' * ’ wynik=x*y case ' /'
if y==0
disp('Błąd: Dzielenie przez zero!') else
wynik=x/y
end
otherwise
disp('Nierozpoznane działanie!')
Zauważmy, że instrukcja SWITCH nie może na ogół zastąpić instukcji IF gdyż nie można przy jej pomocy testować prawdziwości nierówności czy dowolnych wyrażeń logicznych a jedynie można sprawdzić czy spełniona jest jedna z równości: w==wl, w==w2, ...
Nie można więc użyć instrukcji SWITCH dla realizacji podanego uprzednio zadania - wyznaczania wartości funkcji określonej w trzech przedziałach oddzielnymi wzorami. Dla rozgałęziania programu na podstawie nierówności i innych wyrażeń logicznych pozostaje więc używanie jednej lub wielu zagnieżdżonych instrukcji IF.
Pętla for ... end jest stosowana jest gdy z danych wynika ile razy zachodzić będą cykliczne powtórzenia instrukcji zawartych wewnątrz pętli czyli zapisanych między for a end. Pętla ta ma postać:
for zmienna = pocz: krok : konc blok instrukcji
Pozwala więc ona powtarzać wykonywanie bloku instrukcji określoną liczbę razy przy czym dodatkowo zmienna kontrolna w tej pętli przyjmuje kolejno wartości od pocz do konc z przyrostem (lub
17