Christopher Kent Mineman - Didattica in rete

Analisi e Programmazione

Ricordiamoci che:

I computer danno esattamente quello che gli è stato immesso; se futilità immettiamo, futilità otterremo, ma gli uomini non sono molto diversi.
(Richard Bandler)

Iniziamo ad analizzare come operare per risolvere un problema utilizzando un computer.

Premessa

Scrivere un programma significa determinare una serie finita di istruzioni che attraverso un numero finito di passaggi giunga al risultato desiderato.
Il quesito da cui si parte deve essere non assurdo e presumibilmente risolvibile con un computer tenendo presente quali periferiche possono essere utilizzate allo scopo.
Il programmatore deve parimenti aver presente come rendere in linguaggio macchina le varie istruzioni impartite, tenendo conto dei limiti del compilatore che desidera o deve utilizzare.
I linguaggi di programmazione rappresentano il ponte tra il linguaggio umano e quello macchina e la sintassi tiene sempre conto di tutto ciò che può essere richiesto ed è pertanto importante che colui che si accinge a programmare abbia ben presente quali sono le azioni che possono essere svolte e quelle che solo con grande dispendio di energia e di tempo si può ottenere, optando sempre se possibile per ciò che sarà eseguito efficacemente e velocemente.

Studieremo le attività necessarie per la risoluzione dei problemi per mezzo di un elaboratore: dalla formulazione del problema alla predisposizione dell'elaboratore.

programmazione e analisi
Scopo dell'analisi è definire un algoritmo: elenco finito di istruzioni necessarie per risolvere una classe di problemi; in generale non può essere eseguito da un elaboratore;
Scopo della programmazione è definire un programma. Un programma è la descrizione comprensibile ed eseguibile di un algoritmo da parte di un elaboratore.

schema a blocchi

Non è semplice definire cosa o come definire un problema.
Per dirlo con Albert Einstein:

"La formulazione di un problema è spesso di gran lunga più importante della sua soluzione, che potrà essere semplicemente una questione di abilità matematica o sperimentale."

In informatica il problema potrà essere definito sapendo cosa vogliamo ottenere.
Ad esempio un problema è legato all'esigenza di meccanizzare una serie di operazioni, finalizzato ad ottenere un certo risultato.
Definito cosa vogliamo ottenere, dobbiamo effettuare l'analisi dello stesso.
Chiarito come vogliamo operare svilupperemo l'algoritmo risolutivo.
Cosa si intende per algoritmo?

Un elenco di istruzioni è un algoritmo se sono soddisfatte le seguenti proprietà:
  1. Finitezza: ogni istruzione deve essere eseguita in un tempo finito e un numero finito di volte;
  2. Generalità: ogni algoritmo deve fornire la soluzione per i problemi appartenenti ad una determinata classe.
  3. Non ambiguità: devono essere definiti in modo univoco tutti i passi; devono essere evitati paradossi,contraddizioni ed ambiguità.

Come devo formalizzare un algoritmo.
Devo utilizzare un linguaggio generalizzato costituito da strutture linguistiche prive di ambiguità e ridondanze;
inoltre si devono utilizzare espressioni (frasi) contenenti:

  1. Descrizione delle operazioni (istruzioni);
  2. Eventuale descrizione dei dati su cui eseguire le istruzioni.