Sunteți pe pagina 1din 10

Curs 1: Introducere in stiinta calculatoarelor

Opreatorii pe calculatoare sunt aceia care utilizeaza programele create in diverse activitati.Administratorii
de sistem au grija ca programele sa fie corect instalate. Programatorii sunt cei care creaza programe.
Scurt istoric al masinilor de calcul:
Preocuparea oamenilor de a-si automatiza anumite activitati dateaza din Antichitate. Exemplul care se da
de obicei ca prim instrument de calcul a fost socotitoarea/abacul. In sec. al XVI-lea, a inceput sa fie
proiectata si confectionata o serie de masini de calcul ce foloseau principii mecanice. Apare ideea
reprezentarii datelor cu ajutorul rotilor dintate. Valorile de intrare se marcau manual prin pozitionarea
corespunzatoare a rotilor, se declansa angrenajul sau mecanismul de calcul, iar la oprire se citeau
rezultatele/valorile de iesire.
Legat de aceasta tehnologie, cele mai importante nume sunt Blaise Pascal, Leibniz, Jaquard, Babbage.
Blaise Pascal a construit un mecanism cu roti dintate pt tatal sau caruia ii era necesar la serviciu. Jaquard
a construit un razboi de tesut. Modalitatea de impletire a firelor era planificata cu ajutorul unor cartele
perforate. Babbage a introdus ideea ca nu numai configuratia datelor de intrare (melodia) sa fie memorata
pe cartele perforate cat si functiile masinii de calcul. Astfel, aceeasi masina putea realiza mai multe tipuri
de functii. Babbage a introdus si ideea logicii conditionale, adica in functie de indeplinirea sau nu a unei
conditii logice, programul se urmeze doua trasee diferite.
In anul 1890 a luat fiinta in SUA compania IBM (International Business Machine). Computerul joaca un
rol f important in evolutia tehnicii de calcul pe plan mondial. In 1940 se construieste la Harvard
calculatorul Mark 1 care utilizeaza relee electromecanice. Aceste relee sunt componente care inchid sau
deschid circuite electrice folosind comanda electrica. Primul calculator electronic este considerat a fi
ENIAC (Electronic Numerical Integrator And Calculator) construit in 1945. Era bazat pe lampi
electronice. Acest calculator era f mare (160 m), avea 20 000 tuburi catodice, cantarea 30 de tone si putea
executa 5 000 de adunari pe secunda.
Mecanismele ce stau la baza functionarii calculatoarelor depind de tipul acestora.
1. Abacul mutarea manuala a bilelor pe spire
2. Roti dintate inregistrarea nr de rotatii a rotilor dintate
3. Cartele perforate
- Utilizate doar pt introducerea datelor de intrare. In functie de configuratia perforatiilor,
modelele pot reprezenta sau pot avea diverse interpretari: fie configuratie de impletire a
firelor, fie valori numerice
- Cartelele perforate sunt utilizate si pt iregistrarea programelor cand un anumit model poate
insemna operatia ce trebuie realizata
Calculatoarele electronice folosesc proprietatea curentului electric si ale componentelor electrice.
In functie de faptul ca circula sau nu curent electric, se poate realiza o logica de calcul sau stocare a
datelor. Calculatorul foloseste componente electrice care pot fi incarcate cu curent electric (starea 1) sau
pot sa nu fie (starea 0). De aceea spunem ca, calculatorul opereaza in mod nativ cu numere in baza 2.
Dincolo de 0 si 1, valorile ce poti fi memorate de componentele unui calculator (bistabili) sunt

interpretarile pe care omul le da acestor siruri de 0 si 1, iar aceste interpretari se numesc baze de
numeratie.
MSB 27 26 .........................21 20 LSB
1*20 +0*21 +1*22 +0*23 ....+1*27 =149
1 0 0 1 0 1 0 1
7 6 5 4 3 2 1 0
Valoarea de 0 sau 1 a unui circuit poarta denumirea de bit. Matematicianul american de origine germana
Von Neumann a publicat in 1946 proiectul primului calculator cu prelucrare secventiala a instructiunilor
si datelor memorate impreuna intr-o zona numita memoria calculatorului. Pe langa calculatorul serial mai
exista si calculatorul paralel.
Programele de calculator:
Privite dpdv al utilizatorului final, programele de calculator sunt instrumente ce permit interactiunea
utilizatorului cu respectiva aplicatie. Dpdv al programatorului, programele sunt niste suite de instructiuni
necesare pt ca un program sa ofere rezultatele dorite. Succesiunea de instructiuni este redata prin
algoritmi. In limbaj comun, un algoritm e asemanator cu o reteta, in limbaj tehnic, un limbaj e o
succesiune de etape ce specifica modalitatea in care se poate ajunge la un anumit rezultat, converge la
rezultate intr-un nr finit de pasi si are o conditie de terminare ce este la un moment dat indeplinita.
Limbajele de programare sunt programe cu ajutorul carora se pot crea programe. Pentru ca un
programator sa poate instrui un calculator sa realizeze programe trebuie sa cunoasca limbajul pe care
programul il intelege. Forma finala a unui program executata de computer se numeste cod masina.

Curs 2: Notiuni despre calculator utile


dpdv al programarii
In informatica vom regasi o multitudine de abstractizari utile in masura in care ne creaza perspective
folositoare asupra masinii de calcul. Informatica este o stiinta pluridisciplinara construita in jurul
elementului central denumit calculator. Calculatoarele sunt niste unelte ce isi gasesc aplicabilitate intr-o
multime de domenii.
La baza, calculatoarele moderne au o serie de resurse fizice, mai exact electronice, electromecanice,
electromagnetice.
Resurse
informatie
Resurse
logice
Resurse
fizice
Exploatand proprietatile resurselor fizice, se construiesc resursele logice care se traduc in operatii utile
anumitor functii ale calculatorului. Valorile de adevar sunt 0-fals si 1-adevarat. Cartelele perforate
interpretau prezenta unei perforatii ca 1-logic si absenta ei ca 0-logic, asa numitele inele de ferita.
Foloseau proprietatea feritei de a se magnetiza sau nu la trecerea unui curent electric ca 1-logic si 0-logic.
Calculatoarele folosesc anumite componente numite bistabili pt a reprezenta aceste valori.

BITUL CELULA DE MEMORIE BISTABIL


E cea mai mica unitate (unitatea atomica) prin care se poate reprezenta o informatie in format binar.
Bitii sunt folositi pt a memora valori.
In general, pe n biti se pot memora 2 valori.
3
0 0 0
0 0 1
0 1 1
0 1 0
1 0 0
1 0 1
1 1 0
1 1 1
23 = 8

2
0
0
0
1
1
0
1
1
2
2 =4

Un caz particular este octetul sau byte-ul.


- BYTE
8 biti

1B=8b
Multiplii byte-ului:
1 KB =1024 B 210
1 MB = 1024 KB 220
1 GB = 1024 MB 230
1 TB = 1024 GB 240
Cel mai simplu exemplu de functie logica ce se poate realiza cu ajutorul unei resurse fizice este functia
si. Poarta logica si este un mic circuit electric capabila sa realizeze exploatarea unei resurse fizice iar
tabela de adevar este:
AND

OR

XOR

Reprezentarea numerelor in memoria calculatorului


Calculatorul lucreaza in mod nativ in baza 2, cifrele fiind 0 si 1. Pt a reprezenta un nr exprimat in baza 10
in memoria calculatorului trebuie sa-i dam o noua exprimare in baza doi. (Transformarea din baza 2 in
baza 10):
27 26 .........................21 20
1 0 0 1 0 1 0 1
7 6 5 4 3 2 1 0

1*20 +0*21 +1*22 +0*23 ....+1*27 =149

Transformarea nr dintr-o baza oarecare in baza 10:

Pe langa nr in baza 2 si 10 se mai folosesc baza 8 (sistem octal) si baza 16 (sistem hexazecimal)
16: 0,1,2,...,9,A,B,C,D,E,F
Transformarea nr din baza 10 in alta baza:
Pornim de la exprimarea in forma polinomiala a nr in baza 10:

Noi trebuie sa aflam


baza q.

adica cifrele nr in baza q adica transformarea din baza 10 in

Transformarea nr dintr-o baza oarecare m intr-o baza oarecare n:


Pt anumite cazuri particulare se fac si transformari directe:

Pt a exprima un nr in baza 8 sunt necesare 3 cifre in baza 2.


101(2) =
C.P.: Nr(2)

Nr(8)

Se grupeaza nr in baza doi cate 3 cifre, si se transforma fiecare grup in baza 8. Prin inmultirea fiecarei
cifre cu puterea lui doi corespunzatoarea pozitiei in grup (20 , 21 sau 22).
! Analog baza 16, doar ca grupam cate 4 !

Curs 3: Sisteme de operare


Pt ca un calculator sa poata functiona, doua entitati trebuie sa lucreze concomitent si corect (Hardware si
Software) = componentele fizice si programele.
Sistemele de operare sunt colectii de programe ce au rolul de a gestiona atat functionarea interna a
calculatorului cat si interactiunea acestuia cu mediul exterior. Pe nivelul 0 al softwarelui unui calculator
este componenta numita BIOS (Basic Input Output System). La pornirea calculatorului, dupa alimentarea
cu energie are loc procesul de initializare a sistemului de operare. Prima componenta softare care intra in
functionalitate este BIOS-ul. Ulterior acesta preda controlul programului aflat pe zona de initializare
(MBR = Master Boot Record) a hardiscului si de aici incepe rolul sistemului de operare.
Un sistem de operare este un ansamblu de programe de control ce ghideaza un calculator in executarea
sarcinilor sale si asista programele de aplicatie si utilizatorul prin intermediul anumitor functiuni.

Sistemul fizic
(hardware)

Sistem de operare

Restul programelor
(prog. de aplicatie)

Utilizator

Un sistem de operare e alcatuit din 2 categorii de programe:


1. Programe de comanda si control (coordoneaza si controleaza toate functiile sistemului de
operare). Principalele componente ale sistemului de programe de comanda si control sunt:
1.1. Supervizorul
Serviciile supervizorului:
- Coordoneaza toate componentele sistemului de operare
- Planifica, lanseaza si urmareste executia programelor
- Depisteaza si trateaza toate evenimentele ce apar la executie
1.2. Sistemele de gestiune ale intrarilor si iesirilor: coordoneaza interactiunea cu dispoztivele
periferice, anume controlul acestora cat si transferul datelor de la aceste dispozitive catre
memorie si invers. La initializarea sistemelor de calcul, dupa efectuarea unui set de teste
prelimirare, componenta numita BIOS incepe citirea de pe hard-disk, aducerea in memorie,
predarea controlului si executarea sistemului de operare. Modalitatea de reprezentare si
organizare a fisierelor pe hard-disk poarta denumirea de partitionare. Dupa citirea tabelului de
partitionare, sistemul va stii sa citeasca si restul de fisiere de pe hard-disk iar sistemul de
operare va putea fi astfel pornit.
2. Programele de serviciu
Fisierul: un fisier este la nivel fizic o colectie de octeti. Un fisier este caracterizat de denumire, de
extensie (un sir de caractere ce vorbesc despre tipul fisierului, ex: .txt, .docx, .mp3), de marimea
exprimata in bytes(octeti) sau multiplii ai acestuia si de o serie de alte atribute care mai poarta denumirea
de metadate (date despre date). Un program contine o serie de date de intrare, efectueaza anumite
prelucrari si ofera ca rezultate un alt set de date.

Memorie

RAM
CACHE
Registrii

Memoria RAM (Random Access Memory) este memoria curenta de lucru a programelor. In memoria
RAM se incarca un program sau o portiune din acesta inainte de a fi executat. Tot in memoria RAM se
incarca si datele cu care va opera un program. Un alt model de arhitectura in care datele si instructiunile
sunt stocate in zone separate de memorie se numeste arhitectura Harvard.
Date

UAL

Instructiuni

O instructiune este o comanda executata catre procesor UC (unitatea de control) si UAL (unitatea
aritmetico-logica), impreuna fac parte din Unitatea Centrala de Prelucrare (UCP) sau procesorul (CPU).
Memoria CACHE este un tip de memorie organizat pe 3 niveluri (L1, L2, L3), mai rapida decat memoria
RAM, ce se gaseste mai aproape de procesor dar este si mai scumpa. O coordonata a rapiditatii memoriei
este data de tipul de acces definit ca intervalul dintre momentul cand s-a solicitat o data din memorie si
momentul cand aceasta data a fost primita. Datorita distantelor fizice intre procesor si memorie si vitezei
de propagare a semnalului electric, timpii de acces sunt limitati si cu atat mai mici cu cat respectiva
memorie este mai aproape de procesor.

Tipuri de cunostinte
(paradigma declarativ-imperativ)
Cunostintele declarative sunt formate din afirmatii despre realitate. In programare, operatorului = i se
definesc noi sensuri suplimentare celor cunoscute de la aritmetica. Dpdv imperativ, expresia a=a+1 are
sens si poarta numele de atribuire si se citeste astfel: a(nou) ia valoarea a(vechi)+1. In practica, operatia
de adunare de 1 la un nr natural se numeste incrementare iar operatie inversa se numeste decrementare.

Curs 4: Limbaje de programare


In paradigma programarii imperative conoastem faptul ca un program trebuie sa specifice explicit pasii,
iteratiile, schimbarile de stare, interactiunea cu mediile de intrare-iesire si toate celelalte elemente ce
conduc la realizarea sarcinilor respectivului program.
Un algoritm poate fi privit in termeni comuni ca o reteta. Un algoritm ne indica modalitatea prin care se
obtine un anumit rezutat. Un algoritm corect converge catre un rezultate intr-un nr finit de pasi. Corpul
unui algoritm contine o secventa de instructiuni. O instructiune este o unitate atomica de comanda sau
cerere pt indeplinirea unei anumite sarcini. Un algoritm mai contine ordinea in care se executa
instructiunile. Orice algoritm trebuie sa aiba o conditie de terminare, adica o expresie logica ce isi
modifica valoarea de adevar pe parcursul executiei (se schimba din A in F sau invers) iar aceasta
schimbare inseamna incetarea algoritmului. Mediile de programare pot produce alte programe. Un limbaj
de programare ofera un set de instructiuni primitive si structuri de control (sarcini ce se dau calculatorului
in ordinea in care sa se execute).
Clasificari ale limbajelor de programare:
1. Limbaje de programare de nivel inalt si de nivel scazut
Limbajele de programare de nivel inalt au un vocabular apropiat de vocabularul limbajului
natural (uman) si sunt in general mai usor accesibile programatorilor. Limbajele de programare de
nivel inaint sunt in general construite de programe de nivel jos. Ex de limbaje de nivel inalt:
MatLab, Java, C, C++. Ex de limbaje de programare de nivel scazut: limbajul de asamblare
(ASM) pt diversele tipuri de procesoare.
2. Limbajele generale vs. limbajele specializate
Limbajele generale pot fi folosite la rezolvarea de probleme din diverse domenii. (Java, C++,
C.Sharp). Limbajele specializate au aplicabilitate restransa in anumite domenii, precum MatLab
sau ProLog (programare logica).
3. Limbaje compilate vs. limbaje interpretative
Fazele de executie ale unui program:
1. Dupa incheierea scrierii codului sursa se salveaza intr-un fisier
2. Limbajul valideaza corectitudinea sintactica a programului
2.1. Programul contine erori de sintaxa; in acest caz sunt semnalate aceste erori, locul in
program unde s-au regasit precum si eventuale sugestii de corectie
2.2. Programul nu are erori de sintaxa; in acest cas, codul sursa in limbajele interpretate este
trimis catre executie, iar executia se va face de la inceputul programului parcurgand
fisierul sursa linie cu linie

LIMBAJUL MATLAB
A fost creat in 1984. Un program corect sintactic ofera premisele unui program corect in ansamblu insa
nu este suficient. Instructiunile scrise in program si celelalte constructii trebuie sa fie si semantic corecte.
Ce se poate intampla cu un program:
1. Poate sa esueze adica sa produca un comportament incorect care va conduce la incheierea fara
rezultat si cu eroare. In sistemele de operare moderne, esecul unui program nu produce esecul
global al sistemului
2. Poate sa nu se termine niciodata, de exemplu, din cauza ca este blocat intr-o bucla infinita sau
asteapta anumite date ce nu devin niciodata disponibile
3. Un program poate sa ruleze dar sa produca un rezultat gresit. Aceasta este eroarea cel mai greu de
depanat.
4. Programele ruleaza si produc raspunsul corect.
Definirea unei variabile
a=1 (defineste variabila a si val 1)
O variabila poate reprezenta un nr, un sir de caractere sau orice valoare de un anumit tip. Practic, variabila
este locul unde se memoreaza acea valoare. O variabila e caracterizata de nume si tip. In MatLab toate
variabilele sunt matrice ce pot avea elemente de tip intreg, real. Prin scalar intelegem o valoare numerica
unica. Prin vector intelegem un sir de valori de obicei de acelasi tip. Prin matrice intelegem un tablou
bidimensional organizat pe linii si coloane de valori. Numele unei variabile poate contine numai caractere
ale alfabetului englez, cifre si caracterul _. Numele unei variabile trebuie sa inceapa cu un caracter
diferit de cifra. Matlab face diferenta intre litere mari si mici (case sensitive).

PROGRAMAREA
CALCULATOARELOR SI LIMBAJE DE PROGRAMARE
Tipuri de cunostinte:
1. Cunostintele declarative sunt formate din afirmatii despre realitate:
Insusirea materiei de catre studenti pe parcusul intregului semestru duce la cresterea
performantelor la examen si in acelasi timp reduce stress-ul din timpul sesiunii.
y este radacina patrata a lui x daca si numai daca y*y=x
2. Cunostintele imperative se refera la modul cum se poate obtine un anumit rezultat. Interpretati-le
ca pe niste retete":
2.1. Incepem cu un numar intuit g ghicit
2.2. Daca g*g este suficient de apropiat de x, atunci g este acceptat ca radacina patrata a lui x
2.3. Altfel, cream o noua presupunere prin medierea lui g si x/g, gnou=(gvechi + x/gvechi) / 2
2.4. Folosind aceasta noua presupunere, treci din nou la pasul 2)

Algoritm:
-

Ne spune cum sa obtinem un anumit rezultat


Converge (conduce catre rezultat) intr-un numar finit de pasi
Instructiuni
Fluxul de control (ordinea in care se executa instructiunile)
Conditie de terminare

Calculatoare:
-

Calculatoare cu program fix proiectate sa realizeze sarcini specifice, punctuale


Calculatoare cu program stocat datele si instructiunile sunt tratate la fel
Programele pot produce programe
Un program aparte: interpretorul - poate executa orice set corect de instructiuni

Structura simplificata a unui


calculator:

Calculatoarele:
-

Limbaje de programare:

Nivel inalt vs. nivel scazut


General vs. specializat
Compilat vs. interpretat

Set limitat de instructiuni


Turing a demonstrat ca orice program poate fi
realizat cu un set de numai 6 instructiuni
Un limbaj de programare ofera un set de
instructiuni primitive si structuri de control
Calculatorul va face intotdeauna ceea ce i se
spune sa faca!

Scurta istorie a limbajelor de programare


Initial, programele erau inglobate in masina de calcul sau introduse prin intermediul unor mijloace
electro-mecanice, cum ar fi benzi sau cartoane perforate (de ex. Razboiul de testut Jacquard sau Motorul
Analitic) sau prin intermediul cablurilor si comutatoarelor (ex Eniac)
Inceputul anilor 1950 ASM
Jumatatea anilor 1950 Fortran
Sfarsitul anilor 1950 LISP, Algol 60, COBOL
1960 APL, SNOBOL, FORMAC
1968 Pascal, Algol W, C (mai tarziu)
1980 C++
1984 - Matlab
1990 JAVA

Scurt istoric al calculatoarelor:

Abacul
Roti dintate (Blaise Pascal (1623-1662, francez), Gottfried Wilhem Leibniz(1646-1716, german),
Charles Babbage (1792-1871, englez))
1801 Joseph Jacquard (Frana)
Babbage (motorul analitic, motorul diferential); Ada Lovelace
1890 S.U.A., Herman Hollerith (1860-1929)
1924 apare compania IBM (International BusinessMachine Corporation)
1940, George Stibitz construiete la Bell Laboratories o masina de calcul
1944, Howard Aiken de la Universitatea din Harvard construiete calculatorul Mark 1
John Mauchly i J. Presper Eckert, de la Universitatea din Pensylvania, n perioada 1942-1945:
ENIAC - (Electronic Numerical Integrator And Calculator) (John Atanasoff i asistentul su
Clifford Berry n perioada 1937-1941)
1946 John von Neumann
1949 M. Wilkes de la Universitatea Cambridge - EDSAC (Electronic Delay Storage Automatic
Calculator)

Limbajul Matlab:

In acest curs vom folosi limbajul Matlab


Sintaxa ce secvente de caractere si simboluri reprezinta un sir bine-formulat
Semantica statica ce siruri bine-formulate au un inteles
Semantica care anume este acel inteles

Programe:
Ce se poate intampla cu un program:
- sa esueze: in sistemele de operare moderne (ex. Windows XP, Windows 7), esecul unui program nu
afecteaza restul sistemului (este local)
- sa nu se termine niciodata bucla infinita
- sa ruleze dar sa produca un raspuns gresit
- sa ruleze si sa produca raspunsul corect
Interpretare :cod sursa - validator interpretor - rezultat
Compilare: cod sursa - validator/compilator - cod obiect interpretor - rezultat
Nu exista limbaje numai interpretate sau numai compilate, de exemplu exista interpretoare de C si
compilatoare de Python