Bucle în matlab. Operatori și bucle condiționale în MatLab „Unelte de algoritmizare și programare

Declarație condițională if

În cel mai simplu caz, sintaxa acestei instrucțiuni if ​​este:

dacă<выражение>
<операторы>
Sfârşit

Aș dori să vă atrag atenția asupra faptului că, spre deosebire de limbajele de programare moderne, un astfel de concept de operator compus nu este utilizat. Blocul de instrucțiuni condiționate trebuie să se încheie cuvânt oficial Sfârşit.

Mai jos este un exemplu de implementare a funcției sign(), care returnează +1 dacă numărul este mai mare decât zero, -1 dacă numărul este mai mic decât zero și 0 dacă numărul este zero:

x = 5;
dacă x > 0
disp(1);
Sfârşit
dacă x< 0
disp(-1);
Sfârşit
dacă x == 0
disp(0);
Sfârşit

Analiza exemplului de mai sus arată că toate aceste trei condiții se exclud reciproc, i.e. Când unul dintre ele este declanșat, nu este nevoie să le verificați pe celelalte. Implementarea unei astfel de logici va crește viteza de execuție a programului. Acest lucru poate fi realizat prin utilizarea designului

dacă<выражение>
<операторы1>% sunt executate dacă condiția este adevărată
altfel
<операторы2>% sunt executate dacă condiția este falsă
Sfârşit

Atunci exemplul de mai sus poate fi scris după cum urmează:

X = 5;
dacă x > 0
disp(1);
altfel
dacă x< 0
disp(-1);
altfel
disp(0);
Sfârşit
Sfârşit

Acest program verifică mai întâi dacă x este pozitiv și, dacă da, tipărește valoarea 1 și ignoră toate celelalte condiții. Dacă prima condiție se dovedește a fi falsă, atunci execuția programului trece prin else (altfel) la a doua condiție, unde variabila x este verificată pentru negativitate, iar dacă condiția este adevărată, valoarea -1 este afișată pe ecran. . Dacă ambele condiții sunt false, atunci este afișată valoarea 0.

Exemplul de mai sus poate fi scris într-o formă mai simplă folosind un alt construct de instrucțiune MatLab if:

dacă<выражение1>
<операторы1>% sunt executate dacă expresia1 este adevărată
elseif<выражение2>
<операторы2>% sunt executate dacă expresia2 este adevărată
...
elseif<выражениеN>
<операторыN>% sunt executate dacă expresiaN este adevărată
Sfârşit

si se scrie dupa cum urmeaza:

x = 5;
dacă x > 0
disp(1); % este executat dacă x > 0
elseif x< 0
disp(-1); % este executat dacă x< 0
altfel
disp(0); % este executat dacă x = 0
Sfârşit

Folosind instrucțiunea if, puteți testa condiții mai complexe (compuse). De exemplu, trebuie să determinați: variabila x se încadrează în intervalul de valori de la 0 la 2? Acest lucru poate fi implementat prin verificarea simultană a două condiții simultan: x >= 0 și x<=2. Если эти оба условия истинны, то x попадает в диапазон от 0 до 2.

Pentru a implementa condiții compuse în MatLab, se folosesc operatori logici:

& - ȘI logic
| - SAU logic
~ - NU logic

Să ne uităm la un exemplu de utilizare a condițiilor compuse. Să presupunem că doriți să verificați dacă o variabilă x este în intervalul de la 0 la 2. Programul va fi scris după cum urmează:

x = 1;
dacă x >= 0 și x<= 2
altfel
Sfârşit

În al doilea exemplu, vom verifica pentru a vedea dacă variabila x nu aparține intervalului de la 0 la 2. Acest lucru se realizează prin declanșarea uneia dintre cele două condiții: x< 0 или x > 2:

x = 1;
dacă x< 0 | x > 2
disp("x nu aparține intervalului de la 0 la 2");
altfel
disp("x aparține intervalului de la 0 la 2");
Sfârşit

Folosind operatorii logici AND, OR, NOT, puteți crea o varietate de condiții compuse. De exemplu, puteți verifica dacă x este în intervalul -5 la 5, dar nu în intervalul 0 la 1. Evident, acest lucru poate fi implementat astfel:

x = 1;
dacă (x >= -5 și x<= 5) & (x < 0 | x > 1)
disp("x aparține lui [-5, 5], dar nu este în ");
altfel
disp("x sau nu în [-5, 5] sau în ");
Sfârşit

Rețineți că parantezele au fost folosite în condiția compusă complexă. Cert este că prioritatea operației AND este mai mare decât prioritatea operației SAU, iar dacă nu ar exista paranteze, condiția ar arăta astfel: (x >= -5 și x<= 5 и x < 0) или x >1. Evident, o astfel de verificare ar da un rezultat diferit de cel scontat.

Parantezele în programare sunt folosite pentru a modifica prioritățile de execuție ale instrucțiunilor. La fel ca operatorii aritmetici, operatorii logici pot fi modificați și la cererea programatorului. Folosind paranteze, testul se face mai întâi în interiorul lor, apoi în afara lor. De aceea, în exemplul de mai sus sunt necesare pentru a obține rezultatul dorit.

Prioritatea operațiilor logice este următoarea:

NOT (~) – cea mai mare prioritate;
Și (&) – prioritate medie;
SAU (|) – cea mai mică prioritate.

Operator buclă while

Limbajul de programare MatLab are două instrucțiuni bucle: while și for. Cu ajutorul lor, de exemplu, se realizează programarea algoritmilor recurenți, calcularea sumei unei serii, enumerarea elementelor matricei și multe altele.

În cel mai simplu caz, o buclă într-un program este organizată folosind instrucțiunea while, care are următoarea sintaxă:

in timp ce<условие>
<операторы>
Sfârşit

Aici<условие>înseamnă o expresie condiționată precum cea utilizată într-o instrucțiune if, iar bucla while rulează atâta timp cât condiția este adevărată.

Vă rugăm să rețineți că dacă condiția este falsă înainte de începerea buclei, instrucțiunile incluse în buclă nu vor fi executate nici măcar o dată.

Iată un exemplu despre cum funcționează bucla while pentru a calcula suma unei serii:


i=1; Număr de sume %
in timp ce eu<= 20 % цикл (работает пока i <= 20)

sfârşitul % sfârşitul buclei
disp(S); % afișând suma 210 pe ecran

Acum să complicăm problema și să calculăm suma seriei, deocamdată. Aici, în operatorul buclă, se obțin două condiții: fie contorul pentru i ajunge la 20, fie valoarea sumei S depășește 20. Această logică poate fi implementată folosind o expresie condiționată compusă în operatorul while loop:

S = 0; % valoarea inițială a sumei
i=1; Număr de sume %
in timp ce eu<= 20 & S <= 20 % цикл (работает пока i<=10 и S<=20
S=S+i; % se calculează suma
i=i+1; % mărește contorul cu 1
sfârşitul % sfârşitul buclei

Exemplul de mai sus arată posibilitatea utilizării condițiilor compuse într-o buclă while. În general, puteți scrie aceleași condiții ca o expresie condiționată ca și într-o instrucțiune condițională if.

Lucrarea oricărui operator de buclă, inclusiv while, poate fi oprită forțat folosind operatorul break. De exemplu, programul anterior ar putea fi rescris după cum urmează folosind o instrucțiune break:

S = 0; % valoarea inițială a sumei
i=1; Număr de sume %
in timp ce eu<= 20 % цикл (работает пока i<=10
S=S+i; % se calculează suma
i=i+1; % mărește contorul cu 1
dacă S > 20% dacă S > 20,
pauză; % atunci ciclul se termină
Sfârşit
sfârşitul % sfârşitul buclei
disp(S); % afișare cantitate 21 pe ecran

ÎN în acest exemplu a doua condiție pentru terminarea buclei, când S este mai mare de 20, este scrisă în bucla însăși și folosind operatorul break, bucla este ieșită la funcția disp(), aflată imediat după bucla while.

Al doilea operator de control al execuției buclei, continuare, vă permite să săriți peste execuția fragmentului de program care urmează. De exemplu, doriți să calculați suma elementelor unui tablou

a = ;

excluzând elementul de la indicele 5. Un astfel de program poate fi scris astfel:

S = 0; % valoarea inițială a sumei
a = ; matrice %
i=0; % contor index matrice
in timp ce eu< length(a) % цикл (работает пока i меньше
% lungime matrice a)
i=i+1; % mărește contorul indexului cu 1
dacă i == 5% dacă indicele este 5
continua; % atunci nu o numărăm
Sfârşit
S=S+a(i); % se calculează suma elementelor
sfârşitul % sfârşitul buclei
disp(S); % afișând suma 40 pe ecran

Trebuie remarcat faptul că în acest program, indicele matricei i este crescut înainte ca condiția să fie verificată. Acest lucru se face astfel încât valoarea indicelui să crească cu 1 la fiecare iterație a buclei. Dacă creșterea contorului i se scrie ca în exemplele anterioare, i.e. după calcularea sumei, atunci datorită operatorului continue valoarea sa s-ar opri la 5 și bucla while ar rula „pentru totdeauna”.

Operatorul pentru buclă

Adesea, atunci când organizați o buclă, trebuie să treceți printr-o valoare a contorului într-un interval dat de valori și cu un anumit pas de modificare. De exemplu, pentru a itera elementele unui vector (matrice), trebuie să organizați un numărător de la 1 la N cu un pas de 1, unde N este numărul de elemente ale vectorului. Pentru a calcula suma seriei, este specificat și un numărător de la a la b cu pasul de modificare necesar. Și așa mai departe. Datorită faptului că astfel de sarcini sunt adesea întâlnite în practica de programare, pentru implementarea lor a fost propus un operator de buclă for, ceea ce face mai ușoară și mai vizuală implementarea unei bucle cu un contor.

Sintaxa operatorului de buclă for este următoarea:

pentru<счетчик> = <начальное значение>:<шаг>:<конечное значение>
<операторы цикла>
Sfârşit

Să luăm în considerare funcționarea acestui ciclu folosind exemplul de implementare a unui algoritm pentru căutarea valorii maxime a unui element dintr-un vector:

a = ;
m = a(1); % valoarea maximă curentă
pentru i=1:lungime(a) % buclă de la 1 la sfârșitul vectorului c
% în pași de 1 (implicit)
dacă m< a(i) % если a(i) >m,
m = a(i); % atunci m = a(i)
Sfârşit
sfârşitul % sfârşitul buclei for
disp(m);

În acest exemplu, bucla for setează contorul i și își schimbă valoarea de la 1 la 10 în pași de 1. Rețineți că, dacă dimensiunea pasului nu este specificată în mod explicit, atunci este considerată implicit 1.

În exemplul următor, vom lua în considerare implementarea algoritmului de deplasare a elementelor vectoriale la dreapta, i.e. penultimul element se pune în locul ultimului, următorul în locul penultimului etc. la primul element:

a = ;
disp(a);
pentru i=lungimea(a):-1:2 % ciclu de la 10 la 2 cu pasul -1
a(i)=a(i-1); Deplasarea % a elementelor vectorului a
sfârşitul % sfârşitul buclei for
disp(a);

Rezultatul programului

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

Exemplul de mai sus arată că pentru a implementa o buclă cu un numărător de la o valoare mai mare la una mai mică, trebuie să specificați în mod explicit pasul, în acest caz, -1. Dacă acest lucru nu se face, bucla se va încheia imediat și programul nu va funcționa corect.

Soluții ale ecuației

Bucle și condiții Matlab: teorie și exemple

O zi buna. Astăzi vom vorbi despre cicluri și condiții în Matlab. Materialul care este luat ca bază este Ajutorîn Matlab și câteva exemple simple pe care le vom analiza.

Condiții în MATLAB

Niciun limbaj de programare nu se poate lipsi de constructe precum condiții, despre asta vom vorbi:
Să începem cu sintaxa condiției dacăși uită-te la versiunea formală a intrării din ajutor:

Dacă expresie, enunțuri, sfârșit

Ce înseamnă:

Dacă Condiție, Acțiune, se încheie

Acum exemple:

X = 1; y = 61; if ((x >= 0,90) && (y >= 60)) disp("ok"); Sfârşit;

&& este un operator logic de multiplicare („ȘI” logic).
Și iată un exemplu cu altfel:

X = 1; y = 50; if ((x >= 0,90) && (y >= 60)) disp("ok"); else disp("nu este corect") end;

Spre deosebire de un exemplu, „nu este corect” va fi afișat aici.
Câteva cuvinte acum despre intrerupator. Formal în ajutor:

Sintaxă switch switch_expr case case_expr instrucțiune, ..., instrucțiune case (case_expr1, case_expr2, case_expr3, ...) instrucțiune, ..., instrucțiune altfel, ..., instrucțiune final

Mai cu picioarele pe pământ:

Sintaxă switch switch_expr case Valoare - 1 Acțiune caz (Valoare - 2, Valoare - 3, Valoare - 4, ...) Acțiune În alte cazuri Sfârșit acțiune

Aceasta înseamnă că, dacă o anumită variabilă este egală cu valoarea în Valoare caz - 1, atunci acțiunea este efectuată când Valoare caz - 1și așa mai departe. Dacă niciunul dintre caz nepotrivit, acţiunea se realizează când in caz contrar.
Iată un exemplu:

Metoda = "Biliniar"; comutați mai jos (metodă) case ("liniar","bilinear") disp("Metoda este liniară") case "cubic" disp("Metoda este cubică") case "cel mai apropiat" disp("Metoda este cea mai apropiată") altfel disp( „Metodă necunoscută.”) sfârşit

Bucle în MATLAB

Acum să trecem la cicluri, începând cu pentru.
În ajutor, acesta este scris ca

Sintaxă pentru index = instrucțiuni de program de valori: final

În termeni profani, aceasta înseamnă:

Sintaxă pentru variabilă = valoare acțiune final

Să nu ne oprim asupra formulărilor oficiale, este mai bine să folosim exemple clare și preferate

Pentru m = 1:10 m capăt

Iată cum arată cea mai comună utilizare: pentru. În această buclă tipărim pur și simplu valoarea lui m.
A doua metodă folosind pasul ( Etapa)

Pentru s = 1,0: -0,1: 0,0 disp(s) end

În acest caz ciclul pentru trece de la 1 la 0 în trepte de -0,1.
Altă opțiune:

Pentru s = sfârşitul disp(s).

În acest caz variabila s va fi echivalat secvenţial cu 1, 5, 8, 17 şi, în consecinţă, ieşire.
Și, de asemenea, cu pentru Este foarte convenabil să afișați vectori. Aici:

Pentru e = eye(5) disp("Valoarea curentă a e:") disp(e) end

În acest exemplu, există un acces secvenţial la elementele vectorului e.

Ciclu in timp ce:
Formal în ajutor:

Sintaxă while instrucțiunile programului de expresie: end

Cu picioarele pe pământ:

Sintaxă în timp ce acțiunea condiției se termină

Și să luăm imediat un exemplu (cum este folosit în viața reală).

Eps = 10; în timp ce eps > 1 eps = eps - 1 capăt

In timp ce se afla in stare ( eps > 1) este executată, bucla efectuează acțiunea

(eps = eps-1).
Tot in stare in timp ce Puteți folosi operatori logici ȘI - && și SAU - || , scriind mai multe expresii logice în condiție.

Dacă aveți întrebări despre articol, scrieți în comentarii.

codetown.ru

Bucle pentru, în timp ce sunteți în Matlab (Matlab)

Instrucțiunea for este concepută pentru a efectua un anumit număr de acțiuni repetate. Cea mai simplă utilizare a instrucțiunii for este următoarea:

for count = start:step:finalComenzi MatLabSfârşit

Aici count este o variabilă de buclă, start este valoarea sa inițială, final este valoarea sa finală, iar pasul este pasul prin care numărul crește de fiecare dată când este introdusă în buclă. Bucla se termină imediat ce numărul devine mai mare decât final. O variabilă buclă poate lua nu numai valori întregi, ci și valori reale ale oricărui semn

Bucla for este utilă atunci când se efectuează acțiuni similare repetate când numărul acestora este predeterminat. O buclă while mai flexibilă vă permite să ocoliți această limitare.

starea buclei whileComenzi MatLabSfârşit

62. Ce comandă creează o carte M în editor de text Cuvânt asociat cu MatLab?

Pornirea unei noi M-book Pentru a începe să scrieți o nouă M-book, trebuie să: 1) lansați editorul Word; 2) selectați în caseta de dialog Cuvânt opțiune Nou din meniu Fişier; 3) în fereastra care apare pe ecran, selectați șablonul M-book. În urma acestor acțiuni, sistemul va fi lansat MatLAB, iar aspectul meniului principal al editorului Word se va schimba ușor - va apărea un nou meniu în el Caiet. Aceasta va indica faptul că Cuvânt sistem conectat MatLAB. Dacă utilizați acum mouse-ul pentru a activa meniul Caiet fereastră Cuvânt, pe ecran va apărea un meniu suplimentar

63. Ce comandă din editorul de text Word convertește textul într-o celulă de intrare MatLab?

selectați o echipă Definiți celula de intrare(Define Input Cell) în meniu Caiet(vezi Fig. 3.20), sau apăsați tastele; După aceasta, aspectul liniei de comandă ar trebui să se schimbe - simbolurile comenzii devin verde închis, iar comanda devine înconjurată de paranteze pătrate gri închis;@

64. Care este comanda din text Editor de cuvinte asigură executarea unei comenzi MatLab într-o celulă?

selectați comanda Evaluate Cell cu mouse-ul sau apăsați o combinație de taste; rezultatul acestor acțiuni ar trebui să fie apariția imediat după textul comenzii a rezultatelor execuției sale de către sistemul MatLAB. Rezultatele execuției comenzii sunt afișate cu albastru și cuprinse între paranteze drepte

65. Ce comandă din editorul de text Word asigură executarea comenzilor MatLab în întreaga M-book?

Comenzile tuturor celulelor sau grupurilor de celule de intrare ale unei secțiuni sunt executate utilizând elementul Evaluate Calc Zone și întregul M-book simultan – Evaluate M-book

66. Ce comandă din editorul de text Word asigură executarea automată a comenzilor MatLab în toate celulele la deschiderea unui M-book?

Comenzile pentru celulele cu stilul Autolnit sunt lansate imediat după deschiderea M-book-ului. Este util să includeți comanda clear în prima astfel de celulă de șters mediu de lucru. Pentru a seta stilul Autolnit, utilizați elementul Define Autoinit Cell din meniul Notebook

67. Ce butoane conține panoul Excel Link? foaie de calcul Excel în legătură cu MatLab?

68. Ce oferă comanda putmatrix?

Funcția MLPutMatrix este utilizată pentru a plasa date din celulele unui lucru Foaie Excel la tabloul de lucru Matlab. Argumentele acestei funcții sunt numele variabilei, cuprinse între ghilimele și intervalul celule Excel legate de această variabilă

68. Ce oferă comanda getmatrix?

Operația inversă este efectuată de funcția MLGetMatrix, iar argumentele acestei funcții sunt numele variabilei de mediu de lucru MatLab cu 22 de date, cuprinse între ghilimele, și gama de celule Excel în care vor fi plasate datele acestei variabile, de asemenea cuprinse între ghilimele.

70. Care este scopul Simulink?

Sistemul Matlab include un pachet de modelare sisteme dinamice– Simulink. Acest pachet este nucleul unui pachet software interactiv conceput pentru modelarea matematică a sistemelor dinamice liniare și neliniare reprezentate prin diagrama lor bloc funcțională, numită S-model sau pur și simplu model

71. Ce bibliotecă Simulink conține surse de semnal?

Să construim cel mai simplu model sursa unui semnal sinusoidal, care este alimentat la intrarea unui osciloscop virtual. Pentru a face acest lucru, faceți clic pe butonul pentru a deschide browserul bibliotecii și în partea din stânga a ferestrei de browser care apare, faceți clic pe secțiunea Surse(Surse), în timp ce pictogramele blocurilor incluse în această secțiune sunt afișate în partea dreaptă a ferestrei

72. Ce bibliotecă Simulink conține instrumente virtuale de înregistrare?

osciloscop Scopul din secțiune Chiuvete.

73. Ce bibliotecă Simulink conține blocuri de diferențiere și integrare?

Continuous conține blocuri continue. Cele mai importante includ blocurile de diferențiere derivată și integrare integratoare. Primul bloc realizează diferențierea numerică a semnalului de intrare; nu sunt introduși parametri pentru acest bloc. Al doilea bloc din fereastra de parametri conține mai multe câmpuri în care puteți seta constanta de integrare la ieșirea blocului în câmpul Condiție inițială

74. Ce bibliotecă Simulink conține blocuri pentru calcularea funcțiilor elementare?

Fereastra bibliotecii Matematică conţine blocuri pentru efectuarea operaţiilor matematice

Blocurile pentru calcularea funcțiilor elementare includ trei blocuri: un bloc de funcții matematice MatematicăFuncţie, bloc de funcții trigonometrice TrigonometricFuncţieși blocul funcțional de rotunjire Funcția de rotunjire.

75. Câte valori ale parametrilor pasului sunt setate în Simulink pentru un pas variabil de simulare?

Două opțiuni de rezolvare din câmpul Opțiuni de rezolvare sunt de mare importanță: tipul soluției și metoda soluției. Există două opțiuni posibile pentru prima opțiune:

Rezolvatori cu pași variabili – soluții cu pași variabili;

Rezolvatori cu pas fix – soluție cu pas fix. În mod implicit, este setată opțiunea de soluție cu pas variabil, când pasul este redus automat pe măsură ce crește rata de modificare a rezultatelor și invers. Această metodă produce în general rezultate mai bune decât simulările în etape fixe, eliminând discrepanțele în majoritatea cazurilor. Utilizarea modelării în etape fixe este de obicei utilizată dacă aceasta se datorează specificului problemei care se rezolvă

studfiles.net

Bucle ca pentru...termină MatLab

Lecția 20. Bazele programării Noțiunile de bază ale programării
Instrumente de programare de bază
Tipuri de date de bază
Tipuri de programare
Dualitate de operatori, comenzi și funcții
Unele restricții
Fișiere M pentru scripturi și funcții
Structura și proprietățile fișierelor script
Starea variabilelor în funcții
Structura M-funcție-fișier
Stare variabilă și comandă globală
Utilizarea subfuncțiilor
Directoare private
Eroare la procesare

Afișarea mesajelor de eroare
funcția lasterr și tratarea erorilor
Funcții variabile
Funcții pentru numărarea numărului de argumente
Variabilele varargin și varargout
Comentarii
Caracteristici de execuție a fișierelor cu funcție m
Crearea codurilor P
Structuri de control
Intrare dialog
Operator condiționat
Bucle ca pentru... sfârșit
Bucle ca while...end
Design comutator
încercați... prindeți... încheieți construcția
Întreruperea calculelor
Conceptul de programare orientată pe obiecte
Crearea unei clase sau a unui obiect
Verificarea dacă un obiect aparține unei clase date
Alte caracteristici de programare orientată pe obiecte
Ce nou am învățat?

Buclele precum for...end sunt de obicei folosite pentru a organiza calcule cu un număr specificat de bucle repetate. Structura unui astfel de ciclu este următoarea:

pentru va = Expresie. Instrucțiuni. .... Sfârșitul instrucțiunii

Expresia este scrisă cel mai adesea sub forma s:d:e, unde s este valoarea inițială a variabilei buclei var, d este incrementul acestei variabile și e este valoarea finală a variabilei de control, la atingerea căreia capetele buclei. De asemenea, se poate scrie sub forma s:e (în acest caz d=l). Lista de instrucțiuni executate într-o buclă se termină cu operatorul final.

Următoarele exemple explică utilizarea unei bucle pentru a obține pătratele unei variabile bucle:

» pentru 1=1:5 i^2. Sfârşit;

„pentru x=0:.25:1 X ^ 2, final:

Instrucțiunea continue trece controlul la următoarea iterație a buclei, omitând instrucțiunile care o urmează, iar într-o buclă imbricată trece controlul la următoarea iterație a buclei principale. Declarația break poate fi folosită pentru a încheia o buclă mai devreme. De îndată ce este întâlnit în program, bucla este întreruptă. Sunt posibile bucle imbricate, de exemplu:

Ca urmare a executării acestui ciclu (fișier for2.m), se formează matricea A:

Trebuie remarcat faptul că formarea matricelor folosind operatorul: (colon) durează de obicei mult mai puțin decât utilizarea unei bucle. Cu toate acestea, utilizarea unui ciclu este adesea mai vizuală și mai ușor de înțeles. MATLAB permite ca o matrice de dimensiune A să fie utilizată ca variabilă de buclă txp.În acest caz, bucla este executată de câte ori există coloane în tabloul A, iar la fiecare pas variabila var este un vector corespunzător coloanei curente a tabloului A:

„A=

"pentru var=A; var, sfârşit

radiomaster.ru

Tutorial ilustrat pe MatLab › Bazele programării › Bucle ca pentru...sfârșit. Bucle ca while...end. [pagina - 364] | Tutoriale despre pachete de matematică

Bucle ca pentru... sfârșit. Bucle ca while...end.

Bucle ca pentru...sfarsit sunt de obicei folosite pentru a organiza calcule cu un număr dat de cicluri repetate. Structura unui astfel de ciclu este următoarea:

pentru var = Expresie. Instrucțiuni..... Se termină instrucțiunile

Expresia este scrisă cel mai adesea sub forma s:d:e, unde s este valoarea inițială a variabilei buclei var, d este incrementul acestei variabile și e este valoarea finală a variabilei de control, la atingerea căreia se termină ciclul. De asemenea, se poate scrie sub forma s:e (în acest caz d=1). Lista de instrucțiuni executate într-o buclă se termină cu operatorul final.

Următoarele exemple explică utilizarea unei bucle pentru a obține pătratele unei variabile bucle:

>> pentru 1 = 1: 5 i ^ 2 , sfârşitul ;

>> pentru x = 0:. 25: 1 X ^ 2 , sfârșit:

Operator continua trece controlul la următoarea iterație a buclei, omitând instrucțiunile care sunt scrise după ea, iar într-o buclă imbricată trece controlul la următoarea iterație a buclei principale. Operator pauză poate fi folosit pentru a termina o buclă mai devreme. De îndată ce este întâlnit în program, bucla este întreruptă. Sunt posibile bucle imbricate, de exemplu:

A(1.j) = i + j;

Ca rezultat al executării acestei bucle (fișier pentru2.m) se formează matricea A:

Trebuie remarcat faptul că formarea matricelor folosind operatorul: (colon) durează de obicei mult mai puțin decât utilizarea unei bucle. Cu toate acestea, utilizarea unui ciclu este adesea mai vizuală și mai ușor de înțeles. MATLAB permite ca o matrice de dimensiune A să fie utilizată ca variabilă de buclă thp. În acest caz, bucla este executată de câte ori există coloane în tabloul A, iar la fiecare pas variabila var este un vector corespunzător coloanei curente a matricei A:

>> A = [ 1 2 3: 4 5 6 ]

>> pentru var = A; var , sfârşit

Bucle ca while...end

Tip buclă in timp ce se execută atâta timp cât este îndeplinită Condiția:

în timp ce instrucțiunile de condiție se termină

Exemplu de utilizare a unei bucle in timp ce a fost deja citat. Terminarea timpurie a buclelor este implementată folosind operatori pauză sau continua.

Sankt Petersburg: BHV-Petersburg, 2005. - 1104 p.
ISBN 5-94157-494-0
Descarca(Link direct) : matlab72005.pdf Anterior 1 .. 117 > .. >> Următorul

în timp ce condiția de repetare a buclei de comandă MATLAB

În acest exemplu, condiția pentru repetarea ciclului este ca modulul termenului curent să fie x2k~l/(2k +1)! mai mult de IO10. Pentru a înregistra o condiție într-un formular,

de înțeles de MATLAB, ar trebui să utilizați semnul „>” (mai mare decât). Textul funcției de fișier mysin, care calculează suma unei serii pe baza unei relații de recurență

k 2k(2k + \) k 1

este prezentat în Listarea 7.7.

Notă^

Desigur, în cazul general, micimea unui sumand este un concept relativ; sumand-ul poate fi, să zicem, de ordinul lui IO-10, dar suma în sine este de același ordin. În acest caz, condiția pentru încheierea însumării trebuie să fie diferită, și anume micșorarea modulului raportului sumandului curent la partea deja acumulată a sumei. Să nu acordăm atenție acestui lucru deocamdată - sarcina noastră este să studiem cum să lucrăm cu ciclurile.

Lista 7.7. Funcția de fișier mysin, calculând sinus prin extinderea seriei

funcția s - mysin(x)

"% Calculul sinusului prin extinderea seriei

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

Ї calculul primului termen al sumei pentru k = O k = 0; al lor;

% calculul variabilei auxiliare x2 - x*x;

în timp ce abs(u) > 1.Oe-IO k = k + 1; u = -u* x2/(2*k)/(2*k + 1)

Vă rugăm să rețineți că bucla while, spre deosebire de for, nu are o variabilă de buclă, așa că a trebuit să atribuim una lui k înainte de a începe bucla și să creștem k cu unul în interiorul buclei.

Acum comparați rezultatul trasând funcțiile mysin și sin pe segmentul [-l, i] Fia pe aceleași axe, de exemplu, folosind fplot (comenzile pot fi specificate din Linie de comanda): » fplot (@rnysin, [-pi, pi]) » stai

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

Orez. 7.3. Comparația dintre mysin și păcat360_________ Partea a II-a. Calculatoare și programare

Graficele rezultate sunt prezentate în Fig. 7.3, indică ele operatiune adecvata fişier-funcţie mysin.

O condiție de buclă while poate conține o expresie logică formată din operatori sau operatori relaționali și logici. Pentru a seta condiția de repetare a ciclului, sunt valabile operațiile relaționale prezentate în Tabelul 1. 7.1.

Tabelul 7.1. Operațiuni de relație

Denumire Operaţie relaţională
== Egalitatea
< Меньше
<= Меньше или равно
>= Mai mare sau egal cu
Nu este egal

Stabilirea unor condiții mai complexe se face folosind operatori logici sau operații. De exemplu, condiția -1<.г<2 состоит в одновременном выполнении неравенства а>-1 și x<2 и записывается при помощи логического оператора and

și (x >= -1, X< 2)

sau echivalent folosind operatorul logic „și” - &

(x >= -1) și (x< 2)

Operațiile și operatorii logici de bază și exemplele de înregistrare a acestora sunt date în tabel. 7,2 ( expresii logice sunt descrise în detaliu în Sect. " Operații logice cu numere și matrice” din acest capitol).

Tabelul 7.2. Expresii booleene

Tipul expresiei Expresie Operator logic Operație logică
„și” logic A*<3 И к=4 and (х < 3, k==4) (х<3) s (k = 4)
„sau” logic X = Ї sau 2 sau (x == 1, X= 2) (x == 1) I (x == 2)
Negarea lui „nu” a* 1.9 nu (a == 1.9) -(a == 1.9)Capitolul 7. Constructele de control ale limbajului de programare

^Notă^

Operatorii not, and, and sau sunt funcții care returnează adevărat (unul logic) sau fals (zero logic). Orice expresie logică ia aceleași valori.

Când se calculează suma unei serii infinite, este logic să se limiteze numărul de termeni. Dacă o serie diverge deoarece termenii săi nu tind spre zero, atunci condiția pentru micșorarea termenului curent nu poate fi niciodată îndeplinită și programul va intra în buclă. Efectuați însumarea limitând numărul de termeni. Adăugați o limită a numărului de termeni la condiția de buclă while a fișierului cu funcție mysin (vezi Lista 7.6):

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

și l.Oe-lO,k<= 100000)

^Notă^

Pentru a specifica ordinea în care sunt efectuate operațiile logice, ar trebui să folosiți paranteze (mai multe informații despre operatorii logici și operațiile logice și posibilitatea de a le aplica matricelor sunt scrise în

secțiune „Expresii logice cu tablouri și numere” din acest capitol).

La programarea algoritmilor, pe langa organizarea actiunilor repetate sub forma de cicluri, este adesea necesara executarea unuia sau altul bloc de comenzi in functie de anumite conditii, i.e. utilizați ramificarea algoritmului.

Operatori de filiale

Declarația condițională if și instrucțiunea switch vă permit să creați un algoritm de ramificare flexibil în care, atunci când sunt îndeplinite anumite condiții, este executat un bloc corespunzător de instrucțiuni sau comenzi MATLAB. Aproape toate limbajele de programare au operatori similari.

Declarație condițională if

Instrucțiunea if poate fi folosită în forma sa simplă pentru a executa un bloc de comenzi atunci când o anumită condiție este îndeplinită sau într-o construcție if-eiseif-eise pentru a scrie algoritmi de ramificare.362

Partea a II-a. Calculatoare și programare

Verificarea argumentelor de intrare

Să începem cu un exemplu simplu - creați un fișier de funcție pentru a calcula

Buclele din matlab presupun că o comandă sau un grup de comenzi trebuie
repeta de mai multe ori.

Cel mai simplu mod de a crea o buclă este utilizarea
pentru exprimare Mai jos este un exemplu simplu în care 10 este calculat și afișat! = 10 * 9 * 8 ... * 2 * 1.

f = 1;
pentru n = 2:10
f = f*n;
Sfârşit

f =
3628800

O buclă în Matlab începe cu o expresie for și se termină cu o expresie finală. Echipă
între aceste expresii se execută în total de nouă ori, o dată pentru fiecare
n valori de la 2 la 10. Pentru a întrerupe ieșirea intermediară în interiorul buclei, noi
a folosit punct și virgulă. Pentru a vedea rezultatul final, aveți nevoie
introduceți f după terminarea buclei. Dacă nu folosiți punct și virgulă, programul
MATLAB va afișa fiecare valoare intermediară 2!, 3! etc.

În modulul Editor, comenzile for și end sunt evidențiate automat
in albastru. Oferă o mai bună lizibilitate dacă introduceți între
lor comenzi (cum am făcut-o); modulul Editor face acest lucru
automat. Dacă introduceți for în fereastra de comandă,
MATLAB nu va emite un nou >> prompt de comandă până când dvs
introduceți comanda end, care va face ca programul MATLAB să finalizeze bucla și
va afișa un nou prompt de comandă.

  • Dacă utilizați o buclă într-un script M-file cu efectul de ecou pe afișare, comenzile vor fi ecou de fiecare dată pe parcursul buclei. Puteți preveni acest lucru inserând o comandă echo off chiar înaintea instrucțiunii end și o comandă echo on imediat după aceasta; apoi fiecare comandă din buclă va fi reflectată o dată (cu excepția sfârșitului).

Notă: există trei tipuri de bucle în matlab, care sunt prezentate mai jos

1. Bucla For în Matlab

a=0;
pentru i=1:10
a=a+1;
Sfârşit

2. Bucla while în Matlab

a=0;
In timp ce<10
a=a+1;
Sfârşit

3. If bucla în Matlab

a=10;
dacă a==10
"primul caz"
altfel
"al doilea caz"
Sfârşit

ans =
primul caz

Prin urmare, din cele de mai sus, putem concluziona că trebuie să vă uitați la o mulțime de informații suplimentare și alternative!


Acțiune