SlideShare ist ein Scribd-Unternehmen logo
1 von 49
Downloaden Sie, um offline zu lesen
Introduzione al C
 Esercitazione 3




Dipartimento Ingegneria Chimica Materiali Ambiente




 Prof. Antonino Stelitano
Docente       Antonino
              Stelitano
Tutor
Lezioni       Lunedì           14:00 – 17:30     aula 16
                               Lab. Paolo Ercoli – via Tiburtina 205
              Mercoledì
                               15:45 – 19:00     aula 5
                               Viale del C. Laurenziano
Ricevimento: Su richiesta      antonino.stelitano@uniroma1.it

                               stelitano.a@libero.it
Sito web:     http://w3.uniroma1.it/ab_informatiche/
Menù di oggi



           Vettori e matrici

           Funzioni
Cos‟è un vettore

Un vettore, o meglio, un array è un insieme ordinato di elementi,
tutti di uno stesso tipo.
Può essere visualizzato idealmente come una lista di celle
numerate univocamente
                                                           cella



          0      1         2          3     4        5



 indice
                     Array di 6 elementi
Gli Arrays


Un esempio di definizione di un array in C e' :

                   nome array                     dimensione
  tipo               int elenco_numeri[50];

e si accede agli elementi dell'array nel seguente modo:

         terzo_numero = elenco_numeri[2];
         elenco_numeri[49] = 100;
Gli Arrays: rappresentazione ideale


     int elenco_numeri[50];

       ?        ?        ?        ?     ?
       0        1        2        3    49

    terzo_numero = elenco_numeri[2];
    elenco_numeri[49] = 100;

                 terzo_numero

       ?         ?       X        ?    100
       0        1        2        3    49
Indicizzazione degli array


In C gli indici delle celle iniziano da 0 e finiscono alla dimensione
dell'array meno uno. Nell'esempio precedente il range è 0-49, cioè
elenco_numeri è un array di 50 elementi e si ha:

elenco_numeri[0], elenco_numeri[1], ..., elenco_numeri[49]

Questa è una caratteristica tipica dei moderni linguaggi di
programmazione e richiede un po' di pratica per raggiungere "la
giusta disposizione d'animo".
Esempio Array


Creare un array di 10 elementi di tipo integer (int)

Assegnare ad esso 10 valori a piacere

Stampare il contenuto dell‟array che si è creato
Soluzione Array
#include <stdio.h>
#include <stdlib.h>
int main()
{
         int arrayInteri[10];
         arrayInteri[0] = 15;
         int i;
         for(i = 1; i < 10; i++)
         {
                    arrayInteri[ i ] = (arrayInteri[ i – 1 ] + 10);
         }
         for(i = 0; i < 10; i++)
         {
                    printf("cella %d = %dn", i, arrayInteri[ i ]);
         }
         system("PAUSE");
}
Output soluzione array
 cella 0 = 15
 cella 1 = 25
 cella 2 = 35
 cella 3 = 45
 cella 4 = 55
 cella 5 = 65
 cella 6 = 75
 cella 7 = 85
 cella 8 = 95
 cella 9 = 105
 Premere un tasto per continuare . . .
Esercizio Fibonacci

Scrivere un programma che generi i primi 12 interi
della successione di Fibonacci, li salvi in un array di interi e
stampi la successione a video

Qual è l‟espressione analitica della successione di Fibonacci?

Help:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89
Successione di Fibonacci

La successione di Fibonacci è una sequenza di numeri interi
naturali definibile assegnando i valori dei due primi termini,
F0:= 0 ed F1:= 1, e chiedendo che per ogni successivo sia
Fn := Fn-1 + Fn-2.

Il termine F0 viene aggiunto nel caso si voglia fare iniziare la
successione con 0; storicamente il primo termine della
successione è F1:= 1.
Soluzione Fibonacci
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int successione_Fibonacci[12];
    int f0 = 0, f1 = 1, i;
    successione_Fibonacci[0] = 0; successione_Fibonacci[1] = 1;
    for(i = 2; i < 12; i++){
        successione_Fibonacci[i] =
             successione_Fibonacci[ i – 1 ] + successione_Fibonacci[ i – 2 ];
    }

    for(i = 0; i < 12; i++){
        printf("%dn", successione_Fibonacci[ i ]);
    }
    system("PAUSE");
}
Output Fibonacci

 0
 1
 1
 2
 3
 5
 8
 13
 21
 34
 55
 89
 Premere un tasto per continuare . . .
Le matrici

Le matrici non sono altro che array
multidimensionali


           0    [0][0]       [0][1]
righe                                 Notazione C:
                                      matrice[righe][colonne]
           1    [1][0]       [1][1]

                  0            1

                   colonne
Gli Array multidimensionali

 Gli array multidimensionali sono cosi definiti:

 int tabella_numeri[50][50]
 (per due dimensioni)

 int big_D[20][30][10][40]
 (per più di due dimensioni)
Indicizzazione degli Array multidimensionali


si accede agli elementi di un array multidimensionale nel
seguente modo:

numero = tabella_numeri[5][32];

tabella_numeri[1][23] = 100;
Esempio Matrici
#include <stdio.h>
#include <stdlib.h>

int main()
{
   int matrice[2][2], i, j;
   matrice[0][0] = 1;
   matrice[0][1] = 2;
   matrice[1][0] = 3;
   matrice[1][1] = 4;
      for(i = 0; i < 2; i++)
       for(j = 0; j < 2; j++)
            printf("matrice[%d][%d] = %dn", i, j, matrice[ i ][ j ]);
  system("PAUSE");
}
Output Matrici

matrice[0][0] = 1
matrice[0][1] = 2
matrice[1][0] = 3
matrice[1][1] = 4
Premere un tasto per continuare . . .
Le stringhe

 In C le stringhe sono definite come array di caratteri.

 Ad esempio, la seguente istruzione definisce una stringa
 di 50 caratteri:

 char name[50];
Gestione delle stringhe
Il C non ha un sistema maneggevole per costruire le stringhe, così le
seguenti assegnazioni NON SONO VALIDE:

char firstname[50], lastname[50], fullname[50];
firstname = "Mario" /* illegale */
lastname = "Rossi" /* illegale */
fullname = "Sig."+firstname+lastname /* illegale */

Esiste pero' una libreria di routines per il trattamento delle stringhe ("<
string.h >").
Stampare una stringa

Per stampare una stringa si usa printf() con lo speciale
carattere di controllo %s:

printf("%s", nome);

Nota: è sufficiente avere il nome della stringa.
Esempio stampa di una stringa
#include <stdio.h>
#include <stdlib.h>

main()
{
  char string_nome[80];
  printf("inserisci il tuo nome:n");
  scanf("%s", string_nome);
  printf("NOME: %sn", string_nome);
  //ulteriore modo di stampare il nome
  printf("NOME IN ALTRO MODO: %sn", &string_nome[0]);
  system("PAUSE");
}
Output stampa di una stringa

inserisci il tuo nome:
antonio
NOME: antonio
NOME IN ALTRO MODO: antonio
Premere un tasto per continuare . . .
il carattere „0‟
Al fine di permettere l'utilizzo di stringhe con lunghezza
variabile, il carattere 0 viene utilizzato per indicare la fine di
una stringa.
In questo modo, se abbiamo una stringa dichiarata di 50
caratteri (char name[50];), e la utilizziamo per memorizzare il
nome "Dave", il suo contenuto (a partire da sinistra) sarà la
parola Dave immediatamente seguita dal segno di fine stringa
0, e quindi tutti gli altri caratteri (fino ad arrivare alla
lunghezza di 50) risulteranno vuoti.
Esercizio Stringhe

 Dichiarare un array di 6 elementi di tipo char.

 Inserire in tale array la stringa “DINO”

 Stampare a video il contenuto dell‟array di 6 elementi
 dichiarato in precedenza.
Soluzione esercizio Stringhe
#include <stdio.h>
#include <stdlib.h>

int main()
{
   char nome[6];
   nome[0] = 'D';
   nome[1] = 'I';
   nome[2] = 'N';
   nome[3] = 'O';
   printf("prova stampa DINO = %sn", nome);
   nome[4] = '0';
   printf("RI-prova stampa DINO = %sn", nome);
   system("PAUSE");
}
Output esercizio Stringhe

 prova stampa DINO = DINO$³¨☻CÂÇ|¿ #
 RI-prova stampa DINO = DINO
 Premere un tasto per continuare . . .
Spiegazione esercizio Stringhe

char nome[6];             ?     ?     ?     ?     ?     ?
nome[0] = 'D';
nome[1] = 'I';
nome[2] = 'N';           D      I    N      O     ?     ?
nome[3] = 'O';
nome[4] = „0';          D      I    N      O     0    ?

Senza „0‟ la printf non può conoscere la fine della
stringa che si vuole stampare, quindi vengono stampati anche
valori ignoti (tipo $³¨☻CÂÇ|¿ #)
Le Funzioni

il C considera "main()" come una funzione.

La forma generale di una funzione e':

returntype function_name (param1, param2, ...)
{
       local variables
       function code (C statements)
}
Tipo di ritorno
Se manca la definizione del tipo della funzione
("returntype", tipo della variabile di ritorno della
funzione), il C assume che il ritorno della funzione
sia di tipo integer (int);

ATTENZIONE: questo può essere una delle cause
di problemi nei programmi.
Esempio
Esempio di una funzione che calcola la media tra due
valori:
                             argomenti
     valore di ritorno

float calcolamedia(float a, float b)
{
       float media;
       media = (a + b) / 2;
       return(media);
}
Eseguire una funzione
Per richiamare tale funzione si procede nel seguente modo:
main()
{
     float a = 10, b = 25, risultato;
     risultato = calcolamedia(a, b);
     printf("Valore medio = %fn",
     risultato);
}

Nota: l'istruzione "return" porta il risultato della funzione al
programma principale.
Programma calcola media
#include <stdio.h>
#include <stdlib.h>

float calcolamedia(float a, float b)
{
          float media;
          media = (a + b) / 2;
          return(media);
}

main()
{
          float a = 10, b = 25, risultato;
          risultato = calcolamedia(a, b);
          printf("Valore medio = %fn",
          risultato);
}
Domanda

Cosa succede se inverto l‟ordine delle funzioni?
              #include <stdio.h>
              #include <stdlib.h>

              main(){
                        float a = 10, b = 25, risultato;
                        risultato = calcolamedia(a, b);
                        printf("Valore medio = %fn",

                        risultato);
              }
              float calcolamedia(float a, float b){
                        float media;
                        media = (a + b) / 2;
                        return(media);
              }
Risposta
   Il compilatore non può sapere cos‟è “calcolamedia”
                #include <stdio.h>
                #include <stdlib.h>
                float calcolamedia(float a, float b);
la funzione     main(){
                          float a = 10, b = 25, risultato;
prima                     risultato = calcolamedia(a, b);
                          printf("Valore medio = %fn",
va dichiarata                       risultato);
                }
                float calcolamedia(float a, float b){
 poi                      float media;
 va usata                 media = (a + b) / 2;
                          return(media);
                }
Prototipi di funzioni

Prima di usare una funzione, il C deve
riconoscere il tipo di ritorno e il tipo dei
parametri che la funzione si aspetta.

                          Va fatta una dichiarazione
Lo standard ANSI del C ha introdotto un nuovo e migliore
metodo per fare questa dichiarazione rispetto alle vecchie
versioni di C (ricordiamo
che le moderne versioni del C aderiscono allo standard
ANSI).
Dichiarazione di funzione

    L'importanza della dichiarazione e' doppia:

    - viene fatta per avere un codice sorgente più
      strutturato e perciò facile da leggere ed
      interpretare;

    - permette al compilatore C di controllare la
      sintassi delle chiamate di funzioni.
Dichiarazione di funzione (2)

Fondamentalmente, se una funzione e' stata definita prima di
essere usata (call) allora è possibile semplicemente usare la
funzione.

Nel caso contrario, è obbligatorio dichiarare la funzione;
la dichiarazione stabilisce in modo semplice il ritorno della
funzione ed il tipo dei parametri utilizzati da questa.
E' buona norma (e solitamente viene fatto) dichiarare tutte le
funzioni all'inizio del programma, sebbene non sia
strettamente necessario.
Dichiarazione di funzione (3)
Per dichiarare un prototipo di funzione bisogna
semplicemente stabilire il ritorno della funzione, il nome della
funzione e tra le parentesi elencare
il tipo dei parametri nell'ordine in cui compaiono nella
definizione di funzione.
Ad esempio:
       int strlen(char[]);
Questo dichiara che una funzione di nome "strlen" ritorna un
valore integer ed accetta una singola stringa come parametro.
Una scorciatoia
le funzioni e le variabili possono essere dichiarate sulla stessa linea
di codice sorgente. Questa procedura era molto piu' diffusa nei
giorni del pre-ANSI C; da allora le funzioni solitamente vengono
dichiarate separatamente all'inizio del programma. La prima
procedura
risulta ancora perfettamente valida, purchè venga rispettato l'ordine
in cui gli oggetti compaiono nella definizione della funzione.

int length, strlen(char[]);
dove "length" e' una variabile, e "strlen" e' la funzione (come
nell'esempio precedente).
Funzioni “void”
Se non si vuole ritornare alcun valore da una funzione è sufficiente dichiararla di tipo
void ed omettere il return.

void cento(){
         int loop;
         for (loop = 0; loop < 10; loop++);
         printf("%dn", loop * loop);
}

main(){
          cento();
}

Nota: è obbligatorio mettere le parentesi () dopo il nome della
      funzione anche se non ci sono parametri.
Funzioni ed array
Possono essere passati alle funzioni come parametri anche array singoli o
multidimensionali.
Gli array monodimensionali possono essere passati nel seguente modo:
float trovamedia(int size,float list[]){
       int i;
       float sum = 0.0;
       for (i = 0; i < size; i++)
              sum += list[i];
       return(sum/size);
}
Spiegazione

Nella precedente funzione “trovamedia” la
dichiarazione "float list[]" dichiara al C che
"list" è un array di float.

Non viene specificata la dimensione di un array
quando è un parametro di una funzione.
Esempio d‟uso per “trovamedia”
 #include <stdio.h>
 #include <stdlib.h>

 //dichiarazione di funzione
 float trovamedia(int size, float list[]);

 //main
 main(){                                     OUTPUT
     float numeri[2];                        la media e' 2.400000
     numeri[0] = 1.2; numeri[1] = 3.6;
     float media = trovamedia(2, numeri);    Premere un tasto per continuare . . .
     printf("la media e' %fn", media);
     system("PAUSE");
 }

 //codice della funzione
 float trovamedia(int size,float list[]){
            int i;
            float sum = 0.0;
            for (i = 0; i < size; i++)
                          sum += list[i];
            return(sum/size);
 }
Funzioni ed array multidimensionali
Array multidimensionali possono essere passati alle
funzioni nel seguente modo:
void stampatabella(int xsize, int ysize,
                                 float tabella[][5])
{
        int x,y;
        for (x = 0; x < xsize; x++) {
                 for (y = 0; y < ysize; y++)
                         printf(“t%f ”, tabella[x][y]);
                 printf("n");
        }
}
Spiegazione

Nella precedente funzione “stampatabella”, la parte di
codice "float tabella[][5]" dichiara al C che tabella è un array
di float di dimensioni nx5.

E' importante notare che dobbiamo specificare la seconda
dimensione (e le successive) del vettore, ma non la prima
dimensione.
Riepilogo: array e funzioni

riepilogando,
nel caso di array singoli non e' necessario specificare
la dimensione dell'array nella definizione come
parametro della funzione,
mentre nel caso di array multidimensionali si può
non specificare solo la prima dimensione.
Esercizio: array e funzioni

Si scriva un programma che prenda in ingresso
da tastiera 10 interi, li memorizzi in un array,
ordini tale array e stampi la lista dei numeri
inseriti dall‟utente e la stessa lista ordinata.

Esempio:
Input: 1 3 2 23 43 521 98 43 9 10
Output: 1 2 3 9 10 23 43 43 98 521

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (19)

Eserc v del 26 marzo 2012
 Eserc v del 26 marzo 2012 Eserc v del 26 marzo 2012
Eserc v del 26 marzo 2012
 
Lezione 6 (12 marzo 2012)
Lezione 6 (12 marzo 2012)Lezione 6 (12 marzo 2012)
Lezione 6 (12 marzo 2012)
 
6 Vettori E Matrici
6   Vettori E Matrici6   Vettori E Matrici
6 Vettori E Matrici
 
Esercitazione 4 (19 marzo 2012)
Esercitazione 4 (19 marzo 2012)Esercitazione 4 (19 marzo 2012)
Esercitazione 4 (19 marzo 2012)
 
Flow chart
Flow chartFlow chart
Flow chart
 
10 - Programmazione: Tipi di dato strutturati
10 - Programmazione: Tipi di dato strutturati10 - Programmazione: Tipi di dato strutturati
10 - Programmazione: Tipi di dato strutturati
 
9 Altre Istruzioni Di I O
9   Altre Istruzioni Di I O9   Altre Istruzioni Di I O
9 Altre Istruzioni Di I O
 
05 - Programmazione: Funzioni
05 - Programmazione: Funzioni05 - Programmazione: Funzioni
05 - Programmazione: Funzioni
 
Limiti
LimitiLimiti
Limiti
 
Matlab: Introduzione e comandi base
Matlab: Introduzione e comandi baseMatlab: Introduzione e comandi base
Matlab: Introduzione e comandi base
 
Java lezione 2
Java lezione 2Java lezione 2
Java lezione 2
 
Derivate
DerivateDerivate
Derivate
 
Massimi e minimi
Massimi e minimiMassimi e minimi
Massimi e minimi
 
Derivate - esercizi con soluzioni
Derivate - esercizi con soluzioniDerivate - esercizi con soluzioni
Derivate - esercizi con soluzioni
 
Le 4 operazioni de marzi
Le 4 operazioni   de marziLe 4 operazioni   de marzi
Le 4 operazioni de marzi
 
Appunti di analisi funzionale [a.a. 1995 1996][prof. biagio ricceri][santi ca...
Appunti di analisi funzionale [a.a. 1995 1996][prof. biagio ricceri][santi ca...Appunti di analisi funzionale [a.a. 1995 1996][prof. biagio ricceri][santi ca...
Appunti di analisi funzionale [a.a. 1995 1996][prof. biagio ricceri][santi ca...
 
Lezione 12 (28 marzo 2012) funzioni memoria - puntatori
Lezione 12 (28 marzo 2012) funzioni   memoria - puntatoriLezione 12 (28 marzo 2012) funzioni   memoria - puntatori
Lezione 12 (28 marzo 2012) funzioni memoria - puntatori
 
Vogliamo programmatori stupidi e pigri!
Vogliamo programmatori stupidi e pigri!Vogliamo programmatori stupidi e pigri!
Vogliamo programmatori stupidi e pigri!
 
Array in C++
Array in C++Array in C++
Array in C++
 

Andere mochten auch

Weight Loss Research and Results and Commentary on Three Pipeline Drugs
Weight Loss Research and Results and Commentary on Three Pipeline DrugsWeight Loss Research and Results and Commentary on Three Pipeline Drugs
Weight Loss Research and Results and Commentary on Three Pipeline DrugsIpsos Vantis
 
Open education resources
Open education resourcesOpen education resources
Open education resourcesSiyavula
 
Indian business environment book @ bec doms
Indian business environment book @ bec domsIndian business environment book @ bec doms
Indian business environment book @ bec domsBabasab Patil
 
Acceptance, rejection & revocation of offer ppt @ bec doms
Acceptance, rejection & revocation of offer ppt @ bec doms Acceptance, rejection & revocation of offer ppt @ bec doms
Acceptance, rejection & revocation of offer ppt @ bec doms Babasab Patil
 
Lumberjack October - December 2005 - Wetherlys
Lumberjack October - December 2005 - WetherlysLumberjack October - December 2005 - Wetherlys
Lumberjack October - December 2005 - WetherlysEugene Beukes
 

Andere mochten auch (9)

Weight Loss Research and Results and Commentary on Three Pipeline Drugs
Weight Loss Research and Results and Commentary on Three Pipeline DrugsWeight Loss Research and Results and Commentary on Three Pipeline Drugs
Weight Loss Research and Results and Commentary on Three Pipeline Drugs
 
Lilia Ababi:  Publicaţii periodice în colecţia de documente în limbi străine
Lilia Ababi: 	Publicaţii periodice în colecţia de documente în limbi străineLilia Ababi: 	Publicaţii periodice în colecţia de documente în limbi străine
Lilia Ababi:  Publicaţii periodice în colecţia de documente în limbi străine
 
دو دوست عجیب
دو دوست عجیبدو دوست عجیب
دو دوست عجیب
 
All That JAZZ
All That JAZZAll That JAZZ
All That JAZZ
 
Open education resources
Open education resourcesOpen education resources
Open education resources
 
Indian business environment book @ bec doms
Indian business environment book @ bec domsIndian business environment book @ bec doms
Indian business environment book @ bec doms
 
Acceptance, rejection & revocation of offer ppt @ bec doms
Acceptance, rejection & revocation of offer ppt @ bec doms Acceptance, rejection & revocation of offer ppt @ bec doms
Acceptance, rejection & revocation of offer ppt @ bec doms
 
Lumberjack October - December 2005 - Wetherlys
Lumberjack October - December 2005 - WetherlysLumberjack October - December 2005 - Wetherlys
Lumberjack October - December 2005 - Wetherlys
 
Cristian Elena, Costiucenco Natalia:  Colecţia de publicaţii periodice moldo...
Cristian Elena, Costiucenco Natalia: 	Colecţia de publicaţii periodice moldo...Cristian Elena, Costiucenco Natalia: 	Colecţia de publicaţii periodice moldo...
Cristian Elena, Costiucenco Natalia:  Colecţia de publicaţii periodice moldo...
 

Ähnlich wie Esercitazione 3 (14 marzo 2012)

Lezione 8 (12 marzo 2012)
Lezione 8 (12 marzo 2012)Lezione 8 (12 marzo 2012)
Lezione 8 (12 marzo 2012)STELITANO
 
Python@Unina - Exercises
Python@Unina - ExercisesPython@Unina - Exercises
Python@Unina - ExercisesNaLUG
 
Cn01 matlabmat-inf-090304063949-phpapp02
Cn01 matlabmat-inf-090304063949-phpapp02Cn01 matlabmat-inf-090304063949-phpapp02
Cn01 matlabmat-inf-090304063949-phpapp02Jose Aldo Ruiz Ycanaque
 
Il rasoio dei generatori di Python (per semplificare il codice e ridurre l'us...
Il rasoio dei generatori di Python (per semplificare il codice e ridurre l'us...Il rasoio dei generatori di Python (per semplificare il codice e ridurre l'us...
Il rasoio dei generatori di Python (per semplificare il codice e ridurre l'us...Davide Brunato
 
Soluzione esame b del 13 giugno 2012
Soluzione esame b del 13 giugno 2012Soluzione esame b del 13 giugno 2012
Soluzione esame b del 13 giugno 2012STELITANO
 
Lezione 16 (2 aprile 2012)
Lezione 16 (2 aprile 2012)Lezione 16 (2 aprile 2012)
Lezione 16 (2 aprile 2012)STELITANO
 
7. MATLAB - Parte 2 (IO, cicli, funzioni).pdf
7. MATLAB - Parte 2 (IO, cicli, funzioni).pdf7. MATLAB - Parte 2 (IO, cicli, funzioni).pdf
7. MATLAB - Parte 2 (IO, cicli, funzioni).pdfPasqualeRuocco5
 
Soluzione esame a del 13 giugno 2012
Soluzione esame a del 13 giugno 2012Soluzione esame a del 13 giugno 2012
Soluzione esame a del 13 giugno 2012STELITANO
 
06 1 array_stringhe_typedef
06 1 array_stringhe_typedef06 1 array_stringhe_typedef
06 1 array_stringhe_typedefPiero Fraternali
 
5 Strutture Iterative
5   Strutture Iterative5   Strutture Iterative
5 Strutture Iterativeguest60e9511
 
Lezione 13 (2 aprile 2012)
Lezione 13 (2 aprile 2012)Lezione 13 (2 aprile 2012)
Lezione 13 (2 aprile 2012)STELITANO
 
Ecdl modulo 1 -Fondamenti
Ecdl modulo 1 -FondamentiEcdl modulo 1 -Fondamenti
Ecdl modulo 1 -FondamentiAngela Cristina
 
Pycrashcourse
PycrashcoursePycrashcourse
Pycrashcourserik0
 

Ähnlich wie Esercitazione 3 (14 marzo 2012) (20)

Array
ArrayArray
Array
 
Lezione 8 (12 marzo 2012)
Lezione 8 (12 marzo 2012)Lezione 8 (12 marzo 2012)
Lezione 8 (12 marzo 2012)
 
Python@Unina - Exercises
Python@Unina - ExercisesPython@Unina - Exercises
Python@Unina - Exercises
 
Cn01 matlabmat-inf-090304063949-phpapp02
Cn01 matlabmat-inf-090304063949-phpapp02Cn01 matlabmat-inf-090304063949-phpapp02
Cn01 matlabmat-inf-090304063949-phpapp02
 
R Vectors
R VectorsR Vectors
R Vectors
 
Il rasoio dei generatori di Python (per semplificare il codice e ridurre l'us...
Il rasoio dei generatori di Python (per semplificare il codice e ridurre l'us...Il rasoio dei generatori di Python (per semplificare il codice e ridurre l'us...
Il rasoio dei generatori di Python (per semplificare il codice e ridurre l'us...
 
Java Lezione 1
Java Lezione 1Java Lezione 1
Java Lezione 1
 
Soluzione esame b del 13 giugno 2012
Soluzione esame b del 13 giugno 2012Soluzione esame b del 13 giugno 2012
Soluzione esame b del 13 giugno 2012
 
Lezione 16 (2 aprile 2012)
Lezione 16 (2 aprile 2012)Lezione 16 (2 aprile 2012)
Lezione 16 (2 aprile 2012)
 
7. MATLAB - Parte 2 (IO, cicli, funzioni).pdf
7. MATLAB - Parte 2 (IO, cicli, funzioni).pdf7. MATLAB - Parte 2 (IO, cicli, funzioni).pdf
7. MATLAB - Parte 2 (IO, cicli, funzioni).pdf
 
Soluzione esame a del 13 giugno 2012
Soluzione esame a del 13 giugno 2012Soluzione esame a del 13 giugno 2012
Soluzione esame a del 13 giugno 2012
 
06 1 array_stringhe_typedef
06 1 array_stringhe_typedef06 1 array_stringhe_typedef
06 1 array_stringhe_typedef
 
2006 Py02 base
2006 Py02 base2006 Py02 base
2006 Py02 base
 
5 Strutture Iterative
5   Strutture Iterative5   Strutture Iterative
5 Strutture Iterative
 
Lezione 13 (2 aprile 2012)
Lezione 13 (2 aprile 2012)Lezione 13 (2 aprile 2012)
Lezione 13 (2 aprile 2012)
 
Algorithmist guide II
Algorithmist guide IIAlgorithmist guide II
Algorithmist guide II
 
Ecdl modulo 1 -Fondamenti
Ecdl modulo 1 -FondamentiEcdl modulo 1 -Fondamenti
Ecdl modulo 1 -Fondamenti
 
Quinta lezione android
Quinta lezione androidQuinta lezione android
Quinta lezione android
 
Pycrashcourse
PycrashcoursePycrashcourse
Pycrashcourse
 
primi comandi SQL con Mysql
primi comandi SQL con Mysqlprimi comandi SQL con Mysql
primi comandi SQL con Mysql
 

Mehr von STELITANO

Soluzioni abilità informatiche 16 maggio 2012
Soluzioni abilità informatiche 16 maggio 2012Soluzioni abilità informatiche 16 maggio 2012
Soluzioni abilità informatiche 16 maggio 2012STELITANO
 
Dispenza aloisi
Dispenza aloisiDispenza aloisi
Dispenza aloisiSTELITANO
 
Lezione 22 (7 maggio 2012)
Lezione 22 (7 maggio 2012)Lezione 22 (7 maggio 2012)
Lezione 22 (7 maggio 2012)STELITANO
 
Lezione 21 (2 maggio 2012)
Lezione 21 (2 maggio 2012)Lezione 21 (2 maggio 2012)
Lezione 21 (2 maggio 2012)STELITANO
 
Lezione 20 (2 maggio 2012) seconda parte
Lezione 20 (2 maggio 2012) seconda parteLezione 20 (2 maggio 2012) seconda parte
Lezione 20 (2 maggio 2012) seconda parteSTELITANO
 
Lezione 20 (2 maggio 2012) prima parte
Lezione 20 (2 maggio 2012) prima parteLezione 20 (2 maggio 2012) prima parte
Lezione 20 (2 maggio 2012) prima parteSTELITANO
 
Lezione 19 (18 aprile 2012) ricerca
Lezione 19 (18 aprile 2012)   ricercaLezione 19 (18 aprile 2012)   ricerca
Lezione 19 (18 aprile 2012) ricercaSTELITANO
 
Lezione 18 (18 aprile 2012) ordinamenti
Lezione 18 (18 aprile 2012)   ordinamentiLezione 18 (18 aprile 2012)   ordinamenti
Lezione 18 (18 aprile 2012) ordinamentiSTELITANO
 
Lezione 15 (2 aprile 2012)
Lezione 15 (2 aprile 2012)Lezione 15 (2 aprile 2012)
Lezione 15 (2 aprile 2012)STELITANO
 
Lezione 14 (2 aprile 2012)
Lezione 14 (2 aprile 2012)Lezione 14 (2 aprile 2012)
Lezione 14 (2 aprile 2012)STELITANO
 
Lezione 12 (28 marzo 2012) puntatori vettori
Lezione 12 (28 marzo 2012) puntatori   vettoriLezione 12 (28 marzo 2012) puntatori   vettori
Lezione 12 (28 marzo 2012) puntatori vettoriSTELITANO
 
Soluzione esonero del 4 aprile 2012
Soluzione esonero del 4 aprile 2012Soluzione esonero del 4 aprile 2012
Soluzione esonero del 4 aprile 2012STELITANO
 
Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)STELITANO
 
Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)STELITANO
 
Lezione 10 (21 marzo 2012)
Lezione 10 (21 marzo 2012)Lezione 10 (21 marzo 2012)
Lezione 10 (21 marzo 2012)STELITANO
 
Lezione 10 (21 marzo 2012)3
Lezione 10 (21 marzo 2012)3Lezione 10 (21 marzo 2012)3
Lezione 10 (21 marzo 2012)3STELITANO
 
Lezione 10 (21 marzo 2012)2
Lezione 10 (21 marzo 2012)2Lezione 10 (21 marzo 2012)2
Lezione 10 (21 marzo 2012)2STELITANO
 
Lezione 10 (21 marzo 2012)
Lezione 10 (21 marzo 2012)Lezione 10 (21 marzo 2012)
Lezione 10 (21 marzo 2012)STELITANO
 

Mehr von STELITANO (19)

Risultati
RisultatiRisultati
Risultati
 
Soluzioni abilità informatiche 16 maggio 2012
Soluzioni abilità informatiche 16 maggio 2012Soluzioni abilità informatiche 16 maggio 2012
Soluzioni abilità informatiche 16 maggio 2012
 
Dispenza aloisi
Dispenza aloisiDispenza aloisi
Dispenza aloisi
 
Lezione 22 (7 maggio 2012)
Lezione 22 (7 maggio 2012)Lezione 22 (7 maggio 2012)
Lezione 22 (7 maggio 2012)
 
Lezione 21 (2 maggio 2012)
Lezione 21 (2 maggio 2012)Lezione 21 (2 maggio 2012)
Lezione 21 (2 maggio 2012)
 
Lezione 20 (2 maggio 2012) seconda parte
Lezione 20 (2 maggio 2012) seconda parteLezione 20 (2 maggio 2012) seconda parte
Lezione 20 (2 maggio 2012) seconda parte
 
Lezione 20 (2 maggio 2012) prima parte
Lezione 20 (2 maggio 2012) prima parteLezione 20 (2 maggio 2012) prima parte
Lezione 20 (2 maggio 2012) prima parte
 
Lezione 19 (18 aprile 2012) ricerca
Lezione 19 (18 aprile 2012)   ricercaLezione 19 (18 aprile 2012)   ricerca
Lezione 19 (18 aprile 2012) ricerca
 
Lezione 18 (18 aprile 2012) ordinamenti
Lezione 18 (18 aprile 2012)   ordinamentiLezione 18 (18 aprile 2012)   ordinamenti
Lezione 18 (18 aprile 2012) ordinamenti
 
Lezione 15 (2 aprile 2012)
Lezione 15 (2 aprile 2012)Lezione 15 (2 aprile 2012)
Lezione 15 (2 aprile 2012)
 
Lezione 14 (2 aprile 2012)
Lezione 14 (2 aprile 2012)Lezione 14 (2 aprile 2012)
Lezione 14 (2 aprile 2012)
 
Lezione 12 (28 marzo 2012) puntatori vettori
Lezione 12 (28 marzo 2012) puntatori   vettoriLezione 12 (28 marzo 2012) puntatori   vettori
Lezione 12 (28 marzo 2012) puntatori vettori
 
Soluzione esonero del 4 aprile 2012
Soluzione esonero del 4 aprile 2012Soluzione esonero del 4 aprile 2012
Soluzione esonero del 4 aprile 2012
 
Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)
 
Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)
 
Lezione 10 (21 marzo 2012)
Lezione 10 (21 marzo 2012)Lezione 10 (21 marzo 2012)
Lezione 10 (21 marzo 2012)
 
Lezione 10 (21 marzo 2012)3
Lezione 10 (21 marzo 2012)3Lezione 10 (21 marzo 2012)3
Lezione 10 (21 marzo 2012)3
 
Lezione 10 (21 marzo 2012)2
Lezione 10 (21 marzo 2012)2Lezione 10 (21 marzo 2012)2
Lezione 10 (21 marzo 2012)2
 
Lezione 10 (21 marzo 2012)
Lezione 10 (21 marzo 2012)Lezione 10 (21 marzo 2012)
Lezione 10 (21 marzo 2012)
 

Esercitazione 3 (14 marzo 2012)

  • 1. Introduzione al C Esercitazione 3 Dipartimento Ingegneria Chimica Materiali Ambiente Prof. Antonino Stelitano
  • 2. Docente Antonino Stelitano Tutor Lezioni Lunedì 14:00 – 17:30 aula 16 Lab. Paolo Ercoli – via Tiburtina 205 Mercoledì 15:45 – 19:00 aula 5 Viale del C. Laurenziano Ricevimento: Su richiesta antonino.stelitano@uniroma1.it stelitano.a@libero.it Sito web: http://w3.uniroma1.it/ab_informatiche/
  • 3. Menù di oggi Vettori e matrici Funzioni
  • 4. Cos‟è un vettore Un vettore, o meglio, un array è un insieme ordinato di elementi, tutti di uno stesso tipo. Può essere visualizzato idealmente come una lista di celle numerate univocamente cella 0 1 2 3 4 5 indice Array di 6 elementi
  • 5. Gli Arrays Un esempio di definizione di un array in C e' : nome array dimensione tipo int elenco_numeri[50]; e si accede agli elementi dell'array nel seguente modo: terzo_numero = elenco_numeri[2]; elenco_numeri[49] = 100;
  • 6. Gli Arrays: rappresentazione ideale int elenco_numeri[50]; ? ? ? ? ? 0 1 2 3 49 terzo_numero = elenco_numeri[2]; elenco_numeri[49] = 100; terzo_numero ? ? X ? 100 0 1 2 3 49
  • 7. Indicizzazione degli array In C gli indici delle celle iniziano da 0 e finiscono alla dimensione dell'array meno uno. Nell'esempio precedente il range è 0-49, cioè elenco_numeri è un array di 50 elementi e si ha: elenco_numeri[0], elenco_numeri[1], ..., elenco_numeri[49] Questa è una caratteristica tipica dei moderni linguaggi di programmazione e richiede un po' di pratica per raggiungere "la giusta disposizione d'animo".
  • 8. Esempio Array Creare un array di 10 elementi di tipo integer (int) Assegnare ad esso 10 valori a piacere Stampare il contenuto dell‟array che si è creato
  • 9. Soluzione Array #include <stdio.h> #include <stdlib.h> int main() { int arrayInteri[10]; arrayInteri[0] = 15; int i; for(i = 1; i < 10; i++) { arrayInteri[ i ] = (arrayInteri[ i – 1 ] + 10); } for(i = 0; i < 10; i++) { printf("cella %d = %dn", i, arrayInteri[ i ]); } system("PAUSE"); }
  • 10. Output soluzione array cella 0 = 15 cella 1 = 25 cella 2 = 35 cella 3 = 45 cella 4 = 55 cella 5 = 65 cella 6 = 75 cella 7 = 85 cella 8 = 95 cella 9 = 105 Premere un tasto per continuare . . .
  • 11. Esercizio Fibonacci Scrivere un programma che generi i primi 12 interi della successione di Fibonacci, li salvi in un array di interi e stampi la successione a video Qual è l‟espressione analitica della successione di Fibonacci? Help: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89
  • 12. Successione di Fibonacci La successione di Fibonacci è una sequenza di numeri interi naturali definibile assegnando i valori dei due primi termini, F0:= 0 ed F1:= 1, e chiedendo che per ogni successivo sia Fn := Fn-1 + Fn-2. Il termine F0 viene aggiunto nel caso si voglia fare iniziare la successione con 0; storicamente il primo termine della successione è F1:= 1.
  • 13. Soluzione Fibonacci #include <stdio.h> #include <stdlib.h> int main() { int successione_Fibonacci[12]; int f0 = 0, f1 = 1, i; successione_Fibonacci[0] = 0; successione_Fibonacci[1] = 1; for(i = 2; i < 12; i++){ successione_Fibonacci[i] = successione_Fibonacci[ i – 1 ] + successione_Fibonacci[ i – 2 ]; } for(i = 0; i < 12; i++){ printf("%dn", successione_Fibonacci[ i ]); } system("PAUSE"); }
  • 14. Output Fibonacci 0 1 1 2 3 5 8 13 21 34 55 89 Premere un tasto per continuare . . .
  • 15. Le matrici Le matrici non sono altro che array multidimensionali 0 [0][0] [0][1] righe Notazione C: matrice[righe][colonne] 1 [1][0] [1][1] 0 1 colonne
  • 16. Gli Array multidimensionali Gli array multidimensionali sono cosi definiti: int tabella_numeri[50][50] (per due dimensioni) int big_D[20][30][10][40] (per più di due dimensioni)
  • 17. Indicizzazione degli Array multidimensionali si accede agli elementi di un array multidimensionale nel seguente modo: numero = tabella_numeri[5][32]; tabella_numeri[1][23] = 100;
  • 18. Esempio Matrici #include <stdio.h> #include <stdlib.h> int main() { int matrice[2][2], i, j; matrice[0][0] = 1; matrice[0][1] = 2; matrice[1][0] = 3; matrice[1][1] = 4; for(i = 0; i < 2; i++) for(j = 0; j < 2; j++) printf("matrice[%d][%d] = %dn", i, j, matrice[ i ][ j ]); system("PAUSE"); }
  • 19. Output Matrici matrice[0][0] = 1 matrice[0][1] = 2 matrice[1][0] = 3 matrice[1][1] = 4 Premere un tasto per continuare . . .
  • 20. Le stringhe In C le stringhe sono definite come array di caratteri. Ad esempio, la seguente istruzione definisce una stringa di 50 caratteri: char name[50];
  • 21. Gestione delle stringhe Il C non ha un sistema maneggevole per costruire le stringhe, così le seguenti assegnazioni NON SONO VALIDE: char firstname[50], lastname[50], fullname[50]; firstname = "Mario" /* illegale */ lastname = "Rossi" /* illegale */ fullname = "Sig."+firstname+lastname /* illegale */ Esiste pero' una libreria di routines per il trattamento delle stringhe ("< string.h >").
  • 22. Stampare una stringa Per stampare una stringa si usa printf() con lo speciale carattere di controllo %s: printf("%s", nome); Nota: è sufficiente avere il nome della stringa.
  • 23. Esempio stampa di una stringa #include <stdio.h> #include <stdlib.h> main() { char string_nome[80]; printf("inserisci il tuo nome:n"); scanf("%s", string_nome); printf("NOME: %sn", string_nome); //ulteriore modo di stampare il nome printf("NOME IN ALTRO MODO: %sn", &string_nome[0]); system("PAUSE"); }
  • 24. Output stampa di una stringa inserisci il tuo nome: antonio NOME: antonio NOME IN ALTRO MODO: antonio Premere un tasto per continuare . . .
  • 25. il carattere „0‟ Al fine di permettere l'utilizzo di stringhe con lunghezza variabile, il carattere 0 viene utilizzato per indicare la fine di una stringa. In questo modo, se abbiamo una stringa dichiarata di 50 caratteri (char name[50];), e la utilizziamo per memorizzare il nome "Dave", il suo contenuto (a partire da sinistra) sarà la parola Dave immediatamente seguita dal segno di fine stringa 0, e quindi tutti gli altri caratteri (fino ad arrivare alla lunghezza di 50) risulteranno vuoti.
  • 26. Esercizio Stringhe Dichiarare un array di 6 elementi di tipo char. Inserire in tale array la stringa “DINO” Stampare a video il contenuto dell‟array di 6 elementi dichiarato in precedenza.
  • 27. Soluzione esercizio Stringhe #include <stdio.h> #include <stdlib.h> int main() { char nome[6]; nome[0] = 'D'; nome[1] = 'I'; nome[2] = 'N'; nome[3] = 'O'; printf("prova stampa DINO = %sn", nome); nome[4] = '0'; printf("RI-prova stampa DINO = %sn", nome); system("PAUSE"); }
  • 28. Output esercizio Stringhe prova stampa DINO = DINO$³¨☻CÂÇ|¿ # RI-prova stampa DINO = DINO Premere un tasto per continuare . . .
  • 29. Spiegazione esercizio Stringhe char nome[6]; ? ? ? ? ? ? nome[0] = 'D'; nome[1] = 'I'; nome[2] = 'N'; D I N O ? ? nome[3] = 'O'; nome[4] = „0'; D I N O 0 ? Senza „0‟ la printf non può conoscere la fine della stringa che si vuole stampare, quindi vengono stampati anche valori ignoti (tipo $³¨☻CÂÇ|¿ #)
  • 30. Le Funzioni il C considera "main()" come una funzione. La forma generale di una funzione e': returntype function_name (param1, param2, ...) { local variables function code (C statements) }
  • 31. Tipo di ritorno Se manca la definizione del tipo della funzione ("returntype", tipo della variabile di ritorno della funzione), il C assume che il ritorno della funzione sia di tipo integer (int); ATTENZIONE: questo può essere una delle cause di problemi nei programmi.
  • 32. Esempio Esempio di una funzione che calcola la media tra due valori: argomenti valore di ritorno float calcolamedia(float a, float b) { float media; media = (a + b) / 2; return(media); }
  • 33. Eseguire una funzione Per richiamare tale funzione si procede nel seguente modo: main() { float a = 10, b = 25, risultato; risultato = calcolamedia(a, b); printf("Valore medio = %fn", risultato); } Nota: l'istruzione "return" porta il risultato della funzione al programma principale.
  • 34. Programma calcola media #include <stdio.h> #include <stdlib.h> float calcolamedia(float a, float b) { float media; media = (a + b) / 2; return(media); } main() { float a = 10, b = 25, risultato; risultato = calcolamedia(a, b); printf("Valore medio = %fn", risultato); }
  • 35. Domanda Cosa succede se inverto l‟ordine delle funzioni? #include <stdio.h> #include <stdlib.h> main(){ float a = 10, b = 25, risultato; risultato = calcolamedia(a, b); printf("Valore medio = %fn", risultato); } float calcolamedia(float a, float b){ float media; media = (a + b) / 2; return(media); }
  • 36. Risposta Il compilatore non può sapere cos‟è “calcolamedia” #include <stdio.h> #include <stdlib.h> float calcolamedia(float a, float b); la funzione main(){ float a = 10, b = 25, risultato; prima risultato = calcolamedia(a, b); printf("Valore medio = %fn", va dichiarata risultato); } float calcolamedia(float a, float b){ poi float media; va usata media = (a + b) / 2; return(media); }
  • 37. Prototipi di funzioni Prima di usare una funzione, il C deve riconoscere il tipo di ritorno e il tipo dei parametri che la funzione si aspetta. Va fatta una dichiarazione Lo standard ANSI del C ha introdotto un nuovo e migliore metodo per fare questa dichiarazione rispetto alle vecchie versioni di C (ricordiamo che le moderne versioni del C aderiscono allo standard ANSI).
  • 38. Dichiarazione di funzione L'importanza della dichiarazione e' doppia: - viene fatta per avere un codice sorgente più strutturato e perciò facile da leggere ed interpretare; - permette al compilatore C di controllare la sintassi delle chiamate di funzioni.
  • 39. Dichiarazione di funzione (2) Fondamentalmente, se una funzione e' stata definita prima di essere usata (call) allora è possibile semplicemente usare la funzione. Nel caso contrario, è obbligatorio dichiarare la funzione; la dichiarazione stabilisce in modo semplice il ritorno della funzione ed il tipo dei parametri utilizzati da questa. E' buona norma (e solitamente viene fatto) dichiarare tutte le funzioni all'inizio del programma, sebbene non sia strettamente necessario.
  • 40. Dichiarazione di funzione (3) Per dichiarare un prototipo di funzione bisogna semplicemente stabilire il ritorno della funzione, il nome della funzione e tra le parentesi elencare il tipo dei parametri nell'ordine in cui compaiono nella definizione di funzione. Ad esempio: int strlen(char[]); Questo dichiara che una funzione di nome "strlen" ritorna un valore integer ed accetta una singola stringa come parametro.
  • 41. Una scorciatoia le funzioni e le variabili possono essere dichiarate sulla stessa linea di codice sorgente. Questa procedura era molto piu' diffusa nei giorni del pre-ANSI C; da allora le funzioni solitamente vengono dichiarate separatamente all'inizio del programma. La prima procedura risulta ancora perfettamente valida, purchè venga rispettato l'ordine in cui gli oggetti compaiono nella definizione della funzione. int length, strlen(char[]); dove "length" e' una variabile, e "strlen" e' la funzione (come nell'esempio precedente).
  • 42. Funzioni “void” Se non si vuole ritornare alcun valore da una funzione è sufficiente dichiararla di tipo void ed omettere il return. void cento(){ int loop; for (loop = 0; loop < 10; loop++); printf("%dn", loop * loop); } main(){ cento(); } Nota: è obbligatorio mettere le parentesi () dopo il nome della funzione anche se non ci sono parametri.
  • 43. Funzioni ed array Possono essere passati alle funzioni come parametri anche array singoli o multidimensionali. Gli array monodimensionali possono essere passati nel seguente modo: float trovamedia(int size,float list[]){ int i; float sum = 0.0; for (i = 0; i < size; i++) sum += list[i]; return(sum/size); }
  • 44. Spiegazione Nella precedente funzione “trovamedia” la dichiarazione "float list[]" dichiara al C che "list" è un array di float. Non viene specificata la dimensione di un array quando è un parametro di una funzione.
  • 45. Esempio d‟uso per “trovamedia” #include <stdio.h> #include <stdlib.h> //dichiarazione di funzione float trovamedia(int size, float list[]); //main main(){ OUTPUT float numeri[2]; la media e' 2.400000 numeri[0] = 1.2; numeri[1] = 3.6; float media = trovamedia(2, numeri); Premere un tasto per continuare . . . printf("la media e' %fn", media); system("PAUSE"); } //codice della funzione float trovamedia(int size,float list[]){ int i; float sum = 0.0; for (i = 0; i < size; i++) sum += list[i]; return(sum/size); }
  • 46. Funzioni ed array multidimensionali Array multidimensionali possono essere passati alle funzioni nel seguente modo: void stampatabella(int xsize, int ysize, float tabella[][5]) { int x,y; for (x = 0; x < xsize; x++) { for (y = 0; y < ysize; y++) printf(“t%f ”, tabella[x][y]); printf("n"); } }
  • 47. Spiegazione Nella precedente funzione “stampatabella”, la parte di codice "float tabella[][5]" dichiara al C che tabella è un array di float di dimensioni nx5. E' importante notare che dobbiamo specificare la seconda dimensione (e le successive) del vettore, ma non la prima dimensione.
  • 48. Riepilogo: array e funzioni riepilogando, nel caso di array singoli non e' necessario specificare la dimensione dell'array nella definizione come parametro della funzione, mentre nel caso di array multidimensionali si può non specificare solo la prima dimensione.
  • 49. Esercizio: array e funzioni Si scriva un programma che prenda in ingresso da tastiera 10 interi, li memorizzi in un array, ordini tale array e stampi la lista dei numeri inseriti dall‟utente e la stessa lista ordinata. Esempio: Input: 1 3 2 23 43 521 98 43 9 10 Output: 1 2 3 9 10 23 43 43 98 521