Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Proceduri de intrare/iesire

pascal



+ Font mai mare | - Font mai mic



Proceduri de intrare/iesire

In general, introducerea datelor se face de la tastatura, iar afisarea datelor se realizeaza pe ecran.



Procedurile read si readln - permit citirea datelor

read(<lista_de_variabile>) - permite introducerea uneia sau mai multor date in variabilele specificate,

readln(<lista_de_variabile>) - la fel ca read, iar dupa incheierea citirii, trecerea la un rand nou.

Obs.

- Datele numerice se separa prin spatii sau Enter,

- La citirea datelor de tip caracter, spatiul este considerat caracter,

- Read fara lista de variabile se foloseste pentru a  pastra fereastra de iesire pana la apasarea unei taste (in Pascal sub Dos),

Variabilele de tip logic nu pot fi citite.

Procedurile write si writeln - permit afisarea datelor si mesajelor

write(<lista_mesaje/variabile>)

writeln(<lista_mesaje/variabile>), dupa afisare se va trece la linie noua

Obs.

- Mesajele vor fi incadrate intre apostrofuri : write('nume student ', nume),

- Se poate specifica numarul de caractere pe care se face afisarea, write(litera:2), iar pentru numere reale, numarul total de pozitii ocupate, inclusiv punctul zecimal si numarul de zecimale : write(nota:5:2).

Instructiunile limbajului Pascal

Structuri de control

Limbajul Pascal a fost conceput pentru scrierea unor programme structurate, de aceea instructiunile reproduc structurile fundamentale ale programarii structurate.

Structura liniara (secventiala)

- Instructiunea de atribuire - evalueaza o expresie si atribuie valoarea acesteia unei variabile.

identificator_variabila :=expresie

- Instructiunea compusa - pentru a putea scrie mai multe instructiuni, care sa fie interpretate de compilator ca una singura, acestea se preced de begin, se despart prin ; si se finalizeaza cu end.

Exemplu : Stabilire a pretului ' de raft ', cunoscand valoarea de vanzare si procentul TVA.

Program pretr;

uses wincrt;

var  Procent_tva,Valoare:real;

begin

write('Procent_tva=');readln(Procent_tva);

write('Valoare=');readln(Valoare);

writeln('Pret =',(100+Procent_tva)/100*valoare:8:2);

end.

Structura alternativa

Instructiunea de selectie simpla IF - selecteaza o secventa de instructiuni dintre doua variante posibile, in functie de o anumita conditie.

Sintaxa:
if cond then
   instr1
else
   instr2;

Obs. Ramura cu else este optionala.
cond este o conditie (expresie booleana), iar instr1 si instr2 sunt secvente de instructiuni.

Sematica: se determina ce valoare de adevar are expresia booleana cond. Daca ea este True, atunci se executa instructiunea instr1, dupa care se trece la instructiunea ce ar urma dupa intrega structura IF. Cand cond este False se executa, in cazul in care exista, instr2.

Instructiunea de selectie multipla CASE - permite alegerea unei secvente de instructiuni din mai multe variante posibile, in functie de valorile unei variabile de selectie(selector).

Sintaxa:
case expresie_ordinala of
   caz1: instr1;
   ..
   cazn: instrn

   else instr0
end;

Exemple:

Sa se afiseze tipul tastei apasate.

program taste;

uses wincrt;

var ch:char;

begin

write('Apasati o tasta ');

readln(ch);

write('A fost ');

case ch of

'A'..'Z', 'a'..'z': WriteLn('Litera');

'0'..'9': WriteLn('Cifra');

'+','-','*','/': WriteLn('Operator')

else WriteLn('Caracter special')

end;

end.

program TestEminescu;
var an:integer;
begin
   Write('In ce an s-a nascut Eminescu? '); ReadLn(an);
   case an of
      1850: WriteLn('Foarte bine!');
      1849,1851: WriteLn('Aproape bine!');
      1845..1848: WriteLn('Cu ',1850-an, ' ani mai tarziu!');
      1852..1855: WriteLn('Cu ',an-1850, ' ani mai devreme!');
      1800..1844, 1856..1899: WriteLn('Ati nimerit secolul!')
      else
         WriteLn('Cultura dumneavostra are lacune grave!')
   end;

end.

Instructiuni repetitive(iterative)

Instructiunea repetitiva conditionata anterior WHILE

Sintaxa:
while conditie_ex do
   instr;

instr_urm;


Semantica :

-se evalueaza conditia(de tip boolean);
-daca este adevarata, atunci se executa secventa instr, apoi se revine la evaluarea conditiei (care intre timp s-ar fi putut modifica) si asa mai departe;
-daca la un moment dat conditia este falsa, atunci se termina ciclul si se trece la prima instructiune de dupa ciclu, adica la instr_urm;
-daca de la bun inceput cond era falsa, se trecea la instr_urm.
   

Altfel spus, cat timp conditia cond este adevarata, se executa instructiunea instr. Dupa ciclu, se executa instructiunea instr_urm.

Exemplu: Registru de casa

program reg_casa;

uses wincrt;

var zi,luna,an,sold,soldzp,suma:integer;

raspuns,ip:char;

begin

write('data [zz ll aaaa] ');readln(zi,luna,an);

write('Sold zi precedenta=');readln(soldzp);sold:=soldzp;

write('exista inregistrari pentru ziua curenta?[d/n]');readln(raspuns);

while raspuns='d' do

begin

write('Incasare sau Plata? [i/p]');readln(ip);

write(' Suma=');readln(suma);

begin

if (ip='i')or (ip='I') then

sold:=sold+suma

else

sold:=sold-suma;

end;

write('mai exista inregistrari pentru ziua curenta?[d/n]');readln(raspuns);

end;

writeln('Sold=',sold);

end.

Instructiunea repetitiva conditionata posterior REPEAT

Sintaxa:
repeat
   instr1;
   instr2;
   .
   instrn
until cond_iesire;

Sematica:
Sensul acestei instructiuni este: repeta instructiunile instr1, , instrn, pana cand este indeplinita conditia cond. Intructiunile se executa cel putin o data.

Exemplu: Cunoscand procentul TVA, cantitatile si preturile corspunzatoare dintr-o factura, sa se calculeze valoarea TVA pentru fiecare articol, total valoare, total TVA si total de plata.

Program factura;

uses wincrt;

var Procent_tva,Cantitate,Pret,Valoare,Valoare_TVA, Total_valoare,Total_tva,Total_factura:real;

gata:char;

begin

write('Procent_tva=');read(Procent_tva);

Total_valoare:=0;Total_tva:=0;Total_factura:=0;

repeat

write('Cantitate=');read(Cantitate);

write('Pret=');readln(Pret);.

Valoare:=Cantitate*Pret;

Valoare_TVA:=Valoare*Procent_tva/100;

Total_valoare:=Total_valoare+Valoare;

Total_tva:=Total_tva+Valoare_TVA;

write('Terminat? [d/n]');readln(gata);

until (gata='d') OR (gata='D');

writeln('Total_valoare=',Total_valoare:8:2);

writeln('Total_tva=',Total_tva:8:2);

writeln('Total factura=',Total_valoare+Total_tva:8:2);

end.

Instructiunea repetitiva cu numar cunoscut de pasi FOR

Sintaxa:
-cu contorul in crestere:
for v:=e1 to e2 do
      instr;

-cu contorul in descrestere:
for v:=e1 downto e2 do
      instr;

In ambele forme, v este o variabila de tip scalar, numita contor, iar e1 si e2 sunt doua expresii de aceleasi tip cu v, numite respectiv expresie initiala si expresie finala, iar instr este orice secventa de instructiuni, chiar si o alta instructiune for.

Semantica:
V primeste valoarea expresiei e1. Apoi, se verifica daca s-a depasit valoarea e2. Daca da, ciclul se incheie, iar daca nu, atunci se executa secventa de instructiuni instr, apoi v creste la succesorul sau, apoi se reia verificarea conditiei de continuare a ciclului.
In forma cu downt, avem un test invers de continuare.

Exemplu : Cunoscand cheltuielile si veniturile pe cele patru trimestre ale unei firme, sa se calculeze impozitul pe profit pentru tot anul.

program profit;

uses wincrt;

var trimestru,vt,ct,van,can:integer;

begin

writeln('Calcul impozit pe profit anual');

writeln('----- ----- --------- ----- ------');

van:=0;can:=0;

for trimestru:=1 to 4 do

begin

write('Venituri tr.',trimestru,'= ');

readln(vt);van:=van+vt;

write('Cheltuieli tr.',trimestru,'= ');

readln(ct);can:=can+ct;

end;

if van-can>0 then

write('Profit= ',van-can,' Impozit pe profit=',

(van-can)*16/100:7:2)

else

write('Pierdere=',van-can);

end.

Procedurile Break si Continue

Aceste proceduri pot aparea in cadrul unor cicluri, uneori fiind necesare pentru a scrie mai simplu anumite secvente.

Break - Termina o instructiune for, while ori repeat. Determina iesirea imediata din cel mai apropiat ciclu in care se afla. Este similara unui salt catre prima instructiune de dupa ciclu.

Continue - Aceasta procedura continua o instructiune for, while ori repeat. Cauzeaza trecerea imediata la o noua iteratie in cadrul celei mai apropiate instructiuni for, while ori repeat.

Exemplu: Aceasta secventa afiseaza doar consoanele.


var c: Char;
begin
   for c:='a' to 'z' do
      if (c='a') or (c='e') or (c='i') or (c='o') or (c='u') or (c='y')
    then Continue
      else Write(c)
end.

Bibliografie

Cherciu, R., Homorodean,M., Petrescu, S., Buturoiu, R., Informatica, Editura Niculescu, Bucuresti, 2001

https://www.pascal.go.ro/tutorial



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1786
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved