Programmazione in Python

 
Special Price 32,30 €
SCONTO 5%
5%
Anzichè 34,00 €
Disponibile

Autori Kenneth A. Lambert

Pagine 500
Data pubblicazione Giugno 2018
Data ristampa
Autori Kenneth A. Lambert
ISBN 8891628893
ean 9788891628893
Tipo Cartaceo
Collana Apogeo Education
Editore Maggioli Editore
Dimensione 17x24
Sei un docente?
Richiedi una copia saggio!
Aggiornamenti e Contenuti Digitali
  • Spedizione in 48h
  • Paga alla consegna senza costi aggiuntivi

Autori Kenneth A. Lambert

Pagine 500
Data pubblicazione Giugno 2018
Data ristampa
Autori Kenneth A. Lambert
ISBN 8891628893
ean 9788891628893
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à che rende agevole l’integrazione con altri linguaggi. 
Il volume, molto apprezzato nella prima edizione, 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 un nuovo capitolo dedicato all’analisi della complessità computazionale con algoritmi di ricerca e ordinamento, e interamente aggiornata con nuovi esercizi e progetti di programmazione.


L'Autore


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

Seconda edizione

Sul sito web abbinato a questo libro è disponibile il codice sorgente dei programmi descritti.

Capitolo 1 Introduzione
1.1 Due concetti fondamentali: algoritmi ed elaborazione
1.1.1 Algoritmi
1.1.2 Elaborazione delle informazioni
Esercizi
1.2 La struttura di un moderno elaboratore
1.2.1 Hardware di un calcolatore
1.2.2 Software di un calcolatore
Esercizi
1.3 La lunga storia dei sistemi di calcolo
1.3.1 Prima dei calcolatori elettronici digitali
1.3.2 I primi calcolatori elettronici digitali (1940-1950)
1.3.3 I primi linguaggi di programmazione (1950-1965)
1.3.4 Circuiti integrati, interazione e time-sharing (1965-1975)
1.3.5 Personal computer e reti (1975-1990)
1.3.6 Consultazione, comunicazione e commercio elettronico (1990-2000)
1.3.7 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.5 Individuare e correggere gli errori di sintassi
Esercizi
Suggerimenti per letture di approfondimento
Riepilogo
Domande di riepilogo
Progetti
Capitolo 2 Sviluppo del software, espressioni e tipi di dati
2.1 Il processo di sviluppo del software
Esercizi
2.2 Caso di studio: il calcolo delle tasse sul reddito
2.2.1 Richiesta del cliente
2.2.2 Analisi
2.2.3 Progettazione
2.2.4 Implementazione (o codifica)
2.2.5 Collaudo
2.3 Stringhe, assegnamenti e commenti
2.3.1 Tipi di dati
2.3.2 Letterali di tipo stringa
2.3.3 Sequenze di escape
2.3.4 Concatenazione di stringhe
2.3.5 Variabili e assegnazione
2.3.6 Commenti dei programmi e docstring
Esercizi
2.4 Tipi di dati numerici e insiemi di caratteri
2.4.1 Numeri interi
2.4.2 Numeri in virgola mobile
2.4.3 Insiemi di caratteri
Esercizi
2.5 Espressioni
2.5.1 Espressioni aritmetiche
2.5.2 Aritmetica con tipi misti e conversioni di tipo
Esercizi
2.6 Usare funzioni e moduli
2.6.1 Invocare funzioni: argomenti ricevuti e valori restituiti
2.6.2 Il modulo math
2.6.3 Il modulo principale
2.6.4 L’impaginazione e la struttura di un programma
2.6.5 L’esecuzione di uno script dal prompt dei comandi
Esercizi
Riepilogo
Domande di riepilogo
Progetti
Capitolo 3 Istruzioni di iterazione e selezione
3.1 Iterazione defi nita: 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.2 Comporre il testo da visualizzare
Esercizi
3.3 Caso di studio: un rendiconto d’investimento
3.3.1 Richiesta del cliente
3.3.2 Analisi
3.3.3 Progettazione
3.3.4 Implementazione (o codifica)
3.3.5 Collaudo
3.4 Selezione: enunciati if e if-else
3.4.1 Il tipo booleano: espressioni booleane e confronti
3.4.2 Enunciati if-else
3.4.3 Enunciati di selezione a una sola via
3.4.4 Enunciati if a molte vie
3.4.5 Operatori logici ed espressioni booleane complesse
3.4.6 Valutazione in cortocircuito
3.4.7 Collaudo di enunciati di selezione
Esercizi
3.5 Iterazione condizionale: il ciclo while
3.5.1 La struttura e il comportamento di un ciclo while
3.5.2 Ciclo while a contatore
3.5.3 Il ciclo while True e l’enunciato break
3.5.4 Numeri casuali
3.5.5 Logica dei cicli: errori e collaudo
Esercizi
3.6 Caso di studio: approssimazione della radice quadrata
3.6.1 Richiesta del cliente
3.6.2 Analisi
3.6.3 Progettazione
3.6.4 Implementazione (o codifica)
3.6.5 Collaudo
Riepilogo
Domande di riepilogo
Progetti
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.2 Crittografia dei dati
Esercizi
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.4 Metodi per l’elaborazione di stringhe
Esercizi
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.6 Caso di studio: analisi di un testo
4.6.1 Richiesta del cliente
4.6.2 Analisi
4.6.3 Progettazione
4.6.4 Implementazione (o codifica)
4.6.5 Collaudo
Riepilogo
Domande di riepilogo
Progetti
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 modifi catori 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.2 Definizione di funzioni semplici
5.2.1 Sintassi per la defi nizione 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.3 Caso di studio: generazione di frasi
5.3.1 Richiesta del cliente
5.3.2 Analisi
5.3.3 Progettazione
5.3.4 Implementazione (o codifica)
5.3.5 Collaudo
5.4 Dizionari
5.4.1 Valori letterali di tipo dizionario
5.4.2 Aggiunta di chiavi e sostituzione di valori
5.4.3 Ispezione di valori
5.4.4 Eliminazione di chiavi
5.4.5 Ispezione dell’intero contenuto di un dizionario
5.4.6 Esempio: conversione da esadecimale a binario
5.4.7 Esempio: trovare la moda di un elenco di valori
Esercizi
5.5 Caso di studio: psicoterapia non direttiva
5.5.1 Richiesta del cliente
5.5.2 Analisi
5.5.3 Progettazione
5.5.4 Implementazione (o codifica)
5.5.5 Collaudo
Riepilogo
Domande di riepilogo
Progetti
Capitolo 6 Progettare con le funzioni
6.1 Un rapido riassunto delle funzioni
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.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.3 Progettazione di funzioni ricorsive
6.3.1 Definizione di una funzione ricorsiva
6.3.2 Analisi del funzionamento di una funzione ricorsiva
6.3.3 Definizioni ricorsive e funzioni ricorsive
6.3.4 Ricorsione nelle strutture sintattiche
6.3.5 Ricorsione infinita
6.3.6 Costi e benefici della ricorsione
Esercizi
6.4 Caso di studio: informazioni su un file system
6.4.1 Richiesta del cliente
6.4.2 Analisi
6.4.3 Progettazione
6.4.4 Implementazione (o codifica)
6.5 Gestione dello spazio dei nomi di un programma
6.5.1 Variabili di modulo, parametri e variabili temporanee
6.5.2 Ambito di visibilità
6.5.3 Durata
6.5.4 Argomenti predefiniti e facoltativi
Esercizi
6.6 Funzioni di ordine superiore
6.6.1 Le funzioni come dati
6.6.2 Mappatura
6.6.3 Filtraggio
6.6.4 Riduzione
6.6.5 Creare funzioni anonime usando lambda
6.6.6 Creare tabelle di salti
Esercizi
Riepilogo
Domande di riepilogo
Progetti
Capitolo 7 Elaborazione d’immagini e grafica
7.1 Grafica semplificata
7.1.1 Panoramica della Turtle graphics
7.1.2 Operazioni della Turtle graphics
7.1.3 Preparazione del fi le turtle.cfg ed esecuzione in IDLE
7.1.4 Creazione di oggetti e il modulo turtle
7.1.5 Disegno di forme bidimensionali
7.1.6 Ispezione degli attributi di un oggetto
7.1.7 Modifiche allo schermo di una tartaruga
7.1.8 Una passeggiata casuale
7.1.9 Colori nel sistema RGB
7.1.10 Esempio: colorazione casuale di uno schema radiale
Esercizi
7.2 Caso di studio: schemi ricorsivi nei frattali
7.2.1 Richiesta del cliente
7.2.2 Analisi
7.2.3 Progettazione
7.2.4 Implementazione (o codifica)
7.3 Elaborazione d’immagini
7.3.1 Informazioni analogiche e digitali
7.3.2 Campionamento e digitalizzazione delle immagini
7.3.3 Formati per i file contenenti immagini
7.3.4 Operazioni di manipolazione di immagini
7.3.5 Proprietà delle immagini
7.3.6 Il modulo images
7.3.7 Uno schema iterativo per scandire una griglia
7.3.8 Ancora sulle tuple
7.3.9 Convertire un’immagine in bianco e nero
7.3.10 Convertire un’immagine in toni di grigio
7.3.11 Copiare un’immagine
7.3.12 Sfuocare un’immagine
7.3.13 Individuare i contorni in un’immagine
7.3.14 Ridurre le dimensioni di un’immagine
Esercizi
Riepilogo
Domande di riepilogo
Progetti
Capitolo 8 Interfacce grafiche per l’utente
8.1 Il comportamento di GUI e terminali
8.1.1 Versione basata su terminale
8.1.2 Versione basata su GUI
8.1.3 Programmazione guidata da eventi
Esercizi
8.2 Scrivere semplici programmi basati su GUI
8.2.1 Un semplice programma “Hello World!”
8.2.2 Uno schema per tutti i programmi con GUI
8.2.3 La sintassi delle defi nizioni di classi e metodi
8.2.4 Ereditarietà e sottoclassi come meccanismi di astrazione
Esercizi
8.3 Finestre e loro componenti
8.3.1 Finestre e loro attributi
8.3.2 Disposizione dei componenti nella finestra
8.3.3 Tipi di componenti e loro attributi
8.3.4 Visualizzare immagini
Esercizi
8.4 Pulsanti di comando e risposte agli eventi
Esercizi
8.5 Campi con voci: input e output
8.5.1 Campi di testo
8.5.2 Campi per dati numerici interi o in virgola mobile
8.5.3 Utilizzo di riquadri a comparsa contenenti un messaggio
Esercizi
8.6 Definizione e utilizzo di variabili di esemplare
Esercizi
8.7 Caso di studio: di nuovo sui numeri da indovinare
8.7.1 Richiesta del cliente
8.7.2 Analisi
8.7.3 Progettazione della GUI
8.7.4 Progettazione
8.7.5 Implementazione (o codifica)
8.8 Altre risorse utili per una GUI
8.8.1 Cornici annidate per organizzare componenti
8.8.2 Zone di testo con più righe
8.8.3 Finestre di dialogo per la selezione di file
8.8.4 Acquisire dati con un riquadro di richiesta
8.8.5 Caselle di selezione
8.8.6 Pulsanti radio
8.8.7 Eventi relativi alla tastiera
8.8.8 Lavorare con i colori
8.8.9 Un selettore di colori
Riepilogo
Domande di riepilogo
Progetti
Capitolo 9 Progettare con le classi
9.1 Oggetti e classi in dettaglio
9.1.1 Un primo esempio: la classe Student
9.1.2 Stringhe di documentazione (docstring)
9.1.3 Definizioni di metodi
9.1.4 Il metodo __init__ e le variabili di esemplare
9.1.5 Il metodo __str__
9.1.6 Metodi di ispezione e metodi modificatori
9.1.7 Il periodo di vita degli oggetti
9.1.8 Regole pratiche per la definizione di classi semplici
Esercizi
9.2 Caso di studio: il gioco dei dadi (game of craps)
9.2.1 Richiesta del cliente
9.2.2 Analisi
9.2.3 Progettazione
9.2.4 Implementazione (o codifica)
9.2.5 Una GUI per il gioco dei dadi
9.3 Esempi di modelli di dati
9.3.1 Numeri razionali
9.3.2 Aritmetica razionale e sovraccarico di operatori
9.3.3 Metodi di confronto
9.3.4 Uguaglianza e il metodo __eq__
9.3.5 Conti bancari di risparmio e variabili di classe
9.3.6 Conti bancari e banca
9.3.7 Usare pickle per l’archiviazione permanente di oggetti
9.3.8 Acquisizione di oggetti e uso di try-except
9.3.9 Giocare a carte
Esercizi
9.4 Caso di studio: sportello bancario automatizzato
9.4.1 Richiesta del cliente
9.4.2 Analisi
9.4.3 Progettazione
9.4.4 Implementazione (o codifica)
9.5 Progetto di una nuova struttura: griglia bidimensionale
9.5.1 L’interfaccia della classe Grid
9.5.2 L’implementazione di Grid: variabili di esemplare
9.5.3 L’implementazione di Grid: ricerca e indici
9.6 Caso di studio: cifratura a blocchi
9.6.1 Richiesta del cliente
9.6.2 Analisi
9.6.3 Progettazione e implementazione
9.7 Ereditarietà e polimorfismo
9.7.1 Modelli e gerarchie di ereditarietà
9.7.2 Esempio 1: un conto bancario vincolato
9.7.3 Esempio 2: giocatore e mazziere nel Blackjack
9.7.4 Metodi polimorfici
9.7.5 Costi e benefici della programmazione orientata agli oggetti
Esercizi
Riepilogo
Domande di riepilogo
Progetti
Capitolo 10 Programmazione di rete, multithreading e client/server
10.1 Thread e processi
10.1.1 Thread
10.1.2 Thread dormienti (sleeping)
10.1.3 Produttore, consumatore e sincronizzazione
Esercizi
10.2 Il problema dei lettori e degli scrittori
10.2.1 Utilizzo della classe SharedCell
10.2.2 Implementazione dell’interfaccia della classe SharedCell
10.2.3 Implementazione dei metodi ausiliari della classe SharedCell
10.2.4 Collaudo della classe SharedCell usando un contatore
10.2.5 Definizione di una classe thread-safe
Esercizi
10.3 Reti, client e server
10.3.1 Indirizzi IP
10.3.2 Porte, server e client
10.3.3 I socket e un client day/time
10.3.4 Un server day/time
10.3.5 Uno script per una chat bidirezionale
10.3.6 Gestione di più client contemporanei
Esercizi
10.4 Caso di studio: gestione di una conversazione medico/pazienti
10.4.1 Richiesta del cliente
10.4.2 Analisi
10.4.3 Progettazione e implementazione
Riepilogo
Domande di riepilogo
Progetti
Capitolo 11 Ricerca, ordinamento e analisi di complessità
11.1 Misurare l’efficienza degli algoritmi
11.1.1 Misurare il tempo d’esecuzione di un algoritmo
11.1.2 Contare le istruzioni
Esercizi
11.2 Analisi di complessità
11.2.1 Ordini di complessità
11.2.2 Notazione O-grande
11.2.3 Il ruolo della costante di proporzionalità
11.2.4 Misurare la memoria impegnata da un algoritmo
Esercizi
11.3 Algoritmi di ricerca
11.3.1 Ricerca del valore minimo
11.3.2 Ricerca sequenziale in una lista
11.3.3 Prestazioni nel caso ottimo, pessimo e medio
11.3.4 Ricerca binaria in una lista
Esercizi
11.4 Algoritmi di ordinamento elementari
11.4.1 Ordinamento per selezione
11.4.2 Ordinamento a bolle
11.4.3 Ordinamento per inserimento
11.4.4 Ancora sulle prestazioni nel caso ottimo, pessimo e medio
Esercizi
11.5 Ordinare più velocemente
11.5.1 Quicksort
11.5.2 Mergesort
Esercizi
11.6 Un algoritmo esponenziale: la ricorsione di Fibonacci
11.7 Un algoritmo lineare per Fibonacci
11.8 Caso di studio: un analizzatore del profilo di algoritmi
11.8.1 Richiesta del cliente
11.8.2 Analisi
11.8.3 Progettazione
11.8.4 Implementazione (o codifica)
Riepilogo
Domande di riepilogo
Progetti
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