Pdavide1823
Ominide
4 min. di lettura
Vota 5 / 5

Concetti Chiave

  • La risoluzione di un problema richiede l'analisi dei dati iniziali (input) e l'identificazione del risultato desiderato (output).
  • Un algoritmo è una procedura composta da istruzioni finite, precise, eseguibili e generali per risolvere una classe di problemi.
  • Gli esecutori di algoritmi possono essere intelligenti, applicando conoscenze acquisite, o automatici, eseguendo meccanicamente i passi.
  • L'efficacia e l'efficienza di un algoritmo sono critiche, influenzando la correttezza della soluzione e l'uso delle risorse.
  • Secondo il teorema di Jacopini-Bohm, ogni algoritmo può essere rappresentato tramite strutture di sequenza, selezione e iterazione.

Dal problema all'algoritmo

Problema: situazione da risolvere per ottenere un certo risultato.
Cosa prevede la risoluzione di un problema?

    a) comprensione dati iniziali a disposizione (Input);
    b) ciò’ che si vuole ottenere (Output).
Questa è l’analisi dei dati, ossia individuare i passi, o meglio, le operazioni che bisogna compiere (procedura) per ottenere il risultato atteso.

Analisi ---> Procedura ---> Risultato

La procedura da seguire per risolvere il dato problema è in informatica universalmente nota con il termine algoritmo.
Algoritmo: è un insieme di regole (istruzioni) aventi le seguenti caratteristiche:

    1. finitezza: un A. è composto da un numero finito di istruzioni (passi elementari);
    2. determinatezza: deve essere definito e preciso (le istruzioni non devono essere ambigue);
    3. terminazione: dopo l’esecuzione di un numero finito di passi, l’algoritmo deve terminare;
    4. effettività: l’azione specificata in ogni passo dell’algoritmo deve essere effettivamente eseguibile dall’esecutore (*) preposto per l’esecuzione dell’algoritmo stesso; non avrebbe senso infatti prevedere in un algoritmo azioni che l’esecutore designato non è in grado di compiere;
    5. generalità: un algoritmo dovrebbe essere progettato per risolvere non tanto uno specifico problema, quanto una classe di problemi simili.

*esecutore: “chi” è preposto all’esecuzione dei singoli passi specificati in un algoritmo.

In genere si usa classificare gli esecutori in esecutori intelligenti, che risolvono i problemi applicando le conoscenze acquisite nel corso della propria attività, ed esecutori automatici, che risolvono in problemi eseguendo meccanicamente i passi di un algoritmo senza acquisire nuove conoscenze.
In generale si può dire che non esiste un algoritmo univoco per risolvere un determinato problema.
Nel mondo della programmazione individuare un algoritmo adatto a risolvere un dato problema non è, in generale, cosa semplice. La questione non riguarda solo l’efficacia, cioè il fatto che l’ A. risolva il problema in esame. Un altro elemento critico è l’efficienza, ovvero quanto costa, in termini di risorse, l’esecuzione del nostro algoritmo (es, eccessiva occupazione della memoria).
Rappresentazione grafica degli algoritmi: flow – chart

Schemi fondamentali

Teorema di Jacopini –Bohm (1966):
“Un qualsiasi algoritmo può essere espresso usando esclusivamente le strutture di sequenza, di selezione e di iterazione”.

    1. Sequenza: una o più azioni elementari sono eseguite una di seguito all'altra nell'ordine in cui sono scritte.
    2. Selezione: l’esecutore sceglie tra l’eseguire una o più operazioni in alternativa ad altre in funzione del verificarsi o meno di una certa condizione logica, selezionando il “percorso” da seguire in dipendenza da quanto eseguito in precedenza nell'avanzamento del procedimento di soluzione.
    3. Ripetizione o iterazione: l’esecutore ripete più volte una o più operazioni in funzione del verificarsi o meno di una condizione logica che controlla il numero di volte per cui tali istruzioni devono essere ripetute (ciclo).
Cicli determinati e indeterminati
    • ciclo determinato: in questo caso si conosce precisamente il momento in cui la ripetizione avrà termine, ossia si conosce a priori il numero delle volte che il ciclo verrà ripetuto;
    • ciclo indeterminato: il numero dei cicli ripetuti dipende dal verificarsi o meno della condizione che ne controlla l’arresto. La condizione può essere espressa in testa o in coda al ciclo: nel primo caso il ciclo potrebbe anche non essere mai eseguito (se la condizione è inizialmente falsa), mentre nel secondo caso il ciclo sarà eseguito almeno una volta.

Domande da interrogazione

  1. Quali sono le caratteristiche fondamentali di un algoritmo?
  2. Un algoritmo deve avere finitezza, determinatezza, terminazione, effettività e generalità.

  3. Cosa implica la comprensione dei dati iniziali e dell'output desiderato nella risoluzione di un problema?
  4. Implica l'analisi dei dati per individuare i passi necessari (procedura) per ottenere il risultato atteso.

  5. Qual è il ruolo dell'esecutore in un algoritmo?
  6. L'esecutore è colui che esegue i passi specificati nell'algoritmo, che può essere intelligente o automatico.

  7. Quali sono le strutture fondamentali per esprimere un algoritmo secondo il teorema di Jacopini-Bohm?
  8. Sequenza, selezione e iterazione.

  9. Qual è la differenza tra un ciclo determinato e un ciclo indeterminato?
  10. Un ciclo determinato ha un numero di ripetizioni noto a priori, mentre un ciclo indeterminato dipende da una condizione che ne controlla l'arresto.

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community