Programmazione Python 3- Lezione 1

Introduzione

Python è un moderno linguaggio di programmazione open source che oggi è uno dei più consolidati al mondo in tutti gli ambiti di sviluppo software.
Supporta sia la programmazione procedurale che la programmazione ad oggetti (dove da il meglio di se), e grazie ad una comunità di sviluppatori grandissima in tutto il mondo possiede innumerevoli funzionalità aggiuntive.
E’ un linguaggio interpretato e le sue prestazioni sono molto elevate grazie alla scrittura del linguaggio mediante programmi in C++ (molte delle funzioni e librerie python sono scritte in linguaggio C++).

Argomenti

Cos’è Python

E’ un linguaggio di Programmazione Pseudocompilato; un interprete analizza il codice sorgente e se la sintassi è corrette lo esegue;
E’ un linguaggio ad alto livello che utilizza il paradigma procedurale, o della programmazione ad oggetti;
Possiede una sintassi semplice rispetto a linguaggi come il C/C++ e Java
Utilizza l’indentazione del programma per riconoscere i blocchi funzionali (corpo ciclo, blocchi di selezione;
Dispone di diverse librerie per moltissimi ambiti: ad esemepio librerie per il calcolo scientifico, programmazione concorrente, per la grafica 2D e 3D, per la programmazione in rete, ecc.
La versione attuale di Python è la 3.9 è un linguaggio multi-piattaforma supporta tutti i sistemi operativi per Desktop e Server e anche dispositivi mobile.
La potenza di Python sta nel fatto che è possibile estendere le funzionalità per moltissimi campi dall’ambito scientifico a quello economico passando per tutti gli algoritmi di Machine Learning.

I dati in Python

Le variabili sono dichiarate in modo implicito, assegnando un valore il linguaggio riconosce il tipo ad esempio:
nome=‘’Andrea’’ dichiara una stringa
stipendio=1350

dichiara una variabile intera
sconto=0.30

dichiara una variabile di tipo reale
risposta=‘y’

dichiara una variabile di tipo carattere
Le costanti come tipologia di dato in Python non sono utilizzate, conviene definire una variabile con lettere MAIUSCOLE assegnarle un valore.
Risulta evidente che nell’utilizzare le variabili i Python conviene definire le variabili con dei valori iniziali. Tale pratica si chiama inizializzazione delle

Istruzioni di input / output

Python lavora su Console detta anche linea di comando o permette attraverso numerosi Toolkit grafici di realizzare delle interfacce grafiche per la gestione dell’interazione con l’utente. In quest’ultimo caso per creare delle interfacce Grafiche occorre conoscere i fondamenti della programmazione ad oggetti. Le istruzioni di Input e Output n Python sono:
input e print;
La sintassi dell’istruzione input prevede una variabile a sinistra secondo la sintassi:
variabile=input(messaggio)


Tutti gli input in Python sono in formato stringa.

L’istruzione print ha la forma
print(messaggio)
All’interno del messaggio è possibile utilizzare le sequenze di Escape \n, \t, ecc
Tutto quello che viene inserito in Input è una stringa così come quello che viene stampato in Output.
Un primo esempio di script
messaggio=input(“digita saluto”)
print(saluto)

Il casting dell’input

Per interpretare i dati occorre effettuare il cast sull’input;
Le parole chiave sono float, long,, int per dati numerici
ad esempio
x=int(input(‘’ inserisci un numero ’’)
p=float(‘’inserisci un numero reale’’)
L’interprete permette la definizione di variabili in modo implicito durante la lettura dei dati, non è obbligatorio dichiarare una variabile se ancora non utilizzata.


Una variabile può essere inizializzata anche ad un valore None ovvero non possiede valore,

Le stringhe e i caratteri

L’input delle stringhe deve avvenire fra virgolette. L’input dei caratteri deve avvenire fra apici.


La concatenazione avviene con il segno +.
Ad esempio nome=‘’Mario’’ e
cognome=‘’Rossi’’
cognome+’ ‘+nome
il risultato è:
‘Mario Rossi’
Alcune funzioni per le stringhe:
-> len(stringa) lunghezza stringa
-> stringa[inizio:fine] sottostringa da indice inizio a indice fine
-> stringa[k] con k compreso fra 0 e len(stringa) carattere di posizione k

Attenzione le stringhe hanno come posizione del primo elemento 0

La parola chiave “in” di Python permette di verificare se una sotto stringa è presente nella stringa ad esempio x=‘’Mario Rossi’’ occorre un ciclo for (vedere più avanti)

Struttura di un programma Python

Il file sorgente deve avere estensione py;
E’ possibile scrivere il programma da Linea di comando in modo interattivo
Nei blocchi funzionali selezione, cicli occorrono i due punti al termine dell’istruzione che apre il blocco;
Ad esempio (inoltre è obbligatoria l’indentazione con TAB o Spazio)
if (a>b):
max=a
else:
max=b

La libreria math

Per alcune funzioni matematiche anche scientifiche è possibile utilizzare la libreria math. Per utilizzare la libreria math in un programma Python è possibile utilizzare la clausola import math. Le funzioni principali presenti sono:
funzioni trigonometriche, esponenziali e logartimiche, e altre ancora. Per visualizzare l’elenco completo delle funzioni è possibile impartire il comando dir(math) e verrà visualizzato l’elenco delle funzioni disponibili nella libreria math.
In tabella sono riportate quelle di maggior uso.

La tabella riassume la sintassi di alcune funzioni con i relativi esempi.
Come esempio scrivere un programma che calcola la media di tre numeri.
Ecco il listato:


media=0
a=float(input(‘inserisci il primo numero\n’))
b=float(input(‘inserisci il secondo numero\n’))
c=float(input(‘inserisci il terzo numero’))
media=(a+b+c)/3
print(‘La media è:\t’)
print(media)

Il listato è molto semplice sono letti tre numeri reali da tastiera è calcolata la media e viene stampata la media.

Strutture fondamentali della programmazione in Python

Python con alcune differenze con altri linguaggi di programmazione possiede dei costrutti fondamentali per la programmazione quali le istruzioni di selezione, e le istruzioni di ciclo. Non esiste in Python lo switch .. case come nel C++ e il ciclo do .. while che è costruito come struttura derivata da quelle esistenti in Python.

La struttura di selezione

Struttura di selezione semplice.

In codice Python 3:
if condizione :
istruzione 1
else:
istruzione 2
ricordarsi che dopo ogni blocco occorre inserire un “TAB” o uno spazio.

Strutture condizionali nidificate

E’ possibile combinare più istruzioni if else per ottenere delle strutture di selezione nidificate o concatenate per controllare il verificarsi o meno di più condizioni.
Il frammento non unico che rappresenta queste strutture è riprotato in figura.

Sono rappresentate in flowchart le condizioni concatenate o nidificate.

La relativa traduzione in codice Python:

if
condizione:
if condizione 2:
istruzione 1
else:
istruzione 2
else:
istruzione 3
La combinazione di condizioni dipende solo dalla soluzione del problema.

Strutture cicliche

Al crescere della complessità del problema la soluzione può presentare parti di soluzioni che devono essere ripetute per rendere il programma efficiente e non puramente sequenziale. Se ad esempio occorre sommare cento numeri è naturale utilizzare una struttura ciclica per eseguire in modo iterativo la somma di questi numeri.
Pertanto le strutture cicliche come in ogni linguaggio di programmazione sono distinte in strutture cicliche a ripetizione definita e indefinita. Nel primo caso la ripetizione è svolta un numero prefissato di volte, nel secondo caso il numero delle ripetizioni è determinato da una condizione. Il blocco di istruzioni da ripetere è chiamato “corpo” del ciclo.

Il ciclo for

Il ciclo for è una struttura ciclica a ripetizione definita nel quale il numero delle ripetizioni è noto e utilizza sempre una variabile ausiliaria per ripetere il corpo del ciclo.
Il diagramma a blocchi o flowchart è rappresentato in figura.

Schema a blocchi ciclo for.
Schema a blocco del ciclo for

Il codice Python è_
for c in range(inizio, fine, passo):
istruzione 1
istruzione 2
istruzione 3
La variabile c è il contatore del ciclo che può variare da un valore iniziale a un valore finale e può essere anche variato il metodo di conteggio attraverso l’argomento passo.
Per comprendere bene quest’ultima affermazione ecco qualche esempio:

Link di affiliazione

Link di affiliazione

Link di affiliazione

Link di affiliazione

Sono ammessi valori interi e reali del contatore;
I valori di partenza e di arrivo del contatore possono essere in incremento o decremento.
Possono essere di esempio:
range(0,10,1) o range(10) da 0 a 9 con passo 1
il passo unitario si può omettere
range(10,20) da 10 a 20 con passo 1
range(10,0,-1) da 10 a 1 con passo -1

Cicli condizionali

Come già detto in precedenza trattasi di cicli il cui numero delle ripetizioni è determinato da una condizione.
Ne esistono due varianti: un ciclo con condizione iniziale e uno con condizione finale.
Nel primo caso il ciclo continua se la condizione è verificata; mentre nel secondo caso se la condizione è falsa.
In Python la ripetizione do .. while non esiste occorre emularla.
Per quanto riguarda il ciclo while la struttura del flowchart è rappresentata come in figura.

Schema a blocchi del ciclo while

Il codice Python è:
while (condizione):
istruzione 1
istruzione 2
istruzione 3


La costruzione della struttura ciclica do .. while

La struttura ciclica do .. while prevede che il ciclo sia prima eseguito e poi sia verificata la condizione. La differenza con il ciclo while sta nel fatto che se la condizione è falsa in partenza il ciclo while non viene eseguito mentre il ciclo do while viene eseguito almeno una volta.
Lo schema a blocchi o flowchart del ciclo do .. while è quello riportato in figura.

Schema a blocchi del ciclo do while.

La codifica in Python è:

while (True):
istruzione 1
istruzione 2
if (condizione)‏:
break
istruzione 3
Attraverso l’if interno si interrompe il ciclo se le condizione è falsa, il while ripete all’infinito le istruzioni fin quando la condizione di uscita del ciclo è verificata.

Ricordiamoci che la condizione di uscita da un ciclo do .. while è quando essa è falsa e quindi se nell’if la condizione è vera deve essere inserito il valore negato.
Ad esempio se il ciclo deve essere ripetuto finché n>=0 allora la condizione di uscita dell’if è n<0.

I sotto programmi in Python

Metodologia top down

La programmazione complessa prevede la scomposizione di problemi complessi in problemi più semplici attraverso l’uso della metodologia top down.
Numerosi sono i vantaggi nell’uso di tale approccio fra i quali:

Semplificazione programciclo_do_whilema
Riuso di codice riprodurre senza ripetere il codice nello stesso programma
Portabilità riuso stesso codice in altri programmi
Per gli ultimi due punti è necessario l’utilizzo di scomposizione in sottoprogrammi con parametri.
Ogni sotto problema conduce ad un algoritmo risolutivo che in codice si traduce in un sotto programma che deve descrivere genericamente la soluzione di quella parte del problema. Questa soluzione è generica solo il sotto programma è scritto in forma parametrica ovvero la sua soluzione è descritta in modo generico indipendentemente dal problema complessivo di cui esso farà parte per concorrere alla soluzione.
Per chiarire meglio occorre definire il concetto di “chiamata a sotto programma” ovvero è l’azione che il programma durante l’esecuzione invoca un’altra porzione di codice trasferendo la sua esecuzione nel punto in cui è presente quel sotto programma invocato. Al termine dell’esecuzione del sotto programma il controllo ritorna al “chiamante” ovvero al programma che lo ha richiamato.
All’atto della chiamata possono essere trasferiti dei valori delle variabili e gli indirizzi delle are di memoria ove tali valori sono memorizzati.

Tipi di chiamate a sotto programma

Non parametriche ovvero non vi è scambio dati diretto fra programma chiamante e sottoprogramma ma solo dati in comune fra tutte le unità di programma. Nella chiamata chiamata parametrica sono passati dati in valore o per variabile dal programma chiamante al sottoprogramma.


Link di affiliazione
Link di affiliazione
Link di affiliazione
Link di affiliazione

Tipi di dati

Sono definite le:
Variabili globali visibili nel programma e nei sottoprogrammi in Python si dichiarano all’esterno delle funzioni;
Variabili locali visibili solo nei sottoprogrammi ove sono dichiarati in Python si dichiarano all’interno delle funzioni;

Parametri formali variabili simboliche utilizzate nei sottoprogrammi per la scrittura di codice che sia indipendente dal programma principale contesto;
Parametri attuali variabili globali che si sostituiscono all’atto della chiamata nel sottoprogramma ove sono utilizzati.
Esempi di chiamate a sotto programma in Python sono:

Esiste la chiamata a sottoprogramma per valore o per nome

def stampa(x):
print(x)
stampa(10)
def stampa(x,y):
print(x)
print(y)

a=10
b=20
stampa(a,b)
Nell’esempio sopra è definita un sotto programma stampa che riceve due parametri x e y e li stampa in output a video. In seguito il sotto programma viene invocato con i valori di a e b che si definiscono parametri attuali.
Le funzioni possono ritornare un valore con l’istruzione return

def area(b,h):
return b*h

A=area(3,10)
print(A)
In questo secondo esempio invece ritorna un valore al programma chiamante che è il calcolo che viene fatto all’interno della funzione. I sotto programmi sono evidenziati in rosso in quanto l’indentazione deve essere rispettata sempre.

Chiamate con numero parametri variabili

Esiste la chiamata a sottoprogramma per nome e per valore con numero di argomenti v
def stampa(*args):
for arg in agrs
print(arg)
a=3
b=-20
stampa(10,20,30,a,b,c)
E’ possibile definire un main che separi il corpo principale del programma dalle funzioni.

Procedure e funzioni

In tutti i linguaggi di programmazione esiste la possibilità di dichiarare e usare procedure ovvero sottoprogrammi che eseguono dei compiti specifici ma possono non restituire dei risultati e delle funzioni ovvero particolari tipi di programma che permettono di essere richiamati all’interno di un istruzione di calcolo o assegnazione e quindi restituiscono obbligatoriamente un risultato.

Video correlati


Video 2 – Le strutture cicliche in Python 3


Video 3 – La scrittura dei sotto programmi in Python 3