A.A. 2010/2011Ambienti di Programmazione per il Software di Base1 (Es. – 6) Ambienti di Programmazione per il Software di Base Le Stringhe in C Input.

Slides:



Advertisements
Presentazioni simili
Puntatori Linguaggio C.
Advertisements

Corso di Fondamenti di Programmazione canale E-O
INFORMATICA Altre Istruzioni di I/O
LINGUAGGIO DI PROGRAMMAZIONE C
INFORMATICA Algoritmi fondamentali
Nel C non esiste un dato primario di tipo stringa; queste sono rappresentate con un array monodimensionale di caratteri (tipo char). Così per definire.
Introduzione al linguaggio C
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F2 Selezione.
Stringhe di caratteri In linguaggio C.
PUNTATORI Introduzione
MATLAB.
MATLAB. Scopo della lezione Programmare in Matlab Funzioni Cicli Operatori relazionali Esercizi vari.
Differenze tra C e C++ Commenti: Adesso puoi inserire dei commenti tra // e la fine della linea. Usare le librerie C: In C++ puoi anche chiamare una funzione.
Introduzione al linguaggio C
Algoritmi in C++ (1) da completare
INFORMATICA I file.
Programmazione Procedurale in Linguaggio C++
Indirizzi delle variabili A ogni variabile sono associati tre concetti fondamentali: il valore memorizzato; il tipo dati di appartenenza; lindirizzo. Il.
FUNZIONI DI BIBLIOTECA
Caratteri e stringhe di caratteri
Argomenti dalla linea dei comandi Gli argomenti possono essere passati a qualsiasi funzione di un programma, compresa la main(), direttamente dalla linea.
Funzioni definite dall’utente
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Stringhe e Puntatori Marco D. Santambrogio – Ver. aggiornata al 18 Marzo 2013.
Process synchronization
Laboratorio di Linguaggi lezione VI Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
Laboratorio di Linguaggi lezione XI: I/O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea.
1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Le stringhe di caratteri in Java Anno Accademico 2009/2010.
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab m-file m-file script script Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali.
Array Un array è una collezione in sequenza di variabili del medesimo tipo Riferimento con un nome comune Nome_studente1 Nome_studente2. Nome_studenteN.
Funzioni di Libreria per le stringhe DICHIARAZIONI CONTENUTE NEL FILE: char *strcpy( char *dest, const char *sorg ); Copia sorg in dest, incluso il carattere.
INFORMATICA I file. © Piero Demichelis 2 File Per rendere più uniforme possibile il comportamento dei programmi in relazione alla grande varietà dei dispositivi.
INFORMATICA Altre Istruzioni di I/O. © Piero Demichelis 2 Funzioni di I/O Per la lettura e la scrittura da videoterminale il C prevede numerose istruzioni.
Esercizio: Copiare un file in un nuovo file mediante le funzioni read e write.
Politecnico di Milano Esercizi Stringhe Ricerca binaria.
I File.
Le funzioni.
In molti casi è utile assegnare a degli identificatori dei valori che restino costanti durante tutto il programma e che non possano essere cambiati nemmeno.
Il linguaggio C Le funzioni C Language Il passaggio dei parametri
Parte 4 Elementi di Informatica di base
Elementi di Informatica di base1 Parte 3 Elementi di Informatica di base Dott.ssa Elisa Tiezzi.
Creazione progetto in C++/DEV
Programmazione di Calcolatori
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione X Ingresso/Uscita di Interi Programmazione di Calcolatori: Ingresso/Uscita 1.
Programmazione di Calcolatori
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e stringhe Marco D. Santambrogio – Ver. aggiornata al 9 Agosto 2013.
BIOINFO3 - Lezione 201 Come in ogni corso di introduzione ad un linguaggio di programmazione, proviamo a scrivere lormai celebre primo programma di prova.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
Complessità di un algoritmo
1 Esempi domande di esame. 2 Dato il seguente programma #include int main(){ int *p,j=9,i=5; p=&j; *p=i; printf("%d %d %d\n", i,j,*p); scanf("%d",p);/*
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni – BCOR Ingegneria Elettronica – BELR Introduzione al C Esercitazione 5 D. Bloisi, A.
s STRINGHE DI CARATTERI a p e \0
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Puntatori e Stringhe.
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
Dato un vettore di reali di dimensione DIM, si inseriscano N elementi presi da tastiera, si utilizzi 0 per terminare l’inserimento. Ordinare gli elementi.
Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode.
1 Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( ) Laboratorio di programmazione Lezione 13 e 14 -
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – Ver. aggiornata al 26 Marzo 2014.
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Operatori di incremento e decremento
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 8 Aprile 2015.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – Ver. aggiornata al 14 Marzo 204.
Stringhe In linguaggio C. Stringhe  Un insieme di caratteri in sequenza forma una stringa.  Alcuni linguaggi definiscono per le stringhe uno specifico.
Stringhe Una stringa è un vettore di char con un carattere costante \0 che indica la fine della stringa il terminatore rende differenti gli array di char.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – Ver. aggiornata al 28 Ottobre 2014.
Ambienti di Programmazione per il Software di Base
Programmazione e Laboratorio di Programmazione
Transcript della presentazione:

A.A. 2010/2011Ambienti di Programmazione per il Software di Base1 (Es. – 6) Ambienti di Programmazione per il Software di Base Le Stringhe in C Input dalla linea di comando in C Conversione dei dati in C

A.A. 2010/2011Ambienti di Programmazione per il Software di Base2 (Es. – 6) Le Stringhe in C : Definizioni Stringa: una sequenza di caratteri memorizzati in locazioni contigue di memoria e terminata dal carattere \0, dettoterminatore di stringa s t r i n g a \0 x x x x x x x x

A.A. 2010/2011Ambienti di Programmazione per il Software di Base3 (Es. – 6) Le Stringhe in C : Ingresso/uscita di stringhe scanf(%s, address); Acquisizione: con address espressione di tipo char * Modifiche allo stato della memoria: 1.memorizza i caratteri acquisiti da tastiera a partire dalla locazione di indirizzo address, fino al primo di un insieme di caratteri delimitatori (\n, blank, …) escluso 2.aggiunge in coda ai caratteri memorizzati il terminatore di stringa char variabile[10]; char variabile[] = valore_stringa; Creazione:

A.A. 2010/2011Ambienti di Programmazione per il Software di Base4 (Es. – 6) Le Stringhe in C : Ingresso/uscita di stringhe Esempio: #include void main () { char stringa [10]; scanf(%s, stringa); } p r o v a \0 char *stringa x x x x x x x x x x prova

A.A. 2010/2011Ambienti di Programmazione per il Software di Base5 (Es. – 6) Le Stringhe in C : Ingresso/uscita di stringhe printf(%s, address); Visualizzazione: con address espressione di tipo char * Effetto: visualizza i caratteri in memoria a partire dalla locazione di indirizzo address, fino al primo terminatore di stringa #include void main () { char stringa [10]; scanf(%s, stringa); printf(%s, stringa); }; Esempio: poi

A.A. 2010/2011Ambienti di Programmazione per il Software di Base6 (Es. – 6) Le Stringhe in C : Ingresso/uscita di stringhe Esempio: Costante di tipo stringa: sequenza di caratteri racchiusa tra doppi apici #include void main () { printf("%s\n", "Allora!!!"); printf("%s\n", "Allo\0ra!!!"); } Allora!!! Allo

A.A. 2010/2011Ambienti di Programmazione per il Software di Base7 (Es. – 6) Le Stringhe in C : strlen() La funzione strlen(): int strlen (char *s) Valore restituito: il numero di caratteri memorizzati a partire da s fino al primo delimitatore di fine stringa escluso Attenzione: per poter utilizzare le funzioni seguenti è necessario includere la direttiva per il preprocessore #include Molto informalmente: restituisce la lunghezza di s

A.A. 2010/2011Ambienti di Programmazione per il Software di Base8 (Es. – 6) Le Stringhe in C : strlen() Esempio: #include void main () { char stringa [10]; int lung; …. lung = strlen(stringa); } p r o v a \0 x x x x x x x x x x char *stringa 5

A.A. 2010/2011Ambienti di Programmazione per il Software di Base9 (Es. – 6) Le Stringhe in C : strcpy() La funzione strcpy(): char *strcpy (char *s1, char *s2) Modifiche allo stato della memoria: copia i caratteri memorizzati a partire da s2, fino al primo terminatore di stringa incluso, a partire da s1 Valore restituito: s1 Molto informalmente: sostituisce la stringa s1 con la stringa s2

A.A. 2010/2011Ambienti di Programmazione per il Software di Base10 (Es. – 6) Le Stringhe in C : strcpy() Esempio: #include void main () { char s1 [8]; char s2 [5]; …. printf(%s, strcpy(s1, s2); } via p r o n t i \0 v i a char *s1 x x x x x x x x x x x x x char *s2 v i a \0 s1

A.A. 2010/2011Ambienti di Programmazione per il Software di Base11 (Es. – 6) Le Stringhe in C : strcat() La funzione strcat(): char *strcat(char *s1, char *s2) Descrizione: copia i caratteri memorizzati a partire da s2, fino al primo carattere di fine stringa incluso, a partire dallindirizzo del primo carattere di fine stringa successivo a s1 Valore restituito: s1 Molto informalmente: concatena la stringa s2 alla stringa s1

A.A. 2010/2011Ambienti di Programmazione per il Software di Base12 (Es. – 6) Le Stringhe in C : strcat() Esempio: #include void main () { char s1 [8]; char s2 [5]; …. strcat(s1, ); printf(%s, strcat(s1, s2)); } via vai \0 s1 v v i a char *s1 x x x x x x x x x x x x x \0 v a ii \0 char *s2 a i \0

A.A. 2010/2011Ambienti di Programmazione per il Software di Base13 (Es. – 6) Le Stringhe in C : strcmp() La funzione strcmp(): int strcmp(char *s1, char *s2); Valore restituito: confronta i caratteri memorizzati a partire da s1 con quelli memorizzati a partire da s2 fino a incontrare la prima coppia di caratteri differenti o il primo delimitatore di stringa Restituisce: 0se ha raggiunto una coppia di caratteri di fine stringa un valore positivose il carattere raggiunto a partire da s1 precede lessicograficamente quello raggiunto a partire da s2 un valore negativoaltrimenti

A.A. 2010/2011Ambienti di Programmazione per il Software di Base14 (Es. – 6) Le Stringhe in C : strcmp() O più informalmente: 0se le due stringhe sono uguali un valore positivose la stringa s1 precede lessicograficamente la stringa s2 un valore negativose la stringa s2 precede lessicograficamente la stringa s1

A.A. 2010/2011Ambienti di Programmazione per il Software di Base15 (Es. – 6) Input dalla linea di comando in C Il C permette di leggere argomenti dalla linea di comando, e questi possono poi essere utilizzati all'interno dei programmi. In fase di lancio del programma, possiamo scrivere gli argomenti dopo il nome del programma da eseguire. Al fine di essere in grado di utilizzare tali argomenti, e' necessario definirli nella funzione main nel seguente modo: main(int argc, char **argv) argc e' il numero degli argomenti digitati, incluso il nome del programma argv e' un array di stringhe contenente ciascuno un argomento, compreso il nome del programma come primo elemento.

A.A. 2010/2011Ambienti di Programmazione per il Software di Base16 (Es. – 6) Input dalla linea di comando in C #include main(int argc, char **argv) { /* programma per stampare gli argomenti dalla linea di comando */ int i; printf("argc=%d\n",argc); for(i=0;i < argc;++i) printf("argv[%d]:=%s\n",i,argv[i]); }

A.A. 2010/2011Ambienti di Programmazione per il Software di Base17 (Es. – 6) Input dalla linea di comando in C Se si e' compilato, chiamandolo args e fatto eseguire scrivendo: args f1 "f2" f3 4 stop! l'output sara': argc=6 argv[0]=args argv[1]=f1 argv[2]=f2 argv[3]=f3 argv[4]=4 argv[5]=stop!

A.A. 2010/2011Ambienti di Programmazione per il Software di Base18 (Es. – 6) Input dalla linea di comando in C Note: argv[0] e' il nome del programma; argc totalizza anche il nome del programma; tra gli argomenti, i caratteri "" vengono ignorati (sono considerati solamente delimitatori di argomenti); gli spazi bianchi delimitano gli argomenti; nel caso in cui sia necessario mantenere spazi bianchi, occorre metterli tra "".

A.A. 2010/2011Ambienti di Programmazione per il Software di Base19 (Es. – 6) Conversione dei dati in C Per convertire una stringa in un numero, la via più semplice è usare le funzioni di libreria (del C) atoi e atof : int atoi(const char *str); dove largomento è una stringa contenente la rappresentazione decimale di un numero intero, esegue la conversione di argomento e restituisce un valore di tipo int. double atof(const char *str); dove largomento è una stringa contenente la rappresentazione decimale di un numero floating (in notazione normale o esponenziale), esegue la conversione di argomento e restituisce un valore di tipo double Entrambe le funzioni vanno utilizzate includendo l'header-file:

A.A. 2010/2011Ambienti di Programmazione per il Software di Base20 (Es. – 6) Conversione dei dati in C /* Converte una stringa in un intero */ #include char stringNum[] = "1234"; main() { int intNum; intNum = atoi( stringNum ); printf(intNum = %d\n", intNum ); }

A.A. 2010/2011Ambienti di Programmazione per il Software di Base21 (Es. – 6) Conversione dei dati in C Per convertire numeri in stringhe, è più conveniente (rispetto ad altre possibilità) usare la funzione di libreria (del C) sprintf. Infatti questa funzione, non solo esegue la conversione, ma permette anche di ottenere una stringa formattata nel modo desiderato. La funzione sprintf é identica alla printf salvo il fatto che scrive in una stringa anziché su stdout. Il primo argomento é la variabile stringa (definita come array di tipo char) in cui inserire i dati formattati. Il secondo argomento é la control-string (come il primo della printf). Il terzo argomento e i successivi sono i dati da formattare (come il secondo e i successivi della printf).

A.A. 2010/2011Ambienti di Programmazione per il Software di Base22 (Es. – 6) Conversione dei dati in C /* sprintf example */ #include int main () { char buffer [50]; int n, a=5, b=3; n = sprintf (buffer, "%d plus %d is %d", a, b, a+b); printf ("[%s] is a %d char long string\n",buffer,n); return 0; } Output: [5 plus 3 is 8] is a 13 char long string

A.A. 2010/2011Ambienti di Programmazione per il Software di Base23 (Es. – 6) Esercizi proposti 1)Scrivere un programma C che prenda come parametri da linea di comando due interi e ne stampi a schermo il prodotto. 2)Scrivere un programma C che richieda di inserire parole da tastiera fino a che non venga digitata la stringa EOF e stampi a schermo il numero di volte che compare nel testo il carattere a