Sunteți pe pagina 1din 12

1

Capitolul 1. Hardware i software


Noiuni fundamentale
n viaa de zi cu zi operm cu dou tipuride entiti: materiale (care ocup un
loc n spaiu) i nemateriale (numite generic "informaie"). Unele obiecte reprezint i
una i alta, de exemplu un CD pe care este nregistrat un film. El este un obiect fizic,
material, dar conine informaie.

Dac uitm CD-ul pe bordul mainii, la soare,

obiectul material va fi distrus fizic (iremediabil din pcate), informaia pe care o


conine putnd fi totui reprodus procurnd o copie pe un suport similar sau pe un
alt tip de suport (DVD).
n cazul calculatorului, la componentele fizice ne referim folosind termenul
generic "hardware" (prescurtat hard) iar la informaiile pe care le conine ne referim
folosind termenul "software" (prescurtat soft).

Hardware-ul unui calculator este format din componentele electronice i


mecanice:

Microprocesor

Memoria principal (intern, de tip RAM - random access memory sau


ROM - read-only memory)

Memoria extern (discuri magnetice, optice)

Dispozitive periferice (de intrare: tastatura, mouse-ul, cititorul de coduri


cu bare, de ieire: monitorul, imprimanta, boxele audio, de intrareieire: unitile de disc magnetic).

2
Software-ul unui calculator reunete informaiile pe care acesta le deine: date
i programe. Un program este o list de instruciuni pe care procesorul le poate
executa. Datele pot fi orice alt tip de informaie de care are nevoie un program:
caractere, iruri de caractere, numere, imagini, secvene audio.
Programele i datele sunt memorate n memoria calculatorului (intern sau
extern) n acelai fel. Un program n curs de execuie ocup mpreun cu datele pe
care le manipuleaz o zon din memoria RAM. Programul poate accesa datele de
care are nevoie dar din afara acestuia, instruciunile i datele se confund.

Noiuni privind reprezentarea n calculator a informaiei


Din considerente legate de uurina realizrii circuitelor electronice necesare
memorrii i prelucrrii, n calculator informaia este reprezentat n cod binar. Binar
nseamn existena a doar dou stri, care prin convenie sunt '0' i '1' sau 'adevrat'
i 'fals'.

Un bit este o cifr binar, putnd deci avea valoarea 0 sau 1.


Pentru reprezentarea n binar a diferitelor tipuri de informaii (date) exist
convenii de reprezentare, definite prin standarde. ntre acestea de notorietate este
standardul ASCII, care specific modul de reprezentare n binar a caracterelor
alfabetului englez i a diferitelor semne speciale, cu sau fr echivalent grafic.
Exist ns reprezentri standard i a caracterelor altor limbi. Deoarece codul ASCII
presupune utilizarea a 8 poziii binare, insuficiente pentru a reprezenta simbolurile
grafece specifice tuturor limbilor, acestea se reprezint pe 16 poziii binare

3
(reprezentare numit Unicode).

n Unicode de exemplu 1111100111111101

reprezit caracterul. Atribuirea configuraiilor binare Unicode pentru noi caractere


este arbitrar i se realizeaz de ctre un comitet internaional de standardizare.
Singura restricie la atribuirea unei noi configuraii binare este s nu mai fi fost
utilizat.
n cazul reprezentrii altor tipuri de informaii (imagine, sunet) lucrurile devin
repede mult mai complexe, deoarece exist pentru fiecare dintre ele mai multe
standarde i n timp apar altele noi. Esenial este numai faptul c :

indiferent de natura informaiei, n final se ajunge la o codificare binar,

informaia din memoria calculatorului este o succesiune de bii i ce


reprezint acestea depinde doar de modul n care sunt utilizate de
programele n execuie.

Octetul
Deoarece bitul este o unitate de memorare a informaiei prea mic i fr o
semnificaie aparte, de regul memoria calculatorului este organizat n grupe de 8
bii. O celul de memorie de 8 bii se numete octet (engl. byte).
1 octet = 8 bii
Octetul este suficient pentru memorarea unui caracter ASCII.
Multiplii octetului :

Denumire

Numr de octei

Putere a lui 2

octet

20

kilooctet (kilobyte), kB

1024

210

megaoctet (megabyte), MB

1 048 576

220

gigaoctet (gigabyte), GB

1 073 741 824

230

teraoctet (terabyte), TB

1 099 511 627 776

240

Dac pentru memorarea unei date sunt necesari mai mult de 8 bii se va folosi
o suucesiune de mai muli octei.
Fiecare celul de memorie (de 1 octet) are i o adres care permite accesarea
ei.

La pornirea calculatorului fiecare celul de memorie din memoria RAM are o


valoare arbitrar.
Adresa unei celule i coninutul ei sunt mrimi care nu au nimic n comun.

Coninutul memoriei
n timpul funcionrii calculatorului, memoria acestuia reine n celulele sale
configuraii binare specifice diferitelor informaii coninute.

Se poate spune de

asemenea c fiecare octet conine un numr ntreg ntre 0 i 255 (255 este cel mai
mare numr ntreg care se poate reprezenta folosind 8 poziii binare).
Procesorul calculatorului poate accesa o celul de memorie (un octet) de la o
adres dat pentru a realiza dou funcii fundamentale:
1. poate scrie n celul. Coninutul anterior al acesteia este nlocuit cu o
nou valoare.

2. poate citi valoarea din celul. Procesorul obine o copie a coninutului


celulei. Coninutul celulei rmne neschimbat.
n timpul executrii unui program, o serie de valori din memorie rmn
neschimbate n timp ce altele se modific pe msur ce execuia programului
progreseaz.

De obicei rmn fixe celulele care conin date de intrare sau

instruciunile programului. Dac o celul conine valori calculate, valoarea ei iniial


va fi probabil necunoscut, arbitrar, dar va fi modificat pe parcursul execuiei
programului.
Procesoarele actuale pot citi sau scrie n memorie 8, 16, 32 sau 64 poziii
binare simultan, deci 1, 2, 4 sau 8 octei.
La scrierea unui program ntr-un limbaj de programare de nivel nalt nu este
necesar inerea evidenei adreselor locaiilor din memorie care conin date sau
informaii despre tipul acestora.

Datorit faptului c n program pot fi incluse

declaraii prin care fiecrei date i se precizeaz tipul i i se asociaz un nume, n


program celulele de memorie vor fi referite prin numele lor, calculul adreselor i
utilizarea lungimii corecte ale fiecrei date realizndu-se automat.

Folosirea discului magnetic


Pentru pstrarea pemanent a informaiei, aceasta este memorat pe discuri
magnetice printr-un procedeu similar nregistrrii sunetului pe o band de casetofon.

Procesul este reversibil, deci se poate scrie i citi n mod repetat.


Fizic, un hard-disk este format din dou sau mai multe discuri rigidizate ntre
ele i acoperite cu un material feromagnetic. Un bloc de capete de citire/scriere
poate fi plasat pe diferite circumferine ale discului. Citirea sau scrierea se realizeaz
cu viteze relativ reduse (de peste 1000 ori mai lent dect n cazul memoriei RAM).
La fel cum celulele memoriei centrale sunt dispuse din punct de vedere
conceptual unele dup altele i au fiecare o adres fizic, i poziiile pe care se poate
plasa fiecare dintre capetele de citire/scriere sunt precis definite i au asociate
adrese fizice.
Pe disc, informaia este organizat n fiiere. Fiierul conine informaii de
acelai fel (un ansamblu de date, un program etc). Fiecare fiier are un nume i
ocup pe disc o zon definit printr-o adres cunoscut de sistemul de operare.
Accesul la fiiere, citirea i scrierea lor i organizarea discului astfel nct fiierele s
fie rapid accesate sunt de altfel funcii principale ale sistemului de operare al
calculatorului. Aplicaiile care realizeaz accesarea unor fiiere vor realiza aceasta
indirect, prin intermediul unor funcii specializate disponibile la nivelul sistemului de
operare.

7
Fiierele pot fi de multe tipuri. Tipul unui fiier este dat de natura informaiilor
pe care le conine i este precizat prin extensia care este plasat n continuarea
numelui. Exemple:

prog.exe - fiier coninnd un program executabil,

prelucrare.cpp - fiier coninnd un program surs scris n C++,

info.txt, - fiier coninnd un text

f1.dat. - fiier coninnd date necesare unei aplicaii.

Extensia unui fiier este important i pentru faptul c este folosit de sistemul
de operare Windows pentru a stabili aciunea care trebuie executat dac acesta
este selectat printr-un dublu clic cu mouse-ul. Astfel, dac fiierul are extensia .txt
sistemul va lansa n execuie o aplicaie specializat pe tratarea fiierelor de text iar
dac extensia este .exe va ncrca n memoria principal coninutul fiierului i l va
lansa n execuie.

Operaiile executate de un procesor


n timpul funcionrii unui calculator, activitatea procesorului const n
executarea cu mare vitez a unor instruciuni elementare aparinnd unui set de
instruciuni pe care circuitele sale le pot executa.

Instruciunile sunt plasate n

memorie, una dup alta, formnd un program executabil. Instruciunile programului


executabil sunt denumite i instruciuni n limbaj main, deoarece ele pot fi
executate imediat de ctre procesor.
Exemple de instruciuni executabile de ctre procesor: citirea coninutului unei
celule de memorie, testarea unui bit al unei configuraii binare citite (dac este 1 sau
0), incrementarea cu o unitate a unei celule de memorie, adunarea unui numr din
procesor cu un numr aflat ntr-o celul din memoria principal etc.
O instruciune n limbaj main const dintr-o secven de octei care conine
att codul operaiei de executat ct i informaiile necesare adresrii operanzilor
implicai.

Dup executarea instruciunii curente procesorul execut instruciunea

plasat n memorie n continuare sau, dac instruciunea curent este o instruciune


de salt, execut o alt instruciune, aflat la o adres indicat n cadrul instruciunii
de salt.

Instruciunile pot forma astfel structuri logice complexe, calculatorul

devenind instrumentul ideal pentru transmiterea i procesarea volumelor mari de

8
date, manipularea modelelor matematice asociate proceselor fizice sau pentru
conducerea unor procese tehnologice complexe.
Aceasta este tot ce tie s fac un (micro)procesor. Procesoarele actuale
execut astfel de instruciuni elementare ntr-un timp foarte scurt: t<2-20 sec. sau,
altfel spus, cu frecvene superiore valorii de 1 GHz, (220 operaii/sec.).
Fiecare procesor are setul su de instruciuni main. Chiar dac realizeaz
n mare aceleai operaii, procesoarele care echipeaz calculatoarele DELL difer de
cele care echipeaz calculatoarele Apple Macintosh. Programul n limbaj main nu
este deci portabil, el este specific unui anumit procesor sau, mai exact, unei anumite
familii de procesoare.
Din fericire, pentru a programa calculatorul nu este necesar cunoaterea
programrii microprocesorului. Programarea se realizeaz n limbaje de nivel nalt
(C, C++, C#, Java, etc), folosind un set redus de instruciuni complexe. O aplicaie
specializat va analiza codul scris i va transforma instruciunile de nivel nalt n
instruciuni elementare, executabile de ctre procesor.

Exemplu simplificat de programare n limbaj main


S presupunem c dispunem de o periu de dini electric avnd motorul
electric de rotire a capului de periat controlat de un microprocesor. De altfel multe
dintre aparatele electrocasnice ncep s fie astfel realizate.
Setul de instruciuni executabile de microprocesorul periuei este urmtorul:

Instruciune
microprocesor

Machine Operation

0000 0000

Stop

0000 0001

Rotaie perie spre stnga

0000 0010

Rotaie perie spre dreapta

0000 0100

Salt la nceputul programului

0000 1000

Salt peste instruciunea urmtoare dac ntreruptorul


este deschis

Memoria "echipamentului" este urmtoarea:

Adresa Instruciune
0
1
2
3
4
La pornirea periuei, se lanseaz n execuie programul
din memorie ncepnd cu adresa 0. Programul este reluat
(de la adresa 0) la execuia instruciunii avnd codul 0000 0100
i trebuie s se opreasc din execuie la acionarea
ntreruptorului periuei.

Soluia problemei n limbaj main este urmtoarea:

Adresa Instruciune

Explicaie

0000 0001

Rotaie perie spre stnga

0000 0010

Rotaie perie spre dreapta

0000 1000

Salt peste instruciunea urmtoare dac ntreruptorul este


deschis

0000 0100

Salt la nceputul programului

0000 0000

Stop

Instruciunile de la adresele 0 la 3 formeaz un ciclu. Ele se execut continuu


pn ce condiia de ieire din ciclu (ntreruptor deschis) este ndeplinit. Astfel de
cicluri se ntlnesc practic n toate programele programele de calculator iar scrierea
lor, chiar n limbaje evoluate, nu este tocmai simpl. .

10

Capitolul 2. Programarea aplicaiilor simple n C i C++


Aspecte generale
Avnd n vedere att dificultile legate de cunoaterea arhitecturii i
funcionrii unui microprocesor ct i cele legate de descompunerea unui proces de
prelucrare de date n instruciuni elementare, pe care acesta le poate executa, foarte
rar se apeleaz la programarea n limbaj main.
Programele de calculator sunt scrise de regul n limbaje de nivel nalt, cele
mai folosite fiind C, C++, Java sau BASIC. Dup scrierea programului ntr-unul dintre
limbajele de nivel nalt menionate, o aplicaie specializat va analiza i va traduce
fiecare instruciune din program ntr-o succesiune de instruciuni n limbaj main.
Exemplu de program scris n C++:
#include <iostream>
using namespace std;
void main()
{
int sum = 0;
int i, j;
i = 2; j = 2;
sum = i + j;
cout << "Suma = " << sum << endl;
}

Dup scrierea programului folosind un editor de texte simplu (Notepad este


perfect), programul este nregistrat pe disc (salvat pe disc). La salvare i se va da un
nume, de exemplu suma.cpp. Se remarc folosirea extensiei .cpp, specific fiierelor
care conin programe scrise n acest limbaj.
Etapa care urmeaz salvrii este traducerea programului n limbaj main.
Aceast operaie poart numele de compilare iar aplicaia care o execut se
numete compilator. n urma compilrii se obine un alt fiier, suma.exe. Sufixul .exe
indic faptul c fiierul rezultat n urma compilrii conine un program executabil.

suma.cpp

compilator

Traducerea programului surs

suma.exe

11
Programul rezultat, suma.exe poate fi executat imediat.

Un dublu clic pe

pictograma acestuia n fereastra aplicaiei WindowsExplorer produce efectul urmtor:

dublu clic

Interpretoare
Se cunoate deja faptul c programele scrise n limbaje de nivel nalt nu pot fi
n nici un caz executate imediat de ctre microprocesor. Ele trebuie traduse mai nti
n limbajul acestuia.
O soluie frecvent folosit este ns utilizarea unui interpretor care traduce pe
rnd instruciunile limbajului de nivel nalt i execut codul rezultat n urma traducerii
pe msur ce acesta devine disponibil. Interpretorul este o aplicaie care creeaz
utilizatorului impresia c folosete un calculator capabil s execute direct
instruciunile de nivel nalt pe care acesta i le transmite.

12

Interpretor BASIC
(program executabil)

Program surs

Procesor
Interpretarea programului surs

ntr-un astfel de caz, procesorul execut alternativ instruciunile interpretorului,


care traduce instruciunile programului surs i instruciunile rezultate n urma
interpretrii fiecreia dintre liniile programului surs. Pe toat durata procesului, n
memoria principal se vor afla simultan interpretorul i programul surs. Interpretorul
const dintr-un ansamblu de instruciuni n cod main pe care procesorul le poate
executa imediat iar programul surs const dintr-un ansamblu de instruciuni pe care
interpretorul le cunoate i le poate prelucra.
Dei adoptarea unei astfel de soluii ncetinete semnificativ viteza de rulare a
unei aplicaii, ea rmne interesant dac se urmrete asigurarea portabilitii
aplicaiilor sau dac viteza de execuie nu este un factor relevant.

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