Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




ELEMENTE DE BAZA ALE LIMBAJULUI C

c


ELEMENTE DE BAZA
ALE LIMBAJULUI C



Asa cum se intampla cu orice limbaj artificial, temelia pe care se cladesc programele C este alcatuita din alfabet si vocabular (atomi lexicali). Combinand atomii lexicali dupa regulile specifice de sintaxa se construiesc linii valide de program si, in final, programul.

Alfabetul limbajului

Alfabetul limbajului este alcatuit dintr-o multime de simboluri care se pot clasifica in simboluri afisabile si neafisabile.

Setul minim de simboluri afisabile (care pot fi reprezentate grafic) este alcatuit din:

·   &nbs 212d32c p;   &nbs 212d32c p;  litere mari ale alfabetului englez:

A B C D E F G H I J K L M N O P Q R S T
U V W X Y Z

·   &nbs 212d32c p;   &nbs 212d32c p;  litere mici ale alfabetului englez:

a b c d e f g h i j k l m n o p q r s t
u v w x y z

·   &nbs 212d32c p;   &nbs 212d32c p;  cifre zecimale:

·   &nbs 212d32c p;   &nbs 212d32c p;  liniuta de subliniere: _

·   &nbs 212d32c p;   &nbs 212d32c p;  semne de punctuatie si semne speciale:

, . ; : ? ' ( ) a i < > " ! | t / A # &

^ * - s + A I %

Prezentam in Tabelul 11.1 denumirea unora din semnele enumerate.

Tabelul 11.1    Cateva semne folosite in C si denumirea lor

Semn

Nume

Semn

Nume

bara verticala

slash

t

backslash

A

tilda

diez

liniuta de subliniere (underscore)

&

ampersand

sageata sus

Simbolurile neafisabile (fara echivalent grafic) sunt reprezentate prin secvente escape (de evitare) sau coduri backslash-caracter. Aceste simboluri reprezinta coduri ASCII care nu pot fi citite de la tastatura. Folosirea lor in programe in locul echivalentelor ASCII este recomandata din ratiuni de portabilitate.

Codurile backslash ale limbajului C sunt prezentate in Tabelul 11.2.

Tabelul 11.2 Codurile backslash din C si semnificatia lor

Coduri backslash

Semnificatie

ta

Alarma

tb

backspace (recul cu o pozitie)

tf

form feed (salt pagina noua)

tn

newline (salt la rand nou si de la capat)

tr

carriage return (retur car)

tt

horizontal tab (tab orizontal)

tv

vertical tab (tab vertical)

t'

apostrof

t"

ghilimele

t0

caracter nul

tt

backslash

tddd

caracter ASCII in notatie octala

txdd

caracter ASCII in notatie hexazecimala

Observatii:

·   &nbs 212d32c p;   &nbs 212d32c p;  Tab orizontal inseamna saltul cursorului cu un numar de coloane, iar tab vertical saltul cursorului cu un numar de linii.

·   &nbs 212d32c p;   &nbs 212d32c p;  Notatia octala foloseste cifre in baza (adica ), iar notatia hexazecimala cifre in baza (adica 0,1,2,3,4,5, 6,7,8,9,A,B,C,D,E,F Se observa ca literele A,B,C,D,E,F corespund respectiv numerelor . Secventele "tddd" permit scrierea oricarui caracter din setul ASCII ca un numar octal format din trei cifre, iar secventele "txdd" ca un numar hexazecimal format din doua cifre. De exemplu, caracterul backspace poate fi scris ca "t010" sau "tx08"

Vocabularul limbajului

Vocabularul limbajului este alcatuit din atomi lexicali. Acestia reprezinta grupuri de simboluri afisabile care primesc in timpul procesului de compilare o anumita semnificatie. Prezentam mai jos urmatorii atomi lexicali:

·   &nbs 212d32c p;   &nbs 212d32c p;  identificatori (nume)

·   &nbs 212d32c p;   &nbs 212d32c p;  constante

·   &nbs 212d32c p;   &nbs 212d32c p;  operatori

·   &nbs 212d32c p;   &nbs 212d32c p;  semne de punctuatie

·   &nbs 212d32c p;   &nbs 212d32c p;  simboluri speciale

Identificatori

Un identificator reprezinta o secventa de litere, cifre, liniute de subliniere, primul caracter din secventa fiind obligatoriu o litera sau liniuta de subliniere.

De exemplu, Cod_mat,cod_mat,y_1,ax,_ol sunt identificatori, in timp ce x1, a&b, 3xy nu sunt. In legatura cu identificatorii facem urmatoarele precizari:

·   &nbs 212d32c p;   &nbs 212d32c p;    In C se face deosebirea intre literele mari si mici ale alfabetului. De exemplu, Cod_mat si cod_mat reprezinta nume diferite;

·   &nbs 212d32c p;   &nbs 212d32c p;  Desi sunt permisi, este recomandabil ca identificatorii care incep cu liniuta de subliniere sa fie evitati. Ei pot coincide cu nume rezervate, invizibile programatorului, provocand erori;

·   &nbs 212d32c p;   &nbs 212d32c p;  Standardul ANSI C nu limiteaza numarul de caractere (lungimea) unui identificator. Un compilator C va ignora insa caracterele aflate pe pozitii mai mari decat un numar prestabilit.

Cuvintele cheie sunt cuvinte rezervate C care au o destinatie prestabilita (nu pot fi folosite ca nume de functie sau variabila). Standardul ANSI C are de cuvinte cheie, din care au fost definite de varianta originala a limbajului C (standardul Kernighan/Ritchie).

Tabelul 11.3 Cuvinte cheie dupa standardul Kernighan / Ritchie

auto

break

case

char

continue

default

do

double

else

extern

float

for

goto

if

int

long

register

return

short

sizeof

static

struct

switch

typedef

union

unsigned

while

Tabelul 11.4 Cuvinte cheie adaugate de standardul ANSI C

const

enum

signed

void

volatile

Dupa cum se poate observa cuvintele cheie din C se scriu cu litere mici. Pe langa cuvintele cheie rezervate de standardul ANSI C, diverse tipuri de compilatoare C includ si cuvinte cheie folosite in exploatarea eficienta a mediului de operare specific (facilitati privind programarea interlimbaje, accesarea intreruperilor etc.), numite cuvinte cheie extinse.

Cuvintele cheie extinse folosite cel mai des sunt:

asm

cdecl

far

huge

interrupt

near

pascal

_cs

_ds

_es

_ss

Constante

Constantele pot fi numere, caractere, siruri de caractere; valoarea lor nu se schimba in timpul executiei unui program. In C exista patru tipuri de constante: intreg, real, caracter, sir.

O constanta intreaga este un numar zecimal, octal sau hexazecimal care reprezinta o valoare intreaga pozitiva. Daca se doresc si reprezentari ale unor numere intregi negative se adauga semnul minus in fata constantei respective.

Constantele intregi zecimale sunt numere intregi scrise in baza (de exemplu: 38,6496), constantele octale sunt numere in baza care incep, pentru identificare, cu cifra zero (de exemplu: ), iar constantele hexazecimale sunt numere in baza care incep pentru identificare cu caracterele 0x (de exemplu: 0xA3,0xBC1,0x7E31

Constantele reale sunt numere reale pozitive. Pentru a reprezenta valori reale negative se plaseaza semnul minus in fata constantei. Semnul minus este tratat ca operator aritmetic. Exista doua modalitati de reprezentare o constantelor reale: in format F (cu punct zecimal) si in format exponential (forma stiintifica).

Reprezentarea in format F este reprezentarea uzuala pentru numere reale. De exemplu, constantele ,-4296.823, .69 sunt valori reale reprezentate in format F. Se observa ca partea intreaga a reprezentarii poate sa lipseasca atunci cand este egala cu zero ( este tot una cu

O constanta reala in format exponential are forma generala:

numar simbexp valexp

unde

·   &nbs 212d32c p;   &nbs 212d32c p;  numar este o constanta intreaga sau o constanta reala in format F

·   &nbs 212d32c p;   &nbs 212d32c p;  simbexp este E sau e

·   &nbs 212d32c p;   &nbs 212d32c p;  valexp este o constanta intreaga pozitiva precedata sau nu de semnele sau

·   &nbs 212d32c p;   &nbs 212d32c p;  grupul simbexp valexp se interpreteaza ca fiind egal cu valexp

Remarca. In realitate intre numar simbexp valexp nu apar spatii. De exemplu, numerele reale: se scriu, respectiv: 1.6E+3,-2.6E-4, 0.32e+6,423E+04.

O constanta caracter este o litera, cifra, semn de punctuatie sau secventa escape cuprinse intre doua apostrofuri. Exemplu de constante caracter: 'a','tn','t'','7' reprezentand respectiv a,newline, apostrof,7

O constanta sir este o secventa de litere, cifre si simboluri incluse intre ghilimele. Exemple de constante sir: "tn Acesta e un sir", "Str. Cameliei, nr.3" etc.. Constantele sir se memoreaza in octeti consecutivi (un octet pentru fiecare caracter). Sfarsitul sirului este marcat de un octet nul (care contine 't0') ce se adauga automat. Din acest motiv un sir cu n caractere ocupa n+1 octeti consecutivi.

Operatori

Operatorii reprezinta combinatii de semne speciale care arata modalitatea de prelucrare sau atribuire a valorilor. Limbajul C poseda o bogata familie de operatori, fapt ce permite elaborarea unor programe compacte.

In Tabelul 11.5 prezentam lista operatorilor C si semnificatia lor.

Tabelul 11.5    Lista operatorilor C si semnificatia lor

Operator

Semnificatie

ai

paranteze drepte (stanga si dreapta)

paranteze rotunde (stanga si dreapta)

membru structura

referinta indirecta la membru de structura

incrementare (prefix sau postfix)

decrementare (prefix sau postfix)

sizeof

dimensiunea unei variabile sau unui tip in octeti

A

NOT pe bit

NOT logic

&

adresa, +I pe bit

indirectare, inmultire

impartire

adunare

scadere, negatie aritmetica

<<

deplasare logica pe bit la stinga

>>

deplasare logica pe bit la dreapta

ss

egalitate

!s

neegalitate

<

mai mic

>

mai mare

<s

mai mic sau egal cu

>s

mai mare sau egal cu

SAU exclusiv pe bit

SAU pe bit

&&

+I logic

SAU logic

operator conditional

s

atribuire simpla

ops

atribuire compusa

modul

virgula (operator de secventiere)

Observatie Caracterul op de la atribuirea compusa poate fi unul din semnele * / % + - >> << ê& ^ rezultand corespunzator operatorii compusi *s /s %s +s -s >>s <<s ês &s ^s.

Intre semnele care alcatuiesc un operator compus nu trebuie sa existe spatiu. De exemplu, operatorul >s nu poate fi utilizat sub forma > s De la regula de mai sus face exceptie operatorul conditional (?:) care are alta interpretare.

Semne de punctua|ie

Semnele de punctuatie folosite in C sunt: # : AI

Utilizarea lor va fi exemplificata pe parcursul lucrarii.

Simboluri speciale

Orice simbol care nu apartine alfabetului C este considerat atom lexical. Astfel de semne sunt: si Ele pot fi folosite in constructia constantelor caracter si a sirurilor. Ca exemplu, consideram constanta sir "Am folosit semnul @ in FoxPro"

Atomii lexicali sunt separati in cadrul programului prin simboluri ale alfabetului cu rol de separator. Separatorii sunt: spatiul, tabul (orizontal si vertical), sfarsit de linie, sfarsit de pagina, comentariu. Prin comentariu se intelege orice succesiune de simboluri cuprinse intre si . Comentariile nu sunt luate in considerare de compilator, ele servesc la documentarea programului usurand intelegerea si depanarea lui. Un comentariu poate fi plasat oriunde in program si se poate intinde pe unul sau mai multe randuri.

Exemplu:

Acest program calculeaza produsul a doua matrici. Matricile de intrare A(4x3) si B(3x2) se citesc de la tastatura, iar matricea produs rezultata este C(4x2).

Comentariile nu pot fi imbricate (incluse unul in altul). De exemplu, urmatoarea constructie este eronata:

/* Un comentariu care include

/* un comentariu inclus */

Modul in care sunt aranjati atomii lexicali intr-un program este impus de specificul problemei si de regulile de sintaxa ale limbajului.

TESTE DE CONTROL

Un identificator este:

a)   &nbs 212d32c p;  o secventa de cifre, liniute de subliniere si litere

b)   &nbs 212d32c p;  o secventa de cifre, liniute de subliniere si litere, primul caracter din secventa fiind obligatoriu liniuta de subliniere sau litera

c)   &nbs 212d32c p;  o secventa de cifre, litere, spatii, liniute de subliniere

In C un identificator poate fi scris:

a)   &nbs 212d32c p;  numai cu litere mici

b)   &nbs 212d32c p;  numai cu litere mari

c)   &nbs 212d32c p;  combinat, cu litere mici si litere mari

Daca intr-un identificator C se inlocuieste o litera mica (mare) cu litera sa omoloaga mare (mica) atunci:

a)   &nbs 212d32c p;  identificatorul obtinut este considerat identic cu primul

b)   &nbs 212d32c p;  se obtine un identificator diferit

In C exista:

a)   &nbs 212d32c p;  patru tipuri de constante: intregi, reale, caracter, sir

b)   &nbs 212d32c p;  patru tipuri de constante: naturale, reale, complexe, caracter

c)   &nbs 212d32c p;  cinci tipuri de constante: intregi, reale, complexe, caracter, sir

In C secventa de cifre este interpretata ca:

a)   &nbs 212d32c p;  o constanta in baza

b)   &nbs 212d32c p;  o constanta in baza

c)   &nbs 212d32c p;  o constanta in baza

Secventa de caractere 0xABC poate fi:

a)   &nbs 212d32c p;  un identificator

b)   &nbs 212d32c p;  o constanta hexazecimala

c)   &nbs 212d32c p;  si una si alta

Cuvintele cheie:

a)   &nbs 212d32c p;  au semnificatii date de programator

b)   &nbs 212d32c p;  au semnificatii prestabilite

c)   &nbs 212d32c p;  au semnificatii date de contextul in care sunt utilizate

Despre constantele reale 3.0E si se poate afirma ca:

a)   &nbs 212d32c p;  sunt gresite deoarece contin punct in loc de virgula

b)   &nbs 212d32c p;  sunt corecte si reprezinta valori diferite

c)   &nbs 212d32c p;  sunt corecte si reprezinta aceeasi valoare

d)   &nbs 212d32c p;  sunt gresite deoarece prima contine litera E, iar a doua nu are parte intreaga

Secventa 'a' reprezinta:

a)   &nbs 212d32c p;  un sir

b)   &nbs 212d32c p;  un caracter

Secventa

'Citirea matricii A'

reprezinta

a)   &nbs 212d32c p;  un sir

b)   &nbs 212d32c p;  un comentariu

c)   &nbs 212d32c p;  nici una, nici alta

Constructiile

'a'

si

"a"

a)   &nbs 212d32c p;  reprezinta acelasi lucru

b)   &nbs 212d32c p;  reprezinta un sir, respectiv un caracter

c)   &nbs 212d32c p;  reprezinta un caracter, respectiv un sir

RASPUNSURI

11.1-b 11.2-c 11.3-b 11.4-a 11.5-b

11.6-b 11.7-b 11.8-c 11.9-b 11.10-c

11.11-c



Document Info


Accesari: 8572
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2024 )