1 MANIPOLAZIONE DI STRINGHE ZERO-TERMINATE
|
|
- Serafino Bianchini
- 7 anni fa
- Visualizzazioni
Transcript
1 1 MANIPOLAZIONE DI STRINGHE ZERO-TERMINATE 1.1 INTRODUZIONE In informatica una stringa è definita come una sequenza di caratteri, usualmente utilizzata per rappresentare informazioni in formato testuale. In C e in C++ non esiste un tipo stringa predefinito (built-in) ma vengono fornite rispettivamente delle funzioni e una classe di libreria per la manipolazione delle stesse. C-Stringhe Una C-stringa (stringa del linguaggio C, ereditata e supportata dal C++) é definita come una sequenza di caratteri terminata dal carattere '\0' (carattere nullo o di terminazione) e contenuta in uno spazio di memoria contiguo. Tale spazio di memoria è riferito attraverso un array ( char text[80] ) o attraverso un puntatore al primo carattere della stringa ( char *s = text ). Il carattere \0 (carattere nullo) indica la terminazione della stringa ed è posto dopo l ultimo carattere significativo della stringa. Si osservi come, per indicare la terminazione della sequenza di caratteri, venga utilizzata la tecnica della sentinella (la sentinella è il carattere \0 ). La libreria standard del C++ definisce delle funzioni per la manipolazione di stringhe \0 (zero) terminate. Stringhe in C++ In C++ la libreria standard del linguaggio definisce la classe string per la rappresentazione e manipolazione di stringhe. L effettiva rappresentazione in memoria della sequenza di caratteri nella classe string dipende dall implementazione della classe, ossia è un dettaglio implementativo nascosto (anche se generalmente noto) agli utilizzatori della classe. Per tale rappresentazione potrebbero essere state utilizzate ad esempio le C-stringhe (sequenze di caratteri \0 terminate) ma in linea di principio nulla vieterebbe una rappresentazione basata su un array di caratteri (non \0 terminato) con associata la lunghezza dell array. Ciò detto, in realtà l implementazione più comune della classe string utilizza le C-stringhe. Operazioni elementari su stringhe In maniera del tutto astratta, ossia indipendentemente dalla rappresentazione di una stringa, le operazioni elementari che ci si aspetta di poter effettuare su stringhe sono le seguenti: inizializzazione di stringhe (un operazione per assegnare alla stringa un valore iniziale) input e output di stringhe (operazioni che permettano la lettura di stringhe da dispositivi di input/output) lunghezza di una stringa (un operazione che restituisca il numero di caratteri che compongono la stringa) test di stringa vuota (un operazione che permetta di stabilire se una stringa è vuota (una stringa vuota è una stringa di lunghezza 0) Laboratorio di Informatica Antonio Monteleone 2
2 concatenazione (un operazione che, date due stringhe, ne restituisca una terza costituita dalla giustapposizione delle due stringhe date) confronto (una o più operazione che permettano di stabilire se due stringhe sono uguali, diverse e, più in generale, stabilire l ordinamento lessicografico tra stringhe) accesso agli elementi di una stringa (una operazione che permetta di accedere ai singoli caratteri della stringa) inserimento di una stringa (un operazione che permetta di inserire una stringa all interno di un altra stringa in una data posizione) estrazione di una sottostringa (un operazione che restituisca la porzione di stringa (sottostringa) a partire da una data posizione e avente una data lunghezza) cancellazione di una sottostringa (un operazione che permetta di cancellare la porzione di stringa (sottostringa) a partire da una data posizione e avente una data lunghezza) sostituzione di una sottostringa (un operazione che permetta di sostituire una porzione di stringa (sottostringa) con un altra stringa) ricerca di una sottostringa (un operazione che cerchi all interno di una stringa una seconda stringa) conversioni da stringhe a valori numerici e viceversa Il modo in cui sono implementate le operazioni elementari su stringhe dipende dalla effettiva rappresentazione delle stringhe come funzioni di libreria in C (ad es. strcpy, strcat, strlen, strstr, strtok,..,) come funzioni membro della classe string di libreria in C C-STRINGHE Una C-stringa (stringa del linguaggio C) è una sequenza di caratteri zero-terminata. Lo zero \0 indica la terminazione della stringa ed è posto dopo l ultimo carattere significativo della stringa. La libreria standard del linguaggio fornisce una serie di funzioni per la manipolazione di stringhe zero-terminate. Tali funzioni sono dichiarate nell header file cstring. Per poter utilizzare tali funzioni nei nostri programmi e dunque necessario includere tale header file nel modo seguente Nelle tabelle seguenti sono riportate le funzioni di maggiore utilità dichiarate nell header file cstring Laboratorio di Informatica Antonio Monteleone 3
3 Copia memcpy memmove strcpy strncpy Concatenazione strcat strncat Confronto memcmp strcoll strcmp strncmp Ricerca memchr strchr strrchr strstr strtok Altre memset strlen Copia un blocco di memoria Muove un blocco di memoria Copia una stringa Copia una sequenza di caratteri da una stringa Concatena due stringhe Appende una sequenza di caratteri da una stringa Confronta due blocchi di memoria Confronta due stringhe usando locale Confronta due stringhe Confronta un numero specificato di caratteri nelle due stringhe Ricerca un carattere in un blocco di memoria Ricerca la prima occorrenza di un carattere in una stringa Ricerca l'ultima occorrenza di un carattere in una stringa Ricerca una sotto-stringa in una stringa Suddivide una stringa in token Riempie un blocco di memoria Restituisce la lunghezza di una stringa Diamo ora degli esempi d uso di alcune delle funzioni di manipolazione di C-stringhe fornite dalla libreria standard del linguaggio La funzione strcpy char * strcpy ( char * destination, const char * source ); Copia la C-stringa puntata da source nell'array puntato da destination, compreso il carattere nullo di terminazione. Per evitare fenomeni di overflow la dimensione dell'array puntato da destination deve essere abbastanza lungo da contenere la stringa puntata da source (compreso il carattere nullo di terminazione) /* strcpy example */ #include <iostream> int main () Laboratorio di Informatica Antonio Monteleone 4
4 char str1[]="sample string"; char str2[40]; char str3[40]; strcpy (str2,str1); strcpy (str3,"copy successful"); std::cout << "str1: " << str1 << std::endl; std::cout << "str2: " << str2 << std::endl; std::cout << "str3: " << str3 << std::endl; Il programma sopra definito produce l output str1: Sample string str2: Sample string str3: copy successful La funzione strstr const char * strstr ( const char * str1, const char * str2 ); char * strstr ( char * str1, const char * str2 ); Tale funzione restituisce un puntatore alla prima occorrenza di str2 in str1 o un puntatore nullo se str2 non fa parte (non è una sottostringa) di str1. Sia str1 che str2 devono essere stringhe zero-terminate. /* strstr example */ #include <iostream> using namespace std; int main () char str[] ="This is a simple string"; char * pch; pch = strstr (str,"simple"); // pch punta al primo carattere di simple in // str strncpy (pch,"sample",5); // copia 5 caratteri della la stringa sample // a partire dalla locazione puntata da pch cout << str << endl; // stampa a video This is a sample string La funzione strcmp int strcmp ( const char * str1, const char * str2 ); Confronta le due C-stringhe (puntate da) str1 e str2 secondo l'ordinamento lessicografico. Essa restituisce un valore intero che indica la relazione fra le due stringhe. Il valore 0 indica che le due stringhe sono uguali Laboratorio di Informatica Antonio Monteleone 5
5 Un valore < 0 indica che str1 precede str2 nell'ordinamento lessicografico (il primo carattere ad essere diverso nelle due stringhe ha un valore minore in str1 che in str2) Un valore > 0 indica che str1 segue str2 nell'ordinamento lessicografico (il primo carattere ad essere diverso nelle due stringhe ha un valore maggiore in str1 che in str2) /* strcmp example */ #include <iostream> using namespace std; int main () char szkey[] = "Giacomo"; char szinput[80]; do cout << "Indovina il mio nome" << endl; cin >> szinput; ; while (strcmp (szkey,szinput)!= 0); cout << "Risposta esatta!" La funzione strtok char * strtok ( char * str, const char * delimiters ); Una sequenza di chiamate a questa funzione suddivide str in una sequenza di token. Un token è definito come una sequenza di caratteri adiacenti separati da uno qualunque dei caratteri specificati in delimeters come delimitatori. Alla prima chiamata a strtok, la funzione si aspetta una C-stringa puntata dall'argomento str. La scansione alla ricerca di un token inizia dal primo carattere di str. Alle chiamate successive la funzione si aspetta un puntatore nullo e usa la locazione subito a destra della fine dell'ultimo token trovato come nuova posizione da cui iniziare la ricerca di un nuovo token. Per stabilire l'inizio e la fine di un token la funzione scandisce la stringa dal primo carattere fino a incontrare un carattere non contenuto in delimeters (che diventa il primo carattere del token). Successivamente scandisce la stringa da tale carattere fino a incontrare un carattere contenuto in delimeters (che diventa la fine del token). La fine del token è automaticamente rimpiazzata dalla funzione con il carattere nullo e l'inizio del token è restituito dalla funzione. Tale funzione restituisce un puntatore alla prima occorrenza di /* strtok example */ #include <iostream> int main () char str[] ="- This, a sample string."; char * pch; Laboratorio di Informatica Antonio Monteleone 6
6 std::cout << "Splitting string << str << into tokens:\n",str); pch = strtok (str,",.-"); while (pch!= NULL) std::cout << pch << std::endl; pch = strtok (NULL, ",.-"); Il programma sopra definito produce l output Splitting string "- This, a sample string." into tokens: This a sample string 1.3 UNA POSSIBILE IMPLEMENTAZIONE DI ALCUNE FUNZIONI DI MANIPOLAZIONE DI STRINGHE ZERO-TERMINATE Assumendo di rappresentare una stringa come una sequenza di caratteri \0 (zero) terminata, illustriamo una possibile implementazione di alcune delle funzioni per la manipolazione delle stringhe. Tali funzioni sono presenti nella libreria standard del linguaggio C e disponibili anche in C++. Le funzioni che prenderemo in considerazione sono le seguenti: lunghezza di una stringa int strlen(const char *str); copia di una stringa char *strcpy(char *destination, const char *source); concatenazione di stringhe char *strcat(char *destination, const char *source); ricerca di una sottostringa const char *strstr(const char *str, const char *strsearch); Poiché le stesse funzioni sono presenti nella libreria standard del linguaggio, dove sono dichiarate nell header <cstring>, per evitare collisioni sui nomi delle funzioni faremo ricorso alla dichiarazione delle stesse all interno di un namespace a cui daremo il nome labinfo namespace labinfo int strlen(const char *sz); char *strcpy(char *destination, const char *source); char *strcat(char *destination, const char *source); const char *strstr(const char *str, const char *strsearch); ; Laboratorio di Informatica Antonio Monteleone 7
7 1.3.1 Lunghezza di una stringa (strlen) int labinfo::strlen(const char *str); Parametri str: stringa zero-terminata. Valore di ritorno Restituisce la lunghezza della stringa passata in input int labinfo::strlen(const char *str) assert(str); int len = 0; if (str) while (*str++!= '\0') ++len; return len; Copia di una stringa (strcpy) char *labinfo::strcpy(char *destination, const char *source); La funzione strcpy copia strsource, compreso il carattere di terminazione, nella locazione specificata da strdestination. Poichè strcpy non verifica che ci sia spazio sufficiente in strdestination prima di copiare strsource, essa è potenzialmente causa di buffer overrun. Parametri strdestination: stringa zero-terminata destinazione strsource: stringa zero-terminata sorgente Valore di ritorno La funzione restituisce la stringa destinazione char *labinfo::strcpy(char *destination, const char *source) assert(destination && source); char *cur = destination; while (*source!= '\0') *cur++ = *source++; *cur = '\0'; return destination; Concatenazione di stringhe (strcat) char *labinfo::strcat(char *destination, const char *source) assert(destination && source); char *cur = destination; while (*cur!= '\0') cur++; Laboratorio di Informatica Antonio Monteleone 8
8 // in uscita dal ciclo cur punta al carattere di terminazione di destination strcpy(cur, source); return destination; Ricerca di una sottostringa (strstr) const char *labinfo::strstr(const char *str, const char *strsearch); Parametri str: stringa zero-terminata. StrSearch: stringa zero-terminata da ricercare Valore di ritorno Restituisce un puntatore alla prima occorrenza di strsearch in str, o il puntatore nullo, ossia 0, se StrSearch non compare in str. Se strsearch punta a una stringa di lunghezza zero (stringa vuota), la funzione restituisce str const char *labinfo::strstr(const char *str, const char *strsearch) assert(str && strsearch); if (*strsearch == '\0') return str; while (*str!= '\0') if (*str == *strsearch) const char *start = str; const char *cur = strsearch; while (*str!= '\0' && *cur!= '\0' && *str == *cur) ++cur; ++str; if (*cur == '\0') // ho esaurito tutta la stringa di ricerca return start; // in questo punto *cur!= '\0' && (str == '\0' *str!= *cur) // ossia // non ho esaurito strsearch e (sono arrivato alla fine di str o ho // trovato un carattere diverso) ++str; Ricerca di una sottostringa 2 (strstr) Diamo un implementazione alternativa di strstr che fa uso di altre funzioni della libreria. In particolare faremo uso di strlen, strchr e strncmp Laboratorio di Informatica Antonio Monteleone 9
9 const char * labinfo::strstr (const char *s1, const char *s2) char *p = s1; int len = strlen(s2); for (; (p = strchr (p, *s2))!= 0; p++) if (strncmp (p, s2, len) == 0) return (p); return (0); Laboratorio di Informatica Antonio Monteleone 10
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
DettagliCorso di Fondamenti di Informatica Tipi strutturati: Stringhe
Corso di Fondamenti di Informatica Tipi strutturati: Stringhe Anno Accademico Francesco Tortorella Stringhe di caratteri La stringa è il tipo strutturato con cui vengono rappresentati gruppi di caratteri
DettagliSTRINGHE: 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ù
DettagliUna 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
Dettaglichar* titolo= Libreria sulle stringhe Esempi: (strcpy) (strstr)... Laboratorio di Informatica L-A 1
char* titolo= l, e,, s, t, r, i, n, g, h, e, \0 ; 1 Libreria sulle stringhe La libreria string.h contiene una ricca serie di funzioni per operare sulle stringhe Esempi: copiare una stringa in un altra
Dettaglis r t i r n i g n. g h s r t c r p c y s r t c r a c t s r t c r m c p s r t c r h c r s r t s r t s r
char* titolo= l, e,, s, t, r, i, n, g, h, e, \0 ; 1 Libreria sulle stringhe La libreria string.h contiene una ricca serie di funzioni per operare sulle stringhe Esempi: copiare una stringa in un altra
Dettaglistring.h strcpy strc strcat strcmp strcmp strchr strstr strstr i t r ; s r \0 int strlen(char* str) char pippo[]={ p, i, p, p, o, \0 \ };
char* titolo= l, e,, s, t, r, i, n, g, h, e, \0 ; Libreria sulle stringhe libreria i string.h contiene una ricca serie di funzioni per operare sulle stringhe Esempi: copiare una stringa in un altra (strcpy
DettagliLinguaggio C: Stringhe Valeria Cardellini
Linguaggio C: Stringhe Valeria Cardellini Corso di Calcolatori Elettronici A.A. 2018/19 Università degli Studi di Roma Tor Vergata Dipartimento di Ingegneria Civile e Ingegneria Informatica Argomenti q
Dettaglichar* titolo= { l, e,, s, t, r, i, n, g, h, e, \0 };
char* titolo= { l, e,, s, t, r, i, n, g, h, e, \0 }; 1 Libreria sulle stringhe libreria string.h contiene una ricca serie di funzioni per operare sulle stringhe Esempi: copiare una stringa in un altra
DettagliStringhe in C. Nicu Sebe. Informatica Nicu Sebe 1 / 14
Stringhe in C Nicu Sebe Informatica Nicu Sebe 1 / 14 Stringhe in C Stringhe: tipo di dato strutturato Sequenze di caratteri Linguaggio C: progettato per la semplicità No supporto nativo per le stringhe
DettagliOperazioni sulle stringhe Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm
DettagliOperazioni sulle stringhe
Corso di Ingegneria Clinica BCLR Domenico Daniele Bloisi Docente Ing. Domenico Daniele Bloisi, PhD Ricercatore Dipartimento di Ingegneria Informatica, Automatica e Gestionale Antonio Ruberti Via Ariosto
DettagliStringhe Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm
DettagliEsercizio 1: funzione con valore di ritorno di tipo puntatore
Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 7 Esercitazione: 14 dicembre 2005 Esercizi su ricorsione, manipolazione stringhe, strutture dinamiche Problema: Esercizio
DettagliStringhe in C. Luca Abeni. Informatica Luca Abeni 1 / 10
Stringhe in C Luca Abeni Informatica Luca Abeni 1 / 10 Stringhe in C Stringhe: tipo di dato strutturato Sequenze di caratteri Linguaggio C: progettato per la semplicità No supporto nativo per le stringhe
DettagliELEMENTI DI INFORMATICA. Linguaggio C
Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica ELEMENTI DI INFORMATICA http://agile.diee.unica.it A.A. 2015/2016 Ing. Marco Ortu Diee, secondo piano Tel. 070-6755774 mail:
DettagliRIPRENDIAMO I PUNTATORI
RIPRENDIAMO I PUNTATORI Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo. int a = 5; a 5 =&a Esistono in C particolari variabili dette
DettagliLezione 8: Stringhe ed array multidimensionali
Lezione 8: Stringhe ed array multidimensionali Vittorio Scarano Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione AVVISO: la lezione di laboratorio di 28/5 non si
DettagliGestione di stringhe. Le stringhe in C/C++
Alessio Bechini - Corso di - Gestione di stringhe Parte del materiale proposto è stato gentilmente fornito da G. Lipari Le stringhe in C/C++ In C e in C++ non esiste un vero e proprio tipo stringa. Una
DettagliStringhe. Unità 8. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER
Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico
DettagliLezione XI Le stringhe
Programmazione e Laboratorio di Programmazione Lezione XI Le stringhe Programmazione e Laboratorio di Programmazione: Le stringhe 1 Premessa: Il tipo char Dimensione: 1 byte Range: da 0 a 255 Definizione:
DettagliLa classe string. Tale classe evita agli utilizzatori tutte le problematiche di allocazione e de-allocazione dei buffer di caratteri
La classe string La libreria standard del del C++ definisce la classe string, dichiarata in , per la rappresentazione e manipolazione di stringhe. Tale classe evita agli utilizzatori tutte le problematiche
DettagliEsercitazione 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
DettagliIntroduzione al C. Unità 8 Stringhe. S. Salza, C. Ciccotelli, D. Bloisi, S. Peluso, A. Pennisi
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 8 Stringhe S. Salza, C. Ciccotelli, D. Bloisi, S. Peluso, A. Pennisi Sommario
DettagliLinguaggio C - Stringhe
ISTITUTO SECONDARIO DI ISTRUZIONE SUPERIORE "Guido Tassinari" di POZZUOLI Informatica Prof. A.S. 2011/2012 Linguaggio C - Stringhe 27/04/2012 Array di caratteri Una stringa è: Un array di caratteri Termina
DettagliIntroduzione al C. Unità 8 Stringhe
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 8 Stringhe D. Bloisi, A. Pennisi, S. Peluso, S. Salza Sommario Unità 8 Array di
Dettaglia.a Codice corso: 21012, 22010
ESERCIZIO 1 Scrivere un sotto-programma in linguaggio C++ che ricevuta una matrice quadrata come parametro restituisca al chiamante un valore booleano indicante se la matrice è simmetrica oppure no. Scrivere
DettagliCaratteri 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
DettagliStringhe. Unità 8. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi
Corso di Ingegneria Clinica BCLR Domenico Daniele Bloisi Docente Ing. Domenico Daniele Bloisi, PhD Ricercatore Dipartimento di Ingegneria Informatica, Automatica e Gestionale Antonio Ruberti Via Ariosto
DettagliCARATTERI E STRINGHE Caratteri e stringhe Funzioni della libreria standard I/O Funzioni della libreria di gestione delle stringhe
CARATTERI E STRINGHE Caratteri e stringhe Funzioni della libreria standard I/O Funzioni della libreria di gestione delle stringhe Caratteri e stringhe Caratteri Sono i blocchi costitutivi di ogni programma:
DettagliStringhe. Prof. Lorenzo Porcelli
Stringhe Prof. Lorenzo Porcelli definizione Una stringa è un vettore di caratteri terminato dal carattere nullo \0. Il carattere nullo finale permette di determinare la lunghezza della stringa. char vet[32];
Dettagli(Def. funzioni con parametri di tipo matrice)
ESERCIZIO 1 (Def. funzioni con parametri di tipo matrice) Scrivere un sotto-programma in linguaggio C++ che ricevuta una matrice quadrata come parametro restituisca al chiamante un valore booleano indicante
DettagliCaratteri 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
DettagliPuntatori e array. Violetta Lonati
Puntatori e array Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati Puntatori e array
DettagliDispensa 13 CORSO DI PROGRAMMAZIONE A.A CORSO DI LAUREA IN INGEGNERIA E SCIENZE INFORMATICHE CESENA. Laboratorio
CORSO DI LAUREA IN INGEGNERIA E SCIENZE INFORMATICHE CESENA CORSO DI PROGRAMMAZIONE A.A. 2014-15 Dispensa 13 Laboratorio Dott. Mirko Ravaioli e-mail: mirko.ravaioli@unibo.it http://www.programmazione.info
DettagliStringhe 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
DettagliLe stringhe. Le stringhe
Informatica: C++ Gerboni Roberta Stringhe di caratteri (esempi di utilizzo dei vettori) Nel linguaggio C++ una stringa è semplicemente un vettore di caratteri Vettori di caratteri La stringa "hello" è
DettagliLe stringhe. Le stringhe sono sequenze di caratteri,
Stringhe Le stringhe Le stringhe sono sequenze di caratteri, in C le stringhe costanti vengono denotate da una successione di caratteri racchiusa fra apici Es: "ciccio" "n = %d" "Ciao Mondo" La rappresentazione
DettagliElementi di Informatica
Corso di Laurea triennale in Ingegneria Chimica in condivisione con Corso di Laurea triennale in Ingegneria Navale e Scienze dei Materiali Elementi di Informatica A.A. 2016/17 prof. Mario Barbareschi Tipi
DettagliIntroduzione al linguaggio C Puntatori
Introduzione al linguaggio C Puntatori Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 19 ottobre 2017
DettagliC: 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
DettagliFondamenti di Informatica Ing. Biomedica
Fondamenti di Informatica Ing. Biomedica Esercitazione n.9 Stringhe & Algoritmi di ordinamento Antonio Arena antonio.arena@ing.unipi.it Stringhe Fondamenti di Informatica - Esercitazione n.9 2 In C++ non
DettagliLe stringhe. Le stringhe sono sequenze di caratteri,
Stringhe Le stringhe Le stringhe sono sequenze di caratteri, in C le stringhe costanti vengono denotate da una successione di caratteri racchiusa fra apici Es: "ciccio" "n = %d" "Ciao Mondo" La rappresentazione
DettagliStrutture dati. Operatori di incremento e decremento. Strutture di dati. Strutture di dati. ++ e -- Esempi. Vettori e matrici.
Operatori di incremento e decremento ++ e -- Esempi y=x++ il contenuto della variabile x viene inizialmente usata per l assegnazione y, e solo dopo incrementata y=--x il contenuto della variabile x viene
DettagliIntroduzione alle stringhe e algoritmi collegati
Introduzione alle stringhe e algoritmi collegati Algoritmicamente August 15, 2009 1 Introduzione 1.1 Introduzione ai caratteri In informatica o più generalmente in una terminologia scientifica, il carattere
DettagliIntroduzione al C. Unità 8 Stringhe. D. Bloisi, S. Peluso, A. Pennisi, S. Salza
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 8 Stringhe D. Bloisi, S. Peluso, A. Pennisi, S. Salza Sommario Unità 8 Array di
DettagliSTRINGHE: ARRAY DI CARATTERI 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ù N-1
DettagliCaratteri e stringhe. Funzioni di libreria
Caratteri e stringhe Introduzione Lunghezza di stringhe Classificazione di caratteri Trasformazione di caratteri Copia e concatenazione Confronto di stringhe Ricerca in stringhe Conversione numero-stringa
DettagliIntroduzione al C. Lezione 4 Allocazione dinamica della memoria. Rossano Venturini. Pagina web del corso
Introduzione al C Lezione 4 Allocazione dinamica della memoria Rossano Venturini rossano@di.unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Lezioni di ripasso
DettagliAritmetica dei. Alessandra Giordani Mercoledì 9 maggio
Aritmetica dei puntatori Alessandra Giordani agiordani@disi.unitn.it Mercoledì 9 maggio 2012 http://disi.unitn.it/~agiordani/ L aritmetica dei puntatori 1 Il C permette l utilizzo degli operatori additivi
DettagliEsempio: Mergesort. void mergesort(int *a, int *b, int l, int r) { int i,j,k,m;
Esempio: Giro del cavallo modificato: La dimensione del lato (e quindi della matrice che rappresenta la scacchiera) viene specificata da input, e la matrice allocata dinamicamente: #include #include
DettagliLaboratorio di programmazione
Laboratorio di programmazione Lezione IX Tatiana Zolo zolo@cs.unipr.it 1 TIPI STRINGA Il C++ fornisce due rappresentazioni: stringa di caratteri stile C e la classe stringa introdotta nel C++ standard.
DettagliPer fare riferimento ad un elemento, specificare il nomedel vettore. numerodi posizione(indice)
Vettore(Array monodimensionale) Sequenza di posizioniconsecutive (o locazioni di memoria) che vengono chiamate elementi del vettore Gli elementi hanno tutti lo stesso nomee sono tutti dell stesso tipo
DettagliIl blocco che costituisce il corpo di una funzione/procedura può contenere dichiarazioni di variabili. Esempio:
Variabili locali Il blocco che costituisce il corpo di una funzione/procedura può contenere dichiarazioni di variabili. void leggivettore(int v[], int dim) int i; /* i E UNA VARIABILE LOCALE */ for (i
DettagliStringhe e allocazione dinamica della memoria
Stringhe e allocazione dinamica della memoria Esercizio Scrivere un programma strings.c che legge da standard input una sequenza di parole separate da uno o più spazi, e stampa le parole lette, una per
DettagliInformatica 1. Corso di Laurea Triennale in Matematica. Gianluca Rossi
Informatica 1 Corso di Laurea Triennale in Matematica Gianluca Rossi gianluca.rossi@uniroma2.it Dipartimento di Matematica Università di Roma Tor Vergata 11: Stringhe (www.informatica-uno.blogspot.com)
DettagliSommario. Tipo stringa: string. Tipo stringa: stile C. Tipo stringa Tipo booleano
Tipo stringa Tipo booleano Sommario Ricorsione: Definizione Chiamata di funzione Ricorsione in coda Ricorsione non in coda Ricorsionei eccessiva Esempio di ricorsione: ricerca binaria Tipo stringa Il C++
DettagliLibrerie Stringhe. Librerie e stringhe. Lezione 9. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A. 2015/2016
e stringhe Lezione 9 Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2015/2016 Calendario delle lezioni Lezione 1 (7 e 9/10/2015) - Introduzione all ambiente Linux Lez. 2 (14 e 16/10/2015)
Dettagli4 GLI ARRAY E LE STRINGHE
13 4 GLI ARRAY E LE STRINGHE 4.1 Gli array monodimensionali Un array è un insieme di variabili dello stesso tipo, cui si fa riferimento mediante uno stesso nome. L accesso ad un determinato elemento si
DettagliTipi strutturati - struct
Fondamenti di Programmazione A Appunti per le lezioni Gianfranco Rossi Tipi strutturati - struct Struttura dati (concreta) struct: sequenza di n elementi (n 0), rispettivamente di tipo t1,,tn (non necessariamente
DettagliCorso di Fondamenti di Informatica. Puntatori e Allocazione Dinamica
Corso di Fondamenti di Informatica Puntatori e Allocazione Dinamica I puntatori (Richiamo) Il C++ prevede puntatori a dati di qualsiasi natura, semplici o strutturati e puntatori a funzione. In particolare
DettagliCorso di Fondamenti di Informatica
Corso di Fondamenti di Informatica Il tipo puntatore; l allocazione dinamica della memoria Claudio De Stefano - Corso di Fondamenti di Informatica 1 puntatori una variabile di tipo puntatore al tipo x
DettagliArgomenti. Array. Stringhe. Merge sort
ARRAY Ivan Lanese Argomenti Array Stringhe Merge sort Array E' una struttura dati che contiene più elementi dello stesso tipo Normalmente su elementi diversi di uno stesso array si fanno operazioni simili
DettagliEsercitazioni di Programmazione II. Chiara Petrioli
Esercitazioni di Programmazione II Chiara Petrioli Ricevimento e info Martedi dalle 13 alle 14.30 Via Salaria 113, terzo piano, stanza 311 Homework: 3-4 ogni due settimane Primo homework da consegnare
DettagliIntroduzione al C++ Parte 2
Introduzione al C++ Parte 2 Sommario Le differenze fra C e C++ il qualificatore const i namespace gli stream Evitare modifiche accidentali Il qualificatore const indica che la variabile non può più essere
DettagliStringhe: vettori di caratteri con terminatore
Stringhe: vettori di caratteri con terminatore L applicazione più comune degli array ad una dimensione è la creazione di stringhe 1. Nel linguaggio C++ tradizionale una stringa viene definita come un array
DettagliC++ funzioni Alberto Ferrari. Alberto Ferrari Programmazione di applicazioni SW
C++ funzioni Alberto Ferrari http://en.cppreference.com FUNZIONI le funzioni caratterizzate da nome, parametri (numero, ordine e tipo) e tipo di ritorno le funzioni hanno un prototipo il prototipo non
DettagliStringhe. Una stringa è una sequenza di caratteri. Esempi: printf( Sum = %d, s); #define ERR_PREFIX ***** Error -
Stringhe dichiarazione e input/output assegnamento e sottostringhe concatenazione confronto array di puntatori a stringhe input/output, analisi e conversione di caratteri conversione da stringa a numero
DettagliProgrammazione I - Laboratorio
Programmazione I - Laboratorio Esercitazione 4 - Puntatori, vettori e stringhe Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti
DettagliIl linguaggio C Gestione della memoria
Il linguaggio C Gestione della memoria Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Linguaggio C - Gestione della memoria
DettagliA. Ferrari. stringhe di caratteri In linguaggio C
stringhe di caratteri In linguaggio C stringhe o un insieme di caratteri in sequenza forma una stringa o alcuni linguaggi definiscono per le stringhe uno specifico tipo di dato e offrono metodi specifici
DettagliCorso Programmazione
Corso Programmazione 2011-2012 (docente) Fabio Aiolli E-mail: aiolli@math.unipd.it Web: www.math.unipd.it/~aiolli Dipartimento di Matematica Pura ed Applicata Torre Archimede, Via Trieste 63 Puntatori,
DettagliInformatica e Laboratorio di Programmazione C++ stream Alberto Ferrari. Alberto Ferrari Informatica e Laboratorio di Programmazione
Informatica e Laboratorio di Programmazione C++ stream Alberto Ferrari Alberto Ferrari Informatica e Laboratorio di Programmazione stream o l input/output del C++ è basato sugli stream o gli stream sono
DettagliLe stringhe. Un vettore di caratteri non è necessariamente una stringa perché non sempre termina con \0.
LE STRINGHE IN C++ Le stringhe Si usano per rappresentare parole, frasi, codici alfanumerici e più in generale qualunque tipo di sequenza numerica non aritmetizzabile. In C e C++ non esiste un vero e proprio
DettagliProgrammazione Procedurale in Linguaggio C++
Programmazione Procedurale in Linguaggio C++ Sottoprogrammi Parte 8 Dettagli e Approfondimenti versione 2.3 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima
DettagliCalcolare il massimo di una lista
Calcolare il massimo di una lista Lunedì abbiamo definito un algoritmo per calcolare il valore massimo fra gli elementi di una lista predefinita di interi. In particolare, abbiamo: deciso di rappresentare
DettagliLibrerie C. Corso di Linguaggi e Traduttori 1 AA Corso di Linguaggi e Traduttori 1 AA stdio.h
Corso di Linguaggi e Traduttori 1 AA 2004-05 1 Corso di Linguaggi e Traduttori 1 AA 2004-05 stdio.h 2 Funzioni comuni di I/O? Le piu' comuni funzioni che permettono I/O sono getchar() e putchar():? int
DettagliIl linguaggio C. Puntatori e dintorni
Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;
DettagliStrutture. Array dei nomi degli esami (MAX ESAMI è il massimo numero degli esami). Array con i crediti degli esami.
Consideriamo l esercizio assegnato la scorsa lezione per rappresentare il libretto di uno studente. Per memorizzare i dati si sono utilizzati tre array: char* nomiesami[max ESAMI] Array dei nomi degli
DettagliOperazioni elementari sulle stringhe
Caratteri e stringhe Lunghezza Copia di stringhe Concatenazione di stringhe Confronto di stringhe Ricerca di sotto-stringhe Ricerca di parole 2 2006 Politecnico di Torino 1 Lunghezza di una stringa La
DettagliConcetto di stream. c i a o \0. c i a o \0. c i a o \0
Concetto di stream Uno stream è un flusso di byte che permette al programma di comunicare con l esterno (es. con periferiche di input/output) c i a o \0 c i a o \0 c i a o \0 Stream di uscita standard
DettagliLibrerie C. Corso di Linguaggi e Traduttori 1 AA
Corso di Linguaggi e Traduttori 1 AA 2004-05 1 Corso di Linguaggi e Traduttori 1 AA 2004-05 stdio.h 2 Funzioni comunidi I/O? Le piu' comuni funzioni che permettono I/O sono getchar() e putchar():? int
DettagliTipi di dato STRUTTURATI
Tipi di dato STRUTTURATI I tipi di dato si differenziano in scalari e strutturati In C si possono definire tipi strutturati: array e strutture [ ] (array) Un array è una collezione finita di N variabili
DettagliI 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
DettagliPROGRAMMIAMO Classi predefinite standard: la classe string C++ - Il contenitore string C++ Home Contatti Così come le funzioni di library standard del C++ mettonoa disposizione del programmatore codice
DettagliDati aggregati. Violetta Lonati
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica - in breve: Definizione di tipi Array Stringhe Strutture
DettagliGestione di files Motivazioni
Gestione di files Motivazioni Un programma in esecuzione legge (sequenzialmente) una sequenza di caratteri prodotti "al volo" dall'utente (tramite tastiera) il programma in esecuzione scrive (sequenzialmente)
DettagliLezione 11: Liste a Puntatori e Input/Output
Lezione 11: Liste a Puntatori e Input/Output Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione Richiamo: strutture (struct)
DettagliCorso di Laboratorio di Sistemi Operativi A.A
Corso di Laboratorio di Sistemi Operativi A.A. 2016 2017 Lezione 10 Ivan Scagnetto ivan.scagnetto@uniud.it Nicola Gigante gigante.nicola@spes.uniud.it Dipartimento di Scienze Matematiche, Informatiche
DettagliLezione 19 e Allocazione dinamica della memoria - Direttive al preprocessore - Libreria standard - Gestione delle stringhe
Lezione 19 e 20 - Allocazione dinamica della memoria - Direttive al preprocessore - Libreria standard - Gestione delle stringhe Valentina Ciriani (2005-2008) Laboratorio di programmazione Valentina Ciriani
DettagliNel seguito, istruzione1 e istruzione2 possono essere un blocco di codice { }, cioè più istruzioni
INTRODUZIONE A C++ Nel seguito, istruzione1 e istruzione2 possono essere un blocco di codice, cioè più istruzioni Istruzione - Esempi Significato int a; float f; double d; char c; int x=0; variabile =
DettagliFunzioni di libreria. Caratteri e stringhe. Librerie sulle stringhe. Funzioni di libreria. Rappresentazione. Suggerimenti
Caratteri e stringhe Introduzione Lunghezza di stringhe Classificazione di caratteri Trasformazione di caratteri Copia e concatenazione Confronto di stringhe Ricerca in stringhe Conversione numero-stringa
DettagliFondamenti di Informatica Ing. Biomedica
Fondamenti di Informatica Ing. Biomedica Esercitazione n.10 Strutture Antonio Arena antonio.arena@ing.unipi.it Ripresa esercizio per casa Fondamenti di Informatica - Esercitazione n.10 2 Scrivere una funzione
DettagliCaratteri e stringhe
Caratteri e stringhe Funzioni di libreria Introduzione Lunghezza di stringhe Classificazione di caratteri Trasformazione di caratteri Copia e concatenazione Confronto di stringhe Ricerca in stringhe Conversione
DettagliLABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO IV.2019
LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2018 2019 17.IV.2019 VINCENZO MARRA Indice Esercizio 1 2 Funzione reverse 2 2 Esercizio 2 2 Funzione equals
Dettagli