• Non ci sono risultati.

C - Strutture di controllo

N/A
N/A
Protected

Academic year: 2021

Condividi "C - Strutture di controllo"

Copied!
8
0
0

Testo completo

(1)

70 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

C - Strutture di controllo

while (<condizione>) {

<istruzioni>;

} Cicli iterativi

<Istruzione/i> sarà eseguito tante volte fintantoché <condizione> risulta vera

N.B. < condizione> è un’espressione di tipo intero (in C non esiste il tipo logico) ed essa è verificata se ha un valore diverso da zero

a condizione iniziale while (<condizione>)

<istruzione>;

71 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

#include <stdio.h>

main () {

int Num;

printf( "immetti un numero \n”);

scanf(“%d” , &Num);

while (Num<=100) Num=Num+10;

printf ( ”Numero= %d \n”, Num);

}

Esempio Ciclo while

(2)

72 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

C - Strutture di controllo

do {

<istruzioni>;

}

while <condizione>;

Cicli iterativi

<Istruzione/i> sarà eseguito tante volte fintantoché <condizione> risulta vera

N.B. < condizione> è un’espressione di tipo intero (in C non esiste il tipo logico) ed essa è verificata se ha un valore diverso da zero

a condizione finale do

<istruzione>;

while <condizione>;

#include <stdio.h>

main () {

int Num;

printf( "immetti un numero \n”);

scanf(“%d” , &Num);

do

Num=Num+10;

while (Num <=100);

printf ( ”Numero= %d \n”, Num);

}

Esempio Ciclo do … while

(3)

74 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

C - Strutture di controllo

Ciclo ripetitivo (a conteggio)

for (<espressione1>; <condizione>; <espressione2>) <istruzione>;

for (<espressione1>; <condizione>; <espressione2>) {

<istruzioni>;

}

<espressione1>: è l’espressione usata per inizializzare la variabile di controllo del ciclo

<condizione>: è l’espressione logica per verificare la terminazione del ciclo

<espressione2>: è l’espressione usata per determinare il passo di incremento della variabile di controllo

Es:

for (i=1; i<100; i++) printf(“%d “, i);

75 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

#include <stdio.h>

main () {

int Num;

printf( "immetti un numero \n”);

scanf(“%d” , &Num);

for (i=1;i<=10;i++)

printf ( “%d \n”, Num*i);

}

Esempio Ciclo for

(4)

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 76

Operatore di cast in C

Il linguaggio C permette di forzare una variabile di un tipo ad essere una variabile di un'altro tipo utilizzando l'operatore cast "( )".

Il costrutto cast ha la seguente sintassi:

(<nome tipo da forzare>) <espressione>

Esempio:

float numero_reale = 7.234;

int numero = 8;

float altro_reale;

numero=(int) numero_reale; /* forza il tipo di numero_reale ad essere int ed assegna il valore 7 (parte intera) a numero*/

altro_reale=(float ) numero /* assegna 7.0 (valore float) ad altro_reale */

Operatore di cast in C

Alcune operazioni di cast di tipo sono fatte automaticamente, principalmente in relazione alle capacità dei numeri interi.

E' opportuno eseguire esplicitamente operazioni di cast tutte le volte che si ha un dubbio sulla corrispondenza tra i tipi in operazioni di calcolo ed

assegnazione.

E’ il caso delle divisioni: se abbiamo la divisione tra due numeri interi e vogliamo che il risultato sia un numero reale, allora deve essere eseguito il cast sui due numeri interi.

Esempio:

int dividendo= 13, divisore = 4;

float risultato;

risultato = (float) dividendo / (float) divisore;

… sarà: risultato = 3.25

… e non risultato = 3.0 come risulterebbe dalla divisione intera:

(5)

78 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

Esempio Analisi e Specifica

Definizione del problema: data in input una sequenza di caratteri, terminante con il carattere ‘F’, dire quante volte nella sequenza è presente un certo carattere fornito in input

Definizione dei dati del problema:

I: un carattere della sequenza; il carattere da cercare Pi: il carattere ‘F’termina la sequenza; il carattere da cercare è diverso da ‘F’

U: il numero di volte per cui il carattere da cercare è nella sequenza

Pu: nessuna

79 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

Esempio

Nome variabile Descrizione Tipo

C carattere della sequenza CHAR Cerca carattere da cercare CHAR

Nome variabile Descrizione Tipo

Volte Il numero di presenze di Cerca INT nella sequenza

Tabella delle variabili di ingresso

Tabella delle variabili di uscita

(6)

80 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

Esempio Progettazione

Descrizione del metodo di elaborazione:

• è letto il valore del carattere da cercare nella sequenza fin quando è diverso da ‘F’;

• è letto un carattere della sequenza;

• si confronta il carattere letto con quello da cercare

• se essi sono ugualu si incrementa di una unità il contatore delle presenze del numero nella sequenza

• si continua dal secondo punto fino all’immissione di ‘F’

• si stampa il valore del contatore delle presenze del carattere nella sequenza

#include <stdio.h>

main () {

// trova e conta carattere in sequenza caratteri int Volte;

char C, Cerca;

do

{ printf("immetti il carattere da cercare \n");

scanf("%c", &Cerca);

}

while (Cerca=='F');

printf("carattere da cercare = %c \n", Cerca);

Volte=0;

do

{ printf ( "immetti un carattere della sequenza \n");

scanf("%c", &C);

if (C==Cerca) Volte=Volte+1;

}

while (C!='F');

printf ("Carattere %c presente %d volte \n", Cerca, Volte);

system("Pause");

Esempio

(7)

82 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

.... problema che può sorgere con l’uso di scanf (….) in un ciclo per leggere il valore di una variabile di tipo carattere, o comunque quando si effettuano più successive operazioni di lettura di valori di variabili di tipo carattere …

supponiamo di avere il seguente codice:

{ printf("immetti il carattere da cercare \n");

scanf("%c", &Cerca);

} …………

{

{printf ("immetti un carattere della sequenza \n");

scanf("%c", &C);

………

}

… possiamo avere qualche problema durante l’esecuzione….

…. Osservazioni ….

83 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

… In esecuzione …

immetti il carattere cercare B

carattere da cercare = B

immetti un carattere della sequenza immetti un carattere della sequenza

…. il problema è dovuto al trattamento del <return> ….

…. un modo per risolverlo ….

{ printf("immetti il carattere da cercare \n");

scanf("%c", &Cerca);

} { …………

{printf ("immetti un carattere della sequenza \n");

scanf(“\n%c", &C);

………

}

…. Osservazioni ….

(8)

84 Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio

#include <stdio.h>

main () {

// trova e conta carattere in sequenza caratteri - BETTER int Volte;

char C, Cerca;

do

{ printf("immetti il carettere da cercare \n");

scanf(“\n%c", &Cerca);

}

while (Cerca=='F');

printf("carattere da cercare = %c \n", Cerca);

Volte=0;

do

{ printf ( "immetti un carattere della sequenza \n");

scanf("\n%c", &C);

if (C==Cerca) Volte=Volte+1;

}

while (C!='F');

printf ("Carattere %c presente %d volte \n", Cerca, Volte);

system("Pause");

}

Esempio

Riferimenti

Documenti correlati

Infine recentemente, analizzando 132 carcinomi del colon-retto, caratterizzati da instabilità cromosomica (CIN), sono state identificate 11 mutazioni somatiche in quattro

Una popolazione di batteri, inizialmente composta da 8 ∗ 10 4 unit` a, cresce giornalmente del 70% per 4 giorni, quindi decresce del 50% giornaliero per 3 giorni.. Qual `e

Definito (non--ambiguo) ambiguo), , ogni istruzione deve essere elementare e deve consentire un’interpretazione.. elementare e deve consentire un’interpretazione

Dopo altri 4 secondi il secondo motore si arresta automaticamente e il primo riparte, ruotando nel senso definito &#34;INDIETRO&#34;.. Sei secondi più tardi il primo motore

L’allievo dovrà elaborare gli schemi di collegamento ed il programma per il PLC, digitare il programma medesimo e collaudarlo in condizioni simulate, realizzare il cablaggio

Siano dati in input le informazioni su n libri di una biblioteca creando quattro vettori con il codice del libro, i loro prezzi, il codice della casa editrice e l’anno di

NETTUNO – Network per l’Università ovunque Corso: Laurea a distanza in Ingegneria Informatica Insegnamento: Reti di Calcolatori II..

Per esempio, se la stringa contiene “GRRCGRRCC”, la successione dei suoni nel file di uscita dal programma dovrà essere: grancassa, rullante, rullante, charleston, grancassa,