Sunteți pe pagina 1din 6

21.11.

2010

1. 1

PROGRAMAREA
CALCULATOARELOR
SI LIMBAJE DE
PROGRAMARE

Universitatea BACU
Catedra M.S.C.
You teach best what you most need to learn.
Inveti cel mai bine lucrurile pe care ai nevoie sa le inveti.

Elementele de baz ale


limbajului C.
TIPURI DE DATE

Caracteristici generale

1. 2

Construcii de baz

Alfabetul i atomii lexicali


Identificatorii
Declaraiile
Instruciunile
Funciile
Programul
Cuvintele cheie
Tipurile de date
Constantele i variabilele
Comentariile
Operatorii i expresiile

Bacu
21.11.2010

Caracteristicile
limbajului

PROGRAMAREA
CALCULATOARELOR
SI LIMBAJE DE
PROGRAMARE

Bacu
21.11.2010

1. 4

Utilizare

1. 3

limbaj de nivel nalt, portabil, structurat, flexibil


permite atat programarea la nivel nalt ct i la nivel sczut.
produce programe eficiente (lungimea codului relativ sczut, viteza
de execuie mare)
set bogat de operatori
multiple faciliti de reprezentare i prelucrare a datelor
utilizare extensiv a apelurilor de funcii i a pointerilor
verificare mai sczut a tipurilor -loose typing spre deosebire de
PASCAL
limbaj procedural
definirea structurilor de date
definirea funciilor pentru lucrul cu aceste structuri

Este utilizat n multiple aplicaii, n


care un predomin caracterul numeric:
programe de sistem
proiectare asistat de calculator
grafic
prelucrare de imagini
aplicaii de inteligen artificial
etc

Bacu
21.11.2010

1. 5

Alfabetul limbajului

PROGRAMAREA
CALCULATOARELOR
SI LIMBAJE DE
PROGRAMARE

Bacu
21.11.2010

PROGRAMAREA
CALCULATOARELOR
SI LIMBAJE DE
PROGRAMARE

PROGRAMAREA
CALCULATOARELOR
SI LIMBAJE DE
PROGRAMARE

Bacu
21.11.2010

1. 6

Program C

PROGRAMAREA
CALCULATOARELOR
SI LIMBAJE DE
PROGRAMARE

Bacu
21.11.2010

21.11.2010

1. 7

PROGRAMAREA
CALCULATOARELOR
SI LIMBAJE DE
PROGRAMARE

Identificatorii:
Sunt construcii cu rol de denumiri prin care se
desemneaz date, programe, subprograme, fiiere etc. Sunt
formai din litere, cifre i _ (liniua de subliniere).
Primul caracter trebuie s fie liter sau liniu de
subliniere (A) (nu se recomand, pentru a nu se face confuzii
nedorite cu identificatori rezervai din Turbo C).
Se recomand ca identificatorul s aib cel mult 32
caractere (exist opiuni pentru stabilirea lungimii
identificatorului).

1. 8

PROGRAMAREA
CALCULATOARELOR
SI LIMBAJE DE
PROGRAMARE

Cuvintele rezervate
Limbajul are cuvinte cu utilizare predefinit - rezervate (A).
Exemple:
_AL, _AX, _DX, _BX, _FLAGS (din Turbo C).

LITERELE MARI NU SUNT IDENTICE CU CELE MICI

Exemplu: CodProdus nu are aceeai semnificaie cu


codprodus.

Bacu
21.11.2010

1. 9

PROGRAMAREA
CALCULATOARELOR
SI LIMBAJE DE
PROGRAMARE

Bacu
21.11.2010

1. 10

Construcii de baz ale


limbajului C

Comentariile.
Sunt cuprinse ntre /* i */. Exemplu:
/*
Comentariu
*/
Nu se admit comentarii imbricate (ncuibate): comentariu n
comentariu.
Exist i alte posibiliti de comentariu: ncep cu // (la
compilatoarele C++).

PROGRAMAREA
CALCULATOARELOR
SI LIMBAJE DE
PROGRAMARE

Cuvinte rezervate
Instruciuni: implementeaz structurile de control
si desemneaz aciuni
simple, structurate, compuse
terminator de instruciune
bloc

;
}

{ INSTRUCIUNE COMPUS }. De ce a aprut ?

Comentarii
pe un rnd
//
pe mai multe rnduri /*

{ i } in locul lui BEGIN i END din Pascal

*/
Bacu
21.11.2010

1. 11

3. Tipuri de date

PROGRAMAREA
CALCULATOARELOR
SI LIMBAJE DE
PROGRAMARE

Conceptul fizic (reprezentarea intern)


Conceptul logic (nevoia prelucrrii)

Reprezentare nativ Reprezentare prin


convenie

Din pc. de vedere logic:


1.
2.

Tipuri de date

Din pc. de vedere fizic:


1.

1. 12

Cteva concepte teoretice: data, tipul de dat


Tipul de dat combin:
1.
2.

PROGRAMAREA
CALCULATOARELOR
SI LIMBAJE DE
PROGRAMARE

Bacu
21.11.2010

Simple (probleme reprezentrii interne)


Structurate (probleme liniarizrii)

Din punct de vedere al adresrii:


statice, dinamice
Bacu
21.11.2010

Bacu
21.11.2010

21.11.2010

1. 13

Grupa de
dat

Tipul

unsigned char

Tipuri simple, predefinite

PROGRAMAREA
CALCULATOARELOR
SI LIMBAJE DE
PROGRAMARE

Tipuri de date n C

ntreg

Real

Lungime
(octei)

Domeniu de valori

0..255

ntregi
reale

Codul ASCII al
caracterului. Poate
fi prelucrat ca un
caracter sau ca un
ntreg cu/fr
semn.

(-27..27-1)

[signed] char

unsigned [int]

0..65535

Virgul fix aritmetic

[signed] [int]

-32768..32767

Virgul fix algebric

unsigned long

0..232-1

Virgul fix aritmetic

[signed] long [int]

-231..231-1

Virgul fix algebric

float

3.4*10-38..3.4*1038

Virgul mobil simpl


precizie

double

1.7*10-308.. 1.7*10308

Virgul mobil dubl


precizie

long double

10

3.4*10-4932..3.4*104932

Virgul mobil extra


precizie

PROGRAMAREA
CALCULATOARELOR
SI LIMBAJE DE
PROGRAMARE

Tipuri de date

Mod de reprezentare

(0..28-1)

-128..127

1. 14

simple

caracter
enumerativ
logic

statice

masiv
ir
mulime

structurate

articol
dinamice

fiier

Bacu
21.11.2010

1. 15

PROGRAMAREA
CALCULATOARELOR
SI LIMBAJE DE
PROGRAMARE

Tipurile de date n C
Dup modul de alocare
a memoriei

Dup numrul de
valori memorate

Caracter
Masiv
Structurate

Articol

NU TE PANICA !
LUCRURILE SUNT SIMPLE. TE VEI CONVINGE.

Fiier
Dinamice

Pointer

Simple

De exemplu:

Referin

O important caracteristic C:
datele reprezentate prin convenie (caracter, boolean,
enumerativ) au doar interpretare numeric (sunt numere)
LIMBAJUL C ESTE MAI APROAPE DE MAIN
DECT ALTELE

TOATE DATELE TREBUIE DECLARATE INAINTE


DE FOLOSIRE
Bacu
21.11.2010

1. 17

1.
2.

PROGRAMAREA
CALCULATOARELOR
SI LIMBAJE DE
PROGRAMARE

Tipul char poate memora caractere, dar el este un ntreg cu


valori intre diverse valori;
Tipul BOOLEAN nu exist, dar expresiile logice au valorile 1
(adevrat); 0 (fals);
Tipul enumerativ este un ntreg cu valori ntre diverse valori.

Reale

Statice

1. 16

Tipuri existente
ntregi

Simple

Bacu
21.11.2010

PROGRAMAREA
CALCULATOARELOR
SI LIMBAJE DE
PROGRAMARE

TIPURILE SIMPLE DE DATE

Bacu
21.11.2010

1. 18

Valori

PROGRAMAREA
CALCULATOARELOR
SI LIMBAJE DE
PROGRAMARE

ntregi native:
Aritmetice (fr semn): au prefixul unsigned: char, int, long
Algebrice (cu semn): au prefixul signed, care este i atribut implicit
(poate lipsi): char, int, long
Reale native: simpl, dubl i extra precizie

Corespondena P - C

Tip

Reprezentare
Aritmetic

NTREG
Algebric

REAL

Lungime

unsigned char

BYTE

unsigned int

WORD

unsigned long

char

SHORTINT

int

INTEGER

long

LONGINT

float

SINGLE

double

DOUBLE

10

long double

EXTENDED

Bacu
21.11.2010

Bacu
21.11.2010

21.11.2010

1. 19

Tipuri simple de date

1. 20

PROGRAMAREA
CALCULATOARELOR
SI LIMBAJE DE
PROGRAMARE

Caractere i iruri

PROGRAMAREA
CALCULATOARELOR
SI LIMBAJE DE
PROGRAMARE

Declararea variabilelor
tip lista_identificatori;
float a;
float a,b,c;
int i,n;
char c;

Definirea de noi tipuri


typedef
typedef int INTREG;
typedef float REAL;

Bacu
21.11.2010

1. 21

Particulariti ale tipului caracter

#include<stdio.h>
void main()
Tipuri simple de date
{ char a;
unsigned char b;
a=200; b=200;
printf("\n\t intreg: %d \t caracter: %c",a,a);
printf("\n\t intreg: %d \t caracter: %c",b,b);
}
Rezultatul obinut este urmtorul:
intreg: -56 caracter:
Bacu
21.11.2010
intreg: 200 caracter:

Tipuri simple de date

1. 22

PROGRAMAREA
CALCULATOARELOR
SI LIMBAJE DE
PROGRAMARE

unsigned char a,b;

a=100; /* corect */
b=Q; /* corect */
b=81; /* corect, echivalent cu precedentul */
a=a+b; /* corect, prin context, se lucreaza
numeric, cu valoarea 81 pentru variabila b*/

1. 23

Bacu
21.11.2010

PROGRAMAREA
CALCULATOARELOR
SI LIMBAJE DE
PROGRAMARE

Tipu l void

Literali de tip ir de caractere


" ; "limbajul C"
"Limbajul C este destul de usor,
\ daca \"stii\" limbajul Pascal

Bacu
21.11.2010

Tipuri simple de date

PROGRAMAREA
CALCULATOARELOR
SI LIMBAJE DE
PROGRAMARE

Literali de tip caracter


Caractere afiabile: B, b, 7, (spaiu), *, \\
(caracterul backslash, cod ASCII 92), \ (caracterul apostrof, cod
ASCII 39), \ (caracterul ghilimele, cod ASCII 34).
Caractere de control:
\a 7 BEL
\b 8
BS
\t 9 HT
\n 10
LF
\v 11
VT
\f 12
FF
\r 13
CR
Caractere codului extins: \ddd
\a \7
\b \10
\ \42
\377 caracterul cu codul ASCII 255

Folosirea secvenelor escape


"m\9p"
"m\90"
"m\1751"
"m\9\60"

m, TAB, p
m, H
m, }, 1
m, TAB, 0

1. 24

CONSIDERENTE PRIVIND
UNELE TIPURI SIMPLE DE
DATE

Bacu
21.11.2010

PROGRAMAREA
CALCULATOARELOR
SI LIMBAJE DE
PROGRAMARE

Tipul caracter
a) Tipul char memoreaz valori numerice (se comporta ca shortint
din Pascal);
b) Tipul unsigned char:
i) memoreaz valori numerice (se comport ca byte din Pascal);
ii) memoreaz caractere (se comport ca char din Pascal);
Exemple:
[unsigned] char a,b;
.
a=100; /* corect */
b=Q; /* corect */
b=81; /* corect, echivalent cu precedentul */
a=a+b; /* corect, prin context, se lucreaz numeric */

Bacu
21.11.2010

21.11.2010

1. 25

Calificatori ai tipului int


short int short int
long int long
signed int int
signed long long

PROGRAMAREA
CALCULATOARELOR
SI LIMBAJE DE
PROGRAMARE

1. 26

PROGRAMAREA
CALCULATOARELOR
SI LIMBAJE DE
PROGRAMARE

Variabilele i Constantele

Tipul enumerativ
enum identificator {lista_valori_simbolice} !!
ESTE TIP
Ex.enum culoare {rosu,verde,galben} (valorile 0,1,2)
Variabila: culoare x=rosu;
Se accepta i atribuiri de valori :
Ex.enum culoare {rosu=5,verde=6, galben=10}
(valorile 5,6,10)
Bacu

Declarare variabile
Definire noi tipuri de date
Literalii ntregi, reali, caracter
Literalii de tip ir de caractere
Constantele simbolice
Constantele obiect

Bacu
21.11.2010

21.11.2010

1. 27

EXEMPLE: Constante,
Variable, Comentarii

PROGRAMAREA
CALCULATOARELOR
SI LIMBAJE DE
PROGRAMARE

1. 28

PROGRAMAREA
CALCULATOARELOR
SI LIMBAJE DE
PROGRAMARE

N C, LUNGIMILE NU MAI SUNT CATEGORICE:


DIFER DE LA O MAIN LA ALTA I DE LA O
IMPLEMENTARE LA ALTA
MODUL DE DECLARARE A VARIABILELOR:
tip lista_variabile
Pascal: lista_variabile:tip

DEFINIREA TIPULUI DE DATA AL


UTILIZATORULUI:
typedef <orice_tip> nume_utilizator
Pascal: TYPE nume_utilizator=orice_tip
Bacu
21.11.2010

1. 29

Constante

PROGRAMAREA
CALCULATOARELOR
SI LIMBAJE DE
PROGRAMARE

Definiie: sunt valori precizate la momentul


compilrii i nu se modific la execuie.

Constantele pot fi:

Bacu
21.11.2010

1. 30

PROGRAMAREA
CALCULATOARELOR
SI LIMBAJE DE
PROGRAMARE

Dac se dorete ca un literal s aib un tip explicit (long) se poate


folosi sufixul L/l.
Dac se dorete ca un literal s fie fr semn se poate folosi
sufixul U/u.
L i U pot fi folosii mpreun.

A. Literali
B. Constante simbolice
A. LITERALI

Literali ntregi: se exprim n zecimal, octal (prefixul 0)


i hexazecimal (prefixul 0x).
n funcie de mrimea lor se asociaz un tip ntreg.
Exemplu
ZECIMAL
OCTAL
HEXAZECIMAL
TIP
0-32767
00-077777 0x0000-0x7fff
unsigned int Bacu
21.11.2010

Vezi necesitatea corespondenei parametrilor funciilor !


Literali reali: se exprim matematic (cu punct) sau tiinific (cu E).
Literali caracter: c.
Literali iruri de caractere: text
Bacu
21.11.2010

21.11.2010

1. 31

Tipuri simple de date

Constante: literali, constante simbolice


Literali ntregi: baza 8, 10, 16

1. 32

PROGRAMAREA
CALCULATOARELOR
SI LIMBAJE DE
PROGRAMARE

B. Constante simbolice (numite):


# define nume valoare
Ex. #define PI 3.14159

12345, 012345, 0x12345

Literali reali:
Forma tiinific
Forma matematic
Exprimare extern

PROGRAMAREA
CALCULATOARELOR
SI LIMBAJE DE
PROGRAMARE

C. Constante obiect (
):
const tip nume = valoare
Ex. const int a=7; /* vezi deosebirea fa de int a=7;*/
n Pascal nu exist

ntreg.fracieEexponent
(ntreg.fracie)
Valoare

1.56

1,56

177e-1

17,7

15.5E3

15500 (15,5x103)

453.

453,0

.34

0,34

.1E-3

0,0001 (0,1x10-3)

123.456e-4

0,123456 (123,456x10-4)

1. 33

Structura unui program C

Tipurile structurate
Tipul masiv
Tipul articol
Lucrul cu iruri de caractere
Bacu
21.11.2010

Bacu
21.11.2010

1. 35

PROGRAMAREA
CALCULATOARELOR
SI LIMBAJE DE
PROGRAMARE

Construcii de baz ale


limbajului C

PROGRAMAREA
CALCULATOARELOR
SI LIMBAJE DE
PROGRAMARE

Directive de preprocesare
#include, #define, #undef
#define N 10
#define M 10
#define MAX (M+N)
#define DIM(a,b) (a)*(b)
char v[N],v1[10+DIM(5+M,6)];
char v1[10*MAX];
char m[M][N]
Dup preprocesare secvena de cod va deveni:
char v[10],v1[10+(5+10)*(6)];
char v1[10*(10+10)];
char m[10][10];

Bacu
21.11.2010

1. 36

1. 37

PROGRAMAREA
CALCULATOARELOR
SI LIMBAJE DE
PROGRAMARE

Limbajul folosete o serie de declarri memorate n diverse fiiere


(echivalente unitilor Pascal). Invocarea lor se face prin directiva:
# include <nume_fisier_unitate>
Exemplu, pentru folosirea unor funcii de I/E:
Formatul de scriere a instruciunilor I declarrilor este liber.
Structura programului:
Din punct de vedere logic un program are o parte de declarare i una
de execuie.
C este puternic orientat spre funcii.
Chiar programul este o funcie: MAIN.
Corpul (blocul) unui program este cuprins ntre { i }.
Structura unui program:
#include <stdio.h>
main()
{
Instructiunile programului
Bacu
}
21.11.2010

Observaii

Bacu
21.11.2010

PROGRAMAREA
CALCULATOARELOR
SI LIMBAJE DE
PROGRAMARE

execuia programului ncepe cu prima linie din main()


cuvintele cheie sunt scrise cu litere mici
instruciunile se termin cu ';'
irurile de caractere sunt incluse ntre ghilimele duble
limbajul C este case sensitive
\n poziioneaz cursorul la nceputul liniei urmtoare
printf() poate fi utilizat pentru afiare pe ecran
{} delimiteaz nceputul i sfritul unui bloc program
#include: directiv de preprocesare (includerea unor funcii de
bibliotec)
Bacu
21.11.2010

S-ar putea să vă placă și