Caratteri e stringhe
|
|
|
- Benedetto Valli
- 9 anni fa
- Просмотров:
Транскрипт
1 Caratteri e stringhe
2 Vettori di caratteri Il tipo stringa Terminatore nullo Input/output di stringhe 2
3 Vettori di caratteri
4 Stringhe in C Nel linguaggio C non è supportato esplicitamente alcun tipo di dato stringa Le informazioni di tipo stringa vengono memorizzate ed elaborate ricorrendo a semplici vettori di caratteri char saluto[10] ; B u o n g i o r n o 4
5 Esempio Si realizzi un programma in linguaggio C che acquisisca da tastiera il nome dell utente (una stringa di max 20 caratteri), e stampi a video un saluto per l utente stesso Come ti chiami? Fulvio Buongiorno, Fulvio! 5
6 Soluzione (1/3) const int MAX = 20 ; char nome[max] ; int N ; char ch ; int i ; saluti.c printf("come ti chiami? ") ; N = 0 ; 6
7 Soluzione (2/3) saluti.c ch = getchar() ; while( ch!= '\n' && N<MAX ) { nome[n] = ch ; N++ ; ch = getchar() ; } 7
8 Soluzione (3/3) saluti.c printf("buongiorno, ") ; for(i=0; i<n; i++) putchar( nome[i] ) ; printf("!\n") ; 8
9 Commenti (1/2) Qualsiasi operazione sulle stringhe si può realizzare agendo opportunamente su vettori di caratteri, gestiti con occupazione variabile Così facendo, però vi sono alcuni svantaggi Per ogni vettore di caratteri, occorre definire un opportuna variabile che ne indichi la lunghezza Ogni operazione, anche elementare, richiede l uso di cicli for/while 9
10 Commenti (2/2) Alcune convenzioni ci possono aiutare Gestire in modo standard i vettori di caratteri usati per memorizzare stringhe Apprendere le tecniche solitamente utilizzate per compiere le operazioni più frequenti Molte funzioni di libreria seguono queste convenzioni Conoscere le funzioni di libreria ed utilizzarle per accelerare la scrittura del programma 10
11 Vettori di caratteri
12 Lunghezza di una stringa Vi sono due tecniche per determinare la lunghezza di una stringa 1. utilizzare una variabile intera che memorizzi il numero di caratteri validi char nome[10] ; int lungh_nome ; F u l v i o Z! $. 6 12
13 Lunghezza di una stringa Vi sono due tecniche per determinare la lunghezza di una stringa 1. utilizzare una variabile intera che memorizzi il numero di caratteri validi char nome[10] ; int lungh_nome ; F u l v i o Z! $. 2. utilizzare un carattere speciale, con funzione di terminatore, dopo l ultimo carattere valido char nome[10] ; F u l v i o Ø! $. 6 13
14 Carattere terminatore Il carattere terminatore deve avere le seguenti caratteristiche Fare parte della tabella dei codici ASCII Deve essere rappresentabile in un char Non comparire mai nelle stringhe utilizzate dal programma Non deve confondersi con i caratteri normali Inoltre il vettore di caratteri deve avere una posizione libera in più, per memorizzare il terminatore stesso 14
15 Terminatore standard in C Per convenzione, in C si sceglie che tutte le stringhe siano rappresentate mediante un carattere terminatore Il terminatore corrisponde al carattere di codice ASCII pari a zero nome[6] = 0 ; nome[6] = '\0' ; F u l v i o Ø! $. 15
16 Vantaggi Non è necessaria un ulteriore variabile intera per ciascuna stringa L informazione sulla lunghezza della stringa è interna al vettore stesso Tutte le funzioni della libreria standard C rispettano questa convenzione Si aspettano che la stringa sia terminata Restituiscono sempre stringhe terminate 16
17 Svantaggi Necessario 1 byte in più Per una stringa di N caratteri, serve un vettore di N+1 elementi Necessario ricordare di aggiungere sempre il terminatore Impossibile rappresentare stringhe contenenti il carattere ASCII 0 17
18 Esempio Si realizzi un programma in linguaggio C che acquisisca da tastiera il nome dell utente (una stringa di max 20 caratteri), e stampi a video un saluto per l utente stesso Come ti chiami? Fulvio Buongiorno, Fulvio! 18
19 Soluzione (1/3) saluti0.c const int MAX = 20 ; char nome[max+1] ; char ch ; int i ; printf("come ti chiami? ") ; i = 0 ; 19
20 Soluzione (2/3) i = 0 ; ch = getchar() ; saluti0.c while( ch!= '\n' && i<max ) { nome[i] = ch ; i++ ; ch = getchar() ; } /* aggiunge terminatore nullo */ nome[i] = '\0' ; 20
21 Soluzione (3/3) saluti0.c printf("buongiorno, ") ; for(i=0; nome[i]!='\0'; i++) putchar( nome[i] ) ; printf("!\n") ; 21
22 Vettori di caratteri
23 I/O di stringhe Diamo per scontato di utilizzare la convenzione del terminatore nullo Si possono utilizzare Funzioni di lettura e scrittura carattere per carattere Come nell esercizio precedente Funzioni di lettura e scrittura di stringhe intere scanf e printf gets e puts 23
24 Lettura di stringhe con scanf Utilizzare la funzione scanf con lo specificatore di formato "%s" La variabile da leggere deve essere il nome di un vettore di caratteri Non utilizzare le parentesi quadre Non utilizzare la & Legge ciò che viene immesso da tastiera, fino al primo spazio o fine linea (esclusi) Non adatta a leggere nomi composti (es. "Pier Paolo") 24
25 Esempio const int MAX = 20 ; char nome[max+1] ; printf("come ti chiami? ") ; scanf("%s", nome) ; 25
26 Lettura di stringhe con gets La funzione gets è pensata appositamente per acquisire una stringa Accetta un parametro, che corrisponde al nome di un vettore di caratteri Non utilizzare le parentesi quadre Legge ciò che viene immesso da tastiera, fino al fine linea (escluso), e compresi eventuali spazi Possibile leggere nomi composti (es. "Pier Paolo") 26
27 Esempio const int MAX = 20 ; char nome[max+1] ; printf("come ti chiami? ") ; gets(nome) ; 27
28 Scrittura di stringhe con printf Utilizzare la funzione printf con lo specificatore di formato "%s" La variabile da stampare deve essere il nome di un vettore di caratteri Non utilizzare le parentesi quadre È possibile combinare la stringa con altre variabili nella stessa istruzione 28
29 Esempio printf("buongiorno, ") ; printf("%s", nome) ; printf("!\n") ; printf("buongiorno, %s!\n", nome) ; 29
30 Scrittura di stringhe con puts La funzione puts è pensata appositamente per stampare una stringa La variabile da stampare deve essere il nome di un vettore di caratteri Non utilizzare le parentesi quadre Va a capo automaticamente Non è possibile stampare altre informazioni sulla stessa riga 30
31 Esempio printf("buongiorno, ") ; puts(nome) ; /* No!! printf("!\n") ; */ 31
32 Conclusione Utilizzare sempre la convenzione del terminatore nullo Ricordare di allocare un elemento in più nei vettori di caratteri Utilizzare quando possibile le funzioni di libreria predefinite In lettura, prediligere gets In scrittura printf è indicata per messaggi composti puts è più semplice se si ha un dato per riga 32
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
Stringhe in C. Emilio Di Giacomo
Stringhe in C Emilio Di Giacomo Stringhe Una stringa è una sequenza finita di caratteri Le stringhe sono un tipo di dati talmente importante e utile che fanno parte di quasi tutti i linguaggi di programmazione
Introduzione alla programmazione in linguaggio C
Introduzione alla programmazione in linguaggio C Il primo programma in C commento Header della libreria Funzione principale Ogni istruzione in C va terminata con un ; Corso di Informatica AA. 2007-2008
Esercizi proposti. Caratteri e stringhe. Esercizio Parola palindroma. Esercizi proposti. Palindromia. Analisi. o t t o. m a d a m
Esercizio Parola palindroma Esercizio Iniziali maiuscole Esercizio Alfabeto farfallino Caratteri e stringhe 2 Esercizio Parola palindroma Sia data una parola inserita da tastiera. Si consideri che la parola
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
Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' a p e \0
STRINGHE: ARRAY DI CARATTERI Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' s a p e \0 0 1 2 3 Un vettore di N caratteri può dunque ospitare stringhe lunghe al più N-1
Caratteri e stringhe. Esercizi proposti. Esercizio Parola palindroma Esercizio Iniziali maiuscole Esercizio Alfabeto farfallino
Caratteri e stringhe Esercizio Parola palindroma Esercizio Iniziali maiuscole Esercizio Alfabeto farfallino 2 2006 Politecnico di Torino 1 Esercizio Parola palindroma Sia data una parola inserita da tastiera.
I tipi strutturati e i record in C++
I tipi strutturati e i record in C++ Docente: Ing. Edoardo Fusella Dipartimento di Ingegneria Elettrica e Tecnologie dell Informazione Via Claudio 21, 4 piano laboratorio SECLAB Università degli Studi
stringhe array monodimensionali char. libreria < string.h>
Le stringhe Le stringhe sono array monodimensionali il cui tipo base è char. Il nucleo del linguaggio non prevede particolari istruzioni per il trattamento delle stringhe che potrebbero essere gestite
I/O da tastiera + Alessandra Giordani Lunedì 2 maggio
I/O da tastiera + costrutti while e if Alessandra Giordani [email protected] Lunedì 2 maggio 2011 http://disi.unitn.it/~agiordani/ Ripasso funzione printf() Usata per stampare il contenuto di una
STRINGHE: ARRAY DI CARATTERI! a p e \0
STRINGHE: ARRAY DI CARATTERI! Una stringa di caratteri in C è un array di caratteri terminato dal carattere '\0' s a p e \0 0 1 2 3 Un vettore di N caratteri può dunque ospitare stringhe lunghe al più
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
Cicli annidati ed Array multidimensionali
Linguaggio C Cicli annidati ed Array multidimensionali Cicli Annidati In C abbiamo 3 tipi di cicli: while(exp) { do { while(exp); for(exp;exp;exp3) { Cicli annidati: un ciclo all interno del corpo di un
Caratteri e stringhe
Caratteri e stringhe Caratteri Dato che un computer può memorizzare esclusivamente sequenze di bit, per memorizzare un carattere (e quindi testi) è necessario stabilire una convenzione che associa a un
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
Esercitazione di Reti degli elaboratori
Esercitazione di Prof.ssa Chiara Petrioli Christian Cardia, Gabriele Saturni Cosa vedremo in questa lezione? Gli Array Gli array multidimensionali Le stringhe I puntatori Esercizi Pagina 1 Gli Array Definizione
Formattazione avanzata. I/O Avanzato e File. Formattazione dell output. Formattazione avanzata. Forma completa degli specificatori
Formattazione avanzata Modificatori di o in output Modificatori di o in input Stream predefiniti I/O Avanzato e File 2 Formattazione dell output Formattazione avanzata L output (su schermo o su file) viene
Formattazione avanzata. Modificatori di formato in output Modificatori di formato in input Stream predefiniti
I/O Avanzato e File Formattazione avanzata Modificatori di formato in output Modificatori di formato in input Stream predefiniti 2 Formattazione avanzata Formattazione dell output L output (su schermo
I files in C. A cura del prof. Ghezzi
I files in C A cura del prof. Ghezzi 1 Perchè i files? Realizzano la persistenza dei dati dati che sopravvivono all esecuzione del programma Sono delle strutture di dati sequenziali 2 Files e S.O. I files
Problema. Vettori e matrici. Vettori. Vettori
e matrici Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione in C Problema Si vuole un programma che chieda 10 numeri dalla tastiera e li visualizzi dall ultimo al primo Soluzione attuale (con le
C: panoramica. Violetta Lonati
C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati
Informatica 1. Corso di Laurea Triennale in Matematica. Gianluca Rossi
Informatica 1 Corso di Laurea Triennale in Matematica Gianluca Rossi [email protected] Dipartimento di Matematica Università di Roma Tor Vergata 11: Stringhe (www.informatica-uno.blogspot.com)
Prof. Pagani Corrado INTRODUZIONE AL LINGUAGGIO C
Prof. Pagani Corrado INTRODUZIONE AL LINGUAGGIO C IL LINGUAGGIO C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede tutti i costrutti di controllo dei linguaggi
Esercitazione 6. Array
Esercitazione 6 Array Arrays Array (o tabella o vettore): è una variabile strutturata in cui è possibile memorizzare un numero fissato di valori tutti dello stesso tipo. Esempio int a[6]; /* dichiarazione
Aggregati di dati eterogenei: il tipo struct. Esercizi risolti
Esercizi risolti 1 Esercizio Si vuole realizzare un tipo utilizzato per informazioni su operazioni di vendita, avente i seguenti campi: codice: numero intero indicante il codice di riferimento dell articolo
Università degli Studi di Cassino Corso di Fondamenti di Informatica Tipi strutturati: Stringhe. Anno Accademico 2010/2011 Francesco Tortorella
Corso di Informatica Tipi strutturati: Stringhe Anno Accademico 2010/2011 Francesco Tortorella Stringhe di caratteri La stringa è il tipo strutturato con cui vengono rappresentati gruppi di caratteri quali
I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore
I puntatori Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore...... L operatore & fornisce l indirizzo di un oggetto: p = &c; assegna a p l indirizzo di c, i.e., p
Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di
ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori Ad esempio: char * stringhe[4]; definisce un vettore di 4 puntatori a carattere
Gestione delle stringhe in C
Gestione delle stringhe in C 1 Generalità Una stringa è un vettore di caratteri il cui ultimo elemento è un carattere terminatore (o di fine stringa), codificato dal carattere di codice 0 e rappresentato
Primo programma in C
Primo programma in C Struttura minima di un file C Applicazioni C in modo console Struttura del programma Commenti Direttive #include Definizione di variabili Corpo del main 2 Struttura minima di un file
