Feltételes if utasítás

A nagyon egyszerű eset szintaxis adott operátor ha így néz ki:

ha<выражение>
<операторы>
vége

Felhívom a figyelmet arra, hogy ezzel ellentétben modern nyelvek a programozás nem használ olyan dolgot, mint összetett utasítás. A feltételes utasításblokknak véget kell vetni hivatalos szó vége.

A következő példa a sign() függvény megvalósítására, amely +1-et ad vissza, ha a szám nagyobb nullánál, -1-et, ha a szám kisebb, és 0-t, ha a szám nulla:

x=5;
ha x > 0
diszp(1);
vége
ha x< 0
disz(-1);
vége
ha x == 0
disz(0);
vége

Az adott példa elemzése azt mutatja, hogy ez a három feltétel kölcsönösen kizárja egymást, pl. amikor az egyik aktiválódik, nem kell ellenőrizni a többit. Egy ilyen logika megvalósítása megnöveli a programvégrehajtás sebességét. Ezt a konstrukció használatával érhetjük el

ha<выражение>
<операторы1>% végrehajtva, ha a feltétel igaz
más
<операторы2>% végrehajtva, ha a feltétel hamis
vége

Ekkor a fenti példa a következőképpen írható fel:

X=5;
ha x > 0
diszp(1);
más
ha x< 0
disz(-1);
más
disz(0);
vége
vége

Ez a program először ellenőrzi, hogy az x változó pozitív-e, és ha igen, akkor az 1-es érték jelenik meg a képernyőn, és az összes többi feltételt figyelmen kívül hagyja. Ha az első feltétel hamisnak bizonyult, akkor a program végrehajtása másként (egyébként) a második feltételre megy, ahol az x változó negativitását ellenőrizzük, és ha a feltétel igaz, akkor a -1 érték jelenik meg. A képernyőn. Ha mindkét feltétel hamis, akkor a kimenet 0.

A fenti példa egyszerűbb formában is megírható egy másik MatLab if utasításkonstrukcióval:

ha<выражение1>
<операторы1>% végrehajtva, ha a kifejezés1 igaz
elseif<выражение2>
<операторы2>% végrehajtva, ha a kifejezés2 igaz
...
elseif<выражениеN>
<операторыN>% végrehajtva, ha a kifejezésN igaz
vége

és a következőképpen írják:

x=5;
ha x > 0
diszp(1); A % akkor kerül végrehajtásra, ha x > 0
elseif x< 0
disz(-1); % kerül végrehajtásra, ha x< 0
más
disz(0); A % akkor kerül végrehajtásra, ha x = 0
vége

Az if utasítással bonyolultabb (összetett) feltételeket is tesztelhet. Például meg kell határoznia: az x változó a 0 és 2 közötti értéktartományba esik? Ez megtehető két feltétel egyidejű ellenőrzésével: x >= 0 és x<=2. Если эти оба условия истинны, то x попадает в диапазон от 0 до 2.

Az összetett feltételek MatLab-ban való megvalósításához logikai operátorokat használnak:

& - logikai ÉS
| - logikai VAGY
~ - logikus NEM

Nézzünk egy példát az összetett feltételek használatára. Legyen szükséges ellenőrizni, hogy az x változó a 0 és 2 közötti tartományban van-e. A program a következőképpen fog megírni:

x = 1;
ha x >= 0 és x<= 2
más
vége

A második példában megvizsgáljuk, hogy az x változó nem tartozik-e a 0 és 2 közötti tartományba. Ezt a két feltétel valamelyikének aktiválásával érjük el: x< 0 или x > 2:

x = 1;
ha x< 0 | x > 2
disp("x nem a 0 és 2 közötti tartományban van");
más
disp("x a 0 és 2 közötti tartományban van");
vége

Az AND, OR, NOT logikai operátorok használatával számos összetett feltételt hozhat létre. Például ellenőrizheti, hogy az x változó a -5 és 5 közötti tartományban van-e, de nem a 0 és 1 közötti tartományban. Nyilvánvalóan ez a következőképpen valósítható meg:

x = 1;
if (x >= -5 és x<= 5) & (x < 0 | x > 1)
disp("x a [-5, 5]-hez tartozik, de nincs benne ");
más
disp("x vagy nincs a [-5, 5]-ben vagy a "-ben);
vége

Vegye figyelembe, hogy az összetett összetett feltételben zárójeleket használtunk. A helyzet az, hogy az ÉS művelet prioritása magasabb, mint a VAGY művelet prioritása, és ha nem lenne zárójel, akkor a feltétel így nézne ki: (x >= -5 és x<= 5 и x < 0) или x >1. Nyilvánvalóan egy ilyen ellenőrzés a várttól eltérő eredményt adna.

A programozásban a zárójelek az utasítások végrehajtási prioritásának megváltoztatására szolgálnak. Tetszik aritmetikai operátorok, a logikaiak is módosíthatók a programozó kérésére. A zárójelek használatának köszönhetően az ellenőrzés először bennük, majd rajtuk kívül történik. Éppen ezért a fenti példában ezek szükségesek a kívánt eredmény eléréséhez.

Prioritás logikai műveletek következő:

NEM (~) - a legmagasabb prioritás;
És (&) - közepes prioritás;
VAGY (|) a legalacsonyabb prioritás.

while ciklus utasítás

A MatLab programozási nyelvnek két ciklusutasítása van: while és for. Segítségükkel például ismétlődő algoritmusok programozása, sorozat összegének kiszámítása, tömbelemek számbavétele és még sok minden más történik.

A legegyszerűbb esetben a ciklus a while utasítással van megszervezve, amelynek szintaxisa a következő:

míg<условие>
<операторы>
vége

Itt<условие>olyan feltételes kifejezést jelent, mint amilyet az if utasításban használnak, és a while ciklus addig fut, amíg a feltétel igaz.

Vegye figyelembe, hogy ha a feltétel hamis a ciklus megkezdése előtt, akkor a ciklusban lévő utasítások soha nem fognak végrehajtódni.

Íme egy példa a while ciklusra egy sorozat összegének kiszámításához:


i=1; % teljes számláló
miközben én<= 20 % цикл (работает пока i <= 20)

vége % ciklus vége
diszp(S); % megjelenítési összeg 210 a képernyőn

Most bonyolítjuk a feladatot, és kiszámoljuk a sorozat összegét, míg . Itt két feltételt kapunk a ciklus utasításban: vagy az i számlálója eléri a 20-at, vagy az S összeg értéke meghaladja a 20-at. Ez a logika egy összetett feltételes kifejezéssel valósítható meg a while ciklus utasításban:

S=0; % kezdeti összeg érték
i=1; % teljes számláló
miközben én<= 20 & S <= 20 % цикл (работает пока i<=10 и S<=20
S=S+i; % számolt mennyiség
i=i+1; % növekmény számláló 1-gyel
vége % ciklus vége

A fenti példa bemutatja az összetett feltételek használatának lehetőségét egy while ciklusban. Általánosságban elmondható, hogy feltételes kifejezésként ugyanazokat a feltételeket írhatja fel, mint a feltételes if utasításban.

Bármely ciklusoperátor munkája, beleértve a while-t is, erőszakkal megszakítható a break utasítással. Például az előző programot a következőképpen lehet átírni a break utasítással:

S=0; % kezdeti összeg érték
i=1; % teljes számláló
miközben én<= 20 % цикл (работает пока i<=10
S=S+i; % számolt mennyiség
i=i+1; % növekmény számláló 1-gyel
ha S > 20%, ha S > 20,
szünet; % akkor a hurok véget ér
vége
vége % ciklus vége
diszp(S); % 21 összegét jeleníti meg a képernyőn

Ebben a példában a ciklus befejezésének második feltétele, amikor S nagyobb, mint 20, magában a ciklusban van beírva, és a break utasítás használatával a ciklus közvetlenül a while ciklus után kilép a disp() függvénybe.

A második ciklusvégrehajtást vezérlő továbbra is lehetővé teszi az utána lévő programrészlet végrehajtásának kihagyását. Például egy tömb elemeinek összegét szeretné kiszámítani

a = ;

az 5-ös indexen lévő elem kivételével. Egy ilyen program a következőképpen írható fel:

S=0; % kezdeti összeg érték
a = ; % tömb
i=0; % tömb indexszám
miközben én< length(a) % цикл (работает пока i меньше
% tömbhossz a)
i=i+1; % növeli az indexszámlálót 1-gyel
ha i == 5%, ha az index 5
folytatni; % akkor nem számoljuk ki
vége
S=S+a(i); A megszámolt tételek % összege
vége % ciklus vége
diszp(S); % megjelenítési összeg 40 a képernyőn

Megjegyzendő, hogy ebben a programban az i tömb indexe megnövekszik a feltétel ellenőrzése előtt. Ez úgy történik, hogy az index értéke 1-gyel nő a ciklus minden iterációjában. Ha az i számláló növekményét úgy írjuk, mint az előző példákban, pl. az összeg kiszámítása után a turpināt utasítás azt eredményezi, hogy értéke 5-nél állna meg, és a while ciklus "örökké" futna.

ciklus utasításhoz

Gyakran egy hurok szervezésekor szükség van a számláló feletti iterációra egy adott értéktartományban és egy adott változtatási lépéssel. Például egy vektor (tömb) elemein való iterációhoz 1-től N-ig számlálót kell szervezni 1-es lépéssel, ahol N a vektor elemeinek száma. A sorozat összegének kiszámításához egy a-tól b-ig tartó számlálót is megadunk a szükséges lépésváltási lépéssel. Stb. Tekintettel arra, hogy a programozási gyakorlatban gyakran találkozunk ilyen feladatokkal, megvalósításukhoz külön for loop operátort javasoltak, ami megkönnyíti és látványosabbá teszi a számlálós ciklus megvalósítását.

A for ciklus utasítás szintaxisa a következő:

számára<счетчик> = <начальное значение>:<шаг>:<конечное значение>
<операторы цикла>
vége

Tekintsük ennek a ciklusnak a munkáját a vektorban lévő elem maximális értékének megtalálására szolgáló algoritmus megvalósításának példáján:

a = ;
m = a(1); % aktuális maximális érték
ha i=1:hossz(a) % hurok 1-től a c vektor végéig
% 1. lépés (alapértelmezett)
ha m< a(i) % если a(i) >m,
m = a(i); %, akkor m = a(i)
vége
vége % for ciklus vége
disp(m);

Ebben a példában a for hurok beállítja az i számlálót, és 1-ről 10-re változtatja értékét 1-es lépésekben. Vegye figyelembe, hogy ha a növekmény nincs kifejezetten megadva, akkor az alapértelmezett érték 1.

A következő példában vegyük figyelembe a vektorelemek jobbra tolására szolgáló algoritmus megvalósítását, azaz. az utolsó előtti elem kerül az utolsó helyére, a következő kerül az utolsó előtti helyére, és így tovább. az első elemhez:

a = ;
disp(a);
i=hossz(a): -1:2 % hurok 10-ről 2-re a -1 lépéssel
a(i)=a(i-1); % eltolás elemei az a vektornak
vége % for ciklus vége
disp(a);

A program eredménye

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

A fenti példa azt mutatja, hogy egy ciklus megvalósításához egy nagyobb értékről egy kisebb számlálóra, kifejezetten meg kell adni a lépést, ebben az esetben -1. Ha ez nem történik meg, a ciklus azonnal leállítja a munkáját, és a program nem fog megfelelően működni.

Egyenlet megoldások

Szentpétervár: BHV-Petersburg, 2005. - 1104 p.
ISBN 5-94157-494-0
Letöltés(közvetlen link) : matlab72005.pdf Előző 1 .. 117 > .. >> Következő

miközben hurkolja a MATLAB parancs feltételét

Ebben a példában a ciklus megismétlésének feltétele, hogy az aktuális tag modulusa x2k~l/(2k +1)! több mint IO10. Feltétel írásához az űrlapba,

A MATLAB megérti, használja a ">" (nagyobb mint) jelet. A mysin fájlfüggvény szövege, amely az ismétlődési reláció alapján számítja ki a sorozat összegét

k 2k(2k + \) k 1

listában látható 7.7.

Megjegyzés ^

Természetesen általános esetben a tag kicsinysége relatív fogalom, a tag lehet mondjuk IO-10 nagyságrendű, de maga az összeg is ugyanilyen nagyságrendű. Ebben az esetben az összegzési befejezési feltételnek másnak kell lennie, nevezetesen az aktuális tag és a már felhalmozott összegrész arányának modulusa kicsi. Erre egyelőre nem figyelünk – a feladatunk a ciklusokkal végzett munka tanulmányozása.

Felsorolás 7.7. A mysin fájlfüggvény, amely a szinust sorozatbővítésenként számítja ki

s függvény - mysin(x)

"% A szinusz számítása sorozatbővítés alapján

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

Ї a k \u003d O k \u003d 0 összegének első tagjának kiszámítása; őket;

az x2 - x*x segédváltozó %-os számítása;

míg abs(u) > 1.Oe-IO k = k + 1; u \u003d -u * x2 / (2 * k) / (2 * k + 1)

Kérjük, vegye figyelembe, hogy a while ciklusnak a for-tól eltérően nincs ciklusváltozója, ezért a ciklus előtt kellett egyet hozzárendelni a ciklushoz, és a cikluson belül k-t eggyel növelni.

Hasonlítsa össze az eredményt úgy, hogy a mysin és sin függvényeket a [-l, i] Fia intervallumon ugyanazokon a tengelyeken ábrázolja, például az fplot segítségével (a parancsokat a parancssorból lehet beállítani): "fplot (@rnysin, [- pi, pi])" tarts ki

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

Rizs. 7.3. A mysin és a sin összehasonlítása360_________ II. rész. Számítástechnika és programozás

Az így kapott grafikonokat a ábra mutatja. 7.3, a mysin fájlfüggvény helyes működéséről tanúskodnak.

A while ciklus feltétele tartalmazhat egy logikai kifejezést, amely relációs operátorokból és logikai operátorokból vagy operátorokból áll. A ciklus megismétlésének feltételének beállításához a táblázatban megadott összefüggés műveleteit. 7.1.

7.1. táblázat. kapcsolati műveletek

Jelölés Műveleti reláció
== Egyenlőség
< Меньше
<= Меньше или равно
>= Nagyobb vagy egyenlő
Nem egyenlő

A bonyolultabb feltételek logikai operátorok vagy műveletek segítségével adhatók meg. Például -1 feltétel<.г<2 состоит в одновременном выполнении неравенства а>-1 és x<2 и записывается при помощи логического оператора and

és(x >= -1, X< 2)

vagy ezzel egyenértékű logikai művelettel "és" - &

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

A főbb logikai műveleteket és operátorokat, valamint a rögzítésükre vonatkozó példákat a táblázat tartalmazza. 7.2 (a logikai kifejezéseket részletesen e fejezet "Logikai műveletek számokkal és tömbökkel" című fejezete írja le).

7.2. táblázat. Logikai kifejezések

Kifejezés típusa Kifejezés Logikai operátor Logikai művelet
Logikai "és" A*<3 И к=4 and (х < 3, k==4) (х<3) s (k = 4)
Logikai "vagy" X = Ї vagy 2 vagy (x == 1, X= 2) (x == 1) I (x == 2)
A "nem" tagadása a * 1,9 nem (a == 1,9) - (a == 1,9)

^ Megjegyzés ^

A not, és, és vagy operátorok olyan függvények, amelyek igazat (logikai egyet) vagy hamisat (logikai nullát) adnak vissza. Bármely logikai kifejezés ugyanazokat az értékeket veszi fel.

Egy végtelen sorozat összegének kiszámításakor célszerű korlátozni a tagok számát. Ha a sorozat azért tér el, mert a feltételei nem hajlanak nullára, akkor előfordulhat, hogy az aktuális tag kicsinységének feltétele soha nem teljesül, és a program hurkolni fog. Végezzen összegzést a kifejezések számának korlátozásával. Adjon korlátot a kifejezések számához a mysin függvényfájl while ciklusfeltételében (lásd a 7.6-os listát):

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

és l.Oe-lO, k<= 100000)

^ Megjegyzés ^

A logikai műveletek végrehajtási sorrendjének megadásához zárójeleket kell használni (a logikai operátorokról és logikai műveletekről, valamint ezek tömbökre való alkalmazásának lehetőségéről bővebben lásd:

mp. "Logikai kifejezések tömbökkel és számokkal").

Az algoritmusok programozása során az ismétlődő cselekvések ciklusok formájában történő szervezése mellett gyakran szükséges bizonyos feltételektől függően egy vagy másik parancsblokk végrehajtása, pl. használja az elágazó algoritmust.

Fiókkezelők

A feltételes if utasítás és a switch utasítás lehetővé teszi egy rugalmas elágazási algoritmus létrehozását, amelyben bizonyos feltételek teljesülése esetén a MATLAB utasítások vagy parancsok megfelelő blokkja végrehajtásra kerül. Szinte minden programozási nyelvnek hasonló operátorai vannak.

Feltételes if utasítás

Az if utasítás használható egyszerű formájában, parancsblokk végrehajtására, ha valamilyen feltétel teljesül, vagy if-eiseif-eise konstrukcióban elágazó algoritmusok írásához.362

rész II. Számítástechnika és programozás

Bemeneti argumentum érvényesítése

Kezdjük a legegyszerűbb példával – hozzon létre egy függvényfájlt a kiszámításhoz

Amellett, hogy a programok lineáris szerkezet, amelyek utasításait szigorúan sorrendben hajtják végre, sok olyan algoritmus létezik, amelyek felépítése nemlineáris. Ebben az esetben az algoritmusok elemsorozata bizonyos feltételek függvényében végrehajtható, hol véges számú ismétléssel - szabályos ciklusokkal, hol pedig adott feltétel teljesülésekor véget érő ciklusok formájában. Szinte minden komoly programnak van nemlineáris szerkezete. Az ilyen programok létrehozásához speciális vezérlőstruktúrákra van szükség. Bármilyen magas szintű programozási nyelven elérhetők, különösen a Matlabban.

Vegye figyelembe az operátorokat m- fájlok a részletekért.

hozzárendelés operátor. A programozási rendszer fő üzemeltetője matlab van hozzárendelés operátor, amelynek a következő szerkezete van:

VariableName= kifejezés

Az operátor a változók azonosítására szolgál, és a szimbólum jelöli = , amelytől balra a változó neve, jobbra pedig egy aritmetikai vagy karakterlánc-kifejezés található (az aritmetikai és karakterlánckifejezések írásának szabályairól az 1.1.2. pontban volt szó). Íme néhány példa hozzárendelési operátorokra (1.3.4-1. ábra).

Rizs. 1.3.4-1. Hozzárendelési nyilatkozat példák

A hozzárendelési utasítás jobb oldalán használt összes változót előre meg kell adni. Ha a parancssor pontosvesszővel ( ; ), akkor az utasítás eredménye nem jelenik meg, ellenkező esetben a parancsablak következő sorában jelenik meg. Ez a megjegyzés vonatkozik a ben található hozzárendelési utasítások végrehajtására is m- fájlok.

Adatbeviteli operátorok. Az adatbevitel a Matlabban mindkét hozzárendelés operátor ( a=5;), és a billentyűzet beviteli funkciójával:

VariableName=input("Kérés");

Ez a függvény beír egy kifejezést a billentyűzetről, és az eredményt a rendszer egy nevű változóban tárolja a. Az alábbi példában egy változóba a először egy számértéket kell megadni, majd egy numerikus kifejezést (1.3.4-2. ábra).

Rizs. 1.3.4-3. Szimbolikus formában megadott kifejezés értékelése

Feltételes nyilatkozat, ha... vége. Feltételes operátor ha ban ben Általános nézet a következőképpen van írva:

haBooleanExpression1

Utasítások1

önmagaFeltétel2

BooleanExpression2

BooleanExpression3

A logikai kifejezések írásának szabályait az 1.1. témakör ismerteti.

Ez a konstrukció több konkrét változatot tesz lehetővé. A legegyszerűbb - csonka villa [x] a következő formája van:

haBooleanExpression

Utasítás

Emlékezzünk vissza, ha BooleanExpression logikai értéket ad vissza 1 (azaz "Igaz") végrehajtásra kerülnek Utasítás, amely a szerkezet testét alkotja ha...vége. Ugyanakkor az üzemeltető vége az utasítások listájának végét jelzi. A listában szereplő utasítások vesszővel vagy pontosvesszővel vannak elválasztva. Ha egy BooleanExpression nincs végrehajtva (logikai értéket ad 0 , "Hamis"), akkor Utasítás szintén nem valósulnak meg.

Az alábbiakban egy példa látható a legegyszerűbb csonka ág használatára, amelyet az operátorral valósítunk meg ha(1.3.4-4. ábra).

Rizs. 1.3.4-5. Példa egy szabványos ágra

A fenti példából látható, hogy az operátor ha Lehet egy vagy több sorban.

Vegyünk egy bonyolultabb példát - beágyazott ág. Vegyünk egy példát

sőt, hogy teljes mértékben tükrözzük egy összetett elágazás szerkezetét, anélkül, hogy törődnénk a hosszú parancssorok átvitelével, m-funkció (1.3.4-7. ábra). Jelöljük ki az adatokat a fő ág ellenőrzéséhez, és térjünk át a függvényre raz() eltérő kezdeti adatokkal (1.3.4-6. ábra).

Rizs. 1.3.4-7. Egy beágyazott ágat megvalósító függvény

A feleletválasztós operátor a switch. A többszörös kijelölés megvalósításához a következő konstrukciót használjuk kapcsolók:

kapcsolóKifejezés

ügyOlvasás_1

Lista_utasítások_1

ügyérték_2

Lista_utasítások_2

ügyÉrték_N

Utasítás_Lista_N

másképp

Utasítások_listája_N+1

Ha a fejléc utáni kifejezés kapcsolóértéke az egyik kifejezésnek Jelentése..., akkor az utasításblokk végrehajtásra kerül ügy, egyébként - az utasítások listája az operátor után másképp. Blokk végrehajtásakor ügy azokat az utasításlistákat hajtják végre, amelyekhez Jelentése egybeesik Kifejezés. Kérjük, vegye figyelembe, hogy Jelentése lehet szám, konstans, változó, sejtvektor vagy akár karakterláncváltozó is. Magyarázzuk el a felsorolás operátor használatát kapcsoló következő példa:

Mábrán látható a többszörös elágazást megvalósító -függvény. 1.3.4-8, és a kezdeti adatokkal való elérése, amely lehetővé teszi az ág minden ágának ellenőrzését, a 2. ábrán látható. 1.3.4-9.

Rizs. 1.3.4-9. Funkcióhívások többfunkciós ()

Funkció többfunkciós(x,n) két paraméter, a második pedig a funkcionális függőség típusát meghatározó indikátor szerepét tölti be. A függvény értéke egy változóba van írva y. Ha n=1, akkor az első esetblokk kerül végrehajtásra, ha 2, akkor a második, ha n=2, 3 vagy 4, akkor a harmadik. Ha az n változó értéke nem egyezik a felsorolt ​​értékek egyikével sem, akkor a kulcsszó után található parancs végrehajtásra kerül. másképp.

A szabályos hurok operátor a...végére való. Írja be a hurokoperátort a...végéreáltalában adott számú hurokismétléssel végzett számítások szervezésére szolgál. Egy ilyen ciklus felépítése a következő:

vag = s:d:e esetén

Utasítás 1

UtasításN

ahol s- a ciklusváltozó kezdeti értéke var, d- növeljük ezt a változót és e - a vezérlőváltozó végső értéke, amely felett a hurok véget ér. Lehetőség van űrlapba írásra is s:e(ebben az esetben d=l). A ciklusban végrehajtott utasítások listája az utasítással zárul vége.

Példaként az operátor használatára a...végére kiszámítja a tömb elemeinek összegét x, amelynek értékei a parancsablakban vannak megadva az m-függvénnyel summa()(1.3.4-10. ábra), amelynek paramétere a vektor x. A tömbelemek száma x függvény határozza meg hossz. A parancsablak a függvény meghívása mellett lehetőséget biztosít a számítások eredményének ellenőrzésére a beépített függvény segítségével összeg(x)(1.3.4-11. ábra).

Rizs. 1.3.4-11. Funkcióhívás summa()és beépített funkció összeg()

Az operátor hurokban használható folytatni , amely átadja a vezérlést a ciklus következő iterációjára, kihagyva az utána következő utasításokat, beágyazott ciklusban pedig a fő ciklus következő iterációjára adja át az irányítást. Operátor szünet egy ciklus végrehajtásának korai megszakítására használható (például egy programszakasz hibakeresésekor). Amint ez előfordul a programban, a ciklus megszakad.

A Matlabban az egyszerű szabályos hurkok mellett lehetőség van rendszerezésre is beágyazott hurkok. Vegyünk egy példát kétdimenziós tömb létrehozására a, amelynek minden eleme az indexeinek összegét jelenti (1.3.4-12. ábra). Fellebbezni forgatókönyv- fájl vziklábrán látható. 1.3.4-13.

Rizs. 1.3.4-13. Fellebbezni forgatókönyv- nevű fájl vzikl

Az iteratív ciklusoperátor a while...end. A szerkezet általános képe míg...vége alábbiak szerint:

mígBooleanExpression

Utasítás

Ennek a szerkezetnek az a sajátossága, hogy az ismétlési struktúra törzsében található utasítások csak akkor hajtódnak végre, ha BooleanExpression"igaz". Amint a feltétel "hamis" lesz, az ismétlési struktúra kilép, és a vezérlés átkerül a kulcsszó után található utasításra. vége.

Mondjunk egy egyszerű példát (1.3.4-14. ábra).


Rizs. 1.3.4-14. Párbeszédprogram operátort használva míg...vége

Ez a program tárolva m- nevű fájl alapozó11, a sugár felhasználó által megadott értékének kerületének ismételt kiszámítására szolgál r, ahol a párbeszédablak a paranccsal valósul meg bemenet. Változó bemenettel társított sorok rés a kerület számítását a vezérlőstruktúra tartalmazza míg...vége. Ez a számítások ciklikus ismétléséhez szükséges különböző értékek megadásakor. r. Viszlát r>=0, a ciklus megismétlődik. De érdemes megkérdezni r<0 , a kerület számítása leáll és a hurok véget ér. Mivel a program második sorában az érték r 0-ra van állítva, a ciklus legalább egyszer megismétlődik.

A parancsablakban a programmal való munkavégzés az ábrán látható. 1.3.4-15.

Rizs. 1.3.4-16. Program megszakítása utasítás használatával szünet

Operátor folytatniátadja a vezérlést a ciklus következő iterációjára, kihagyva az azt követő utasításokat, beágyazott ciklusban pedig a fő ciklus következő iterációjára adja át az irányítást. Az alábbiakban egy példa a b(3,3) kétdimenziós tömb pozitív elemeinek összegének és szorzatának kiszámítására (1.3.4-17. ábra).


Rizs. 1.3.4-17. Program megszakítása utasítás használatával folytatni

Példák a problémák megoldására a használatával

M-fájlok

Példa 1.3.5-1. Adott n szám . Ki kell számítani az összegüket: ahol

A probléma megoldására egy függvényt fejlesztettek ki fb(x), amely a függvény aktuális értékének kiszámítására szolgáló algoritmust valósítja meg. A függvénynek egy bemeneti paramétere van - a tömbelem aktuális értéke bés egy kimeneti paraméter - y(1.3.5-1. ábra). A függvényt az összeg kiszámítására szervezett hurokban hívjuk meg (1.3.5-2. ábra).

Rizs. 1.3.5-2. Számok összegének kiszámítását megvalósító program

A létrehozott függvényértékek összegének kiszámítása forgatókönyv- nevű fájl zadashа.m, amelyben a számok száma ( n=10) és értékük vektora ( b), majd egy szabályos hurkot szervezünk a függvények meghívására fb()és az összeg kiszámítása.

A számításokat futtatással végezzük forgatókönyv-fájlt az ablak parancssorába való beírásával parancsablak neve zadasha. Megvalósításának eredményeit az ábra mutatja. 1.3.5-3.


Rizs. 1.3.5-3. dob forgatókönyv- fájl zadasha a végrehajtáshoz

1.3.5. példa-2. Alkoss tetszőleges számokból kétdimenziós tömböt a(3,4). Számítsunk ki és adjunk ki egy b egydimenziós tömböt, amelynek minden eleme az a tömb megfelelő sorának elemeinek számtani átlaga.

ábrán. 1.3.5-4 adott forgatókönyv- nevű fájl zadasha2, ahol a mátrix bevezetésre kerül, a, amely három sorból és négy oszlopból áll. A hurkot a kialakított tömbelemek száma alapján szervezzük b függvény meghívásával sred_ar(). Egy tömb kerül átadásra a függvénynek a, sorszám ( én) és a karakterlánc elemeinek száma ( m). Tömbelemek megjelenítése b oszlopban közöljük.

Rizs. 1.3.5-5. Funkció sred_ar(), amely a számtani átlagot számítja ki
tömb karakterlánc elemei a

Az indulás eredményeként forgatókönyv- nevű fájl zadasha2 ki az ablakon parancsablak tömbelemek oszlopa jelenik meg b

Rizs. 1.3.5-7. Funkció remek (), az i-edik tag értékének kiszámítása

Rizs. 1.3.5-9. Funkció indítása sumf() a végrehajtáshoz


Laboratóriumi munka a témában

"Algoritmizálás és programozás eszközei

Matlabban"

Tanulmányozandó kérdések

1) Nézetek m- fájlokat.

2) Új létrehozása és mentése, valamint korábban létrehozott m-fájlok megnyitása.

3) Jellemzők forgatókönyv- fájlok és m- funkciókat.

4) Fuss végrehajtásra forgatókönyv- fájlt egy szövegszerkesztőből.

5) Fuss végrehajtásra forgatókönyv- fájlt a parancsablakból.

6) Felhívja forgatókönyv- fájlok és m-ph funkciókat.

7) Programozási nyelvi eszközök a Matlab rendszerben.

8) Alapvető m-nyelvi operátorok, céljuk és formátumuk .

2. Általános feladat

1) Témák felfedezése 1.3 (p.p. 1.3.1 – 1.3.5).

2) Válasszon egyéni feladatot asztaltól. 1.3.6-1.

3) Tervezés m -függvények szabványos algoritmusok megvalósításához: véges összegek számítása, elágazások, minimum és maximum megkeresése egy adatsorozatban stb.

4) Belép és megment m - külső adathordozón működik.

5) Teremt újforgatókönyv -fájl, ahová beírjuk a feladat megoldásának logikáját leíró programkódot.

6) Mentse el a szkriptet -fájlt az aktuális könyvtárban.

7) Hibakeresési szkript t-fájlt, elindítva azt egy szövegszerkesztőből a paranccsalFuss .

8) Készít és belép kezdeti adatok a probléma megoldásához;

9) Hajtsa végre a szkriptet -fájlt az ablak parancssorábólparancsablak .

10) Mentse el a szöveget munkaablak külső adathordozón.

11) Küldje el az eredményeket tanári munka, válasz a feltett kérdésekre.

12) teljes parancs mindent kitöröl a takarításhoz munkakörnyezet .

13) Bejelentést tesz az elvégzett munka szerint .


Egyéni feladatok változatai

1.3.6-1

Gyakorlat
Írjon be egy n természetes számot és a valós számok vektora Megtalálja: ahol
Kiszámítja ahol

Tömb beállítása , amely páros számú elemből áll. Mindegyik számpár , ahol i+1 a kettő többszöröse, megadja a vonallánc csúcsának koordinátáit. Készítsen egy vonalláncot, miközben az utolsó csúcsot az elsőhöz köti
. Termék kiszámítása , ahol
Írjon be egy n természetes számot és egy x valós számot. Kiszámítja
Írjon be egy n természetes számot. Keresse meg a legnagyobb értékeket , ahol k=1, 2,…,n, valamint az összes kapott érték összege
Írjon be egy n természetes számot. A jelentések között , ahol
(i=1,2,…n), keresse meg az összes pozitívot, és számítsa ki az összegüket
Írjon be egy n természetes számot és egy valós számok vektorát . Határozza meg, hogy van-e több pozitív vagy negatív szám egy vektorban, és határozza meg a negatív számok közül a legnagyobbat és a legkisebbet a pozitív számok közül
Írjuk be a B(5,7) mátrixot, és a sorok első legnagyobb elemeiből alakítsuk ki a C(5) vektort. Elemeinek megjelenítése sorban és oszlopban
Alkoss vektort a szabály szerint: , ahol k=2,3,…, 7, ha Keresse meg azoknak a számoknak a négyzetösszegét, amelyek nem haladják meg a 2-t
Írjon be egy n természetes számot és egy valós számok vektorát . Határozzuk meg két szomszédos pozitív szám és két szomszédos különböző előjelű szám számát!
Írja be az A(4,4) négyzetmátrixot. Oszlopainak maximális elemeiből alkosson X vektort, elemeit jelenítse meg a képernyőn direkt és fordított sorrendben
Írja be az egész számok vektorát . Alakítsa át úgy, hogy először a nullák kerüljenek, majd az összes többi elem. Határozza meg azoknak az elemeknek az összegét és számát, amelyek értéke 5 többszöröse
Adja meg a valós számok vektorát . Hozzon létre belőle egy x tömböt, amelynek minden eleme legfeljebb három egymást követő elem lehet a z tömbben
Alkossuk meg az A(4,4) mátrixot a szabály szerint:
Keresse meg és jelenítse meg két azonos elem értékét és indexét. Ha nincsenek, jelenítsen meg egy üzenetet
Alkossuk meg a D(3,2) mátrixot a szabály szerint: . Hozzon létre egy vektort a kapott mátrix negatív elemeiből!
Adjon meg egy n természetes számot. Számítsa ki, hogy az n x n mátrixok közül melyik tartalmaz több pozitív elemet, ha elemei a következő szabály szerint vannak kialakítva: Jelenítse meg a generált mátrixokat
Adja meg az A(4,4) valós számok négyzetmátrixát. Keresse meg a sorai elemeinek legnagyobb értékeinek összegét. Hozzunk létre egy új B(4,4) mátrixot úgy, hogy az A mátrix minden elemét megszorozzuk a talált összeggel, és elosztjuk az eredeti mátrix determinánsával
Írjuk be az A(4,7) valós számok mátrixát, és kapjuk meg belőle a C(4) vektort, melynek elemei: · az első sor elemei közül a legnagyobbak; a második sor elemei közül a legkisebb; a harmadik sor elemeinek számtani átlaga; a negyedik sor elemeinek összege
Adjon meg egy n természetes számot és egy С(n,n) valós számok mátrixát. Keresse meg elemei legnagyobb és legkisebb értékének számtani átlagát, és az átlós elemeket ezzel az értékkel helyettesítve jelenítse meg a képernyőn a C mátrixot
Írja be a k1, k2 természetes számokat és egy valós 8x4 mátrixot. Cserélje fel a k1 és k2 sor elemeit a mátrixban
Adjon meg egy n természetes számot és egy С(n,9) valós számok mátrixát. Határozza meg a páros számmal rendelkező oszlopok számtani átlagát!
Adja meg az x(5), y(6), z(7) valós számok vektorait. Számítsa ki t értékét a következő algoritmus szerint:
Adja meg az x(5) valós számok vektorait. Ha x=1, 3, 4 értékeket kap ahol
Adja meg az x(10) valós számok vektorait. Szerezzen be belőle egy másik p(10) tömböt, melynek elemei növekvő sorrendben vannak rendezve
Adja meg az A(3,4) valós számok mátrixát. Cserélje ki a mátrix sor elemeit az elemek értékeinek maximális összegére - eggyel, a minimumra - kettővel, és állítsa a mátrix többi elemét nullára
Alkossunk egy A(4,4) mátrixot a szabály szerint Töröljük ki belőle a 10-nél kisebb elemeket tartalmazó oszlopokat
A szabály szerint alakítsuk ki a B(9,3) mátrixot Határozzuk meg a mátrix minden sorában a legkisebb elemet, és írjuk be a C vektor megfelelő elemébe. Írjuk ki a kapott C vektort
Adjon meg egy A(3,4) valós számokból álló mátrixot, amelynek minden eleme különböző. Minden sorban válassza ki a legnagyobb és legkisebb értéket, és írja be a С(3) vektor megfelelő elemébe azon oszlopok indexeinek összegét, amelyekben ezek találhatók.
Adja meg az A(4,4) valós számok mátrixát. Szerezze meg a fő és másodlagos átló elemeinek sorozatait, hozzon létre B(4) és C(4) vektorokat ezekből az elemekből, és jelenítse meg őket a képernyőn

1) Megjegyzések formájában:

A labor neve

A tanuló neve, csoportszáma

Opció száma

· Egyéni feladat

2) A számítások (munkamenetek) protokollja az ablakban parancsablak a szükséges megjegyzésekkel.

1.3.7. Biztonsági kérdések a témában

1) Mi az forgatókönyv- fájl és mik a jellemzői?

2) Hogyan forgatókönyv- a fájl végrehajtása folyamatban van?

3) Mi az m- funkciókat én?

4) Mi a különbség forgatókönyv- fájltól m- funkciókat?

5) lehet m- funkció több kimeneti paramétere van?

6) Hívja az m- funkciókat.

7) Kezelői formátum bemenet().

8) Az operátor használata ha...vége szabványos, csonka és beágyazott elágazást valósít meg?

9) Több ág operátor formátuma kapcsoló.

10) Szabályos hurok operátor formátum a...végére, a hurokváltozó értékeinek beállításának jellemzői.

11) Üzemeltetők kijelölése folytatniés szünet.

12) Iteratív hurok operátor míg...végeés a szerkezete.


2. rész Megoldástechnika
számítási feladatok MatLab segítségével

A Matlab ciklusai olyan feltételt igényelnek, amelyet egy parancsnak vagy parancscsoportnak meg kell tennie
ismételje meg többször.

A hurok létrehozásának legegyszerűbb módja a használata
kifejezésre. Az alábbiakban egy egyszerű példa látható, ahol a 10 kiszámítása és megjelenítése történik! = 10 * 9 * 8 ... * 2 * 1.

f = 1;
n=2:10 esetén
f = f*n;
vége

f=
3628800

A Matlab ciklus egy for utasítással kezdődik, és egy end utasítással végződik. Csapat
e kifejezések között összesen kilenc alkalommal kerül végrehajtásra, mindegyikre egyszer
n értéke 2 és 10 között. A hurkon belüli közbenső kimenet megszakításához mi
pontosvesszőt használt. A végeredmény megtekintéséhez szükség van
írja be az f-et a ciklus vége után. Ha nem használ pontosvesszőt, a program
A MATLAB minden köztes értéket megjelenít 2!, 3!, stb.

A Szerkesztő modulban a for és end parancsok automatikusan kiemelésre kerülnek
kékben. Ez jobb olvashatóságot biztosít, ha közé illeszti be
parancsokat kapnak (hogyan csináltuk); a Szerkesztő modul ezt teszi
automatikusan. Ha beírja a parancs ablakba,
A MATLAB addig nem ad ki új >> parancssori promptot, amíg Ön
írja be az end parancsot, aminek hatására a MATLAB program befejez egy teljes ciklust és
új parancssort jelenít meg.

  • Ha egy M-fájl szkriptben ciklust használ echo on display effektussal, akkor a parancsok minden alkalommal visszhangozni fognak a cikluson keresztül. Ezt úgy akadályozhatja meg, hogy közvetlenül az end utasítás elé szúr be egy echo off parancsot, közvetlenül utána pedig egy echo on parancsot; akkor a ciklus minden parancsa egyszer tükröződik (kivéve az end).

Megjegyzés: a Matlabban háromféle hurok létezik, amelyeket alább mutatunk be

1. A for ciklus a Matlabban

a=0;
i=1:10-hez
a=a+1;
vége

2. A while ciklus a Matlabban

a=0;
míg a<10
a=a+1;
vége

3. Az if ciklus a Matlabban

a=10;
ha a==10
"első eset"
más
"második eset"
vége

ans =
első eset

Ezért a fentiekből arra a következtetésre juthatunk, hogy nagyon sok további információt és alternatívát kell megvizsgálnia!


Részleg: Információs technológiák

PROGRAMOZÁS BEMATLAB


ÜzemeltetőkMATLAB

· Loop kijelentések

Ciklusszámára

Szintaxis

count=start:step:final

MATLAB parancsok

Leírás

A count egy hurokváltozó,

start a kezdeti értéke,

végső a végső értéke,

lépés – az a lépés, amellyel a szám minden alkalommal növekszik, amikor belép a hurokba

a ciklus véget ér, amint a count értéke nagyobb lesz, mint a végleges.

Példa

Legyen szükséges x€ görbecsalád levezetése, amelyet a paramétertől függő függvény ad meg

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

a paraméterértékeknél -0,1 és 0,1 között. Az alábbiakban egy görbecsalád kimenetére szolgáló fájlprogram listája található.

Programlista

x = ;

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

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

A program végrehajtása eredményeként megjelenik egy grafikus ablak, amely tartalmazza a szükséges görbecsaládot.

Ciklusmíg

Szintaxis

míg hurokfeltétel

MATLAB parancsok

Leírás

A ciklus addig fut, amíg a ciklus (igaz) feltétele igaz. A következő relációs műveletek engedélyezettek a ciklus végrehajtásának feltételének beállítására:

A bonyolultabb feltételek logikai operátorok segítségével adhatók meg. A logikai operátorokat a következő táblázat tartalmazza


Példa

Fiókkezelők

Feltételes operátorha

Szintaxis

ha feltétel

MATLAB parancsok

Leírás

Ha a feltétel igaz, akkor az if és end közé helyezett MATLAB parancsok végrehajtásra kerülnek, ha pedig nem igaz, akkor az átmenet a vége után található parancsokra történik.

Példa

Feltételes operátorelseif

Szintaxis

ha feltétel1

elseif feltétel2

………………………

elseif feltétel

Leírás

Egyik vagy másik feltétel teljesülésétől függően a program megfelelő ága működik, ha minden feltétel nem megfelelő, akkor a többi után elhelyezett parancsok végrehajtásra kerülnek.

Példa

Operátorkapcsoló

Szintaxis

kapcsoló változó

esetérték1

esetérték2

……………………

casevaluen


Minden ágat egy case utasítás definiál, az arra való áttérés akkor történik meg, amikor a switch utasítás változó az eset után megadott értéket, vagy az esetlistából valamelyik értéket veszi fel. Bármelyik elágazás végrehajtása után a kapcsoló kilép, míg a többi esetben megadott értékek már nem kerülnek ellenőrzésre. Ha nincs megfelelő érték a változóhoz, akkor a program másnak megfelelő ága fut le.

Példa

A hurok megszakad. Kivételes helyzetek.

Operátorszünet

Szintaxis

A break utasítás a ciklikus számítások rendszerezésére szolgál: for...end, while...end. Amikor az állapot

ha feltétel

a break utasítás befejezi a ciklust (for vagy while), és a végét követő sorokon található utasítások végrehajtásra kerülnek. Beágyazott hurkok esetén a break kilép a belső ciklusból.

Kivételkezelés, Üzemeltetőpróbálja megfogás

Szintaxis

nyilatkozatok, amelyek végrehajtása

hibát eredményezhet

végrehajtandó nyilatkozatok

amikor hiba lép fel egy blokkban

a próbálkozás és a fogás között

Leírás

A try...catch konstrukció lehetővé teszi a kivételes helyzetek megkerülését (olyan hibák, amelyek a program leállásához vezetnek, például egy nem létező fájl elérése), és ha előfordulnak, megtesz valamilyen műveletet.

Példa

Szerviz funkciók

diszp megjeleníti egy változó szövegét vagy értékét a parancsablakban

bemenet- bevitelt kér a billentyűzetről. Alkalmazások parancssori felülettel történő létrehozásakor használatos.

eval végrehajtja egy karakterlánc vagy karakterlánc-változó tartalmát, például a MATLAB parancsokat

egyértelmű- Eltávolítja a munkakörnyezeti változókat.

Val vellc- törli a parancsablakot

Ha többet szeretne tudni ezekről és más funkciókról, futtassa a parancssorból

Segítségfüggvény_neve

Laboratóriumi munkák elvégzése

Egy adott feladat opció számát a tanár határozza meg.

1. számú feladat

Ez a feladat magában foglalja egy n fokú algebrai interpolációs polinom megtalálását bizonyos adathalmazokhoz: P n(x) .

Célkitűzés:

Programot kell írni egy algebrai interpolációs polinom együtthatóinak kiszámításához P n(x)= a 0 + a 1 x+ … + a n x n.

Módszertani utasítások:

Legyen például a következő adatkészletünk:

én 0 1 2 3
xén 1,2 1,4 1,6 1,8
y i 8,3893 8,6251 8,9286 8,9703

Esély a 0 , a 1 , …, a n egyenletrendszer megoldásából határozzuk meg:

Itt naz interpolációs polinom sorrendje,

n+1 a megadott pontpárok száma ( x, y),

a 0 , a 1 ,… a n a polinom kívánt együtthatói P n(x)= a 0 + a 1 x+ … + a n x n).

Programkövetelmények

Állítsa be a vonal határait , amelyre az interpolációs polinom épül P(x)

· Kérdezzen n az interpolációs szegmensek száma (vagy ennek megfelelően a polinom foka)

Jegyzet: x0, xn, n billentyűzetről lépett be.

· A kezdeti adatok beszerzése (x, y)(pontpárok száma (x i, y i), amelyre az interpolációs polinom épül P(x)n1=n+1) biztosítani:

Belépés véletlenszerűen elrendezett csomópontokba x i, i=0, n a billentyűzetről

Csomópont számítás x i , i=0, n, az érvelés egységes elrendezésének megfelelő x a szegmensen

A pp. 1,2 értékek y i, i=0, n vagy a billentyűzetről beírva (ha az eredeti függvény ismeretlen), vagy egy adott függvényből számolva f(x). A függvényt definiáló kifejezés a billentyűzetről kerül beírásra, és követnie kell a kifejezések MATLAB-ban történő írásának szabályait

Adatbemenet ( x i, y i, i=0, n) fájlból

Egyenletrendszer megoldása a P(x) polinom együtthatóinak meghatározására

Az eredeti táblázatos függvény és a P(x) polinom grafikonjainak felépítése

· Ha a kezdeti adatokat f(x) függvényként adjuk meg, ábrázoljuk az /f(x) – P(x)/ interpolációs hibát. Számítsa ki az interpolációs hiba maximális modulo értékét egy adott intervallumon.

A szegmens utolsó elemének végrehajtásakor legalább 500 pontot szerezzen a számításokhoz

2. számú feladat

Spline interpoláció

Célkitűzés:

Létre kell hozni egy programot az együtthatók kiszámítására és az S(x) spline függvény felépítésére, S(x) 3. rendű polinomokból "ragasztott" én(x), amelyek speciális jelöléssel rendelkeznek:

,

S függvény én(x) a szegmensen meghatározott

Programkövetelmények

A munka elvégzésekor a következőket kell tennie:

Állítsa be annak a szakasznak a határait, amelyre az S(x) spline függvény épül

· Adja meg n – azoknak az interpolációs szegmenseknek a száma, amelyek mindegyikére a Si(x) köbös polinom épül.

· Megjegyzés: x0, xn, n a billentyűzetről írható be.

Szervezzük meg a kezdeti adatok (x, y) bevitelét (a pontpárok száma (xi, yi), amelyre az S(x), n1=n+1 spline függvény épül), feltéve:

Tetszőleges xi, i=0, n csomópontok bevitele a billentyűzetről

Az xi, i=0, n csomópontok számítása, amelyek megfelelnek az x argumentum egységes elrendezésének a szegmensen

A pp. 1,2 az yi, i=0, n értékeket vagy a billentyűzetről írjuk be (ha az eredeti függvény ismeretlen), vagy az adott f(x) függvényből számítjuk ki. A függvényt definiáló kifejezés a billentyűzetről kerül beírásra, és követnie kell a kifejezések MATLAB-ban történő írásának szabályait

Adatok bevitele (xi, yi, i=0, n) fájlból

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

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

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

A természetes köbös spline együtthatóinak meghatározásához (1. peremfeltétel) a következő egyenletrendszert kell megoldani:

Együtthatók σ 0 =0, σ n =0

· Az eredeti függvény és a spline függvények ábrázolása mindhárom peremfeltételtípusra.

· Szerkessze meg az f(x) – S(x) spline interpolációs hibafüggvények gráfjait mindhárom peremfeltételtípusra.

Jegyzet:

A MATLAB csomagban az egydimenziós és kétdimenziós tömbök indexei 1-től kezdődnek, nem 0-tól. Ezt vegyük figyelembe programíráskor.