Sei sulla pagina 1di 4

-Operatori di assegnamento composti

Prezzo *= numero +1 equivale a prezzo= prezzo* (numero+1)


A += 1 equivalente a A=A+1
B=3, A= ++B segue che A= 4, B=4 (Prima incrementa B, poi assegna ad A il valore di B)
B=3 A=B++ segue che A=3 , B=4 (Prima assegna ad A il valore di B, poi incrementa B)

-Operatore condizionale a tre operandi


Condizione? espressioneA : espressioneB
Se la conzione vera restituisce lespressione A, altrimenti restituisce lespressione B.
Esempio: minimo=a<b? a: b se la condizione vera assegna a minimo il valore di a, altrimenti il
valore di b.

PER CASA
-1)Scrivere programma che legge da terminale un numero intero N e mostri sul video i primi N
numeri interi

2)Scrivere un programma che legge un numero intero N, acquisisce N numeri e ne calcola la


somma

-3)Scrivere un programma che legge una sequenza di numeri positivi terminata con 0 e ne effettua
la somma

4)Scrivere un programma che legge una sequenza di numeri positivi terminata con 0 e visualizzi il
valore massimo e minimo

-Costrutto Switch
Scelta tra pi alternative
switch (espressione)
{
Case valore_1:
istruzioni;
break;
Case valore_2:
istruzioni;
break;
default:
}

OPERATORI LOGICI

ESERCIZI
Scrivere un programma che legge tre float a b c calcola le radici dellequazione di secondo grado
ax^2+bx+c=0, visualizza le radici e se sono complesse deve visualizzare un messaggio opportuno.
Usare sqrt(x) definita in cmath.

VETTORI
Typedef per definire array di nuovo tipo
Per inizializzare matrici A[2] [3]={1, 2, 3,
4, 5, 6}
Oppure A[2][3]={ {1,2,3} {4,5,6}}

ESERCIZI:
Conversione decimale>binario
FUNZIONI
Tipo_restituito
Nome_funzione( lista parametri e tipo) {
Corpo della funzione
Return qualcosa;
}
PROTOTIPO: serve al compilatore al controllo,
ESERCIZI: scrivere funzione che calcola il prodotto tra due variabili;
funzione che legge N numeri e restituisce somma;

PUNTATORI

E una variabile che punta allindirizzo di un oggetto, quindi alla cella di memoria.
Tramite il puntatore si accede alloggetto puntato. Viene stabilito in fase di
dichiarazione e non pu pi essere modificato.
Possono essere usati per allocare dinamicamente la memoria
Per associare ad un puntatore un indirizzo si ricorre alloperatore & e viene letta
come indirizzo di.

int n,i;
int* p1=&n //p1 punta ad n. con l'asterisco si dichiara p1 come puntatore ad un
intero. Con &n si associa l'indirizzo di n.
int* p2; p2=&i;

*p1=4; //Equivale a porre n=4


*p2=*p1; //Equivale a i=n

E possibile assegnare ad un puntatore il valore di un altro puntatore dello stesso tipo.


Int n;
int* p1=&n; //p1 punta allintero n
int p2=p1; //anche p2 punta ad n, quindi p1 e p2 puntano alla stessa cella di memoria
Il compilatore da un errore nel caso si ponga
pFloat=pInt;
ma non
*pFloat=*pInt;
In quanto il primo esempio eguaglia due puntatori di tipi differenti, nel secondo
esempio si eguagliano solo due variabili.
Si pu risolvere tramite il casting
pInt=(int*)pFloat; //in c
pInt=reinterpret_cast<int*>pFloat; //in c++
Per visualizzare il contenuto della cella, si usa cout <<*p;
Per visualizzare lindirizzo della cella, si usa cout <<p;
I puntatori sono variabili, quindi valgono le operazioni.
//Esempio
Supponmiamo di avere un puntatore per puntare agli elementi di un vettore
int x[100];

int *p;
p= &x[20]; //punta all'indirizzo 20 del vettore x
p++; //Incrementa di 1 il puntatore, passando alla cella successiva,
al 21 elemento

in questo caso

*(p+i); //Rappresenta il valore delloggetto che si trova in posizione p+i nel vettore.
Si pu fare la sottrazione tra vettori
Int x[10];
int *p1=&x[2];
int *p2=&x[5];
int n=p2-p1; vale 3

Si pu usare un puntatore come un vettore ad esempio *(x+i)=x[i];