organizarea datelor · • locația este organizată prin precizările din program, date de...

19
Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro LABORATOR 4 Organizarea datelor Instrucțiuni intrare/ieșire

Upload: others

Post on 22-Dec-2019

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Organizarea datelor · • locația este organizată prin precizările din program, date de utilizator, • DAR FOLOSIND TIPURILE FUNDAMENTALE • Memorarea în cazurile în care

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

LABORATOR 4

Organizarea datelor

Instrucțiuni intrare/ieșire

Page 2: Organizarea datelor · • locația este organizată prin precizările din program, date de utilizator, • DAR FOLOSIND TIPURILE FUNDAMENTALE • Memorarea în cazurile în care

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Cuprins • Tipuri de date

• Variabile globale, variabile locale

• Adresare directă/indirectă

• Funcții de intrare/ieșire

• Operatori/prioritatea operațiilor

• Exerciții propuse

Page 3: Organizarea datelor · • locația este organizată prin precizările din program, date de utilizator, • DAR FOLOSIND TIPURILE FUNDAMENTALE • Memorarea în cazurile în care

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Tipuri de date în C

• După locul de declarare

• Globale

• Locale

• Variabile care memorează o singură valoare

Tip variabilă C Nr. octeți

(bytes) Limita inferioară Limită superioară Utilizare

char 1 -128 127 Caractere sau numere

unsigned char 1 0 255 Numere mici pozitive

short int 2 -32768 +32767 Numere întregi

unsigned short int 2 0 65536 Numere întregi pozitive

(long) int 4 -2^31 +2^31-1 Numere întregi foarte mari

float 4 -3.2*10^38 3.2*10^38 Numere reale

double 8 -1.7*10^308 1.7*10^308 Numere reale foarte mari

void 0 - - Nici un tip

Page 4: Organizarea datelor · • locația este organizată prin precizările din program, date de utilizator, • DAR FOLOSIND TIPURILE FUNDAMENTALE • Memorarea în cazurile în care

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Tipuri de date în C • Memorarea unei informații cu mai mulți parametri - nr complexe (struct)

• locația este organizată prin precizările din program, date de utilizator,

• DAR FOLOSIND TIPURILE FUNDAMENTALE

• Memorarea în cazurile în care dorim să păstram valorile succesive ale unei

variabile - de ex. măsurarea experimentală a unui parametru – arii de date.

• Condiția: sunt toate valori de același tip fundamental

• După modul de adresare :

• directă - variabile locale statice; prezentate anterior

• indirectă – pointeri

Page 5: Organizarea datelor · • locația este organizată prin precizările din program, date de utilizator, • DAR FOLOSIND TIPURILE FUNDAMENTALE • Memorarea în cazurile în care

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Funcții standard de citire-scriere Functii de citire-scriere caractere individuale:

getchar()

putchar()

getch()

putch()

Functii de citire-scriere linii de text:

gets()

puts()

Page 6: Organizarea datelor · • locația este organizată prin precizările din program, date de utilizator, • DAR FOLOSIND TIPURILE FUNDAMENTALE • Memorarea în cazurile în care

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Afișare int printf (const char *format, ... );

TYPE Format

char %c, %d

int %d

unsigned int %u

long int %lu

unsigned long %lu

float %f %g %e %E

double %lf %lg %le %lE

long double %Lf %Lg %Le %LE

http://www.cplusplus.com/reference/cstdio/printf/

%[flags][width][.precision]specifier

flags:

- Aliniere la stânga corespunzător dimensiunii câmpului

– dat de width. Alinierea la dreapta este implicită.

+ Forțează apariția semnului valorii (+ or -) chiar pentru

numerele pozitive. Implicit, numai numerele negative vor

fi afișate precedate de semn.

0 completarea cu zerouri la stânga.

# utilizat cu %x, %X sau %o va preceda valoarea cu

simbolul bazei numerice respective

width: număr total de caractere pentru afișare

precision: pentru datele de tip float/double – numărul de

zecimale

Page 7: Organizarea datelor · • locația este organizată prin precizările din program, date de utilizator, • DAR FOLOSIND TIPURILE FUNDAMENTALE • Memorarea în cazurile în care

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Citire int scanf (const char *format, ... );

TYPE Format

char %c, %d

int %d

unsigned int %u

long int %lu

unsigned long %lu

float %f %g %e %E

double %lf %lg %le %lE

long double %Lf %Lg %Le %LE

Citește datele de la intrarea standard, le formatează

conform formatului impus și apoi le salvează la

adresele primite ca argumente.

Funcția returnează numărul conversiilor executate

cu succes

http://www.cplusplus.com/reference/cstdio/scanf/

Page 8: Organizarea datelor · • locația este organizată prin precizările din program, date de utilizator, • DAR FOLOSIND TIPURILE FUNDAMENTALE • Memorarea în cazurile în care

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Conversii de tip (CAST)

• Pe parcursul execuției unui program valorile variabilelor se pot schimba:

– explicit :

– implicit:

Page 9: Organizarea datelor · • locația este organizată prin precizările din program, date de utilizator, • DAR FOLOSIND TIPURILE FUNDAMENTALE • Memorarea în cazurile în care

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Operații

• Operatori aritmetici – atribuire a = b

– adunare a + b

– scădere a – b

– înmulțire a * b

– împărțire a / b

– modulo (rest) a % b

– Increment - Prefix ++a

- Sufix a++

– Decrement - Prefix --a

- Sufix a--

++5 --(k+1) ++i++

Se pot aplica numai asupra

L-valorilor

Page 10: Organizarea datelor · • locația este organizată prin precizările din program, date de utilizator, • DAR FOLOSIND TIPURILE FUNDAMENTALE • Memorarea în cazurile în care

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Operații

• Operatori relaționali – egalitate a == b

– inegalitate a != b

– mai mare a > b

– mai mic a < b

– mai mare egal a >= b

– mai mic egal a <= b

• Operatori logici – Negație (NOT) !a

– ȘI logic a && b

– SAU logic a || b

a b !b a||b a&&b

0 0 1 0 0

0 1 0 1 0

1 0 1 1 0

1 1 0 1 1

Page 11: Organizarea datelor · • locația este organizată prin precizările din program, date de utilizator, • DAR FOLOSIND TIPURILE FUNDAMENTALE • Memorarea în cazurile în care

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Operații

• Operatori la nivel de bit – Negare bit cu bit ~a

– ȘI bit cu bit a & b

– SAU bit cu bit a | b

– SAU exclusiv pe bit a ^ b

– Mutare la stânga a << b

– Mutare la dreapta a >> b

a b ~a a&b a|b a<<1 b>>1

001 101 110 001 101 0010 10

011 110 100 010 111 0110 11

101 000 010 000 101 1010 00

111 010 000 010 111 1110 01

Page 12: Organizarea datelor · • locația este organizată prin precizările din program, date de utilizator, • DAR FOLOSIND TIPURILE FUNDAMENTALE • Memorarea în cazurile în care

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Operații

• Operatori aritmetici prescurtați – adunare a += b ( a+=b+3 a=a+(b+3) )

– scădere a -= b

– multiplicare a *= b ( a*=b+3 ????)

– împărțire a /= b

– Modulo a %= b

– AND pe bit a &= b

– OR pe bit a |= b

Page 13: Organizarea datelor · • locația este organizată prin precizările din program, date de utilizator, • DAR FOLOSIND TIPURILE FUNDAMENTALE • Memorarea în cazurile în care

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Reguli de precedenţă

Operator Asociativitate

( ) ++ - - (sufix) Left-to-right

++ -- (prefix) ! ~ Right-to-left

* / % Left-to-right

+ - Left-to-right

< <= > >= Left-to-right

== != Left-to-right

&& || Left-to-right

?: Right-to-left

= += -= *= /= %= Right-to-left

Page 14: Organizarea datelor · • locația este organizată prin precizările din program, date de utilizator, • DAR FOLOSIND TIPURILE FUNDAMENTALE • Memorarea în cazurile în care

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Exerciții propuse 1. Realizați un program care să afişeze codul ASCII al unui caracter citit de la tastatură (citirea se va face cu scanf() SAU getch() ).

2. Scrieţi un program care va afişa valoarea vitezei medii [km/h] citindu-se cu scanf() distanţa parcursă [km] şi timpul total [h]. Afişaţi şi în [m/s].

v[km/h] = d[km] / t [h]

Page 15: Organizarea datelor · • locația este organizată prin precizările din program, date de utilizator, • DAR FOLOSIND TIPURILE FUNDAMENTALE • Memorarea în cazurile în care

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Exerciții propuse 3. Implementați următoarea interfață de interacțiune cu utilizatorul : >>>>>> Note Bacalaureat <<<<<<<<

Introduceți nota la Matematică: (citire nota)

Introduceți nota la Lb. Română: (citire nota)

Introduceți nota la Lb. Străină: (citire nota)

Introduceți nota la Măsurări Electrice: (citire nota)

Introduceți nota la Geografie: (citire nota)

>>>>>>> Situația Școlară <<<<<<<<<

Introduceți media generală la Matematică: (citire medie)

Introduceți media generală la Fizică: (citire medie)

Introduceți media generală a disciplinelor tehnice: (citire medie)

>>>>>> Sinteza rezultatelor obținute <<<<<<<

Media Examenului de Bacalaureat : (afișare medie)

Media de Admitere la Facultate : (afișare medie)

Abilități de comunicare : (afișare medie)

>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<

Page 16: Organizarea datelor · • locația este organizată prin precizările din program, date de utilizator, • DAR FOLOSIND TIPURILE FUNDAMENTALE • Memorarea în cazurile în care

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Exerciții propuse 4. Realizați programul care implementează următorul pseudocod:

program operații matematice

citire a, b, c

afișare a, b, c

d = a + b * c

e = (d – b)/(a+d)

f = d * d ^ e – e ^ a // pow(d,e) – biblioteca math.h

citire x, y

afișare x, y

z = y

y = x

x = z

afișare x, y

afișare d, e, f

sfârșit program

Page 17: Organizarea datelor · • locația este organizată prin precizările din program, date de utilizator, • DAR FOLOSIND TIPURILE FUNDAMENTALE • Memorarea în cazurile în care

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Exerciții propuse 5. Scrieți un program care citește 5 numere de la tastatură și le afișează în ordinea în care au fost citite cât și în ordine inversă. Afişaţi adresele primului şi ultimului număr. (vezi C3-23)

6. Implementați un program care calculează timpul de umplere cu lichid al unui rezervor cilindric, cu un volumul specificat in metri cubi, prin intermediul unei conducte cu diametru si debit cunoscut.

În câte secunde va ajunge rezervorul la 50% din capacitate, dacă din el este extras lichid prin aceiași conductă cu un debit de 20 litri/secundă ?

Page 18: Organizarea datelor · • locația este organizată prin precizările din program, date de utilizator, • DAR FOLOSIND TIPURILE FUNDAMENTALE • Memorarea în cazurile în care

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Exerciții propuse 7. Implementați un program care realizează citirea unei valori reprezentând capacitatea de stocare a unui hard disk, exprimată în giga octeți și afișează această valoarea în mega octeți și tera octeți.

8. Realizați un program care calculează timpul de transfer a unui fișier de date cu dimensiune cunoscută, specificată în mega octeți, între două calculatoare prin intermediul unei conexiuni LAN Full Duplex de viteză 100Mbps.

Page 19: Organizarea datelor · • locația este organizată prin precizările din program, date de utilizator, • DAR FOLOSIND TIPURILE FUNDAMENTALE • Memorarea în cazurile în care

Programarea Calculatoarelor şi Limbaje de Programare www.infopuc.ro

Exerciții propuse 9. Scrieți un program care citește de la tastatură un număr <= 15 și afișează valoarea sa în binar (indicație: folosiți operatorii /2 și %2).

10. Considerând bancnotele 10, 5 şi 1 RON scrieţi un program care va calcula numărul optim de bancnote necesare pentru restituirea unei anumite sume citite de la tastatură.

(ex. 78 = 7 *10 + 1 * 5 + 3 * 1)