Home - Rasfoiesc.com
Educatie Sanatate Inginerie Business Familie Hobby Legal
Doar rabdarea si perseverenta in invatare aduce rezultate bune.stiinta, numere naturale, teoreme, multimi, calcule, ecuatii, sisteme




Biologie Chimie Didactica Fizica Geografie Informatica
Istorie Literatura Matematica Psihologie

Informatica


Index » educatie » Informatica
» Operatori - Programare procedurala


Operatori - Programare procedurala


Programare procedurala

Operatori

Operatori aritmetici:



Tip

Operator

Observatii

Unari

Determina semnul operatorului

Operatori de incrementare respectiv decrementare.

Aplicarea operatorului inaintea variabilei are ca rezultat intai incrementarea variabilei, apoi utilizarea acesteia. Exemplu: pentru x=3 in urma instructiunii y=++x; se obtine: y=4, x=4

Aplicarea operatorului ++ (--) dupa variabila are ca rezultat intai utilizarea variabiulei si apoi incrementarea. Exemplu: pentru x=3 in urma instructiunii y=++x; se obtine: y=3, x=4

Binari

Pentru tipuri de date intregi, reprezinta impartirea intreaga (echivalentul lui DIV din Pascal)

Se utilizeaza pentru tipuri intregi si reprezinta restul impartirii unui numar la altul (echivalentul lui MOD din Pascal)

Expresia x+=y este echivalenta cu x=x+y

Operatori relationali: <, >, <= (mai mic sau egal), >= (mai mare sau egal), (egalitate), (diferit).

Operatori logici:

Tip

Operator

Observatii

Unari

Negare.

Daca x este nenul, !x=0

Daca x este !x=1;

Binari

&&

Operatorul "si" logic.

x&&y este 1 daca si numai daca si x si y sunt nenuli.

x&&y este 0 daca sau x sau y este nul

Operatorul "sau" logic.

x||y este 1 daca si numai daca cel putin unul dintre operanzi este nenul

x||y este 0 daca si numai daca ambii operanzi sunt 0

Operatori logici pe biti:

Sunt aplicabili numai pentru tipuri intregi (int, unsigned int, char, unsigned char, etc.).

Operatorii logici pe biti opereaza asupra reprezentarii binare a numerelor. Pentru exemplificare consideram urmatoarele variabile date pe 8 biti a b (cu valori de la 0 la 255).

a=(0,0,0,0,0,1,1,1) si are valoare 7

b=(0,0,0,0,1,0,1,1) si are valoarea 11.

Tip

Operator

Observatii

Unar

Negare pe biti

~a=(1,1,1,1,1,0,0,0)

~b=(1,1,1,1,0,1,0,0)

Binari

&

Operatorul "si" logic pe biti.

a&b=(0,0,0,0,0,0,1,1)

Operatorul "sau" logic pe biti.

a|b=(0,0,0,0,1,1,1,1)

Operatorul sau exclusiv. Rezultatul este 1 daca si numai daca unul dintre operanzi este 1 si celalalt 0.

a^b=(0,0,0,0,1,1,0,0)

<<

Deplasare (shift-are) la stanga pe biti.

a<<1=(0,0,0,0,1,1,1,0)=14

b<<2=(0,0,1,0,1,1,0,0)=44

>>

Deplasare (shift-are) la derapta pe biti.

a<<1=(0,0,0,0,0,0,1,1)=3

b<<2=(0,0,0,0,0,0,1,0)=2

Observatii

Operatiile la nivel de bit nu modifica valoarea operanzilor. Prin instructiunea x<<3; nu se modifica valoarea lui x. Daca dorim acest lucru trebuie utilizata instructiunea x=x<<3;

Daca o variabila este de tip intreg cu semn (int, char) atunci primul bit din stanga reprezinta semnul variabilei si nu se modifica prin deplasare (<< sau >>

Exemple

Suma a doua numere intregi folosind ^ si & pe biti

#include<stdio.h>

void main()

printf("suma=%d",suma);

Interschimbarea a doua variabile fara utilizarea unei variabile auxiliare:

#include<stdio.h>

void main()

Operatorul de decizie ternar alcatuit din operatorii ? si :

expresie_1 ? expresie _2 : expresie_3

Daca expresie_1 are valoare nenula atunci valoarea expresiei conditionale ia valoarea expresie_2, altfel ia valoarea expresie_3

Exemplu: maximul a doua numere

#include<stdio.h>

void main()

Operatorul sizeof: are ca rezultat numarul de octeti utilizati pentru memorarea rezultatului evaluarii unei expresii:

Exemple sizeof(int) = 4

sizeof(char) = 1

sizeof(1.5) = 8 (dimensiunea in unei var de tip double)

sizeof('a') = 1

Prioritatea (precedenta) operatorilor:

Rezultatul operatorilor dintr-o expresie aritmetica / logica se evalueaza intr-o anumita ordine data de precedenta acestor operatori. Operatorii cu cea mai mare prioritate sunt evaluati mai intii. In tabelul urmator este prezentata precedenta operatorilor numerotata de la 1 (precedenta maxima) la 14 (precedenta minima).

->   .  

Paranteze, operatorii pentru membrii de structuri/obiecte

unar unar) * & sizeof type cast ++x --x

(majoritatea) operatorilor unari,

Inmultirea, impartirea, modulo

Adunarea si scaderea

<< >>

Deplasare pe biti la stanga si dreapta

< <= > >=

Operatorii de comparatie mai mic, mare

Comparatie: egal, diferit

&

"Si" pe biti

XOR ("sau" exclusiv) pe biti

"sau" pe biti

&&

"si" logic

"sau" logic

Operatorul conditional ternar

= += -= *= /= %= &= |= ^= <<= >>=

Operatorii de atribuire

Execitii si probleme

Care dintre urmatoarele expresii sunt adevarate daca si numai daca numarul intreg x este impar negativ?

a)  (x%2==1) && (x<0)

b)  (x%2!=0) || (x<0)

c)  !((x%2==0) || (x>=0))

d)  !((x%2==0) && (x>=0))

e)  x%2=1 && x<0

Se considera x, y si z variabile intregi. Care dintre urmatoarele expresii are valoarea diferita de 0 daca si numai daca y=max(x,y,z)

a)  x>z?y>=x?1:0:y>=z?1:0

b)  !(y<x || y<z)

c)  !(y<x && y<z)

d)      x>z && y>x || z>x && y>z

Pentru a atribui variabilei reale x rezultatul expresiei , unde a, b si c sunt variabile reale, se utilizeaza instructiunea:

a)  x = (2*a*b)-(c*c)/0.25;

b)  x = 2*a*b - c*c/0.25;

c)  x = (2*a*b) - (c*c)*4;

d)  x = (2*a*b - c*c)*4;

Sa se scrie un program care sa calculeze minimul dintr-un vector folosind operatorul conditional ternar in locul instructiunii if

Sa se scrie un program care citeste n numere si calculeaza suma celor pozitive si produsul celor negative. Utilizati operatorul conditional ternar.

Fie x un numar natural. Scrieti un program care sa utilizeze operatori logici pe biti asfel incat:

a)      Sa inmulteasca variabila x cu 2n (0 £ n £

b)      Sa imparta variabila x cu 2n (0 £ n £

c)      Sa returneze valoarea 1 daca si numai daca x este impar

d)      Sa aiba returneze 0 daca si numai daca bitul n (0 £ n £ 15) din x este 0.

e)      Sa seteze bitul n (0 £ n £ 15) din x la 1

Scrieti un program care inverseaza bitii unei variabile de tip int si returneaza valoarea obtinuta.

*Afisati forma binara a unui numar x (0 £ x £ 255) utilizand operatii pe biti. (Consideram reprezentarea pe 8 biti). Generalizare pentru orice intreg.

*Scrieti un program care permuta cei n biti ai unu numar n (0 £ x £255) cu o pozitie spre dreapta (folosind operatii pe biti) si afisati in forma binara. (Consideram reprezentarea pe 8 biti).





Politica de confidentialitate





Copyright © 2024 - Toate drepturile rezervate