Elementi di programmazione ad oggetti a. a. 2009/2010

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C++
Advertisements

I tipi Strutturati.
LINGUAGGIO DI PROGRAMMAZIONE C
Programmazione assembler
Java Stream e File.
String c++.
Java Stream e File. La classe File Per operare con lintero file java mette a disposizione la classe File Per utilizzare la classe File è necessario importare.
Stringhe di caratteri In linguaggio C.
I DATI I PRINCIPALI TIPI DI DATO UTILIZZATI IN PROGRAMMAZIONE
Operazioni di I/O da console e da file in C standard
SC che operano su file (1)
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.
Caratteri e stringhe di caratteri
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
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 P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.
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 Laurea in Biotecnologie Informatica (Programmazione) Rappresentazione dellinformazione su calcolatore Anno Accademico 2009/2010.
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.
Introduzione agli stream e alle classi
Il linguaggio Fortran 90: 5. Formato di I/O e Files
Funzioni di Libreria per le stringhe DICHIARAZIONI CONTENUTE NEL FILE: char *strcpy( char *dest, const char *sorg ); Copia sorg in dest, incluso il carattere.
CAPITOLO 4 LINGUAGGIO JAVA: COSTRUTTI DI BASE. ALFABETO Java adotta la codifica standard Unicode della società Unicode, Inc. (ftp://ftp.unicode.org) definito.
INFORMATICA I file. © Piero Demichelis 2 File Per rendere più uniforme possibile il comportamento dei programmi in relazione alla grande varietà dei dispositivi.
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.
File di testo, file binari
Dichiarazioni e tipi predefiniti nel linguaggio C
Fondamenti di Informatica A - Massimo Bertozzi TIPI DI DATO IN C++ What's in a name? That which we call a rose By any other name would smell as sweet.
I File.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX AWK Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Lezione VIII Laboratorio di Programmazione. Streams formattati In C è sfruttata linformazione riguardo al tipo di un certo dato per impostare la formattazione.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
File ad accesso casuale o random
Tipi di dati elementari
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
1 Gestione dei File. 2 Perché i file? Sono strutture dati persistenti Sono solitamente memorizzati sui dischi –Si usano dall'interno dei programmi Realizzano.
G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione X Ingresso/Uscita di Interi Programmazione di Calcolatori: Ingresso/Uscita 1.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e stringhe Marco D. Santambrogio – Ver. aggiornata al 9 Agosto 2013.
Esercizi su File e Liste
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.
LdL - LP1 - lez 11 - ver 6 - aa Linguaggi di programmazione I Stringhe (II) Prof. Luigi Di Lascio Lezione 11.
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Puntatori e Stringhe.
Parte 3 Lo stato: variabili, espressioni ed assegnazioni
File binari Accesso a file con record di lunghezza costante Struct Persona { Int id; Char nome[50];// nome e cognome Double stipendio; }; Persona dipendente;
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
1 Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( ) Laboratorio di programmazione Lezione 13 e 14 -
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Operatori di incremento e decremento
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.
Cloud informatica V anno. Introduzione a PHP Lo scripting PHP PHP è un linguaggio di scripting lato server. Le caratteristiche di un linguaggio di scripting.
Lezione 2 : Basi del linguaggio Variabili. Come visto nella lezione 1 le classi registrano il proprio stato nelle variabili  int cadenza = 0;  int velocita.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Esercitazione pre 1ma prova in itinere Marco D. Santambrogio – Ver. aggiornata.
Linguaggio C++ Un esempio: Registrazione e lettura di dati in un file File e Stream.
Files in C++ Motivazioni Un programma in esecuzione legge (sequenzialmente) una sequenza di caratteri prodotti "al volo" dall'utente (tramite tastiera)
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Transcript della presentazione:

Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria Informatica, Gestionale e dell’Automazione

Lezione 9 Input/output e stream

Caratteri I caratteri vengono rappresentati come valori numerici Una tabella di codifica permette di associare valori numerici a caratteri ASCII (7bit) ISO-8859 256 caratteri sono appena sufficienti per le lingue europee Unicode (31bit) Transcodifica UTF-8 Transcodifica UTF-16

Libreria standard: string La classe string della libreria standard rappresenta sequenze di caratteri di lunghezza arbitraria typedef basic_string<char> string; string s; Costruttore di default, stringa vuota string s(“buongiorno”) Inizializza la stringa con una stringa costante Una “stringa costante” è una stringa stile C, non un oggetto della classe string Array di const char

Dichiarazione di string nella libreria standard template<typename _Alloc> class allocator; template<class _CharT> struct char_traits; template<typename _CharT, typename Traits = char_traits<_CharT>, typename _Alloc = allocator<_CharT>> class basic_string; template<> struct char_traits<char>; typedef basic_string<char> string; template<> struct char_traits<wchar_t>; typedef basic_string<wchar_t> wstring;

basic_string template<typename _CharT, typename _Traits, typename _Alloc> class basic_string _CharT è il tipo del carattere char wchar_t (come char ma occupa due o più byte) _Traits è un char_traits, specializzazione del template template<typename _CharT> struct char_traits Definisce le operazioni elementari tra caratteri: assegnamenti, conversioni, confronti, copie, spostamenti, … Nella libreria standard sono già definite le specializzazioni per char e wchar_t _Alloc è un allocatore

Membri di string string s; // … s.empty() s.size() operator[] true se s è vuota s.size() Dimensione (numero di caratteri) Restituisce un size_type (unsigned) operator[] Il carattere in una data posizione (partendo da 0) Non viene controllata la validità dell’indice L’argomento è un size_type Restituisce un Lvalue operator+ Concatenazione tra stringhe operator= Copia carattere per carattere operator== != < <= > >= Operatori di confronto

Membri di string Ricerca di sottostringhe Ricerca di un carattere find rfind Ricerca di un carattere find_first_of find_last_of find_first_not_of find_last_not_of Sostituzione replace Sottostringa substr

Stringhe stile C Il C++ eredita dal C la nozione di stringa come array di char, in cui l’ultimo carattere è null char s[] = {‘C’, ‘i’, ‘a’, ‘o’, ‘\0’}; char *s = “Ciao”; Il null è aggiunto in automatico while(*s) { // fai qualcosa con *s s++; } Per un oggetto string è definito il metodo c_str() che restituisce la stringa stile C corrispondente

Input di stringhe string s; cin >> s; getline(cin, s) Legge e scarta spazi bianchi iniziali Legge tutti i caratteri fino al successivo spazio bianco getline(cin, s) Legge una riga intera, fino al newline (che viene scartato)

Input/output #include <iostream> definisce oggetti usati per l’input/output usando la console, basati su flussi (stream) istream (input stream), flusso di input L’input da un istream si effettua con l’operatore >> cin, istream che funge da input standard Funzione getline, legge una string da un istream ostream (output stream), flusso di output L’output su un ostream si effettua con l’operatore << cout, ostream che funge da standard output cerr, ostream destinato all’output dei messaggi di errore iostream legge e scrive su un flusso Deriva da istream e ostream

IO di caratteri get(c) mette un char in c put(char) scrive un char putback(char) rimette nel flusso put(char) scrive un char get() restituisce il prossimo byte (come int) unget torna indietro di un byte peek() “spia” il prossimo byte senza leggerlo

IO di più caratteri get(sink, size, delim) legge size caratteri o finche fino a delim escluso, e li mette nel vettore sink getline(sink, size, delim) idem ma legge e scarta delim read(sink, size) legge size byte e li mette in sink gcount() restituisce il numero di byte letti dall’ultima lettura ignore(size, delim) ignora size caratteri o fino a delim incluso

Classi stream I flussi non permettono copia o assegnamento Non si possono usare direttamente come parametri o tipi di ritorno, ma solo tramite puntatori o riferimenti

Input/output object oriented Il meccanismo di IO è indipendente Dal dispositivo Console File Stringa Dimensione del carattere

Input/output su file #include <fstream> ifstream ofstream stream Deriva da istream ofstream Deriva da ostream stream Deriva da iostream

Input/output su string #include <sstream> istringstream Deriva da istream ostringstream Deriva da ostream stringstream Deriva da iostream

Stato di uno stream Per ogni oggetto di tipo di stream, es. istream istream::iostate è un tipo intero che è usato per rappresentare lo stato dello stream istream::badbit indica flusso corrotto (non recuperabile) istream::failbit indica fallimento dell’operazione di IO (è possibile riprovare) istream::eofbit indica fine del flusso (carattere end-of-file) bad() true se il bit badbit è settato fail() true se il bit failbit è settato eof() true se il bit badbit è settato good() se lo stream è in uno stato valido clear() resetta le condizioni allo stato valido clear(istream::iostate) resetta un flag setstate(istream::iostate) setta un flag rdstate() restituisce lo stato come iostate Si può testare direttamente la validità del flusso, es. while (cin >> a) { //… } Stati indicati come bit si possono combinare tramite |

Buffer Tutti gli IO su stream usano un buffer, svuotato Al termine del programma …ma non se c’è un crash Quando è pieno Forzandolo, immettendo endl(scrive un newline e svuota il buffer), ends (inserisce un null e svuota il buffer), flush (svuota il buffer e basta) endl e \n sono diversi Immettere unitbuf forza lo svuotamento del buffer ad ogni operazione nounitbuf tie lega l’output di un flusso all’input di un altro flusso, il buffer del primo si svuota quando il secondo legge cin.tie(&cout) lo fa il sistema per noi cin.tie() restiuisce un puntatore al flusso collegato cin.tie(0) annulla il collegamento

IO su file ifstream, ofstream, fstream Costruttore che prende nome di un file ifstream infile(“prova.txt”); string s(“prova2.txt”); ifstream infile2(s.c_str()); f.open(“nomefile”); if (f) { //… } f.close(); Serve anche f.clear();

File Mode Si può specificare la modalità di apertura di un file Solo per ofstream e fstream: out modalità di output, svuota il file all’apertura app output, posizionamento alla fine del file prima di ogni scrittura (preserva il contenuto del file) trunc svuota il file (senza aprirlo) in (modalità di input) solo per ifstream e fstream ate modalità che di apertura che porta immediatamente all’end-of-file binary modalità per cui il contenuto è considerato come sequenza di bytes (non si tenta di interpretarli) Es. f.open(“file.dat”, ofstream::out | ofstream::app)

Accesso casuale seek tell c’è un solo cursore! seekg, seekp seekg(position) seekg(offset, dir) dove dir è beg, cur, end tell tellg, tellp c’è un solo cursore!

Flussi su string I flussi su string servono ad effettuare IO in memoria istringstream, ostringstream, srtingstream string s(“pippo”); stringstream ss(s); ss.str() restituisce la stringa ss.str(s) copia la stringa su s Tramite flussi su string posso ottenere IO formattato Operatori << e >> ridefiniti

Stato della formattazione Oltre allo stato (del flusso), i flussi mantengono uno stato della formattazione usata La formattazione viene variata inserendo nel flusso dei manipolatori flags() restituisce lo stato corrente flags(fmtflags) setta lo stato Es. ostream::fmtflags è il tipo intero unsigned che serve a contenere i flag Alcuni manipolatori sono definiti in iomanip

Formattazione dei numeri interi boolalpha stampa i valori booleani come true e false (invece di 1 e 0) noboolalpha hex, oct, dec specificano la base numerica showbase causa la visualizzazione della base 0xnnnn indica un esadecimale 0nnnn indica un ottale nnnn indica un decimale uppercase visualizza esadecimali con lettere maiuscole setbase(int), accetta 8, 10 o 16

Formattazione dei numeri in virgola mobile Precisione (numero di cifre) Default 6 Arrotondamento (non troncamento) al numero di cifre desiderato precision() restituisce la precisione corrente precision(int) imposta la precisione Oppure manipolatore setprecision(int) Notazione (decimale o scientifica) Di default dipende dalla dimensione fixed, scientific cout.unsetf(ostream::floatfield) ritorna al default Posizione del punto decimale Di default omesso se non c’è parte frazionale showpoint Segno + Di default il + per i numeri positivi è omesso showpos

Posizionamento e riempitivi setw(int) imposta la dimensione minima del prossimo output left allinea a sinistra (aggiunge riempitivi a destra) right allinea a destra (aggiunge riempitivi a sinistra) internal aggiunge riempiti tra segno e valore skipws salta gli spazi bianchi dall’input setfill(char) permette di specificare il carattere usato come riempitivo