Teorema Jacopini Bohm

Teorema Jacopini Bohm


Afferma che


  1. INIZIO e FINE devono essere uniche
    cioè ogni soluzione di un problema deve avere necessariamente un Inizio e per quanto riguarda la Fine è necessario che anche essa sia unica

  2. Che si deve passare dall'INIZIO alla FINE con passaggi singoli (Step by Step) andando sempre dall'alto verso il basso (Top-Down)

  3. Qualsiasi Algoritmo (Soluzione di un Problema) si può sviluppare o riscrivere adoperando i soli tre costrutti fondamentali:

    • Blocco Sequenza : ogni operazione del blocco deve devce essere svolta in modo singolo e solo dopo averla eseguita completamente sin può passare ad eseguire la successiva operazione.
      Nell'intero blocco si deve necessariamente entrare dall'alto per eseguire la 1° operazione della sequenza e obbligatoriamente uscire dal basso dopo aver eseguito l'ultima operazione della sequenza.

    • Blocco Decisionale : utilizzato quando si deve effettuare una decisione per scegliere se fare una o più operazioni.
      Può essere di 3 tipi diversi

      • Se (condizione è vera) allora
        ....
        fine se

        si sceglie di fare o non fare una o più operazioni comprese fra il se ed il fine se

      • Se (condizione è vera) allora
        ....
        altrimenti
        ......
        fine se

        si sceglie di fare una o più operazioni o fare altre operazioni le prime scritte dopo allora e le altre scritte dopo altrimenti
        In ogni caso bisogna fare uno o l'altro gruppo
        Non si può evitare di fare qualcosa
        Un gruppo di operazioni è sempre obbligatorio

      • Seleziona il caso numerato
        Caso 1 : ....
        Caso 2 : ......

        Caso n : ....
        Altrimenti .....
        Fine caso

        si sceglie di fare una o più operazioni divise in vari gruppi che si possono eseguire indicando il numero del gruppo a seconda il caso (enumerato) prescelto
        Si può anche decidere se fare altro indicando un gruppo alternativo (altrimenti) o di non farne nessuno (se non si indica l'alternativa)

    • Blocco Iterativo : utilizzato quando si deve scegliere se fare o non fare una o più operazioni e se eventualmente ripeterle per più di una volta
      Si divide in due tipi fondamentali

      • Definiti : Quando il numero di ripetizioni è ben definito e controllato attraverso un contatore di ripetizione (in modo crescente o decrescente, automatico o meno) che parte da un valore iniziale fino ad arrivare ad un valore finale attraverso un incremento di un passo particolare (normalmente è a passo 1 - passo negatico per il decremento)
      • Non Definiti : Quando non è chiaro il numero di volte che si effettuano le operazioni perchè la condizione di uscita è legata ad un particolare avvenimento non controllabile ( raggiungimento di un valore casuale , Istante temporale ecc.)
        NOTA : in entrambi i casi fare attenzione a non cadere i quello che si chiama LOOP INFINITO che impedisce l'uscita dal blocco.

      Ci sono tre possibilità


      • Controllo a Posteriori : Ciclo Repeat

        Ripeti
        ......
        Fino a quando (condizione è vera)


        una o più operazioni vengono svolte e eventualmente ripetute per più di una volta fino a quando la condizione viene verificata
        Se la condizione è verificata si esce dal ciclo altrimenti si rimane nel ciclo
        (Se non si verifica mai si cade nel Loop Infinito)
        NOTA : Le operazioni vengo comunque sempre fatte non si possono evitare , eventualmente si può solo decidere se rifarle


      • Controllo a Priori : Ciclo While

        FAI Fintantoche (condizione è vera)
        ......
        Fine Ciclo

        una o più operazioni vengono svolte e eventualmente ripetute per più di una volta per tutto il tempo che la condizione è verificata
        Se la condizione non è verificata si esce dal ciclo altrimenti si rimane nel ciclo
        (Se la condizione si verifica sempre si cade nel Loop Infinito)
        NOTA : Le operazioni si possono evitare,non si fanno per bulla se la condizione non viene verificata all'entrata nel ciclo.


      • Ciclo Controllato - definito : Ciclo For

        Per Ogni elemento dall'Inizio alla Fine Fai con passo p
        .....
        Fine Per

        una o più operazioni vengono ripetute per un numero ben definito di volte e precisamente un numero di volte pari a ( Fine - Inizio +1 ) diviso il passo p
        Nota :
        In questo caso non si può cadere nel Loolp Infinito
        Nota : l'incremento in questo caso è automatico del passo indicato
        per un passo negativo occorre anche scambiare la fine con l'inizio