Podmienený príkaz if

Vo veľmi jednoduchý prípad syntax daný operátor ak vyzerá takto:

ak<выражение>
<операторы>
koniec

Upozorňujem na skutočnosť, že na rozdiel od moderné jazyky programovanie nepoužíva niečo ako zložený príkaz. Blok podmieneného príkazu musí skončiť úradné slovo koniec.

Nasleduje príklad implementácie funkcie sign(), ktorá vracia +1, ak je číslo väčšie ako nula, -1, ak je číslo menšie ako nula, a 0, ak je číslo nula:

x = 5;
ak x > 0
disp(1);
koniec
ak x< 0
disp(-1);
koniec
ak x == 0
disp(0);
koniec

Z rozboru uvedeného príkladu vyplýva, že všetky tieto tri podmienky sa navzájom vylučujú, t.j. keď sa spustí jeden z nich, nie je potrebné kontrolovať ostatné. Implementácia práve takejto logiky zvýši rýchlosť vykonávania programu. To sa dá dosiahnuť použitím konštruktu

ak<выражение>
<операторы1>% vykonaných, ak je podmienka pravdivá
inak
<операторы2>% vykonaných, ak je podmienka nepravdivá
koniec

Potom vyššie uvedený príklad možno napísať takto:

X = 5;
ak x > 0
disp(1);
inak
ak x< 0
disp(-1);
inak
disp(0);
koniec
koniec

Tento program najprv skontroluje, či je premenná x kladná, a ak áno, potom sa na obrazovke zobrazí hodnota 1 a všetky ostatné podmienky sa ignorujú. Ak sa ukáže, že prvá podmienka je nepravdivá, vykoná sa program inak (inak) na druhú podmienku, kde sa premenná x skontroluje na negativitu, a ak je podmienka pravdivá, na displeji sa zobrazí hodnota -1 obrazovka. Ak sú obe podmienky nepravdivé, potom sa vypíše 0.

Vyššie uvedený príklad možno napísať v jednoduchšej forme pomocou iného konštruktu príkazu MatLab if:

ak<выражение1>
<операторы1>% vykonané, ak je výraz1 pravdivý
ináč Ak<выражение2>
<операторы2>% vykonané, ak je výraz2 pravdivý
...
ináč Ak<выражениеN>
<операторыN>% vykonaných, ak je výrazN pravdivý
koniec

a píše sa takto:

x = 5;
ak x > 0
disp(1); % sa vykoná, ak x > 0
inak x< 0
disp(-1); % sa vykoná, ak x< 0
inak
disp(0); % sa vykoná, ak x = 0
koniec

Pomocou príkazu if môžete testovať zložitejšie (zložené) podmienky. Napríklad musíte určiť: spadá premenná x do rozsahu hodnôt od 0 do 2? Dá sa to urobiť súčasnou kontrolou dvoch podmienok naraz: x >= 0 a x<=2. Если эти оба условия истинны, то x попадает в диапазон от 0 до 2.

Na implementáciu zložených podmienok v MatLab sa používajú logické operátory:

& - logické AND
| - logické ALEBO
~ - logické NIE

Pozrime sa na príklad použitia zložených podmienok. Nech je potrebné skontrolovať, či je premenná x v rozsahu od 0 do 2. Program bude napísaný nasledovne:

x = 1;
ak x >= 0 & x<= 2
inak
koniec

V druhom príklade skontrolujeme, či premenná x nepatrí do rozsahu od 0 do 2. To sa dosiahne spustením jednej z dvoch podmienok: x< 0 или x > 2:

x = 1;
ak x< 0 | x > 2
disp("x nie je v rozsahu 0 až 2");
inak
disp("x je v rozsahu 0 až 2");
koniec

Pomocou logických operátorov AND, OR, NOT môžete vytvoriť rôzne zložené podmienky. Môžete napríklad skontrolovať, či je premenná x v rozsahu -5 až 5, ale nie v rozsahu 0 až 1. Je zrejmé, že to možno implementovať nasledovne:

x = 1;
if (x >= -5 & x<= 5) & (x < 0 | x > 1)
disp("x patrí do [-5, 5], ale nie je v ");
inak
disp("x nie je v [-5, 5] alebo v ");
koniec

Všimnite si, že v podmienkach komplexnej zlúčeniny boli použité zátvorky. Faktom je, že priorita operácie AND je vyššia ako priorita operácie OR a ak by tam neboli žiadne zátvorky, podmienka by vyzerala takto: (x >= -5 a x<= 5 и x < 0) или x >1. Je zrejmé, že takáto kontrola by poskytla iný výsledok, ako sa očakávalo.

Zátvorky v programovaní sa používajú na zmenu priority vykonávania príkazov. Páči sa mi to aritmetické operátory, logické je možné zmeniť aj na žiadosť programátora. Vďaka použitiu zátvoriek sa kontrola vykonáva najskôr v nich a potom mimo nich. Preto sú vo vyššie uvedenom príklade potrebné na dosiahnutie požadovaného výsledku.

Priorita logické operácieĎalšie:

NOT (~) - najvyššia priorita;
A (&) - stredná priorita;
ALEBO (|) má najnižšiu prioritu.

while loop príkaz

Programovací jazyk MatLab má dva príkazy cyklu: while a for. S ich pomocou sa vykonáva napríklad programovanie rekurentných algoritmov, výpočet súčtu série, enumerácia prvkov poľa a oveľa viac.

V najjednoduchšom prípade je cyklus v programe organizovaný pomocou príkazu while, ktorý má nasledujúcu syntax:

zatiaľ čo<условие>
<операторы>
koniec

Tu<условие>znamená podmienený výraz podobný výrazu použitému v príkaze if a cyklus while beží, kým je podmienka pravdivá.

Všimnite si, že ak je podmienka pred spustením cyklu nepravdivá, príkazy v slučke sa nikdy nevykonajú.

Tu je príklad cyklu while na výpočet súčtu série:


i=1; % celkového počítadla
kým<= 20 % цикл (работает пока i <= 20)

end % koniec slučky
disp(S); % zobrazí súčet 210 na obrazovke

Teraz si úlohu skomplikujeme a vypočítame súčet radu , pričom . Tu sa v príkaze cyklu získajú dve podmienky: buď počítadlo pre i dosiahne 20, alebo hodnota súčtu S prekročí 20. Túto logiku možno implementovať pomocou zloženého podmieneného výrazu v príkaze cyklu while:

S = 0; % počiatočnej hodnoty súčtu
i=1; % celkového počítadla
kým<= 20 & S <= 20 % цикл (работает пока i<=10 и S<=20
S=S+i; % započítanej sumy
i=i+1; % počítadlo prírastkov o 1
end % koniec slučky

Vyššie uvedený príklad ukazuje možnosť použitia zložených podmienok v slučke while. Vo všeobecnosti ako podmienený výraz môžete napísať rovnaké podmienky ako v podmienenom príkaze if.

Práca ľubovoľného operátora slučky, vrátane while, môže byť násilne ukončená pomocou príkazu break. Napríklad predchádzajúci program by sa dal prepísať nasledovne pomocou príkazu break:

S = 0; % počiatočnej hodnoty súčtu
i=1; % celkového počítadla
kým<= 20 % цикл (работает пока i<=10
S=S+i; % započítanej sumy
i=i+1; % počítadlo prírastkov o 1
ak S > 20 %, ak S > 20,
prestávka; % potom sa slučka končí
koniec
end % koniec slučky
disp(S); % zobrazí na obrazovke súčet 21

V tomto príklade je druhá podmienka na ukončenie cyklu, keď je S väčšie ako 20, zapísaná v samotnom slučke a pomocou príkazu break sa cyklus opustí do funkcie disp() ihneď po slučke while.

Operátor kontroly vykonávania druhej slučky pokračovať vám umožňuje preskočiť vykonávanie fragmentu programu po ňom. Napríklad chcete vypočítať súčet prvkov poľa

a = ;

s vylúčením prvku na indexe 5. Takýto program možno napísať takto:

S = 0; % počiatočnej hodnoty súčtu
a = ; % pole
i=0; % počtu indexov poľa
kým< length(a) % цикл (работает пока i меньше
% dĺžky poľa a)
i=i+1; % zvýši počítadlo indexu o 1
ak i == 5 %, ak je index 5
ďalej; % potom to nepočítame
koniec
S=S+a(i); % súčet spočítaných položiek
end % koniec slučky
disp(S); % zobrazí súčet 40 na obrazovke

Treba poznamenať, že v tomto programe je index poľa i inkrementovaný pred kontrolou podmienky. Toto sa robí tak, že hodnota indexu sa zvyšuje o 1 pri každej iterácii cyklu. Ak je prírastok počítadla i zapísaný ako v predchádzajúcich príkladoch, t.j. po vypočítaní súčtu by príkaz continue spôsobil, že by sa jeho hodnota zastavila na 5 a cyklus while by bežal „navždy“.

príkaz for loop

Pri organizovaní slučky je často potrebné opakovať hodnotu počítadla v danom rozsahu hodnôt a s daným krokom zmeny. Napríklad, ak chcete opakovať prvky vektora (pole), musíte usporiadať počítadlo od 1 do N s krokom 1, kde N je počet prvkov vektora. Na výpočet súčtu série je tiež špecifikované počítadlo od a do b s požadovaným krokom zmeny kroku. A tak ďalej. Vzhľadom na to, že s takýmito úlohami sa v programátorskej praxi často stretávame, bol na ich realizáciu navrhnutý samostatný operátor slučky for, ktorý uľahčuje a názornejšie realizuje slučku s počítadlom.

Syntax príkazu cyklu for je nasledovná:

pre<счетчик> = <начальное значение>:<шаг>:<конечное значение>
<операторы цикла>
koniec

Uvažujme o práci tohto cyklu na príklade implementácie algoritmu na nájdenie maximálnej hodnoty prvku vo vektore:

a =;
m = a(1); % aktuálnej maximálnej hodnoty
pre i=1:dĺžka(a) % slučka od 1 po koniec vektora c
% kroku 1 (predvolené)
ak m< a(i) % если a(i) >m,
m = a(i); % potom m = a(i)
koniec
end % koniec cyklu for
disp(m);

V tomto príklade cyklus for nastaví počítadlo i a zmení jeho hodnotu z 1 na 10 v prírastkoch po 1. Všimnite si, že ak prírastok nie je explicitne špecifikovaný, potom je predvolená hodnota 1.

V nasledujúcom príklade zvážte implementáciu algoritmu na posúvanie vektorových prvkov doprava, t.j. predposledný prvok sa umiestni na miesto posledného prvku, ďalší sa umiestni na miesto predposledného prvku atď. k prvému prvku:

a =;
disp(a);
pre i=dĺžka(a):-1:2 % slučky od 10 do 2 s krokom -1
a(i)=a(i-1); % prvkov posunu vektora a
end % koniec cyklu for
disp(a);

Výsledok programu

3 6 5 3 6 9 5 3 1 0
3 3 6 5 3 6 9 5 3 1

Vyššie uvedený príklad ukazuje, že ak chcete implementovať cyklus s počítadlom z väčšej hodnoty na menšiu, musíte explicitne špecifikovať krok, v tomto prípade -1. Ak sa tak nestane, slučka okamžite ukončí svoju prácu a program nebude fungovať správne.

Riešenia rovníc

Petrohrad: BHV-Petersburg, 2005. - 1104 s.
ISBN 5-94157-494-0
Stiahnuť ▼(priamy odkaz) : matlab72005.pdf Predchádzajúci 1 .. 117 > .. >> Ďalej

pri cyklickom stave príkazu MATLAB

V tomto príklade je podmienkou opakovania cyklu, že modul aktuálneho členu je x2k~l/(2k +1)! viac ako IO10. Ak chcete do formulára napísať podmienku,

rozumie MATLABu, použite znamienko ">" (väčšie ako). Text súborovej funkcie mysin, ktorá vypočítava súčet série na základe vzťahu opakovania

k 2k(2k + \) k 1

zobrazené v zozname 7.7.

Poznámka ^

Samozrejme, vo všeobecnom prípade je malosť pojmu relatívny pojem, pojem môže byť povedzme rádu IO-10, ale samotný súčet je rovnakého rádu. V tomto prípade musí byť podmienka ukončenia súčtu iná, a to modul pomeru aktuálneho člena k už akumulovanej časti súčtu musí byť malý. Tomu sa zatiaľ nebudeme venovať – našou úlohou je naštudovať si prácu s cyklami.

Výpis 7.7. Súborová funkcia mysin, ktorá vypočíta sínus sériovým rozširovaním

funkcia s - mysin(x)

"% Výpočet sínusu sériovou expanziou

% Použitie: y=mysin[x), -pi< х < piГлава 7. Управляющие конструкции языка программирова ни я

Ї výpočet prvého termínu súčtu pre k \u003d O k \u003d 0; ich;

% výpočet pomocnej premennej x2 - x*x;

zatiaľ čo abs(u) > 1.Oe-IO k = k + 1; u \u003d -u * x2 / (2 * k) / (2 * k + 1)

Vezmite prosím na vedomie, že cyklus while na rozdiel od for nemá premennú cyklu, takže sme museli priradiť jedničku do cyklu pred cyklom a zvýšiť k o jeden vo vnútri cyklu.

Teraz porovnajte výsledok vynesením funkcií mysin a sin na segmente [-l, i] Fia na rovnakých osiach, napríklad pomocou fplot (príkazy je možné nastaviť z príkazového riadku): "fplot (@rnysin, [- pi, pi])“ vydržať

» fplot(@sin, t-pii pi]і "k.")

Ryža. 7.3. Porovnanie mysinu a hriechu360_________ Časť II. Výpočtová technika a programovanie

Výsledné grafy sú znázornené na obr. 7.3 svedčia o správnom fungovaní súborovej funkcie mysin.

Podmienka cyklu while môže obsahovať logický výraz zložený z relačných operátorov a logických operátorov alebo operátorov. Na nastavenie podmienky opakovania cyklu sa použijú operácie vzťahu uvedené v tabuľke. 7.1.

Tabuľka 7.1. vzťahové operácie

Zápis Prevádzkový vzťah
== Rovnosť
< Меньше
<= Меньше или равно
>= Väčšie alebo rovné
Nerovná sa

Zložitejšie podmienky sú špecifikované pomocou logických operátorov alebo operácií. Napríklad podmienka -1<.г<2 состоит в одновременном выполнении неравенства а>-1 a x<2 и записывается при помощи логического оператора and

a (x >= -1, X< 2)

alebo ekvivalentne pomocou logickej operácie "a" - &

(x >= -1) & (x< 2)

Hlavné logické operácie a operátory a príklady ich zaznamenávania sú uvedené v tabuľke. 7.2 (logické výrazy sú podrobne popísané v časti "Logické operácie s číslami a poľami" tejto kapitoly).

Tabuľka 7.2. Booleovské výrazy

Typ výrazu Výraz Logický operátor Logická operácia
Logické "a" A*<3 И к=4 and (х < 3, k==4) (х<3) s (k = 4)
Logické "alebo" X = Ї alebo 2 alebo (x == 1, X= 2) (x == 1) I (x == 2)
Negovanie "nie" a * 1,9 nie (a == 1,9) - (a == 1,9)

^ Poznámka ^

Operátory not a a alebo sú funkcie, ktoré vracajú true (logická jednotka) alebo false (logická nula). Každý logický výraz má rovnaké hodnoty.

Pri výpočte súčtu nekonečného radu má zmysel obmedziť počet členov. Ak sa séria líši v dôsledku skutočnosti, že jej členy nemajú tendenciu k nule, potom podmienka pre malosť aktuálneho členu nemusí byť nikdy splnená a program sa zacyklí. Vykonajte sčítanie obmedzením počtu výrazov. Pridajte obmedzenie počtu výrazov do podmienky cyklu while súboru funkcie mysin (pozri Výpis 7-6):

(abs(u) > 1.Oe-IO) & (do<= 100000) или в эквивалентной форме:

a l.Oe-lO, k<= 100000)

^ Poznámka ^

Na určenie poradia, v ktorom sa logické operácie vykonávajú, by sa mali používať zátvorky (viac informácií o logických operátoroch a logických operáciách a možnosti ich aplikácie na polia nájdete v časti

sek. "Logické výrazy s poľami a číslami" tejto kapitoly).

Pri programovaní algoritmov je okrem organizovania opakujúcich sa akcií vo forme cyklov často potrebné vykonať jeden alebo druhý blok príkazov v závislosti od určitých podmienok, t.j. použite algoritmus vetvenia.

Operátori pobočiek

Podmienený príkaz if a príkaz switch vám umožňujú vytvoriť flexibilný algoritmus vetvenia, v ktorom sa pri splnení určitých podmienok vykoná zodpovedajúci blok príkazov alebo príkazov MATLABu. Takmer všetky programovacie jazyky majú podobné operátory.

Podmienený príkaz if

Príkaz if možno použiť vo svojej jednoduchej forme na vykonanie bloku príkazov, keď je splnená nejaká podmienka, alebo v konštrukcii if-eiseif-eise na zápis algoritmov vetvenia.362

Časť II. Výpočtová technika a programovanie

Overenie vstupného argumentu

Začnime s najjednoduchším príkladom - vytvorte súbor funkcií na výpočet

Okrem programov s lineárna štruktúra, ktorých inštrukcie sú vykonávané striktne v poradí, existuje veľa algoritmov, ktorých štruktúra nelineárne. V tomto prípade môže byť postupnosť prvkov algoritmov vykonaná v závislosti od určitých podmienok, niekedy s konečným počtom opakovaní - pravidelných cyklov, niekedy vo forme cyklov, ktoré sa ukončia pri splnení danej podmienky. Takmer každý seriózny program má nelineárnu štruktúru. Na vytvorenie takýchto programov sú potrebné špeciálne riadiace štruktúry. Sú dostupné v akomkoľvek vysokoúrovňovom programovacom jazyku a najmä v Matlabe.

Zvážte operátorov m-súbory s podrobnosťami.

operátor priradenia. Hlavný operátor programovacieho systému matlab je operátor priradenia, ktorý má nasledujúcu štruktúru:

Názov premennej= výraz

Operátor je určený na identifikáciu premenných a označuje sa symbolom = , naľavo od neho je názov premennej a napravo je aritmetický alebo reťazcový výraz (pravidlám pre písanie aritmetických a reťazcových výrazov sme sa venovali v časti 1.1.2). Tu je niekoľko príkladov operátorov priradenia (obr. 1.3.4-1).

Ryža. 1.3.4-1. Príklady zadania

Všetky premenné použité na pravej strane príkazu priradenia musia byť preddefinované. Ak sa príkazový riadok končí bodkočiarkou ( ; ), potom sa výsledok príkazu nezobrazí, inak sa zobrazí na ďalšom riadku príkazového okna. Táto poznámka platí aj pre vykonávanie príkazov na priradenie umiestnených v m-súbory.

Operátori zadávania údajov. Zadávanie údajov v Matlabe je možné vykonať pomocou operátora priradenia ( a=5;) a pomocou funkcie vstupu klávesnice:

Názov premennej=vstup("Žiadosť");

Táto funkcia zadá výraz z klávesnice a výsledok sa uloží do premennej s názvom a. V nižšie uvedenom príklade do premennej a najprv sa zadá číselná hodnota a potom číselný výraz (obr. 1.3.4-2).

Ryža. 1.3.4-3. Hodnotenie výrazu uvedeného v symbolickej forme

Podmienečné vyhlásenie, ak... koniec. Podmienený operátor ak v všeobecný pohľad sa píše takto:

akBooleovský výraz1

Pokyny 1

inakPodmienka 2

BooleanExpression2

BooleanExpression3

Pravidlá pre písanie logických výrazov sú popísané v téme 1.1.

Táto konštrukcia umožňuje niekoľko konkrétnych variantov. Najjednoduchšie - skrátená vidlica [x] má nasledujúci tvar:

akBooleanExpression

Inštrukcie

Pripomeňme, že ak BooleanExpression vráti boolovskú hodnotu 1 (t. j. „Pravda“) Inštrukcie, tvoriace telo konštrukcie ak...koniec. Zároveň prevádzkovateľ koniec označuje koniec zoznamu pokynov. Pokyny v zozname sú oddelené čiarkou alebo bodkočiarkou. Ak BooleanExpression nevykonané (poskytuje boolovskú hodnotu 0 , "Nepravda"), potom Inštrukcie sa tiež nevykonávajú.

Nižšie je uvedený príklad použitia najjednoduchšej skrátenej vetvy, implementovanej pomocou operátora ak(obr. 1.3.4-4).

Ryža. 1.3.4-5. Príklad štandardnej vetvy

Z vyššie uvedeného príkladu je vidieť, že operátor ak Môže byť buď v jednom riadku alebo vo viacerých riadkoch.

Zvážte zložitejší príklad - vnorená vetva. Zvážte príklad

navyše, aby sme plne odrážali štruktúru zložitého vetvenia, bez toho, aby sme sa starali o prenos dlhých príkazových riadkov, používame m-funkcia (obr. 1.3.4-7). Vyberieme údaje na kontrolu hlavnej vetvy a obrátime sa na funkciu raz() s rôznymi počiatočnými údajmi (obr. 1.3.4-6).

Ryža. 1.3.4-7. Funkcia, ktorá implementuje vnorenú vetvu

Operátor s viacerými možnosťami je prepínač. Na implementáciu viacnásobného výberu sa používa nasledujúca konštrukcia prepínače:

prepínačVýraz

prípadČítanie_1

Zoznam_pokynov_1

prípadhodnota_2

Zoznam_pokynov_2

prípadHodnota_N

Instruction_List_N

inak

Zoznam_pokynov_N+1

Ak výraz za hlavičkou prepínač má hodnotu jedného z výrazov Význam..., potom sa vykoná blok príkazov prípad, inak - zoznam pokynov po operátorovi inak. Pri vykonávaní bloku prípad tie zoznamy inštrukcií sa vykonávajú, pre ktoré Význam sa zhoduje s Výraz. Vezmite prosím na vedomie, že Význam môže byť číslo, konštanta, premenná, vektor buniek alebo dokonca reťazcová premenná. Vysvetlime si použitie operátora enumerácie prepínač nasledujúci príklad:

M-funkcia, ktorá implementuje viacnásobné vetvenie je znázornená na obr. 1.3.4-8 a prístup k nemu s počiatočnými údajmi, ktoré vám umožňujú skontrolovať každú vetvu pobočky, je znázornený na obr. 1.3.4-9.

Ryža. 1.3.4-9. Volania funkcií multifunkčné ()

Funkcia multifunkc(x,n) dva parametre, pričom druhý zohráva úlohu ukazovateľa, ktorý určuje typ funkčnej závislosti. Hodnota funkcie sa zapíše do premennej r. Ak n=1, potom sa vykoná prvý blok prípadu, ak 2, potom druhý, ak n=2, 3 alebo 4, tak tretí. Ak sa hodnota premennej n nezhoduje so žiadnou z uvedených hodnôt, vykoná sa príkaz umiestnený za kľúčovým slovom. inak.

Operátor bežnej slučky je na...koniec. Typ operátora slučky na...koniec zvyčajne sa používa na organizáciu výpočtov s daným počtom opakovaní slučky. Štruktúra takéhoto cyklu je nasledovná:

pre vag = s:d:e

Pokyn 1

Pokyn N

kde s- počiatočná hodnota premennej slučky var, d- zvýšiť túto premennú a e - konečná hodnota riadiacej premennej, nad ktorou sa slučka končí. Do formulára je možné aj napísať s:e(v tomto prípade d = 1). Zoznam inštrukcií vykonaných v slučke končí príkazom koniec.

Ako príklad použitia operátora na...koniec vypočítajte súčet prvkov poľa X, ktorého hodnoty sú definované v príkazovom okne pomocou funkcie m summa()(obr. 1.3.4-10), ktorého parametrom je vektor X. Počet prvkov poľa X definovaná funkciou dĺžka. Okrem volania funkcie poskytuje príkazové okno kontrolu výsledku výpočtov pomocou vstavanej funkcie súčet (x)(obr. 1.3.4-11).

Ryža. 1.3.4-11. Volanie funkcie summa() a vstavaná funkcia suma()

Operátor môže byť použitý v slučke ďalej , ktorý prenesie riadenie na ďalšiu iteráciu cyklu, pričom preskočí príkazy, ktoré po ňom nasledujú, a vo vnorenej slučke prenesie riadenie na ďalšiu iteráciu hlavného cyklu. Operátor prestávka možno použiť na predčasné prerušenie vykonávania cyklu (napríklad pri ladení časti programu). Akonáhle sa v programe vyskytne, slučka sa preruší.

Okrem jednoduchých pravidelných slučiek v Matlabe je možné organizovať vnorené slučky. Zvážte príklad vytvorenia dvojrozmerného poľa a, z ktorých každý prvok predstavuje súčet jeho indexov (obr. 1.3.4-12). Odvolajte sa na skript- súbor vzikl znázornené na obr. 1.3.4-13.

Ryža. 1.3.4-13. Odvolajte sa na skript- súbor s názvom vzikl

Operátor iteračnej slučky je while...end. Celkový pohľad na štruktúru kým...koniec nasledovne:

zatiaľ čoBooleanExpression

Inštrukcie

Charakteristickým rysom tejto štruktúry je, že pokyny umiestnené v tele opakujúcej sa štruktúry sa vykonávajú iba vtedy, ak nejaké BooleanExpression„pravdivé“. Akonáhle sa podmienka stane "false", štruktúra opakovania sa ukončí a riadenie sa prenesie na inštrukciu umiestnenú za kľúčovým slovom koniec.

Uveďme si jednoduchý príklad (obr. 1.3.4-14).


Ryža. 1.3.4-14. Dialógový program pomocou operátora kým...koniec

Tento program, uložený v m- súbor s názvom základný náter11, sa používa na opakovaný výpočet obvodu užívateľom zadanej hodnoty polomeru r, kde sa dialóg realizuje pomocou príkazu vstup. Riadky spojené s variabilným vstupom r a výpočet obvodu sú zahrnuté v riadiacej štruktúre kým...koniec. Je to potrebné pre cyklické opakovanie výpočtov pri zadávaní rôznych hodnôt. r. Zbohom r>=0, cyklus sa opakuje. Ale oplatí sa pýtať r<0 , výpočet obvodu sa zastaví a slučka sa ukončí. Keďže v druhom riadku programu je hodnota r je nastavený na 0, cyklus sa opakuje aspoň raz.

Práca s programom v príkazovom okne je znázornená na obr. 1.3.4-15.

Ryža. 1.3.4-16. Prerušenie programu pomocou príkazu prestávka

Operátor ďalej prenesie riadenie na ďalšiu iteráciu cyklu, pričom preskočí príkazy, ktoré nasledujú, a vo vnorenej slučke prenesie riadenie na ďalšiu iteráciu hlavného cyklu. Nižšie je uvedený príklad výpočtu súčtu a súčinu kladných prvkov dvojrozmerného poľa b(3,3) (obr. 1.3.4-17).


Ryža. 1.3.4-17. Prerušenie programu pomocou príkazu ďalej

Príklady riešenia problémov pomocou

M-súbory

Príklad 1.3.5-1. Daných n čísel . Je potrebné vypočítať ich súčet: kde

Na vyriešenie problému bola vyvinutá funkcia fb(x), ktorý implementuje algoritmus na výpočet aktuálnej hodnoty funkcie. Funkcia má jeden vstupný parameter – aktuálnu hodnotu prvku poľa b a jeden výstupný parameter - r(obr. 1.3.5-1). Funkcia sa volá v slučke organizovanej na výpočet súčtu (obr. 1.3.5-2).

Ryža. 1.3.5-2. Program, ktorý implementuje výpočet súčtu čísel

Na výpočet súčtu vytvorených funkčných hodnôt skript- súbor s názvom zadashа.m, v ktorom počet čísel ( n=10) a vektor ich hodnôt ( b) a potom je organizovaná pravidelná slučka na volanie funkcií fb() a vypočítanie sumy.

Výpočty sa robia spustením skript-file zadaním do príkazového riadku okna príkazové okno jeho meno zadasha. Výsledky jeho implementácie sú znázornené na obr. 1.3.5-3.


Ryža. 1.3.5-3. spustiť skript- súbor zadasha na popravu

Príklad 1.3.5-2. Vytvorte dvojrozmerné pole a(3,4) z ľubovoľných čísel. Vypočítajte a vypíšte jednorozmerné pole b, ktorého každý prvok je aritmetickým priemerom prvkov zodpovedajúceho riadku poľa a.

Na obr. Uvádza sa 1.3.5-4 skript- súbor s názvom zadasha2, kde je zavedená matica, a, pozostávajúce z troch riadkov a štyroch stĺpcov. Slučka je organizovaná podľa počtu vytvorených prvkov poľa b volaním funkcie sred_ar(). Funkcii sa odovzdá pole a, poradové číslo ( i) a počet prvkov v reťazci ( m). Zobrazenie prvkov poľa b uvedené v stĺpci.

Ryža. 1.3.5-5. Funkcia sred_ar(), ktorý vypočítava aritmetický priemer
prvky reťazca poľa a

V dôsledku spustenia skript- súbor s názvom zadasha2 von oknom príkazové okno zobrazí sa stĺpec prvkov poľa b

Ryža. 1.3.5-7. Funkcia fab(), výpočet hodnoty i-tého člena

Ryža. 1.3.5-9. Spustenie funkcie sumf() na popravu


Laboratórne práce na danú tému

„Prostriedky algoritmizácie a programovania

V matlabe"

Problémy, ktoré sa majú študovať

1) Pohľady m- súbory.

2) Vytváranie a ukladanie nových a otváranie predtým vytvorených m-súborov.

3) Vlastnosti scenár- súbory a m- funkcie.

4) Utekajte na popravu scenár- súbor z textového editora.

5) Utekajte na popravu scenár- súbor z príkazového okna.

6) Volá na scenár- súbory a m-ph funkcie.

7) Nástroje programovacieho jazyka v systéme Matlab.

8) Základné operátory m-jazyka, ich účel a formáty .

2. Všeobecná úloha

1) Preskúmať témy 1.3 (p.p. 1.3.1 – 1.3.5).

2) Vyberte si individuálnu úlohu zo stola. 1.3.6-1.

3) Dizajn m -funkcie na implementáciu štandardných algoritmov: výpočet konečných súčtov, vetvenia, hľadanie minima a maxima v dátovej sekvencii atď.

4) Zadajte a uložiť m -funguje na externých médiách.

5) Vytvorte Novýskript -súbor, kde zadáte kód programu, ktorý popisuje logiku riešenia úlohy.

6) Uložte skript -súbor v aktuálnom adresári.

7) Ladiaci skript t-file, jeho spustením z textového editora pomocou príkazuBežať .

8) Pripravte sa a vstúpiť počiatočné údaje na riešenie problému;

9) Spustite skript -súbor z príkazového riadku oknapríkazové okno .

10) Uložte text pracovné okno na externom médiu.

11) Odošlite svoje výsledky učiteľská práca, odpoveď na položené otázky.

12) Dokončiť príkaz zmazať všetko na čistenie Pracovné prostredie .

13) Odoslať správu podľa vykonanej práce .


Varianty jednotlivých úloh

Tabuľka 1.3.6-1

Cvičenie
Zadajte prirodzené číslo n a vektor reálnych čísel Nájsť: kde
Vypočítajte kde

Nastaviť pole , pozostávajúce z párneho počtu prvkov. Každá dvojica čísel , kde i+1 je násobok dvoch, určuje súradnice vrcholu lomenej čiary. Zostrojte lomenú čiaru a spojte posledný vrchol s prvým
. Vypočítajte produkt , kde
Zadajte prirodzené číslo n a reálne číslo x. Vypočítajte
Zadajte prirodzené číslo n. Nájdite najväčšie medzi hodnotami , kde k=1, 2,…,n, ako aj súčet všetkých získaných hodnôt
Zadajte prirodzené číslo n. Medzi významami , kde
(i=1,2,…n), nájdite všetky kladné čísla a vypočítajte ich súčet
Zadajte prirodzené číslo n a vektor reálnych čísel . Zistite, či je vo vektore viac kladných alebo záporných čísel, a určte najväčšie zo záporných a najmenšie z kladných čísel
Zadajte maticu B(5,7) a vytvorte vektor C(5) z prvých najväčších prvkov riadkov. Zobrazte jeho prvky v riadku a stĺpci
Vytvorte vektor podľa pravidla: , kde k=2,3,…, 7, ak Nájdite súčet druhých mocnín tých čísel, ktoré nepresahujú 2
Zadajte prirodzené číslo n a vektor reálnych čísel . Nájdite počet dvoch susedných kladných čísel a dvoch susedných čísel rôzneho znamienka
Zadajte štvorcovú maticu A(4,4). Vytvorte vektor X z maximálneho počtu prvkov jeho stĺpcov, zobrazte jeho prvky na obrazovke v priamom a opačnom poradí
Zadajte vektor celých čísel . Transformujte ho tak, že najskôr budú umiestnené nuly a potom všetky ostatné prvky. Určte súčet a počet prvkov, ktorých hodnoty sú násobkom 5
Zadajte vektor reálnych čísel . Vytvorte z neho pole x, ktorého každý prvok je maximálne z troch po sebe nasledujúcich prvkov v poli z
Zostavte maticu A(4,4) podľa pravidla:
Nájdite a zobrazte hodnoty a indexy dvoch identických prvkov. Ak nie sú žiadne, zobrazte správu
Zostavte maticu D(3,2) podľa pravidla: . Vytvorte vektor z negatívnych prvkov výslednej matice
Zadajte prirodzené číslo n. Vypočítajte, ktorá z matíc n x n obsahuje viac kladných prvkov, ak sú ich prvky vytvorené podľa pravidla: Zobrazte vygenerované matice
Zadajte štvorcovú maticu reálnych čísel A(4,4). Nájdite súčet najväčších hodnôt prvkov jeho riadkov. Vytvorte novú maticu B(4,4) vynásobením každého prvku matice A nájdeným súčtom a jeho vydelením determinantom pôvodnej matice
Zadajte maticu reálnych čísel A(4,7) a získajte z nej vektor C(4), ktorého prvky sú: · najväčší z prvkov v prvom riadku; najmenší z prvkov v druhom rade; aritmetický priemer prvkov tretieho riadku; súčet prvkov štvrtého radu
Zadajte prirodzené číslo n a maticu reálnych čísel С(n,n). Nájdite aritmetický priemer najväčších a najmenších hodnôt jeho prvkov a nahradením diagonálnych prvkov touto hodnotou zobrazte maticu C na obrazovke
Zadajte prirodzené čísla k1, k2 a skutočnú maticu 8x4. Vymeňte prvky riadkov k1 a k2 v matici
Zadajte prirodzené číslo n a maticu reálnych čísel С(n,9). Nájdite aritmetický priemer každého zo stĺpcov, ktoré majú párne čísla
Zadajte vektory reálnych čísel x(5), y(6), z(7). Vypočítajte hodnotu t podľa nasledujúceho algoritmu:
Zadajte vektory reálnych čísel x(5). Získajte hodnoty x=1, 3, 4 kde
Zadajte vektory reálnych čísel x(10). Získajte z neho ďalšie pole p(10), ktorého prvky sú zoradené vzostupne
Zadajte maticu reálnych čísel A(3,4). Nahraďte prvky riadku matice maximálnym súčtom hodnôt prvkov - jednotkami, minimom - dvojkami a zvyšné prvky matice nastavte na nulu
Vytvorte maticu A(4,4) podľa pravidla Vymažte z nej stĺpce obsahujúce prvky menšie ako 10
Zostavte maticu B(9,3) podľa pravidla Určte najmenší prvok v každom riadku matice a zapíšte ho do zodpovedajúceho prvku vektora C. Výsledný vektor C dajte na výstup.
Zadajte maticu reálnych čísel A(3,4), ktorej všetky prvky sú rôzne. V každom riadku by ste mali zvoliť najväčšiu a najmenšiu hodnotu a zapísať súčet indexov stĺpcov, v ktorých sa nachádzajú, do zodpovedajúceho prvku vektora С(3)
Zadajte maticu reálnych čísel A(4,4). Získajte sekvencie prvkov hlavnej a vedľajšej diagonály, vytvorte z týchto prvkov vektory B(4) a C(4) a zobrazte ich na obrazovke

1) Vo forme komentárov:

Názov laboratória

Meno žiaka, číslo skupiny

Číslo možnosti

· Individuálna úloha

2) Protokol výpočtov (relácií) v okne príkazové okno s potrebnými komentármi.

1.3.7. Bezpečnostné otázky k téme

1) Čo je scenár- súbor a aké sú jeho vlastnosti?

2) Ako scenár- súbor sa vykonáva?

3) Čo je m- funkcie ja?

4) Aký je rozdiel scenár- súbor z m- funkcie?

5) Môžem- funkciu má viacero výstupných parametrov?

6) Zavolajte na m- funkcie.

7) Formát operátora vstup ().

8) Ako používať operátor ak...koniec implementovať štandardné, skrátené a vnorené vetvenie?

9) Formát operátora viacerých pobočiek prepínač.

10) Formát operátora pravidelnej slučky na...koniec, funkcie nastavenia hodnôt premennej cyklu.

11) Vymenovanie operátorov ďalej a prestávka.

12) Operátor iteračnej slučky kým...koniec a jeho štruktúru.


Časť 2. Technológia riešenia
výpočtové úlohy pomocou MatLab

Slučky v matlabe vyžadujú podmienku, ktorú musí príkaz alebo skupina príkazov
opakujte niekoľkokrát.

Najjednoduchší spôsob, ako vytvoriť slučku, je použiť
na vyjadrenie. Nižšie je uvedený jednoduchý príklad, kde sa vypočíta a zobrazí 10! = 10 * 9 * 8 ... * 2 * 1.

f = 1;
pre n=2:10
f = f*n;
koniec

f=
3628800

Cyklus v matlabe začína príkazom for a končí príkazom end. Tím
medzi týmito výrazmi sa vykoná celkovo deväťkrát, pre každý raz
hodnoty n od 2 do 10. Aby sme prerušili medzivýstup vo vnútri slučky, my
použil bodkočiarku. Ak chcete vidieť konečný výsledok, potrebujete
zadajte f po skončení cyklu. Ak nepoužívate bodkočiarku, program
MATLAB zobrazí každú medzihodnotu 2!, 3! atď.

V module Editor sa automaticky zvýraznia príkazy for a end
v modrej farbe. To poskytuje lepšiu čitateľnosť, ak ich vložíte medzi
ich príkazy (ako sme to urobili); robí to modul Editor
automaticky. Ak zadáte do príkazového okna,
MATLAB nevydá nový príkaz >> príkazového riadku, kým vy
zadajte príkaz end, ktorý spôsobí, že program MATLAB dokončí úplný cyklus a
zobrazí nový príkazový riadok.

  • Ak použijete slučku v skripte súboru M s efektom echo on display, potom sa príkazy budú opakovať zakaždým počas cyklu. Môžete tomu zabrániť vložením príkazu echo off tesne pred príkaz end a príkaz echo on hneď za ním; potom sa každý príkaz v slučke prejaví raz (okrem end).

Poznámka: V matlabe sú tri typy slučiek, ktoré sú uvedené nižšie

1. Cyklus for v Matlabe

a=0;
pre i=1:10
a=a+1;
koniec

2. Cyklus while v Matlabe

a=0;
zatiaľ čo a<10
a=a+1;
koniec

3. Slučka if v Matlabe

a = 10;
ak a==10
"prvý prípad"
inak
"druhý prípad"
koniec

ans =
prvý prípad

Preto z vyššie uvedeného môžeme konštatovať, že sa musíte pozrieť na množstvo ďalších informácií a alternatív!


Katedra: Informačné technológie

PROGRAMOVANIE VMATLAB


OperátoriMATLAB

· Výkazy slučky

Cykluspre

Syntax

count=start:step:final

príkazy MATLABu

Popis

počet je premenná cyklu,

začiatok je jeho počiatočná hodnota,

konečná je jeho konečná hodnota,

krok - krok, o ktorý sa počet zvyšuje vždy, keď vstúpi do slučky

cyklus sa skončí, akonáhle bude hodnota count väčšia ako konečná.

Príklad

Nech je potrebné odvodiť rodinu kriviek pre x€, ktorá je daná funkciou závislou od parametra

y (x, a) \u003d e-ax sin x,

pre hodnoty parametrov a od -0,1 do 0,1. Nižšie je uvedený zoznam súborového programu na výstup skupiny kriviek.

Výpis programu

x = ;

pre a = -0,1:0,02:0,1

y = exp(-a*x).*sin(x);

V dôsledku vykonávania programu sa zobrazí grafické okno, ktoré obsahuje požadovanú rodinu kriviek.

Cykluszatiaľ čo

Syntax

while stav slučky

príkazy MATLABu

Popis

Cyklus beží tak dlho, kým je pravdivá (skutočná) podmienka cyklu. Nasledujúce relačné operácie môžu nastaviť podmienku pre vykonanie cyklu:

Zložitejšie podmienky sú špecifikované pomocou logických operátorov. Logické operátory sú uvedené v nasledujúcej tabuľke


Príklad

Operátori pobočiek

Podmienený operátorak

Syntax

ak podmienka

príkazy MATLABu

Popis

Ak je podmienka pravdivá, potom sa vykonajú príkazy MATLABu umiestnené medzi if a end, a ak podmienka nie je pravdivá, potom dôjde k prechodu na príkazy umiestnené za koncom.

Príklad

Podmienený operátorináč Ak

Syntax

ak podmienka 1

iná podmienka 2

………………………

iná podmienka

Popis

V závislosti od splnenia jednej alebo druhej podmienky funguje zodpovedajúca vetva programu, ak sú všetky podmienky nesprávne, vykonajú sa príkazy umiestnené za iným.

Príklad

Operátorprepínač

Syntax

prepínacia premenná

hodnota prípadu1

hodnota prípadu2

……………………

casevaluen


Každá vetva je definovaná príkazom case, prechod naň sa vykoná, keď premenná príkazu switch nadobudne hodnotu zadanú za prípadom alebo jednu z hodnôt zo zoznamu prípadov. Po vykonaní ktorejkoľvek z vetiev sa prepínač ukončí, zatiaľ čo hodnoty zadané v iných prípadoch sa už nekontrolujú. Ak pre premennú neexistujú vhodné hodnoty, vykoná sa vetva programu zodpovedajúca inak.

Príklad

Slučka preruší. Výnimočné situácie.

Operátorprestávka

Syntax

Príkaz break sa používa na organizáciu cyklických výpočtov: for...end, while...end. Keď stav

ak podmienka

príkaz break ukončí cyklus (for alebo while) a vykonajú sa príkazy, ktoré sú umiestnené v riadkoch nasledujúcich za end. V prípade vnorených slučiek break opustí vnútornú slučku.

Obsluha výnimiek, operátorskústechytiť

Syntax

výpovede, ktorých vykonanie

môže viesť k chybe

príkazy, ktoré sa majú vykonať

keď sa v bloku vyskytne chyba

medzi pokusom a chytením

Popis

Konštrukt try...catch umožňuje obísť výnimočné situácie (chyby, ktoré vedú k ukončeniu programu, napríklad prístup k neexistujúcemu súboru) a v prípade, že nastanú, vykonať nejakú akciu.

Príklad

Servisné funkcie

disp zobrazí text alebo hodnotu premennej v príkazovom okne

vstup- požaduje vstup z klávesnice. Používa sa pri vytváraní aplikácií s rozhraním príkazového riadka.

eval vykoná obsah reťazca alebo reťazcovej premennej, ako sú príkazy MATLABu

jasný- Odstraňuje premenné pracovného prostredia.

slc- vymaže príkazové okno

Ak chcete získať ďalšie informácie o týchto a ďalších funkciách, spustite príkazový riadok

Pomocnázov_funkcie

Zadania pre laboratórne práce

Číslo konkrétnej možnosti úlohy určuje učiteľ.

Úloha číslo 1

Táto úloha znamená nájsť algebraický interpolačný polynóm stupňa n pre nejaký súbor údajov: P n(X) .

Cieľ:

Je potrebné napísať program na výpočet koeficientov algebraického interpolačného polynómu P n(X)= a 0 + a 1 X+ … + a n x n.

Metodické pokyny:

Vezmime si napríklad nasledujúci súbor údajov:

i 0 1 2 3
Xi 1,2 1,4 1,6 1,8
y i 8,3893 8,6251 8,9286 8,9703

Odds a 0 , a 1 , …, a n sú určené z riešenia sústavy rovníc:

Tu nje poradie interpolačného polynómu,

n+1 je počet daných dvojíc bodov ( X, r),

a 0 , a 1 ,… a n sú požadované koeficienty polynómu P n(X)= a 0 + a 1 X+ … + a n x n).

Požiadavky na program

Nastavte hranice čiar , na ktorom je postavený interpolačný polynóm P(x)

· Opýtať sa n je počet interpolačných segmentov (alebo ekvivalentne stupeň polynómu)

Poznámka: x0, xn, n zadané z klávesnice.

· Na získanie počiatočných údajov (x, y)(počet párov bodov (x i, y i), na ktorom je zostrojený interpolačný polynóm P(x)n1=n+1) poskytnúť:

Zadávanie náhodne usporiadaných uzlov x i, i=0, n z klávesnice

Výpočet uzla x i, i=0, n, zodpovedajúce jednotnému usporiadaniu argumentácie X na segmente

V pp. hodnoty 1,2 yi, i=0, n buď zadané z klávesnice (ak je pôvodná funkcia neznáma), alebo vypočítané z danej funkcie f(x). Výraz, ktorý definuje funkciu, sa zadáva z klávesnice a musí spĺňať pravidlá pre písanie výrazov v MATLABE

Vstup údajov ( x i, y i, i=0, n) zo súboru

Vyriešte sústavu rovníc na určenie koeficientov polynómu P(x)

Zostavte grafy pôvodnej tabuľkovej funkcie a polynómu P(x)

· Ak je počiatočný údaj daný ako funkcia f(x), nakreslite interpolačnú chybu /f(x) – P(x)/. Vypočítajte maximálnu hodnotu modulo chyby interpolácie na danom intervale.

Pri vykonávaní poslednej položky v segmente získajte aspoň 500 bodov na výpočty

Úloha číslo 2

Spline interpolácia

Cieľ:

Je potrebné vytvoriť program na výpočet koeficientov a zostrojenie spline funkcie S(x), "zlepenej" z kúskov polynómov 3. rádu S. i(X), ktoré majú špeciálnu notáciu:

,

Funkcia S i(X) definované na segmente

Požiadavky na program

Pri vykonávaní tejto práce musíte:

Nastavte hranice segmentu, na ktorom je postavená funkcia splajnu S(x).

· Zadajte n – počet interpolačných segmentov, na ktorých je zostrojený kubický polynóm Si(x).

· Poznámka: x0, xn, n sa zadáva z klávesnice.

Zorganizujte vstup počiatočných údajov (x, y) (počet dvojíc bodov (xi, yi), na ktorých je postavená funkcia spline S(x), n1=n+1) za predpokladu:

Zadávanie ľubovoľných uzlov xi, i=0, n z klávesnice

Výpočet uzlov xi, i=0, n, zodpovedajúcich rovnomernému usporiadaniu argumentu x na segmente

V pp. 1,2 hodnoty yi, i=0, n sa buď zadávajú z klávesnice (ak pôvodná funkcia nie je známa), alebo sa vypočítajú z danej funkcie f(x). Výraz, ktorý definuje funkciu, sa zadáva z klávesnice a musí spĺňať pravidlá pre písanie výrazov v MATLABE

Zadávanie údajov (xi, yi, i=0, n) zo súboru

S1""(x0)=0, S3""(x3)=0

S1"(x0)=f"(x0), S3"(x3)=f"(x3)

S1""(x0)=f "(x0), S3""(x0)=f "(x3)

Na určenie koeficientov prirodzeného kubického splajnu (okrajové podmienky 1) je potrebné vyriešiť nasledujúcu sústavu rovníc:

Koeficienty σ 0 =0, σ n =0

· Vykreslite grafy pôvodnej funkcie a spline funkcií pre všetky tri typy okrajových podmienok.

· Zostrojte grafy interpolačných funkcií splajnu f(x) – S(x) pre všetky tri typy okrajových podmienok.

Poznámka:

V balíku MATLAB začínajú indexy jednorozmerných a dvojrozmerných polí od 1, nie od 0. Berte to do úvahy pri písaní programu.