Esempi: Ripasso di C

../_images/linea.png

0. main con argomenti

/*
c++ -o main_00 main_00.cpp
*/

int main (int argc, char ** argv)
  {
    return 0 ;
  }
../_images/linea.png

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 ;
  }
../_images/linea.png

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 ;
  }
../_images/linea.png

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 ;
  }
../_images/linea.png

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 ;
  }
../_images/linea.png

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 ;
  }
../_images/linea.png

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 ;
  }
../_images/linea.png

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 ;
  }
../_images/linea.png

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 ;
  }
../_images/linea.png

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 ;
  }
../_images/linea.png

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 ;
  }
../_images/linea.png

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 ;
  }
../_images/linea.png

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 ;

  }
../_images/linea.png

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 ;

  }
../_images/linea.png

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 ;
  }
../_images/linea.png

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 ;
  }
../_images/linea.png

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 ;
  }
../_images/linea.png

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 ;
  }
../_images/linea.png

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 ;
  }
../_images/linea.png

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 ;
  }