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
^ 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 ![]() ![]() ![]() |
|
Vypočítajte ![]() ![]() ![]() |
|
Nastaviť pole ![]() ![]() |
|
![]() ![]() ![]() |
|
Zadajte prirodzené číslo n a reálne číslo x. Vypočítajte ![]() |
|
Zadajte prirodzené číslo n. Nájdite najväčšie medzi hodnotami ![]() |
|
Zadajte prirodzené číslo n. Medzi významami ![]() ![]() |
|
Zadajte prirodzené číslo n a vektor reálnych čí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: ![]() |
|
Zadajte prirodzené číslo n a vektor reálnych čísel ![]() |
|
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 ![]() |
|
Zadajte vektor reálnych čísel ![]() |
|
Zostavte maticu A(4,4) podľa pravidla: ![]() |
|
Zostavte maticu D(3,2) podľa pravidla: ![]() |
|
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 ![]() |
|
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!
← Predchádzajúca reprezentácia výsledkov Matlabu |
---|
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úste… chytiť
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.