Biblioteca deschisă - o bibliotecă deschisă de informații educaționale. Design de sus în jos și de jos în sus Design de sus în jos și de jos în sus în CAD

  • 07.02.2023

PROIECTARE STRUCTURALĂ ŞI PROGRAMARE

Design de sus în jos

Programare modulară

Programare structurată

Metodă design de sus în jos presupune descompunerea secvenţială a funcţiei generale de prelucrare a datelor în elemente funcţionale simple (“de sus în jos”).

Ca urmare, se construiește o diagramă ierarhică, care reflectă compoziția și subordonarea funcțiilor individuale, care se numește structura funcțională a algoritmului (FSA) aplicatii.

Secvența de acțiuni pentru dezvoltarea structurii funcționale a algoritmului aplicației:

sunt determinate scopurile automatizării disciplinei și ierarhia acestora (scop-subscop);

este stabilită componența aplicațiilor (sarcini de procesare) care asigură implementarea obiectivelor;

se clarifică natura relației dintre aplicații și principalele caracteristici ale acestora (informații pentru rezolvarea problemelor, timpul și frecvența soluționării, condițiile de execuție etc.);

se determină funcțiile de prelucrare a datelor necesare soluționării problemelor;

descompunerea funcțiilor de prelucrare se realizează la complexitatea structurală necesară, implementată de instrumentele propuse.

O astfel de structură de aplicație (Fig. 18.2) reflectă cel mai important lucru - compoziția și relația funcțiilor de procesare a informațiilor pentru implementarea aplicațiilor, deși nu dezvăluie logica execuției fiecărei funcții individuale, condițiile sau frecvența apelurilor acestora.

Descompunerea trebuie purtată cu strictețe funcţional caracterul, adică un element separat al FSA descrie completă funcție semnificativă prelucrarea informaţiei, care presupune o anumită metodă de implementare la nivel de program.

În funcție de frecvența de utilizare, funcțiile sunt împărțite în:

odată executat;

repetitiv.

Nivelul de detaliu al funcțiilor poate varia, dar diagrama ierarhică ar trebui să ofere o idee despre compoziția și structura funcțiilor interconectate și algoritm general prelucrarea datelor. Funcțiile utilizate pe scară largă devin funcții standard (încorporate) în timpul proiectării structura internă produs software.

Exemplul 18.4. Unele funcții, de exemplu F2, nu pot fi descompuse în continuare în componente: necesită implementare directă a software-ului. Alte funcții, de exemplu Ф1, Фm, pot fi prezentate ca o combinație structurală de funcții mai simple, de exemplu Ф11, Ф12 etc. Toate funcțiile componentelor sunt implementate independent în software; funcții compuse(tip Ф1, Фm) sunt implementate ca module software care controlează funcțiile componente, de exemplu, sub formă de programe de meniu.

Subrutine

Programare structurată

Secțiunea anterioară a discutat despre operatorii de bază și tipurile de date necesare pentru a scrie programe. Sa presupus că textul programului este o secvență liniară de operatori de atribuire, bucle și operatori condiționali. În acest fel, puteți rezolva probleme nu foarte complexe și puteți crea programe care conțin câteva sute de linii de cod. După aceasta, înțelegerea textului sursă scade brusc datorită faptului că structura generala Algoritmul se pierde în spatele operatorilor specifici de limbaj care efectuează acțiuni prea detaliate, elementare. Apar numeroși operatori condiționali imbricați și operatori de buclă, logica devine complet confuză, iar atunci când se încearcă corectarea unui operator eronat, sunt introduse mai multe erori noi legate de particularitățile funcționării acestui operator, ale căror rezultate sunt adesea luate în considerare în cel mai mult locuri diferite programe. Din acest motiv, este aproape imposibil să tastați și să depanați o secvență liniară lungă de operatori.

Când creăm aplicații de dimensiuni medii (câteva mii de linii de cod sursă), folosim programare structurata, ideea căreia este, în esență, că structura programului ar trebui să reflecte structura problemei care se rezolvă, astfel încât algoritmul de soluție să fie clar vizibil din textul sursă. Pentru a face acest lucru, trebuie să aveți mijloacele pentru a crea un program nu numai folosind trei instrucțiuni simple, ci și folosind instrumente care reflectă mai precis structura specifică a algoritmului. În acest scop, conceptul a fost introdus în programare subrutine - un set de instrucțiuni care efectuează acțiunea dorită și sunt independente de alte părți ale codului sursă. Programul este împărțit în multe subrutine mici (luând până la 50 de instrucțiuni - un prag critic pentru înțelegerea rapidă a scopului subrutinei), fiecare dintre ele efectuând una dintre acțiunile specificate în sarcina originală. Prin combinarea acestor subrutine, este posibil să se formeze algoritmul final nu din operatori simpli, ci din blocuri complete de cod care au o anumită semnificație semantică, iar astfel de blocuri pot fi denumite prin nume. Se pare că subrutinele sunt noi operatori sau operații de limbaj definite de programator.

Abilitatea de a utiliza subrutine clasifică un limbaj de programare ca o clasă procedural limbi.

Prezența subrutinelor vă permite să proiectați și să dezvoltați aplicația de sus în jos - această abordare este de obicei numită design de sus în jos.În primul rând, sunt identificate mai multe subrutine care rezolvă cele mai globale sarcini (de exemplu, inițializarea datelor, partea principală și finalizarea), apoi fiecare dintre aceste module este detaliat la un nivel inferior, defalcându-se la rândul său într-un număr mic de alte subrutine, și aceasta continuă până când întreaga sarcină este finalizată.

Această abordare este convenabilă deoarece permite unei persoane să gândească în mod constant la nivel de subiect, fără a coborî la operatori și variabile specifice. În același timp, devine posibil să nu se implementeze imediat unele subrutine, ci să le amâne temporar până la finalizarea altor părți. De exemplu, dacă este extrem de important să se calculeze o funcție matematică complexă, atunci este alocată o subrutină separată pentru un astfel de calcul, dar este implementată temporar de un operator, care atribuie pur și simplu o valoare preselectată (de exemplu, 5). Odată ce întreaga aplicație a fost scrisă și depanată, atunci puteți începe să implementați această funcție.

De asemenea, este important ca subrutinele mici să fie mult mai ușor de depanat, ceea ce crește semnificativ fiabilitatea generală a întregului program.

O caracteristică foarte importantă a subrutinelor este capacitatea de a reutilizare. Sistemele de programare integrate vin cu biblioteci mari de rutine standard care pot crește semnificativ productivitatea prin valorificarea muncii altcuiva pentru a crea rutine utilizate în mod obișnuit.

Să ne uităm la un exemplu care demonstrează tehnica de design de sus în jos. Există o matrice Ocenki, constând din N (N > 2) evaluări ale judecătorilor (fiecare rating este pozitiv). În unele sporturi, se obișnuiește să se renunțe la scorurile cele mai mari și cele mai mici pentru a evita influența judecății părtinitoare, iar sportivul primește media aritmetică a scorurilor rămase. Să rezolvăm această problemă prin detalierea treptată a algoritmului (fără a fi legați de un anumit limbaj de programare).

1. Procesul de rezolvare este cel mai simplu descris de subrutine:

Enter_ratings_in_array;

Remove_highest_rating;

Eliminare_cel mai mic_evaluare;

print_results;

Acum putem începe să detaliem fiecare dintre aceste subrutine.

2. Eliminați_cel mai ridicat_evaluare;

Cum să eliminați cel mai mare scor dintr-o matrice statică? În schimb, puteți scrie pur și simplu valoarea 0 și atunci când calculați media aritmetică valori zero nu tine cont.

I = Numărul celui mai mare_element_din_matrice;

3. Eliminați_cel mai mic_evaluare;

I = Numărul celui mai mic element din matrice;

La implementarea subrutinei Number_of_the_smallest_element_in_array, trebuie să țineți cont de faptul că va trebui să căutați cel mai mic pozitiv valori (mai mari decât zero).

Aici veți avea nevoie de un operator de buclă care calculează suma tuturor elementelor matricei Ocenki.

PENTRU I = 1 LA N

SUMA = SUMA + Estimare (I)

SUM = SUM / (N - 2)

În ultimul operator se calculează media aritmetică a tuturor estimărilor. Suma elementelor matricei se împarte la numărul de elemente redus cu 2, deoarece cele două estimări, cea mai mare și cea mai mică, nu trebuie să fie luate în considerare.

Dacă această sarcină ar fi fost rezolvată succesiv, atunci anumite probleme ar fi putut apărea deja în etapa de ștergere a evaluărilor.

Implementați singur subrutinele Number_of_the_largest_element_in_array și Number_of_the_smallest_element_in_array.


  • - Subiectul 3.2 Design de sus în jos

    Metoda de proiectare de sus în jos implică descompunerea secvențială a funcției generale de prelucrare a datelor în elemente funcționale simple ("de sus în jos").


  • Ca urmare, se construiește o diagramă ierarhică, care reflectă compoziția și subordonarea individului... [citește mai mult]

    - Design de sus în jos


  • - Rutele de proiectare pot începe de la nivelurile ierarhice inferioare ale descrierilor (design de jos în sus) sau de sus (design de sus în jos).

    Există o relație profundă între toate etapele de proiectare. Astfel, se determină proiectul final și se dezvoltă întregul documentatia tehnica adesea nu poate fi finalizată până când tehnologia este complet dezvoltată. În procesul de proiectare și dezvoltare...

  • Dacă rezolvarea problemelor la niveluri ierarhice înalte precede rezolvarea problemelor la niveluri ierarhice inferioare, atunci proiectarea se numește în jos(detalii pas cu pas). Dacă pașii asociați cu nivelurile ierarhice inferioare sunt efectuate mai devreme, se numește proiectare ascendent.

    Fiecare dintre aceste două tipuri de design are avantaje și dezavantaje. Cu design de sus în jos, un sistem este dezvoltat în condițiile în care elementele sale nu au fost încă definite și, prin urmare, informațiile despre capacitățile și proprietățile lor sunt speculative. Cu designul de jos în sus, dimpotrivă, elementele sunt proiectate înaintea sistemului și, prin urmare, cerințele pentru elemente sunt speculative. În ambele cazuri, din cauza lipsei de informații inițiale cuprinzătoare, abaterile de la optime potențial posibile rezultate tehnice. Cu toate acestea, trebuie amintit că astfel de abateri sunt inevitabile cu o abordare ierarhică bloc a proiectării și că nu există o alternativă acceptabilă la abordarea ierarhică bloc atunci când proiectați obiecte complexe. Prin urmare, optimitatea rezultatelor proiectării ierarhice bloc ar trebui luată în considerare din punctul de vedere al indicatorilor tehnici și economici, inclusiv, în special, a costurilor materiale și de timp pentru proiectare.

    Deoarece ipotezele făcute pot să nu fie îndeplinite, este adesea necesară reexecutarea procedurilor de proiectare din etapele anterioare după efectuarea procedurilor de proiectare ale etapelor ulterioare. Astfel de repetări oferă o abordare consecventă a rezultatelor optime și determină natura iterativă a designului. Prin urmare, iterația ar trebui să fie considerată un principiu important de proiectare pentru obiecte complexe.

    În practică, o combinație de design de jos în sus și de sus în jos este comună. De exemplu, proiectarea de jos în sus are loc la toate acele nivele ierarhice la care sunt utilizate elemente unificate. Este evident că elementele unificate, orientate spre utilizare într-un număr de sisteme diferite dintr-o anumită clasă, sunt dezvoltate mai devreme decât unul sau altul sistem specific acestei clase.

    Avantajul designului de sus în jos este că permite dezvoltatorilor să se concentreze pe esențial probleme dateși amâna luarea tuturor acelor decizii care nu ar trebui luate la în această etapă proiecta. Proiectarea de sus în jos necesită stabilirea și rezolvarea celor mai fundamentale probleme de la bun început, amânând problemele specifice pentru o analiză ulterioară.

    Atunci când proiectează noi produse folosind CAD 3D, întreprinderile folosesc de obicei metoda de jos în sus(Fig. 1), care constă în faptul că piesele sunt mai întâi dezvoltate (modelate) independent unele de altele, iar apoi se creează o structură de ansamblu din ele, ca din cuburi, pe baza căreia se formează ulterior o specificație.

    Utilizarea acestei metode de proiectare este justificată în cazurile în care se realizează conform desenelor și diagramelor existente, permițând, de exemplu, identificarea inexactităților în documentația de proiectare. Cu toate acestea, dacă parametrii modelelor depind unul de celălalt, dar relațiile lor nu sunt specificate, efectuarea de modificări la design devine laborioasă și consumatoare de timp: proiectantul este forțat să modifice parametrii fiecărei piese separat și apoi să verifice ansamblul pentru intersectia componentelor, mecanismul de operabilitate etc. d.

    Desigur, aproape toate sistemele de proiectare au mijloacele de a crea astfel de relații prin introducerea de relații între parametrii piesei sau prin crearea unor modele de piese în contextul unui ansamblu, legând geometria acestora de modele deja proiectate. Cu toate acestea, o astfel de secvență de conexiuni, în care fiecare componentă nouă a ansamblului depinde de mai multe ansambluri anterioare, are un impact negativ asupra performanței computerului atunci când se lucrează cu ansambluri mari. În plus, utilizarea unei metode de jos în sus la proiectarea noilor produse duce la necesitatea de a crea mai întâi aspectul acestora pe o planșă de desen sau într-un sistem CAD bidimensional.

    În astfel de cazuri este mai de preferat metoda de proiectare de sus în jos(Fig. 2), care constă în faptul că dezvoltarea unui produs începe cu realizarea aspectului acestuia și determinarea structurii, pe baza căreia se modelează apoi piesele și ansamblurile incluse în produs. Mai jos vom analiza modul în care se realizează proiectarea de sus în jos - de la idee la desene în sistemul de proiectare tridimensional Pro/ENGINEER WILDFIRE (Fig. 3) folosind exemplul unui mecanism, al cărui model este prezentat în Fig. 4. Mecanismul luat în considerare poate fi în două stări: pliat ( O) și descompus ( b).

    Crearea unui aspect

    Aspectul în Pro/ENGINEER WILDFIRE are loc în două etape: mai întâi, așa-numita caietulinginer(Aspect), și apoi model de ansamblu wireframe(Schelet).

    "Caiet" este o schiță conceptuală bidimensională (Fig. 5), în care proiectantul principal definește o listă de parametri principali de control. Pentru mecanismul luat în considerare se pot determina următorii parametri: dimensiunile structurii, lungimea pârghiilor în mișcare, distanța de la capetele pârghiilor până la margine și, dacă este necesar, relațiile dintre acestea. Acești parametri pot fi atât specificați, cât și calculați, utilizatorul introducând valorile primilor de la tastatură, iar valorile celor din urmă sunt specificate folosind ecuații în care pot opera operatori aritmetici, funcții trigonometrice, operatori condiționali etc. fi folosit. Deci, de exemplu, în cazul nostru, a fost specificată dependența lungimii pârghiei de înălțimea și lungimea structurii.

    O schiță 2D definește de obicei aspectul general al unui produs și poate fi fie creată folosind instrumentele de desen Pro/ENGINEER WILDFIRE, fie importată dintr-un alt fișier grafic. Nu are nimic de-a face cu geometria ansamblului proiectat, așa că este suficient să desenați schematic produsul în curs de dezvoltare fără a respecta scara sau desenul detaliat. Indică dimensiunile principale pe care proiectantul le poate modifica direct în vedere.

    În „notebook” puteți crea o zonă de mesaje de eroare care vă va permite să evitați introducerea unor valori ale parametrilor evident incorecte. Criteriile de validare sunt, de asemenea, determinate de proiectantul principal. De exemplu, în cazul nostru, criteriul de testare a fost distanța dintre capetele pârghiilor (vezi Fig. 5, parametrul „Suport”) dacă această distanță este setată de dezvoltator să fie mai mică de jumătate din lungimea produsului, atunci structura devine instabilă. Dacă introduceți valori incorecte de lungime sau înălțime, va fi afișat un mesaj de eroare, permițându-vă să faceți corectarea imediat, fără a reconstrui ansamblul.

    Utilizarea „Caietului inginerului” vă permite să automatizați procesele de creare a ansamblurilor. Pentru a face acest lucru, în „caiet” sunt create elementele de sprijin necesare: sisteme de coordonate, planuri, axe. În piese și ansambluri, aceste elemente de referință sunt definite ca puncte de referință pentru operațiunile de asamblare ulterioare. Când includeți o componentă nouă într-un ansamblu, sistemul vă solicită să o plasați automat în conformitate cu aspectul.

    Capacitățile Pro/ENGINEER WILDFIRE vă permit să utilizați mai multe „notebook-uri” simultan într-un singur proiect, ceea ce este convenabil atunci când lucrați la proiecte mari. De exemplu, atunci când proiectați o mașină, puteți crea „caiete” separate pentru motor, cadru, suspensie etc. și să stabilească relații între ei.

    Model de cadruansambluri acesta este un model tridimensional, a cărui geometrie determină cerințele spațiale pentru ansamblu, împerecherea componentelor și alte caracteristici necesare pentru poziționarea componentelor ansamblului și determinarea geometriei acestora. Un model wireframe constă de obicei din elemente structurale de susținere (plane, curbe, sisteme de coordonate, puncte) și suprafețe. În fig. Figura 6 prezintă un model de cadru al mecanismului proiectat.

    La construirea geometriei unui model wireframe, proiectantul principal stabilește relații între dimensiunile acestuia și parametrii „notebook”, ceea ce permite ulterior, la modificarea parametrilor, modificarea automată a tuturor parametrilor aferenti modelului wireframe și prin intermediul acestuia în toate componentele ansamblul. Proiectantul principal trebuie doar să modifice dimensiunea sau alt parametru din aspect, iar modificările corespunzătoare vor fi făcute automat în toate părțile, ansamblurile și desenele aferente. În fig. 7 arată dependențele create în modelul wireframe.

    Astfel, proiectantul principal, lucrând la aspectul produsului, stabilește criterii de proiectare, care sunt ulterior utilizate de proiectanți la dezvoltarea unităților de asamblare și a pieselor incluse în produs.

    Proiectarea pieselor si ansamblurilor

    Următorul pas este crearea unui ansamblu al produsului. Designerul formează structura produsului, creând noi piese și ansambluri deja în contextul ansamblului (și nu separat de acesta, ca în designul de jos în sus), legându-le de geometria modelului cadrului. Se dezvoltă apoi geometria componentelor. Desigur, geometria lor poate fi creată direct în ansamblu, dar, de regulă, aceasta este mai puțin eficientă, deoarece în acest caz va fi dificil să se ofere posibilitatea de proiectare paralelă, în care executanții lucrează simultan la componenta de asamblare încredințată. la fiecare dintre ei. Cu alte cuvinte, fiecare membru al echipei de proiect va fi obligat să aibă întregul ansamblu pe computer, iar acest lucru, de regulă, nu face decât să se concentreze pe sarcina specifică pe care o îndeplinește.

    Instrumentul vă permite să organizați designul paralel în Pro/ENGINEER WILDFIRE Copiați Geometria, care vă permite să copiați orice geometrie - suprafețe, curbe, muchii, puncte, sisteme de coordonate etc. între componentele ansamblului. În proiectarea de sus în jos, sursa principală a geometriei copiate a proiectantului este modelul wireframe al ansamblului, dar în unele cazuri este utilizată copierea între piese și subansambluri.

    După ce proiectantul principal creează structura ansamblului (piesele și ansamblurile din acesta sunt încă goale), dezvoltatorul copiază geometria din modelul său wireframe. Deschizându-și „partea” sau ansamblul, se ocupă doar de geometria de care are nevoie pentru a lucra, fără a utiliza ansamblul în ansamblu, iar acest lucru reduce semnificativ cerințele pentru configurarea calculatoarelor pe care sunt proiectate componentele incluse în ansamblu. În același timp, se menține o conexiune asociativă între geometria originală și cea copiată o modificare a modelului cadru implică o modificare a tuturor componentelor care depind de geometria acestuia.

    Pe stadiu inițial Lucrând la structura de ansamblu (Fig. 8), au fost create trei părți și apoi au fost copiate diferite seturi de geometrie din modelul wireframe în fiecare dintre ele. În fig. Figura 9 prezintă una dintre aceste trei părți deschise într-o fereastră separată și geometria ei creată din geometria modelului wireframe.

    Conectarea componentelor la un model wireframe vă permite, de asemenea, să simulați mișcarea componentelor dintr-un ansamblu. De exemplu, dacă modificați înălțimea unei structuri modelate într-un cadru, poziția tuturor componentelor asociate cadrului se va schimba (vezi Figura 4). Astfel, utilizarea unui model de cadru a făcut posibilă simularea a două poziții ale structurii fără a crea conexiuni cinematice între componente.

    Copierea geometriei este, de asemenea, utilizată pentru a introduce criterii spațiale transferate de la un ansamblu de nivel superior într-un proiect. Să dăm un exemplu. Pentru pompa prezentată în fig. 10, este necesar să proiectați o conductă constând din conducte la intrarea și ieșirea pompei, să dezvoltați flanșe de conectare, să conectați linia de lichid de răcire la un fiting special, să proiectați o fundație pentru cadrul pompei și cablajul electric la motor. Pentru a face acest lucru, vom crea un ansamblu format dintr-o pompă și un „subansamblu gol” (sau mai multe subansambluri) în care este proiectată conducta. În „subansamblul gol”, este creat un model de cadru, în care este copiată geometria necesară pentru proiectarea conductelor, cum ar fi flanșe de legătură, fiting de admisie a lichidului de răcire etc. Proiectantul (sau echipa de designeri) lucrează acum numai cu geometria selectată (Fig. 11). Ulterior, geometria din modelul cadru este copiată direct în piesele și ansamblurile proiectate. Toate modelele incluse în ansamblu sunt conectate printr-o conexiune asociativă, ceea ce înseamnă că schimbarea punctelor de conectare ale pompei va presupune o schimbare automată a conductei acesteia.

    Pe lângă copierea geometriei, piesele proiectate pot fi asociate cu aspectul în același mod în care un model wireframe este asociat cu un „caiet al inginerului”, folosind ecuații care stabilesc relația dintre dimensiunile pieselor și parametrii „caiet”. Mecanismul de asociativitate funcționează aici într-un mod similar: o modificare a parametrilor de control implică o modificare a pieselor de ansamblu asociate cu aspectul.

    Efectuarea de modificări la design

    Să demonstrăm procesul de efectuare a modificărilor în timpul proiectării de sus în jos folosind un exemplu: vom crește înălțimea structurii (vezi Fig. 4 O) în starea desfășurată, pentru care schimbăm parametrul corespunzător în „caiet”. Pro/ENGINEER WILDFIRE va calcula apoi automat toți parametrii ale căror valori sunt calculate folosind ecuații și va verifica dacă valorile introduse sunt corecte conform criteriilor specificate. În cazul nostru, o astfel de verificare a arătat că înălțimea a fost mărită prea mult și structura devenise instabilă, ceea ce înseamnă că a fost necesară creșterea lungimii acesteia. Diagrama (Fig. 12) prezintă cu roșu modificările pe care proiectantul le face manual. După modificarea parametrilor notebook-ului, modelul wireframe este actualizat automat (figura arată noul wireframe), iar pentru a actualiza ansamblul, rulați comanda Regenerate. Astfel, o modificare făcută de proiectant la cel mai înalt nivel în „caietul inginerului” a presupus modificări automate la toate celelalte niveluri în ansamblu, în piese, în desene.

    Constatări cheie

    1. Utilizarea unei metode de proiectare de sus în jos este eficientă atunci când este necesar să se controleze modificările parametrilor interrelaționați în diferite componente ale unui ansamblu și, de asemenea, dacă este necesar, să se determine în prealabil parametrii acestora (chiar înainte de a dezvolta modele de piese și unități de asamblare).

    2. Utilizarea unui „caiet al inginerului” și a modelelor wireframe poate reduce semnificativ procesul de efectuare a modificărilor unui proiect datorită trecerii automate a modificărilor prin toate etapele de proiectare nu numai (modele, ansambluri, desene, specificații), ci și tehnologic (proiectarea echipamentelor tehnologice, elaborarea programelor de control) preproducție.

    3. Metoda de proiectare de sus în jos vă permite să paralelizați eficient lucrul asupra ansamblurilor între participanții la procesul de dezvoltare și atunci când este utilizat în proiectare modele standard reduce semnificativ timpul necesar pentru a crea o serie de dimensiuni standard și opțiuni de produs.

    Eficacitatea utilizării designului de sus în jos în Pro/ENGINEER WILDFIRE este apreciată, această metodă este utilizată în mod activ în multe întreprinderi rusești, despre care am vorbit de mai multe ori pe paginile revistei, informând cititorii despre rezultatele proiectelor realizate de SOLVER la întreprinderile autohtone de fabricare a mașinilor și instrumentelor.

    „CAD și grafică” 11”2004

    Prezența subrutinelor vă permite să proiectați și să dezvoltați aplicația de sus în jos - această abordare se numește design de sus în jos.În primul rând, sunt identificate mai multe subrutine care rezolvă cele mai globale sarcini (de exemplu, inițializarea datelor, partea principală și finalizarea), apoi fiecare dintre aceste module este detaliat la un nivel inferior, defalcându-se la rândul său într-un număr mic de alte subrutine, și asta se întâmplă până când întreaga sarcină nu va fi realizată.

    Această abordare este convenabilă deoarece permite unei persoane să gândească în mod constant la nivel de subiect, fără a coborî la operatori și variabile specifice. În plus, devine posibil să nu se implementeze imediat unele subrutine, ci să le amâne temporar până la finalizarea altor părți. De exemplu, dacă este necesar să se calculeze o funcție matematică complexă, atunci este alocată o subrutină separată pentru un astfel de calcul, dar este implementată temporar de un operator, care atribuie pur și simplu o valoare preselectată (de exemplu, 5). Odată ce întreaga aplicație este scrisă și depanată, atunci puteți începe să implementați această funcție.

    De asemenea, este important ca subrutinele mici să fie mult mai ușor de depanat, ceea ce crește semnificativ fiabilitatea generală a întregului program.

    O caracteristică foarte importantă a subrutinelor este capacitatea de a reutilizare. Sistemele de programare integrate vin cu biblioteci mari de rutine standard care pot crește semnificativ productivitatea prin valorificarea muncii altcuiva pentru a crea rutine utilizate în mod obișnuit.

    Să ne uităm la un exemplu care demonstrează tehnica de design de sus în jos. Există o matrice Ocenki, constând din N (N > 2) evaluări ale judecătorilor (fiecare rating este pozitiv). În unele sporturi, se obișnuiește să se renunțe la scorurile cele mai mari și cele mai mici pentru a evita influența judecății părtinitoare, iar sportivul primește media aritmetică a scorurilor rămase. Să rezolvăm această problemă prin detalierea treptată a algoritmului (fără a fi legați de un anumit limbaj de programare).

    1. Procesul de rezolvare este cel mai simplu descris de subrutine:

    Enter_ratings_in_array;

    Remove_highest_rating;

    Eliminare_cel mai mic_evaluare;

    print_results;

    Acum putem începe să detaliem fiecare dintre aceste subrutine.

    2. Eliminați_cel mai ridicat_evaluare;

    Cum să eliminați cel mai mare scor dintr-o matrice statică? În schimb, puteți scrie pur și simplu valoarea 0, iar atunci când calculați media aritmetică, valorile zero nu pot fi luate în considerare.

    I = Numărul celui mai mare_element_din_matrice;

    3. Eliminați_cel mai mic_evaluare;

    I = Numărul celui mai mic element din matrice;

    La implementarea subrutinei Number_of_the_mallest_element_in_array, trebuie să țineți cont de faptul că va trebui să căutați cel mai mic pozitiv valori (mai mari decât zero).

    Aici veți avea nevoie de un operator de buclă care calculează suma tuturor elementelor matricei Ocenki.

    PENTRU I = 1 LA N

    SUMA = SUMA + Estimare (I)

    SUM = SUM / (N - 2)

    Ultimul operator calculează media aritmetică a tuturor estimărilor. Suma elementelor matricei se împarte la numărul de elemente redus cu 2, deoarece cele două estimări, cea mai mare și cea mai mică, nu trebuie să fie luate în considerare.

    Dacă această sarcină ar fi fost rezolvată succesiv, atunci anumite probleme ar fi putut apărea deja în etapa de ștergere a evaluărilor.

    Implementați singur subrutinele Number_of_the_largest_element_in_array și Number_of_the_smallest_element_in_array.