155GIT1 / 5. cvičení: Porovnání verzí

Z GeoWikiCZ
mBez shrnutí editace
mBez shrnutí editace
 
(Není zobrazeno 16 mezilehlých verzí od 2 dalších uživatelů.)
Řádek 1: Řádek 1:
{{Geoinformatika}}
{{Geoinformatika}}
{{Cvičení|155GIT1|5|Algoritmizace, podmínky a cykly}}
{{Cvičení|155GIT1|5|1. test}}


== Náplň cvičení ==
== Náplň ==


# zobrazení zpráv, zadaní vstup
; Zadání testu
# podmínky (<tt>if, else, elseif, end, all, any</tt>)
* https://moodle-vyuka.cvut.cz/course/view.php?id=10915
# větvení (<tt>switch</tt>)
<!--
# podmínky (<tt>for, while</tt>)
# příkazy <tt>break, continue</tt>


== Ukázky ==


=== Interaktivní vstup ===


<source lang=octave>
disp('Program vyzaduje vstup');
a = input('Zadejte cislo a: ')
</source>
=== Vyhodnocování relačních výrazů, all, any ===
* pravdivá relace je vyhodnocena jako 1
* nepravdivá relace je vyhodnocena jako 0
* funkce '''all()''' (uvažujme např. vícero výsledků relačních výrazů současně)
<source lang=octave>
all([1 1 1])
all([0 0 1])
all([0 0 0])
</source>
* funkce '''any()''' (uvažujme např. vícero výsledků relačních výrazů současně)
<source lang=octave>
any([1 1 1])
any([0 0 1])
any([0 0 0])
</source>
=== Větvení (if) ===
* [http://geo.fsv.cvut.cz/user/gin/git1/matlab/matlab.pdf#66]
<source lang=octave>
% skalarni podminka
a = randi(10)
b = randi(10)
if a < b
    disp('a je mensi nez b');
else
    disp('a je vetsi nebo rovno b');
end;
% vektorova podminka
a = [1 2];
b = [0 3];
if a < b
    disp('a je po prvcich vzdy mensi nez b');
else
    disp('a je po prvcich alespon jednou vetsi nez b');
end;
% test na (ne)nulove prvky promenne (promenna obvykle obsahuje vysledky relacnich vyrazu, tj. 0 ci 1)
if b      % totez jako:  if all(b)
    disp('b neobsahuje zadne nulove cleny');
elseif a  % totez jako:  if all(a)
    disp('b obsahuje nulovy clen, a neobsahuje zadne nulove cleny');
else
    disp('a i b obsahuji nulovy clen');
end;
   
if any(b)
    disp('b obsahuje alespon jeden nenulovy clen');
end;
</source>
=== Větvení (switch) ===
<source lang=octave>
cislo = randi(10)
switch cislo
  case 1
    disp('cislo je 1')
  case {2,3}
    disp('cislo je 2 nebo 3')
  case {4,6,7}
    disp('cislo je 4, 6 nebo 7')
  otherwise
    disp('cislo je 5 nebo vetsi nez 7')
end
</source>
=== Cyklus for ===
<source lang=octave>
% tvorba vektoru
n = 3
for i = 1:n
    a(i) = i
end
% tvorba matice
m = 4  % pocet radku
n = 3  % pocet sloupcu
for i = 1:m
    for j = 1:n
        A(i,j) = i+j
    end
end
% priklad - v matici vyhledat sude radky (jedna z moznych variant zapisu)
A = rand(5,4)
for i=1:size(A,1)
    if rem(i,2) == 0        % rem(a,b) ... zbytek po deleni cisla a cislem b
        A(i,:) = -1 * A(i,:)
    end
end
</source>
=== Cyklus while ===
<source lang=octave>
a = 1;
b = 5;
while a < b
    a
    a = a + 1;
end
</source>
=== Příkazy break, continue ===
<source lang=octave>
for i = 1:5
    if i == 2
        continue;
    end
    if i == 4
        break;
    end
    fprintf('i = %d\n', i);
end
</source>


== Úlohy ==
== Úlohy ==
* [[155GIT1 / 5. cvičení / Příklady|5. cvičení - příklady]]
* [[155GIT1 / 5. cvičení / Příklady|5. cvičení - příklady]]
-->
<!-- -->

Aktuální verze z 7. 2. 2024, 15:53