SlideShare a Scribd company logo
1 of 29
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

What's hot

Domain Driven Design with the F# type System -- NDC London 2013
Domain Driven Design with the F# type System -- NDC London 2013Domain Driven Design with the F# type System -- NDC London 2013
Domain Driven Design with the F# type System -- NDC London 2013Scott Wlaschin
 
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기Chris Ohk
 
Functional Design Patterns (DevTernity 2018)
Functional Design Patterns (DevTernity 2018)Functional Design Patterns (DevTernity 2018)
Functional Design Patterns (DevTernity 2018)Scott Wlaschin
 
Functional Patterns with Java8 @Bucharest Java User Group
Functional Patterns with Java8 @Bucharest Java User GroupFunctional Patterns with Java8 @Bucharest Java User Group
Functional Patterns with Java8 @Bucharest Java User GroupVictor Rentea
 
Clean code and Code Smells
Clean code and Code SmellsClean code and Code Smells
Clean code and Code SmellsMario Sangiorgio
 
Spring Framework - Spring Security
Spring Framework - Spring SecuritySpring Framework - Spring Security
Spring Framework - Spring SecurityDzmitry Naskou
 
[143] Modern C++ 무조건 써야 해?
[143] Modern C++ 무조건 써야 해?[143] Modern C++ 무조건 써야 해?
[143] Modern C++ 무조건 써야 해?NAVER D2
 
From ActiveRecord to EventSourcing
From ActiveRecord to EventSourcingFrom ActiveRecord to EventSourcing
From ActiveRecord to EventSourcingEmanuele DelBono
 
The tests are trying to tell you something@VoxxedBucharest.pptx
The tests are trying to tell you something@VoxxedBucharest.pptxThe tests are trying to tell you something@VoxxedBucharest.pptx
The tests are trying to tell you something@VoxxedBucharest.pptxVictor Rentea
 
Towards Functional Programming through Hexagonal Architecture
Towards Functional Programming through Hexagonal ArchitectureTowards Functional Programming through Hexagonal Architecture
Towards Functional Programming through Hexagonal ArchitectureCodelyTV
 
The Functional Programming Toolkit (NDC Oslo 2019)
The Functional Programming Toolkit (NDC Oslo 2019)The Functional Programming Toolkit (NDC Oslo 2019)
The Functional Programming Toolkit (NDC Oslo 2019)Scott Wlaschin
 
Function in Python
Function in PythonFunction in Python
Function in PythonYashdev Hada
 
Angular Pipes Workshop
Angular Pipes WorkshopAngular Pipes Workshop
Angular Pipes WorkshopNir Kaufman
 
Let us c (5th and 12th edition by YASHVANT KANETKAR) chapter 2 solution
Let us c (5th and 12th edition by YASHVANT KANETKAR) chapter 2 solutionLet us c (5th and 12th edition by YASHVANT KANETKAR) chapter 2 solution
Let us c (5th and 12th edition by YASHVANT KANETKAR) chapter 2 solutionHazrat Bilal
 
Clean Lambdas & Streams in Java8
Clean Lambdas & Streams in Java8Clean Lambdas & Streams in Java8
Clean Lambdas & Streams in Java8Victor Rentea
 
Chapter 1 : Balagurusamy_ Programming ANsI in C
Chapter 1  :  Balagurusamy_ Programming ANsI in C Chapter 1  :  Balagurusamy_ Programming ANsI in C
Chapter 1 : Balagurusamy_ Programming ANsI in C BUBT
 

What's hot (20)

Function in C
Function in CFunction in C
Function in C
 
88 c-programs
88 c-programs88 c-programs
88 c-programs
 
Domain Driven Design with the F# type System -- NDC London 2013
Domain Driven Design with the F# type System -- NDC London 2013Domain Driven Design with the F# type System -- NDC London 2013
Domain Driven Design with the F# type System -- NDC London 2013
 
Clean coding-practices
Clean coding-practicesClean coding-practices
Clean coding-practices
 
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기
 
Functional Design Patterns (DevTernity 2018)
Functional Design Patterns (DevTernity 2018)Functional Design Patterns (DevTernity 2018)
Functional Design Patterns (DevTernity 2018)
 
Functional Patterns with Java8 @Bucharest Java User Group
Functional Patterns with Java8 @Bucharest Java User GroupFunctional Patterns with Java8 @Bucharest Java User Group
Functional Patterns with Java8 @Bucharest Java User Group
 
Clean code and Code Smells
Clean code and Code SmellsClean code and Code Smells
Clean code and Code Smells
 
Spring Framework - Spring Security
Spring Framework - Spring SecuritySpring Framework - Spring Security
Spring Framework - Spring Security
 
[143] Modern C++ 무조건 써야 해?
[143] Modern C++ 무조건 써야 해?[143] Modern C++ 무조건 써야 해?
[143] Modern C++ 무조건 써야 해?
 
From ActiveRecord to EventSourcing
From ActiveRecord to EventSourcingFrom ActiveRecord to EventSourcing
From ActiveRecord to EventSourcing
 
The tests are trying to tell you something@VoxxedBucharest.pptx
The tests are trying to tell you something@VoxxedBucharest.pptxThe tests are trying to tell you something@VoxxedBucharest.pptx
The tests are trying to tell you something@VoxxedBucharest.pptx
 
Dynamic Linker
Dynamic LinkerDynamic Linker
Dynamic Linker
 
Towards Functional Programming through Hexagonal Architecture
Towards Functional Programming through Hexagonal ArchitectureTowards Functional Programming through Hexagonal Architecture
Towards Functional Programming through Hexagonal Architecture
 
The Functional Programming Toolkit (NDC Oslo 2019)
The Functional Programming Toolkit (NDC Oslo 2019)The Functional Programming Toolkit (NDC Oslo 2019)
The Functional Programming Toolkit (NDC Oslo 2019)
 
Function in Python
Function in PythonFunction in Python
Function in Python
 
Angular Pipes Workshop
Angular Pipes WorkshopAngular Pipes Workshop
Angular Pipes Workshop
 
Let us c (5th and 12th edition by YASHVANT KANETKAR) chapter 2 solution
Let us c (5th and 12th edition by YASHVANT KANETKAR) chapter 2 solutionLet us c (5th and 12th edition by YASHVANT KANETKAR) chapter 2 solution
Let us c (5th and 12th edition by YASHVANT KANETKAR) chapter 2 solution
 
Clean Lambdas & Streams in Java8
Clean Lambdas & Streams in Java8Clean Lambdas & Streams in Java8
Clean Lambdas & Streams in Java8
 
Chapter 1 : Balagurusamy_ Programming ANsI in C
Chapter 1  :  Balagurusamy_ Programming ANsI in C Chapter 1  :  Balagurusamy_ Programming ANsI in C
Chapter 1 : Balagurusamy_ Programming ANsI in C
 

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

Esercitazione 1 (27 febbraio 2012)
Esercitazione 1 (27 febbraio 2012)Esercitazione 1 (27 febbraio 2012)
Esercitazione 1 (27 febbraio 2012)STELITANO
 
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 CBoymix81
 
Progetto MIPS/SPIM AA 2010-2011
Progetto MIPS/SPIM AA 2010-2011Progetto MIPS/SPIM AA 2010-2011
Progetto MIPS/SPIM AA 2010-2011Nicola Paoletti
 
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
 
Aspect Oriented Programming
Aspect Oriented ProgrammingAspect Oriented Programming
Aspect Oriented ProgrammingAndrea Bozzoni
 

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

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
 
Scomposizione di programmi e approccio in visual basic
Scomposizione di programmi e approccio in visual basicScomposizione di programmi e approccio in visual basic
Scomposizione di programmi e approccio in visual basic
 
7 Sottoprogrammi
7   Sottoprogrammi7   Sottoprogrammi
7 Sottoprogrammi
 
I sotto programmi in Python 3
I sotto programmi in Python 3I sotto programmi in Python 3
I sotto programmi in Python 3
 
Esercitazione 1 (27 febbraio 2012)
Esercitazione 1 (27 febbraio 2012)Esercitazione 1 (27 febbraio 2012)
Esercitazione 1 (27 febbraio 2012)
 
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
 

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

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 MobileI.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
 

Recently uploaded

PLATONEpresentazionecaricatasu teams-pdf.pdf
PLATONEpresentazionecaricatasu teams-pdf.pdfPLATONEpresentazionecaricatasu teams-pdf.pdf
PLATONEpresentazionecaricatasu teams-pdf.pdfpalestiniaurora
 
Questa è una presentazione di Educazione Civica riguardo la libertà di inizia...
Questa è una presentazione di Educazione Civica riguardo la libertà di inizia...Questa è una presentazione di Educazione Civica riguardo la libertà di inizia...
Questa è una presentazione di Educazione Civica riguardo la libertà di inizia...nicolofusco13
 
Storia-CarloMagno-TeccarelliLorenzo.pptx
Storia-CarloMagno-TeccarelliLorenzo.pptxStoria-CarloMagno-TeccarelliLorenzo.pptx
Storia-CarloMagno-TeccarelliLorenzo.pptxteccarellilorenzo
 
CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...
CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...
CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...Nguyen Thanh Tu Collection
 
Questa è una presentazione di Scienze riguardo le varietà allotropiche del ca...
Questa è una presentazione di Scienze riguardo le varietà allotropiche del ca...Questa è una presentazione di Scienze riguardo le varietà allotropiche del ca...
Questa è una presentazione di Scienze riguardo le varietà allotropiche del ca...nicolofusco13
 
Le forme allotropiche del C-Palestini e Pancia.docx
Le forme allotropiche del C-Palestini e Pancia.docxLe forme allotropiche del C-Palestini e Pancia.docx
Le forme allotropiche del C-Palestini e Pancia.docxpalestiniaurora
 
CONCEZIONE DELL'ARTEasiapanciapresentazione.pdf
CONCEZIONE DELL'ARTEasiapanciapresentazione.pdfCONCEZIONE DELL'ARTEasiapanciapresentazione.pdf
CONCEZIONE DELL'ARTEasiapanciapresentazione.pdfpalestiniaurora
 
ed civica ambiente presentazione (1).pptx
ed civica ambiente presentazione (1).pptxed civica ambiente presentazione (1).pptx
ed civica ambiente presentazione (1).pptxmichelacaporale12345
 
Aurora Palestinipresentazione000001.pdtf
Aurora Palestinipresentazione000001.pdtfAurora Palestinipresentazione000001.pdtf
Aurora Palestinipresentazione000001.pdtfpalestiniaurora
 
Presentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informaticaPresentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informaticanico07fusco
 
magia, stregoneria, inquisizione e medicina.pptx
magia, stregoneria, inquisizione e medicina.pptxmagia, stregoneria, inquisizione e medicina.pptx
magia, stregoneria, inquisizione e medicina.pptxpalestiniaurora
 
allotropie del carbonio michela caporale .pptx
allotropie del carbonio michela caporale .pptxallotropie del carbonio michela caporale .pptx
allotropie del carbonio michela caporale .pptxmichelacaporale12345
 
presentazione di michela di SteveJobs.pdf
presentazione di michela di SteveJobs.pdfpresentazione di michela di SteveJobs.pdf
presentazione di michela di SteveJobs.pdfmichelacaporale12345
 
Gli isotopi scienze naturale seconda pres
Gli isotopi scienze naturale seconda presGli isotopi scienze naturale seconda pres
Gli isotopi scienze naturale seconda prespalestiniaurora
 
Palestini Aurora-Steve Jobs,Olivetti e Gates.pptx
Palestini Aurora-Steve Jobs,Olivetti e Gates.pptxPalestini Aurora-Steve Jobs,Olivetti e Gates.pptx
Palestini Aurora-Steve Jobs,Olivetti e Gates.pptxpalestiniaurora
 
Educazione civica-Asia Pancia powerpoint
Educazione civica-Asia Pancia powerpointEducazione civica-Asia Pancia powerpoint
Educazione civica-Asia Pancia powerpointpalestiniaurora
 
PalestiniAurora-la conoscenzatestoita.docx
PalestiniAurora-la conoscenzatestoita.docxPalestiniAurora-la conoscenzatestoita.docx
PalestiniAurora-la conoscenzatestoita.docxpalestiniaurora
 
Pancia Asia-La vita di Steve Jobs-Adriano Olivetti-Bill Gates.pptx
Pancia Asia-La vita di Steve Jobs-Adriano Olivetti-Bill Gates.pptxPancia Asia-La vita di Steve Jobs-Adriano Olivetti-Bill Gates.pptx
Pancia Asia-La vita di Steve Jobs-Adriano Olivetti-Bill Gates.pptxpalestiniaurora
 
Piccole Personetestoitaliano-AuroraPalestini.docx
Piccole Personetestoitaliano-AuroraPalestini.docxPiccole Personetestoitaliano-AuroraPalestini.docx
Piccole Personetestoitaliano-AuroraPalestini.docxpalestiniaurora
 
Pancia Asia_relazione laboratorio(forza d'attrito).docx
Pancia Asia_relazione laboratorio(forza d'attrito).docxPancia Asia_relazione laboratorio(forza d'attrito).docx
Pancia Asia_relazione laboratorio(forza d'attrito).docxpalestiniaurora
 

Recently uploaded (20)

PLATONEpresentazionecaricatasu teams-pdf.pdf
PLATONEpresentazionecaricatasu teams-pdf.pdfPLATONEpresentazionecaricatasu teams-pdf.pdf
PLATONEpresentazionecaricatasu teams-pdf.pdf
 
Questa è una presentazione di Educazione Civica riguardo la libertà di inizia...
Questa è una presentazione di Educazione Civica riguardo la libertà di inizia...Questa è una presentazione di Educazione Civica riguardo la libertà di inizia...
Questa è una presentazione di Educazione Civica riguardo la libertà di inizia...
 
Storia-CarloMagno-TeccarelliLorenzo.pptx
Storia-CarloMagno-TeccarelliLorenzo.pptxStoria-CarloMagno-TeccarelliLorenzo.pptx
Storia-CarloMagno-TeccarelliLorenzo.pptx
 
CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...
CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...
CHIẾN THẮNG KÌ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN - PHAN THẾ HOÀI (36...
 
Questa è una presentazione di Scienze riguardo le varietà allotropiche del ca...
Questa è una presentazione di Scienze riguardo le varietà allotropiche del ca...Questa è una presentazione di Scienze riguardo le varietà allotropiche del ca...
Questa è una presentazione di Scienze riguardo le varietà allotropiche del ca...
 
Le forme allotropiche del C-Palestini e Pancia.docx
Le forme allotropiche del C-Palestini e Pancia.docxLe forme allotropiche del C-Palestini e Pancia.docx
Le forme allotropiche del C-Palestini e Pancia.docx
 
CONCEZIONE DELL'ARTEasiapanciapresentazione.pdf
CONCEZIONE DELL'ARTEasiapanciapresentazione.pdfCONCEZIONE DELL'ARTEasiapanciapresentazione.pdf
CONCEZIONE DELL'ARTEasiapanciapresentazione.pdf
 
ed civica ambiente presentazione (1).pptx
ed civica ambiente presentazione (1).pptxed civica ambiente presentazione (1).pptx
ed civica ambiente presentazione (1).pptx
 
Aurora Palestinipresentazione000001.pdtf
Aurora Palestinipresentazione000001.pdtfAurora Palestinipresentazione000001.pdtf
Aurora Palestinipresentazione000001.pdtf
 
Presentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informaticaPresentazione tre geni della tecnologia informatica
Presentazione tre geni della tecnologia informatica
 
magia, stregoneria, inquisizione e medicina.pptx
magia, stregoneria, inquisizione e medicina.pptxmagia, stregoneria, inquisizione e medicina.pptx
magia, stregoneria, inquisizione e medicina.pptx
 
allotropie del carbonio michela caporale .pptx
allotropie del carbonio michela caporale .pptxallotropie del carbonio michela caporale .pptx
allotropie del carbonio michela caporale .pptx
 
presentazione di michela di SteveJobs.pdf
presentazione di michela di SteveJobs.pdfpresentazione di michela di SteveJobs.pdf
presentazione di michela di SteveJobs.pdf
 
Gli isotopi scienze naturale seconda pres
Gli isotopi scienze naturale seconda presGli isotopi scienze naturale seconda pres
Gli isotopi scienze naturale seconda pres
 
Palestini Aurora-Steve Jobs,Olivetti e Gates.pptx
Palestini Aurora-Steve Jobs,Olivetti e Gates.pptxPalestini Aurora-Steve Jobs,Olivetti e Gates.pptx
Palestini Aurora-Steve Jobs,Olivetti e Gates.pptx
 
Educazione civica-Asia Pancia powerpoint
Educazione civica-Asia Pancia powerpointEducazione civica-Asia Pancia powerpoint
Educazione civica-Asia Pancia powerpoint
 
PalestiniAurora-la conoscenzatestoita.docx
PalestiniAurora-la conoscenzatestoita.docxPalestiniAurora-la conoscenzatestoita.docx
PalestiniAurora-la conoscenzatestoita.docx
 
Pancia Asia-La vita di Steve Jobs-Adriano Olivetti-Bill Gates.pptx
Pancia Asia-La vita di Steve Jobs-Adriano Olivetti-Bill Gates.pptxPancia Asia-La vita di Steve Jobs-Adriano Olivetti-Bill Gates.pptx
Pancia Asia-La vita di Steve Jobs-Adriano Olivetti-Bill Gates.pptx
 
Piccole Personetestoitaliano-AuroraPalestini.docx
Piccole Personetestoitaliano-AuroraPalestini.docxPiccole Personetestoitaliano-AuroraPalestini.docx
Piccole Personetestoitaliano-AuroraPalestini.docx
 
Pancia Asia_relazione laboratorio(forza d'attrito).docx
Pancia Asia_relazione laboratorio(forza d'attrito).docxPancia Asia_relazione laboratorio(forza d'attrito).docx
Pancia Asia_relazione laboratorio(forza d'attrito).docx
 

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