Laboratorio di Python
|
|
- Gilberto Alfieri
- 5 anni fa
- Visualizzazioni
Transcript
1 Laboratorio di Python Programmazione orientata agli oggetti Lab14 11 Maggio 2018
2 Outline Correzione esercizi per oggi Oggetti Teoria Esercizi Esercizi per casa
3 Outline Correzione esercizi per oggi Oggetti Teoria Esercizi Esercizi per casa
4 Esercizio 1 Scrivere una funzione (da più di una riga) mul(s) che moltiplica gli elementi di una sequenza (usando il for sugli elementi, non gli indici espliciti); poi usare tale funzione per stampare con una sola istruzione il prodotto dei numeri dispari minori di 42
5 Esercizio 1 Scrivere una funzione (da più di una riga) mul(s) che moltiplica gli elementi di una sequenza (usando il for sugli elementi, non gli indici espliciti); poi usare tale funzione per stampare con una sola istruzione il prodotto dei numeri dispari minori di 42 1 def mul (s): 2 p = 1 3 f o r e i n s: 4 p *= e 5 r e t u r n p 6 7 p r i n t ( mul (i f o r i i n range (1,42) i f i%2!= 0))
6 Esercizio 2 Scrivere un programma di due righe che importa math.factorial e poi, con una print su una sola riga, stampa la lista delle potenze di 2 da 2 0 a 2 10, utilizzando la formula n i=0 ( ) n = 2 n i che fa uso dei binomi di Newton: ricordare che ( ) n k equivale a n! k!(n k)!
7 Esercizio 2 Scrivere un programma di due righe che importa math.factorial e poi, con una print su una sola riga, stampa la lista delle potenze di 2 da 2 0 a 2 10, utilizzando la formula n i=0 ( ) n = 2 n i che fa uso dei binomi di Newton: ricordare che ( ) n k equivale a n! k!(n k)! 1 from math import factorial 2 p r i n t ([sum( factorial (n)/( factorial (i)* factorial ( n-i)) f o r i i n range (0,n +1) ) f o r n i n range (11) ])
8 Esercizio 3 Scrivere un programma che stampa con una sola sitruzione un dizionario di elementi car:pos in cui car è ciascuna lettera maiuscola e minuscola, e pos la sua posizione nel codice ASCII, usando la funzione chr() ma non la funzione ord(), senza nessun import, sapendo che ord( A ) vale 65, che ord( a ) vale 97 e che le lettere inglesi sono 26.
9 Esercizio 3 Scrivere un programma che stampa con una sola sitruzione un dizionario di elementi car:pos in cui car è ciascuna lettera maiuscola e minuscola, e pos la sua posizione nel codice ASCII, usando la funzione chr() ma non la funzione ord(), senza nessun import, sapendo che ord( A ) vale 65, che ord( a ) vale 97 e che le lettere inglesi sono #usando SOLO d i c t i o n a r y c o m p r e h e n s i o n 2 p r i n t ({ chr ( pos ): pos f o r pos i n range (65,97+26) i f chr ( pos ). isalpha () }) 3 4 #usando l a f u n z i o n e c o n c a t e n a 5 def concatena (tr): 6 r e t u r n t u p l e (n f o r r i n tr f o r n i n r) 7 8 p r i n t ({ chr ( pos ): pos f o r pos i n concatena (( range (65,65+26), range (97,97+26) ))}) 9 10 #o p i u ' s e m p l i c e m e n t e 11 p r i n t ({ chr ( pos ): pos f o r i i n ( range (65,91), range (97,123) ) f o r pos i n i})
10 Esercizio 4 Scrivere una funzione di una sola riga che prende come parametro un dizionario i cui valori sono oggetti immutabili e inverte tale dizionario, cioè ogni valore distinto diventa una chiave per ogni chiave del dizionario invertito, il valore sarà una lista delle chiavi originali associate a quel vaore Esempio: >>> d = {'a':2, 'b':2, 'c':3, 'd':4, 'e':3, 'f':0, 'g':3, 'h':2} >>> inverti(d) {2: ['a', 'b', 'h'], 3: ['c', 'e', 'g'], 4: ['d'], 0: ['f']}
11 Esercizio 4 Scrivere una funzione di una sola riga che prende come parametro un dizionario i cui valori sono oggetti immutabili e inverte tale dizionario, cioè ogni valore distinto diventa una chiave per ogni chiave del dizionario invertito, il valore sarà una lista delle chiavi originali associate a quel vaore Esempio: >>> d = {'a':2, 'b':2, 'c':3, 'd':4, 'e':3, 'f':0, 'g':3, 'h':2} >>> inverti(d) {2: ['a', 'b', 'h'], 3: ['c', 'e', 'g'], 4: ['d'], 0: ['f']} 1 def inverti (d): 2 r e t u r n {kr :[k f o r k i n d. keys () i f d[k ]== kr] f o r kr i n d. values ()}
12 Outline Correzione esercizi per oggi Oggetti Teoria Esercizi Esercizi per casa
13 Outline Correzione esercizi per oggi Oggetti Teoria Esercizi Esercizi per casa
14 Programmazione orientata agli oggetti Python supporta la programmazione orientata agli oggetti (object-oriented programming - OOP): Ci si concentra sulla creazione di oggetti che contengono sia dati (attributi) che funzionalità (metodi). Un oggetto è un istanza di una classe; le classi descrivono come saranno fatti gli oggetti (una classe è la specifica, la definizione di un oggetto). Si può usare una classe come un modello (uno stampo ) per costruire più oggetti con le caratteristiche definite dalla classe. 1 c l a s s nome_della_classe : 2 < attributi > 3 <metodi >
15 Costruttore Il metodo init (chiamato costruttore) viene invocato quando, usando il nome della classe come una funzione, si crea un istanza (un oggetto) della classe. Tutti i metodi devono avere self come primo parametro quando sono definiti, ma esso non va espliciato quando si chiamano i metodi. All interno di una definizione di metodo, self si riferisce all istanza su cui viene chiamato il metodo. Nel metodo init, self viene usato per impostare i valori iniziali degli attributi fondamentali di un istanza della classe. 1 c l a s s Cane : 2 def init (self, nome, colore ): 3 self. nome = nome 4 self. colore = colore 5 6 istanza_di_cane = Cane ('Fido ', ' marrone ')
16 Attributi Le istanze di una classe hanno attributi: dati ad esse associati. Gli attributi sono accessibili con un punto e il nome dell attributo dopo il nome di un istanza. 1 c l a s s Cane : 2 def init (self, nome, colore ): 3 self. nome = nome 4 self. colore = colore 5 6 istanza_di_cane = Cane ('Fido ', ' marrone ') 7 8 p r i n t ("Il cane si chiama ", istanza_di_cane. nome )
17 Metodi Un metodo differisce da una funzione in due aspetti: Appartiene a una classe (ed è definito all interno di una classe) Il primo parametro nella definizione di un metodo deve essere un riferimento all istanza che ha chiamato il metodo: per convezione lo chiamiamo self. Equivalentemente agli attributi, si può accedere ai metodi con la notazione punto. 1 c l a s s Cane : 2 def init (self, nome, colore ): 3 self. nome = nome 4 self. colore = colore 5 def abbaia ( self ): 6 p r i n t (" Bau!") 7 8 ic = Cane ('Fido ', ' marrone ') 9 ic. abbaia () >>> Bau! >>>
18 Metodi e attributi privati Gli attributi e i metodi privati possono essere richiamati solo all interno di una classe Attributi e metodi sono resi privati anteponendo ai loro nomi un doppio underscore 1 c l a s s Paniere : 2 uova = 8 # a t t r i b u t o p r i v a t o 3 4 def aumenta ( self ): # metodo p r i v a t o 5 self. uova += 1 6 def aggiungi_stampa ( self ): # metodo p u b b l i c o 7 self. aumenta () 8 p r i n t ( self. uova ) 9 p = Paniere () >>> p.aggiungi_stampa() 9 >>> print(p. uova) AttributeError: Paniere object has no attribute uova >>> p. aumenta() AttributeError: Paniere object has no attribute aumenta
19 Metodi e attributi protetti Gli attributi e i metodi protetti possono essere richiamati solo all interno di una classe o delle sottoclassi Se vogliamo che le sottoclassi possano accedere, attributi e metodi devono essere protetti anteponendo un singolo underscore. 1 c l a s s O(): 2 pri = ' privato ' 3 _pro = ' protetto ' 4 def met_pri ( self ): 5 p r i n t (" met. privato ") 6 def _met_pro ( self ): 7 p r i n t (" met. protetto ") 8 c l a s s S(O): 9 def f( self ): 0 p r i n t ( self. pri ) 1 def g( self ): 2 p r i n t ( self. _pro ) 3 def h( self ): 4 self. met_pri () 5 def i( self ): 6 self. _met_pro () >>> o = O() >>> s = S() >>> s.f() AttributeError: S object has no attribute _S pri >>> s.g() protetto >>> s.h() AttributeError: S object has no attribute _S met_pri >>> s.i() met. protetto >>>
20 Ereditarietà L ereditarietà permette di condividere funzionalità tra classi. Supponiamo di avere le classi Gatto, Cane, Topo e così via. Sebbene possano differire in qualche modo (es. solo Cane ha il metodo abbaia), è probabile che siano simili in altri modi (tutti hanno attributi colore e nome). Questa similarità può essere espressa rendendoli tutti ereditari da una superclasse Animale, che contiene le funzionalità condivise. Una classe che eredita da un altra classe è chiamata sottoclasse. Una classe da cui si eredita da è chiamata superclasse. Per ereditare una classe da un altra classe, inseriamo il nome della superclasse tra parentesi dopo il nome della classe. Se la sottoclasse ha attributi o metodi con lo stesso nome della superclasse, la sottoclasse li sovrascrive. Una classe può ereditare da un altra, e quella classe può ereditare da una terza classe.
21 Ereditarietà: esempio 1 c l a s s Animale : # s u p e r c l a s s e 2 def init (self, nome, colore ): 3 self. nome = nome 4 self. colore = colore 5 6 c l a s s Cat ( Animale ): # s o t t o c l a s s e 7 def miagola ( self ): 8 p r i n t ('Miao!') 9 10 c l a s s Cane ( Animale ): # s o t t o c l a s s e e s u p e r c l a s s e 11 def abbaia ( self ): 12 p r i n t ('Bau!') c l a s s CaneLupo ( Cane ): #s o t t o c l a s s e 15 def abbaia ( self ): #s o v r a s c r i t t u r a d e l metodo 16 p r i n t ('Grr!')
22 Outline Correzione esercizi per oggi Oggetti Teoria Esercizi Esercizi per casa
23 Sistema bancario Definiremo un semplice sistema per gestire conti bancari, lavorando con istanze di tre classi Conto Correntista Banca NB: svolgere tutti gli esercizi (anche quelli per casa) in un unico file.
24 Classe Conto Realizzare la classe Conto. Il costruttore è init (self, banca, numero, correntista, saldo iniziale=0), che inizializza i seguenti attribuit: banca : il nome della banca in cui il conto è registrato numero : identificatore univoco del conto correntista : un istanza della classe Correntista, che rappresenta il correntista a cui appartiene quel conto saldo : attributo protetto che rappresenta il saldo attuale del conto La classe Conto ha tre metodi: get saldo(self) : restituisce il saldo del conto deposita(self, somma) : incrementa il saldo di una certa somma preleva(self, somma) : decrementa il saldo di un certa somma (solo se essa è minore o uguale al saldo, altrimenti preleva fino ad azzerare il saldo e stampa un messaggio di errore "Fondi insufficienti"). In ogni caso restituisce solo la somma effettivamente prelevata. Testare opportunamente la classe creando alcune istanze e invocando i metodi su di esse
25 Possibile implementazione I 1 c l a s s Conto : 2 def init (self, banca, numero, correntista, saldo_ iniziale =0) : 3 self. banca = banca 4 self. numero = numero 5 self. correntista = correntista 6 self. _ saldo = saldo_ iniziale 7 8 def get_saldo ( self ): 9 r e t u r n self. _saldo def deposita (self, somma ): 12 self. _ saldo += somma
26 Possibile implementazione II 18 def preleva (self, somma ): 19 i f somma <= self. _saldo : 20 self. _ saldo -= somma 21 r e t u r n somma 22 e l s e : 23 tutto = self. _ saldo 24 self. _saldo = 0 25 p r i n t (" Fondi insufficienti ") 26 r e t u r n tutto
27 Classe Correntista La classe Correntista ha quattro attributi: ident : identificatore univoco (es. codice fiscale) nome cognome conti : lista di conti (istanze della classe Conto) che appartengono al correntista Il costruttore: init (self, ident, nome, cognome) inizializza gli attributi passati, e la lista di conti come lista vuota. I metodi: aggiungi conto(self, conto) : aggiunge un istanza della classe Conto alla lista dei conti del correntista (se il conto non è già presente) saldo totale(self) : restituisce la somma di tutti i saldi dei conti di quel correntista Testare opportunamente la classe creando alcune istanze e invocando i metodi su di esse
28 Possibile implementazione I 1 c l a s s Correntista : 2 def init (self, ident, nome, cognome ): 3 self. ident = ident 4 self. nome = nome 5 self. cognome = cognome 6 self. conti = [] 7 8 def aggiungi_conto (self, conto ): 9 i f conto not i n self. conti : 10 self. conti. append ( conto ) def saldo_totale ( self ): 13 r e t u r n sum(c. get_saldo () f o r c i n self. conti )
29 Classe Banca: attributi e costruttore La classe Banca ha quattro attributi nome : nome della banca ultimo creato : l ultimo numero di conto creato (così da permettere di generare numeri di conto univoci e incrementali) correntisti : lista di tutti i correntisti di quella banca (istanze di Correntista) conti : lista di conti (istanze di Conto) della banca Il costruttore: init (self, nome) inizializza il nome della banca, inizializza a 0 ultimo creato e con liste vuote gli attributi correntisti e conti
30 Possibile implementazione I 1 c l a s s Banca : 2 def init (self, nome ): 3 self. nome = nome 4 self. ultimo_creato = 0 5 self. correntisti = [] 6 self. conti = []
31 Outline Correzione esercizi per oggi Oggetti Teoria Esercizi Esercizi per casa
32 Esercizi per casa (per il 18/05/2018 ore 8:59) (Mail: Lab14-...) I NB: consegnare un solo file con tutti gli esercizi di stamattina e le integraizoni seguenti: Implementare i metodi della classe Banca stampa correntisti(self) : stampa identificatore, nome e cognome di ogni correntista della banca stampa conti(self) : stampa numero di conto, id del correntista, saldo di ogni conto della banca crea conto(self, correntista, saldo iniziale=0) : se l argomento passato per correntista è un istanza di Correntista (isinstance(correntista, Correntista)) e l argomento passato per saldo iniziale è maggiore o uguale a 0 (si presume essere 0 se non passato), crea una nuova istanza della classe Conto con un nuovo numero di conto (aggiorna e usa ultimo creato), il correntista e il saldo passati. Il nuovo conto va aggiunto agli elenchi della banca e del correntista. Se non già presente, il correntista va aggiunto all elenco della banca. get conto(self, numero conto) : dato il numero di un conto, restituisce la corrispodente istanza della classe Conto, oppure None
33 Esercizi per casa (per il 18/05/2018 ore 8:59) (Mail: Lab14-...) II deposita(self, numero conto, somma) : deposita la somma nel conto corrispondente, se presente preleva(self, numero conto, somma) : preleva, se possibile, la somma dal conto corrispondente, se presente, e stampa un messaggio con la somma prelevata Creare la sottoclasse ContoConInteressi della classe Conto. La sottoclasse ha nuovi attributi: tasso : il tasso di interesse n : numero di volte in cui vengono calcolati gli interessi in un anno ultimo anno : rappresenta l ultimo anno in cui sono stati accreditati gli interessi
34 Esercizi per casa (per il 18/05/2018 ore 8:59) (Mail: Lab14-...) III Il costruttore è init (self, banca, numero, correntista, saldo iniziale=0, tasso=0.03, n=4), che fa uso del costruttore della superclasse (super(). init (banca, numero, correntista, saldo iniziale)) e poi inizializza gli attributi della sottoclasse con i valori passati. Inizializza anche l ultimo anno all anno corrente (suggerimento: datetime.datetime.now().year). La sottoclasse ha un metodo aggiungi interessi(self, anno) che calcola il valore del saldo aumentato degli interessi composti per anni = anno - ultimo anno, calcolati usando la formula dell interesse composto: ( saldo finale = saldo 1 + tasso n e aggiorna il valore del saldo. ) n anni
35 Esercizi per casa (per il 18/05/2018 ore 8:59) (Mail: Lab14-...) IV Come ulteriori miglioramenti, FACOLTATIVI, potete provare a aggiungere alla classe Banca il metodo giroconto(self, conto addebito, conto accredito, somma) : dati i loro numeri, trasferisce una somma di denaro da un conto ad un altro della stessa banca, ma solo se esistono entrambi e se il conto di addebito ha fondi sufficienti, altrimenti stampa opportuni messaggi di errore. aggiungere alla classe Banca il metodo bonifico(self, numero conto addebito, banca beneficiario, numero conto accredito, somma), che trasferisce una somma di denaro dal conto di addebito a un conto di accredito della banca (istanza di Banca passata come parametro), ma solo se esistono (banca e conti) e se il conto di addebito ha fondi sufficienti, altrimenti stampa opportuni messaggi di errore. Creare una nuova sottoclasse ContoConScoperto della classe Conto che ha un nuovo attributo scoperto (di default a 1000) che è un numero positivo che indica di quanti euro al massimo il conto può andare in rosso. La classe sovrascrive il metodo preleva(self, somma) per far sì che il correntista possa prelevare fino ad arrivare a un rosso (numero negativo) pari allo scoperto massimo.
Laboratorio di Python
Laboratorio di Python Matrici con Liste Lab09 5 Aprile 2017 Outline Correzione esercizi per oggi Matrici Teoria Esercizi Esercizi per casa Esercizio 1 per casa Scrivere una funzione che verifica se una
Laboratorio di Python
Laboratorio di Python Matrici con Liste Lab09 10 Aprile 2018 Outline Correzione esercizi per oggi Matrici Teoria Esercizi Esercizi per casa Outline Correzione esercizi per oggi Matrici Teoria Esercizi
OOP - Object Oriented Programming
OOP - Object Oriented Programming Python linguaggio versatile, supporta, sia programmazione procedurale/funzionale sia, programmazione a oggetti (in maniera non esclusiva) Programmazione orientata agli
OOP: Object Oriented Programming
OOP: Object Oriented Programming Riferimenti per questa parte: 1. Capitoli 7 e 8 del testo di riferimento 2. https://docs.python.org/3.6/tutorial/classes.html OOP: Idea Principale L idea principale della
Laboratorio di Python
Laboratorio di Python Code Lab13 28 Aprile 2017 Outline Correzione esercizi per oggi Code Teoria Esercizi Esercizi per casa Esercizio 1 per casa Scrivere una funzione che determina se uno studente può
Programmazione ad oggetti
Programmazione ad oggetti OOP La programmazione orientata agli oggetti (Object Oriented Programming) ha l obiettivo di formalizzare gli oggetti del mondo reale e di costruire con questi un mondo virtuale.
Programmazione orientata agli oggetti: le classi
Programmazione orientata agli oggetti: le classi Oggetti e tipi di dati La programmazione che abbiamo visto finora agisce su variabili che appartengono a tipi di dati predefiniti: interi, floating point,
Laboratorio di Python
Laboratorio di Python Booleani, Selezione, Input Lab03 7 Marzo 2018 Outline Correzione esercizi per oggi Booleani e Selezione (if) Teoria Esercizi Input Teoria Esercizi Esercizi per casa Esercizio 1 per
Laboratorio di Python
Laboratorio di Python Pile Lab14 10 Maggio 2017 Outline Correzione esercizi per oggi Pile Teoria Esercizi Esercizi per casa Esercizio 1 per casa Scrivere una funzione che prende come parametro una coda
Programmazione II Compitino (Vers. A)
Programmazione II Compitino (Vers. A) 15 gennaio 2015 Cognome... Nome... Matricola... Anno di corso... Nei seguenti quesiti, quando vi è richiesto di scrivere un programma, potete limitarvi al corpo del
A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas
Classi e oggetti A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas Oggetti La programmazione orientata agli oggetti, OOP (Object-Oriented Programming),
Informatica Ereditarietà Java. Ereditarietà
Ereditarietà L'ereditarietà consente allo sviluppatore di riutilizzare il codice già scritto creando sottoclassi a partire da classi già definite. La sottoclasse eredita tutti gli attributi e tutti i metodi
Liste. Una lista è una serie ordinata di valori, ognuno identificato da un indice. I valori che fanno parte della lista sono chiamati elementi.
Python Liste Una lista è una serie ordinata di valori, ognuno identificato da un indice. I valori che fanno parte della lista sono chiamati elementi. Una lista di 8 elementi: el1 el2 el3 el4 el5 el6 el7
Laboratorio di Sistemi Polimorfismo Java. Prerequisiti: per la comprensione dell'articolo è necessario conoscere il concetto di Ereditarietà in Java.
Prerequisiti: per la comprensione dell'articolo è necessario conoscere il concetto di Ereditarietà in Java. Di solito se abbiamo la struttura di una classe con gli attributi e i metodi possiamo istanziare
Il paradigma Object Oriented. Iolanda Salinari
Il paradigma Object Oriented Iolanda Salinari gli oggetti un oggetto è un elemento o concetto del mondo reale che può essere identificato in modo univoco: un cliente, un articolo, un impiegato ogni oggetto
Funzioni - Se non si sono mai viste si possono considerare il modo piu' semplice per poter creare del codice riutilizzabile.
Giugno 2006 Funzioni - Se non si sono mai viste si possono considerare il modo piu' semplice per poter creare del codice riutilizzabile. Classi - Senza voler entrare in termini tecnici si possono considerare
Laboratorio di Python
Laboratorio di Python Esercizi di debug Lab07 27 Marzo 2018 Outline Correzione esercizi per oggi Debug Strategia Esercizi di debug Esercizi per casa Outline Correzione esercizi per oggi Debug Strategia
Programmazione II Compitino (Vers. B)
Programmazione II Compitino (Vers. B) 15 gennaio 2015 Cognome Jackson Nome Michael Matricola 696969 Anno di corso 1 Nei seguenti quesiti, quando vi è richiesto di scrivere un programma, potete limitarvi
laboratorio di python
laboratorio di python esercizi vari, pratiche di debug e di tracing 29 Marzo 2019 1/18 Debug esercizio a cosa non va in questo codice? Scrivere una funzione che prende come parametro una tupla t e restituisce
Laboratorio di Python
Laboratorio di Python Variabili e Funzioni Lab02 1 Marzo 2017 Outline Variabili modificabili Teoria Esempi ed esercizi Funzioni Teoria Esempi ed esercizi Esercizi per casa Outline Variabili modificabili
Le classi in java. Un semplice programma java, formato da una sola classe, assume la seguente struttura:
Le classi in java Un semplice programma java, formato da una sola classe, assume la seguente struttura: class Domanda static void main(string args[]) System.out.println( Quanti anni hai? ); La classe dichiarata
APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO VI.2015
APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2014 2015 15.VI.2015 VINCENZO MARRA Indice Esercizio 1 1 Definizione dei tipi P e T, e calcolo dell area.
Introduzione alla programmazione orientata agli oggetti (prima parte) Rel 1.0
Introduzione alla programmazione orientata agli oggetti (prima parte) Rel 10 a cura del prof Francesco Tappi Il paradigma orientato agli oggetti implica lo sviluppo di unità di programmazione attive, chiamate
laboratorio di python
laboratorio di python definizioni di booleani, selezione ed uso degli input 13 Marzo 2019 1/32 Correzione esercizi per oggi esercizio 1 per casa Scrivere una funzione che non ha nessun parametro, non restituisce
Programmazione in Java (I modulo) Lezione 21: Classi derivate e l'operatore instanceof Riscrivere il metodo tostring() Riscrivere il metodo equals()
Programmazione in Java (I modulo) Lezione 21: Classi derivate e l'operatore instanceof Riscrivere il metodo tostring() Riscrivere il metodo equals() Ereditarietà (Inheritance) RIASSUMIAMO DALLA SCORSA
Dichiarazione di una classe. Dichiarazione ereditarietà
Introduzione Il Java è un linguaggio di programmazione orientato agli oggetti (OOL), perché permette di realizzare in un programma tutti i concetti alla base dell OOP quali: l astrazione dei dati, mediante
laboratorio di python
laboratorio di python iterazione in python 22 Marzo 2019 1/31 Correzione esercizi per oggi esercizio 1 per casa Scrivere una funzione che restituisce True se una stringa passata come parametro è palindroma
Laboratorio di Python
Laboratorio di Python Alberi binari Lab15 12 Maggio 2017 Outline Correzione esercizi per oggi Alberi binari Teoria Esercizi Esercizi per casa Saluti Esercizio 1 per casa Scrivere una funzione palindroma(s)
Corso di. Basi di Dati I. 9. Esercitazioni in SQL: Check, asserzioni, viste
Corso di Basi di Dati 9. Esercitazioni in SQL: Check, asserzioni, viste A.A. 2016 2017 Check Come abbiamo visto, SQL permette di specificare vincoli sugli attributi e le tabelle attraverso il comando check
Esercizio: punti e segmenti
Esercizio: punti e segmenti! Punti e segmenti nel piano, con data abstraction Esercizio: punti e segmenti! Punti e segmenti nel piano, con data abstraction! Lunghezza di un segmento l = (x 2 " x 1 ) 2
LABORATORIO DI INFORMATICA ESERCITAZIONE VIII
LABORATORIO DI INFORMATICA ESERCITAZIONE VIII Cercate di eseguire gli esercizi da soli. Se non ci riuscite, cercate di capire i messaggi di errore. Se non ci riuscite, provateci di nuovo. Poi chiamate
PRINCIPI DELLA OOP. Ereditarietà e polimorfismo
PRINCIPI DELLA OOP Ereditarietà e polimorfismo Ereditarietà e specializzazione Una delle caratteristiche distintive del paradigma di programmazione orientato agli oggetti è l'ereditarietà L'ereditarietà
Esempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e polimorfismo
Esempi al calcolatore su: 1) 2) Subtyping e polimorfismo 1 Esempio 1: 2 Introduzione Java prevede due automatismi legati ai costruttori: Se una classe non ha costruttori viene creato automaticamente il
Programmare. Definire una sequenza di istruzioni che specificano come effettuare una elaborazione
Python Programmare Definire una sequenza di istruzioni che specificano come effettuare una elaborazione Le istruzioni devono essere date in un linguaggio comprensibile dal calcolatore. In generele questi
Fondamenti di Programmazione
Fondamenti di Programmazione Capitolo 12 Polimorfismo e ereditarietà Prof. Mauro Gaspari: gaspari@cs.unibo.it Una classe tempo class Time: def init (self,hours=0,minutes=0,seconds=0): self.hours = hours
Esame Laboratorio di Programmazione
Esame Laboratorio di Programmazione 20 Giugno 2014 NOA Non è possibile usare le classi del package prog.io del libro di testo L obiettivo è scrivere una applicazione che permette di costruire delle torri
Bank account. private double balance; 11/2/2011
Il Linguaggio Java Ereditarietà Bank account class BankAccount { public BankAccount() { balance = 0; } public void deposit(double amount) { balance += amount; } public void withdraw(double amount) { balance
Python moduli classi e qualche funzione grafica di base
Python moduli classi e qualche funzione grafica di base Loriano Storchi loriano@storchi.org http:://www.storchi.org/ I moduli I moduli sono codice sorgente, quindi una collezione di dati, funzioni e classi
Prova di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna:
Prova di Laboratorio del 12.1.2005 [durata 90 min.] Corso A-B di Programmazione (A.A. 2004/05) 1. Leggere da tastiera un insieme di numeri interi ed inserirli in un vettore A 2. Calcolare tramite una funzione
Foglio Elettronico Lezione 1
- Introduzione - Celle e riferimenti - Formule - Approfondimenti - Funzioni logiche Sommario Introduzione - Foglio elettronico o foglio di calcolo - Cos'è? Strumento per raccogliere dati organizzati in
Elementi di Base. Introduzione a Python.
Elementi di Base Introduzione a Python http://www.dia.uniroma3.it/~roselli/ roselli@dia.uniroma3.it Credits Materiale a cura del Prof. Franco Milicchio Panoramica Elementi di base della sintassi (struttura,
Esercizi su strutture dati
Esercizi su strutture dati Marco Alberti Programmazione e Laboratorio, A.A. 2016-2017 Dipartimento di Matematica e Informatica - Università di Ferrara Ultima modifica: 21 dicembre 2016 Liste collegate
Laboratorio di Python
Istruzione di condizione, Input da tastiera, Università di Bologna 6 e 8 marzo 2013 Sommario 1 Tipi di errore e Debugging 2 3 4 Outline Tipi di errore e Debugging 1 Tipi di errore e Debugging 2 3 4 Esercizio
Informatica 1 - Esercitazione Python
Informatica - Esercitazione Python Alessandro Ortis - 23/05/209 Ripasso su uso delle liste. In [42]: ls = [] # lista vuota ls.append(2) # aggiungi alla fine della lista ls.append(22) ls.append(99) ls[]
Concetti principali Ereditarietà e (overriding) di metodi. Ereditarietà e costruttori Livelli di accesso protected e package La classe Object
Ereditarietà Concetti principali Ereditarietà e (overriding) di metodi Dynamic dispatch e polimorfismo Ereditarietà e costruttori Livelli di accesso protected e package La classe Object metodi tostring,
INFORMATICA OOP Relazioni tra classi Roberta Gerboni
2015 - Roberta Gerboni Relazione di associazione E possibile legare varie classi presenti in un progetto con una relazione di associazione. Una associazione individua una connessione logica tra classi
Esempi al calcolatore su: 1) Costruttori ed ereditarietà 2) Subtyping e Polimorfismo
Esempi al calcolatore su: 1) 2) Subtyping e Polimorfismo 1 Esempio 1: 2 Introduzione Java prevede due automatismi legati ai costruttori: Se una classe non ha costruttori viene creato automaticamente il
OOP in Python L O R E N Z O D I S I L V E S T R O
L O R E N Z O D I S I L V E S T R O w w w. d m i. u n i c t. i t / ~ d i s i l v e s t r o d i s i l v e s t r o @ d m i. u n i c t. i t Imperativo Paradigmi di programmazione 2 i programmi sono sequenze
Calcolo su Polinomi ===================
Calcolo su Polinomi =================== Descrizione Implementare la classe Monomio le cui istanze rappresentano generici monomi a valori reali del tipo: m(x) = c* x d ovvero monomi contenenti una sola
Gerarchia di classi Java 1
Specializzare un modello Gerarchia di classi Java Corso di laurea in Una classe modella un pezzo di realtà Una macchina, una moneta, un impiegato Spesso è necessario specializzare la versione originale
Oggetti e classi. Cos è un oggetto
Oggetti e classi Cos è un oggetto Basta guardarsi intorno per scoprire che il mondo reale è costituito da oggetti: libri, biciclette, giocattoli, ma anche ragazzi, bambini, fiori, gatti, cani, fiumi, montagne,
Programmare. Definire una sequenza di istruzioni che specificano come effettuare una elaborazione
Python Programmare Definire una sequenza di istruzioni che specificano come effettuare una elaborazione Le istruzioni devono essere date in un linguaggio comprensibile dal calcolatore. In generele questi
ESERCIZIO 1 ESERCIZIO 1
Si crei un progetto Java che mappi un semplice sistema medico. Il progetto deve contenere tre classi: una per i pazienti, una per le patologie e una per il main. Inoltre si definiscano le seguenti eccezioni:
Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011
Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Paradigma OO Oggetti e Classi Metodi Parametri Variabili di istanza Costruttori Esercizi Paradigma Object-Oriented Il paradigma OO
Esercitazioni di Fondamenti di Informatica - Lez /12/2018
Esercitazioni di Fondamenti di Informatica - Lez. 0 //08 Esercizi su Python. ESAME 3/08/07 es. 6. Scrivere un programma Python 3 che definisce un apposito dizionario che contiene, attraverso le coppie
Ereditarietà e Polimorfismo
Ereditarietà e Polimorfismo Riusare il software A volte si incontrano classi con funzionalità simili In quanto sottendono concetti semanticamente vicini È possibile creare classi disgiunte replicando le
ARRAY E STRINGHE. ESERCIZIO 2 Scrivere un programma che calcola il numero di doppie e di dittonghi (2 vocali vicine) presenti in una stringa.
3 ITI - a.s. 2007-2008 Compiti di Informatica ESTATE 2008 ARRAY E STRINGHE Scrivere una funzione che carica da tastiera un array di n elementi e lo stampa invertendo il primo elemento con l'ultimo, il
Laboratorio di Python (con Linux)
8 a lezione Università di Bologna 2, 4 maggio 2012 Sommario 1 2 3 Diversi Python 2.6 vs 2.7 v.s 3.x La versione di Python installata sulle macchine del laboratorio è la 2.6 (per l esattezza 2.6.6 ). Versioni
Programmazione Orientata agli Oggetti e Scripting in Python
DIEE - Università degli Studi di Cagliari Programmazione Orientata agli Oggetti e Scripting in Python Paradigma ad Oggetti - 2 Alessandro Orro DIEE Univ. di Cagliari 1 ereditarietà: metodi Il meccanismo
Esercizi in Laboratorio
Esercizi in Laboratorio Informatica@SEFA 2017/2018 - Laboratorio 3 Massimo Lauria http://massimolauria.net/courses/infosefa2017/ Lunedì, 16 Ottobre 2017 1 Formattazione delle
Usare Python in Linux
26 Febbraio 2015 Outline 1 Struttura e programma delle lezioni 2 3 Outline Struttura e programma delle lezioni 1 Struttura e programma delle lezioni 2 3 Lezione tipo Struttura e programma delle lezioni
Ingegneria degli Algoritmi (II parte pratica)
Ingegneria degli Algoritmi (II parte pratica) Correzione prova pratica Ing. Domenico Spera domenico.spera@students.uniroma2.eu Premessa Sono stati richiesti i seguenti task: Implementare la versione in-order
Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013
Programmazione a Oggetti e JAVA Prof. B.Buttarazzi A.A. 2012/2013 Sommario Paradigma O.O. Oggetti e Classi Ereditarietà Paradigma Object-Oriented Il paradigma O.O. si ispira all ambiente che ci circonda,
Laboratorio di Python
, Input da tastiera, Iterazione incondizionata 7 marzo 2014 Sommario 1 2 3 Outline 1 2 3 Definizione di funzione import modulo Si importa il modulo specificato def nome_f(par 1,, par n ) : Si definiscono
Object-Oriented Programming
Object-Oriented Programming Una metodologia di programmazione che consente di modellare la realtà in modo più naturale e vicino all uomo Concetti fondamentali Oggetto Incapsulazione Messaggio Classe Ereditarietà
Appunti di informatica. Lezione 8 anno accademico Mario Verdicchio
Appunti di informatica Lezione 8 anno accademico 2016-2017 Mario Verdicchio Il ciclo FOR Molto spesso in un programma bisogna ripetere un operazione per un numero prefissato di volte Si tratta di un iterazione
Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object
Programmazione orientata agli oggetti La classe, metodi e classi final, this 1 La classe Negli esempi fatti nella prima parte del corso abbiamo definito alcune classi, per esempio Counter e Orologio, senza
SQL: le funzioni di aggregazione
SQL: le funzioni di aggregazione funzioni predefinite che agiscono sui valori contenuti in insiemi di righe della tabella: Conteggi Somme Medie Massimi, minimi Funzione Count La funzione COUNT conta il
Ereditarietà: concetti di base
: concetti di base L ereditarietà è uno dei concetti base della programmazione ad oggetti Concetto di base: l ereditarietà permette di usare una classe precedentemente definita per la definizione di una
Programmazione a oggetti
Programmazione a oggetti Quanti oggetti, tra di loro parlando, fanno programmi. Pilu Crescenzi piluc@dsi.unifi.it Università di Firenze Programmazione a oggetti p.1/32 Cosa è un oggetto Una scatola software
14 - Metodi e Costruttori
14 - Metodi e Costruttori Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it
Progettazione Object-Oriented
Progettazione Object-Oriented Generalità, Relazione fra OOA e OOD Concetti di base: Classi e Oggetti, Relazioni fra oggetti, Ereditarietà e Polimorfismo La specifica del Progetto: notazione UML Una metodologia
Si può scrivere un programma anche utilizzando un editor di testo (Blocco Note, WordPad, ) ricordandosi comunque di salvarlo con l estensione.py.
Avviare il programma (Tutti i Programmi Python 2.7 Idle). Quello che si è avviato è l ambiente di sviluppo di Python, che serve per facilitare il programmatore nello scrivere programmi usando Python. Dalla
Stringhe. Walter Didimo
Stringhe Walter Didimo La classe String L uso di stringhe (sequenze di caratteri alfanumerici) nei programmi è molto frequente Per tale motivo, l API di Java offre una classe con molti metodi utili per
Java. Java: compilatore e interprete. Programma Java. Java Virtual Machine. Token. Alfabeto
Java Java: compilatore e interprete Il linguaggio Java è un linguaggio di programmazione ad alto livello - algoritmo: astrazione della realtà - linguaggio di programmazione: astrazione del processore -
La progettazione concettuale
PROGETTAZIONE La progettazione concettuale Sintesi tra la visione degli utenti e la visione dei progettisti. I progettisti devono essere certi di aver compreso esattamente e completamente le esigenze degli
Fondamenti di Informatica T-1
Fondamenti di Informatica T-1 Ereditarietà Tutor: Allegra De Filippo allegra.defilippo@unibo.it a.a. 2016/2017 Fondamenti di Informatica T-1 Allegra De Filippo 1 / 15 Ereditarietà: definizione Meccanismo
Programmazione orientata agli oggetti La classe Object, metodi e classi final, this. Object
Programmazione orientata agli oggetti La classe, metodi e classi final, this 1 La classe Negli esempi fatti nella prima parte del corso abbiamo definito alcune classi, per esempio Counter e Orologio, senza
Laboratorio Programmazione Anno Lezione 3
Laboratorio Programmazione Anno 2012-2013 Lezione 3 Scripting Fino ad ora, per fare esercizi, abbiamo utilizzato l ambiente interattivo di python. È possibile creare dei file contenenti (lunghe) sequenze
Tutorato di Fondamenti di Informatica TUTOR: DAVIDE GHIANI, GIULIA ORRU
Tutorato di Fondamenti di Informatica PROFESSORE: GIAN LUCA MARCIALIS TUTOR: DAVIDE GHIANI, GIULIA ORRU Organizzazione Informazioni di contatto: informatica.marcialis@gmail.com Davide Ghiani Giulia Orrù
Classi ed Oggetti. Fondamenti di Informatica A-K
Classi ed Oggetti Fondamenti di Informatica A-K Esercitazione 5 Introduzione al calcolatore e Java Linguaggio Java, basi e controllo del flusso I metodi: concetti di base Stringhe ed array Classi e oggetti,
ERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} }
ERRATA CORRIGE Pulizia del buffer di input: come fare? (1) Dopo aver richiamato getchar() per prelevare un carattere dal buffer di input, inseriamo una seconda chiamata a getchar(), senza assegnare il
Laboratorio Progettazione Web Le funzioni in PHP. Angelica Lo Duca IIT-CNR 2012/2013
Laboratorio Progettazione Web Le funzioni in PHP Angelica Lo Duca IIT-CNR angelica.loduca@iit.cnr.it 2012/2013 Funzioni Una funzione è una sequenza di istruzioni che implementano una specifica funzionalità
Riassunto: cos è la OOP? classi astratte, interfacce, classi interne. Scaletta. Figura con area()? Figura senza area()? Stefano Mizzaro 1.
OO in Java: classi astratte, interfacce, classi interne Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro mizzaro@dimi.uniud.it Programmazione,
Una classe Borsellino. Tipi numerici di base - Costanti. Esempio d uso. Classe Borsellino cont d. Primi passi per l implementazione di Purse
Una classe Borsellino Tipi numerici di base - Interi e decimali Definizione di costanti /** Realizza un borsellino per le monete. Registra il numero di monete e calcola il valore totale public class Purse
Avviate l interprete Python selezionandolo dal menu dei programmi. Una volta avviato, l interprete presenta un cursore in cui inserire comandi
Introduzione al Python Caratteristiche procedurale si specifica la procedura da eseguire sui dati strutturato concetto di visibililtà delle variabili orientato agli oggetti permette di programmare con
Programmazione orientata agli oggetti Ereditarietà
Programmazione orientata agli oggetti Ereditarietà Fondamenti di Informatica L-B 1 Programmazione basata su oggetti Il modello visto finora costituisce un sottoinsieme del modello orientato agli oggetti
Laboratorio 10. Programmazione - CdS Matematica. Michele Donini, Marta Gatto, Mirko Polato 19 gennaio 2016
Laboratorio 10 Programmazione - CdS Matematica Michele Donini, Marta Gatto, Mirko Polato 19 gennaio 2016 Esercizio 1 Date le seguenti istruzioni, dire senza eseguire, quale sarà il valore contenuto nella
Tecnologie dell'informazione e della Comunicazione
Tecnologie dell'informazione e della Comunicazione Capitolo 11 Classi e Oggetti Prof. Mauro Gaspari: gaspari@cs.unibo.it Definire nuovi tipi? Abbiamo visto diversi tipi di dato strutturati: stringhe liste
9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
9 - Array Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di Laurea
Classe Vettore (i) Creare una classe che consenta di gestire un vettore di N elementi reali (double), che preveda i seguenti metodi:
Classe Vettore (i) Creare una classe che consenta di gestire un vettore di N elementi reali (double), che preveda i seguenti metodi: Vettore(int n): crea un oggetto Vettore contente n elementi, inizializzati
Variabili e input/ Alessandra Giordani Lunedì 18 marzo
Variabili e input/ output da tastiera Alessandra Giordani agiordani@disi.unitn.it Lunedì 18 marzo 2013 http://disi.unitn.it/~agiordani/ Es. compilazione helloworld.c 2 Variabili e valori Una variabile
Corso di PHP. Prerequisiti. 8.1 PHP e MySQL. Conoscenza MySQL Tecnica della programmazione
Corso di PHP 8.1 PHP e MySQL 1 Prerequisiti Conoscenza MySQL Tecnica della programmazione procedurale ad oggetti Principi di programmazione web Programmazione elementare in PHP 2 1 Introduzione In questa
Variabili e Metodi di classe Interfacce e Package Gestione di File in Java
Fondamenti di Informatica Variabili e Metodi di classe Interfacce e Package Gestione di File in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Variabili di classe: Static Una variabile di classe
Introduzione a Python e Gurobi
Introduzione a Python e Gurobi Introduzione Python è un linguaggio di programmazione ad alto livello, rilasciato pubblicamente per la prima volta nel 1991 dal suo creatore Guido van Rossum, programmatore
Installazioni preliminari
Installazioni preliminari È uscita la versione 6u23 dell SDK. Disponibile a: http://www.java.com/en/download/index.jsp Per installare Eclipse invece andare su: http://www.eclipse.org Stile Sono elementi
Fondamenti di Informatica T-1
Fondamenti di Informatica T-1 Input/Output, Variabili, Tipi e Stringhe Tutor: Allegra De Filippo allegra.defilippo@unibo.it a.a. 2016/2017 Fondamenti di Informatica T-1 Allegra De Filippo 1 / 19 VARIABILI