Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Introducere: preliminarii

c


Introducere: preliminarii

Modelul functional (simplificat) al unui calculator:

procesorul (unitatea de...calcul, registri pt operanzi/instructiuni, etc)



memoria, pt stocarea datelor( operanzi ) si codului (instructiuni)

dispozitive de I/O (pt "introducerea" si "extragerea programului/datelor) 212g64c

A

L

U

 

Procesorul este locul/dispozitivul in care se efectueaza "calculele". Operanzii, pastrati in registrii de date sunt prelucrati conform instructiunii din registrul de instructiuni, rezultatul prelucrarii fiind depus intr-unul din registrii de date.

Problema: numarul registrilor de date este limitat, de regula la cateva zeci, ori, cel mai adesea, rezolvarea unei probleme implica mai multe date si rezultate partiale. In plus instructiunile/comenzile care descriu modul de rezolvare pot fi la randul lor de ordinul miilor. Este evident necesara existenta unui spatiu pentru "depozitarea" datelor si a instructiunilor pana in momentul cand sunt necesare in registri.

Memoria este locul dispzitivul in care se pastreaza datele si instructiunile unui program care se "rezolva"(executa). Memoria este organizata in locatii capabile sa stocheze unitati de informatie (date sau instructiuni). O data sau instructiune poate sa constea din una sau mai multe astfel de unitati de informatie, stocate in locatii consecutive. Fiecare locatie de memorie are o adresa ( numarul de ordine fata de inceputul memoriei). Regasirea unei date sau cod de instructiune in memorie se face pe baza adresei sale. Registrul de adrese (din processor) este cel in care se incarca adresa datei sau a instructiunii care urmeaza sa fie aduse din memorie intr-unul din registrii de date sau in registrul de instructiuni.

Problema: cum ajung in memorie datele si codurile de instructiuni care descriu un algoritm? Si cum se pot "vedea" rezultatele programului? Penru aceasta sunt necesare dispozitivele de Intrare/Iesire (Input/Output - I/O).

Dispozitivele de I/O. Dispozitivele de intrare permit introducerea atat a succesiunii de coduri de instructiuni care descriu algoritmul cat si a datelor problemei ce urmeaza a fi rezolvate conform acelui algoritm. Dispozitivele de iesire au in principal rolul de a permite vizualizarea rezultatelor programului.

Etapele rezolvarii unei probleme cu calculatorul:

alegere model/algoritm pentru precizarea solutiei

editarea fisierului sursa (in limbaj sursa!)

compilarea sursei si obtinerea fisierului cu codul obiect

o       corectii (daca au fost erori de compilare)

linkeditare (legarea cu alte module obiect)

o       corectii (daca au fost erori de linkeditare)...

testarea programului

Limbajele de programare (si modelul simplu de calculator):

Descrierea si manipularea datelor, respectiv a codului.

Date: constante si variabile (reprezentare si utilizare)...

Limbajul de programare C: Istoric. Legatura cu sistemul de operare UNIX.

C-ul a aparut cu ocazia dezvoltarii noului sistem de operare UNIX pentru calculatorul PDP-11. Dennis Ritchie si ulterior Brian Kernigham, in cautarea celui mai potrivit limbaj pentru scrierea sistemului de operare au conceput in cele din urma (la inceputul anilor '70) un limbaj nou: C. Filiatia: CPL, B, BCPL, C.

Peste 90% din sistemul de operare UNIX a fost scris in acest limbaj nou, restul (in general driverele de dispozitive) fiind scris in limbaj de asamblare.

Locul 'C'-ului in ierarhia limbajelor de programare

limbaje de nivel inalt (ALGOL, FORTRAN, Pascal, Lisp, etc)

C

Limbaje de asamblare

cod masina

Avantajele C-ului

dimensiunea redusa:

27 cuvinte cheie

inexistenta instructiunilor de I/O sau a celor pentru operatii matematice mai complicate

structura lejera: orice functie de biblioteca poate fi rescrisa



viteza: codul este foarte eficient

slab tipizat: programatorul are libertate maxima pentru tratarea datelor in functie de necesitati

limbaj structurat (chiar inainte de aparitia programarii structurate ca moda)

permite (incurajeaza) programarea modulara

interfata simpla cu limbjele de asamblare

operatori pe biti

variabile pointer

structuri flexibile: tablourile sunt unidimensionale (dar pot consta din elemente de orice tip, inclusiv .tablouri)

utilizarea eficienta a memoriei

portabilitate sporita

biblioteci de functii speciale

Dezavantaje

faptul ca este slab tipizat => posibilitate sporita de erori datorita conversiilor necontrolate (trunchieri)

controlul in timpul executiei este foarte sumar (de ex. nu se verifica depasirea limitelor unui tablou)

Aspectele esentiale in aprecierea unui limbaj de programare:

calitatea    compilarii si in general a procesului de dezvoltare a unui program

calitatea codului rezultat (viteza de executie, fiabilitatea,

Standardul ANSI C

Adoptat in 1989 (pornind de la editia a doua a cartii lui B. Kernigham si D. Ritchie: The C Programming Language) standardul ANSI C se conformeaza spiritului:

ai incredere in programator

nu-l impiedica pe programator sa faca ceea ce trebuie facut

pastreaza limbajul "mic si simplu"

Structura programelor C. Elemente constitutive

Program (dupa Wirth):

Structuri de date

+

algoritm

Un program C este alcatuit din urmatoarele elemente constitutive:

directive de preprocesare (precompilare)

declaratii:

de variabile

de functii

definitii de functii

comentarii

Specificarea unui program sursa (succesiune de secvente de caractere - litere, cifre, semne speciale - care identifica datele si instructiunile) se face prin intermediul atomilor lexicali (tokens).

Reprezentarea unui algoritm intr-un limbaj de programare se face cu ajutorul elementelor recunoscute de analizorul lexical - parte a compilatorului - specific pentru acel limbaj de programare.

Pornind de la definitia data de N.Wirth unui program:

Program = Structuri de date + Algoritm

urmatoarele elemente (atomi lexicali sau tokeni)    trebuie recunoscute de catre analizorul lexical:

cuvintele cheie, care descriu de regula instructiunile limbajului, dar si alte elemente, ca de exemplu denumirile tipurilor de date. Se pot include in aceasta categorie si operatorii, chiar daca nu sunt propriu-zis cuvinte cheie, pentru ca descriu operatii

constantele

identificatorii, utilizati pentru denumirea variabilelor, functiilor, etichetelor

separatori

.

Ultimele doua clase de atomi lexicali din enumerarea de mai sus sunt cei cu ajutorul carora se descrie partea de "date" (in sensul de materie prima asupra careia se actioneaza sau care rezulta) a unui program.





Document Info


Accesari: 759
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2025 )