Programare structurată

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

În informatică , programarea structurată este o paradigmă de programare care a apărut între anii șaizeci și șaptezeci în contextul programării procedurale . Conceptele introduse de programarea structurată stau la baza altor numeroase alte paradigme procedurale ulterioare, nu în ultimul rând pe cea orientată pe obiecte .

Origini conceptuale

Ideile cheie ale programării structurate pot fi urmărite înapoi la critica structurii de control a saltului necondiționat (sau a merge , „du-te la”), reprezentând, în anii șaizeci , principalul instrument pentru definirea algoritmilor software complex. Într-un faimos articol din 1968 , declarația Goto considerată dăunătoare , Edsger Dijkstra a discutat temeinic efectele dăunătoare ale goto asupra calității software-ului, și în special asupra lizibilității și modificabilității sale (așa-numita problemă a codului spaghetti ).

O altă publicație celebră care s-a dovedit fundamentală pentru apariția programării structurate a fost Diagramele de flux, mașinile Turing și Limbile cu doar două reguli de formare , în care Corrado Böhm și Giuseppe Jacopini și-au dovedit celebra teoremă . Conform acestei teoreme, orice program scris folosind goto ar putea fi rescris fără acesta, cu condiția să fie disponibile alte trei tipuri de structuri de control: secvență , selecție și buclă . Rezultatul Böhm-Jacopini poate fi exprimat și spunând că, având în vedere orice diagramă de flux , există cel puțin o alta care, cu aceeași intrare, produce întotdeauna aceleași ieșiri ca prima și în care nodurile diagramei de flux respectă o anumite seturi de constrângeri.

Structurarea controlului

Pictogramă lupă mgx2.svg Același subiect în detaliu: Structura de control .

Structurile de control admise de limbajele structurate și regulile sintactice și semantice ale utilizării lor pot varia în detalii specifice; cu toate acestea, trebuie îndeplinite o serie de cerințe de bază:

  • completitudine . Un limbaj structurat trebuie să furnizeze secvența , cel puțin o structură de tip alternativ și cel puțin o structură de tip iterativ ;
  • punct unic de intrare și ieșire . În mod ideal, fiecare structură de control, completată cu instrucțiuni controlate , trebuie să poată fi considerată ca o singură macroinstrucțiune din punctul de vedere al controlului general, cu un punct de intrare bine identificat și un punct de ieșire bine identificat.
  • modularitate . Fiecare structură de control poate avea printre instrucțiunile sale controlate, recursiv , alte structuri de control (fără limite).

Ultimele două constrângeri înseamnă că, în ceea ce privește fluxul de control , fiecare structură de control definește un domeniu care este complet izolat de celelalte și care nu poate interfera sau suferi interferențe. Aceasta este o cerință indispensabilă pentru aplicarea metodologiilor de proiectare și dezvoltare legate în mod tradițional de programarea structurată, cum ar fi proiectarea și dezvoltarea de sus în jos pentru rafinări ulterioare .

Secvenţă

Următoarea diagramă prezintă structura generală a secvenței. Singurul punct de intrare este afișat în roșu, singurul punct de ieșire în verde.

Secvența instrucțiunilor

Selecţie

Următoarea diagramă prezintă două exemple de alternative structurate (în stânga un if..then..else , în dreapta un if..then ). Singurul punct de intrare este afișat în roșu, singurul punct de ieșire în verde.

Două tipuri de iterații structurate

Repetare

Următoarea diagramă prezintă două exemple de iterații structurate (în stânga o vreme..do .. , în dreapta o repetare..până la .. ). Singurul punct de intrare este afișat în roșu, singurul punct de ieșire în verde.

Două tipuri de alternative structurate

Noi reprezentări grafice

În albastru, diagramele scatuli sau diagramele Nassi - Shneiderman , inventate pentru noua teorie. În verde vezi echivalentele lor.

Modularitate

Următoarea diagramă prezintă un exemplu de compoziție a două structuri de control: o structură de selecție este inserată într-o iterație. Se poate observa că întreaga compoziție menține un singur punct de intrare și un singur punct de ieșire.

Alternative iterative

Limbaje de programare structurate

Limbaje de programare structurate au început să apară la începutul anilor 1970 . Încorporând ideile lui Böhm și Jacopini , acestea au oferit un set complet de structuri de control, adică cel puțin o formă de succesiune, una de alternativă și una de iterație. De fapt, în majoritatea cazurilor, au fost furnizate unele variante pentru fiecare familie de structuri de control. Cu toate acestea, aproape toți proiectanții acestor limbaje au păstrat trecerea ca un posibil instrument de structurare a controlului (adesea descurajând utilizarea acestuia).

În majoritatea cazurilor, aceste limbi au introdus o porțiune de bloc , pe care caracteristicile corelate ale limbajului s-au bazat adesea, cum ar fi regulile de aplicare pentru identificatori (de exemplu, constante- variabile ).

Printre limbile tipice ale paradigmei structurate putem menționa:

Programare structurată în istoria programării

Programarea structurată reprezintă o etapă fundamentală în evoluția așa-numitei programări mainstream , sau mai degrabă acea succesiune de paradigme care, de-a lungul anilor, una după alta, au dominat lumea industriei software. În special, atât paradigma ulterioară a programării modulare cât și paradigma programării orientate pe obiecte au menținut aceleași principii ale programării structurate în ceea ce privește structurarea controlului „obișnuit” și „secvențial”, introducând noi mecanisme doar pentru a aborda problemele (născut ulterior) de gestionare a excepțiilor și de dezvoltare a programelor concurente .

Elemente conexe

linkuri externe

Controlul autorității LCCN (EN) sh85129214 · GND (DE) 4058133-0 · BNF (FR) cb11966709k (dată) · BNE (ES) XX531013 (dată)