Scilab

Rozdział 5 Instrukcje sterujące if…then…else , while… ,for… 

Rozdział 5.1 Wstęp
Omówimy instrukcje sterujące, bez których Scilab, tak jak każdy inny język, byłby bez sensu.
A mianowicie:
“If…then…else…elseif…”
“while…”
“for…”
Rozdział 5.1 Instrukcja sterująca “If…then…else”
W kropkach są tzw. warunki logiczne np. x>5 lub bardziej rozbudowane x>5 & x<10
Dotychczas instrukcje wykonywane były na zasadzie  “jedna po drugiej”. Inaczej, zawsze po jednej instrukcji była następna. To tak jakby pociąg z Warszawy do Szczecina jechał tylko jednym torem! Wiadomo, że zawsze dojedzie w końcu do Szczecina. A przecież na rzeczywistej trasie są zwrotnice. Gdy zwrotnica nastawiona jest na Szczecin, to dojedziemy do Szczecina, gdy na Kraków,  to nie dojedziemy do Szczecina.
Tak jak w tym programie.
Program P5-1

clear;clc;
zw="Szczecin"
if zw=="Szczecin" then 
    disp("Jedziem na Szczecin!")
else
    disp("Nie jedziem na Szczecin!")
end

Analiza programu
Instrukcja
if
(warunek logiczny spełniony) then (wykonaj instrukcję) else (wykonaj instrukcję)
A po naszemu
Instrukcja
jeżeli (warunek logiczny spełniony) to (wykonaj instrukcję) w przeciwnym razie (wykonaj instrukcję) 
W naszym programie zmienna czyli “zwrotnica” zw ma wartość tekstową “Szczecin”. Dlatego spodziewamy się, że będzie wyświetlony tekst “Jedziem na Szczecin”. Przy okazji zauważ, że nie musisz deklarować typu zmiennej jak w innych językach, np. w C++. Język Scilab jest na tyle mądry, że sam  to rozpozna. 
Po wykonaniu programu będzie coś takiego.
“Jedziem na Szczecin!”
A po zmianie instrukcji zw=”Szczecin” na zw=”Kraków”.
Nie jedziem na Szczecin!”
Chyba wszystko jasne.
Uwaga:
Program jest okazją do rozróżnienia 2 bardzo podobnych wyrażeń:
zw=”Szczecin” // Instrukcja wpisania do zmiennej zw tekstu “Szczecin”
zw==”Szczecin”//
Wyrażenie które ma wartość logiczną
-T (True,Prawda) gdy w zw jest tekst “Szczecin” 
-F
(False, Fałsz) gdy w zw jest inny tekst np. “Kraków” 
Początkujący programista może napisać
if zw=”Szczecin” then..
A potem dziwi się, że program nie działa. Zgadnij dlaczego?

Instrukcja
if
(warunek logiczny) then (instrukcja) else (instrukcja)
może występować w wersji bardziej rozbudowanej tzn.
– Zamiast jednej instrukcji po if lub po else może być ich kilka 
– Warunek logiczny może być  bardziej skomplikowaną funkcją logiczną 
Czyli
if  (warunek logiczny jest spełniony) then //wykonaj kolejne instrukcje
       instrukcja 1
      instrukcja 2
       ….
      instrukcja n
else //wykonaj inne kolejne instrukcje

      instrukcja 1
      instrukcja 2
       ….
      instrukcja k
end

Przykład z bardziej rozbudowaną funkcją logiczną i kilkoma instrukcjami po then, else.
Tu funkcją logiczną będzie suma x>5 | x<2  
Uwaga:
Symbol “| “ to poczciwe “or”  po naszemu “lub”
Program P5-2

clear;clc; 
x=7
if x>5|x<2 then 
    x=x+1
    disp("dodawanie")
else 
    x=x-1
    disp("odejmowanie")
end
disp("x=",x)

Po wykonaniu programu powstał tekst
“dodawanie”
“x=”
8.
Zmień instrukcję x=7 na x=4
Efektem będzie
“odejmowanie”
“x=”
3.
Uwaga:
Gdy warunek po if…nie jest spełniony ,to wykonywana jest instrukcja (lub instrukcje po else… .A co jeśli po if…chcemy dalej sprawdzać? Wtedy po if… dajemy elseif. Takie instrukcje zostały użyte w Rozdz.5.4.3.
Rozdział 5.2 Instrukcja sterująca while… 
W przykładzie jest i<5. Jest to instrukcja pętlowa, która będzie wykonana razy. Przed wykonaniem zrób to “na sucho”. Tak jak każdy programista, wyobraź sobie, że jesteś Panem Komputerem. 
Program P5-3

clear;clc;
i=2
while i<5
    disp(i)
    i=i+1
end

Po wykonaniu programu powstał tekst
2.
3.
4.
Zauważ, że dla i=5 warunek i<5 nie jest spełniony. Czyli program wykona tylko  3 a nie 4 pętle.
Pobaw się trochę np. i=2 na i=0   i while i<5 na while <10 itd.
To może ciekawszy program. Np. obliczający n! (n silnia) Wiemy, że np. 3!=1*2*3=6
Program P5-4

clear;clc;
i=0
s=1
while i<3 
     s=s*(i+1)
     disp('s=',s)
     i=i+1
end
disp('Wynikiem jest ',s)

Wynikiem jest taki tekst.
“s=”
1.
“s=”
2.
“s=”
6.
“Wynikiem jest “
6.
Zgadza się.  Sprawdź w internetowym kalkulatorze
 https://www.naukowiec.org/kalkulatory/kalkulator-silnia.html
dla większej liczby np.  10! = 3628800, a potem naszym programem. Też się zgadza.
Uwaga
W powyższych przykładach z while… informacja o liczbie pętli była możliwa tylko po wykonaniu programu! 
Zauważ, że liczby pętli  nie można wyznaczyć tylko z pojedynczego wyrażenia while i<3
Rozdział 5.3 Instrukcja sterująca for…
Też instrukcja pętlowa, ale liczbę pętli pętli można wyznaczyć bez wykonania programu!
Tu warunkiem jest x==2.  Czyli, gdy x=2. Przy okazji przypomnij sobie, jaka jest różnica pomiędzy wyrażeniami x==2 i x=2?
Program P5-4

clear;clc;
for x=0:0.5:2
    x=x^2
   disp(x)
end

Opis instrukcji
for x=0:0.5:2
Będzie obliczona funkcja f(x), tu f(x)=x² dla x=0, 0.5, 1, 1.5, 2 
Czyli dla każdego x od do z odstępem co 0.5
0.
0.25
1.
2.25
4.
Zauważ, że liczbę pętli  5 można było wyznaczyć z samej instrukcji for x=0:0.5:2.
Analiza samego programu, nie była do tego potrzebna.

Scroll to Top