STRUTTURE DI CONTROLLO

Documenti analoghi
STRUTTURE (O COSTRUTTI) DI CONTROLLO

10 STRUTTURE DI CONTROLLO REPEAT E WHILE. Strutture di controllo e variabili strutturate

IL TEOREMA DI BOEHM-JACOPINI

Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto

Risoluzione di un problema

Rappresentazione degli algoritmi

Rappresentazione degli algoritmi

Esempio: somma di due numeri

I costrutti forniti dal linguaggio si dividono in corrispondenti classi di istruzioni

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

Cognome e Nome : Corso e Anno di Immatricolazione: Modalità di Laboratorio (Progetto/Prova) :

INFORMATICA. Strutture iterative

Evoluzione del FORTRAN 14/03/2016. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 15 IL LINGUAGGIO FORTRAN

Rappresentazione con i diagrammi di flusso (Flow - chart)

PROGRAMMAZIONE STRUTTURATA

Introduzione alla programmazione

Lezione 7: La Formalizzazione degli Algoritmi - Strutture di Controllo e Selettive La Programmazione Strutturata (3 p) Giovedì 21 Ottobre 2010

Formalismi per la descrizione di algoritmi

Almerico Murli - Le variabili strutturate (array) VARIABILI STRUTTURATE (ARRAY)

PROGRAMMAZIONE: Le strutture di controllo

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal

Laboratorio di Calcolo Numerico

Informatica (A-K) 5. Algoritmi e pseudocodifica

= < < < < < Matematica 1

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

Introduzione agli Algoritmi

Costrutti condizionali e iterativi

Istruzioni per il controllo di ciclo - ciclo a condizione generica

Fondamenti di Informatica

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

DAL DIAGRAMMA AL CODICE

Cicli. S i a i = a 1 + a 2 + a a n

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Reti di Calcolatori

VARIABILI E COSTANTI

Fondamenti di Informatica

Transcript:

STRUTTURE DI CONTROLLO - Strutture di controllo - 1

Algoritmo per il cambio della ruota Inizio chiama il meccanico V ruota di scorta bucata F solleva l auto svita un bullone tutti svitati V togli la ruota F metti la ruota di scorta avvita un bullone tutti avvitati V abbassa l auto F fine - Strutture di controllo - 2

Le istruzioni del flow chart togli la ruota : metti la ruota di scorta costituiscono una SEQUENZA DI ISTRUZIONI - Strutture di controllo - 3

avvita un bullone tutti avvitati F v costituiscono una STRUTTURA DI ITERAZIONE - Strutture di controllo - 4

V chiama il meccanico ruota di scorta bucata F costituiscono una STRUTTURA DI SELEZIONE - Strutture di controllo - 5

Le strutture di controllo (o costrutti di controllo) determinano l ordine con cui devono essere eseguite le istruzioni sono indipendenti dalla natura delle istruzioni sono strumenti logici universali utilizzabili in qualunque problema - Strutture di controllo - 6

ANALISI DELLE STRUTTURE DI CONTROLLO - Strutture di controllo - 7

Algoritmo: massimo tra 2 numeri dati di input: i due numeri (a,b) dati di output: il massimo (max) Flowchart Pascal-like inizio begin massimo var: a,b,max:real a, b read a, b if (a>b) then V a>b F max:=a max a max b else max:=b max fine print max end massimo - Strutture di controllo - 8

Struttura di selezione flow chart: V condizione F istruzioni istruzioni Pascal-like: if (condizione) then istruzioni else istruzioni - Strutture di controllo - 9

Algoritmo: valore assoluto di un numero reale dati di input: numero dati di output: valore assoluto del numero Flowchart Pascal-like inizio begin val_ass var: num:real num read num num< 0 F if(num<0)then num V - num num := - num num fine print num end val_ass - Strutture di controllo - 10

Struttura di selezione flow chart: condizione F V istruzioni Pascal-like if (condizione) then istruzioni - Strutture di controllo - 11

Problema: Calcolo della somma di N numeri dati di input: valore di N, numeri dati di output: somma degli N numeri Esempio: dati di input: 4, dati di output: 20 5, 7, 10, -2 - Strutture di controllo - 12

Algoritmo: somma di n numeri Flow chart inizio n Pascal like begin somma var:n,i:integer var:sum,numero:real read n sum 0 n volte sum:=0. for i:=1,n do numero read numero sum sum+numero sum:=sum+numero endfor sum print sum fine end somma - Strutture di controllo - 13

Struttura di iterazione flow chart: istruzioni n volte Pascal-like for i := 1, n do istruzioni endfor - Strutture di controllo - 14

Problema: eseguire una divisione intera tra due numeri naturali con il metodo delle successive sottrazioni Dati di input: due numeri naturali x e y Dati di output: parte intera di x/y Esempio: Dati di input: 26, 7 Dati di output: 3 - Strutture di controllo - 15

Strategia: Si sottrae y da x finché il risultato della sottrazione è minore di y. Il numero delle sottrazioni eseguite è la parte intera di x/y. 26-7 = 19 1 19-7 = 12 2 12-7 = 5 3 minore di 7 fine risultato Osservazione Il numero delle sottrazioni da eseguire non è noto a priori ma dipende dai dati di input. In particolare, se x<y non si eseguono sottrazioni. - Strutture di controllo - 16

Algoritmo: Divisione intera di due numeri naturali inizio x,y begin divisione var:x,y,q,r:integer read x,y q r 0 x q:=0 r:=x F r>y V while (r > y) do r:= r-y r q r-y q+1 q:= q+1 endwhile q fine print q end divisione - Strutture di controllo - 17

Struttura di iterazione flow chart F condizione V istruzioni Pascal-like while (condizione) do istruzioni endwhile - Strutture di controllo - 18

Problema: Calcolo del prodotto di N numeri dati di input: N, numeri dati di output: prodotto degli N numeri Esempio: dati di input: 4, 5, 2, 0, 1 dati di output: 0 - Strutture di controllo - 19

Osservazione Se un numero è nullo, il prodotto è nullo Prevedere il caso in cui un dato sia nullo Arrestare il calcolo quando sono stati moltiplicati tutti i numeri oppure quando un dato è nullo - Strutture di controllo - 20

Algoritmo: prodotto di n numeri begin prod_n_numeri var:num,prod:real var:i,n:integer read n prod:= 1 i:= 1 read num while num=0 /.and. i< n do prod:= prod*num read num i:=i+1 endwhile print prod end prod_n_numeri Questo algoritmo è errato in quanto: fallisce se un numero è uguale a 0 non esegue l ultimo prodotto - Strutture di controllo - 21

inizio n prod 1 i 0 ESEMPIO: prodotto di n numeri begin prod_n_num var:n,i:integer var:num, prod:real read n prod:= 1 i := 0 repeat num prod prod*num i i+1 read num prod:= prod*num i:= i+1 F num=0 or i=n prod fine V until(num=0.or.i=n) print prod end prod_n_num - Strutture di controllo - 22

Struttura di iterazione flow chart: istuzioni F condizione V Pascal like repeat istruzioni until (condizione) - Strutture di controllo - 23

Differenze tra le tre strutture di iterazione Il for richiede che sia noto a priori il numero di iterazioni da effettuare while e repeat non richiedono tale informazione nel while se la condizione è falsa non si esegue nessuna istruzione del ciclo nel repeat i comandi del ciclo sono eseguiti almeno una volta - Strutture di controllo - 24

Le strutture di controllo possono essere innestate l una nell altra while (condizione) do for i =... for j=... for if k end end end endwhile =... (condizione)then istruzioni - Strutture di controllo - 25

Problema: calcolo del massimo di N numeri dati di input : N, numeri dati di output: massimo degli N numeri Esempio: dati di input: 4, dati di output: 10 5, 7, 10, -2 - Strutture di controllo - 26

Flow chart inizio n num Algoritmo: massimo di n numeri Pascal like begin max_n_numeri var:num,max:real var:i,n:integer read n, num max num max:= num n-1 volte num num > max F max fine max V for i = 1, n-1 do read num if (num>max) then max:= num num endfor print max end max_n_numeri - Strutture di controllo - 27

Problema: ricerca di un elemento dato in in un insieme di n numeri dati di input: n, n numeri, dato da cercare dati di output: variabile logica che indica se il dato è stato trovato, posizione del numero Esempio: dati di input : 4, 2, 1, 10, 5, 10 dati di output: vero, 3 - Strutture di controllo - 28

Algoritmo: ricerca di un elemento in un insieme inizio n elem trov.false. i 0 num i i+1 begin ricerca var:n,num,elem,i: integer var:trov:logical read n, elem trov:=.false. i:=0 repeat read num i := i+1 num elem = V trov F i=n or trov trov, i.true. if(elem=num)then trov:=.true. until(i=n.or.trov) print trov, i fine end ricerca - Strutture di controllo - 29

Esercizi: 1) Nell algoritmo di divisione tra due numeri naturali prevedere anche il caso in cui i dati siano interi con segno.... if (y < > 0) then if (x*y>0) then flag:=1 if (y<0) then y:= - y x:= - x else flag:= - 1 if(y>0) then x:= -x else y:= - y corpo dell algoritmo divisione q:=q*flag print q else print divisione per 0 - Strutture di controllo - 30

Esercizi: 1) Nell algoritmo di divisione tra due numeri naturali prevedere anche il caso in cui i dati siano interi con segno.... if (y < > 0) then if (x*y>0) then flag:=1 if (y<0) then y:= - y x:= - x else flag:= - 1 if(y>0) then x:= -x else y:= - y corpo dell algoritmo divisione q:=q*flag print q else print divisione per 0 - Strutture di controllo - 31

Esercizi: 1) Nell algoritmo di divisione tra due numeri naturali prevedere anche il caso in cui i dati siano interi con segno.... if (y.ne. 0) then flag:=1 if (y<0) then y:=-y flag:=-1 if (x<0) then flag:=-flag x:=-x corpo dell algoritmo divisione q:=q*flag print q else print divisione per 0 - Strutture di controllo - 32

2) I primi due termini della successione di Fibonacci sono uguali ad 1 e i successivi si ottengono dalla somma dei due precedenti cioè sono: 1, 1, 2, 3, 5, 8,... Costruire: un algoritmo che genera i primi N termini della successione un algoritmo che costruisce i primi termini minori di M - Strutture di controllo - 33

begin Fibonacci1 var:a,b,c,n,i:integer read n a:=1 b:=1 print a,b for i=3,n do c:=a+b print c a:=b b:=c endfor end Fibonacci1 - Strutture di controllo - 34

begin Fibonacci2 var:a,b,c,m,i:integer read m a:=1 b:=1 print a,b c:=a+b while c<= m do print c c:=a+b a:=b b:=c endwhile end Fibonacci2 - Strutture di controllo - 35

3) Calcolare il MCD di due numeri assegnati Esempio: MCD(24,15) 24 15 9 1 9 6 3 1 15 9 6 1 6 3 0 2 begin MCD var:x,y,r,q,t:integer read x,y repeat q:=x/y r:=x-q*y x:=y y:=r until r=0 print q end MCD MCD - Strutture di controllo - 36

4) Calcolare n! begin fattoriale var: n,i,fatt:integer read n fatt:=1 for i=1,n do fatt:=fatt*i endfor print fatt end fattoriale - Strutture di controllo - 37