SlideShare a Scribd company logo
Lezione
Scomposizione di programmi
e approccio in C++
A cura del prof. Giuseppe Sportelli
Versione 3.0
Sito Web
https://www.corsi-on-line.it/moodle
COS’È UN SOTTO PROGRAMMA ?
 Un’unità logica indipendente composta di
istruzioni, che assolve ad un compito
specifico.
 Un sottoprogramma può essere pensato
come un compito specifico o funzione
specifico, nell’ambito di un programma con
molteplici funzionalità o funzioni
Metodologia Top-down
• Scomposizione del problema in sottoproblemi
per:
– Semplificazione programma
– Riuso di codice riprodurre senza ripetere il codice
nello stesso programma
– Portabilità riuso stesso codice in altri programmi
Per gli ultimi due punti è necessario l’utilizzo di
scomposizione in sottoprogrammi con parametri.
Metodo Top Down
Problema
Sottoproblema 1 Sottoproblema 2 Sottoproblema 3
Chiamata a sottoprogramma
• Avviene quando nel programma principale
richiama una serie di istruzioni locate in
altro punto della codifica per assolvere ad
una funzione specifica del programma.
• All’atto della chiamata possono essere
scambiati fra programma principale e
sottoprogramma valori o variabili
Chiamata a sottoprogramma
Sottoprogramma
Programma Principale
Chiamata
In questa fase il programma
Principale può passare dati
Al sottoprogramma
Tipi di chiamate a sottoprogrammi
• Non parametriche ovvero non vi è scambio
dati diretto fra programma chiamante e
sottoprogramma ma solo dati in comune
fra tutte le unità di programma
• Parametriche sono passati dati in valore o
per variabili dal programma chiamante al
sottoprogramma
Tipologia di dati utilizzati
• Variabili e costanti globali: Visibili nel
programma e nei sottoprogrammi in C++
si dichiarano dopo la direttiva #include
• Variabili locali: Visibili solo nei
sottoprogrammi ove sono dichiarati in C++
si dichiarano all’interno delle funzioni.
Tipologia di dati utilizzati
• Parametri formali variabili e costanti
simboliche utilizzate nei sottoprogrammi
per la scrittura di codice che sia
indipendente dal programma principale
contesto;
• Parametri attuali valori o variabili e/o
costanti globali che si sostituiscono all’atto
della chiamata nel sottoprogramma ove
sono utilizzati;
Tipologia di chiamate parametriche
• Esiste la chiamata a sottoprogramma per
indirizzo o referenza o riferimento quando viene
passata l’indirizzo della memoria della variabile
globale. In questo caso se nel sottoprogramma
cambia la variabili globale la modifica si propaga
nel programma principale
• Nella chiamata per valore si passa il valore che
in quel momento assume la variabile globale nel
programma principale senza alterare quindi la
variabile globale nel programma principale.
Chiamata per valore in C++
Analizziamo lo spezzone di codice
#include <iostream>
using namespace std;
int a,b,s;
void somma (int x,int y , int z)
{z=x+y;}
Int main ()
{a=3;
b=5;
somma(4,5,s);
a=b-2;
cout << s<<end;
return 0;
}
Int x, int y, int z indica tre parametri passati
per valore, mentre void indica che non è
previsto un valore di ritorno.
Il valore calcolato di z nella funzione, non
Ritorna alla variabile globale s, che continua
a mantenere il suo valore definito nel main.
Chiamata per referenza in C++
Analizziamo la stessa porzione di codice
#include <iostrem>
using namespace std;
int a,b,s;
void somma (int& x,int& y, int &z)
{ x=1;
z=x+y;}
Int main ()
{a=3;
b=5;
somma(a,b,s);
a=b-2;
cout << s<<end;
return 0;}
La dichiarazione nell’intestazione int& x, … passa le
variabili globali per referenza ora inizialmente a e b
valevano 3 e 5, ma nel sottoprogramma a x viene
assegnato il valore 1 ed equivale ad assegnare alla
variabile. a il valore 1 e quindi il risultato cambia
perché nel sottoprogramma è cambiato la variabile
globale associata a x.
Procedure e Funzioni
In tutti i linguaggi di programmazione esiste la
possibilità di dichiarare e usare procedure ovvero
sottoprogrammi che eseguono dei compiti specifici
ma possono non restituire dei risultati e delle
funzioni ovvero particolari tipi di programma che
permettono di essere richiamati all’interno di un
istruzione di calcolo o assegnazione e quindi
restituiscono obbligatoriamente un risultato.
Funzione in C++
Supponiamo di voler realizzare una funzione
in C++ che mi permetta di calcolare il cubo di un numero.
Scriveremo un codice del tipo
#include <iostream>
using namespace std;
float n,r;
float cubo(float x ){
float c=x*x*x;
return c}
int main()
cout <<‘’inserisci il numero di cui vuoi calcolare il cubot’’;
cin >> n;
r=cubo(n);
cout <<“nIl cubo è:t”<<r;
return 0;
}
Considerazioni sulla codifica
• In entrambi i casi di procedure e funzioni si sono
dichiarati sottoprogrammi a livello di modulo e quindi di
validità generale
• int main nel in C++ indica l’inizio di un eventuale
programma principale. Il sottoprogramma o oggetto GUI
che deve essere avviato per primo può essere
specificato nelle proprietà del progetto.
• Le strutture dati sono passate al C++ per indirizzo in
modo implicito senza indicare il simbolo &.senza
indicare dimensione, per le matrici è necessaria la
seconda dimensione.
Ad esempio void carica(int x, int vet[])
indica il passaggio di un array alla funzione con
dimensioni non indicate, sarà all’atto della chiamata che
il programma chiamante sostituisce la struttura dati array
con la dimensione opportuna.
Esercitazione
Scrivere un programma che ricevuti in input
cognomi e i voti di N alunni calcoli e visualizzi
il cognome e il voto degli alunni insufficienti
(voto <=5), mediocre (voto >=5 e voto <6), e
dei sufficienti (voto >=6). Inoltre calcoli e
visualizzi la la media dei voti.
ELENCO DELLE FUNZIONI
 Inserimento dei dati
 Visualizzazione delle persone insufficienti,
mediocri e sufficienti;
 Calcolo della media
Flow charts
Flow charts
CODIFICA IN C++ – PRIMA PARTE
CODIFICA IN C++ SECONDA PARTE
Esercitazione
Realizzare un programma che permetta di
calcolare la somma degli elementi di due
vettori di uguale dimensione, dopo aver
inserito gli elementi.
Diagramma delle procedure
Programma
Carica Somma
Il programma principale
Questo è il programma principale
che richiama due volte la procedura
carica con variabili globali diverse.
La chiamata è per riferimento.
Le variabili inserite come argomento
della chiamata vanno nominate nell’ordine
in cui sono state dichiarate nelle
intestazioni delle procedure.
Le procedure carica e somma
Considerazioni sulle procedure
• La carica serve per inserire gli elementi un
vettore X di M elementi
• La somma effettua la somma di due vettori
di pari dimensione e il risultato è in output
in un parametro formale T.
• Abbiamo generalizzato delle procedure
che possiamo riciclare in altri programmi
che coinvolgono i vettori.
Sorgente C++ - Main
int main(){
cout << "inserisci le dimensioni del
vettore"<<endl;
cin>>N;
cout << "primo arrayn";
carica(a,N);
cout<< "secondo arrayn";
carica(b,N);
somma(a,b,N,s);
cout<< "la somma èt"<<s<<endl;
return 0;}
Le funzioni in C++
Sono lasciate al
lettore
Per Concludere
• Svolgere il seguente esercizio realizzare
un programma che carichi e calcoli la
somma di due vettori di dimensione N e P
diverse.
Grazie per l’attenzione
Prof. Giuseppe Sportelli
Revisione 2021
Condividi e cita la fonte
Licenza Creative Common
Iscrivi ai corsi su
Sito Web https://www.corsi-on-line.it/moodle
GRAZIE PER L’ATTENZIONE
A cura del Team Informatica OpenSource

More Related Content

Similar to La metodologia Top - Down - applicazione al C++

Lezione 5 (7 marzo 2012)
Lezione 5 (7 marzo 2012)Lezione 5 (7 marzo 2012)
Lezione 5 (7 marzo 2012)STELITANO
 
Laboratorio Programmazione: Overflow e switch
Laboratorio Programmazione: Overflow e switchLaboratorio Programmazione: Overflow e switch
Laboratorio Programmazione: Overflow e switchMajong DevJfu
 
Caratteristiche del linguaggio c
Caratteristiche del linguaggio cCaratteristiche del linguaggio c
Caratteristiche del linguaggio cughetta
 
Lezione 6 (12 marzo 2012)
Lezione 6 (12 marzo 2012)Lezione 6 (12 marzo 2012)
Lezione 6 (12 marzo 2012)STELITANO
 
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
 
Lezione 4 (7 marzo 2012)
Lezione 4 (7 marzo 2012)Lezione 4 (7 marzo 2012)
Lezione 4 (7 marzo 2012)STELITANO
 
Analizzatori di programmi in C
Analizzatori di programmi in CAnalizzatori di programmi in C
Analizzatori di programmi in C
Boymix81
 
Riepilogo Java C/C++
Riepilogo Java C/C++Riepilogo Java C/C++
Riepilogo Java C/C++
Pasquale Paola
 
Progetto MIPS/SPIM AA 2010-2011
Progetto MIPS/SPIM AA 2010-2011Progetto MIPS/SPIM AA 2010-2011
Progetto MIPS/SPIM AA 2010-2011Nicola Paoletti
 
Algoritmi
Algoritmi Algoritmi
Algoritmi
Tania de Angelis
 
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
 
Flow chart
Flow chartFlow chart
Flow chart
orestJump
 
Aspect Oriented Programming
Aspect Oriented ProgrammingAspect Oriented Programming
Aspect Oriented ProgrammingAndrea Bozzoni
 
Capitolo 7 elementi di programmazione c-c++
Capitolo 7   elementi di programmazione  c-c++Capitolo 7   elementi di programmazione  c-c++
Capitolo 7 elementi di programmazione c-c++Giovanni Della Lunga
 
Vb.Net
Vb.NetVb.Net
Presentazione understand
Presentazione understandPresentazione understand
Presentazione understand
Luigi La Torre
 
Introduzione ai Big Data e alla scienza dei dati - Big Data
Introduzione ai Big Data e alla scienza dei dati - Big DataIntroduzione ai Big Data e alla scienza dei dati - Big Data
Introduzione ai Big Data e alla scienza dei dati - Big Data
Vincenzo Manzoni
 
DotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptDotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptSinergia Totale
 

Similar to La metodologia Top - Down - applicazione al C++ (20)

Lezione 5 (7 marzo 2012)
Lezione 5 (7 marzo 2012)Lezione 5 (7 marzo 2012)
Lezione 5 (7 marzo 2012)
 
Laboratorio Programmazione: Overflow e switch
Laboratorio Programmazione: Overflow e switchLaboratorio Programmazione: Overflow e switch
Laboratorio Programmazione: Overflow e switch
 
Caratteristiche del linguaggio c
Caratteristiche del linguaggio cCaratteristiche del linguaggio c
Caratteristiche del linguaggio c
 
05 1 intro-struttura
05 1 intro-struttura05 1 intro-struttura
05 1 intro-struttura
 
Lezione 6 (12 marzo 2012)
Lezione 6 (12 marzo 2012)Lezione 6 (12 marzo 2012)
Lezione 6 (12 marzo 2012)
 
Let's give it a GO!
Let's give it a GO!Let's give it a GO!
Let's give it a GO!
 
Lezione 4 (7 marzo 2012)
Lezione 4 (7 marzo 2012)Lezione 4 (7 marzo 2012)
Lezione 4 (7 marzo 2012)
 
Analizzatori di programmi in C
Analizzatori di programmi in CAnalizzatori di programmi in C
Analizzatori di programmi in C
 
Riepilogo Java C/C++
Riepilogo Java C/C++Riepilogo Java C/C++
Riepilogo Java C/C++
 
Progetto MIPS/SPIM AA 2010-2011
Progetto MIPS/SPIM AA 2010-2011Progetto MIPS/SPIM AA 2010-2011
Progetto MIPS/SPIM AA 2010-2011
 
Algoritmi
Algoritmi Algoritmi
Algoritmi
 
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
 
Guida C++
Guida C++Guida C++
Guida C++
 
Flow chart
Flow chartFlow chart
Flow chart
 
Aspect Oriented Programming
Aspect Oriented ProgrammingAspect Oriented Programming
Aspect Oriented Programming
 
Capitolo 7 elementi di programmazione c-c++
Capitolo 7   elementi di programmazione  c-c++Capitolo 7   elementi di programmazione  c-c++
Capitolo 7 elementi di programmazione c-c++
 
Vb.Net
Vb.NetVb.Net
Vb.Net
 
Presentazione understand
Presentazione understandPresentazione understand
Presentazione understand
 
Introduzione ai Big Data e alla scienza dei dati - Big Data
Introduzione ai Big Data e alla scienza dei dati - Big DataIntroduzione ai Big Data e alla scienza dei dati - Big Data
Introduzione ai Big Data e alla scienza dei dati - Big Data
 
DotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptDotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScript
 

More from I.S.I.S. "Antonio Serra" - Napoli

Linguaggio Java - Classi e Oggetti
Linguaggio Java - Classi e OggettiLinguaggio Java - Classi e Oggetti
Linguaggio Java - Classi e Oggetti
I.S.I.S. "Antonio Serra" - Napoli
 
Linguaggio C++ - Basi
Linguaggio C++ - BasiLinguaggio C++ - Basi
Linguaggio C++ - Basi
I.S.I.S. "Antonio Serra" - Napoli
 
I cicli in Python 3
I cicli in Python 3I cicli in Python 3
Video python3 n2
Video python3 n2Video python3 n2
Le basi di Pytthon 3 - Fondamenti n.1
Le basi di Pytthon 3 - Fondamenti n.1Le basi di Pytthon 3 - Fondamenti n.1
Le basi di Pytthon 3 - Fondamenti n.1
I.S.I.S. "Antonio Serra" - Napoli
 
Nuova ECLD - Modulo Online Collaboration n.2
Nuova ECLD - Modulo Online Collaboration n.2Nuova ECLD - Modulo Online Collaboration n.2
Nuova ECLD - Modulo Online Collaboration n.2
I.S.I.S. "Antonio Serra" - Napoli
 
Nuova ECDL - Modulo Online Essentials n.2
Nuova ECDL - Modulo Online Essentials n.2Nuova ECDL - Modulo Online Essentials n.2
Nuova ECDL - Modulo Online Essentials n.2
I.S.I.S. "Antonio Serra" - Napoli
 
Nuova ECDL - Modulo Online Essentials n.2
Nuova ECDL - Modulo Online Essentials n.2Nuova ECDL - Modulo Online Essentials n.2
Nuova ECDL - Modulo Online Essentials n.2
I.S.I.S. "Antonio Serra" - Napoli
 
Nuova ECDL - Modulo Presentation n.3
Nuova ECDL - Modulo Presentation n.3Nuova ECDL - Modulo Presentation n.3
Nuova ECDL - Modulo Presentation n.3
I.S.I.S. "Antonio Serra" - Napoli
 
Nuova ECDL - Modulo Presentation n.2
Nuova ECDL - Modulo Presentation n.2Nuova ECDL - Modulo Presentation n.2
Nuova ECDL - Modulo Presentation n.2
I.S.I.S. "Antonio Serra" - Napoli
 
Nuova ECDL - Word Processing
Nuova ECDL - Word ProcessingNuova ECDL - Word Processing
Nuova ECDL - Word Processing
I.S.I.S. "Antonio Serra" - Napoli
 
Nuova ECDL - Word Processing n.2
Nuova ECDL - Word Processing n.2 Nuova ECDL - Word Processing n.2
Nuova ECDL - Word Processing n.2
I.S.I.S. "Antonio Serra" - Napoli
 
Nuova ECDL - Word Processing n.1
Nuova ECDL - Word Processing n.1Nuova ECDL - Word Processing n.1
Nuova ECDL - Word Processing n.1
I.S.I.S. "Antonio Serra" - Napoli
 
Computer Essentials n.3 - Edizione 2020
Computer Essentials n.3 - Edizione 2020Computer Essentials n.3 - Edizione 2020
Computer Essentials n.3 - Edizione 2020
I.S.I.S. "Antonio Serra" - Napoli
 
Java - Lezione 1
Java - Lezione 1 Java - Lezione 1
primi comandi SQL con Mysql
primi comandi SQL con Mysqlprimi comandi SQL con Mysql
primi comandi SQL con Mysql
I.S.I.S. "Antonio Serra" - Napoli
 
Modello TCP/IP
Modello TCP/IPModello TCP/IP
Le Applicazioni di Internet Web, FTP, Posta e App pr il Mobile
Le Applicazioni di Internet Web, FTP, Posta e App pr il MobileLe Applicazioni di Internet Web, FTP, Posta e App pr il Mobile
Le Applicazioni di Internet Web, FTP, Posta e App pr il Mobile
I.S.I.S. "Antonio Serra" - Napoli
 
Nofire
NofireNofire
Programmazione in Java Lezione 1
Programmazione in Java Lezione 1Programmazione in Java Lezione 1
Programmazione in Java Lezione 1
I.S.I.S. "Antonio Serra" - Napoli
 

More from I.S.I.S. "Antonio Serra" - Napoli (20)

Linguaggio Java - Classi e Oggetti
Linguaggio Java - Classi e OggettiLinguaggio Java - Classi e Oggetti
Linguaggio Java - Classi e Oggetti
 
Linguaggio C++ - Basi
Linguaggio C++ - BasiLinguaggio C++ - Basi
Linguaggio C++ - Basi
 
I cicli in Python 3
I cicli in Python 3I cicli in Python 3
I cicli in Python 3
 
Video python3 n2
Video python3 n2Video python3 n2
Video python3 n2
 
Le basi di Pytthon 3 - Fondamenti n.1
Le basi di Pytthon 3 - Fondamenti n.1Le basi di Pytthon 3 - Fondamenti n.1
Le basi di Pytthon 3 - Fondamenti n.1
 
Nuova ECLD - Modulo Online Collaboration n.2
Nuova ECLD - Modulo Online Collaboration n.2Nuova ECLD - Modulo Online Collaboration n.2
Nuova ECLD - Modulo Online Collaboration n.2
 
Nuova ECDL - Modulo Online Essentials n.2
Nuova ECDL - Modulo Online Essentials n.2Nuova ECDL - Modulo Online Essentials n.2
Nuova ECDL - Modulo Online Essentials n.2
 
Nuova ECDL - Modulo Online Essentials n.2
Nuova ECDL - Modulo Online Essentials n.2Nuova ECDL - Modulo Online Essentials n.2
Nuova ECDL - Modulo Online Essentials n.2
 
Nuova ECDL - Modulo Presentation n.3
Nuova ECDL - Modulo Presentation n.3Nuova ECDL - Modulo Presentation n.3
Nuova ECDL - Modulo Presentation n.3
 
Nuova ECDL - Modulo Presentation n.2
Nuova ECDL - Modulo Presentation n.2Nuova ECDL - Modulo Presentation n.2
Nuova ECDL - Modulo Presentation n.2
 
Nuova ECDL - Word Processing
Nuova ECDL - Word ProcessingNuova ECDL - Word Processing
Nuova ECDL - Word Processing
 
Nuova ECDL - Word Processing n.2
Nuova ECDL - Word Processing n.2 Nuova ECDL - Word Processing n.2
Nuova ECDL - Word Processing n.2
 
Nuova ECDL - Word Processing n.1
Nuova ECDL - Word Processing n.1Nuova ECDL - Word Processing n.1
Nuova ECDL - Word Processing n.1
 
Computer Essentials n.3 - Edizione 2020
Computer Essentials n.3 - Edizione 2020Computer Essentials n.3 - Edizione 2020
Computer Essentials n.3 - Edizione 2020
 
Java - Lezione 1
Java - Lezione 1 Java - Lezione 1
Java - Lezione 1
 
primi comandi SQL con Mysql
primi comandi SQL con Mysqlprimi comandi SQL con Mysql
primi comandi SQL con Mysql
 
Modello TCP/IP
Modello TCP/IPModello TCP/IP
Modello TCP/IP
 
Le Applicazioni di Internet Web, FTP, Posta e App pr il Mobile
Le Applicazioni di Internet Web, FTP, Posta e App pr il MobileLe Applicazioni di Internet Web, FTP, Posta e App pr il Mobile
Le Applicazioni di Internet Web, FTP, Posta e App pr il Mobile
 
Nofire
NofireNofire
Nofire
 
Programmazione in Java Lezione 1
Programmazione in Java Lezione 1Programmazione in Java Lezione 1
Programmazione in Java Lezione 1
 

La metodologia Top - Down - applicazione al C++

  • 1. Lezione Scomposizione di programmi e approccio in C++ A cura del prof. Giuseppe Sportelli Versione 3.0 Sito Web https://www.corsi-on-line.it/moodle
  • 2. COS’È UN SOTTO PROGRAMMA ?  Un’unità logica indipendente composta di istruzioni, che assolve ad un compito specifico.  Un sottoprogramma può essere pensato come un compito specifico o funzione specifico, nell’ambito di un programma con molteplici funzionalità o funzioni
  • 3. Metodologia Top-down • Scomposizione del problema in sottoproblemi per: – Semplificazione programma – Riuso di codice riprodurre senza ripetere il codice nello stesso programma – Portabilità riuso stesso codice in altri programmi Per gli ultimi due punti è necessario l’utilizzo di scomposizione in sottoprogrammi con parametri.
  • 4. Metodo Top Down Problema Sottoproblema 1 Sottoproblema 2 Sottoproblema 3
  • 5. Chiamata a sottoprogramma • Avviene quando nel programma principale richiama una serie di istruzioni locate in altro punto della codifica per assolvere ad una funzione specifica del programma. • All’atto della chiamata possono essere scambiati fra programma principale e sottoprogramma valori o variabili
  • 6. Chiamata a sottoprogramma Sottoprogramma Programma Principale Chiamata In questa fase il programma Principale può passare dati Al sottoprogramma
  • 7. Tipi di chiamate a sottoprogrammi • Non parametriche ovvero non vi è scambio dati diretto fra programma chiamante e sottoprogramma ma solo dati in comune fra tutte le unità di programma • Parametriche sono passati dati in valore o per variabili dal programma chiamante al sottoprogramma
  • 8. Tipologia di dati utilizzati • Variabili e costanti globali: Visibili nel programma e nei sottoprogrammi in C++ si dichiarano dopo la direttiva #include • Variabili locali: Visibili solo nei sottoprogrammi ove sono dichiarati in C++ si dichiarano all’interno delle funzioni.
  • 9. Tipologia di dati utilizzati • Parametri formali variabili e costanti simboliche utilizzate nei sottoprogrammi per la scrittura di codice che sia indipendente dal programma principale contesto; • Parametri attuali valori o variabili e/o costanti globali che si sostituiscono all’atto della chiamata nel sottoprogramma ove sono utilizzati;
  • 10. Tipologia di chiamate parametriche • Esiste la chiamata a sottoprogramma per indirizzo o referenza o riferimento quando viene passata l’indirizzo della memoria della variabile globale. In questo caso se nel sottoprogramma cambia la variabili globale la modifica si propaga nel programma principale • Nella chiamata per valore si passa il valore che in quel momento assume la variabile globale nel programma principale senza alterare quindi la variabile globale nel programma principale.
  • 11. Chiamata per valore in C++ Analizziamo lo spezzone di codice #include <iostream> using namespace std; int a,b,s; void somma (int x,int y , int z) {z=x+y;} Int main () {a=3; b=5; somma(4,5,s); a=b-2; cout << s<<end; return 0; } Int x, int y, int z indica tre parametri passati per valore, mentre void indica che non è previsto un valore di ritorno. Il valore calcolato di z nella funzione, non Ritorna alla variabile globale s, che continua a mantenere il suo valore definito nel main.
  • 12. Chiamata per referenza in C++ Analizziamo la stessa porzione di codice #include <iostrem> using namespace std; int a,b,s; void somma (int& x,int& y, int &z) { x=1; z=x+y;} Int main () {a=3; b=5; somma(a,b,s); a=b-2; cout << s<<end; return 0;} La dichiarazione nell’intestazione int& x, … passa le variabili globali per referenza ora inizialmente a e b valevano 3 e 5, ma nel sottoprogramma a x viene assegnato il valore 1 ed equivale ad assegnare alla variabile. a il valore 1 e quindi il risultato cambia perché nel sottoprogramma è cambiato la variabile globale associata a x.
  • 13. Procedure e Funzioni In tutti i linguaggi di programmazione esiste la possibilità di dichiarare e usare procedure ovvero sottoprogrammi che eseguono dei compiti specifici ma possono non restituire dei risultati e delle funzioni ovvero particolari tipi di programma che permettono di essere richiamati all’interno di un istruzione di calcolo o assegnazione e quindi restituiscono obbligatoriamente un risultato.
  • 14. Funzione in C++ Supponiamo di voler realizzare una funzione in C++ che mi permetta di calcolare il cubo di un numero. Scriveremo un codice del tipo #include <iostream> using namespace std; float n,r; float cubo(float x ){ float c=x*x*x; return c} int main() cout <<‘’inserisci il numero di cui vuoi calcolare il cubot’’; cin >> n; r=cubo(n); cout <<“nIl cubo è:t”<<r; return 0; }
  • 15. Considerazioni sulla codifica • In entrambi i casi di procedure e funzioni si sono dichiarati sottoprogrammi a livello di modulo e quindi di validità generale • int main nel in C++ indica l’inizio di un eventuale programma principale. Il sottoprogramma o oggetto GUI che deve essere avviato per primo può essere specificato nelle proprietà del progetto. • Le strutture dati sono passate al C++ per indirizzo in modo implicito senza indicare il simbolo &.senza indicare dimensione, per le matrici è necessaria la seconda dimensione. Ad esempio void carica(int x, int vet[]) indica il passaggio di un array alla funzione con dimensioni non indicate, sarà all’atto della chiamata che il programma chiamante sostituisce la struttura dati array con la dimensione opportuna.
  • 16. Esercitazione Scrivere un programma che ricevuti in input cognomi e i voti di N alunni calcoli e visualizzi il cognome e il voto degli alunni insufficienti (voto <=5), mediocre (voto >=5 e voto <6), e dei sufficienti (voto >=6). Inoltre calcoli e visualizzi la la media dei voti.
  • 17. ELENCO DELLE FUNZIONI  Inserimento dei dati  Visualizzazione delle persone insufficienti, mediocri e sufficienti;  Calcolo della media
  • 20. CODIFICA IN C++ – PRIMA PARTE
  • 21. CODIFICA IN C++ SECONDA PARTE
  • 22. Esercitazione Realizzare un programma che permetta di calcolare la somma degli elementi di due vettori di uguale dimensione, dopo aver inserito gli elementi.
  • 24. Il programma principale Questo è il programma principale che richiama due volte la procedura carica con variabili globali diverse. La chiamata è per riferimento. Le variabili inserite come argomento della chiamata vanno nominate nell’ordine in cui sono state dichiarate nelle intestazioni delle procedure.
  • 26. Considerazioni sulle procedure • La carica serve per inserire gli elementi un vettore X di M elementi • La somma effettua la somma di due vettori di pari dimensione e il risultato è in output in un parametro formale T. • Abbiamo generalizzato delle procedure che possiamo riciclare in altri programmi che coinvolgono i vettori.
  • 27. Sorgente C++ - Main int main(){ cout << "inserisci le dimensioni del vettore"<<endl; cin>>N; cout << "primo arrayn"; carica(a,N); cout<< "secondo arrayn"; carica(b,N); somma(a,b,N,s); cout<< "la somma èt"<<s<<endl; return 0;} Le funzioni in C++ Sono lasciate al lettore
  • 28. Per Concludere • Svolgere il seguente esercizio realizzare un programma che carichi e calcoli la somma di due vettori di dimensione N e P diverse. Grazie per l’attenzione Prof. Giuseppe Sportelli Revisione 2021 Condividi e cita la fonte Licenza Creative Common Iscrivi ai corsi su Sito Web https://www.corsi-on-line.it/moodle
  • 29. GRAZIE PER L’ATTENZIONE A cura del Team Informatica OpenSource