Problema, algoritmo
Problema, algoritmoe programma
e programma
PROGRAMMAZIONE STRUTTURATAPROGRAMMAZIONE STRUTTURATA
2
I DATI
 Dati di INPUT: sono quelli che devono essere forniti dall’esterno per poter
risolvere il problema.
 Dati di OUTPUT: sono quelli che vengono comunicati all’esterno come risultato
della soluzione del problema.
 Dati INTERNI o di LAVORO: sono i dati utilizzati nella trasformazione compiuta
dall’algoritmo ma trasparenti all’utente (non sono forniti in output).
 Dati NUMERICI: dati che contengono numeri e sui quali si possono effettuare
operazioni aritmetiche. Possono essere ulteriormente suddivisi in:
 INTERI: dati numerici che non prevedono cifre decimali
 REALI: dati numerici che prevedono cifre decimali
 Dati ALFANUMERICI (o STRINGHE): sono i dati che contengono caratteri
alfabetici (A,B,...), caratteri speciali ($,%,&,...) e cifre (0,1,2,...) sulle quali non sono
possibili operazioni aritmetiche (ad esempio il codice fiscale).
3
DATI Costanti e Variabili
0 COSTANTE: il valore del dato rimane immutato durante l’esecuzione
dell’algoritmo
0 VARIABILE: il valore del dato può cambiare durante l’esecuzione
dell’algoritmo
Ad esempio: dobbiamo calcolare l’area di un cerchio di cui si conosce il raggio. I
dati su cui opera l’algoritmo sono: raggio, π, area
e l’istruzione da eseguire è: area = raggio * raggio * π
π è una costante, infatti il suo valore non deve cambiare
area e raggio sono delle variabili: il loro valore cambia in funzione del particolare
cerchio che si prende in considerazione.
4
Struttura di sequenza
istruzione1
istruzione2
istruzione3
Sum  N1+N2
MediaSum/2
Scrivi
(Media)
Fine
leggi (N1, N2)
Inizio
ESEMPIOESEMPIO
5
Struttura di selezione
istruzione1 istruzione2
condizione
VF
6
Esempio: struttura di selezione
MAX N2
MIN N1
N1>N2 VF
leggi (N1, N2)
Inizio
MAX N1
MIN N2
Scrivi
(Max, Min)
Fine
7
#include<iostream>
#include<fstream>
using namespace std;
main () {
char cat;
float costo;
cout<<"stampa il prezzo scontato in base alla categoria di appartenenza
:ncategoria (P = pensionati, S = studenti, D = disoccupati) : " ;
cin>>cat;
cout<<"prezzo biglietto : ";
cin>>costo;
if (cat == 'P')
costo = costo - (costo * 0.1);
else if (cat == 'S')
costo = costo - (costo * 0.15);
else if (cat == 'D')
costo = costo - (costo * 0.25);
else
cout<<"la categoria inserita non e` corretta"<<endl;
cout<< "il prezzo del biglietto scontato e` : "<< costo;
return 0;}
Su una linea ferroviaria, rispetto alla tariffa piena, gli utenti
pensionati usufruiscono di uno sconto del 10%, gli studenti del
15% e i disoccupati del 25%. Codificando i pensionati con una P,
gli studenti con una S e i disoccupati con una D, scrivere un
programma che, richiesto il costo di un biglietto e l'eventuale
condizione particolare dell'utente, visualizzi l'importo da pagare
8
Struttura di iterazione post condizionale
Si deve eseguire un blocco di istruzioni finché
non si verifica una determinata condizione.
Esempio: costruire un algoritmo
che dati in input 5 numeri ne
determini la somma
condizione
istruzioni
V
F
La condizione è un’espressione che
rappresenta un valore Vero o
Falso.
Il ciclo viene ripetuto finché
l’espressione è vera.
9
Esempio: iterazione post condizionale
Somma  0
Conta  0
leggi (N)
Somma  Somma + N
Conta  Conta + 1
Conta <= 5
V F
scrivi (Somma)
FINE
INIZIO
#include<iostream>
#include<fstream>
using namespace std;
main () {
int somma=0, n=0, i=1;
cout<<"Inserisci i 5 numeri da sommare"<<endl;
do {cout<<"Inserisci il numero "<< i <<" : " ;
cin>>n;
somma=somma+n;
i=i+1;
}while (i<=5);
cout<< "La somma dei 5 numeri e'' : "<< somma;
return 0; }
/*
Un distributore di bibite permette di acquistare
le seguenti bevande:
- acqua ( costo: 50 cent )
- bibite in lattina ( costo: 80 cent )
- bibite in bottiglietta ( costo: 1 euro = 100 cent )
Il distrubitore accetta tutte le monete (5,10,20,50,1euro,2euro).
Il funzionamento del distributore è il seguente:
L'utente seleziona il tipo di bibita ( 1=acqua, 2=lattina, 3=bottoglia )
Il distributore richiede monete finchè l'importo inserito non risulta maggiore
o uguale all'importo richiesto.
Terminato l'inserimento delle monete, il distributore eroga la bibita e
visualizza sul display il resto da ritirare.
Scrivi un programma C++ che simula il funzionamento del distributore.
Note: per simulare l'inserimento delle monete da 1 e 2 euro, l'utente del programma
inserisce i valori 100 e 200. Anche il resto viene mostrato in centesimi (ad esempio,
il resto di 1 euro e 20 cent viene mostrato come 120 ).
*/
#include <iostream>
using namespace std;
int main() { int m; // moneta
int p; // prodotto selezionato: 1=acqua 2=lattina 3=bott
int impIns; // importo inserito
int costo; // costo del prodotto selezionato
cout << " 1 = acqua (50 cent) n 2 = lattina (80 cent) n 3 = bottiglia (1 euro) n";
cout << "Seleziona il prodotto (1|2|3) : ";
cin >> p;
if (p==1) costo = 50;
if (p==2) costo = 80;
if (p==3) costo = 100;
impIns=0;
do{
cout << "Inserisci una moneta: ";
cin >> m;
impIns = impIns + m;
} while( impIns < costo );
cout << "Preleva il prodotto.n";
if ( impIns > costo )
cout << "Ritira il resto: " << impIns-costo << "n" ;
cout << "Arrivederci.";
}

Programmazione strutturata

  • 1.
    Problema, algoritmo Problema, algoritmoeprogramma e programma PROGRAMMAZIONE STRUTTURATAPROGRAMMAZIONE STRUTTURATA
  • 2.
    2 I DATI  Datidi INPUT: sono quelli che devono essere forniti dall’esterno per poter risolvere il problema.  Dati di OUTPUT: sono quelli che vengono comunicati all’esterno come risultato della soluzione del problema.  Dati INTERNI o di LAVORO: sono i dati utilizzati nella trasformazione compiuta dall’algoritmo ma trasparenti all’utente (non sono forniti in output).  Dati NUMERICI: dati che contengono numeri e sui quali si possono effettuare operazioni aritmetiche. Possono essere ulteriormente suddivisi in:  INTERI: dati numerici che non prevedono cifre decimali  REALI: dati numerici che prevedono cifre decimali  Dati ALFANUMERICI (o STRINGHE): sono i dati che contengono caratteri alfabetici (A,B,...), caratteri speciali ($,%,&,...) e cifre (0,1,2,...) sulle quali non sono possibili operazioni aritmetiche (ad esempio il codice fiscale).
  • 3.
    3 DATI Costanti eVariabili 0 COSTANTE: il valore del dato rimane immutato durante l’esecuzione dell’algoritmo 0 VARIABILE: il valore del dato può cambiare durante l’esecuzione dell’algoritmo Ad esempio: dobbiamo calcolare l’area di un cerchio di cui si conosce il raggio. I dati su cui opera l’algoritmo sono: raggio, π, area e l’istruzione da eseguire è: area = raggio * raggio * π π è una costante, infatti il suo valore non deve cambiare area e raggio sono delle variabili: il loro valore cambia in funzione del particolare cerchio che si prende in considerazione.
  • 4.
    4 Struttura di sequenza istruzione1 istruzione2 istruzione3 Sum N1+N2 MediaSum/2 Scrivi (Media) Fine leggi (N1, N2) Inizio ESEMPIOESEMPIO
  • 5.
    5 Struttura di selezione istruzione1istruzione2 condizione VF
  • 6.
    6 Esempio: struttura diselezione MAX N2 MIN N1 N1>N2 VF leggi (N1, N2) Inizio MAX N1 MIN N2 Scrivi (Max, Min) Fine
  • 7.
    7 #include<iostream> #include<fstream> using namespace std; main() { char cat; float costo; cout<<"stampa il prezzo scontato in base alla categoria di appartenenza :ncategoria (P = pensionati, S = studenti, D = disoccupati) : " ; cin>>cat; cout<<"prezzo biglietto : "; cin>>costo; if (cat == 'P') costo = costo - (costo * 0.1); else if (cat == 'S') costo = costo - (costo * 0.15); else if (cat == 'D') costo = costo - (costo * 0.25); else cout<<"la categoria inserita non e` corretta"<<endl; cout<< "il prezzo del biglietto scontato e` : "<< costo; return 0;} Su una linea ferroviaria, rispetto alla tariffa piena, gli utenti pensionati usufruiscono di uno sconto del 10%, gli studenti del 15% e i disoccupati del 25%. Codificando i pensionati con una P, gli studenti con una S e i disoccupati con una D, scrivere un programma che, richiesto il costo di un biglietto e l'eventuale condizione particolare dell'utente, visualizzi l'importo da pagare
  • 8.
    8 Struttura di iterazionepost condizionale Si deve eseguire un blocco di istruzioni finché non si verifica una determinata condizione. Esempio: costruire un algoritmo che dati in input 5 numeri ne determini la somma condizione istruzioni V F La condizione è un’espressione che rappresenta un valore Vero o Falso. Il ciclo viene ripetuto finché l’espressione è vera.
  • 9.
    9 Esempio: iterazione postcondizionale Somma  0 Conta  0 leggi (N) Somma  Somma + N Conta  Conta + 1 Conta <= 5 V F scrivi (Somma) FINE INIZIO #include<iostream> #include<fstream> using namespace std; main () { int somma=0, n=0, i=1; cout<<"Inserisci i 5 numeri da sommare"<<endl; do {cout<<"Inserisci il numero "<< i <<" : " ; cin>>n; somma=somma+n; i=i+1; }while (i<=5); cout<< "La somma dei 5 numeri e'' : "<< somma; return 0; }
  • 10.
    /* Un distributore dibibite permette di acquistare le seguenti bevande: - acqua ( costo: 50 cent ) - bibite in lattina ( costo: 80 cent ) - bibite in bottiglietta ( costo: 1 euro = 100 cent ) Il distrubitore accetta tutte le monete (5,10,20,50,1euro,2euro). Il funzionamento del distributore è il seguente: L'utente seleziona il tipo di bibita ( 1=acqua, 2=lattina, 3=bottoglia ) Il distributore richiede monete finchè l'importo inserito non risulta maggiore o uguale all'importo richiesto. Terminato l'inserimento delle monete, il distributore eroga la bibita e visualizza sul display il resto da ritirare. Scrivi un programma C++ che simula il funzionamento del distributore. Note: per simulare l'inserimento delle monete da 1 e 2 euro, l'utente del programma inserisce i valori 100 e 200. Anche il resto viene mostrato in centesimi (ad esempio, il resto di 1 euro e 20 cent viene mostrato come 120 ). */
  • 11.
    #include <iostream> using namespacestd; int main() { int m; // moneta int p; // prodotto selezionato: 1=acqua 2=lattina 3=bott int impIns; // importo inserito int costo; // costo del prodotto selezionato cout << " 1 = acqua (50 cent) n 2 = lattina (80 cent) n 3 = bottiglia (1 euro) n"; cout << "Seleziona il prodotto (1|2|3) : "; cin >> p; if (p==1) costo = 50; if (p==2) costo = 80; if (p==3) costo = 100; impIns=0; do{ cout << "Inserisci una moneta: "; cin >> m; impIns = impIns + m; } while( impIns < costo ); cout << "Preleva il prodotto.n"; if ( impIns > costo ) cout << "Ritira il resto: " << impIns-costo << "n" ; cout << "Arrivederci."; }