Ministerul Educaţiei din Republica Moldova · Web viewse evaluează expresia de tip ordinal...

29
Proiect realizat in cadrul Conferinței Republicane a Elevilor SPRE VIITORInstrucțiunile de bază ale limbajului PascalElaborare : Duca Mihaela, cl. XII A Liceul Teoretic ”Alexandru cel Bun”, Rezina 1

Transcript of Ministerul Educaţiei din Republica Moldova · Web viewse evaluează expresia de tip ordinal...

Ministerul Educaiei din Republica Moldova“SPRE VIITOR”
Coordonator: Dicusar Laura
Introducere
Actualitatea temei i scopul ei.Informatica este o tiina care dezvolt nu doar gîndirea,dar i logica, i capacitatea de a structura datele cît mai simplu i util. Pe lîng toate acestea Informatica ofer posibilitatea de a decodifica multe structuri complicate, dar pîn a ajunge la aa nivel, e necesar un studiu continuu si asiduu al informaticii. Iniial trebuie de invat „alfabetul programrii” care îl constiutuie limbajul “Turbo Pascal” .
Înelegerea acestui limbaj pornete de la cunoaterea instruciunilor de baza a limbajului Pascal,or începutul studiului este foarte important pentru a tenta elevii spre învarea acestui obiect. De aceea mi-am propus sa ofer un suport modern de însuire a acestei teme, dar i o bun metoda de recapitulare a cunotinelor.
Cunoscînd c elevii agreeaz formatul electronic i c informaia care se memoreaz cu cel mai mare randament este cea vizual,am realizat lucrarea sub form de web-site cu ajutorul limbajului HTML.Aceast metod este util i captivant.
Lucrarea realizat conine istoria limbajului Pascal, definiii, principii de executare a instruciunilor de baza,exemple de programe cu aceste instruciuni i teste de autoevaluare.Toat informaia care se conine în aceast lecie electronica face parte dintr-un capitol a manualului de informatic de clasa a IX-a. Cu ajutorul acestui web-site elevul poate inva acest capitol fr îndrumarea profesorului,ceea pentru ce pledeaz elevii. De asemenea, testele propuse în aceast lucrare permit verificarea instantanee a însuirii materialului de ctre elev sau testarea simultan a mai multor elevi. Rezultatul testrii apare pe ecran, indicîndu-se rspunsurile corecte sau rezultatele în cazul rspunsurilor incorecte.
1. Istoria limbajului Pascal
Pascal este unul dintre limbajele de programare de referin în tiina calculatoarelor, fiind cel care a definit programarea calculatoarelor. Limbajul Pascal a fost dezvoltat de elveianul Niklaus Wirth în 1970 pentru a pune în practic programarea structurat, aceasta fiind mai uor de compilat.
Unul din marile sale avantaje este asemnarea cu limbajul natural limba englez, ceea ce îl face limbajul ideal pentru cei care sunt la primul contact cu programarea. Limbajul Pascal este bazat pe limbajul Algol i a fost denumit astfel în onoarea matematicianului Blaise Pascal , creditat pentru construirea primelor maini de calcul numeric.
Wirth a mai dezvoltat limbajele Modula-2 i Oberon, similare cu Pascal. Cele mai populare implementri a acestui limbaj au fost Turbo Pascal i Borland Pascal, ambele ale firmei Borland cu versiuni pentru Macintosh i DOS, care i-au adugat limbajului obiecte i au fost continuate cu versiuni destinate programrii vizuale pentru Microsoft Windows (utilizate de mediul de dezvoltare Delphi) i pentru Linux (Kylix). În prezent exist i alte implementri mai mult sau mai puin populare, dar gratuite, printre care se remarc Free Pascal i GNU Pascal.
Dei în prezent este relativ rar folosit în industria software, el este înc util elevilor i studenilor care doresc s se iniieze în programare. Spre deosebire de Basic, care a stat în trecut la baza învrii programrii, Pascal este un limbaj structurat. De aceea, el formeaz un anumit tip de gîndire, similar limbajelor moderne, precum C++, dar nu deine complexitatea i abstractizarea acestuia din urm, fiind mai uor de îneles datorit sintaxei simple i apropiate de pseudocod.
2. Instruciunea IF
Definiie:
Instruciunea IF este o structur de calcul alternativ,care permite în funcie de anumite condiii, executarea (sau neexecutarea) unei anumite instruciuni sau secven de instruciuni. Instruciunea if are dou forme:                    1)if <conditie> then <instructiune1>    else <instructiune2>;
Atenie: în cazul folosirii acestei sintaxe, semnul " ; " (punct si virgula) este interzis sa fie pus înainte de ELSE. 2)if <conditie> then <instructiune>;
Atenie: în cazul folosirii acestei sintaxe, semnul " ; " (punct i virgula) este strict necesar dup instructiune1. "<conditie>" este o expresie cu valoare logic, iar "<instructiune1>", "<instructiune2>" i "<instructiune>" sunt instruciuni Pascal. Principiul de execuie:
· se evalueaz expresia logic;
· dac aceasta are valoarea TRUE, atunci se execut secvena prezentat în cadrul instructiune1 iar în caz contrar se execut secvena prezentat în cadrul instructiune2 sau se iese din structur (cînd construcia ELSE lipsete).
Atenie: dac secvenele cuprind mai mult de 2 instruciuni,acestea trebuie cuprinse între BEGIN i END; Exemplu de program: 1. Am pus o condiie i în funcie de ea executm o parte sau alta a codului. Parc suntem in via. Ne ofer cineva ceva, dar noi nu acceptm decît dac preul e mai mic sau egal cu o anumit sum, pentru c altfel ni se pare prea mare preul.S exemplificm aceste structuri prin programul de mai jos:
program p7;   var varsta : integer;          gen : char; begin   write ('Ce varsta aveti ? ');   readln (varsta);   write ('Sunteti baiat sau fata ? (M / F) : ');   readln (gen);   If (gen = 'f') or (gen = 'F') Then WriteLn ('gen feminin')   Else WriteLn ('gen masculin');   If varsta > 17 Then WriteLn('Persoana majora');   ReadLn; End.
Pentru a înelege programul, s-l lum pas cu pas. Am definit dou variabile, una de tip integer (valoare numeric) denumit varsta si una de tip Char (un singur caracter) denumit gen. Dup citirea de la tastatur a valorilor pentru aceste dou variabile, verificm dac variabila gen e cumva litera F. De remarcat c am folosit operatorul logic OR pentru a verifica dac variabila are valoarea f sau F, ambele însemnînd faptul c genul este feminin, caz în care afim acest lucru. Pe ramura de Else, tiind c genul nu este feminin, am pus direct afiare c genul este masculin. În programul de mai sus, dac pentru variabila gen introducem litera c, progamul va afia tot "gen masculin". Pentru vîrst facem o singur verificare, anume dac vîrsta este strict mai mare decît 17 (adica minim 18), caz în care afim "Persoana majora" .
Autoevaluare:

1. Ce se va afia în rezultatul execuiei urmtoarei secvene? a := 3; if a > 5 then   if a > 4 then write(1)     else write(2); Selectai raspunsul corect: a)
1 b)
2 c)
12 d)
nu se va afia nimic 2. Ce se va afia in rezultatul execuiei urmtoarei secvene? a := 5; if x > 7 then   if x > 4 then writeln(1)     else  else writeln(2); Selectai raspunsul corect: a)
2 b)
1 c)
12 d)
nu se va afia nimic 3. Se consider secvena de instruciuni:   if a > 20 then writeln("Matematica")     else writeln("Informatica"); Selectai valorile posibile ale variabilei "a" pentru care se va afia cuvîntul "Informatica": a)
100 b)
2 c)
20 d)
0 e)
Instruciunea CASE este o instruciune alternativ multipl care permite selectarea unei instruciuni dintr-o list de instruciuni marcate, în funcie de valoarea unui selector. Instruciunea case are dou forme:                          
1)CASE expresie de tip ordinal OF     List de constante1: instruciune1;     List de constante2: instruciune2;     .......................................................     List de constanten: instruciunen;   end;
2)CASE expresie de tip ordinal OF     List de constante1: instruciune1;     List de constante2: instruciune2;     .......................................................     List de constanten: instruciunen     ELSE instruciune(n+1)   end;
Atenie: în cazul folosirii acestei sintaxe, semnul " ; " (punct i virgula) inainte de "else" este strict interzis; "instructiune1", "instructiune2" i "instructiunen" sunt instruciuni Pascal.
Principiul de execuie:
· se evalueaz expresia de tip ordinal (integer, char, Boolean,byte,word,longint, sau definit de utilizator ca subdomeniu sau enumerare);
· se obine o valoare v care reprezint valoarea selectorului utilizat pentru selecia uneia dintre alternative. Apoi se caut în lista de constante, constanta egal cu valoarea evaluat. Dac se localizeaz aceast constant într-una dintre liste, se execut instruciunea asociat acestei liste;
· dac nu exist nici o instruciune care s conin eticheta v, atunci dac este prezent cuvîntul 'ELSE' se execut instruciunea care urmeaz dup aceasta,în caz contrar nu se execut instruciunea CASE i se trece la secvena imediat urmtoare.
Atenie: Dac secvenele cuprind mai mult de 2 instruciuni,acestea trebuie cuprinse între BEGIN i END;
Exemplu de program: 1. Acum,datorit instruciunii "case" putem împari persoanele în categorii dup vîrsta i sex:
program p10;   var varsta :integer;         sex :char; begin   write ('Ce varsta aveti ? ');   readln (varsta);   write ('Sunteti baiat sau fata ? (M / F) : ');
  readln (sex);   Case sex Of
'f','F' : WriteLn ('Sex feminin');
'm','M' : WriteLn ('Sex masculin');
Else Writeln ('Sex necunoscut, probabil neutru');   End;   Case varsta Of
0 .. 17 : WriteLn ('Persoana minora');
18 .. 60 : WriteLn ('Persoana majora');
61 .. 150 : WriteLn ('Persoana in varsta');
151 .. maxint : WriteLn ('Personaj biblic');
-maxint .. -1 : WriteLn ('Persoana care este inca in planuri de viitor');   End;  ReadLn; End. Structura Case, dup cum am explicat anterior, permite ca pentru o anumit instruciune, s verificm mai multe valori posibile. Aceste valori pot fi scrise una cîte una i desprite prin virgul ('f','F')sau pot fi scrise ca un ir de valori, în care se ofer valoarea minim i apoi valoarea maxim, aceste dou valori fiind desprite prin " .. " (dou puncte unul dup cellalt: "18..60").
Autoevaluare:

1. Urmtoarea instruciune Case   case n of     1, 2 : a := 4;     2 : a := 5;     3 : a := 6;     0 : a := 8;   end; este: a)
corect b)
incorect c)
corect dac instruciunea " 2 : a := 5;" este înlturat d)
corect dac instruciunea "0 : a := 8;" este înlturat 2. Se consider secvena de instruciuni:   case _____________ of     true : write( a, 'numar par');     false: write( a, 'numar impar');   end; Selectai expresia ordinal posibil, astfel, ca instruciunea case sa determine corect paritatea numrului natural n: a)
n mod 2 b)
odd (2) f)
not odd (2)
Instruciunea FOR este o instruciune repetitiv care permite execuia repetat a unei instruciuni în funcie de valoarea unui contor.
Nu este o instruciune strict necesar, ea poate fi simulat cu ajutorul instruciunii WHILE. Totui, majoritatea programatorilor prefer s utilizeze instruciunea FOR.
Instruciunea for are dou forme:                         
1)FOR identificator:=expresie1 TO expresie2 DO instruciune;(CAZUL CRESCTOR)
2)FOR identificator:=expresie1 DOWNTO expresie2 DO
instruciune;(CAZUL DESCRESCTOR)
unde identificator este o variabil de orice tip ordinal, iar expresie1 i expresie2 sunt expresii de acelai tip cu variabila dat.
Principiul de execuie:
· dac valoarea obinut în urma evalurii expresiei1 este egal cu valoarea obinut în urma evalurii expresiei2, se atribuie variabilei de ciclare valoarea obinut în urma evalurii expresiei1, se execut instruciunea abordat i execuia instruciunii FOR este încheiat;
· dac valoarea obinut în urma evalurii expresiei1 este strict mai mic decît valoarea obinut în urma evalurii expresiei2, se atribuie variabilei de ciclare valoarea obinut în urma evalurii expresiei1 i se trece la pasul urmtor;se execut instruciunea subordonat;
· dac valoarea reinut de variabila de ciclare este strict mai mic decît valoarea obinut în urma evalurii expresiei2, (evaluare efectuat la început) se adun 1 variabilei de ciclare i se trece la executarea instruciunii subordonate; dac valoarea reinut de variabila de ciclare este egal cu valoarea obinut în urma evalurii expresiei2, execuia instruciunii FOR se încheie.
Exemplu de program: 1.
program p6;   var cnt:integer; begin   For cnt:=1 To 20 Do   WriteLn(cnt);   ReadLn; End.
Dup cum vedei, contorul nu prea mai e în grija noastr (iar unele compilatoare chiar dau eroare dac vei încerca s-i modificai valoarea în interiorul instructiunii).
Autoevaluare
11. Care din urmtoarele instruciuni nu conin erori sintactice? a)
k := 25; for i := 1 to sqrt (k) do x:=x+2; b)
k := 3; for i := k to 10 do x:=x+1; c)
y:=0; for x := 0.1 downto 0.9 do y := y +sin (x); d)
for i :=1 to 5 do for j := 6 to 10 do x := x + 1; e)
k := 11; for i := k to 5 do x:=x+1; 2. Ce se va afia în rezultatul execuiei urmtoarei secvene? x := 0; for i := 1 to 10 do ; x := x + 1; writeln (x); Selectai raspunsul corect: a)
10 b)
0 c)
135 d)
1
3. Ce se va afia in rezultatul execuiei urmtoarei secvene? for i := 1 to 5 do   begin     for j := 1 to i do write('*');     writeln;   end; Selectai raspunsul corect: a)
            *          * *       * * *    * * * * * * * * * b)
* * * * * * * * * * * * * * * c)
* * * * * * * * * * * * * * * d)
Definiie:
Instruciunea WHILE este ciclul cu test iniial care conine o expresie boolean care controleaz execuia repetat a altei instruciuni.
Instruciunea WHILE are forma:  while <expresie> do <instruciune>;
unde <expresie> trebuie sa fie de tip boolean, iar <instruciune> poate fi orice instruciune Pascal , ce se va executa atît timp cît <expresie> ia valoarea TRUE. Dac iniial <expresie> are valoarea false, <instruciune> nu se va executa niciodat. Pentru o instruciune infinit se va folosi: While True Do instruciune; caz în care nu se poate iei din instruciune din cauza condiiei. Dac nu exista în interiorul acestei instruciuni o instruciune de ieire (cum ar fi Break), atunci instruciunea va fi infinit (nu va mai iei din ea, programul se va bloca i va trebui terminat cu Ctrl + Break, sau i mai ru, din Task Manager sau reboot).
Principiul de execuie:
· dac valoarea expresiei este False, se iese din instruciunea WHILE,dac valoarea expresiei este True, se execut instruciunea,apoi se revine la 1;
· instruciunea cere execuia repetat a unei instruciuni PASCAL în funcie de valoarea de adevr a expresiei logice. Dac valoarea iniial este FALSE, instruciunea WHILE nu se execut nici o dat.
· De remarcat c ieirea din instruciune se va face doar cînd condiia va returna valoarea False.
· Instruciunea WHILE în limbaj natural ar suna: Cît timp condiia_e_adevarat F ceva.
Exemplu de program: 1 PROGRAM P3;   var cnt : integer; begin   cnt := 1;   While cnt <= 20 Do     Begin       WriteLn(cnt);       cnt := cnt + 1;     End;   ReadLn; end.
S analizm programul. Prima dat am declarat o variabil de tip integer (care poate lua valori între -32768 i 32767), care va fi ceea ce denumim contorul instruciunii. Iniializm contorul cu 1, aceasta fiind prima valoare ce va trebui afiat, apoi afim contorul, care apoi va fi mrit cu o unitate. Pe msur ce avansm, ajungem cu Cnt = 20. Atunci va fi afiat (20), contorul va crete la 21 i programul va reveni la condiia de la inceputul instruciunii WHILE : Cnt este mai mic sau egal cu 20. Evident, nu se mai indeplinete condiia , motiv pentru care se trece la executarea urmtoarei instruciuni din program, anume ReadLn.
Autoevaluare
1. Ce se va afia în rezultatul execuiei urmtoarei secvene? a := 3; x := 4; y := 20; while x < y do     x :=x + 4; writeln (x, ' ' , y); Selectai raspunsul corect: a)
16 20 b)
24 20 c)
20 20 d)
4 20 2. Ce se va afia in rezultatul execuiei urmtoarei secvene? a := 5; n := 2345; while n >10 do   begin     write(n mod 10);     n := n div 10;   end; Selectai raspunsul corect: a)
345 b)
543 c)
5 d)
5432 e)
2345 3. Se consider secvena de instruciuni:   a := 5; while _____________ do   begin     write( 'a=', a);     a:= a + 3;   end; Selectai expresia boolean posibil, astfel, ca instruciunea while s se execute de un numr infinit de ori: a)
a = 10 b)
a > 0 c)
a > 100 d)
a <> 10 e)
a <> 20 f)
Definiie:
Instruciunea REPEAT este un ciclu cu test final care indic repetarea unei secvene de instruciuni în funcie de valoarea unei expresii booleene. Instruciunea repeat are forma:                         
REPEAT       secven   UNTIL condiie;
unde secven reprezint instruciunile din corpul instruciunii REPEAT, trebuie s fie de tip boolean i se evalueaz dup fiecare iteraie. Atenie: spre deosebire de While, ieirea din aceast instruciune se face atunci cînd valoarea condiiei este True. Pentru o instruciune infinit se va folosi:   Repeat       Instruciune;   until False; Principiul de execuie:
· se execut secvena de instruciuni;
· se evalueaz expresia logic;
· dac rezultatul evalurii este FALSE atunci se execut din nou secvena de instruciuni, în caz contrar se trece mai departe;
· secvena de instruciuni se execut cel putin o dat, dup care se pune problema relurii sau nu a execuiei, dup evaluarea expresiei logice.
Exemplu de program: 1.
Program p5;   var cnt : integer; begin   cnt := 1;   Repeat     WriteLn(cnt);     cnt:=cnt + 1;   Until cnt > 20;   ReadLn; end.
Dup ce cnt are valoarea 20 i este afiat, va fi crescut cu 1 (devenind 21), caz în care condiia devine adevrat (cnt > 20), motiv pentru care se iese din instruciune.
Autoevaluare
1. Ce se va afia în rezultatul execuiei urmtoarei secvene? x := 4; y := 20; repeat     x :=x + 4; until x > y; writeln (x, ' ' , y); Selectai raspunsul corect: a)
16 20 b)
24 20 c)
20 20 d)
4 20 2. Ce se va afia in rezultatul execuiei urmtoarei secvene? n := 12345; repeat     write(n mod 10);     n := n div 100; until n=0; Selectai raspunsul corect: a)
12345 b)
54321 c)
135 d)
531 e)
5 3. Se consider secvena de instruciuni:   a := 5; repeat     write( 'a=', a);     a:= a - 2; until ________________; Selectai expresia boolean posibil, astfel, ca instruciunea while s se execute de un numr infinit de ori: a)
a = 10 b)
a > 0 c)
a > 100 d)
a <> 3 e)
Definiie:
Intruciunea VID este instruciunea care nu execut nimic, dar exist cazuri în care avem nevoie de ea.
Instruciunea vid are forma: <instructiune vid>::=
Principiul de execuie:
· dac apare simbolul ";" în faa cuvîntului 'END' avem o instruciune vid;
· în mod obinuit,instruciunea de efect nul se utilizeaz la etapa elaborrii i depnrii unor programe complexe. Dei efectul su la executare este nul,înserarea sau eliminarea unei astfel de instruciuni (mai exact,a simbolului ";") poate s altereze semnificaia programului.
Exemplu: 1.
Program p5;   Var: x,y: integer; begin   x:=4; ; ; ;   y:=x+1; End.
în acest exemplu avem 5 instruciuni dintre care 3 sunt vide.
7. Instruciunea COMPUS
Definiie:
Instruciunea COMPUS este instruciunea format dintr-o list de instruciuni separate prin caracterul ";" i cuprinse între cuvintele cheie Begin i End. Sintactic, ea este tratat ca o singur instruciune. Instruciunea compus are forma:
  begin     instructiune 1;     instructiune 2;     ......     instructiune n;   end;
unde instructiune 1, instructiune 2, ... instructiune n reprezint instruciunile din corpul instruciunii compuse;
Principiul de execuie:
Exemple de programe: 1.
program p7;   var m, n, t: integer; begin   m:= m + 1;   n:= n + 2;   t:= m + n; end.
Programul conine o singur instruciune compus prin care se iniializeaza variabilele m, n i t.
8.Instruciunea GOTO
Definiie:
Instruciunea GOTO este instruciunea de salt necondiionat care ofer posibilitatea de a întrerupe aceast secven i de a relua execuia dintr-un alt loc al programului. Instruciunea GOTO are forma: (instructiunea GOTO):= goto (etichet); unde etichet este un numr întreg fr semn care prefixeaz o instruciune a programului.
Principiul de execuie:
· transferul controlului la instruciunea prefixat de eticheta respectiv. Instruciunea goto se
utilizeaz pentru a mri viteza de derulare sau pentru a micora lungimea unui program.
Exemplu: 1.Programul calculeaz valoarea funciei y=x,x>=0 y=2x, x<0. Valorile argumentului x se citesc de la tastatur.
Program p70;   Label 1,2;   Var x,y:real; Begin   Write ('x=');   readln(x);   If x<=0 then goto 1;   Y:=2*x;   Writeln ('x<0,y=',y);   Goto2; 1: y:=x;   Writeln ('x>=0,y=',y); 2:readln; End.
Concluzie:
Principalul motiv pentru care am realizat acest site, este de a îmbunti metodele de învare în liceu. Prin intermediul acestui site, elevii vor înelege materia propus la tema “Instruciunile de baz a limbajului Pascal” mult mai bine, ceea ce le va ajuta pe viitor. Prin diversificarea metodelor de studiu elevii nu vor sta plictisii la lecii, i vor fi atrai nu numai de coninutul, care se poate gsi i în manual, dar i de forma electronic modern de prezentare. Un lucru important este faptul, c elevii pot s-i verifice cunotinele, utilizînd testul propus. Itemii testului, precum i numrul lor pot fi modificai de ctre profesor, ceia ce permite de a-l utiliza nu numai pentru auto-evaluare, dar i pentru evaluare.
Aceast lucrare a fost o încercare foarte interesant pentru mine. Pentru realizarea ei mi-am aprofundat cunotinele în materie de informatic; de asemene,a am însuit limbajul HTML, oformarea paginilor WEB i crearea scripturilor cu ajutorul limbajului JAVA,ceea ce s-a dovedit a fi nu la fel de simplu precum accesm o pagin de internet. Pe parcursul elaborrii acestui site, am aflat foarte multe lucruri noi, de exemplu: cum s creez un test în limbajul JAVA, cum s fac site-uri la nivel de un web-designer profesionist, i multe altele. Am observat c structura limbajului JAVA se aseamn foarte mult cu structura programului TURBO PASCAL, pe care îl învm noi la moment, i pot s spun c acest lucru mi-a fost de mare ajutor. Pentru realizarea acestei teze de curs, am lucrat circa cinci luni. Aceast lucrare, a putea spune c a fost ca un imbold pentru mine, i m gîndesc ca pe viitor s mai fac asemenea lucrri frumoase, mult mai bogate în materie i, ce e cel mai important pentru mine, s aib o aplicaie practic . Sper c lucrarea mea va fi de ajutor elevilor i profesorilor
Bibliografie
1.Turbo Pascal Algoritmi i limbaje de programare,Manual pentru cl. a IX-a Tudor Sorin
2,Informatica Turbo Pascal,Culegere de probleme,Andrei Braicov,Prut International 2005
3.Informatica limbajul Pascal,Anatol Gremalschi,Iurie Mocanu,Ion Spinei,tiina 2001