Your SlideShare is downloading. ×
come costruire un algoritmo
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

come costruire un algoritmo

57,131
views

Published on

Primi concetti sul significato di algoritmo e su come realizzarlo. Esempio di algoritmo per il calcolo di una somma di numeri interi

Primi concetti sul significato di algoritmo e su come realizzarlo. Esempio di algoritmo per il calcolo di una somma di numeri interi


1 Comment
3 Likes
Statistics
Notes
No Downloads
Views
Total Views
57,131
On Slideshare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
299
Comments
1
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Il primo algoritmo Lezione per la classe IIIA del Liceo Tecnico ottobre 2008
  • 2. problema
    • Facciamo fare al computer il seguente lavoro:
    • data una lista cartacea di numeri interi positivi
      • che possono rappresentare diversi dati, ad esempio
      • supponiamo che siano i voti di tutti gli studenti di una classe
    • determinare il voto medio della classe .
  • 3. Come risolvere il problema ?
    • La soluzione del precedente problema viene realizzata per mezzo di un procedimento di pensiero chiamato “ALGORITMO”
    • Si studia come realizzare l’algoritmo per risolvere il problema dato
    • Quindi si adatta l’algoritmo al computer
    • Il computer esegue l’algoritmo
    • Si ottiene la soluzione del problema
  • 4. Algoritmo e metodologia di un algoritmo
    • Anzitutto, prima di passare all’azione vera e propria, bisogna riflettere un attimo per vedere se esiste una metodologia che ci possa aiutare nella soluzione del problema
    • Esiste una metodologia generale che ci insegna a costruire algoritmi ?
    • Che cosa è un algoritmo
    • Che cosa è una metodologia di un algoritmo ?
    • Una metodologia è un metaAlgoritmo, ossia un algoritmo di un algoritmo
      • che ci insegna come costruire algoritmi.
  • 5. Definizione di algoritmo
    • Un algoritmo è un programma di un computer che calcola qualcosa
    • È una sequenza finita di istruzioni, usate per il calcolo e l’elaborazione dei dati
    • È una lista di azioni, istruzioni ben definita per eseguire un compito
    • È un insieme di fasi con un ordine preciso eseguite l’uno dopo l’altra per fare un determinato lavoro
    • È un insieme ordinato di step non ambigui, eseguibili , completabili in un tempo finito
  • 6. Qualche osservazioni sulla definizione
    • Si può pensare ad una condizione chi violi la definizione di algoritmo? Ad esempio esistono dei casi in cui
      • la sequenza delle istruzioni non è finita ?
      • il calcolo non possa terminare in un periodo di tempo finito ?
    • La risposta è si.
      • Può accadere che ci sia un blocco di istruzioni che vengano ripetute per sempre perché la condizione di uscita dalla iterazione non è mai soddisfatta (per un errore di programmazione)
      • Pertanto anche se il numero delle istruzioni è finito, alcune di esse sono ripetute indefinitamente perché niente permette l’interruzione del processo
  • 7. Perché scrivere un algoritmo ?
    • Per comandare il computer di fare qualcosa, bisogna scrivere un programma.
    • Scrivere un programma significa dire al computer, passo dopo passo, esattamente che cosa deve fare.
    • Il computer per fornire la soluzione ad un problema, esegue meccanicamente il programma, ossia ciascuna istruzione che gli viene fornita.
  • 8. Significato di algoritmo
    • Quando dite al computer che cosa deve fare, dovete pure decidere come deve farlo
    • Ecco che, nel progettare “il come”, nasce l’algoritmo del computer
    • L’algoritmo è la tecnica fondamentale utilizzata per far si che un lavoro sia svolto dal computer.
  • 9. Atteggiamento mentale per affrontare un algoritmo
    • Per fare un algoritmo occorre spezzare, frantumare, analizzare, decomporre il lavoro da fare o il compito/attività da eseguire in tante piccole parti o semplici attività/istruzioni
    • Lo scopo è quello di individuare delle fasi del lavoro e in quale sequenza devono essere eseguite per portare a termine il lavoro o compito assegnato
    • Occorre creare una procedura di lavoro
  • 10. Algoritmo dell’algoritmo: procedimento risolutivo
    • Comprendere il problema
      • Identificare i dati noti
      • Identificare le operazioni
      • Identificare le incognite del problema
    • Costruire la soluzione del problema
      • Stabilire quali sono le fasi da eseguire
      • Stabilire la sequenza di queste fasi
  • 11. Comprendere il problema
    • Comprendere il problema:
    • Analisi testuale per identificare le informazioni necessarie
      • Saper riconoscere quali sono i dati esaminando i nomi del testo
      • saper riconoscere quali sono le operazioni richieste dal problema esaminando i verbi del testo
    • Intervistare gli esperti del dominio del problema per comprendere il significato dei dati e delle operazioni
  • 12. I dati del problema
    • I dati del problema
      • Quelli noti di input
      • Quelli incogniti di output
      • Quelli che servono per fare operazioni intermedie di supporto al lavoro
    • Tutti questi dati costituiscono le variabili e costanti del problema.
      • A ciascuna di esse attribuiamo
        • un nome,
        • un tipo di dati (intero, booleano, stringa, carattere,…)
  • 13. Le operazioni
    • Dall’analisi del testo del problema, con l’intervista degli esperti, con un procedimento di decomposizione funzionale si arriva a stabilire quali sono le fasi del lavoro e per ciascuna di esse quali sono le sue operazioni.
    • Le operazioni dipendono dalla scelta fatta delle variabili, anche perché agiscono su di esse, e le modificano
  • 14. Retroazione
    • La scelta delle variabili influenza la scelta delle operazioni
    • La scelta delle operazioni influenza la scelta delle variabili
    • C’è chiaramente una retroazione e prima che si possa pervenire ad una scelta equilibrata e soddisfacente occorre fare più tentativi
    • D’altra parte questo si riflette nella programmazione che è sicuramente iterativa e incrementale
    Scegli variabili Scegli operazioni
  • 15. La cassetta degli strumenti
    • La cassetta degli strumenti per lavorare su di un algoritmo contiene quattro strumenti principali:
      • La sequenza di istruzioni
      • L’alternativa
      • La iterazione
      • La ricorsione
  • 16. Forma mentis di un creatore di algoritmi
    • Lo sforzo mentale di soluzione del problema è collegato non solo all’individuazione dei dati e delle operazioni su di esse, ma anche soprattutto nel cercare di scoprire le iterazioni o le ricorsioni che facilitino la meccanizzazione della soluzione.
    • Bisogna tenere la soluzione del problema ben stretta nel proprio pugno
    • Questo risultato si ottiene ricercando ossessivamente blocchi di istruzioni ripetitive per applicargli l’iterazione o quando necessita la ricorsione
    • Quando tutto il liquido del ragionamento è strutturato con opportune iterazioni, riusciamo a contenerlo tutto e si riesce a ridurre l’estensione di processi complessi
    • Questi fenomeni complessi ristrutturati con l’iterazione sono facilmente addomesticabili e sono così trasportabili su di un computer per essere meccanizzati.
  • 17. La tecnica dell’algoritmo
    • L’utilizzo di blocchi di istruzioni ripetitive influenza, a sua volta, la scelta delle variabili e per contraccolpo anche la scelta delle operazioni
    • Ne consegue che la tecnica più importante nel costruire un algoritmo è l’uso dei costrutti di iterazione e di ricorsione
  • 18. Ragionamenti intuitivi mentali
    • Nell’ideare un algoritmo torna utile anche pensare ai ragionamenti intuitivi che facciamo mentalmente per risolvere alcuni problemi
    • Talvolta la costruzione di un algoritmo si può avvalere di questi ragionamenti
    • Si tratta proprio di rendere espliciti questi ragionamenti
      • renderli concreti
      • ancorandoli con i costrutti dell’algoritmo
  • 19. Costruiamo il primo algoritmo
    • Supportati da questo bagaglio di strumenti e di suggerimenti possiamo cimentarci nella costruzione del nostro primo algoritmo
    • Per fare questo ci atteniamo alla sequenza di fasi che emergono dall’algoritmo dell’algoritmo
    • Applichiamo questo procedimento risolutivo al problema del calcolo della media di una lista di numeri che abbiamo enunciato all’inizio della presentazione
  • 20. Prepariamo tutti i materiali del problema: dati in input
    • Anzitutto ci occorre la lista dei numeri
    • Abbiamo la lista cartacea allegata, sotto la forma di una tabella
    • Di questa tabella l’analisi testuale del testo del problema ci dice che ci occorre solo la colonna dei voti
    • La colonna dei voti sono i dati noti, ossia l’input all’algoritmo
  • 21. Analisi testuale: dati di ouptut
    • In questo esempio, essendo il testo del problema molto breve e semplice, è facile ricavare quali sono i dati incogniti, ossia in output
    • Il voto medio della classe
    • data una lista cartacea di numeri interi positivi
      • che possono rappresentare diversi dati, ad esempio
      • supponiamo che siano i voti di tutti gli studenti di una classe
    • determinare il voto medio della classe .
  • 22. Intervistare gli esperti
    • Fare una media di numeri è il lavoro da eseguire
    • Intervistiamo un esperto del dominio del problema, un matematico statistico.
    • Egli ci dice che l’operazione della media è:
    • Quindi dobbiamo fare due operazioni
      • La somma di tutti i voti da 1 a al numero complessivo dei voti N
      • Dividere questa somma per il numero complessivo dei voti N
  • 23. Le operazioni
    • In questo caso, determinata la soluzione del problema con una formula matematica, ne consegue che le operazioni da eseguire sono due operazioni aritmetiche:
      • Somma
      • Divisione
    • Gli operandi (i dati) della somma
      • sono i singoli valori dei voti
    • Gli operandi ( i dati) della divisione sono la somma totale dei voti e il numero complessivo dei voti
  • 24. La fasi dell’algoritmo somma
    • Possiamo individuare due fasi di lavoro
      • Sommatoria di tutti i voti
      • Calcolo della media matematica della sommatoria
    • La prima fase è un’attività ripetitiva
    • Qui si può vedere quale è l ragionamento intuitivo mentale
    • Nel caso in cui noi facciamo a memoria questo calcolo esplicitando la nostra attività:
      • Dedichiamo una cella della nostra memoria
      • Sommiamo il primo numero a questa zona di memoria
      • Continuiamo a sommare i numeri successivi alla medesima cella di memoria finchè tutti i numeri sono terminati
      • Contiamo quanti sono i numeri sommati
      • Alla fine dividiamo la somma complessiva per il numero complessivo dei numeri
  • 25. Revisione delle operazioni
    • Somma dei voti
    • Conteggio del numero dei voti
    • Divisione della somma per il conteggio del numero dei voti
    • Le prime due operazioni sono ripetitive ed avvengono nella prima fase dell’algoritmo
    • La terzo operazione è un’unica istruzione che viene eseguita in una seconda fase del lavoro,al termina della prima fase
  • 26. Stesura dell’algoritmo
    • Si legge un voto alla volta
    • Si incrementa una sommatoria parziale
    • Si incrementa il contatore dei numeri
    • Si ripete questo blocco di istruzioni finchè ci sono numeri nella lista cartacea
    • Quando i numeri sono terminati la sommatoria parziale è la sommatoria S di tutti i voti della lista
    • Il contatore è la somma N del numero di tutti i voti
    • Si divide la sommatoria totale per il numero totale dei voti N e si ottiene media=S/N il risultato desiderato, ossia la media dei voti
  • 27. Soluzione alternativa
    • Avremmo anche potuto caricare tutti i voti della lista ciascuno in una sua area di memoria
    • Quindi avremmo potuto fare un’unica istruzione di somma sommando contemporanemente tutti i numeri
    • Contare il totale dei numeri della lista cartacea
    • Ed infine calcolare la media dei voti come prima
    • Tuttavia questa seconda soluzione non comporta l’utilizzo della iterazione e ci piace di meno perché l’operazione di somma cambia al variare del numero dei voti da sommare
    • Invece il sistema iterativo non muta con il numero dei voti da sommare ed è quindi preferibile al precedente metodo
  • 28. Quale è la soluzione di algoritmo preferibile ?
    • Quando per fare un algoritmo ho diverse possibilità
    • Occorre scegliere quelle che non devo cambiare al mutare di dati nozionistici, quali il numero dei dati o il valore di questi dati
    • Le soluzioni che utilizzano blocchi di istruzioni ripetitivi con l’ausilio di costrutti tecnici quali iterazione e ricorsione sono particolarmente simpatici perché resistono alle modifiche indotte dal mutato ambiente nozionistico
    • Inoltre queste soluzioni sono preferibili, come già detto, perché spesso sono le uniche a consentire di dominare il liquido e sfuggente ragionamento della nostra mente
  • 29. Per concretizzare l’algoritmo è utile un disegno (il flowchart)
    • L’inizio e la fine dell’algoritmo lo rappresentiamo con una forma geometrica ovale
    • Un’operazione di input e di output con un parallelogrammo
    • Un’operazione interna con un rettangolo
    • Una domanda con un rombo
    • Il collegamento tra queste forme geometriche tramite frecce orientate che rappresentano il verso della sequenza delle istruzioni
    Inizio/fine Input/output domanda calcolo
  • 30. Le variabili del nostro algoritmo
    • Leggiamo dalla lista cartacea un numero alla volta
    • Occorre una cella di memoria per memorizzare il numero letto, chiamiamola “numero”
    • Occorre una cella di memoria per memorizzare la sommatoria parziale, chiamiamola “somma”
    • Occorre una cella per calcolare il numero dei voti, chiamiamola “contaVoti”
    • Occorre una cella di memoria per calcolare la media dei voti, chiamiamola “media”
    • Occorre individuare un costrutto di iterazione
  • 31. Il flowchart della media dei voti MediaVoti Leggo voto somma= somma + voto contaVoti=contaVoti+1 altri voti ? media=somma/contaVoti scrivi media fine si
  • 32. Scrittura dell’algoritmo in pseudoItaliano
    • MediaVoti
      • ripeti finchè ci sono voti nella lista
        • leggi voto
        • aggiungi voto a somma
        • Incrementa di uno contaVoti
      • dividi somma per contaVoti ed assegna il risultato a media
      • scrivi media
    • fine
  • 33. Scrittura dell’algoritmo in un linguaggio di programmazione ( C language )
    • #include <stdio.h>
    • int voto;
    • int somma;
    • int contaVoti;
    • void calcolaMedia(){
      • numero=0;
      • somma=0;
      • contaVoti=0;
      • while (numero!=99999){
        • printf(“digita il numero, se non ci sono altri numeri digita 99999”);
        • scanf(“%d”,&numero);
        • if (numero is not numeric)
          • continue;
        • somma=somma+numero;
        • contaVoti=contaVoti+1;
        • }
        • media=somma/contaVoti;
        • printf(“la media dei voti = ,%d”,media);
      • }
      • main() {
      • calcolaMedia();
      • }
  • 34. Modi di scrittura di un algoritmo
    • Ci sono diversi modi per scrivere un algoritmo:
      • Un disegno con il flowchart
      • Un linguaggio naturale (pseudo inglese/italiano…)
      • Un linguaggio di programmazione
        • In questo caso occorre aggiungere degli elementi di dettaglio affichè l’algoritmo sia eseguibile dal computer
          • Definizione di variabili
          • Azzeramento di variabili
          • Un costrutto per l’iterazione da scegliere tra quelli disponibili nel linguaggio di programmazione usato
          • Una condizione per controllare l’uscita dall’iterazione
          • Delle istruzioni per la lettura e la scrittura dei dati
  • 35.