SlideShare a Scribd company logo
1 of 26
Download to read offline
Abilità Informatiche
  Ingegneria Chimica
Lezione 6 del 12/03/2012




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:   Per appuntamento antonino.stelitano@uniroma1.it

                                    stelitano.a@libero.it

Sito web:      http://w3.uniroma1.it/IngChim/Ainf
Dev-Cpp su VISTA


• Aggiungere il percorso "C:Dev-
  Cpplibexecgccmingw323.4.2" come voce all'interno
  del tab file binari delle opzioni di compilazione
   – Strumenti->Opzioni di compilazione->Cartelle->File Binari
• Spostarsi sempre all'interno del menu di Opzioni di
  compilazione sul tab Programmi ed immettere come prefisso
  ad ogni eseguibile mostrato il percorso "c:dev-cppbin"
Correzione esercizi del laboratorio
Errori ricorrenti
• Errata comprensione del testo o definizione
  dell‟algoritmo
   – Se il testo mostra un esempio (come il rettangolo
     fatto di =) non vuol dire che il programma debba
     fare solo ed esattamente quello riportato
     nell‟esempio!
   – Pensare prima a come risolvere il problema e solo
     dopo implementarne la soluzione
         1. individuare l‟algoritmo
         2. scrivere il codice
scanf e printf
• scanf serve solo per chiedere all‟utente un dato

• in printf devo mettere tanti %tipodato (%d, %f,
  %s, …) quante sono le variabili che voglio stampare
   – devo poi, alla fine della printf, scrivere tanti nomi
     di variabile quanti sono i %tipodato indicati
varie

• Chiudere sempre l‟ultima finestra in cui il
  programma è stato eseguito
   – Successive compilazioni ed esecuzioni non
     funzioneranno
Separa numero
1.   Scrivere un programma che legga da standard input un
     intero in base 10 di quattro cifre e le visualizzi su
     standard output una ad una, separandole con un
     carattere di tabulazione

     Inserire un numero intero positivo di 4 cifre: 1492

     1   4     9     2
     Premere un tasto per continuare . . .




                                                             8
Soluzione separa
/*
Scrivere un programma che legga da standard input un
intero in base 10 di quattro cifre e le visualizzi su
standard output una ad una, separandole con un carattere di tabulazione

*/

#include <stdio.h>
#include <stdlib.h>

int main(void){
   int numero;

     int cifra1, cifra2, cifra3, cifra4;

     printf("Numero da separare : ");
     scanf("%d",&numero);
Soluzione separa (2)
    if ( (numero>1000) && (numero<9999) )
    {
       /*il C restituisce solamente la parte intera del risultato. Se esiste un resto, questo è
      perso */

        cifra1 = numero % 10;
        cifra2 = (numero / 10) % 10;
        cifra3 = (numero / 100) % 10;
        cifra4 = (numero / 1000) % 10;

         printf("Il numero %d diviso e': %d %d %d %dn", numero, cifra4, cifra3, cifra2,
        cifra1);

    }

    system("pause");
    return 0;

}
Esercizi (2/5)
3.   Scrivere un programma che legga da standard input una temperatura
     espressa in gradi Fahrenheit e visualizzi su standard output il valore
     corrispondente in gradi Celsius.
     La formula per effettuare la conversione da Fahrenheit a Celsius è la
     seguente:

                              C=temperatura in gradi Celsius
                              F=temperatura in gradi Fahrenheit




      Valore in gradi Fahrenheit = 451
      Valore in gradi Celsius = 232.777786
      Premere un tasto per continuare . . .




                                                                              11
Esercizi (3/5)
4.   Estendere il programma precedente in modo tale che l‟utente possa
     scegliere se effettuare la conversione da Farhenheit a Celsius o viceversa.
     Il programma deve leggere da standard input un intero che identifica la
     scelta dell‟utente: nel caso in cui il valore letto sia 1 si deve effettuare la
     conversione da Fahrenheit a Celsius, nel caso sia 2 si deve effettuare la
     conversione inversa.
     La formula per effettuare la conversione da Celsius a Fahrenheit è la
     seguente:
                                 C=temperatura in gradi Celsius
                                 F=temperatura in gradi Fahrenheit



       Premi
       '1' per trasformare da F a C
       '2' per trasformare da C a F
       Scelta: 2

       Valore in gradi Celsius = 100
       Valore in gradi Fahrenheit = 212.000000
       Premere un tasto per continuare . . .
                                                                                       12
Soluzione es. 2 e 3
int scelta;
float F,C;

  do
  {
       printf("1) F->Cn");
       printf("2) C->Fn");
       printf("3) Escin");

       scanf("%d",&scelta);

       if (scelta==1)
       {
          printf("F = ");
          scanf("%f",&F);

           C = (5.0/9.0) * (F - 32.0);

           printf("n%f F = %f Cn",F,C);
       }
Soluzione es. 2 e 3
  if (scelta==2)
  {
     printf("C = ");
     scanf("%f",&C);

      F = ((9.0/5.0) * C) + 32.0;

      printf("n%f C = %f Fn",C,F);

  }

}
while (scelta!=3);
Esercizi (4/5)


5.   Scrivere un programma che legga da standard input un carattere, che
     rappresenta un operatore („*‟, „+‟, „-‟, „/‟), e due numeri reali, e stampi su
     standard output il risultato dell‟operazione corrispondente al carattere.


     Inserire l'operazione da effettuare ('+', '-', '*', '/'): *
     Inserire due numeri reali: 2.2 3.2
     2.200000 * 3.200000 = 7.040000
     Premere un tasto per continuare . . .




                                                                                      15
Soluzione es. 4
float n1, n2;
  char operatore;

 printf("nOperatore : ");
 scanf("%c",&operatore);

 printf("nNumero 1 : ");
 scanf("%f",&n1);

 printf("nNumero 2 : ");
 scanf("%f",&n2);

 printf ("n%f %c %f = ",n1,operatore,n2);

 if   (operatore=='+') printf ("%fn",n1+n2);
 if   (operatore=='-') printf ("%fn",n1-n2);
 if   (operatore=='*') printf ("%fn",n1*n2);
 if   (operatore=='/') printf ("%fn",n1/n2);
Esercizi (5/5)
7.   Scrivere un programma che, letti da standard input tre numeri interi,
     visualizzi su stdout, a seconda dei casi, uno dei seguenti messaggi:
        • “tutti diversi”
        • “due uguali e uno diverso”
        • “tutti uguali”


     Inserire tre numeri interi: 2 5 1
     Tutti diversi
     Premere un tasto per continuare . . .




                                                                             17
Soluzione es. 5
int n1, n2, n3;

  printf("nNumero 1: ");
  scanf("%d",&n1);

  printf("nNumero 2: ");
  scanf("%d",&n2);

  printf("nNumero 3: ");
  scanf("%d",&n3);

  if (( n1 == n2 ) && (n2 == n3)) printf("Tutti ugualin");
  else
  {
     if ((n1 == n2) || (n2 == n3) || (n1==n3)) printf("Due ugualin");
     else printf("Tutti diversin");

  }
Comportamento dei caratteri
#include <stdio.h>                           Intero: 89
                                             Carattere: Y
int main (void)                              Differenza: 0
                                             Differenza2:88
 { int a, b, c, e;                           Differenza2 in caratteri: X
                                             Differenza3: 88
    char d;                                  Differenza3 in caratteri:X

    a='Y'; b=89; c=1;
         printf("nIntero:%dtn", a);
         printf("Carattere: %cn", a);
    e=a-b;
         printf("Differenza: %dn", e);
    e=a-c;
         printf("Differenza2: %dn", e);
         printf("Differenza2 in caratteri: %cn", e);
    d=a-c;
         printf("Differenza3: %dn", d);
         printf("Differenza3 in caratteri: %cn", d);
    return 0; }
Tipi Floating-point (reali)

float, double, long double
• introdotti per rappresentare frazioni e numeri molto grandi
     – 0.356        0.000001
• per dichiarare tali valori si possono usare le parole chiave
     – float
     – double
          • double sta per doppia precisione: per rappresentare i numeri
            con una precisione circa doppia rispetto a float. In genere
            – float: 4 byte
            – double: 8 byte
     – long double: per un range e precisione maggiore di double
     – su molte macchine long e double sono sinonimi
• La rappresentazione dei floating-point è un aspetto poco
    standardizzato:
     – per individuare l’intervallo dei valori ammessi e la precisione si
        veda la documentazione del compilatore (anche nel file header
        <limits.h>)
Dichiarazioni
• Variabili
    – ogni variabile deve essere dichiarata (nome e tipo) prima di essere
       usata
         • int i;
         • int j;
         • float a, b;
• Funzioni
    – una funzione viene dichiarata per il tipo di valore che restituisce
    – in mancanza di dichiarazione di tipo per una funzione, viene
       associato un tipo di dati di default (int)
    – se la funzione non restituisce valori, si usa void

•   void
     – permette di dichiarare esplicitamente una funzione che non
        restituisce alcun valore
          • void funzione (a,b) {….}
     – indica l’assenza di argomenti
          • int main (void) {… }
Espressioni
•     Un’espressione è una combinazione di operatori, numeri e identificatori che permette di
      calcolare un valore.
•     Elementi fondamentali: variabili, costanti e chiamate di funzioni
       – 5                 costante
       – j                 variabile
       – f(.. )            chiamata di funzione
       – gli elementi possono essere combinati tramite
            • operatori aritmetici
            • operatori relazionali e di uguaglianza
            • operatori logici


Istruzioni di assegnamento lvalue=rvalue;


     lvalue                        =                  rvalue                            ;



    locazione di memoria                                                espressione
Operatori aritmetici
       addizione              +    a+b

       sottrazione             -   a-b

       moltiplicazione         *   a*b

       divisione               /   a/b
                                   parte intera
       modulo                 %    a%b
                                   resto


 Operatore         Priorità
                   - valutate per prime
 ( )               - se nidificate, prima coppia più interna
                   - se allo stesso livello, da sinistra a destra
                   -valutate per seconde
 *, /, %           - se allo stesso livello, da sinistra a destra

                   -valutate per ultime
 -, +              - se allo stesso livello da sinistra a destra
Divisione intera e reale
#include <stdio.h>
int main (void)
 { int primo, secondo, ris, q, r;
    float d, a=33.567, b=2.898;
    primo=34;
    secondo=21;

    q=primo/secondo;
    r=primo%secondo;
    printf("nnDivisione: %dt Resto:%dn", q, r);

    d= a/b;
    printf("Divisione tra a e b: %fn", d);

    ris=(primo/secondo)*secondo + primo%secondo;
    printf("Valore di ris: %dn", ris);

    return 0;
}
Dati due interi positivi, calcola quoziente e resto della div. intera

 #include <stdio.h>
 int main(void)
 {
   int a, b, quoziente, resto;

     printf("Inserisci dividendo: ");
     scanf("%d", &a);
     printf("Inserisci divisore: ");
     scanf("%d", &b);

     quoziente = a / b;
     resto = a % b;

     printf("%d : %d = %d con resto di %dn",
              a, b, quoziente, resto);

     return 0;
 }
Diversi comportamenti per la divisione con 0
#include <stdio.h>
                                        Risposta on TurboC
                                                /* La divisione: +INF */
int main (void)                         Risposta in VisualC
 {                                              /* error C21: divide or mod by zero
     int numcor;
    double nreale;

    numcor=2;
    nreale = numcor / 0.0;

    printf("nnLa divisione: %fnn", nreale);

    return 1;
}

More Related Content

What's hot

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
 
05 - Programmazione: Funzioni
05 - Programmazione: Funzioni05 - Programmazione: Funzioni
05 - Programmazione: FunzioniMajong DevJfu
 
08 - Programmazione: Passaggio valori tra funzioni per riferimenti
08 - Programmazione: Passaggio valori tra funzioni per riferimenti08 - Programmazione: Passaggio valori tra funzioni per riferimenti
08 - Programmazione: Passaggio valori tra funzioni per riferimentiMajong DevJfu
 
03 - Programmazione: Istruzioni C++
03 - Programmazione: Istruzioni C++03 - Programmazione: Istruzioni C++
03 - Programmazione: Istruzioni C++Majong DevJfu
 
Esercitazione 1 (27 febbraio 2012)
Esercitazione 1 (27 febbraio 2012)Esercitazione 1 (27 febbraio 2012)
Esercitazione 1 (27 febbraio 2012)STELITANO
 
Laboratorio Programmazione: Overflow e switch
Laboratorio Programmazione: Overflow e switchLaboratorio Programmazione: Overflow e switch
Laboratorio Programmazione: Overflow e switchMajong DevJfu
 
Lezione 5 (7 marzo 2012)
Lezione 5 (7 marzo 2012)Lezione 5 (7 marzo 2012)
Lezione 5 (7 marzo 2012)STELITANO
 
9 Altre Istruzioni Di I O
9   Altre Istruzioni Di I O9   Altre Istruzioni Di I O
9 Altre Istruzioni Di I Oguest60e9511
 
Esercitazione 4 (19 marzo 2012)
Esercitazione 4 (19 marzo 2012)Esercitazione 4 (19 marzo 2012)
Esercitazione 4 (19 marzo 2012)STELITANO
 
Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)STELITANO
 
Esercitazione 3 (14 marzo 2012)
Esercitazione 3 (14 marzo 2012)Esercitazione 3 (14 marzo 2012)
Esercitazione 3 (14 marzo 2012)STELITANO
 
10 - Programmazione: Tipi di dato strutturati
10 - Programmazione: Tipi di dato strutturati10 - Programmazione: Tipi di dato strutturati
10 - Programmazione: Tipi di dato strutturatiMajong DevJfu
 
6 Vettori E Matrici
6   Vettori E Matrici6   Vettori E Matrici
6 Vettori E Matriciguest60e9511
 
Vogliamo programmatori stupidi e pigri!
Vogliamo programmatori stupidi e pigri!Vogliamo programmatori stupidi e pigri!
Vogliamo programmatori stupidi e pigri!Marcello Missiroli
 

What's hot (20)

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
 
05 - Programmazione: Funzioni
05 - Programmazione: Funzioni05 - Programmazione: Funzioni
05 - Programmazione: Funzioni
 
08 - Programmazione: Passaggio valori tra funzioni per riferimenti
08 - Programmazione: Passaggio valori tra funzioni per riferimenti08 - Programmazione: Passaggio valori tra funzioni per riferimenti
08 - Programmazione: Passaggio valori tra funzioni per riferimenti
 
03 - Programmazione: Istruzioni C++
03 - Programmazione: Istruzioni C++03 - Programmazione: Istruzioni C++
03 - Programmazione: Istruzioni C++
 
Esercitazione 1 (27 febbraio 2012)
Esercitazione 1 (27 febbraio 2012)Esercitazione 1 (27 febbraio 2012)
Esercitazione 1 (27 febbraio 2012)
 
Laboratorio Programmazione: Overflow e switch
Laboratorio Programmazione: Overflow e switchLaboratorio Programmazione: Overflow e switch
Laboratorio Programmazione: Overflow e switch
 
Lezione 5 (7 marzo 2012)
Lezione 5 (7 marzo 2012)Lezione 5 (7 marzo 2012)
Lezione 5 (7 marzo 2012)
 
Linguaggio C++ - Basi
Linguaggio C++ - BasiLinguaggio C++ - Basi
Linguaggio C++ - Basi
 
9 Altre Istruzioni Di I O
9   Altre Istruzioni Di I O9   Altre Istruzioni Di I O
9 Altre Istruzioni Di I O
 
Esercitazione 4 (19 marzo 2012)
Esercitazione 4 (19 marzo 2012)Esercitazione 4 (19 marzo 2012)
Esercitazione 4 (19 marzo 2012)
 
Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)
 
La metodologia Top - Down - applicazione al C++
La metodologia Top - Down - applicazione al C++La metodologia Top - Down - applicazione al C++
La metodologia Top - Down - applicazione al C++
 
Esercitazione 3 (14 marzo 2012)
Esercitazione 3 (14 marzo 2012)Esercitazione 3 (14 marzo 2012)
Esercitazione 3 (14 marzo 2012)
 
I sotto programmi in Python 3
I sotto programmi in Python 3I sotto programmi in Python 3
I sotto programmi in Python 3
 
I cicli in Python 3
I cicli in Python 3I cicli in Python 3
I cicli in Python 3
 
10 - Programmazione: Tipi di dato strutturati
10 - Programmazione: Tipi di dato strutturati10 - Programmazione: Tipi di dato strutturati
10 - Programmazione: Tipi di dato strutturati
 
Informatica di base
Informatica di baseInformatica di base
Informatica di base
 
Programmazione Top Down in C++
Programmazione Top Down in C++Programmazione Top Down in C++
Programmazione Top Down in C++
 
6 Vettori E Matrici
6   Vettori E Matrici6   Vettori E Matrici
6 Vettori E Matrici
 
Vogliamo programmatori stupidi e pigri!
Vogliamo programmatori stupidi e pigri!Vogliamo programmatori stupidi e pigri!
Vogliamo programmatori stupidi e pigri!
 

Viewers also liked

Lezione 10 (21 marzo 2012)2
Lezione 10 (21 marzo 2012)2Lezione 10 (21 marzo 2012)2
Lezione 10 (21 marzo 2012)2STELITANO
 
Styrketræning i det fri Rød team4
Styrketræning i det fri Rød team4Styrketræning i det fri Rød team4
Styrketræning i det fri Rød team4lenepeters
 
Dispenza aloisi
Dispenza aloisiDispenza aloisi
Dispenza aloisiSTELITANO
 
Styrketræning i det fri Rød team 2
Styrketræning i det fri Rød team 2Styrketræning i det fri Rød team 2
Styrketræning i det fri Rød team 2lenepeters
 
Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)STELITANO
 
Eserc v del 26 marzo 2012
 Eserc v del 26 marzo 2012 Eserc v del 26 marzo 2012
Eserc v del 26 marzo 2012STELITANO
 
Lezione 23 (9 maggio 2012)
Lezione 23 (9 maggio 2012)Lezione 23 (9 maggio 2012)
Lezione 23 (9 maggio 2012)STELITANO
 
Styrketræning i det fri Rød team 1
Styrketræning i det fri Rød team 1Styrketræning i det fri Rød team 1
Styrketræning i det fri Rød team 1lenepeters
 

Viewers also liked (8)

Lezione 10 (21 marzo 2012)2
Lezione 10 (21 marzo 2012)2Lezione 10 (21 marzo 2012)2
Lezione 10 (21 marzo 2012)2
 
Styrketræning i det fri Rød team4
Styrketræning i det fri Rød team4Styrketræning i det fri Rød team4
Styrketræning i det fri Rød team4
 
Dispenza aloisi
Dispenza aloisiDispenza aloisi
Dispenza aloisi
 
Styrketræning i det fri Rød team 2
Styrketræning i det fri Rød team 2Styrketræning i det fri Rød team 2
Styrketræning i det fri Rød team 2
 
Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)Lezione 11 (26 marzo 2012)
Lezione 11 (26 marzo 2012)
 
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 23 (9 maggio 2012)
Lezione 23 (9 maggio 2012)Lezione 23 (9 maggio 2012)
Lezione 23 (9 maggio 2012)
 
Styrketræning i det fri Rød team 1
Styrketræning i det fri Rød team 1Styrketræning i det fri Rød team 1
Styrketræning i det fri Rød team 1
 

Similar to Lezione 6 (12 marzo 2012)

Lezione 8 (12 marzo 2012)
Lezione 8 (12 marzo 2012)Lezione 8 (12 marzo 2012)
Lezione 8 (12 marzo 2012)STELITANO
 
Fondamenti di Informatica - Esercitazione3 (1).pdf
Fondamenti di Informatica - Esercitazione3 (1).pdfFondamenti di Informatica - Esercitazione3 (1).pdf
Fondamenti di Informatica - Esercitazione3 (1).pdflorenzosalvi30
 
Caratteristiche del linguaggio c
Caratteristiche del linguaggio cCaratteristiche del linguaggio c
Caratteristiche del linguaggio cughetta
 
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
 
Algoritmi e Programmazione Avanzata - Esercizi propedeutici
Algoritmi e Programmazione Avanzata - Esercizi propedeuticiAlgoritmi e Programmazione Avanzata - Esercizi propedeutici
Algoritmi e Programmazione Avanzata - Esercizi propedeuticiSergio Porcu
 
Lezione 21 (2 maggio 2012)
Lezione 21 (2 maggio 2012)Lezione 21 (2 maggio 2012)
Lezione 21 (2 maggio 2012)STELITANO
 
Analizzatori di programmi in C
Analizzatori di programmi in CAnalizzatori di programmi in C
Analizzatori di programmi in CBoymix81
 
Let's give it a GO!
Let's give it a GO!Let's give it a GO!
Let's give it a GO!MarioTraetta
 
Sistemi Operativi: Il kernel linux - Lezione 06
Sistemi Operativi: Il kernel linux - Lezione 06Sistemi Operativi: Il kernel linux - Lezione 06
Sistemi Operativi: Il kernel linux - Lezione 06Majong DevJfu
 
Laboratorio Programmazione: In - Out variabili
Laboratorio Programmazione: In - Out variabiliLaboratorio Programmazione: In - Out variabili
Laboratorio Programmazione: In - Out variabiliMajong DevJfu
 
Soluzioni abilità informatiche 16 maggio 2012
Soluzioni abilità informatiche 16 maggio 2012Soluzioni abilità informatiche 16 maggio 2012
Soluzioni abilità informatiche 16 maggio 2012STELITANO
 
Soluzione esonero del 4 aprile 2012
Soluzione esonero del 4 aprile 2012Soluzione esonero del 4 aprile 2012
Soluzione esonero del 4 aprile 2012STELITANO
 
Lezione 16 (2 aprile 2012)
Lezione 16 (2 aprile 2012)Lezione 16 (2 aprile 2012)
Lezione 16 (2 aprile 2012)STELITANO
 

Similar to Lezione 6 (12 marzo 2012) (17)

Lezione 8 (12 marzo 2012)
Lezione 8 (12 marzo 2012)Lezione 8 (12 marzo 2012)
Lezione 8 (12 marzo 2012)
 
Fondamenti di Informatica - Esercitazione3 (1).pdf
Fondamenti di Informatica - Esercitazione3 (1).pdfFondamenti di Informatica - Esercitazione3 (1).pdf
Fondamenti di Informatica - Esercitazione3 (1).pdf
 
7 Sottoprogrammi
7   Sottoprogrammi7   Sottoprogrammi
7 Sottoprogrammi
 
Caratteristiche del linguaggio c
Caratteristiche del linguaggio cCaratteristiche del linguaggio c
Caratteristiche del linguaggio c
 
Riepilogo Java C/C++
Riepilogo Java C/C++Riepilogo Java C/C++
Riepilogo Java C/C++
 
La scomposizione in sotto programmi in C++.pptx
La scomposizione in sotto programmi in C++.pptxLa scomposizione in sotto programmi in C++.pptx
La scomposizione in sotto programmi in C++.pptx
 
Algoritmi
Algoritmi Algoritmi
Algoritmi
 
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
 
Algoritmi e Programmazione Avanzata - Esercizi propedeutici
Algoritmi e Programmazione Avanzata - Esercizi propedeuticiAlgoritmi e Programmazione Avanzata - Esercizi propedeutici
Algoritmi e Programmazione Avanzata - Esercizi propedeutici
 
Lezione 21 (2 maggio 2012)
Lezione 21 (2 maggio 2012)Lezione 21 (2 maggio 2012)
Lezione 21 (2 maggio 2012)
 
Analizzatori di programmi in C
Analizzatori di programmi in CAnalizzatori di programmi in C
Analizzatori di programmi in C
 
Let's give it a GO!
Let's give it a GO!Let's give it a GO!
Let's give it a GO!
 
Sistemi Operativi: Il kernel linux - Lezione 06
Sistemi Operativi: Il kernel linux - Lezione 06Sistemi Operativi: Il kernel linux - Lezione 06
Sistemi Operativi: Il kernel linux - Lezione 06
 
Laboratorio Programmazione: In - Out variabili
Laboratorio Programmazione: In - Out variabiliLaboratorio Programmazione: In - Out variabili
Laboratorio Programmazione: In - Out variabili
 
Soluzioni abilità informatiche 16 maggio 2012
Soluzioni abilità informatiche 16 maggio 2012Soluzioni abilità informatiche 16 maggio 2012
Soluzioni abilità informatiche 16 maggio 2012
 
Soluzione esonero del 4 aprile 2012
Soluzione esonero del 4 aprile 2012Soluzione esonero del 4 aprile 2012
Soluzione esonero del 4 aprile 2012
 
Lezione 16 (2 aprile 2012)
Lezione 16 (2 aprile 2012)Lezione 16 (2 aprile 2012)
Lezione 16 (2 aprile 2012)
 

More from STELITANO

Lezione 22 (7 maggio 2012)
Lezione 22 (7 maggio 2012)Lezione 22 (7 maggio 2012)
Lezione 22 (7 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 13 (2 aprile 2012)
Lezione 13 (2 aprile 2012)Lezione 13 (2 aprile 2012)
Lezione 13 (2 aprile 2012)STELITANO
 
Lezione 13 (2 aprile 2012)
Lezione 13 (2 aprile 2012)Lezione 13 (2 aprile 2012)
Lezione 13 (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
 
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 - puntatoriSTELITANO
 
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)
Lezione 10 (21 marzo 2012)Lezione 10 (21 marzo 2012)
Lezione 10 (21 marzo 2012)STELITANO
 

More from STELITANO (15)

Risultati
RisultatiRisultati
Risultati
 
Lezione 22 (7 maggio 2012)
Lezione 22 (7 maggio 2012)Lezione 22 (7 maggio 2012)
Lezione 22 (7 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 13 (2 aprile 2012)
Lezione 13 (2 aprile 2012)Lezione 13 (2 aprile 2012)
Lezione 13 (2 aprile 2012)
 
Lezione 13 (2 aprile 2012)
Lezione 13 (2 aprile 2012)Lezione 13 (2 aprile 2012)
Lezione 13 (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
 
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
 
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)
Lezione 10 (21 marzo 2012)Lezione 10 (21 marzo 2012)
Lezione 10 (21 marzo 2012)
 

Lezione 6 (12 marzo 2012)

  • 1. Abilità Informatiche Ingegneria Chimica Lezione 6 del 12/03/2012 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: Per appuntamento antonino.stelitano@uniroma1.it stelitano.a@libero.it Sito web: http://w3.uniroma1.it/IngChim/Ainf
  • 3. Dev-Cpp su VISTA • Aggiungere il percorso "C:Dev- Cpplibexecgccmingw323.4.2" come voce all'interno del tab file binari delle opzioni di compilazione – Strumenti->Opzioni di compilazione->Cartelle->File Binari • Spostarsi sempre all'interno del menu di Opzioni di compilazione sul tab Programmi ed immettere come prefisso ad ogni eseguibile mostrato il percorso "c:dev-cppbin"
  • 5. Errori ricorrenti • Errata comprensione del testo o definizione dell‟algoritmo – Se il testo mostra un esempio (come il rettangolo fatto di =) non vuol dire che il programma debba fare solo ed esattamente quello riportato nell‟esempio! – Pensare prima a come risolvere il problema e solo dopo implementarne la soluzione 1. individuare l‟algoritmo 2. scrivere il codice
  • 6. scanf e printf • scanf serve solo per chiedere all‟utente un dato • in printf devo mettere tanti %tipodato (%d, %f, %s, …) quante sono le variabili che voglio stampare – devo poi, alla fine della printf, scrivere tanti nomi di variabile quanti sono i %tipodato indicati
  • 7. varie • Chiudere sempre l‟ultima finestra in cui il programma è stato eseguito – Successive compilazioni ed esecuzioni non funzioneranno
  • 8. Separa numero 1. Scrivere un programma che legga da standard input un intero in base 10 di quattro cifre e le visualizzi su standard output una ad una, separandole con un carattere di tabulazione Inserire un numero intero positivo di 4 cifre: 1492 1 4 9 2 Premere un tasto per continuare . . . 8
  • 9. Soluzione separa /* Scrivere un programma che legga da standard input un intero in base 10 di quattro cifre e le visualizzi su standard output una ad una, separandole con un carattere di tabulazione */ #include <stdio.h> #include <stdlib.h> int main(void){ int numero; int cifra1, cifra2, cifra3, cifra4; printf("Numero da separare : "); scanf("%d",&numero);
  • 10. Soluzione separa (2) if ( (numero>1000) && (numero<9999) ) { /*il C restituisce solamente la parte intera del risultato. Se esiste un resto, questo è perso */ cifra1 = numero % 10; cifra2 = (numero / 10) % 10; cifra3 = (numero / 100) % 10; cifra4 = (numero / 1000) % 10; printf("Il numero %d diviso e': %d %d %d %dn", numero, cifra4, cifra3, cifra2, cifra1); } system("pause"); return 0; }
  • 11. Esercizi (2/5) 3. Scrivere un programma che legga da standard input una temperatura espressa in gradi Fahrenheit e visualizzi su standard output il valore corrispondente in gradi Celsius. La formula per effettuare la conversione da Fahrenheit a Celsius è la seguente: C=temperatura in gradi Celsius F=temperatura in gradi Fahrenheit Valore in gradi Fahrenheit = 451 Valore in gradi Celsius = 232.777786 Premere un tasto per continuare . . . 11
  • 12. Esercizi (3/5) 4. Estendere il programma precedente in modo tale che l‟utente possa scegliere se effettuare la conversione da Farhenheit a Celsius o viceversa. Il programma deve leggere da standard input un intero che identifica la scelta dell‟utente: nel caso in cui il valore letto sia 1 si deve effettuare la conversione da Fahrenheit a Celsius, nel caso sia 2 si deve effettuare la conversione inversa. La formula per effettuare la conversione da Celsius a Fahrenheit è la seguente: C=temperatura in gradi Celsius F=temperatura in gradi Fahrenheit Premi '1' per trasformare da F a C '2' per trasformare da C a F Scelta: 2 Valore in gradi Celsius = 100 Valore in gradi Fahrenheit = 212.000000 Premere un tasto per continuare . . . 12
  • 13. Soluzione es. 2 e 3 int scelta; float F,C; do { printf("1) F->Cn"); printf("2) C->Fn"); printf("3) Escin"); scanf("%d",&scelta); if (scelta==1) { printf("F = "); scanf("%f",&F); C = (5.0/9.0) * (F - 32.0); printf("n%f F = %f Cn",F,C); }
  • 14. Soluzione es. 2 e 3 if (scelta==2) { printf("C = "); scanf("%f",&C); F = ((9.0/5.0) * C) + 32.0; printf("n%f C = %f Fn",C,F); } } while (scelta!=3);
  • 15. Esercizi (4/5) 5. Scrivere un programma che legga da standard input un carattere, che rappresenta un operatore („*‟, „+‟, „-‟, „/‟), e due numeri reali, e stampi su standard output il risultato dell‟operazione corrispondente al carattere. Inserire l'operazione da effettuare ('+', '-', '*', '/'): * Inserire due numeri reali: 2.2 3.2 2.200000 * 3.200000 = 7.040000 Premere un tasto per continuare . . . 15
  • 16. Soluzione es. 4 float n1, n2; char operatore; printf("nOperatore : "); scanf("%c",&operatore); printf("nNumero 1 : "); scanf("%f",&n1); printf("nNumero 2 : "); scanf("%f",&n2); printf ("n%f %c %f = ",n1,operatore,n2); if (operatore=='+') printf ("%fn",n1+n2); if (operatore=='-') printf ("%fn",n1-n2); if (operatore=='*') printf ("%fn",n1*n2); if (operatore=='/') printf ("%fn",n1/n2);
  • 17. Esercizi (5/5) 7. Scrivere un programma che, letti da standard input tre numeri interi, visualizzi su stdout, a seconda dei casi, uno dei seguenti messaggi: • “tutti diversi” • “due uguali e uno diverso” • “tutti uguali” Inserire tre numeri interi: 2 5 1 Tutti diversi Premere un tasto per continuare . . . 17
  • 18. Soluzione es. 5 int n1, n2, n3; printf("nNumero 1: "); scanf("%d",&n1); printf("nNumero 2: "); scanf("%d",&n2); printf("nNumero 3: "); scanf("%d",&n3); if (( n1 == n2 ) && (n2 == n3)) printf("Tutti ugualin"); else { if ((n1 == n2) || (n2 == n3) || (n1==n3)) printf("Due ugualin"); else printf("Tutti diversin"); }
  • 19. Comportamento dei caratteri #include <stdio.h> Intero: 89 Carattere: Y int main (void) Differenza: 0 Differenza2:88 { int a, b, c, e; Differenza2 in caratteri: X Differenza3: 88 char d; Differenza3 in caratteri:X a='Y'; b=89; c=1; printf("nIntero:%dtn", a); printf("Carattere: %cn", a); e=a-b; printf("Differenza: %dn", e); e=a-c; printf("Differenza2: %dn", e); printf("Differenza2 in caratteri: %cn", e); d=a-c; printf("Differenza3: %dn", d); printf("Differenza3 in caratteri: %cn", d); return 0; }
  • 20. Tipi Floating-point (reali) float, double, long double • introdotti per rappresentare frazioni e numeri molto grandi – 0.356 0.000001 • per dichiarare tali valori si possono usare le parole chiave – float – double • double sta per doppia precisione: per rappresentare i numeri con una precisione circa doppia rispetto a float. In genere – float: 4 byte – double: 8 byte – long double: per un range e precisione maggiore di double – su molte macchine long e double sono sinonimi • La rappresentazione dei floating-point è un aspetto poco standardizzato: – per individuare l’intervallo dei valori ammessi e la precisione si veda la documentazione del compilatore (anche nel file header <limits.h>)
  • 21. Dichiarazioni • Variabili – ogni variabile deve essere dichiarata (nome e tipo) prima di essere usata • int i; • int j; • float a, b; • Funzioni – una funzione viene dichiarata per il tipo di valore che restituisce – in mancanza di dichiarazione di tipo per una funzione, viene associato un tipo di dati di default (int) – se la funzione non restituisce valori, si usa void • void – permette di dichiarare esplicitamente una funzione che non restituisce alcun valore • void funzione (a,b) {….} – indica l’assenza di argomenti • int main (void) {… }
  • 22. Espressioni • Un’espressione è una combinazione di operatori, numeri e identificatori che permette di calcolare un valore. • Elementi fondamentali: variabili, costanti e chiamate di funzioni – 5 costante – j variabile – f(.. ) chiamata di funzione – gli elementi possono essere combinati tramite • operatori aritmetici • operatori relazionali e di uguaglianza • operatori logici Istruzioni di assegnamento lvalue=rvalue; lvalue = rvalue ; locazione di memoria espressione
  • 23. Operatori aritmetici addizione + a+b sottrazione - a-b moltiplicazione * a*b divisione / a/b parte intera modulo % a%b resto Operatore Priorità - valutate per prime ( ) - se nidificate, prima coppia più interna - se allo stesso livello, da sinistra a destra -valutate per seconde *, /, % - se allo stesso livello, da sinistra a destra -valutate per ultime -, + - se allo stesso livello da sinistra a destra
  • 24. Divisione intera e reale #include <stdio.h> int main (void) { int primo, secondo, ris, q, r; float d, a=33.567, b=2.898; primo=34; secondo=21; q=primo/secondo; r=primo%secondo; printf("nnDivisione: %dt Resto:%dn", q, r); d= a/b; printf("Divisione tra a e b: %fn", d); ris=(primo/secondo)*secondo + primo%secondo; printf("Valore di ris: %dn", ris); return 0; }
  • 25. Dati due interi positivi, calcola quoziente e resto della div. intera #include <stdio.h> int main(void) { int a, b, quoziente, resto; printf("Inserisci dividendo: "); scanf("%d", &a); printf("Inserisci divisore: "); scanf("%d", &b); quoziente = a / b; resto = a % b; printf("%d : %d = %d con resto di %dn", a, b, quoziente, resto); return 0; }
  • 26. Diversi comportamenti per la divisione con 0 #include <stdio.h> Risposta on TurboC /* La divisione: +INF */ int main (void) Risposta in VisualC { /* error C21: divide or mod by zero int numcor; double nreale; numcor=2; nreale = numcor / 0.0; printf("nnLa divisione: %fnn", nreale); return 1; }