Caratteri e stringhe
|
|
|
- Sebastiano Casini
- 9 anni fa
- Visualizzazioni
Transcript
1 Caratteri e stringhe
2 Il tipo char Variabili char Input/output di char Operazioni sui char Esercizio Quadrati di lettere 2
3 Il tipo char
4 Variabili char I caratteri in C si memorizzano in variabili di tipo char char lettera ; Le costanti di tipo char si indicano ponendo il simbolo corrispondente tra singoli apici lettera = 'Q' ; 4
5 Apici Non confondere i 3 tipi di apici presenti sulla tastiera: Apice singolo (apostrofo) Apice doppio (virgolette) Apice rovesciato (accento grave) ' " ` In C, delimita singoli caratteri In C, delimita stringhe di caratteri Non utilizzato in C 5
6 Dualità dei char Sintatticamente, i char non sono altro che degli int di piccola dimensione Ogni operazione possibile su un int, è anche possibile su un char Ovviamente solo alcune di tali operazioni avranno senso sull interpretazione testuale (ASCII) del valore numerico 6
7 Esempi int i ; char c ; c = 'A' ; 7
8 Esempi int i ; char c ; c = 'A' ; c = 65 ; /* equivalente! */ 8
9 Esempi int i ; char c ; c = 'A' ; c = 65 ; /* equivalente! */ i = c ; /* i sarà 65 */ 9
10 Esempi int i ; char c ; c = 'A' ; c = 65 ; /* equivalente! */ i = c ; /* i sarà 65 */ c = c + 1 ; /* c sarà 66 = 'B' */ 10
11 Esempi int i ; char c ; c = 'A' ; c = 65 ; /* equivalente! */ i = c ; /* i sarà 65 */ c = c + 1 ; /* c sarà 66 = 'B' */ c = c * 2 ; /* non ha senso... */ 11
12 Esempi int i ; char c ; c = 'A' ; c = 65 ; /* equivalente! */ i = c ; /* i sarà 65 */ c = c + 1 ; /* c sarà 66 = 'B' */ c = c * 2 ; /* non ha senso... */ if (c == 'Z')... 12
13 Esempi int i ; char c ; c = 'A' ; c = 65 ; /* equivalente! */ i = c ; /* i sarà 65 */ c = c + 1 ; /* c sarà 66 = 'B' */ c = c * 2 ; /* non ha senso... */ if (c == 'Z')... for( c='a'; c<='z'; c++)... 13
14 Caratteri speciali Per alcuni caratteri di controllo il linguaggio C definisce una particolare sequenza di escape per poterli rappresentare C '\n' '\t' '\b' '\a' '\r' ASCII LF 10 TAB 9 BS 8 BEL 7 CR 13 Significato A capo Tabulazione Backspace cancella ultimo car. Emette un bip Torna alla prima colonna 14
15 Punteggiatura speciale in C Alcuni caratteri hanno un significato particolare dentro gli apici. Per poterli inserire come carattere esistono apposite sequenze di escape C ASCII Significato '\\' \ Immette un backslash '\'' ' Immette un apice singolo '\"' " Immette un apice doppio '\ooo' ooo Immette in carattere ASCII con codice (ottale) ooo '\xhh' hh Immette in carattere ASCII con codice (esadecimale) hh 15
16 Il tipo char
17 Input/output di char Esistono due insiemi di funzioni che permettono di leggere e stampare variabili di tipo char: Le funzioni printf/scanf, usando lo specificatore di formato "%c" Le funzioni putchar e getchar In entrambi i casi è sufficiente includere la libreria <stdio.h> È possibile mescolare liberamente le due famiglie di funzioni 17
18 Stampa di caratteri char ch ; printf("%c", ch) ; char ch ; putchar(ch) ; 18
19 Lettura di caratteri char ch ; scanf("%c", &ch) ; char ch ; ch = getchar() ; 19
20 Suggerimenti (1/2) La funzione printf è più comoda quando occorre stampare altri caratteri insieme a quello desiderato printf("la risposta e': %c\n", ch) ; printf("codice: %c%d\n", ch, num ) ; La funzione putchar è più comoda quando occorre stampare semplicemente il carattere for(ch='a'; ch<='z'; ch++) putchar(ch) ; 20
21 Suggerimenti (2/2) La funzione getchar è generalmente più comoda in tutti i casi printf("vuoi continuare (s/n)? "); ch = getchar() ; 21
22 Bufferizzazione dell input-output Tutte le funzioni della libreria <stdio.h> gestiscono l input-output in modo bufferizzato Per maggior efficienza, i caratteri non vengono trasferiti immediatamente dal programma al terminale (o viceversa), ma solo a gruppi È quindi possibile che dopo una putchar, il carattere non compaia immediatamente sullo schermo Analogamente, la getchar non restituisce il carattere finché l utente non preme invio 22
23 Conseguenza pratica char ch,ch2 ; printf("dato: "); Dato: _ ch = getchar() ; ch2 = getchar() ; Il programma stampa l invito ad inserire un dato 23
24 Conseguenza pratica char ch,ch2 ; printf("dato: "); Dato: _ ch = getchar() ; ch2 = getchar() ; getchar blocca il programma in attesa del dato 24
25 Conseguenza pratica char ch,ch2 ; printf("dato: "); Dato: a_ ch = getchar() ; ch2 = getchar() ; L utente immette 'a', il programma non lo riceve 25
26 Conseguenza pratica char ch,ch2 ; printf("dato: "); ch = getchar() ; Dato: a _ ch2 = getchar() ; L utente immette Invio, il programma prosegue 26
27 Conseguenza pratica char ch,ch2 ; printf("dato: "); ch = getchar() ; Dato: a _ ch2 = getchar() ; Ora ch='a', il programma fa un altra getchar() 27
28 Conseguenza pratica char ch,ch2 ; printf("dato: "); ch = getchar() ; Dato: a _ ch2 = getchar() ; Il programma non si blocca in attesa dell utente 28
29 Conseguenza pratica char ch,ch2 ; printf("dato: "); ch = getchar() ; Dato: a _ ch2 = getchar() ; C era già un carattere pronto: Invio! ch2='\n' 29
30 Consigli pratici Ricordare che l utente deve sempre premere Invio, anche se il programma richiede un singolo carattere Ricordare che, se l utente inserisce più di un carattere, questi verranno restituiti uno ad uno nelle getchar successive Ricordare che l Invio viene letto come tutti gli altri caratteri 30
31 Soluzione proposta char ch, temp ; printf("dato: "); ch = getchar() ; /* leggi il dato */ /* elimina eventuali caratteri successivi ed il \n che sicuramente ci sarà */ do { temp = getchar() ; } while (temp!= '\n') ; 31
32 Soluzione proposta char ch, temp ; printf("dato: "); ch = getchar() ; /* leggi il dato */ /* forma più compatta */ /* elimina eventuali while caratteri ( getchar()!='\n' successivi ) ed il \n che sicuramente /*niente*/ ci sarà ;*/ do { temp = getchar() ; } while (temp!= '\n') ; 32
33 Il tipo char
34 Operazioni sui char Le operazioni lecite sui char derivano direttamente dalla combinazione tra Le operazioni permesse sugli int La disposizione dei caratteri nella tabella ASCII Le convenzioni lessicali della nostra lingua scritta 34
35 Conversione ASCII-Carattere Una variabile di tipo char è allo stesso tempo Il valore numerico del codice ASCII del carattere printf("%d", ch) ; i = ch ; ch = j ; ch = 48 ; Il simbolo corrispondente al carattere ASCII printf("%c", ch) ; putchar(ch) ; ch = 'Z' ; ch = '4' ; 35
36 Esempio (1/3) int i ; char ch ; char-int.c printf("immetti codice ASCII (32-126): "); scanf("%d", &i) ; ch = i ; printf("il carattere %c ha codice %d\n", ch, i) ; 36
37 Esempio (2/3) printf("immetti un carattere: ") ; ch = getchar() ; char-int.c while( getchar()!= '\n' ) /**/ ; i = ch ; printf("il carattere %c ha codice %d\n", ch, i) ; 37
38 Esempio (3/3) char-int.c Immetti un codice ASCII (32-126): 44 Il carattere, ha codice ASCII 44 Immetti un carattere: $ Il carattere $ ha codice ASCII 36 38
39 Scansione dell alfabeto È possibile generare tutte le lettere dell alfabeto, in ordine, grazie al fatto che nella tabella ASCII esse compaiono consecutive e ordinate char ch ; for( ch = 'A' ; ch <= 'Z' ; ch++ ) putchar(ch) ; putchar('\n') ; 39
40 Verifica se è una lettera Per sapere se un carattere è alfabetico, è sufficiente verificare se cade nell intervallo delle lettere (maiuscole o minuscole) if( ch>='a' && ch<='z' ) printf("%c lettera maiuscola\n", ch) ; if( ch>='a' && ch<='z' ) printf("%c lettera minuscola\n", ch) ; if( (ch>='a' && ch<='z') (ch>='a' && ch<='z') ) printf("%c lettera\n", ch) ; 40
41 Verifica se è una cifra Per sapere se un carattere è numerico ('0'-'9'), è sufficiente verificare se cade nell intervallo delle cifre if( ch>='0' && ch<='9' ) printf("%c cifra numerica\n", ch) ; 41
42 Valore di una cifra Conoscere il valore decimale di un carattere numerico ('0'-'9'), è sufficiente calcolare la distanza dalla cifra '0' if( ch>='0' && ch<='9' ) { printf("%c cifra numerica\n", ch) ; val = ch - '0' ; printf("il suo valore e': %d", val ) ; } 42
43 Da minuscolo a maiuscolo (1/2) I codici ASCII delle lettere maiuscole e delle minuscole differiscono solamente per una costante: 'A' = 'Z' = 90 'a' = 'z' = 122 Se ch è una lettera minuscola ch - 'a' è la sua posizione nell alfabeto ( ch - 'a' ) + 'A' è la corrispondente lettera maiuscola 43
44 Da minuscolo a maiuscolo (2/2) Possiamo interpretare la conversione come una traslazione della quantità ( 'A'-'a' ) if( ch>='a' && ch<='z' ) { printf("%c lettera minuscola\n", ch) ; ch2 = ch + ('A'-'a') ; printf(la maiuscola e': %c\n", ch2) ; } 44
45 Confronto alfabetico Se due caratteri sono entrambi maiuscoli (o entrambi minuscoli) è sufficiente confrontare i rispettivi codici ASCII if( ch < ch2 ) printf("%c viene prima di %c", ch, ch2) ; else printf("%c viene prima di %c", ch2, ch) ; 45
46 Il tipo char
47 Esercizio Quadrati di lettere Si scriva un programma in linguaggio C che stampi su video una serie di quadrati, composti dalle successive lettere dell alfabeto, di dimensioni sempre crescenti: Un quadrato 1x1 di lettere A Un quadrato 2x2 di lettere B Un quadrato 3x3 di lettere C...eccetera 47
48 Analisi Quanti quadrati vuoi stampare? 4 A BB BB CCC CCC CCC DDDD DDDD DDDD DDDD 48
49 Soluzione (1/2) int i, N ; int riga, col ; char ch ; quadrati.c printf("quanti quadrati? ") ; scanf("%d", &N) ; while(n<1 N>26) { printf("deve essere tra 1 e 26\n"); printf("quanti quadrati? ") ; scanf("%d", &N) ; } 49
50 Soluzione (2/2) for( i=0; i<n; i++ ) { /* stampa un quadrato di dimensione (i+1) */ quadrati.c } ch = i + 'A' ; for(riga=0; riga<i+1; riga++) { for(col=0; col<i+1; col++) putchar(ch); putchar('\n') ; } putchar('\n') ; 50
Esercitazione 4. Comandi iterativi for, while, do-while
Esercitazione 4 Comandi iterativi for, while, do-while Comando for for (istr1; cond; istr2) istr3; Le istruzioni vengono eseguite nel seguente ordine: 1) esegui istr1 2) se cond è vera vai al passo 3 altrimenti
Alfabeto ed elementi lessicali del linguaggio C
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Alfabeto ed elementi lessicali del linguaggio C Pietro Di Lena - [email protected] s t a t i c s h o r t l e g s ; i n
Stringhe di caratteri
Linguaggio C Stringhe di caratteri 1 Variabili e costanti stringa! Una stringa letterale è una sequenza di caratteri racchiusa tra doppi apici! Può essere scritta su più righe utilizzando il backslash
Iterazione determinata e indeterminata
Iterazione determinata e indeterminata Le istruzioni iterative permettono di ripetere determinate azioni più volte: un numero di volte fissato = iterazione determinata Esempio: fai un giro del parco di
Corso sul linguaggio C
Corso sul linguaggio C Modulo 1 1.1 Istruzioni semplici 1 Prerequisiti Saper progettare algoritmi Saper descrivere algoritmi (NLS, ddf) Conoscere il concetto di espressione 2 1 Introduzione In questa lezione
La programmazione nel linguaggio C
3 La programmazione nel linguaggio C 3.0 La programmazione nel linguaggio C c Diego Calvanese Fondamenti di Informatica Corso di Laurea in Ingegneria Elettronica A.A. 2001/2002 3.0 0 Introduzione ai programmi
Lettura da tastiera e scrittura su monitor
Lettura da tastiera e scrittura su monitor Per poter leggere UN SINGOLO CARATTERE dalla tastiera e visualizzare UN SINGOLO CARATTERE sul monitor si possono utilizzare le funzioni: int getchar (void) (per
Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica
Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica Dipartimento di Elettronica, Informazione e Bioingegneria Informatica B Sezione D Franchi Alessio Mauro,
Input/Output di numeri
Input/Output di numeri I/O di numeri Per utilizzare le funzioni di I/O occorre include il file di intestazione (o file header) stdio.h utilizzando all inizio del sorgente la direttiva #include
SULL USO DEI CARATTERI. char x; si legge con ( %c,&x) e si stampa con ( %c,x) ma anche con ( %d,x) DUE ESEMPI
SULL USO DEI CARATTERI Ricordiamo che: int x; si legge con ( %d,&x) e si stampa con ( %d,x) float x; si legge con ( %f,&x) e si stampa con ( %f,x) double x;si legge con ( %lf,&x) e si stampa con ( %f,x)
Rappresentazione di dati: caratteri. Appunti a cura del prof. Ing. Mario Catalano
Rappresentazione di dati: caratteri Appunti a cura del prof. Ing. Mario Catalano 1 Rappresentazione di caratteri Tipologia di caratteri: alfabeto e interpunzioni: A, B,.., Z, a, b,.., z, ;, :,,.. cifre
Le funzioni, e le istruzioni di input/output
Linguaggio C Le funzioni, e le istruzioni di input/output 1 Funzioni! Sono sottoprogrammi per svolgere un particolare compito! Sequenze di istruzioni (raggruppate tramite le parentesi graffe) alle quali
Variabili e Istruzioni
Exit Menù Variabili e Istruzioni 1 Le Variabili Una VARIABILE è un oggetto identificato da un NOME e da uno STATO, detto CONTENUTO o VALORE. Possiamo immaginarla come una scatola contenuto Pippo 11 nome
ESERCIZI SU IF/WHILE. Esercizio 1) Legge due numeri e controlla se il primo è multiplo del secondo.
ESERCIZI SU IF/WHILE Esercizio 1) Legge due numeri e controlla se il primo è multiplo del secondo. #include void main () int m, n; printf("inserire il primo numero:\n"); scanf ("%d", &m); printf("inserire
Rappresentazione di dati: caratteri di testo. Appunti a cura del prof. Ing. Mario Catalano
Rappresentazione di dati: caratteri di testo Appunti a cura del prof. Ing. Mario Catalano Come si presenta un testo di un documento da un programma di videoscrittura Testo formattato Per migliorare la
Dati testuali. Caratteri e stringhe. Tipi di dato testuali. Dati testuali. Il sistema dei tipi C. Rappresentazione dei testi
Tipi di dato testuali Caratteri Stringhe Caratteri e stringhe 5 Tipi di dato testuali I programmi visti finora erano in grado di elaborare esclusivamente informazioni numeriche Numeri eri (), numeri reali
Informatica A (per gestionali) A.A. 2004/2005. Esercizi C. Strutture di controllo
Informatica A (per gestionali) A.A. 2004/2005 Esercizi C Strutture di controllo 1 Indice 1 Strutture di controllo...3 1.1 Multiplo...3 1.2 Massimo Comun Divisore...3 1.3 Valutazione triangolo...4 1.4 Calcolatrice...5
La gestione dei caratteri in C
in C In C i caratteri sono gestiti mediante variabili di tipo char (interi a 8 bit) Ad ogni carattere corrisponde un codice numerico ASCII (American Standard Code for Information Interchange) Un esempio
Caratteri e stringhe
Caratteri e stringhe Vettori di caratteri Il tipo stringa Terminatore nullo Input/output di stringhe 2 Vettori di caratteri Stringhe in C Nel linguaggio C non è supportato esplicitamente alcun tipo di
Realizzare un programma che legga da input tre numeri interi e stampi a video la loro somma e la media.
Esercizio 1 Realizzare un programma che legga da input tre numeri interi e stampi a video la loro somma e la media. #include Esercizio 1 - Soluzione int main() int num1, num2, num3, somma; float
Caratteri e stringhe. Vettori di caratteri. Il tipo stringa Terminatore nullo Input/output di stringhe Politecnico di Torino 1
Caratteri e stringhe Il tipo stringa Terminatore nullo Input/output di stringhe 2 2006 Politecnico di Torino 1 Stringhe in C Nel linguaggio C non è supportato esplicitamente alcun tipo di dato stringa
I CARATTERI E LE STRINGHE
I CARATTERI E LE STRINGHE IL CODICE ASCII Per memorizzare i simboli grafici corrispondenti ai caratteri bisogna associare un numero intero a ciascuno di essi Il codice ASCII / æski/ (American Standard
Input/output in C e in C++
FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine Input/output in C e in C++ 2001 Pier Luca Montessoro - Davide Pierattoni
LIBRERIE STANDARD in C. LIBRERIE STANDARD in C
LIBRERIE STANDARD in C La libreria standard del C è in realtà un insieme di librerie Per usare una libreria, non occorre inserirla esplicitamente nel progetto: ogni ambiente di sviluppo sa già dove cercarle
La codifica dei caratteri di un testo
La codifica dei caratteri di un testo L obiettivo è quello di comunicare con il calcolatore usando il nostro linguaggio. Dobbiamo rappresentare le lettere dell alfabeto L insieme di simboli comunemente
Tipi di dati scalari (casting e puntatori) Alessandra Giordani Lunedì 10 maggio 2010
Tipi di dati scalari (casting e puntatori) Alessandra Giordani [email protected] Lunedì 10 maggio 2010 http://disi.unitn.it/~agiordani/ I tipi di dati scalari I tipi aritmetici, i tipi enumerativi
Matrici Vettori di stringhe Esercizi risolti
Esercizi risolti 1 Esercizio: Concorso di intelligenza In un concorso di intelligenza, N giudici esprimono il loro giudizio su K candidati. Il giudizio è un valore numerico tra 0 e 5. Si scriva un programma
La formattazione dell input/output in C
CAPITOLO 9 La formattazione dell input/output in C Obiettivi Comprendere i flussi di input e di output. Essere in grado di usare tutte le capacità di formattazione della stampa. Essere in grado di usare
LIBRERIE STANDARD in C
LIBRERIE STANDARD in C La libreria standard del C è in realtà un insieme di librerie Per usare una libreria, non occorre inserirla esplicitamente nel progetto: ogni ambiente di sviluppo sa già dove cercarle
VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.
Excel VBA VBA Visual Basic for Application VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole. 2 Prima di iniziare. Che cos è una variabile?
Alfabeto ed elementi lessicali del linguaggio C
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2015-2016 Alfabeto ed elementi lessicali del linguaggio C Pietro Di Lena - [email protected] s t a t i c s h o r t l e g s ; i n
