Sunteți pe pagina 1din 141

ROMEO CHELARIU

SISTEME DE OPERARE I
LIMBAJE DE PROGRAMARE
(NDRUMAR DE LABORATOR)

ROMEO CHELARIU

SISTEME DE OPERARE I
LIMBAJE DE PROGRAMARE

(NDRUMAR DE LABORATOR)

IAI-2004

CUPRINS

Lucrarea 1

CALCULATOARE PERSONALE. ARHITECTUR.


ECHIPAMENTE FIZICE

Lucrarea 2

CALCULATOARE PERSONALE.
SISTEME DE OPERARE

20

Lucrarea 3

CALCULATOARE PERSONALE.
SOFTWARE DE APLICAII

36

Lucrarea 4

ETAPELE REZOLVRII PROBLEMELOR CU


AJUTORUL CALCULATORULUI.
DESCRIEREA ALGORITMILOR

48

Lucrarea 5

PROGRAMAREA STRUCTURAT.
INSTRUCIUNI FUNDAMENTALE

57

Lucrarea 6

ETAPELE REALIZRII UNUI PROGRAM.


PRIMUL POGRAM FORTRAN

64

Lucrarea 7

CONSTRUCIA IF. PROGRAMUL SEMN_NR

71

Lucrarea 8

CONSTRUCIA CASE.
PROGRAMELE ARIE I TIP_TASTA

75

Lucrarea 9

CONSTRUCIILE DO SIMPL I DO WHILE.


PROGRAMELE PRODUS_SUMA_MEDIA,
TAB_FUNCTIE I FUN_TRIG

79

Lucrarea 10

TABLOURI. CONSTRUCIA DO CU CONTOR AL


ITERAIEI. PROGRAMUL MASURATORI

84

Lucrarea 11

SUBPROGRAME. PROGRAMELE CENTRU_DE_MASA


I SORTARE

89

Lucrarea 12

INSTRUCIUNEA EXTERNAL. PROGRAMELE


INTEGRALA I SEMN_FUNCTIE

93

Lucrarea 13

FIIERE. INSTRUCIUNILE OPEN I CLOSE.


PROGRAMELE IMPAR I TRANSMATR

98

Lucrarea 14

INSTRUCIUNI DE TRANSFER. PROGRAMELE


SUBSIR I EL_MAX_MIN_MED

102

Lucrarea 15

ALGORITMUL DE INTERPOLARE AITKEN-NEVILLE.


PROGRAMUL INTERPOLARE

107

Lucrarea 16

TESTAREA PROGRAMELOR

112

Lucrarea 17

RELAII DE RECUREN

119

Cuprins

Lucrarea 18

PROCEDURI RECURSIVE. PROGRAMUL PUTERI

123

Lucrarea 19

EXPRESII TABLOU. PROGRAMUL GRAM_SCHMIDT

129

Lucrarea 20

UTILIZAREA BIBLIOTECILOR DE PROGRAME.


PROGRAM RADACINA

133

BIBLIOGRAFIE

137

LUCRAREA 1

CALCULATOARE PERSONALE. ARHITECTUR.


ECHIPAMENTE FIZICE

1. NOIUNI INTRODUCTIVE
Calculatorul numeric a fost conceput iniial ca instrument de lucru pentru
matematicieni i fizicieni cu scopul de a uura efectuarea de calcule complexe. Charles
Babbage (1792-1871), proiectantul primei maini de calcul, a justificat necesitatea
acesteia prin volumul mare de calcul necesar contruirii unor tabele matematice. Din
pcate, ideile lui Charles Babbage, inclusiv cele privind calculul paralel, au trebuit s
atepte un secol, pn cnd tehnologia electronic a permis realizarea lor practic. Dup
anul 1945, considerat ca an de natere a calculatoarelor electronice, evoluia
calculatoarelor a fost marcat, pe de o parte, de lrgirea domeniului de aplicaii, iar pe
de alt parte, de o evoluie tehnologic impresionant asociat cu definirea unei noi
tiine, tiina calculatoarelor (computer science).
Calculatorul, cunoscut i sub denumirea de sistem de calcul, este perceput de
marea majoritate a utilizatorilor ca fiind o main ce execut un set de instruciuni,
reunite ntr-un program, cu scopul de a prelucra datele furnizate de ctre acetia (date
de intrare) pentru a obine rezultate (date de ieire). Utilizarea unui sistem de calcul
poate contribui n mod substanial la rezolvarea unei anumite probleme ce apare n
activitatea unei persoane. Acest lucru este posibil prin

respectarea unei anumite

etapizri ce trebuie parcurs pentru a rezolva problemele cu ajutorul sistemelor de


calcul (Figura 1.1).
PROBLEM

ALGORITM

PROGRAM

CALCULATOR

Figura 1.1. Etapele parcurse n rezolvarea unei probleme cnd se utilizeaz calculatorul.

Utilizarea calculatorului i rezolvarea problemelor cu ajutorul acestuia necesit


cunoaterea i definirea unor noiuni i termeni specifici.
Un calculator numeric (computer) este un sistem (ansamblu) definit prin
componentele sale (echipamente fizice, programe) conectate astfel nct s formeze o
entitate coerent cu o funcie bine definit. Funcia sistemului de calcul este de a
transforma informaiile transmise sistemului de ctre utilizator sub form de
instruciuni i date de intrare, n informaii necesare utilizatorului transmise acestuia
sub form de date de ieire (Figura 1.2).
Orice calculator cuprinde dou componente principale: (1) echipamentele fizice;
(2) programe.
1

Lucrarea 1

PROGRAME
instruciuni
CALCULATOR
introducere, prelucrare, extragere

REZULTATE
date de ieire

DATE
date de intrare
Figura 1.2. Modelul black-box (cutie neagr) al unui calculator.

Echipamentele

fizice

sunt

reprezentate

de

totalitatea

componentelor

electronice, electrice, electromecanice care realizeaz mpreun funciile sistemului de


calcul, fiind cunoscute sub denumirea de hardware. Acesta este nivelul fizic, perceput
imediat de ctre utilizator.
Totalitatea programelor ce permit utilizatorului accesul la toate funciile
sistemului de calcul sunt cunoscute sub denumirea de software.
Persoanele ce utilizeaz un computer sunt fie programatori, fie utilizatori.
Prin programator se nelege o persoan ce creaz un program sau corecteaz unul creat
anterior. Persoana ce folosete, pentru un anumit scop, un program creat anterior se
numete utilizator.
2. ARHITECTURA CLASIC A COMPUTERELOR
Arhitectura unui computer poate fi definit ca o schem schem funcional
general utilizat pentru realizarea constructiv a oricrui calculator.
Structura funcional clasic a unui computer este cea serial, numit i
arhitectur von Neumann.
Principiile funcionale fundamentale ale unui calculator von Neumann sunt:
!

Calculatorul are un dispozitiv numit memorie unde sunt pstrate, att


timp ct este necesar, instruciunile, datele supuse prelucrrii i
rezultatele obinute;

Calculatorul posed o unitate de calcul aritmetic i logic, care execut


operaiile codificate n instruciunile programului;

Calculatorul posed o unitate de comand i control, care determin


execuia instruciunilor n mod secvenial, cte una la un moment dat, n
ordinea stabilit prin program; de asemenea, unitatea de comand i
control determin transferul datelor ce urmeaz a fi prelucrate, ntre
memorie i unitatea aritmetic i logic;

Calculatorul are n componen o unitate de intrare i o unitate de


ieire, prin intermediul crora se realizeaz comunicarea cu mediul extern
(utilizator, proces industrial, calculator);
2

Calculatoare personale. Arhitectur. Echipamente fizice

Unitatea aritmetic i logic mpreun cu unitatea de comand i control


alctuiesc unitatea central de prelucrare (CPU-Central Processing Unit), cunoscut
i sub denumirea de procesor. Procesorul i memoria alctuiesc unitatea central.
Structura funcional a unui calculator von Neumann se poate reprezenta
grafic ca n Figura 1.3.

ECHIPAMENTE PERIFERICE
UNITATE DE
INTRARE

DATE

UNITATE DE
IEIRE

MEMORIE

UNITATE DE
COMAND I
CONTROL

UNITATE
ARITMETIC
I LOGIC

INSTRUCIUNI
PROCESOR

COMENZI

Figura 1.3. Structura funcional a unui calculator von Neumann.

3. ECHIPAMENTE FIZICE
n interiorul calculatoarelor circul semnale electrice transmise sub form de
impulsuri. Pentru a memora i transmite informaia (instruciuni, date) prin
intermediul acestor semnale, calculatoarele folosesc un sistem de reprezentare a
informaiei pe dou nivele. Practic, n calculator exist semnale electrice de tensiune ce
are o valoare mai mare, interpretat ca avnd valoarea unu (1) i semnale electrice de
Tensiune
electric

Nivel
logic

Cifr
binar

Mare

3,5 V

tensiune cu o valoare mai mic, distinct de


prima, interpretat ca avnd valoarea zero (0)
(Figura 1.4). Valorea 0 , respectiv, valoarea 1 se
numete bit (binary digit), reprezentnd cea mai
mic unitate de msur pentru informaie.
Operaiile aplicate informaiei necesit

1,5 V

Mic

Figura 1.4. Echivalena tensiune


electric bit.

gruparea biilor ntr-o succesiune. O succesiune


de 8 bii se numete byte (octet). Un octet poate
reprezenta
ar fi A sau 4.
3

calculator

un

caracter,

cum

Lucrarea 1

3.1. MICROPROCESORUL
n cazul calculatoarelor personale (personal computer-PC) sau microcalculatoarelor, procesorul (CPU) este materializat fizic de un dispozitiv electronic numit
microprocesor (P).
Unitatea central de prelucrare (CPU) ndeplinete dou funcii eseniale:
!

Transferul i prelucrarea datelor;

Controlul activitii ntregului sistem de calcul (PC).

O unitate central de prelucrare a informaiei, avnd funciile enunate


anterior, care coordoneaz un sistem de calcul structurat ca n Figura 1.3 i care, fizic,
se prezint sub forma unui cip se numete microprocesor.
Exist mai multe clasificri ale noiunii de microprocesor. Dup tipul de sarcini
ce pot fi realizate eficient, se disting:
!

Microprocesoare de uz general, nespecializate;

Microprocesoare specializate, ca de exemplu procesoare de intrare/ieire,


utilizate la transferul datelor dintre calculator i mediul extern,
coprocesoare matematice, specializate n operaii aritmetice de utilitate
general, coprocesoare grafice, destinate mbuntirii vitezei i calitii
afirii imaginilor etc;

n continuare, se vor face referiri doar asupra microprocesoarelor standard, de


uz general. Caracteristicile microprocesorului i pun amprenta asupra performanelor
i ntregii organizri ale calculatorului din componena cruia face parte.
Microprocesorul este un cip format dintr-un circuit integrat complex, care
conine un numr de tranzistoare echivalente de ordinul milioanelor, ce prelucreaz
date prin executarea, n mod secvenial, a unor operaii logice i/sau aritmetice diverse
n conformitate cu instruciunile furnizate de utilizator. Conectarea microprocesorului
la celelalte componente fizice ale calculatorului se face prin intermediul unor piciorue
numite pini. Numrul acestora depinde de tipul microprocesorului. n interiorul CPU
am putea regsi subuniti precum: magistrale interne (conductori pentru transmiterea
semnalelor electrice), registre (memorii de capacitate mic folosite pentru memorarea
unor stri sau valori intermediare), unitatea aritmetic i logic (ALU-Arithmetic and
Logic Unit ), unitate de calcul aritmetic cu numere reale, uniti specializate (buffer de
instruciuni etc). Indiferent de tipul de microprocesor exist dou uniti comune i
anume:
!

Unitatea de execuie, care realizeaz n mod efectiv operaiile folosind


zonele de memorie incluse microprocesorului, cunoscute sub denumirea de
registre; scopul registrelor este de a memora date, adrese de memorie,
4

Calculatoare personale. Arhitectur. Echipamente fizice

adresa urmtoarei instruciuni ce trebuie executat, precum i indicatori


de stare care arat cum s-au terminat instruciunile anterior executate;
!

Unitatea de interfa cu magistrala extern, care realizeaz transferul


datelor i instruciunilor de la i spre microprocesor.

Diferenierea microprocesoarelor , din punctul de vedere al performanelor, se


face n funcie de cantitatea de memorie ce poate fi adresat, setul de instruciuni
executabile (numrul i tipul), viteza de lucru. Este de reinut faptul c un microprocesor
nu poate adresa o cantitate infinit de memorie, ci numai cantitatea maxim impus de
procesul su constructiv. Valoarea maxim a memoriei adresabile este important
deoarece un program nu poate fi executat dect dac el se afl n memorie, astfel nct,
o memorie adresabil de dimensiune mai mare faciliteaz o execuie mai rapid a
programului. Cu ct setul de instruiuni specific unui microprocesor este mai mare cu
att se pot rezolva probleme din ce n ce mai complexe. Viteza de lucru a unui
microprocesor este determinat, n principal, de urmtorii parametri: frecvena ceasului
intern, mrimea i numrul registrelor interni, mrimea magistralei de date. Ceasul
intern este un oscilator ce trimite pulsuri la intervale egale de timp, bine determinate.
Executarea unei instruciuni de ctre microprocesor se face ntr-un numr de etape
realizate n intervalul delimitat de dou semnale succesive ale ceasului intern.
Frecvena cu care se genereaz aceste semnale se numete frecvena ceasului intern.
Prin creterea numrului registrelor i a capacitii de memorare a acestora se
micoreaz numrul de operaii de transfer de date cu memoria intern, mbuntind
astfel viteza de lucru a microprocesorului. Volumul de date ce este transferat la un
singur puls al ceasului intern este mai mare cu ct mrimea magistralei de date este
mai mare, prin aceasta micorndu-se numrul de operaii de transfer de date cu
memoria.
n continuare sunt prezentate cteva din reperele importante ale evoluiei
microprocesoarelor:
!

Microprocesorul Intel (80)286 face trecerea la magistrala de 16 bii i aduce


primele mecanisme de multitasking (utilizarea partajat a resurselor
sistemului de calcul ntre mai multe programe); setul de instruciuni este
extins prin utilizarea unui coprocesor matematic;

Microprocesorul Intel (80)386 impune magistrala pe 32 bii i include


mecanisme de gestiune evoluat a memoriei;

Microprocesorul Intel 486 utilizeaz noi tehnici de multitasking i include


un nivel suplimentar de memorie cache (memorie intermediar de
performan ridicat ntre microprocesor i memoria intern); coprocesorul
matematic este inclus n acelai cip;

Microprocesorul Intel Pentium (586) are o magistral intern de 64 bii i


capaciti sporite de multitasking;
5

Lucrarea 1

Microprocesorul Intel Pentium II/III (686) are un set lrgit de instruciuni;


instruciunile suplimentare sunt dedicate prelucrrii multimedia i sunt
codificate MMX i SSE;

Microprocesorul Intel Pentium IV (786) are noi instruciuni dedicate


datelor multimedia (SSE2) ; organizarea instruciunilor naintea execuiei.

Principalele tipuri de microprocesoare sunt prezentate n Tabelul 1.1, iar


caracteristicile de baz ale ultimilor tipuri de procesoare n Tabelul 1.2.
Tabelul 1.1
Principalele tipuri de microprocesoare
Generaia
(80)-86

Cyrix

Frecvena
(MHz)

Am286

816

Am386

2040

Cyrix486

20120

Cyrix5x86

75166
166450
450650

I8088
I80186

I8086

(80)286
(80)286

I386

486

I486

586

Pentium

686

Pentium
II/III

786

AMD

Intel

Pentium
III
Pentium
IV

I80286
I386SX
I386DX
I486SX
I486DX
I486DX-2
I486DX-4
Pentium (I)
Pentium Pro
Klamath
Katmai
Celeron
Celeron
Coopermine
Tualatin
Willamette
Northwood
P4EE
Precott

AMD486

486DX
486DX-2
486DX-4
5x86(DX5)

AMD K5
AMD K6

K6
K6-2

Cyrix6x86
IBM 6x86

AMD K7

Duron
Athlon

VIA Cyrix
III

6501200
12003200

Tabelul 1.2

Caracteristici
Proces de
fabricaie
Numr de
tranzistori
(milioane)
Dimensiune
pastil (mm2)
Cache L1 (KB)
Cache L2 (KB)
Cache L3 (KB)
Frecvena
maxim (GHz)

Carcateristici de baz ale microprocesoarelor actuale


Pentium 4
Willamette
Northwood
Prescott
Extreme Edition
(P4EE)

Athlon 64
(FX51, 3400+)

180 nm

130 nm

130 nm

90 nm

130 nm

42

55

178

125

106

170

131

237

112

193

8
256
NA

8
512
NA

8
512
2048

16
1024
NA

128
1024
NA

3,4

3,4

3,4

2,2

Calculatoare personale. Arhitectur. Echipamente fizice

Pentru ultimile generaii de microprocesoare, pentru a mri viteza de lucru,


memoria cache de nivel 2 (L2) este inclus pe suportul acestora i nu pe placa de baz
avnd capaciti de pn la 1024 KB.

Aceste ultime tipuri de procesoare Intel au

posibilitatea real de a executa simultan mai multe activiti, facilitate pe care Intel a
denumit-o Hyper Threating. Microprocesorul Prescott a primit i un numr de
intruciuni SSE suplimentare, codificate SSE3.
3.2. MEMORIA INTERN
Memoria unui calculator se numete memorie intern deoarece n componena
sa mai exist i alte dispozitive de memorare, dar cu alte caracteristici i funcii, care
alctuiesc mpreun aa-numita memorie extern.
n memoria unui calculator sunt stocate (memorate) obiecte, adic informaie
codificat ntr-un anumit mod, folosind sistemul binar. Modelul de reprezentare a
informaiei, n form scris, reprezint o dat. Deosebirea dintre informaie i dat este
echivalent cu cea dintre un obiect i modelul su. Informaia stocat n memorie poart
denumirea generic de date. n memorie sunt stocate att instruciunile programelor ce
se execut, ct i datele pe care acestea le prelucreaz, folosind acelai mod de
codificare. n acest mod prin denumirea de date vom nelege att datele ce se
prelucreaz (date de intrare, intermediare, finale, de ieire etc), ct i instruciunile ce
se execut.
Din punct de vedere fizic, memoria intern este format tot din cipuri ce au
proprietatea de a memora secvene de bii. n cazul memoriei, un bit este materializat
printr-un element fizic cu dou stri distincte ce pot fi codificate cu:
!

Fals sau 0;

Adevrat sau 1.

Un astfel de element poate fi un obiect magnetizabil cu dou stri magnetice


N-S sau S-N fr a-i schimba poziia (Figura 1.5).
Avnd n vedere cele prezentate, memoria

intern poate fi considerat ca fiind format dintr-o


mulime finit de elemente, cu dou stri distincte,
aezate succesiv.
Unitile de msur a memoriei sunt:
Bitul (0, 1), notat b;

Figura 1.5. Bitul fizic al memoriei


interne

Byte (octet), format din 8 bii succesivi, notat B;


Kilobyte, notat KB, 1 KB = 210 B = 1024 B;
Megabyte, notat MB, 1 MB = 210 KB = 1 048 576 B;
Gigabyte,notat GB, 1 GB =210 MB = 220 KB = 230 B.
7

Lucrarea 1

Deoarece reprezentarea informaiei n calculator se face folosind sistemul binar


(baza 2), multiplii byte-ului vor fi puteri ale lui 2, dup cum se poate observa mai sus.
Byte-ul i multiplii si sunt uniti de msur a capacitii de memorare att pentru
memoria intern, ct i pentru alte dispozitive de stocare a informaiei.
Memoria intern este format din mai multe pri de dimensiune egal, fiecare
fiind numit locaie de memorie. Acestea sunt identificabile printr-o adres de
memorie. Adresele de memorie sunt numere naturale ce arat poziia n memorie a
fiecrei locaii (0, 1, 2, ). Dac se grupeaz n elemente binare de memorie, se obine o
locaie de memorie ce poate avea 2n stri distincte. De exemplu, dac n = 4, numrul de
stri diferite este 24 = 16, i anume: 0000, 0001, 0010, 0100, 1000, 0011, 0110, 1100,
1010, 0101, 1001, 0111, 1011, 1101, 1110. Aceasta nseamn c o dat ce trebuie
memorat poate avea doar una din valorile de 4 bii anterioare. n cazul calculatoarelor,
locaiile de memorie sunt de 8 bii consecutivi, formnd astfel un byte.
Locaiile de memorie se grupeaz n celule de memorie. Identificarea unei
celule de memorie se face prin adresa i lungimea ei. Adresa celulei de memorie este
dat de adresa primului octet, iar lungimea de numrul de elemente binare grupate
ntr-o celul de memorie.
Cuvntul (word) este o unitate logic de informaie, format de obicei din 16
bii (2 octei). n cazul n care este format din 4 octei se numete cuvnt dublu.
Lungimea cuvntului depinde de tipul constructiv al calculatorului.
Memoria intern este caracterizat de doi parametri: (1) capacitatea de
memorare, (2) timpul mediu de acces sau frecvena de lucru.
Capacitatea memoriei interne, caracteristic important pentru viteza i
eficiena cu care va lucra calculatorul, depinde de tipul microprocesorului i se msoar
n KB sau MB. Practic, memoria intern este format din plachete de memorie cu
capaciti de 4, 8, 16, 32, 64, 128, 256, 512 MB. Timpul mediu de acces se msoar n ns
i se refer la intervalul de timp care este necesar memoriei interne pentru a fi citit
sau scris datele, iar frecvena n MHz.
Memoria intern este format din dou tipuri de cipuri de memorie cu
caracteristici diferite i anume:
!

Memorie RAM (Random Access Memory memorie cu acces aleatoriu),


care are urmtoarele caracteristici: poate fi citit sau scris, este volatil,
adic datele memorate se pstreaz att timp ct calculatorul este conectat
la reeaua electric, iar fiecare locaie de memorie poate fi accesat imediat;

Memorie ROM (Read Only Memory memorie doar citit), care are
urmtoarele caracteristici: poate fi numai citit, nu poate fi scris sau
modificat, este nevolatil (permanent).

Memoria RAM este folosit pentru a memora date sau instruciuni ale
programelor care se execut la cererea utilizatorului, iar memoria ROM conine
8

Calculatoare personale. Arhitectur. Echipamente fizice

date necesare la pornirea i n timpul funcionrii calculatorului.


3.3. MAGISTRALE (BUS-URI)
Dei denumirea lor este pretenioas, aceste magistrale nu sunt altceva, din
punct de vedere fizic, dect un numr de conductori electrici, prin intermediul crora se
realizeaz transmiterea semnalelor electrice ce realizeaz transferul de date i comenzi
ntre componentele principale ale calculatorului.
Magistrala de date, bidirecional, permite circulaia datelor (operanzi/
rezultate), a instruciunilor i chiar a adreselor.
Magistrala de adrese, unidirecional, permite microprocesorului s localizeze
datele din memorie sau dispozitivele de intrare/ieire, aa nct pe aceast magistral
circul numai adrese.
Magistrala de control, permite circulaia, bidirecional, a semnalelor de
comand i control de la/ctre microprocesor.
3.4. INTERFEE
Pentru a putea face legtura ntre unitatea central i echipamentele
periferice, se folosesc dispozitive numite interfee. Interfaa unui echipament periferic
primete/transmite datele de la/ctre unitatea central, dup care le transmite/primete
la/de la echipamentul periferic. Interfaa realizeaz conversia datelor din codul specific
calculatorul ntr-o form accesibil realizrii comunicrii calculator-mediu extern
(utilizator, proces, calculator),. Comunicarea dintre interfa i echipamentul periferic
se poate face n dou moduri i anume: (1) secvenial, (2) paralel.
Unele interfee au denumiri specifice: adaptor video, controler de disc, adaptor
pentru fax/modem, plac de sunet, plac de reea etc.
3.5. ECHIPAMENTE PERIFERICE
Echipamentele fizice ce intr n componena unui calculator personal i care
materializeaz fizic unitile de intrare/ieire se numesc echipamente periferice.
3.5.1. Memoria extern
Deoarece memoria intern a unui calculator este volatil i de capacitate
relativ redus, posibilitile de pstrare a datelor, att n timpul funcionrii, ct mai
ales dup oprirea acestuia, sunt mult reduse. Astfel, a aprut necesitatea adugrii
unor echipamente de memorare diferite de memoria intern. Caracteristicile memoriei
externe sunt: este nevolatil, poate fi att citit ct i scris. O astfel de memorie,
9

Lucrarea 1

nevolatil, cu rol de stocare timp ndelungat a datelor, este cunoscut sub denumirea de
memorie extern. Memoria extern a unui calculator este format din discurile
magnetice.
De menionat c trebuie fcut distincie ntre unitatea de memorie extern i
suportul fizic de memorare.
Unitile de discuri magnetice sunt nelipsite din componena oricrui sistem de
calcul, fiind utilizate i ca extensie a memoriei interne. Memorarea datelor se face pe
suprafeele magnetice ale unui disc sau pachet de discuri. Un disc magnetic este format
dintr-un suport, ce poate fi flexibil (material plastic)sau rigid (aluminiu sau aliaje ale
acestuia), pe a crui suprafee se depune un film subire de substan magnetic, care
formeaz partea activ a acestuia. n cazul pachetului de discuri, acestea se monteaz
paralel i echidistant pe un ax comun.
Pentru transferul datelor pe/de pe un astfel de disc sau pachet de discuri,
acestea trebuie introduse ntr-un dispozitiv numit unitate (drive) de disc. Unitatea de
disc este prevzut cu un dispozitiv special, numit dispozitiv de acces, format dintr-un
numr de capete de citire/scriere egal cu numrul de suprafee active ale suportului de
memorare. Capetele de citire/scriere au, n funcie de tipul echipamentului periferic, un
anumit numr de poziii distincte fa de axul pachetului. Fiind montate rigid pe acelai
dispozitiv de antrenare, capetele de citire/scriere se deplaseaz simultan, gsindu-se la
aceeai distan fa de axul suportului magnetic. Fiecare cap de citire/scriere, pe
suprafaa activ asociat, descrie o circumferin numit pist, ce are drept centru,
centrul axului pachetului de discuri (Figura 1.6a). Totalitatea pistelor de acelai
diametru, n cazul pachetelor de discuri, formeaz un cilindru (Figura 1.6b). O pist la
rndul ei este divizat n mai multe zone distincte, numite sectoare, cu o anumit
mrime. Fiecare sector are aceeai mrime, care de obicei este 512 B. Unitatea de
adresare a discului magnetic este sectorul de disc, care are asociat o valoare numit
adres.
Sector

Cilindru

Pist

Disc
magnetic

Figura 1.6. mprirea fizic a discurilor magnetice.

10

Calculatoare personale. Arhitectur. Echipamente fizice

Caracteristicile de baz ale unitilor de discuri magnetice sunt, n principal,


urmtoarele:
!

Caracteristici fizice ale discurilor (rigid, flexibil, numr de discuri,


diametrul etc);

Capacitatea de memorare (MB, GB);

Viteza de transfer (KB/s);

Timp de acces (ms);

Norma de conectare, care poate fi PIO Mode 14, ATA, UltraDMA 33, 66,
100 etc;

Densitatea de nregistrare.

Unitile cu discuri fixe (montate permanent n unitatea de disc) i suport rigid


sunt cunoscute sub denumirea de hard-disk.
Hard-disk-urile moderne au o serie de mbuntiri constructive care permit
creterea performanelor, dintre care amintim:
!

Includerea unei memorii cache (buffer) cu capaciti ntre 256 KB8 MB;

Mecanisme de detectare i corecie a erorilor;

Viteze mai mari de rotaie a discurilor (5400, 7200, 15000 rot/min);

Suspensii pentru protejarea mpotriva ocurilor mecanice etc.

Unitile cu disc amovibil (poate fi montat sau extras din unitatea de disc ori
de cte ori este necesar) i suport flexibil sunt cunoscute sub denumirea de floppy-disk.
Discul propriu-zis este cunoscut i sub denumirea de dischet. Dischetele sunt alctuite
dintr-un singur disc magnetic, cu suport flexibil, protejat de o carcas de material
plastic, n interiorul creia se mic liber. Dei au existat mai multe variante
constructive, astzi se utilizeaz doar unitile floppy-disk pentru dischete cu diametrul
de 3,5 (inches) cu o capacitate de memorare de 1,44 MB.
3.5.2. Tastatura
Tastatura este principalul dispozitiv periferic al unui calculator prin
intermediul cruia se transmit informaii (comenzi, date) ctre unitatea central. De la
tastatur datele circul unidirecional ctre unitatea central, fiind un periferic de
intrare. Cuplarea tastaurii la calculator se face prin intermediul unui cablu de conectare
i a unui conector special ce intr n legtur cu interfaa corespunztoare i
magistralele sistemului.
Versiunile clasice ale tastaturilor calculatoarelor personale au un numr de
101/102 taste. Din punctul de vedere al funcionalitii, o tastatur standard cu 101
taste cuprinde urmtoarele grupe:
11

Lucrarea 1

Taste caracter, ce cuprinde tastele corespunztoare literelor alfabetului


latin, mari i mici, cifrele arabe i caracterele speciale (!,@,,#,$;
%,^,&,*,(,),_, -, =,+,/,\,|,;,:,,~,`, );

Taste numerice, care cuprind taste numerice propriu-zise, cu dou


caractere nscrise i taste cu operatorii aritmetici;

Taste de alegere a modului de lucru pentru

tastele caracter i tastele

numerice, Caps Lock, care prin activare determin obinerea literelor


mari, Num Lock, care prin activare determin obinerea tastelor
numerice, iar prin dezactivare tastele corespunztoare celui de-al doilea
caracter nscris; tasta Insert (Ins-n zona tastelor numerice), schimb
modul de lucru al tastelor caracter din inserare n suprapunere i invers;
!

Taste de modificare a funciei unor taste sau grupe de taste, Shift (

), care

prin meninerea n stare apsat permite tastarea caracterului superior de


pe tastele cu dou caractere sau inverseaz aciunea tastei Caps Lock;
tastele Ctrl i Alt, separat sau mpreun, sunt utilizate n combinaii cu
alte taste pentru generarea de comenzi, direct de la tastatur; tipul de
comenzi generate i combinaiile de taste depind de programul ce se
execut n momentul respectiv pe calculator;
!

Taste de deplasare/poziionare, prin apsare determin deplasarea


cursorului n direcia indicat de fiecare tast; cursorul este o reprezentare
grafic distinct a poziiei curente n cadrul unui document i care
focalizeaz atenia utilizatoruluiasupra poziiei n care au loc diverse
operaii; tastele de deplasare sunt tastele sgei (

), Page Up

(determin deplasarea cursorului cu un numr mai mare de rnduri spre


nceput), Page Down (determin deplasarea cursorului cu un numr mai
mare de rnduri spre frit),

iar tastele de poziionare sunt Home

(determin poziionarea cursorului la nceput de rnd) i End (determin


poziionarea cursorului la sfrit de rnd); prin apsarea simultan a
tastei Ctrl i a tastei Page Up, respectiv Page Down, cursorul se deplaseaz
la nceput, respectiv sfrit de pagin; prin apsarea simultan a tastei
Ctrl i a tastei Home, respectiv End, cursorul se deplaseaz la nceput,
respectiv sfrit de document;
!

Taste funcionale, care determin lansarea imediat a unei comenzi


predefinite, n funcie de programul ce se execut de ctre calculator;
aceste taste sunt codificate F1, F2, , F12;

Taste cu aciune bine definit, pentru care gradul de standardizare a


aciunii lor este foarte ridicat; aceste taste i aciunile lor specifice sunt:

Enter - execuie comand sau trecere la un rnd nou; cnd sunt


active tastele numerice ndeplinete funcia de = ; se afl n zona
tastelor numerice;
12

Calculatoare personale. Arhitectur. Echipamente fizice

RETURN (

Esc anuleaz comanda, respectiv programul n curs de execuie;

Back Space (

)- execuie comand sau trecere la un rnd nou;


)- terge un caracter n stnga cursorului;

Delete (Del-n zona tastelor numerice)- terge un caracter de pe


poziia curent a cursorului;

Tab (

)- determin trecerea la rubrica urmtoarea (pentru

anumite programe) sau afieaz un spaiu liber format de mai


multe caractere blanc (spaiu liber);

Print Screen-determin tiprirea (copierea) ecranului curent;

Scroll Lock-oprete defilarea pe ecran a datelor determinate de


execuia unei comenzi;

Pause/Break-determin oprirea (temporar sau definitiv) a


anumitor procese (programe).

Apsarea unei taste (combinaii de taste) determin transmiterea ctre


unitatea central a unor date, care pot fi de tip text, funcii sau comenzi. Lucrul cu
tastele presupune trei regimuri: (1) apsarea scurt a tastei (modul cel mai frecvent de
lucru); (2) apsarea continu a unei taste, pentru meninerea aciunii acesteia;
(3) apsarea simultan a dou sau trei taste pentru obinerea de combinaii de taste ce
determin aciuni specifice.
Tastaturile recente sunt fabricate n diverse variante numite fie tastaturi
ergonomice (asigurarea de poziii relaxante pentru mini), fie tastaturi multimedia ce
au integrate taste specializate n funcii multimedia.
3.5.3. Sistemul video
Sistemul video este format din dou componente:
!

Monitorul (display), dispozitiv electronic ce permite vizualizarea datelor


introduse de la tastatur sau rezultate n urma execuiei unor comenzi sau
programe;

Placa video (adaptor video), care realizeaz legtura ntre unitatea


central i monitor, permind conversia datelor ce sunt afiate pe ecranul
monitorului n codul binar, specific calculatorului.

Modurile de operare ale sistemului video sunt:


!

Modul video grafic, cnd suprafaa de afiare este organizat ca o matrice


cu m linii i n linii, fiecare element putnd fi reprezentat ca un punct
adresabil n mod unic, caracterizat prin culoare, intensitate luminoas,
dimensiune; un astfel de element grafic se numete pixel; n prezent, acesta
este modul cel mai frecvent de afiare a datelor indiferent de tipul acestora;
13

Lucrarea 1

Modul video text, cnd suprafaa afiabil este format din celule caracter
delimitate de 25 linii i 80 coloane, controlul datelor afiate pe ecran
fcndu-se la nivel de caracter alfanumeric; n acest caz, pixelii nu mai
sunt adresabili individual, n fiecare celul putnd fi afiat un caracter
alfanumeric.

Placa video preia datele ce trebuie afiate pe ecranul monitorului (texte,


imagini) i le adapteaz pentru a fi nelese de ctre monitor. Astfel sunt comandai
individual (poziie, culoare, intensitate) pixelii care formeaz imaginea afiat pe ecran.
Placa video este caracterizat prin:
!

Rezoluie, care reprezint numrul maxim de elemente ce pot fi afiate pe


ecranul monitorului; aceast caracteristic este similar cu cea a
monitorului;

Numrul maxim de culori;

Caracteristicile memoriei proprii, etc;

Plcile video au n componen pe lng memoria proprie, un microprocesor


propriu (chipset), convertorul digital-analogic al datelor (RAMDAC), magistral intern
(32, 64, 128 bii). Semnalul de ieire al plcilor video este, de obicei, analogic, cu
excepia celor destinate pentru a conecta monitoare speciale, cnd ieirea poate fi de tip
digital. Cei mai cunoscui productori de chipset-uri grafice sunt firmele ATI i NVIDIA.
Cele mai importante caracteristici ale monitoarelor sunt:
!

Mrimea imaginii, exprimat prin dimensiunea diagonalei ecranului


msurat n inch; mrimile tipice sunt de 14, 15, 17, 19, 21;

Numrul de culori ce pot fi afiate, exprimat prin puteri ale lui 2 (24, 28,
216, 224, 232);

Rezoluia de afiare a ecranului, definit att pe vertical ct i pe


orizontal; cele dou rezoluii sunt diferite; conform standardului VGA
(Video Graphics Adapter), considerat mpreun cu extensiile SVGA (Super
VGA), matricea de afiare a modului video grafic are rezoluiile de
640x480, 800x600, 1024x768

Definiia, care reprezint dimensiunea unui pixel n mm; valorile cele mai
utilizate sunt cuprinse n intervalul 0,240,28 mm.

Din punctul de vedere al reglajelor referitoare la luminozitate, contrast,


dimensiuni, poziionare, geometrie etc, n timp s-au manifestat dou tipuri de
monitoare: cu reglaj analogic, cnd reglajele se fceau individual prin poteniometre, i
cu reglaj digital, cnd reglajele se fac prin intermediul unui meniu (imagini grafice) ce
se afieaz pe ecran.
14

Calculatoare personale. Arhitectur. Echipamente fizice

Din punct de vedere constructiv, cele mai rspndite sunt monitoarele ce


folosesc pentru formarea imaginii un tub catodic (CRT). Un rol important la acest tip de
monitoare l are i rata de mprosptare a imaginii (refresh rate) numit i frecvena
vertical, datorit impactului asupra calitii imaginii i sntii utilizatorului.
Conform normelor actuale (protecia muncii, ergonomie), imaginea trebuie s se refac
de 75 ori/secund. n ultimii ani au aprut i monitoare ce folosesc alte metode de
formare a imaginii, cum ar fi: LCD (Liquid Crystal Display), PDP (Plasma Display
Panel), OELD (Organic ElectroLuminiscence Display). Aceste noi tipuri de monitoare
tind s nlocuiasc treptat monitoarele cu afiare CRT.
Numrul de culori ce se pot afia se mai numete i adncime de culoare i se
exprim, de obicei, prin numrul de bii utilizai. Astfel, cu 16 bii se pot reprezenta
maxim

216

= 65536

culori

(High

Color),

iar cu 32

bii

s-ar putea afia

232 = 4 294 967 296 culori (True Color).


Dei monitorul este perifericul de ieire tradiional, fiind deci unidirecional,
exist i monitoare bidirecionale (intrare/ieire), tip touch-screen, care permit i
introducerea de comenzi printr-un sistem de senzori de suprafa.
Producerea de monitoare este reglementat printr-o serie de norme, cum ar fi:
!

Norme de siguran-TV/GS, CE, Nemko, Fimko etc;

Norme ergonomice-ISO 9241-3, ISO 9241-8;

Norme pentru radiaii-MPRII, TCO95, TCO99 etc.

Fiind constituit din monitor i plac video, parametrii de funcionare ai


sistemului video (rezoluie, numr de culori, rat de mprosptare) sunt determinai de
componenta cu valorile mai mici, aa nct performanele sale sunt date de componenta
mai puin performant.
3.5.4. Imprimanta
Imprimanta este un echipament periferic de ieire, unidirecional, ce poate fi
conectat la unitatea central i care are rolul de a tipri rezultatele obinute cu ajutorul
calculatorului ntr-o problem oarecare.
Pn n prezent s-au realizat i utilizat tipuri diferite de imprimante pentru
calculatoare personale, ce se deosebesc prin performane i metoda de tiprire.
Principalele caracteristici ale unei imprimante, ce caracterizeaz performanele
acesteia, sunt:
!

Rezoluia-reprezint numrul de puncte pe care le poate afia imprimanta


ntr-un inch; rezoluia pe vertical nu este obligatoriu egal cu cea pe
orizontal; cu ct rezoluia este mai mare, cu att calitatea imaginii
imprimate va fi mai bun;
15

Lucrarea 1

Viteza de imprimare, a crei unitate de msur depinde de metoda de


imprimare folosit;

Dimensiunile maxime ale hrtiei pe care fiecare imprimant poate tipri;


dimensiunile hrtiei sunt cele specifice formatelor standardizate (A3, A4,
A5, B5 etc).

Dup metoda de imprimare se deosebesc urmtoarele tipuri principale de


imprimante:
!

Imprimante matriceale, la care imprimarea se realizeaz prin intermediul


unui cap de imprimare, prevzut cu ace acionate electromagnetic ce
percuteaz o band tuat pe suprafaa hrtiei, care se deplaseaz
orizontal de-a lungul hrtiei; calitatea imprimrii este determinat de
numrul de ace, care poate fi 9, 18 sau 24; rezoluia acestor imprimante
este sczut, de circa180 dpi (dots per inch), ceea ce permite tiprirea de
texte sau imagini fr pretenii calitative deosebite; viteza de imprimare se
msoar prin numrul de caractere imprimate pe secund (cps) i are
valori cuprinse n intervalul 100400 cps sau chiar mai mult n cazul
imprimantelor matriceale rapide; acest tip de imprimante lucreaz
obinuit n mod text;

Imprimante cu jet de cerneal, la care imprimarea se face prin pulverizarea


fin pe hrtie a unor picturi de cerneal, folosind duze microscopice
controlate riguros spaial i temporal, duze ce intr n componena unui
cap de imprimare care poate fi deplasat orizontal; pentru aceste
imprimante exist

posibilitatea realizrii imaginilor color; viteza de

imprimare se msoar n pages per minute (ppm);


!

Imprimante laser, care folosete o raz laser sau mici diode luminiscente
pentru a ncrca electrostatic un cilindru de imprimare, corespunztor
caracterului ce urmeaz a fi imprimat; cilindrul vine n contact cu o
pulbere special, numit toner, care ader pe suprafeele ncrcate
electrostatic, dup care trece peste suprafaa hrtiei de imprimat unde este
ars tonerul; viteza de imprimare se msoar n pages per minute (ppm).

n ceea ce privete utilizarea unui anumit tip de imprimant n funcie de tipul


i calitatea documentului ce trebuie imprimat, se pot face urmtoarele recomandri,
prezentate n Tabelul 1.3.
Pentru a mbunti performanele imprimantelor cu jet de cerneal, sau a
celor cu laser , acestea sunt dotate cu memorie RAM proprie, putnd astfel prelua
corespunztor sau chiar integral datele. Imprimatele evoluate i destinate lucrului n
medii complexe, unde se prevd 10 000300 000 pg/lun sunt prevzute, pe lng
memorie intern proprie, cu microprocesoare, respectiv hard-disk-uri.
16

Calculatoare personale. Arhitectur. Echipamente fizice

Principalele caracteristici de performan ale imprimantelor uzuale sunt


indicate n Tabelul 1.4.
Tabelul 1.3
Recomandri de utilizare a imprimantelor n funcie de tipul i calitatea documentului

Preul relativ mic al consumabilelor i posibilitatea de a folosi copierea


prin indigo sau hrtie autocopiativ o recomand pentru a fi utilizat
Imprimant
pentru tiprirea/completarea de formulare tipizate, cu larg aplicabilitate
matricela
n domenii precum contabilitatea;

Constituie prima alternativ cnd se tipresc tiraje de mrime mediemare pe format A3 transversal, frecvent ntlnit n contabilitate.

Pentru c ofer o calitate bun a documentului imprimat, este folosit


pentru documente uzuale, ce conin att text ct i imagini grafice;
Imprimant

Este prima alegere n tiprirea documentelor color;


cu jet de

Consumabilele avnd un pre relativ ridicat n raport cu volumul de date


cerneal
ce poate fi imprimat, nu este indicat pentru situaiile de imprimare n
tiraje mari;

Calitatea deosebit de bun, viteza mare de tiprire, raport pre


consumabile/volum mare de imprimare avantajos, recomand acest tip de
Imprimant
imprimant pentru documente ce necesit precizie/calitate mare i volum
cu laser
mare i foarte mare de imprimare.

Tabelul 1.4
Caracteristici de performan ale imprimantelor uzuale
Matriceal

Rezoluie
[dpi]
~ 180

A3, A4, A5, B5

Vitez de
imprimare
100400 cps

Cu jet de cerneal

3002800

A4, A5, B5

315 ppm

Cu laser

3001200

A4, A5, B5

550 ppm

Tip imprimant

Format hrtie

Culoare
Monocrom
Monocrom
Color
Monocrom
Color

3.5.5. Mouse-ul
Mouse-ul este un periferic de intrare, unidirecional, care face parte din
categoria dispozitivelor de digitizare (introducere digital a datelor). Ca funcionalitate,
mouse-ul este asemntor cu tastatura.
Modelul clasic este un dispozitiv de dimensiuni nu prea mari, uor manevrabil,
avnd la partea superioar 2 sau 3 butoane, iar la partea inferioar o bil ce se rotete
liber ntr-un loca special, cu sensibilitate i vitez reglabile. Prin deplasarea mouseului pe o suprafa orizontal are loc rotirea bilei. Rotirea bilei este descompus de
componentele mouse-ului n deplasare pe dou direcii sus-jos i stnga-dreapta,
deplasare care determin pe ecranul monitorului o micare echivalent a unui cursor.
Cursorul specific mouse-ului este o reprezentare grafic a poziiei curente de pe ecran,
de obicei, o sgeat. Cursorul focalizeaz atenia asupra locului n care vor avea loc
aciunile determinate de apsarea butoanelor mouse-ului (validare/confirmare de
opiuni, indicare de poziii, deplasri etc). Cursorul de mouse se mai numete i pointer
sau indicator. Declanarea unei aciuni (transmiterea unei comenzi, selectarea unei
17

Lucrarea 1

zone dintr-un text etc) se face prin poziionarea cursorului pe obiectul, imaginea, zona
de pe ecran care intereseaz i apsarea unuia dintre butoane.
Exploatarea mouse-ului este determinat de urmtorii parametri:
!

Rezoluie (densitate de puncte transmise, sensibilitate), care depinde de


proiectarea hardware;

Viteza de apsare a unui click dublu;

Timp de reacie la apsarea butoanelor.

Recent, au aprut diverse variante constructive cum ar fi: mouse-ul cu roti,


mouse-ul fr fir, mouse-ul optic etc.
3.5.6. Alte echipamente periferice
Scanner-ul este un dispozitiv periferic unidirecional, prin intermediul cruia
se pot transfera ctre o unitate central diverse date n format grafic. Datele transferate
pot fi prelucrate (mutare, copiere, mrire, micorare, modificare, conversie etc) cu
programe specializate (editor de imagine, OCR-Optical Character Recognition). Un
scanner este caracterizat prin rezoluie optic (mxn dpi), rezoluie interpolat (uxv dpi),
adncimea de culoare (x bii), format (A4, A3 etc), tehnologie (senzori CCD sau CIS) etc.
Unitile CD-ROM sunt uniti periferice care permit citirea datelor
memorate permanent (timp ndelungat) pe discuri compacte (CD Compact Disk).
Compact disk-ul este un disc flexibil, dar care stocheaz datele folosind o metod optic.
Exist i uniti

destinate citirii/scrierii unor CD-uri care pot fi scrise/rescrise.

Capacitatea de stocare este de 650 sau 700 MB. Principala caracteristic a unitilor
CD-ROM este viteza de transfer, indicat prin factorul de multiplicare a vitezei de
transfer a primului periferic de acest tip (150 KB/s). n prezent o dezvoltare deosebit o
au compact disk-urile cu densitate mare de nregistare, numite DVD i care necesiti
uniti dedicate numite uniti DVD.
Calculatoarelor personale actuale le pot fi ataate o gam larg de periferice
(legtur reea, sisteme audio, camere digitale,

dispozitive video, televizor etc).

Legtura se face fie folosind porturile (loc de conectare) interfeelor de tip serial (COM,
USB) sau paralel (LPT), fie folosind echipamente fizice dedicate (plac de reea, plac
audio, plac video cu TV-out, tuner TV etc) cu rol de interfa i care folosesc conexiuni
interne standardizate ale unitii centrale ( ISA, PCI, AGP).
3.5.7. Configuraia calculatoarelor personale
Configuraia unui calculator personal se refer la echipamentele fizice ce intr
n componena sa, fiind o descriere sumar i strict a componentelor, ce are scopul de a
18

Calculatoare personale. Arhitectur. Echipamente fizice

furniza date minime asupra firmelor productoare i parametrii principali ce


caracterizeaz performanele i domeniul de utilizare a sistemului.
Un exemplu de configuraie a unui calculator personal poate fi urmtoarea:
!

Plac de baz: ASUS P4V8X-X, SATA, RAID, P4X533

Procesor: PENTIUM 4 2,6 GHz/533

Memorie: 256 MB DDR333 PC2700 Syncron

Unitate disk fix: HDD 120 GB 7200 RPM SAMSUNG

Unitate floppy disk: FDD 1,44 MB 3,5 ALPS

Unitate optic: CD-RW ASUS 52x32x52x

Interfa video: FX 5200 128 MB DDR ASUS, tv-out, DVI

Interfa audio: on board, 6 ch

Plac reea: Realtek 10/100 Mbps UTP

Carcas: Miditower ATX Millenium 400 W

Tastatur: PS2 win

Mouse: PS2

Multimedia: Boxe active LS26A

Monitor: VIEWSTAR 17 CRT OSD TCO99

n Figura 1.7 este reprezentat schematic un calculator personal cu o


configuraie minim de echipamente fizice.

Monitor
Tastatur

Date

Comenzi

CPU
Memorie
Hard-disk
Figura 1.7. Configuraie minim a unui calculator personal

19

prelucrri

LUCRAREA 2

CALCULATOARE PERSONALE.
SISTEME DE OPERARE

1. NOIUNI INTRODUCTIVE
A doua component important a unui sistem de calcul este reprezentat de
ansamblul de programe disponibile la un moment dat, cunoscut sub denumirea generic
de software. n lipsa acestei componente, calculatoarele nu ar putea transfera, memora
sau prelucra date, nu ar putea realiza multitudinea de aplicaii, de la simple jocuri pn
la simulri complexe utilizate n diverse domenii de activitate (cercetare, industrie,
medicin etc).
Programele sunt colecii de instruciuni care determin execuia unor operaii,
activiti, comenzi de ctre echipamentele fizice din componena unui calculator pentru
a rspunde unei cerine concrete a utilizatorului.
Execuia unui program, numit i rulare, presupune existena acestuia n
memoria intern, executarea secvenial a instruciunilor prin transferul acestora n
microprocesor, transformarea n instruciuni proprii microprocesorului, execuia
acestora folosind datele transferate din

memoria intern, transferul rezultatelor n

memoria intern i generarea de comenzi ctre echipamentele periferice pentru


transferul rezultatelor.

Execuia secvenial a instruciunilor de ctre procesor, n

ordinea n care ele sunt scrise n program, poate fi alterat de o instruciune,

fie

necondiionat, fie print-o condiionare local dat de anumite stri logice.


Programele ce aparin unui sistem de calcul la un moment dat, pot fi
mprite n:
!

Programe sistem, grupate n programe de iniializare necesare pornirii


calculatorului, sistem de operare (SO), care fac posibil funcionarea
normal i realizarea sarcinilor primite de calculator de la utilizatori prin
intermediul programelor dedicate, programe utilitare necesare funcionrii
sistemului cu performane maxime, diagnosticri i depanri etc;

Programe de aplicaii, care rezolv problemele specifice ale utilizatorilor


apelnd la programele sistem.

Un sistem de operare se poate considera ca fiind o colecie de programe cu


funcii de coordonare i control asupra resurselor calculatorului.
Prin resursele unui calculator se nelege totalitatea echipamentelor fizice i a
programelor ce pot fi utilizate la un moment dat, n timpul funcionrii acestuia.
Una din funciile de baz ale sistemului de operare este de a ascunde
complexitatea gestionrii hardware-ului i de a degreva utilizatorul de detaliile
referitoare la comanda echipamentelor fizice.
20

Calculatoare personale. Sisteme de operare

2. TIPURI DE SISTEME DE OPERARE


n prezent nu exist un criteriu unitar de clasificare a sistemelor de operare,
motiv pentru care se folosesc mai multe criterii pentru a le putea compara i
caracteriza. Dintre aceste criterii cele mai utilizate sunt:
!

Dup configuraiile hardware ale calculatoarelor ;

Dup modul de alocare a resurselor solicitate la un moment dat;

Dup organizarea intern a programelor ce intr n componena SO.

Dup configuraiile hardware pe care le deservesc, se disting:


!

Sisteme de operare pentru microcalculatoare (PC); aceste sisteme de


operare au ca principale sarcini activarea sistemului la pornirea acestuia,
schimbul de date ntre CPU i memorie sau dintre memorie i
echipamentele periferice, organizarea datelor ntr-un sistem structurat
care s permit att meninerea corectitudinii i integritii, ct i
manevrarea i prelucrarea acestora etc;

Sisteme de operare pentru minicalculatoare; aceste sisteme de operare au


sarcini mai complexe, cum ar fi partajarea (mprirea) resurselor
sistemului de calcul ntre diferii utilizatori, planificarea CPU pentru a
rspunde cererilor tuturor utilizatorilor etc;

Sisteme de operare pentru calculatoare medii, mari, care nu se deosebesc


prea mult, ca funcii, de cele ale minicalculatoarelor.

Dup modul de alocare a resurselor, se disting:


!

Sisteme de operare monotasking; sistemele de calcul cu un astfel de sistem


de operare execut, la un moment dat, un singur program, care rmne
activ din momentul lansrii (activrii) pn la terminarea execuiei;

Sisteme de operare multitasking, care permite utilizarea partajat a


resurselor sistemului de calcul de ctre mai multe programe.

Dup organizarea intern a programelor componente, se disting:


!

Sisteme de operare monolitice, formate dintr-o colecie de proceduri


(programe) care pot fi apelate dup necesiti; execuia unei astfel de
proceduri nu poate fi ntrerupt, aceasta trebuind s execute sarcina n
totalitate; acest tip de sistem de operare nu se mai utilizeaz.

Sisteme de operare cu nucleu, care concentreaz sarcinile importante ntr-o


colecie de rutine (proceduri) care mpreun alctuiesc nucleul sistemului
de operare; toate cererile ctre echipamentele fizice necesit apeluri ale
acestor rutine; acest sistem de operare este specific microcalculatoarelor;

Sisteme de operare cu structur stratificat.


21

Lucrarea 2

3. SISTEMUL DE FIIERE
3.1. Conceptul de fiier
Calculatoarele dispun pentru memorarea i stocarea permanent (timp
ndelungat) a datelor diferite suporturi fizice corepunztoare unui anumit echipament
periferic. Fiecare periferic cu rol de memorare i stocare a datelor are propriile
caracteristici i mod de organizare fizic. Pentru a face posibil utilizarea
calculatoarelor, sistemele de operare i exercit funciile folosind o modalitate uniform
de organizare a datelor, din punct de vedere logic.Astfel, a aprut noiunea de fiier i
organizarea fiierilor ntr-un sistem recunoscut de SO.
Prin fiier se nelege o colecie de date elementare (articole) grupate i
organizate logic ntr-o unitate de memorare, cu scopul de a permite controlul accesului,
regsirea i modificarea elementelor componente.
Pentru ca un utilizator s poat realiza diferite operaii asupra fiierelor i a
coninutului acestora, sistemul de operare are n componena sa un set de rutine
cunoscut sub denumirea de sistem de gestiune a fiierelor. n acest mod, SO asigur
corespondena fiecrui fiier cu un anumit periferic.
Din punct de vedere a utilizatorului ce efectueaz operaii asupra unui fiier
prin intermediul unui program, sistemul de operare face ca acesta s perceap fiierul
ca un ntreg, ntreg ce rezult din organizarea sa logic, fr nici o referire real la
implementarea acestuia pe suportul fizic. Prin sistemul de gestiune a fiierelor,
sistemul de operare are sarcina de a regsi la nivel fizic toate datele organizate logic
ntr-un fiier. Pentru a putea ndeplini aceast sarcin a fost necesar ca suporturile de
memorare i stocare s aib propria organizare fizic.
3.2. Organizarea fizic a fiierelor
Echipamentele periferice sunt, din punct de vedere a funciei pe care o au, de
dou tipuri:
!

Periferice de schimb de date cu mediul extern calculatorului (tastatur,


monitor, imprimant, mouse, etc);

Periferice de stocare a datelor pe timp ndelungat, ce folosesc suporturi


magnetice.

Din punct de vedere a unitii de schimb de date ntre memoria intern i


echipamentele periferice, acestea din urm se mpart n:
!

Periferice bloc (uniti de disc magnetic);

Periferice caracter (imprimanta, tastatur, mouse, monitor).


22

Calculatoare personale. Sisteme de operare

Dintre suporturile fizice de memorare i stocare a datelor cel mai utilizat este
suportul de tip disc magnetic. Aa cum se observ din clasificarea de mai sus, unitatea
de schimb de date ntre memoria intern i unitile de disc magnetic este blocul. n
acest caz, operaiile de I/O (Input/Output-Intrare/Ieire) ntre memorie i discul
magnetic sunt efectuate n grupuri de unu sau mai multe sectoare de disc. Adresarea
unui anumit sector implic precizarea cilindrului, pistei, feei i sectorului. Ca urmare,
un disc poate fi tratat de ctre SO ca un tablou unidimensional de blocuri disc. Astfel, la
nivel fizic, SO consider fiierul ca o succesiune de blocuri. n fapt, la nivelul fizic al
discului magnetic, datele ce alctuiesc fiierul respectiv pot s ocupe un spaiu contiguu
sau nu.
Utilizatorul, prin programul folosit, are la un moment dat acces numai la o
anumit entitate din cadrul unui fiier, cunoscut sub numele de articol sau
nregistrare. Putem spune c un fiier este o mulime ordonat de nregistrri.
nregistrarea reprezint mulimea datelor care fac obiectul unei singure operaii I/O, n
condiiile specifice fiecrui suport fizic.
O unitate de discuri magnetice (hard-disk, dischet) se numete, generic,
volum. n cadrul unui volum datele sunt grupate de ctre SO, la cererile utilizatorului,
n fiiere.
3.3. Tipuri de acces la articole
Accesul la un articol reprezint metoda utilizat pentru localizarea la nivel fizic
a articolelor ce alctuiesc un fiier.
Se cunosc dou tipuri de acces:
!

Accesul secvenial, care presupune efectuarea , n prealabil, a unui numr


de accese egal cu numrul de articole anterioare articolului considerat;

Accesul direct, ce presupune existena unei metode de cutare i


identificare a articolului considerat fr parcurgerea secvenial a
articolelor care l preced; mecanismele prin care este posibil accesul direct
sunt: (1) acces direct prin numr de poziie, numit i acces relativ, (2) acces
direct prin coninut, cnd este necesar ca SO s utilizeze o cheie de acces.

n practic, de multe ori, se combin accesul direct cu cel secvenial.


3.4. Principalele tipuri de fiiere
Criteriile de clasificare a fiierelor sunt destul de numeroase, n continuare
fiind prezentate cele mai uzuale din punct de vedere practic:
!

Dup lungimea (mrimea) unui articol:

Fiiere cu articole de format fix, n care articolele au aceeai lungime;


23

Lucrarea 2

Fiiere cu articole de format variabil, n care fiecare articol are propria


lungime de reprezentare.

Dup posibilitatea de afiare sau tiprire a coninutului se disting:

Fiiere text, al cror coninut poate fi afiat pe ecranul unui monitor


sau poate fi tiprit la imprimant;

Fiiere binare, formate din iruri de octei consecutivi, fr nici o


semnificaie extern, la afiare sau tiprire.

Dup suportul fizic pe care este memorat sau stocat fiierul:

Fiiere pe disc magnetic;

Fiiere tastatur;

Fiiere imprimant;

Etc.

Dup modurile de acces permise:

Fiiere secveniale, care permit numai accesul secvenial; fiierele care


au alt suport fizic dect discul magnetic sunt fiiere secveniale;

Fiiere cu acces direct, care permit accesul direct cel puin la operaia
de citire.

3.5. Specificarea fiierelor


Un utilizator pentru a putea specifica un fiier trebuie s respecte anumite
reguli sintactice impuse de SO. n general, referirea la un fiier se face printr-un ir de
caractere, diferite de caracterul spaiu liber. irul de referin conine cinci zone,
separate prin caractere speciale:
PERIFERIC

CALE

NUME FISIER

EXTENSIE

VERSIUNE

Sintaxa specific fiecrui SO folosete, eventual, numai unele zone. Caracterele


: , \ , . , ; fac parte din sintaxa specificatorului de fiier.
PERIFERIC indic echipamentul periferic unde se afl suportul fizic al
fiierului. Aceste nume sunt impuse de SO. Perifericul implicit este perifericul de tip
unitate de disc magnetic, pe care se afl fiierele cu care lucreaz utilizatorul la un
moment dat.
CALE este un ir de caractere, specific fiecrui SO, prin care se localizeaz
poziia fiierului n structura ansamblului de fiiere. n absena specificrii explicite a
cii, sistemul de operare consider o cale implicit.
NUME FIIER este o succesiune de caractere alfanumerice (litere, cifre,
caractere speciale), atribuite unui fiier de ctre utilizatorul care l-a creat.

24

Calculatoare personale. Sisteme de operare

EXTENSIE (TIP) este o succesiune de caractere atribuite fiierului n


momentul creerii acestuia, avnd drept scop reflectarea coninutului fiierului. n
general, fiecare SO are extensii standard pentru anumite tipuri de fiiere.
VERSIUNE este un numr care difereniaz mai multe versiuni ale aceluiai
fiier. Nu este specific tuturor SO.
n anumite situaii, utilizatorul dorete ca printr-o singur specificare s
desemneze nu un singur fiier, ci o familie (grup) de fiiere. n acest scop se utilizeaz
caracterul * (asterisc), care nlocuiete orice ir de caractere. Aceast modalitate de
specificare se numete specificare generic a unei familii de fiiere. Exist i alte
modaliti de specificare generic, caracteristice numai anumitor SO. Specificarea
generic poate aprea doar n zonele NUME FISIER, EXTENSIE, VERSIUNE.
3.6. Operaii cu fiiere
3.6.1. Operaii cu fiiere la nivel de articol
Principalele operaii ce pot fi efectuate asupra unui fiier la nivel de articol
sunt:
!

Citirea (READ), citirea unui articol din fiier;

Scrierea (WRITE), scrierea unui articol nou n fiier;

Inserarea (INSERT), inserarea unui articol nou ntre dou articole


existente;

tergerea (DELETE), tergerea unui articol dintr-un fiier;

Modificarea (MODIFY),modificarea unui articol cu un altul.

3.6.2. Operaii cu fiiere la nivel de fiier


n continuare sunt prezentate principalele operaii ce se pot efectua asupra
fiierelor considerate ca

entiti de sine stttoare, indiferent de coninutul lor.

Deoarece suportul de tip disc magnetic ofer cele mai multe posibiliti de lucru, se va
face referire doar la operaiile cu acest tip de fiiere, care sunt:
!

Deschidere (OPEN), informeaz SO c un anumit fiier va fi activat de


ctre un program ce se execut;

nchidere (CLOSE), anun SO c fiierul specificat nceteaz a mai fi activ


n timpul execuiei programului activ;

Creare (FILE CREATION, NEW), anun i determin SO s activeze un


nou fiier;

Salvare (SAVE AS. SAVE ), informeaz i determin SO s includ i s


memoreze fiierul specificat n sistemul de fiiere;
25

Lucrarea 2

tergere (DELETE), informeaz i determin SO s elimine fiierul


specificat din sistemul de fiiere;

!
!

Copiere (COPY), realizeaz o copie a fiierului specificat;


Schimbarea numelui (RENAME), schimb numele unui fiier existent n
sistemul de fiiere;

Listarea (PRINT), este un caz particular de copiere a unui fiier, ntr-un


fiier la imprimant sau ecranul monitorului;

Concatenarea (CONCATENATION), mai multor fiiere ntr-un singur


fiier;

Compararea, prin care se verific dac dou fiiere sunt identice, prin
parcurgerea lor secvenial;

Compactarea (COMPRESSION), stocarea unuia sau mai multor fiiere n


form compact, folosind un spaiu de stocare mai redus dect spaiul
necesar pentru fiierele necompactate.

4. SISTEMUL DE OPERARE DOS


Sistemul de operare DOS (Disk Operating System) este unul din sistemele de
operare destinat calculatoarelor personale. Sistemul de operare DOS este un SO cu
nucleu, monoutilizator i monotasking. Realizatorii acestui SO nu au acordat o atenie
deosebit modului de comunicare calculator-utilizator, astfel nct, comenzile sunt
transmise n mod text folosind iruri de caractere ce pot fi interpretate de rutinele SO.
4.1. Structura sistemului de operare DOS
Sistemul de operare DOS se compune din:
!

BIOS (Basic Input Output System), ce cuprinde programele pentru


testarea componentelor hardware ale sistemului (la iniializarea acestuia),
proceduri pentru comanda i controlul operaiilor I/O la nivel fizic,
proceduri pentru tratarea ntreruperilor externe (de la tastatur, de la
unitatea de disc flexibil etc); aceast parte a sistemului de operare este
stocat n memoria ROM a calculatorului;

IBMBIO.COM (IO.SYS), care conine unele extensii ale BIOS-ului,


permind extinderea configuraiei standard prin adugarea de noi
echipamente periferice fr a fi necesar modificarea BIOS-ului;

IBMDOS.COM (MSDOS.SYS), care conine procedurile de tratare a


operaiilor I/O la nivel logic cu discul magnetic;

COMMAND.COM, care este interpretorul de comenzi, avnd ca sarcini


asigurarea interfeei cu utilizatorul, fcnd astfel posibil comunicarea
utilizator-calculator.
26

Calculatoare personale. Sisteme de operare

4.2. Sistemul de fiiere DOS


Pentru a funciona sub sistemul de operare DOS, un calculator trebuie s aib
n configuraie cel puin o unitate de disc magnetic (hard-disk sau floppy-disk), pe care
s fie memorate componentele SO. Discul magnetic pe care sunt memorate
componentele sistemului de operare se numete disc sistem. Procesul prin care se obine
un disc sistem se numete instalare (generare). Instalarea presupune crearea, folosind
un calculator funcional, a imaginii discului sistem ce trebuie s cuprind toate
programele i rutinele SO necesare i suficiente ndeplinirii cererilor utilizatorilor
folosind configuraia hardware existent.
naintea instalrii SO, orice disc magnetic trebuie supus unor operaii
pregtitoare: partiionare, urmat de formatare. Partiionarea se folosete pentru
hard-disk cu scopul de a crea seciuni cu destinaii diferite. Cel mai adesea un harddisk poate conine dou partiii: DOS primar, pe care se vor regsi componentele SO,
i DOS extins, care poate cuprinde una sau mai multe uniti logice. O unitate logic
este o parte a discului fix (hard-disk) care, din punct de vedere logic, este considerat ca
fiind o unitate separat de disc. Formatarea trebuie aplicat tuturor unitilor logice de
disc dup partiionarea discului. Prin formatare se creaz structura de organizare a
fiierelor recunoscut de DOS. n timpul formatrii se verific integritatea fizic i
execuia corect a operaiilor de citire/scriere pentru fiecare sector, se izoleaz
sectoarele cu defecte, se creeaz tabela de alocare a spaiului FAT (Fat Allocation Table)
i directorul rdcin, iar opional se pot copia i componentele sistemului de operare
(pentru discurile sistem). Tabela de alocare a spaiului conine date despre spaiul liber
i cel ocupat, fiind actualizat la fiecare operaie de creare, respectiv tergere de fiiere
de pe disc. Directorul rdcin, identificat prin caracterul \, reprezint primul nivel al
structurii distemului de fiiere DOS.
Sistemul

de

operare

DOS

organizeaz fiierele, pe fiecare suport


de tip disc magnetic, ntr-o structur
arborescent. Acest lucru este posibil
datorit faptului c DOS grupeaz
fiierele, dup dorina utilizatorului, n
directoare (Figura 2.1), ncepnd cu
directorul rdcin.

Acesta poate

conine numele unor fiiere, dar i al


altor directoare, care la rndul lor pot
conine

nume

de

fiiere

i/sau

directoare .a.m.d. Spre deosebire de


directorul
Figura 2.1. Structura arborescent a sistemului de
fiiere DOS

27

rdcin,

toate

celelalte

directoare se numesc subdirectoare.

Lucrarea 2

Directorul este un fiier special creat de sistemul de operare DOS, ce conine numele
fiierelor i subdirectoarelor ce i urmeaz n structura arborescent, precum i adresa
de nceput a acestora. Cu excepia directorului rdcin, creat de sistemul de operare
prin formatare, celelalte directoare sunt create de SO, de obicei, la cererea
utilizatorului. Pentru a putea fi deosebite fiecrui director i se atribuie un nume n
momentul creerii. Directorul n care SO identific un fiier numai prin specificarea
numelui su i, eventual, a extensiei (dac exist sau este necesar) este cunoscut sub
denumirea de director curent.
Pentru a specifica n mod complet un fiier, n cazul sistemului de operare
DOS, trebuie indicate perifericul pe care se afl, directorul n care se creaz sau exist,
numele fiierului i extensia acestuia, dac este necesar. Sintaxa unui specificator de
fiier DOS este urmtoarea:
[d:][cale]\numefisier[.extensie]
Semnificaiile cmpurilor din specificatorul de fiier sunt urmtoarele:
!
!

d: , reprezint numele logic al unitii de disc, specificat printr-o liter;


cale, reprezint o succesiune de nume de directoare, ncepnd cu directorul
rdcin, separate prin caracterul \ , care permite localizarea n mod unic
a fiierului n structura sistemului de fiiere; la specificarea cmpului cale
se poate folosi i numele . (punct), pentru directorul curent, respectiv ..
(punct, punct), pentru directorul imediat ascendent directorului curent;

numefisier, reprezint numele simbolic al fiierului alctuit dintr-o


succesiune de 18 caractere, care pot fi litere, cifre sau caractere speciale;
prin utilizarea caracterelor * (nlocuiete un ir de caractere) i ?
(nlocuiete un singur caracter) se poate specifica generic o familie de
fiiere;

extensia, reprezint numele extensiei fiierului, format din 13 caractere


(de obicei, trei).

Exist cteva nume rezervate, pe care sistemul de operare DOS le folosete


pentru desemnarea unor periferice din configuraia hardware. Ca urmare, aceste nume
nu pot fi folosite pentru denumirea unor fiiere:
!

aux, com1, care este primul port al adaptorului de comunicaie serial;

con, care semnific tastatura (la intrare) i monitorul consolei (la ieire)
(echipamentele periferice pentru comunicarea calculator-utilizator);

prn, lpt1, primul port al adaptorului de comunicaie paralel;

com2, (com3), alte porturi de comunicaie paralel;

lpt2, (lpt3), alte porturi de comunicaie paralel;

null, periferic virtual, utilizat pentru testarea unor programe.


28

Calculatoare personale. Sisteme de operare

Specificarea extensiei este opional la crearea fiierului, fiind ns obligatorie


n cazul referirii unui fiier care a fost creat anterior, iar specificatorul cuprinde acest
cmp, precum i n cazul fiierelor care vor fi prelucrate ulterior cu alte programe.
Cele mai frecvente extensii i tipul de fiier indicat sunt prezentate n
Tabelul 2.1.
Tabelul 2.1
Extensia
EXE
COM
BAT
HLP
INF
SYS
INI

Extensii i tipurile corespunztoare de fiiere


Tipul fiierului
Extensia
Tipul fiierului
Fiier executabil
DAT
Fiier de date
Fiier executabil (comenzi)
TXT
Fiier text (ASCII)
Fiier de comenzi
DOC
Fiier document
Fiiere de asisten
DBF
Fiier baz de date
Fiier cu informaii pentru SO
XLS
Fiier calcul tabelar
Fiier sistem
FOR
Fiier cod surs
Fiier de iniializare
OBJ
Fiier cod obiect

4.3. Interfaa utilizator


Comenzile sistemului de operare permit utilizatorului s comunice cu sistemul
de calcul. n general, prin intermediul acestora pot fi fcute copieri, comparri, tergeri
de fiiere, se poate afia coninutul unor directoare, se pot obine informaii despre
calculator i sistemul de operare etc.
Exist dou tipuri de comenzi DOS: (1) interne, rezidende n memoria intern
(stocate pe ntrega durat de funcionare a sistemului), (2) externe, rezidente pe discul
sistem, pentru executarea lor fiind necesar ncrcarea n memoria intern. Sistemul de
operare DOS trateaz orice fiier cu extensiile COM, EXE, BAT ca i o comand
extern.
Trebuie reinute cteva consideraii generale, valabile pentru toate comenzile
DOS:
!

comenzile sunt urmate, de obicei, de una sau mai multe opiuni


(parametri); unii parametri sunt obligatorii, alii opionali; dac cei
opionali nu sunt specificai, sistemul de operare le atribuie valoarea lor
implicit (predefinit);

!
!

comenzile i parametrii pot fi scrise att cu litere mari ct i litere mici;


comenzile i parametrii trebuie separate prin spaii libere, virgul, punct,
punct i virgul, backslash (/), considerate ca separatori;

comenzile devin active la apsarea tastei RETURN (ENTER).

n funcie de rolul pe care l au n gestiunea resurselor sistemului, comenzile


DOS se mpart: (1) comenzi cu privire la volume; (2) comenzi cu privire la directoare;
(3) comenzi cu privire la fiiere; (4) comenzi filtru; ( 5) comenzi pentru configurarea
sistemului; (6) comenzi informaionale.
29

Lucrarea 2

5. SISTEMELE DE OPERARE WINDOWS


Succesul familiei de sisteme de operare Windows a fost asigurat de interfaa
grafic (GUI-Graphical User Interface), odat cu apariia primului su membru.
Nivelul de ndemnare necesar n realizarea unei aciuni (lansarea unei
comenzi, activarea unui program etc) constituie, din perspectiva utilizatorului, una din
principalele deosebiri ntre o interfa grafic (GUI) i o interfa text. Pentru a putea
activa un program pentru editarea unui text, n cazul lucrului sub DOS, utilizatorul
trebuia s cunoasc directorul unde era memorat programul, apoi s tasteze numele
acestuia i s determine execuia lui prin apsarea tastei RETURN. Doar utilizatorii
experimentai, printr-o configurare corespunztoare a sistemului, puteau activa doar
prin nume un program.

ns, mai ales n cazul comenzilor, se foloseau o serie de

parametri care trebuiau s fie corect folosii, necesitnd un efort de memorare. Apariia
interfeelor GUI, a micorat sensibil nevoia de a memora iruri de caractere, activarea
programelor fiind posibil prin intermediul unor imagini grafice afiate pe ecranul
monitorului. Pentru interfeele text aplicaiile sunt accesate prin tastatur, ns n
cazul sistemelor cu interfa grafic se utilizeaz mouse-ul sau alt dispozitiv de tip
pointer.
Mai important dect avantajele oferite de utilizarea interfeei grafice pentru
dialogul utilizator-calculator, este faptul c Windows sunt sisteme de operare
multitasking. Multitasking-ul presupune ncrcarea n memorie a cel puin dou
programe n acelai timp, fiecare avnd rezervat propria zon de memoria i timp
procesor n mod alternativ, astfel nct utilizatorul are impresia c cele dou programe
se execut simultan. Alte avantaje ale sistemelor Windows sunt comunicaia i
transferul de date ntre aplicaii prin mecanismul DDE (Dynamic Data Exchange),
precum i protocolul OLE (Object Linking and Embedding), care face posibil
combinarea diferitelor aplicaii i integrarea n acelai fiier a datelor obinute cu
programe diferite. Aceste caracteristice

mpreun cu DLL-urile (Dynamic Link

Library), care ajut la dezvoltarea de aplicaii prin furnizarea de subrutine (programe)


standard , precum i alte caracteristici fac din fiecare Windows un sistem de operare ce
poate fi accesibil i util tuturor categoriilor de utilizatori.
Organizarea sistemului de fiiere este similar cu cea descris n cazul
sistemului de operare DOS. Sistemele de operare Windows grupeaz fiierele n foldere
(dosare) i fiiere, iar DOS n directoare, subdirectoare i fiiere. Folderul este
asemntor unui dosar, care poate conine alte dosare, pagini document sau paginitrimiteri. Paginile-trimiteri conin date asupra locului unde se afl alte dosare sau
documente, fiind cunoscute sub denumirea de shortcuts (scurtturi). Shortcut-ul asigur
maparea, adic trimiterea la locaia original a fiierului sau folderului int.
Specificaiile de fiier i folder sunt asemntoare celor din DOS, ns Windows accept
nume cu maximum 255 caractere, inclusiv caracterul spaiu liber.
30

Calculatoare personale. Sisteme de operare

Numele de Windows (ferestre) provine de la ferestrele definite pe ecranul


monitorului ce conin imagini (pictograme, icon-uri, butoane etc) folosite fie pentru
activarea aplicaiilor pe care le reprezint fie transmiterea de comenzi ctre sistem.
5.1. Interfaa grafic Windows
Oricare sistem de operare Windows utilizeaz ecranul monitorului ca fiind
suprafaa de lucru a unui birou real. Aceast suprafa se numete desktop. Desktop-ul
const din toat suprafaa afiabil a ecranului i cuprinde toate celelalte elemente de
interfa (ferestre, pictograme, casete de dialog etc). Aici se pot aranja diferitele obiecte
n funcie de dorina i necesitile de lucru ale utilizatorului. Lucrul cu un anumit
obiect necesit deschiderea acestuia, ceea ce determin apariia unei fereastre de
aplicaie (application window) pe desktop. Cnd s-au ncheiat activitile legate de
respectivul obiect, el poate fi nchis sub forma unei imagini grafice (pictograme) i
aezat pe desktop n aa fel nct s poat fi redeschis la nevoie. Alturi de ferestrele de
aplicaie exist i alte tipuri de ferestre necesare desfurrii dialogului dintre
utilizator i sistem (casete de dialog, ferestre de atenionare, meniuri contextuale etc),
aa cum se poate observa n Figura 2.2.
Desktop

Pictograme

Fereastr de
aplicaie

Meniu
contextual

Butoane
Bara de aplicaii

Figura 2.2. Elemente ale interfeei grafice Windows.

31

Lucrarea 2

Pentru a putea fi utilizate ferestrele, indiferent de tipul lor, conin o serie de


obiecte grafice, cum ar fi: meniul, bara de unelte, bara de stare, bara de defilare
(orizontal sau vertical), butoane, comutatoare, declanatoare etc (Figura 2.3, 2.4, 2.5).

Meniu principal

Butoane funcii uzuale


Denumirea programului

Buton de control
Suprafaa de lucru

Butoane redimensionare
Buton de
nchidere

Fereastr de aplicaie

Figura 2.3. Elemente grafice ale unei ferestre de aplicaie

Submeniu

List opiuni

Meniu principal

Butoane
declanatoare

Figura 2.5. Caset de dialog

Figura 2.4. Meniuri ataate unei ferestre de


aplicaie

32

Calculatoare personale. Sisteme de operare

5.2. Programe utilitare


Sistemele de operare Windows au integrate i programe utilitare cu care pot fi
realizate diferite tipuri de lucrri. Cele mai cunoscute i utile sunt My computer,
Windows Explorer, Control Panel.
5.2.1. Programul utilitar My Computer
Programul My Computer este un utilitar de gestiune a resurselor sistemului,
care n fereastra de aplicaie specific apar sub form de pictograme (Figura 2.6).

Figura 2.6. Fereastra programului utilitar My Computer.

Efectul provocat de un dublu-clic (apsarea dubl a butonului stng al mouseului) dup poziionarea cursorului

grafic al mouse-ului pe o astfel de pictogram

depinde de tipul acesteia:


!

folder, deschiderea folderului determin afiarea n fereastr a folderelor i


fiierelor (sub form de pictograme) pe care le conine;
33

Lucrarea 2

unitate de disc, afiarea n fereastr (sub form de pictograme) a fiierelor


i folderelor pe care le conine;

!
!

fiier executabil, pornirea programului respectiv;


fiier document, deschiderea documentului prin activarea programului cu
care a fost creat sau unul de acelai tip.

Deschiderea unei uniti de disc, activnd opiunea New a meniul File, se pot
crea noi foldere, fiiere de diferite tipuri etc. Celelalte opiuni ale meniului principal i
opiunile submeniurilor corespunztoare permit gestiunea sistemului de fiiere,
configurarea modului de lucru cu acest program, modul de afiare a datelor pe care le
afieaz.
5.2.2. Programul utilitar Windows Explorer
Foarte nrudit i asemntor cu utilitarul My Computer, programul Windows
Explorer este utilizat pentru gestionarea sistemului de fiiere, ns prin configuraia
ferestrei este mult mai adecvat explorrii acestuia (Figura 2.7).

Figura 2.7. Fereastra corespunztoare programului utilitar Windows Explorer.

Se observ c fereastra principal este mprit n mai multe ferestre. Cea din
stnga cuprinde structura arborescent a sistemului de fiiere, nivelele de subordonare
fiind de la stnga la dreapta. Un dublu-clic pe fiecare din nume va determina afiarea
coninutului acestuia n fereastra din dreapta, care este asemntoare cu fereastra
34

Calculatoare personale. Sisteme de operare

My Computer. Se observ c pentru unele nume din fereastra stng exist o caset cu
simbolul + , ceea ce indic faptul c respectivele foldere conin alte foldere i/sau fiiere.
Execuia unui clic pe acest simbol determin afiarea structurii folderului i apariia
simbolului n caseta corespunztoare numelui folderului.
Utilitarul Windows Explorer are posibilitatea

de

face operaii

de

copiere/mutare de foldere/fiiere prin metoda drag-and-drop ntre cele dou ferestre.


Aceast operaie se realizeaz prin poziionarea cursorului grafic pe numele
folderului/fiierului (sau grupului selectat de astfel de obiecte), se apas i se menine
apsat butonul stng al mouse-ului, pn cnd prin deplasarea cursorului mpreun cu
numele selectate se ajunge n noua locaie din a doua fereastr, dup care se elibereaz
butonul mouse-ului i se ateapt efectuarea operaiei.
Prin poziionarea cursorului pe numele obiectului i apsarea butonului drept
al mouse-ului (clic) se deschid meniuri contextuale (list vertical de opiuni ce se refer
la operaii specifice obiectului pe care s-a efectuat clic) care permit efectuarea de
operaii asupra acelui obiect.
5.2.3. Programul utilitar Control Panel
Acest utilitar are rolul de a personaliza configurarea sistemului de calcul n
funcie de necesitile utilizatorului. Prin acest program utilizatorul are acces la date
privind resursele sistemului de calcul i poate modifica modul lor de funcionare
(Figura 2.8).

Figura 2.8. Fereastra de lucru a utilitarului Control Panel

35

LUCRAREA 3

CALCULATOARE PERSONALE.
SOFTWARE DE APLICAII

1. NOIUNI INTRODUCTIVE
Pentru a putea rezolva probleme specifice (creare i modificare de documente
de tip text, imagini grafice, calcule tiinifice etc), pe lng sistemul de operare,
resursele software ale unui calculator trebuie completate cu programe de aplicaii. Dac
sistemul de operare asigur buna funcionare i ntreinerea sistemului de calcul,
programele de aplicaii ofer utilizatorului mijloacele de a crea fiiere de un anumit tip
i de a modifica datele pe care acesta le conine, ele fiind dedicate unor activiti cum ar
fi: (1) editarea i procesarea de fiiere tip text sau document, (2) gestiunea bazelor de
date, (3) calcul tabelar, (4) crearea de imagini grafice, (4) proiectarea asistat de
calculator, (5) crearea de publicaii, (6) prelucrarea de imagini grafice, (7) comunicarea
ntre calculatoare, (8) dezvoltarea de software, (9) procesare multimedia, (10) gestiune
financiar-contabil, (10) pot electronic etc.
Pe lng programele de aplicaii, exist i aa-numitele programe utilitare,
utilizate pentru gestiunea resurselor sistemului, compresia datelor, detectarea i
combaterea viruilor etc.
2. EDITAREA I PROCESAREA DE TEXTE I DOCUMENTE
Crearea unui fiier de tip text sau document este asemntoarea cu activitatea
de redactare a unui text folosind maina de scris. Dac n cazul utilizrii mainii de
scris suportul pe care se stocheaz textul este hrtia, atunci cnd folosim calculatorul
tipul de suport este divers: suport magnetic, suport optic, suport de hrtie. Este evident
c aceast activitate necesit i programe de aplicaii adecvate. Ele sunt capabile,
atunci cnd utilizatorul dorete, s ndeplineasc pe lng funcia de creare a textului i
funciile de salvare (stocarea pe un suport magnetic), deschidere, nchidere, imprimare,
modificare.
Trebuie menionat faptul c este indicat s se fac distincie ntre fiiere text i
fiiere document. Fiierele text nu conin dect litere, cifre i caractere speciale (setul de
caractere ASCII), iar fiierele document vor conine att caracterele ASCII ct i obiecte
create cu alte tipuri de programe de aplicaii (imagini grafice, tabele, sunet etc). pentru
crearea i prelucrarea fiierelor text se folosesc editoarele de texte (Notepad, Edit etc),
iar pentru fiierele document, procesoarele de documente (WordPad, Microsoft Word,
Microsoft Works, Lotus WordPro, Corel Wordperfect etc).
Procesoarele de documente dispun de comenzi prin care se controleaz
caracteristici referitoare la:
36

Calculatoare personale. Software de aplicaii

ncadrarea documentului n pagini cu dimensiuni standardizate, prin


indicarea distanelor dintre text i marginile formatului de pagin;

Evidenierea sau estomparea unor poriuni din document;

Realizarea unor tipuri de aliniere diferite;

Aspectul caracterelor;

Organizarea obiectelor n pagin;

Inserarea de obiecte create cu alte programe de aplicaii (imagini grafice,


fotografii, sunet, animaie etc).

Cu ajutorul programelor de procesare documente moderne se pot obine


documente foarte complexe: cu mrimi i aspect ale fonturilor ntr-un numr mare de
combinaii, text organizat pe coloane multiple cu dimensiuni diferite, cu inserri de
obiecte de diverse tipuri, cu zone de diferite culori etc. ns atunci cnd gradul de
complexitate cerut pentru organizarea datelor n document este ridicat, cum este cazul
la crearea de publicaii, trebuie s se recurg la programe de aplicaii specializate n
DeskTop Publishing (DTP).
Exist dou motive principale care determin utilizarea din ce n ce mai
frecvent a calculatorului n editarea i procesarea de texte i documente:
!

Aspectul grafic; folosind resursele unui calculator se obine relativ uor un


nivel ridicat al calitii grafice a textelor i documentelor;

Valoarea de ntrebuinare; folosind pentru stocare suportul magnetic,


datele coninute n fiierul corespunztor textului sau documentului vor
putea fi refolosite, fie pentru imprimare, transmitere prin mijloace
electronice, includerea n alte documente etc.

2.1. Caracteristici de lucru comune ale programelor pentru


editare i procesare de text
Cele mai frecvente operaii care apar n timpul creerii sau modificrii unui text
sau document, cu excepia scrierii textului folosind tastatura, sunt: (1) poziionarea sau
repoziionarea cursorului n interiorul spaiului alocat pe ecran, care se poate efectua fie
cu tastele direcionale fie prin poziionarea cursorului grafic al mouse-ului i executarea
unui clic; (2) selectarea unei zone de text cu scopul de a o terge, copia, muta sau
modifica; selecia se poate realiza n dou moduri, fie folosind combinaia dintre tasta
Shift i una din tastele direcionale, fie prin meninerea apsat a butonului drept al
mouse-ului i deplasarea acestuia pn se selecteaz ntreaga zon; (3) renunarea la
ultimile operaii efectuate, folosind opiunea Undo din meniul Edit.
Indiferent de programul utilizat exist o serie de comenzi de editare care pot fi
obinute folosind aceleai taste sau combinaii de taste (Tabelul 3.1).
37

Lucrarea 3

Tabelul 3.1
Comenzi de editare obinute prin acionarea unor taste singure sau n combinaii
Tasta sau combinaia
Aciunea produs
Deplasarea i poziionarea cursorului n interiorului textului sau documentului
Sgeat stnga/dreapta
Deplasare stnga/dreapta a cursorului cu un caracter
Sgeat sus/jos
Deplasare sus/jos a cursorului cu un rnd
Home
Salt la nceputul rndului curent
End
Salt la sfritul rndului curent
Page Up
Salt la pagina anterioar de afiare pe ecran
Page Down
Salt la pagina urmtoare de afiare pe ecran
Ctrl + sgeat stnga
Salt la nceputul cuvntului din stnga poziiei curente
Ctrl + sgeat dreapta
Salt la sfritul cuvntului din dreapta poziiei curente
Ctrl + sgeat sus
Salt la nceputul paragrafului anterior
Ctrl + sgeat jos
Salt la nceputul paragrafului urmtor
Ctrl + Page Up
Salt la nceputul paginii anterioare
Ctrl + Page Down
Salt la nceputul paginii urmtoare
Ctrl + Home
Salt la nceputul documentului
Ctrl + End
Salt la sfritul documentului
tergerea/inserarea de caractere sau iruri de caractere
Delete/Del
terge un caracterdin dreapta poziiei curente a cursorului
BackSpace
terge un caracter din stnga poziiei curente a cursorului
Activeaz/dezactiveaz
modul
de
scriere
cu
inserare
i
Insert
dezactiveaz/activeaz modul de scriere prin suprapunere
Comenzi de copiere, mutare, inserare
Copie caracterul sau irul de caractere sau obiecte n clipboard (zon
de memorie alocat pentru stocarea temporar a datelor n vederea
Ctrl + C
transferului n alt poziie n acelai document sau n alte documente
sau fiiere)
Ctrl + X
Mutarea datelor selectate n clipboard i tergerea lor din document
Ctrl + V
Inserarea datelor stocate n clipboard la poziia indicat
Comenzi de anulare, cutare i nlocuire
Anuleaz ultima operaie de editare i reface datele existente naintea
Ctrl + Z
ultimei operaii de editare
Permite cutarea n cadrul documentului a unui caracter sau ir de
Ctrl + F
caractere i, eventual, nlocuirea cu un alt caracter sau ir de caractere

2.2. Editorul de texte WordPad


WordPad este un editor de texte ce poate fi folosit pentru crearea de documente
obinuite, cu posibiliti de lucru relativ reduse. Wordpad asigur utilizatorului
urmtoarele faciliti de editare: (1) operaii la nivel de fiier (creare, salvare,
deschidere, nchidere, imprimare), (2) operaii propriu-zise de editare (creare text,
selectare, copiere, decupare, inserare, cutare, nlocuire), (3) operaii de personalizare a
documentului prin alegerea dimensiunilor paginii, a dimensiunilor zonei cu text,
a atributelor (caracteristicilor) caracterelor, definirea stilului paragrafului.
Fereastra de lucru, prezentat n Figura 3.1 cuprinde urmtoarele elemente:
(1) linia de titlu, (2) linia meniului principal, (3) linia pictogramelor pentru operaii cu
fiiere i operaii de editare, (4) linia pictogramelor pentru stiluri, fonturi, alinieri,
(5) rigla de poziionare, (6) linia de stare, (7) suprafaa de lucru.
38

Calculatoare personale. Software de aplicaii

Linia de titlu
cursor

Linia pictogramelor
pentru stiluri, fonturi,
alinieri

Rigla de poziionare
Linia meniului principal

Linia pictogramelor
pentru stiluri, fonturi,
alinieri

Linia de stare

Suprafaa de lucru

Figura 3.1. Fereastra de lucru a editorului WordPad

Linia de titlu cuprinde pictograma editorului, denumirea documentului


urmat de a editorului, butoanele de minimizare, maximizare i de nchidere a ferestrei
de lucru (Figura 3.2). Prin poziionarea cursorului grafic pe pictograma editorului i
apsarea butonului drept al mouse-ului se deschide un meniu contextual cu opiuni
pentru ferestre. Acelai lucru se obine prin poziionarea cursorului grafic pe linia
titlului i apsarea butonului drept al mouse-ului.

Buton de minimizare

Denumirea editorului

Buton de maximizare

Nume document

Buton de nchidere

Pictograma editorului
Meniu contextual

Figura 3.2. Linia de titlu a editorului WordPad

Linia meniului principal cuprinde opiunile principalelor faciliti de editare.


La activarea fiecrei opiuni se deschide un submeniu cu opiuni referitoare la opiunea
meniului principal (Figura 3.3).
39

Lucrarea 3

Figura 3.3. Linia meniului principal i submeniurile corespunztoare.

Activarea opiunilor din fiecare submeniu determin ndeplinirea urmtoarelor


funcii:
!

Meniul File:

New, creeaz un nou document;

Open, deschide un document existent;

Save, salveaz fiierul creat sub numele curent;

Save As, salveaz o nou copie a fiierului ntr-un fiier nou cu


acelai nume (alt folder) sau cu nume diferit;

Print, imprim fiierul activ;

Print Preview, afieaz paginile aa cum vor fi imprimate;

Page Setup, permite setarea (alegerea dimensiunilor, modul de aezare


i formatul standardizat al paginii de imprimare)

Send, permite trimiterea fiierului ctre pota electronic;

Exit,dezactiveaz editorul i transmite controlul sistemului de operare.


40

Calculatoare personale. Software de aplicaii

Opiunile urmate de caracterele


prin activare determin deschiderea
unor casete

de

dialog,

care

permit

furnizarea de date suplimentare pentru


execuia funciei specifice (Figura 3.4).
De

exemplu,

prin

activarea

opiunii Page Setup se deschide caseta de


dialog

din

Figura

3.4.

Caseta

este

divizat n mai multe zone ce au cmpuri


proprii,

prin

deschiderea

crora

utilizatorul i alege valorile dorite. Orice


caset de dialog cuprinde cel puin dou

[ ] i [Cancel ].

butoane declanatoare: OK
Activarea

butonului

OK

determin

nchiderea

ferestrei

de

dialog

atribuirea valorilor indicate de utilizator

Figura 3.4. Csu de dialog pentru


opiunea Page Setup

pentru cmpurile din caset. Activarea


butonului

Cancel

anuleaz

toate

modificrile fcute de utilizator asupra cmpurilor i nchide caseta de dialog.


Pentru anumite opiuni sunt indicate i combinaiile de taste care determin
realizarea aceleai funcii.
Activarea opiunilor se poate face fie prin poziionarea cursorului grafic pe
numele acestora i executarea unui clic cu butonul stng, fie prin apsarea succesiv a
unor taste. Activarea meniului principal se face prin apsarea tastei Alt, iar
poziionarea pe unul din meniuri cu ajutorul tastelor sgei sau apsarea literei
subliniate. Deschiderea submeniului se face prin apsarea tastei Return, iar
poziionarea pe una din opiuni cu tastele sgei sau tasta corespunztoare caracterului
subliniat. Accesul la diferite cmpuri i butoane ale unei casete de dialog se poate face,
de asemenea, fie cu mouse-ul prin executarea unui clic n zona cmpului sau butonului
fie prin apsarea tastei Tab pentru deplasarea n zona fiecrui cmp, apsarea tastei
Return pentru activarea cmpului sau butonului.
!

Meniul Edit

Undo, anuleaz ultima aciune;

Cut, decupeaz din document zona selectat i o plaseaz n Clipboard;

Copy, copie zona selectat n Clipboard;

Paste, insereaz coninutul Clipboard-ului la punctul indicat prin


poziia cursorului;

Paste Special, nsereaz n document la punctul indicat obiecte


create cu alte programe;

Clear, terge zona selectat din document;


41

Lucrarea 3

Select All, selecteaz ntregul document;

Find, caut caracterul sau irul de caractere indicate;

Find Next, caut o nou locaie n document a caracterului sau irului


de caractere indicate;

Replace, caut i nlocuiete un carcater sau un ir de caractere cu


alt caracter sau ir de caractere;

Links, afieaz sau modific legturile dintre obiecte i document;

Object Properties, deschide o caset de dialog pentru modificarea


proprietilor obiectului activ.

Meniul View:

Toolbar,activarea opiunii determin afiarea liniei pictogramelor


pentru submeniurile File i Edit;

Format bar, activarea opiunii determin afiarea liniei pictogramelor


pentru stiluri, fonturi, alinieri;

Ruler,

activarea

acestei

opiuni

determin

afiarea

riglei

de

poziionare;

Status bar, activarea acestei opiuni determin afiarea liniei de stare;

Options, permite setarea (alegerea) diferitelor tipuri de opiuni


referitoare la configurarea ferestrei aplicaiei (modul de afiare)
(Figura 3.5).

Figura 3.5. Caseta de dialog a opiunii Options.

Aceast caset de dialog permite configurarea ferestrei aplicaiei folosind


butoane radio (Word wrap) i comutatoare (Toolbars). La un moment dat numai unul
din butoanele radio poate fi activ (marcat n caseta din stnga). Comutatoarele au dou
42

Calculatoare personale. Software de aplicaii

poziii corespunztoare strilor activat (marcat n caseta din stnga) i neactivat. n


cazul comutatoarelor pot fi activate mai multe la un moment, ele avnd funcii
independente.
Opiunile meniului View se comport ca un set de comutatoare. Prezena
caracterului naintea opiunii indic faptul c opiunea este activ. Selectarea ei din
nou determin trecerea dintr-o stare n alta.
!

Meniul Insert:

Date and Time, insereaz la poziia indicat data i ora n diverse


moduri de afiare;

Object, insereaz la poziia indicat obiecte create cu alte programe


existente n resursele sistemuluisau alte tipuri de obiecte;

Meniul Format:

Font, schimb stilul i dimensiunea caracterelor;

Bullet Style, creaz o list n document a cror elemente sunt indicate


printr-un punct aezat n partea stng;

Paragraphschimb

caracteristicile

de

editare

paragrafelor

(mrimea spaiului liber de la nceputul paragrafului, alinierea


rndurilor);

Tabs, seteaz i terge mrimea spaiului liber de tip Tab pentru


paragrafele selectate.

Meniul Help:

Help Topics, afieaz coninutul sistemului de asisten;

About WordPad, afieaz date despre program, numrul versiunii i


notia de copyright.

Linia pictogramelor pentru operaii cu fiiere i operaii de editare este format


din pictograme, fiecare avnd o semnificaie precis identic cu a unei opiuni din
submeniul File sau Edit (Figura 3.6). Activarea unei pictograme se face asemntor cu
activarea unei taste sau a unui buton prin apsare. Poziionnd cursorul grafic pe
pictograma dorit i executnd un clic cu butonul drept al mouse-ului are loc activarea
opiunii corespunztoare pictogramei i declanarea funciei acesteia.

Figura 3.6. Linia pictogramelor pentru operaii cu fiiere i de editare.

Aceste pictograme au un grad ridicat de standardizare ele avnd aceeai


semnificaie n majoritatea programelor ce ruleaz pe calculatoare sub Windows.
43

Lucrarea 3

Corespondena dintre pictograme i opiuni este indicat n continuare.


- New,
- Find,

- Open,
- Cut,

- Copy,

- Save,

- Print,

- Paste,

- Print Preview,

- Undo,

-Date and Time.

Linia pictogramelor pentru stiluri, fonturi, alinieri cuprinde pictograme


corespunztoare unor opiuni ale submeniului Format precum i unor cmpuri din
casetele de dialog corespunztoare acestora (Figura 3.7).

Figura 3.7. Linia pictogramelor pentru stiluri, fonturi, alinieri

Semnificaia pictogramelor este cea indicat n continuare.


-

(Font)

prezint

fontul

(forma

caracterelor) curent, folosit n documentul activ; executarea unui clic cu butonul drept al
mouse-ului pe butonul stng al acestei pictograme se deschide o fereastr unde sunt
afiate fonturile disponibile; executarea unui clic pe un alt font i nchiderea ferestrei
determin schimbarea fontului curent; schimbarea fontului se poate face i pentru
caracterele selectate;
- (Font Size) afieaz mrimea curent a fontului utilizat; executarea unui
clic cu butonul stng al mouse-ului pe butonul drept al pictogramei deschide o fereastr
unde sunt afiate toate mrimile predefinite pentru fonturi; executarea unui clic pe o
alt mrime i nchiderea ferestrei determin schimbarea mrimii fontului; schimbarea
mrimii fontului se poate face i pentru caracterele selectate; schimbarea mrimii
fontului la valoarea dorit (exprimat n pt, punctul egal cu 1/72 inches) se poate face i
prin tastarea noii mrimi n zona de indicare a valorii curente i apsarea tastei Return;
- (Bold) determin afiarea i imprimarea caracterelor n stilul ngroat;
- (Italic) determin afiarea i imprimarea caracterelor n stilul nclinat;
- (Underline) determin afiarea i imprimarea caracterelor n stilul subliniat;
- (Align Left) fixeaz alinierea textului n raport cu marginea stng a textului;
- (Center) fixeaz centrarea textului n raport cu marginile spaiului de scriere;
- (Align Right) fixeaz centrarea textului n raport cu marginile spaiului de
scriere;
- (Bullets) insereaz un marcator pentru fiecare paragraf indicat de utilizator i
aliniaz textul n raport cu marcatorul la aceeai distan.
44

Calculatoare personale. Software de aplicaii

Ultimile pictograme (BoldBullets) au rol de comutator, avnd dou stri


activat i neactivat. n starea activat caracterele se afieaz i imprim conform cu
funcia comutatorului. Funcia comutatorului acioneaz i asupra caracterelor
selectate, prin activarea acestuia dup operaia de selectare.
Rigla de poziionare indic pe ecran poziiile marginilor pentru text, coloane,
pagin, raportate la dimensiunile reale ale formatului paginii (Figura 3.8).

c
Figura 3.7. Rigla de poziionare: a- inches; b- points, c- centimetri.

Pe imaginile riglei se observ existena butoanelor cu care se pot alege


alinierile pentru paragrafe i marginile textului n pagin, conform celor dou scale
posibil de vizualizat (aliniere paragraf, aliniere margini).
Linia de stare conine date despre documentul cu care se lucreaz (Figura 3.9).
Linia de stare a editorului WordPad conine doar dou cmpuri, unul pentru indicarea
tastei ce activeaz sistemul de asisten Help, iar al doilea indic dac tasta Num Lock
este activ sau nu (Figura 3.9a).
a
b
Figura 3.9. Linia de stare a editorului WordPad: a-starea 1, b-starea 2.

n cmpul din stnga sunt afiate i scurte indicaii despre funciile


pictogramelor. Pentru a putea fi afiate trebuie doar poziionat cursorul ecran pe
imaginea pictogramei (Figura 3.9b).
2.3. Editarea unui document cu WordPad
Scrierea textului se face conform regulilor obinuite de utilizare a tastelor
alfanumerice, Caps Lock i Shift.
tergerea unui caracter sau ir de caractere se poate face n mai multe moduri:
(1) folosind tastele Backspace sau Delete (Del); (2) selectnd mai nti caracterul sau
irul de caraceter (indicat de utilizat) i apsarea tastelor artate mai nainte;
45

Lucrarea 3

(3) selectarea caracterului sau irului de caractere (indicat de utilizat) activarea


meniului Edit i activat opiunea Clear.
Copierea unui caracter, ir de caractere sau obiect i memorarea n Clipboard
se face prin selectarea caracterului, irului de caractere sau obiectului, urmat de:
(1) folosirea combinaiei de taste Ctrl+C (prezentat anterior), (2) activarea meniului
Edit i opiunii Copy din submeniul corepunztor, (3) activarea pictogramei
corespunztoare opiunii Copy, (4) utilizarea meniului contextual.
Decuparea unui caracter, ir de caractere sau obiect i memorarea n Clipboard
se face prin selectarea caracterului, irului de caractere sau obiectului, urmat de:
(1) folosirea combinaiei de taste Ctrl+X (prezentat anterior), (2) activarea meniului
Edit

opiunii

Cut

din

submeniul

corepunztor,

(3)

activarea

pictogramei

corespunztoare opiunii Cut, (4) utilizarea meniului contextual.


Inserarea unui caracter sau ir de caractere se face prin poziionarea cursorului
la locul dorit (cu tastatura sau mouse-ul) i se execut operaia de inserare. Aceasta
poate fi fcut n urmtoarele moduri: (1) utilizarea tastaturii pentru scriere;
(2) inserarea unui text sau obiect existent n Clipboard folosind combinaiile cunosute
de taste, meniul Edit i opiunea Paste din submeniul corespunztor, activarea
pictogramei Paste sau cu ajutorul meniurilor contextuale prin poziionare cursor grafic
n punctul de inserare, apsare buton dreapta mouse ce determin deschiderea
meniului contextual, activarea opiunii Paste; (3) inserarea prin mecanismul drag-anddrop (selectare, poziionare cursor grafic pe zona selectat, apsare buton stnga +
meninere apsare, deplasare mouse pentru deplasarea seleciei la punctul de inserare,
eliberare buton).
Crearea unui document nou se face prin: (1) combinaia de taste Ctrl+N;
(2) activarea opiunii New din submeniul corespunztor meniului File; (3) activarea
pictogramei corespunztoare opiunii New.
Salvarea unui document apare n dou situaii: (1) salvarea unui fiier nou
creat, cruia trebuie s i se atribuie un nume, sau salvarea unui fiier sub un nume nou;
(2) salvarea modificrilor efectuate asupra coninutului unui fiier folosind acelai
nume.
n prima situaie se utilizeaz opiunea Save As din submeniul corespunztor
meniul File. Aceast opiune poate fi activat doar prin deschiderea submeniului File.
Dup activare se deschide o caset de dialog (Figura 3.10) care cuprinde cmpuri pentru
indicarea folderului n care va fi inclus fiierul, pentru indicarea numelui, pentru

alegerea tipului fiierului. Dup efectuarea setrilor se activeaz butonul Save . Dac

se dorete ca salvarea s nu aib loc cu setrile realizate se activeaz butonul Cancel .


Cea de a dou situaie se ntlnete doar n cazul salvrii unui fiier ce are deja
atribuit un nume. n acest caz se activeaz opiunea Save din submeniul corespunztor
meniului File. Se poate folosi i combinaia de taste Ctrl+S.
46

Calculatoare personale. Software de aplicaii

Figura 3.10. Caseta de dialog corespunztoare opiunii Save As.

Deschiderea unui fiier este posibil doar pentru un fiier creat anterior, atunci
cnd se dorete modificarea, imprimarea sau cunoaterea coninutului su. Operaia de
deschidere se poate face prin utilizarea combinaiei de taste Ctrl+O sau prin activarea
opiunii Open din submeniul corespunztor meniului File. Activarea opiunii determin
deschiderea unei casete de dialog (Figura 3.11) care este foarte asemntoare cu cea a
opiunii Save As.

Figura 3.11. Caseta de dialog a opiunii Open

nchiderea unui document se face prin activarea opiunii Exit din submeniul
corespunztor meniului File. nainte de nchidere se deschide o fereastr de interogare
prin care utilizatorul este ntrebat dac salveaz sau nu modificrile efectuate sau dac
renun la operaia de nchidere.
47

LUCRAREA 4

ETAPELE REZOLVRII PROBLEMELOR CU AJUTORUL


CALCULATORULUI. DESCRIEREA ALGORITMILOR

1. NOIUNI INTRODUCTIVE
Transpunerea pe calculator a modurilor de rezolvare a unor tipuri de probleme
presupune, pe lng cunoaterea problemei (problemelor) i cunotine privind
ntocmirea i reprezentarea algoritmilor, precum i cel puin un limbaj de programare.
Limbajul este principalul mijloc de comunicare. Cele mai cunoscute sunt
limbajele naturale.
Odat cu dezvoltarea tiinei i tehnicii au luat natere limbajele artificiale
folosite la realizarea comunicrii n diferite domenii ale activitii umane, fiind utilizate
de grupuri restrnse de persoane. Astfel, exist limbajul matematic sau al formulelor
chimice.
Pentru a putea fi utilizat, orice limbaj trebuie nvat. nvarea unui limbaj
necesit cunoaterea regulilor de formare a propoziiilor corecte (sintaxa) i a regulilor
ce descriu formarea semnificaiei acestor propoziii (semantica).
Propoziia reprezint o construcie complet, de sine stttoare, ce are un
neles. Propoziiile sunt construite folosind simboluri (semne, caractere), n numr finit,
care mpreun alctuiesc alfabetul limbajului (setul de caractere).
Limbajele de programare sunt mijloace de comunicare ntre programator i
calculator. Programatorul transmite calculatorului prelucrrile pe care trebuie s le
execute acesta din urm pentru ca pornind de la datele de intrare s obin
datele de ieire (rezultate).
Prelucrrile necesare sunt exprimate printr-o succesiune de comenzi sau
instruciuni care alctuiesc ceea ce se numete program. Exprimnd ntr-un program
ceea ce trebuie s fac un calculator, programatorul i transmite acestuia din urm un
algoritm. mpreun cu algoritmul, programatorul trebuie s transmit calculatorului
i informaii despre tipul i organizarea datelor (de intrare, de ieire i uneori
intermediare), precum i despre relaiile dintre ele. Limbajul de programare ofer
posibilitatea transmiterii algoritmului i informaiilor referitoare la date de la
programator la calculator.
2. ETAPELE REZOLVRII UNEI PROBLEME
Principalele etape pe care un programator trebuie s le parcurg pentru a
putea rezolva o problem cu ajutorul calculatorului sunt: (1) specificarea problemei;
(2) proiectarea algoritmului de rezolvare a problemei; (3) programarea propriu-zis;
(4) testarea i depanarea programului; (5) exploatarea i ntreinerea programului.
48

Etapele rezolvrii problemelor cu ajutorul calculatorului. Descrierea algoritmilor

Specificarea problemei. n prima faz se face o analiz a problemei, care are


drept rezultat definirea acesteia sub forma unui enun complet i precis prin care s se
stabileasc ce trebuie s fac programul, adic funciile sale. n acest scop este necesar
s se identifice datele ce se vor prelucra (datele de intrare) i rezultatele cerute (datele
de ieire). Datele de intrare (input), respectiv datele de ieire (output) sunt reprezentate
ca variabile, care furnizeaz notaii simbolice pentru date.
n aceast etap se stabilesc, de asemenea, reprezentrile i organizarea
variabilelor pe suporturile externe de informaie ( hrtia, discul magnetic, ecranul
monitorului).
Variabilele sunt identificate prin nume simbolice i sunt caracterizate prin tip
i structur. Acestea determin modul de reprezentare intern i modul de prelucrare n
timpul execuiei programului.
Proiectarea algoritmului de rezolvare a problemei. Scopul acestei etape
este de a elabora un algoritm prin care s fie ndeplinite funciile programului, precum
i structurile de date folosite.
Noiunea de algoritm nu are o definiie riguroas. Se poate spune c un
algoritm reprezint o secven finit de operaii, ordonat i complet definit prin care
datele iniiale (input) sunt prelucrate i transformate n rezultate (output). nelesul
mai larg al noiunii de algoritm este cel de metod sau procedeu.
Fiecare propoziie care face parte din descrierea unui algoritm este o
instruciune ce trebuie executat de un procesor (uman sau artificial). Fiecare
instruciune implic executarea unor operaii prin care datele sunt prelucrate n sensul
modificrii i transformrii n alte date pn la obinerea rezultatelor. n ansamblu,
algoritmul specific posibile succesiuni de operaii ce determin transformri ale datelor
iniiale, obinndu-se n final rezultate.
Principalele proprieti necesare unui procedeu sau unei metode de prelucrare
pentru a fi algoritm sunt: (1) s fie bine definit; (2) s fie descris exact; (3) s fie finit;
(4) s fie universal.
n general, o problem se poate rezolva prin mai multe metode, care de fapt
nseamn mai muli algoritmi. Acceptarea unui algoritm ca soluie a unei probleme date
necesit realizarea urmtoarelor activiti: (1) elaborarea propriu-zis a algoritmului;
(2) exprimarea algoritmului ntr-un stil clar i concis, folosind metode de descriere
specifice; (3) validarea algoritmului prin verificarea logicii sale; (4) analiza algoritmului
pe baza unor criterii de apreciere a valorii acestuia; rezultatul analizei permite
realizarea unui studiu comparativ pe baza cruia se va alege algoritmul cel mai bine
cotat; de regul, sunt acceptai algoritmii care au un consum minim de resurse (timp de
execuie, memorie alocat).
Modalitile de reprezentare a algoritmilor sunt diverse (reprezentarea n
limbaj natural, tabele de decizie, pseudocod, scheme logice etc), ns, cel mai adesea,
descrierea algoritmilor se face prin: (1) scheme logice; (2) limbaj pseudocod.
49

Lucrarea 4

Schemele logice sunt reprezentri grafice ale algoritmilor, folosind simboluri


care indic tipul aciunii. Simbolurile utilizate pentru alctuirea schemelor logice sunt:
!

Simbol terminal
, utilizat

START

pentru

crearea

blocului

START,

care

marcheaz nceputul unui algoritm;nu poate avea dect


o singur ieire;
STOP

, utilizat

pentru

crearea

blocului

STOP,

care

marcheaz oprirea logic a unui algoritm;nu are dect o


singur intrare;
!

Simbol intrare-ieire
READ
list var

, utilizat pentru crearea blocului de intrare, care indic


transferul datelor de intrare n ordinea i tipul
stabilite prin list (list var); are o singur intrare i o
singur ieire;

WRITE
list var

, utilizat pentru crearea blocului de ieire, care indic


transferul

datelor

de

ieire n ordinea i tipul

stabilite prin list (list var); );are o singur intrare i o


singur ieire;
!

Simbol calcul (proces)


var

, utilizat pentru crearea blocului de calcul (proces),


care indic evaluarea unei expresii e i atribuirea
rezultatului variabilei cu numele var; are o singur
intrare i o singur ieire;

Simbol decizie
p

, utilizat pentru crearea blocului de decizie, care indic


luarea unei decizii n funcie de predicatul p; are o
singur intrare i dou ieiri, dar numai una posibil
la parcurgerea algoritmului;

Simbol conector

,indic legtura ntre punctele n ale unei scheme logice.


50

Etapele rezolvrii problemelor cu ajutorul calculatorului. Descrierea algoritmilor

Simbol nod
, indic punctele de reunire din shema logic; are mai
multe intrri i o singur ieire;

Simbol sgeat
, arat modul de parcurgere a algoritmului; indic un
singur sens i face legtura ntre celelalte simboluri.

Schema logic este un graf orientat ce poate conine trei tipuri de noduri:
(1) nod funcional; (2) nod predicativ; (3) nod de reunire (Figura 4.1).

Figura 4.1. Nodurile unei scheme logice: a-nod funcional; b-nod decizional; c-nod de reunire.
START

n Figura 4.2 se prezint un exemplu de


schem logic pentru un algoritm oarecare.
Limbajul pseudocod poate fi definit ca un

READ
list var

limbaj simbolic situat ntre limbajul natural i


limbajul de programare, obinut prin introducerea

v1

unor reguli specifice limbajelor de programare n

e1

limbajul natural.
Pseudocodul utilizeaz setul de caractere al
limbajului natural cu ajutorul cruia alctuiete un

set de cuvinte simbolice cu semnificaii stricte

p
v2

e2

utilizate n construcii sintactice care simuleaz


structurile necesare descrierii algoritmilor. Aceste
cuvinte se mai numesc i cuvinte cheie.
n limbajul pseudocod se pot construi dou

WRITE
list var

tipuri de propoziii: propoziii standard, ce respect


regulile limbajelor de programare i propoziii
nestandard, apropiate de propoziiile limbajului
natural. Propoziiile nestandard sunt texte care

STOP

descriu

pri

ale

algoritmului

nc

complet

elaborate. Pe lng aceste dou tipuri de propoziii,


Figura 4.2. Exemplu de schem logic

n textul algoritmului pot s apar i propoziii


51

Lucrarea 4

explicative, care pot fi considerate nestandard, numite comentarii.


Descrierea (reprezentarea ) algoritmilor n pseudocod se caracterizeaz printr-o
mare flexibilitate, posibilitatea exprimrii algoritmilor ntr-un limbaj apropiat de cel
natural, o conversie facil a acestora ntr-un limbaj de programare.
Gsirea algoritmului constituie, de cele mai multe ori, etapa cea mai dificil a
rezolvrii unei probleme cu ajutorul calculatorului. Programatorul trebuie s conceap o
list de instruciuni care s descrie secvena de operaii ce vor fi executate de ctre
procesor pentru prelucrarea datelor n scopul obinerii rezultatelor cerute.
Instruciunile utilizate pentru descrierea algoritmilor sub form de pseudocod
se mpart n dou categprii: (1) declaraii de date; (2) instruciuni executabile i
neexecutabile. Structura formal a unui algoritm descris n pseudocod poate fi cea
prezentat mai jos.
n
program nume simbolic;
! comentariu;
declaraii de date;
instruciune;
instruciune;

stop;
end

exemplul

alturat

termenii

utilizai

au

urmtoarele semnificaii:
!

program este cuvntul cheie al primei instruciuni

prin care algoritmul capt un nume simbolic;


!

comentariu reprezint una sau mai multe linii prin

care se fac precizri asupra destinaiei algoritmului sau


explicaii referitoare la logica algoritmului i rolul
instruciunilor ; comentariile sunt utile pe parcursul
elaborrii, validrii, analizei i refacerii;

declaraiile de date sunt instruciuni neexecutabile prin care se stabilesc structura

i tipul datelor ce sunt transformate n urma execuiei programului;


!

grupul de instruciuni ce urmeaz descrie operaiile prin care datele de intrare sunt

transformate n rezultate;
!

instruciunea stop indic sfritul logic al algoritmului i este o instruciune

executabil;
!

instruciunea end indic sfritul algoritmului i este obligatorie.


n urma descrierii unui algoritm n pseudocod, ales ca soluie a problemei, se

obine un program ce poate fi executat de un sistem de calcul.


n prezent pentru proiectarea algoritmilor se utilizeaz frecvent: (1) proiectarea
ascendent sau descendent, (2) proiectarea modular, (3) proiectarea structurat.
Proiectarea ascendent sau descendent se bazeaz pe urmtoarele metode,
derivate din modul de abordare a rezolvrii problemelor: (1) metoda descendent
(top-down, sus-jos), (2) metoda ascendent (bottom-up, jos-sus).
Metoda descendent (top-down) presupune descompunerea problemei iniiale n
subprobleme independente, care vor fi descompuse mai departe n subprobleme de
complexitate mai mic, obinndu-se o atomizare a problemei iniiale. Pentru fiecare
subproblem este elaborat un algoritm de rezolvare propriu pentru care sunt specificate
i interaciunile cu ceilali algoritmi. n final, prin rafinarea (detalierea) algoritmului de
52

Etapele rezolvrii problemelor cu ajutorul calculatorului. Descrierea algoritmilor

rezolvare a problemei iniiale se obine o structur cvasiliniar sau arborescent.


Metoda top-down presupune proiectarea i testarea algoritmului problemei iniiale,
urmate de aceleai activiti pentru fiecare subproblem .a.m.d. pn se ajunge la
subproblemele ultimului nivel de descompunere.
Metoda ascendent (bottom-up) utilizeaz algoritmii unor probleme de
complexitate mic, pe care i asambleaz obinnd algoritmi pentru probleme mai
complexe .a.m.d. pn se ajunge la algoritmul problemei ce trebuie rezolvat. Aceast
metod are marele dezavantaj c nu permite detectarea erorilor de integrare dect dup
ce sunt parcurse toate etapele de integrare a algoritmilor subproblemelor.
n practic, de cele mai multe ori se utilizeaz o metod de proiectare mixt, ce
integreaz cele dou metode.
Proiectarea modular presupune descompunerea problemei n subprobleme ce
sunt rezolvate individual, obinndu-se pentru fiecare un modul. Modulul este
considerat o unitate structural de sine stttoare, fie program, fie subprogram, fie o
unitste de program.Un modul poate conine un alt modul sau poate fi coninut ntr-un
alt modul. Un modul poate fi format din mai multe submodule. Proiectarea modular
presupune identificarea modulelor i a relaiilor dintre acestea, a ordinii de legtur i
de ierarhizare. Rezult c aceast metod poate fi integrat cu cele dou metode
prezentate mai sus, ambele avnd drept rezultat obinerea unor algoritmi pentru
subprobleme, a cror rezolvare poate duce la obinerea de module. Proiectarea modular
are numeroase avantaje legate, n principal, de descompunerea de la complex la simplu
prin aplicarea principiului Divide et Impera (mparte i domin). Problemele simple pot
fi mai uor rezolvate, testate, validate i analizate. n acest fel identificarea posibilelor
erori ce pot s existe este mult mai probabil.
Proiectarea structurat este o metod de proiectare a algoritmilor dar mai ales
un stil de programare. Aceast metod este strns legat de teorema de structur,
potrivit creia orice program executabil este echivalent cu un program alctuit doar cu
trei instruciuni simple, numite citire, scriere, atribuire (read, write,

i trei

tipuri instruciuni compuse, numite secven, selecie, iteraie.


n sens mai larg, proiectarea structurat a algoritmilor const din totalitatea
restriciilor i regulilor de elaborare ce definesc un stil de programare, care se bazeaz
pe proiectarea top-down, proiectarea modular i celelalte metode de proiectare, avnd
drept rezultat scrierea unui program structurat.
Eficiena unui algoritm

depinde printre altele, de structura i modul de

descriere a datelor de prelucrat. Dup complexitatea lor, datele pot fi date scalare
(atomice, elementare) i date structurate (grupate).
Datele sunt caracterizate prin notaie (identificator), atribute i valoare.
Notaia (identificatorul) este un nume care se asociaz unei date cu scopul de a
o distinge de alte date i de a putea fi referite n mod unic n procesele de prelucrare.
Atributele precizeaz proprieti ale datei i determin modul n care aceasta
53

Lucrarea 4

va fi tratat n procesul de prelucrare. Ca exemple de atribute putem enumera: tipul


datei, domeniul valorilor, modul de reprezentare, precizia reprezentrii etc.
Valoarea unei date scalare nu poate fi descompus, ns, valoarea unei date
structurate este format de un grup de valori (n-uplu, n 2). Datele structurate au o
structur proprie care definete modul de aranjare (dispunere) sau relaiile ce se pot
stabili ntre elementele ce le compun. Elementele unei date structurate sunt la rndul
lor date simple sau date structurate.
Conceptual, un tip de date este considerat ca fiind o mulime de valori ce
formeaz domeniul tipului de date. Pe acest domeniu se definesc o serie de operaii,
funcii i relaii care opereaz cu aceste valori. n cazul n care domeniul este format din
date simple, se spune c tipul de date este simplu, iar cnd datele sunt structurate tipul
de date este structurat. O dat structurat are dou atribute: (1) elementele
componente; (2) structura. Structura definete regulile ce stau la baza gruprii
elementelor.
Din punct de vedere al domeniului de valori (natura) asociat unei date
elementare, care conduce la definirea operaiilor intrinseci, se disting: (1) date ntregi
(integer), (2) date reale (real), (3) date booleene (boolean, logical), date caracter (char,
string), date pointer (pointer).
Folosind datele elementare de mai sus se pot forma, de exemplu, date
structurate omogene (array) sau eterogene (record).
De modul cum sunt organizate datele supuse prelucrrii, depinde eficiena
algoritmului de prelucrare.
Programarea propriu-zis. Programarea propriu-zis cuprinde:
!

Editarea fiierului surs, ntr-un limbaj de programare (n cazul nostru


FORTRAN);

Compilarea fiierului surs, operaie prin care se creaz fiierul obiect, n


cod main;

Generarea fiierului executabil prin operaia de editare a legturilor, fiier


ce reprezint programul propriu-zis, ce poate fi executat de calculator;

Executarea programului pe calculator.

Testarea i depanarea programului. Scopul testrii programelor este


depistarea i eliminarea erorilor. Metoda tradiional de testare este aceea a execuiei
programului pentru seturi de date de intrare i ieire a cror corectitudine se stabilete
pe alt cale. Testarea programelor poate fi un mijloc eficient de a indica prezena
erorilor, dar nu i un mijloc de a demonstra prezena lor.
Exploatarea i ntreinerea programului. Fiecrui program trebuie s i se
alctuiasc o documentaie prin care s se precizeze toate informaiile utile despre
programul realizat. Documentaia faciliteaz nelegerea programului de ctre
utilizatori, precum i modificarea ulterioar a acestuia de ctre specialitii implicai n
elaborarea i ntreinerea sa.
54

Etapele rezolvrii problemelor cu ajutorul calculatorului. Descrierea algoritmilor

3. ALGORITMUL DE REZOLVARE A ECUAIEI


DE GRADUL AL DOILEA
Problem: Fiind dai coeficienii reali ai unei ecuaii de gradul al doilea,
a,bR, a 0, s se descrie un algoritm prin care s se calculeze, dac exist, rdcinile
reale ale acesteia.
Specificarea problemei. Fiind cunoscui coeficienii reali ai unei ecuaii
algebrice de gradul al doilea , s se calculeze rdcinile reale ale acesteia prin metoda
cunoscut; dac aceste rdcini exist s fie transferate la o unitate de ieire; dac nu
exist, s fie transferat la o unitate de ieire un mesaj de atenionare.
Stabilirea funciei (funciilor ) algoritmului.
!

Calculeaz rdcinile reale ale ecuaiei:


2
a x + b x + c = 0, a , b , c R , a 0

transfer rezultatele la o unitate de ieire, dac rdcinile reale exist;

transfer la o unitate de ieire un mesaj de atenionare, dac rdcinile


reale nu exist.

Stabilirea datelor, organizarea i reprezentarea acestora. Cu acest


algoritm vor fi prelucrate i se vor obine urmtoarele tipuri de date
!

date de intrare (input): a,b,c variabile scalare de tip real; variabila a


trebuie s fie nenul; notaiile simbolice folosite sunt a,b,c;

date de ieire (output): x1, x2 variabile scalare de tip real; notaiile


simbolice folosite sunt x1, x2; dac rdcinile reale nu exist, datele de
ieire vor fi reprezentate de un mesaj de atenionare; notaia folosit va fi
constanta de tip caracter, Ecuatia nu are radacini reale; dac valoarea
variabilei a este 0 , datele de ieire vor fi reprezentate de un mesaj de
atenionare; notaia folosit va fi constanta de tip caracter Date de intrare
incorecte! a este nenul!

date intermediare: - variabil de tip real; notaia simbolic folosit este


delta; a1 variabil utilizat pentru noua valoare a variabilei a, dac
valoarea iniial a fost 0.

Stabilirea algoritmului de rezolvare. n continuare se prezint descrierea


algoritmului folosind limbajul natural:
instruciune

rspuns

adevrat
fals
-

transfer date de intrare


continu cu d
salt la g
transfer date de ieire

a. definete variabilele: real a, a1, b, c, delta, x1, x2;


b. citete datele de intrare: a, b, c;
c. verific dac a este nul:

(a = 0) ?;

d. scrie Date de intrare incorecte! A este nenul;

55

aciune

Lucrarea 4

e. citete valoarea variabilei a1;


f. atribuie valoarea variabilei a1 variabilei a;

g. atribuie rezultatul evalurii expresiei b 4 a c


variabilei delta;
2

h. verific dac delta este pozitiv: (delta 0)?;


rezultatul

i.atribuie
( b +

evalurii

adevrat
fals

continu cu i
salt la l

transfer date de ieire

transfer date de ieire


-

expresiei

delta ) /( 2 a ) variabilei x1;


rezultatul

j.atribuie

evalurii

expresiei

( b delta ) /( 2 a ) variabilei x2;


k. scrie x1, x2
l. scrie Ecuaia nu are radacini reale;
m. sfrit

Descrierea algoritmului folosind schema logic este artat n Figura 4.3.


Ecuatie_grad_doi

read a,b,c

( delta 0 ) ?
F

( a 0) ?
T
write Date incorecte!
a este nenul!;
read a1;

x1 ( b +

delta ) /( 2 a )

x1 ( b +

delta ) /( 2 a )

write x1, x2

a a1
Write
Ecuatia nu are
rdcini reale
delta b 4 a c
2

end

Figura 4.3. Schema logic a algoritmului de calcul a soluiilor reale ale ecuaiei de gradul al doilea

56

LUCRAREA 5

PROGRAMAREA STRUCTURAT.
INSTRUCIUNI FUNDAMENTALE

1. NOIUNI INTRODUCTIVE
Programarea structurat reprezint o manier de concepere a programelor
respectnd reguli bine stabilite. Scopul programrii structurate este elaborarea unor
programe uor de scris, de depanat i modificat (actualizat) atunci cnd se impune acest
lucru. Programele obinute sunt clare, ordonate, inteligibile, fr salturi i reveniri.
Programarea structurat permite ca programele s poat fi scrise n limbaj pseudocod,
limbaj independent de main (sistem de calcul), convertibil n orice limbaj de
programare. Programarea structurat are ca fundament teorema de structur, care se
aplic pentru programele (algoritmii) cu un singur punct de nceput (o singur intrare)
i un singur punct de sfrit (o singur ieire). n programarea structurat se utilizeaz
trei instruciuni simple (read, write, ) i trei instruciuni compuse (secvena,
selecia, iteraia). Instruciunile compuse sunt exemple de structuri de control: (1)
structura secvenial (secvena), (2) structura alternativ (selecia, decizia), (3)
structura repetitiv (iteraia).
2. INSTRUCIUNI FUNDAMENTALE
2.1. INSTRUCIUNI SIMPLE
Cele mai simple instruciuni de prelucrare ale unui algoritm descris ntr-un
limbaj de programare sunt: instruciunea de citire, instruciunea de scriere i
instruciunea de atribuire.
Instruciunea de citire are urmtoarea form scris n limbaj pseudocod:
read vname [,vname] ...
n care read nseamn citete, iar vname reprezint un nume de variabil.
Modul de execuie este urmtorul: din urmtoarea nregistrare a fiierului de
intrare procesorul citete valori pe care le stocheaz n memorie n celulele cu numele
din lista de intrare; ordinea de stocare este ordinea de la stnga la dreapta a
variabilelor din lista de intrare.
Instruciunea de scriere are urmtoarea form scris n limbaj pseudocod:
write entitate[,entitate]...
57

Lucrarea 5

n care write nseamn scrie, iar entitate un nume de variabila sau o expresie.
Modul de execuie este urmtorul: n fiierul de ieire procesorul creaz o nou
nregistrare cu valorile entitilor din list n ordinea de la stnga la dreapta.
Prin expresie se nelege o serie de prelucrri, indicate prin operatori, efectuate
asupra unor date, care au rol de operanzi.
Instruciunea de atribuire are urmtoarea form scris n limbaj pseudocod :
vname

expr

n care vname este un nume de variabil, expr este o expresie, iar

reprezint semnul

de atribuire.
Dac expr este o expresie numeric, vname este o variabil numeric, dac este
logic, vname este o variabil logic, iar daca este o expresie caracter, vname este o
variabil caracter.
Instruciunea se execut astfel: cu datele existente n memorie procesorul
evalueaz expr i apoi rezultatul este stocat n memorie la adresa variabilei vname.
2.2. INSTRUCIUNI COMPUSE
2.2.1. Secvena
Secvena este o structur format din dou sau mai multe pri ce se execut
fiecare o singur dat. Prin parte nelegem fie o instruciune simpl, fie o instruciune
compus. Este important de subliniat c secvena are o singur intrare i o singura
ieire. Schema logica a unei secvene i descrierea n pseudocod sunt aratate n
Figura 5.1.
Modul de execuie este urmtorul:
- se execut A;
A

A;
B;
C;

- se execut B;
- se execut C;
i secvena ia sfrit.
Dac A, B, C sunt instruciuni simple, n
pseudocod secvena poate fi cea scris ca mai jos:

Exemplu:
a

Figura 5.1. Schema logic i


descrierea pseudocod a unei
secvene.

58

read term1, term2;


suma term1+term2;
write suma;

Programarea structurat.Instruciuni fundamentale

2.2.2. Selecia
Selecia este o structur de control cu dou pri A i B, din care se execut
numai una n funcie de rezultatul unui test logic L. Aceast structur compus are o
singur intrare i o singur ieire. n Figura 5.2 este reprezentat schema logic i
descrierea n pseudocod a unei selecii.
Modul de execuie a seleciei este
urmtorul: cu datele din memorie se evalueaz
L

if L then
A;
else
B;
endif

expresia logic L; dac rezultatul este TRUE se


execut A i selecia ia sfrit; dac rezultatul
este FALSE se execut partea B i selecia ia
sfrit.
Dac A i B sunt instruciuni simple, n
pseudocod selecia poate fi cea artat mai jos:

Exemplu:

Figura 6.2. Schema logic i descrierea


pseudocod a unei selecii.

if ( a > 0 ) then
suma = a + b;
else
suma = a b;
endif

Alturi de forma artat mai sus, se utilizeaz i dou forme derivate:


(1) selecia simpl ( if then ), (2) selecia multipl ( case ).
Selecia simpl este selecia care are numai o parte A, care se execut atunci
cnd rezultatul testului logic L are o anumit valoare. Pentru cealalt valoare a testului
logic se execut urmtoarea instruciune din program (Figura 5.3). Selecia multipl
permite alegerea unei pri din mai multe posibile (Figura 5.4), folosind pentru selecie
un index. Dintre toate prile se va executa aceea pentru care valoarea expresiei
corespunztoare este identic cu valoarea indexului.

if L then
A;

endif

A1

Figura 5.3. Selecia simpl.

A2

A3

A4

Figura 5.4. Selecia multipl.

59

A5

Lucrarea 5

2.2.3. Iteraia
Iteraia este o structur cu o singur intrare i o singur ieire format dintr-o
singur parte (A) ce se execut n funcie de rezultatul unui test logic L. Exist dou
forme de iteraie, iteraie cu testul la nceput, numit do while (Figura 5.5) i iteraie cu
testul la sfrit, numit repeat until (Figura 5.6).

do while (L)
A
end do

repeat
A
until (L)

A
F

Figura 5.5. Schema logic i scrierea n


pseudocod a iteraiei do while.

Figura 5.6. Schema logic i scrierea n


pseudocod a iteraiei repeat until.

Modul de execuie a iteraiei do while este urmtorul: cu datele din memorie se


evalueaz expresia L; dac rezultatul este TRUE se execut A, se evalueaz L, dac
L este TRUE se execut A .a.m.d., pn cnd rezultatul devine FALSE i atunci
iteraia ia sfrit. Dac la prima evaluare a expresiei logice rezultatul este FALSE
iteraia ia sfrit, iar partea A nu se execut niciodat. Pentru ca iteraia s se termine
ntr-un numr finit de pai este necesar ca partea A s modifice valoarea unei variabile
ce apare i n testul L, astfel inct s fie posibil ca dup un numr finit de pai L s
capete valoarea FALSE. Daca aceast condiie nu se indeplinete avem o bucl infinit.
Modul de execuie a iteraiei repeat until este urmtorul: se execut A, se
evalueaz expresia logic L, dac rezultatul este FALSE se execut A, se evalueaz L
.a.m.d. pn ce rezultatul devine TRUE, cnd iteraia ia sfrit. Partea iterat se
execut n acest caz cel puin odat. Evident i buclele (iteraiile) repeat until pot fi
infinite, dac la execuia ei, dup un numr finit de pai, expresia logic L nu poate
cpta valoarea TRUE. n continuare sunt prezentate exemple de astfel de instruciuni
compuse.

Exemplu:

i vinitial ;
do while ( i 100 )
s1 s1 + x ;
s2 s2 + x x ;
i i + p;

i 1;

Exemplu:

enddo

60

repeat
s1 s1 + x 2 ;
s2 s2 + x + y ;
i i + 1;
until ( i n )

Programarea structurat.Instruciuni fundamentale

3. ALGORITMUL DE CALCUL AL ARIEI LATERALE, ARIEI TOTALE


I VOLUMULUI UNUI TRUNCHI DE CON
Schema logic i programul n pseudocod sunt prezentate n Figura 5.7.
TR_CON

r2
l

Read
r1, r2, h, l

h
r1

arial pi l ( r1 + r 2 )
program tr_con
! declararea variabilelor din program
real r1, r2, h, l, arial, ariat, vol, pi;
! citirea datelor de intrare
read r1, r2, h, l;
! calculul ariei laterale, ariei totale,
! volumului
arial pi*l*(r1+r2);
ariat arial+pi*(r1**2*r2**2);
vol pi*h*(r1**2+r1*r2+r2**2)/3;
! scrierea datelor de ieire
write arial, ariat, vol;
end

ariat arial + pi ( r1 2 + r 2 2 )

vol pi h ( r1 2 + r1 r 2 + r 2 2 ) / 3

Write
arial, ariat, vol

END

a
b
Figura 5.7. Algortimul de calcul al ariei laterale, ariei totale, volumului unui trunchi de con:
a-schema logic; b-program n pseudocod.

4. ALGORITMUL DE CALCUL AL REZISTENEI ECHIVALENTE


A UNUI CIRCUIT
S se realizeze un algoritm pentru calculul rezistenei echivalente a unui
circuit format din dou rezistoare legate fie n serie, fie n paralel (Figura 5.8).
R1
R1

R2
R1

Figura 5.8. Circuit cu rezistene: a-legate n serie; b-legate n paralel.

61

Lucrarea 5

Schema logic i programul n pseudocod sunt prezentate n Figura 5.9.


R_ECH

R serie = R1 + R 2
R paralel =

Read
r1, r2

1
1
R1

rechsr r1 + r 2

1
R2

program r_ech
! declararea variabilelor
real r1, r2, rechsr, rechpl;
! citirea datelor de intrare
read r1, r2;
! calculul rezistenei echivalente
rechsr r1+r2;
rechpl r1*r2/(r1+r2);
! scrierea datelor de ieire
write rechsr, rechpl;
end

rechpl r1 r 2 /( r1 + r 2 )

Write
Rechsr, rechpl

END
a

Figura 5.9. Schema logic i programul n pseudocod pentru calculul rezistenei echivalente.

5. ALGORTIMUL DE CALCUL AL UNEI SUME


n

S se descrie un algoritm pentru calculul sumei

i .
i =1

Pentru acest program singura dat de intrare este variabila de tip ntreg n.
Suma celor n termeni 1/i este singura dat de ieire, variabil de tip real. Variabila i
este o variabil intermediar cu care se calculeaz fiecare termen al sumei i se asigur
ncheierea calculului sumei ntr-un numr finit de pai. Schema logic i programul n
pseudocod sunt prezentate n Figura 5.10.
6. ALGORITMUL PENTRU SORTAREA A DOU NUMERE
N ORDINE CRESCTOARE
Fie dou numere ntregi m i n. S se scrie un algoritm pentru sortarea n
ordine cresctoare a celor dou numere.
Programul are dou date de intrare, variabilele de tip ntreg m i n,
reprezentate de cele dou numere, dou date de ieire nrmin i nrmax, varabile de tip
ntreg (Figura 5.11).
62

Programarea structurat.Instruciuni fundamentale


program calc_suma
! declararea variabilelor
integer n, i;
real suma;
! citirea datelor de intrare
read n;
! iniializarea variabilelor
s 0;
i 1;
! iteraie condiionat posterior
! pentru calculul sumei
repeat
s s + 1/ i;
!
instruciune de atribuire
!
necesar trecerii la urmtorul
!
termen
i i + 1;
until ( i n )
! scrierea datelor de ieire

CALC_SUMA

read
n

s 0

i 1

s s + 1/ i

i i +1

(i n)?

b
Figura 5.10. Schema logic i programul n
pseudocod pentrul calculul unei sume.
SRT_NR

read
x,y

write
s

(mn)?

END

T
program srt_nr
! declararea variabilelor
integer n, m, nrmin, nrmax;
! citirea datelor de intrare
read m, n;
! sortarea n ordine cresctoare
if (m n) then
nrmin m;
nrmax n;
else
nrmin n;
nrmax m;
endif
write nrmin, nrmax;
end

nr min m;

nr min n;

nr max n ;

nr max m

write
nrmin, nrmax

END

Figura 5.11. Descrierea n pseudocod i schema logic a algoritmului de sortare a dou numere.

63

LUCRAREA 6

ETAPELE REALIZRII UNUI PROGRAM.


PRIMUL PROGRAM FORTRAN

1. NOIUNI INTRODUCTIVE
Limbajele de programare reprezint unul din mijloacele principale de
comunicaie om-main. Prin limbaj de programare se nelege, n general, orice limbaj
folosit pentru descrierea algoritmilor i a structurilor de date. Elementul constitutiv al
oricrui limbaj de programare este instruciunea, care reprezint exprimarea ntr-o
form riguroas a unei cereri de utilizare a unei resurse a unui

sistem de calcul.

Fiecare instruciune precizeaz tipul operaiei, locaia de stocare a operanzilor i locaia


pentru stocarea rezultatelor. O succesiune de instruciuni, care definesc n mod univoc
un algoritm de rezolvare a unei probleme, constituie un program.
Primele calculatoare executau programe scrise n cod main, adic
instruciunile

erau

scrise

form

numeric.

Pentru

reprezentri

externe

calculatorului, instruciunile se scriau folosind iruri de cifre binare, octale sau


hexazecimale. n acelai mod erau reprezentate i datele ce erau prelucrate de aceste
programe. Folosirea acestui mod de scriere a programelor a avut foarte multe
neajunsuri, n special legate de propagarea erorilor, utilizare greoaie, documentare,
modificare i ntreinere dificile, inexistena portabilitii programelor (posibilitatea
execuiei aceluiai program pe sisteme de calcul diferite). Ca urmare, au aprut
limbajele de asamblare, care dei au rmas n continuare dependente de componena
hardware, au permis apariia primelor elemente specifice programrii simbolice (coduri
pentru instruciuni, adresarea simbolic, utilizarea microinstruciunilor, acces la
biblioteci de subprograme etc).
Dificultile impuse de utilizarea limbajelor main sau a limbajelor de
asamblare n dezvoltarea programelor, au determinat apariia n anii 50 ai secolului
trecut a unor limbaje apropiate de limbajul natural, dar care respectau precizia i modul
direct de adresare a limbajului main. Aceste limbaje au cptat denumirea de limbaje
de nivel nalt. Limbajele de nivel nalt sunt limbajele de programare pentru care
tipurile de date, operaiile de prelucrare i control i, n consecin programele nu sunt
dependente de sistemul de calcul pe care se execut, de modul de reprezentare intern a
datelor i a operaiilor specifice acestuia Avantajele utilizrii limbajelor de nivel nalt n
comparaie cu cele anterioare sunt: (1) naturalee (apropiere de limbajul natural i
matematic), (2) uurina de nelegere i utilizare, (3) portabilitate, (4) eficien n
scriere.
Creterea numrului de limbaje de programare a determinat clasificarea
acestora dup diverse criterii. O astfel de clasificare mparte limbajele de programare n
clase: (1) limbaje procedurale sau algoritmice, care fac parte din categoria limbajelor de
64

Etapele realizrii unui program. Primul program Fortran

nivel nalt (Fortran, Algol, Pascal, Basic etc), (2) limbaje neprocedurale sau limbaje de
nivel foarte nalt (succesiunea instruciunilor scrise n program influeneaz n mic
msur succesiunea executrii lor), (3) limbaje specializate sau orientate pe problem,
(4) limbaje conversaionale, care asigur dialogul utilizator-calculator pe parcursul
execuiei programului), (5) limbaje ale inteligenei artificiale.
Specificarea oricrui limbaj presupune definirea sintaxei, semanticii i
pragmaticii limbajului. Sintaxa (studiul structurii limbajului) reprezint un set de
reguli ce guverneaz alctuirea mulimii propoziiilor din limbaj. Definirea riguroas a
sintaxei impune folosirea unor elemente de teoria limbajelor formale: vocabular,
propoziie,

fraz, gramatic etc. Utilizarea efectiv a acestor elemente presupune

folosirea unui limbaj special destinat exprimrii regulilor gramaticale, numit


metalimbaj. Cel mai cunoscut este metalimbajul BNF (Backus Naur Form). Semantica
este reprezentat de un set de reguli ce determin sensul, semnificaia propoziiilor
ntr-un limbaj. Dac n

cazul sintaxei principala problem este cea a specificrii

mulimii propoziiilor corecte, n cazul definirii semanticii problema principal este cea
a specificrii semnificaiei propoziiilor corecte. Pragmatica este o mulime de reguli ce
descriu formarea efectului propoziiilor limbajului pentru un anumit receptor. n cazul
limbajelor de programare pragmatica are legtur cu studiul eficienei programelor,
independenei fa de main etc.
Primul limbaj de programare de nivel nalt standardizat a aprut n anul 1954
i s-a numit FORTRAN (FORmula TRANslation). Limbajul Fortran este un limbaj
procedural, conversaional, orientat ctre rezolvarea problemelor din domeniile tehnicoinginereti.
2. ELEMENTELE DE BAZ ALE LIMBAJULUI FORTRAN
Elementele de baz ale limbajului Fortran sunt:
!

Setul de caractere: literele mari i mici ale alfabetului limbii engleze, cifrele
arabe (sistemului de numeraie zecimal) i caractere speciale; cu acest set
de caractere, respectnd sintaxa specific limbajului, se pot forma entiti
cum ar fi: cuvinte cheie, nume simbolice (identificatori), etichete, constante,
expresii, instruciuni etc;

Cuvintele cheie sunt cuvinte standardizate folosite n formarea i definirea


instruciunilor (dimension, real, integer, data, read, write, print, do, enddo,
if, then, else, endif etc);

Nume simbolice, iruri de caractere atribuite de programator pentru


uniti de program i variabile;

Etichetele sunt numere de maximum cinci cifre ce desemneaz o


instruciune n cadrul programului cu scopul de a putea face referin la
ea;
65

Lucrarea 6

Constantele sunt date ce nu i schimb valoarea n timpul execuiei


programului;

Expresiile sunt formate din operanzi (date de prelucrat) i operatori


(operaii de prelucrare).

Programele scrise n limbaj Fortran sunt formate din construcii sintactice


numite instruciuni i opional comentarii. Instruciunile descriu datele prelucrate de
program i operaiile algoritmului de rezolvare a problemei.Instruciunile pot fi
executabile i neexecutabile. Cele executabile descriu operaiile ce trebuie executate
(citire, scriere, atribuire, control, operaii intrare/ieire), iar cele neexecutabile descriu
datele utilizate i caracteristicile acestora, tipul unitilor de program etc.
3. ETAPELE REALIZRII UNUI PROGRAM
Procesul dezvoltrii unui program executabil necesit cteva etape:
!

Editarea fiierului surs scris ntr-un limbaj de programare;

Compilarea fiierului surs, ce are ca rezultat obinerea fiierului obiect,


adic programul n limbaj binar, specific calculatorului;

Generarea programului executabil, sau altfel spus combinarea dintre


fiierului obiect, obinut anterior, cu fiiere obiect din bibliotecile
calculatorului;

Lansarea n execuie a programului executabil, ce va avea ca efect


prelucrarea datelor de intrare, n urma creia se vor obine datele de iesire.

Editarea fiierului surs se face utiliznd un editor de texte. Numele fiierului


surs va fi urmat, obligatoriu, de extensia FOR. Precizarea extensiei este necesar
prelucrrii ulterioare, pentru a obine fiierul obiect. Textul programului este divizat n
uniti fizice numite linii ale fiierului surs. Pentru fiierele surs scrise n limbajul de
programare FORTRAN n form fix, liniile au o lungime de 80 coloane. n coloanele
1-5 se scriu etichetele instruciunilor. Pentru scrierea instruciunilor se folosesc
coloanele 7-72. Dac n coloana 6 este scris orice caracter FORTRAN cu excepia
caracterului blanc (spaiu liber) sau 0, atunci acea linie este o continuare a liniei
precedente. Pe o linie se gsete o singur instruciune, ce poate fi continuat pe mai
multe linii. O instruciune nu poate avea mai mult de 20 de linii. Coloanele 73-80 sunt
ignorate de ctre compilator. Caracterul C sau * n coloana 1 indic faptul c ntreaga
linie este un comentariu. De asemenea, caracterul !, dac nu face parte dintr-o
constant caracter, marcheaz nceputul unui comentariu, ce se termin cu sfritul
liniei. Comentariile sunt ignorate n procesul ulterior de prelucrare, avnd doar scopul
de a face programul mai inteligibil.
66

Etapele realizrii unui program. Primul program Fortran

Compilarea fiierului surs este operaia de prelucrare a acestuia prin care


programul este rescris (tradus) n limbaj cod main. Traducerea fiierului surs n
limbaj cod main se realizeaz cu ajutorul unui program complex numit compilator.
Acest program are ca intrare fiierul surs FORTRAN, iar ca ieire fiierul obiect.
Generarea programului executabil se face prin intermediul unui program numit
editor de legturi (linker). Editorul de legturi prelucreaz fiierul obiect n scopul
construirii programului executabil, pentru ca acesta s poat fi executat pe calculatorul
respectiv.
Dup realizarea programului executabil, acesta poate fi lansat n execuie
(activat) ca orice alt nume prin numele su.
Editarea, compilarea i editarea legturilor necesit utilizarea unor programe
de servicii dedicate unor astfel de lucrri. n prezent exist pachete de programe
integrate pentru dezvoltarea de programe. Unul dintre aceste pachete de programe este
i Developer Studio.
Acest produs software, care este un mediu de dezvoltare a programelor,
lucreaz sub sistemul de operare Windows i folosete, evident, o interfa grafic cu
programatorul. Lansarea n execuie a acestui mediu de programare se poate face fie
prin dublu click cu mouse-ul pe pictograma corepunztoare din fereastra Windows, fie
prin apsarea butonului Start din linia de stare a ferestrei Windows, deschiderea
meniului Programs, alegerea submeniului Visual Fortran, deschiderea acestuia i
alegerea comenzii Developer Studio.
Interfaa grafic a produsului Developer Studio cuprinde urmtoarele
elemente:
!

Linia meniului principal;

Pictogramele corepunztoare unor comenzi existente n submeniurile


meniului principal;

Fereastr corespunztoare spaiului de lucru (Workspace),n care se


regsesc informaii privind fiierele asociate cu un anumit program; spaiul
de lucru se deschide n mod automat la compilarea fiierului surs; la
ntrebrile sistemului se apas butonul Yes;

Fereastr corespunztoare fiierului text, ce va stoca programul FORTRAN


propriu-zis; un fiier text se creaz fie prin alegerea comenzii New din
submeniul File, fie prin realizarea unui click cu mouse-ul pe pictograma
corespunztoare; fiierele text ce conin programe scrise n limbaj
FORTRAN trebuie salvate pe discul fix avnd n mod necesar extensia
FOR, altfel nu vor fi compilate. Pentru a realiza acest lucru se alege i
lanseaz comanda Save As (fie din submeniul File, fie prin realizarea
unui click pe pictograma corespunztoare); prin activarea comenzii se
deschide o fereastr de dialog ce ne permite s alegem folderul
(subdirectorul) unde stocm fiierul, numele i extensia acestuia, dup care
67

Lucrarea 6

se apas butonul Save; la redactarea textului programului se va ine cont


de regulile de scriere a fiierelor surs FORTRAN artate mai sus;
!

Fereastr corespunztoare afirii rezultatelor obinute n urma operaiei


de

compilare,

respectiv

editare

legturilor

(generrii

fiierului

executabil);
!

Meniul Build conine comenzile necesare operaiei de compilare si generare


a fiierului executabil; acestea sunt Compile i Build name.exe; aceste
comenzi au i pictograme corespunztoare; lansarea n execuie se face cu
comanda Execute (sau pictograma corespunztoare).

Dac compilarea fiierului surs s-a efectuat cu succes (sistemul nu indic erori
de sintax) se creaz fiierul obiect ce are acelai nume cu fiierul

surs, dar cu

extensia OBJ. Fiierul obiect se obine doar n cazul n care toate instruciunile
fiierului surs au respectat ntocmai regulile sintactice ale limbajului de programare.
Dac n fiierul surs exist erori de sintax, n urma compilrii este generat un fiier
text ce cuprinde o list a erorilor de sintax i informaii minime asupra tipului i
locului acestora n program. Dup corectarea lor, prin modificarea textului fiierului
surs, acesta din urm se compileaz din nou. Procesul se repet pn nu mai exist
mesaje despre erorile de sintax.
Dup compilare se lanseaz comanda de generare a fiierului executabil.
Realizarea fiierului executabil ne permite executarea programului.
4. PRIMUL PROGRAM FORTRAN
4.1. Declararea tipului variabilelor scalare
O variabil scalar este un obiect notat cu un nume ( vname). Pentru a specifica
tipul i unele atribute ale variabilelor ce descriu modul de prelucrare a acestora n
program se folosesc instruciune de declarare a tipului, care sunt instruciuni
neexecutabile.
Limbajul Fortran utilizeaz cinci tipuri de date scalare: intreg, real, complex,
logic, caracter. Pentru fiecare tip exist un cuvnt cheie: integer, real, complex, logical,
character.
Sintaxa formal a unei instruciuni de declarare a tipului variabilelor scalare
este:
spec_tip [[, atrib]::] lista
n care spec_tip este unul din cuvintele cheie de mai sus, care indic tipul variabilei
scalare, atrib este un atribut, iar lista este o list de nume de variabile scalare separate
68

Etapele realizrii unui program. Primul program Fortran

prin separatorul virgul.


4.2. Instruciuni de citire, scriere, atribuire
Citirea i scrierea cu formatarea condus de list. n limbajul de
programare FORTRAN exist posibilitatea s se asigure conversia valorilor din forma
extern de codificare, specific limbajului, n forma de codificare specific memoriei
intern i invers, fr a furniza n mod explicit modul de afiare sau imprimare descris
ntr-o specificaie de format. Acest lucru este posibil prin editarea condus de lista,
numit i formatare implicit sau formatare condus de list.
Instruciunea de citire cu formatare condus de list are sintaxa:
read*, [vname[,vname]...]
Asteriscul (*) nseamn ca formatul este lsat la alegerea celui ce pregtete
fiierul de intrare. Modul de execuie este urmtorul: din urmtoarea nregistrare a
fiierului de intrare creat de la tastatur i afiat pe ecranul monitorului, procesorul
citete valori pe care le stocheaz n memorie la adresele de memorie ce corespund
variabilelor din lista de intrare. Este necesar ca datele existente n nregistrare s fie de
acelai tip cu variabilele din lista de intrare.
Exist urmtoarele reguli i restricii: (1) nregistrarea este format din valori
i separatori de valori, (2) dac lista nu are nici un element, se sare o nregistrare din
fiierul de intrare.
Valorile permise sunt:
-

zero - o valoare nul ce se scrie astfel , , ( ntre separatori nu este


scris o valoare);

c - constant;

r*c - constanta c este repetat de r ori;

r* - valoare nul repetat de r ori.

Separatorii permii sunt:


-

, - o virgul, opional precedat sau urmat de blancuri unul dup


altul;

/ - un slash, opional precedat sau urmat de blancuri unul dup altul;

- un blanc ntre dou valori non blanc.

nregistrarea se creaz de ctre programator de la tastatur i apare pe ecranul


monitorului.
Instruciunea de scriere cu formatare condus de list are sintaxa:
69

Lucrarea 6

print*, [entitate[,entitate]...]
Asteriscul (*) n instruciunea PRINT nseamn formatare implicit, adic
formatul datelor de ieire este lsat pe seama computerului. Modul de execuie este
urmtorul: n fiierul de ieire, ecranul terminalului, se creaz o nregistrare, adic se
scrie o nou linie, linie ce conine n ordinea de la stnga la dreapta valorile entitilor
din lista de ieire. Dac lista nu are nici un element n fiierul de ieire se scrie o
nregistrare vid, ce are doar blancuri.
Instruciunea de atribuire scalar. Instruciunii de atribuire simple din
programarea structurat, n Fortran, i corespunde o instruciune executabil numit
instruciune de atribuire scalar ce are urmtoarea sintax:
var = expr
n care var este un nume de variabil, iar expr o expresie. Regulile de sintax impun ca
ntre tipul variabilei i tipul expresiei s fie acelai. n funcie de tipul datelor scalare
avem instruciune de atribuire scalar numeric, logic sau caracter.
4.3. Program Fortran pentru calculul ariei laterale, ariei totale
i volumului unui trunchi de con drept
n continuare este artat programul scris n limbaj Fortran, n form fix,
pentru algoritmul de calcul al ariei laterale, ariei totale i volumului unui trunchi de
con drept. Schema logic i programul n pseudocod pentru acest algoritm sunt
prezentate n Lucrarea 5.
15

772
program tr_con

declararea variabilelor din program


implicit none
real r1, r2, h, l, arial, ariat, vol, pi

citirea datelor de intrare


read*, r1, r2, h, l

calculul ariei laterale, ariei totale, volumului


pi = 3.14
arial = pi*l*(r1 + r2)
ariat = arial + pi*(r1**2 + r2**2)
vol = pi*h*(r1**2 + r1*r2 + r2**2)/3.

scrierea datelor de ieire


print*, arial, ariat, vol
end

70

7380

CONSTRUCIA IF. PROGRAMUL SEMN_NR

LUCRAREA 7

1. CONSTRUCIA IF
O constructie IF selecteaz pentru execuie cel mult un bloc de instruciuni i
construcii. Sintaxa instruciunii este:
if (expr1) then
bloc1
[else if (expr2) then
bloc2]...
[else
bloc3]
endif

Aici expr1, expr2 sunt expresii logice scalare,


bloc1,

bloc2,

bloc3

reprezint

fiecare

un

bloc

de

instruciuni. Trebuie luate in consideraie urmtoarele


reguli i restricii:
!

se execut cel mult unul din blocurile construciei;

este posibil ca nici un bloc s nu se execute;


!

dupa instruciunea ELSE nu sunt permise instruciuni ELSE IF;

sunt interzise salturile la o instruciune ELSE IF sau la o instruciune ELSE;

in interiorul unei construcii IF este permis saltul la END IF din oricare din
blocurile construciei IF; saltul dinafar la END IF este permis, dar este
considerat o caracteristic depit.
Construcia IF se execut astfel: expresiile logice sunt evaluate n ordine pn

ce se gasete una adevarat; atunci se execut primul bloc ce urmeaz dup prima
expresie adevarat i execuia construciei IF se termin. Expresiile logice adevrate
care urmeaz nu mai au efect. Se poate ntmpla ca nici una din expresiile logice ale
construciei s nu fie adevrat. n acest caz se execut blocul ce urmeaz dup
instruciunea ELSE dac exist unul; n caz contrar nu se execut nici unul din
blocurile construciei.
Cazul cel mai simplu al construciei IF este selecia cu schema logic artat n
Figura 7.1, care n FORTRAN se poate codifica ca mai jos.
Cazul unei construcii IF ce conine o
instruciune ELSE IF este n esen o selecie

expr

if (expr) then
A;
else
B;
endif

ce conine o alta selecie (una din pri este o


alta selecie), schema logic fiind artat n
Figura 7.2.
Este posibil i o alt codificare n
FORTRAN pentru construcia IF anterioar,
n care unul din blocuri s fie o construcie IF.

Figura 7.1. Construcia IF n Fortran.

Codificarea n FORTRAN pentru cele dou


variante este prezentat mai jos.
71

Lucrarea 7

Varianta 1
if (expr1) then
a
else if (expr2) then
b
else
c
end if

expr1

expr2

Varianta 2
if (expr1) then
a
else
if (expr2) then
b
else
c
end if
end if

Figura 7.2. Construcia IFELSE IF.

Cazul unei construcii IF cu doua instruciuni ELSE IF corespunde schemei


logice din Figura 7.3, unde A, B, C, D sunt blocuri de instruciuni sau construcii.
Codificarea n FORTRAN este urmtoarea:

expr1

if (expr1) then
a
else if (expr2) then
b
else if (expr3) then
c
else

end if

expr2

expr3

Figura 7.3. Schema logic a


construciei IfELSEIFELSEIF

72

Construcia IF. Programul SEMN_NR

2. PROGRAMUL SEMN_NR
Schema logic i programul n pseudocod a algoritmului pentru determinarea
semnului unui numr ntreg sunt prezentate n Figura 7.4.

program semn
! declararea variabilelor
integer numar, semn;
! citirea variabilelor
write Introduceti un numar intreg;
read numar;
! identificarea semnului
if (numar<0) then
semn = -1;
else if (numar=0) then
semn = 0;
else (numar=0) then
semn = +1;
endif
write Semnul este =, semn;
end

SEMN_NR

write
introduceti un
numar intreg

read
numar

(numar<0)

T
semn = -1

F
(numar=0)
T
semn = 0

semn = +1

write
semnul este,
semn

END

Figura 7.4. Schema logic i programul n pseudocod


pentru determinarea semnului unui numr.

Programul Fortran ce descrie acest algoritm este prezentat n continuare.

73

Lucrarea 7
15

772

7380

program semn_nr
c

declararea variabilelor din program


implicit none
integer numar, semn

crearea unui dialog


print*, Intoduceti un numar intreg

citirea datelor de intrare


read*, numar

alegerea semnului numarului


if (numar.lt.0.) then
semn = -1
elseif ( numar.eq.0) then
semn = 0
else
semn = +1
endif

scrierea datelor de ieire


print*, semnul este , semn
end

O variant a acestui program este urmtoarea:


15

772
program semn_nr

declararea variabilelor din program


implicit none
integer numar
character*10 semn

crearea unui dialog


print*, Intoduceti un numar intreg

citirea datelor de intrare


read*, numar

alegerea semnului numarului


if (numar.lt.0.) then
semn = negativ
elseif ( numar.eq.0) then
semn = 0
else
semn = pozitiv
endif

scrierea datelor de ieire


print*, semnul este , semn
end

74

7380

LUCRAREA 8

CONSTRUCIA CASE.
PROGRAMELE ARIE I TIP_TASTA

1. CONSTRUCIA CASE
Construcia CASE selecteaz pentru execuie cel mult un bloc, ns schema de
selectare a blocului este diferit de cea a construciei IF. Sintaxa construciei CASE este
prezentat n continuare.
select case (expr)
[case (select)
bloc]...
[case default
bloc]
end select

Aici expr este o expresie de tip ntreg, character sau


logic. Selectorul select este o list format din valori singure sau
domenii de valori de acelai tip cu expr. Domeniul de valori este
format din dou valori separate prin ":" i reprezint un domeniu
de valori cuprins ntre valorile ce l definesc inclusiv capetele.
Construcia CASE se execut astfel: se evalueaz

expresia expr din instruciunea SELECT CASE; apoi sunt examinate expresiile fiecrui
selector select din instruciunile CASE pna ce se gasete una cu acceai valoare ca expr,
sau cu un domeniu ce include valoarea lui expr, se execut blocul ce urmeaz acestei
instruciuni CASE i execuia construciei CASE se termin. Nu trebuie s existe mai
mult dect o instruciune CASE care s poat avea o valoare a selectorului care s se
potriveasc cu valoarea lui expr. Dac nici o instruciune CASE nu se potrivete la
valoarea expresiei expr i exist o instruciune CASE DEFAULT se execut blocul ce
urmeaz lui CASE DEFAULT. Instruciunea CASE DEFAULT este opional.
Construcia Case este o caracteristic nou a limbajului Fortran, existent
ncepnd cu versiunea Fortran 90. n acest caz, selecia se bazeaz pe valoarea unei
expresii scalare aflat n instruciunea SELECT CASE la nceputul construciei.
Valoarea acestei expresii se numete index. Instruciunea ce conine cuvintele cheie
SELECT CASE se numete instruciunea SELECT CASE. Instruciunea ncepnd cu
cuvntul cheie CASE este numit instruciunea CASE. Instruciunea ncepnd cu
cuvintele cheie END SELECT este numit instruciunea END SELECT. O list de
domenii de valori sau cuvntul cheie DEFAULT se numete selector (selector case).
Semnificaia sintaxei domeniului de valori ale unui selector este urmtoarea:
!

val, selecia se face dac expr = val;

:val, selecia se face dac expr val;

val:, selecia se face dac expr val;

val_1:val_2, selecia se face dac val_1 expr val_2.

Exist o serie de reguli i restricii referitore la domeniile de valori ale


selectoarelor.
Forma scris n limbaj FORTRAN a construciei CASE, al crei algoritm este
descris de schema logic din Figura 8.1, este prezentat n continuare.
75

Lucrarea 8

select case (e)


case (e1)
F1
case (e2)
F2
case (e3)
F3
case (e4)
F4
case default
F5
end select

e expr
F
e=e1
T
F

F1

e=e2
T
F
F2

e=e3
T
F
F3

e=e4
T
F4

F5

Figura 8.1. Schema logic i codificarea Fortran a


unei construcii CASE.

2. PROGRAMELE ARIE I TIP_TASTA


Folosind o construcie CASE, s-a realizat un algoritm pentru calculul ariei unei
figuri geometrice plane (ptrat, cerc, dreptunghi i triunghi echilateral) i s-a codificat
acest algoritm n limbaj FORTRAN. Indexul construciei CASE este variabila caracter
figura. Posibilele valori ale indexului sunt constantele caracter P, pentru ptrat, C,
pentru cerc, T, pentru triungiul echilateral, D, pentru dreptunghi. Pentru alte valori ale
indexului se activeaz selectorul DEFAULT.
Folosind o construcie CASE s-a realizat i un program pentru selectarea pe
grupe de caractere a tastelor alfanumerice tipribile ale unei tastaturi. Indexul
construciei CASE n acest caz este variabila caracter tasta. Domeniile de valori ale
selectorilor sunt constantele caracter (a, e, i, o ,u), pentru categoria vocale, constantele
76

Construcia CASE. Programele ARIE i TIP_TASTA

ntregi (0,,9), pentru categoria cifre, constantele caracter (b, c, d, f, g, h, j,,n,


p,,t, v,,z) pentru categoria consoane. Pentru alte caractere tipribile se activeaz
selectorul DEFAULT.
Cele dou programe sunt prezentate mai jos.
15

772
program arie
implicit none
character*1 figura
real raza, pi, aria, latura
real lungime, latime
print*,'figura? alegeti p = patrat'
print*,

'c = cerc'

print*,

't = triunghi echilateral'

print*,

'd = dreptunghi'

read*, figura
select case (figura)
case ('c')
print*,'raza cercului?'
read*, raza
pi = 4.0*atan(1.)
aria = pi*raza*raza
print*,'aria= ',aria
case ('p')
print*,'latura patratului ?'
read*, latura
aria = latura*latura
print*,'aria= ',aria
case ('d')
print*,'lungimea?'
read*,lungime
print*,'latime?'
read*, latime
aria=lungime*latime
print*,'aria= ',aria
case ('t')
print*,'latura?'
read*,latura
aria= 0.25*latura8latura*sqrt(3.)
print*,'aria= ',aria
case default
print*,'eroare. introduceti doar una din literele p,c,t sau d'
end select
end

77

7380

Lucrarea 8

15

772
program tip_tasta
implicit none
character*1 tasta
print*,' alegeti o tasta'
read*, tasta
select case (tasta)
case ('a', e,i,o,u)
print*, tasta, este o vocala
case (0:9)
print*,tasta, este o cifra
case (b:'d',f:h,j:n,p:t,v:z)
print*,tasta, este o consoana
case (" ")
print*, tasta, " este spatiu liber"
case default
print*, tasta, este un caracter special
end select
end

78

7380

CONSTRUCIILE DO SIMPL I DO WHILE.


PROGRAMELE PRODUS_SUMA_MEDIA,
TAB_FUNCTIE I FUN_TRIG

LUCRAREA 9

1. CONSTRUCIA DO SIMPL. CONSTRUCIA DO WHILE


n limbajul de programare FORTRAN structurile iterative se implementeaz
prin construcia DO. Sintaxa construciei DO cu bloc este:
do control_bucla
bloc
end do

Blocul conine zero sau mai multe instruciuni i


construcii a cror execuie repetat este comandat de
controlul buclei.
Instruciunea ce ncepe cu cuvntul cheie DO se

numete instruciunea DO. Instruciunea ce ncepe cu cuvintele cheie END DO se


numete instruciunea END DO.
Blocul de instruciuni bloc se mai numete domeniul buclei DO, ce poate
conine i construcii DO, construcii IF, construcii CASE sau alte construcii; este
necesar ca orice construcie interioar s fie nglobat complet n construcia exterioar.
Dac domeniul buclei DO conine o alt construcie DO se spune c buclele DO sunt
imbricate.Modul de execuie al constructiei DO este artat n schema logic din
Figura 9.1.

Iniializarea construciei DO

T
Trebuie executat
domeniul DO?

Execuia domeniului DO

Figura 9.1. Schema logic a construciei DO.

Exist dou forme de baz ale construciei DO: (1) construcia DO bloc;
(2) construcia DO non-bloc. Practica programrii moderne recomand utilizarea
construciei DO bloc.
O construcie DO bloc este o construcie DO ce se termin cu o instruiune END
DO sau CONTINUE ce nu face parte dintr-o alt construcie DO. Execuia unei bucle
79

Lucrarea 9

DO este controlat de o variabil DO a crei valoare este incrementat se un anumit


numr de ori prevzut n instruciunea DO. Acest tip de construcie DO este numit i
construcia DO cu contor al iteraiei. Mai exist dou metode de control al execuiei
buclei DO specifice construciei DO WHILE i construciei DO simple.
Exist dou instruciuni speciale ce pot s apar n domeniul unei
construcii DO i care pot s altereze execuia secvenial a instruciunilor i
construciilor blocului. Una este instruciunea EXIT, iar cealalt instruciunea CYCLE.
Instruciunea EXIT cauzeaz terminarea imediat a execuiei construciei DO
i transmite controlul la prima instruciune executabil dupa END DO. Sintaxa acestei
instruciuni este: exit.
Instruciunea CYCLE, spre deosebire de instruciunea EXIT, ce termin
complet execuia unei construcii DO, ntrerupe execuia domeniului i cauzeaz
nceperea unui nou ciclu de execuie al construciei DO. Sintaxa instruciunii CYCLE
este: cycle.
La ntreruperea execuiei unei construcii DO de ctre o instruciune CYCLE,
variabila de control a iteraiei este actualizat i ncepe procesul de execuie al iteraiei
urmtoare.
n cazul construciei DO

simple lipsete controlul

buclei, execuia construciei DO terminndu-se n mod explicit

do

bloc
end do

prin execuia unei instruciuni din interiorul domeniului


construciei. Sintaxa construciei DO simple este cea artat
alturat.
Forma DO WHILE a construciei DO permite execuia

do while (expr)
bloc
end do

repetat a unui bloc att timp ct valoarea unei expresii logice


rmne adevarat. Sintaxa instruciunii DO WHILE este
artat mai jos. Aici expr este o expresie logic scalar.
Execuia unei construcii DO WHILE se face astfel: se

evalueaz expresia logic expr; dac valoarea expresiei este .TRUE. se execut blocul.
Dup execuia ultimei instruciuni a blocului, execuia revine la instruciunea
DO WHILE, expresia logic expr este din nou evaluat i ciclul se repet. Dac valoarea
expresiei logice expr este .FALSE. blocul nu se mai execut i controlul trece la prima
instruciune executabil dup END DO.
Construcia DO WHILE implementeaz n FORTRAN iteraia cu testul la
nceput, adic iteraia do while.
2. PROGRAMELE PRODUS_SUMA_MEDIA, TAB_FUNCTIE, FUN_TRIG
Folosind o construcie DO simpl s-a scris un program Fortran pentru calculul
produsului, sumei i mediei unui ir de numere reale. Numrul factorilor (termenilor)
80

Construcia DO simpl i DO WHILE. Programele PRODUS_SUMA_MEDIA, TAB_FUN, FUN_TRIG

este ales de utilizator n timpul execuiei acestuia. Programul este prezentat n


continuare.
15

772

7380

program produs_suma_media
implicit none
integer i
real x, produs, suma,media
character*1 raspuns
print*, "Primul numar"
read*, x
suma=x
produs=x
i=1
b1:do
i=i+1
print*, " Numarul", i
read*, x
suma=suma+x
produs=produs*x
media=suma/float(i)
print*, "Continuati? [y/n]"
read*, raspuns
if (raspuns.eq."Y".or.raspuns.eq."y") then
cycle b1
else
exit
endif
enddo b1
print*, "produsul= ", produs
print*, "suma = ", suma
print*, "media= ", media
end

Folosind o construcie DO WHILE s-a realizat un program FORTRAN de


tabelare a valorilor unei funcii reale de variabil real, pe un interval [a,b], pentru
n valori ale argumentului, numit tab_functie. Funcia este dat de relaia urmtoare:
3
F ( x ) = 2 x x + 4.5

Pentru tabelarea valorilor funciilor trigonometrice sin i cos pe un interval, s-a


realizat un program FORTRAN care cuprinde construcii DO WHILE, numit fun_trig.
81

Lucrarea 9
15

772

7380

program tab_fun
implicit none
integer n
real x, xinit, xfinal, pas, fx
print*,'introduceti numarul de puncte'
read*, n
print*, 'introduceti capetele intervalului'
read*, xinit, xfinal
pas = (xfinal-xinit)/float(n-1)
x=xinit
do while (x.le.xfinal)
fx = 2.0*x**3 - x + 4.5
print*, 'x= ',x, 'f(x)= ', fx
x = x + pas
end do
end
15

772

7380

program fun_trig
implicit none
integer i, n
real pi,x_grad,x_rad,pas_grad, pas_rad,xinit_grad, xinit_rad
real xfinal_grad, xfinal_rad,y_sin, y_cos
character*10, raspuns
print*, " Numarul de valori ale argumentului"
read*, n
print*, "Valoarea argumentului este in radiani sau in grade?
*

[radiani/grade]"
read*,raspuns
pi=4.*atan(1.)
if (raspuns.eq."radiani") then
print*, "Valoarea initiala si finala in radiani"
read*, xinit_rad, xfinal_rad
pas_rad=(xfinal_rad-xinit_rad)/float(n-1)
x_rad=xinit_rad
print*, "Doriti indicarea argumentului si in grade?[Y/N]"
read*, raspuns
if (raspuns.eq."Y".or.raspuns.eq."y") then
","x, [grad]
print*, " x, [rad]
do while (x_rad.le.xfinal_rad)
y_sin=sin (x_rad)
y_cos=cos(x_rad)

82

", "y_sin

","

y_cos "

Construcia DO simpl i DO WHILE. Programele PRODUS_SUMA_MEDIA, TAB_FUN, FUN_TRIG


x_grad=x_rad*180./pi
print*, x_rad, "

",x_grad,"

",y_sin,"

", y_cos

x_rad=x_rad+pas_rad
enddo
else
print*, "

x, [rad]

", "y_sin

"," y_cos"

do while (x_rad.le.xfinal_rad)
y_sin=sin (x_rad)
y_cos=cos(x_rad)
print*, x_rad, "

",y_sin,"

",y_cos

x_rad=x_rad+pas_rad
enddo
endif
else
print*, "Valoarea initiala si finala in grade"
read*, xinit_grad, xfinal_grad
xinit_rad=xinit_grad*pi/180.
xfinal_rad=xfinal_grad*pi/180.
pas_rad=(xfinal_rad-xinit_rad)/float(n-1)
x_rad=xinit_rad
print*, "Doriti indicarea argumentului si in radiani?[Y/N]"
read*, raspuns
if (raspuns.eq."Y".or.raspuns.eq."y") then
print*, " x, [rad]

","x, [grad]

", "y_sin

","

y_cos "

do while (x_rad.le.xfinal_rad)
y_sin=sin (x_rad)
y_cos=cos(x_rad)
x_grad=x_rad*180./pi
print*, x_rad, "

",x_grad,"

",y_sin,"

", y_cos

x_rad=x_rad+pas_rad
enddo
else
print*, "

x, [grad]

", "y_sin

"," y_cos"

do while (x_rad.le.xfinal_rad)
y_sin=sin (x_rad)
y_cos=cos(x_rad)
x_grad=x_rad*180./pi
print*, x_grad, "

",y_sin,"

x_rad=x_rad+pas_rad
enddo
endif
endif
end

83

",y_c

LUCRAREA 10

TABLOURI. CONSTRUCIA DO CU CONTOR AL


ITERAIEI. PROGRAMUL MASURATORI

1. TABLOURI. ELEMENTE DE TABLOU


n programare, o mulime ordonat de date de acelai tip se poate organiza ca o
entitate numit tablou. Tabloul este o dat structurat i omogen. Pentru computer
tabloul reprezint un grup de celule de memorie situate, una dupa alta, grup cruia i se
asociaz un nume, numele tabloului. Celulele tabloului, numite elementele tabloului,
sunt referite print-un indice ce se asociaz numelui. Notaiile elementelor de tablou
reprezint adresele celulelor n care se stocheaz valorile elementelor tabloului.
n limbajele de programare se accept tablouri cu o dimensiune, cu dou
dimensiuni sau cu mai multe dimensiuni.
Pentru a informa compilatorul c o anumit entitate reprezint un tablou
trebuie specificate atributele caracteristice ale acestuia. Pentru a specifica care sunt
atributele unei entiti se folosesc intruciuni de declarare sau declaraii.
n Fortran exist mai multe forme de tablouri. n continuare ne vom referi la
tablouri cu forma explicit. Aceste tablouri au dou atribute: tip, dimensiune.
Declararea tipului se face cu ajutorul cuvintelor cheie folosite i pentru
declararea variabilelor scalare. Declararea dimensiunilor unui tablou este obligatorie i
se face cu ajutorul unor instruciuni neexecutabile ce conin cuvinte cheie cuprinse ntro specificaie de tablou. Un tablou cu form explicit are limitele specificate pentru
fiecare dimensiune.
Dimensiunile unui tablou pot fi specificate n dou moduri: (1) cu o instruciune
DIMENSION, cnd sunt indicate numrul dimensiunilor i numrul valorilor pentru
fiecare indice, (2) cu o instruciune de declarare a tipului n care este inclus i
specificatorul pentru declararea dimensiunilor.
Instruciunea de declarare a dimensiunilor are forma:
DIMENSION [::] array(spec)[,array(spec)]...
adic dup cuvntul DIMENSION urmeaz o list de specificatori de tablou.
Instruciunea DIMENSION nu este executabil; ea informeaz compilatorul c anumite
variabile sunt tablouri i compilatorul rezerv n memorie spaiul necesar stocrii
elementelor de tablou. n memorie elementele unui tablou unidimensional se stocheaz
unul dupa altul, astfel c elementul de tablou n+1 urmeaz elementului n, .a.m.d. n
cazul tablourilor multidimensionale elementele sunt organizate ca un ir liniar deoarece
memoria computerului are o singur dimensiune. n FORTRAN elementele de tablou se
aranjeaz n memorie potrivit regulei "ordinea coloanei majore", ceea ce nseamn c un
84

Tablouri.Construcia DO cu contor al iteraiei. Programul MASURATORI

tablou se stocheaza n memorie astfel c cel mai din stnga indice s varieze cel mai
rapid. Orice tablou este descris printr-o specificaie de tablou format din declaratori de
dimensiune. Numrul de declaratori de dimensiune definete rangul tabloului sau altfel
spus numrul de dimensiuni al tabloului. Limbajul de programare FORTRAN accept
tablouri cu cel mult 7 dimensiuni.
Forma explicit a unui declarator de dimensiune este:
[lower:] upper
unde lower i upper sunt expresii de specificaie, care sunt expresii scalare sau constante
ntregi ce arat valoarea minim, respectiv maxim a indicelui. Valorile lui lower i
upper pot fi pozitive, negative sau zero. Dac valoarea minim este omis, valoarea ei
implicit se consider 1.
Instruciunea de declarare a tipului i dimensiunilor are forma:
type [DIMENSION] [::] array(spec) [,array(spec)]
adic este format din cuvntul cheie type ce arat tipul (specificator de tip) i o
instruciune de declarare a tipului.
Elementul de tablou specific un element al tabloului. Elementul de tablou se
scrie astfel:
array (s[,s]...)
unde (s[,s]) reprezint o list de valori corespunztoare numrului declaratorilor de
dimensiune.
Cu elementele de tablou se pot efectua toate operaiile pentru variabile scalare
(citire, scriere, operaii aritmetice sau logice). Una din proprietile ce confer
flexibilitate prelucrrii datelor reprezentate prin tablouri este posibilitatea de a efectua
calcule asupra indicilor, adic posibilitatea ca indicii s fie expresii aritmetice.
2. CONSTRUCIA DO CU CONTOR AL ITERAIEI
Cele mai generale construcii DO cu contor al iteraiei sunt cele n care
valoarea iniial, cea final i pasul sunt expresii. Fie i variabila ciclului, e1 expresia
pentru valoarea iniiala a lui i, e2 expresia pentru valoarea final a lui i i e3 expresia
pentru incrementul variabilei DO (controlului buclei). n acest caz este util s se
introduc o variabil auxiliar ic, numit variabil contor, ce controleaz execuia
iteraiei. Schema logic a unui astfel de construcii DO este dat n Figura 10.1. Pentru
forma bloc, construcia DO cu contor al iteraiei are sintaxa prezentat n continuare.
85

Lucrarea 10

m 1

e1

m 2

e 2

m 3

e3

DO i_bucla = e1,e2,e3
bloc
END DO

Calcul ic

Instruciunea DO are sintaxa:


i _ bucla e1

DO i_bucla = e1,e2[,e3]
unde i_bucla este o variabil ntreag sau

ic=0

real,

e1,

e2

sunt

expresii

ntregi

sau reale, iar e3 este o expresie ntreag


sau real nenul. Dac e3 este egal cu 1

bloc

se poate omite scrierea ei.


n limbajul de programare FORTRAN,
construcia DO cu contor al iteraiei, utilizat

ic ic 1

pentru operaii de intrare/ieire, se poate

i _ bucla i _ bucla + m3

nlocui

printr-o

singur

instruciune

de

intrare/ieire echivalent, ce are urmtoarea


sintaxa:
Figura 10.1. Schema logic a
construciei DO cu contor al iteraiei.

read*, (x(i), i=1,n)


write*, (x(i), i=1,n)
print*, (a(i), i=1,n)
unde (x(i), i=1,n) se numete list DO implicit. n instruciunile de citire sau de scriere
o list DO implicit poate fi element al unei liste de intrare sau de ieire pentru
instruciunile de citire sau de scriere.
Forma generala a unei liste DO implicite este:
(list, v=e1,e2[,e3])
unde list este o list de intrare/ieire ce conine de obicei elemente de tablou, v este o
variabil ntreg, variabila de control, e1 este valoarea iniial, e2 valoarea final iar e3
86

Tablouri.Construcia DO cu contor al iteraiei. Programul MASURATORI

este incrementul. Dac e1, e2, e3 sunt expresii, atunci ele sunt expresii aritmetice
ntregi.
n continuare se prezint programul FORTRAN scris pentru algoritmul de
calcul al mediei i dispersiei unui set de n date experimentale obinute prin msurtori
directe. Media i dispersia se determin folosind urmtoarele relaii:
n

xmediu =

x
i =1

=
15

(x
i =1

xmediu )

n 1

772
program masuratori
implicit none
integer i,n
parameter (n=50)
real x(n), suma, xmediu, s2abat,sigma
i=1
do while (i.le.n)
read*, x(i)
i=i+1
end do
suma = 0.
i=1
do while (i.le.n)
suma = suma + x(i)
i=i+1
end do
xmediu=suma/float(n)
s2abat=0.
do k = 1,n
s2abat = s2abat + (x(k) - xmediu) **2
end do
sigma=sqrt(s2abat/float(n-1))
print*, 'x mediu= ',xmediu
print*, 'abaterea standard= ',sigma
end

87

7380

SUBPROGRAME. PROGRAMELE
CENTRU_DE_MASA I SORTARE

LUCRAREA 11

1. SUBPROGRAME
1.1. Proceduri funcie
O funcie este o procedur ce se folosete de obicei ca primitiv ntr-o expresie.
n FORTRAN o funcie extern se scrie in forma:
[spec_tip] FUNCTION nume ([lista_de_nume_de_argumente_formale])
[partea_de_specificatie]
[partea_de_executie]
END
Astfel o funcie extern este o unitate de program ce ncepe cu instruciunea
FUNCTION i se termin cu instruciunea END. Corpul funciei poate conine orice
instruciune cu excepia instruciunilor BLOCK DATA, FUNCTION, INTERFACE TO,
PROGRAM sau SUBROUTINE. n instruciunea FUNCTION nume este numele
funciei ales de ctre programator. Numele funciei nu poate s apar n instruciunile
AUTOMATIC, COMMON, DATA, EQUIVALENCE, INTRINSIC, NAMELIST sau
SAVE.
Lista

lista_de_nume_de_argumente_formale

este

format

din

nume

de

variabile, nume de tablouri, nume de variabile de structur, nume de proceduri externe


sau nume de funcii intrinseci. Tipul funciei poate fi specificat prin specificaia de tip
spec_tip. Dac spec_tip lipsete, tipul funciei este determinat de instruciunile
IMPLICIT ce se aplic. Dac nu exist instruciuni IMPLICIT tipul funciei se
determin prin convenia implicit asupra tipului variabilelor. Tipurile argumentelor se
stabilesc prin instruciunile din partea_de_specificaie: IMPLICIT, EXTERNAL,
DIMENSION sau instruciuni de declarare a tipului. Numele funciei se comport ca o
variabil; n partea_de_execuie ntr-un anume punct variabilei nume trebuie s i se
atribuie o valoare. Aceas valoare este cea returnat unitii de program ce apeleaz
funcia.
Lista de argumente formale furnizeaz modul de comunicaie al datelor cu
funcia; argumentele, de obicei, servesc drept date de intrare pentru funcie. Rezultatul
funciei este furnizat expresiei ce conine apelul funciei.
Apelul unei funcii se poate face n orice unitate de program printr-o referin
de funcie, care de obicei, este primitiv intr-o expresie. Forma referinei de funcie este:
88

Subprograme.Programele CENTRU_DE_MASA I SORTARE

nume_functie ([lista_de_argumente_de_lucru])
Lista_de_argumente_ de_lucru trebuie s conin acelai numr de argumente
ca i instruciunea de definiie FUNCTION.
Argument_de_lucru poate fi constant, variabil, expresie, element de tablou,
nume de funcie intrinsec. Argumentele formale i cele de lucru trebuie s reprezinte
acelai tip de date.
Execuia procedurii funcie se face astfel:
!

argumentele de lucru ce sunt expresii se evalueaz;

argumentele de lucru se asociaz cu argumentele formale corespunzatoare;

se execut corpul functiei;

controlul revine la unitatea de program ce a fcut apelul (cea care conine


referine de funcie), iar rezultatul funciei (valoarea funciei) este furnizat
expresiei ce conine apelul funciei.

1.2. Proceduri subrutine


n FORTRAN o subrutin se scrie n forma:
SUBROUTINE nume ([lista_de_argumente_formale])
[partea_de_specificatie]
[partea_de_executie]
END
Altfel spus, o subrutin este o unitate de program ce ncepe cu instruciunea
SUBROUTINE i se termin cu instruciunea END. O subrutin poate conine orice
instruciune cu excepia instruciunilor BLOCK DATA, FUNCTION, INTERFACE TO,
PROGRAM sau alt instruciune SUBROUTINE. n instruciunea SUBROUTINE
nume

reprezint

numele

subrutinei

ales

de

ctre

programator,

iar

lista_de__argumente_formale este o list de nume ce pot fi nume de variabile, nume de


tablouri, nume de variabile de structur, nume de proceduri externe sau funcii
intrinseci.
Lista de argumente stabilete numrul de argumente formale ale subrutinei.
Tipul argumentelor formale se declar prin instruciuni IMPLICIT, EXTERNAL,
DIMENSION

sau

de

declarare

tipului,

instruciuni

ce

se

scriu

partea_de_specificatie a subrutinei. Numele argumentelor formale nu pot s apar n


instruciunea AUTOMATIC, COMMON, DATA, EQUIVALENCE, INTRINSIC sau
SAVE.
n partea_de_execuie a subrutinei trebuie s existe cel puin o instruciune
RETURN, ce are urmtoarea sintaxa:
89

Lucrarea 11

RETURN
Instruciunea RETURN este o instruciune executabil a crei aciune este
returnarea controlului execuiei unei subrutine sau unei funcii la unitatea de program
apelant. ntr-un subprogram instruciunea END are acelai efect ca i instruciunea
RETURN.
Apelul unei subrutine se face cu o instruciune CALL, ce are urmatoarea
sintaxa:
CALL nume ([lista_de_argumente_de_lucru])
unde nume este numele subrutinei. Lista_de_argumente_de_lucru trebuie s conin
acelai

numr

de

argumente

ca

cel

din

instruciunea

SUBROUTINE.

Argument_de_lucru poate fi: constant, expresie, tablou, element de tablou, nume de


subrutin sau de funcie extern, nume de funcie intrinsec. Argumentele de lucru i
cele formale trebuie s reprezinte acelai tip de date.
Execuia instruciunii CALL se face astfel:
!

argumentele de lucru ce sunt expresii se evalueaz;

argumentele de lucru se asociaz cu argumentele formale corespunzatoare;

se execut corpul subrutinei

controlul revine la unitatea de program ce a facut apelul.

Argumentul formal pentru care argumentul de lucru este o variabil (sau nume
de tablou) se zice c este apelat prin referin, iar argumentul formal pentru care
argumentul actual este o constant sau o expresie mai complex dect o variabil, se
zice c este apelat prin valoare.
2. PROGRAMELE CENTRU_DE_MASA I SORTARE
Cu scopul de a determina coordonatele centrului de mas pentru diferite
sisteme de puncte materiale s-a scris un program FORTRAN (centru_de_masa),
prezentat n continuare. Se consider c sistemul de puncte materiale este format din n
puncte, ce au coordonatele xi, yi, zi i masele mi, iar i = 1,n.
Coordonatele centrului de mas sunt date de formulele urmtoare:
n

xcm =

mi xi
i =1

xcm =

mi xi
i =1

i =1

i =1

90

xcm =

m x
i

i =1

i =1

Subprograme.Programele CENTRU_DE_MASA I SORTARE


15

772

7380

program centru_de_masa
implicit none
integer i, n
parameter (n=10)
real x(n), y(n), z(n), m(n)
real centru, xcm, ycm, zcm
do i=1,n
read*, m(i),x(i),y(i),z(i)
end do
xcm = centru (n,x,m)
ycm = centru (n,y,m)
zcm = centru (n,z,m)
print*, 'coordonatele centrului de masa a sistemului'
print*, 'xcm= ', xcm,'ycm= ',ycm, 'zcm= ',zcm
end
real function centru(n,u,v)
implicit none
integer i, n
parameter (n=10)
real u(n), v(n), su1, su2
su1 = 0.0
su2 = 0.0
do i=1,n
su1 = su1 + v(i)
su2 = su2 + u(i)*v(i)
end do
centru = su/masa
return
end

Pentru a exemplifica modul de utilizare a unei subrutine s-a realizat programul


Fortran, numit sortare, care sorteaz n ordine cresctoare trei numere reale. Programul
principal citete datele de intrare (trei numere reale), le sorteaz n ordine cresctoare
prin apelarea subrutinei schimb i afieaz numerele n ordine cresctoare. Subrutina
schimb ordoneaz cresctor numerele prin schimbarea ordinii iniiale. Acest program ce
cuprinde dou uniti de program este prezentat n continuare.
15

772
program sortare
implicit none
real x1, x2, x3

91

7380

Lucrarea 11

print*, 'introduceti cele trei numere reale x1, x2, x3'


read*, x1, x2, x3
if (x1.gt.x2) then
call schimb(x1,x2)
end if
if (x1.gt.x3) then
call schimb(x1,x3)
end if
if (x2.gt.x3) then
call schimb(x2,x3)
end if
print*, 'numerele in ordinea crescatoare sunt:'
print*, x1, x2, x3
end
subroutine schimb (a,b)
implicit none
real a,b,temp
temp=a
a=b
b=temp
return
end

92

INSTRUCIUNEA EXTERNAL.
PROGRAMELE INTEGRALA I SEMN_FUNCTIE

LUCRAREA 12

1. INSTRUCIUNEA EXTERNAL
Dac ntr-un apel de subrutin sau de funcie (definite de utilizator)
argumentele de lucru sunt numele unor subrutine sau a unor funcii, acestea trebuie
declarate cu o instruciune EXTERNAL.
Instruciunea EXTERNAL trebuie s fie scris n unitatea de program ce
conine apelul. In acest fel compilatorul este informat c anumite nume sunt nume de
proceduri externe i nu sunt nume de tablouri sau de variabile. Instruciunea
EXTERNAL are sintaxa:
EXTERNAL nume[,nume]...
unde nume este nume de subrutin extern sau funcie.
2. PROGRAMELE INTEGRALA I SEMN_FUNCTIE
S se evalueaze valoarea unei integrale definite, ce are ca integrant o funcie de
o singur variabil, prin metoda trapezelor, folosind un program FORTRAN ce descrie
algoritmul acestei metode. Funcia de integrat este definit prin:
2

f ( x ) = x sin( x ) e

Problema integrrii numerice a unei funcii f const n aflarea unei valori


aproximative a integralei:
b

f ( x) dx
a

cu ajutorul unui numr finit de valori ale funciei considerate. Pentru a obine o
aproximare a valorii date cu o precizie impus se utilizeaz formule de cuadratur
iterate. Aceste metode presupun parcurgerea urmtoarelor etape: (1) se mparte
intervalul de integrare [a,b] ntr-un numr convenabil de subintervale egale,
(2) pe fiecare din acestea se aproximeaz integrala cu ajutorul unei formule de
cuadratur simple, (3) se sumeaz toate valorile obinute pe subintervale, obinnd
93

Lucrarea 12

astfel o aproximaie a integralei pe ntregul interval. Una din formulele cele mai
utilizate este formula trapezelor dat de relaia:
b

f ( x ) dx

n 1
h
= f ( a ) + 2 f ( a + i h ) +
2
i =1

f (b )

(b a ) h 2 "
f ( )
12

n care h = (b-a)/n reprezint pasul reelei de puncte, iar n este numrul de intervale. n
acest caz, x0 = a i xn = b.
Cu ajutorul termenului

( b a ) h2
12

f " ( ) se poate estima numrul minim de

intervale astfel nct eroarea s nu fie mai mic dect o valoare adoptat anterior
evalurii integralei. Dac se nlocuiete h i se adopt o eroare minim err se obine
condiia:

(b a )3
12 n 2

f " ( ) err

din care se obine:

( b a )3
12 err

f " ( ) n

n cazul funciei considerate f " ( x ) = ( x + 2 x + 2 ) e , care este o funcie strict


cresctoare i continu, astfel nct valoarea maxim pe un interval este atins pentru
valoarea maxim a argumentului x. Dac nlocuim n ultima relaie valoarea derivatei a
doua se obine:

(b a )3
12 err

( b2 + 2 b + 2 ) eb n

Programul FORTRAN prezentat n continuare are ca date de intrare limitele


intervalului de integrare (a,b), eroarea de estimare a integralei (err) i numrul de
intervale adoptat (n) astfel nct s fie atins eroarea err. Programul face o prim
estimare a numrului minim de intervale (nmin), iar utilizatorul va folosi aceast valore
pentru a alege valoarea pentru n.
94

Instruciunea EXTERNAL.Programele INTEGRALA I SEMN_FUNCTIE


15

772

7380

program integrala
implicit none
real a, b, val, trapez, functie, err
integer n, nmin
external functie
print*, " Care este intervalul de integrare ([a,b])?"
read*, a, b
print*, " Care este eroarea de calcul adoptata (err)?"
read*, err
nmin= aint (sqrt(((b-a)**3*(b**2+2*b+2))/(12.*err)))
print*, " Numarul minim de intervale pentru o eroare de ", err,"
*

este: ", nmin


print*, " Care este numarul de intervale adoptat?"
read*, n
val = trapez(functie,a,b,n)
print*,'valoarea integralei este: ',val
end
real function trapez(f,a,b,n)
implicit none
real a, b, h, suma, x, f
integer i, n
h = (b-a)/float(n)
suma = 0.5*(f(a)+f(b))
do i=1,n-1
suma = suma + f(a+float(i)*h)
end do
trapez = h*suma
return
end
real function functie(x)
implicit none
real x
functie = x*x*exp(x)-x
return
end

Programul Semn_functie determin dac exist o schimbare de semn pentru o


funcie real f(x) de variabil real x pe un interval [a,b] al argumentului, ntre dou
valori succesive. Programul este alctuit din patru uniti de program: programul
principal, dou subprograme subroutine i un subprogram function. Programul principal
95

Lucrarea 12

realizeaz citirea datelor de intrare, determin valorile argumentului x pentru care se


calculeaz valorile funciei i apeleaz subprogramele subroutine. Subrutina schimbare
determin valorile succesive ntre care exist schimbarea de semn i le memoreaz n
dou tablouri unidimensionale. Pentru calculul valorilor funciei apeleaz subrogramul
funie. Subrutina omatrice afieaz subintervalele pe care exist schimbri de semn.
Programul este prezentat mai jos.

15

772
program semn_functie
implicit none
integer i,n, nmax
integer l, m, mmax
parameter (nmax=1000, mmax=2)
real xinitial, xfinal, x(nmax)
real a(nmax), b(nmax), rezultat(nmax,mmax), functie
external functie
print*,"Care este intervalul pe care se verifica semnul functiei?"
read*, xinitial, xfinal
print*, "Pentru cate valori se face evaluarea functiei(nmax=1000)?"
read*, n
print*, "Se calculeaza cele ",n," valori ale argumentului. Asteptati!"
do i=1,n
x(i)=xinitial+((xfinal-xinitial)/float(n-1))*float(i-1)
enddo
call schimbare(nmax,n,x,functie,l,m,a,b)
if ((l.eq.0).and.(m.eq.0)) then
print*, " Functia nu are schimbare de semn pe intervalul considerat"
else
call omatrice(nmax,mmax,n,l,m,a,b,rezultat)
endif
end
subroutine schimbare(nmax,n,x,functie,l,m,a,b)
integer i, j, k,l, m, n, nmax
real x(nmax), a(nmax), b(nmax), functie
j=0
k=0
do i=1,(n-1)
if ((functie(x(i))*functie(x(i+1))).le.0.) then
j=j+1
k=k+1
a(j)=x(i)

96

7380

Instruciunea EXTERNAL.Programele INTEGRALA I SEMN_FUNCTIE

b(k)=x(i+1)
endif
l=j
m=k
enddo
return
end
subroutine omatrice(nmax,mmax,n,l,m,a,b,rezultat)
integer i, j, nmax, mmax, n, l, m
real x(nmax), a(nmax), b(nmax), rezultat(nmax,mmax)
character*1 matrice
print*, " Matricea rezultat este: "
read*, matrice
do j=1,2
if (j.eq.1) then
do i=1,l
rezultat(i,j)=a(i)
enddo
else
do i=1,m
rezultat(i,j)=b(i)
enddo
endif
k=j
enddo
print*, " Matricea ",matrice, "(",l,",",k,") este "
do i=1,l
print*,"

", (rezultat(i,j), j=1,2)

enddo
return
end
real function functie(x)
real x
functie=x**3-0.5*x**2+2.*x-1.5
return
end

97

LUCRAREA 13

FIIERE. INSTRUCIUNILE OPEN I CLOSE.


PROGRAMELE IMPAR I TRANSMATR

1. FIIERE
Un fiier este o colecie de date nregistrate pe un suport extern de informaie.
Fiecare fiier se asociaz unei uniti de intrare/ieire. ntr-un fiier datele sunt grupate
n nregistrri. Limbajul Fortran consider o nregistrare ca o linie la terminal, o linie la
imprimare sau o nregistrare logic pe un suport magnetic. O nregistrare este format
dintr-un ir de date. nregistrarea poate fi reprezentat printr-o succesiune de cmpuri,
ce conine fiecare valoarea unei date. Valorile nregistrrilor pot fi formatate sau
neformatate. O nregistrare formatat se scrie i se citete cu o instruciune de
intrare/ieire formatat, iar o nregistrare neformatat se citete i se scrie cu o
instruciune de intrare/ieire neformatat. Exist dou tipuri de nregistrri: ce conin
date i o nregistrare special end-of-file.
n FORTRAN se face distincie ntre fiierele localizate pe un fiier extern i
fiierele stocate n memorie, accesibile programului. Astfel, deosebim dou tipuri de
fiiere: fiiere externe i fiiere interne.
Fiierele externe sunt stocate pe dispozitivele periferice: unitate de band
magnetic, unitate de discuri, terminal. Pentru fiecare fiier extern exist un set de
metode de acces permise, un set de forme permise(formatat sau neformatat), un set de
aciuni permise i un set de lungimi ale nregistrrilor permise. Stabilirea acestor
caracteristici este determinat de ctre cererile de utilizare ale fiierului i
caracteristicile sistemului de operare.
Fiierele interne sunt stocate, spre deosebire de cele externe, n memoria
intern a computerului.
Fiierele FORTRAN au nume. Numele unui fiier intern este numele unei
variabile caracter sau a tabloului caracter a crui valori constituie nregistrrile
fiierului. Numele unui fiier extern, sau cum se mai numete specificaia de fiier, este
un ir de caractere pe care sistemul de operare l recunoate ca nume de fiier. Dac nu
se specific o cale de acces sistemul de operare presupune c fiierul se gsete n
directorul curent.
Pentru majoritatea operaiilor de I/O un fiier se identific printr-un
specificator de unitate. Pentru FORTRAN Microsoft specificatorul de unitate este, fie o
expresie de tip ntreg, fie un asterisc (*). n FORTRAN se spune c un fiier exist dac
el exist ca fiier la care un program poate avea acces.
Un fiier se zice c este conectat la un program, dac este asociat cu un
specificator de unitate cunoscut sistemului. Conectarea (deschiderea unitii) se face
98

Fiiere.Instruciunile Open i Close. Programele IMPAR i TRANSMATR

cu ajutorul instruciunii OPEN. Deconectarea (nchiderea unitii) se face cu


instruciunea CLOSE.
Anumite fiiere sunt preconectate, ele sunt cunoscute procesorului i
ntotdeauna sunt disponibile n decursul execuiei programului. FORTRAN Microsoft
are 4 uniti preconectate:
!

" * " - ntotdeauna reprezint tastatura i ecranul;

" 0 " - iniial reprezint tastatura i ecranul;

" 5 " - iniial reprezint tastatura;

" 6 " - iniial reprezint ecranul.

Unitatea asterisc (*) nu poate fi conectat la nici un alt fiier; ncercarea de a


nchide aceast unitate cauzeaz o eroare n timpul compilrii.
Cu o instruciune OPEN unitile 0, 5 si 6 pot fi conectate la orice alt fiier.
Dac nchidem unitile 0, 5 si 6 ele se reconecteaz n mod automat la tastatur sau la
ecran. La un anumit moment dat, doar un singur fiier poate s fie conectat la o unitate
i invers. Un fiier ce nu este conectat la o unitate nu poate fi folosit n nici o
instruciune I/O, cu excepia instruciunilor OPEN, CLOSE sau INQUIRE.
Exist dou metode de acces la nregistrrile unui fiier: acces secvenial i
acces direct. Dup metodele de acces fiierele se mpart n fiiere secveniale i fiiere
directe.
2. INSTRUCIUNEA OPEN
Instruciunea OPEN se folosete pentru a conecta un fiier extern la o unitate,
a crea un fiier care este preconectat, a crea un fiier i a-l conecta la o unitate, a
schimba unele proprieti ale conectrii. Astfel, pe lng realizarea conectrii propriuzise, instruciunea OPEN se folosete i pentru determinarea proprietilor conectrii.
Sintaxa instruciunii este:
OPEN ([UNIT=],u,olist)
unde u este o expresie scalar de tip ntreg ce specific numrul unitii fiierului
extern, iar olist este o list de specificatori opionali. Un specificator nu poate s apar
mai mult dect o dat. Pentru specificatori toate entitile sunt scalare i toate
caracterele sunt de tipul implicit. Civa dintre specificatorii opionali sunt prezentai
n continuare:
!

FILE = nume_fisier, permite definirea numelui fiierului; este obligatoriu


dac lista de specificatori conine specificatorul STATUS cu valorile OLD,
NEW sau REPLACE, ns nu trebuie s apar cnd valoarea acestui
specificator este SCRATCH;
99

Lucrarea 13

STATUS = expr, unde expr este o expresie caracter ce poate lua valorile
'OLD', 'NEW', 'REPLACE','UNKNOWN' (default) sau 'SCRATCH'; fiierele
SCRATCH sunt fiiere temporare i nu trebuie numite;

FORM = expr, unde expr este o expresie caracter ce definete tipul


nregistrrilor

fiierului;

expresia

caracter

are

una

din

valorile

'FORMATTED' sau 'UNFORMATTED' ;


!

ACCESS = expr, unde expr este o expresie caracter ce specific tipul de


acces pentru transferul datelor; expresia caracter poate furniza rezultatele
'DIRECT' sau 'SEQUENTIAL' (implicit)

IOSTAT = ios, unde ios este o variabil de tip ntreg ce permite obinerea
de date despre modul de execuie a instruciunilor de I/O.

RECL = expr, unde expr este o expresie ntreag cu valoare pozitiv ce


specific lungimea fiecrei nregistrri; acest parametru este obligatoriu
pentru fiierele n acces direct;

ERR = et, unde et este eticheta instruciunii executabile din aceeai unitate
de program cu OPEN la care se transfer controlul, dac exist o
eroare de I/O.

3. INSTRUCIUNEA CLOSE
Instruciunea CLOSE se folosete pentru a deconecta un fiier ce a fost conectat
cu OPEN. Sintaxa instruciunii CLOSE este:
CLOSE ([UNIT=] u, clist)
unde u este o expresie ntreag ce specific o unitate extern, iar clist o lista de
specificatori opionali:
!

ERR = et, realizeaz transferul la instruciunea cu eticheta et din aceeai


unitate de program cu CLOSE, dac exist o eroare I/O;

IOSTAT = ios, unde ios este o variabil ntreag ce returneaz valoarea


zero dac execuia este fr eroare sau o valoare pozitiv dac exist erori;

STATUS = expr, unde expr este o expresie caracter ce poate lua valoarea
'KEEP' sau 'DELETE'; n afara fiierelor 'SCRATCH', valoarea implicit
este 'KEEP'.

2. PROGRAMELE IMPAR I TRANSMATR


Programul Fortran Impar, prezentat n continuare, creaz un fiier ce conine
toate numerele impare cuprinse ntre 0 si 999. Programul Transmatr determin
transpusa unei matrici.
100

Fiiere.Instruciunile Open i Close. Programele IMPAR i TRANSMATR


15

772

7380

program impar
implicit none
integer impar_max, impar_urmator
parameter (impar_max=99)
character*4 fmt
fmt="(i3)"
open (unit=10, file='nrimp', form='formatted'
&

access='sequential',status='unknown')
do impar_urmator=1,impar_max,2
write(10,fmt) impar_urmator
end do
endfile (unit=10)
close (unit=10)
end

15

772
program transmatr
implicit none
integer nmax, mmax, eroare
parameter (mmax=100, nmax=100)
integer i, j, m, n
real a(mmax, nmax), transpusa(nmax,mmax)
print*, " Cate linii (mmax=100) si cate coloane (nmax=100) are ma

tricea A(mmax,nmax)?"
read*, m,n
print*, " Elementele matricii A pe fiecare linie"
do i=1,m
read*, (a(i,j), j=1,n)
enddo
do i=1,m
do j=1,n
transpusa(j,i)=a(i,j)
enddo
enddo
open (unit=10, file="transpusa.dat", status="replace",

form="formatted", iostat=eroare, err=100)


do j=1,n
write (10,*) (transpusa (j,i), i=1,m)
enddo
close (unit = 10)

100

print*, " Eroare = ", eroare


print*, "Program terminat"
end

101

7380

LUCRAREA 14

INTRUCIUNI DE TRANSFER.
PROGRAMELE SUBSIR I EL_MAX_MIN_MED

1. INSTRUCIUNI DE TRANSFER A DATELOR


1.1. Instruciunile READ, WRITE, PRINT
Instruciunile de transfer a datelor sunt READ, WRITE si PRINT. Sintaxa
acestor instruciuni este:
READ (lista_cu_speci_de_control_io) [lista_de_elemente_input]
READ fmtspec [,lista_de_elemente_input]
WRITE (lista_cu_specif_de_control_io) [lista_de_elemente_output]
PRINT fmtspec [,lista_de_elemente_output]
Aici fmtspec este specificatorul de format definit ca:
fmtspec= {string|label|*}
unde fmtspec este o expresie caracter ce reprezint specificaia de format, label este
eticheta unei instruciuni ce indic formatarea explicit, iar asteriscul indic formatarea
comandat de list. Specificaiile de control I/O sunt:
!

[UNIT=] u, unde u este specificatorul de unitate;

[[FMT=] fmtspec], unde fmtspec este specificatorul de format;

[[NML=] nmlspec], unde nmlspec este specificatorul grupului NAMELIST;

[REC =rcl], unde rcl este o expresie de tip ntreg ce reprezin numrul
nregistrrii. Se folosete doar n acces direct.

!
!

[IOSTAT = ios], unde ios este o variabila ntreag;


[ERR = et], unde et este eticheta unei instruciuni din acceai unitate de
program;

[END = endlabel], unde endlabel este eticheta unei instruciuni din acceai
unitate de program.

Dac se omite UNIT=, primul parametru trebuie s fie u. Dac se omite FMT=
sau NML=, al doilea parametru trebuie s fie fmtspec sau nmlspec. Ceilali parametri
pot s apar n orice ordine. Nu este permis s existe i specificatorul de format i
102

Instruciuni de transfer. Programele SUBSIR i EL_MAX_MIN_MEDIA

specificatorul grupului NAMELIST.


Lista_de_elemente_input este format din variabile, elemente de tablou,
elemente de structura sau liste implicite DO. Lista_de_elemente_output este format
din expresii (n particular, variabile) sau liste DO implicite.
Dac n cazul unei operaii I/O apare o eroare sau dac se ntlnete
nregistrarea EOF, aciunea pe care o ia procesorul depinde de prezenta opiunilor ERR,
IOSTAT i END. n cazul instruciunii READ nu se consider eroare evenimentul
atingerii nregistrrii EOF. Deoarece instruciunea PRINT este singura instruciune I/O
care nu accept opiunile ERR, END i IOSTAT, o eroare n decursul execuiei
instruciunii PRINT este ntotdeauna o eroare run-time.
Pentru I/O formatat fiierul este format din caractere. Aceste caractere sunt
convertite n reprezentari convenabile pentru stocarea n memoria calculatorului n
timpul operaiilor de intrare i convertite de la reprezentarea intern la caractere.
Atunci cnd un fiier este accesat secvenial nregistrrile sunt procesate n ordinea n
care ele apar n fiier. Input-output ce avanseaz nseamn c fiierul este poziionat
dup sfritul ultimei nregistrri citite sau scrise atunci cnd operaia I/O s-a terminat.
Sintaxa instruciunilor cu acces secvenial formatat este:
READ ([UNIT=] u,[FMT=]fmtspec[,IOSTAT=ios][,ERR=errorlabel]
[,END=endlabel]) [ilist]
WRITE ([UNIT=] u,[FMT=]fmtspec[,IOSTAT=ios][,ERR=errorlabel])
[olist]
PRINT fmtspec [,olist]
Parametrul FMT poate fi omis doar dac omitem opiunea UNIT=; fmtspec
poate fi eticheta unei instruciuni format, o expresie caracter a crei valoare este o
specificaie de format sau un asterisc ce indic o formatare condus de list. n sintaxa
general, prezentat mai sus, ilist reprezint lista elementelor de intrare, iar olist lista
elementelor de ieire.
1.2.Operaii I/O care nu avanseaz. Specificatorul ADVANCE
Specificatorul ADVANCE ce poate exista n sintaxa instruciunilor READ i
WRITE permite ca operaiile I/O dintr-un (ntr-un) fiier s se efectueze fr a avansa
poziia la urmtoarea nregistrare. Operaiile I/O care nu avanseaz se pot folosi doar
pentru fiiere externe care sunt formatate n mod explicit i sunt conectate pentru acces
secvenial. Sintaxa unor instruciuni ce folosesc specificatorul ADVANCE este
urmtoarea:
103

Lucrarea 14

READ ([UNIT=]u[,[FMT=]fmtspec],ADVANCE=expr,[SIZE=var][,EOR=et]
[,IOSTAT=ios][,ERR=et][,END=et]) [lista_ent_input]
WRITE ([UNIT=]u[,[FMT=]fmtspec],ADVANCE=expr, [,IOSTAT=ios]
[,ERR=et]) [lista_ent_input]
Valoarea entitii expr din specificatorul ADVANCE trebuie s fie NO pentru a
nu se produce avansul. Format poate fi eticheta unei instruciuni FORMAT sau o
expresie caracter a crei valoare este specificaia de format. Format nu poate fi un
asterisc deoarece ar indica o formatare condus de list.
2. PROGRAMELE SUBSIR I EL_MAX_MIN_MEDIA
Cu programul FORTRAN subsir se determin elementul maxim din subirul
format din termenii de rang impar ai unui ir iniial de n numere reale i elementul
minim al subirului format din termenii de rang par ai aceluiai ir, precum i rangurile
acestor elemente n ir.
Programul FORTRAN el_max_min_media se determin elementul cu valoarea
maxim, respectiv, elementul cu valoarea minim pentru un ir de n numere reale i
media aritmetic a acestora.
Cele dou programe sunt prezentate n continuare.
15

772
program subsir
implicit none
integer i,n,nmax,rang_max,rang_min
parameter (nmax=20)
real x(nmax), xmin, xmax
open (unit=1, file='sir.dat', form='formatted',

access='sequential', status='old')
open (unit=2, file='subsir.dat', form='formatted',

access='sequential', status='unknown')

10

format (i3)

read (1,10) n
read (1,20) (x(i),i=1,n)
20

format (10f8.3)
xmax=x(1)
do i=1,n,2
if (xmax.le.x(i)) then
xmax=x(i)

104

7380

Instruciuni de transfer. Programele SUBSIR i EL_MAX_MIN_MEDIA

rang_max=i
end if
end do
write (2,30)
30

format ('********************************************************

*****************************************')
write (2,40) xmax, rang_max

40

format (/, 'elementul maxim al subsirului cu termeni de rang

impar are valoarea= ',f8.3,' si rangul= ', i3)


xmin=x(2)
do i=2,n,2
if (xmin.ge.x(i)) then
xmin=x(i)
rang_min=i
end if
end do
write (2,50)

50

format ('********************************************************

*****************************************')

60

format (/, 'elementul minim al subsirului cu termeni de rang

par are valoarea= ',f8.3,' si rangul= ', i3)

write(2,60) xmin, rang_min

write (2,70)
70

format ('********************************************************

*****************************************')
end

15

772
program el_max_min_med

acest program determina elementul maxim, elementul minim si media

aritmetica pentru un sir de n numere reale.

input

n=numarul elementelor sirului

x(i)=tablou unidimensional de dimensiune n ce contine elementele siru lui

output

x(i)=tablou unidimensional de dimensiune n ce contine elementele siru-

lui dat initial

k=indicele elementului din sirul dat ce are valoarea maxima

xmax=valoarea maxima a elementelor sirului dat

l=indicele elementului din sirul dat ce are valoarea minima

xmin=valoarea minima a elementelor sirului dat

sxm=media aritmetica a elementelor sirului

105

7380

Lucrarea 14
implicit none
integer i,k,l,n,nm
parameter (nm=20)
real x(nm),xmax,xmin,s,sxm
character*10 fmt1
fmt1='(a\)'
write (*,fmt1,ADVANCE=NO) ' Numarul elementelor vectorului n= '
read*,n
print*,' introdu elementele vectorului x '
read*,(x(i),i=1,n)
xmax=x(1)
k=0
do i=1,n
if (x(i).ge.xmax) then
xmax=x(i)
k=i
endif
enddo
xmin=x(1)
l=0
do i=1,n
if (x(i).le.xmin) then
xmin=x(i)
l=i
endif
enddo
s=0.0
do i=1,n
s=s+x(i)
enddo
sxm=s/float(n)
write (*,10) n
10

format (/' vectorul x(',i3,') este ')

20

format(/,8(1x,f9.3))

write(*,20) (x(i),i=1,n)
write(*,30) k,xmax
30

format(/' elementul cu valoarea maxima este x(',i3,')= ',f10.3)

40

format(/' elementul cu valoarea minima este x(',i3,')= ',f10.3)

write(*,40) l,xmin
write(*,50) sxm
50

format(/' media aritmetica a elementelor este= ',f10.3)


end

106

ALGORITMUL DE INTERPOLARE AITKEN-NEVILLE.


PROGRAMUL INTERPOLARE

LUCRAREA 15

1. INTRODUCERE
Interpolarea este una din metodele importante de aproximare a valorilor
funciilor. A interpola nseamn a rezolva o problem de tipul:
Dac pentru o funcie de n variabile F:D R (D Rn) se cunosc valorile ntr-un
i

numr de puncte ( x1 , x 2 , x 3 ,..., x n ) D , i = 1, 2,..., k , s se determine valoarea ei ntr-un


0

punct dat ( x1 , x 2 , x 3 ,..., x n ) D.


Evident, n aceast formulare general problema este nedeterminat, deoarece
funcia F poate avea o valoare arbitrar n punctul dat. De aceea se va presupune c
funcia F posed anumite proprieti de continuitate i difereniabilitate.
Consideraiile urmtoare sunt valabile pentru o funcie real de o singur
variabil real:
Fie funcia f:I R, unde I R este un interval i fie n+1 puncte aparinnd
intervalului I (x0, x1, x2, ,xn), numite noduri de interpolare. Se presupune c sunt
cunoscute valorile funciei f n nodurile de interpolare, yi = f(xi), i = 0,1,,n. Se pune
problema construirii unei funcii g, ce aparine unei clase specificate de funcii, care n
nodurile de interpolare satisface anumite condiii ce o apropie de funcia f. Funcia g se
numete funcia de interpolare a funciei f.
Clasa polinoamelor este una din clasele de funcii de interpolare des utilizate
deoarece n urma operaiilor algebrice ct i a operaiilor de derivare i integrare
obinem ca rezultat tot un polinom. De asemenea, o funcie continu poate fi aproximat
uniform pe un interval compact cu un polinom, conform teoremei de aproximare a lui
Wierstrass.
Se cunosc mai multe formule de interpolare, cum ar fi formula de interpolare a
lui Lagrange, formula de interpolare a lui Hermite, formula de interpolare a lui Newton.
Fie f: I R o funcie definit pe intervalul I R i nodurile de interpolare
x0, x1, x2,,xn, n puncte distincte ale intervalului I.
Teorem. Exist un polinom unic P de grad cel mult n, care n nodurile de
interpolare satisface condiiile P(xi) = f(xi), i = 0,1,2,,n.
Definiie. Polinomul a crei existen i unicitate este dat de teorema
precedent se numete polinomul de interpolare a funciei f pe nodurile x0, x1, x2,,xn.
Polinomul de interpolare (care este unic) poate fi scris n forme diferite, utile
att din punct de vedere teoretic ct i practic. Dac nu se impune condiia ca gradul
polinomului P(x) s fie cel mult n, se pot determina o infinitate de polinoame ce au
valoarea f(xi) n punctul xi, pentru orice i = 0,1,2,n.
107

Lucrarea 15

2. FORMULA DE INTERPOLARE A LUI LAGRANGE


Urmtoarea form a polinomului de interpolare se numete forma lui Lagrange
a polinomului de interpolare sau polinomul lui Lagrange:
n

P( x) = f ( xi ) Li ( x)
i =0

n care Li(x) este definit de relaia:

Li ( x ) =

( x x 0 ) ( x x1 ) ( x x i 1 ) ( x x i +1 ) ( x x n )
( x i x 0 ) ( x i x1 ) ( x i x i 1 ) ( x i x i +1 ) ( x i x n )

Se noteaz cu L (x0, x1, x2, , xn; f|x) polinomul de interpolare asociat funciei f
pe nodurile x0, x1, x2,,xn, sub forma lui Lagrange.
Definiie. Funcia Rn : I R definit prin Rn = f(x) - L (x0, x1, x2, , xn; f|x),
adic eroarea cu care f(x) este aproximat de valoarea polinomului lui Lagrange n
punctul x, se numete restul de ordin n asociat funciei f pe nodurile x0, x1, x2,,xn.
Din relaia de definiie a restului de ordin n se obine:
f(x) = L (x0, x1, x2, , xn; f|x) - Rn, x I
care este formula de interpolare a lui Lagrange.
3. ALGORITMUL DE INTERPOLARE AITKEN-NEVILLE
Teorem. Polinomul lui Lagrange L (x0, x1, x2, , xn; f|x) satisface urmtoarea
relaie de recuren:

L ( x 0 , x1 ,..., x n ; f | x ) =

( x x ) L ( x , x ,..., x ; f | x ) ( x x ) L ( x , x ,..., x
1

n 1

; f | x)

(x x )
n

Aceast formul ofer o regul pentru condtruirea pas cu pas a valorilior


polinoamelor lui Lagrange ntr-un punct dat:
x0
x1
x2
x3

xi

x - x0
x x1
x x2
x x3

x xi

L(x0;f|x)
L(x1;f|x)
L(x2;f|x)
L(x3;f|x)

L(xi;f|x)

L(x0,x1;f|x)
L(x1,x2;f|x)
L(x2,x3;f|x)

L(xi-1,xi;f|x)

L(x0,x1,x2;f|x)
L(x1,x2,x3;f|x)

L(xi-2,xi-1 ,xi;f|x)
108

L(x0,x1,x2,,xi; f|x)

Algoritmul de interpolare Aitken-Neville. Programul INTERPOLARE

Dac ultima valoare aproximativ L(x0,x1,x2,,xi; f|x) nu aproximeaz suficient


de bine se ia un nou nod xi+1 i se formeaz linia corespunztoare acestuia. Se compar
din nou valoarea obinut L(x0,x1,x2,,xi+1; f|x) cu cea anterioar. Acest procedeu se
repet pn cnd este ndeplinit o condiie de eroare absolut ntre cele dou valori
succesive.
Acest procedeu de evaluare a valorilor polinoamelor lui Lagrange ntr-un punct
dat se numete metoda Aitken-Neville.
Algoritmul Aitken-Neville. Pentru obinerea unui algoritm se face urmtoarea
notaie:
Lij(x) = L(x0,x1,x2,,xi; f|x), i < j
Conform unei relaii anterioare se poate scrie:
(x x ) L
L ( x) =
ij

i 1, j 1

( x) ( x x

(x

i j

i j

)L

i, j 1

( x)

x )
i

Tabelul anterior al valorilor polinomului de interpolare se poate scrie, cu


convenia Lij(x) = f(xi) pentru orice i, astfel:
x0
x1
x2
x3

xi

L00
L10
L20
L30

Li0

L11
L21
L31

Li1

L22
L32

Li2

Lii

Descris n limbaj natural algoritmul de interpolare Aitken-Neville se scrie


astfel:
1. atribuie L00 = f (x0);
2. atribuie i = 1;
3. atribuie Li0 = f(xi);
4. Calculeaz Lij cu relaia de mai sus, j = 0,1,, i;
5. Dac Lii este o aproximaie suficient de bun, se trece la punctul 7; n caz
contrar, se trece la punctul 3;
6. atribuie i = i + 1; treci la pasul 3;
7. atribuie f(x) = Lii;
8. algoritmul se ncheie.
Pentru a decide dac Lii este o aproximaie suficient de bun a valorii funciei f
n punctul x se poate folosi condiia:
109

Lucrarea 15

|Lii(x) Li-1,j-1(x)| < e


n care e este o toleran dat pentru eroarea absolut ntre dou valori sucesive ale
polinomului de interpolare.
4. PROGRAMUL INTERPOLARE
n continuare este prezentat un program FORTRAN care implementeaz
algoritmul de interpolare Aitken-Neville.
Programul are urmtoarele date de intrare:
!
!

n, numrul nodurilor de interpolare;


valorile argumentului x, (x(i),i=1,n), corespunztoare celor n noduri de
interpolare, reprezentate sub forma unui tablou unidimensional real cu n
elemente;

valorile funciei n nodurile de interpolare, (fx(i), i = 1,n), tablou


unidimensional real cu n elemente;

valoarea argumentului x n punctul n care se aproximeaz funcia prin


interpolare, x_eval, variabil real scalar;

tolerana erorii absolute e, epsilon, variabil real scalar.

Programul furnizeaz urmtorul rezultat:


!
15

valoarea funciei f(x_eval) n punctul considerat.

772

program interpolare
implicit none
integer i, j, n, nmax
parameter (nmax=50)
real x(nmax), fx(nmax), l(nmax, nmax+1), x_eval, epsilon
character*10 fmt
fmt=(a\)
write (*,fmt,ADVANCE=NO) Numarul nodurilor de interpolare este =
read*, n
print*, Valorile argumentului corespunztoare nodurilor
read*, (x(i), i=1,n)
print*, Valorile functiei in nodurile de interpolare
read*, (fx(i), i=1,n)
write (*,fmt,ADVANCE=NO) Valoarea punctului de evaluare a functiei=
read*, x_eval
write (*,fmt,ADVANCE=NO) Eroarea de calcul epsilon=
read*, epsilon
l(1,1) = fx(1)

110

7380

Algoritmul de interpolare Aitken-Neville. Programul INTERPOLARE


do i=2,n
l(i,1)=fx(i)
do j=2,i
l(i,j)=((x_eval-x(i))*l(i-1,j-1)-(x_eval-x(i-j+1))*l(i,j-1))/(x(i-j+1)-x(i))
if (l(i,j)-l(i-1,j-1)).le.epsilon) then
print*, F(, x_eval,)= , l(i,j)
stop
endif
enddo
enddo
print*, F(, x_eval,)= , l(i,j), fara a avea o toleranta sub epsilon
end

111

LUCRAREA 16

TESTAREA PROGRAMELOR

1. INTRODUCERE
Proiectarea este un proces de concepie a unei soluii posibile pentru problema
propus spre rezolvare, bazat pe urmtoarele procedee generale: analiz, sintez,
abstractizare, elaborare, reprezentare, evaluare i operaionalizare. n cazul produselor
software, proiectarea este activitatea care ncepe cu definirea cerinelor i specificaiilor
produsului, continu cu detalierea i transformarea acestora pn la definirea structurii
unei soluii. Aceast soluie trebuie s fie reprezentat ntr-un limbaj astfel nct
proiectul obinut s poat servi mai departe la construirea sau elaborarea propriu-zis a
produsului software (codificarea, testarea). Proiectul rezultat trebuie s precizeze exact
structura produsului, adic componentele (de tip program sau de tip date), relaiile ntre
componente i interaciunea produsului cu mediul.
Proiectarea oricrui produs se descompune n dou subactiviti:
!

proiectarea de ansamblu, care identific structura general a problemei i


scopul pentru care se creaz noul produs. n acest fel sunt identificate
componentele sistemului, relaiile dintre ele, algoritmii ce vor fi utilizai,
datele comune ale componentelor;

proiectarea de detaliu, care presupune detalierea componentelor, definirea


i

precizarea

algoritmilor,

structurile

de

date,

interfeele

dintre

componente i modul lor de implementare.


Majoritatea metodelor de proiectare a programelor admit modularizarea ca
principiu general de obinere a soluiei. Una din metodele des folosite pentru
proiectarea programelor mari este proiectarea structurat.
Obiectivul proiectrii structurate este realizarea unui sistem eficient, fiabil,
uor de ntreinut i modificat, fiind asigurat prin:
!

proiectarea pornind de la structur funcional;

abordarea complexitii problemei ntr-o manier care conduce la tratarea


individual a subproblemelor;

reutilizarea de module realizate anterior;

folosirea unor criterii de evaluare a calitii proiectrii.

Proiectarea structurat ajuta programatorul n obinerea unui program


modular sau a unui ansamblu de programe modulare.

112

Testarea programelor

O dat ce un program a fost alctuit trebuie s ne asiguram c el ndeplinete


funcia pe care o dorim i nu alta. Pentru analiza metodelor de testare i depanare o
importan deosebit o are sistematizarea erorilor posibile.
Erorile ce pot aprea n etapele de proiectare i codificare pot fi grupate n
urmtoarele clase:
!

erori daterminate de alegerea i descrierea algoritmului; aceste erori sunt


generate de un algoritm incorect, un algoritm corect dar inadecvat
problemei; validarea incorect i/sau incomplet a datelor de intrare etc;

erori n definirea i utilizarea datelor; aceste erori pot avea drept cauze
neiniializarea tuturor variabilelor, formate improprii pentru instruciunile
de citire, definirea incorect a cmpurilor n fiierele de intrare etc;

erori produse prin nerespectarea regulilor de folosire a operatorilor i


operanzilor; expresii complicate cu posibiliti reduse de control a
corectitudinii evalurii, erori de conversie a operanzilor etc;

erori produse de tehnica de programare;

erori produse din neatenie;

erori n manipularea textului programului;

Cea mai mare parte a erorilor enumerate mai sus sunt depistate n etapele de
compilare i editarea legturilor.
n timpul execuiei programelor pot apare erori de tipul:
!

erori de echipament, ce sunt determinate de caracteristicile sistemului de


calcul (aritmetica numerelor, modul de implementare a datelor scalare sau
a celor structurate etc );

erori de transfer de date ctre periferice.

Cele mai cunoscute strategii de testare a unui produs program complex sunt
testarea de sus n jos (top-down), testarea de jos n sus (bottom-up), metoda mixt.
Testarea trebuie aplicat fiecrui modul n parte, interfeei (legturii) dintre module i
produsului program n ansamblu.
Scopul testrii programelor este depistarea i eliminarea erorilor. Cea mai
simpl tehnic de analiz a corectitudinii programelor este aa-numita testare prin
exemple concrete. n acest caz, testarea reprezint operaia de verificare a corectitudinii
unui program prin furnizarea de date date de intrare i compararea rezultatelor cu
datele de ieire cunoscute. Tehnica testrii prin observarea comportrii programului n
timpul execuiei programului cu datele de test este cunoscut sub denumirea de testare
experimental a programelor. Ideea testrii experimentale este descris n continuare.
Dispunem de un program executabil ce a fost scris ntr-un limbaj de programare, de
exemplu FORTRAN. Alegem o problem test ce se bucura de proprietatea c i
cunoatem dinainte rspunsul pentru anumite date de intrare. Cu datele de intrare
113

Lucrarea 16

respective se ruleaza programul pe calculator fiind necesar a se obine n final


rezultatele testelor de control. Tehnica testarii experimentale este una din cele mai
rspndite tehnici de testare a programelor tehnico-stiinifice. Programele performante
n literatura de specialitate, de regul, conin n documentaia lor o colecie de probleme
test alctuit din:
!

set de date de intrare i rezultate corespunztoare;

set de test drivers, programe de antrenare pentru rezolvarea problemelor


test.

Problemele test trebuie s fie alese n aa fel nct s fie testate prin calcul
toate drumurile posibile din schema logic. Un program preluat din literatura de
specialitate se consider corect implementat pe un computer sau cum se mai spune
validat, dac el d rezultate satisfctoare la rularea problemelor test. Trebuie
remarcat faptul c testarea experimental a unui program nu este echivalent cu
demonstraia corectitudinii programului.
Stabilirea datelor de test

se poate face avnd n vedere fie specificaia

problemei fie textul programului. Prima metod de stabilire a datelor de test este
adecvat problemelor simple sau n testarea modulelor. n al doilea caz pentru a stabili
datele de test se ine seama de instruciunile ce trebuie executate.
Adesea este imposibil s se execute programul cu toate datele de test posibile.
n aceast situaie apare problema alegerii acelei submulimi de date care s depisteze
cu probabilitate maxim erorile prezente n program. Testarea minim care trebuie
fcut const n realizarea unui numr de execuii ale programului care s asigure
execuia fiecrei instruciuni cel puin odat.
Este necesar i testarea robusteei programului. Aceasta nseamn o buna
comportare a programului atunci cnd datele de intrare sunt intenionat greite, iar
problema nu are sens. Un program robust nu trebuie s fie afectat de datele de intrare
eronate. Comportarea cea mai normal n astfel de situaii ar fi semnalarea unor mesaje
de eroare corespunztoare.
Detectarea unor erori, att n faza de compilare ct i n cea de testare necesit
depanarea programului. Depanarea este procesul de transformare a unui program sau a
unei pri de program pentru a nltura o eroare detectat. Sistemele de operare sau
mediile de programare moderne ofer pachete de programe care asist programatorul n
depanarea programului, prin execuia lor pas cu pas i vizualizarea valorilor curente ale
variabilelor (depanare dinamic).
2. TESTAREA PROGRAMULUI INTERPOLARE
Testarea

programului

interpolare

experimentale.
114

se

va

face

prin

metoda

testrii

Testarea programelor

Fie funciile:
f ( x) = 2 x 5

g ( x) = x x + 1
Datele de test sunt formate dintr-un numr n de valori ale argumentului i o
valoare a argumentului diferit de cele alese pentru noduri ca punct de evaluare a
funciei, pentru care trebuie calculat i valoarea funciei. Se consider c programul a
trecut testul dac valoarea funciei obinut prin evaluarea expresiei corespunztoare n
punctul considerat difer de valoarea funciei obinut prin interpolare cu o valoare eps.
n vederea testrii, programul Interpolare va fi rescris astfel nct s poat fi calculate
valorile celor dou funcii n punctul de evaluare i s se poat verifica dac diferena
dintre valoarea obinut prin calcul i cea obinut prin interpolare este mai mare dect
eps. Atunci cnd condiia f ( xevaluare ) calcul f ( xevaluare )interpolare eps este ndeplinit se
va afia mesajul Programul Interpolare a trecut testul, iar dac nu este ndeplinit
mesajul Pentru eps=valoare, programul Interpolare nu a trecut testul.
15

772

program test_interpolare

7380

001

implicit none

002

integer i, j, n, nmax

003

parameter (nmax=50)

004

real x(nmax), fx(nmax), l(nmax, nmax+1), x_eval, errcalcul, epsilon

005

real fx, gx

006

character*10 fmt

007

fmt=(a)

008

write (*,fmt,ADVANCE=NO) Numarul nodurilor de interpolare este =

009

read*, n

010

print*, Valorile argumentului corespunztoare nodurilor

011

read*, (x(i), i=1,n)

012

print*, Valorile functiei in nodurile de interpolare

013

read*, (fx(i), i=1,n)

014

write (*,fmt,ADVANCE=NO) Valoarea punctului de evaluare a functiei=

015

read*, x_eval

016

write (*,fmt,ADVANCE=NO) Eroarea de calcul errcalcul=

017

read*, errcalcul

018

write (*,fmt,ADVANCE=NO) Valoarea maxim a diferentei, epsilon=

019

read*, epsilon

020

do i=1,n

021

fx(i)= functie(x(i))

022

115

Lucrarea 16
023

enddo
call interpolare(n,x,fx,x_eval,errcalcul,ierr,fx_interpolat)

024

if (ierr.eq.1) then

025

print*, " F(", x_eval,")= ", fx_interpolat, " cu o toleranta mai mica decat: ,
*

errcalcul

027

else

028

print*, " F(", x_eval,")= ",fx_interpolat, " fara a avea o toleranta mai mica
*

026

decat: ",errcalcul

029
030

endif

031

val_fx=functie(x_eval)

032

if (abs(val_fx-fx_interpolat).le.epsilon) then

033

print*, " Programul Interpolare a trecut testul pentru eps= ", epsilon

034
035

else
print*, " Programul Interpolare nu a trecut testul pentru eps= ", epsilon

036

endif

037

end

038

subroutine interpolare(n,x,fx,x_eval,errcalcul,ierr,fx_interpolat)
implicit none
integer i, j, ierr, n
real x_eval
real x(n), fx(n), errcalcul, fx_interpolat, l(n,n+1)
do i=1,n
l(i,1)=fx(i)
do j=2,i
l(i,j)=((x_eval-x(i))*l(i-1,j-1)-(x_eval-x(i-j+1))*l(i,j-1))/(x(i-j+1)-x(i))
if ((l(i,j)-l(i-1,j-1)).le.errcalcul) then
fx_interpolat=l(i,j)
ierr=1
return
endif
enddo
enddo
fx_interpolat=l(i,j)
return
end
real function functie(x)
implicit none
real x
functie=2.*x-5.
return
end

116

Testarea programelor

Pentru testarea programului Interpolare n cazul celei de a doua funcii se va


realiza un nou program, identic cu cel anterior cu excepia subprogramului functie n
care trebuie modificat expresia scalar numeric corespunztoare funciei. Noul
subprogram functie este artat mai jos.
15

772

7380

real function functie(x)


implicit none
real x
functie=x**2-x+1
return
end

Din cele artate mai sus se observ c pentru a putea testa programul
interpolare trebuie realizat un program de testare dedicat. Dac dorim s testm
programul pentru funcii diferite trebuie rescris programul.
Scrierea programului de testare i modificarea acestuia se simplific, dei
procedeul este asemntor ca cel descris mai sus, dac exist biblioteci de programe ce
conin subprograme funcie i programul pe care dorim s-l testm. Produsul software
Developer Studio permite crearea bibliotecilor de programe.
3. CREAREA I UTILIZAREA BIBLIOTECILOR DE PROGRAME
Pentru crearea unei biblioteci de programe trebuie procedat n felul urmtor:
!

se activeaz programul Developer Studio;

se activeaz opiunea New a meniului File; prin activarea acestei opiuni se


deschide o caset de dialog;

se alege proiectul Win 32 Static Library, se indic numele bibliotecii, calea


n sistemul de fiiere i se activeaz butonul OK; se deschide un nou
Workspace pentru noul proiect cu numele bibliotecii;

se activeaz opiunea Add to Project a meniului Project; se deschide un nou


submeniu i se alege opiunea File; se deschide o caset de dialog care
permite alegerea fiierului sau fiierelor ce se vor aduga proiectului;

!
!

se selecteaz fiierul (fiierele) i se activeaz butonul OK;


se activeaz opiunea Build name.lib a meniului Build; se ateapt pn la
ncheierea procesului de creare a bibliotecii.

Pentru a aduga noi programe la o bibliotec existent se deschide mai nti


spaiul de lucru (opiunea Open Workspace) cu numele identic cu cel al bibliotecii i se
parcurg ultimile trei etape descrise mai sus.
117

Lucrarea 16

Dup creare, pentru a putea apela subprogramele dintr-o bibliotec trebuie


procedat astfel:
!

dup compilarea programului principal, folosind opiunea Add to Project a


meniului Project se adaug spaiului de lucru corespunztor proiectului
biblioteca de programe dorit;

se genereaz programul executabil cu opiunea Build name.exe a meniului


Build.

Pentru a exemplifica crearea i utilizarea bibliotecilor de programe, n vederea


testrii programului interpolare s-a creat biblioteca testinterp.lib ce conine trei
subprograme dintre care dou subprograme funcie, corespunztoare celor dou funcii
indicate mai sus, i o subrutin ce implementeaz algoritmul de interpolare AitkenNeville. Cele trei subprograme sunt identice cu cele de mai sus.
Programul pentru testare, cnd folosim biblioteca testinterp va fi format doar
din programul principal ce va conine i instruciunile de apel corespunztoare
subrutinei interpolare, respectiv subprogramului functiei unde i este numrul 1 sau 2,
ce indic funcia pentru care testm subrutina interpolare.
Programul test_interpolare este identic cu cu programul principal artat mai
sus, cu excepia instruciunii de atribuire de la linia 022 , care devine:
fx(i)= functie1(x(i))

022

cnd se testeaz subrutina cu prima funcie, sau:


fx(i)= functie2(x(i))

022

cnd se testeaz subrutina cu a doua funcie.

118

RELAII DE RECUREN

LUCRAREA 17

1. INTRODUCERE
O categorie important de probleme necesit pentru a fi rezolvate utilizarea
unor relaii de recuren. Utilizarea relaiilor de recuren este posibil prin
implememtarea acestora n algoritmul de rezolvare sub forma unor structuri iterative.
Din punct de vedere matematic, aplicarea unei relaii de recuren poate genera o
secven finit sau infinit de calcule, dar algoritmul ce o implementeaz se realizeaz
ntr-un numr finit de pai. Folosirea unei relaii de recuren presupune existena
unor date iniiale. Astfel, o relaie de forma:
x n = f ( x n 1 )
definete o relaie de recuren ntr-un singur pas i necesit cunoaterea unei singure
date iniiale, de exemplu x0.
O relaie de recuren mai general, de tipul:
x n = f ( x n 1 , x n 2 ,..., x n r )
definete o relaie de recuren n r pai ce necesit r valori iniiale, de exemplu
x0, x1,,xr-1.
2. CALCULUL COEFICIENILOR BINOMIALI
0

Se presupune c trebuie calculai coeficienii binomiali C , C ,..., C

n care n

i p sunt ntregi pozitivi cunoscui. Relaia de recuren existent ntre doi termeni
succesivi este:

k
n

n k +1
k

k 1
n

iar valoarea iniial este C = 1 .


n

Aplicarea relaiei de recuren permite calculul succesiv al coeficienilor


0

binomiali C , C ,..., C , folosind o singur valoare iniial, fiind deci o relaie de


119

Lucrarea 17

recuren ntr-un singur pas.


Relaia de recuren se codific n limbajul Fortran folosind o instruciune de
atribuire de forma:
coef_binom = (n k + 1)*coef_binom/k
care face parte din blocul de instruciuni al unei construcii DO cu contor al iteraiei.
naintea execuiei construciei DO trebuie iniializate valoarea iniial a variabilei
coef_binom, precum i cea a variabilei k a buclei DO. Secvena de instruciuni necesare
este urmtoarea:
coef_binom = 1
k=0
do k = 1, p
coef_binom = (n k + 1)*coef_binom/k
enddo
n continuare se pune problema modului de reprezentare i stocare a datelor de
intrare i mai ales a datelor de ieire. Datele de intrare sunt n i p, variabile scalare de
tip ntreg. Datele de ieire sunt k, variabil scalar de tip ntreg i valoarea
corespunztoare a coeficientului binomial, coef_binom. Coeficienii binomiali pot fi fie o
variabil scalar de tip ntreg, sub numele creia se memoreaz succesiv valoarea
fiecrei coeficient, fie un tablou unidimensional care memoreaz valorile tuturor
coeficienilor binomiali. n primul caz transferul datelor din memorie trebuie efectuat
imediat dup evaluarea valorii fiecrui coeficient, iar n al doilea caz transferul se poate
face dup calculul tuturor valorilor coeficienilor.
Folosirea unei singure variabile scalare coef_binom face ca pentru stocarea
rezultatelor s fie necesar o singur celul de memorie, transferul datelor de ieire
efectundu-se imediat dup execuia instruciunii de atribuire, ns n acest fel se poate
calcula teoretic oricare coeficient binomial. Utilizarea unui tablou unidimensional static
impune restricii asupra numrului de coeficieni ce pot fi calculai prin numrul maxim
de elemente pe care l poate avea tabloul unidimensional. O soluie este utilizarea unui
tablou alocabil cruia i se aloc dinamic spaiul de memorie corespunztor, n timpul
execuiei programului.
O important restricie asupra numrului de coeficieni ce pot fi calculai,
restricie valabil pentru ambele variante de programe, este dat de constantele
calculatorului, adic valoarea maxim a unui numr ce poate fi reprezentat pe un
anumit calculator. n cazul declarrii variabilelor ca fiind de tip ntreg pot fi calculai pe
un calculator personal coeficienii pn la maxim coeficientul C
120

14
30

. n continuare sunt

Relaii de recuren

prezentate cele trei variante ale programului pentru calculul coeficienilor binomiali.
15

772

7380

program coef_binomial
implicit none
integer k, n, p
integer coef_binom
character*10 fmt
fmt="(a)"
write (*, fmt, advance="no") " Valorile pentru n si p: "
read*, n,p
open(unit=1, file="coefbinom.txt",form="formatted",access="sequent
*

ial",status="unknown")
coef_binom=1
k=0
write(1,10) k, coef_binom
do k=1,p
coef_binom= (n-k+1)*coef_binom/k
write(1,10) k, coef_binom
enddo

10

format(3x,i3,4x,i12)
close (unit=1)
end

15

772

program coef_binomial
implicit none
integer k, n, p, pmax
parameter (pmax=50)
integer coef_binom(pmax)
character*10 fmt
fmt="(a)"
write (*, fmt, advance="no") " Valorile pentru n si p: "
read*, n,p
open(unit=1, file="coefbis.txt",form="formatted",access="sequent
*

ial",status="unknown")
coef_binom(0)=1
k=0
do k=1,p
coef_binom(k)= (n-k+1)*coef_binom(k)/k
enddo

121

7380

Lucrarea 17

do k=0,p
write(1,10) k, coef_binom(k)
10

format(3x,i3,4x,i12)
enddo
end

15

772

program coef_binomial
implicit none
integer k, n, p
integer, allocatable :: coef_binom(:)
character*10 fmt
fmt="(a)"
write (*, fmt, advance="no") " Valorile pentru n si p: "
read*, n,p
open(unit=1, file="coefbinom.txt",form="formatted",access="sequent
*

ial",status="unknown")
allocate (coef_binom(p+1))
coef_binom(0)=1
k=0
do k=1,p
coef_binom(k)= (n-k+1)*coef_binom(k)/k
enddo
do k=0,p
write(1,10) k, coef_binom(k)
enddo

10

format(3x,i3,4x,i12)
close (unit=1)
end

122

7380

PROCEDURI RECURSIVE.
PROGRAMUL PUTERI

LUCRAREA 18

1. INTRODUCERE
O relaie de recuren este o formul prin care un termen al unui ir se poate
calcula din unul sau mai muli termeni precedeni.
Fie primii k termeni ai unui ir (k numr natural), i anume u1, u2, u3,,uk,
sau altfel scris {uk}k1. O relaie de forma:
u

n+ k

= a u
1

n + k 1

+ a u
2

n+k 2

+ ... + a u ,1 m n
k

(1)

se numete relaie recursiv de ordin k.


Algoritmii care implementeaz o (relaie de) recuren se numesc algoritmi
recursivi. Se afirm c orice algoritm recursiv se poate transforma ntr-un algoritm
iterativ.
Limbajul Fortran accept proceduri recursive, funcii recursive i subrutine
recursive. Utilizarea unor algoritmi recursivi n locul unor algoritmi nerecursivi are ca
dezavantaj creterea timpului de execuie, ceea ce nseamn un consum mai mare de
resurse (timp procesror), ns are avantajul unei descrieri simple i concise.
2. RELAII DE RECUREN. EXEMPLE
Fie irul dat prin progresia geometric definit astfel:
u1 = a, u2 = aq, u3 = aq2, u4 = aq3, , un = aqn,

(2)

pentru care relaia recursiv este:


un = qun-1

(3)

n care k = 1 i a1 = q. Relaia 3 este o relaie de recuren de ordinul nti.


Fie irul dat prin progresia aritmetic definit n continuare:
u1 = a, u2 = a + r, u3 = a + 2r, , un = a + (n-1)r,
ntre doi termeni consecutivi exist relaia:
123

(4)

Lucrarea 18

un+1 = un + r

(5)

care ns nu este de forma (1). Pentru a obine o astfel de relaie considerm relaii de
tipul 5 pentru doi termeni consecutivi:
un+2 = un+1 + r, un+1 = un + r
iar prin diferen rezult:
un+2 = 2un+1 un

(6)

pentru care k = 2, a1 = 2, a2 = -1. Relaia 6 este o relaie de recuren de ordinul doi.


Fie irul ptratelor numerelor naturale:
u1 = 1, u2 = 22, u3 = 32, , un = n2, un+1 = (n+1)2,
Termenul un+1 poate fi scris sub forma un+1 = n2 + 2n +1 care este echivalent cu
un+1 = un + 2n + 1. Urmtorul termen poate fi scris folosind o relaie asemntoare:
un+2 = un+1 + 2n + 3. Dac se scad cele dou relaii se obine:
un+2 = 2un+1 - un + 2
Dac se mrete n cu o unitate se obine:
un+3 = 2un+2 - un+1 + 2
Prin scderea celor dou relaii de mai sus se obine:
un+3 = 3un+2 - 3un+1 + un

(7)

pentru care k = 3, a1 = 3, a2 = -3, a3 = 1. Relaia 7 este o relaie de recuren de ordinul


trei.
3. PROGRAMUL PUTERE
Fie dou numere naturale n i m. Se pune problema s se calculeze puterile nm.
Fie irul puterilor lui n definit astfel:
p0 = n0, p1 = n1, p2 = n2, , pm = nm,
124

Proceduri recursive. Programul PUTERI

Termenul pk poate fi scris sub forma pm = npm-1 = nnm-1 = nm. Se obine o relaie
de recuren de ordinul nti pentru care k = 1, a1 = n.
Descrierea n pseudocod a algoritmului iterativ, respectiv a algoritmului
recursiv, pentru calculul puterilor numrului natural n este prezentat n continuare:
algoritm iterativ

algoritm recursiv

real function putere (n,k);


integer i,k,n;
putere 1;
do i = 1,k
putere n*putere;
enddo
end

recursive real function putere (n,k);


integer k,n;
if (k = 0) then
putere_n 1;
else
putere_n n*putere(n,k-1);
endif
end

Un alt algoritm pentru rezolvarea problemei considerate, utilizabil pentru


valori mari ale lui k, prin care scade numrul de nmuliri i se reduce consumul de
resurse, este prezentat mai jos.
Un alt mod de calcul pentru puterile numrului n este urmtorul:

k / 2 2
daca k este par
n

=
n ( k 1) / 2 2 daca k este impar

Descrierea n pseudocod a a algoritmului recursiv este urmtoarea:


algoritm recursiv
recursive real function putere (n,k);
integer k,n;
if (k = 0) then
putere_n 1;
else
if ( mod(k,2) = 0 ) then
putere_n putere(n, k/2) * putere(n, k/2);
else
putere_n n*putere(n,(k-1)/2)*putere(n,(k-1)/2);
endif
endif
end

Pentru a compara timpii de execuie a algoritmului iterativ i a celui recursiv


s-a apelat de dou ori subrutina intrinsec cpu_time (time), care returneaz timpul
125

Lucrarea 18

procesorului, n secunde.
O problem important a programelor formate din mai multe uniti de
program este corectitudinea apelului unei proceduri externe. Datele necesare
compilatorului pentru a genera un apel corect al unei proceduri sunt furnizate de o
colecie de proprieti ale procedurii care sunt cunoscute sub denumirea de interfaa
procedurii. Dac ntreaga colecie de proprieti este accesibil compilatorului atunci
cnd acesta ntlnete un apel de procedur nseamn c se utilizeaz o interfa
explicit. Atunci cnd ntr-o unitate de program ntlnete un apel de procedur extern
compilatorul nu posed un mecanism pentru a accesa codul obiect al procedurii care a
fost compilat n mod separat. n acest caz, se utilizeaz o interfa implicit. Interfeele
implicite sunt o surs important de erori, mai ales n programele mari cu multe uniti
de program i apeluri frecvente.
Limbajul Fortran 90 permite specificarea de interfee explicite pentru
procedurile externe prin intermediul unui bloc interfa. Exemple de utilizare a
blocurilor interfa sunt prezentate n programele de mai jos, care implementeaz
algoritmii de mai sus.
15

772

program puteri

! varianta iterativa

implicit none
integer:: n, k
real :: t1, t2
interface
real function putere(n,k)
integer, intent (in)::n,k
integer::i
end function putere
end interface
write (*,"(A)",advance="no") " Numarul n = "
read*,n
write (*,"(A)",advance="no") " Exponentul k = "
read*,k
call cpu_time(t1)
print*, " Puterea ",k," a numarului ",n," este ", putere(n,k)
call cpu_time(t2)
print*, " Timpul de executie a programului este: ", (t2-t1), " secunde"
end
real function putere(n,k)
implicit none
integer, intent (in) :: n,k
integer :: i

126

7380

Proceduri recursive. Programul PUTERI

putere=1
do i=1,k
putere=n*putere
enddo
return
end

15

772

program puteri

7380

! varianta recursiva 1

implicit none
integer:: n, k
real :: t1, t2
interface
recursive real function putere(n,k)
integer, intent (in)::n,k
end function putere
end interface
write (*,"(A)",advance="no") " Numarul n = "
read*,n
write (*,"(A)",advance="no") " Exponentul k = "
read*,k
call cpu_time(t1)
print*, " Puterea ",k," a numarului ",n," este ", putere(n,k)
call cpu_time(t2)
print*, " Timpul de executie a programului este: ", (t2-t1), " secunde"
end
recursive real function putere(n,k) results (puteri_n)
implicit none
integer, intent (in) :: n,k
if (k.eq.0) then
puteri_n = 1
else
puteri_n=n*putere(n,k-1)
endif
end
15

772

program puteri

! varianta recursiva 2

implicit none
integer:: n, k
real :: t1, t2

127

7380

Lucrarea 18

interface
recursive real function putere(n,k)
integer, intent (in)::n,k
end function putere
end interface
write (*,"(A)",advance="no") " Numarul n = "
read*,n
write (*,"(A)",advance="no") " Exponentul k = "
read*,k
call cpu_time(t1)
print*, " Puterea ",k," a numarului ",n," este ", putere(n,k)
call cpu_time(t2)
print*, " Timpul de executie a programului este: ", (t2-t1), " secunde"
end
recursive real function putere(n,k) results (puteri_n)
implicit none
integer, intent (in) :: n,k
if (k.eq.0) then
puteri_n = 1
else
if (mod(k,2).eq.0) then
puteri_n =putere(n,k/2)*putere(n,k/2)
else
puteri_n =n*putere(n,(k-1)/2)*putere(n,(k-1)/2)
endif
endif
end

128

EXPRESII TABLOU.
PROGRAMUL GRAM_SCHMIDT

LUCRAREA 19

1. INTRODUCERE
Fie V un spaiu vectorial peste un cmp K. O mulime B de vectori din V se
numete baz pentru V dac B este liniar independent i genereaz spaiul vectorial V.
Un spaiu vectorial pe care s-a definit un produs scalar se numete spaiu
vectorial euclidian. Pentru spaiul vectorial euclidian R3 produsul scalar este definit
prin funcia real:
( x, y ) = x y + x y + x y
1

(1)
3

Pentru spaiul vectorial euclidian V, prin norma euclidian se nelege funcia


definit prin:
v = (x, x)

(2)

Doi vectori din spaiul vectorial euclidian V se numesc ortogonali dac produsul
lor scalar este nul. O submulime a spaiului vectorial se numete ortogonal dac
vectorii si sunt ortogonali doi cte doi. O mulime ortogonal se numete ortonormat
dac fiecare element al su are norma egal cu unitatea. Orice mulime ortogonal
dintr-un spaiu vectorial euclidian format din elemente nenule este

liniar

independent. Dac spaiul vectorial euclidian are dimensiunea n, atunci orice mulime
ortogonal care conine n elemente nenule este o baz a spaiului vectorial.
Pentru un spaiu vectorial euclidian din orice mulime liniar independent de
vectori din spaiu vectorial se poate construi o mulime ortonormat, mulime
ortogonal ale crei elemente au norma 1.
Procedeul prin care se trece de la o mulime liniar independent la o mulime
ortonormat se numete procedeul de ortogonalizare Gram-Schmidt.
Fie V un spaiu euclidian cu dimensiunea 3, iar (v1, v2, v3) este o baz a lui V.
Exist o baz ortonormat a lui V, (e1, e2, e3), care genereaz acelai spaiu ca i baza
(v1, v2, v3).
Mai nti se construiete o mulime ortogonal dup care se vor norma
elementele acestei mulimi. Mulimea ortogonal (w1, w2, w3) se obine din elementele
bazei (v1, v2, v3) n felul urmtor:
!

se consider w1 = v1;
129

Lucrarea 19

w2 = v2 + k1 w1, n care vectorul w2 nu este nul deoarece vectorii bazei sunt

liniar independeni;
din condiia de ortogonalitate a vectorilor noii baze rezult:

0 = (w2,w1) = (v2 + k1w1, w1), din care k1 = - (v2,w1)/(w1,w1);

vectorul w2 = v2 ((v2,w1)/(w1,w1))w1;

w3 = v3 + k1w1 + k2w2, n care vectorul w3 nu este nul deoarece vectorii bazei

sunt liniar independeni;


din condiiile de ortogonalitate a vectorilor noii baze rezult:

0 = (w3,w1) = (v3,w1) + k1( w1, w1) i 0 = (w3,w2) = (v3,w2) + k2( w2, w2),
din care se obin k1 = - (v3,w1)/(w1,w1) , k2 = - (v3,w2)/(w2,w2);

vectorul w3 = v3 ((v3,w1)/(w1,w1))w1 ((v3,w2)/(w2,w2))w2.

Mulimea ortonormat se construiete prin urmtorul procedeu:

e =
i

w
i

, i = 1, 2, 3

(3)

2. PROGRAMUL GRAM-SCHMIDT
Fie R3 spaiul vectorial euclidian canonic cu trei dimensiuni. Se pune problema
gsirii unei baze ortonormate cunoscnd o baz oarecare a spaiului vectorial euclidian.
Pentru aceasta s-a scris programul Fortran numit gram-schmidt.
Programul conine i instruciuni de atribuire ce folosesc expresii tablou.
Limbajul Fortran accept i expresii tablou care conin operanzi tablouri.
Unui tablou i se poate aplica o operaie unar. Rezult un tablou cu aceeai
form, fiecare element al tabloului rezultat are valoarea corespunztoare operaiei
unare aplicate elementului respectiv.
Programul gram-schmidt este artat n continuare.
15

772

program gram_schmidt !aplicabil pentru o baza in R^3


implicit none
integer:: i,n
real*8 :: u(3), v(3), w(3)
real*8 :: x(3), y(3), z(3)
real*8 :: d(3), e(3), f(3)
data n /3/
real*8 :: produs, a, b, c, norma_d, norma_e, norma_f
print*,"Introduceti componentele fiecarui vector al bazei (u,v,w)"
print*, " Vectorii trebuie sa fie liniar independenti"

130

7380

Expresii tablou. Programul GRAM-SCHMIDT

read*, (x(i), i=1,n)


read*, (y(i), i=1,n)
read*, (z(i), i=1,n)
u=x
v=y-(produs(n,y,u)/produs(n,u,u))*u
w=z-(produs(n,z,u)/produs(n,u,u))*u-(produs(n,z,v)/produs(n,v,v))*u
d=u/dsqrt(produs(n,u,u))
e=v/dsqrt(produs(n,v,v))
f=w/dsqrt(produs(n,w,w))
print*
print*, "

Baza ortonormata este urmatoare (d,e,f)"

print*
print*,"

d1,

d2,

d3"

e1,

e2,

e3"

f1,

f2,

f3"

print*,(d(i), i=1,n)
print*
print*,"
print*,(e(i), i=1,n)
print*
print*,"
print*,(f(i), i=1,n)
print*
print*, " Se verifica daca vectorii sunt ortogonali"
a=produs(n,d,e)
if (a.le.1.d-10) then
a=0.d0
endif
b=produs(n,d,f)
if (b.le.1.d-10) then
b=0.d0
endif
c=produs(n,e,f)
if (c.le.1.d-10) then
c=0.0
endif
print*
print*, " Produsul scalar (d,e) este= ", a
print*
print*, " Produsul scalar (d,f) este= ", b
print*
print*, " Produsul scalar (e,f) este= ", c
print*
norma_d= dsqrt(produs(n,d,d))

131

Lucrarea 19

norma_e= dsqrt(produs(n,e,e))
norma_f= dsqrt(produs(n,f,f))
print*, " Se verifica daca vectorii sunt normati"
print*
print*, " Norma vectorului d este= ",norma_d
print*
print*, " Norma vectorului e este= ",norma_e
print*
print*, " Norma vectorului f este= ",norma_f
end
real*8 function produs(n,u,v)
implicit none
integer :: i,n
real*8 :: u(n), v(n)
produs=0.
do i=1,n
produs=produs+u(i)*v(i)
enddo
return
end

132

LUCRAREA 20

UTILIZAREA BIBLIOTECILOR DE PROGRAME.


PROGRAM RADACINA

1. INTRODUCERE
1. BIBLIOTECI DE PROGRAME
Dac iniial un programator scria o mulime de programe pentru rezolvarea
problemelor concrete, prin creterea complexitii problemelor abordate i a tehnicilor
utilizate, s-a impus schimbarea modului de rezolvare problemelor tehnico-tiinifice cu
ajutorul calculatorului. Un mare progres a fost reprezentat de dezvoltarea unor
biblioteci de programe, ce conin subprograme (rutine) concepute, scrise i documentate
ntr-un cadru unitar, testate complet i destinate unei mari comuniti de utilizatori.
Exist dou tipuri de biblioteci de programe: (1) biblioteci generale, care
acoper o marie arie tematic din matematic i statistic, (2) bibliotecile specializate,
care sunt destinate rezolvrii unor anumite categorii de probleme, cum ar fi analiza i
rezolvarea sistemelor liniare, rezolvarea sistemelor de ecuaii neliniare etc.
Folosirea bibliotecilor de programe implic realizarea de ctre programator, pe
baza documentaiei, a programelor proprii ce fac apel la componente ale bibliotecii,
rezolvnd astfel ntr-un mod eficient probleme concrete.
Calitatea bibliotecilor de programe se manifest att la nivelul componentelor,
ct i la nivelul ntregului, prin urmtoarele atribute: fiabilitate, robustee, structurare,
utilizabilitate, validitate i portabilitate.
SLATEC este o biblioteca general de programe ce conine peste 1000 de rutine
scrise n limbajul FORTRAN. Acestea sunt rodul cercetrilor intreprinse de-a lungul
anilor '80 la institute tiinifice de mare prestigiu din Statele Unite (Air Force Weapons
Laboratory - Albuquerque, Lawrence Livermore National Laboratory-Livermore, Los
Alamos National Laboratory-Los Alamos, National Bureau of Standards-Washington,
National Magnetic Fusion Energy Computer Center-Livermore, Oak Ridge National
Laboratory-Oak

Ridge,

Sandia

National

Laboratories-Alburquerque&Livermore).

Rutinele sunt concepute ntr-o form destul de portabil, ceea ce a permis


implementarea lor pe sisteme din categoria PC, testarea implementrii corecte fcnduse cu ajutorul testelor ce nsoesc biblioteca. Domeniile acoperite de rutine sunt deosebit
de largi, printre acestea putndu-se meniona: Calculul funciilor elementare i speciale,
Operaii cu vectori i matrici, Rezolvarea sistemelor liniare, Valori i vectori proprii,
Descompunerea matricilor, Sisteme supra- si sub-determinate, Interpolare, Rezolvarea
ecuaiilor neliniare, Optimizare, Difereniere i integrare numeric, Ecuaii difereniale
133

Lucrarea 20

ordinare, Ecuaii cu derivate pariale, Transformate Fourier rapide, Aproximare,


Generare de numere pseudo-aleatoare, Sortare etc.
2. REZOLVAREA NUMERIC A ECUAIILOR
Fie o funcie f : D R R . Prin soluie a ecuaiei f ( x ) = 0 se nelege un
element x0 al mulimii D pentru care este valabil proprietatea c f(x0) = 0. Obinerea
unei soluii x0 a ecuaiei de mai sus, n general, nu este posibil prin metode analitice.
Aproximarea prin metode numerice a rdcinii unei ecuaii rmne una din
alternativele des utilizate pentru rezolvarea unor probleme de tipul celei prezentate.
Dac f(x) este un polinom, ecuaia se numete ecuaie algebric, n caz contrar
fiind denumit ecuaie transcendent.
n rezolvarea numeric a ecuaiei de mai sus se disting dou etape importante:
(1) separarea rdcinilor, (2) determinarea aproximativ a unei rdcini i evaluarea
erorii de calcul.
Metodele obinuite de separare a rdcinilor unei ecuaii sunt irul lui Rolle
sau irul lui Sturm.
Pentru ecuaiile algebrice, teorema fundamental a algebrei asigur existena
unui numr de rdcini (reale sau complexe), eventual multiple, egal cu gradul
polinomului.

Datorit

proprietilor

polinoamelor

exist

metode

specifice

de

determinare aproximativ a rdcinilor unei ecuaii algebrice deosebit de eficiente.


Metodele sunt de dou tipuri: (1) metode globale, cu care se determin toate rdcinile
ecuaiei, (2) metode locale prin care se determin aproximativ, folosind procedee
iterative, cte o singur soluie aproximativ localizat anterior.
Din clasa metodelor locale de aproximare a rdcinilor unei ecuaii fac parte i
metodele iterative: (1) metoda biseciei (njumtirii intervalului), (2) metoda coardei,
(3) metoda tangentei (Newton-Raphson) etc.
3. PROGRAMUL RADACINA
Se pune problema aflrii aproximative a rdcinii ecuaiei de mai jos, pe
intervalele (1,3), (-1,0). Pentru aceasta se utilizeaz rutina DFZERO din biblioteca
matematica SLATEC.
Ecuaia este urmtoarea:

x3 + 2 x x = 0
Pentru a putea realiza un apel corect al rutinei dfzero se va prezenta mai nti
documentaia de utilizare a acesteia.
134

Utilizarea bibliotecilor de programe. Programul RADACINA

Linia de definiie a rutinei este urmtoarea:


SUBROUTINE DFZERO(F,B,C,R,RE,AE,IFLAG)
Subrutina DFZERO determin un zero al funciei F(x) ntre valorile date B si
C,

cu

toleran

specificat

prin

criteriile

de

oprire

algoritmului

(DABS(B-C).LE.2*(RW*DABS(B)+AE)). Metoda utilizat este o eficient combinaie a


metodei secantei si biseciei.
Descrierea argumentelor:
!

F, B, C, R, RE si AE sunt parametrii de intrare in dubla precizie.

B, C si IFLAG sunt parametrii de iesire. B si C sunt dubla precizie, iar

F - numele unei proceduri FUNCTION ce determin valorile, n dubl

IFLAG de tip intreg).


precizie, pentru funcia F(x). Argumentul funciei F trebuie declarat de tip
dubl precizie;

B - unul din capetele intervalului (B,C), att ca parametru de intrare ct i


ca parametru de ieire. Valoarea lui B la ieire este cea mai bun
aproximaie a rdcinii funciei;

C - al doilea capt al intervalului (B,C), att la intrare ct i la ieire;


R - o estimare a zeroului funciei F care poate ajuta la creterea vitezei de
convergen. Dac F(B) i F(R) au semne inverse, o rdcin va fi gsit n
intervalul (B,R); dac F(R) i F(C) au semne inverse, o rdcin se va afla
n intervalul (R,C); altfel, intervalul (B,C) va fi investigat pentru o posibil
rdcin. Cnd nici o estimare mai bun nu este cunoscut, este
recomandat ca R s fie ales fie B fie C;

RE - eroarea relativ utilizat pentru RW n criteriile de oprire. Dac


valoarea cerut RE este mai mic dect precizia mainii, atunci pentru RW
se d o valoare aproximativ egal cu precizia mainii;

AE - eroarea absolut utilizat n criteriile de oprire. Dac intervalul (B,C)


conine originea, atunci o valoare nenul se alege pentru AE;

IFLAG - un cod de stare. Utilizatorul trebuie s verifice IFLAG dup


fiecare apel. Controlul este cedat utilizatorului n toate cazurile. XERROR
nu furnizeaz mesaje de eroare n aceste cazuri. Valorile pentru IFLAG
returnate dup apelul rutinei au urmtoarea semnificaie:
1.

B satisface tolerana cerut de un zero al funciei. Intervalul (B,C)


s-a redus la tolerana cerut, funcia schimb semnul n (B,C) i
F(x) descrete n valoare cnd (B,C) se restrnge;

2.

F(B) = 0. Oricum, intervalul (B,C) nu poate fi restrns la tolerana


cerut;
135

Lucrarea 20

3.

B poate fi apropiat unui punct singular al funciei F(x). Intervalul


(B,C) s-a restrns la tolerana cerut, funcia ii schimb semnul
n (B,C), dar F(x) crete n valoare cnd (B,C) descrete;

4.

nu s-a gsit nici o schimbare de semn a funciei, dei intervalul


(B,C) s-a restrns la tolerana cerut. Utilizatorul trebuie s
examineze acest caz i s decid cnd B este apropiat unui minim
local sau B este apropiat de o rdcin multipl sau nici unul din
aceste cazuri;

5.

prea multe evaluri ale funciei (> 500).

Pentru a determina rdcinile ecuaiei de mai sus, pe intervalele considerate,


cu ajutorul subrutinei DFZERO, se consider funcia:

F ( x) = x 3 + 2 x x
pentru care se determin zerourile pe aceleai intervale ale variabilei x.
15

772

program radacina
implicit none
integer :: iflag
real*8 :: f, b, c, r, re, ae
external f
data re/1.e-6/ae/1.e-5/
write(*,10)
10

format (/,' introduceti capetele intervalului: ')


read*, b, c
r=b

call dfzero(f,b,c,r,re,ae,iflag)
if ((iflag.eq.1).or.(iflag.eq.2)) then
write (*,20) b
20

format (/,' radacina ecuatiei este: ',e12.6)


else
print*, 'iflag = ', iflag
end if
end
real*8 function f(x)
real*8 :: x
f=x**3 + 2*x**2 - x
return
end

136

7380

BIBLIOGRAFIE
1.

Bdu, M., Calculatorul n trei timpi, Editura Polirom, Iai, 2001.

2.

Balan, Draga-Maria, Balan, G., Windows, Word for Windows, Excel, Editura
Promedia Plus Computers, Cluj-Napoca, 1995.

3.

Brsan, T., Burdujan, I., Vrabie, I., Metode numerice, Rotaprint I.P.Iai, 1990.

4.

Boian, Fl.-M., Sisteme de operare interactive, Editura Libris, Cluj-Napoca, 1994.

5.

Crstea, Mihaela, Diamandi, I., Calculatorul pe nelesul tuturor, Editura Agni,


Bucureti, 1995.

6.

Crstici, B., .a., Matematici speciale, Editura Didactic i Pedagogic, Bucureti,


1981.

7.

Dodescu, Gh., Odgescu, I., Nstase, P., Copos, Cristina, Compendiu de programare
a mini/micro calculatoarelor, Editura Enciclopedic, Bucureti, 1993.

8.

Freniu, M., Prv, B., Elaborarea programelor, Editura Promedia, Cluj-Napoca,


1994.

9.

Gheorghiu,

Anca,

Programarea

calculatoarelor

electronice,

Editura

Victor,

Bucureti, 2003.
10. Kovacs, S., Kovacs, Antonia, Un PC pentru fiecare, Editura Microinformatica,
Cluj-Napoca, 1993.
11. Mitrana, V., Provocarea algoritmilor, Editura Agni, Bucureti, 1994.
12. Mocanu, M., Marian, Gh., Bdic, C., Bdic, Carmen, 333 probleme de programare,
Editura Teora, Bucureti, 1993.
13. Patriciu, V.-V.,Sisteme de operare pentru mini i microcalculatoare, Editura
Militar, Bucureti, 1992.
14. Petru, O., Fortran 90/95 Limbaj i tehnici de programare, Universitatea Tehnic
Iai, 2001.
15. Popovici, P., Cira, O., Rezolvarea numeric a ecuaiilor neliniare, Editura Signata,
Timioara, 1992.
16. Rocule, M., Algebr liniar, geometrie analitic i geometrie diferenial, Editura
Tehnic, Bucureti, 1987.
17. Rocule, M., Analiz matematic, Editura Tehnic, Bucureti, 1996.
18. erbnai, L.-D., Limbaje de programare i compilatoare, Editura Academiei
Romne, Bucureti, 1987.
19. Sima, V., Varga, A., Practica optimizrii asistate de calculator, Editura Tehnic,
Bucureti, 1986.
20. Udrite, C., Bucur, C., Probleme de matematici i observaii metodologice, Editura
Facla, Timioara, 1980.
21. Vraciu, G., Popa, A., Metode numerice cu aplicaii n tehnica de calcul, Editura
Scrisul romnesc, Craiova, 1982.
137

S-ar putea să vă placă și