Esempi: Ripasso di C
Contents
Esempi: Ripasso di C¶

0. main con argomenti¶
/*
c++ -o main_00 main_00.cpp
*/
int main (int argc, char ** argv)
{
return 0 ;
}

1. Scrivere a schermo¶
/*
c++ -o main_01 main_01.cpp
*/
#include <iostream>
int main (int argc, char ** argv)
{
std::cout << "42" << std::endl ;
return 0 ;
}

2. Parametri passati da linea di comando¶
/*
c++ -o main_02 main_02.cpp
*/
#include <iostream>
int main (int argc, char ** argv)
{
std::cout << "42" << std::endl ;
std::cout << "ecco il nome dell'eseguibile: " << argv[0] << std::endl ;
return 0 ;
}

3. Parametri chiesti all’utente¶
/*
c++ -o main_03 main_03.cpp
*/
#include <iostream>
int main (int argc, char ** argv)
{
int numero = 0 ;
std::cout << "inserisci un numero\n" ;
std::cin >> numero ;
std::cout << "hai inserito: " << numero << "\n" ;
return 0 ;
}

4. Inizializzazione di Variabili¶
/*
c++ -o main_04 main_04.cpp
*/
#include <iostream>
int main (int argc, char ** argv)
{
// definizione di due numeri interi
int num1 = 0 ;
int num2 = 3 ;
// somma di due numeri interi
int somma = num1 + num2 ;
std::cout << "Somma: " << somma << std::endl ;
// definizione di due numeri razionali
float razionale1 = 3.1416 ;
double razionale2 = 1.4142 ;
// definizione di un carattere
char lettera = 'a' ;
// definizione di un valore booleano
bool condizione = true ;
return 0 ;
}

5. Variabili const¶
/*
c++ -o main_05 main_05.cpp
*/
#include <iostream>
int main (int argc, char ** argv)
{
const int numero = 0 ;
numero = numero + 1 ;
return 0 ;
}

6. array¶
/*
c++ -o main_06 main_06.cpp
*/
#include <iostream>
int main (int argc, char ** argv)
{
// array di 5 numeri interi
int num_array[5] ;
num_array[0] = 3 ;
num_array[1] = 6 ;
num_array[2] = 9 ;
num_array[3] = 11 ;
num_array[4] = 131 ;
int index = 4 ;
std::cout << num_array[index + 1] << std::endl ;
float float_array[] = {2., 3.14} ;
std::cout << float_array[0] << std::endl ;
std::cout << float_array[1] << std::endl ;
return 0 ;
}

7. Casting¶
/*
c++ -o main_07 main_07.cpp
*/
#include <iostream>
int main (int argc, char ** argv)
{
int numero_intero = 4 ;
float numero_razionale = (float) numero_intero ;
float secondo_razionale = static_cast<float> (numero_intero) ;
return 0 ;
}

8. Operatore di Assegnazione¶
/*
c++ -o main_08 main_08.cpp
*/
#include <iostream>
int main (int argc, char ** argv)
{
int numero = 5 ;
numero = 6 ;
std::cout << (numero = 7) << std::endl ;
int numero_due = numero = 8 ;
std::cout << numero_due << std::endl ;
return 0 ;
}

9. Operatori Aritmetici¶
/*
c++ -o main_09 main_09.cpp
*/
#include <iostream>
int main (int argc, char ** argv)
{
float R1 = 5. ;
float R2 = 5. ;
float R3 = R1 + R2 ;
std::cout << R3 << std::endl ;
R3 = R3 + 4.5 ;
std::cout << R3 << std::endl ;
R3 += 2.1 ;
std::cout << R3 << std::endl ;
return 0 ;
}

10. Preincremento e Postincremento¶
/*
c++ -o main_10 main_10.cpp
*/
#include <iostream>
int main (int argc, char ** argv)
{
int num = 5 ;
++num ;
std::cout << num << std::endl ;
--num ;
std::cout << num << std::endl ;
std::cout << "--------" << std::endl ;
int num1 = 5 ;
std::cout << ++num1 << std::endl ;
int num2 = 5 ;
std::cout << num2++ << std::endl ;
std::cout << num2 << std::endl ;
std::cout << "--------" << std::endl ;
int num3 = 5 ;
std::cout << --num3 << std::endl ;
int num4 = 5 ;
std::cout << num4-- << std::endl ;
std::cout << num4 << std::endl ;
return 0 ;
}

11. Operatori Relazionali¶
/*
c++ -o main_11 main_11.cpp
*/
#include <iostream>
int main (int argc, char ** argv)
{
int num = 5 ;
std::cout << (num == 5) << std::endl ;
std::cout << (num > 7) << std::endl ;
}

12. Operatori Logici¶
/*
c++ -o main_12 main_12.cpp
*/
#include <iostream>
int main (int argc, char ** argv)
{
bool A = true ;
bool B = false ;
std::cout << "A and B: " << (A && B) << std::endl ;
std::cout << "A or B : " << (A || B) << std::endl ;
std::cout << "not A : " << (!A) << std::endl ;
return 0 ;
}

13. Strutture di Controllo¶
/*
c++ -o main_13 main_13.cpp
*/
#include <iostream>
int main (int argc, char ** argv)
{
int num1 = 5 ;
if (num1 % 2 == 0)
{
std::cout << num1 << " e' pari\n" ;
}
else
{
std::cout << num1 << " e' dispari\n" ;
}
// ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
int num2 = 2 ;
switch(num2) {
case 1:
// blocco di istruzioni
std::cout << "uno\n" ;
break;
case 2:
// blocco di istruzioni
std::cout << "due\n" ;
break;
default:
std::cout << "altri numeri\n" ;
// blocco di istruzioni
}
// ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
int N = 10 ;
for (int i = 0 ; i < N ; ++i)
{
std::cout << "il doppio di " << i << " vale: " << 2 * i << std::endl ;
}
std::cout << std::endl ;
// ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
int i = 0 ;
while (i < N)
{
std::cout << "il doppio di " << i << " vale: " << 2 * i << std::endl ;
++i ;
}
// ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
do
{
std::cout << "il doppio di " << i << " vale: " << 2 * i << std::endl ;
++i ;
}
while (i < 2 * N) ;
return 0 ;
}

14. Funzioni: Omonimia¶
/*
c++ -o main_14 main_14.cpp
*/
#include <iostream>
int raddoppia (int input_value)
{
return 2 * input_value ;
}
// ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
float raddoppia (float input_value)
{
return 2 * input_value ;
}
// ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
void scriviAschermo (int input_value)
{
std::cout << "ecco il numero da scrivere: " << input_value << std::endl ;
return ;
}
// ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
int main (int argc, char ** argv)
{
for (int i = 0 ; i < 5 ; ++i)
{
std::cout << "il doppio di " << i << " vale: " << raddoppia (i) << std::endl ;
}
std::cout << std::endl ;
for (int i = 0 ; i < 5 ; ++i)
{
scriviAschermo (raddoppia (i)) ;
}
return 0 ;
}

15. Funzioni: Prototipo e Definizione¶
/*
c++ -o main_15 main_15.cpp
*/
#include <iostream>
int raddoppia (int) ;
int main (int argc, char ** argv)
{
for (int i = 0 ; i < 5 ; ++i)
{
std::cout << "il doppio di " << i << " vale: " << raddoppia (i) << std::endl ;
}
return 0 ;
}
// ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
int raddoppia (int input_value)
{
return 2 * input_value ;
}

16. Librerie¶
/* libreria.h */
#ifndef libreria_h
#define libreria_h
int raddoppia (int) ;
#endif
/* libreria.cc */
#include "libreria.h"
int raddoppia (int input_value)
{
return 2 * input_value ;
}
/*
c++ -o main_16 libreria.cc main_16.cpp
*/
#include <iostream>
#include "libreria.h"
int main (int argc, char ** argv)
{
for (int i = 0 ; i < 5 ; ++i)
{
std::cout << "il doppio di " << i << " vale: " << raddoppia (i) << std::endl ;
}
return 0 ;
}

17. Librerie Standard¶
/*
c++ -o main_17 main_17.cpp
*/
#include <iostream>
#include <cmath>
int main (int argc, char ** argv)
{
float num = 4.5 ;
std::cout << "quadrato di " << num << ": " << pow (num, 2) << "\n" ;
num = pow (num, 2) ;
std::cout << "radice di " << num << ": " << sqrt (num) << "\n" ;
std::cout << "radice di " << num << ": " << pow (num, 0.5) << "\n" ;
return 0 ;
}

18. Test di Performance¶
/*
c++ -o main_18 main_18.cpp
c++ -o main_18 -O3 main_18.cpp
*/
#include <iostream>
#include <cmath>
#include <ctime>
int main (int argc, char ** argv)
{
long int N = 1e9 ;
double test = 0 ;
double start = (double) clock () / CLOCKS_PER_SEC ;
for (double i = 0; i < N; ++i)
{
test += pow (i, 2) ;
}
double stop = (double) clock () / CLOCKS_PER_SEC ;
std::cout << "tempo di esecuzione per pow: " << stop - start << " secondi\n" ;
start = (double) clock () / CLOCKS_PER_SEC ;
for (double i = 0; i < N; ++i)
{
test += i * i ;
}
stop = (double) clock () / CLOCKS_PER_SEC ;
std::cout << "tempo di esecuzione per i*i: " << stop - start << " secondi\n" ;
return 0 ;
}

19. Variabili del Preprocessore (#define)¶
/*
c++ -o main_19 main_19.cpp
*/
#include <iostream>
#define quadrato(a) a*a
int main (int argc, char ** argv)
{
double numero = 3. ;
double risposta = quadrato (numero + 1.) ;
std::cout << "Il quadrato di " << numero + 1.
<< " vale " << risposta << "\n" ;
return 0 ;
}