martedì 19 dicembre 2023

Corso ALGORITMI PER LA PROGRAMMAZIONE: Lezione 2 Controllo del Flusso


2-Controllo del Flusso: Gli algoritmi includono istruzioni di controllo del flusso, come istruzioni condizionali (if, else) e cicli (for, while), che determinano l'ordine di esecuzione delle istruzioni in base a determinate condizioni.


2.1-Istruzioni condizionali (if, else, switch)

Il flusso di controllo è il meccanismo con cui un programma decide quali istruzioni eseguire in base a condizioni specifiche. Le istruzioni condizionali sono fondamentali per creare logica decisionale nei programmi. Ecco alcuni dettagli:


Istruzione "if": L'istruzione "if" permette di eseguire un blocco di codice solo se una condizione specifica è vera. 


Ad esempio:

python

Copy code

if condizione:

    # Esegui questo codice se la condizione è vera


Istruzione "else": L'istruzione "else" viene eseguita se la condizione nell'istruzione "if" è falsa. Può essere utilizzata per gestire il caso contrario.


Ecco un esempio di come potrebbe essere utilizzata l'istruzione else in un linguaggio di programmazione come Python:

python

Copy code

# Esempio di istruzione "else" in Python

numero = 10

if numero > 0:

    print("Il numero è positivo")

else:

    print("Il numero non è positivo")

In questo esempio, viene assegnato il valore 10 alla variabile numero. Viene quindi utilizzata un'istruzione if per verificare se numero è maggiore di zero. Se questa condizione è vera, viene stampato "Il numero è positivo". Altrimenti, se la condizione dell'istruzione if non è soddisfatta, viene eseguita l'istruzione else, che stampa "Il numero non è positivo".


L'istruzione else viene eseguita quando la condizione dell'istruzione if non è vera. In pratica, l'istruzione else è il blocco di codice che viene eseguito quando tutte le condizioni precedenti non sono soddisfatte.


Istruzione "switch" (o "case" in alcuni linguaggi): Questa istruzione permette di gestire più scenari specifici in base al valore di una variabile o espressione. È spesso utilizzata in linguaggi come Java e C++.


Ad esempio, in un linguaggio come Python, potresti utilizzare istruzioni condizionali in questo modo:

python

Copy code

età = 18

if età >= 18:

    print("Sei maggiorenne.")

else:

    print("Sei minorenne.")


Le istruzioni condizionali sono fondamentali per controllare il flusso di un programma e consentono di prendere decisioni in base a condizioni specifiche, il che rende il codice più flessibile ed efficiente.


2.2-Cicli (for, while, do-while).

I cicli sono strutture di controllo che consentono al programma di eseguire un blocco di istruzioni ripetutamente. Ci sono tre tipi di cicli comuni:


Ciclo "for": Il ciclo "for" è utilizzato per eseguire un blocco di istruzioni un numero specifico di volte. Si compone di tre parti: inizializzazione, condizione e incremento/decremento. 


Ad esempio, in Python:

python

Copy code

for i in range(5):

    # Esegui questo blocco 5 volte (i sarà 0, 1, 2, 3, 4)


Ciclo "while": Il ciclo "while" esegue un blocco di istruzioni fintanto che una condizione specifica è vera. 


Ad esempio, in Python:

python

Copy code

contatore = 0

while contatore < 5:

    # Esegui finché il contatore è minore di 5

    contatore += 1


Ciclo "do-while" (o "repeat-until"): Il ciclo "do-while" esegue un blocco di istruzioni almeno una volta e quindi continua fintanto che una condizione specifica è vera. Questo ciclo è meno comune in molti linguaggi, ma è presente in alcuni come C e Pascal.


2.3-Istruzioni di controllo del flusso (break, continue, return)

Le istruzioni di controllo del flusso consentono di modificare il comportamento di un ciclo o di una funzione:


"break": L'istruzione "break" viene utilizzata all'interno di un ciclo (for, while, etc.) per uscire immediatamente dal ciclo, anche se la condizione di continuazione è ancora vera. È utile quando si desidera interrompere un ciclo anticipatamente.


"continue": L'istruzione "continue" viene utilizzata all'interno di un ciclo per passare direttamente alla successiva iterazione, ignorando il resto del blocco di istruzioni corrente. È utile per saltare un'iterazione specifica del ciclo.


"return": L'istruzione "return" viene utilizzata all'interno di una funzione per restituire un valore e terminare l'esecuzione della funzione. Quando "return" è eseguito, il flusso di controllo ritorna al punto in cui la funzione è stata chiamata.


Ecco un esempio di "break" e "continue" in Python:

python

Copy code

for i in range(10):

    if i == 3:

        break  # Interrompi il ciclo quando i è uguale a 3

    if i % 2 == 0:

        continue  # Passa alla prossima iterazione se i è un numero pari

    print(i)


Ecco un esempio di come potrebbe essere utilizzata l'istruzione else con un'istruzione return in Python:


Supponiamo di avere una funzione che confronta due numeri e restituisce il maggiore tra i due:

python

Copy code

def confronta_numeri(numero1, numero2):

    if numero1 > numero2:

        return numero1

    else:

        return numero2

# Utilizzo della funzione

risultato = confronta_numeri(15, 9)

print("Il numero maggiore è:", risultato)

In questo esempio, la funzione confronta_numeri prende due numeri come argomenti (numero1 e numero2). L'istruzione if controlla se numero1 è maggiore di numero2. Se questa condizione è vera, la funzione restituisce numero1 utilizzando l'istruzione return numero1. Altrimenti, se la condizione dell'istruzione if non è soddisfatta, l'istruzione else restituisce numero2 con return numero2.

Nel blocco di codice principale, la funzione confronta_numeri viene chiamata con i valori 15 e 9. Il valore restituito dalla funzione viene quindi assegnato alla variabile risultato e stampato a schermo, risultando nell'output "Il numero maggiore è: 15", poiché 15 è maggiore di 9.


Altri esempi:

Un semplice esempio con if:

Input: Un numero intero numero

Output: "Il numero è positivo" o "Il numero è negativo" a seconda del valore di numero

Leggi numero dallo standard input

Se numero è maggiore di 0 allora

Stampa "Il numero è positivo" sullo standard output

Altrimenti

Stampa "Il numero è negativo" sullo standard output

Fine

In questo esempio, l'istruzione condizionale "if" controlla se il valore di numero è maggiore di zero. A seconda del risultato di questa condizione, l'algoritmo eseguirà una delle due opzioni:

Se numero è maggiore di zero, verrà stampato "Il numero è positivo".

Se numero non è maggiore di zero (cioè è negativo o zero), verrà stampato "Il numero è negativo".

Ecco come funzionerebbe l'algoritmo con alcuni input:

Se forniamo il valore numero = 5:

Input: 5

La condizione "numero > 0" è vera.

Output: "Il numero è positivo"

Se forniamo il valore numero = -3:

Input: -3

La condizione "numero > 0" è falsa.

Output: "Il numero è negativo"

Questo esempio illustra come le istruzioni condizionali, come l'istruzione "if," possano essere utilizzate per controllare il flusso di un algoritmo in base a condizioni specifiche.


Un altro esempio con if ed else:

Input: Un numero intero numero

Output: "Il numero è pari" o "Il numero è dispari" a seconda del valore di numero

Leggi numero dallo standard input

Se numero modulo 2 è uguale a 0 allora

Stampa "Il numero è pari" sullo standard output
Altrimenti

Stampa "Il numero è dispari" sullo standard output

Fine

In questo esempio, l'istruzione condizionale "if" controlla se il valore di numero è pari o dispari. La condizione numero % 2 == 0 verifica se numero è divisibile per 2 senza resto, il che lo rende un numero pari. Se questa condizione è vera, verrà stampato "Il numero è pari." Altrimenti, se la condizione è falsa (cioè numero ha un resto quando diviso per 2), verrà stampato "Il numero è dispari."


Ecco come funzionerebbe l'algoritmo con alcuni input:

Se forniamo il valore numero = 4:

Input: 4

La condizione "numero % 2 == 0" è vera.

Output: "Il numero è pari"

Se forniamo il valore numero = 7:

Input: 7

La condizione "numero % 2 == 0" è falsa.

Output: "Il numero è dispari"

Questo esempio dimostra come l'istruzione "if" e "else" possano essere utilizzate per controllare il flusso dell'algoritmo in base a due diverse condizioni.


Un semplice esempio con ciclo for:

Ecco un esempio di algoritmo che utilizza un ciclo "for" per eseguire un'azione ripetutamente:

Input: Un numero intero n

Output: La somma dei primi n numeri interi positivi, somma

Leggi n dallo standard input

Inizializza la variabile somma a zero

Per i da 1 a n fai

Aggiungi il valore di i a somma

Stampa somma sullo standard output

Fine

In questo esempio, l'algoritmo utilizza un ciclo "for" per calcolare la somma dei primi n numeri interi positivi. Il ciclo viene eseguito n volte, e in ciascuna iterazione, il valore di i viene aggiunto alla variabile somma.

Ad esempio, se forniamo il valore n = 5 come input:

Esecuzione:

Input: 5

Calcolo: Il ciclo "for" eseguirà le seguenti iterazioni:

somma = 0 + 1 = 1

somma = 1 + 2 = 3

somma = 3 + 3 = 6

somma = 6 + 4 = 10

somma = 10 + 5 = 15

Output: 15

L'algoritmo utilizza il ciclo "for" per eseguire un'azione ripetutamente (aggiungere i a somma) fino a quando si raggiunge il valore di n, dimostrando così come i cicli possano essere utilizzati per automatizzare operazioni ripetitive.


Un semplice esempio con ciclo while:

Ecco un esempio di algoritmo che utilizza un ciclo "while" per eseguire un'azione fino a quando una condizione specifica è soddisfatta:

Input: Un numero intero n

Output: La somma dei primi n numeri interi positivi, somma

Leggi n dallo standard input

Inizializza la variabile somma a zero

Inizializza la variabile i a 1

Mentre i è minore o uguale a n fai

Aggiungi il valore di i a somma

Incrementa i di 1

Stampa somma sullo standard output

Fine

In questo esempio, l'algoritmo utilizza un ciclo "while" per calcolare la somma dei primi n numeri interi positivi. Il ciclo viene eseguito fino a quando la condizione i <= n è vera. In ciascuna iterazione, il valore di i viene aggiunto alla variabile somma e i viene incrementato di 1.

Ad esempio, se forniamo il valore n = 5 come input:

Esecuzione:

Input: 5

Calcolo: Il ciclo "while" eseguirà le seguenti iterazioni:

somma = 0 + 1 = 1, i = 2

somma = 1 + 2 = 3, i = 3

somma = 3 + 3 = 6, i = 4

somma = 6 + 4 = 10, i = 5

somma = 10 + 5 = 15, i = 6

Output: 15

L'algoritmo utilizza il ciclo "while" per eseguire un'azione fino a quando la condizione i <= n è soddisfatta, dimostrando come i cicli "while" possano essere utilizzati per eseguire operazioni fino a quando una condizione specifica è vera.


Un semplice esempio con istruzioni condizionali (if, else) e cicli (for, while):

Ecco un esempio di algoritmo che combina sia istruzioni condizionali "if-else" che cicli "for" e "while" per calcolare la somma dei numeri pari e dispari tra 1 e un numero dato n:

Input: Un numero intero n

Output: La somma dei numeri pari e dispari tra 1 e n


Leggi n dallo standard input

Inizializza le variabili sommaPari e sommaDispari a zero

Inizializza la variabile i a 1

Mentre i è minore o uguale a n fai

Se i modulo 2 è uguale a 0 allora

Aggiungi il valore di i a sommaPari

Altrimenti

Aggiungi il valore di i a sommaDispari

Incrementa i di 1

Stampa "Somma dei numeri pari: " seguito da sommaPari

Stampa "Somma dei numeri dispari: " seguito da sommaDispari

Fine

In questo esempio:

L'algoritmo legge un numero intero n in input.

Inizializza le variabili sommaPari e sommaDispari a zero per tenere traccia delle somme separate dei numeri pari e dispari.

Utilizza un ciclo "while" per attraversare i numeri da 1 a n.

All'interno del ciclo, l'istruzione condizionale "if-else" controlla se il numero i è pari o dispari in base al resto della divisione per 2. A seconda della parità, il numero viene aggiunto alla somma appropriata.

Alla fine del ciclo, l'algoritmo stampa le somme separate dei numeri pari e dispari.

Ecco come funzionerebbe l'algoritmo con un input di n = 10:

Esecuzione:

Input: 10

Calcolo:

Numeri pari: 2 + 4 + 6 + 8 + 10 = 30

Numeri dispari: 1 + 3 + 5 + 7 + 9 = 25

Output:

"Somma dei numeri pari: 30"

"Somma dei numeri dispari: 25"

Questo esempio dimostra come sia possibile combinare istruzioni condizionali e cicli per eseguire calcoli complessi in base a determinate condizioni.


Nessun commento:

Posta un commento