• Non ci sono risultati.

Tipo carattere Tipo carattere

N/A
N/A
Protected

Academic year: 2021

Condividi "Tipo carattere Tipo carattere"

Copied!
27
0
0

Testo completo

(1)

42

Tipo carattere Tipo carattere

Finora abbiamo lavorato con valori numerici.

I numeri costituiscono molta parte del lavoro dei computer, ma non tutta. I computer sono macchine per il trattamento dell’informazionee l’informazione è costituita per la maggior parte da testi, che a loro volta sono composti da caratteri

Campo di variabilità Campo di variabilità

Intervallo finito

char TipoTipo

1

Dimensione Dimensione

(byte) (byte)

(2)

44

Codifiche binarie Codifiche binarie

Ogni carattere è rappresentato da uno specifico codice binario:

ad ogni carattere corrisponde una rappresentazione numerica univoca

Le codifiche binarie più diffuse nel mondo informatico sono:

™ Codifica ASCII

(American Standard Code for Information Interchange)

™ Codifica EBCDIC

(Extended Binary Coded Decimal Interchange Code)

Codice ASCII Codice ASCII

Rappresenta 128 simboli diversi (codice di 7 bit ):

lettere dell’alfabeto, cifre, segni di punteggiatura e altri simboli

(3)

46

Codice ASCII (

Codice ASCII (cont cont.) .)

'A' è maggiore di ';' che è maggiore di '&' Si ha che: a<b<c<...<z

A<B<C<....<Z 0<1<2<...<9

1111011 123

{

1100001 97

a

0100110 38

&

0110011 51

3

0111011 59

;

1000001 65

A

66 Decimale Decimale

1000010 B

Binario Binario Carattere

Carattere

Metodi di input/output Metodi di input/output

char x;

Output Output

printf("%c", x);

Input Input

(4)

48

approfondimento approfondimento

In C il tipo char è un tipo intero su 1 byte utilizzato principalmente per rappresentare caratteri

#include<stdio.h>

main() {

char x=65;

printf("%c", x); // stampa A printf("%d", x); // stampa 65 x='A';

x=x+1;

printf("%c", x); // stampa B }

Esercizi Esercizi

… sul tipo carattere

(5)

50

Esercizio Esercizio

Scrivere un programma che legge prima due caratteri e poi li stampa per due volte in ordine inverso.

Esempio:

ab

Î

baba

Soluzione Soluzione

#include<stdio.h>

main() {

char x, y;

printf("Digita due caratteri: ");

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

printf("Hai digitato per 2 volte (ordine

(6)

52

Esercizio Esercizio

Scrivere un programma che legge prima un carattere e poi stampa i due caratteri che lo lo precedono

Esempio:

Se leggo

d

stampa:

cb

Soluzione Soluzione

#include<stdio.h>

main() {

char x;

printf("Digita un carattere: ");

scanf("%c", &x);

x=x-1;

printf("%c", x);

x=x-1;

printf("%c", x);

(7)

54

Altri esercizi … Altri esercizi …

Esercizio Esercizio

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

Esempio:

Se leggo CDE stampa:EDC

(8)

56

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);

}

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

(9)

58

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;

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

}

Operatori di incremento e Operatori di incremento e decremento

decremento

(10)

60

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

Operatori di incremento e decremento Operatori di incremento e decremento

Operatori

Operatori postfissipostfissi

x++;

prima usa x, poi incrementala

Operatori prefissi Operatori prefissi

++x;

prima incrementa x, poi usala

(11)

62

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;

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;

(12)

64

Costanti Costanti

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 è

(13)

66

#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

Nota Nota

Nomi delle costanti scritti con caratteri maiuscoli (per convenzione)

Dopo alla fine #define non serve il ;

(14)

68

Esempio Esempio

#define SIZE 10

int i=SIZE;

Viene tradotto dal preprocessore preprocessore in int i=10;

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 ;

(15)

70

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

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

(16)

72

Esempio Esempio

#include<stdio.h>

#define SIZE 3 main()

{

int MYSIZE = 2;

int y = MYSIZE;

printf("%d", y);

}

Stampa:

2

SIZEparte di MYSIZE, quindi non si rimpiazza con 3 SIZE parte 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

Strutture di controllo

(17)

74

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

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

(18)

76

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

Istruzioni decisionali Istruzioni decisionali

1. if

2. if-else

3. switch

(19)

78

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 Esempio (Codice C corrispondente allo pseudocodice):

if ( voto >= 18 )

printf( “Promosso\n" );

if if

Sintassi Sintassi

if (espressione) istruzione

Semantica Semantica

Valuta espressione

(20)

80

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

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

(21)

82

Sintassi

Sintassi

if (espressione) istruzione

if if

Operatori relazionali Operatori relazionali

== uguale

!= diverso

< minore

<= minore o uguale

> maggiore

>= maggiore o uguale

(22)

84

Attenzione Attenzione

==

diverso da

=

uguaglianza

assegnamento

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

(23)

86

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

9 9 ÎÎ 99 --27 27 ÎÎ 2727

Soluzione Soluzione

#include<stdio.h>

main() {

int n;

printf("Dammi un intero: ");

scanf("%d", &n);

if (n<0)

(24)

88

Istruzioni decisionali Istruzioni decisionali

1. if

2. if-else

3. switch

if- if - else else

Sintassi

Sintassi

if (espressione) istruzione_1 else

istruzione_2

(25)

90

if- if - else else : semantica : semantica

Viene valutata espressione

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

istruzione_1

Se l’ espressione è falsa (cioè assume valore nullo) viene eseguita istruzione_2

if- if - else else : diagramma di flusso : diagramma di flusso

I0;

if (E) I1;

else I2;

I3;

I0

I2 vero E falso

I1

la struttura introduce due possibili sequenze:

1. la sequenza (se E è vera):

(26)

92

Esempio Esempio

/* Utilizzo if-else */

#include <stdio.h>

main() {

int i;

printf("Dammi un intero: ");

scanf("%d", &i);

if (i<100)

printf("Minore di 100\n");

else

printf("Maggiore o uguale a 100\n");

}

Stampa "Minore di 100"

se il numero letto è minore di 100 Stampa "Maggiore o uguale a 100"

se il numero letto è maggiore o uguale di 100

blocco blocco

if- if - else else + istruzione composta + istruzione composta

#include <stdio.h>

main() {

int i;

int mag_100=0;

int min_100=0;

printf("Dammi un intero: ");

scanf("%d", &i);

if (i<100) {

printf("Minore di 100\n");

min_100=1;

} else {

printf("Maggiore o uguale a 100\n");

mag_100=1;

(27)

94

; errore

Osservazione Osservazione

#include<stdio.h>

main() {int x;

scanf("%d", &x);

if (x==0) {

printf("pippo "); printf("pluto ");

}

else printf("minnie");

}

Riferimenti

Documenti correlati

2 Il/la sottoscritto/a, consapevole delle responsabilità e delle sanzioni penali stabilite dalla legge per false attestazioni e mendaci dichiarazioni (art. 445 e ss.mm.ii.)

ANNO SCOLASTICO 2018/2019 ANNO SCOLASTICO 2019/2020 Fondo certificato Fondo impegnato Fondo Totale 1 Totale poste di. 1 Inserire il totale delle voci al

b) nel caso di recupero di edifici con originaria funzione diversa da quella abitativa, la realizzazione di nuovi manufatti funzionali all'esercizio dell'attività agricola e di

- Valutazione formale svolta dall’Agenzia nazionale per verificare il rispetto dei criteri di ammissibilità ed esclusione - valutazione qualitativa dei progetti coordinati

Anche a cinque anni dalla laurea si osserva un aumento delle retribuzioni rispetto alla rilevazione dello scorso anno: +4,3% per i laureati di primo livello e +4,0% per quelli

E infine, ancora a dimostrazione dell’autenticità della proposta di Rodari di far squadra con bambini e ragazzi e di dare significato profondo alla parola, viene riportata una

Scuola Primaria Galilei.. Ministero dell’ Istruzione, dell’ Università e della Ricerca Pubblica Istruzione.. ISTITUTO COMPRENSIVO

(prima sostituito da art. La ricerca e la raccolta dei tartufi nelle oasi di protezione della fauna selvatica, nelle zone di rifugio,nelle zone di ripopolamento e cattura,