În programarea imperativă , ordinea de execuție ( ordine de execuție , ordine de evaluare ) este modul în care instrucțiunile programului sunt ordonate pe măsură ce sunt executate.
Instrucțiunile incluse în program pot fi executate fie secvențial, una după alta, fie simultan; atât o dată, cât și în mod repetat; secvența de execuție a instrucțiunilor poate coincide sau nu cu succesiunea locației lor în înregistrarea programului și, de asemenea, depinde atât de starea curentă a calculatorului care execută programul, cât și de evenimente externe, formând astfel diverse ordine de execuție a instrucțiunilor.
Organizarea ordinului de execuție dorit poate fi implementată folosind diverse mecanisme, cum ar fi instrucțiuni specializate pentru calculator sau structuri de control ale limbajelor de programare de nivel înalt sau mecanisme încorporate în calculator pentru întreruperea, salvarea și restabilirea stării, modificarea și generarea instrucțiunilor de program. , si altii.
În programarea imperativă, se presupune că procesul de executare a unui program constă în executarea instrucțiunilor acestuia de către calculator. În momentul executării instrucțiunii, ei spun că acesta controlează calculatorul, trecerea la execuția următoarei se numește transfer de control sau pur și simplu tranziție . Secvența de transferuri de control în timpul execuției programului formează fluxul său de control (și fluxul de execuție ).
Capacitatea calculatorului de a selecta instrucțiuni pentru execuție în funcție de starea sa, precum și posibilitatea executării simultane a mai multor instrucțiuni, dă naștere existenței unor conexiuni ramificate (care pot fi executate în anumite condiții) și paralele (executând simultan) conectate. și fluxurile de control care interacționează într-un singur program.
Setul de fluxuri de program care formează diverse ordine poate fi reprezentat ca un grafic direcționat , unde nodurile corespund instrucțiunilor programului, iar marginile corespund tranzițiilor dintre ele.
Ordinea în care sunt executate instrucțiunile reflectă structura algoritmului implementat de program. Fiecare construcție algoritmică de bază are propria sa ordine de execuție, de obicei cu același nume.
Cea mai simplă ordine de execuție este ordinea secvenţială sau naturală , unde instrucţiunile sunt executate secvenţial, una după alta, în ordinea în care apar în notaţia programului. Ordinea naturală se formează în timpul implementării construcției algoritmice „următoare”.
Abaterea de la natural pentru modul aplicat de scriere a ordinii se numește tranziție . În acest caz, după finalizarea execuției instrucțiunii curente, calculatorul nu trece la următoarea din înregistrare, ci la o altă instrucțiune specificată într-un anumit mod. Cu un salt necondiționat , instrucțiunea de salt este selectată fără a ține cont de starea calculatorului, cu un salt condiționat , în funcție de starea calculatorului, prin verificarea condiției .
O ramură condiționată vă permite să organizați ramificarea fluxului de control, formând o ordine de ramificare , în care doar una dintre cele două sau mai multe ramuri de fragmente interne ale programului este supusă execuției. Ordinea de ramificare implementează construcția algoritmică de „ramificare”.
Trecerea la o instrucțiune executată anterior vă permite să organizați execuția multiplă a unui set de instrucțiuni, formând o ordine ciclică a execuției acestora ( ciclu ) și implementând construcția algoritmică „ciclu”.
O altă modalitate de a organiza execuția repetată a unui set de instrucțiuni într-un program este alocarea instrucțiunilor care urmează să fie repetate într-o parte separată a programului, numită subrutină , cu posibilitatea de a transfera în mod repetat controlul (numit apel ) către subrutină. și apoi revenirea la site-ul apelului.
Calculatorul poate fi capabil să întrerupă execuția programului și să transfere controlul către o anumită instrucțiune, în funcție de starea acesteia sau de semnalele de la dispozitive externe, formând o întrerupere . După procesarea acestuia, execuția programului poate fi continuată din punctul de întrerupere.
Transferul controlului la un set de instrucțiuni pregătit în prealabil pentru o anumită situație, de obicei neobișnuită sau eronată (excepțională), fără posibilitatea de a reveni la locul apariției, formează gestionarea excepțiilor .