Programmazione in Python

 
Special Price 36,10 €
SCONTO 5%
5%
Anzichè 38,00 €
Disponibile

Autori Kenneth A. Lambert

Pagine 578
Data pubblicazione Giugno 2024
Data ristampa
ISBN 8891671431
ean 9788891671431
Tipo Cartaceo
Collana Apogeo Education
Editore Maggioli Editore
Dimensione 17x24
  • Spedizione in 48h
  • Paga alla consegna senza costi aggiuntivi
  • Spedizione gratuita

Autori Kenneth A. Lambert

Pagine 578
Data pubblicazione Giugno 2024
Data ristampa
ISBN 8891671431
ean 9788891671431
Tipo Cartaceo
Collana Apogeo Education
Editore Maggioli Editore
Dimensione 17x24

Python è un linguaggio di programmazione orientato agli oggetti, di grande versatilità e molto utilizzato per lo sviluppo di applicazioni in ambito professionale. È, inoltre, uno strumento valido e flessibile per apprendere i fondamenti della programmazione, grazie alla sintassi semplice, alla semantica sempre verificabile e alla scalabilità.

Il volume, molto apprezzato nelle precedenti edizioni, analizza gli aspetti principali della programmazione ponendo enfasi sul problem solving.

Gli argomenti sono affrontati in maniera graduale e molto accurata: partendo dalla definizione di algoritmo, si illustra come progettare con le funzioni e con le classi, le strategie di programmazione (top-down) sino a giungere alle interfacce grafiche (GUI) e alle applicazioni di rete.

I concetti teorici vengono applicati e sviluppati in programmi completi al fine di verificare il loro supporto nella risoluzione di problemi. La trattazione è completata da numerosi esempi e schemi esplicativi ed evidenzia l’importanza di acquisire abitudini di buona scrittura e buona documentazione.

La nuova edizione è stata ampliata, con due nuovi capitoli dedicati, rispettivamente, alla programmazione ricorsiva e all’analisi dei dati e alla loro visualizzazione, e con nuovi paragrafi che illustrano la programmazione robusta. Esercitazioni e progetti di programmazione sono stati aggiornati e nuovi esercizi introducono il debugging.

Kenneth A. Lambert
è professore emerito presso la Washington and Lee University, dove è stato direttore del Dipartimento di Computer Science. Ha una vasta esperienza didattica nel campo dell’Informatica ed è co-autore di numerosi e apprezzati testi su diversi linguaggi di programmazione.

Indice generale
Prefazione
Capitolo 1 Introduzione
1.1 Due concetti fondamentali: algoritmi ed elaborazione
1.1.1 Algoritmi
1.1.2 Elaborazione delle informazioni
ESERCIZI 1.1
1.2 La struttura di un moderno elaboratore
1.2.1 Hardware di un calcolatore
1.2.2 Software di un calcolatore
ESERCIZI 1.2
1.3 La lunga storia dei sistemi di calcolo
1.3.1 Prima dei calcolatori elettronici digitali
1.3.2 Persone usate come computer (1940-1945)
1.3.3 I primi calcolatori elettronici digitali (1940-1950)
1.3.4 I primi linguaggi di programmazione (1950-1965)
1.3.5 Circuiti integrati, interazione, time-sharing e ingegneria del software (1965-1975)
1.3.6 Personal computer e reti (1975-1990)
1.3.7 Consultazione, comunicazione e commercio elettronico (1990-2000)
1.3.8 Applicazioni in mobilità ed elaborazione diffusa (dal 2000 ad oggi)
1.4 Introduzione alla programmazione in Python
1.4.1 Eseguire codice nella shell interattiva
1.4.2 Dati: input, elaborazione, output
1.4.3 Scrivere, salvare ed eseguire un programma
1.4.4 Dietro le quinte: come funziona Python
ESERCIZI 1.3
1.4.5 Individuare e correggere gli errori di sintassi
Riepilogo
Domande di riepilogo
Esercizi di programmazione
Esercizio di debugging
Capitolo 2 Sviluppo del software, espressioni e tipi di dati
2.1 Il processo di sviluppo del software
ESERCIZI 2.1
CASO DI STUDIO 2.1 Calcolo delle tasse sul reddito
2.2 Stringhe, assegnamenti e commenti
2.2.1 Tipi di dati
2.2.2 Letterali di tipo stringa
2.2.3 Sequenze di escape
2.2.4 Concatenazione di stringhe
2.2.5 Variabili e assegnazione
2.2.6 Commenti dei programmi e docstring
ESERCIZI 2.2
2.3 Tipi di dati numerici e insiemi di caratteri
2.3.1 Numeri interi
2.3.2 Numeri in virgola mobile
2.3.3 Insiemi di caratteri
ESERCIZI 2.3
2.4 Espressioni
2.4.1 Espressioni aritmetiche
2.4.2 Aritmetica con tipi misti e conversioni di tipo
ESERCIZI 2.4
2.5 Usare funzioni e moduli
2.5.1 Invocare funzioni: argomenti ricevuti e valori restituiti
2.5.2 Il modulo math
2.5.3 Il modulo principale
2.5.4 L’impaginazione e la struttura di un programma
2.5.5 L’esecuzione di uno script dal prompt dei comandi
ESERCIZI 2.5
Riepilogo
Domande di riepilogo
Esercizi di programmazione
Esercizio di debugging
Capitolo 3 Istruzioni di iterazione e selezione
3.1 Iterazione definita: il ciclo for
3.1.1 Esecuzione di un enunciato per un numero predeterminato di volte
3.1.2 Ciclo controllato da contatore
3.1.3 Assegnazione abbreviata
3.1.4 Errori nei cicli: l’errore per scarto di uno
3.1.5 Scansione del contenuto di una sequenza di dati
3.1.6 Indicazione del passo nell’intervallo
3.1.7 Cicli che contano a ritroso
ESERCIZI 3.1
3.2 Comporre il testo da visualizzare
ESERCIZI 3.2
CASO DI STUDIO 3.1 Un rendiconto d’investimento
3.3 Selezione: enunciati if e if-else
3.3.1 Il tipo booleano: espressioni booleane e confronti
3.3.2 Enunciati if-else
3.3.3 Enunciati di selezione a una sola via
3.3.4 Enunciati if a molte vie
3.3.5 Operatori logici ed espressioni booleane complesse
3.3.6 Valutazione in cortocircuito
3.3.7 Collaudo di enunciati di selezione
ESERCIZI 3.3
3.4 Iterazione condizionale: il ciclo while
3.4.1 La struttura e il comportamento di un ciclo while
3.4.2 Ciclo while a contatore
3.4.3 Il ciclo while True e l’enunciato break
3.4.4 Numeri casuali
3.4.5 Logica dei cicli: errori e collaudo
ESERCIZI 3.4
CASO DI STUDIO 3.2 Approssimazione della radice quadrata
Programmazione robusta
Riepilogo
Domande di riepilogo
Esercizi di programmazione
Esercizio di debugging
Capitolo 4 Stringhe e file di testo
4.1 Accesso a caratteri e sottostringhe all’interno di stringhe
4.1.1 La struttura delle stringhe
4.1.2 L’operatore indice
4.1.3 Estrarre sottostringhe
4.1.4 Verificare la presenza di una sottostringa con in
ESERCIZI 4.1
4.2 Crittografia dei dati
ESERCIZI 4.2
4.3 Stringhe e sistemi numerici
4.3.1 Il sistema posizionale per la rappresentazione dei numeri
4.3.2 Conversione da sistema binario a decimale
4.3.3 Conversione da sistema decimale a binario
4.3.4 Scorciatoie per convertire numeri
4.3.5 Numeri ottali ed esadecimali
ESERCIZI 4.3
4.4 Metodi per l’elaborazione di stringhe
ESERCIZI 4.4
4.5 File di testo
4.5.1 I file di testo e il loro formato
4.5.2 Scrivere testo in un file
4.5.3 Scrivere numeri in un file
4.5.4 Leggere testo da un file
4.5.5 Leggere numeri da un file
4.5.6 Manipolare file e cartelle di un disco
ESERCIZI 4.5
CASO DI STUDIO 4.1 Analisi di un testo
Programmazione robusta
Riepilogo
Domande di riepilogo
Esercizi di programmazione
Esercizio di debugging
Capitolo 5 Liste e dizionari
5.1 Liste
5.1.1 Letterali di tipo lista e operatori elementari
5.1.2 Sostituzione di un elemento in una lista
5.1.3 Metodi di lista per inserimento e rimozione di elementi
5.1.4 Ricerche in una lista
5.1.5 Ordinamento di una lista
5.1.6 Metodi modificatori e il valore None
5.1.7 Effetti collaterali e alias
5.1.8 Uguaglianza: oggetti identici e oggetti equivalenti
5.1.9 Esempio: trovare la mediana di un insieme di numeri
5.1.10 Tuple
ESERCIZI 5.1
5.2 Definizione di funzioni semplici
5.2.1 Sintassi per la definizione di funzioni semplici
5.2.2 Parametri e argomenti
5.2.3 L’enunciato return
5.2.4 Funzioni booleane
5.2.5 Definizione di una funzione main
ESERCIZI 5.2
CASO DI STUDIO 5.1 Generazione di frasi
5.3 Dizionari
5.3.1 Valori letterali di tipo dizionario
5.3.2 Aggiunta di chiavi e sostituzione di valori
5.3.3 Ispezione di valori
5.3.4 Eliminazione di chiavi
5.3.5 Ispezione dell’intero contenuto di un dizionario
5.3.6 Esempio: conversione da esadecimale a binario
5.3.7 Esempio: trovare la moda di un elenco di valori
ESERCIZI 5.3
CASO DI STUDIO 5.2 Psicoterapia non direttiva
Programmazione robusta
Riepilogo
Domande di riepilogo
Esercizi di programmazione
Esercizio di debugging
Capitolo 6 Progettare con le funzioni
6.1 Un rapido riassunto: cosa sono le funzioni e come operano
6.1.1 Funzioni come meccanismo di astrazione
6.1.2 Usare funzioni per eliminare la ridondanza
6.1.3 Usare funzioni per nascondere la complessità
6.1.4 Usare funzioni per metodi generali con variazioni sistematiche
6.1.5 Usare funzioni per suddividere i compiti
ESERCIZI 6.1
6.2 Soluzione di problemi con la progettazione top-down
6.2.1 Il progetto del programma di analisi del testo
6.2.2 Il progetto del programma generatore di frasi
6.2.3 Il progetto del programma simulatore di terapeuta
ESERCIZI 6.2
CASO DI STUDIO 6.1 Riconoscimento di frasi
6.3 Gestione dello spazio dei nomi di un programma
6.3.1 Variabili di modulo, parametri e variabili temporanee
6.3.2 Ambito di visibilità
6.3.3 Durata
6.3.4 Argomenti predefiniti e facoltativi
ESERCIZI 6.3
Programmazione robusta
Riepilogo
Domande di riepilogo
Esercizi di programmazione
Esercizio di debugging
Capitolo 7 Progettare con la ricorsione
7.1 Progettazione di funzioni ricorsive
7.1.1 Definizione di una funzione ricorsiva
7.1.2 Algoritmi ricorsivi
7.1.3 Analisi del funzionamento di una funzione ricorsiva
7.1.4 Definizioni ricorsive e funzioni ricorsive
7.1.5 Ricorsione nelle strutture sintattiche
7.1.6 Ricorsione infinita
7.1.7 Costi e benefici della ricorsione
ESERCIZI 7.1
CASO DI STUDIO 7.1: Informazioni su un file system
7.2 Funzioni di ordine superiore
7.2.1 Le funzioni come dati
7.2.2 Mappatura
7.2.3 Filtraggio
7.2.4 Riduzione
7.2.5 Creare funzioni anonime usando lambda
7.2.6 Creare tabelle di salti
ESERCIZI 7.2
Programmazione robusta
Riepilogo
Domande di riepilogo
Esercizi di programmazione
Esercizio di debugging
Capitolo 8 Elaborazione d’immagini e grafica
8.1 Grafica semplificata
8.1.1 Panoramica della Turtle graphics
8.1.2 Operazioni della Turtle graphics
8.1.3 Preparazione del file turtle.cfg ed esecuzione in IDLE
8.1.4 Creazione di oggetti e il modulo turtle
8.1.5 Disegno di forme bidimensionali
8.1.6 Ispezione degli attributi di un oggetto
8.1.7 Modifiche allo schermo di una tartaruga
8.1.8 Una passeggiata casuale
8.1.9 Colori nel sistema RGB
8.1.10 Esempio: colorazione casuale di uno schema radiale
ESERCIZI 8.1
CASO DI STUDIO 8.1: Schemi ricorsivi nei frattali
8.2 Elaborazione d’immagini
8.2.1 Informazioni analogiche e digitali
8.2.2 Campionamento e digitalizzazione delle immagini
8.2.3 Formati per i file contenenti immagini
8.2.4 Operazioni di manipolazione di immagini
8.2.5 Proprietà delle immagini
8.2.6 Il modulo images
8.2.7 Uno schema iterativo per scandire una griglia
8.2.8 Ancora sulle tuple
8.2.9 Convertire un’immagine in bianco e nero
8.2.10 Convertire un’immagine in toni di grigio
8.2.11 Copiare un’immagine
8.2.12 Sfuocare un’immagine
8.2.13 Individuare i contorni in un’immagine
8.2.14 Ridurre le dimensioni di un’immagine
ESERCIZI 8.2
Programmazione robusta
Riepilogo
Domande di riepilogo
Esercizi di programmazione
Esercizio di debugging
Capitolo 9 Interfacce grafiche per l’utente
9.1 Il comportamento di GUI e terminali
9.1.1 Versione basata su terminale
9.1.2 Versione basata su GUI
9.1.3 Programmazione guidata da eventi
ESERCIZI 9.1
9.2 Scrivere semplici programmi basati su GUI
9.2.1 Un semplice programma “Hello World!”
9.2.2 Uno schema per tutti i programmi con GUI
9.2.3 La sintassi delle definizioni di classi e metodi
9.2.4 Ereditarietà e sottoclassi come meccanismi di astrazione
ESERCIZI 9.2
9.3 Finestre e loro componenti
9.3.1 Finestre e loro attributi
9.3.2 Disposizione dei componenti nella finestra
9.3.3 Tipi di componenti e loro attributi
9.3.4 Visualizzare immagini
ESERCIZI 9.3
9.4 Pulsanti di comando e risposte agli eventi
ESERCIZI 9.4
9.5 Campi con voci: input e output
9.5.1 Campi di testo
9.5.2 Campi per dati numerici interi o in virgola mobile
ESERCIZI 9.5
9.6 Definizione e utilizzo di variabili di esemplare
ESERCIZI 9.6
CASO DI STUDIO 9.1: Di nuovo sui numeri da indovinare
Programmazione robusta
9.7 Altre risorse utili per una GUI
9.7.1 Cornici annidate per organizzare componenti
9.7.2 Zone di testo con più righe
9.7.3 Finestre di dialogo per la selezione di file
9.7.4 Acquisire dati con un riquadro di richiesta
9.7.5 Caselle di selezione
9.7.6 Pulsanti radio
9.7.7 Eventi relativi alla tastiera
9.7.8 Lavorare con i colori
9.7.9 Un selettore di colori
Riepilogo
Domande di riepilogo
Esercizi di programmazione
Esercizio di debugging
Capitolo 10 Progettare con le classi
10.1 Oggetti e classi in dettaglio
10.1.1 Un primo esempio: la classe Student
10.1.2 Stringhe di documentazione (docstring)
10.1.3 Definizioni di metodi
10.1.4 Il metodo init e le variabili di esemplare
10.1.5 Il metodo str
10.1.6 Metodi di ispezione e metodi modificatori
10.1.7 Il periodo di vita degli oggetti
10.1.8 Regole pratiche per la definizione di classi semplici
ESERCIZI 10.1
CASO DI STUDIO 10.1: Il gioco dei dadi (game of craps)
10.2 Esempi di modelli di dati
10.2.1 Numeri razionali
10.2.2 Aritmetica razionale e sovraccarico di operatori
10.2.3 Metodi di confronto
10.2.4 Uguaglianza e il metodo eq
10.2.5 Il metodo repr per visualizzare un oggetto in IDLE
10.2.6 Conti bancari di risparmio e variabili di classe
10.2.7 Conti bancari e banca
10.2.8 Usare pickle per l’archiviazione permanente di oggetti
10.2.9 Acquisizione di oggetti e uso di try-except
10.2.10 Giocare a carte
ESERCIZI 10.2
CASO DI STUDIO 10.2: Sportello bancario automatizzato
10.3 Progetto di una nuova struttura: griglia bidimensionale
10.3.1 L’interfaccia della classe Grid
10.3.2 L’implementazione di Grid: variabili di esemplare
10.3.3 L’implementazione di Grid: ricerca e indici
ESERCIZI 10.3
CASO DI STUDIO 10.3: Cifratura a blocchi
10.4 Ereditarietà e polimorfismo
10.4.1 Modelli e gerarchie di ereditarietà
10.4.2 Esempio 1: un conto bancario vincolato
10.4.3 Esempio 2: giocatore e mazziere nel Blackjack
10.4.4 Metodi polimorfici
10.4.5 Costi e benefici della programmazione orientata agli oggetti
ESERCIZI 10.4
Programmazione robusta
Riepilogo
Domande di riepilogo
Esercizi di programmazione
Esercizio di debugging
Capitolo 11 Analisi e visualizzazione di dati
11.1 Alcune funzioni basilari per analizzare un insieme di dati
11.1.1 Calcolare il valore massimo, minimo e medio
11.1.2 Calcolare il valore mediano
11.1.3 Calcolare la moda e le mode
11.1.4 Calcolare la deviazione standard
11.1.5 Usare la libreria NumPy
ESERCIZI 11.1
CASO DI STUDIO 11.1: Analisi dei punteggi di studenti
11.2 Visualizzazione di un insieme di dati
11.2.1 Diagrammi a torta
11.2.2 Diagrammi a barre
11.2.3 Grafici di dispersione
11.2.4 Grafici a segmenti
11.2.5 Istogrammi
ESERCIZI 11.2
11.3 Elaborare insiemi di dati più complessi
11.3.1 Creare un insieme di dati con pandas
11.3.2 Visualizzare dati con pandas e matplotlib.pyplot
11.3.3 Accedere a colonne e righe in un data frame
11.3.4 Creare un data frame a partire da un file CSV
11.3.5 Ripulire i dati in un data frame
11.3.6 Ispezionare altri attributi di un data frame
ESERCIZI 11.3
CASO DI STUDIO 11.2: Analisi di statistiche di pallacanestro
Programmazione robusta
Riepilogo del capitolo
Domande di riepilogo
Esercizi di programmazione
Capitolo 12 Programmazione di rete, multithreading e client/server
12.1 Thread e processi
12.1.1 Thread
12.1.2 Thread dormienti (sleeping)
12.1.3 Produttore, consumatore e sincronizzazione
ESERCIZI 12.1
12.2 Il problema dei lettori e degli scrittori
12.2.1 Utilizzo della classe SharedCell
12.2.2 Implementazione dell’interfaccia della classe SharedCell
12.2.3 Implementazione dei metodi ausiliari della classe SharedCell
12.2.4 Collaudo della classe SharedCell usando un contatore
12.2.5 Definizione di una classe thread-safe
ESERCIZI 12.2
12.3 Reti, client e server
12.3.1 Indirizzi IP
12.3.2 Porte, server e client
12.3.3 I socket e un client day/time
12.3.4 Un server day/time
12.3.5 Uno script per una chat bidirezionale
12.3.6 Gestione di più client contemporanei
ESERCIZI 12.3
CASO DI STUDIO 12.1: Gestione di una conversazione medico/pazienti
Programmazione robusta
Riepilogo
Domande di riepilogo
Esercizi di programmazione
Esercizio di debugging
Capitolo 13 Ricerca, ordinamento e analisi di complessità
13.1 Misurare l’efficienza degli algoritmi
13.1.1 Misurare il tempo d’esecuzione di un algoritmo
13.1.2 Contare le istruzioni
ESERCIZI 13.1
13.2 Analisi di complessità
13.2.1 Ordini di complessità
13.2.2 Notazione O-grande
13.2.3 Il ruolo della costante di proporzionalità
13.2.4 Misurare la memoria impegnata da un algoritmo
ESERCIZI 13.2
13.3 Algoritmi di ricerca
13.3.1 Ricerca del valore minimo
13.3.2 Ricerca sequenziale in una lista
13.3.3 Prestazioni nel caso ottimo, pessimo e medio
13.3.4 Ricerca binaria in una lista
ESERCIZI 13.3
13.4 Algoritmi di ordinamento elementari
13.4.1 Ordinamento per selezione
13.4.2 Ordinamento a bolle
13.4.3 Ordinamento per inserimento
13.4.4 Ancora sulle prestazioni nel caso ottimo, pessimo e medio
ESERCIZI 13.4
13.5 Ordinare più velocemente
13.5.1 Quicksort
13.5.2 Mergesort
ESERCIZI 13.5
13.6 Un algoritmo esponenziale: la ricorsione di Fibonacci
13.7 Un algoritmo lineare per Fibonacci
CASO DI STUDIO 13.1: Un analizzatore del profilo di algoritmi
Riepilogo
Domande di riepilogo
Esercizi di programmazione
Appendice
A.1 Risorse per programmare in Python
A.1.1 Installazione di Python su un computer
A.1.2 Shell, IDLE e altri IDE
A.2 Le librerie images e breezypythongui
A.3 La API per l’elaborazione d’immagini
A.4 Transizione da Python a Java e C++
Glossario
Indice analitico

Scrivi la tua recensione
Stai recensendo:Programmazione in Python