Tutorato Elementi di Informatica 2019 - Università di Cagliari

Pagina creata da Davide Rocca
 
CONTINUA A LEGGERE
Tutorato Elementi di Informatica 2019 - Università di Cagliari
Università degli       Pattern Recognition     Dipartimento di
   Studi di Cagliari      & Application Lab     Ingegneria Elettrica
                                                   ed Elettronica

   Tutorato Elementi di
    Informatica 2019
                       Esercitazione 4
Riepilogo delle puntate precedenti
Mail: bioinfo.marcialis@gmail.com
        Telegram: bioinfo18
                         Marco Micheletto

                                                13 Novembre 2019
Tutorato Elementi di Informatica 2019 - Università di Cagliari
DON’T
           Tipi diPANIC
                   dato

HELLO WORLD         TIPI "AVANZATI"

CONDIZIONALI              CICLI
Tutorato Elementi di Informatica 2019 - Università di Cagliari
Argomenti  dadato
                    Tipi di  conoscere
                             HELLO WORLD

• Dichiarare una variabile semplice.

• Usare la funzione printf (comprende la conoscenza dei %d, %f, …).

•   Usare la funzione scanf (comprende ricordarsi la &).
Argomenti  dadato
                    Tipi di  conoscere
                            TIPI "AVANZATI"

•   Vettori (comprende anche stringhe).

• Strutture (comprende la conoscenza del "punto").
Come si Riepilogo:
        dichiaraArray
                   un vettore?
v
      v[0]       v[1]   v[2]     v[3]

              int v[4];
                                 N° ELEMENTI
    TIPO
                 NOME
             (lo decidete voi)
                                          5
Come si Riepilogo:
        dichiaraArray
                   una struct?
               NomeTipo
     campo_1

                  .
                  .
                  .
     campo_n

      typedef struct{
          − Componenti
          della struttura;
      }NomeTipo;
                                 6
Come si dichiara
                        Esercizio 2una struct?

                                                      Automobile
        typedef struct{
            int numero;                     numero
            char modello[30];              modello
            float prezzo;
                                            prezzo
        }Automobile;

                        NomeTipo = Automobile
Userete il nome Automobile per dichiarare variabili (strutture) di tipo Automobile
                      VARIABILI SEMPLICI O VETTORI
                                                                             7
Esercizio
                        Costrutto     1
                                  if…else

Definite una struttura caratterizzata da una stringa di 10 caratteri
per memorizzare il colore dei capelli, un intero e un float per
memorizzare l’età minima e l’altezza massima di una persona
(poi capirete).
                  Chiamate tale struttura Profilo.

                                                                   8
Esercizio
Costrutto     1
          if…else

                    9
Esercizio
                          Costrutto    1.5
                                    if…else

Scrivete un codice che legge da tastiera il colore dei capelli, l’età e
l’altezza di una persona e li memorizza in una variabile di tipo
Profilo.

               Domanda random (ma non troppo):
            Come si dichiara un vettore di strutture Profilo?

                                                                          10
Esercizio
                          Costrutto    1.5
                                    if…else

Scrivete un codice che legge da tastiera il colore dei capelli, l’età e
l’altezza di una persona e li memorizza in una variabile di tipo
Profilo.

               Domanda random (ma non troppo):
            Come si dichiara un vettore di strutture Profilo?

                                                                          11
Argomenti  dadato
                    Tipi di  conoscere
                              CONDIZIONALI

• If…else (non obbligatorio).

• If . . . (else if)xN…else (non obbligatorio).

•   switch/case
Condizioni
                       Relazionari
           Servono per confrontare due variabili:
   Minore di          Maggiore di         Minore o uguale di        Maggiore o uguale di

    ab                   a=b
                       Uguale a              Diverso da

                      a==b                   a!=b
         Servono per operare tra valori booleani:
                AND                  OR                        NEG

               a&&b                 a||b                       !a

Il risultato di queste operazioni è TRUE o FALSE (ossia 1 o 0)

                                                                                           13
Come usare    l’IF/ELSE
          Tipi di dato

. . . .

if (condizione1)
{
   // ISTRUZIONI IF
}
else
{
  //ISTRUZIONI ALTRIMENTI
}
. . . .
Un esempio
     Cicli: whilea caso

                          15
Contestualizziamo      un po’…
                    Costrutto if…else

Qualche tempo fa mi sono svegliato con la malsana idea di sviluppare un’applicazione
per fare concorrenza a Tinder. Chi si registra alla mia app può creare un Profilo a cui va
ovviamente associato il nome e numero di cellulare.

Nella pratica, attivando l’applicazione, qualsiasi utente riceverà a fine giornata un elenco
di tutte le persone che gli sono passate vicino durante la giornata e che sono interessate
ad una relazione sentimentale, ovviamente a loro volta iscritte all’app.

Tuttavia, dopo un primo periodo di collaudo, ho scoperto che gli elenchi giornalieri che
vengono ricevuti sono lunghissimi (tante persone si sono iscritte!), così che risulta
difficilissimo scegliere la persona da contattare.

Mi servirebbe perciò il vostro aiuto per aggiungere una speciale opzione con la quale
ognuno possa inserire il colore dei capelli, l’età minima e l’altezza massima della persona
alla quale si potrebbe essere potenzialmente interessati in modo da scremare un po’ i dati.

                                                                                          16
Esercizio
                                Costrutto     2
                                          if…else

Scriviamo dunque un altro frammento del programma con il
seguente comportamento:
Confrontate (dopo averle lette) due variabili di tipo Profilo, la
prima relativa ai valori di colore dei capelli, età ed altezza
"random", la seconda relativa a dei valori desiderati, e
memorizzate 1 nella variabile match se tutti i criteri di colore di
capelli, età minima e altezza massima sono soddisfatti, 0
altrimenti.

    Suggerimento: strcmp(x,y) ritorna 0 se x e y sono stringhe uguali (libreria string.h)
                                                                                            17
Esercizio
Costrutto     2
          if…else

                    18
Argomenti  dadato
                Tipi di  conoscere
                    CICLI

•   For

• While
Cicli:Cicli
      do…while

                 20
Esercizio
                        Costrutto     3
                                  if…else

Definite un vettore di nome ListaPersone di max 77 elementi
formato da variabili di tipo Persona, così caratterizzate:
• Una stringa di 50 caratteri, finalizzata alla memorizzazione del
   nome di una persona.
• Un intero per il numero di telefono.
• Una variabile di tipo Profilo.

                                                                     21
Esercizio
                      Costrutto    3.5
                                if…else

Ora fate finta di avere il vettore ListaPersona pieno.

Adattate l’esercizio 2 in modo che vengano contati i match
con ogni persona nel vettore. Alla fine il programma deve
stampare:

             “Oggi ci sono  papabili per te” o
          “Oggi non ci sono papabili per te, mi spiace!”

                                                             22
Esercizio
Costrutto    3.5
          if…else
            *La definizione di Profilo e
           gli include come esercizio 2*

                                           23
Puoi anche leggere