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