Concetti Chiave
- I cicli nei programmi consentono di eseguire ripetutamente un gruppo di operazioni, rendendo il codice più efficiente e comprensibile.
- Le successioni di numeri si definiscono tramite un termine iniziale e una funzione matematica, calcolando ogni nuovo termine in base ai precedenti.
- Gli algoritmi possono essere strutturati per visualizzare termini di una successione specifica, partendo da un termine noto e applicando una funzione ricorsiva.
- Le variabili stringa contengono caratteri alfanumerici e possono essere manipolate attraverso operazioni come concatenamento, estrazione e confronto.
- Le stringhe offrono flessibilità nei programmi, permettendo l'inserimento di dati dall'utente e prevenendo errori di sistema durante l'elaborazione.
In alcuni casi è necessario far ripetere al computer lo stesso gruppo di operazioni.
Siccome:
I programmatori sono gente pigra(e siccome vengono pagati per fare le cose in fretta)
Un programma realizzato con i cicli è più comprensibile
In certi casi non è possibile capire a priori quante volte deve essere usato
Dove è possibile e dove necessario, si usano i cicli.
Es. facciamo sommare al computer i primi 100 numeri.
Somma = 0
somma = somma + 1
somma = somma +2
somma = somma +3
…
somma= somma +99
Somma = somma +100
Altra soluzione con il ciclo per Es. facciamo dire al computer i primi 100 numeri.
inizio
Somma=0
numero=1
for x=1 to 100
somma = somma+1 (IN SCRATCH SI SCRIVE cambia somma di 1 OPPURE
porta somma a somma + 1 )
dire somma
end for
fine
facciamo sommare al computer i primi 100 numeri.
inizio
Somma=0
numero=1
for x=1 to 100
numero = numero +1
somma = somma+numero (IN SCRATCH SI SCRIVE cambia somma di numero OPPURE
porta somma a somma + numero
end for
dire somma
fine
Esercizio: far scrivere al computer 50 numeri pari partendo da 6.
inizio
Numero = 6
for x= 1 to 50
Scrivi: Numero
Numero = Numero + 2
Endfor
fine
Esercizio: far scrivere al computer 50 numeri multipli di N con N inserito dall’utente partendo da 6.
inizio
Numero = 6
for x= 1 to 50
Scrivi: Numero
Numero = Numero + 2
Endfor
fine
Esercizio: far calcolare al computer la somma dei primi 50 numeri partendo da 2.
inizio
numero =0
somma=0
for x= 2 to 52
numero= numero+2
somma=somma+numero
endfor
fine
LE SUCCESSIONI
Si chiamano Successioni di Interi le sequenze di numeri ∈N nelle quali ogni termine è espresso come funzione di termini della successione stessa. Ogni termine di una successione viene quindi creato passo dopo passo (cioè ad ogni passo dell’algoritmo viene creato un nuovo elemento della successione) utilizzando i termini già creati in precedenza.
Ogni successione è definita da:
uno o più termini di partenza
una equazione matematica mediante la quale è possibile creare il nuovo termine della successione e che sarà funzione dei termini precedenti
L’equazione che definisce la serie viene espressa mediante il termine generico della successione.
Es. N_i=f(N_(x
Per ottenere un nuovo elemento della successione è necessario aggiornare ogni volta i valori inseriti nella funzione
Esempio di successione: i numeri interi
Numero di partenza: 0
Funzione: N_(i+1)=N_i+1
Infatti: N_0=0
N_1=N_0+1=0+1=1
N_2=N_1+1=1+1=2
N_3=N_2+1=2+1=3
Realizziamo prima un programma lineare (cioè senza cicli) che visualizza i primi 5 termini della sequenza dei numeri interi partendo da 0
Inizio
N=0
Visualizza N
N=N+1
Visualizza N
N=N+1
Visualizza N
N=N+1
Visualizza N
N=N+1
Visualizza N
Fine
Ora possiamo scrivere l’algoritmo usando i cicli:
Inizio
N=0
Visualizza N
For X=1 to 4
N=N+1
Visualizza N
EndFor
End
Adesso generalizziamo il programma chiedendo all’utente di inserire il numero di partenza della sequenza e il numero di termini della successione da visualizzare
Inizio
Input: “inserisci il termine di partenza della successione”: NInizio
Input:”Inserisci il numero di termini da visualizzare”: Quantità
Visualizza NInizio
N=NInizio
For X=NInizio to (Quantità-1)
N=N+1
Visualizza N
EndFor
End
Esempio di successione: i numeri pari
Inizio
Input: “inserisci il termine di partenza della successione”: NInizio
Input:”Inserisci il numero di termini da visualizzare”: Quantità
Visualizza NInizio
N=NInizio
For X=NInizio to (Quantità-1)
N=N+2
Visualizza N
EndFor
End
La sequenza di Fibonacci: successione nella quale ogni termine è dato dalla somma dei due termini precedenti.
Si scrive così:
N_i=N_(i-1)+N_(i-2) con N_0=1 e N_1=1
N_2=N_1+N_0=1+1=2
N_3=N_2+N_1=2+1=3
N_4=N_3+N_2=3+2=5
Perché fare i conti a mano? Usiamo Excel che, come tutti sanno, è una calcolatrice.
Abbiamo usato Excel per vedere come fare i calcoli a mano senza fare troppi calcoli.
Vediamo come inserire in un algoritmo tutto questo:
INIZIO
Ni = 1
N(i+1) = 1
N(i+2) = 0
for i=0 to 100
N(i+2) = N(i+1) + Ni
MOSTRA N(i+2)
Ni = N(i+1)
N(i+1) = N(i+2)
END FOR
Esercizio 1 successioni
Realizzare un algoritmo che visualizza N termini della successione che ha come termine di partenza N_0=4
e come termine generico:
N_i=N_(i-1)+3
N_0=4
N_1=N_0+3 =4+3=7
N_2=N_1+3=7+3=10
INIZIO
Ni=0
Ni-1=4
For i=1 to 10
Ni = Ni-1 + 3
Ni-1 = Ni
Mostra: Ni
End for
Esercizio 2 successioni
Realizzare un algoritmo che visualizza N termini della successione che ha come termine di partenza N_0=4
N_1=7 e come termine generico:
N_i=N_(i-1)+3N_(i-2)
INIZIO
Ni=0
Ni-1=7
Ni-2=4
For i=1 to 6
Ni = Ni-1 + 3*Ni-2
Ni-2 = Ni-1
Ni-1=Ni
Mostra: Ni
End for
Esercizio 3 successioni
Realizzare un algoritmo che visualizza N termini della successione che ha come termine di partenza N_0=1
N_1=2 e N_2=3 e come termine generico:
N_i=N_(i-3)+3N_(i-2)- 5N_(i-1)
INIZIO
Ni=0
Ni-1=3
Ni-2=2
Ni-3=1
For i=3 to 9
N i = Ni -3 + 3*Ni-2-5*Ni-1
Ni-3 = Ni-2
Ni-2=Ni-1
Ni-1=Ni
Mostra: Ni
End for
Passaggi per l’implementazione di una sequenza in un algoritmo funzionante:
Inizializzare i termini da cui parte la successione e che devono essere termini noti ovvero costanti
Creare il ciclo for – endfor con il numero di termini che si vogliono visualizzare
Inserire nell’algoritmo la funzione che definisce la successione calcolando il termine generico. Qui terminano i passaggi relativi al ciclo attuale. Bisogna ora preparare le variabili per il ciclo successivo
Aggiornare le variabili assegnando il valore del termine precedente della successione partendo dal più “vecchio”. Se si parte dal più “giovane” si cancellano i valori .
Se è richiesta la visualizzazione di tutti i termini della successione, visualizzare il termine che si è calcolato.
NON SOLO NUMERI
Spesso è utile gestire variabili non numeriche.
Un esempio di variabile non numerica sono le variabili STRINGA: oggetti il cui contenuto è costituito da caratteri alfanumerici ovvero lettere dell’alfabeto (maiuscole e minuscole), numeri e caratteri di punteggiatura.
Es: As34& è una stringa di caratteri alfanumerici
Es. 23562 può essere sia una stringa di caratteri sia un numero
Prendiamo due numeri: 234 e 194
Se questi sono numeri, posso calcolare 234 + 194 = 428
Se questi non sono numeri ma sono stringhe di caratteri, non posso fare la somma, ma posso fare la concatenazione, ad esempio “234” & “194” = “234194”
Queste (le stringhe) sono le variabili dal contenuto più generico possibile e vengono in genere usate per consentire all’utente l’inserimento di dati evitando situazioni imbarazzati di crasch del computer.
Le operazioni che si possono eseguire con le stringhe di caratteri sono:
concatenamento di stringhe. Es “ca” & “sa” = “casa”
estrazione di una stringa di lunghezza data. Es estraggo le prime 4 lettere da “carota”. Il risultato è “caro”
confronto di due stringhe. Es. conf = (“Luigi” = “luigi”) il risultato del confronto è una variabile logica. Ha senso fare la seguente operazione “dado”>”cavallo” ? No, a meno che non si esegua il confronto delle lunghezze delle stringhe.
Conversione di una variabile stringa in una variabile di altro tipo (es. numerica)
Esercizio: estrarre la 5° e la 7° lettera della stringa “pentagono”
INIZIO
Parola = ”pentagono”
Dire lettera 5 di Parola per 1 secondo
Dire lettera 7 di Parola per 1 secondo
FINE
Esercizio: estrarre le prime 5 lettere di “canile” e visualizzarle tutte assieme
INIZIO
i = 0
Parola = ”canile”
Risultato = “ ”
Ripeti 5 volte
Unione di risultato & lettera i di Parola
Cambia i di 1
Fine CICLO
Dire risultato per 2 secondi
Domande da interrogazione
- Qual è il vantaggio di utilizzare i cicli nei programmi informatici?
- Come si può calcolare la somma dei primi 100 numeri utilizzando un ciclo?
- Come si definisce una successione di numeri interi?
- Qual è la funzione generica della successione di Fibonacci?
- Quali operazioni si possono eseguire con le stringhe di caratteri?
I cicli rendono i programmi più comprensibili e permettono di eseguire operazioni ripetitive senza doverle scrivere manualmente, risparmiando tempo e fatica.
Si può inizializzare una variabile somma a 0 e utilizzare un ciclo for per aggiungere ogni numero da 1 a 100 alla variabile somma.
Una successione di numeri interi è una sequenza in cui ogni termine è espresso come funzione dei termini precedenti, definita da uno o più termini di partenza e un'equazione matematica.
La successione di Fibonacci è definita dalla funzione N_i = N_(i-1) + N_(i-2), con i primi due termini N_0 = 1 e N_1 = 1.
Con le stringhe di caratteri si possono eseguire operazioni di concatenamento, estrazione di sottostringhe, confronto di stringhe e conversione in altri tipi di variabili.