Compitini di info: Compitini di info



Scaricare 445 b.
02.02.2018
Dimensione del file445 b.



Compitini di INFO:

  • Compitini di INFO:

    • 24 Aprile 2015
      • 4.15pm @ C.G.1 (Ed. 9)
    • 21 Maggio 2015
      • 10.30am @ S.0.2 (Ed. 3)
    • 17 Giugno 2015
      • 1.30pm @ I.0.1 (Ed. 4)


Compitini di INFO:

  • Compitini di INFO:

    • 24 Aprile 2015
      • 4.15pm @ C.G.1 (Ed. 9)
    • 21 Maggio 2015
      • 10.30am @ S.0.2 (Ed. 3)
    • 17 Giugno 2015
      • 1.30pm @ I.0.1 (Ed. 4)
  • Si passa con 50% (11.5) o 60% (13.8)?



Compitini di INFO:

  • Compitini di INFO:

    • 24 Aprile 2015
      • 4.15pm @ C.G.1 (Ed. 9)
    • 21 Maggio 2015
      • 10.30am @ S.0.2 (Ed. 3)
    • 17 Giugno 2015
      • 1.30pm @ I.0.1 (Ed. 4)
  • Si passa con 50% (11.5) o 60% (13.8)?

  • Nel dubbio… con 60%

  • && orale obbligatorio!







Compitini di INFO:

  • Compitini di INFO:

    • 24 Aprile 2015
      • 4.15pm @ C.G.1 (Ed. 9)
    • 21 Maggio 2015
      • 10.30am @ S.0.2 (Ed. 3)
    • 17 Giugno 2015
      • 1.30pm @ I.0.1 (Ed. 4)
  • Si passa con 50% (11.5) o 60% (13.8)?

  • Nel dubbio… con 55%





Dato n, intero positivo, si definisce n fattoriale e si indica con n! il prodotto dei primi n numeri interi positivi minori o uguali di quel numero. In formule

  • Dato n, intero positivo, si definisce n fattoriale e si indica con n! il prodotto dei primi n numeri interi positivi minori o uguali di quel numero. In formule

  • Nota:

    • 0! = 1
    • 1! = 1
    • 2! = 2, 3! = 6,…








Il numero di scelte di k oggetti fra quelli che costituiscono un insieme di n elementi

  • Il numero di scelte di k oggetti fra quelli che costituiscono un insieme di n elementi

  • Quindi il numero dei sottoinsiemi di k elementi di un dato insieme di n oggetti, è dato dal cosiddetto coefficiente binomiale:





  • Funzioni

  • Scope delle variabili



Il numero di scelte di k oggetti fra quelli che costituiscono un insieme di n elementi

  • Il numero di scelte di k oggetti fra quelli che costituiscono un insieme di n elementi

  • Quindi il numero dei sottoinsiemi di k elementi di un dato insieme di n oggetti, è dato dal cosiddetto coefficiente binomiale:



Inserire K e N

  • Inserire K e N

  • Verifico K e N

  • Se corretti

    • Calcolare il fattoriale di N (FatN)
    • Calcolare il fattoriale di K (FatK)
    • Calcolare il fattoriale di N-K (FatNK)
    • CoefBin = FatN/(FatK)*FatNK
  • Altrimenti torno a 1



Cosa è Calcolare il fattoriale di N?

  • Cosa è Calcolare il fattoriale di N?



Cosa è Calcolare il fattoriale di N?

  • Cosa è Calcolare il fattoriale di N?

  • Cosa è Calcolare il fattoriale di K?



Cosa è Calcolare il fattoriale di N?

  • Cosa è Calcolare il fattoriale di N?

  • Cosa è Calcolare il fattoriale di K?

  • Cosa è Calcolare il fattoriale di N-K?



Cosa è Calcolare il fattoriale di N?

  • Cosa è Calcolare il fattoriale di N?

  • Cosa è Calcolare il fattoriale di K?

  • Cosa è Calcolare il fattoriale di N-K?

  • Sono tutti SOTTOPROGRAMMI!!



Un sottoprogramma è:

  • Un sottoprogramma è:

    • un insieme di istruzioni dotato di nome
    • descritto (definito) una sola volta
    • attivabile (richiamabile o invocabile) all’interno del programma o di un altro sottoprogramma
  • Alcuni sottoprogrammi sono già definiti

    • si pensi alla scanf e alla printf
    • dietro a questi nomi vi sono una serie di istruzioni in grado di, rispettivamente, intercettare la pressione dei tasti e di visualizzare un carattere sullo schermo
    • chi richiama queste funzioni non si preoccupa di come sono fatte, basta sapere solo cosa fanno (visione black box)


Astrazione e leggibilità:

  • Astrazione e leggibilità:

    • enucleano parti di codice, nascondendo dettagli algoritmici e di codifica
    • il nome di programma si presenta come “un’operazione elementare”
  • Strutturazione e scomposizione funzionale del programma:

    • consentono una stesura del programma che riflette un’analisi funzionale del problema
  • Collaudo:

    • verifica di correttezza della soluzione facilitata dal poter verificare la correttezza prima dei singoli sottoprogrammi e poi dell’intero programma visto come insieme di chiamate che si scambiano informazioni
  • Compattezza ed efficienza del codice:

    • si evita di ripetere sequenze di istruzioni in più parti del programma
  • Modificabilità:

  • Riuso:

    • sottoprogrammi non troppo specifici possono essere raccolti in librerie utilizzabili da programmi diversi


I sottoprogrammi si differenziano per la logica di definizione per l’uso e per la modalità di chiamata e possono essere

  • I sottoprogrammi si differenziano per la logica di definizione per l’uso e per la modalità di chiamata e possono essere

    • di tipo funzionale
    • di tipo procedurale
  • Sottoprogrammi di tipo funzionale (funzioni) possono essere considerati una astrazione di valore

    • l’invocazione della funzione associa al nome della funzione il valore del risultato calcolato dal sottoprogramma
  • Sottoprogrammi di tipo procedurale (procedure) possono essere considerati una astrazione di operazioni

    • l’invocazione della procedura è associata all’esecuzione delle istruzioni del sottoprogramma che realizzano l’operazione specificata dal sottoprogramma
  • Ad esempio:

  • leggi(A,B); /* procedura*/

  • risultato = somma(A,B); /* funzione*/



In C esistono solo le funzioni

  • In C esistono solo le funzioni

    • Le procedure sono particolari funzioni che non restituiscono nulla (VOID)
  • Quindi parleremo solo di funzioni intendendo sia le funzioni che le procedure

  • Definire una funzione secondo il linguaggio C implica:

    • Dichiarazione del prototipo della funzione (nella sezione dichiarativa)
    • Definizione della funzione
    • Invocazione o chiamata della funzione (nel codice che necessita della funzioni)


Il prototipo definisce:

  • Il prototipo definisce:

    • il nome della funzione
    • il tipo (funzione, procedura)
    • il tipo dei parametri in ingresso e in uscita
  • Chi utilizzerà la funzione dovrà rispettare la sintassi definita nel prototipo

  • Prototipo funzione

  • ();

  • Prototipo procedura (void è una parola chiave del C che indica assenza di tipo)

  • void ();



La definizione della funzione va messa dopo il main.

  • La definizione della funzione va messa dopo il main.

  • Ha la stessa struttura del main (anche il main, come sappiamo è una funzione):

    • Una parte dichiarativa
    • Una parte esecutiva
    • (tipo par_for1, tipo par_for2 ...)
    • {
    • parte dichiarativa locale
    • parte esecutiva
    • }
  • (tipo par_for1, tipo par_for2 ...) è la testata della funzione

  • par_for1, par_for2 sono i nomi dei parametri formali della funzione, il cui tipo deve corrispondere in modo ordinato ai tipi elencati nella dichiarazione del prototipo



Nel corpo del main o di un’altra funzione indica il punto in cui va eseguita la parte del codice presente nella definizione di funzione

  • Nel corpo del main o di un’altra funzione indica il punto in cui va eseguita la parte del codice presente nella definizione di funzione

  • Invocazione di funzione

    • come operando in una espressione
    • = <… nomefunzione(par_att1 …)…>;
  • Invocazione di procedura

    • come un’istruzione
    • nomeprocedura(par_att1, …);
  • In entrambi i casi:

    • par_att1,… sono i parametri attuali che devono corrispondere per ordine e per tipo ai parametri formali
    • I parametri attuali possono essere variabili, costanti o espressioni definite nell’ambiente chiamante, i cui valori all’atto della chiamata vengono copiati nei parametri formali


All’atto della chiamata, il controllo dell’esecuzione passa dal chiamante al chiamato

  • All’atto della chiamata, il controllo dell’esecuzione passa dal chiamante al chiamato

  • Il codice del chiamato viene eseguito

  • Al termine dell’esecuzione il controllo ritorna al chiamante, all’istruzione successiva a quella della chiamata



Parola chiave C utilizzata solo nelle funzioni

  • Parola chiave C utilizzata solo nelle funzioni

  • Sintassi

      • return
  • È l’ultima istruzione di una funzione e indica:

  • In una funzione

    • deve esserci almeno un’istruzione di return
    • possono esserci più istruzioni di return ma in alternativa
    • la funzione può restituire un solo valore


Inserire K e N

  • Inserire K e N

  • Verifico K e N

  • Se corretti

    • Calcolare il fattoriale di N (FatN)
    • Calcolare il fattoriale di K (FatK)
    • Calcolare il fattoriale di N-K (FatNK)
    • CoefBin = FatN/(FatK)*FatNK
  • Altrimenti torno a 1













Il passaggio dei parametri consiste nell’associare, all’atto delle chiamata di un sottoprogramma, ai parametri formali i parametri attuali

  • Il passaggio dei parametri consiste nell’associare, all’atto delle chiamata di un sottoprogramma, ai parametri formali i parametri attuali

    • Se il prototipo di una funzione è
      • int fat (int valore);
    • Invocare questa funzione significa eseguire l’istruzione
      • FatK = fat(K);
    • In questo modo la variabile raggio (il parametro formale) assumerà per quella particolare invocazione il valore 5 (il parametro attuale).
  • Lo scambio di informazioni con passaggio dei parametri tra chiamante e chiamato può avvenire in due modi:

    • Passaggio per valore
    • Passaggio per indirizzo


Parametri Formali:

  • Parametri Formali:

    • Rappresentano un riferimento simbolico (identificatori) a oggetti utilizzati all’interno della funzione
    • Sono utilizzati dalla funzione come se fossero variabili dichiarate localmente
    • Il valore iniziale di parametri formali viene definito all’atto della chiamata della funzione tramite i parametri attuali (passaggio di parametri)


All’atto della chiamata il valore del parametro attuale viene copiato nelle celle di memoria del corrispondente parametro formale.

  • All’atto della chiamata il valore del parametro attuale viene copiato nelle celle di memoria del corrispondente parametro formale.

    • Il parametro formale e il parametro attuale si riferiscono a due diverse celle di memoria
  • Il sottoprogramma in esecuzione lavora nel suo ambiente e quindi sui parametri formali

  • I parametri attuali non vengono modificati



}

  • }

  • /* nel main */

  • int K;

  • int FatK;

  • FatK=fat(K);







Visibilità di un identificatore:

  • Visibilità di un identificatore:

    • indicazione della parte del programma in cui tale identificatore può essere usato
  • Ambiente globale del programma

    • insieme di identificatori (tipi, costanti, variabili) definiti nella parte dichiarativa globale
    • regole di visibilità: visibili a tutte le funzioni del programma
  • Ambiente locale di una funzione

    • insieme di identificatori definiti nella parte dichiarativa locale e degli identificatori definiti nella testata (parametri formali)
    • Regole di visibilità: visibili alla funzione e ai blocchi in essa contenuti
  • Ambiente di blocco

    • insieme di identificatori definiti nella parte dichiarativa locale del blocco
    • regole di visibilità: visibili al blocco e ai blocchi in esso contenuti


Un nome ridefinito all’interno di un blocco nasconde il significato precedente di quel nome

  • Un nome ridefinito all’interno di un blocco nasconde il significato precedente di quel nome

  • Tale significato è ripristinato all’uscita del blocco più interno

  • In caso di omonimia di identificatori in ambienti diversi è visibile quello dell’ambiente più “vicino”



Un nome ridefinito all’interno di un blocco nasconde il significato precedente di quel nome

  • Un nome ridefinito all’interno di un blocco nasconde il significato precedente di quel nome

  • Tale significato è ripristinato all’uscita del blocco più interno

  • In caso di omonimia di identificatori in ambienti diversi è visibile quello dell’ambiente più “vicino”





int x;

  • int x;

  • f()

  • {

  • int y;

  • y=1;

  • }

  • int x;

  • g(int y, char z)

  • {

  • int k;

  • int l;

  • }

  • f(int x)

  • {

  • int x;

  • }









Problema

  • Problema

    • Si scriva un programma in C che, dati due numeri, permette all’utente di calcolarne la somma, sottrazione, moltiplicazione, e la divisione tra essi
      • L’utente, per ogni coppia di numeri inseriti, potrà eseguire una e una sola operazione


Fonti per lo studio

  • Fonti per lo studio

  • Credits

    • Gianluca Palermo





©astratto.info 2017
invia messaggio

    Pagina principale