Anteprima
Vedrai una selezione di 8 pagine su 31
Appunti di programmazione C Pag. 1 Appunti di programmazione C Pag. 2
Anteprima di 8 pagg. su 31.
Scarica il documento per vederlo tutto.
Appunti di programmazione C Pag. 6
Anteprima di 8 pagg. su 31.
Scarica il documento per vederlo tutto.
Appunti di programmazione C Pag. 11
Anteprima di 8 pagg. su 31.
Scarica il documento per vederlo tutto.
Appunti di programmazione C Pag. 16
Anteprima di 8 pagg. su 31.
Scarica il documento per vederlo tutto.
Appunti di programmazione C Pag. 21
Anteprima di 8 pagg. su 31.
Scarica il documento per vederlo tutto.
Appunti di programmazione C Pag. 26
Anteprima di 8 pagg. su 31.
Scarica il documento per vederlo tutto.
Appunti di programmazione C Pag. 31
1 su 31
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

COSTRUTTO SWITCH:

Raggruppa varie azioni a seconda delle scelte che si può fare. Consente di specificare un numero illimitato di

cammini di esecuzione in dipendenza dal valore di un’espressione.

switch(espressione){ case espressione-costante: comando;

….

default: comando;

}

Per evitare che una volta verifica l’espressione stampi tutto il resto del contenuto dello switch(compreso il

comando del default), devo inserire un ‘break’.

Con il ‘break’, una volta eseguito il comando, si esce dallo switch: si interrompe il flusso delle operazione

che stiamo vedendo.

switch(espressione) {

case espressione-costante: comando;

break;

case espressione-costante: comando;

break; 13

….

default: comando;

}

La semantica dell’istruzione switch impone che:

• venga valutata l’espressione intera: se corrisponde ad uno dei valori case, il flusso di esecuzione

viene trasferito alla prima istruzione successiva al case nel programma;

• se non c’è corrispondenza tra l’espressione switch ed alcun valore case, allora il flusso di esecuzione

viene trasferito all’istruzione del ramo default (non obbligatorio)

Non possono esistere, inoltre, case con valori uguali. Nell’istruzione switch, il flusso di esecuzione, a partire

dal case selezionato, prosegue fino alla successiva istruzione di controllo del flusso o alla fine dell’istruzione

switch. L’istruzione break forza l’uscita dal costrutto switch, trasferendo il controllo alla prima istruzione che

segue il costrutto.

L’uso dell’istruzione break all’interno dello switch evita che il controllo del programma passi da un case al

successivo.

CICLO WHILE:

La sintassi del while è la seguente:

while(espressione){

comando;

}

Dal punto di vista semantico quello che si fa è valutare l’espressione: se è diversa da zero (cioè vera) viene

eseguito il comando(ovvero il corpo del ciclo) ed il controllo ritorna all’inizio del ciclo. Questa operazione si

ripete fino al momento in cui l’espressione vale zero (cioè l’espressione è falsa): il programma supera il ciclo

while ed esegue le istruzioni successive.

ESEMPIO di uso del ciclo while: SOMMA DEI PRIMI N NUMERI,

#include <stdio.h> /* la uso per poter immettere dati da tastiera e per visualizzare a schermo i risultati*/

#include <stdlib.h> /* mi serve per "implementare la funzione system("pause") */

int somma (int); /* prototipo della funzione*/

int main (){

int n,totale;

printf("Inserisci un numero:\n");

scanf("%d",&n);

/* SOMMA DEI PRIMI N NUMERI */

totale=somma(n); /* richiamo della funzione */

printf("Il risultato e':%d\n", totale);

system("pause"); /* mi consente di bloccare a video tutto il programma*/

}

/* dichiarazione della funzione */

int somma (int a){

int i=1,tot=0; 14

while(i<=a){

tot=tot+i;

i+=1;

}

}

return tot; /* mi restituisce il valore della variabile intera tot*/

}

Cioè fino a che i è minore o al più uguale di a, esegui il comando tot=tot+i ed incrementa i. Quando i risulta

maggiore di a non far nulla. Questo è quello che mi dice il while in questo esercizio.

DO-WHILE:

La sintassi del do-while è la seguente:

do{

comando;

}while(espressione);

In questo costrutto il corpo del ciclo viene eseguito almeno una volta perché il controllo è in coda

(..while(espressione);). NOTA: Malgrado il controllo in coda, l’iterazione è “per vera” come nel caso del

ciclo while.

In questi costrutti, per comando intendiamo un solito comando o un blocco di codice.

Un esempio dell’uso del costrutto SWITCH è il seguente:

#include <stdio.h> /* la uso per poter immettere dati da tastiera e per visualizzare a schermo i risultati*/

#include <stdlib.h> /* mi serve per "implementare la funzione system("pause") */

int main (){

int a,b,i,somma,prod,diff,div;

do{

printf("Inserisci il primo numero:\n");

scanf("%d",&a);

printf("Inserisci il secondo numero:\n");

scanf("%d",&b);

if(a>=b){

printf("Inserisci 1 per sommare i due numeri.\n");

printf("Inserisci 2 per sottrarre i due numeri .\n");

printf("Inserisci 3 per moltiplicare i due numeri.\n");

printf("Inserisci 4 per dividere i due numeri.\n\n");

printf("La mia scelta e':");

scanf("%d",&i);

switch(i){

case 1:

somma=a+b;

printf("\nLa somma dei due numeri e':%d\n\n",somma);

break;

case 2: 15

diff=a-b;

printf("La differenza tra i due numeri e':%d\n\n",diff);

break;

case 3:

prod=a*b;

printf("Il prodotto tra i due numeri e':%d\n\n",prod);

break;

case 4:

div=a/b;

printf("Il rapporto tra i due numeri e':%d\n\n",div);

break;

default:

printf("DEVI INSERIRE UN NUMERO DA 1 a 4\n\n");

}

}

else

printf("Il primo numero deve essere maggiore del secondo\n");

}while(a>=b);

system("pause"); /* mi consente di bloccare a video tutto il programma*/

}

ESERCITAZIONE 18/03/2016

Il debug permette di vedere se e dove ci sono problemi nel programma.

La variabile è un contenitore all’interno del quale posso metterci dei dati e la &(e-commerciale) mi permette

di entrare nell’indirizzo di memoria della variabile.

ESERCIZIO: IL MINIMO TRA DUE NUMERI

#include <stdio.h>

#include <stdlib.h>

int main (){

int numero1,numero2; //dichiarazione primo e secondo numero

printf("INSERISCI IL PRIMO NUMERO:\n");

scanf("%d",&numero1);

printf("INSERISCI IL SECONDO NUMERO:\n");

scanf("%d",&numero2);

// confronto tra i due numeri

if(numero1<numero2){

printf("il minimo e':%d\n",numero1);

}

else if(numero2<numero1){

printf("il minimo e' %d\n",numero2);

}

else if(numero1==numero2){

printf("i due numeri sono uguali");

}

system("pause");

return 0;

}

LEZIONE 8 - 21/03/2016

CICLO FOR 16

Sappiamo in questo caso quante volte eseguire l’operazione, quante iterazione vogliamo. Il costrutto è il

seguente:

for(condizionale iniziale; condizione di uscita; condizione che va a modificare il parametro su cui stiamo

facendo il controllo){

comando;

}

Esempio:

for(i=0;i<=9;i++){

comando;

}

i=0 è un’assegnazione, mentre i++ vuol dire i=i+1(si utilizza prima il valore di i e poi si incrementa). ++i

significa prima incrementa e poi usa la variabile.

BREAK-CONTINUE:

Il break non fa altro che uscire da un loop o da uno switch, il continue invece salta un’iterazione del

loop. Si possono trovare in costrutti quali while, do-while e for.

Per questi costrutti:

- all’interno del comando può comparire l’istruzione BREAK che, se eseguita, termina il ciclo;

- può comparire la keyword CONTINUE che, una volta invocata, riavvia immediatamente un nuovo

ciclo.

Consideriamo un ciclo for:

for(inizio;condizione;passo){

comando;

}

Con un while avrei:

inizio;

while(condizione){

comando;

passo;

}

Per lo switch invece:

switch(espressione){

case v1: comando1;

break;

case v2: comando2;

break;

case v3: comando3;

break;

default: comandod;

break;

}

Con un if avrei:

int tmp=espressione;

if(tmp==v1)

comando1; 17

else if(tmp==v2)

comando2;

else if(tmp==v3)

comando3;

else comandod;

per raggruppare le condizioni è possibile usare l’operatore && che rappresenta una AND: le condizioni

devono essere verificate entrambe.

ESERCIZIO:

- Calcolare la circonferenza sapendo che l’utente deve inserire il valore del raggio da tastiera. Il

calcolo deve essere effettuato solo tra 0 e 32767. Qualora l’utente metta un numero sbagliato:

dobbiamo dire che l’utente ha sbagliato e fargli reinserire un altro valore.

POSSIBILE SOLUZIONE:

#include <stdio.h>

#include <stdlib.h>

int main (){

int raggio;

float circ;

do{ printf("Inserisci un raggio compreso tra 0 e 32767:\n");

scanf("%d",&raggio);

if(raggio>=0 && raggio<=32767){

circ=2*raggio*3.14;

printf("Il valore della circonferenza e' pari a

%f\n\n",circ);

}

else printf("Valore del raggio ERRATO!\n\n");

}while(raggio<0 || raggio>32767);

system("pause");

return 0;

}

- Progettare una calcolatrice in cui il divisore deve essere diverso da 0. Se non è diverso da zero dirlo

e far inserire un nuovo valore

POSSIBILE SOLUZIONE:

#include <stdio.h> /* la uso per poter immettere dati da tastiera e per

visualizzare a schermo i risultati*/

#include <stdlib.h> /* mi serve per "implementare la funzione system("pause")

*/

int main (){

int a,b,i,somma,prod,diff,div;

do{ printf("Inserisci il primo numero:\n");

scanf("%d",&a);

printf("Inserisci il secondo numero:\n");

scanf("%d",&b); 18

if(a>=b){

printf("Inserisci 1 per sommare i due numeri.\n");

printf("Inserisci 2 per sottrarre i due numeri .\n");

printf("Inserisci 3 per moltiplicare i due numeri.\n");

printf("Inserisci 4 per dividere i due numeri.\n\n");

printf("La mia scelta e':");

scanf("%d",&i);

switch(i){

case 1:

somma=a+b;

printf("\nLa somma dei due numeri e':%d\n\n",somma);

break;

case 2:

diff=a-b;

printf("La differenza tra i due numeri e':%d\n\n",diff);

break;

case 3:

prod=a*b;

printf("Il prodotto tra i due numeri e':%d\n\n",prod);

break;

case 4:

if(b!=0){

div=a/b;

printf("Il rapporto tra i due numeri e':%d\n\n",div);

}

else {

printf("inserisci il divisore:\n");

scanf("%d",&b);

div=a/b;

printf("Il rapporto tra i due numeri e':

%d\n\n",div); }

break;

default:

printf("DEVI INSERIRE UN NUMERO DA 1 a 4\n\n");

}

}

else

printf("Il primo numero deve essere maggiore del

secondo\n"); }while(a>=b);

system("pause"); /* mi consente di bloccare a video tutto il programma*/

return 0;

}

- Algoritmo per il calcolo dei numeri primi. Cioè dato un numero vedere se è primo o meno.

POSSIBILE

Dettagli
A.A. 2015-2016
31 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher massimiliano.avagliano1 di informazioni apprese con la frequenza delle lezioni di Fondamenti di infomratica e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Salerno o del prof Colace Francesco.