Extras din curs
1.1. Etapele de rezolvare a unei probleme tehnice cu ajutorul calculatorului (folosind un limbaj de programare)
A.
Stabilirea datelor iniţiale (de pornire) şi a modelului matematic pentru problema de rezolvat;
B.
Întocmirea unui algoritm pentru rezolvarea problemei (eventual schema logică);
C.
Scrierea programului sursă utilizând un limbaj de programare (limbajul C), cu ajutorul unui editor de texte. Fişierul rezultat va avea extensia C sau CPP;
D.
Compilarea fişierului sursă şi obţinerea fişierului obiect (fişier cu extensia OBJ). Această operaţie este realizată de compilator care transcrie fişierul sursă în cod obiect;
E.
Link-editarea (ediţia de legături). În această etapă se rezolvă referinţele externe şi se face legătura între modulele obiect. În urma acestei etape rezultă un fişier executabil (extensia EXE);
F.
Lansarea în execuţie a programului executabil (rularea programului).
Mediu de dezvoltare = Un mediu de dezvoltare (engl. development environment, sau integrated development environment - „mediu integrat de dezvoltare”) este un set de programe care ajută programatorul în scrierea de alte programe. Un mediu de dezvoltare combină toţi paşii necesari creării unui program (ex.: editarea codului sursă, compilarea, depanarea, testarea, generarea de documentaţie) într-un singur soft, care de regulă, oferă o interfaţă cu utilizatorul grafică, prietenoasă.
Principalele componente ale unui mediu de dezvoltare sînt editorul de cod sursă şi depanatorul. Mediile de dezvoltare apelează compilatoare, sau interpretoare, care pot veni în acelaşi pachet cu mediul însuşi, sau pot fi instalate separat de către programator. Printre facilităţile prezente în mediile de dezvoltare mai sofisticate se numără: exploratoare de cod sursă, sisteme de control al versiunilor, designere de interfeţe grafice, sau unelte de ingineria programării (ex. generarea de diagrame UML).
De obicei un mediu de dezvoltare este specific unui anumit limbaj de programare, însă există la ora actuală şi medii de dezvoltare care pot lucra cu mai multe limbaje, de ex. Eclipse sau Microsoft Visual Studio.
1.2. Tipuri de limbaje de programare. Clasificare.
Limbajul de programare reprezintă un sistem de convenţii adoptate pentru realizarea unei comunicări între programator şi calculator.
Limbajele de programare sunt foarte asemănătoare limbajelor naturale, astfel ele sunt compuse din: cuvinte rezervate, punctuaţie, propoziţii şi fraze, reguli sintactice, etc. Aşa cum, pentru învăţarea unei limbi străine este necesar să se înveţe cuvintele acesteia şi regulile prin intermediul cărora acestea pot fi manevrate, pentru învăţarea unui limbaj de programare trebuie studiate cuvintele şi semnele care îl compun, precum şi ansamblul de reguli pentru manevrarea acestora.
După modul în care este conceput ansamblul de reguli de comunicare, limbajele de programare se clasifică astfel:
-
limbaje de nivel scăzut - nivel înalt:
Nivelul unui limbaj este dat de poziţia pe care acesta îl ocupă pe o scară de la nivelul recunoscut de microprocesor (limbaj maşină) şi până la limbajul natural al programatorului (limba engleză, limba română etc). Un limbaj de nivel scăzut este un limbaj foarte apropiat de maşină şi care lucrează cu elemente de nivel hardware, cum ar fi: regiştrii, microprocesor, locaţii de memorie, porturi de intrare/ieşire etc. Un limbaj de nivel înalt utilizează concepte apropiate de limbajul natural, concepte de nivel logic, cum ar fi: colecţii de date, nume de operaţii, variabile, constante etc.
O deosebire extrem de importantă între cele două tipuri de limbaje de programare o constituie portabilitatea acestora, adică posibilitatea transferării programelor pe un alt tip de maşină decât cea pe care au fost realizate. Limbajele de nivel scăzut sunt neportabile, deoarece sunt legate de tipul procesorului utilizat de maşină. În ceea ce priveşte limbajele de nivel înalt, acestea permit transferul programelor deoarece între program şi calculator se interpune compilatorul (numit şi interpretor) care rezolvă transformarea fişierului sursă în fişier executabil, ţinând cont de caracteristicile maşinii.
-
Limbaje procedurale - neprocedurale:
Cele două tipuri de limbaje se deosebesc prin nivelul de organizare (structurare) a programelor. În cazul limbajele neprocedurale programele sunt gândite la nivel de instrucţiune, pe când la cele procedurale programatorul concepe programele la nivel de bloc de instrucţiuni. În limbajele procedurale programele sunt scrise instrucţiune cu instrucţiune, însă ele sunt organizate logic în blocuri (grupuri de instrucţiuni) care realizează acţiuni specifice.
-
Limbaje orientate sau de uz general:
Din acest punct de vedere, limbajele pot fi orientate pe o anumită problemă sau pot fi concepute pentru soluţionarea oricărui tip de problemă.
-
Limbaje concurente:
Un limbaj concurent permite definirea de procese ( prelucrări ) care se desfăşoară în paralel, la un anumit moment execuţia putându-se ramifica. În cazul limbajelor neconcurente (aşa cum sunt majoritatea limbajelor) execuţia are o desfăşurare liniară, la un moment dat fiind activ un singur proces. Procesele concurente necesită în mod obligatoriu un sistem multi-tasking ce poate gestiona mai multe „ sarcini „ în acelaşi moment.
Un exemplu de limbaj de nivel scăzut este limbajul de asamblare. Limbaje de nivel înalt sunt: BASIC (Beginner’s Allpurpose Symbolic Instruction Code - Cod de instrucţiuni simbolice, de uz general, destinat începătorilor), FORTRAN (FORmula TRANslation), PASCAL (numele acestui limbaj provine de la matematicianul şi filosoful BLAISE PASCAL, în semn de recunoaştere a contribuţiilor sale în conceperea maşinilor de calcul), ADA, precum şi limbajul C.
1.3. Limbajul C. Scurt istoric.
La un anumit moment s-a pus problema conceperii unui sistem de operare universal, care să poată funcţiona, teoretic, pe orice tip de maşină - sistemul UNIX. Pentru aceasta era nevoie de un limbaj care să exploateze toate posibilităţile unei maşini de calcul, dar care nu putea fi limbajul de asamblare deoarece acesta este specific maşinii de calcul, astfel că o nouă implementare presupunea rescrierea integrală a sistemului.
Limbajul C a apărut în anul 1972, autorii acestuia fiind Brian W. Kerningham şi Dennis M. Ritchie de la Bell Laboratories. Limbajul C a fost proiectat pentru a asigura implementarea portabilă a sistemului de operare UNIX. Ca o consecinţă a acestui fapt programele scrise în limbajul C au o portabilitate foarte bună.
Multe din cele mai importante idei din C îşi au originea în limbajul BCPL, dezvoltat de Martin Richards de la Universitatea din Cambridge, în anul 1960. Din limbajul BCPL a derivat un nou limbaj, limbajul B, scris de Ken Thompson in 1970. Limbajului B i s-au adus o serie de îmbunătăţiri, apărând chiar şi o formă nouă, numită NB (New B). Din acest limbaj a derivat limbajul C.
Limbajul C, deşi este un limbaj de nivel înalt, introduce şi concepte de nivel scăzut (registru, adresă, locaţie de memorie etc). Peste 90% din sursele primului sistem de operare UNIX au fost scrise utilizând limbajul C, pentru restul mlelor utilizându-se limbajul de asamblare. S-a dorit astfel transformarea acestui sistem de operare într-unul universal, motiv pentru care sistemul a fost distribuit împreună cu codul sursă şi cu descrierea limbajului. Acest fapt a incitat o serie de programatori să-l dezvolte, să creeze noi module şi să-l implementeze pe alte maşini prin rescrierea modulelor elaborate în limbajul de asamblare. Astfel, limbajul C a devenit un limbaj de referinţă.
Principalele caracteristici ale limbajului C sunt :
-
limbaj structurat de nivel înalt ;
-
posedă concepte de nivel scăzut, ceea ce permite exploatarea portabilă a caracteristicilor interne ale unei maşini;
-
posedă rutine de conversie a datelor foarte evoluate;
-
tipuri de date definibile de către utilizator;
-
gestionarea elaborată a datelor de tip dinamic;
-
posibilitatea definirii de noi funcţii;
-
adresări indirecte ale datelor, variabilelor (pointeri);
-
recursivitate;
-
set complet de funcţii matematice;
-
funcţii pentru realizarea de grafică elementară 2D;
-
funcţii de apel servicii DOS;
-
posibilitatea definirii de overlay-uri pentru un program;
-
concizie deosebită a limbajului.
Bibliografie
1. Antal, T.A. - The C ANSI programming language, Editura RISOPRINT, 2001, ISBN 973-656-065-1.
2. Arghir, M. – Limbajul C standard. Ghid de programare & Aplicaţii tehnico-inginereşti, Editura Didactică şi Pedagogică, Bucureşti, 1998;
3. Damian, C. – Iniţiere în limbajul C, Editura Teora, Bucureşti, 1996;
Deshpande, P.S., Kakde, O.G. - C & Data Structures, Charles River Media, 2004 (700 pages)
4. Kernigham, B., Ritchie, D. – The C Programming Language, Prentice – Hall, Inc, Englewood Cliffs, New Jersey, 1978;
5. Lupea, I., Lupea, M. – Limbajul C. Teorie şi aplicaţii. Editura Casa Cărţii de Ştiinţă, Cluj-Napoca, 1998;
6. Muşlea, I. – Iniţiere în C++, Editura MicroInformatica, Cluj-Napoca, 1993
7. Negrescu, L. – Limbajele C şi C++ pentru începători, Vol. I. – Limbajul C, Editura Albastră, Cluj-Napoca, 1996;
8. Perry, G. - C by Example, Que Corporation, 2000, ISBN 0-7897-2239-9
9. Petrovici, V., Goicea, F. – Programarea în limbajul C, Editura Tehnică, Bucureşti, 1993;
10. Popescu, D.I. – Programarea în limbajul C, Editura DSG Press, Dej, 1999;
11. Schildt, H. - C/C++ Programmer's Reference, Third Edition, McGraw-Hill/Osborne, 2003 (358 pages)
12. Sedgewick, R. – Algorithms in C, Addison – Wesley, 1990 ISBN 0-201-51425-7
Smiley, J. – Learn to program with C++, MacGraw-Hill, 2003
13. Stroustrup, B. – The C++ Programming, Addison – Wesley, 1997, ISBN 0-201-88954-4
14. Ursu-Fischer, N., Ursu, M. – Programarea cu C în inginerie, Editura Casa Cărţii de Ştiinţă, Cluj-Napoca, 2001;
Preview document
Conținut arhivă zip
- Curs_06.pdf
- Curs_07+08.pdf
- Curs_09.pdf
- Curs_10.pdf
- Curs_11+12.pdf
- Curs_13+14.pdf
- Curs_1-5.pdf
- Lab_01.pdf
- Lab_02+03.pdf
- Lab_04.pdf
- Lab_05.pdf
- Lab_06.pdf
- Lab_07.pdf
- Lab_08.pdf
- Lab_09.pdf
- Lab_10+11+12.pdf
- Lab_13-14.pdf