simultane.Daca memoria d-voastra SIMM este formata din procesoare " de 4
biti"(adica procesoare care pot rula simultan cate 4 bytes),atunci nu
ve-ti putea utiliza variabile declarate ca double sau long,deoarece nu
puteti procesa cate 8 bytes simultan.Acelasi calcul,trebuie facut si
pentru procesorul principal,in caz ca doriti sa efectuati in paralele mai
multe calcule simultane.
Din acest motiv,in etapele initiale ale dezvoltarii limbajului C,apli-
catiile se scriau dedicate unui anumit tip de procesor,sau unei anumite
configuratii de hardware a calculatorului.In etapa actuala,toate calcu-
latoarele de birou comerciale,pot executa operatii complexe ce depasesc
de obicei posibilitatile de conceptie ale programatorului,iar acest gen
de restrictii nu se mai aplica.
Declaratiile pot fi incomplete.Aceasta situatie apare atunci cand o
structura sau o uniune a fost declarata fara membri,sau o arie a fost
declarata fara dimensiune.
EXEMPLE: struct student *ps
char a[ ]
Declaratiile pot fi completate ulterior utilizand acelasi identificator:
struct student
{
int num;
}
sau respectiv:
char a[20];
Pentru a declara tipuri noi de date,sau pentru a utiliza un nume mai
scurt pentru tipurile predefinite,se pot utiliza declaratiile typedef.
In acest caz,declaratorul devine untip nou de date.
EXEMPLU: typedef long double NUMERE[10];
in continuare se vor putea utiliza constructii de genul : const NUMERE
sau volatile NUMERE etc. INSTRUCTIUNI In limbajul C,instructiunile determina modul de executie a programului
(cursivitatea).Ca si in alte limbaje,instructiunile permit formarea de
bucle de repetitie(cicli) sau transferul spre alte instructiuni de exe-
cutie.Principalele instructiuni sunt: break,compuse,continue,do-while,
expression,for,goto,if,null,return,switch,try-except,try-finally si while. Instructiunea break:-termina executia pentru bucla do,for,switch sau
while in care este inclusa si trece controlul la linia urmatoare de cod.
(vezi cuvantul cheie)
Instructiunile compuse:-denumite si blocuri de instructiuni,apar de obicei
incluse intr-o alta instructiune(de exemplu in IF) si executa un sir de
instructiuni succesive(declansate de o anumita conditie).
Daca nu se specifica explicit altfel,atunci toate instructiunile dintr-o
instructiune compusa vor fi considerate de tip auto.Daca o functie este
declarata "extern",nu va putea fi initializata cu valori.Cele de tip
static vor mentine aceeasi valoare la fiecare executie a instructiunii.
-31-
EXEMPLU: if ( i>0 )
{
line[i]=x;
x++;
i--;
}
Instructiunea continue:-transfera controlul la urmatorul pas al unei bucle
de repetitie ingorand comenzile ce urmeaza dupa continue.Cea mai frecventa
utilizare este in cadrul buclelor do,for si while.pentru a determina
continuarea buclei de repetitie fara a mai evalua expresiile ce urmeaza
dupa continue.
EXEMPLU: while ( i-->0 )
{
x= f(i);
if (x==1)
continue;
y+=x*x;
} Instructiunea do-while:-permite repetarea unei comenzi sau a unui grup de
comenzi si instructiuni,pana cand evaluarea expresiei din conditie va
returna valoarea "false".
EXEMPLU: do
{
y=f(x);
x--;
} while (x>0);
in exemplu,y va lua valoarea functiei f(x) iar x va fi decrementat cu
cate o unitate,la fiecare ciclu,atat timp cat x este mai mare decat zero. Instructiunea de tip expresie:-declara o anumita expresie sau operatie. Expresia va fi evaluate si executata in ordinea precedentei operatorilor.
Declaratia care nu contine nici o expresie,poarta numele de declaratie
nula.Fiecare expresie va fi evaluata exhaustiv,inainte de a trece la
expresia urmatoare.
EXEMPLE: x=(y+3) sau x++; sau proc( arg1,arg2); Instructiunea for:-permite repetarea unui ciclu de comenzi,operatii sau
instructiuni,de un anumit numar de ori.Instructiunea for poate fi intre-
rupta prin break,goto sau return.
Sintaxa generala a instructiunii for este:
for( expresia de initializare;expresia conditionala;expresia de bucla)
Executia se va face dupa cum urmeaza:
-se evalueaza expresia de initializare,apoi cea conditionala rezultand
trei variante:1.conditia este adevarata(true) caz in care se evalueaza
expresia de bucla si apoi se executa bucla de comenzi
2.expresia conditionala este omisa,caz in care se considera
implicit ca este adevarata si se trateaza ca si mai sus
3.conditia este evaluata a fi neadevarata(false),caz in
care se intrerupe bucla si controlul trece la urmatoarea linie din program
-32-
EXEMPLU: for( i=space=tab=0; i
{
if (line[i]==' ')
space++;
if (line[i]=='\t')
{
tab++ ;
line[i]=' ';
}
}
instructiunea din exemplu inlocuieste spatiile TAB cu spatii goale,
(comprima spatiile goale) atat timp cat i este mai mic decat MAX.
Dupa fiecare executie,i este incrementat cu o unitate pana cand
ajunge la valoarea maxima(MAX).
Fata de instructiunea FOR din alte limbaje de programare,se observa