Sie sind auf Seite 1von 17

Aplicaia 4

Mediul de dezvoltare al limbajului C standard


1. Scopul lucrrii
n aceast lucrare se urmrete familiarizarea cu mediul de lucru i
utilizarea limbajului de programare C standard.
n lucrare se va studia:
- prezentarea unui scurt istoric a limbajului C i a noiunilor
legate de lucrul pe calculator;
- prezentarea mediului de lucru;
- crearea, salvarea, citirea, modificarea fiierelor surs;
- editarea/modificarea unui program C;
- compilarea i execuia unui program C;
- utilizarea helpului;
- operaii simple.
2. Consideraii generale
2.1 Prezentarea unui scurt istoric a limbajului C i a noiunilor
legate de lucrul pe calculator
2.1.1 Istoric
Dennis Ritchie i Brian Kernighan, n cadrul laboratoarelor BELL
Labs., n SUA, au realizat prima versiune a limbajului C standard. Alturi
de limbajul de asamblare limbajul C standard a fost utilizat mai trziu la
scrierea sistemului de operare UNIX.
Aplicaiile care se vor realiza vor fi executate n modul prompter la
consol.
2.1.2 Caracteristicile limbajului C
Acest limbaj de nivel nalt este considerat ca fiind de uz general,
pentru c poate fi utilizat fie pentru cazuri dedicate cum sunt calculele
tiinifice, grafic, editoare de text etc., fie pentru realizarea programelor de
uz general.
Programele executabile se obin n urma proceselor de compilare i
editare de legturi.
Atunci cnd un program C este transferat de pe o platform pe alta,
n general nu se fac modificri dect foarte rar. Pe ambele platforme,

43

programele se vor comporta similar. Acest lucru este posibil, datorit


standardizrii limbajului. Toate aceste lucruri confer limbajului
caracteristica de portabilitate.
Dezvoltarea proiectelor software se poate face cu echipe de
programatori prin organizarea proiectrii i a programrii prin module. Cele
mai importante avantaje pe care le aduce acest mod de lucru sunt:
- identificarea rapid a erorilor;
- programatorii implicai ntr-un proiect se preocup numai de
partea lor;
- posibilitatea schimbrii unor funcii, fr a fi afectat ntregul
proiect;
- posibilitatea adugrii unei funcii noi.
n programarea n acest limbaj, codul surs este mprit n:
- fiiere antet (header);
- program principal C.
n antet se gsesc definiii de constante sau definiii de clase, precum
i prototipurile unor funcii, n timp ce n programul principal exist
implementrile datelor din header.
n C standard exist posibilitatea de punere la punct a programelor
(Debug). Un utilizator poate parcurge un program linie cu linie sau la nivel
de funcie. Este disponibil o fereastr de urmrire (Watch) prin care se pot
vizualiza valorile variabilelor din program.
n C standard sunt disponibile resurse sub forma unor funcii stocate
n biblioteci (operaii matematice, prelucrarea irurilor, realizarea intrrilor
i a ieirilor, etc.).
Limbajul C poate fi utilizat n:
realizarea programelor de sistem;
proiectarea asistat de calculator;
grafic;
prelucrarea de imagini;
inteligen artificial;
etc.
2.2 Prezentarea mediului de lucru
Visual C/C++ este un mediu puternic de programare oferind

posibiliti pentru realizarea aplicaiilor, accesnd la un nivel sczut


funciile sistemului de operare.
Acest mediu de programare permite:
editarea;
compilarea;
execuia;
depanarea programelor scrise n C.

44

Mediul conine un editor, un compilator, un editor de legturi i un


depanator.
Procesrile realizate sunt urmtoarele:
Editarea permite introducerea codului surs i apoi salvarea sa:
- fie cu combinaia de taste: CTRL+S,
- fie din meniul File, cu comanda Save as.
Pentru a fi executat de calculator fiierul obinut n urma editrii
(codul surs) este transformat n cod obiect.

Compilarea n urma acestui proces se obine programul obiect.


Programul obiect se realizeaz cu combinaia de taste
CTRL+F9.
Compilarea, dei se execut ntr-o singur faz, presupune:
preprocesorul (un alt program) caut anumite instruciuni speciale
numite directive (precedate de #) pe care le analizeaz i le execut;
compilatorul translateaz programul surs n limbaj main;
linkerul (linkeditorul) leag modulele obiect rezultate, rezolv
referinele ctre funcii i alte module, i produce fiierul
executabil.

Execuia se realizeaz cu combinaia de taste CTRL+F10.


Compilarea i execuia se realizeaz succesiv prin activarea tastei
F9, sau selectnd din meniu Execute comenzile: Compile, respectiv Compile
+ Run. Dac se modific coninutul programului surs, programul surs
trebuie salvat. n caz contrar compilarea i rularea se va face pentru vechea
variant a programului.
Etapele dezvoltrii unui program simplu sunt:

editarea - unui program nou sau ncrcarea unui program deja


existent (modificarea lui );
salvarea - se recomand salvarea programului nainte de a-l lansa n
execuie. Este indicat existena unui director care s conin sursele
programelor, director care s fie fcut curent la lansarea mediului;
compilarea se testeaz sintaxa instruciunilor;
reeditarea - pentru corectarea eventualelor erori - dnd click pe o
linie ce indic o eroare n fereastra de mesaje cursorul se
poziioneaz n fereastra de editare pe linia eronat din programul
surs;
linkeditarea editarea de legturi:;
execuia programului;
vizualizarea ecranului cu rezultate.

45

2.2.1 Crearea unui proiect n C standard


Se lanseaz aplicaia VisualStudio C++ 2008. (figura 2.1)
Figura 2.1

Din meniul File al aplicaiei se selecteaz opiunea New | Project


din care va rezulta fereastra din figura 2.2.
Figura 2.2 New

Se alege proiectul de tipul Visual C++ Win32 avnd ca ablon


(template) Win32 Console Application. Se d un nume proiectului i i se
stabilete o locaie pe disc. Se apas butonul OK figura 2.2 i va rezulta o

46

fereastr de dialog unde se selecteaz Next (figura 2.3) i se bifeaz


Empty project nainte de a activa butonul Finish (figura 2.4).
Figura 2.3 Win 32

Figura 2.4

n fereastra Solution Explorer a mediului de dezvoltare se face


click dreapta pe Source Files (sau se deschide meniul Project) se
urmrete calea Add |New Item (figura 2.5) i se selecteaz C++File

47

(.cpp). Se d un nume fiierului surs i se activeaz butonul Add (figura


2.6).
Figura 2.5 fereastra Solution Explorer

Figura 2.6

Editarea textului surs


Textul programului surs se introduce n fereastra editorului de texte
figura 2.7.

48

Figura 2.7 Fereastra editorului de


texte

Figura 2.8
Compilare i rulare

Compilarea i rularea
Pentru compilarea programului surs se selecteaz Build | Compile
(Ctrl F7) figura 13 . Dup corectarea tuturor erorilor de editare, se trece la
rularea programului din Debug | Start without debugging (Ctrl F5) figura
2.14 i 2.8.
2.2.2 Informaii ajuttoare
Informaiile ajuttoare se obin din meniul Help figura 2.18.
F1
informaii ajuttoare;
Alt+F1 fereastra de informaii anterioar;
Ctrl+F1 informaii despre obiectul pe care este poziionat cursorul;
Esc
nchide fereastra ajuttoare.
2.2.3 Meniul principal: File, Edit, View, Insert, Project, Build,
Tools, Window, Help
File / Alt+F principalele funcii ale acestei opiuni ale meniului
principal sunt ptezentate n figura 2.9 i tabelul 2.1.
Tabel 2.1 Opiunile meniului File
Funcie
Semnificaie
New / CTRL+N
deschide o nou fereastr de editare avnd implicit
numele NONAMExx.CPP
Open / CTRL+O permite selectarea unui fiier de pe disc i ncrcarea sa
n editor

49

Close
Save / CTRL+S
Save as
Save all
Page Setup
Print
EXIT

nchide fiierul
salveaz pe disc fiierul editat
salveaz pe disc fiierul editat sub un nume nou
introdus de utilizator
salveaz pe disc toate fiierele deschise pentru editare
iniializare pagin
tiprete coninutul ferestrei curente
prsete mediul integrat
Figura 2.9

Figura 2.10

Edit / Alt+E - Ofer opiuni pentru editarea fiierelor surs tabel


2.2 i figura 2.10:
Tabel 2.2 Opiunile meniului Edit
Funcie
Semnificaie
Undo
reface documentul la forma anterioar;
Cut
decupeaz o parte din documentul marcat pentru a fi
mutat ntr-o alt zon;
Copy
pregtete pentru copiat o parte din documentul
marcat;
Paste
alipete n poziia cursorului zona din document
marcat cu Copy;
Find
caut n document un ir de caractere;
Replace
nlocuiete un ir de caractere cu alt ir de caractere;
Go
to
line salt la linia din program cu numrul;
number
View vizualizeaz diverse opiuni (figura 2.11).

50

Figura 2.11

Figura 2.12

Figura 2.13

Project - Permite controlul programelor cu surse multiple (programe


ale cror surse sunt mprite n mai multe fiiere) setare, inserare,
adugare de proiecte figura 2.12.
Executare program
compilarea ct i link-editarea).

executabil

CTRL+F5

(include

att

Compile compilare program surs sunt depistate eventualele


erori de sintaz CTRL+F7 figura 2.13.
Debug - Controleaz sesiunea de depanare a programului executabil
figura 2.14.
Pentru a rula programul pas cu pas, se folosete tasta F10. n partea
de jos a programului apar o serie de ferestre cu informaii despre starea
programului. Fereastra Auto conine variabilele locale, numite i
automatice. Vizualizarea valorii unei expresii se realizeaz n ferestrele
Watch1 Watch4. Exemplu figura 2.15, unde sgeata indic instruciunea
unde se gsete execuia.
Options - Permite stabilirea opiunilor de compilare i linkeditare,
definirea unor macrouri, ncrcarea fiierelor de configurare, stabilirea unor
setri ale mediului etc. figura 2.16.

51

Figura 2. 14

Figura 2.16

Fig. 2.15 Ecranul de depanare aplicaie

Window - Permite redimensionarea ferestrelor i aranjarea lor pe


ecran, nchiderea ferestrelor i comutarea ntre ferestre figura 2.17.
Help - Informaii ajuttoare generale sau contextuale figura 2.18.
Figura 2.17

Figura 2.18

52

2.2.4 Combinaii de taste


Combinaiile de taste care pot fi utilizate sunt:
1. Salvare Ctrl+S;
2. Compilare F7;
3. Debug F5;
4. Execuie Ctrl + F5;
5. Rulare pas cu pas F10.
2.3 Structura general a unui program n C standard
1. Comentariul are rol de a da informaii scurte cu privire la
program.
Tipuri de comentarii:
/* ... */
pentru comentariu pe o linie;
/* ...
...
... */
pentru comentariu pe mai multe linii;
//
comentariu acceptat de mediul de dezvoltare (preluat
din C++) .
2. Fiierele antet (header)
Sintaxa general a unui fiier antet, de regul cu extensia .h, este
prezentat mai jos.
Sintaxa:
#include numefisier
#define simbol valoare

unde:
- Directiva #include numefisier are rolul de a preciza compilatorului c
trebuie s citeasc, s adauge i s caute n programul surs textul care se
gsete n fiierul numefisier. Fiierele sunt cutate ntr-un folder
special, destinat acestora. Directivele #include permit introducerea
fiierelor standard (stdio.h, conio.h, string.h, math.h) n textul
programului;
- directiva #define simbol valoare definete un identificator utilizator numit
constant simbolic i o secven de caractere (valoare). Dac este utilizat
o astfel de directiv, toi identificatorii simbol care se gsesc n fiierul
surs al programului sunt nlocuii cu secvena de caractere care i urmeaz
(valoare). O macrocomand astfel definit poate fi utilizat n definirea
altor macrocomenzi.

53

Exemplu:
#define opt 8
#define saisprezece 2*opt
#define douazeci saisprezece+4

printf(\n%d,saisprezece-7);
printf(\n%d,opt*4);
printf(\n %d,2*(douazeci -opt*doi));

Dup compilare simbolurile opt, aisprezece i douzeci au valorile


8, 16, 20. Dup execuia funciei printf pe monitor se afieaz: 9, 32, 8.
Constantele simbolice sunt utilizate pentru a atribui valori speciale
unor identificatori utilizai n program (exemplu: dimensiunea maxim a
tablourilor).
3. Definiii de tip, declaraii/definiii de variabile globale
Definiii de tip se utilizeaz operatorul typedef.
Sintaxa:
typedef cuvntul-cheie nume (sau alias)

Aceast form este utilizat la definirea tipurilor complexe (vector,


matrice, structur) sau la demuri mai sugestive dect cele existente n
limbaj. n general pentru distincie denumirea se scrie cu majuscule.
Declaraii/definiii de variabile globale
Sintaxa este similar ca i declaraii/definiii de variabile locale.
Variabilele globale sunt vizibile n toate funciile programului.
Sintaxa:
tipvarglob varglob1 [,varglob2] [,varglobn];

4. Definiii de funcii utilizator folosite n program


Pentru funcii sintaxa este prezentat mai jos.

54

Sintaxa:
tipfunctie numefunctie(lista_de_parametri_formali)
{
declaratii de variabile pentru functia numefunctie
descrierea in C a algoritmului functiei numefunctie
[return (expresie);]
}

5. Declararea prototipurilor funciilor


Prototipurile funciilor sunt definite dup funcia principal main.
Sintaxa:
tipfunctieprototip numefunprot(listaprot_param_formali);

6. Declararea funciei principale main()


Sintaxa:
void main(void)
{
declaratii de variabile pentru functia principala main ;
descrierea algoritmului functiei principale main ;
}

Exemplu:
//linie de comentariu
#include "stdafx.h"
//definire fisier antet
#include "iostream"
#define opt 8
//defineste o macrocomanda
#define saisprezece 2*opt
#define douazeci saisprezece+4
#define M 6
//defineste o constanta
using namespace std;
void main(void)
//antet main
{
//corp main
int a;
//declarare variabile
printf("***Cautati sa intelegeti programarea***");
printf("\n%d",saisprezece-7);
printf("\n%d",opt*4);
printf("\n%d",2*(douazeci-opt));
a=M*3;
printf("\nValoarea lui a=%d", a);
getchar();
}

55

Rezultatul execuiei programului surseste:

3. Desfurarea lucrrii
Pentru familiarizare cu mediul de lucru s se execute urmtoarele
exerciii:
3.1. S se lanseze n execuie mediul VisualStudioC++ 2008, deschiznd
meniurile.
3.2. S se editeze, compileze i s se ruleze urmtorul program C care
citete numele, prenumele, facultatea i universitatea studentului i s se
afieze un mesaj (anexa 1).
- S se terg caracterele \n de la nceputul liniei marcate cu //2, s se
ruleze din nou programul i s se observe efectul.
- S se terg un caracter " de la linia marcat cu //1 i s se observe
ce se ntmpl la o nou compilare.
3.3. S se determine numrul de cifre ale unui numr natural (este declarat
de tip ntreg i va trebui s fie <=32767 vezi laborator 1 paragraf 1.2
conversia dintr-o baz oarecare n baza 10) (anexa 2).
Observaie: Cifrele numrului sunt resturile mpririi ntregi a
numrului la baza sistemului de numeraie n care este scris. Dup fiecare
mprire, noul numr care se mparte este ctul mpririi precedente.
mpririle continu pn cnd ctul devine 0.
S se execute programul n mod Debug, linie cu linie (F10). S se
observe cum se modific valorile variabilelor odat cu execuia instruciunilor.
3.4. S se determine numrul cifrelor zecimale ale unui numr real i s se
realizeze un ir cu acestea. Pseudocodul se gsete n: laborator 3 (anexa 3).
3.5. S se tipreasc un numr natural n baza 10 introdus de la tastatur n
bazele 10, 8 i 16, folosind specificatorii de tip %d, %o i %x. (anexa 4).
3.6. S se transforme un numr din zecimal n binar - vezi laborator 1
paragraf 1.1 (anexa 5).

56

3.7. S se treac partea fracionar a unui numr scris n baza 10 ntr-o baz
oarecare b. Numrul se va introduce sub forma 0.xxxxxxx... (anexa 6).

ANEX
1

#include "stdafx.h"
#include "iostream"
using namespace std;
void main(void)
//antet main
{
//corp main
char c1,c2,c3,c4;
//variabile locale
puts("***Primul program***");
cout<<("\n numele:");
cin>>c1;
cout<<("\n prenumele:");
cin>>c2;
cout<<("\n facultatea:");
cin>>c3;
cout<<("\n UNIVERSITATEA:");
cin>>c4;
cout<<("\n Ma initiez, \n");
cout<<("\n nume =");
cout<<(c1);
cout<<("\n prenume =");
cout<<(c2);
cout<<("\n facultate =");
cout<<(c3);
cout<<("\n UMIVERSITATE =");
cout<<(c4);
puts("*** Succes! ***");
getchar();
}

#include "stdafx.h"
//corp main
//Cifrele numarului se gasesc
in sirul s
void main()
{
int c,r,nr,N,j,s [100];
printf("\n Numarul de cifre
ale unui numar natural\n");
printf("\n Care, trebuie sa
fie <=32767 (de tip
int)\n\n\a");
do
{
printf("\nIntroduceti un\
nr pozitiv: ");
scanf("%d",&nr);
}
while(nr<0);
j=0;
do
{
c=nr/10;
r=nr-c*10;
s[j]=r;
nr=c;
j++;
}
while(nr>0);
N=j-1;
printf("\nNumarul are %d\
cifre. Sirul format\
este\n\t",j);
for(j=N;j>=0;j--)
printf("\n%d",s[j]);
getchar();
}

Rezultatul prelucrrii:

Rezultatul prelucrrii:

57

Rezultatul prelucrrii:

#include "stdafx.h"
#include <math.h>
#include "iostream"
using namespace std ;
void main()
{
double nr;
long int j,N,sir[100],cif;
printf("\nNumarul de cifre
zecimale\
ale unui numar real\n");
do
printf("\nIntroduceti un numar\
real:\t");
while(scanf("%lf",&nr)!=1);
j=0; // contor pentru sirul \
cifrelor zecimale ale nr.real
while(nr!=floorl(nr))
//sau while((nr-floorl(nr))>1e-6)
{
//determina cifra actuala
cif=(long int) (10*(nrfloorl(nr)));
sir[j]=cif;
nr=nr*10.0;
j++;
}
N=j;
printf("\nNumarul are %d cifre\
zecimale,sirul format:\n",N);
for(j=0;j<N;j++)
cout<< sir[j];
getchar();
}

5
#include "stdafx.h"
#include "iostream"
using namespace std ;
void main()
{
int c,r,nr,i,j,bin[100];
printf("\nProgramul face \
transformarea in binar a \
unui numar natural\n");
printf("\nNumarul trebuie \
sa fie <=32767 (de tip\
int)\n\n\a");
do
{
printf("\nIntroduceti un\
nr pozitiv: ");
scanf("%d",&nr);
}
while(nr<0);
j=0;
do
{
c=nr/2;
r=nr-c*2;
bin[j]=r;
j++;
nr=c;
}
while(nr>0);
printf("\nNumarul \
transformat in binar\
este:\t");
for(i=j-1;i>=0;i--)
printf("%d",bin[i]);
getchar();
}

Rezultatul prelucrrii:

4
#include "stdafx.h"
#include "iostream"
using namespace std ;
void main()
{
int n;
cout << "Introduceti un nr.\
natural n (in baza 10) : ";
cin >> n;
cout << "Baza 10: " << n;
printf("\nBaza 8: %o", n);
printf("\nBaza 16: %X", n);
getchar();
}

Rezultatul prelucrrii:

58

6
#include "stdafx.h"
#include <math.h>
#include "iostream"
using namespace std ;
void main()
{
double f;
int i,n, c[20],q,nmax=15,cond;
cout << "Introduceti partea fractionara a numarului,:";
cin >> f;
cout << "Noua baza: ";
cin>> q;
i=0;
do
{
c[i]=floor(f*q);
f=f*q-floor(f*q);
i++;
//Stabilirea conditiei de incheiere: fie f=0,
// am ajuns la numarul de cifre impus
if(f==0.0)
cond=1;
else
if(i==nmax)
cond=1;
else cond=0;
}
while(!cond);
n=i;
cout<<"Cifrele partii fractionare in baza " << q << " sunt: ";
for(i=0;i<n;i++)
cout << c[i];
getchar();
getchar();
}

Rezultatul prelucrrii:

59

Das könnte Ihnen auch gefallen