Cum se fac programe?
Este foarte simplu! De fapt, procesul de scriere a unui program constă în scrierea (codarea) unui algoritm folosind anumite mijloace. vă oferită de limba de programare. Prin urmare, pentru programarea de succes, trebuie să știe două lucruri: în primul rând (și mai presus de toate) - un algoritm, iar al doilea - un set de instrumente (mecanisme), prin care algoritmul poate fi implementat într-un limbaj de programare.
Deci, în primul rând - algoritmul! Ce este un algoritm? - aceasta este secvența finală de acțiuni (prescripții), a căror îndeplinire vă permite să atingeți un scop dat.
Un algoritm este întotdeauna făcut pentru un anumit interpret. De exemplu, o rețetă pentru gătit un vas sau instrucțiuni pentru utilizarea unui fier - sunt algoritmi orientați spre oameni. Instrucțiuni de tip:- Setați A de pe tastatură;
- Fie B egal cu 10;
- Adăugați A și B; rezultatul este scris în C;
- Dacă C este mai mare de 100, mergeți la p. 8 în mod diferit față de următoarea clauză.
- ...
- ...
- ...
- stop
- un exemplu tipic al unui algoritm care poate fi executat de un calculator.
Algoritmi, create pentru un om (algoritmi sfera domestică), implică întotdeauna un anumit nivel de formare inițială a interpretului. De exemplu, atunci când descrieți modelul de împerechere, nu trebuie să explicați cum să țineți acele de tricotat, cum să legați o buclă sau care este legătura față și spate - se presupune că aceste cunoștințe există deja în persoană.
Sistemele de comandă ale procesatorilor moderni au sute de astfel de operațiuni. Cu toate acestea, printre ele, veți găsi niciodată astfel de comenzi ca, să zicem, „introduceți o valoare de la tastatură“, „simbolul pe ecranul de afișare“ sau, de exemplu, „pentru a calcula definită integrală“, „reda un fișier de sunet“, etc. Toate aceste acțiuni trebuie reduse (reduse) la un set de instrucțiuni mai simple (elementare) care sunt disponibile procesorului.
În ciuda nivelului intelectual extrem de scăzut, calculatorul are totuși o memorie electronică imensă, care permite stocarea informațiilor sub forma unei secvențe de biți (cifre binare). În plus, este capabil să opereze secvențe fenomenale de semnale electrice reprezentând anumite numere. În combinație cu programe bune scrise de oameni inteligenți și talentați, posibilitățile tehnologiei informatice sunt cu adevărat nelimitate.
La începutul dezvoltării tehnologiei informatice, programele au fost create direct sub forma unei secvențe de instrucțiuni de procesor, adică în limbajul mașinii. A fost o muncă foarte laborioasă, care, de altfel, necesită de la programator o bună cunoaștere a arhitecturii computerelor. În curând, a apărut ideea de a crea un sistem de simboluri pentru scrierea algoritmilor într-o formă ușor de înțeles pentru oameni (adică un limbaj de programare algoritmică) și un program de traduceri care traduce acest algoritm în limbajul mașinii. Utilizarea limbilor algoritmice mărește semnificativ "nivelul inițial al cunoștințelor" calculatorului. Operațiunile disponibile în prezent, cum ar fi:- plasarea unui număr sau a altor date în unele variabile (de fapt, în locația de memorie);
- orice operații aritmetice, precum și multe alte operații matematice, cum ar fi exponentiation, rădăcină pătrată, calculul valorilor funcției trigonometrice, etc.;
- operațiuni de comparație;
- controlul transferului către un anumit operator;
- afișați caracterele pe ecran și introduceți date de pe tastatură;
- formarea de imagini pe ecranul monitorului;
- și altele asemenea.
În acest caz, devine posibil să lucrăm nu numai cu informații numerice, ci și cu informații simbolice într-o formă explicită.
Rețineți că operațiile cum ar fi "găsiți rădăcina unei ecuații neliniare", "găsiți minimul și maximul unei funcții", "sortați un șir de numere în ordine ascendentă" etc. nu sunt prezente în lista considerată mai sus. Acestea ar trebui reduse la operații aritmetice și logice mai simple.
Astfel, setul de acțiuni elementare care pot fi puse în aplicare prin utilizarea unui limbaj de programare algoritmică, și este „nivelul inițial de cunoștințe“, care poate fi invocată și luate în considerare la elaborarea de algoritmi.
Cum se fac algoritmi?
Din păcate, pentru a răspunde la această întrebare în mod neechivoc și într-un fel complet, în general, este cu greu posibilă! Este ca și cum ați încerca să răspundeți la întrebarea: cum să scrieți poze sau cum să scrieți poezii? Ideea este că procesul de creare a unui algoritm și, în cele din urmă, a unui program, este un proces creativ. Cu toate acestea, artistul sau poetul, în plus față de talent, trebuie să posede o tehnică generală de scriere a poeziei sau de compunere de poezii. Acest lucru este valabil și pentru compilarea algoritmilor.
Apoi, vom analiza câteva exemple care vor dezvălui principiile generale conform cărora sunt construite algoritmi pentru calculatoare.
Exemplu 1. Creați un algoritm de căutare pentru numărul maxim între o secvență dată de numere N.
- "Și ce trebuie să inventezi - te uiți și alegi!" - poți exclama. Da, putem într-adevăr să privim și să alegem, dar computerul nu poate face acest lucru. Și ce poate? Pot adăuga, scădea, împărți, înmulți, compara numerele ...
Denumiți numerele date ca a1. a2. ... și n. Introducem variabile suplimentare: max - pentru numărul maxim și i - numărul de serie al elementului.
Descriim succesiunea verbală posibilă a acțiunilor:- Introduceți numerele: n, a1. a2. ... și n;
- Setați variabila max la a1;
- Variabila i este atribuită o valoare de 2;
- Dacă ai> max, atunci atribuiți valoarea lui ai la variabila max;
- Măriți valoarea variabilei i cu una;
- Dacă i> n, afișați max, altfel mergeți la pasul 4;
Același algoritm poate fi prezentat mai clar - sub forma unei scheme.
Exemplul 2. Compuneți un algoritm pentru găsirea rădăcinilor unei ecuații patratice.
Algoritmul poate fi bazat pe formule cunoscute:
Rămâne doar să se prevadă situații excepționale, altfel algoritmul compilat nu va fi universal (nu va descrie pe deplin procesul de calcul). Există trei astfel de situații:- a = 0, ecuația degenerează într-o linie liniară bx + c = 0 cu rădăcina x = -c / b;
- a = 0 și b = 0. ecuația își pierde semnificația;
- (B 2 -4ac)<0 – уравнение имеет комплексные корни, вещественные и мнимые части которых. соответственно, равны:
Mai jos este o diagramă bloc a unui algoritm posibil:
La compilarea algoritmului -- puteți utiliza numai instrucțiunile pe care executorul (computerul) le poate efectua. Prin urmare, este necesar să cunoaștem bine capacitățile performerului și să învățăm cum să reducem soluția unei anumite probleme la succesiunea acestor instrucțiuni;
- Este necesar să se prevadă (gândiți-vă) toate variantele posibile ale dezvoltării unui proces de calcul sau alt proces, inclusiv acțiunile mașinii în cazul unor date inițiale incorecte.
Revenirea la scrierea programelor.
După ce algoritmul este compilat (pe hârtie sau "în cap"), acesta trebuie mutat într-un limbaj algoritmic. Este cunoscut (și chiar a demonstrat) că algoritmul de orice complexitate poate fi realizată prin utilizarea unui cuplu de operatori, de exemplu, o instrucțiune condițională (IF) și declarația salt necondiționat (GOTO). De exemplu, implementăm algoritmul pentru găsirea numărului maxim (pentru brevetare, secțiunile de descriere și procesul de introducere a elementelor matricei sunt omitete):
Cu toate acestea, scrierea de programe folosind doar doi operatori este complet nerezonabilă și nu este eficientă. Mai ales pentru că în cele mai multe limbaje de programare există alți operatori care vă permit să pună în aplicare o varietate de algoritmi sunt mai compacte (în ceea ce privește textul programului) și mai eficient (în ceea ce privește punerea sa în aplicare). În special, acești operatori includ operatorii de organizare a ciclurilor și operatorii cu mai multe opțiuni. Rescriim, ca exemplu, programul de mai sus cu ajutorul operatorului ciclului parametric FOR:
Sunt de acord că arată mult mai elegant (și, în plus, mai scurt).
La compilarea programelor -- Nu te limita la doar doi operatori (IF și GOTO). În plus, utilizarea operatorului GOTO trebuie evitată;
- utilizarea de diverse operatori special concepute pentru implementarea acestor sau alți algoritmi tipici, face programul mai compact și mai bine structurat.