Home Geografia Italia Itinerari Italia Europa Itinerari Europa America Asia e Oceania Africa Storia antica Medievale Scienza e tecnica Animali Passeracei Insetti Matematica Classici Classici I Itinerari culturali Guida medica Lavoro

Cerca in trapaninfo.it e sul web con Google Oltre 200 portali per la ricerca nel web

adLeggiad   Programmazione le Strutture Cicliche.

Link utili

w

Non chiedete che cosa il vostro Paese può fare per voi; chiedete che cosa potete fare voi per il vostro Paese.
John Fitzgerald Kennedy

La scuola consegue tanto meglio il proprio scopo quanto più pone l'individuo in condizione di fare a meno di essa.
(Ernesto Codignola)

Le strutture While e Until

La struttura While

La struttura UNTIL

La ripetizione di un procedimento Esempio 9

Flow chart esempio 9

Esempio 10

Flow chart esempio 10

Le strutture While e UNTIL sono equivalenti Esempio 11

Flow chart esempio 11

Condizione di Termine per il Ciclo Esempio 12

Flow chart esempio 12

Esempio 13

Flow chart esempio 13

Gli algoritmi ripetitivi

La realizzazione di algoritmi ripetitivi Esempio 14

Flow chart esempio 14

Altri tipi di algoritmi ripetitivi Esempio 15

Flow chart esempio 15

Problemi non esplicitamente ripetitivi

Problemi che richiedono un numero di ripetizioni noto

Uso di strutture composte

La struttura ciclica FOR Esempio 16

Flow chart esempio 16

Il passo del ciclo FOR Esempio 17

Flow chart esempio 17

I cicli FOR nidificati

Trace con strutture cicliche

Matematica Informatica

Ripasso di Matematica per Informatica

Informatica - Programmazione

Altri Sistemi Operativi Basic Dati e Le Prime Istruzioni Il Trattamento dei Dati Le Funzioni Intrinseche o Predefinite Le Istruzioni di Controllo Linguaggio e Ambiente di Sviluppo  Procedure  e Funzioni Programmi Dos Suono e Grafica Ricerche Complementari Vettori e Matrici Borland Delphi Caratteristiche dei Linguaggi di Programmazione I Data Base I File Ricerche Complementari I File I Linguaggi di Programmazione I Pacchetti Applicativi Sistemi Operativi Ricerche Complementari Sistemi Operativi Il Multimedia  Il Sistema Operativo Dos Ricerche Complementari Il Sistema Operativo Dos Internet e Intranet Introduzione La Programmazione Interfaccia Utente L'Ambiente Microsoft Windows Le Applicazioni Ricerche Complementari  Le Applicazioni Le Periferiche del Computer Le Reti di Computer Le Reti Ricerche Complementari Le Strutture di Dati Ricerche Complementari Le Strutture di Dati L'Hardware del PC Ricerche Complementari    L'Hardware del Personal Computer Linguaggi Ricerche Complementari Microsoft Visual Basic   Periferiche Ricerche Complementari Programmazione la Struttura Condizionale Le Matrici Dall'Algoritmo al Programma I File I Primi Elementi I Vettori Il Controllo degli Errori La Grafica L'Analisi Top Down Programmazione RAD Programmazione Le Matrici Rappresentazione Dati in Memoria Ricerche Complementari Sistemi di Numerazione Storia del Computer Struttura e Funzionamento del Computer Ricerche Complementari Struttura e Funzionamento del Computer

Web link:

Strutture Iterative while for do C++

Programmazione strutturata

Programmazione C Ciclo Pre-condizionale (while)

INFORMATICA - PROGRAMMAZIONE LE STRUTTURE CICLICHE

LE STRUTTURE WHILE E UNTIL

Spesso è necessario ripetere più volte uno stesso gruppo di istruzioni;

le istruzioni di controllo che permettono di controllare la ripetizione vengono dette strutture cicliche o ripetitive.

Anche se nei diversi linguaggi di programmazione possono venire utilizzate istruzioni con nomi diversi, le strutture ripetitive vengono normalmente indicate come struttura WHILE e struttura UNTIL;

esse permettono di ripetere una sequenza di operazioni, terminando quando si verifica una particolare condizione.

LA STRUTTURA WHILE

La struttura WHILE ha il seguente schema:

mentre condizione esegui istruzioni A. . fine mentre

Per prima cosa viene valutata la condizione (cioè stabilito se la condizione è vera o falsa);

se la condizione risulta falsa si esce subito dal ciclo, altrimenti si eseguono le istruzioni del ciclo e poi si prova nuovamente la condizione; se è ancora vera si ripetono le istruzioni e si torna a provare la condizione, e così via finché la condizione risulta falsa.

Naturalmente all'interno del ciclo dovrà esserci un'istruzione che prima o poi fa diventare falsa la condizione, altrimenti non si uscirebbe più, entrando in quello che viene chiamato un "loop infinito".

LA STRUTTURA UNTIL

La struttura UNTIL ha il seguente schema:

ripeti istruzioni A. . finché condizione

Per prima cosa vengono eseguite le istruzioni, senza considerare se la condizione sia vera o falsa;

quindi le istruzioni del ciclo vengono sempre eseguite almeno una volta.

Poi si valuta se la condizione sia vera o falsa;

se la condizione risulta vera il ciclo termina, altrimenti si ripetono le istruzioni e si valuta nuovamente la condizione.

Anche in questo caso naturalmente all'interno del ciclo deve esserci un'istruzione che prima o poi fa diventare vera la condizione (sempre per non rischiare un loop).

LA RIPETIZIONE DI UN PROCEDIMENTO

Ci sono problemi che per natura richiedono la ripetizione di un certo gruppo di istruzioni;

il caso più semplice in cui si usano le strutture cicliche è però quello in cui un certo algoritmo può venire ripetuto più volte a scelta dell'utente.

Il programma quindi chiede all'utente che cosa vuole fare, se continuare o no, e utilizza la sua risposta come condizione di terminazione.

E' possibile gestire questo procedimento sia con un ciclo WHILE che con un ciclo UNTIL.

ESEMPIO 9 Questo programma dimostra come si possa ripetere un procedimento in base alla risposta dell'utente a una domanda di continuazione, utilizzando il ciclo UNTIL.

Descrizione delle variabili:

Esempi Esecuzione

Flow chart Esempio 9

Esempi Esecuzione

Pseudocodifica (vedi Figura)

1 inizio

2 ripeti

3 emissione richiesta dato

4 lettura DATO

5 emissione DATO

6 emissione richiesta di continuazione

7 lettura RISPOSTA

8 finché RISPOSTA = "n" 9 fine da 3 a 5

Lettura e stampa di un dato;

questo è il procedimento da ripetere più volte, a richiesta dell'utente.

6-7 Il programma chiede all'utente se desidera o meno inserire altri dati.

In caso di risposta affermativa il procedimento viene ripetuto.

8 Condizione di terminazione del ciclo UNTIL;

il ciclo si interrompe soltanto se viene inserito il carattere "n".

Qualsiasi altro carattere fa proseguire il programma, con la richiesta di un altro dato.

Esempi Esecuzione

Commenti Il programma per prima cosa chiede sempre di inserire almeno un dato;

non è possibile fermare il programma prima di aver inserito e stampato almeno un dato.

Il procedimento da ripetere in questo esempio è banale:

la lettura e scrittura di un numero, ma lo schema del programma rimane valido per qualsiasi altro tipo di procedimento.

ESEMPIO 10

Questo programma dimostra come si possa ripetere un procedimento in base alla risposta dell'utente a una domanda di continuazione, utilizzando il ciclo WHILE.

Flow chart Esempio 10

Flow chart

Pseudocodifica (vedi Figura)

1 inizio

2 emissione richiesta di esecuzione

3 lettura RISPOSTA

4 mentre RISPOSTA="s"

5 emissione richiesta dato

6 lettura DATO

7 emissione DATO

8 emissione richiesta di continuazione

9 lettura RISPOSTA

10 fine mentre

11 fine 2-3

Il programma inizia con la richiesta all'utente se desidera continuare o meno nell'esecuzione del programma.

Rispondendo "n" alla domanda iniziale, il programma termina senza l'inserimento e la stampa di alcun dato.

4 Condizione di terminazione del ciclo;

la condizione viene valutata prima di eseguire le istruzioni del ciclo, quindi se l'utente ha risposto con un carattere diverso da "s" il programma termina senza eseguire neppure una volta il procedimento di lettura e stampa di un dato.

Qualsiasi altro carattere fa proseguire il programma.

5-7 Questo è il procedimento da ripetere più volte:

lettura e stampa di un dato.

8-9 All'interno del ciclo è presente di nuovo la richiesta all'utente se desidera continuare;

è necessario ripetere di nuovo la richiesta, altrimenti il programma una volta entrato nel ciclo non terminerebbe più, poiché non cambierebbe mai il valore della variabile RISPOSTA.

La domanda e la risposta iniziali sono necessarie perché al momento del primo test la variabile RISPOSTA deve avere un valore.

Domanda e risposta devono poi essere ripetute nel ciclo per un corretto funzionamento e per rispettare la struttura del ciclo WHILE.

Esempi Esecuzione

Commenti.

Realizzando il programma con un ciclo WHILE è possibile per l'utente far terminare subito il programma senza inserire neanche un dato;

infatti il programma chiede per prima cosa se si vuole continuare nell'inserimento dei dati per poter dare un valore alla condizione di entrata nel ciclo.

Rispondendo "n" alla prima richiesta il programma termina immediatamente senza leggere o stampare alcun dato.

Anche in questo caso, come nell'esempio precedente, il procedimento da ripetere è banale, ma lo schema del programma rimane valido per qualsiasi altro tipo di procedimento.

LE STRUTTURE WHILE E UNTIL SONO EQUIVALENTI

Un ciclo UNTIL in realtà può sempre essere realizzato utilizzando la struttra WHILE;

basta fare in modo che le istruzioni del ciclo vengano sempre eseguite almeno una volta.

Bisogna quindi che la condizione sia sicuramente verificata prima dell'inizio del ciclo.

In tal modo il ciclo viene sicuramente eseguito almeno una volta;

l'algoritmo risulta così assolutamente equivalente a quello realizzato con il ciclo UNTIL.

Il fatto che l'uscita dal ciclo si verifichi quando la condizione risulta falsa nel ciclo WHILE e quando risulta vera nel ciclo UNTIL (e quindi che le condizioni di uscita risultino diverse) è assolutamente irrilevante;

il problema si può sempre risolvere utilizzando la condizione preceduta dall'operatore logico NOT, in modo da scambiarne il valore di verità.

ESEMPIO 11

Questo programma dimostra come si possa utilizzare una struttura WHILE per codificare il ciclo UNTIL nella soluzione del problema di ripetere un procedimento in base alla risposta dell'utente a una domanda di continuazione.

Potrebbe andare bene lo schema dell'esempio 10 se si fosse sicuri che la prima risposta dell'utente fosse sicuramente "s".

Basta allora eliminare la richiesta e l'inserimento della risposta e sostituirle con un'assegnazione che inizializzi la variabile RISPOSTA al valore "s".

Se si desidera inoltre che il flusso di esecuzione sia esattamente quello dell'esempio ) con la struttura UNTIL bisogna che il programma termini solo quando viene inserito il carattere "n";

basta allora modificare la condizione di terminazione del ciclo WHILE.

Flow chart Esempio 11

Flow chart

Pseudocodifica (vedi Figura)

1 inizio

2 RISPOSTA= "s"

3 mentre RISPOSTA+ "n"

4 emissione richiesta dato

5 lettura DATO

6 emissione DATO

7 emissione richiesta di continuazione

8 lettura RISPOSTA

9 fine mentre

10 fine

2 La RISPOSTA viene posta uguale a "s" all'inizio del programma.

3 La condizione di uscita dal ciclo WHILE la prima volta risulterà sicuramente falsa e le istruzioni del ciclo verranno eseguite almeno una volta.

L'uscita dal ciclo si verifica solo quando viene inserito il carattere "n" come nel programma dell'esempio 9;

ciò è stato ottenuto usando la condizione - RISPOSTA diversa da "n"

- che in realtà è la negazione della condizione

- RISPOSTA = "n"

- usata nel programma dell'esempio 9 per l'uscita dal ciclo UNTIL.

Esempi Esecuzione

Commenti.

In questo modo il programma risulta perfettamente equivalente a quello dell'esempio 9 realizzato con il ciclo UNTIL, cioè i due programmi si comportano sempre nello stesso modo;

l'utente non potrebbe stabilire quale dei due programmi sta usando.

CONDIZIONE DI TERMINE PER IL CICLO

Gli algoritmi di ripetizione che utilizzano la presentazione all'utente della richiesta di continuazione per stabilire quando terminare possono risultare un po' fastidiosi.

Per semplificare l'esecuzione si può fare in modo che il procedimento termini con l'inserimento di un dato particolare.

Si possono distinguere due casi:

1) si deve elaborare anche il dato che costituisce il segnale di terminazione;

2) non si deve elaborare il dato che costituisce il segnale di terminazione.

Nel primo caso si deve usare un ciclo UNTIL, nel secondo caso un ciclo WHILE.

ESEMPIO 12

Questo programma dimostra come si possa ripetere un procedimento terminando quando l'utente inserisce un valore particolare fissato come segnale di terminazione;

questo esempio utilizza un ciclo UNTIL, pertanto viene elaborato anche il valore che fa terminare il programma. Viene presentato un esempio con dati alfanumerici, usando il "." come simbolo di terminazione;

l'algoritmo è però valido per qualsiasi tipo di dati, individuando opportunamente il valore per la terminazione.

Descrizione delle variabili:

Descrizione variabili

Flow chart Esempio 12

Esempi Esecuzione

Pseudocodifica (vedi Figura)

1 inizio

2 ripeti

3 emissione richiesta dato

4 lettura DATO

5 emissione DATO

6 finché DATO = "." 7 fine

da 3 a 5 Procedimento da ripetere.

6 Condizione per la conclusione del ciclo UNTIL:

il ciclo termina quando l'utente inserisce il "."

Esempi Esecuzione

Commenti.

Gli esempi precedenti richiedevano ad ogni ripetizione l'inserimento di 2 input:

il dato da stampare e la risposta alla domanda di continuazione.

Questo programma invece richiede soltanto il dato da stampare, semplificando l'esecuzione.

Poiché l'algoritmo utilizza un ciclo UNTIL il programma stampa il punto (segnale di terminazione), prima della conclusione.

Qualunque serie di dati termina sempre con il punto.

ESEMPIO 13

Questo programma, come il precedente, dimostra come si possa ripetere un procedimento terminando quando l'utente inserisce un valore particolare fissato come segnale di terminazione;

se non si desidera però che il dato usato come segnale di terminazione venga elaborato bisogna fare uso di un ciclo WHILE.

Anche in questo caso vale quanto detto in precedenza, cioè che l'algoritmo è valido per qualsiasi tipo di dati, individuando opportunamente il valore per la terminazione.

Flow chart Esempio 13

Esempi Esecuzione

Pseudocodifica (vedi Figura) 1 inizio 2 emissione richiesta dato 3 lettura DATO 4 mentre DATO > "." 5 emissione richiesta dato 7 lettura DATO 8 fine mentre 9 fine 2-3 Richiesta del primo dato. 6 Condizione per la conclusione del ciclo While: il ciclo termina quando l'utente inserisce il "."

3-5 Procedimento da ripetere.

Esempi Esecuzione

Commenti Usando il ciclo WHILE l'inserimento del punto causa l'immediato arresto del programma senza alcuna ulteriore elaborazione.

Qualunque serie di dati deve terminare con il punto che però non viene mai stampato.

In questi esempi non si può ripetere più volte l'inserimento e la stampa del punto;

se ciò dovesse essere necessario, non si potrebbe considerare il punto come segnale di terminazione;

il segnale di terminazione deve quindi essere scelto tra i dati che non intervengono normalmente nell'elaborazione.

GLI ALGORITMI RIPETITIVI

Ci sono problemi che per natura sono ripetitivi, cioè la loro soluzione richiede l'utilizzo di cicli.

Serve un ciclo ogni volta che è richiesta la ripetizione di una serie di operazioni.

LA REALIZZAZIONE DI ALGORITMI RIPETITIVI

Per realizzare un algoritmo ciclico si devono preparare:

- le inizializzazioni da effettuare prima del ciclo,

- le operazioni che devono essere ripetute all'interno del ciclo,

- la condizione di terminazione del ciclo.

Bisogna inoltre fare molta attenzione all'uso delle variabili e al valore che assumono a ogni ciclo.

ESEMPIO 14

Questo programma permette di calcolare la somma di una serie di valori.

Se il numero dei valori da sommare fosse già stabilito (e non troppo alto), per esempio 4 valori, si potrebbe realizzare l'algoritmo senza usare strutture cicliche.

inizio emissione richiesta dati lettura A lettura B lettura C lettura D SOMMA = A+B+C+D emissione SOMMA fine.

Ma il numero dei valori da sommare deve essere variabile;

cioè il programma deve permettere di sommare una volta 3 valori, un'altra volta 20 valori, poi di nuovo 7, ecc.

Bisogna quindi realizzare un algoritmo che utilizzi una struttura ciclica, generalizzando il procedimento di somma di un valore.

Si può utilizzare una variabile, inizialmente con valore 0, a cui aggiungere di volta in volta un valore.

Usando la variabile SOMMA per la somma dei valori e la variabile NUMERO per un valore da sommare, bisogna allora:

- inizializzare la variabile SOMMA a 0 prima di entrare nel ciclo.

- ripetere a ogni ciclo l'inserimento di un valore in NUMERO e sommarlo al valore precedente della variabile SOMMA,

- terminare il ciclo, per esempio quando viene inserito il valore 0 che comunque non influenza il risultato del programma.

Descrizione delle variabili:

Descrizione variabili

Flow chart Esempio 14

Esempi Esecuzione

Pseudocodifica (vedi Figura)

1 inizio

2 SOMMA = 0

3 emissione richiesta dati

4 lettura NUMERO

5 mentre NUMERO >0

6 SOMMA = SOMMA + NUMERO

7 lettura NUMERO

8 fine mentre

9 emissione SOMMA

10 fine 2

Inizializzazione della variabile SOMMA;

viene utilizzata una variabile numerica reale, anche se i valori da sommare sono numeri interi, per avere un maggior intervallo di definizione (i numeri interi di solito sono definiti in un intervallo molto più ristretto e il superamento del valore limite può causare un errore di programma o la produzione di un risultato non valido).

3 Il messaggio di richiesta dei dati può essere stampato soltanto all'inizio per non disturbare l'inserimento;

potrebbe essere del tipo "Inserire un valore alla volta (0 per terminare)".

4 Lettura del primo valore;

inserendo 0 il programma termina subito (viene stampato comunque il totale che in questo caso è 0, cioè il valore dato con l'inizializzazione).

5 Condizione di terminazione del ciclo;

solo il valore 0 fa terminare il programma, quindi si possono inserire e sommare anche numeri negativi.

6-7 Procedimento da ripetere.

6 Somma del valore inserito al totale calcolato nel passo precedente.

7 Lettura di un nuovo valore.

9 Stampa del risultato; viene eseguita quando termina il ciclo WHILE.

Esempi di esecuzione

Commenti.

Il programma poteva essere utilizzato anche inserendo ogni valore soltanto dopo una richiesta di continuazione all'utente;

in questo modo però l'esecuzione risulterebbe più fastidiosa.

ALTRI TIPI DI ALGORITMI RIPETITIVI

In tutti gli esempi visti il programma terminava in base alla decisione dell'utente, tramite la risposta alla domanda di continuazione o l'inserimento di un valore particolare.

Ci sono però molti tipi di problemi in cui è l'algoritmo che deve stabilire quando terminare la ripetizione del procedimento, in base al verificarsi di una condizione.

Si possono verificare due casi diversi:

- al momento dell'esecuzione è noto il numero di ripetizioni del procedimento;

basta allora contare i cicli percorsi. Il programma termina quando si raggiunge il numero stabilito di ripetizioni;

- non è noto il numero di ripetizioni da eseguire;

in tal caso si deve stabilire una condizione per la terminazione del procedimento.

N.B.

Se la condizione di terminazione di un ciclo non viene mai verificata ci si trova in una situazione di loop infinito (un ciclo che non termina mai);

bisogna quindi sempre accertarsi che sia possibile raggiungere la condizione di terminazione.

ESEMPIO 15

Con questo programma si vogliono stampare tutti numeri dispari minori di un valore introdotto.

Questo è un problema di generazione di una successione numerica.

Si deve calcolare una serie di valori (successione) data una legge generale per il calcolo di un valore generico.

Bisogna individuare una legge che permetta di calcolare i valori successivi da produrre, in questo caso i numeri dispari.

I numeri dispari si possono calcolare facilmente in un ciclo partendo da 1 e aggiungendo un valore 2 a ogni ripetizione.

Descrizione delle variabili:

Descrizione variabili

Flow chart Esempio 15

Flow chart

Pseudocodifica (vedi Figura)

1 inizio

2 emissione richiesta valore limite

3 lettura N

4 NUMERODISPARI = 1

5 mentre NUMERODISPARI N

6 emissione NUMERODISPARI

7 NUMERODISPARI = NUMERODISPARI + 2

8 fine mentre

9 fine 2-3 Inserimento del valore limite per la successione da generare.

4 Inizializzazione di NUMERODISPARI al primo valore della successione.

5 Condizione di terminazione del ciclo.

6 Stampa di un valore della successione.

La stampa deve essere effettuata all'interno del ciclo per poter ottenere in output tutta la successione di valori (se la stampa fosse all'uscita del ciclo si otterrebbe solo l'ultimo valore calcolato).

7 Calcolo del valore successivo da stampare; il numero dispari successivo si ottiene sommando 2.

Esempi di esecuzione

Commenti Il limite superiore può essere sia pari che dispari.

Se la condizione di terminazione del ciclo fosse:

mentre NUMERODISPARI > N l'algoritmo sarebbe corretto per un valore di N dispari, ma si verificherebbe una condizione di loop infinito per un valore N pari.

Infatti per N = 6 NUMERODISPARI = 1 è diverso da 6 NUMERODISPARI = 3 è diverso da 6 NUMERODISPARI = 5 è diverso da 6 NUMERODISPARI = 7 proseguendo all'infinito poiché un numero dispari non può mai essere uguale a 6.

PROBLEMI NON ESPLICITAMENTE RIPETITIVI

A volte la descrizione di un problema non richiede in modo esplicito la ripetizione di un procedimento, anche se l'algoritmo risolutivo deve in effetti essere ciclico.

PROBLEMI CHE RICHIEDONO UN NUMERO DI RIPETIZIONI NOTO

Se il numero di ripetizioni è noto basta contare le ripetizioni effettuate e terminare quando si raggiunge il valore desiderato.

Bisogna allora conoscere il numero di ripetizioni, che può essere un valore costante o una variabile, in cui però al momento dell'esecuzione del ciclo sia stato inserito un valore particolare.

Bisogna poi utilizzare un'altra variabile per contare quante volte è già stato eseguito il ciclo.

Si può utilizzare sia il ciclo WHILE che il ciclo UNTIL.

ESEMPI Schemi di algoritmi ripetitivi in cui è noto il numero di ripetizioni da effettuare.

Se il ciclo deve essere ripetuto N volte utilizzando il ciclo WHILE si ha:

INDICE = 1 mentre INDICE = N esegui istruzioniA INDICE = INDICE + 1 fine mentre o in modo più generale:

INDICE = valore iniziale mentre INDICE = valore finale esegui istruzioni A INDICE = INDICE + passo fine mentre.

USO DI STRUTTURE COMPOSTE

Il gruppo di istruzioni da ripetere in un ciclo può comprendere strutture di qualsiasi tipo, come quelle sequenziali, condizionali o altre strutture cicliche (che a loro volta possono comprenderne altre).

LA STRUTTURA CICLICA FOR

Quando il numero di ripetizioni da effettuare è noto in anticipo, si può utilizzare un'altra struttura ciclica, derivata dalla struttura WHILE:

la struttura FOR, che permette di descrivere questi tipi di algoritmi in modo più immediato. per INDICE da valore iniziale, a valore finale, con passo PASSO esegui istruzioni A fine per L'indice del ciclo può essere utilizzato nel gruppo di istruzioni all'interno del ciclo purché non venga mai modificato.

L'incremento della variabile, che deve essere indicato in modo esplicito nella descrizione con la struttura WHILE, non va specificato all'interno del ciclo ma viene effettuato in modo automatico. Anche questa struttura può essere usata in combinazione con altre, creando strutture nidificate.

ESEMPIO 16

Questo programma stampa i numeri da 1 a un valore limite inserito dall'utente.

Il numero di ripetizioni (stampa di un numero) è noto: è il numero limite inserito dall'utente;

si può quindi usare un ciclo FOR per la descrizione dell'algoritmo.

Descrizione delle variabili:

Descrizione variabili

Flow chart Esempio 16

Flow chart

Pseudocodifica (vedi Figura)

1 inizio

2 emissione richiesta valore limite

3 lettura N

4 per NUMERO da 1 a N con passo 1

5 emissione NUMERO

6 fine per

7 fine 2-3 Inserimento del valore limite; a questo punto la variabile N, limite finale del ciclo FOR, ha un valore determinato;

è noto il numero di ripetizioni da effettuare.

4-6 Ciclo FOR.

5 Procedimento da ripetere (viene ripetuto N volte);

ad ogni ripetizione l'indice NUMERO, inizialmente posto a 1, viene incrementato di 1.

L'indice del ciclo rappresenta di volta in volta uno dei valori da stampare.

Esempi di esecuzione

IL PASSO DEL CICLO FOR

Il passo del ciclo FOR, cioè il valore da sommare all'indice a ogni ripetizione, può essere diverso da 1, eventualmente anche negativo.

Se il passo è negativo l'indice viene decrementato; il valore iniziale deve quindi essere maggiore del valore finale perché il ciclo venga percorso.

ESEMPIO 17

Questo programma stampa i multipli di 3 fino a un valore limite inserito (è un altro esempio di generazione di successioni).

Il problema viene risolto semplicemente utilizzando un ciclo FOR con passo 3.

Descrizione delle variabili:

Descrizione variabili

Flow chart Esempio 17

Diagramma di flusso

Pseudocodifica (vedi Figura)

1 inizio

2 emissione richiesta valore limite

3 lettura N

4 per MULTIPLI da 3 a N

5 emissione MULTIPLI

6 fine per

7 fine

2 Inserimento del valore limite, cioè del valore che l'indice del ciclo FOR dovrà raggiungere per terminare.

4-6 Ciclo FOR;

a ogni ripetizione l'indice MULTIPLI, inizializzato a 3, viene incrementato di 3.

Esempi Esecuzione

Commenti.

Il ciclo FOR termina quando l'indice diventa maggiore del valore finale;

perciò l'algoritmo funziona senza causare loop anche se il valore limite inserito non è un multiplo di 3.

I CICLI FOR NIDIFICATI

Più cicli FOR possono essere nidificati;

l'indice del ciclo deve essere diverso per ogni struttura (mentre per strutture in sequenza si può riutilizzare lo stesso indice).

per I da VALOREINIZIALE1 a VALOREINIZIALE1 con passo PASSO1 per J da VALOREINIZIALE2 a VALOREFINALE2 con passo PASSO2 istruzioni fine per fine.

per L'indice più esterno I parte dal valore iniziale;

mantenendo fisso J, viene eseguito il ciclo più interno, variando J dal valore iniziale al valore finale;

poi si incrementa I e si esegue di nuovo il ciclo più interno;

si passa poi a incrementare nuovamente I e così via finché I raggiunge il valore finale.

ESEMPI

Due cicli FOR nidificati;

all'interno del ciclo vengono stampati gli indici;

è possibile così verificare come vengono modificati durante l'esecuzione.

inizio per I da 1 a 3 per J da 1 a 2 emissione "I=", I, " J=", J fine per fine per fine.

Questo programma produce in output: I=1 J=1 I=1 J=2 I=2 J=1 I=2 J=2 I=3 J=1 I=3 J=2

TRACE CON STRUTTURE CICLICHE

Eseguire la trace in programmi che utilizzano strutture cicliche può servire per determinare cosa accade ad ogni ripetizione.

Per esempio:

- se il ciclo non termina mai si possono stampare all'interno del ciclo le variabili che intervengono nella condizione di terminazione per scoprire il motivo del loop infinito;

- se un calcolo prodotto con un ciclo risulta errato si possono stampare i risultati intermedi ottenuti ad ogni ripetizione;

- se un ciclo WHILE o FOR non viene mai eseguito (e si pensa che invece dovrebbe essere percorso) si possono stampare le variabili della condizione del ciclo WHILE per determinarne il valore di verità o i limiti del ciclo FOR per stabilire se permettono l'ingresso nel ciclo.

Enciclopedia termini lemmi con iniziale a b c d e f g h i j k l m n o p q r s t u v w x y z

Storia Antica dizionario lemmi a b c d e f g h i j k l m n o p q r s t u v w x y z

Dizionario di Storia Moderna e Contemporanea a b c d e f g h i j k l m n o p q r s t u v w y z

Lemmi Storia Antica Lemmi Storia Moderna e Contemporanea

Dizionario Egizio Dizionario di storia antica e medievale Prima Seconda Terza Parte

Storia Antica e Medievale Storia Moderna e Contemporanea

Storia Antica Storia Moderna

Dizionario di matematica iniziale: a b c d e f g i k l m n o p q r s t u v z

Linea flashing backefro

Google

gbm w3c

^up^

Web Trapanese eXTReMe Tracker

TP Comuni

Copyright (c) 2002 -   trapaninfo.it home disclaim

w

trapaninfo.it flag counter

Down @webmaster Up