forum.stelici.ro

Discutii despre diverse subiecte.
Acum este 24 Feb 2018, 18:37

Ora este UTC + 2 [ DST ]




Scrie un subiect nou Răspunde la subiect  [ 2 mesaje ] 
Autor Mesaj
 Subiectul mesajului: limbajul C
Mesaj necititScris: 03 Iun 2009, 12:04 
Neconectat
Site Admin
Avatar utilizator

Membru din: 14 Mai 2008, 14:49
Mesaje: 1914
Localitate: Iasi
Limbajul C este folosit in programare de la inceputuri, si are calitatea ca, programele realizate in acest limbaj sunt rapide, limbajul C fiind foarte aproape de limbajul de asamblare (limbajul de asamblare foloseste direct instructiunile microprocesorului)
Este ca si cum ai scrie cod in limbaj de asamblare, avind avantajul ca obtinem ceva portabil, inteligibil si mult mai scurt decit lungile programe realizate in asamblare.
Cei care folosesc un limbaj de programare gen Vizual C pentru sistemul de operare Windows, foloseste programarea orientata obiect, si de obicei acestia folosesc mai mult functii complexe gata facute, poate mai complexe decit au ei nevoie... si de asta programele realizate astfel se misca mai greu, sunt mai instabile si putin portabile, insa este mai usor de scris cod.

Mai jos voi trece in revista principalele instructiuni din limbajul C:

Instrucţiunea if

Instrucţiunea if are două formate:

a) if ( expresie )
instrucţiune

b) if ( expresie )
instrucţiune_1
else instrucţiune_2

Efectul ei este următorul:
Se evaluează expresia “expresie”.
Dacă rezultatul expresiei este true se execută în cazul a) instrucţiunea “instrucţiune” şi în cazul b) “instrucţiune_1” şi apoi se trece la instrucţiunea imediat următoare instrucţiunii if.
Dacă rezultatul expresiei este false se trece în cazul a) la instrucţiunea imediat următoare instrucţiunii if, iar în cazul b) se trece la execuţia “instrucţiune_2” şi apoi se trece la instrucţiunea imediat următoare instrucţiunii structurate if.
Observaţii:
a) instrucţiunile “instrucţiune”, “instrucţiune_1”, “instrucţiune_2” pot conţine instrucţiuni de salt la alte instrucţiuni decât cea următoare instrucţiunii if.
b) instrucţiunea if poate conţine alte instrucţiuni if. Trebuie atenţie la îmbinarea lui else, în sensul de a şti la care if aparţine.

Instrucţiunea switch

Instrucţiunea switch are următoarea sintaxă:

switch ( expresie )
{
case C1: sir_instrucţiuni_1;
break;
case C2: sir_instrucţiuni_2;
break;
…...........................................
case Cn: sir_instrucţiuni_n;
break;
default: sir_instrucţiuni
}

Efectul instrucţiunii switch este următorul:
a) se evaluează “expresie”;
b) se compară pe rând rezultatul evaluării cu constantele C1, C2, …, Cn. Dacă rezultatul evaluării coincide cu constanta Ci se executa instrucţiunile “sir_instrucţiuni_i” şi apoi se trece la instrucţiunea imediat următoare switch-ului. Daca rezultatul evaluării nu coincide cu nici una din constantele C1, C2, …, Cn se execută instrucţiunile “sir_instrucţiuni” aflate după “default”.
Observaţii:
a) Alternativa default este opţională. Dacă nu este prezentă, în cazul în care rezultatul expresiei “expresie” nu coincide cu nici o constantă Ci, instrucţiunea switch nu are nici un efect.
b) Dacă break nu este prezentă, atunci se execută şi şirurile de instrucţiuni imediat următoare, până la întâlnirea unei instrucţiuni break sau până la terminarea instrucţiunii switch.
c) Instrucţiunea structurata switch poate fi înlocuită prin instrucţiuni if imbricate.


Instrucţiunea while

Formatul instrucţiunii while este următorul:

while ( expresie )
instrucţiune

Efectul instrucţiunii while este următorul:
a) se evaluează “expresie”;
b) dacă rezultatul este true se execută corpul său (“instrucţiune”) şi se revine la pasul a). Daca rezultatul este false se trece la execuţia instrucţiunii imediat următoare instrucţiunii while.
Observaţii:
a) În cazul în care expresie este false de la început, atunci “instrucţiune” nu se execută niciodată.
b) În cadrul corpului instrucţiunii while este nevoie de existenţa unor instrucţiuni de modificare a variabilelor care intră în “expresie”.

Instrucţiunea for

Formatul instrucţiunii for este următorul:

for ( expr1; expr2; expr3 )
instrucţiune

unde:
- expr1, expr2, expr3 sunt expresii;
- instrucţiune este corpul instrucţiunii.
Descrierea efectului instrucţiunii for, cu ajutorul instrucţiunii while este următorul:

expr1;
while ( expr2 ) {
instrucţiune;
expr3;
}

Observaţie: expr1, expr2, expr3 pot fi vide, însă caracterele “;” nu pot lipsi.


Instrucţiunea do-while

Instrucţiunea do-while este instrucţiunea ciclică cu test final. Formatul ei este următorul:

do
instrucţiune
while ( expresie );

Efectul ei este descris cu instrucţiunea while astfel:

instrucţiune;
while( expresie )
instrucţiune;

Se observă că corpul ciclului se execută cel puţin o dată.



Instrucţiunile continue şi break

Instrucţiunile continue şi break se pot utiliza numai în corpul unui
ciclu.
Instrucţiunea continue abandonează iteraţia curentă şi se trece la execuţia pasului de reiniţializare în cazul instrucţiunii for, respectiv la revalidarea expresiei care stabileşte continuarea sau terminarea ciclului în cazul instrucţiunilor while şi do-while.
Instrucţiunea break termină ciclul şi se trece la instrucţiunea imediat următoare celei repetitive (for, while, do-while).


Instrucţiunea goto

Instrucţiunea goto este utilizată pentru saltul dintr-un punct al unei funcţii (chiar şi dintr-un ciclu) în alt punct al aceleaşi funcţii, respectiv la o instrucţiune etichetată.
Eticheta este un nume urmat de caracterul “:”
nume:
Formatul instrucţiunii goto este:

goto eticheta;
================================================================
Link-uri utile:
Curs Structuri de Date si Algoritmi. PROGRAMAREA CALCULATOARELOR IN LIMBAJUL C
http://www.studentie.ro/Curs_Structuri_de_Date_si_Algoritmi_PROGRAMAREA_CALCULATOARELOR_IN_LIMBAJUL_C--citeste-nr590.html


Raportează acest mesaj
Sus
 Profil  
Răspuns cu citat  
 Subiectul mesajului: Limbajul C - Exemple la gramada
Mesaj necititScris: 26 Ian 2010, 17:49 
Neconectat
Site Admin
Avatar utilizator

Membru din: 14 Mai 2008, 14:49
Mesaje: 1914
Localitate: Iasi
int *a[10]; // un tablou de 10 pointeri la variabile tip intreg
int (*a)[10]; // un pointer la un tablou de 10 tip int
int (*a)(int); // un pointer la o functie care primeste un argument de tip intreg si returmeaza un intreg
int (*a[10])(int);// un tablou de 10 pointeri la functii care primesc ca argument un intreg si returmeaza un int
const int *a; // a este un pointer modificabil la o constanta de tip int.
int * const a; // a este un pointer tip const (nemodificabil) care pointeaza catre o variabila tip int care se poate modifica.
int const * a const; // a este un pointer tip const (nemodificabil) care pointeaza catre o constanta tip int (nemodificabila).

int __flash * a; // a este un pointer variabil care pointeaza catre o variabile de tip int aflat in memoria flash. Variabila a tip pointer se pastreaza in memoria de date.
int __flash a; // a este o variabile de tip int care se afla in memoria flash

int __eeprom * myFunction(int __flash *); Aceasta este declaratia unei functii care are ca paramentru un pointer catre o variabila tip int aflata in memoria flash. Functia returneaza un pointer catre o variabila de tip int aflata in memoria eeprom.

Cuvintul cheie static are urmatorul efect:
- o variabila declarata static in interiorul unei functii, isi mentine valoarea cind este apelata din nou functia
- o variabila declarata static in interiorul unui fisier *.c ,nu in interiorul unei functii, este o variabial globala care este accesibila numai local, adica poate fi accesata numai de functiile definite din acel fisier *.c
- o functie declarata static intr-un fiser *.c poate fi apelata numai de catre o functie care se gaseste in acel fisier *.c

Cuvintul cheie volatile :
O variabila de tip volatile este genul de variabla care se poate poate modifica impredictibil. Compilatorul nu poate face presupuneri despre continutul variabilei, mai exact, optimizatorul din compilator este atentionat (cind o variabila este de tip volatile) sa reincarce valoarea variabilei de fiecare data, nu sa pastreze o copie in registrii microprocesorului.
Variabilele de tip volatile sunt folosite pentru:
- registrii hardware pentru porturile de intrare/iesire
- variabilele folosite in interiorul unei functii de tratare a unei intreruperi
- variabile impartite, folosite de mai multe task-uri in aplicatii cu mai multe fire de executie (aplicatii multi-threaded)

Modificarea unor biti din variabile se poate face in genul urmator:
#define BIT3 (0x1 « 3)
static int a;
void set_bit3 (void)
{
a |= BIT3;
}

void clear_bit3(void)
{
a &= ~BIT3;
}

Accesarea unei locatii fixe din memoria RAM. De exemplu, daca vreau sa scriu la adresa din RAM 0x1234 valoarea 0x9955 :
int *ptr;
ptr = (int *)0x1234;
*ptr = 0x9955;
sau echivalent:
*(int * const)(0x1234) = 0x9955;

http://en.pudn.com/ - cod sursa in C


Raportează acest mesaj
Sus
 Profil  
Răspuns cu citat  
Afişează mesajele din ultimele:  Sortează după  
Scrie un subiect nou Răspunde la subiect  [ 2 mesaje ] 

Ora este UTC + 2 [ DST ]


Cine este conectat

Utilizatorii ce navighează pe acest forum: Niciun utilizator înregistrat şi 1 vizitator


Puteţi scrie subiecte noi în acest forum
Puteţi răspunde subiectelor din acest forum
Nu puteţi modifica mesajele dumneavoastră în acest forum
Nu puteţi şterge mesajele dumneavoastră în acest forum
Nu puteţi publica fişiere ataşate în acest forum

Căutare după:
Mergi la:  
cron
Furnizat de phpBB® Forum Software © phpBB Group
Translation/Traducere: phpBB România