Limba algoritmică pascal (pascal) - programare de bază - informatică - un director mare

informatică

Bazele programării

Limba algoritmică Pascal

Elementele lui Pascal
Structura descrierii algoritmului în limba de programare
Tipuri de date în Pascal
Programe liniare

Programele liniare sunt numite constând din comenzi simple (operatori).
Comenzile simple (instrucțiuni simple ale algoritmului) sunt comenzi care nu utilizează condiții în execuția lor. Operatorii simpli includ comenzile de atribuire, de intrare și de ieșire, un apel algoritm auxiliar (subrutină).
Operator de atribuire. Setează sau modifică valoarea curentă a unei variabile. Aceasta modifică conținutul elementului de memorie specific alocat pentru această variabilă. Deoarece scopul oricărui algoritm este de a obține o anumită valoare într-un anumit loc de memorie, aproape orice program conține acest operator.
Această comandă poate arăta astfel:

nume variabil>: = valoare>;

nume de variabilă :: = numele variabilei>;

nume de variabilă :: = expresie>;


În partea stângă a semnului ": =" este numele variabilei, în dreapta - valoarea valorii, numele celeilalte variabile, expresia.
După recunoașterea comenzii de atribuire, controlul este transferat programului care poate efectua asignarea. În primul rând, se fac operațiile din dreapta semnului ": =", iar rezultatul este atribuit variabilei din stânga caracterului de atribuire. Simbolul de atribuire indică faptul că locația de memorie a calculatorului în care este stocată valoarea variabilei specificate trebuie să fie modificată la valoarea specificată, la valoarea variabilei specificate sau la valoarea expresiei calculate.
Operatori de intrare-ieșire. Procedurile standard de introducere a datelor sunt folosite pentru a determina valorile inițiale ale anumitor variabile și constau dintr-un nume de procedură și o listă de intrări care conține numele variabilelor ale căror valori vor fi introduse de la tastatură sau din fișier, adică. variabilelor vor fi atribuite anumite valori specifice.
Mai des, este mai convenabil să utilizați comanda de introducere, mai degrabă decât comanda de atribuire, pentru a determina valorile inițiale, deoarece dacă aveți nevoie să utilizați programul cu alte date inițiale, nu trebuie să modificați textul programului.
Dacă o comandă de intrare se află în înregistrarea algoritmului, execuția acesteia este întreruptă și controlul este transferat unui program care poate introduce date. După introducerea datelor, comanda este transferată la următoarea comandă a algoritmului.
În limba Pascal, procedura de introducere a datelor arată astfel:
READ (lista de intrări);
READLN (lista de intrări).
În timpul executării procedurilor READ și READLN, programul intră în starea de așteptare pentru introducerea datelor. Dacă sunt specificate mai multe variabile în lista de intrări, acestea pot fi introduse într-o singură linie, separate printr-un caracter spațial sau în linii separate (într-o coloană), terminând cu introducerea fiecărei valori cu tasta Enter.
Funcționarea procedurii nu se încheie până când nu s-au introdus toate variabilele enumerate în listă. Tipul de valori introduse trebuie să se potrivească cu cel al variabilei corespunzătoare.
Instrucțiunea READLN diferă de operatorul READ prin aceea că, după introducerea numărului necesar de date, cursorul se deplasează la linia următoare.
Dacă introduceți date de la tastatură, atunci lista de intrări este o listă de variabile, adică secvența de nume de variabile separate prin virgule. Dacă intrarea este dintr-un fișier, atunci în lista introductivă, prima variabilă este numele fișierului asociat cu numele fișierului real.
Procedurile standard de ieșire pentru calcularea rezultatelor sunt utilizate pentru a afișa valorile acestora pe un ecran, o imprimantă sau un fișier. În limba Pascal, procedurile de ieșire sunt:
WRITE (lista de rezultate);
WRITELN (lista de produse).
Lista elementelor de ieșire este mult mai amplă decât în ​​procedurile de intrare. Poate include:
• identificatori de valori ale căror valori vor fi afișate pe dispozitivul respectiv sau într-un fișier;
• expresii ale căror valori vor fi mai întâi calculate și apoi ieșite pe dispozitiv;
• Valorile oțelului (numeric, caracter, șir).
Diferența dintre WRITE și WRITELN este că instrucțiunea WRITE începe cu poziția curentă a cursorului de pe ecranul monitorului și cursorul rămâne pe aceeași linie după terminarea ieșirii. Instrucțiunea WRITELN afișează o valoare din locația curentă și apoi cursorul se mută la următoarea linie. Puteți utiliza operatorul WRITELN fără o listă de ieșiri pentru a muta cursorul pe o linie nouă.
Dacă ieșirea este pe ecranul monitorului, atunci lista de ieșiri este o listă de variabile sau o secvență de nume de variabile, constante sau expresii separate prin virgule. Dacă ieșirea este într-un fișier, atunci prima variabilă din lista de ieșire este fișierul bazat pe fișiere, care este asociat cu numele fișierului real.
În comandă, după ieșirea elementului listei de ieșire prin colon, puteți specifica formatul de ieșire, adică lățimea câmpului pe care vor fi localizate valorile. În ieșirea de date valide, puteți specifica și numărul de cifre zecimale din partea fracționată pe care doriți să o afișați.
Exemplu: scrieți (A: 10: 3, B: 8).
Operatorul apelului algoritmului auxiliar. În Pascal, sunt implementate funcțiile de subrutine-proceduri și subrutine. Subrutina se numește după numele său, indicând parametrii reali. În același timp, valorile reale pot fi în locul argumentelor reale, numele variabilelor reale, expresii și în locul rezultatelor - numai numele variabilelor reale. În acest caz, numărul, tipurile și scopul parametrilor formali și actuali din listele de parametri corespunzători trebuie să coincidă.

Programe cu ramificație

Combinările branching sunt componente ale comenzilor care au condiții, spre deosebire de comenzile simple, în funcție de validitatea căruia instrucțiunile care fac parte din comanda ramurii sunt executate sau nu executate.
Închidere completă și incompletă. În Pascal, este implementată ramificarea completă și incompletă, precum și o comandă de selecție implementată ca execuție secvențială a mai multor structuri de ramificație și care implică selectarea mai multor opțiuni posibile pentru acțiuni.
1. Dacă-apoi construcție - ramificare incompletă este utilizat atunci când anumite acțiuni sunt efectuate numai în cazul în care condiția este îndeplinită.
IF condiție> THEN statement>;
Construcția "If-Then-Else" - ramificare completă este utilizată în cazul în care sunt definite diferite acțiuni în cazul îndeplinirii și nerealizării condiției.
Condiția IF> instrucțiunea THEN> instrucțiunea ELSE>;
2. Proiectele "Case-Of" sunt incomplete sau "Case-Of-Else" - se utilizează o alegere completă atunci când sunt definite diferite acțiuni în cazul mai multor ieșiri (înlocuirea construcțiilor din declarațiile imbricate dacă).
CASE este o variabilă ordinală> OF
valoare>: operatori>
Operatorul ELSE>;
END.
Condiții simple și compuse. O afirmație care poate fi adevărată (adevărată) sau falsă (incorectă) se numește o condiție. O simplă condiție este o afirmație în care două expresii sunt legate prin semnul funcționării relației. Se formulează o condiție - este o afirmație în care două sau mai multe condiții simple sunt îmbinate prin semne de operații logice.
În limba de programare Pascal, operațiile relației sunt implementate:> - mai mult; - mai puțin; = - este egal;> - nu este egal;> = - "nu mai puțin de"; = - "nu mai mult de"; și operații logice: nu - "nu"; și - "și"; sau - sau.
O declarație este o declarație despre care se poate spune că este fie adevărată, fie falsă. Astfel, fiecare propoziție poate fi atribuită "0" (falsă) sau "1" (adevărată). Exemplu: "5 este un număr prime" este adevărat, "2 = 3 + 5" este o declarație falsă.
Cu ajutorul operațiilor logice este posibil să se construiască una de la alta. Construirea unei noi declarații dintr-o declarație dată (date) se numește o operație logică. Semnele operațiilor logice sunt numite legături logice. Operațiile logice sunt cele mai des descrise folosind tabelele cu adevăr.
Tabele de adevăr pentru operații "inversiune", "conjuncție" (multiplicare logică, sau logică "și"), disjuncție (adăugare logică sau logică "sau").


Expresiile logice sunt expresii care constau în propoziții care pot fi legate prin legături logice. Aceste expresii au un sens logic "fals" sau "adevărat"). Expresiile logice pot fi simple și complexe. Într-o expresie logică simplă, se folosesc variabile și constante de tip logic, operații de comparare. O mulțime de expresii logice simple folosind operațiile logice formează o expresie logică compusă. Expresiile simple sunt scrise în expresii compuse în paranteze.

Programe ciclice

Programele ciclice sunt programe în care sunt implementate comenzile ciclului.
În Pascal sunt furnizate trei tipuri de operatori de buclă: un ciclu cu o condiție preliminară, un ciclu cu o condiție postcondiționată, o buclă cu un contor (cu o schimbare de pas a argumentului). De asemenea, lucrează cu bucle imbricate. Buclele brute sunt procese ciclice care permit ca un singur ciclu să fie plasat în altele.
Un ciclu cu o condiție prealabilă (sau buclă) este un ciclu în care corpul bucla este executat numai dacă este îndeplinită condiția specificată înaintea corpului ciclului. Dacă condiția devine incorectă, atunci ciclul este terminat și controlul este transferat operatorului urmând instrucțiunea buclă.
În Pascal, operatorul buclă cu o condiție prealabilă se mai numește și o "buclă".
WHILE condiție> declarație DO>;
Exemplu: calculul sumei primelor 100 de numere naturale prin metoda adăugării secvențiale.
m: = 1; S: = 0;
Cu toate că m = 100 DO
începe
S: = S + m;
m: = m + 1;
se încheie;
Un ciclu cu o postcondiție (sau o buclă înainte) este o buclă în care corpul buclei este executat până când starea specificată după ce corpul buclei devine corectă. Dacă condiția devine corectă, atunci ciclul se termină și comanda este transmisă operatorului urmând instrucțiunea buclă.
În Pascal, operatorul buclă cu o condiție ulterioară se numește și "bucla Repeat-Until".
Instrucțiunea REPEAT> condiție UNTIL>;
Exemplu: calculul sumei primelor 100 de numere naturale prin metoda adăugării secvențiale.
m: = 0; S: = 0;
REPEAT
m: = m + 1;
S: = S + m;
Până la m> = 100;
O buclă cu un contor (cu schimbarea incrementală a unui argument) este un ciclu în care corpul bucla este executat de un număr predeterminat de ori. În diverse limbi algoritmice, implementarea acestui ciclu poate implica utilizarea unor argumente de diferite tipuri, schimbarea argumentului într-un pas diferit, intervalul modificării argumentului și așa mai departe.
O buclă cu un contor de argumente este implementată după cum urmează:
1) argumentul are o valoare inițială;
2) dacă valoarea este în intervalul specificat, atunci corpul bucla este executat;
3) argumentul este schimbat la pasul specificat; este îndeplinită 2);
4) dacă valoarea nu se încadrează în intervalul specificat, executarea ciclului este terminată și controlul este transferat operatorului după operatorul ciclului.
În limba Pascal, doi operatori de buclă sunt implementați cu o schimbare pas în argument: "Pentru buclă" și "For-DownTo ciclu".
PENTRU contorul buclă>: = valoarea inițială> TO valoarea finală> operatorul DO>; (ciclul cu etapa 1),
PENTRU contorul buclă>: = valoarea inițială> valoarea finală DOWNTO> operatorul DO>; (un ciclu cu un pas -1),
unde contorul de buclă> este o variabilă de tip ordinal,
valoarea inițială> și valoarea finală> este o expresie de același tip cu contorul de buclă> (intervalul contorului de buclă)
operator> este un operator simplu sau compozit.
Exemple: calcularea sumei primelor 100 de numere naturale prin metoda adăugării secvențiale.
a) S: = 0;
pentru m: = 1 până la 100
S: = S + m;
b) S: = 0;
pentru m: = 100 downto 1 face
S: = S + m;
În timpul punerii în aplicare a ciclului cu schimbarea treptată a argumentului în Pascal, este necesar să se cunoască în avans numărul de repetări ale corpului bucla și să se amintească posibilitatea de a schimba contorul bucla doar cu 1 sau 1.

Matrice de date

O matrice este o colecție structurată a unui număr fix de elemente de același tip care sunt accesate prin intermediul unor indexuri. Elementele unei matrice se numesc variabile index. Prin numărul de indici care trebuie să fie specificați pentru accesul la un singur element al matricei, se disting unul bidimensional și unul bidimensional. n-dimensionale. Cerințele pentru indexuri sunt diferite în diferite limbi algoritmice. În Pascal, indicele este o variabilă de tip ordinal.
Descrierea matricei conține numele matricei (identificatorul), principiul indexării elementelor (intervalul modificărilor indexului) și tipul elementelor de matrice.
VAR ім'я_масиву>: Intervale ARRAY ale modificărilor indexului> OF type_date>;
O matrice este numită o tabelă unidimensională (liniară) dacă este disponibil un singur index pentru a accesa elementele sale.
De exemplu, o matrice unidimensională de 8 numere reale în Pascal poate fi declarată astfel:
• Numele VAR: ARRAY [1..8] OF real;
• Const N = 8;
Numele VAR: ARRAY [1..N] OF real;
• TIP MASSIV = ARRAY [1..8] din real;
Numele VAR: MASSIV;
O matrice se numește o matrice bidimensională (matrice), dacă trebuie să specificați valorile a doi indici pentru a accesa elementele sale. Primul index indică numărul liniei, iar al doilea indică numărul coloanei din acest rând.
Atunci când se alocă memorie în partea descriptivă a programului, spațiul este rezervat unui matrice, așa cum prevede numărul specificat de elemente ale matricei, luând în considerare tipul elementelor. Limitele modificărilor indexului trebuie să fie constante, nu variabile, altfel nu se va ști cât spațiu trebuie alocat în memorie pentru o astfel de matrice.
În memoria calculatorului, elementele de rețea unidimensionale sunt aranjate în serie. Dispozitivele bidimensionale sunt aranjate în acest fel: mai întâi elementele primului rând, apoi cel de-al doilea și așa mai departe.
Lucrul cu măștile poate fi împărțit în trei părți:
• formarea matricelor;
• dezvoltarea matricei;
• ieșirea matricei.
Formarea unei matrice. Valorile elementelor matrice pot fi formate în felul următor:
• Valorile de intrare ale elementelor de matrice de la tastatură sau dintr-un fișier;
• formarea aleatorie a valorilor, folosind funcția Generator de numere aleatoare Random;
• Calculați valorile elementelor matrice după formule.
Procesarea array-urilor. Sarcinile clasice pentru lucrul cu mese pot fi numite:
• căutarea unui element dat în matrice;
• găsirea sumei (produsului) elementelor matrice;
• căutați elementul maxim (minim) din matrice;
• Aranjarea matricei pe baza caracteristicilor (de exemplu, în ordine ascendentă sau descendentă etc.).
Una dintre cele mai dificile sarcini este ordonarea elementelor matrice. Pentru a rezolva această problemă, există mai mulți algoritmi.
Sortați după alegere:
1. Setați numărul celui mai mare element al matricei.
2. Schimbați cel mai mare și ultimul element.
3. Repetați 1 și 2 deasupra restului matricei (fără ultimul element).
Aplicați această metodă la elementele matricei care rămân până când restul este redus la un element.
În mod similar, sortarea prin alegere poate fi aplicată celui mai mic element, schimbându-l cu primul. Ca rezultat, vom obține în continuare secvența de elemente de matrice în creștere (fără modificări).
Schimbul de schimb ("bubble"):
1. Comparați două elemente adiacente.
2. Dacă perechea întrerupe ordinea dorită, elementele sunt schimbate.
Comparația are loc până la sfârșitul matricei. Schimbul este efectuat până când trecerea prin matrice nu provoacă schimburi.
Există și alte metode pentru sortarea matricelor: metoda de setare, sortarea rapidă etc.
Array de ieșire. Puteți afișa ieșirea elementelor dintr-o matrice unidimensională pe un ecran pe linie:
Pentru i: = 1 până la n nu Scrieți (mas [i]);
sau într-o coloană:
Pentru i: = 1 până la Writeln (mas [i]).
Pentru a scoate elemente dintr-o matrice bidimensională sub forma unei mese bidimensionale (matrice), puteți folosi această construcție:
Pentru i: = 1 până la n
începe
Pentru j: = 1 până la m
Scrieți (mas [i, j]);
writeln;
Sfârșit.

Lucrul cu informații textuale