Informatica 1. Corso di Laurea Triennale in Matematica. Gianluca Rossi
|
|
|
- Adelmo Antonucci
- 9 anni fa
- Visualizzazioni
Transcript
1 Informatica 1 Corso di Laurea Triennale in Matematica Gianluca Rossi [email protected] Dipartimento di Matematica Università di Roma Tor Vergata 11: Stringhe ( Informatica 1 Stringhe 1 / 14
2 Caratteri, stringhe e vettori char c = 97: Alla variabile c viene assegnato il codice valore 97 (codice ASCII del carattere a). char c = a : Alla variabile viene assegnato il codice ASCII del carattere a (l intero 97). Una stringa (sequenza di caratteri) è un vettore di char. ( Informatica 1 Stringhe 2 / 14
3 Stringhe char s[100]; Definisce una stringa di lunghezza al più 100. s può contenere stringhe più piccole: L ultimo carattere deve essere seguito dal carattere speciale di fine stringa \0. È buona norma utilizzarlo sempre. La stampa della stringa con la printf avviene per mezzo del descrittore %s printf( %s, s); ( Informatica 1 Stringhe 3 / 14
4 Stringhe: Esempio #include<stdio.h> main(){ char s[100]; s[0] = c ; s[1] = o ; s[2] = m ; s[3] = p ; s[4] = i ; s[5] = l ; s[6] = a ; s[7] = t ; s[8] = o ; s[9] = r ; s[10] = e ; s[11] = ; s[12] = c ; s[13] = \0 ; /*eol*/ s[14] = x ; /*? */ printf( %s\n, s); Il carattere di fine-stringa (EOL) determina la fine effettiva della stringa; Tutti i caratteri che seguono vengono ignorati dalla funzione printf; Se non fosse indicato il termine della stringa verrebbero stampati tutti i caratteri del vettore s che, in questo caso, sarebbero indefiniti. ( Informatica 1 Stringhe 4 / 14
5 Definizione implicita char s[] = ecco una stringa ; Crea il vettore di caratteri della dimensione giusta per memorizzare la stringa di inizializzazione. e c c o u n a s t r i n g a \ ( Informatica 1 Stringhe 5 / 14
6 Esempio: Lunghezza di una stringa #include<stdio.h> int stringlenght(char*); main(){ char s[] = ecco una stringa ; printf( %d\n, stringlenght(s)); s[4] = \0 ; printf( %d\n, stringlenght(s)); printf( %d\n, sizeof(s)); int stringlenght(char *s){ int l = 0; while (*s!= \0 ){ s++; l++; return l; ( Informatica 1 Stringhe 6 / 14
7 Input di stringhe char s[100]; scanf( %s, s); Non c è controllo sulla lunghezza della stringa inserita da tastiera; L immissione termina con lo spazio, i caratteri che seguono sono ignotati; L alternativa consiste nell inserire un carattere alla volta. ( Informatica 1 Stringhe 7 / 14
8 Input di stringhe int getchar(); Funzione di libreria stdio; Prende l input da tastiera, un carattere alla volta. Se l input è un carattere ASCII lo restituisce in output; Altrimenti (errore o fine-riga) restituisce EOF (costante definita in stdio.h). ( Informatica 1 Stringhe 8 / 14
9 Input di stringhe: Esempio #include<stdio.h> int getstr(char[], int); main(){ char s[100]; getstr(s, sizeof(s) - 1); printf( %s\n, s); int getstr(char s[], int dim){ int i = 0, c; while( (c = getchar())!= \n && i < dim ) s[i++] = c; s[i] = \0 ; ( Informatica 1 Stringhe 9 / 14
10 Stringhe ed allocazione di memoria: la malloc malloc void *malloc(int num bytes); Nella libreria stdlib (includere stdlib.h); Alloca num bytes byte consecutivi e restituisce l indirizzo del primo byte allocato; Il tipo void è da considerare come tipo jolly. Il puntatore di ritorno deve essere convertito (casting) al tipo desiderato. ( Informatica 1 Stringhe 10 / 14
11 Esempio: Concatenazione di due stringhe #include<stdio.h> #include<stdlib.h> int stringlenght(char*); main(){ char s1[] = primastringa ; char s2[] = secondastringa ; char *s; int i, j; int len1 = stringlenght(s1); int len2 = stringlenght(s2); s = (char*)malloc((len1+len2+2)*sizeof(char)); i=0; /*copia di s1 nella prima parte di s*/ for(j = 0; j < stringlenght(s1); j++) s[i++] = s1[j]; /*uno spazio vuoto*/ s[i++] = ; /*copia di s2 nella seconda parte di s*/ for(j = 0; j < stringlenght(s2); j++) s[i++] = s2[j]; s[i] = \0 ; printf( %s\n, s); int stringlenght(char *s){ int l = 0; while (*s!= \0 ){ s++; l++; return l; ( Informatica 1 Stringhe 11 / 14
12 Libreria string Includere string.h int strlen(char *str); Restituisce la lunghezza della stringa in input. char *strcpy(char *str1, char *str2); char *strcat(char *str1, char *str2); La stringa str2 viene copiata in str1, viene restituito il riferimento a str1. La stringa str2 viene accodata a str1, viene restituito il riferimento a str1 (nessun controllo sulle dimensioni). int strcmp(char *str1, char *str2); < 0 se str1<str2 = 0 se str1=str2 > 0 se str1>str2 ( Informatica 1 Stringhe 12 / 14
13 Riferimenti The C Library Reference Guide guide/ ( Informatica 1 Stringhe 13 / 14
14 Esempio: una implementazione della strcmp #include <stdio.h> int stringcompare(char*, char*); main(){ printf( %d\n, stringcompare( progettazione, programmazione )); int stringcompare(char *str1, char *str2){ int i = 0; while( str1[i]!= \0 && str2[i]!= \0 && str1[i] == str2[i] ) i++; if(str1[i] == str2[i] ) /* str1[i] = str2[i] = \0 */ return 0; /* altrimenti str1[i]!= str2[i] oppure solo una tra str1[i] e str2[i] e \0 */ if(str1[i] == \0 str1[i] < str2[i] ) return -1; return 1; ( Informatica 1 Stringhe 14 / 14
Lezione 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
Esercizio 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
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
Stringhe 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
Strutture Dati Dinamiche
Strutture Dati Dinamiche Motivazioni Le variabili considerate fino a questo punto devono essere dichiarate staticamente, ossia la loro esistenza, il loro nome e la loro dimensione devono essere previsti
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
char* 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
Unità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo.
Unità Didattica 4 Linguaggio C Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo. 1 Vettori Struttura astratta: Insieme di elementi dello stesso tipo, ciascuno individuato da un indice;
Programmazione 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
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
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
char* 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
Uso avanzato dei puntatori Allocazione dinamica della memoria
Uso avanzato dei puntatori Allocazione dinamica della memoria Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica
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
Aritmetica dei puntatori
Aritmetica dei puntatori Marco Alberti Programmazione e Laboratorio, A.A. 2016-2017 Dipartimento di Matematica e Informatica - Università di Ferrara Ultima modifica: 7 dicembre 2016 sizeof L operatore
Esercizio 1 (15 punti)
Esercizio 1 (15 punti) Corsi di laurea in Ingegnera Elettronica e Ingegneria Gestionale Fondamenti di Programmazione / Fondamenti di Informatica I Prova scritta del 16 giugno 2017 Il noto gioco MasterMind
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
Lezione 8 Struct e qsort
Lezione 8 Struct e qsort Rossano Venturini [email protected] Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Esercizio 3 QuickSort strambo Modificare il Quicksort
string.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
Allocazione dinamica della memoria
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Tipi di memoria dati Nella macchina astratta C esistono tre tipi di memoria per allocare
L'Allocazione Dinamica della Memoria nel linguaggio C
L'Allocazione Dinamica della Memoria nel linguaggio C Prof. Rio Chierego [email protected] http://www.riochierego.it/informatica.htm Sommario Questo documento tratta l'allocazione dinamica della memoria
Lezione 6 Struct e qsort
Lezione 6 Struct e qsort Rossano Venturini [email protected] Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Struct Struct Fino ad ora abbiamo utilizzato
L Allocazione Dinamica della Memoria
L Allocazione Dinamica della Memoria Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania [email protected] http://www.diit.unict.it/users/mpalesi Sommario Questo documento
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
Programmazione I - Laboratorio
Programmazione I - Laboratorio Esercitazione 3 - Array Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti di.unipi.it 2. Dipartimento
Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo.
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 puntatori che possono
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
Gestione 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
Puntatori. Un puntatore contiene un numero che indica la locazione di memoria dove è presente la variabile puntata
Puntatori int i = 10; int * pi = &i; pi i = 10 116 int * pi = pi contiene un informazione che mi permette di accedere ( puntare ) ad una variabile intera Un puntatore contiene un numero che indica la locazione
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
