3 programmazione strutturata testo di riferimento bellini guidi
This presentation is the property of its rightful owner.
Sponsored Links
1 / 28

3. Programmazione strutturata (testo di riferimento: Bellini-Guidi) PowerPoint PPT Presentation


  • 104 Views
  • Uploaded on
  • Presentation posted in: General

3. Programmazione strutturata (testo di riferimento: Bellini-Guidi). Ing. Simona Colucci. Linguaggi di programmazione. Un programma è un algoritmo espresso in un linguaggio formale , detto linguaggio di programmazione: Interpretabile ed eseguibile da un calcolatore

Download Presentation

3. Programmazione strutturata (testo di riferimento: Bellini-Guidi)

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


3 programmazione strutturata testo di riferimento bellini guidi

3. Programmazione strutturata(testo di riferimento: Bellini-Guidi)

Ing. Simona Colucci

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012


3 programmazione strutturata testo di riferimento bellini guidi

Linguaggi di programmazione

Un programma è un algoritmo espresso in un linguaggio formale, detto linguaggio di programmazione:

  • Interpretabile ed eseguibile da un calcolatore

  • Non ambiguo perchè governato da regole grammaticali precise

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012


3 programmazione strutturata testo di riferimento bellini guidi

Linguaggi di programmazione

  • Classificazione:

  • linguaggi di basso livello(linguaggi macchina e linguaggi assembler): dipendono dalla struttura fisica del tipo di computer per cui sono stati progettati

  • linguaggi di alto livello: più vicini alla forma mentis dell’uomo, ma da tradurre in codice di basso livello per l’interpretazione da parte dell’elaboratore(come il C)

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012


Linguaggio macchina

Linguaggio Macchina

  • Linguaggio formale che il computer è in grado di interpretare ed eseguire senzamediazioni

  • Programmi, codice oggetto, rappresentati da una sequenza di cifre binarie che codificano le istruzioni e i dati su cui lavora la CPU

    • istruzioni fortemente correlate all’architettura del calcolatore, perché corrispondenti ad operazioni direttamente eseguibili dall’hardware

    • esempio di istruzione ad un solo operando:

      codice operativo dell’istruzioneoperando

      00000010 000000000011100

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012


Linguaggio assembler

Linguaggio assembler

  • Le singole istruzioni binarie sono rappresentate con un codice mnemonico

    LOAD 220

    SUM 252

    MEM220

  • Traduzione in linguaggio macchina ad opera di programmi detti assemblatori, forniti dai costruttori

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012


Microlinguaggi

Microlinguaggi

  • Usati per i microprogrammi:

    • corrispondono ad ogni istruzione del linguaggio macchina

    • costituiti da insiemi di microistruzioni:

      • sequenze di bit che costituiscono i segnali di controllo per pilotare i componenti del processore ed eseguire le istruzioni

      • cablate dal costruttore nelle unità di controllo(fisicamente delle memorie) della CPU per eseguire le operazioni corrispondenti alle istruzioni del linguaggio macchina

  • Obbediscono alla necessità di mediazione tra linguaggio macchina e macchina: lo stesso processore può essere programmato per finalità diverse

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012


3 programmazione strutturata testo di riferimento bellini guidi

Linguaggi di alto livello

  • Più simili al linguaggio naturale dei linguaggi macchina o assembler

  • Utilizzano simboli matematici e parole tipiche delle lingue naturali(inglese)

  • Usati per scrivere le istruzioni che compongono il codice sorgente

  • appositi software, detti compilatori, provvedono a tradurre il codice sorgente nell’equivalente codice eseguibile dalla macchina

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012


3 programmazione strutturata testo di riferimento bellini guidi

Linguaggi di alto livello

  • Esempio di codifica: somma precedente in linguaggio C

    a =6;

    b =31; a =a+b;

    • a e b non sono registri o locazioni di memoria ma variabili identificate da:

      • Nome(possibilità di usare nomi simbolici del contenuto, per facilitare la leggibilità del programma)

      • Insieme di valori che può assumere

  • Vantaggi

    • Programma portabile su ogni macchina con compilatore per il linguaggio in cui è scritto il programma

    • Gestione indirizzi di memoria totalmente delegata al calcolatore

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012


Algoritmi come sequenze di stati

Algoritmi come sequenze di stati

Esempio: determina il Massimo Comune Divisore (MCD)

a.prendi i due numeri

b.calcola il resto della divisione intera del num. più grande per il più piccolo

c.sostituisci il numero più grande con il resto della divisione

d.finché tale resto è diverso da zero torna all’istruzione b

e.il numero più grande (quello non nullo) è il MCD cercato

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012


Algoritmi come sequenze di stati1

Algoritmi come sequenze di stati

Flusso di esecuzione dell’algoritmo MCD con i numeri 924 e 120

passo 1 924 e 120

passo 2 84 è il resto della divisione intera di 924 per 120

passo 3 120 e 84

passo 4 il resto è diverso da zero, torna all’istruzione b

passo 5 36 è il resto della divisione intera di 120 per 84

passo 6 84 e 36

passo 7 il resto è diverso da zero, torna all’istruzione b

passo 8 12 è il resto della divisione intera di 84 per 36

passo 9 36 e 12

passo 10 il resto è diverso da zero, torna all’istruzione b

passo 11 0 è il resto della divisione intera di 36 per 12

passo 12 12 e 0

passo 13 il resto è uguale a zero, prosegui con l’istruzione successiva

passo 14 12 è il MCD

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012


3 programmazione strutturata testo di riferimento bellini guidi

Algoritmi come sequenze di stati

Sequenza di stati nel flusso dell’algoritmo per il calcolo del MCD(924,120)

  • Istruzioni all’interno dei cerchi

  • Passi in esecuzione dell’istruzione all’esterno del relativo cerchio

  • Passaggio da un’istruzione all’altra tramite archi

  • L’esecuzione di un passo determina uno stato: fotografia della situazione attuale

  • Il susseguirsi dei passi di esecuzione determina una sequenza di stati

  • Il flusso è sequenziale ed ordinato perché l’algoritmo segue le regole della programmazione strutturata

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012


Programmazione non strutturata

Programmazione non strutturata

Esempio: Algoritmo equivalente per il calcolo del Massimo Comune Divisore (MCD)

a. prendi i due numeri

b. calcola il resto della divisione intera del num. più grande per il più piccolo

c. Se il resto è uguale a zero vai all’istruzione f

d. sostituisci il numero più grande con il resto della divisione

e. vai all’istruzione b

f. il numero più piccolo è il MCD cercato

Salto incondizionato

Salto condizionato

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012


Programmazione non strutturata1

Programmazione non strutturata

Flusso di esecuzione dell’algoritmo MCD con i numeri 924 e 120

passo 1 924 e 120

passo 2 84 è il resto della divisione intera di 924 per 120

passo 3 il resto è diverso da zero(prosegui in sequenza)

passo 4 120 e 84

passo 5 vai all’istruzione b

passo 6 36 è il resto della divisione intera di 120 per 84

Passo 7 il resto è diverso da zero(prosegui in sequenza)

Passo 8 84 e 36

passo 9 vai all’istruzione b

passo 10 12 è il resto della divisione intera di 84 per 36

Passo 11 il resto è diverso da zero(prosegui in sequenza)

passo 12 36 e 12

passo 13 vai all’istruzione b

passo 14 0 è il resto della divisione intera di 36 per 12

passo 13 il resto è uguale a zero, vai all’istruzione f

passo 14 12 è il MCD

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012


Programmazione non strutturata2

Programmazione non strutturata

5,9,13

e

Sequenza di stati nel flusso dell’algoritmo per il calcolo del MCD(924,120)

d

  • Si parte dal nodo iniziale e poi si passa ai nodi successivi selezionando il cammino in base allo stato che si viene a creare dopo l’esecuzione delle operazioni specificate nel nodo

  • L’arco e-b corrisponde ad un salto incondizionato (goto)

  • L’uso dei goto :

    • porta a sequenze non lineari di stati, molto contorte, note come programmi a “spaghetti”, specie per programmi complessi

    • ha un numero di istruzioni minori e riusa parti di programma tramite salti

    • porta a programmi difficili da correggere manutenere ed estendere

4,8,12

a

b

c

3,7,11,15

1

2,6,10,14

f

16

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012


Programmi strutturati

Programmi strutturati

  • L’obiettivo della programmazione strutturata è di rendere un flusso ordinato il passaggio tra le istruzioni dall’inizio alla fine dei programmi

  • Realizzazione:

    • Condizione ideale: sequenza lineare di operazioni, senza alternative possibili(limite: potenza algoritmi ridotta)

    • Condizione reale: regole coerenti con il pensiero naturale che portano ad effetti equivalenti all’esecuzione sequenziale di operazioni

      • Costrutti consentiti (strutture di controllo del flusso):

        • Sequenza: fai questo

        • Selezione tramite strutture di controllo decisionali:

          se è verificata una condizione fai questo altrimenti fai quello

        • Ripetizioni cicliche tramite strutture di controllo iterative:

          finché è verificata una condizione fai questo

      • Costrutti non consentiti:

        • Salto incondizionato (goto): ancora nella sintassi solo per compatibilità verso il basso(era necessario nel linguaggio macchina e assembler)

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012


Programmi strutturati1

Programmi strutturati

TEOREMA DI BOHM-JACOPINI:

tutti i programmi possono essere scritti con l’utilizzo delle sole strutture di controllo: sequenza, selezione e iterazione (senza l’uso del salto goto)

  • Corrado Böhm e Giuseppe Jacopini hanno dimostrato che la potenza di calcolo dei programmi strutturati(più chiari, più facili da scrivere e da modificare e più probabilisticamente esenti da errori) non è inferiore a quella dei programmi che usano il goto

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012


Sequenza flow chart

Sequenza : flow-chart

  • Operazioni:

  • - fai questo

  • - fai quello

    • Esempio: a = 5;

      • a = a+b;

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012


Selezione flow chart

Selezione : flow-chart

  • Operazioni:

    • seè verificata una condizione fai questo

    • seè verificata una condizione fai questoaltrimenti fai quello

  • Sintassi:

    • if(espressione) istruzione

      Esempio: prendi numero;

      resto = numero % 2;

      if(resto==0) scrivi "è pari";

    • if(espressione) istruzione1 else istruzione2

      Esempio: prendi numero;

      resto = numero % 2;

      if(resto==0) scrivi "è pari" else scrivi "è dispari";

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012


Iterazione flow chart

Iterazione : flow-chart

  • Operazioni:

    • finchè è verificata una condizione fai questo

    • eseguifaiquesto finchèè verificata una condizione

  • Sintassi:

    • while(espressione) istruzione;

      Esempio: i=0;

      while(i<101) i=i+1;

    • do istruzione while(espressione);

      Esempio: i=0;

      do

      i=i+1;

      while(i<100);

falso

espressione

vero

istruzione

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012


Programmi strutturati flow chart

Programmi strutturati: flow-chart

  • Si apre con un cerchio e finisce con un cerchio: tutti i canali partono dal primo cerchio e terminano nell’ultimo(un solo inizio ed una sola fine)

  • Composto da più strutture di controllo del tipo sequenza selezione o iterazione

  • I cerchi sono i connettori tra le strutture di controllo: altri punti di attacco non consentiti

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012


3 programmazione strutturata testo di riferimento bellini guidi

blocco

Blocco d’istruzioni

  • Più strutture formano un blocco d’istruzioni:

    • insieme d’istruzioni con una sola entrata, da dove inizia sempre l’elaborazione, e una sola uscita, dove termina sempre l’elaborazione del blocco(nessuna uscita laterale con istruzioni di salto)

    • Scatola nera per eseguire un compito: non possono essere utilizzate delle sottoparti

    • Sintassi: {blocco}

      I blocchi possono contenersi l’un l’altro ma mai intersecarsi

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012


Programmazione strutturata esempi

Programmazione strutturata: esempi

  • Calcolo della somma algebrica tra due numeri relativi utilizzando le operazioni di somma e differenza tra numeri senza segno

  • Calcolo della media

  • Calcolo dei valori massimo e minimo

  • Visualizzazione di caratteri letti da tastiera

  • Calcolo di una potenza

  • Visualizzazione di un quadrato

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012


Esempio 1

inizio

a , b

vero

a, b concordi

falso

vero

|a| < |b|

falso

s a+b

t a

a b

bt

s a-b

modulo di s e segno di a

fine

Esempio 1

Problema: Calcolo della somma algebrica tra due numeri relativi utilizzando le operazioni di somma e differenza tra numeri senza segno

Algoritmo:

- acquisizione dei due numeri a,b

- se a,b sono concordi |s|=|a|+|b|

- se a,b sono discordi

- se |a|<|b| si scambiano i valori di a e b

- |s|=|a|-|b|

- la somma ha il segno di a e modulo |s|

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012


Esempio 2

inizio

s  0

i  0

falso

i < 10

vero

n

s  s + n

i  i + 1

m  s/10

m

fine

Esempio 2

Problema: Acquisizione di 10 numeri interi e calcolo della media

Algoritmo:

  • Azzerare la somma s

  • Se non si sono acquisiti tutti i numeri:

    2.1 Acquisire un numero n

    2.2 Sommare n ad s e tornare al passo 2

  • La media è s/10

  • Fine

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012


Esempio 3

inizio

n

max n min  n i  1

i < 10

falso

vero

n

falso

vero

n< min

min  n

vero

n > max

max n

falso

i  i +1

min, max

fine

Esempio 3

Problema: Acquisizione di 10 numeri interi; determinazione e visualizzazione del numero maggiore e minore

Algoritmo:

  • Leggi il primo numero n

  • Poni il massimo e il minimo corrente(variabili max e min) pari a n

  • Finché i numeri inseriti sono meno di 10

    3.1 Leggi un nuovo numero n

    3.2 Se n<min min=n

    altrimenti se n>max max=n

  • Visualizza min e max

  • Fine

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012


Esempio 4

Esempio 4

inizio

Problema: Scrivere un programma che consenta, acquisito un numero intero n, di acquisire un carattere c e visualizzarlo n volte sulla stessa riga finché n è maggiore di zero

Algoritmo:

  • Leggi il primo numero n

  • Finché n>0

    2.1 Leggi c

    2.2 Visualizza c n volte

    2.3 Visualizza “a capo”

    2.3 Leggi nuovo numero n

  • Fine

connettore

n

n > 0

falso

Inizio blocco 2.2

vero

i  0

falso

i< n

c

vero

c

blocco 2.2

i  i+1

a capo

Fine blocco 2.2

n

fine

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012


Esempio 5

inizio

x, n

pot  1

i  0

falso

i< n

vero

pot = pot * x

i  i+1

pot

fine

Esempio 5

  • Problema: Calcolo e visualizzazione di una potenza(variabile pot), acquisiti la base x e l’esponente n

  • Algoritmo:

  • Acquisisci x ed n(intero)

  • Poni pot pari ad 1

  • Esegui per n volte

  • pot pot * x

  • 4. Visualizza pot

  • 5. Fine

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012


Esempio 6

Esempio 6

inizio

n

i  0

Problema: acquisito un numero intero n, si visualizzi una figura quadrata di n*n con degli asterischi nella diagonale principale, dei segni meno al di sotto e dei segni più al di sopra della diagonale principale

Algoritmo:

  • Leggi n

  • Finché le righe visualizzate sono meno di n (indice i scorre le righe)

    • Finchè le colonne visualizzate sono meno di n(indice j scorre le colonne)

      • se j>i visualizza il carattere meno

      • se j=i visualizza il carattere asterisco

      • se i<j visualizza il carattere più

  • Esci

falso

i< n

vero

j  0

falso

j < n

vero

falso

j < i

vero

j =i

falso

vero

-

+

*

j  j+1

a capo

i  i+1

Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A. 2011-2012

fine


  • Login