Dispensa di Informatica – II.1
Transcript
Dispensa di Informatica – II.1
Dispensa di Informatica – II.1 ALGORITMI La dispensa di seguito proposta si pone come tutorial per poter porre le basi per la realizzazione di algoritmi che poi potranno eventualmente essere sviluppati in moduli software con metodologia di programmazione strutturata . Il concetto di algoritmo Il calcolatore elettronico per risolvere un problema utilizza un algoritmo, cioè un insieme di azioni (o istruzioni) che, eseguite secondo un ordine prestabilito, permettono di trovare il risultato cercato sulla base dei dati in ingresso. Il concetto di algoritmo è uno dei concetti di base dell'intera matematica: i più semplici ed antichi algoritmi sono le regole per eseguire le operazioni dell'aritmetica elementare, formulate dal matematico arabo medioevale Al-Khuwarizmi, da cui deriva appunto il nome di algoritmo. Nel secolo scorso il concetto di algoritmo venne formalizzato per risolvere il problema matematico della "decisione" (Entscheidungsproblem) posto da David Hilbert nel 1928. Successive modifiche avvennero a seguito della definizione delle funzioni ricorsive Gödel– Herbrand–Kleene del 1930, 1934 e 1935 e della Macchina di Alan Turing del 1936–7 e 1939. Nonostante questi tentativi, la definizione formale del concetto di algoritmo è tuttora una sfida aperta. Tuttavia, si può definire intuitivamente un algoritmo come una sequenza ordinata e finita di passi (operazioni o istruzioni) elementari che conduce ad un ben determinato risultato in un tempo finito. Dispensa II.1 versione 1.0 mail: [email protected] Pagina 1 di 8 Dispensa di Informatica – II.1 Il diagramma di flusso (flow chart) Il diagramma di flusso (in inglese detti anche flow chart) è un linguaggio di modellazione grafico per rappresentare il flusso di controllo di algoritmi, procedure, istruzioni operative (in senso lato). Esso consente di descrivere in modo schematico: • le operazioni da compiere, rappresentate mediante sagome convenzionali (come rettangoli, rombi, esagoni, parallelogrammi, rettangoli smussati...) all'interno delle quali un'indicazione testuale descrive l'attività da svolgere • la sequenza nella quale devono essere compiute, rappresentate con frecce di collegamento. I diagrammi di flusso trovano la loro applicazione in vari ambiti, ma quello in cui storicamente si sono maggiormente affermati è stato quello informatico dove, solo in tempi più recenti, sono stati affiancati da altri strumenti metodologici quali lo pseudocodice e l'UML. Blocchi elementari Esistono varie notazioni per la rappresentazione con diagrammi di flusso. Tutte le notazioni sottendono a un meta-modello molto semplice, caratterizzato da una lettura sequenziale: • si parte dal blocco iniziale • si segue la freccia in uscita • si giunge al blocco successivo e si effettua l'operazione descritta nel blocco • si procede iterando i passi 2 e 3 fino a giungere al blocco finale. Dispensa II.1 versione 1.0 mail: [email protected] Pagina 2 di 8 Dispensa di Informatica – II.1 Tra le operazioni si distingue tra: • azione, che comportano una attività o un'elaborazione • test, che indicano due o più direzioni in base a un fattore di decisione • ingresso/uscita, che comportano l'immissione di informazioni dall'esterno oppure l'invio di informazioni verso l'esterno. La notazione più semplice e più frequentemente utilizzata prevede dunque 5 tipi di blocchi elementari: blocco iniziale blocco finale blocco di I/O blocco di Elaborazione blocco di controllo Dispensa II.1 versione 1.0 mail: [email protected] Pagina 3 di 8 Dispensa di Informatica – II.1 Struttura sequenza Quando due o più azioni vengono eseguite l’una di seguito all’altra si parla di sequenza. Struttura selezione Quando avviene che dopo una azione può essere eseguita o una o un’altra azione si parla di selezione. Tramite la struttura Selezione è possibile arrivati a un certo punto del programma, di scegliere che strada seguire in base alla verità o falsità di un’affermazione. Successivamente il flusso di esecuzione dell’algoritmo prosegue per affrontare altri passi. Dispensa II.1 versione 1.0 mail: [email protected] Pagina 4 di 8 Dispensa di Informatica – II.1 Struttura Iterazione Quando avviene che un’azione o insieme di azioni venga ripetuto un certo numero di volte prestabilito oppure venga ripetuto finché non si verifichi una certa condizione si parla di iterazione. Individuamo in particolare • la iterazione in cui è possibile che una azione venga ripetuta un numero di volte ma anche mai eseguita ( da 0 ad n volte) in cui la azione di controllo avviene prima del blocco di azioni da ripetere • la iterazione in cui è possibile che una azione venga ripetuta un numero di volte ma almeno una volta ( da 1 ad n volte) in cui la azione di controllo avviene dopo del blocco di azioni da ripetere. Dispensa II.1 versione 1.0 mail: [email protected] Pagina 5 di 8 Dispensa di Informatica – II.1 Dispensa II.1 versione 1.0 mail: [email protected] Pagina 6 di 8 Dispensa di Informatica – II.1 Teorema di Böhm-Jacopini Il teorema di Böhm-Jacopini, enunciato nel 1966 dagli informatici Corrado Böhm e Giuseppe Jacopini, afferma che qualunque algoritmo può essere implementato utilizzando tre sole strutture, la sequenza, la selezione ed il ciclo (iterazione). Dispensa II.1 versione 1.0 mail: [email protected] Pagina 7 di 8 Dispensa di Informatica – II.1 Esecuzione di un algoritmo su un Computer Algoritmo: Procedura di trasformazione di un insieme di dati iniziali in un insieme di risultati finali mediante una sequenza di istruzioni. linguaggio di programmazione: Linguaggio (insieme di simboli e regole) per rappresentare le istruzioni di un algoritmo e la loro concatenazione. Programma: Algoritmo scritto in un linguaggio di programmazione al fine di comunicare al calcolatore elettronico le azioni da eseguire. Programma: Algoritmo scritto in un linguaggio di programmazione al fine di comunicare al calcolatore elettronico le azioni da eseguire. Processo: Programma in esecuzione sul computer. Dispensa II.1 versione 1.0 mail: [email protected] Pagina 8 di 8