Scrigroup - Documente si articole

Username / Parola inexistente      

Home Documente Upload Resurse Alte limbi doc  


AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Programarea calculatorului

c

+ Font mai mare | - Font mai mic





DOCUMENTE SIMILARE

Trimite pe Messenger
Basic Concepts - Triggers
Structuri si functii
Constante
VECTORI - programe cu vectori
Tipuri de structuri de date - Tablouri
Tratarea erorilor -stderr si exit
FISIERE - Instructiunea fopen, fclose, fwrite, fread
Functii - Structura unei functii
Tablouri de structuri
Pointeri si adrese

TERMENI importanti pentru acest document

Programarea calculatorului

Programele de calculator, cunoscute sub numele de software, sunt constituite dintr-o serie de instructiuni pe care le executa calculatorul. Cand se creeaza un program, trebuie specificate instructiunile pe care calculatorul trebuie sa le execute pentru a realiza operatiile dorite. Procesul de definire a instructiunilor pe care le executa calculatorul se numeste programare.



Programele executate pe un calculator pot fi impartite in trei categorii:

programe de aplicatie – sunt acele programe care interactioneaza direct cu utilizatorul, specializate in realizarea unei categorii de prelucrari. Editoarele de texte, programele pentru gestiunea bazelor de date, programele de tehnoredactare asistata de calculator, de grafica etc. sunt programe de aplicatie.

utilitare – programe, care la fel ca programele de aplicatie, interactioneaza direct cu utilizatorul, dar, spre deosebire de acestea, realizeaza prelucrari de uz general. Utilitarele realizeaza o serie de operatii de „gospodarie” cum ar fi: copierea fisierelor, pregatirea discurilor magnetice pentru utilizare, crearea de copii de salvare, testarea echipamentului, etc.

programe de sistem – realizeaza legatura intre componentele electronice ale calculatorului si programele de aplicatie si utilitare. Rolul programului de sistem este acela de a usura sarcina programatorului, simplificand indeplinirea acelor sarcini care sunt comune marii majoritati a programelor de aplicatie: alocarea memoriei, afisarea caracterelor pe ecran si la imprimanta, citirea caracterelor de la tastatura, accesul la informatiile stocate pe disc magnetic, etc.

1. Sistemul de operare

Sistemul de operare este o parte componenta a software-ului unui calculator, care mai cuprinde un numar variabil de programe utilitare selectate conform cu necesitatile programatorilor.

Sistemul de operare este un program cu functii de coordonare si control asupra resurselor fizice ale calculatorului si care intermediaza dialogul om-calculator. Sistemul de operare permite rularea programelor si pastrarea informatiilor pe disc. In plus, fiecare sistem de operare pune la dispozitia aplicatiilor o serie de servicii care permit programelor sa aloce memorie, sa acceseze diferite echipamente periferice, cum ar fi imprimanta, si sa gestioneze alte resurse ale calculatorului.

Un sistem de operare trebuie sa aiba capacitatea de a se adapta rapid la modificarile tehnologice, ramanand in acelasi timp compatibil cu hardware-ul anterior. Lantul de comunicare utilizator – calculator este prezentat in Figura 1.3:

Sistemul de operare este cel mai important program care ruleaza pe un calculator. Orice calculator de uz general este dotat cu un sistem de operare care permite executia altor programe. Sistemele de operare executa operatiuni de baza precum: recunoasterea unei intrari de la tastatura (preluare caracter), trimiterea unui caracter pentru afisare pe ecranul monitorului, gestionarea fisierelor si a directoarelor pe disc (floppy-disk sau hard-disk), controlul fluxului de date cu echipamentele periferice ca drivere de disc sau imprimante.

Fig.     Comunicarea utilizator - calculator

Fig. 1.4 Rolul sistemului de operare

Sistemul de operare al unui calculator este partea de software necesara si suficienta pentru executia oricaror alte aplicatii dorite de utilizator. Un calculator nu poate functiona decat sub gestiunea unui sistem de operare. Orice aplicatie lansata in executie de catre un utilizator apeleaza la resursele puse la dispozitie de catre sistemul de operare. Sistemul de operare interfateaza calculatorul cu operatorul uman de o maniera cat mai transparenta cu putinta astfel incat utilizatorul nu trebuie sa faca eforturi mari de adaptare daca lucreaza cu arhitecturi hardware diferite.

Pentru sisteme mai mari, sistemele de operare au responsabilitati si capabilitati si mai mari. Ele actioneaza ca un gestionar al traficului de date si al executiei programelor. In principal sistemul de operare asigura ca diferite programe si diferiti utilizatori sa nu interfereze unele cu altele. Sistemul de operare este de asemenea responsabil cu securitatea, asigurand inaccesibilitatea persoanelor neautorizate la resursele sistemului.

Sistemele de operare se pot clasifica dupa cum urmeaza:

multi-user: Permit ca doi sau mai multi utilizatori sa ruleze in acelasi timp programe (utilizatori concurenti). Anumite sisteme de operare permit sute sau chiar mii de utilizatori concurenti.

multiprocesor: Permit executia unui program pe mai mult de un    microprocesor.

multitasking: Permit mai multor programe sa ruleze in acelasi timp (executie concurenta).

multithreading: Permit diferitelor parti ale unui program sa fie executate concurent.

timp real (real time): Raspund instantaneu la diferite intrari. Sistemele de operare de uz general, ca DOS sau UNIX nu sunt sisteme de operare de timp real.

Sistemele de operare furnizeaza o platforma software pe baza careia alte programe, numite programe de aplicatie, pot rula (pot fi executate). Programele de aplicatie trebuie sa fie scrise pentru a rula pe baza unui anumit sistem de operare. Alegerea unui anumit sistem de operare determina in consecinta multimea aplicatiilor care pot fi rulate pe calculatorul respectiv. Pentru PC-uri, cele mai populare sisteme de operare sunt DOS, OS/2 sau Windows, dar mai sunt disponibile si altele precum Linux.

Ca utilizator se interactioneaza cu sistemul de operare prin intermediul unor comenzi. Spre exemplu, sistemul de operare DOS accepta comenzi precum COPY sau RENAME pentru a copia fisiere sau pentru a le redenumi. Aceste comenzi sunt acceptate si executate de o parte a sistemului de operare numita procesor de comenzi sau interpretor de linie de comanda.

Interfatele grafice cu utilizatorul (GUI, Graphical user interfaces) permit introducerea unor comenzi prin selectarea si actionarea cu mouse-ul a unor obiecte grafice care apar pe ecran. Spre exemplu, sistemul de operare Windows are un desktop ca intefata garfica cu utilizatorul. Pe acest desktop (birou) se afla diferite simboluri grafice (icoane, icons) atasate diferitelor aplicatii disponibile pe calculatorul respectiv. Utilizatorul are multiple posibilitati de configurare a acestei intefete grafice.

Primul sistem de operare creat pentru calculatoare a fost CP/M (Control Program for Microcomputers), realizat pentru calculatoarele pe 8 biti. O data cu perfectionarea componentelor HARD s-a impus si necesitatea dezvoltarii unui SOFT adecvat. Astfel, in 1981, a aparut prima versiune a sistemului de operare MS-DOS. Sistemul de operare MS–DOS (MicroSoft Disk Operating System) este destinat gestionarii resurselor software si hardware ale microcalculatoarelor cu o arhitectura de tip IBM – PC sau compatibila cu aceasta si echipate cu procesoare 8086 sau 80x86, Pentium. Odata cu cresterea capabilitatilor hardware ale calculatoarelor, acesta s-a transformat, prin dezvoltari succesive, in Windows.

Indiferent de sistemul de operare utilizat, din punctul de vedere al utilizatorului, informatiile sunt scrise pe disc sub forma unor fisiere. Un fisier este o colectie de informatii grupate sub acelasi nume. Un fisier poate fi un program executabil, un text, o imagine, un grup de comenzi sau orice altceva.

Un fisier este identificat prin numele sau. Numele unui fisier este format dintr-un sir de caractere (care in functie de sistemul de operare este limitat la un anumit numar maxim de caractere), urmate eventual de semnul punct (.) si de inca maximum 4 caractere, numite extensie, ca de exemplu: nume.ext.

Pentru a putea avea acces rapid la fisiere, sistemul de operare creeaza niste fisiere speciale, numite directoare, care pot fi asemanate cu cuprinsul unei carti, deoarece ele contin numele fisierelor si adresa de inceput a acestora. De asemenea, un director poate contine la randul sau alte directoare creandu-se astfel o structura arborescenta de directoare in care poate fi gasit foarte repede un anumit fisier.

2. Tipuri de fisiere

Fisierele se pot imparti in doua categorii – executabile si neexecutabile. In prima categorie intra acele fisiere al caror nume scris in dreptul prompterului (in cazul sistemului de operare DOS) determina executarea unor activitati de catre sistemul de operare. O parte dintre fisierele executabile sunt programe si sunt recunoscute prin extensia lor care poate fi EXE sau COM, altele fiind constituite in fisiere de comenzi proprii sistemului de operare, a caror extensie este BAT.

Fisierele COM, numite adesea si comenzi, contin informatii in formatul imagine de memorie. Ele sunt mai compacte si mai rapide decat fisierele EXE, dar lungimea lor nu poate sa depaseasca 64 K. Fisierele EXE pot sa ajunga la dimensiuni mai mari prin segmentarea programului in fragmente a caror dimensiune sa fie de maximum 64K.

Dintre fisierele neexecutabile vom aminti cateva mai importante:

fisiere text ;

fisiere cu extensia SYS sau DRV, cunoscute sub numele de driver-e si care contin instructiuni despre modul in care sistemul de operare trebuie sa controleze diferite componente hardware;

surse de programe scrise in diferite limbaje (cu extensiile PAS – limbajul Pascal, C – limbajul C, CPP – limbajul C++, etc.);



fisiere care contin informatii intermediare intre cele in limbaj sursa si cele executabile (extensiile OBJ, OVL);

fisiere ce contin imagini (extensiile JPEG, GIF, BMP);

fisiere ce contin sunete (extensiile WAV, MIDI, MP3) etc.

3. Construirea fisierului executabil

Instructiunile pe care le executa un calculator sunt de fapt grupuri de 1 s 0 (cifre binare) care reprezinta semnale electronice produse in interiorul calculatorului. Pentru a programa primele calculatoare (in anii 1940-1950), programatorii trebuiau sa inteleaga modul in care calculatorul interpreta diferitele combinatii de 0 si 1, deoarece programatorii scriau toate programele folosind cifre binare. Cum programele deveneau din ce in ce mai mari, acest mod de lucru a devenit foarte incomod pentru programatori. De aceea au fost create limbaje de programare care permit exprimarea instructiunilor calculatorului intr-o forma mai accesibila programatorului. Dupa ce programatorul scrie instructiunile intr-un fisier - numit fisier sursa, un al doilea program – numit compilator, converteste instructiunile limbajului de programare in sirurile 1 si 0 – cunoscute sub numele de cod masina.

Pentru a obtine un program executabil, orice program sursa trebuie eventual translatat (tradus) in limbaj cod masina sau cod obiect pe care il poate intelege microprocesorul. In urma acestui proces, alaturi de fisierul sursa apare si fisierul cod obiect (object file.) Aceasta translatare sau traducere este efectuata de catre compilatoare, interpretoare sau asambloare.

Compilatorul este folosit pentru transformarea codului sursa, adica a programului scris intr-un limbaj de programare de nivel inalt, in cod obiect (object code). Acest cod obiect va fi transformat in faza de editare de legaturi in cod masina executabil de microprocesorul sistemului de calcul.

Programatorii scriu programe intr-o forma numita cod sursa. Acest cod sursa parcurge apoi cativa pasi inainte de a deveni program executabil.

Pe scurt, un compilator este un program special care proceseaza instructiuni scrise intr-un limbaj de programare particular si le transforma in limbaj masina sau cod masina pe care il poate executa microprocesorul.

La ora actuala un limbaj de programare este inclus intr-un mediu de programare mai complex care include un editor de texte pentru introducerea instructiunilor in limbajul de programare de nivel inalt, un compilator si un editor de legaturi folosite pentru translatarea codului sursa in cod masina.

In mod tipic, un programator scrie declaratii intr-un limbaj precum Pascal, C sau MATLAB folosind un editor. Se creeaza astfel un fisier numit fisier cod sursa ce contine o colectie de instructiuni si declaratii scrise in limbajul respectiv.

Primul pas este prelucrarea codului sursa de catre compilator, care translateaza instructiunile de nivel inalt intr-o serie de instructiuni cod obiect. Cand este lansat in executie compilatorul acesta, intr-o prima etapa, lanseaza un analizor sintactic, gramatical, numit parser. Acesta parcurge si analizeaza sintactic, secvential, in ordinea in care au fost introduse, toate instructiunile scrise in limbajul de nivel inalt. O instructiune de nivel inalt se translateaza intr-una sau mai multe instructiuni specifice microprocesorului pentru care a fost conceput compilatorul. Aceste instructiuni ale microprocesorului sunt inlocuite cu codurile lor binare, fiecare instructiune a microprocesorului fiind codificata de catre constructor. Codurile binare ale instructiunilor microprocesorului impreuna cu reprezentarile interne ale datelor manipulate formeaza codul obiect.

Deci in unul sau mai multe faze (parserul este una dintre faze) din codul sursa de intrare se produce un cod de iesire, numit in mod traditional cod obiect. Este foarte important ca referiri la alte module de cod sa fie corect reprezentate in acest cod obiect.

Pasul final in producerea programului executabil, dupa ce compilatorul a produs codul obiect, este prelucrarea codului obiect de catre un editor de legaturi (link-editor sau linker). Acest linker combina diferitele module (le leaga) si da valori reale, efective, tuturor adreselor simbolice existente in codul obiect. In urma acestei prelucrari se obtine codul masina, salvat intr-un fisier cu extensia .exe. Acest cod masina poate fi executat secvential, instructiune cu instructiune, de catre microprocesor.

Cu alte cuvinte, un program executabil (executable program - aflat pe disc cu extensia .exe) se obtine prin salvarea pe disc a codului masina obtinut prin prelucrarea succesiva a fisierului cod sursa de catre compilator (compiler) si apoi de catre link-editor (linker).

Fig. 1.5 Procesul de elaborare a unui program executabil

Procesul de obtinere a unui executabil este prezentat in figura de mai jos. Blocurile tridimensionale reprezinta entitatile principale ale mediului de programare: editorul de texte, compilatorul (compiler) si editorul de legaturi (linker). Blocurile dreptunghiulare reprezinta fisierele rezultate in urma aplicarii celor trei utilitare de sistem:

in urma utilizarii editorului de texte obtinem fisierul text sursa cod cu numele generic “nume”. Daca folosim limbajul de programare C spre exemplu, se obtine fisierul nume.c care se va salva pe disc.

in urma lansarii in executie a compilatorului, acesta preia fisierul sursa si il prelucreaza corespunzator, semnalizandu-se toate erorile fatale pentru program sau avertismente utile programatorului in procesul de depanare. In cazul in care compilarea se efectueaza cu succes, se obtine un fisier cod obiect, salvat pe disc sub numele nume.obj

in urma lansarii in executie a editorului de legaturi, se preia fisierul cod obiect nume.obj si se leaga cu toate modulele necesare (inclusiv functii de biblioteca sau alte module externe), obtinandu-se un program executabil (cod masina) cu numele nume.exe la care adresele nu mai sunt simbolice ci absolute relativ la adresa de inceput a programului. La lansarea in executie a programului fluxul de informatie este complet controlat de catre microprocesor, toate salturile de adresa fiind facute corespunzator.

Interpretorul (interpreter) este un program care executa instructiuni scrise intr-un limbaj de nivel inalt. Numai anumite limbaje de nivel inalt, spre exemplu BASIC, LISP sau MATLAB, sunt prevazute cu un interpretor.

Exista doua modalitati de a executa un program scris in limbaj de nivel inalt. Cel mai comun mod este acela de a compila programul. Cealalta modalitate este “pasarea” programului unui interpretor.

Un interpretor translateaza instructiunile de nivel inalt intr-o forma intermediara care este apoi executata. Prin contrast, un compilator translateaza instructiunile de nivel inalt direct in limbaj masina (cod masina). Programele compilate ruleaza in general mai rapid decat cele interpretate. Un alt avantaj al programelor compilate este acela al desprinderii din context in sensul ca programele executabile generate in urma procesului de compilare pot fi executate direct sub sistemul de operare al calculatorului. Un program interpretat se executa sub mediul in care a fost creat.

Spre exemplu, pentru a rula un program scris in limbajul BASIC se lanseaza in executie mediul BASIC, apoi se deschide fisierul sursa-BASIC corespunzator si se lanseaza interpretorul de BASIC pentru executia sa.

Avantajul unui interpretor este acela al evitarii procesului de compilare consumator de timp in cazul in care avem programe de mari dimensiuni. Interpretorul poate executa imediat programele sursa. Pentru acest motiv interpretoarele se folosesc mai ales in procesul de dezvoltare al programelor, cand programatorul doreste adaugarea unor mici portiuni de program pe care sa le testeze rapid. De asemenea, interpretoarele permit o programare interactiva fiind des folosite in procesul de instructie.

In mediul de programare MATLAB, mediu interpretor, orice comanda utilizator se executa imediat. Se pot edita si fisiere script, care contin secvente de comenzi care se executa secvential.

Programele de descriere a paginii (Page Description Languages) ca PostScript spre exemplu folosesc un interpretor. Fiecare imprimanta PostScript are incorporat un interpretor care executa instructiuni PostScript.

Asamblorul (assembler) este un program care face translatia unui program scris in limbaj de asamblare (limbaj de nivel scazut, corespunzator microprocesorului sistemului de calcul) in limbaj cod masina. Putem spune ca asamblorul reprezinta pentru limbajul de asamblare ceea ce reprezinta compilatorul pentru limbajele de nivel inalt. Cum limbajul de asamblare contine instructiuni mai putin complexe decat cele de nivel inalt, asamblorul face practic o convertire biunivoca intre mnemonicele limbajului de asamblare si codurile binare corespunzatoare acestor mnemonice (instructiuni).

Fig. 1.6 Detalierea procesului de generare a unui executabil






Politica de confidentialitate



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 755
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2022 . All rights reserved

Distribuie URL

Adauga cod HTML in site