SERVIZIO CLIENTI 0541.628242 Lunedì - Venerdì / 8.30-17.30

Programmazione in Python

Seconda edizione

Disponibile il codice sorgente dei programmi descritti

Autori Kenneth A. Lambert
Argomenti Apogeo Education > Informatica >
Editore Maggioli Editore
Formato Cartaceo
Dimensione 17x24
Pagine 500
Pubblicazione Giugno 2018 (II° Edizione)
ISBN 9788891628893
Collana Apogeo Education
Prezzo Online:

34,00 €

28,90 €

Descrizione

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.


INDICE


Capitolo 1 Introduzione 
1.1 Due concetti fondamentali: algoritmi ed elaborazione 
1.1.1 Algoritmi  
1.1.2 Elaborazione delle informazioni  
1.2 La struttura di un moderno elaboratore 
1.2.1 Hardware di un calcolatore 
1.2.2 Software di un calcolatore  
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 
1.5 Individuare e correggere gli errori di sintassi 
Capitolo 2 Sviluppo del software, espressioni e tipi di dati  
2.1 Il processo di sviluppo del software  
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 
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  
2.5 Espressioni  
2.5.1 Espressioni aritmetiche  
2.5.2 Aritmetica con tipi misti e conversioni di tipo  
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
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  
3.2 Comporre il testo da visualizzare  
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  
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  
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
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 
4.2 Crittografia dei dati 
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  
4.4 Metodi per l’elaborazione di stringhe  
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 
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
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 
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
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 
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
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
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
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 
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 
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
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 
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
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 
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
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 
8.4 Pulsanti di comando e risposte agli eventi
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
8.6 Definizione e utilizzo di variabili di esemplare
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
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 
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
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
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 
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
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
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
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
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
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
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
11.5 Ordinare più velocemente
11.5.1 Quicksort
11.5.2 Mergesort
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)

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 

Aggiornamenti e Contenuti Digitali