[align=center]C++
Fondamenti di programmazione Theory
Harvey M. Deitel, Paul J. Deitel
[/align]
---[ Descrizione ]---
Questo testo introduce alla programmazione in C++ in modo graduale e attraverso esempi reali, completamente svolti ed eseguibili.
Si tratta di un manuale dalla formula didattica collaudata ed efficace, messa a punto in decenni di insegnamento.
La chiarezza e la meticolosità della spiegazione, la cura nella preparazione degli apparati didattici e l'attenzione agli aspetti pratici dell'attività di programmazione rendono questo libro uno strumento unico e insostituibile nella biblioteca di un programmatore.
---[ Dati ]---
Titolo originale : C++ How to program, Third Edition
Titolo italiano : C++; fondamenti di programmazione
Autore : Harvey M. Deitel, Paul J. Deitel
Editore :Prentice Hall (Apogeo per l'edizione italiana)
ISBN : 88-7303-670-8
Numero di pagine : 692 (346 doppie)
Dimensione : 106 MB
Formato : PDF
---[ Contenuti ]---
- Capitolo 1: Introduzione: i computer, la programmazione e il C++
[LIST]- Introduzione
- Che cos'è un computer
- La struttura del computer
- L'evoluzione dei sistemi operativi
- I personal computer, i sistemi distribuiti e i sistemi client/server
- I linguaggi macchina, assembly e ad alto livello
- Il C e il C++: un po' di storia
- La libreria standard del C++
- Java, Internet ed il World Wide Web
- altri linguaggi ad alto livello
- La programmazione strutturata
- Gli elementi fondamentali di un tipico ambiente C++
- Alcune considerazioni generali sul C++ e sul nostro corso
- Un programma semplice: visualizzare una linea di testo
- Un altro semplice programma: l'addizione di due numeri interi
- La memoria: concetti fondamentali
- I calcoli aritmetici
- Prendere decisioni: gli operatori relazionali e di uguaglianza
- Le nuove convenzioni per i file di intestazione e gli spazi dei nomi
- Pensare in termini di oggetti, le tecniche orientate agli oggetti e UML (Unified Modeling Language
- Introduzione all'analisi e alla progettazione orientate agli oggetti (OOAD)
- Storia di UML
- Che cos'è UML
[*]Capitolo 2: le strutture di controllo
- Introduzione
- Gli algoritmi
- Lo pseudocodice
- Le strutture di controllo
- La struttura di selezione if
- La struttura di selezione if/else
- La struttura iterativa while
- Tipologie di algoritmi di iterazione: l'iterazione controllata da un contatore
- Tipologie di algoritmi di iterazione: l'iterazione controllata da un valore sentinella
- Tipologie di algoritmi e ridefinizione top-down: le strutture di controllo nidificate
- Gli operatori di assegnamento
- Gli operatori di incremento e decremento
- Concetti fondamentali dei cicli controllati da variabili contatore
- La struttura di iterazione for
- Esempi di costrutti for
- La struttura di selezione switch
- La struttura iterativa do/while
- Le istruzioni break e continue
- Un errore tipico: confondere l'operatore di uguaglianza == con l'operatore di assegnamento =
- Riepilogo dei concetti fondamentali della programmazione strutturata
- Pensare in termini di oggetti: come individuare le classi in un problema
[progetto opzionale]- Definizione del problema
- Analisi e progettazione del sistema
- I diagrammi dei casi d'uso
- L'identificazione delle classi di un sistema
- I diagrammi delle classi
- I diagrammi degli oggetti
[*]Capitolo 3: le funzioni
- Introduzione
- Componenti di un programma in C++
- Le funzioni matematiche della libreria standard
- Le funzioni
- La definizione di una funzione
- I prototipi di funzione
- I file di intestazione
- La generazione di numeri casuali
- I giochi d'azzardo e la parola riservata enum
- Le informazioni di memorizzazione
- Le regole di visibilità
- Il concetto di ricorsione
- Un altro esempio di ricorsione: la serie di Fibonacci
- Ricorsione o iterazione
- Le funzioni che hanno una lista di parametri vuota
- Le funzioni in linea
- I riferimenti e il passaggio di parametri per riferimento
- Gli argomenti di default
- L'operatore unario di risoluzione dello scope
- L'overloading delle funzioni
- Le funzioni generiche
- Pensare in termini di oggetti: come identificare gli attributi di una classe
[progetto opzionale]- I diagrammi di stato
- I diagrammi delle attività
- Conclusione
[*]Capitolo 4: gli array
- Introduzione
- gli array
- Come si dichiara un array
- Alcuni esempi di array
- Il passaggio di un array a una funzione
- Gli algoritmi di ordinamento e gli array
- Il calcolo di media, mediana e moda con gli array
- Le ricerche in array: ricerca lineare e binaria
- Gli array multidimensionali
- Pensare in termini di oggetti: come identificare le operazioni di una classe
[progetto opzionale]- I diagrammi di sequenza
[*]Capitolo 5: puntatori e stringhe
- Introduzione
- Come si dichiarano e si inizializzano i puntatori
- Gli operatori di manipolazione dei puntatori
- La chiamata per riferimento con argomenti di tipo puntatore
- Privilegi di accesso e passaggio di parametri
- L'algoritmo di ordinamento a bolle con i puntatori
- L'aritmetica dei puntatori
- La correlazione tra puntatori e array
- Gli array di puntatori
- Un programma per mescolare e distribuire carte da gioco
- I puntatori a una funzione
- Introduzione alla manipolazione di caratteri e stringhe
- Caratteri e stringhe: concetti fondamentali
- Le funzioni di libreria per le stringhe
- Pensare in termini di oggetti: le collaborazioni tra gli oggetti
[progetto opzionale]- I diagrammi delle collaborazioni
- Riepilogo
- Risorse in rete sull'UML
[*]Capitolo 6: le classi e l'astrazione dei dati
- Introduzione
- Come si definisce una struttura
- Come si accede ai membri di una struttura
- L'implementazione del tipo di dato Time come struttura
- L'implementazione del tipo di dato Time come classe
- La visibilità a livello di classe e l'accesso ai membri di una classe
- La separazione di interfaccia e implementazione
- Il controllo dell'accesso ai membri di una classe
- Le funzioni di accesso e di utilità
- L'inizializzazione degli oggetti di una classe: i costruttori
- I costruttori e gli argomenti di default
- I distruttori
- Quando sono chiamati i costruttori e i distruttori
- L'utilizzo dei dati e delle funzioni membro
- Un sottile errore logico: restituire un riferimento a un dato membro private
- L'assegnamento tra oggetti: la copia di default membro a membro
- Ancora sul concetto di software riutilizzabile
- Pensare in termini di oggetti: programmazione delle classi del simulatore
[progetto opzionale]- Implementazione: visibilità
- Implementazione: handle
- Implementazione: i file di intestazione delle classi
[*]Capitolo 7: le classi: seconda parte
- Introduzione
- Gli oggetti e le funzioni membro costanti
- Il concetto di composizione: oggetti che diventano membri di altre classi
- Le funzioni e le classi friend
- Il puntatore this
- L'allocazione dinamica della memoria: gli operatori new e delete
- I membri static di una classe
- Due concetti importanti: astrazione dei dati e occultamento delle informazioni
- Il tipo di dato astratto "array"
- Il tipo di dato astratto "stringa"
- Il tipo di dato astratto "coda"
- Le classi container e gli iteratori
- Le classi proxy
- Pensare in termini di oggetti: l'implementazione delle classi del simulatore
[progetto opzionale]- Una panoramica dell'implementazione
- Implementazione del simulatore
[*]Capitolo 8: l'overloading degli operatori
- Introduzione
- L'overloading degli operatori: concetti fondamentali
- Restrizioni
- La progettazione delle funzioni operatore: funzioni membro o funzioni friend
- L'overloading degli operatori di inserimento/estrazione per l'I/O su stream
- L'overloading degli operatori unari
- L'overloading degli operatori binari
- Progettazione della classe Array
- Conversioni tra tipi diversi
- Progettazione della classe String
- L'overloading degli operatori ++ e --
- Progettazione della classe Date
[*]Capitolo 9: l'ereditarietà
- Introduzione
- Le classi base e le classi derivate
- I membri protected
- Il cast dei puntatori a una classe base in puntatori a una classe derivata
- Utilizzo delle funzioni membro
- L'overriding di membri della classe base in una classe derivata
- Ereditarietà di tipo public, protected e private
- Classi base dirette e indirette
- Utilizzo dei costruttori e dei distruttori nelle classi derivate
- Conversione implicita di un oggetto di una classe derivata in oggetto della classe base
- Il ruolo dell'ereditarietà nell'ingegneria del software
- Composizione ed ereditarietà
- Le relazioni "uses a" e "knows a"
- L'ereditarietà multipla
- Pensare in termini di oggetti: come sfruttare l'ereditarietà nel simulatore di ascensore
[progetto opzionale]
[*]Capitolo 10: le funzioni virtuali e il polimorfismo
- Introduzione
- I campi di tipo e le istruzioni switch
- Le funzioni virtuali
- Le classi base astratte e le classi concrete
- Il polimorfismo
- Progettazione di un libro paga elettronico
- L'aggiunta di nuove classi e il binding dinamico
- I distruttori virtuali
- L'ereditarietà di interfaccia e di implementazione
- L'implementazione di polimorfismo, funzioni virtuali e binding dinamico
[*]Capitolo 11: gli stream di input/output del C++
- Introduzione
- Gli stream
- I file di intestazione della libreria iostream
- Le classi di oggetti che effettuano l'input/output su stream
- L'output su stream
- L'operatore di inserimento nello stream
- Utilizzo degli operatori di inserimento/estrazione in cascata
- L'output delle variabili di tipo char
*- L'output di caratteri tramite put
- L'input da stream
- L'operatore di estrazione dallo stream
- Le funzioni membro get e getline
- Altre funzioni membro di istream: peek, putback e ignore
- L'I/O type-safe
- L'input/output non formattato delle funzioni read, gcount e write
- I manipolatori di stream
- La base dei numeri interi su uno stream: dec, oct, hex e setbase
- La precisione dei valori a virgola mobile: precision e setprecision
- L'ampiezza dei campi: setw e width
- I manipolatori definiti dall'utente
- I valori di stato della formattazione
- Gli zero in coda e i punti decimali: ios::showpoint
- La giustificazione: ios::left, ios::right e ios::internal
- Il riempimento di campi: fill e setfill
- La base dei numeri interi: ios::dec, ios::oct, ios::hex e ios::showbase
- I numeri a virgola mobile e la notazione scientifica: ios::scientific e ios::fixed
- Il controllo delle lettere maiuscole/minuscole: ios::uppercase
- L'attivazione e la disattivazione dei flag di formattazione: flags, setioflags e resetioflags
- I valori di stato degli errori in uno stream
- Il collegamento di uno stream di output a uno stream di input
[*]Appendice A: riepilogo degli operatori
[*]Appendice B: l'insieme dei caratteri ASCII
[*]Appendice C: i sistemi di numerazione
- Introduzione
- Usare i numeri ottali ed esadecimali per abbreviare i numeri binari
- La conversione dei numeri ottali ed esadecimali in binari
- La conversione da binario, ottale o esadecimale in decimale
- La conversione da decimale a binario, ottale o esadecimale
- I numeri binari negativi: la notazione in complemento a due
[*]Appendice D: il C++ su Internet
- Risorse
- Tutorial
- FAQ (risposte alle domande più comuni)
- comp.lang.c++
- Compilatori
- Standard Template Library
- Tutorial
- Riferimenti
- FAQ
- Articoli, libri e interviste
- Software
[/LIST]
---[ Orario di seed e banda disponibile ]--- Dalle 18 alle 2 max 30kBps
[align=center]
---[ Babysitting & reseed ]--- [/align]