Upload
severino-nobile
View
215
Download
3
Embed Size (px)
Citation preview
G. Amodeo,C. Gaibisso Programmazione di Programmazione di
CalcolatoriCalcolatori
Lezione XIGli 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;
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;
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
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
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);};
G. Amodeo,C. Gaibisso
Operatore di assegnamentoOperatore di assegnamento
Programmazione di Calcolatori: le strutture di controllo 7
• Compilazione:
• Esecuzione:
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
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:
G. Amodeo,C. Gaibisso
Operatore di assegnamentoOperatore di assegnamento
Programmazione di Calcolatori: le strutture di controllo 10
• Compilazione:
• Esecuzione:
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)
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
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
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
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
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
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
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
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
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
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
G. Amodeo,C. Gaibisso Operatori di auto-incremento e Operatori di auto-incremento e
decrementodecremento
22Programmazione di Calcolatori: gli operatori
• Compilazione:
• Esecuzione:
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
G. Amodeo,C. Gaibisso
Operatori di relazioneOperatori di relazione
• Esempio
24Programmazione di Calcolatori: gli operatori
1
0
0
1
1
3
G. Amodeo,C. Gaibisso
Operatori di relazioneOperatori di relazione
25Programmazione di Calcolatori: gli operatori
• Compilazione:
• Esecuzione:
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
G. Amodeo,C. Gaibisso
Operatori “logici”Operatori “logici”
Programmazione di Calcolatori: gli operatori 27
• Sintassi:
!espr “not”
• Valore:1 se espr vale 00 altrimenti
G. Amodeo,C. Gaibisso
Operatori “logici”Operatori “logici”• Esempio
28Programmazione di Calcolatori: gli operatori
1
1
0
G. Amodeo,C. Gaibisso
Operatori “logici”Operatori “logici”
29Programmazione di Calcolatori: gli operatori
• Compilazione:
• Esecuzione: