Pentru afișarea rezultatelor se folosește un operator. TurboPascal

Dacă vă amintiți, luând în considerare un exemplu de operator de atribuire, ne-am confruntat cu nevoia de a afla rezultatul execuției programului. Ne-am dat seama cum să stocăm informațiile (în variabile), cum să o procesăm (folosind expresii), dar două dintre cele mai fundamentale procese informaționale au fost lăsate în afara atenției noastre: primirea informațiilor și transmiterea acesteia către lumea exterioară computerului. Până acum, programele noastre pot folosi doar informații care se află direct în textul programului. Află ce valori acest moment de asemenea, nu a fost posibil să aibă variabile. Programarea în astfel de condiții este lipsită de sens.

Interacțiunea dispozitivelor de procesare și stocare a informațiilor cu mediul extern (cel puțin cu utilizatorul) este absolut necesară. Pentru o astfel de interfață în limbajul Pascal, sunt responsabili operatorii de intrare-ieșire a informațiilor. Aceste instrucțiuni vă permit să introduceți argumente, parametri de calcul în timpul execuției programului (și nu în stadiul scrierii acestuia), pentru a afișa datele calculate într-o formă pe care o persoană poate înțelege.

Primele instrucțiuni de intrare (formate de instrucțiuni):

Citit(<Список ввода>);

Readln(<Список ввода>);

În acest format, aceste comenzi vă permit să introduceți date în variabile în timpul execuției programului de la tastatură. Elementele listei de intrare pot fi nume de variabile, care trebuie completate cu valorile introduse de la tastatură.

Execuția instrucțiunilor de intrare are loc astfel: programul este suspendat, cursorul este afișat pe ecran, computerul așteaptă de la utilizator un set de date pentru variabilele ale căror nume sunt specificate în lista de intrare. Utilizatorul de la tastatură introduce valorile necesare în ordinea în care sunt solicitate de lista de introducere, apăsați Enter. După aceea, datele tastate intră în variabilele corespunzătoare acestora și execuția programului continuă.

Notă: datele de intrare sunt separate prin spații.

Diferența dintre funcționarea procedurilor Read și Readln (din linia Readln) este următoarea: după executarea Readln, valoarea următoarelor date este citită de pe aceeași linie, iar după executarea Readln, de pe o linie nouă.

Pentru a afișa informații în Pascal, există și două comenzi:

Scrie(<Список вывода>);

scris(<Список вывода>);

Acest format de utilizare Write and Writeln vă permite să afișați datele din lista de ieșiri pe ecranul monitorului. Elementele listei de ieșire pot fi nume de variabile, expresii, constante. Înainte de a afișa valorile expresiilor, computerul calculează mai întâi. Elementele listei, precum și în instrucțiunile de intrare, sunt separate prin virgulă.

Diferența dintre cele două instrucțiuni de ieșire este următoarea: după executarea instrucțiunii Writeln (din linia Write), aceasta sare la linie nouă, iar după executarea instrucțiunii Write, trecerea la o nouă linie nu are loc și imprimarea la comenzile de ieșire Write sau Writeln ulterioare va avea loc pe aceeași linie. Când apelați instrucțiunea Writeln fără parametri, pur și simplu sare la o nouă linie.

Iată un exemplu de utilizare a operatorilor de intrare și de ieșire:

Interfata programului;

Write("Introduceți raza cercului"); (Se imprimă pe ecran solicitând introducerea)

readln(R); (Introducerea unei valori în variabila R de la tastatură)

S:=4*ARCTAN(1)*SQR(R); (Calculați aria unui cerc (pR2))

Writeln ("Aria unui cerc cu raza ",R," este egală cu ",S)

Acest program solicită utilizatorului raza unui cerc, oferă posibilitatea de a introduce valoarea acestuia, calculează și afișează aria unui cerc cu o astfel de rază. Astfel, devine posibil, fără a face modificări textului programului, să introduceți diverse valori ale razei și să obțineți valorile corespunzătoare ale zonei cercului. Pentru a face acest lucru, este suficient să rulați programul de mai multe ori. Acest program demonstrează, de asemenea, următoarea regulă: rezultatul rezultatelor trebuie comentat astfel încât sensul numerelor tipărite să fie clar. Într-adevăr, ar fi posibil să se limiteze la Writeln(S), dar semnificația numărului scos de program în acest caz ar fi clar doar pentru cel care a scris acest program.

OPERATORI DE INTRARE SI IESIRI

Să luăm în considerare organizarea intrării și ieșirii datelor de la dispozitivul terminal. Un dispozitiv terminal este un dispozitiv cu care lucrează un utilizator, de obicei un ecran (afișaj) și o tastatură. Pentru intrarea și ieșirea datelor, sunt utilizate procedurile standard de intrare și ieșire Citire și scriere, care funcționează cu fișiere secvențiale standard INPUT și OUTPUT.

Aceste fișiere sunt împărțite în linii de lungime variabilă, separate între ele printr-un terminator de linie. Sfârșitul liniei este setat prin apăsarea tastei ENTER.

Pentru introducerea datelor inițiale se folosesc operatori de proceduri de introducere:

Citiți(A1,A2,...AK);

ReadLn(A1,A2,...AK);

Prima dintre ele implementează citirea valorilor K ale datelor inițiale și atribuirea acestor valori variabilelor A1, A2, ..., AK. Al doilea operator implementează citirea valorilor K ale datelor inițiale, sărind valorile rămase până la începutul liniei următoare, atribuind valorile citite variabilelor A1, A2, ..., AK. Al treilea operator implementează omiterea liniei de date de intrare.

La introducerea datelor inițiale, o transformare din formă exterioară reprezentări într-una internă determinată de tipul de variabile. Variabilele care alcătuiesc lista de intrare pot fi de tip întreg, real sau de tip caracter. Citirea datelor brute de tip boolean în PASCAL nu este permisă.

Instrucțiunile de intrare, la citirea valorilor variabilelor de tip întreg și real, omit spațiile care preced numărul. În același timp, acești operatori nu omit spațiile care preced valorile variabilelor caracter, deoarece spațiile sunt caractere egale în șiruri. Un exemplu de scriere a instrucțiunilor de intrare:

var rV, rS: Real;

iW, iJ: întreg;

................

Citiți (rV, rS, iW, iJ);

Valorile datelor inițiale pot fi separate între ele prin spații și prin apăsarea tastelor Tab și Enter.

Pentru a afișa rezultatele programului pe ecran, se folosesc următoarele afirmații:

Scrie(A1,A2,...AK);

ScrieLn(A1,A2,...AK);

Primul dintre acești operatori implementează ieșirea valorilor variabilelor A1, A2,...,AK la linia ecranului. Al doilea operator implementează ieșirea valorilor variabilelor A1, A2, ..., AK și trecerea la începutul liniei următoare. Al treilea operator implementează un salt de linie și o tranziție la începutul liniei următoare.

Variabilele care alcătuiesc lista de ieșire pot fi de tipuri întregi, reale, caractere sau booleene. Ca element al listei de ieșire, pe lângă numele variabilelor, pot fi folosite expresii și șiruri de caractere.

Ieșirea fiecărei valori într-o linie a ecranului are loc în conformitate cu lățimea câmpului de ieșire, determinată de implementarea specifică a limbajului.

Forma de reprezentare a valorilor în câmpul de ieșire corespunde tipului de variabile și expresii: valorile de tip întreg sunt scoase ca numere zecimale întregi, tipul real - ca numere zecimale reale cu ordine zecimală, tipul de caractere și șirul - ca simboluri, de tip boolean - ca constante logice TRUE și FALSE.

Declarația de ieșire vă permite să setați lățimea câmpului de ieșire pentru fiecare element din lista de ieșire. În acest caz, elementul listă de ieșire are forma A:K, unde A este o expresie sau un șir, K este o expresie sau o constantă de tip întreg. Dacă valoarea de ieșire ocupă mai puține poziții în câmpul de ieșire decât K, atunci spații sunt plasate înaintea acestei valori. Dacă valoarea afișată nu se încadrează în lățimea câmpului K, atunci numărul necesar de poziții va fi alocat pentru această valoare. Pentru valorile de tip real, elementul listei de ieșire poate fi de forma A:K:M, unde A este o variabilă sau expresie de tip real, K este lățimea câmpului de ieșire și M este numărul de cifre ale părții fracționale a valorii de ieșire. K și M sunt expresii sau constante de tip întreg. În acest caz, valorile reale sunt afișate ca număr zecimal cu virgulă fixă. Un exemplu de scriere a instrucțiunilor de ieșire:

. . . . . . . . . . . .

var rA, rB: Real; iP,iQ:Integer;

bR, bS: boolean; chT, chV, chU, chW: Char;

. . . . . . . . . . . .

WriteLn(rA, rB:10:2);

WriteLn(iP, iQ:8);

ScrieLn(bR, bS:8);

WriteLn(chT, chV, chU, chW);

Etichete. Operator de sărituri necondiționat.

Fiecare casă de pe stradă are propriul număr, toți oamenii au numele lor, chiar și celulele de memorie ale computerului au fiecare adresa lor. Toate acestea sunt acceptate pentru a putea indica fără ambiguitate obiectul care se definește. În mod similar, etichetele sunt folosite pentru a se referi la instrucțiuni din programe.

Eticheta din standardul de limbaj Pascal este un număr întreg nenegativ. Toate etichetele utilizate în program trebuie să fie listate în secțiunea descriere a etichetei, care începe cu cuvântul cheie Label, de exemplu:

Un singur operator poate fi etichetat cu o singură etichetă. Eticheta este separată de declarația etichetată prin două puncte.

6: WriteIn(14/2);

În toate programele de mai sus, instrucțiunile au fost executate una după alta în ordinea în care au fost scrise în text. O astfel de structură algoritmică se numește urmărire directă. Cu toate acestea, în limbajul Pascal, există inițial un operator care încalcă execuția simplă a programului, transferând controlul într-un punct arbitrar al acestuia. O astfel de instrucțiune se numește ramură necondiționată și are următorul format:

mergi la<метка>;

Declarația la care are loc tranziția trebuie marcată cu această etichetă.

Utilizați operatorul necondiționat de ramură cu grijă extremă pentru a evita obținerea de rezultate eronate sau „în buclă” completă a programului. În general, utilizarea acestei comenzi în rândul programatorilor este considerată o formă proastă. După cum veți vedea, există întotdeauna posibilitatea de a face fără ea.

ELEMENTE DE PROGRAMARE STRUCTURALĂ

Un program structurat (sau subrutină) este un program alcătuit dintr-un set fix de constructe de bază. Să luăm în considerare principalele definiții și modalități de formare a acestor construcții în schemele algoritmice.

Operațiunile, furcăturile și fuziunile formează structurile de bază: urmărire, ramificare, ciclu. Folosind doar aceste trei construcții, este posibil să se implementeze un algoritm pentru rezolvarea oricărei probleme.

Construcția, care este execuția secvențială a două sau mai multe operații, se numește următoarea.

O construcție care constă dintr-o furcă, două operații și o îmbinare se numește ramură. Este posibil să lipsească una dintre operații.

O structură care are linii de control care duc la operațiuni anterioare sau bifurcări se numește ciclu.

Construcțiile follow, branch și loop pot fi considerate operații, deoarece au o singură intrare și o singură ieșire. O secvență arbitrară de operații poate fi reprezentată ca o singură operație.

O operație poate fi implementată prin orice instrucțiune PASCAL (simpluă sau compusă) sau printr-un grup de instrucțiuni, cu excepția instrucțiunii de tranziție GOTO.

În limbajul PASCAL, numărul structurilor de bază a fost crescut la șase, acestea sunt:

Urma;

ramificare;

Bucla cu precondiție;

Bucla cu postcondiție;

Buclă cu parametru;

Operator condiționat

Una dintre principalele structuri algoritmice este ramificarea (alternativă).

Dacă condiția este îndeplinită, atunci instrucțiunea „1” va fi executată, dacă nu, atunci instrucțiunea „2” va fi executată. Chiar dacă există două acțiuni în schemă, doar una va fi executată deoarece condiția este fie falsă, fie adevărată. Nu există a treia. O astfel de schemă permite rezolvarea problemelor în care, în funcție de circumstanțe, este necesară una sau alta acțiune. Nu există nicio îndoială că numărul de probleme de acest gen este enorm. Mai mult, este foarte dificil să vină cu o sarcină cu adevărat semnificativă, al cărei algoritm de execuție ar conține o simplă urmărire directă a comenzilor. Nici măcar un exemplu primitiv luat dintr-un curs de matematică, după cum veți vedea, nu poate fi rezolvat fără ramificare. Deci, este necesar să se calculeze valoarea expresiei y=1/x. Tu stii asta funcţie dată nu contează întotdeauna, adică nu toate valorile argumentului au o valoare de rezultat. Sarcina noastră este să compunem algoritmul în așa fel încât interpretul să nu se blocheze în niciun caz, chiar și atunci când primește zero ca argument. Nu este dificil să formulezi acest lucru în limbaj natural:

1. Obțineți valoarea x.

2. Dacă x=0, atunci raportați că expresia nu are valoare, în caz contrar, calculați y ca 1/x.

Astfel, se utilizează structura algoritmică de mai sus. Se poate exprima în cuvinte simple:

Dacă<усл.>(Dacă condiția este îndeplinită)

Acea<действие 1>(apoi efectuează acțiunea #1)

in caz contrar<действие 2>(în caz contrar - efectuați acțiunea #2)

Cum se scrie în Pascal? Da, exact la fel, doar in engleza.

Format de operator condiționat în Pascal:

Dacă<условие>

Apoi<оператор 1>

Altfel<оператор 2>;

Rețineți că există o singură declarație în părțile Then- și Else-parts. Dar ce ar trebui făcut pentru a rezolva o problemă în care, la îndeplinirea sau neîndeplinirea unei condiții, este necesar să se efectueze nu una, ci mai multe acțiuni? Aici vine în ajutor operatorul compus pe care îl cunoști deja. Parantezele operatorului pot include orice număr de operatori.

Varianta operatorului condiționat în acest caz:

Dacă<условие>

Apoi Începe<группа операторов 1>Sfârşit

Altfel Începe< группа операторов 2>Sfârşit;

Semnul „punct și virgulă” nu este plasat înaintea cuvântului de serviciu Else, dar operatorii din grupuri sunt separați în mod natural unul de celălalt prin acest semn.

Acum să vorbim despre condiții. În programele Pascal, condițiile sunt expresii a căror valoare este o valoare booleană. Poate fi fie o variabilă simplă de tipul specificat, fie o secvență complexă de instrucțiuni conectate prin operații logice.

În condiții simple se pot utiliza semne ale operațiilor de comparare: > (mai mare decât),<(меньше), =(равно), <>(nu este egal), >=(mai mare sau egal),<=(меньше или равно).

Exemple de condiții simple: A=5 (Valoarea variabilei A este 5)

(C+D3)>=(D1*(45-2)) (Valoarea expresiei din partea stângă este mai mare sau egală cu valoarea expresiei din partea dreaptă)

S<>„ABC” (valoarea variabilei S nu este egală cu constanta șir „ABC”)

Să dăm un exemplu de rezolvare a unei alte probleme: „Din două numere, alegeți cel mai mare”.

La prima vedere, soluția este evidentă, dar nu este atât de banală pe cât pare.

Exemplu de program;

VarA,B,C: Real; (A,B - pentru a stoca argumente, C - rezultat)

Writeln("Introduceți două numere");

ReadIn(A,B); (Introduceți argumente de la tastatură)

Dacă A>B Atunci C:=A Altfel C:=B; (Dacă A>B, atunci rezultatul este A, în caz contrar rezultatul este B)

scrieln(C); (Pune rezultatul pe ecran)

Un alt exemplu clasic: „Rezolvați o ecuație pătratică folosind coeficienții dați”. Această sarcină este mai dificilă, prin urmare, înainte de a scrie programul, vom compune un algoritm scriindu-l sub formă de diagramă.Mai întâi introducem coeficienții, apoi calculăm discriminantul. Acum apar două posibilități: fie absența rădăcinilor reale în cazul unui discriminant negativ, fie aceste rădăcini pot fi încă calculate și afișate în cazul unui discriminant nenegativ (cazul discriminantului fiind egal cu zero este inclus aici , sunt doua radacini, doar ca sunt acelasi J).

Când scrieți un algoritm într-un limbaj de programare, trebuie să țineți cont de faptul că în ramura „nu” nu există o acțiune, ci trei, prin urmare, trebuie utilizat un operator compus. Nu uitați să scrieți expresii aritmetice în conformitate cu regulile limbajului Pascal. În caz contrar, acest program nu este mai complicat decât cel anterior.

Var A, B, C, D, X1, X2: Real;

Writeln("Introduceți coeficienții ecuației pătratice");

Daca D<0 Then Writeln ("Корней нет! ")

X1:=(-B+SQRT(D))/2/A;

X2:=(-B-SQRT(D))/2/A;

Interesant este că un operator condiționat poate acționa ca un operator care este executat atunci când o condiție este îndeplinită sau nu. În acest caz, se vorbește de declarații condiționale imbricate. Când rezolvați astfel de probleme, vă recomand cu tărie să întocmiți o diagramă a algoritmului într-un caiet. Numai atunci, atunci când compilați un program, trebuie doar să scrieți cu atenție mai întâi întreaga parte Then, apoi să treceți la partea Else. De obicei, când se scriu instrucțiuni condiționale în Pascal (în special cu mai multe ramuri), comenzile sunt scrise cu o margine în dreapta și în jos. Acest lucru crește vizibilitatea și, credeți-mă, reduce timpul de depanare.

Pentru a ilustra, haideți să rezolvăm o altă problemă: „rezolvați o ecuație de forma A*x^2 + B*x + C = 0”. Vă rugăm să nu confundați cu ecuația pătratică, pentru care știam că coeficientul A nu este egal cu zero. Aici, coeficienții pot fi orice numere. Pe baza raționamentului matematic elementar, obținem următorul algoritm:

Var A, B, C, D, X, X1, X2: Real;

Writeln("Introduceți coeficienții ecuației (A, B, C)");

Dacă C=0, atunci scrieți n("X este orice număr")

Else Writeln ("Fără rădăcini!")

Else Begin X:=-C/B; Writeln("X=",X:8:3) Sfârșit

Daca D<0 Then Writeln ("Корней нет! ")

X1:=(-B+SQRT(D))/2/A;

X2:=(-B-SQRT(D))/2/A;

WriteIn("X1=", X1:8:3, "X2=",X2:8:3)

Ciclu. Tipuri de cicluri.

Un ciclu este o repetare repetată a aceluiași tip de acțiune. Corpul ciclului va fi numit chiar acțiunile care trebuie repetate de multe ori.

După cum înțelegeți, puteți repeta aceleași acțiuni folosind operatorul de salt necondiționat. Dacă scrieți aceste acțiuni în program una după alta, iar la sfârșit puneți o instrucțiune de salt la începutul acestui bloc. Cu toate acestea, în acest fel puteți obține doar un program care rulează pentru totdeauna (bucle). Acest lucru poate fi evitat prin utilizarea unei instrucțiuni condiționale împreună cu instrucțiunea de tranziție, făcând execuția tranziției dependentă de îndeplinirea unei anumite condiții. Astfel, vom obține structura tranziției condiționate și posibilitatea organizării ciclului final. În general vorbind, în acest fel putem rezolva aproape orice problemă care necesită implementarea unui algoritm ciclic. Desigur, cu un singur topor poți construi o casă. Să ne punem în față întrebările: „Oare această casă va fi frumoasă? Cât timp și efort se pot economisi folosind tot felul de unelte speciale?”. Pentru ce? - Pentru comoditate, concizie, ușurință în citirea programului și, nu mi-e frică de acest cuvânt, frumusețe. Deci, există trei tipuri de bucle care au proprii lor operatori Pascal pentru a le scrie. Aceste tipuri au propriile nume condiționale: „În timp ce”, „Înainte”, „Cu parametru”. Sunt oarecum diferiți unul de celălalt și sunt folosiți fiecare pentru propria sa clasă de sarcini.

Ciclul „La revedere”

Un grup de instrucțiuni, numit „corpul buclei”, conform acestei scheme, va fi executat în timp ce condiția buclei este adevărată. Bucla iese atunci când condiția nu mai este adevărată.

Dacă condiția este inițial falsă, atunci corpul buclei nu va fi niciodată executat. Dacă condiția este inițial adevărată și nu există acțiuni în corpul buclei care să afecteze adevărul acestei condiții, atunci corpul buclei va fi executat de un număr infinit de ori. Această situație se numește „buclă”. Un program în buclă poate fi întrerupt fie de către un operator (prin apăsarea Ctrl + C), fie printr-o oprire de urgență a programului propriu-zis, în cazul unui depășire variabilă, împărțire la zero, etc.

În Pascal, structura buclei while este scrisă după cum urmează:

In timp ce<условие>Do<оператор>;

Este chiar succint? În rusă, se poate citi astfel: „Atâta timp cât condiția este adevărată, executați declarația”. Aici, la fel ca în formatul de instrucțiune condiționată, este menită să fie executată o singură instrucțiune. Dacă trebuie efectuată mai mult de o acțiune, poate fi utilizată o instrucțiune compusă. Apoi, formatul operatorului ia următoarea formă:

In timp ce<условие>Do

<оператор #1>;

<оператор #2>;

<оператор #3>;

Ciclul „TO”

Acest tip de buclă diferă de precedentul în principal prin faptul că testul condiției de repetare a corpului buclei nu este înainte, ci după el. Prin urmare, bucla „Înainte” se numește bucla „postcondiție”, iar bucla „While” se numește bucla „precondiție”.

De asemenea, rețineți că o nouă iterație (re-execuția corpului buclei) are loc nu atunci când condiția este adevărată, ci doar atunci când este falsă. Prin urmare, bucla și-a primit numele (execută corpul buclei până când este îndeplinită condiția corespunzătoare).

10. Operatori de intrare și de ieșire

Luați în considerare organizarea intrării și ieșirii datelor de la terminal

roire. Dispozitivul terminal este dispozitivul cu care

utilizator, de obicei un ecran (afișaj) și o tastatură.

Procedurile standard de intrare sunt utilizate pentru introducerea și ieșirea datelor.

și ieșire Citire și Scriere care operează pe fișiere secvențiale standard

Intrare și ieșire.

Aceste fișiere sunt împărțite în linii de lungime variabilă separate prin

unul de celălalt printr-un semn al sfârșitului liniei.Sfârșitul liniei se stabilește prin apăsarea butonului

Pentru introducerea datelor inițiale se folosesc operatori de proceduri de introducere:

Citiți(A1,A2,...AK);

ReadLn(A1,A2,...AK);

Primul dintre ele implementează citirea K a valorilor datelor inițiale și atribuie-

scalarea acestor valori la variabilele A1, A2,...,AK. Al doilea operator

implementează citirea valorilor K ale datelor inițiale, sărind peste valorile rămase

până la începutul liniei următoare, atribuind valorile citite

variabila A1, A2, ..., AK. Al treilea operator implementează o linie folosind

date de intrare.

La introducerea datelor inițiale, o transformare dintr-un extern

reprezentarea se formează într-una internă determinată de tipul variabilelor. Pe-

variabilele care formează lista de intrare pot aparține fie unui număr întreg,

fie tipul real, fie tipul de caracter. Sursa de citire

Datele booleene nu sunt permise în PASCAL.

Operatori de intrare la citirea valorilor întregi și variabile

tipul real omite spațiile care preced numărul.

în același timp, acești operatori nu omit spațiile care preced valoarea

variabile caracter, deoarece spațiile sunt egale

caractere șir. Un exemplu de scriere a instrucțiunilor de intrare:

var rV, rS: Real;

iW, iJ: întreg;

................

Citiți (rV, rS, iW, iJ);

Valorile datelor de intrare pot fi separate unele de altele prin spații

și apăsând tastele fila și enter.

Pentru a afișa rezultatele programului pe ecran, utilizați

operatori:

Scrie(A1,A2,...AK);

ScrieLn(A1,A2,...AK);

Primul dintre acești operatori implementează ieșirea valorilor variabilelor A1,

A2,...,AK în linia ecranului.A doua instrucțiune implementează rezultatul

valorile variabilelor A1,A2,...,AK și trecerea la începutul următoarei

linii. Al treilea operator implementează un salt de linie și sări la început

rândul următor.

Variabilele care alcătuiesc lista de ieșire se pot referi la un număr întreg,

tipuri reale, caractere sau booleene. Ca element

în lista de ieșiri, pe lângă numele variabilelor, pot fi folosite expresii

și linii.

Ieșirea fiecărei valori într-o linie a ecranului are loc în conformitate cu

cu o lățime a câmpului de ieșire specifică implementării

Forma de reprezentare a valorilor în câmpul de ieșire corespunde tipului

curele și expresii: valorile de tip întreg sunt afișate ca zecimi întregi

numere reale, tip real - ca zecimale reale

numere cu ordine zecimală, tip de caracter și șir - sub formă de caracter

boi, de tip logic - sub forma unor constante logice TRUE și FALSE.

Operatorul de ieșire vă permite să setați lățimea câmpului de ieșire pentru fiecare

element din lista de ieșire.În acest caz

elementul listă de ieșire are forma A:K, unde

A este o expresie sau un șir, K este o expresie sau o constantă de tip întreg.

Dacă valoarea de ieșire ocupă mai puține poziții în câmpul de ieșire decât K,

atunci sunt spatii inaintea acestei valori.Daca valoarea de iesire este

nu se încadrează în lățimea câmpului K, atunci pentru această valoare răspunsul va fi

numărul necesar de posturi. Pentru valori de tip real

un element din listă de ieșire poate fi de forma A: K: M, unde A este o variabilă sau o expresie

tip real, K - lățimea câmpului de ieșire, M - numărul de cifre

parte fracțională a valorii afișate.K și M - expresii sau constante

tip întreg. În acest caz, valorile reale sunt scoase sub formă

număr zecimal cu un punct fix.

Un exemplu de scriere a instrucțiunilor de ieșire:

. . . . . . . . . . . .

var rA, rB: Real;iP,iQ:Integer;

bR, bS: Boolean;chT, chV, chU, chW: Char;

. . . . . . . . . . . .

WriteLn(rA, rB:10:2);

WriteLn(iP, iQ:8);

ScrieLn(bR, bS:8);

O analiză suplimentară a operatorilor limbajelor de programare de nivel înalt va fi efectuată folosind exemplul limbajului Pascal. Această alegere se datorează simplității limbajului și sintaxei stricte.

Operatori de atribuire

În Pascal, operatorul de atribuire este notat cu două caractere „:=", între care nu există spațiu. Partea stângă a acestei instrucțiuni ar trebui să conțină o variabilă, iar partea dreaptă ar trebui să conțină o expresie a cărei valoare va fi atribuită variabilei.

Foarte des în Pascal puteți vedea construcția formei p:=p+1. Această intrare nu conține o eroare. În interiorul computerului, această instrucțiune se execută astfel: mai întâi se ia valoarea inițială a variabilei, la care se adaugă una. După aceste acțiuni, rezultatul calculelor este plasat în variabila p. Astfel, incrementul variabil este implementat în Pascal.

Este foarte important să vă asigurați că toate variabilele care participă în partea dreaptă a instrucțiunii de atribuire au fost definite până la momentul executării acesteia. Operatorii de atribuire folosesc expresii aritmetice constând din variabile, constante, semne operator, paranteze și apeluri de funcții ca părți din dreapta pentru a calcula variabile numerice. În cazul general, regulile de construire a expresiilor sunt similare cu notația matematică. Operațiile binare aplicabile datelor întregi sunt prezentate în Tabelul 1.

Pentru un exemplu de implementare a operației de atribuire, luați în considerare problema calculării ipotenuzei unui triunghi din două catete cunoscute. Conform teoremei lui Pitagora, ipotenuza va fi calculată folosind formula:

Tabelul 1 - Operații aritmetice binare pe tip întreg

Cod sursa programului:

Program Op_prisv;

c:=sqrt(a*a+b*b);

Acest program folosește numai operatori de atribuire. În acest caz, în două cazuri, valoarea inițială este pur și simplu atribuită variabilelor - acestea sunt catetele triunghiului. Și în al treilea caz, se calculează o expresie care determină rădăcina sumei pătratelor catetelor.

Ca urmare a executării acestui cod, programul va calcula valoarea ipotenuzei unui triunghi cu laturile a, b și va stoca această valoare în variabila c.

Declarații I/O

Intrarea și ieșirea sunt necesare pentru ca programul să comunice cu lumea exterioară - astfel este posibil să primiți date de intrare de la utilizator și să afișați rezultatele pe ecran. Evident, un program fără ieșire nu are sens. În exemplul anterior, s-a luat în considerare calculul ipotenuzei unui triunghi dreptunghic, totuși, fără utilizarea operatorului de ieșire, este imposibil să se afle rezultatul obținut în timpul execuției programului.

În Pascal, instrucțiunile I/O sunt mai bine numite proceduri. Acestea servesc la schimbul de date între program și dispozitivele externe. Deci, de exemplu, puteți introduce date de la tastatură, dintr-un fișier, date de ieșire pe ecran sau într-un fișier.

Există doi operatori pentru introducerea de la tastatură în Pascal: Read și Readln. Pentru ieșire pe ecran - Write and Writeln. Adăugarea „ln” provine din cuvântul englez „line” - line, line. Operatorii care se termină în „ln” mută cursorul pe o nouă linie ca rezultat al acțiunilor lor. Deci, de exemplu, în timpul funcționării instrucțiunii Write, cursorul va rămâne în următoarea poziție după ultimul caracter imprimat. Și în cazul instrucțiunii Read, următoarele date vor fi citite de pe aceeași linie în care se află cursorul.

Înregistrarea tradițională a datelor operatorului conține parametri, totuși ei nu pot. În acest caz, instrucțiunea Writeln va implementa pur și simplu o nouă linie, iar instrucțiunea Readln va aștepta ca orice cheie să fie introdusă.

Pe lângă ieșirea standard, Pascal oferă și ieșire formatată, care există pentru a face afișarea mai ușor de înțeles pe ecran. Ieșirea formatată conține numărul de poziții care trebuie alocate valorii variabilei în timpul ieșirii.

Ca exemplu de utilizare a operatorilor I/O, modificăm problema determinării ipotenuzei unui triunghi dreptunghic după cum urmează:

Programul Op_vvod_vyvod;

scrie ("Picior a = ");

scrie ("Katet b = ");

c:=sqrt(a*a+b*b);

writeln("Hipotenuza = ",c:3:2);

writeln("Apăsați orice tastă pentru a termina...");

Acest program folosește operatori de introducere a datelor de intrare - catetele unui triunghi dreptunghic. Pentru a afișa rezultatul pe ecran, se folosește ieșirea formatată. Rezultatele programului sunt prezentate în Figura 9.


Figura 9 - Un exemplu de lucru cu instrucțiuni I/O

În plus, programul folosește instrucțiunea Readln fără parametri, care confirmă sfârșitul programului. Deci, după apăsarea oricărei taste, programul va afișa un mesaj că munca sa a fost finalizată (vezi Figura 10).


Figura 10 - Un exemplu de operator de intrare fără parametri

Operatorii sunt plasați în secțiunea operator între cuvinte cheie și sunt separați unul de celălalt prin punct și virgulă. Operatorii care nu conțin alți operatori se numesc simpli:

Operatorul de atribuire este cel mai elementar operator. Are o expresie pe partea dreaptă și indet. rezultatele sunt separate printr-un semn de atribuire:=

De exemplu: y:=x + 5 div 2

Instrucțiunea de apel de procedură este utilizată pentru a activa o procedură definită de utilizator sau standard. De exemplu: clrscr; etc.

O instrucțiune goală nu conține niciun caracter și nu efectuează nicio acțiune. De obicei, o instrucțiune goală este folosită pentru a sări la sfârșitul unui bloc local sau global în cazurile în care este necesar să săriți mai multe instrucțiuni, dar nu părăsiți blocul. Pentru a face acest lucru, sfârșitul cuvântului rezervat este precedat de o etichetă și două puncte.

Operatorul de salt necondiționat goto înseamnă „mergi la” și este folosit în cazurile în care, după executarea unui operator, este necesar să se execute nu următorul în ordine, ci un alt operator marcat cu o etichetă. Exemplu: gotometka1;

INTRARE/IEȘIRE DATE: procedură de citire Citire intrare de date numerice, caractere, șiruri de caractere etc. pentru procesarea ulterioară de către program. Format: citire(x1,x2,x3...); sau citiți (FV,x1,x2,x3...); , unde x1, x2, x3.. sunt variabile, FV este o variabilă asociată fișierului, de unde se va efectua citirea. Procedura de citire Readln este similară cu procedura Read, doar trecerea la următoarea linie este efectuată. Procedura de scriere Write produce date numerice, caractere, șiruri și valori booleene. Format: Scriere (x1,x2,x3...); sau Scrie (FV,x1,x2,x3...);

unde x sunt variabile, FV este numele fișierului în care este produsă rezultatul.Writeln este un transfer de linie.

26. Operatori de introducere a datelor de la tastatură.

Read("lista de variabile");

Readln("lista de variabile");

Write("Introduceți valoarea a="); readln(a);

introduceți valoarea a= .

readln(a); readln(b); readln(c); sau Readln(a, b, c);

Readln(c1, c2, c3, c4); (așteptând să introduceți valorile variabilelor simbolice c1, c2, c3, c4, de exemplu: „U”, „P”, „A”, „!” și apăsând Enter )

Scrieți(c1, c2, c3, c4); va afișa inscripția: Ura!

27. Operatorul ales.

Caz „parametru” Of

„lista operatorilor marcați”

Else „afirmație” Sfârșit;

Un exemplu de operatori pentru determinarea ordinii unui întreg N de la 0 la 999:

0..9: writeln("unu-la-unu");

10..99: writeln("două cifre");

100..999: writeln(„trei cifre”)

else writeln("Numărul "N" nu este în intervalul specificat") end;

28. Operator condiționat.

IF „condiție” Apoi „afirmație1” Altfel „afirmație2”;

De exemplu, calculul rădăcinii pătrate a numărului „a” se efectuează cu condiția a>=0,

DACĂ a >= 0 Atunci b:= Sqrt(a) Altfel începe WriteLn("a<0"); Readln; Halt end;

Instrucțiunea Halt încheie execuția programului.

29. Operator ciclu.

Cu parametru

Pentru i:= N1 To N2 Do "statement";

Pentru i:= N1 DownTo N2 Do "statement";

Cu conditie

În timp ce „condiție” DO „afirmație”;

Repetați „afirmațiile” Până la „condiție”;

„condiție” este o expresie de tip boolean.

30 .Săriți la operatorul de etichetă.

mergeți la „etichetă”;

M1: Scrie ("Introduceți x>=0"); readln(x); Dacă x<0 Then Goto M1;

Etichetele sunt descrise în secțiunea de descriere, de exemplu: Eticheta M1;

31.Matrice liniare.

Descrierea matricelor:

VarA:matrice[ 1. .30 ] de octet;

S: matrice[ 1. . 30] de sfoară;

SO:matrice[ 1. . 30 ]ofstring;

Atribuirea valorilor elementelor matricei:

A:= 5; A:= 4; etc.

S:= „Ivanov”; S:= „Petrov”; etc.

Atribuirea unei valori elementelor matricei „y” prin dependență:

y=sin(x), unde x= Pi * i/180, 0<= i <=180 .

Pentru i:= 0 la 180 Do y[i]:= sin(Pi * i/180);

Atribuirea de valori aleatoare în intervalul de la -30 la +40 sute de elemente ale matricei „R”:

randomizare; pentru i:=1 la 100 Do R[i]:= - 30+Random(71);

Laborator scop A munca spinoasa: învață cum să descrii corect variabile folosind următoarele tipuri de date standard: întreg. real și logic; studiați operatorii de intrare-ieșire a datelor, dezvoltați abilități practice în lucrul cu sistemul PascalABC, învățați cum să creați, să intrați într-un computer, să executați și să corectați programe simple în limbajul Pascal în modul de dialog, să faceți cunoștință cu mesajele de diagnostic ale compilatorului despre erori la execuție programe care implementează algoritmi liniari.

Un operator este un set special de cuvinte de serviciu, identificatori și caractere speciale care efectuează anumite acțiuni. Operatorii sunt separați unul de celălalt prin punct și virgulă „;”. Exemple de difuzoare.

Operator de atribuire: (:=). Operatorul de atribuire este utilizat pentru a atribui valori variabilelor, de exemplu: x:=1; a:=5. 02; b:= 32*a+Sin(x); S:= „Ivan Ivanovici”.

Declarație compusă: Începe<операторы>Sfârşit;

O declarație compusă este folosită pentru a înregistra alte declarații în corpul său, a căror secvență este considerată în acest caz ca o singură declarație. Această instrucțiune începe și termină secțiunea de execuție a programului principal, subrutinei, funcției. Ultima instrucțiune END a programului principal este urmată de un punct.

    1. Instrucțiuni de intrare/ieșire a datelor

Patru operatori sunt utilizați pentru a efectua operațiuni I/O:

Citește, CiteșteLn, Scrie, ScrieLn. Instrucțiunea Read oferă date numerice, caractere, șiruri de caractere și așa mai departe. pentru procesarea ulterioară de către program.

Format: Citire(X1, X2, .. , Xn), unde X1, X2, .. , Xn sunt variabile ale unor tipuri de date valide.

Valorile X1, X2, .., Xn sunt tastate de către utilizator cu cel puțin un spațiu una dintre ele și afișate pe ecran. Valorile variabile trebuie introduse în strictă conformitate cu sintaxa limbii. Dacă programul are mai multe instrucțiuni Read, datele pentru acestea sunt introduse într-un flux, adică după citirea valorilor variabilelor pentru o instrucțiune Read, datele pentru următoarea instrucțiune Read sunt tastate pe aceeași linie ca și pentru cea anterioară. unul până la sfârșitul liniei, apoi are loc trecerea la următoarea linie. Operatorul ReadLn este similar cu operatorul ReadLn, singura diferență este că după citirea ultimei valori din listă pentru un operator ReadLn, datele pentru următorul operator ReadLn vor fi citite de la începutul unei noi linii.

Instrucțiunea de scriere (Write) produce date de ieșire.

Format: Write(X1, X2, .. , Xn), unde X1, X2, .. , Xn sunt expresii de tip întreg, octet, real, char, boolean etc.

Exemplu: Write(125); (expresie reprezentată prin valoare)Scrie(A+B-C); (este afișat rezultatul expresiei).

Instrucțiunea Write vă permite să afișați valorile variabilelor în următoarele moduri.

    Ieșirea reprezentării zecimale a valorii I, începând de la poziția cursorului (I):

    Emiterea reprezentării zecimale a valorii I în pozițiile extreme din dreapta ale câmpului de lățime p (I:p):

Unde ַ este un spațiu.

3. Afișarea reprezentării zecimale a valorii I în pozițiile extreme din dreapta ale câmpului cu lățimea p și a părții fracționale a numărului cu lățimea q(I:p:q):

Operatorul WriteLn este similar cu operatorul Write, dar după ce este afișată ultima valoare din listă pentru operatorul WriteLn curent, cursorul se deplasează la începutul liniei următoare. Instrucțiunea WriteLn, scrisă fără parametri, provoacă un avans de linie.

Dacă nu există suficiente poziții pentru ieșire, numărul sau textul este afișat în întregime, iar formatul este ignorat, cu excepția formatului de ieșire al părții fracționale a numărului. Dacă formatul de ieșire nu este setat, atunci valorile variabilelor întregi și șir sunt afișate în întregime, iar cele reale - cu numărul de cifre corespunzător tipului de variabilă, de exemplu,

a:=5,12345678912345678912345; WriteIn("a=", a); va afișa legenda.



Se încarcă...
Top