Elementi di Informatica A. A. 2016/2017

Documenti analoghi
4 GLI ARRAY E LE STRINGHE

INTRODUZIONE ALLE BASI DATI RELAZIONALI

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre Negli esercizi proposti si utilizzano le seguenti classi:

ACCESS. Database: archivio elettronico, dotato di un programma di interfaccia che facilita la registrazione e la ricerca dei dati.

CAPITOLO V. DATABASE: Il modello relazionale

IL CONCETTO DI FILE. È illecito operare oltre la fine del file.

Procedura operativa per la gestione della funzione di formazione classi prime

Esercitazione 4. Comandi iterativi for, while, do-while

1 DESCRIZIONE DELLE FUNZIONI REGISTRAZIONE UTENZE INTERNET Caricamento utente internet (data entry)... 3

Manuale XML SERVICE FATTURA ELETTRONICA EASY. Version Description Author Date Approved Approved date V1 30/06/2014 V2 01/12/2014

Funzioni condizionali

La disposizione estetica della lettera commerciale

elicaweb manuali - logistica magazzino - pagina 1 di 5

Autodesk Map parte I digitalizzazione e importazione dati

Grafici e Pagina web

Integrazione al Manuale Utente 1

3.5.1 PREPARAZ1ONE I documenti che si possono creare con la stampa unione sono: lettere, messaggi di posta elettronica, o etichette.

Laboratorio di Programmazione Lezione 1. Cristian Del Fabbro

Accreditamento al portale di Roma Capitale

Questa è la finestra dei dettagli, è possibile selezionare anche da qui un modello o un pezzo per essere aperto.

2) FILE BINARI: è una sequenza di byte avente una corrispondenza uno a uno con la sequenza ricevuta dal dispositivo esterno.

Via Oberdan, 42, Faenza (RA) Italy Tel.: Fax: WAVE MODE MOBILE GUIDA RAPIDA

Veneto Lavoro via Ca' Marcello 67/b, Venezia-Mestre tel.: 041/

Manuale Sito Videotrend

Somma di numeri floating point. Algoritmi di moltiplicazione e divisione per numeri interi

Modalità di registrazione al Portale della Pubblica Amministrazione

* in giallo le modifiche apportate rispetto alla versione precedente datata 17/04/2012

SCHEDA DI VALUTAZIONE DELLE COMPETENZE. Tecnico Professionali Specifiche

Files in C++ Fondamenti di Informatica. R. Basili. a.a

SPORTELLO DIPENDENTE. - Personale amministrativo tecnico ausiliario (A.T.A.);

EXCEL. Alfabetizzazione Informatica Prof. GIUSEPPE PATTI

Sito del sistema bibliotecario Area Nord Ovest

Mobile Programming. Prova scritta del 22/01/2016. Prof. De Prisco. Corso di laurea in Informatica

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

I database. Introduzione alla teoria delle basi di dati

e-shop Ordina online i tuoi prodotti con pochi e semplici clic!

MANUALE UTENTE Scrittura lettura ISEE su CSE Agosto 2013 Versione 1.0

GUIDA STUDENTE PIATTAFORMA ELEARNING MOODLE

Ministero della Salute

Modulo 2 Data Base - Modello Relazionale

Unità Didattica 3 Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.

Guida alla registrazione

18/05/2016 MANUALE UTENTE

Laboratorio di Informatica L-A 1. ne: M se macchina, P se parte Nel caso di macchina seguono: L identificatore

Gestione di files Motivazioni

Input/output in C e in C++

ANAGRAFE NAZIONALE CREDITI FORMATIVI. Manuale utente

4 Le liste collegate 4.0. Le liste collegate. 4 Le liste collegate Rappresentazione di liste 4.1 Rappresentazione di liste

per immagini guida avanzata Modificare il contenuto del foglio di lavoro Geometra Luigi Amato Guida Avanzata per immagini Excel

L INTERFACCIA GRAFICA DI EXCEL

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

Lettura e scrittura di file di dati input/output

Pro memoria per la ripartizione delle spese

Gestione risorse (Windows)

Riconoscere e formalizzare le dipendenze funzionali

Corso di Fondamenti di Informatica

WINDOWS Avviare Windows95. Avviare Windows95 non è un problema: parte. automaticamente all accensione del computer. 2. Barra delle applicazioni

PSC Doc Manuale d uso

Home Page. Title Page. Contents. Laboratorio di LATEX. Page 1 of 16. Go Back. maggio Full Screen. Close. Quit

PROCEDIMENTO DI COMPILAZIONE DELLA SCIA E DELL EVENTUALE INTERCALARE REQUISITI PER L AVVIO DELL ATTIVITA DI AGENTE E/O RAPPRESENTANTE DI COMMERCIO

Fast Patch 0336 Predisposizione operazioni superiori a euro Release 7.0

M n a u n a u l a e l e o p o e p r e a r t a i t v i o v o Ver /12/2014

TRACCIATO RECORD DI TESTA. Tipo di dato. Codice numerico NU Vale sempre "53" TIPOLOGIA DI INVIO

Manuale cliente finale portale accertamenti delibera 40

Istruzioni helpdesk:

Richiesta di contributo per il sostegno alla locazione di cui all art. 11, L. 431/98 e s.m.i.

ALLEGATO: ISTRUZIONI PER L OPERATORE DI SEDE PER ACQUISIRE LE DOMANDE TELEMATICHE DI RICONGIUNZIONE

Strumento di conversione DWG/DXF

ISCRIZIONI ON LINE Registrazione delle famiglie. Direzione generale per gli studi, la statistica e i sistemi informativi

Sistemi Operativi Esercizi Gestione Memoria

Introduzione alle macchine a stati (non definitivo)

PSICOMETRIA. Esercitazione n.1. C.d.L. Comunicazione e Psicologia a.a. 2012/13

Manuale di gestione scheda su sito

Progetto B. Utenti. Di conseguenza si potranno avere solo utenti di questi tipi

PLIDA Progetto Lingua Italiana Dante Alighieri Certificazione di competenza in lingua italiana

Esame del 3 febbraio 2010

Istruzioni per l uso di Presenze 2009

SISTEMI LINEARI MATRICI E SISTEMI 1

Esame di Informatica Generale 25 giugno 2010 Professori: Carulli, Fiorino, Mazzei

Sistemi Web per il turismo - lezione 3 -

PowerDIP Software gestione presenze del personale aziendale. - Guida all inserimento e gestione dei turni di lavoro -

Audience di riferimento

Lavoro & Previdenza La circolare su temi previdenziali e giuslavoristici

GUIDA PER LA COMPILAZIONE DELLA DOMANDA ON LINE DI PARTECIPAZIONE AL

La programmazione nel linguaggio C

RICHIESTA CERTIFICATO DI AGIBILITÀ IMPRESE CHE OCCUPANO LAVORATORI DEL SETTORE DELLO SPETTACOLO

1. COME ISCRIVERSI AL CONCORSO


WINDOWS TERMINAL SERVER PER L ACCESSO REMOTO AL SISTEMA DI PROTOCOLLO INFORMATICO

ETICHETTE. Gestione Etichette e Sovrappacchi. Release 5.20 Manuale Operativo

Layout Editor e Stampa

Avviso per la presentazione della domanda esame di laurea on line

Compito Sistemi Informativi LA. Tempo concesso : 90 minuti 28 Giugno 05 Nome: Cognome: Matricola: Esercizio 1

ibiscontrino semplifica la gestione del tuo punto vendita App Ios/Android + Stampante fiscale Epson FP81II

Prenotarsi agli appelli guida sportello internet

3. Terza esercitazione autoguidata: progetto gestione voli

Si considerino le seguenti specifiche per la realizzazione di un sito web per la gestione di abbonamenti a riviste di vario genere..

Manuale utente Soggetto Promotore Erogatore Politiche Attive

Visualizzare o modificare il codice sorgente del documento (per utenti avanzati,linguaggio HTML).

Metodo alternativo per il calcolo delle divisioni.

Transcript:

Elementi di Informatica A. A. 2016/2017 Ing. Nicola Amatucci Università degli studi di Napoli Federico II Scuola Politecnica e Delle Scienze di Base nicola.amatucci@unina.it

Programmazione C++ Parte 2

Da dove studiare? «Che C Serve», Capitolo 4

Dati Strutturati Una variabile appartenente ad un tipo semplice contiene un unico valore scelto nell'ambito del tipo Ad es. "int a;" può contenere solo un intero Più tipi semplici possono essere aggregati a formare un unico tipo strutturato Un Array è costituito da più componenti dello stesso tipo Un Record è un'informazione strutturata costituita da componenti di tipo diverso Ad es. una voce della rubrica telefonica è costituita da parole e numeri

Array Gli elementi di un Array (o Vettore) sono tutti dello stesso tipo hanno tutti lo stesso nome sono accessibili indicando la loro posizione nell'array (gli indici partono da 0) Un Array ha una dimensione predefinita (indicata da una costante) Permette di allocare locazioni di memoria consecutive L'etichetta (il nome del vettore) contiene la posizione in memoria del primo elemento

Dichiarazione di un Array Per dichiarare un Array si deve indicare Tipo Nome (o etichetta) Dimensione Esempio: int a[3]; float b[10]; char c[20]; tipo nome[dimensione];

Inizializzazione degli Array Per inizializzare un Array si utilizza una lista di tipi semplici rinchiusi tra parentesi graffe Ad esempio int a[3] = {1,2,3}; float b[2] = {-0.1, 0.1}; char ciao[5] = {'c', 'i', 'a', 'o', '\0'}; int tutti_zero[10] = {0}; Nell'ultimo caso, utilizzando {0} la memoria che contiene l'array viene inizializzata interamente a zero

Gli array: funzione di accesso Per accedere agli elementi bisogna utilizzare la posizione dell'elemento all'interno dell'array La posizione di memoria salvata all'interno dell'etichetta è quella del primo elemento esso si trova in posizione zero Il secondo elemento sarà in posizione 1 posizione in memoria del primo elemento più 1 Si arriva fino a N-1, dove N è la dimensione (o cardinalità) dell'array (il numero tra parentesi quadre)

Gli array: funzione di accesso int vettore[5] = {22, 12, 5, 13, 65}; vettore[0] vettore[1] vettore[2] vettore[3] vettore[4] 22 12 5 13 65

Array Multidimensionali Array Bidimensionale (o Matrice) Un elemento dell'array è a sua volta un Array dello stesso tipo Dichiarazione int matrice[4][3]; È una matrice di 4 righe e 3 colonne 1 3 5 22 24 7 11 6 49 37 61 25

Array Multidimensionali: Dichiarazione In generale, per dichiarare un array multi-dimensionale tipo nome[dimensione1] [dimensione2] [dimensione3]. [dimensionex]; Per identificare un elemento saranno necessarie tante posizioni quante sono quelle definite in fase di dichiarazione Se una matrice è un vettore di vettori, un array multidimensionale è un vettore di vettori di vettori di vettori

Array Multidimensionali: Inizializzazione int matrice[4][3] = { {1,3,5}, {22,24,7}, {11, 6, 49}, {37,61,25}}; 1 3 5 22 24 7 11 6 49 37 61 25 Se scrivo int matrice[4][3] = {0}; Inizializzo tutti gli elementi della matrice a zero

Array Multidimensionali: Accesso Per accedere ad un elemento di un vettore multidimensionale bisogna indicare le posizioni in tutte le dimensioni definite Ad esempio, per una matrice "int matrice[4][3];" matrice[0][0] = 1; matrice[0][1] = 3; matrice[1][0] = 22; 1 3 5 22 24 7 11 6 49 37 61 25

Memoria e Array Multidimensionali Per semplicità consideriamo un array bidimensionale (matrice) 1 3 5 22 24 7 11 6 49 37 61 25 In memoria avremo che la seconda riga comincia alla posizione di memoria 2 + 1 (ricordando che si parte da 0) matrice[0][0] matrice[0][1] matrice[0][2] matrice[1][0] matrice[1][1] matrice[1][2] 1 3 5 22 24 7

Memoria e Array Multidimensionali Sotto questo punto di vista è possibile vedere un array multidimensionale come un array monodimensionale molto grande Utilizzando più indici l'accesso alle singole posizioni viene "semplificato" Possiamo inoltre dichiarare un array multidimensionale omettendo le parentesi graffe int matrice[4][3] = { 1, 3, 5, 22, 24, 7, 11, 6, 49, 37, 61, 25}; Meno comprensibile di quando ci sono le parentesi graffe!

Array e Stringhe Un Array di char è anche detto stringa Un array di questo tipo, per poter essere utilizzato da C++ (ad es. in cout) deve avere un elemento detto terminatore '\0' Ad esempio char ciao[10] = {'c','i','a','o','\0'}; Si può anche usare una inizializzazione alternativa char ciao[10] = "ciao"; In questo caso '\0' è aggiunto automaticamente

Inizializzazione aggregata di Array Se l'array (monodimensionale) viene inizializzato, è possibile omettere la dimensione int vettore[] = {1,2,3}; la dimensione è definita in modo implicito attraverso il numero di valori forniti Da utilizzare con attenzione Preferibile l'uso di un carattere terminatore Molto utile nel caso di stringhe Implicitamente hanno un carattere terminatore Ad es. int ciao[] = "ciao"; Nel caso di array bidimensionali (matrici), è possibile omettere solo il primo indice Ad es. int matrice[][3] = = { {1,3,5}, {22,24,7}, {11, 6, 49}, {37,61,25}};

Errori Frequenti In C++ non è possibile assegnare un array ad un altro int a[3] = {1,2,3}; int b[3]; b = a; //errore! Il C++ non effettua il controllo sui limiti degli array Non c'è nulla che eviti lo sconfinamento alla fine di un array Sconfinare significa andare ad accedere ad aree di memoria ad esempio riservate altre variabili o vuote Il programmatore deve aggiungere un controllo di errore adeguato a seconda delle necessità

Esercizio Dati due vettori in ingresso, implementare il prodotto scalare trai due vettori Date due matrici, implementare la somma di matrici

Record Un Record (o Struttura) è una collezione di elementi di tipo diverso (o anche dello stesso), raggruppati sotto un unico nome Un elemento è detto campo Ogni campo ha un tipo ed un nome Il tipo può essere semplice o strutturato (array o record) Consente di aggregare informazioni che appartengono allo stesso "concetto" Esempio Studente Matricola (intero) Nome (array di char) Cognome (array di char)

Record in C++: Dichiarazione struct studente { int matricola; char nome[20]; char cognome[20]; }; Ogni campo della struttura è di un tipo semplice (int) o strutturato (array di char)

Record in C++: Dichiarazione In generale struct nome { tipo1 nome1; tipo2 nome2; }; Ogni campo termina per ; Dopo la parentesi graffa c'è ;

Record in C++: Dichiarazione Una volta definita una struct è possibile dichiarare variabili che siano del tipo definito struct studente { int matricola; char nome[20]; char cognome[20]; }; struct studente mario_rossi; struct studente gennaro_esposito;

Record in C++: Dichiarazione È possibile anche dichiarare delle variabili contemporaneamente alla struct struct studente { int matricola; char nome[20]; char cognome[20]; } mario_rossi, gennaro_esposito; In questo caso la "struct studente" non potrà essere usata per costruire altre variabili

Record in C++: Inizializzazione Definita una struttura, per inizializzare una variabile del tipo della struttura si inseriscono i valori tra parentesi graffa, separati da ',' come per un array struct nome_record variabile = {valore1, valore2, valorex};

Record in C++: Inizializzazione struct studente { int matricola; char nome[20]; char cognome[20]; }; struct studente mario_rossi = {34, "mario", "rossi"}; struct studente studente2 = {36, "gennaro", "esposito"};

Record in C++: Accesso ai campi Per accedere ai valori dei campi si utilizza la "dot notation" Si utilizza l'operatore '.' (punto) Lettura cout << mario_rossi.cognome; Assegnazione mario_rossi.matricola = 34; cin >> mario_rossi.matricola;

Esempio struct Data { int giorno, mese, anno; }; struct Persona { char nome[20]; char cognome[20]; Data data_di_nascita; }; //inizializzazione Persona mario = {"mario", "Rossi", {10,10,1990}}; //assegnazione mario.nome[0] = 'M'; mario.data_di_nascita.giorno = 15; //lettura int giorno = mario.data_di_nascita.giorno; cout << mario.nome;

Record in C++: Assegnamento Un record può essere copiato in un record dello stesso tipo NOTA: due tipi struttura che differiscono solo per il nome sono considerati diversi! struct Data { int giorno, mese, anno; }; struct DT { int giorno, mese, anno; }; struct Data oggi = {24,11,2016}; struct DT oggi1; oggi1 = oggi; //errore!

Record in C++: dichiarazione innestata struct studente { int matricola; char nome[20]; char cognome[20]; struct Data { int giorno, mese, anno; } data_di_nascita; }; In questo caso, la data di nascita è definita a sua volta come record

Record in C++: array di record È possibile dichiarare array di record utilizzando la stessa sintassi utilizzata per i tipi base struct Studente[10]; Sarà possibile accedere ad ogni struct utilizzando gli indici La memoria sarà riservata automaticamente da C++

Definizione di alias in C++: Typedef Utilizzando la parola chiave typedef in C++ è possibile definire alias per un altro tipo esistente typedef tipo alias; Consideriamo "char str[100]" vorremmo poter utilizzare un sinonimo più comprensibile e sintetico Ad es. "stringa str;" Per farlo possiamo definire un alias typedef char stringa[100]; Posso assegnare un alias anche ai tipi semplici typedef unsigned short int ushort; In questo caso possiamo scrivere "ushort variabile;", invece di scrivere per esteso "unsigned short int variabile;"

Typedef e Record Anche nel caso del tipo Record è possibile utilizzare la parola chiave typedef In particolare l utilizzo del typedef con la struct ha il seguente significato: prima si definisce una struttura anonima poi l'uso di typedef crea un alias per quel tipo struttura typedef struct { int matricola; char nome[20]; char cognome[20]; struct Data { int giorno, mese, anno; } data_di_nascita; } studente;

Esempio: Agendina Telefonica Date le seguenti dichiarazioni typedef char stringa[ns]; typedef struct { stringa nome; int cellulare; int fisso; } Contatto; typedef Contatto Contatti[N]; Vogliamo realizzare un'agendina con le seguenti funzionalità: inserisci Stampa Contatto Stampa Elenco Cerca da Numero di Telefono