Sunteți pe pagina 1din 20
LECȚIA 3 ELEMENTELE LIMBAJELOR DE PROGRAMARE C/C++ program sursă, program obiect, program executabil, programare

LECȚIA 3

ELEMENTELE LIMBAJELOR DE PROGRAMARE C/C++

LECȚIA 3 ELEMENTELE LIMBAJELOR DE PROGRAMARE C/C++ program sursă, program obiect, program executabil, programare

program sursă, program obiect, program executabil, programare structurată, atomi lexicali, identificatori, constante, funcție C, program principal, mediu de programare

funcție C, program principal, mediu de programare 1. ETAPELE GENERĂRII UNUI PROGRAM EXECUTABIL Formularea

1. ETAPELE GENERĂRII UNUI PROGRAM EXECUTABIL

Formularea problemei. Algoritmul de rezolvare a problemei. programul sursă. Compilarea. Editarea de legături.

2. PROGRAMUL SURSĂ ÎN LIMBAJUL C

Funcția în limbajul C. Exemplu simplu de program sursă C.

3. VARIABILE

Noțiunea de variabilă. Tipuri de variabile. Declararea și utilizarea variabilelor. Inițializarea variabilelor.

4. LIMBAJUL C. CARACTERISTICI GENERALE

Apariţia limbajului. Caracteristici. Atomi lexicali. Cuvinte rezervate. Identificatori. Comentarii. Constante. Șiruri constante. Operatori. Semne de punctuaţie.

5. MEDIUL DE PROGRAMARE

Operatori. Semne de punctuaţie. 5. MEDIUL DE PROGRAMARE • Prezentarea etapelor de generare a programului

Prezentarea etapelor de generare a programului executabil

Definirea elementelor caracteristice ale limbajului C

Înţelegerea modului de întocmire a programului sursă

Utilizarea variabilelor simple și a operațiilor de citire/scriere

Capacitatea iniția sesiuni simple de lucru în mediul Visual C++ Express Edition 2008

1
1

NOTIȚE

ELEMENTELE LIMBAJELOR C/C++

LECȚIA 3

NOTIȚE ELEMENTELE LIMBAJELOR C/C++ LECȚIA 3 1. ETAPELE GENERĂRII UNUI PROGRAM EXECUTABIL Un program pentru

1. ETAPELE GENERĂRII UNUI PROGRAM EXECUTABIL

Un program pentru calculator (o aplicație software) este rezultatul unor activități în două etape:

- de analiză, prin care se formulează problema de soluționat și se descrie modul de rezolvare a acesteia printr-un algoritm;

- de programare, în urma căreia se obține programul propriu zis, care ulterior este testat pentru eliminarea eventualelor erori.

În continuare se prezentă etapele necesare pentru elaborarea unui program executabil, pornind de la o problemă concretă. În funcţie de complexitatea problemei şi experienţa programatorului, etapele pot avea, în mod explicit, una sau mai multe din faze sau pot fi omise.

a) Formularea problemei

mai multe din faze sau pot fi omise. a) Formularea problemei - Verificarea posibilităţii rezolvării prin

- Verificarea posibilităţii rezolvării prin metode numerice, programabile;

- Realizarea modelului matematic, dacă este cazul;

- Verificarea modelului matematic cu un set de date real, pentru care se cunosc soluţiile;

- Identificarea datelor de intrare, a datelor de ieşire precum şi a variabilelor intermediare;

- Alegerea tipurilor de date folosite pentru memorarea lor în cursul procesării;

- Specificarea modului de interfaţare cu utilizatorul la nivel de intrare-ieşire.

b) Algoritmul de rezolvare a problemei

program sursă

b) Algoritmul de rezolvare a problemei program sursă - Generarea schemei logice sau a pseudocodului ce

- Generarea schemei logice sau a pseudocodului ce descrie algoritmul propus pentru rezolvarea problemei;

- Verificarea algoritmului creat cu un set date reale. În caz de erori, se verifică algoritmul creat pentru a le depista.

c) Întocmirea programului sursă

creat pentru a le depista. c) Întocmirea programului sursă - Scrierea codului sau programului sursă prin

- Scrierea codului sau programului sursă prin transpunerea algoritmului într-un limbaj de programare oarecare;

- Se obţine un fişier text, fişier sursă;

- Extensia fişierului este fixată de mediul de programare

2
2

LECȚIA 3

ELEMENTELE LIMBAJELOR C/C++

(C++ .cpp, Pascal, Delphi .pas, Visual Basic .bas etc.

d) Compilare, obţinerea programului obiect

. bas etc. d) Compilare, obţinerea programului obiect - Programul sursă (format text) este transformat in

- Programul sursă (format text) este transformat in format obiect (format binar) ;

- Programul obiect, fişierul obiect: format binar incomplet, lipsesc porţiunile de funcţii bibliotecă;

- Extensia implicită este .obj ;

- Eliminarea erorilor de sintaxă din fişierul sursă.

e) Editare de legături (build, link, )

fişierul sursă. e) Editare de legături (build, link, ) - Obţinerea programului executabil prin introducerea

- Obţinerea programului executabil prin introducerea codului compilat al funcţiilor de bibliotecă în programul obiect;

- Programul executabil este un fişier cu extensia .exe;

- Testarea programului, versiuni alfa, beta,

- Eliminarea erorilor de logică (bug-uri), facilităţi de

debugger.

2. PROGRAMUL SURSĂ ÎN LIMBAJUL C

2.1. FUNCȚIA ÎN LIMBAJUL C

PROGRAMUL SURSĂ ÎN LIMBAJUL C 2.1. FUNCȚIA ÎN LIMBAJUL C Limbajul de programare C este un

Limbajul de programare C este un limbaj structurat, în care componenta de bază este funcţia. Un program este constituit dintr-o mulţime de funcţii grupate în module program.

Analogia cu o funcţie din matematică este perfectă: funcţia are argumente de un anumit tip şi returnează o valoare de un anumit tip, în urma evaluării unei expresii de definiţie.

Atunci când este apelată (executată), o funcţie calculează şi returnează un rezultat și/sau realizează anumite acțiuni descrise în corpul funcției, care un efect colateral.

Corpul funcţiei formează un bloc și cuprinde, între delimitatorii acolade { şi }, linii de program (instrucţiunile componente, declarații de variabile etc.).

(instrucţiunile componente, declarații de variabile etc.). Orice program sursă în C trebuie să conţină o funcţie

Orice program sursă în C trebuie să conţină o funcţie principală main(), care este apelată de sistemul de operare când programul este lansat în execuţie.

3
3

NOTIȚE

NOTIȚE compilare debbuger main()

compilare

NOTIȚE compilare debbuger main()

debbuger

NOTIȚE compilare debbuger main()

main()

NOTIȚE

 

ELEMENTELE LIMBAJELOR C/C++

LECȚIA 3

   
 

Cel mai simplu program, corect din punct de vedere al compilatorului este funcția principală main(), fără nici un parametru, care nu are nici o linie de program în corpul său. Evident că la execuție nu are nici un efect.

  main()
 

main()

{ }

2.2.

EXEMPLU SIMPLU DE PROGRAM SURSĂ C

 

Un program simplu, care conţine numai funcţia main(), fără parametri şi afişează un mesaj pe monitor este următorul exemplu.

  #include <stdio.h> //(1)
 

#include <stdio.h>

//(1)

main()

//(2)

{

//(3)

 

printf("\n Program in C. \n");

//(4)

printf()

 

}

//(5)

 

Pentru crearea acestuia trebuie parcurşi următorii paşi :

1. Folosind un editor de texte, se scrie textul de mai sus, eventual mai puţin

care nu au nici un efect la

comentariile (numerele de linie) //(1) compilare;

//(5),

2. Se salvează acest text, numit program sursă, într-un fişier numit de exemplu "p01.cpp", comanda Save (Ctrl+F2);

3. Compilarea şi generarea fişierului executabil, "p01.exe" (Build, F7).

Când programul este rulat (executat) (Start, Ctrl+F5), atunci va apare pe ecran textul:

Program in C.

Ctrl+F5), atunci va apare pe ecran textul: Program in C. În exemplul de mai sus: Linia

În exemplul de mai sus:

Linia (1)

1.

#include <stdio.h>

Liniile care încep cu "#" se numesc directive de preprocesare (precompilare). Acestea comunică cu preprocesorul.

Directiva #include determină preprocesorul să includă o copie a fişierului antet (header) stdio.h în acest punct al programului sursă. Parantezele unghiulare <> indica faptul că acest fişier se găseşte în biblioteca C. Acest tip de fişiere conţin informaţii despre funcţiile de bibliotecă ale limbajului, în cazul anterior despre funcţia printf().

Linia (2)

4
4

LECȚIA 3

ELEMENTELE LIMBAJELOR C/C++

NOTIȚE

 

2.

main()

Fiecare program are o funcţie numită main(), care constituie programul principal.

 

Parantezele ce urmează dupa cuvântul cheie main indică faptul că aceasta este o funcţie.

Linia (3), linia (5)

 

3. {

 

4. }

Acolada stângă { începe corpul programului principal. Acolada dreaptă corespunzătoare } este sfârşitul programului principal (funcției main()).

 
 

Linia (4)

 

stdio.h

 

4.

printf("\n Program in C. \n");

 

Funcţia printf() este o funcţie al cărei prototip este descris în biblioteca stdio.h. La apelul acestei funcţii se tipăreşte pe ecran şirul care este parametrul funcţiei scris între parantezele ( ): "\n Program in C. \n"

Un şir constant în C constă dintr-un număr de caractere încadrate între ghilimele. Acest şir este un argument al functiei printf().

Caracterele \n de la începutul și sfârşitul şirului (se citesc "backslash n") reprezintă o secvenţă de control a tipăririi, numită "newline" care are ca efect începerea tipăririi (saltul cursorului) pe o linie nouă a ecranului.

3. VARIABILE

/n

3.1. NOŢIUNEA DE VARIABILĂ

Într-un algoritmul care descrie rezolvarea unei probleme numerice, variabila este o mărime care poate lua valori de un anumit tip, dintr-o mulțime sau interval de date.

Pentru un program sursă, scris într-un limbaj de programare, variabila are în plus câteva precizări particulare.

variabila are în plus câteva precizări particulare. O variabilă reprezintă o zonă din memorie internă,

O variabilă reprezintă o zonă din memorie internă, referită printr-un identificator de variabilă (nume), în care se va stoca sau modifica datele utile programului, pe parcursul execuţiei acestuia.

Caracteristicile generale ale variabilelor sunt:

- fiecare variabilă are un nume, dat de către programator;

- fiecare variabilă aparţine unui tip de dată;

identificator

- fiecare variabilă reţine o valoare sau un set de valori utile pentru program (simple, indexate sau compuse).

Numele de variabile au următoarele restricţii specifice identificatorilor, ca atomi lexicali:

- nu pot începe cu un număr ( 5j ),

5
5

NOTIȚE

ELEMENTELE LIMBAJELOR C/C++

LECȚIA 3

- nu pot fi cuvinte rezervate ( int, main etc. ),

- nu pot conţine caractere speciale ($ @ # & etc.), cu excepția caracterului "underscore" (_).

etc.), cu excepția caracterului "underscore" (_). Numele unei variabile se alege sugestiv. Limbajul C este în

Numele unei variabile se alege sugestiv.

Limbajul C este în mod implicit "case sensitiv" (adică face distincție între literele mici şi mari folosite în scrierea codului sursă): nota_1, Nota_1, NOTA_1 definesc trei variabile distincte.

Când se doreşte ca un nume de variabilă să fie compus din două cuvinte ele trebuie unite cu linie inferioară _ (nume_prenume, clasa_1 etc.).

3.2. TIPURI DE VARIABILE

a) Tipuri fundamentale

În general, într-un limbaj de programare avem nevoie de două categorii de variabile, care să poată fi folosite pentru stocarea unor valori numerice şi pentru stocarea unor caractere sau şiruri de caractere.

Limbajul C a fost prevăzut cu următoarele tipuri fundamentale de date:

int/float/char

următoarele tipuri fundamentale de date: int/float/char - int , numere întregi; - float , pentru numere

- int, numere întregi;

- float, pentru numere zecimale , calcul în virgulă mobilă;

- char, codul unui caracter sau un număr întreg reprezentat pe un byte.

Un caz particular este şirul de caractere : tipul char [n] defineşte o variabilă care va memora un şir de n caractere sau întregi.

void

b) Tipul void

Este un tip de date special, pentru care mulțimea valorilor este vidă. Se utilizează pentru a specifica absența oricărei valori, de exemplu pentru valoarea întoarsă de funcția main, care în format ANSI C are forma void main(){}.

c) Variabile simple/indexate

Dacă unei variabile îi corespunde o dată izolată, fără legătură cu alte date, variabila este simplă. În mod frecvent însă data face parte dintr-un grup, o listă de valori cu un anumit format compus din tipuri simple, definit de utilizator, cazul variabilelor indexate (tablouri și structuri).

3.3. DECALARAREA ȘI UTILIZAREA VARIABILELOR

În

limbajul

C,

orice

variabilă,

înainte

de

Declarația unei variabile stabilește:

utilizare,

trebuie

declarată.

- legătura dintre numele variabilei și tipul de dată pe care le poate avea;

6
6
LECȚIA 3 ELEMENTELE LIMBAJELOR C/C++ NOTIȚE - alocă zona de memorie necesară (numărul de bytes)
LECȚIA 3
ELEMENTELE LIMBAJELOR C/C++
NOTIȚE
- alocă zona de memorie necesară (numărul de bytes) pentru stocarea
valorilor acesteia.
- porțiunea din programul sursă în care se poate utiliza, este vizibilă
(variabile locale sau globale, noțiuni precizate în lecțiile următoare).
Declararea unei variabile
tip_data lista_variabile;
int i, j, k;
float a, b, c, x1, x2;
char c1, c2;
char sir_c[10];
// variabilele i, j, k intregi
// variabile a, b, c, x1, x2 de tip real
// variabilele c1, c2 de tip char
// variabila sir_c sir de 10 char
Pe parcursul execuției programului, valorile unei variabile pot fi:
- pot fi introduse (citite) de la tastatură sau de la alt dispozitiv de intrare;
- pot fi afișate (scrise) pe ecran sau pe un alt dispozitiv de ieșire;
- depuse în memorie prin iniţializare sau prin operații de atribuire în
program.
O modalitate simplă de citire/scriere a valorilor variabilelor utilizate de un
program C++ sunt procesele (fluxurile de intrare/ieșire) cin, respectiv cout, care
sunt conținute în biblioteca limbajului numită iostream.h, utilizate după formatul
general:
cin>>nume_variabila;
/* nume_variabila primeste valoarea introdusa de la tastatura */
cout<<nume_variabila;
// afiseaza pe ecran valoarea din nume_variabila
cout<<"sir_caractere";
cin/cout
// afiseaza pe ecran textul sir_caractere

cout<<endl;

/* termina afisearea pe linia curenta, inceput de linie noua */ Exemplele următoare utilizează variabile de tip predefinit numerice (int, float), după secvenţa:

1. se citește sau se asignează (atribuie) o valoare variabilei;

2. calculează valori şi le memorează într-o variabilă;

3. afişează (scrie) valorile variabilelor pe ecran.

3. afişează (scrie) valorile variabilelor pe ecran. Exemplu de utilizare a variabilelor de tip int #include

Exemplu de utilizare a variabilelor de tip int

#include "stdafx.h" #include <iostream>

7
7

”stdafx.h”

<iostream>

NOTIȚE

namespace std

ELEMENTELE LIMBAJELOR C/C++

LECȚIA 3

using namespace std;

int main()

{

int zile, ore, minute;

// declarare variabile intregi

cout<<"Introduceti zile = ";

cin>>zile;

// citeste o valaore intreaga

ore=24*zile;

minute=60*ore;

cout<<zile; cout<<" zile ="; cout<<ore; cout<<" ore = ";

cout<<minute; cout<<" minute.";

cout<<endl;

return 0;

}

La rulare, dacă se introduce 5 pentru zile, pe ecran va apărea:

Introduceti zile := 5 5 zile =120 ore = 7200 minute. Press any key to continue

5 5 zile =120 ore = 7200 minute. Press any key to continue În exemplul anterior:

În exemplul anterior:

1.

Directiva prin care se include în programul sursă fișierul antet iostream.h, care conține prototipurile pentru cin, cout, endl.

#include <iostream>

using namespace std;

2.

Directivă prin care se specifică domeniul de nume (spațiul numelor) std în care sunt definite funcții, variabile, constante etc. utilizate în program (în acest exemplu cin, cout, operatorii de extragere sau citire <<, respectiv de inserție sau ieșire >> și manipulatorul endline endl).

și manipulatorul e n d l i n e endl ). Exemplu de utilizare a variabilelor

Exemplu de utilizare a variabilelor de tip float

float x, y;

// declaratie variabile de tip real

x = 1.0;

y = 2.0;

cout<<"Suma dintre x si y este ";

cout<<x+y;

cout<<endl;

8
8

LECȚIA 3

ELEMENTELE LIMBAJELOR C/C++

Pe ecran se va afişa:

Suma dintre x si y este 3 Press any key to continue

3.4. INIŢIALIZAREA VARIABILELOR

După declararea unei variabile, zona de memorie alocată conform tipului de dată, va conţine o valoare oarecare (numită garbage), existentă în zona respectivă, la lansarea în execuţia a programului. Din acest motiv este de preferat ca variabilelor să li se atribuie înainte de utilizarea propriu zisă a acestora în program, valori implicite, inițiale.

Inițializarea se poate face printr-o operație de atribuire sau la declararea variabilei prin iniţializatorii expliciţi, plasați după numele variabilei, separaţi de acesta prin semnul egal.

numele variabilei, separaţi de acesta prin semnul egal. … int n=0; // variabila intraga cu valoarea

int n=0; // variabila intraga cu valoarea initiala 0

float x= -0.2345; // variabila reala cu valoarea -0.2345

char c=’A’; // variabila caracter cu valoarea A

char nume[]={ "Alexandru"}; // sir de caracter

char nume[]={ "Alexandru" }; // sir de caracter NOTIȚE garbage Prezenţa unei iniţializări în declararea

NOTIȚE

garbage

Prezenţa unei iniţializări în declararea variabilelor indică o declaraţie definitorie (ce specifică ce valoare va fi stocată în spaţiul de memorie).

Nu pot exista două declaraţii definitorii într-un program.

Aceeaşi variabilă nu se poate iniţializa cu două valori, decât în cazul în care se renunţă la valoarea anterioară, cu care a fost iniţializată.

4.

LIMBAJUL C. CARACTERISTICI GENERALE

4.1. ISTORIC a) Apariţia limbajului

9
9

NOTIȚE

ANSI C

ELEMENTELE LIMBAJELOR C/C++

LECȚIA 3

Limbajul C, dezvoltat în 1972 este Dennis M. Retchie la Laboratoarele AT&T Bell, este primul limbaj pentru crearea de sisteme de operare. Sistemele de operare erau dezvoltate în limbaj de asamblare pentru a fi mai rapide.

Numele limbajului provine din faptul că este rezultatul îmbunătăţirii limbajului B, folosit în scrierea sistemului de operare UNIX pentru minicalculatorul DEC PDP7.

Prima documentaţie despre acest limbaj a fost "The C Programing Language", scrisă de Dennis M. Retchie 1 şi Brian Kernighan în 1977. Înaintea ei exista doar "The C Reference Manual", scrisă de Dennis M. Retchie.

După adaptarea compilatorului pentru sistemul de operare MS-DOS, Institutul National pentru Standarde al Americii (ANSI), a definit o versiune oficială pentru limbajul C, rezultând astfel ANSI C.

b) Caracteristici

Poate fi considerat simultan şi un limbaj de nivel înalt şi un limbaj de nivel scăzut pentru că:

de nivel înalt şi un limbaj de nivel scăzut pentru că: - este un limbaj de

- este un limbaj de programare de scop general;

- permite programarea structurată (limbaj de nivel înalt);

- oferă posibilitatea lucrului la nivel de biţi şi cu adrese de memorie (limbaj de nivel scăzut, maşină);

- poate fi utilizat pentru scrierea softului de bază (sistem de operare).

Învăţarea limbajul C este utilă şi pentru că:

- are o libertate foarte mare în scrierea codului, el acceptând multe forme de scriere care în alte limbaje nu sunt premise;

- versiunile sale OOP (Object Oriented Programming), C++ şi Visual C++, sunt printre cele mai folosite limbaje de programare;

- permite trecerea cu uşurinţă la programarea Web: Java, C#, PHP, Pearl etc.

4.2. ATOMII LEXICALI

Un limbaj de programare are un alfabet şi reguli pentru scrierea programelor corecte folosind semne de punctuaţie. Aceste reguli formează sintaxa limbajului C.

. Aceste reguli formează sintaxa limbajului C. Compilatorul împarte mulţimea caracterelor din programul

Compilatorul împarte mulţimea caracterelor din programul sursă în atomi lexicali, care reprezintă vocabularul de bază al limbajului.

1 Dennis MacAlistair Ritchie (n. 9 septembrie 1941) a dezvoltat împreună cu Ken Thomson şi alţi programatori prima versiune a sistemului de programare UNIX . Împreună cu Thompson şi Brian Kernighan a dezvoltat limbajul de programare C şi împreună cu Kernighan a scris cartea Limbajul de programare C (engleză The C Programming Language). [citat din http://ro.wikipedia.org/wiki/Dennis_Ritchie]

10
10

LECȚIA 3

ELEMENTELE LIMBAJELOR C/C++

NOTIȚE

În ANSI C (ANSI = American National Standards Institute) sunt şase tipuri de atomi lexicali, care se mai numesc şi elemente lexicale sau unităţi lexicale:

1. cuvinte rezervate (sau cuvinte cheie);

2. identificatori;

3. constante;

4. şiruri constante;

5. operatori;

6. semne de punctuaţie.

4.3. ALFABETUL

Un program C este o secvenţă de caractere. Caracterele permise în

programele C sunt:

de caractere. Caracterele permise în programele C sunt: - litere mici : a b z -

- litere mici

: a b

z

- litere mari

: A B

Z

- cifre

: 0 1

9

- alte caractere: */ = ( ) { } [ ] < > ' " ! @ # $ % & _ | ^ ~ \ .

- spaţii

,

; : ?

: blank, newline, tab

4.4. COMENTARII

spaţii , ; : ? : blank, newline, tab 4.4. COMENTARII Comentariile sunt şiruri de caractere

Comentariile sunt şiruri de caractere cuprinse între delimitatorii /* şi */. Comentariile nu reprezintă atomi lexicali.

Compilatorul va traduce comentariile într-un singur caracter spaţiu, de aceea comentariile nu fac parte din codul executabil.

de aceea comentariile nu fac parte din codul executabil. /* Comentariul care poate contine mai multe

/*

Comentariul care poate contine

mai multe linii

*/

//

Comentariu până la sfârşitul liniei curente (C++)

/* Comentariul care poate contine mai multe linii */ // Comentariu până la sfârşitul liniei curente
11
11

NOTIȚE

ELEMENTELE LIMBAJELOR C/C++

LECȚIA 3

Principalul scop al folosirii comentariilor este facilitarea documentării ulterioare, explicarea clară a folosirii programelor.

Uneori un comentariu poate conţine informaţii ce argumentează demonstraţia corectitudinii acelui algoritm.

Este

recomandată

utilizarea

comentariilor

în

timpul

introducerii

textului

programului.

4.5. CUVINTE REZERVATE

introducerii textului programului. 4.5. CUVINTE REZERVATE Cuvintele rezervate (cheie) reprezintă atomi individuali,

Cuvintele rezervate (cheie) reprezintă atomi individuali, cu un înţelesuri stricte şi care nu pot fi redefinite sau utilizate în alte contexte.

auto

do

goto

signed

unsigned

break

double

if

sizeof

void

case

else

int

static

volatile

char

enum

long

struct

while

const

extern

register switch

continue float

return

typedef

default

for

short

union

Anumite implementări (Turbo C) pot conţine şi alte cuvinte rezervate:

asm

cdecl

far

huge

interrupt

near

pascal

Comparativ cu alte limbaje de programare, C are un număr mic de 32 de cuvinte rezervate. Limbajul Ada, de exemplu, are 62 cuvinte rezervate. Aceasta este o caracteristică a limbajului C, de a avea doar câteva simboluri speciale şi cuvinte rezervate.

4.6. IDENTIFICATORI

speciale şi cuvinte rezervate. 4.6. IDENTIFICATORI Identificatorii sunt secvenţe de caractere create pentru a

Identificatorii sunt secvenţe de caractere create pentru a da nume unice diverselor obiecte dintr-un program (variabile, nume de funcţii, tipuri de date etc.).

Un identificator este un atom lexical compus dintr-o secvenţă de litere, cifre sau underscore ("_") cu următoarele restricţii:

- ca primul caracter este o literă sau underscore;

- nu pot conţine caractere speciale sau caracterul spaţiu.

12
12

LECȚIA 3

ELEMENTELE LIMBAJELOR C/C++

NOTIȚE

În general, se obişnuiește ca identificatorii să fie scrişi cu nume sugestive, care să faciliteze citirea şi documentarea programului.

care să faciliteze citirea şi documentarea programului. k, _id, contor, un_identificator gresit#unu,

k, _id, contor, un_identificator

gresit#unu, 100_gresit_doi, -plus

/* sunt identificatori */

/*nu sunt identificatori*/

Cuvintele rezervate pot fi privite ca fiind identificatori. De asemenea numele funcţiilor din bibliotecile limbajului pot fi considerate identificatori, precum "printf" sau "scanf" care sunt funcţii de intrare/ieşire.

4.7.

CONSTANTE

care sunt funcţii de intrare/ieşire. 4.7. CONSTANTE Constantele considerate de compilator ca fiind atomi

Constantele

considerate de compilator ca fiind atomi lexicali.

de

întregi,

reali,

caractere

şi

enumerare

sunt

a) Constanta întreagă

Este o succesiune de cifre şi poate fi:

- o constantă octală, precedată e 0 (cifra zero), şi formată cu cifre de la 0 la 7;

- o constantă hexazecimală, precedată de 0x sau 0X (cifra 0 şi litera x) şi cifre hexazecimale (includ literele de la A la F şi de la a la f cu valori de la 10 la 15);

- o constantă zecimală (în orice alt caz).

10 la 15); - o constantă zecimală (în orice alt caz). 31 /* 31 format zecimal

31

/* 31 format zecimal */

037

/* 31 format octal */

0x1f

/* 31 format hexazecimal */

0X1F

/* 31 format hexazecimal */

b) Constantă cu tip explicit

Este o constantă întreagă urmată de literele l, L, u sau U:

- o constantă întreagă (zecimală, octală sau hexazecimală) urmată imediat de litera l sau L este o constantă lungă. Aceasta va fi memorată în calculator pe 4 bytes;

- o constantă întreagă zecimală urmată imediat de litera u sau U este o constantă de tip întreg fără semn. Litera u sau U poate fi precedată de litera l sau L.

13
13

NOTIȚE

ELEMENTELE LIMBAJELOR C/C++

LECȚIA 3

NOTIȚE ELEMENTELE LIMBAJELOR C/C++ LECȚIA 3 123L /* 123 lung, pe 4 bytes*/ 123u /* 123

123L

/* 123 lung, pe 4 bytes*/

123u

/* 123 fara semn, pe 2 bytes */

c) Constanta flotantă

Constă dintr-o parte întreagă, un punct zecimal, o parte fracţionară, litera e sau E şi opţional, un exponent care este un întreg cu semn. Partea întreagă şi partea fracţionară sunt constituite din câte o succesiune de cifre.

sunt constituite din câte o succesiune de cifre. 123.456e7 /* 1234560000.0 */ 0.12e3 /* 120.0 */

123.456e7

/* 1234560000.0 */

0.12e3

/* 120.0 */

235.5e-2

/* 2.355 */

d) Constanta caracter

Constă dintr-un singur caracter scris între apostrofuri, de exemplu 'x'. Valoarea unei constante caracter este valoarea numerică a caracterului, în setul de caractere al calculatorului (de exemplu codul ASCII).

Caracterul 0 (zero), are valoarea 48 în zecimal, diferită de valoarea numerică zero.

48 în zecimal, diferită de valoarea numerică zero. '0' /* caracterul ’0’ are valoarea 48 */

'0'

/* caracterul ’0’ are valoarea 48 */

4.8. ŞIRURI CONSTANTE

caracterul ’0’ are valoarea 48 */ 4.8. ŞIRURI CONSTANTE Un şir este o succesiune de caractere
Un şir este o succesiune de caractere scrise între ghilimele. Ghilimelele nu fac parte din
Un şir este o succesiune de caractere scrise între ghilimele.
Ghilimelele
nu
fac
parte
din
şir.
Ele
servesc
numai
pentru
delimitarea şirului.

Şirul constant este înţeles de compilator ca fiind un singur atom lexical şi este tratat diferit faţă de constantele de tip caracter. De exemplu, "a" nu este totuna cu caracterul 'a'.

Ghilimeaua, ", reprezintă un singur caracter (nu două apostrofuri). Dacă dorim să apară într-un şir constant, atunci ea trebuie precedată de caracterul \ (backslash). Dacă dorim ca într-un şir să apară \, atunci trebuie să fie precedat tot cu \ (devenind astfel \\).

Două şiruri constante care sunt separate doar printr-un spaţiu vor fi concatenate de compilator într-unul singur.

14
14

LECȚIA 3

ELEMENTELE LIMBAJELOR C/C++

LECȚIA 3 ELEMENTELE LIMBAJELOR C/C++ "sir text"     "" /* sirul vid */ "

"sir text"

 
 

""

/* sirul vid */

"

"

/* sir de spatii */

"

un sir ce contine ghilimea \" "

"

un sir ce contine backslash \\ "

„abc" "def"

/* echivalent cu "abcdef" */

NOTIȚE

4.9. OPERATORI

Limbajul C prezintă un număr mare de operatori care pot fi clasificaţi după diverse criterii:

operatori care pot fi clasificaţi după diverse criterii: - operatori unari, binari şi ternari, - operatori

- operatori unari, binari şi ternari,

- operatori aritmetici, logici, relaționali

- operatori pe biţi etc.

Operatorii sunt caracterizaţi prin nivele de prioritate sau precedenţă (ordinea efectuării operațiilor).

Clasele de operatori care corespund la diferite nivele de prioritate se prezintă detaliat într-un capitol separat.

4.10. SEPARATORI

detaliat într-un capitol separat. 4.10. SEPARATORI Un separator este un caracter sau un şir de caractere

Un separator este un caracter sau un şir de caractere care separă unităţile lexicale într-un program.

Separatorul cel mai frecvent este spaţiul alb (blanc) care conţine unul sau mai multe spaţii, tab-uri, newline-uri sau comentarii. Aceste construcţii sunt eliminate în faza de analiză lexicală a compilării.

Alţi separatori admişi în limbajul C sunt:

- ( ) Parantezele mici încadrează lista de argumente ale unei funcţii sau delimitează anumite părţi în cadrul expresiilor aritmetice etc.;

- { }

Acoladele încadrează blocurile, care sunt constituie din instrucţiuni, linii de

program etc. sau sunt corp de funcţii;

- [ ]

Parantezele mari încadrează dimensiunile de masiv sau indicii elementelor

de masiv (variabile indexate);

- Ghilimelele încadrează un şir de caractere;

- ' ' Apostrofurile încadrează un singur caracter sau o secvenţă de evitare;

- Punct şi virgula termină o instrucţiune;

- Slash asterisc început de comentariu;

- Asterisc slash sfârşit de comentariu.

" "

;

/*

*/

15
15

NOTIȚE

ELEMENTELE LIMBAJELOR C/C++

LECȚIA 3

5. MEDIUL DE PROGRAMARE

Exemplele de programe sursă din acest curs sunt testate în mediul de programare Visual C++ 2008 Express Edition , al firmei Microsoft.

Prezentarea elementelor esenţiale ale limbajului nu implică (pentru simplitate) utilizarea de la început interfeţelor Windows, majoritatea programelor rulate fiind în modul consolă (CLR Console Application).

Pentru realizarea unei aplicații pe lângă fișierul sursă .cpp mai sunt necesare alte informații stocate în fișiere antet, biblioteci etc. Acestea împreună formează un

proiect (project).

Un proiect nou de tip CLR Console Application se începe prin secvența de comenzi din meniu:

File New Project… CLR CLR Console Application

La deschiderea unui nou proiect (project), mediul IDE (Integrated Developement Environment) pentru editarea, compilarea, editarea legăturilor şi rularea programelor de tip Console Application are următorul aspect:

de tip Console Application are următorul aspect: Din acest model de start, este obligatoriu să se

Din acest model de start, este obligatoriu să se păstreze directiva #include "stdafx.h", necesară programelor rulate în modul consolă şi eventual instrucţiunea return 0, care precizează valoarea returnată de funcția main() la terminarea programului.

Se șterg argumentele funcției main() array<System::String ^> ^args, linia using namespace System; și linia Console::WriteLine(L"Hello World");

16
16

LECȚIA 3

ELEMENTELE LIMBAJELOR C/C++

NOTIȚE

Proiectul modificat în acest se salvează numele p00 și va fi folosit machetă de start pentru toate exemplele următoare.

folosit machetă de start pentru toate exemplele următoare. // p01.cpp : main project file. #include

// p01.cpp : main project file.

#include "stdafx.h"

#include <stdio.h>

int main()

{

// linii de program de introdus

return 0;

}

Cu aceste precizări primul program în C++, realizat în mediul Visual C++

Express Edition 2008 are următoarea formă:

E d i t i o n 2 0 0 8 are următoarea formă: // p01.cpp

// p01.cpp : main project file.

#include "stdafx.h"

#include <stdio.h>

int main()

{

printf("\n Program in C. \n");

return 0;

}

printf( "\n Program in C. \n" ); return 0; } Un program pentru calculator (o aplicație

Un program pentru calculator (o aplicație software) este rezultatul unor activități de analiză și de programare. Etapele necesare elaborării unui program executabil sunt: formularea problemei, descrierea algoritmului de rezolvare, întocmirea programului sursă, compilarea și editarea legăturilor.

Limbajul de programare C este un limbaj structurat, în care componenta de bază este funcţia. Un program este constituit dintr-o mulţime de funcţii grupate în module program. Orice program sursă în C trebuie să conţină o funcţie principală main(), care este apelată de sistemul de operare când programul este lansat în execuţie.

O variabilă reprezintă o zonă din memorie internă, referită printr-un

identificator de variabilă (nume), în care se va stoca sau modifica datele utile programului, pe parcursul execuţiei acestuia.

Limbajul C a fost prevăzut cu următoarele tipuri fundamentale de date: int, numere întregi; float, pentru numere zecimale , calcul în virgulă mobilă; char, codul unui caracter sau un număr întreg reprezentat pe un byte.

17
17

NOTIȚE

ELEMENTELE LIMBAJELOR C/C++

LECȚIA 3

O modalitate simplă de citire/scriere a valorilor variabilelor utilizate de un

program C++ sunt procesele (fluxurile de intrare/ieșire) cin, respectiv cout, care sunt conținute în biblioteca limbajului numită iostream.h.

Inițializarea variabilelor se poate face printr-o operație de atribuire sau la declararea variabilei prin iniţializatorii expliciţi, plasați după numele variabilei, separaţi de acesta prin semnul egal.

În programarea structurată, prelucrările şi datele sunt separate. Programul

constă din proceduri (subprograme sau funcţii) şi structurile de date asupra cărora operează acestea.

Blocul constituie un ansamblu de linii de program, bine delimitate, executate secvenţial. Posedă calitatea de a masca de exterior variabilele definite în interiorul blocului, numite și variabile locale.

Datele sunt grupate în colecţii de tipuri simple: întregi, reale, caractere etc Programatorul are posibilitatea să definească structuri de date, compuse din mai multe tipuri simple.

Un limbaj de programare are un alfabet şi reguli pentru scrierea programelor corecte folosind semne de punctuaţie. Aceste reguli formează sintaxa limbajului C.

Compilatorul împarte mulţimea caracterelor din programul sursă în atomi lexicali, care reprezintă vocabularul de bază al limbajului.

În ANSI C (ANSI = American National Standards Institute) sunt şase tipuri

de atomi lexicali, care se mai numesc şi elemente lexicale sau unităţi lexicale: 1.

cuvinte rezervate (sau cuvinte cheie); 2. identificatori; 3. constante; 4. şiruri constante; 5. operatori; 6. semne de punctuaţie.

4. şiruri constante; 5. operatori; 6. semne de punctuaţie. Completați cu explicaţii succinte semnificaţia

Completați cu explicaţii succinte semnificaţia termenilor, expresiilor sau funcţiilor din tabelul următor.

program sursă

fișier cu linii de text, care conține transpunerea algoritmului într-un limbaj de programare oarecare

compilare

 

fișier obiect

 

editare de

 

legături

ANSI C

 

variabila

 

int

 

float

 

char

 

programare

 

structurată

18
18

LECȚIA 3

ELEMENTELE LIMBAJELOR C/C++

NOTIȚE

atomi lexicali

/*

*/

//

cuvinte cheie

101L

-23.5e-2

0X1F

separatori

main()

#include

printf()

stdio.h

stdafx.h

main() #include printf() stdio.h stdafx.h TC1. Activități (conţinute în fişierul Activități

TC1. Activități

(conţinute în fişierul Activități 03)

Intrați pe platforma de e-learning MOODLE,

HTTP://DISTANCE.IDUORADEA.RO, cursul Programarea calculatorului II

Deschideți și citiţi conţinutul documentului Activități 03.

Efectuați activitățile incluse și rezolvați problemele propuse.

TC2. Completaţi şi reţineţi semnificaţia termenilor din Glosar de termeni.

TC3. Efectuați Testul on-line pentru Lecția 03.

. TC3. Efectuați Testul on-line pentru Lecția 03. 1. Aaron MillerandJerry Lee Ford, Jr., Microsoft Visual

1. Aaron MillerandJerry Lee Ford, Jr., Microsoft Visual C++ 2005 Express Edition Programming for the Absolute Beginner, Course Technology, 2006.

2. Ana Întuneric, ş.a., Informatică. Teste grilă C/C++, Editura Polirom, Iaşi, 2003.

3. Brian Overland, C++: Ghid pentru începători, Editura Corint, Bucureşti, 2008.

4. Cerchez, Emanuela, Şerban, Marinel, Programarea în limbajul C/C++ pentru liceu,

Editura Polirom, Iaşi, 2005.

5. Ivor Horton’s, Beginning Visual C++ 2005, Published by Wiley Publishing, Inc.,

2006.

19
19

NOTIȚE

ELEMENTELE LIMBAJELOR C/C++

LECȚIA 3

6.

Jeff Kent, C++ fără

mistere.

Ghid

pentru

autodidacţi,

Editura

ROSETI

EDUCATIONAL, Bucureşti, 2007.

7.

Kris Jamsa, Lars Klander, Totul despre C şi C++. Manual fundamental de

programare în C şi C++, Editura Teora, Bucureşti, 2004.

 

8.

Loudon, Kyle, C++ poket guide, Editura ALL, Bucureşti, 2006.

9.

Pele,

Alexandru-Viorel,

Cursurile

şi

aplicaţiile

pentru

laborator,

http://distance.uoradea.ro, cheie pc2, 2009.

 

10.

***, Microsoft Visual C++ 2008 Express Edition Online Help

11.

***, Surse Internet

20
20