• Non ci sono risultati.

Esercizio Esercizio

N/A
N/A
Protected

Academic year: 2021

Condividi "Esercizio Esercizio"

Copied!
17
0
0

Testo completo

(1)

58

Esercizio Esercizio

Scrivere un programma che legge prima tre caratteri e poi li stampa in ordine inverso.

Esempio:

Se leggo CDE stampa:EDC

59

Soluzione Soluzione

#include<stdio.h>

main() {

char x, y, z;

printf("Digita tre caratteri: ");

scanf("%c%c%c", &x, &y, &z);

printf("Hai digitato (ordine inverso): ");

printf("%c%c%c", z, y, x);

}

(2)

60

Esercizio Esercizio

Scrivere un programma che legge prima un carattere e poi stampa il carattere che lo segue e quello che lo precede

Esempio:

Se leggo D stampa: E C

Soluzione Soluzione

#include<stdio.h>

main() {

char x;

printf("Digita un carattere: ");

scanf("%c", &x);

x=x+1;

printf("Il succ = %c\n", x);

x=x-2;

(3)

62

Operatori di incremento e Operatori di incremento e decremento

decremento

63

Operatori di incremento e decremento Operatori di incremento e decremento Operatori unari

++ aggiunge uno -- sottrae uno

x++ equivale a x=x+1

x-- equivale a x=x-1

(4)

64

Operatori di incremento e decremento Operatori di incremento e decremento Operatori

Operatori postfissi postfissi

x++; prima usa x, poi incrementala

Operatori prefissi Operatori prefissi

++x; prima incrementa x, poi usala

Operatori di incremento e decremento Operatori di incremento e decremento

La variabile viene comunque incrementata

Attenzione: quando compaiono in istruzioni meno semplici

x++; //equivale a x=x+1;

++x; //equivale a x=x+1;

y=x++; //equivale a y=x; x=x+1;

y=++x; //equivale a x=x+1; y=x;

(5)

66

Operatori di incremento e decremento Operatori di incremento e decremento int n, m=0;

n=m++;

n vale 0 m vale 1

int n, m=0;

n=++m;

n vale 1 m vale 1

int n, m=0;

n=m=m+1; //(n=(m=m+1));

n vale 1 m vale 1

67

Costanti

Costanti

(6)

68

Perché usare costanti?

Perché usare costanti?

 Evitare di scrivere più volte in un programma un'espressione che rappresenta un numero,

per esempio quando è molto complicata, o per garantire che non ci siano difformità tra le varie occorrenze

 Migliorare la leggibilità dei programmi,

per esempio usare sempre una costante per pigreco

 Riutilizzare i programmi

per esempio un programma che manipola matrici quadrate di dimensione 100 può essere facilmente riutilizzato per le matrici di dimensione 200, se tale dimensione è

rappresentata da una costante

#define

#define Sintassi Sintassi

#define Nome costante

Semantica Semantica

Tutte le occorrenze di Nome (purché non siano racchiuse tra apici e non facciano parte di un’altra stringa) vengono rimpiazzate con costante

(7)

70

Nota Nota

Nomi delle costanti scritti con caratteri maiuscoli (per convenzione)

Dopo alla fine #define non serve il ;

71

Esempio Esempio

#define SIZE 10

int i=SIZE;

Viene tradotto dal preprocessore preprocessore in

int i=10;

(8)

72

La definizione di costante implica che il suo valore non può essere modificato

Costanti Costanti

/* Calcolo area cerchio */

#include <stdio.h>

#define PI_GRECO 3.14 main()

{

float raggio, area;

printf("Dammi raggio: ");

scanf("%f", &raggio);

area = raggio*raggio*PI_GRECO;

printf("Area: %f", area);

}

NOTA

Le direttive non terminano con il ;

Esempio Esempio

#include<stdio.h>

#define SIZE 3 main()

{

int x=SIZE;

int y= SIZE+2;

printf("%d %d", x, y);

Stampa:

3 5

3 3

(9)

74

Esempio Esempio

#include<stdio.h>

#define SIZE 3 main()

{

printf("SIZE");

}

Stampa:

SIZE

Semantica Semantica

Tutte le occorrenze (purché non siano racchiuse tra apicie non facciano parte di un’altra stringa) vengono rimpiazzate con costante

75

Esempio Esempio

#include<stdio.h>

#define SIZE 3 main()

{

int MYSIZE = 2;

int y = MYSIZE;

printf("%d", y);

}

Stampa:

2

SIZE parte di MYSIZE, quindi non si rimpiazza con 3 SIZEparte di MYSIZE, quindi

non si rimpiazza con 3

Semantica Semantica

Tutte le occorrenze (purché non siano racchiuse tra apici e non facciano parte di un’altra stringa) vengono rimpiazzate con costante

(10)

76

Strutture di controllo

Teorema di

Teorema di Bohm Bohm e Jacopini e Jacopini

Tutti i programmi possono essere scritti in termini di tre strutture di controllo:

La sequenza, permette di eseguire le istruzioni secondo l’ordine sequenziale in cui sono scritte

La selezione, permette di scegliere, in base al valore di una condizione, l’esecuzione di quale istruzione eseguire

L’iterazione, permette di eseguire ripetutamente un blocco di istruzioni

(11)

78

Linguaggio naturale Linguaggio naturale

 se...allora...altrimenti....

 qualora...ma ...nel caso in cui...

 ripeti ... fino a quando...

 mentre...

 nel primo caso...., nel secondo caso...,... nell’ennesimo caso...

nei linguaggi di programmazione questi costrutti sintattici vengono chiamati

strutture di controllo strutture di controllo

79

Strutture di controllo del flusso Strutture di controllo del flusso Le strutture di controllo del flusso specificano l’ordine secondo il quale le operazioni devono essere effettuate

 istruzioni decisionali

 istruzioni cicliche

(12)

80

Istruzioni decisionali Istruzioni decisionali 1. if

2. if-else

3. switch

La struttura di selezione singola if

Usata per scegliere tra diverse azioni alternative.

Esempio (Pseudocodice):

Se il voto di uno studente è maggiore o uguale a 18 Stampa “Promosso”

Se la condizione è true, viene eseguita l’istruzione di stampa e il programma prosegue con la prossima istruzione.

Se la condizione è false, l’istruzione di stampa è ignorata e il programma prosegue con la prossima istruzione.

• L’indentazione delle istruzioni migliora la leggibilità del programma

(13)

82

if if

Sintassi Sintassi

if (espressione) istruzione Semantica

Semantica

Valuta espressione

Se l’espressione è vera (cioè assume valore diverso da zero) viene eseguita istruzione

In ogni caso continua eseguendo la prima istruzione successiva alla struttura di controllo

83

if if : diagramma di flusso : diagramma di flusso

I0;

if (E) I1;

I2;

I0

I1

I2 E

vero falso

la struttura introduce due possibili sequenze:

1. la sequenza (se E è vera):

I0 I1 I2

2. la sequenza (se E è falsa):

I0 I2

(14)

84

Esempio Esempio

#include <stdio.h>

main() {

int i;

printf("Dammi un intero: ");

scanf("%d", &i);

if (i<100)

printf("Minore di 100\n");

}

Stampa "Minore di 100" se il

numero letto è minore di 100

Sintassi Sintassi

if (espressione)

istruzione

if if

(15)

86

Operatori relazionali Operatori relazionali

== uguale

!= diverso

< minore

<= minore o uguale

> maggiore

>= maggiore o uguale

Restituiscono 0 quando il risultato è falso, 1 quando il risultato è vero

87

Attenzione Attenzione

== diverso da =

uguaglianza

assegnamento

(16)

88

blocco

#include <stdio.h>

main() {

int i;

int min_100=0;

printf("Dammi un intero: ");

scanf("%d", &i);

if (i<100) {

printf("Minore di 100\n");

min_100=1;

} }

if if + istruzione composta + istruzione composta

Esercizio Esercizio

Scrivere un programma che richieda in ingresso un valore intero e stampa il suo valore assoluto.

Valore assoluto di un numero n:

Se n < 0: -n Se n >= 0: n Esempio

Esempio

(17)

90

Soluzione Soluzione

#include<stdio.h>

main() {

int n;

printf("Dammi un intero: ");

scanf("%d", &n);

if (n<0) n=-n;

printf("Risultato: %d", n);

}

Riferimenti

Documenti correlati

(2c) Quanti numeri naturali di cinque cifre, aventi almeno tre cifre uguali, si pos- sono costruire utilizzando le cifre appartenenti a X..

Si enunci e si dimostri il Teorema di esistenza e unicit`a del massimo comun divisore e del minimo comune multiplo di due interi non

Si terr` a conto non solo della correttezza dei risultati, ma anche della completezza e chiarezza delle spiegazioni..

 Limitazione ovvero ridurre il trattamento dei dati personali (art. 20) ovvero ricevere in un formato strutturato, di uso comune e leggibile da dispositivo automatico, i

dinamica dell’esercizio 3 con il salto di corda immediato e alternando indice e medio della mano destra eseguiamo il seguente spartito, in cui per ogni battuta suoniamo una

In caso contrario avremmo infatti sostituito la terza riga con un multiplo della seconda ottenendo perci` o un sistema non pi` u equivalente.. Potremmo quindi procedere per

Nota: Data la numerosit` a degli esercizi tratti dall’Eserciziario di Claretta Carrara presenti in questo foglio, rimandiamo all’Eserciziario stesso per le soluzioni di

• Si scriva un programma in linguaggio C che acquisisca da tastiera una parola (cioè una stringa di caratteri priva di separatori) e la stampi a video se e solo se tale parola