1. GENERALITATI
1.1. CONCEPTUL DE CALCULATOR
Calculatorul electronic este un dispozitiv programabil destinat prelucrarii informatiei, īn care operatiile elementare se efectueaza cu viteza si precizie ridicate, īn sistemul de numeratie binar.
In functie de viteza de calcul, memorie, precizie si numar de utilizatori, calculatoarele se īmpart īn trei mari categorii: calculatoare medii si mari, minicalculatoare si microcalculatoare. In ultimii ani s-a remarcat utilizarea crescānda a microcalculatoarelor (calculatoare personale) care īn general, la un moment dat, sunt folosite de catre un singur utilizator.
Fig. 1.1. Componentele calculatorului
Pentru a putea prelucra datele (informatia) utilizatorului, un calculator trebuie sa dispuna cel putin de urmatoarele componente (Fig.1.1):
o
memorie necesara stocarii informatiei (ROM=Read Only Memory, RAM=Random Access Memory care
este īmpartita īntre aplicatie, functiile de intrare iesire si sistemul de operare),
o
unitate de calcul (CPU) destinata efectuarii calculelor asupra datelor citite din memorie,
precum si de
dispozitive
de intrare/iesire (I/O) a datelor.
Legatura calculatorului cu componentele periferice se realizeaza prin intermediul unor interfete care permit accesul la aceste componente prin magistrala sistem. Aceste interfete sunt de doua feluri: interfete seriale (transmit informatia bit cu bit) si interfete paralele (interfete care transmit cīte 8, 16 sau 32 de biti simultan). Transmisia informatiei prin interfete se face cu anumite viteze standard, unitatea pentru viteza de transmisie fiind BAUD-ul (bit pe secunda).
COMPONENTELE UNUI CALCULATOAR DE TIP "PC"
1. Eticheta de identificare a firmei producatoare.2.LED de activitate a discului fix.3.LED de retea. 4.Comutator de pornire. 5. LED pentru indicarea blocarii tastaturii. 6.Indentificatorul produsului. 7. LED care arata ca este accesata unitatea de discheta. 8. Uni-tatea de discheta. 9.Buton pentru ejectarea dischetei. 10. Unitate de disc optic (CD-ROM). 11. Loc pentru un dispozitiv auxiliar ulterior.
18
. Spatii pentru extinderea configuratiei cu placi suplimentare.
13
. Conector pentru un modul de sinteza audio (wavetable module). 14.Baterie cu litiu pentru alimentarea ceasului si a memoriei pentru configuratie. 15. Microrocesorul si soclul ZIF (Zero-Insertion Force) de tip 7. Procesorul Pentium functioneaza la o frecventa a ceasului intern de 120-600 MHz si o frecventa externa de 50- 66 MHz. 16. Conectoare pentru memoriile de tip DIMM (Dual In-Line Memory Modules) (1-128 MB). 17.Memorie Cache. 18.Memorie Cache secundara. 19. Comutatoare de configurare (jumpers).
Fig. 1.6. Utilizarea dischetei de 3,5 inch (discul magnetic amovibil)
Fig. 1.7. Utilizarea discului optic (CD-ROM)
1.3. SISTEME DE OPERARE
Pentru rezolvarea unei probleme cu ajutorul unui sistem de calcul este necesara o "traducere" a formularii problemei respective si a modului sau de rezolvare din limbajul uman īn limbajul masina, caracteristic sistemului de calcul respectiv. Pentru a efectua acest lucru sunt necesare mai multe programe interconectate īntr-o structura piramidala īn care programul cel mai apropiat de sistemul de calcul (la baza piramidei) este sistemul de operare.
Sistemul de operare asigura urmatoarele functii esentiale:
coordonarea
īntregii activitati a unui sistem de calcul si corelarea tuturor componentelor
sistemului;
comunicarea
īntre utilizator si sistemul de calcul īntr-o maniera facila;
executarea
programelor;
ofera
o gama larga de servicii care usureaza munca programatorului.
Sistemul de operare MS-DOS furnizeaza cāteva avantaje utilizatorilor microcomputerelor: o larga varietate de comenzi, disponibilitatea sa pentru diferite computere si pentru o mare cantitate de aplicatii.
Dispozitivele periferice sunt desemnate ca unitati logice al caror nume consta dintr-o litera urmata de semnul ":". De exemplu, unitatile de discheta pot avea numele A: sau B: iar discul fix C:
Numele unui fisier (colectie de date oarecare, de exemplu program sau date experimentale, numere de telefon, etc) consta de obicei dintr-un nume (8 caractere) umat de o extensie de maximum 3 caractere, separate prin punct. Extensia stabileste daca fisierul este un program sau date de intrare pentru program. Extensiile: COM (comanda), EXE (executabil) si BAT (engl. BATCH, lot de comenzi conform definitiilor sistemului de operare) definesc programe executabile.
Incarcarea sistemului de operare īn cazul microcalculatoarelor compatibile IBM se face dupa urmatoarea schema:
se
face un test automat al resurselor sistemului denumit POST (Power-On Self Test).
īn
urma testului POST, controlul este trecut unui mic program stocat īn ROM care contine
cāteva instructiuni necesare pornirii calculatorului prin īncarcarea de pe disc (floppy
disc sau hard disc) a fisierului IBMBIO.COM care contine BIOS-ul (Basic Input/Output
System) si o colectie de rutine folosite la controlul resurselor hardware. In cazul unor
eventuale erori īncarcarea este abandonata.
este
īncarcat nucleul sistemului de operare (care furnizeaza functiile sistem folosite de
comenzile MS-DOS si de programele de aplicatii) dintr-un fisier numit IBMDOS.COM.
este
citit continutul fisierului CONFIG.SYS care contine diferite comenzi si optiuni. Una
dintre comenzile folosite este comanda DEVICE care comanda MS-DOS-ului sa instaleze
driver-ele specifice resurselor hardware.
este
citit continutul fisierului AUTOEXEC.BAT care contine o serie de comenzi MS-DOS executate
la pornirea calculatorului.
este
executat fisierul de comenzi COMMAND.COM care duce la aparitia prompterului,
asteptīndu-se apoi introducerea comenzilor utilizatorului, care īnseamna īncheierea
procesului de īncarcare,iar calculatorul este gata de lucru. Pentru sistemele mai noi, cu
resurse grafice suplimentare, de tip Windows se mai adauga si īncarcarea programului
WIN.COM.
Pe lānga celelalte facilitati ale sistemului de operare MS-DOS, una foarte importanta este aceea oferita de structura arborescenta a directoarelor, structura care, īn special pe un disc fix, duce la o flexibilitate considerabil marita a modului de pastrare al fisierelor. Prin conventie, un director are un nume. Intrarea este marcata cu un punct iar iesirea cu doua puncte.
Orice disc (fix sau floppy) contine īn acest tip de structura un director radacina care poate contine (se poate ramifica īn) alte subdirectoare care la rāndul lor de asemenea se pot ramifica, etc.
Localizarea fisierelor īntr-o astfel de structura se face specificānd calea pāna la fisierul respectiv, aceasta īnsemnānd specificarea succesiunii de directoare, separate prin \ (engl. "slant" sau "backslash"), de la directorul radacina pāna la directorul īn care se afla fisierul respectiv.
1.4. COMENZI MS-DOS UZUALE
Comenzile MS-DOS sunt folosite pentru executarea unor operatii asupra fisierelor (copiere, stergere, redenumire, tiparire, etc.) si discurilor (formatare, afisarea structurii de subdirectoare, verificarea erorilor) precum si pentru executarea programelor sistem si a aplicatiilor utilizator.
Comenzile MS-DOS interne cele mai des utilizate
sunt cele folosite īn scopul gestionarii fisierelor: comanda
DIR (dir [cale]) listeaza continutul directorului a carui cale este specificata, respectiv
a directorului curent daca nu este specificata nici o cale.
comanda
MD (MKDIR) (MD [cale\] nume_director) creaza directorul al carui nume (de maximum 8
caractere plus extensie) este specificat.
comanda
CD (CHDIR) (CD [cale\] nume_director) schimba directorul curent cu directorul specificat.
Daca acesta nu este un subdirector al directorului curent atunci trebuie specificata toata
calea pornind de la directorul radacina.
comanda
CD .. schimba directorul curent cu directorul imediat superior.
comanda
RD (RMDIR) (RD [cale\] nume_director) sterge directorul specificat. Pentru ca un director
sa poata fi sters trebuie ca īn prealabil sa-i fie sters continutul.
comanda
COPY (COPY [cale\] nume_fisier_sursa [cale\] nume_fisier_destinatie) copiaza fisierul
sursa (din primul director specificat) sub numele fisierului destinatie (īn al doilea
director specificat).
comanda
REN (REN [cale\] nume_vechi nume_nou) redenumeste fisierul cu numele nume_vechi (din
directorul specificat) cu numele nume_nou.
comanda
TYPE (TYPE [cale\] nume_fisier) tipareste continutul fisierului specificat.
Operarea calculatorului folosind comenzi la aparitia prompterului se mai numeste "mod linie de comanda". Referitor la rezolvarea unei probleme de calcul, dupa pornirea calculatorului, utilizatorul poate sa:
lanseze
īn executie comenzi ale sistemului de operare,
sa
īncarce un editor de texte īn scopul scrierii unui program sursa
sa
lanseze īn executie un program de calcul.
1.5. ELEMENTELE MEDIULUI GRAFIC WINDOWS
Acest mediu este caracteristic calculatoarelor mai noi cu memorie si microprocesor performant. Majoritatea comenzilor sistemului de operare sunt realizate interactiv prin folosirea unui dispozitiv de urmarire grafica interactiva (pointing device), cel mai utilizat fiind "mouse"-ul. Programelor le sunt asociate niste desene specifice (icoane). Executia programului īncepe la coincidenta īntre icoana mouse-lui cu icoana programului plus o apasare a butonului stānga a mouse-lui. Butonul dreapta al mouse-lui este folosit pentru modificarea proprietatilor asociate icoanei.
Este posibila rularea simultana a mai multor programe. Operatiile de intrare-iesire aferente programului sunt urmarite īn ferestre separate (windows). O fereastra are:
bara de mesaj (de identificare) cu butoane de inchidere, deschidere si
ajustarea dimensiunii.
meniu,
cu diferite functii asociate programului (optional)
butoane
pentru inspectia verticala si orizontala a continutului.
Gestiunea fisierelor se poate face cu programul "Windows Explorer".
1.6. FUNCTII GRAFICE
Dispozitivele grafice (ecran sau masa de desen-plotter) sunt foarte importante īn interpretarea interactiva a rezultatelor, inspectia vizuala a acestora ramānānd un criteriu absolut de acceptare sau nu a acestor rezultate pentru orice experimentator. Un dispozitiv grafic trebuie sa permita:
definirea
scalei (suprafetei de desen) dupa axele x si y;
pozitionarea
penitei īn orice punct al suprafetei de desen;
ridicarea
sau coborārea penitei;
utilizarea
caracterelor alfanumerice;
alegerea
culorii penitei (optional);
In cazul utilizarii ecranului ca dispozitiv grafic este necesara si copierea rezultatului pe hārtie sau salvarea pe disc.
Scrierea aplicatiilor sub Windows este aparent mai greoaie deoarece trebuie specificate:Din fericire, pentru majoritatea necesitatilor practice se gasesc sabloane gata scrise, īn care se poate insera cu usurinta aceeasi codificare a calculelor ca īn cazul aplicatiilor DOS (vezi mai jos).
Manualul pentru programarea ferestrelor īn Windows: Win32.hlp
Deoarece programarea acestor aplicatii este dificila, au fost dezvoltate limbaje
speciale care folosesc din plin resursele hardwarwe. Interfata grafica Windows foloseste
programe speciale pentru accelerarea functiilor grafice ale calculatoarelor de tip PC,
numite de obicei DirectX.Mai nou, folosind posibilitati
tehnice sporite de viteza si memorie, s-au raspāndit reprezentarile grafice īn conceptul
de scena:
Mediul de
programare standard pentru construirea scenelor (propus de firma SiliconGraphics) este
OpenGL.
Lista instructiunilor īn limbajul OpenGL (lb. engleza)
Exemplu de program scris īn OpenGL cu Dev-C++:
Program sursa: OpenGL.dev Executabil: OpenGL.exe
Mai puteti exersa conceptul folosind o aplicatie scrisa īn limbajul de realitate virtuala "wrl" (virtual reality markup language), derivat din OpenGL,care permite studiul unor scene. In cazul de fata, este vorba despre o camera de lucru.
Este necesar Internet Explorer 5 sau "plug-in"-ul vrml2c.
Pe lānga scrierea unor aplicatii simple īn limbajul C++ cu comenzile OpenGL existente, folosind Dev-C++, mai puteti construi scene folosind urmatoarele aplicatii (gratuite dar foarte utile), derivate de asemenea din OpenGL:
- Chartsdemo (http://www.crystalgraphics.com)
- 3D raster viewer (http://amlab.hs.ru)
- Persistence of Vision Ray Tracer (POV) (http://www.povray.org)
1.7. ELEMENTELE LIMBAJELOR DE PROGRAMARE
Orice limbaj de programare are la baza un vocabular si o gramatica.
Vocabularul
unui limbaj consta din: set
de caractere care īnseamna practic litere, cifre si caractere speciale,
constante,
care la rāndul lor pot fi: logice, numerice (al caror domeniu de reprezentare este
specific calculatorului) si alfanumerice (orice caracter sau succesiune de caractere),
identificatori,
variabile,
care pot fi simple sau indexate (vectori uni sau multidimensionali).
liste
de variabile,
expresii
(numerice, relationale, logice),
functii
si subprograme
Programele de calcul difera mult īn scop, stil si complexitate. Totusi, aproape toate trec prin urmatoarele trei etape:
- descrierea,
colectarea si stocarea informatiei (datelor)
-
prelucrarea informatiei īn scopul obtinerii rezultatului dorit.
-
afisarea sau stocarea rezultatelor.
Orice date folosite de catre un program trebuie scrise astfel īncāt limbajul de programare sa le recunoasca. De asemenea, trebuie ca īn memoria calculatorului sa fie rezervat un spatiu corespunzator cantitatii de date ce trebuie prelucrate. O data ce informatia a fost stocata sub forma variabilelor numerice, siruri de caractere sau structuri mai complicate, acestea trebuie prelucrate, actiune care difera īn functie de scopul urmarit.
Dupa ce datele au fost prelucrate, rezultatele trebuie sa fie disponibile utilizatorului, deci trebuie sa fie afisate pe ecran, extrase la imprimanta sau sa fie stocate pe un suport magnetic.
Va puteti familiariza cu elementele specifice limbajelor Liberty Basic, C si PASCAL urmarind legaturile (locale) de mai jos:
Prezentarea limbajului Liberty BASIC
Lectii de limbaj C (lb engleza)
Compilatoare gratuite pentru calculatoarele de tip PC pe 32 de biti (Windows) au ajuns la performante care depasesc produsele comerciale mai vechi (de tip DOS, pe 16 biti). Desi programele noastre au fost scrise folosind produsele pe 16 biti, ele pot fi adaptate cu foarte putina bunavointa pentru aceste compilatoare mai noi. Am remarcat īn Internet larga raspāndire a compilatoarelor GNU pentru FORTRAN, PASCAL, C si C++ (www.gnu.org , vezi de asemenea www.simtel.net ), a interfetei grafice, (GUI-engl. Graphics User Interface), pentru compilatoarele GNU C, C++ si PASCAL ( http://www.bloodshed.net ) precum si excelentul mediu de programare Liberty BASIC (http://www.libertybasic.com)). Acesta din urma, are deocamdata dezavantajul major al unei precizii scazute (nu are dubla precizie), care devina suparatoare pentru aplicatiile stiintifice de calcul intensiv iar viteza de executie nu este mare. Totusi, facilitatile grafice sub Windows īl fac util oricarui loc de lucru. In fond, aplicatiile stiintifice de calcul intensiv pot fi rulate fara grafica, care poate fi executata la sfarsit, folosind Liberty BASIC sau un alt utilitar.
Deoarece toate limbajele de programare au caracteristici comune, trecerea de la un limbaj la altul poate fi mult usurata de utilitare de traducere, a se vedea de exemplu http://www.simtel.net.
1.8. ETAPELE PREGATIRII SI EXECUTIEI UNUI PROGRAM
In timpul scrierii unui program destinat rezolvarii unei anumite probleme este indicat sa fie parcurse urmatoarele etape:
1.
Formularea problemei īn sensul ca programatorul trebuie sa stabileasca foarte clar ce date prelucreaza si ce rezultate urmareste sa obtina prin prelucrarea acestora. Astfel, programatorul trebuie sa-si īnsuseasca modalitatile de rezolvare a problemei si din toate variantele posibile sa o aleaga pe cea mai buna, īn sensul ca aceasta sa fie cea mai exacta, cea mai rapida si īn plus sa permita scrierea unui program pentru care este suficienta memoria disponibila a calculatorului.2.
Stabilirea etapelor logice ale programului, adica descompunerea problemei īn operatii elementare care pot fi executate de catre calculator si indicarea ordinii de executie a acestor operatii.3.
Scrierea programului īntr-un limbaj oarecare, adica transcrierea algoritmului īntr-un limbaj accesibil calculatorului. Etapele parcurse pentru executia unui program sunt:
Compilarea, (fig. 1.10) adica traducerea programului sursa, scris īntr-un limbaj evoluat, īn limbaj masina. Acest lucru implica existenta unui program de sistem numit compilator (interpretor pentru limbajul BASIC si JAVA) si presupune printre altele o analiza lexicala si sintactica a programului sursa.
Editarea de legaturi, (fig. 1.11), faza īn care modulului obiect rezultat īn urma compilarii i se ataseaza subrutinele de sistem necesare programului, subrutine care sunt deja scrise īn limbaj masina.
Executia, (fig. 1.12), faza īn care sunt executate efectiv instructiunile programului, iar rezultatele obtinute sunt transmise utilizatorului.
4.
Corectarea si testarea programului este facilitata si de mesajele eventualelor erori care sunt detectate īn timpul compilarii.ATENTIE !!
Compilatoarele detecteaza doar erorile de sintaxa nu si erorile logice (semantice). Testarea programului este de asemenea o etapa foarte importanta īn pregatirea lui. In urma unui caz test, programul trebuie sa furnizeze rezultate cunoscute.
1.9. PRECIZIA CALCULATOARELOR
In memoria calculatoarelor, numerele reale sunt reprezentate printr-o mantisa si un exponent. In multe cazuri practice pot apare unele erori numerice care se datoreaza numarului finit de biti afectat mantisei si exponentului. Astfel [6]:
la o
operatie de īmpartire la care īmpartitorul este un numar foarte mic, rezultatul poate fi
un numar foarte mare, care sa depaseasca limita de reprezentare a calculatorului.
la
īmpartirea a doua numere foarte mici (aproape nule) rezultatul poate fi un numar foarte
mare.
prin
adunarea unui numar foarte mic la un alt numar, rezultatul poate sa nu difere de cel de-al
doilea numar.
Acest din urma lucru poate fi exploatat īn sumarea seriilor convergente, atunci cānd ultimul termen nu mai contribuie la valoarea sumei. De asemenea, īn procesele iterative de forma xnou=xvechi+a, un criteriu natural de oprire este conditia xnou=xvechi, deoarece a este mai mic decāt lungimea mantisei calculatorului. Programele exemplificative folosesc aceasta conditie pentru a evalua performantele de precizie ale calculatorului folosit.
In acesta lucrare vom nota cu REPS
lungimea mantisei īn baza zecimala. Estimarea valorii REPS se face īn felul urmator:
REPS=1
repeta
pāna cānd 1+REPS=1 REPS=REPS*2
|
deoarece la ultima īmpartire s-a pierdut un bit care trebuie recuperat. |