tipuri și operațiuni de conversie pe ele
După cum sa menționat deja, tipul de variabilă vă permite nu numai să stabilească durata reprezentării sale interne, dar, de asemenea, pentru a monitoriza acțiunile care sunt efectuate pe el în program. Controlul asupra utilizării variabilelor în etapa de elaborare a programului - un avantaj important față de alte limbaj de programare Turbo Pascal, care poate fi de tip conversii automate. Turbo Pascal, aproape imposibil de implicite (automate) tipuri de conversie. O excepție se face numai în ceea ce privește constante și variabile de tip INTEGER (numere întregi) care pot să le utilizeze în termeni de tip REAL (real). Dacă, de exemplu, variabilele X și Y sunt descrise după cum urmează:
sintactic este corectă: în timp ce dreptul semnului de atribuire reprezintă expresia număr întreg, iar în stânga - o variabilă reală, compilatorul va face automat conversiile necesare. În același timp, operatorul
Acesta va fi incorectă, deoarece REAL automată tip de conversie (constanta 2.0 conține un punct zecimal, și, prin urmare, face parte din tipul real) în tipul INTEGER în Turbo Pascal interzisă.
De exemplu, operatorul va fi greșit
Conceptul de funcție în Turbo Pascal este aproape de conceptul procedurii. Ca o procedură, o funcție este numită prin numele său, și poate conține orice număr de declarații Turbo Pascal, și chiar proceduri și funcții interne. Esențial Funcția de diferență a procedurii este faptul că funcția are propria semnificație și, prin urmare, poate fi utilizat interschimbabil cu variabilele din expresiile de tipul corespunzător.
Pentru a converti tipul de date CHAR (caracter) într-un întreg ORD destinat funcției, inversul transformare Integer CHAR o funcție următoare CHR.
Cu ajutorul următorului program simplu (Exemplul 2.3) Puteți găsi codul intern de caracter arbitrar.
Codul intern acest simbol nepotrivit>
Scrieți ( „Introduceți orice caracter:“);
Notă: atunci când apelați
al treilea parametru funcții de manipulare a apelurilor specificate ORD (CH). că, din punctul de vedere al limbii este o expresie; după cum vom vedea mai târziu (a se vedea. Capitolul 8), în multe cazuri, atunci când apelați proceduri și funcții ca parametri suplimentari pot fi specificate nu numai variabile sau constante, ci expresia participării lor.
După cum este necesar, vom face cunoștință cu celelalte funcții de conversie de tipuri de date, iar acum - pentru acele operațiuni care sunt permise pe diferite tipuri.
Desigur, în Turbo Pascal are toate cele patru operații aritmetice asupra variabilelor reale și INTEGER:
div - diviziune număr întreg.
Prezența a două operațiuni de divizare, mai există o manifestare a principiului fundamental al Turbo Pascal: programator trebuie să confirme în mod explicit compilatorului că este pregătită pentru consecințele posibile ale tipurilor de conversie. Dacă, de exemplu, în FORTRAN folosi expresia 1/2. rezultatul acestei expresii va depinde de ce tip de variabilă va fi atribuită, în cazul în care N este o variabilă de tip întreg, iar X este real, atunci programul în atribuire Fortran
da o valoare de la 0 la N și 0,5 pentru X. In Turbo Pascal, aceasta nu este o ambiguitate: expresia 1/2 are întotdeauna o valoare de 0,5, și, prin urmare, operatorul
pur și simplu inacceptabil. În același timp, a permis în operatorul Turbo Pascal
simplul fapt de a folosi funcționarea DIV diviziune întreg indică faptul că programator în mod deliberat debarasează partea fracționară a rezultatului. (Sper ca cititorul va scuza artificialitate evidentă a acestor exemple, care este cauzată de dorința de a ilustra caracteristicile discutate ale limbii).
Pentru INTEGER tip de date în Turbo Pascal, există o altă operație MOD - obținerea restului unei diviziuni întregi. De exemplu:
Operațiunea off-line exponentiere Turbo Pascal, care, în mod evident, va provoca unele inconveniente în implementarea unor algoritmi numerici. Unii consolare poate fi prezența funcției inline SQR, restabilind pătratul valorii parametrului, în care rezultatul determină tipul de tipul parametrului.
Și mai mult un dezavantaj semnificativ Turbo Pascal: îi lipsește un tip integrat și operațiunile corespunzătoare de pe ea. În general, în ceea ce privește punerea în aplicare a diferitelor proceduri de calcul Turbo Pascal este considerabil inferior unor alte limbaje de programare, în special, același Fortran. În special, este mult mai săracă decât setul de funcții predefinite matematice (a se vedea. Cap. 4).
Atunci când se lucrează cu numere întregi pot fi utile două proceduri (în continuare în paranteze pătrate indică parametrii opționali):
Decembrie (X [N]) - reduce conținutul variabila X pentru expresia N (dacă N nu este specificat, 1); tipul de variabile X și expresia N - INTEGER (mai precis, de orice soi, vezi capitolul 4 ..);
INC (X [N]) - X crește până la o valoare N (dacă N nu este specificat, 1).
Deasupra siruri de caractere și simboluri definite doar operație - cuplarea două rânduri. Operația este indicată prin simbolul „+“. De exemplu, programul
Toate celelalte acțiuni pe siruri de caractere și sunt puse în aplicare cu ajutorul funcțiilor și procedurilor încorporate (a se vedea. Capitolul 4).
Și, în sfârșit, cu privire la operațiunile operațiilor relaționale și logice.
Deasupra REAL tip de date, integer, CHAR, Șirul care urmează operații relaționale (comparații) sunt definite:
<= - меньше или равно,
> = - mai mare sau egal.
În comparație operațiuni ar trebui să implice același tip de operanzi. O excepție se face din nou împotriva real si integer, care pot fi comparate între ele. Rezultatul aplicării operațiunii în legătură cu orice operand are tipul Boolean.
Compararea a două rânduri se realizează după cum urmează. Caractere șiruri sunt comparate în perechi unele cu altele, astfel încât primul caracter al primului rând este comparat cu primul caracter al doilea șir, al doilea caracter al primei linii - cu un al doilea simbol al doilea etc. Simbolurile sunt comparate prin compararea codurile lor în reprezentarea internă (a se vedea. Ch. 4). În cazul în care o linie este mai scurtă decât cealaltă, caracterele lipsă vor fi înlocuite cu zero. Raportul dintre primul disproportionata unul cu celălalt și o pereche de simboluri este luată ca raportul dintre cele două rânduri.
Atunci când se compară boolean tipul de date considerat acord intern Turbo Pascal, conform căreia FALSE este zero octet, un adevărat - unitate de octet în LSB. Rețineți că funcția ORD convertește la întreg, nu numai caracterele, ci și valorile logice, așa
Următoarele operații logice definite în Turbo Pascal:
nu - logic NU; sau - o logică OR;
și - logic; XOR - XOR.
La calcularea expresiei oricărui tip de prioritate de calcul se determină între paranteze distanțate, iar la absența lor - din tabelul. 2.1 (în ordinea priorității).
Tabelul Precedence 2.1 Operator