User Tools

Site Tools


appunti3s:problema_e_algoritmo

A cosa serve un computer?

Immaginare di provare a spiegar a cosa può servire un computer ad una persona che non lo ha mai usato. Ogni spiegazione si concentrerebbe su un particolare utilizzo:

  • qualcuno potrebbe dire che lo usa per vedere un video
  • qualcuno che lo usa per scrivere una lettera
  • qualcun altro che lo usa per navigare su Internet…

Chi ha dato la migliore spiegazione? In un certo senso, ogni sono corretti tutti i tipi di utilizzo, che spiegano che un computer può essere usato per risolvere un problema.

Cos'è un problema?

L'utente di fronte al computer deve svolgere dei compiti e si aspetta che il computer lo aiuti. Un problema può essere il calcolo della dichiarazione dei redditi, la visualizzazione e la modifica di un documento, la riproduzione di un filmato… Il computer non sa risolvere i problemi dell'utente. A ben pensarci, anche risolvendo due volte lo stesso tipo di problema, ogni volta ci saranno sicuramente delle piccole differenze, perché i dati di partenza potrebbero essere diversi.

Come si descrive un problema?

Nei problemi di matematica, dopo aver letto il testo, si indicano quali sono i dati noti (di partenza) e quali sono i dati incogniti (usando un punto interrogativo).

Cos'è una soluzione?

Per poter risolvere ogni tipo di problema (come anche quelli di matematica) dopo aver visto i dati, è necessario conoscere un metodo risolutivo (di un problema generico). Le istruzioni che risolvono questo problema generico potranno essere applicate a tutti i problemi dello stesso tipo (problemi specifici). Spesso la soluzione consiste nell'applicare una formula, sostituendo alle variabili presenti nella formula, il valore dei dati noti, per questo motivo è importante distinguere tra costanti e variabili. Se ci sono più passaggi e più formule da utilizzare, oltre alle variabili di input e di output ci possono essere anche variabili temporanee (di lavoro).

Il metodo risolutivo, viene detto anche algoritmo.

Esempio in cui il problema è quello di determinare (o calcolare) il valore massimo tra due numeri che sono forniti dall'utente. Se l'utente fornisse 5 e 9, quale sarebbe la risposta?

Sembra banale rispondere 9, ma non è banale descrivere il procedimento mentale che ci ha portato a questa risposta. In generale i numeri potrebbero essere qualsiasi ed è necessario determinare un metodo risolutivo che ci dia la risposta corretta. Il programmatore ha il compito di descrivere il metodo risolutivo generico. Più o meno il procedimento risolutivo sarebbe il seguente:

  1. chiamare X il primo numero
  2. chiamare Y il secondo numero
  3. se l'espressione X > Y è vera, allora il risultato è X
  4. altrimenti, se è falsa, il risultato è Y.

Questo metodo risolutivo funziona in tutti i casi? Quali sono i casi critici? Se un numero vale zero? Oppure se X = Y?

vedere l'introduzione alle tre_strutture

Come si descrive un metodo risolutivo?

Un algoritmo può essere descritto usando diversi tipi di linguaggio: con delle parole (usando un linguaggio naturale o un linguaggio di programmazione) oppure usando un grafico (diagramma di flusso o flow chart). Il metodo risolutivo viene infine fornito al computer, in forma numerica, all'interno di un programma (file eseguibile) che contiene le istruzioni macchina da eseguire. Il programmatore segue un procedimento per sviluppare un programma per l'elaboratore e ottiene (oltre al programma desiderato) la relativa documentazione.

La documentazione è utilissima per poter fare la necessaria manutenzione al programma, come per la correzione degli errori, e per l'eventuale sviluppo di versioni future. Vi sono due tipi di documentazione:

  • la documentazione delle fasi del processo di sviluppo (responsabilità)
  • la documentazione delle funzioni usate nel programma (oggetti e variabili)

Cos'è un programma?

Si può paragonare un programma ad una lunga e complessa ricetta di cucina. Il computer è il cuoco che la deve eseguire per l'utente. Noi chi siamo? Siamo gli autori della ricetta (cioè del programma) da eseguire. Noi dobbiamo insegnare al computer a fare qualcosa, come glie lo possiamo insegnare?

Esempio: Fiori di zucca ripieni al forno

  1. lavare 6 fiori di zucca
  2. lavare 1 zucchina
  3. cuocere la zucchina a rondelle con sale ed olio per 10 minuti
  4. frullare con il mixer la zucchina con 100 gr di ricotta
  5. riempire i fiori di zucca con il precedente preparato
  6. mettere in forno ventilato a 160 gradi per 10 minuti
  7. spolverare le zucchine con parmigiano
  8. mettere in forno per 5 minuti

Per un cuoco esperto queste istruzioni possono essere semplici da realizzare, ma per altri no: si può notare che richiedono di sapere come si cuoce una zucca o come si accende il forno.

Rispetto ad un vero cuoco, un computer non possiede nemmeno una propria intelligenza. Le istruzioni che può eseguire un computer, quindi, devono essere molto più dettagliate, accade così che un programma risulti molto più lungo di una comune ricetta.

appunti3s/problema_e_algoritmo.txt · Last modified: 2020/06/08 22:19 by 127.0.0.1