ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

73
ALGORITMO 1 L’ALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE

Transcript of ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

Page 1: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 1

L’ALGORITMOI DATI

LE ISTRUZIONI

LE STRUTTURE FONDAMENTALI

FINE

Page 2: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 2

Indice

• L’algoritmo

• Il programma

• I dati

• Le istruzioni

– Output

– Input

– Assegnazione• Variabili/Costanti

• Operazioni di calcolo

• Organizzazione delle istruzioni

• Programmazione strutturata

• Le strutture di controllo

• Le strutture fondamentali

– Sequenza

– Selezione• Azioni di tipo logico

– Iterazione con controllo in coda

• Le strutture non primitive

– Iterazione con controllo in testa

– Iterazione enumerativa

– Scelta multipla

• Soluzione esercizi

Page 3: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 3

L’ALGORITMO

Informalmente, un algoritmo è una procedura ben definita che serve per risolvere un dato problema

E’ una sequenza di passi che prende dei valori come input e produce altri valori come output

Più precisamente, un algoritmo è un procedimento di calcolo , descrivibile con un numero finito di operazioni che conducono al risultato

Page 4: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 4

Etimologia del termine algoritmo

Il termine algoritmo significa procedimento di calcolo

Deriva dal termine latino medievale algorismus, che a sua volta deriva dal nome del matematico usbeco Abu Jafar Mohammad ibn-Musa al-Khowarismi, vissuto nel IX (?) secolo

Algoritmi nella storia

• Algoritmi di tipo numerico sono stati studiati da babilonesi e indiani

• Algoritmi in uso ancora oggi sono stati studiati da matematici greci 2000 anni fa (Algoritmo di Euclide per il MCD, algoritmi geometrici, ... )

Page 5: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 5

Diffusione degli algoritmiLe tecniche di progettazione di algoritmi e di analisi di correttezza e di efficienza si sono evolute nella seconda metà del XX secolo grazie alla diffusione dei calcolatori elettronici

Ovunque si impieghi un calcolatore occorrono algoritmi corretti e efficienti che ne utilizzino al massimo le possibilità

Esempi di algoritmi efficienti: controllo dei voli aerei

• regolazione reattori nucleari

• reperimento d’informazioni da archivi

• smistamento di comunicazioni telefoniche

• gioco degli scacchi

• controllo della produzione di una catena di montaggio

Page 6: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 6

IL PROGRAMMA

In ambito informatico, un algoritmo viene descritto tramite un programma, ossia un testo scritto in uno specifico linguaggio detto linguaggio di programmazione per essere eseguito da calcolatori elettronici

Gli algoritmi sono astratti e per controllarne il funzionamento devono essere realizzati con un qualche strumento concreto

• Ad esempio la descrizione di una ricetta di cucina è un algoritmo ma la preparazione della pietanza è la realizzazione della ricetta. E’ solo allora che si vede se la ricetta “funziona”

• Altro esempio può essere rappresentato da una qualsiasi formula matematica, che rappresenta, nel linguaggio matematico un procedimento. Ma la bontà di tale regola può essere verificata solo con dei veri e propri calcoli, sostituendo alle variabili dei veri numeri.

Page 7: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 7

L’algoritmo e il programma

Invece:

Le proprietà degli algoritmi sono talmente fondamentali, generali e robuste, da essere indipendenti dalle caratteristiche di specifici linguaggi di programmazione o di particolari calcolatori elettronici

Quindi:

PER RISOLVERE UN PROBLEMA E’ ASSOLUTAMENTE NECESSARIO TROVARE UN PROCEDIMENTO RISOLUTIVO DESCRIVIBILE CON UN ALGORITMO, E SOLO DOPO SI PUO’ PASSARE A SCRIVERE IL PROGRAMMA

Ogni linguaggio di programmazione ha una sua sintassi ed una propria rappresentazioni dei dati, e utilizza le proprie operazioni di manipolazione dei dati

Page 8: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 8

PROGRAMMA = ISTRUZIONI + DATIUn programma può essere visto come un manipolatore di dati:

a fronte di dati in ingresso che descrivono il problema producono dati in uscita come risultato del problema

INPUT (dati)

OUTPUT(dati)PROCESSO

(istruzioni)

Le operazioni sui dati sono le istruzioni.I dati sono gli oggetti su cui vengono eseguite le istruzioni.

Tutti i linguaggi di programmazione prevedono un insieme di dati e istruzioni

che il programmatore può utilizzare nella realizzazione dei propri programmi.

Page 9: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 9

I DATI

I dati possono essere distinti in base a :

• Utilizzo all’interno del processo

INPUT

OUTPUT

LAVORO

• Formato NUMERICO

ALFANUMERICO

• Valore assunto durante il processo

INTERO

DECIMALE

VARIABILE

COSTANTE

Questi aspetti dei dati devono essere definiti già nell’algoritmo, in modo da poterli poi “tradurre” con la sintassi propria del linguaggio di programmazione

Page 10: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 10

LE ISTRUZIONIAnche le istruzioni devono essere scritte rispettando la sintassi propria del linguaggio di programmazione

Ogni linguaggio di programmazione ha le proprie istruzioni, ma tutti i linguaggi devono possedere alcune istruzioni per compiere le azioni fondamentali

  Acquisire i dati su cui attivare il processo di elaborazione input

• Comunicare all’esterno i risultati ottenuti output

Azioni di tipo aritmetico assegnazione - assegnare un valore ad una variabile - utilizzare gli operatori aritmetici (+, -, /, *, %)

Azioni di tipo logico confronto -  Utilizzare gli operatori di relazione( =, <, >, <=, >=, <>) per confrontare il contenuto di due variabili - Utilizzare gli operatori logici (and, or, not)

Page 11: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 11

ISTRUZIONI DI OUTPUTSono le istruzioni che visualizzano dati e messaggi a video

INIZIO

FINE

Scrivi “ciao! Sono il computer”

#include <iostream>using namespace std;int main( ){ cout<<"\nciao! Sono il computer”; system("PAUSE");}

Nell’algoritmo il comando di output è scrivi seguito dal messaggio o dal dato che si deve far vedere a video

Esempio: scrivere un programma che manda un messaggio a video

In linguaggio C++ l’istruzione è cout<<Il messaggio deve essere inserito tra virgolette

ESERCIZIO : messaggio

Codifica un programma che manda a video il seguente messaggio: “Ciao! Io sono il Computer! Benvenuto nel mio mondo!”

soluzione

Page 12: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 12

ISTRUZIONI DI INPUTSono le istruzioni che acquisiscono dati digitati da tastiera

Esempio: scrivere un programma che legge un numero e le riscrive a video

In linguaggio C++ l’istruzione è cin>>Il dato deve essere stato definito prima dell’acquisizione

Leggi numero

#include <iostream>using namespace std;

int main(){ int numero; cout<<"\nindica un numero"<<endl; cin>>numero; cout<<"\nil numero indicato vale :“;

cout<<numero<<endl;

system("PAUSE");}

INIZIO

FINE

scrivi “il numero indicato vale”

scrivi numero

scrivi “indica un numero”

Nell’algoritmo il comando di input è leggi seguito dal dato che si deve acquisire

Page 13: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 13

Esempio di esecuzione di input e di output#include <iostream>using namespace std;

int main(){ int numero;

cout<<"\nindica un numero"<<endl;

cin>>numero;

cout<<"\nil numero indicato vale :“;

cout<<numero<<endl;

system("PAUSE");}

ram

numero

Programma caricato in memoria per essere eseguito

tastiera

video

5

123

4

5 Output del valore della variabile numero

7

Il numero indicato

indica un numero

7

7

7

4 Output a video di un messaggio

3 Acquisizione del valore digitato da tastieracon echo a video

2 Output a video di un messaggio

1 Allocazione della variabile numero

Page 14: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 14

OUTPUT DI DATINell’esempio precedente abbiamo visto l’output di un dato numerico:

cout<<numero<<endl;

A differenza dell’output dei messaggi, il dato non deve essere inserito tra virgoletteA video viene mostrato il valore del dato, e non il nome

ESERCIZIO : ALTEZZA

Codifica il programma indicato nell’algoritmo

soluzione

INIZIO

FINE

scrivi “adesso il computer sa che sei alto “

scrivi altezza

scrivi “quanto sei alto?”

leggi altezza

Tabella dei dati

nome I/O V/C N/A descrizione

altezza I/O V N intero Altezza della persona

Page 15: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 15

ISTRUZIONI DI ASSEGNAZIONE

L’istruzione di assegnazione è quella che assegna un valore ad un dato

Esempio: definire una variabile detta lato ed assegnare a tale variabile il valore 9

int lato;lato = 9;

L’assegnazione del valore può essere fatto anche contestualmente alla definizioneTrattandosi di variabili, il valore può essere modificato, ma senza ridefinire la variabile

int lato=9;

Nel caso di valori costanti, l’assegnazione avviene necessariamente nel momento della definizione e ovviamente non può essere modificato #define costante 9; oppure const int

costante=9;

float prezzo= 0;…..…..prezzo = 10.3;

Page 16: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 16

ASSEGNAZIONE TRAMITE OPERAZIONI DI CALCOLO

Il valore di una variabile può essere il risultato di un calcolo aritmetico

Gli operatori aritmetici binari (cioè che richiedono due dati su cui operare) del linguaggio C++ sono:

+ Addizione risultato = numero1 + numero2

- Sottrazione risultato = numero1 – numero2

* Moltiplicazione risultato = numero1 * numero2

/ Divisione risultato = numero1 / numero2

% Resto della divisione tra interi risultato = numero1 % numero2

Page 17: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 17

Esempio di operazioni di calcoloAcquisire due numeri e mostrare il risultato della loro somma

scrivi “la somma è : “ totale

INIZIO

FINE

scrivi “indica il primo valore”

leggi N1

scrivi “indica il secondo valore”

leggi N2

nome I/O V/C N/A descrizione

N1 I V N intero Primo addendo

N2 I V N intero Secondo addendo

totale O V N intero Numero ottenuto dalla somma dei due addendi

#include <iostream>sing namespace std;

int main() { int N1, N2, totale ;

cout<<"\nindica il primo valore "<<endl; cin>>N1; cout<<"\nindica il secondo valore "<<endl; cin>>N2; totale= N1 +N2; cout<<"\nla somma è : " <<totale<<endl; system("PAUSE"); }

totale N1 + N2

Page 18: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 18

Output concatenato

Dall’esempio precedente abbiamo visto che è possibile concatenare più output con una stessa istruzione

cout<<"\nla somma è : " <<totale<<endl;

messaggio di testo dato carattere per andata a capo

ESERCIZIO : OPERAZIONI

Acquisire due numeri e mostrare il risultato delle quattro operazioni soluzione

int N1, N2, totale ;

Abbiamo visto anche che è possibile definire più variabili dello stesso tipo con una stessa istruzione

Page 19: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 19

Operatore moduloL’operatore modulo calcola il resto della divisione tra interi

Ad esempio: 7 % 3 = 1

6 % 4 = 2

6 % 3 = 0

Può essere utilizzato per verificare se un numero è pari o dispari.

Se un numero è pari, il resto della divisione per 2 è 0 6%2=0

Se un numero è dispari, il resto della divisione per 2 è 1 7%2=1

Page 20: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 20

Esempio di utilizzo di operatore modulo

scrivi “il quoziente è “ quoziente

“ il resto è “ resto

INIZIO

FINE

scrivi “indica il primo valore”

leggi N1

scrivi “indica il secondo valore”

leggi N2

quoziente N1 / N2 resto N1 % N2

ESERCIZIO : QUOZIENTE E RESTO codificare l’algoritmo scritto per calcolare quoziente e resto di due numeri interi

soluzione

Dati due numeri interi, calcolare quoziente e resto

nome I/O V/C N/A descrizione

N1 I V N intero

dividendo

N2 I V N intero

divisore

quoziente O V N intero

Numero ottenuto dalla divisione di N1 e N2

resto O V N intero

Resto ottenuto dalla divisione di N1 e N2

Page 21: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 21

ASSEGNAZIONE TRAMITE OPERATORI UNARI

Gli operatori aritmetici unari sono quelli che richiedono un solo operando.

Nel linguaggio C++ sono:

++ Per incrementare di una unità l’operando

- - Per decrementare di una unità l’operando

l’istruzione numero++ equivale all’istruzione numero = numero + 1

l’istruzione numero- - equivale all’istruzione numero = numero - 1

Page 22: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 22

Esempio di assegnazione con operatori unari

ESERCIZIO : ETA’ DEI FIGLI

Una mamma ha tre figli, nati in anni consecutivi. Data in input l’età del terzo figlio, comunicare l’età degli altri due

soluzione

scrivi “il valore successivo è : “ numero

INIZIO

FINE

scrivi “indica un numero”

leggi numero

#include <iostream>using namespace std;

int main(){ int numero; cout<<"\nindica un numero :"; cin>>numero; numero++; cout<<"\nil valore successivo e':"<<numero<<endl; system("PAUSE");}

numero++

Acquisire un numero e mostrare il successivo

Page 23: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 23

ORGANIZZAZIONE DELLE ISTRUZIONI

Abbiamo visto le principali istruzioni che intervengono in un algoritmo, e quindi in un programma.

La scrittura dell’algoritmo è una fase molto delicata e quindi si ha bisogno di regole per una corretta organizzazione del lavoro

Tali regole sono alla base della programmazione strutturata

Secondo la programmazione strutturata, le istruzioni di un algoritmo devono essere organizzate secondo strutture ben definite, non devono cioè essere scritte senza uno schema ben preciso

Page 24: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 24

PROGRAMMAZIONE STRUTTURATA

Teorema di Jacopini Böhm (1966)

Qualunque algoritmo può essere implementato utilizzando le tre sole strutture di controllo:

• sequenza• selezione• iterazione

Tutti i linguaggi imperativi implementano le strutture di controllo fondamentali con opportune istruzioni

Naturalmente la forma sintattica può a volte variare leggermente, ma il funzionamento rimane identico

Page 25: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 25

STRUTTURE DI CONTROLLO

• PRIMITIVE necessarie e sufficienti per risolvere qualsiasi algoritmo (teorema di Bohm-Jacopini)

SEQUENZA

SELEZIONE (o scelta logica)

ITERAZIONE con il controllo in coda

ITERAZIONE con controllo in testa

ITERAZIONE ENUMERATIVA

SCELTA (o selezione) MULTIPLA

• NON PRIMITIVEderivate da quelle primitive

Page 26: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 26

LA SEQUENZA

E’ un insieme di azioni da svolgere secondo un ordine prefissato. L’ordine di esecuzione è dalla prima all’ultima istruzione seguendo un percorso unico.

In C++ si utilizza

{ per indicare l’inizio della sequenza di istruzioni

} per indicare la fine della sequenza

………..

istruzione-1

istruzione-2

istruzione-3

……………

Flow chart pseudocodifica

Page 27: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 27

Esempio di istruzioni in sequenza

inizio{ scrivi “indica il prezzo" leggi PREZZO scrivi “indica lo sconto" leggi SCONTO c PREZZO – SCONTO scrivi “il prezzo scontato è “ c }fine

PROBLEMA: dato il prezzo di un prodotto e lo sconto effettuato, calcolare e comunicare il prezzo scontato

Si propone l’algoritmo disegnato con la tecnica del flow-chart e con la tecnica della pseudocodifca.

INIZIO

FINE

C PREZZO - SCONTO

Scrivi “il prezzo è “ C

Leggi PREZZO

Scrivi “indica lo sconto”

Leggi PREZZO

Scrivi “indica il prezzo”

nome I/O V/C N/A descrizione

PREZZO I V N decimale Prezzo del prodotto

SCONTO I V N decimale Sconto effettuato

C O V N decimale Prezzo scontato

soluzioneESERCIZIO: PREZZOcodifica il programma descritto nell’algoritmo

Page 28: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 28

Alcune osservazioni sulle tecniche per descrivere l’algoritmo

La descrizione di un algoritmo può essere fatta sia con la tecnica del flow-chart che con la tecnica della pseudocodifca. Sono equivalenti, quindi nel seguito ne verrà proposta solo una.

Laddove è sufficientemente chiaro, non verranno indicate le istruzioni di output che servono per chiedere all’utente di indicare i dati . Ad esempio:

INIZIO

FINE

C PREZZO - SCONTO

Scrivi “il prezzo è “ C

Leggi PREZZO

Scrivi “indica lo sconto”

Leggi PREZZO

Scrivi “indica il prezzo”

Leggi PREZZO

Scrivi “indica il prezzo”

verrà sostituita dalla sola istruzione

Leggi PREZZO

La tabella dei dati deve essere sempre descritta

Page 29: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 29

Esercizi proposti sulla sequenza

• Fornito un valore in input, calcolarne il doppio del quadrato del successivo.

• Dato un numero in input, calcolare la somma tra il suo doppio e la sua metà.

• Si devono comprare 3 kg mele e 2 kg di pere; dato in input il prezzo al kg di ciascun prodotto , calcolare la spesa finale

• Date le coordinate di un punto in un piano cartesiano, calcolare la sua distanza dal centro

Page 30: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 30

LA SELEZIONE (scelta logica )

Nel diagramma a blocchi compaiono due possibili percorsi in base al verificarsi o meno di una condizione. Se la condizione è vera si segue il ramo del SI, se è falsa, il ramo del NO.

Con questa struttura si seleziona in modo esclusivo una determinata sequenza/blocco di istruzioni da eseguire sulla base di una <condizione> rappresentata da una espressione booleana , che può essere vera o falsa

Flow chart pseudocodifica

se (condizione) { blocco_istruzioni_1 }altrimenti { blocco_istruzioni_2 }

Nella pseudocodifica, se la condizione è vera si esegue il primo blocco di istruzioni , se è falsa, si esegue il secondo blocco di istruzioni

COND

NO SI

Page 31: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 31

Esempio di struttura di selezione

Calcolo di D

D0SINO

Calcolo due radici reali

Non ci sono radici reali

Data l’equazione di 2° grado: Ax2 + Bx + C = 0

Per trovare le soluzioni reali è necessario calcolare il valore del discriminante D:

D = B2 - 4 AC

Se D0 calcolo delle due radici reali dell’equazione

altrimenti l’equazione non ha radici reali.

Page 32: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 32

AZIONI DI TIPO LOGICO

Si dice enunciato una proposizione che può essere soltanto vera o falsa

ESEMPI DI ENUNCIATI:

Dato un enunciato, possiamo esaminare la sua condizione ossia l’essere vero o falso e in base a tale valutazione possiamo prendere delle decisioni.

Un enunciato può essere vero o falso, ma non entrambe le coseLa verità o la falsità di un enunciato sono dette valori di verità e tali valori corrispondono agli unici due valori dell’algebra booleana

Vero Falso rappresentati anche con 1 0;

• ROMA è composta da 4 lettere vero• 7 > 3 vero • 7 > 12 falso• A > B dipende dal valore assunto dalle variabili A e

BNON E’ UN ENUNCIATO forse pioverà non è né vero né falso

Page 33: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 33

AZIONI DI TIPO LOGICO COMPOSTE

Gli enunciati possono essere composti ossia formati da sottoenunciati collegati tra loro da connettivi

Connettivo AND (prodotto logico)

Siano p e q due enunciati; esaminiamo le tavole di verità dei connettivi AND, OR, NOT

p q p AND q

V V VV F FF V FF F F

Connettivo OR (somma logica)

p q p OR q

V V VV F VF V VF F F

Connettivo NOT (negazione)

p NOT p

V FF V

Page 34: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 34

Sintassi della struttura di SelezioneSintassi della struttura di Selezione

In C++ la struttura di selezione si codifica così

if (condizione) istruzione1;else istruzione2 ;

Se sono presenti più istruzioni in ciascun ramo

RICORDA: Le istruzioni che fanno parte della sequenza sono racchiuse tra le parentesi graffe.

if (condizione) { istruzione1;

istruzione2; …. }

else { istruzione...; … }

Page 35: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 35

Esempio Istruzione di Selezione a due vieEsempio Istruzione di Selezione a due vie

#include <iostream>using namespace std;int main(){ int a;

cin >> a; ; // leggi numero da terminale

if ((a % 2) = = 0) { cout << “il numero e’ pari”; } else { cout << “il numero e’ dispari”;}

system("PAUSE");}

istruzione precedente

istruzione if-else

istruzione successiva

PROBLEMA: dato un numero si comunichi se il numero è pari o dispari

INIZIO

FINE

Scrivi

“il numero è dispari”

Leggi a

a %2=0VF

Scrivi “il numero è pari”

soluzioneESERCIZIO: NUMERO POSITIVOacquisire un numero e comunicare se è positivo o negativo

Page 36: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 36

LA SELEZIONE A UNA VIASinora abbiamo esaminato casi in cui in base alla condizione si potevano eseguire due diverse azioni alternativamente.In alcuni casi invece è possibile scegliere di compiere o non compiere un’azione; in tal caso l’azione da eseguire deve essere posta sul ramo del SI.

CONDSINO

In questo caso la codifica in C++ è:

if (condizione) istruzione1;

o nel caso di più istruzioni:

if (condizione){ istruzione1; istruzione2; ………….;}

La clausola else (altrimenti) in queste situazioni non viene codificata

Page 37: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 37

Esempio Istruzione di Selezione a una viaPROBLEMA: dato un numero intero si comunichi il valore della radice quadrata del suo valore assoluto

#include <iostream>using namespace std;int main(){ int a; float b;

cin >> a; // leggi numero da terminaleif (a < 0 ) {

a = abs(a); // calcola valore assoluto di a

}b = sqrt(a);

cout << “Radice quadrata: “ << b;system("PAUSE");}

istruzione precedente

istruzione if

istruzioni successive

INIZIO

FINE

Leggi a

a >0VF

a = abs(a);a = abs(a);

b = abs(a);b = abs(a);

Scrivi b

ESERCIZIO: VOTIacquisire 3 voti, calcolare e comunicare la media; se la media è insufficiente, comunicare “devi fare i corsi di recupero”

soluzione

Page 38: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 38

Strutture di Controllo if-else NidificatiA volte si possono usare istruzioni di selezione ( a una o a due vie) nidificate , ossia le istruzioni da eseguire al verificarsi della condizione sono a loro volta istruzioni condizionaliIl processo può essere ripetuto a molti livelli

Occorre porre molta attenzione nell’utilizzare una tale struttura, poiché facilmente “ci si perde” nell’esaminare le varie condizioni

ESERCIZIO: NUMERO POSITIVO O NULLOAcquisire un numero e comunicare se è positivo, negativo o nullo

Istruzione Successiva

Condizione

I1

Vera Falsa

Istruzione Precedente

Condizione

I2

Vera Falsa

Condizione

I3

Vera Falsa

I4

soluzione

Page 39: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 39

Esercizi proposti sulla selezione• Dati 2 voti, calcolare la media ; se la media è sufficiente ,

comunicare “alunno promosso” altrimenti comunicare “alunno rimandato”

• Volendo fare la spesa , si ha a disposizione una certa cifra iniziale. Conoscendo l’importo da spendere, verificare se la spesa è possibile

• Dati tre numeri, stabilire se possono essere le misure dei lati di un triangolo rettangolo.

• Viene fornito in input il punteggio di un candidato ad un concorso. Se tale punteggio è compreso tra 0 e 27, visualizzare RESPINTO, tra 28 e 40 visualizzare AMMESSO, in tutti gli altri casi ERRORE.

Page 40: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 40

ITERAZIONE CON CONTROLLO IN CODA ( do…while )

Per iterazione si intende la ripetizione di una o più azioni sotto il controllo di una condizione.

Il gruppo di azioni da ripetere è detto corpo del ciclo

In C++, il ciclo che si ripete mentre la condizione è vera; quando la condizione è falsa il ciclo si interrompe, quindi è necessario che all’interno del corpo vi sia una istruzione che modifichi il valore della condizione, altrimenti il ciclo “va in loop”

Nell’iterazione con il controllo in coda, la condizione da verificare si trova dopo il corpo del ciclo

Il corpo del ciclo verrà eseguito almeno una volta.

Condizione

Istruzione Precedente

Corpo

Istruzione Successiva

Vera

Falsa

Page 41: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 41

Esecuzione di un ciclo do..while

ESERCIZIO: Leggi ripetutamente un numero finchè il numero letto è > 0

int n;do {cout << “Dammi un numero.“; cin >> n; if (n<=0) cout<<“numero non positivo- ripetere”; } //chiusura del corpo del ciclo while (n<=0); cout << “Fine”;

La struttura do..while, consente di eseguire ripetutamente il corpo del ciclo anche per un numero di volte indeterminato

Memoria RAM

schermo

n

xxx12

Dammi un numero

- 30Numero non positivo-ripetere

- 20

12

Dammi un numero

Numero non positivo-ripetere

Dammi un numero

-30-20

Fine

Questa struttura può essere utilizzata per il “controllo dei dati in input”

Page 42: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 42

num=5

cont=1

ris=num*cont

scrivi ris

cont=cont+1

cont10 s

N

ESERCIZIO: Visualizzazione dei primi 10 multipli di 5

Inizio ciclo

Istruzioni interne al ciclo ripetute mentre la variabile cont è minore o uguale a 10

Condizione di fine ciclo (quando cont supera 10)

Codifica in C++:

num=5; cont=1;

do { ris=num*cont;

cout<<ris;

cont++;

}

while (cont<=10);

Esempio di iterazione con controllo in coda

Page 43: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 43

RICORDA:Quando si fa riferimento ad una condizione (sia nella scelta che nell’iterazione) si intende che è possibile utilizzare anche condizioni composte.

Si ottengono condizioni composte legando due o più condizioni con gli operatori logici:

In C++ANDAND prodotto logico &&OROR somma logica | |NOTNOT negazione !

Esempi in C++: OR nella selezione if ((a>0) || (b>0)) …..;

AND nella ripetizione do { ….. …..

} while ((a>0) && (b>0));

ESERCIZIO: BENVENUTOAcquisire il nome di una persona e il sesso (tramite lettera ‘m’ o ‘f’) e scrivere come messaggio: “Buongiorno, signor … “ oppure “Buongiorno signora ….. “ seguito da nome

soluzione

Page 44: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 44

Esercizi proposti sulla iterazione con controllo in coda

• Dato in input un numero positivo (NUM>0), visualizzarne l’inverso (INV=1/NUM), il doppio (DOP=2*NUM), il quadrato (QUAD=NUM*NUM).

• Visualizzare i primi N numeri pari, con N intero positivo fornito in input.

• Visualizzare la somma dei primi N interi, con N>3 fornito in input.

Oss: l’iterazione è sul controllo dell’input

Page 45: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 45

STRUTTURE NON PRIMITIVE

• ITERAZIONE CON CONTROLLO IN TESTA

• ITERAZIONE ENUMERATIVA

• SCELTA (O SELEZIONE) MULTIPLA

Si tratta di strutture che derivano da quelle primitive di selezione e iterazione con controllo in coda

Pur non essendo teoricamente indispensabili rendono più semplice ed efficace l’attività di programmazione

Page 46: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 46

ITERAZIONE CON CONTROLLO IN TESTA ( while …)Codifica in C++

while (cond){ istruzione1;istruzione2;}

La caratteristica di questa iterazione è che la condizione da verificare si trova prima delle azioni da eseguire (corpo).

Il while verifica la condizione all’inizio del ciclo per cui se inizialmente la condizione risulta falsa il corpo del ciclo non viene mai eseguito

Affinchè il ciclo while, nel caso la condizione sia stata inizialmente trovata vera, abbia la possibilità di terminare è necessario che all’interno del corpo vi sia una istruzione che modifichi il valore della condizione

sCOND

N

istruzione1

istruzione2

Page 47: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 47

Esecuzione di un ciclo whileESERCIZIO: Leggi ripetutamente un numero in ingresso e calcolane la radice quadrata fino a quando il numero letto è > 0

int i;cout << “Dammi il primo num.”;cin >> i;while ( i > 0 ) { cout << sqrt(i) << endl; cout << “Dammi un altro num.“; cin >> i; } //corpo del ciclocout << “Fine”;

Dammi un altro num.

25

Memoria RAM

schermo

Dammi il primo num.

5

9

3

Dammi un altro num. 0

Fine

i

09xxx

Anche la struttura while…, consente di eseguire ripetutamente il corpo del ciclo anche per un numero di volte indeterminato

25

Page 48: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 48

Esempio di iterazione con controllo in testa

num=5

cont=1

N

ESERCIZIO: Visualizzazione dei primi 10 multipli di 5

Istruzioni ripetute all’interno del ciclo

Condizione di inizio ciclo (mentre cont10)

Codifica in C++:

num=5; cont=1;

while (cont<=10)

{

ris=num*cont;

cout<<ris;

cont++;

}

s

cont10

ris=num*cont

scrivi ris

cont=cont+1

fine ciclo

Page 49: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 49

ITERAZIONE ENUMERATIVA (for)

Ha questo nome poiché si tratta di un’iterazione in cui si conosce quante volte il ciclo viene ripetuto.

Indicata nella gestione degli array monodimensionali (vettori) o bidimensionali (matrici) poiché in queste strutture è obbligatorio dichiarare di quanti elementi sono formate.

L’iterazione enumerativa è derivata dalla iterazione con controllo in testa, perciò la sua rappresentazione con il flow-chart sarà simile a quella dell’iterazione con controllo in testa.

E’ però presente una variabile intera di controllo del numero ripetizioni del corpo del ciclo.

Tale variabile viene inizializzata fuori ciclo, incrementata nel ciclo e controllata nella condizione di uscita dal ciclo (ciclo contatore).

Page 50: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 50

Esempio di iterazione enumerativa

ESERCIZIO: Visualizzazione dei primi 10 multipli didi 5 (contatore sulla variabile cont)

Codifica in C++:

num=5; for (cont=1;cont<=10;cont++) { ris=num*cont; cout<<ris;}

num=5

cont=1

s

cont10

ris=num*cont

scrivi ris

cont=cont+1

inizializzazione

controllo

incremento

Page 51: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 51

Codifica in C++ dell’ iterazione enumerativa

for ( espressione1; espressione2 ; espressione3 ) istruzione;

L’istruzione for è composta da tre espressioni separate dal ‘;’ la prima è di inizializzazione, la seconda di controllo, la terza di incremento.

L’ordine di esecuzione è il seguente:

1) esecuzione dell’espressione1 (una sola volta)

2) controllo dell’espressione2 (ripetuta dopo ogni incremento)

3) esecuzione dell’istruzione (se espressione2 è vera, altrimenti si esce dal ciclo)

4) esecuzione dell’espressione3 (incremento e ritorno al punto 2)

Page 52: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 52

Quando si equivalgono while / for

float lato, area;int i;for (i=0; i<3; i++) {

cout << “Lato ? ” << endl; cin >> lato; area=lato*lato; cout << “Area: “ << area << endl;

}cout << “Fine”;

float lato, area;int i;i=0;while (i<3) {

cout << “Lato ? ” << endl;

cin >> lato;area=lato*lato;cout << “Area: “

<< area << endl; i++;}cout << “Fine”;

Esempio di equivalenza strutture iterative while e for per iterazioni controllate da contatore in C++:

Page 53: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 53

• Letto da tastiera un numero N positivo , acquisire N numeri e calcolarne la media

• Letto da tastiera un numero N positivo, acquisire N numeri e calcolare la somma e la media dei positivi e la somma e la media dei negativi

Esercizi proposti sulla iterazione enumerativa

Page 54: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 54

SCELTA MULTIPLA

• si sceglie di compiere o non compiere un’azione

• si sceglie di compiere, in modo esclusivo, una tra due azioni

Nella scelta logica

Nella realtà capita di dover compiere, in modo esclusivo, una tra più azioni

La scelta multipla è derivata dalla scelta logica (selezione) ma consente di scegliere tra più azioni

Page 55: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 55

Esempio tipico di scelta multipla è quello di un programma che permette all’utente, attraverso un menù iniziale, di scegliere tra le funzioni offerte.

• Tale situazione è risolvibile mediante una serie di scelte logiche

• Molti linguaggi di programmazione, tra cui il C++, agevolano il programmatore mettendo a disposizione la scelta multipla

Esempio di scelta multipla

Page 56: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 56

Rappresentazione della scelta multipla nel diagramma a blocchi

X

istr1 istr2 istr3 istr4 istrd

1

2 3 4

X: variabile di cui va analizzato il contenuto

Valori che si prevede possa assumere X (1, 2, 3, 4)

default Default racchiude tutti i valori diversi da

quelli previsti

istr1, istr2,… rappresentano le istruzioni da eseguire. Se nella variabile X c’è il valore 1 viene eseguito il gruppo di istruzioni istr1, se in X c’è il valore 2 le istruzioni istr2 e così via.

Page 57: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 57

in C++ la in C++ la SelezioneSelezione MultiplaMultipla è rappresentata dalla istruzione è rappresentata dalla istruzione switch-caseswitch-case

 switch (variabile){                     case <costante1>: <sequenza di istruzioni1>;     break;                     case <costante2>: <sequenza di istruzioni2>;    break;                                 ....                     case <costanten>: <sequenza di istruzionin>;    break;                     default   : <sequenza di istruzioni>;                   break;                             }

Sintassi della selezione multipla in C++

• le espressioni costanti costante1, costante2, ..., costanten devono essere di tipo intero

• In C++ i caratteri sono assimilati agli interi (ne viene considerata la codifica interna in ASCII)

• l’istruzione break serve per terminare lo switch dopo aver eseguito solo la sequenza associata ad una particolare scelta (case) e proseguire con l’istruzione successiva allo switch-case;

• nel costrutto può comparire la clausola default per individuare la sequenza di operazioni da compiere quando il valore esaminato non coincide con alcuno di quelli specificati

Page 58: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 58

main(){int num;cout <<"Dammi un giorno (numero): ";cin >> num ;

switch (num) {

case 1: cout<<“ Lunedi” ; break;case 2: cout<<“ Martedi” ; break;case 3: cout<<“Mercoledi“ ; break;case 4: cout<<“Giovedi“ ; break;case 5: cout<<“Venerdi“ ; break;case 6: cout<<“Sabato“ ; break;case 7: cout<<“Domenica“ ; break;default : cout<<“Giorno Inesistente“ ;

break;}

}

Semplice esempio di Semplice esempio di switch-case in C++ESERCIZIO: dato un numero intero, visualizza il nome del

giorno della settimana corrispondente

Page 59: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 59

Esercizio sulla selezione multipla SEMPICE CALCOLATRICEScrivere un programma che, acquisiti due interi positivi, visualizzi un menù che consenta di scegliere quale operazione aritmetica eseguire.

ANALISI

Si acquisiscono due interi , con il controllo che siano positivi

Si ripetono le seguenti istruzioni, finchè l’utente non indica espressamente che vuole terminare

• si presenta a video un menu di scelta tra le 4 operazioni: 1- addizione, 2-sottrazione, 3-moltiplicazione, 4-divisione.Con la scelta 5 si esce dall’iterazione

• Si acquisisce la scelta e si esegue l’operazione richiesta mostrando a video il risultato.

• In caso di scelta diversa da 1,2,3,4, 5 si manda un messaggio d’errore.

Page 60: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 60

#include <iostream.h>#include <conio.h>

void main( ){ // campo per la scelta dell’operazione char scelta; // primo, secondo operando e risultato int num1,num2,ris; do { cout<<“\nInserisci primo numero “; cin>>num1; } while (num1<=0); do { cout<<“\nInserisci secondo numero “; cin>>num2; } while (num2<=0);

// Visualizzazione del menù di sceltado{ clrscr(); cout<<“\nMENU’ DI SCELTA\n\n”; cout<<“\n1: Addizione”; cout<<“\n2: Sottrazione”; cout<<“\n3: Moltiplicazione”; cout<<“\n4: Divisione”; cout<<“\n5: Fine lavoro”; cout<<“\nInserisci scelta “;// Acquisizione del campo scelta cin>> scelta;

Esercizio : semplice calcolatrice

Page 61: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 61

// Utilizzo della scelta multiplaswitch (scelta) { case ‘1’: {ris=num1+num2; cout<<“\nIl risultato è “<<ris; break; } case ‘2’: {ris=num1-num2; cout<<“\nIl risultato è “<<ris; break; } case ‘3’: {ris=num1*num2; cout<<“\nIl risultato è “<<ris; break; } case ‘4’: {ris=num1/num2; cout<<“\nIl risultato è “<<ris; break; } case ‘5’: break; default : cout<<“\nScelta errata”; } cout<<“\nIl risultato è “<<ris; } while (scelta !=‘5’);cout<<“\nCiao!”;}

Esercizio : semplice calcolatrice(prosegue soluzione)

Page 62: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 62

• Prevedere un programma che visualizzi un menù con tutte le materie scolastiche. Scelta una particolare materia, dovrà comparire il nome dell’insegnante.

• Assegnazione dei premi ad un’estrazione. Viene generato un intero casuale compreso tra 1 e 4 con i seguenti abbinamenti:1 vincita di un Personal Computer 2 vincita di una telecamera 3 vincita di un videoregistratore 4 vincita di una macchina fotografica

• Dato un numero compreso tra 1 e 12, indicare il nome del mese corrispondente

Esercizi proposti sulla selezione multipla

Page 63: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 63

Soluzione esercizi• Messaggio• Altezza• Operazioni• Quoziente e resto• Età dei figli• Prezzo• Numero positivo• Voti• Numero positivo o nullo• benvenuto

Page 64: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 64

Esercizio : Messaggio

ESERCIZIO : messaggio

Codifica un programma che manda a video il seguente messaggio: “Ciao! Io sono il Computer! Benvenuto nel mio mondo!”

#include <iostream>using namespace std;int main( ){ cout<<"\nCiao! Sono il computer!Benvenuto nel mio mondo!”; system("PAUSE");}

Elenco eserciziTeoria

Page 65: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 65

Esercizio: altezza

#include <iostream>

using namespace std;

int main()

{

int altezza;

cout<<"\nquanto sei alto?";

cin>>altezza;

cout<<"\nadesso il computer sa che sei alto "<<altezza<<endl;

system("PAUSE");

}

Elenco eserciziTeoria

ESERCIZIO : ALTEZZA

Leggere l’altezza di una persona e poi mostrarla a video

Page 66: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 66

Esercizio: Operazioni

#include <iostream>using namespace std;int main()

{ float n1, n2, ris; cout<<"\nindica il primo operando :"; cin>>n1; cout<<"\nindica il secondo operando :"; cin>>n2;

ris=n1+n2; cout<<"\nla loro somma vale : "<<ris;

ris=n1-n2; cout<<"\nla loro differenza vale : "<<ris;

ris=n1*n2; cout<<"\nil loro prodotto vale : "<<ris;

ris=n1/n2; cout<<"\nil loro rapporto vale : "<<ris<<endl;

system("PAUSE");

}

ESERCIZIO : OPERAZIONI

Acquisire due numeri e mostrare il risultato delle quattro operazioni

Elenco eserciziTeoria

Page 67: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 67

Esercizio: quoziente e resto#include <iostream>using namespace std;

int main(){ int n1, n2; float quoziente, resto;

cout<<"\nindica il primo valore :"; cin>>n1; cout<<"\nindica il secondo valore :"; cin>>n2; quoziente = n1/n2; resto = n1% n2; cout<<"\nil quoziente e': "<<quoziente <<" e il resto e' "<<resto; system("PAUSE");}

ESERCIZIO : QUOZIENTE E RESTO codificare l’algoritmo scritto per calcolare quoziente e resto di due numeri interi

Elenco eserciziTeoria

Page 68: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 68

Esercizio: età dei figli

#include <iostream>using namespace std;int main(){ int eta; cout<<"\nindica l'eta' del terzo figlio :"; cin>>eta; eta++; cout<<"\nil secondo figlio ha "<<eta<<" anni "<<endl; eta++; cout<<"\nil primo figlio ha "<<eta<<" anni "<<endl;

system("PAUSE");

}

ESERCIZIO : ETA’ DEI FIGLI

Una mamma ha tre figli, nati in anni consecutivi. Data in input l’età del terzo figlio, comunicare l’età degli altri due

Elenco eserciziTeoria

Page 69: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 69

Esercizio: prezzo

#include <iostream>using namespace std;

int main()

{ float prezzo, sconto, c;

cout<<"\nindica il prezzo : ";

cin>>prezzo;

cout<<"\nindica lo sconto : ";

cin>>sconto;

c = prezzo - sconto;

cout<<"\nil prtezzo scontato e' : "<<c<<endl;

system("PAUSE");

}

PROBLEMA: dato il prezzo di un prodotto e lo sconto effettuato, calcolare e comunicare il prezzo scontato

Elenco eserciziTeoria

Page 70: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 70

Esercizio: numero positivo

#include <iostream>using namespace std;

int main()

{ int numero;

cout<<"\nindica un numero : "; cin>>numero; if(numero >0) cout<<"\nil numero "<<numero<<" e' positvo"<<endl;

else

cout<<"\nil numero "<<numero<<" e' negativo o nullo"<<endl;

system("PAUSE");

}

ESERCIZIO: NUMERO POSITIVOacquisire un numero e comunicare se è positivo o negativo

Elenco eserciziTeoria

Page 71: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 71

Esercizio: voti #include <iostream>using namespace std;

int main()

{ int voto1, voto2, voto3, somma; float media;

cout<<"\nindica il primo voto : "; cin>>voto1;

cout<<"\nindica il secondo voto : "; cin>>voto2;

cout<<"\nindica il terzo voto : "; cin>>voto3;

somma = voto1+voto2+voto3; media = (float) somma / 3; cout<<"\nla media dei voti e' "<<media<<endl;

if(media <6) cout<<"\ndevi fare i corsi di recupero"<<endl;

system("PAUSE");}

ESERCIZIO: VOTIacquisire 3 voti, calcolare e comunicare la media; se la media è insufficiente, comunicare “devi fare i corsi di recupero”

Elenco eserciziTeoria

Page 72: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 72

Esercizio: numero positivo o nullo

#include <iostream>using namespace std;

int main()

{ int numero;

cout<<"\nindica un numero : "; cin>>numero;

if(numero >0) cout<<"\nil numero "<<numero<<" e' positvo"<<endl; else

if(numero <0) cout<<"\nil numero "<<numero<<" e' negativo "<<endl; else cout<<"\nil numero "<<numero<<" e' nullo "<<endl;

system("PAUSE");

}

ESERCIZIO: NUMERO POSITIVO O NULLOacquisire un numero e comunicare se è positivo ,negativo o nullo

Elenco eserciziTeoria

Page 73: ALGORITMO 1 LALGORITMO I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI FINE.

ALGORITMO 73

Esercizio: benvenuto #include <iostream>using namespace std;

int main()

{ string nome; char sesso;

cout<<"\nindica il nome : "; cin>>nome;

do { cout<<"\nindica il sesso : "; cin>>sesso;

if (sesso != 'm' and sesso != 'f') cout<<"\nvalore errato: indicare 's' o 'm'"<<endl; } while (sesso != 'm' and sesso != 'f');

if (sesso =='m') cout<<"\nBuongiorno, signor "<<nome<<endl; else cout<<"\nBuongiorno, signora "<<nome<<endl; system("PAUSE");}

Elenco eserciziTeoria

ESERCIZIO: BENVENUTOAcquisire il nome di una persona e il sesso (tramite lettera ‘m’ o ‘f’) e scrivere come messaggio: “Buongiorno, signor … “ oppure “Buongiorno signora ….. “ seguito da nome