d

18
S e m i n a r 9 Limbajul C & Matrice – part. II I. Aspecte teoretice 1. Software folosit la seminar: Visual Studio 2010. Alt compilator pentru rularea programelor: Dev C++ http://dev-c.soft32.com/free-download/?lp=dsa&tg=ro&kw=_cat %3Asoft32.com&mt=b&ad=33378748619&pl=&ds=s Exemplu de program C: #include <stdio.h> /* contine declaratiile functiilor de intrare/iesire */ #include <conio.h> int main() /* program principal */ { int i; printf("Introduceti un nr:"); scanf("%d",&i); /* citire numar introdus la tastatura */ printf("%d", i); /* afișare număr citit */ getch(); /*asteapta o tasta pentru a inchide fereastra in care au fost afisate datele*/ return 0; } 1

description

Matrici

Transcript of d

S e m i n a r 9Limbajul C & Matrice part. II

I. Aspecte teoretice

1. Software folosit la seminar: Visual Studio 2010.

Alt compilator pentru rularea programelor: Dev C++http://dev-c.soft32.com/free-download/?lp=dsa&tg=ro&kw=_cat%3Asoft32.com&mt=b&ad=33378748619&pl=&ds=sExemplu de program C:#include /* contine declaratiile functiilor de intrare/iesire */#include

int main() /* program principal */{ int i; printf("Introduceti un nr:"); scanf("%d",&i); /* citire numar introdus la tastatura */ printf("%d", i); /* afiare numr citit */ getch(); /*asteapta o tasta pentru a inchide fereastra in care au fost afisate datele*/ return 0;}

1. Generalitati

Tipurile de date n C

Dup modul de alocare a memorieiDup numrul de valori memorateTipuri existente

StaticeSimplentregi

Reale

Caracter

StructurateMasiv

Articol

Fiier

DinamiceSimplePointer

Referin

Tipuri simple, predefiniteGrupa de datTipulLungime(octei)Domeniu de valoriMod de reprezentare

ntregunsigned char10..255 (0..28-1)Codul ASCII al caracterului. Poate fi prelucrat ca un caracter sau ca un ntreg cu/fr semn.

[signed] char1-128..127 (-27..27-1)

unsigned [int]20..65535Virgul fix aritmetic

[signed] [int]2-32768..32767Virgul fix algebric

unsigned long40..232-1Virgul fix aritmetic

[signed] long [int]4-231..231-1Virgul fix algebric

Realfloat43.4*10-38..3.4*1038Virgul mobil simpl precizie

double81.7*10-308.. 1.7*10308Virgul mobil dubl precizie

long double103.4*10-4932..3.4*104932Virgul mobil extra precizie

Expresii

Operatorii de atribuire

Operatorii aritmetici

Operatorii logici i relaionali

Operatorii la nivel de bit

Operatorul virgul

Operatorul de conversie explicit

Operatorul dimensiune

Operatorii paranteze

Operatorul condiional

Semnificaie operaieOperator

Schimbare semn-

Pstrare semn (nici un efect, nu este folosit)+

Decrementare (post sau pre)--

Incrementare (post sau pre)++

Adunare+

Scdere-

nmulire*

mprire/

mprire ntreag (ctul)/

mprire ntreag (restul)%

Semnificaie operaieOperator

Negare!

i logic&&

Sau logic||

Sau exclusiv logicNu exist

Semnificaie operaieOperator

Mai mare>

Mai mare sau egal>=

Mai mic0) {

Printf (mesaj);

}

c) DO-WHILE

do statement while (condition);

Exemplu:

do {

------// corp instructiuni

} while (n != 0);

d) FOR

forma general:

for (expresion1; expresion2; expresion3) statement;

Un caz particular al lui for este:

for (initialization; condition; increase) statement;

e) SWITCH - structura alternativ multipl ce permite alegerea unei instruciuni dintr-un grup, in funcie de valorile pe care le poate lua un selector

switch (expresie)

{ case c_1: instruciune_1;

case c_2: instruciune_2;

....

case c_n: instruciune_n;

[default: instructiuni;]} Exemplu:

char litera;

printf (Tastati o litera intra a si c);

scanf (%c, &litera);

switch (litera)

{case a:

case A: printf (litera a sau A); break;

case b:

case B: printf (litera b sau B); break;

case c:

case C: printf (litera c sau C); break;

defaul: printf (ati tastat alta litera;

}9. Descriptori de formatFunctiile de intrare / iesire cu format cu urmatoarea structura a parametrilor:(, )

Fiecrui element din lista de intrare/ieire a operaiei de citire/scriere trebuie s-i corespund un descriptor de format n irul descriptor. Descriptorii de format se pun n coresponden cu elementele listei de intrare/ieire de la stnga la dreapta.Exemplu:

.......

int a,b:

printf(nr1 = %i, nr2 = %i, a, b);

.......

Tabel Semnificaia codurilor de conversie

Nr.crt.Cod conversieSemnificaieObservaii

1dZecimal cu semn (int)ntregi

2iZecimal cu semn (int)ntregi

3ooctal fr semn (int)ntregi

4uZecimal far semn (int)ntregi

5xprintf: hexazecimal fara semn (int) litere mici

scanf: hexazecimal (int) ntregi

6Xprintf: hexazecimal fara semn (int) litere mariscanf: hexazecimal (int)ntregi

7fVirgul mobil [-]dddd.ddd (format matematic)virgul mobil

8eVirgul mobil [-]d.ddd.e[+/-] (format tiinific)virgul mobil

9gCa i f sau e, depinde de precizievirgul mobil

10ECa i e, utilizeaz litera E pentru exponentvirgul mobil

11GCa i g, utilizeaz litera E pentru exponentvirgul mobil

12cImprim un singur caracterntregi

13sImprim caractere pnla \0 (NULL) iruri

14l sau LPoate s precead descriptorii d,o,x sau u, caz in care se face conversia din int spre long; dac precede descriptorul f, se face conversie din float spre doublentregi

15%Caracterul %%%=>%

10. Funcii de scriere/citire cu format

Operaiile de citire/scriere cu format, se realizeaz folosind urmtoarele funcii din biblioteca stanfard stdio.h: printf si scanfa) funcia printf

printf(, , ...);- apelul funciei transfer valori care vor fi afisate- execut scriere datelor pe unitatea de ieire (implicit pe monitor)

- returneaz caracterele afiate in caz de succes i -1 in caz de eroare

- parametrul poate conne caractere care se afiseaz ca atare i descriptori de format care definesc conversiile care se aplic asupra obiectelor precizate. - n irul ce definete formatul pot fi incluse secvene escape constituite din caracterul backslash si un alt catacter (de ex. \n, \t, \a, etc)Exemple:

1. printf (abc);

printf (%s, abc);Se va afisa acelai lucru

abc

abc

2. n=10; printf (Numarul este: \n %d , n);

...

Se va afisa:

Numarul este:

10b) funcia scanf

scanf(, , ...);

- apelul funciei transfer adrese ale variabilelor ale cror valori se vor citi- funcia execut citirea datelor de la unitatea standard de intrare (implicit tastatur) si returneaz campurile corect procesate- poate conine, n afara codurilor de conversie, caractere care vor trebui introduse ca atare de la tastatur n cadrul cmpului respectiv (ex: daca sirul descriptor conne x=%d, atunci de la tastatur trebuie introdus x=)Exemple:

scanf (%i %i, &x, &y) -> numere separate prin spatiu

scanf (%i ,%i, &x, &y) -> numere separate prin virgula

11. Functia getch

- funcia getch() este definit in biblioteca conio.h si este destinat citirii de la tastatura a unui caracter ns fr ecou;- nu are parametrii;

- returneaza codul ascii al caracterului citit;Folosirea acestei funcii poate reprezenta o soluie pentru a vizualiza rezultatele afisate pe ecran. Aplelarea funciei se realizeaz fr ecou pe ecran, astfel nct se va atepta apsarea unei taste pentru nchiderea ferestrei in care au fost afiate rezultatele (consola).II. Probleme

1. Scrieti programul C care numara cate elemente negative sunt intr-un vector. Exemplu:

Dati lungimea vectorului:4

p[0]= -1

p[1]= -2

p[2]= 3

p[3]= 4

rezNumarare = 2

Indicatii:

a) se vor include bibliotecile:

#include

#include

b) in functia main:

- declarari de variabile

int p[10];

int i,n, rezNumarare;

-se citesc datele de intrare

printf("Dati lungimea vectorului:");

scanf ("%d", &n);

for (i=0;i