29
G. Amodeo, C. Gaibisso Programmazione di Programmazione di Calcolatori Calcolatori Lezione XI Gli operatori Programmazione di Calcolatori: gli operatori 1

G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione XI Gli operatori Programmazione di Calcolatori: gli operatori 1

Embed Size (px)

Citation preview

Page 1: G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione XI Gli operatori Programmazione di Calcolatori: gli operatori 1

G. Amodeo,C. Gaibisso Programmazione di Programmazione di

CalcolatoriCalcolatori

Lezione XIGli operatori

Programmazione di Calcolatori: gli operatori 1

Page 2: G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione XI Gli operatori Programmazione di Calcolatori: gli operatori 1

G. Amodeo,C. Gaibisso

Operatore &Operatore &

Programmazione di Calcolatori: gli operatori 2

• Sintassi :

&nome_variabile

• Valore:

indirizzo della variabile nome_variabile

• Esempio:int *x;int y;

x = &y;

Page 3: G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione XI Gli operatori Programmazione di Calcolatori: gli operatori 1

G. Amodeo,C. Gaibisso

Operatore *Operatore *

Programmazione di Calcolatori: gli operatori 3

• Sintassi :

*nome_puntatore

• “Valore”:

il nome della variabile il cui indirizzo è memorizzato in nome_puntatore

• Esempio:

y y

int *x, y;y = 1;x = &y;*x = *x+1;

Page 4: G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione XI Gli operatori Programmazione di Calcolatori: gli operatori 1

G. Amodeo,C. Gaibisso

Operatore di assegnamentoOperatore di assegnamento

Programmazione di Calcolatori: gli operatori 4

• Sintassi:

nome_variabile = espressione

• Valore:

è il valore di espressione

• Modifiche allo stato della memoria:

assegna alla variabile nome_variabile il valore di espressione

espressione

Page 5: G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione XI Gli operatori Programmazione di Calcolatori: gli operatori 1

G. Amodeo,C. Gaibisso

Operatore di assegnamentoOperatore di assegnamento

Programmazione di Calcolatori: gli operatori 5

• Attenzione:

il tipo di nome_variabile e quello di espressione “devono” coincidere

Page 6: G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione XI Gli operatori Programmazione di Calcolatori: gli operatori 1

G. Amodeo,C. Gaibisso

Operatore di assegnamentoOperatore di assegnamento

Programmazione di Calcolatori: gli operatori 6

• Esempio:

// sorgente: Lezione_XI\OpAss_1.c// programma che mostra il comportamento// dell'operatore di assegnamento#include <stdio.h>int main ()

{// definizione e inizializzazione delle

variabiliint x, y;

y=2; // visualizza il valore di y assegnandolo // al tempo stesso a x

printf(“\nY: %d”, x=y); // visualizza il valore di x

printf(“\nX: %d”, x);return(1);};

Page 7: G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione XI Gli operatori Programmazione di Calcolatori: gli operatori 1

G. Amodeo,C. Gaibisso

Operatore di assegnamentoOperatore di assegnamento

Programmazione di Calcolatori: le strutture di controllo 7

• Compilazione:

• Esecuzione:

Page 8: G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione XI Gli operatori Programmazione di Calcolatori: gli operatori 1

G. Amodeo,C. Gaibisso

Operatore di assegnamentoOperatore di assegnamento

Programmazione di Calcolatori: gli operatori 8

• Sintassi:

*nome_puntatore = espressione

• Valore:

è il valore di espressione

• Modifiche allo stato della memoria:

assegna alla variabile il cui indirizzo è memorizzato in nome_puntatore il valore di espressione

espressione

Page 9: G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione XI Gli operatori Programmazione di Calcolatori: gli operatori 1

G. Amodeo,C. Gaibisso

Operatore di assegnamentoOperatore di assegnamento

Programmazione di Calcolatori: gli operatori 9

// sorgente: Lezione_XI\OpAss_2.c// programma che mostra il comportamento// dell'operatore di assegnamento#include <stdio.h>int main ()

{// definizione e inizializzazione delle

variabiliint x, y, *punx, *puny;punx=&x; puny=&y;*puny=2;

// visualizza il valore di y assegnandolo // al tempo stesso a x

printf(“\nY: %d”, *punx=*puny); // visualizza il valore di x

printf(“\nX: %d”, *punx);return(1);};

• Esempio:

Page 10: G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione XI Gli operatori Programmazione di Calcolatori: gli operatori 1

G. Amodeo,C. Gaibisso

Operatore di assegnamentoOperatore di assegnamento

Programmazione di Calcolatori: le strutture di controllo 10

• Compilazione:

• Esecuzione:

Page 11: G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione XI Gli operatori Programmazione di Calcolatori: gli operatori 1

G. Amodeo,C. Gaibisso

Aritmetica dei puntatori Aritmetica dei puntatori

Programmazione di Calcolatori: gli operatori 11

• nome_puntatore + espr_intera

• nome_puntatore - espr_intera

valore di nome_puntatore+

(valore di espr_intera*

numero di locazioni allocate per il tipo della variabile riferita)

valore di nome_puntatore-

(valore di espr_intera*

numero di locazioni allocate per il tipo della variabile riferita)

Page 12: G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione XI Gli operatori Programmazione di Calcolatori: gli operatori 1

G. Amodeo,C. Gaibisso

Aritmetica dei puntatoriAritmetica dei puntatori

Programmazione di Calcolatori: gli operatori 12

• Esempio:

int *B, *C;

2834

2835

2836

2837

2838

2839

2840

2841

2842

2843

2844

2855

x

A3xxxx

Bx

Cxx

2839

B = &A;

C = B+2;

2847

Page 13: G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione XI Gli operatori Programmazione di Calcolatori: gli operatori 1

G. Amodeo,C. Gaibisso Operatore di auto-incremento Operatore di auto-incremento

prefissoprefisso

Programmazione di Calcolatori: gli operatori 13

• Sintassi:

++nome_variabile

• Valore:

il valore di nome_variabile incrementato di 1

• Modifiche allo stato della memoria:

incrementa di 1 il valore di nome_variabile

Page 14: G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione XI Gli operatori Programmazione di Calcolatori: gli operatori 1

G. Amodeo,C. Gaibisso Operatore di auto-incremento Operatore di auto-incremento

prefissoprefisso

Programmazione di Calcolatori: gli operatori 14

• Esempio:

B=++A;

2834

2835

2836

2837

2838

2839

2840

2841

2842

2843

2844

2855

x

A

3

x

xxxx

Bx

x14

4

Page 15: G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione XI Gli operatori Programmazione di Calcolatori: gli operatori 1

G. Amodeo,C. Gaibisso Operatore di auto-incremento Operatore di auto-incremento

postfissopostfisso

Programmazione di Calcolatori: gli operatori 15

• Sintassi:

nome_variabile++

• Valore:

il valore di nome_variabile

• Modifiche allo stato della memoria:

incrementa di 1 il valore di nome_variabile

Page 16: G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione XI Gli operatori Programmazione di Calcolatori: gli operatori 1

G. Amodeo,C. Gaibisso Operatore di auto-incremento Operatore di auto-incremento

postfissopostfisso

Programmazione di Calcolatori: gli operatori 16

• Esempio:

B=A++;

2834

2835

2836

2837

2838

2839

2840

2841

2842

2843

2844

2855

x

A3

x

xxxx

Bx

x13

4

Page 17: G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione XI Gli operatori Programmazione di Calcolatori: gli operatori 1

G. Amodeo,C. Gaibisso Operatore di auto-decremento Operatore di auto-decremento

prefissoprefisso

Programmazione di Calcolatori: gli operatori 17

• Sintassi:

--nome_variabile

• Valore:

il valore di nome_variabile decrementato di 1

• Modifiche allo stato della memoria:

decrementa di 1 il valore di nome_variabile

Page 18: G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione XI Gli operatori Programmazione di Calcolatori: gli operatori 1

G. Amodeo,C. Gaibisso Operatore di auto-decremento Operatore di auto-decremento

prefissoprefisso

Programmazione di Calcolatori: gli operatori 18

• Esempio:

B=--A;

2834

2835

2836

2837

2838

2839

2840

2841

2842

2843

2844

2855

x

A

3

x

xxxx

Bx

x12

2

Page 19: G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione XI Gli operatori Programmazione di Calcolatori: gli operatori 1

G. Amodeo,C. Gaibisso Operatore di auto-decremento Operatore di auto-decremento

postfissopostfisso

Programmazione di Calcolatori: gli operatori 19

• Sintassi:

nome_variabile--

• Valore:

il valore di nome_variabile

• Modifiche allo stato della memoria:

decrementa di 1 il valore di nome_variabile

Page 20: G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione XI Gli operatori Programmazione di Calcolatori: gli operatori 1

G. Amodeo,C. Gaibisso Operatore di auto-decremento Operatore di auto-decremento

postfissopostfisso

Programmazione di Calcolatori: gli operatori 20

• Esempio:

B=A--;

2834

2835

2836

2837

2838

2839

2840

2841

2842

2843

2844

2855

x

A3

x

xxxx

Bx

x13

2

Page 21: G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione XI Gli operatori Programmazione di Calcolatori: gli operatori 1

G. Amodeo,C. Gaibisso Operatori di auto-incremento e Operatori di auto-incremento e

decrementodecremento• Esempio

21Programmazione di Calcolatori: gli operatori

1

3

2

2

1

Page 22: G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione XI Gli operatori Programmazione di Calcolatori: gli operatori 1

G. Amodeo,C. Gaibisso Operatori di auto-incremento e Operatori di auto-incremento e

decrementodecremento

22Programmazione di Calcolatori: gli operatori

• Compilazione:

• Esecuzione:

Page 23: G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione XI Gli operatori Programmazione di Calcolatori: gli operatori 1

G. Amodeo,C. Gaibisso

Operatori di relazioneOperatori di relazione

Programmazione di Calcolatori: gli operatori 23

• Sintassi:a) espr_1 == espr_2 ugualeb) espr_1 != espr_2 diversoc) espr_1 > espr_2maggiored) espr_1 >= espr_2 maggiore o

ugualee) espr_1 < espr_2minoref) espr_1 <= espr_2 minore o uguale

• Valore:1 se il valore delle espressioni si

trovano nella relazione specificata0 altrimenti

Page 24: G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione XI Gli operatori Programmazione di Calcolatori: gli operatori 1

G. Amodeo,C. Gaibisso

Operatori di relazioneOperatori di relazione

• Esempio

24Programmazione di Calcolatori: gli operatori

1

0

0

1

1

3

Page 25: G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione XI Gli operatori Programmazione di Calcolatori: gli operatori 1

G. Amodeo,C. Gaibisso

Operatori di relazioneOperatori di relazione

25Programmazione di Calcolatori: gli operatori

• Compilazione:

• Esecuzione:

Page 26: G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione XI Gli operatori Programmazione di Calcolatori: gli operatori 1

G. Amodeo,C. Gaibisso

Operatori “logici”Operatori “logici”

Programmazione di Calcolatori: gli operatori 26

• Sintassi:

espr1 || espr2 “or”

• Valore:0 se espr1 e espr2 valgono entrambe 0

1 altrimenti

• Sintassi:

espr1 && espr2 “and”

• Valore:1 se espr1 e espr2 sono entrambe ≠ 0

0 altrimenti

Page 27: G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione XI Gli operatori Programmazione di Calcolatori: gli operatori 1

G. Amodeo,C. Gaibisso

Operatori “logici”Operatori “logici”

Programmazione di Calcolatori: gli operatori 27

• Sintassi:

!espr “not”

• Valore:1 se espr vale 00 altrimenti

Page 28: G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione XI Gli operatori Programmazione di Calcolatori: gli operatori 1

G. Amodeo,C. Gaibisso

Operatori “logici”Operatori “logici”• Esempio

28Programmazione di Calcolatori: gli operatori

1

1

0

Page 29: G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione XI Gli operatori Programmazione di Calcolatori: gli operatori 1

G. Amodeo,C. Gaibisso

Operatori “logici”Operatori “logici”

29Programmazione di Calcolatori: gli operatori

• Compilazione:

• Esecuzione: