Soluzione del 15 febbraio 2016
|
|
- Gioacchino Pesce
- 4 anni fa
- Visualizzazioni
Transcript
1 Soluzione del 15 febbraio 2016 Problema 1 Un programma che effettua quanto richiesto, senza alcuna pretesa da parte di chi l avesse scritto, potrebbe essere il seguente: # include <iostream> # include <cmath> # include <cstring> using namespace std; char cifre[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z,, #, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z }; template <int N, class U> char * base64(u numero, int (&x)[n]) {char * ret; U numero = numero >= 0? numero : - numero; unsigned int ordinillo, segno = numero < 0, numchar = segno; double ordine = numero? log10(numero)/log10(64) : 0; ordinillo = (unsigned int)ordine + 1; numchar += ordinillo; ret = new char[1+numchar]; ret[numchar] = 0; if(!numero) {ret[0] = 0 ; return ret;} else if(segno) ret[0] = - ; ordinillo = 1; while(numero) {unsigned int scarto = numero % 64; ret[numchar-ordinillo++] = cifre[scarto]; numero /= 64;} return ret;} template <class... U> char * base64(char *s, U... v) {return s;} unsigned int conv(char u) {try {for(unsigned int i=0; i!= 64; ++i) if(u == cifre[i]) return i; throw 0;} catch(...) {cerr << "non convertibile. Valore illegale: " << flush; throw;}} template <class U> void base10(char * s, U* uu) {U ret{}, pot{1}; unsigned int numchar = strlen(s); if(numchar == 1 && s[0] == 0 ) {*uu = ret; return;} try
2 {for(unsigned int pos = numchar-1; pos; --pos) ret += pot * conv(s[pos]), pot *= 64; if(s[0] == - ) ret *= -1; else ret += pot * conv(s[0]);} catch(...) {cerr << [ << s << "]\n" << flush; throw;} *uu = ret;} int main() {int x[1]; cout << base64(-12,x) << endl; cout << base64(8192,x) << endl; cout << base64(1000,x) << endl; cout << base64(9,x) << endl; cout << base64(-9,x) << endl; cout << base64(64,x) << endl; cout << base64(63,x) << endl; cout << base64(0xffffffffffffffff,x) << endl; cout << base64(const cast<char*>("tanto va la gatta al lardo")) << endl; cout << "\n\n\n \n\n\n"; int i; base10(const cast<char*>("fc"), &i); cout << i << endl; short int s; base10(const cast<char*>("200"), &s); cout << s << endl; base10(const cast<char*>("-c"), &i); cout << i << endl; base10(const cast<char*>("0"), &i); cout << i << endl; try {base10(const cast<char*>("@"), &i); cout << i << endl;} catch(...) {} unsigned long long int u; base10(const cast<char*>("fzzzzzzzzzz"), &u); cout << u << endl;} Naturalmente la funzione main è solo dimostrativa. L unica furbata del codice consiste nell aver introdotto una coppia di funzioni template omonime, le due base64, che si escludono vicendevolmente per evidenti type SFINAE che si producono nei diversi tentativi di istanziazione. Un codice che avrebbe comportato il 30 senza passare dal via potrebbe essere come il seguente, ampiamente autocommentato # include <iostream> # include <fstream> # include <cstring> # include <cmath> using namespace std; // le 64 cifre (ordinate) da usare per la base 64 char cifre[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, G, H, I, J, K, L, M, N,
3 O, P, Q, R, S, T, U, V, W, X, Y, Z,, #, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z }; // una coppia di funzioni, la seconda template, // per la conversione inversa da base64 a base 10 unsigned int conv(char u) {try {for(unsigned int i=0; i!= 64; ++i) if(u == cifre[i]) return i; throw 0;} catch(...) {cerr << "non convertibile. Valore illegale: " << flush; throw;}} template <class U> void base10(char * s, U* uu) {U ret, pot1; unsigned int numchar = strlen(s); if(numchar == 1 && s[0] == 0 ) {*uu = ret; return;} try {for(unsigned int pos = numchar-1; pos; --pos) ret += pot * conv(s[pos]), pot *= 64; if(s[0] == - ) ret *= -1; else ret += pot * conv(s[0]);} catch(...) {cerr << [ << s << "]\n" << flush;} *uu = ret;} // una funzione template attivata SOLO se riceve un // argomento di tipo riconducibile a intero: in tal caso // lo converte in base 64 e lo restituisce come char*; // si tratta della prima delle due funzioni proposte nell altra soluzione template <class U> char * base64(typename enable if<is integral<u>::value, U> :: type numero) {char * ret; U numero = numero >= 0? numero : - numero; unsigned int ordinillo, segno = numero < 0, numchar = segno; double ordine = numero? log10(numero)/log10(64) : 0; ordinillo = (unsigned int)ordine + 1; numchar += ordinillo; ret = new char[1+numchar]; ret[numchar] = 0; if(!numero) {ret[0] = 0 ; return ret;} else if(segno) ret[0] = - ; ordinillo = 1; while(numero) {unsigned int scarto = numero % 64; ret[numchar-ordinillo++] = cifre[scarto]; numero /= 64;} return ret;}
4 // la controparte funzione template attivata SOLO nel caso opposto // non fa assolutamente nulla se non qualificare const il valore // restituito, per poterci prender dentro anche eventuali argomenti // trasmessi come stringhe virgolettate template <class U> const char * base64(typename enable if<!is integral<u>::value, U> :: type u) {return u;} // dichiarazioni ANTICIPATE di due classi: // servono alla definizione della successiva struct del piffero class mioistream; class mioostream; // una struct il cui stesso nome lascia capire che // l utilizzatore finale non la istanzierà mai esplicitamente. // Viene contestualmente creata una sua istanza nell ambito globale // e quindi, come ben si sa, visibile OVUNQUE cominciando da QUI. // La struct del piffero ha come unici membri due puntatori: // uno a ostream e l altro a istream. Inoltre per essa sono // dichiarati due operatori di input e output che restituiscono // riferimenti alle due classi di cui si è data dichiarazione // anticipata. Questo è possibile purché tali classi, una volta // definite, lo siano come eredi di istream e di ostream // (oppure di qualche loro erede). struct del piffero {ostream *f; istream *i; friend mioistream&operator>>(istream&, del piffero&); friend mioostream&operator<<(ostream&, del piffero&);}delpiffero; // definizione della classe mioistream come pubblica erede // di ifstream: come tale possederà tutti i metodi non privati // di quella classe (comprese tutte le segnature dei costruttori, // che sono ereditati a loro volta grazie alla direttiva using) // oltre a quello che vi si aggiunge. L averla resa erede di // ifstream, invece che di istream, implica che, almeno in questo // programma dimostrativo, non si possano leggere dati dallo standard // input tramite istanze di questa classe. Anche in questo caso // viene contestualmente istanziato un oggetto globale nomato imio. struct mioistream : public ifstream {using istream::istream; using ifstream::ifstream; // la seguente operator>>, MEMBRO di mioistream, è l aggiunta // più significativa e, in definitiva, la ragione per cui questa // classe viene definita: si osservi che si tratta di un membro // templatizzato che restituisce, provvidamente, un riferimento // alla classe stessa. template <class U> mioistream& operator >> (U& u) {// stessa struttura, mutatis mutandis,
5 // della template <class U> mioostream& operator << // definita come membro dell oggetto omio seguente char * buff; streamsize qui, qua; qui = tellg(), ignore(20000, ), qua = tellg(), seekg(qui), buff = new char[qua-qui+1], * delpiffero.i >> buff; clog << "devo interpretare come base64 ["<< buff << "]\n"; base10(buff, &u); return *this;}}imio; // la classe speculare di mioistream, dedicata alle operazioni // di scrittura. // Si osservi che le operazioni di scrittura EFFETTIVE // avvengono attraverso l oggetto puntato dal membro f di delpiffero. struct mioostream : public ofstream {using ostream::ostream; using ofstream::ofstream; template <class U> mioostream& operator << (U u) {*delpiffero.f << base64<u>(u); return *this;}}omio; // definizione della friend mioistream& operator >> // dichiarata per la struct del piffero mioistream&operator>>(istream&i, del piffero&d) {d.i = &i; // questa operator funge da "wrapper" per la operator >> di imio... return imio;} // definizione della friend mioostream& operator << // dichiarata per la struct del piffero mioostream& operator<<(ostream&o, del piffero& d) {d.f = &o; // questa operator funge da "wrapper" per la operator << di omio... return omio;} // e INFINE ecco la definizione del manipolatore auspicato // che sarà quello usato dall utilizzatore finale: si osservi // che restituisce un riferimento a del piffero del piffero& x64() {clog << "sono x64 e sono il manipolatore ATTIVANTE la base64\n"; return delpiffero;} // una breve main dimostrativa: ovviamente se si volesse utilizzare questo // manipolatore durante operazioni di lettura e scrittura di // Pappi e Cicci occorrerebbe NON SOLO che sia i Pappi sia i Cicci
6 // abbiano le loro operator<< e operator>> scritte a puntino // (il che, francamente, appare SCONTATAMENTE BANALE), ma anche // che abbiano una operator di conversione a qualche tipo intero, // altrimenti non si capirebbe il significato di una lettura o // scrittura in base 64 di un Pappo o di un Ciccio. // // Si osservi come il comportamento standard delle operazioni di I/O // si ricupera immediatamente per omissione del manipolatore. int main() {int k{-77}; char linea[201]; ofstream *ossa = new ofstream; ossa->open("peppo"); *ossa << x64() << "tanto va la gatta"; // inserimento vano del manipolatore *ossa << endl; *ossa << 200 << \n ; // scrittura della costante intera 200 // eseguite l analisi grammaticale della seguente linea di codice // e CAPITE, in base a tutto quanto è stato già detto, // COME e PERCHÉ l ambaradan funziona. *ossa << x64() << k; // scrittura di k in base64: nel file appare -1D *ossa << \n ; *ossa << k+1; // scrittura in base normale di k+1, ossia -76 *ossa << \n ; *ossa << k << endl; // scrittura in base normale di k, ossia -77 ossa->close(); ifstream *issa = new ifstream; issa->open("peppo"); issa -> getline(linea, 200), clog << "letto da file [" << linea << "]\n"; // letta correttamente la prima linea streamsize qui; qui = issa->tellg(); *issa >> k; clog << "letto da file " << k << endl; // letta correttamente la costante 200 issa->seekg(qui); *issa >> x64() >> k; clog << "letto da file " << k << endl; // riletto lo STESSO dato in base64 *issa >> x64() >> k; clog << "letto da file " << k << endl; // letto correttamente 1D in base64 *issa >> k; clog << "letto da file " << k << endl; // letto correttamente k in base normale *issa >> x64() >> k; clog << "letto da file " << k << endl; // letto correttamente k in base64 } Problema 2 Questo problema è addirittura banale: viene proposto un codice che lo risolve senza ulteriori commenti. Si lascia agli studenti l autodidattica della spiegazione. L unica annotazione che merita di essere fatta è che il trattamento delle lettere accentate necessita che la LOCALE in esercizio nella SHELL le supporti adeguatamente, altrimenti saranno attraversate come aria fresca. # include <iostream> # include <fstream>
7 # include <sstream> # include <string> using namespace std; char PencaPolla(char a) {char alfabeto minuscolo[] { $, a, d, b, e, f, h, j, g, i, *, k, l, m, n, o, #, t, s, r, q, p, &, x, y, z, u, v, w, }, alfabeto maiuscolo[] { $, A, D, B, E, F, H, J, G, I, *, K, L, M, N, O, #, T, S, R, Q, P, &, X, Y, Z, U, V, W, }; if(a >= A && a <= Z ) return alfabeto maiuscolo[a- A ]; else if(a >= a && a <= z ) return alfabeto minuscolo[a- a ]; else if(a == L à ) return alfabeto minuscolo[26]; else if(a == L À ) return alfabeto maiuscolo[26]; else if(a == L é ) return alfabeto minuscolo[27]; else if(a == L É ) return alfabeto maiuscolo[27]; else if(a == L è ) return alfabeto minuscolo[28]; else if(a == L È ) return alfabeto maiuscolo[28]; else if(a == L ì ) return alfabeto minuscolo[29]; else if(a == L Ì ) return alfabeto maiuscolo[29]; else if(a == L ò ) return alfabeto minuscolo[30]; else if(a == L Ò ) return alfabeto maiuscolo[30]; else if(a == L ù ) return alfabeto minuscolo[31]; else if(a == L Ù ) return alfabeto maiuscolo[31]; else return a;} int main(int narg, const char ** args) {if(narg == 1) return 1; ifstream is(args[1]); if(!is) return 2; streamsize q; is.seekg(0, ios::end), q = is.tellg(), is.seekg(0); char * buff = new char[q], c; is.read(buff, q), is.close(); string s(buff); istringstream iss(s); for(streamsize i=0; i!= q; ++i) iss.get(c), cout << PencaPolla(c);}
Concetto 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
DettagliINFORMATICA File di testo in C Roberta Gerboni
2018 - Roberta Gerboni File di testo in C++ Il linguaggio C++ mette a disposizione le seguenti classi per operare sui file (è necessario includere nel programma l header ), consentendo tipo di
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
DettagliGli stream. ios ostream. istream. iostream
I/O da FILE Gli stream Alla base delle operazioni di I/O, in C++, sta il concetto di stream (flusso) di byte tra la memoria principale ed i dispositivi di input (la tastiera, i file di sola lettura) e
DettagliFile. 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
DettagliInput / Output attraverso stream. I/O in C vs. I/O in C++
Alessio Bechini - Corso di - Input / Output attraverso stream (anno accademico 2002-2003) Utilizzo di stream per I/O I/O in C vs. I/O in C++ La libreria C standard per l I/O viene acceduta con stdio.h
DettagliStruttura di un programma C++
Struttura di un programma C++ // Programma semplice in C++ #include using namespace std; int main() { cout
DettagliCorso di Fondamenti di Informatica Il sistema dei tipi in C++
Corso di Fondamenti di Informatica Il sistema dei tipi in C++ Anno Accademico Francesco Tortorella Struttura di un programma C++ // Programma semplice in C++ #include int main() { cout
DettagliInput/Output. Input/Output. Lezione 16
Input/Output Lezione 16 Input/Output in C++ Il linguaggio C++ non prevede istruzioni specifiche per gestire le operazioni di input ed output di un programma L input e l output può essere gestito attraverso
DettagliLaboratorio di Algoritmi e Strutture Dati 2001/02 1
Lezione 16 in C++ Il linguaggio C++ non prevede istruzioni specifiche per gestire le operazioni di input ed output di un programma L input e l output può essere gestito attraverso librerie progettate in
Dettagli#include <iostream> #include <cstring> #include <fstream> using namespace std; struct elem{ char parola[31]; elem *pun; };
#include #include #include using namespace std; struct elem{ char parola[31]; elem *pun; ; struct Dizionario{ elem *testa; ; void inizializzadizionario(dizionario &D){ D.testa
DettagliInformatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1
Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1 Cosa è il C++ E un linguaggio di programmazione derivato dal C Può essere usato per modificare il SO Unix e i suoi derivati (Linux)
DettagliEreditarietà. Unità 9. 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
DettagliCorso di Fondamenti di Informatica Prof. Aldo Franco Dragoni Prova scritta del 21/06/2010. Avvertenze. Specifiche
Avvertenze Usare ESCLUSIVAMENTE penne ad inchiostro nero o blu (NO MATITE). Consegnare solo fogli formato A4 scritti da ambo le parti. In testa a ciascun foglio scrivere: cognome, nome, numero progressivo
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
DettagliUNIVERSITA DEGLI STUDI ROMA TRE DIPARTIMENTO DI MATEMATICA E FISICA
UNIVERSITA DEGLI STUDI ROMA TRE DIPARTIMENTO DI MATEMATICA E FISICA Laboratorio di Programmazione e Calcolo Cognome:... A.A. 2017-18 Nome:... Test Finale con Soluzioni Matricola:... Roma, 18 gennaio 2018
DettagliSoluzione del 25 giugno 2015
Soluzione del 25 giugno 2015 Problema unico Per quanto richiesto dal problema la class Isola dovrà avere un costruttore default accessibile e marcati con la clausola delete sia i costruttori copy e move
DettagliUNIVERSITA DEGLI STUDI ROMA TRE DIPARTIMENTO DI MATEMATICA E FISICA
UNIVERSITA DEGLI STUDI ROMA TRE DIPARTIMENTO DI MATEMATICA E FISICA Laboratorio di Programmazione e Calcolo A.A. 2018-19 Test Finale Roma, 17 gennaio 2019 1) Le variabili A, B e C sono dichiarate int.
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)
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
DettagliUno stream rappresenta un flusso di dati da cui e' possibile
L'I/O in C++ e' basato sul concetto di stream. Uno stream rappresenta un flusso di dati da cui e' possibile prelevare caratteri (input stream) inserire caratteri (output stream) I vari tipi di stream sono
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
DettagliBREVE INTRODUZIONE ALLA PROGRAMMAZIONE IN C++ E MATHEMATICA
BREVE INTRODUZIONE ALLA PROGRAMMAZIONE IN C++ E MATHEMATICA 1 LA PROGRAMMAZIONE STRUTTURATA Regole formali per la costruzione del software Metodo di astrazione suddivisione del programma in parti logiche
DettagliGli stream Classi, oggetti e librerie per l I/O cout, cin I manipolatori di stream, la libreria <iomanip> I flag di formattazione Gerarchia di dati
I/O da FILE Indice Gli stream Classi, oggetti e librerie per l I/O cout, cin I manipolatori di stream, la libreria I flag di formattazione Gerarchia di dati Creazione di file Apertura di file
DettagliL AMBIENTE CODE BLOCKS E L IO
L AMBIENTE CODE BLOCKS E L IO Il primo programma in C++ #include using namespace std; main() { cout
DettagliHo raggiunto la fine del file Provo a leggere un intero, ma il dato che prelevo dal file non è un intero
Stato di uno stream Uno stream possiede uno stato, che può essere corretto o errato. Quando lo stream è in stato di errore, non posso utilizzarlo. In lettura: Apertura di un file che non esiste X Ho raggiunto
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
DettagliUn esecutore di un linguaggio simbolico e costituito dalla coppia Compilatore, processore (o Interprete, processore)
Un esecutore di un linguaggio simbolico e costituito dalla coppia Compilatore, processore (o Interprete, processore) Macchina astratta: un linguaggio di programmazione trasforma un calcolatore in una macchina
DettagliLe funzioni: la dichiarazione
Funzioni I Parte Indice Le funzioni: dichiarazione, definizione e chiamata Le regole di visibilità (scope) Il passaggio degli argomenti per valore e riferimento La funzione main() Le funzioni: la dichiarazione
DettagliLe funzioni: dichiarazione, definizione e chiamata Il passaggio degli argomenti per valore e riferimento La funzione main() Le regole di visibilità
Funzioni I Parte Indice Le funzioni: dichiarazione, definizione e chiamata Il passaggio degli argomenti per valore e riferimento La funzione main() Le regole di visibilità Le funzioni: la dichiarazione
Dettagli#include <iostream> // libreria che gestisce flusso di input e output. using namespace std; // uso di librerie standard del C++
Qualsiasi programma in C++ segue lo schema: #include // libreria che gestisce flusso di input e output using namespace std; // uso di librerie standard del C++ int main() { // dichiarazioni
DettagliPassaggio di parametri per valore
Passaggio di parametri per valore #include using namespace std; int main() { int z, x = 1; z = ; cout
Dettagli4. Accesso diretto per gli archivi con record a lunghezza costante
4. Accesso diretto per gli archivi con record a lunghezza costante Nell accesso diretto (in inglese, random) al file binario, le operazioni di lettura o scrittura devono essere precedute dall operazione
DettagliDati due punti sul piano calcolare la loro distanza
Introduzione al C Primo esempio in C Dati due punti sul piano calcolare la loro distanza Soluzione: la distanza fra due punti si calcola secondo il teorema di Pitagora, con la formula: y Distanza = (lato12
DettagliProgrammazione modulare
Programmiamo in.. Programmazione modulare Un programma complesso si suddivide in più sottoprogrammi o funzioni. Un programma suddiviso in piccoli pezzi, è più semplice da gestire da aggiornare da correggere
DettagliUniversità 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
DettagliQualsiasi programma in C++ segue lo schema:
Qualsiasi programma in C++ segue lo schema: #include // libreria che gestisce flusso di input e output using namespace std; // uso di librerie standard del C++ int main() { // dichiarazioni
DettagliChar e bool. Unità 2. 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
DettagliLaboratorio Informatica Classe 4A Serale Venerdì 18/02/2011. Gruppo. Cognome Riontino Nome Raffaele. Cognome Nome
Laboratorio Informatica Classe 4A Serale Venerdì 18/02/2011 Gruppo Cognome Riontino Nome Raffaele Cognome Nome TRACCIA 2 ARGOMENTO: LISTE TEMPO: 4h 1. Utilizzando Typedef definire un nuovo tipo di dato
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
DettagliFondamenti di Informatica II 24. Gestione I/O e File in C++
Gli stream in C++ stream è un astrazione che rappresenta un flusso di dati che scorre tra una sorgente e una destinazione idea di Stroustrup : una sequenza di caratteri Fondamenti di Informatica II 24.
DettagliLe classi. Classi derivate
Classi derivate È possibile esprimere proprietà comuni tra le classi? I concetti che sottendono alle definizioni delle classi, sono in relazione tra loro o sono in comune? struct studente { string name;
DettagliClassi, oggetti e librerie per l'i/o
I/O da FILE Indice Gli stream Classi, oggetti e librerie per l I/O cout, cin I manipolatori di stream, la libreria I flag di formattazione Gerarchia di dati Creazione di file Apertura di file
Dettagli1 S t u d i o l e g a l e T e d i o l i v i a F r a t t i n i, M a n t o v a s t u d i o t e d i o l l i b e r o.
D. L. 2 8-0 3-2 0 0 3, n. 4 9 R i f o r m a d e l l a n o r m a t i v a i n t e m a d i a p p l i c a z i o n e d e l p r e l i e v o s u p p l e m e n t a r e n e l s e t t o r e d e l l a t t e e d e
Dettaglic h e d o v r e b b e e s s e r e d i p r o p r i e t à d e l l ' A S L N a p o l i 3 S u d u b i c a t o p r o p r i o l ' o
P R E S I D E N T E T e r z o p u n t o a l l ' o r d i n e d e l g i o r n o : i n t e r r o g a z i o n e g r u p p o c o n s i l i a r e " L i b e r i e d u g u a l i p e r S a n t ' A g n e l l o "
Dettagli1 S t u d i o l e g a l e T e d i o l i v i a F r a t t i n i, M a n t o v a s t u d i o t e d i o l l i b e r o.
D. L g s. 2 7-0 5-1 9 9 9, n. 1 6 5 S o p p r e s s i o n e d e l l ' A I M A e i s t i t u z i o n e d e l l ' A g e n z i a p e r l e e r o g a z i o n i i n a g r i c o l t u r a ( A G E A ), a n o
DettagliC O M U N E D I P O L I C O R O S T A T U T O D E L I B E R A N. 2 3 D E L 2 8 / 0 6 /
C O M U N E D I P O L I C O R O S T A T U T O D E L I B E R A N. 2 3 D E L 2 8 / 0 6 / 2 0 0 2 A r t. 1 L a C o m u n i t à 1. L o r d i n a m e n t o g i u r i d i c o d e l C o m u n e è l e s p r e
DettagliT R I B U N A L E D I T R E V I S O B A N D O P E R L A C E S S I O N E C O M P E T I T I V A D E L C O M P E N D I O A Z I E N D A L E D E L L E
1 T R I B U N A L E D I T R E V I S O B A N D O P E R L A C E S S I O N E C O M P E T I T I V A D E L C O M P E N D I O A Z I E N D A L E D E L L E O F F I C I N E M E C C A N I C H E D I P O N Z A N O
DettagliFondamenti di Informatica 2008 corso prof. A. Picariello. Operazioni sui FILE in C++
Fondamenti di Informatica 2008 corso prof. A. Picariello Operazioni sui FILE in C++ Librerie di I/O per la gestione dei FILE Il C++ consente di utilizzare le librerie standard di I/O del C mette anche
DettagliFile: /home/peppino/area_lavori/ese orgenti/oggetti/ohm_classe.cpp Pagina 1 di 5
File: /home/peppino/area_lavori/ese orgenti/oggetti/ohm_classe.cpp Pagina 1 di 5 * esempi_c++/sorgenti/ohm_classe.cpp * * Una classe semplice per applicare la legge di OHM * * @autore Giuseppe Talarico
Dettaglivoid funzioneprova() { int x=2; cout<<"dentro la funzione x="<<x<<endl; }
FUNZIONI 57. Cosa servono le funzioni? A spezzare il programma in diverse parti relativamente indipendenti fra loro, ovvero interagenti sono attraverso i parametri di input ed IL VALORE di uscita. In questo
DettagliGestione dei file di dati
Gestione dei file di dati 1. Le classi di input/output Il linguaggio C++ non dispone di proprie istruzioni per la gestione dell interazione con l utente. Si appoggia infatti su appositi comandi scritti
DettagliCorso di Algoritmi e Strutture Dati Lezione del Esercitatrice: dott.ssa Susanna Cozza. L argomento della lezione
L argomento della lezione Dall informazione al file Per permettere il riutilizzo di informazioni oltre la durata dei programmi che le hanno prodotte, i dati sono allocati su dispositivi in memoria secondaria.
DettagliCorso Programmazione 1 Capitolo 01: Concetti Elementari
Corso Programmazione 1 Capitolo 01: Concetti Elementari Docente: Roberto Sebastiani - roberto.sebastiani@unitn.it Esercitatori: Mario Passamani - mario.passamani@unitn.it Alessandro Tomasi - alessandro.tomasi@unitn.it
DettagliLe funzioni: dichiarazione, definizione e chiamata Il passaggio degli argomenti per valore e riferimento La funzione main() Le regole di visibilità
Funzioni I Parte Indice Le funzioni: dichiarazione, definizione e chiamata Il passaggio degli argomenti per valore e riferimento La funzione main() Le regole di visibilità Le funzioni Tutti i linguaggi
DettagliProgrammazione I Prova scritta - 10 gennaio h20min
Programmazione I Prova scritta - 10 gennaio 2019-1h20min NOTA: Nei programmi si trascuri ogni problema legato al tipo ed al valore di ritorno della funzione main, inoltre si sottintenda la presenza delle
DettagliFondamenti di Informatica
Programmazione modulare (top-down) Fondamenti di Informatica 15. Funzioni in C++ (parte 1) Problemi complessi Conviene suddividere il programma in sottoprogrammi piu semplici mediante la metodologia di
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
DettagliL AMBIENTE CODE BLOCKS E L IO
L AMBIENTE CODE BLOCKS E L IO Il primo programma #include main() { printf("ciao Mondo!"); } Il file deve essere salvato con estensione.c Il primo programma in C++ #include using
DettagliFile: /home/peppino/area_lavori/ese enti/oggetti/timbro_classe.cpp Pagina 1 di 5
File: /home/peppino/area_lavori/ese enti/oggetti/timbro_classe.cpp Pagina 1 di 5 * esempi_c++/sorgenti/timbro_classe.cpp * * Una classe semplice per apprendere la programmazione * ad oggetti ( OOP ). *
DettagliProgrammazione I Prova scritta - 18 febbraio h20min
Programmazione I Prova scritta - 18 febbraio 2019-1h20min NOTA: Nei programmi si trascuri ogni problema legato al tipo ed al valore di ritorno della funzione main, inoltre si sottintenda la presenza delle
DettagliMatematica - SMID : Programmazione 20 Febbraio 2007 FOGLIO RISPOSTE
Matematica - SMID : Programmazione 20 Febbraio 2007 FOGLIO RISPOSTE NOME: COGNOME: ============================================================== Esercizio 1 ci sono tante "righe"; non è detto servano
DettagliDal C al C++ Corso di Linguaggi di Programmazione ad Oggetti 1. a cura di Giancarlo Cherchi
Dal C al C++ Corso di Linguaggi di Programmazione ad Oggetti 1 a cura di Giancarlo Cherchi 1 Commenti Non aumentano la dimensione del programma eseguibile ma si rivelano utili per riassumere il comportamento
DettagliLaboratorio di Informatica
Gli stream in C++ Laboratorio di Informatica 8. Gestione I/O e file in C++ Corso di Laurea in Ingegneria Elettronica e Telecomunicazioni A.A. 2013-2014 2 Semestre Prof. Giovanni Pascoschi stream è un astrazione
DettagliGestire le situazioni di errore
Gestire le situazioni di errore #include using namespace std; Classe VettoreDiInteri const int MAX = 10; class VettoreInteri { int v[max]; public: ; Gestire le situazioni di errore Ottenere
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
DettagliIl paradigma OO e le Classi
Oggetti e Classi (CAP 10) Alberto Garfagnini Università degli studi di Padova 1 Dicembre 2009 Il paradigma OO e le Classi La programmazione ad Oggetti () è una filosofia di programmazione che si basa sui
DettagliIl C nel C++ Struttura di un linguaggio. regole per la definizione i simboli. regole per la composizione dei simboli
Il C nel C++ Struttura di un linguaggio Livello lessicale: regole per la definizione i simboli Livello sintattico: regole per la composizione dei simboli Livello semantico: significato delle strutture
DettagliStruttura di un linguaggio
Il C nel C++ Struttura di un linguaggio Livello lessicale: regole per la definizione i simboli Livello sintattico: regole per la composizione dei simboli Livello semantico: significato delle strutture
Dettagli//=============================== class String { // VARIABILI DI ISTANZA char * base; int length;
#include using namespace std; String STRING 1 //=============================== class String { // VARIABILI DI ISTANZA char * base; int length; //METODI // metodi interni di servizio-------------------------------
DettagliInformatica/ Ing. Meccanica/ Ing. Edile/ Prof. Verdicchio/ 05/02/2014/ Foglio delle domande / VERSIONE 1
Informatica/ Ing. Meccanica/ Ing. Edile/ Prof. Verdicchio/ 05/02/2014/ Foglio delle domande/ VERSIONE 1 1) Nell uso dei puntatori in C++ la scrittura -> vuol dire: a) riferimento b) dereferenziazione e
DettagliFunzioni. Unità 1. 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
DettagliString. String: Esercizio 1
1 String class String { private: // VARIABILI DI ISTANZA char * base; int length;... 2 String: Esercizio 1 Scrivere e testare i metodi di base: a. i costruttori String(), String(char * s), b. il distruttore.
DettagliQualsiasi programma in C++ segue lo schema:
Qualsiasi programma in C++ segue lo schema: #include // libreria che gestisce flusso di input e output using namespace std; // uso di librerie standard del C++ int main() { // dichiarazioni
Dettaglia r t t e s e g g. l. f. c o m e n o v e l l a t e d a l d. l g s n. 5 i n v i r t ù d i
T r i b u n a l e C i v i l e e P e n a l e d i M a n t o v a S e z i o n e S e c o n d a C i v i l e I l T r i b u n a l e d i M a n t o v a, r i u n i t o i n C a m e r a d i C o n s i g l i o e c o
Dettagli( 4 ) I l C o n s i g l i o e u r o p e o r i u n i t o s i a T a m p e r e i l 1 5 e 1 6 o t t o b r e h a i n v i t a t o i l C o n s i g l
R e g o l a m e n t o ( C E ) n. 4 / 2 0 0 9 d e l C o n s i g l i o, d e l 1 8 d i c e m b r e 2 0 0 8, r e l a t i v o a l l a c o m p e t e n z a, a l l a l e g g e a p p l i c a b i l e, a l r i c
Dettagliciclo di vita della soluzione (informatica) di un problema
Università di Roma Tor Vergata L2-1 ciclo di vita della soluzione (informatica) di un problema errori run-time errori sintattici codice editor codice C++ compilatore esegui eseguibile OK risultati scorretti
DettagliLaboratorio di Informatica
Strutture di dati Laboratorio di Informatica 5. Strutture / Array di oggetti / Pila&Coda in C++ Una struttura è un insieme finito di variabili (dette campi) non necessariamente dello stesso tipo, ognuna
DettagliVariabili. Unità 2. 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
DettagliFondamenti di Informatica
Strutture dati complesse Esempi di strutture dati complesse analizzate in questa lezione: Fondamenti di Informatica 21. Strutture di dati complesse in C++ Array di puntatori Pila (Stack) Coda (queue) Liste
DettagliUniversità degli Studi di Cassino Corso di Fondamenti di Informatica Puntatori. Anno Accademico 2010/2011 Francesco Tortorella
Corso di Informatica Puntatori Anno Accademico 2010/2011 Francesco Tortorella Variabili, registri ed indirizzi Abbiamo visto che la definizione di una variabile implica l allocazione (da parte del compilatore)
DettagliESERCIZIO 1. AZ111 milano 12:34 23 AZ222 buenos-aires 12: BA333 toronto 4:15 20 KM444 madrid 10:12 100
ESERCIZIO 1 Scrivete un programma per la gestione delle informazioni relative ai voli giornalieri in partenza da un certo aeroporto. Il programma deve leggere da file le informazioni relative ai voli,
DettagliW I L L I A M S H A K E S P E A R E G I U L I O C E S A R E. T r a g e d i a i n 5 a t t i
W I L L I A M S H A K E S P E A R E G I U L I O C E S A R E T r a g e d i a i n 5 a t t i T r a d u z i o n e e n o t e d i G o f f r e d o R a p o n i T i t o l o o r i g i n a l e : J U L I U S C A E
DettagliMatematica - SMID : Programmazione Gennaio 2009 FOGLIO RISPOSTE
Matematica - SMID : Programmazione Gennaio 2009 FOGLIO RISPOSTE NOME: COGNOME: ============================================================== Esercizio 1 ci sono tante "righe"; non è detto servano tutte...
DettagliClasse: vettore di interi
Classe: ettore di interi #include using namespace std; int main() { Oggetto VettoreInteri contenente 10 elementi di tipo intero VettoreInteri ett;... return 0; Se olessimo un ettore di 20 elementi?
DettagliText files, streams. I file che ci interessano sono file di testo. anche se, logicamente, contengono numeri o altro
Text files, streams I file che ci interessano sono file di testo anche se, logicamente, contengono numeri o altro In C/C++ ci sono anche i file binari, ma li ignoriamo file di testo = ASCII file = successione
DettagliCommenti. I commenti vengono ignorati dal compilatore, ovvero non vengono tradotti in codice eseguibile. /* righe multiple seconda riga */
Introduzione al C++ Sommario Le differenze fra C e C++ commenti parametri per funzioni funzioni inline overloading di funzione input/output nuovi header punto di dichiarazione delle variabili locali allocazione/deallocazione
DettagliIngresso ed Uscita(1)
Ingresso ed Uscita(1) Un flusso (stream) corrisponde ad un istanza di una classe la cui parte pubblica contiene le operazioni necessarie e la parte privata le strutture dati (tra cui un buffer per memorizzare
Dettaglistruct costobiglietto { //struttura per prezzo float prezzo; float tasse; float prezzototale; };
/* Programma 12cppEse1.cpp Autore : Riontino Raffaele 4 informatici ITIS Molinari - Milano corso serale 2/11/2010 Testo : Si vuole realizzare un tipo struct, utilizzato per informazioni su biglietti per
DettagliESERCIZI DI PROGRAMMAZIONE C/C++ per le classi seconde
ESERCIZI DI PROGRAMMAZIONE C/C++ per le classi seconde vers.0 in lavorazione Docente SAFFI FABIO Contenuti Struttura del file sorgente...2 Organizzazione della directory di lavoro...2 Esercizi sulle funzione
DettagliLa programmazione ad oggetti (OOP)
Oggetti e Classi (CAP 10) Alberto Garfagnini, Marco Mazzocco Università degli studi di Padova 30 Novembre 2011 La programmazione ad oggetti (OOP) È un approccio concettuale alla programmazione (indipendente
Dettaglieccezioni Alberto Ferrari Alberto Ferrari Programmazione di applicazioni SW
eccezioni Alberto Ferrari eccezioni o C++ fornisce strumenti per gestire situazioni eccezionali o terminologia o sollevare un eccezione (to throw an exception) = segnalare una situazione eccezionale o
DettagliClasse Squadra. #include <iostream> using namespace std;
Classe Squadra Si vuole scrivere un programma che gestisce la classifica di un campionato tra squadre di calcio, ognuna identificata dal proprio nome. Il programma deve essere in grado di assegnare un
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 =
DettagliFondamenti di Informatica Ing. Biomedica
Fondamenti di Informatica Ing. Biomedica Esercitazione n.8 Matrici Antonio Arena antonio.arena@ing.unipi.it Fondamenti di Informatica - Esercitazione n.8 2 Matrici In C++ viene trattata come array multi-dimesionale.
DettagliSintassi: FORTRAN vs C/C++
Sintassi: FORTRAN vs C/C++ Struttura del programma In C/C++ non è necessario un particolare formato il codice PROGRAM PROGRAM TEST TEST C esempio esempio di di programma programma spazi END END Il C/C++
Dettagli1 S t u d i o l e g a l e T e d i o l i v i a F r a t t i n i, M a n t o v a m a i t e d i o l i. c o m
C o n v e n z i o n e d e l l A j a 2 5-1 0-1 9 8 0 C o n v e n z i o n e s u g l i a s p e t t i c i v i l i d e l l a s o t t r a z i o n e i n t e r n a z i o n a l e d i m i n o r i P r e a m b o l
Dettagli1 S t u d i o l e g a l e T e d i o l i v i a F r a t t i n i, M a n t o v a m a i t e d i o l i. c o m
C o n v e n z i o n e E u r o p e a d e l L u s s e m b u r g o, 2 0-0 5-1 9 8 0. C o n v e n z i o n e e u r o p e a s u l r i c o n o s c i m e n t o e l ' e s e c u z i o n e d e l l e d e c i s i o
DettagliProgrammazione ad Oggetti. Java Parte II
Programmazione ad Oggetti Java Parte II Overview Caratteristiche lessicali Il primo programma Java 1 Commenti /* Commento tradizionale, eventualmente su più linee, non nidificato */ // Commento su di una
Dettagli