Il 0% ha trovato utile questo documento (0 voti)
13 visualizzazioni29 pagine

Programmazione Teoria

Il documento fornisce un'introduzione all'informatica, spiegando la differenza tra hardware e software, e definendo la programmazione come un'attività creativa per risolvere problemi. Viene descritto il concetto di algoritmo e l'importanza dei diagrammi di flusso per visualizzare le soluzioni. Inoltre, il documento esplora le basi della programmazione in Python, inclusi variabili, tipi di dato, funzioni e manipolazione delle stringhe.

Caricato da

matthew.polito15
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
13 visualizzazioni29 pagine

Programmazione Teoria

Il documento fornisce un'introduzione all'informatica, spiegando la differenza tra hardware e software, e definendo la programmazione come un'attività creativa per risolvere problemi. Viene descritto il concetto di algoritmo e l'importanza dei diagrammi di flusso per visualizzare le soluzioni. Inoltre, il documento esplora le basi della programmazione in Python, inclusi variabili, tipi di dato, funzioni e manipolazione delle stringhe.

Caricato da

matthew.polito15
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 29

P1 : LA PROGRAMMAZIONE

Introduzione ai sistemi di elaborazione


L’informatica (Computer Science) è la scienza che si occupa dello studio della
rappresentazione e manipolazione dell’informazione.
Un calcolatore elettronico o computer è composto da due parti:
●​ Hardware: la componente fisica consiste di dispositivi elettronici e parti
meccaniche, magnetiche ed ottiche.
●​ Software: la parte "intangibile", consiste di: programmi ovvero le istruzioni
per l’hardware, e dati le informazioni su cui lavorano i programmi.

HARDWARE:
Comprende gli elementi fisici di un sistema di elaborazione (monitor, mouse,
memoria esterna, tastiera etc…), inoltre comprende la central processing unit
(CPU) che controlla l’esecuzione del programma e l’elaborazione di dati. Dopo di
che troviamo i dispositivi di memoria comprendono la memoria interna (RAM) e la
memoria secondaria…
Infine troviamo i dispositivi di ingresso/uscita che permettono all’utente di
interagire con il computer.

SOFTWARE:
Viene tipicamente sviluppato sotto forma di programma applicativo (APP) ovvero
Microsoft Word è un esempio di software, i giochi elettronici sono software e
sistemi operativi e i driver dei dispositivi sono anch’essi software.
Il software è una sequenza di istruzioni e decisioni implementata in qualche
linguaggio e tradotta in una forma che possa essere eseguita nel computer,
inoltre gestisce i dati utilizzati dalle varie istruzioni.
I computer eseguono istruzioni molto semplici in rapida successione, tali
istruzioni più semplici vengono raggruppate per eseguire compiti più complessi.
La programmazione è l’atto di progettare ed implementare i programmi software.

COSA VUOL DIRE “PROGRAMMARE”:


La programmazione consiste nello scrivere un “documento” o file sorgente che
descrive la soluzione al problema considerato.
In generale “la” soluzione a un dato problema non esiste: la programmazione
consiste nel trovare la soluzione più efficiente ed efficace per il problema,
secondo opportune metriche.
Programmare è un’attività “creativa”! Ogni problema è diverso da ogni altro
problema, non ci sono soluzioni sistematiche/analitiche o soluzioni “universali”.
La programmazione è un’operazione complessa: un approccio “diretto” è
impraticabile; solitamente lo sviluppo è organizzato in diverse fasi: raffinamenti
successivi.

SVILUPPO DI UN PROGRAMMA: problema → soluzione informale → soluzione


formale → programma.
ALGORITMO:
Un algoritmo è una descrizione passo-passo di come risolvere un problema,
ovvero una sequenza il cui ordine è importante, di azioni da compiere (le
istruzioni) per svolgere il compito dato, e raggiungere un obiettivo specifico.
Definizione formale: un algoritmo descrive una sequenza di passi con le seguenti
caratteristiche:
●​ NON AMBIGUA: non possono essere delle “assunzioni” sulla conoscenza
necessaria per eseguire l’algoritmo, il quale usa istruzioni precise.
●​ ESEGUIBILE: l’algoritmo può essere svolto, in pratica.
●​ TERMINA: l'algoritmo, prima o poi, dovrà necessariamente terminare e
fermarsi.

FLOW CHART:
Un diagramma di flusso mostra la struttura delle decisioni e delle attività
necessari a risolvere un problema.
I flow chart sono uno strumento eccellente, aiutano a visualizzare il flusso, lo
svolgimento, dell’algoritmo.
Costruire un flow chart:
-​ Collegare le attività ed i blocchi di I/O nella sequenza in cui dovranno
essere eseguiti.
-​ Quando occorre prendere una decisione, usare il rombo, che possiede due
uscite.
-​ Mai indirizzare una freccia verso un ramo “intero”
__________________________________________________________________________________________

SINTASSI PYTHON: PRINT


Funzione → print( )
Una funzione è un insieme di istruzioni (con un nome) che svolge un compito
particolare. In questo caso stampare un valore su schermo

print( “The answer is”, 6 + 7, “ ! “ )

Per usare una funzione in Python, occorre specificare:


●​ Il nome della funzione → print
●​ Tutti i valori di cui la funzione ha bisogno per svolgere il proprio compito →
“ Hello World ! “
●​ Gli argomenti sono racchiusi tra parentesi tonde, se vi sono più argomenti,
sono separati da virgole.

Posso per esempio stampare delle: stringhe


Una stringa di carattere racchiusa tra apici o virgolette è chiamata Stringa.
-​ Può essere racchiusa tra singoli apici o doppi apici.
P2 : NUMERI E STRINGHE
Introduzione
I numeri e le stringhe di caratteri sono importanti strutture di dati in qualsiasi
programma Python, questi sono anche i componenti che usiamo per costruire
strutture dati più complesse.

VARIABILI
Una variabile è una zona di memoria dotata di un nome in un programma che fa
riferimento ad un valore specifico. Si “definisce” una variabile dicendo
all’interprete: il nome e il valore scelto per la variabile. Attraverso il nome poi ci si
potrà riferire alla variabile durante il corso del programma.

ESEMPIO: ​ lattine = 4 → definisce e inizializza la variabile lattine di valore 4.

Si usa quindi un’istruzione di assegnazione per assegnare un valore alla variabile


come nell’esempio precedente.
Per questa istruzione di assegnazione si usa “ = “ per inserire un nuovo valore
all’interno di una variabile: il nome della variabile si riferirà al nuovo valore.
ESEMPIO:
​ ​ lattine = 4
​ ​ lattine = 6

IMPORTANTE: IL SEGNO “ = “ NON RAPPRESENTA UN CONFRONTO.

Esistono diversi tipi di dato:


-​ Numero intero ( 1 2 3 4 5 6 7 8 9 100) → int
-​ Numero con parte frazionaria ( 8.8 7.4 etc..) → float
-​ Sequenza di caratteri (matteo) ​​ ​ → string
I diversi tipi sono associati al valore non alla variabile !!!
Parliamo ora di come scrivere in modo appropriato i nomi delle variabili:
●​ I nomi delle variabili devono iniziare con una lettera o con un carattere
underscore ( _ ). I caratteri seguenti possono essere lettere, numeri o
underscore.
●​ Non possono usare altri simboli ( ? o % etc…), ne gli spazi.
●​ Separare le parole secondo la convenzione:
-​ snake_case o camelCase
Utilizzare per le variabili dei nomi descrittivi. Questo risulta particolarmente
importante quando un programma è scritto da più persone.

COSTANTI
In Python una costante è una variabile il cui valore non andrebbe mai modificato
dopo che le è stato assegnato un valore iniziale.
Buona norma è quella di usare le lettere MAIUSCOLE per nominare le costanti.

Esempio: ​ BOTTLE_VOLUME = 2.0

Come stile di programmazione è meglio utilizzare delle costanti nei calcoli al


posto di semplici valori espliciti, guarda i due esempi.

Esempio:
totalVolume = bottles * 2
totalVolume = bottles * BOTTLE_VOLUME

ARITMETICA:

Importate come nell’aritmetica di tutti i giorni


ADDIZIONE +
usare le parentesi così da definire bene il calcoli.
SOTTRAZIONE -
Quando si dividono due numeri interi con l’operatore “ / “
si ottengono valori a virgola mobile: 7 / 4 = 1.75. MOLTIPLICAZIONE *
Si possono anche eseguire divisioni intere usando
DIVISIONE /
l’operatore “ // “, esso calcola il quoziente e ignora la parte
frazionaria: 7 // 4 = 1 POTENZA **

Se invece si è interessati al resto della divisione tra interi, va


usato l’operatore “ % “ detto modulo: 7 % 4 = 3.

SVOLGERE ESEMPI DI PROGRAMMA!


INVOCARE FUNZIONI:
Una funzione è un gruppo di istruzioni di programmazione che esegue un
determinato compito.
La funzione print( ) visualizza informazioni, ma ci sono molte altre funzioni
disponibili, imparere a chiamare le funzioni disponibili e crearne delle nuove.
Invocando una funzione bisogna passare il numero corretto di argomenti anche
chiamati parametri.
La maggior parte delle funzioni restituisce un valore. Ossia quando una funzione
completa il suo compito passa il valore al punto dove la funzione è stata
invocata.

ESEMPIO:
L’invocazione abs(-173) restituisce il valore 173.
Il valore restituito da una funzione può essere usato in un’espressione o salvato
in una variabile.
​ distance = abs(x)
Si può usare l’invocazione di una funzione come argomento della funzione print…
​ print(abs(-173))

LIBRERIE DI PYTHON:
Una libreria è una raccolta di codice, scritto e compilato da terzi, che è pronto
all’uso in un programma.
Una libreria standard è una libreria che si considera parte del linguaggio ed è
inclusa in qualsiasi ambiente di sviluppo Python.
Le librerie sono organizzate in moduli:
-​ Funzioni e tipi di dati correlati sono raggruppati nello stesso modulo.
-​ Le funzioni definite in un modulo devono essere esplicitamente caricate in
programma prima che questo le possa utilizzare.
Funzioni predefinite possono essere tipo:
​ print( ), abs( ) …
Librerie standard possono essere invece:
​ quelle librerie che fanno parte di ogni installazioni, organizzate in moduli e
​ ogni modulo contiene più funzioni.
Librerie addizionali sono librerie che non fanno parte di python, devono essere scaricate
o installate nel progetto e dopo essere state installate, possono essere importate e se ne
possono usare le funzioni.
FUNZIONI PREDEFINITE:

1)​ Funzioni sqrt( ) che calcola la radice quadrata dell’argomento, ed è nel


modulo math della libreria standard.

from math import sqrt → Questo in alto a tutto nel programma


y = sqrt( x ) → Questo lo richiamo dopo nel programma

DI SEGUITO TROVIAMO ALTRE FUNZIONI PROVENIENTE DAL MODULO MATH


Ci sono 3 modi per importare le funzioni da dei moduli:
-​ from math import sqrt, sin, cos → importa una lista di funzioni dal modulo.
-​ from math import * → importa tutte le funzioni del modulo
-​ import math → importa il modulo e da accesso a tutte le funzioni.

Quando si usa il terzo metodo, bisogna aggiungere il nome del modulo e un “ . “


prima di ogni invocazione di funzione:
​ import math
​ y = math.sqrt( x )

CONVERSIONE DA NUMERO A VIRGOLA MOBILE A INTERO E VICEVERSA


Si possono usare le funzioni int( ) e float( ) per convertire tra numeri interi e
virgola mobile:
balance = total + tax​ ​ → balance: float
dollars = int( balance ) ​ ​ → dollars: int
In questa situazione si perde la parte frazionaria del numero a virgola mobile.

—----------------------------------------------------------------------------------------------------------

IL PROSSIMO ARGOMENTO E’ FONDAMENTALE E MOLTO IMPORTANTE … SARA’


OGGETTO DI TANTI ESERCIZI ANCHE SE FA ANCORA PARTE DEL FILE P2.
NELLA PAGINA DI SEGUITO VERIFICHEREMO QUESTO ARGOMENTO OVVERO LE
STRINGHE.
STRINGHE:
Definizione base:
-​ Un testo è costituito da caratteri
-​ I caratteri sono lettere, numeri, segni punteggiatura, spazi, …
-​ Una stringa è una sequenza di caratteri.
In Python, le stringhe esplicite sono specificate racchiudendo la sequenza di
caratteri tra virgolette singole o doppie.
​ print( “ This is a string.“, ‘ So is this ‘ )

S.A. → CONCATENAZIONE DI STRINGHE ( “+” )


Si può ‘aggiungere’ una stringa alla fine di un’altra:
​ firstName = “Matteo”
​ lastName = “Amoroso”
​ name = firstName + “ “ + lastName
​ print( “my name is: “, name )

Il numero di caratteri in una stringa è detto lunghezza della stringa.


Esempio: ​ “Harry” → lunghezza = 5.
In Python è possibile conoscere e quindi calcolare la lunghezza di una stringa
usando la funzione len( )
Esempio: ​ length = len( “HARRY!” ) → length = 6
Una stringa di lunghezza pari a zero, 0, è detta stringa vuota.

ATTENZIONE: Usare “ + “ per concatenare le stringhe è un esempio di un concetto


detto operator overloading ovvero operatori che hanno diverse funzioni a
seconda dell’utilizzo → vedere tabella di seguito

intero + intero → addizione intera

float + float + intero → addizione float

stringa + stringa → concatenazione di stringhe

lista + lista → concatenazione di liste

stringa + intero → errore

Abbiamo visto che le stringhe possono essere concatenate attraverso l’utilizzo


dell’operatore “ + “, un'ulteriore operazione che si può eseguire sulle stringhe è:

S.A. → RIPETIZIONE DI STRINGHE ( “ * ” )


Ipotizziamo che vogliamo visualizzare una linea tratteggiata; invece di specificare
una stringa con 50 trattini, si può usare l’operatore * per creare una stringa che
sia composta dalla stringa “ - “ ripetuta 50 volte.
​ linea_tratteggiata = “ - “ * 50 → "-------------------------------------------------"
Come il + anche il * è un operatore overloaded.
S.A. → CONVERSIONI CON LE STRINGHE
Si usa la funzione str( ) per convertire numeri in stringhe →
​ balance = 888.88
​ dollars = 888
​ balanceAsString = str(balance)
​ dollarsAsString = str(dollars)
​ print(balanceAsString)
​ print(balanceAsString)

Quando invece una stringa contiene solo la rappresentazione di un numero


intero o float, la si può convertire in un valore numerico usando le funzioni int( ) e
float( ).
​ val = int(“1729”)
​ price = float(“17.29”)
​ print(val)
​ print(price)

S.A. → STRINGHE E CARATTERI


Le stringhe sono sequenze di caratteri e sono immutabili ovvero non possono
essere modificate dopo la loro creazione, la stessa variabile può essere
aggiornata ma non modificata.
Ad ogni carattere in una stringa corrisponde un indice numerico.
Esempio:

M A T T E O A M O R O S O

0 1 2 3 4 5 6 7 8 9 10 11 12 13

Il primo carattere, in questo caso la “M” ha indice zero questo SEMPRE


L’ultimo carattere ha quindi indice = len(name) - 1

L’operatore [ ] ritorna il carattere corrispondente ad un dato indice:


name = “Matteo”
first = name[0]
last = name[5]

LE STRINGHE ESSENDO IMMUTABILI, NON POSSO ANDARE A MODIFICARE IL
SINGOLO INDICE PER CAMBIARE MAGARI UN CARATTERE !!! NON SI PUO’
S.A. → PORZIONI (SLICE) DI STRINGHE.
La funzione “slice” serve ad estrarre una parte della stringa.
Data una stringa:
​ nome = “Paperon de’ Paperoni”
Si è interessati solo alla porzione (rossa) di stringa dal quinto carattere (indice:4)
al decimo carattere (indice:9).
Si può estrarre una porzione di stringa ottenere l’operatore di slice:
​ porzione = nome[ 4 : 10 ]
Gli argomenti sono il primo elemento (INCLUSO) e l’ultimo (ESCLUSO) …
Entrambi gli indici usati con l’operatore slice sono opzionali, infatti:
-​ Se il primo indice viene omesso, è sottinteso il primo carattere della stringa
(indice 0).
-​ Se il secondo indice viene omesso, saranno inclusi tutti gli elementi fino
all'ultimo.
Nelle porzioni è possibile indicare un terzo argomento:
●​ stringa [ start : stop : step ]
E se lo step è negativo ?! → Intuitivamente, invece di spostarmi in avanti ad ogni
passo, mi sposto indietro ( e quindi prendo gli elementi in ordine diverso), IN
QUESTO CASO → STARS > STOP e STEP < 0

OPERAZIONI SU STRINGHE
CARATTERI:
I caratteri sono memorizzati come valori interi.
https://home.unicode.org/
http://www.unicode.org/charts/

S.A. → CODICE ASCII

S.A. → CONVERSIONE TRA CARATTERI:


-​ ord(c) → Dove “ c “ sta per carattere Unicode e restituisce il valore intero
corrispondente a quel carattere.
Esempio: ord(‘a’) → restituisce → 97
​ ord(‘€’) → restituisce → 8364
-​ chr(i) → Dove “ i “ sta per il codice di un carattere Unicode e restituisce il
carattere corrispondente a quel codice
Esempio: chr(97) → restituisce → a
​ chr(8364) → restituisce → €
Si deduce da sé che ord( ) e chr( ) sono uno l’inverso dell’altro.
—----------------------------------------------------------------------------------------------------------
FUNZIONI METODI

Le funzioni sono generali e possono accettare Diversi metodo sono specifici per diversi tipi di
argomenti di diverso tipo. oggetti.

Le funzioni sono chiamate direttamente, con un I metodi sono chiamati con la notazione del
elenco di parametri. punto (dot-syntax)

Le funzioni restituiscono un risultato che può I metodi restituiscono un risultato che può
essere salvato in una variabile essere salvato in una variabile.
METODI:
-​ Come visualizzare le virgolette?
Anteporre a “ il carattere \, all’interno della stringa virgolettata
​ print( “He said \”Hello\” “) → He said “Hello”
-​ Come visualizzare il backslash?
Anteporre a \ un altro \
​ print( “C: \\Temp\\Secret.text”) → C:\Temp\Secret.text
-​ Caratteri speciali nelle stringe!
Andare a capo con \n
​ print( “ *\n ** \n *** “) →
__________________________________________________________________________________________
P2 : NUMERI E STRINGHE → SOMMARIO COMPLETO
●​ Un ‘valore’ è una zona di memoria contenente dei dati di un certo tipo.
●​ Una ‘variabile’ è nome usato in un programma per riferirsi ad un certo
valore.
●​ Definendo una variabile, bisogna specificare il valore iniziale.
●​ Per convenzione, i nomi delle variabili iniziano con la minuscola.
●​ Un’istruzione di assegnazione fa si che la variabile faccia riferimento ad un
nuovo valore, dimenticando quello precedente.
●​ L’operatore di assegnazione = non indica l'uguaglianza matematica.
●​ Le variabili i cui valori iniziali non vanno modificati sono, per convenzione
chiamate costanti e nominate da caratteri maiuscoli-
●​ L’operatore / opera una divisione che porta ad un risultato che può avere
valore frazionario.
●​ L’operatore // opera una divisione intera, il resto viene ignorato.
●​ L'operatore “%” calcola il resto di una divisione.
●​ Le librerie Python dichiarano varie funzione matematiche, come sqrt e abs
●​ Si può convertire tra interi, numeri a virgola mobile e stringhe usando le
rispettive funzioni: int, float, str
●​ Le librerie Python sono raggruppate in moduli. Si usa l'enunciato import
per utilizzare i metodi da un modulo.
●​ Le stringhe sono sequenze di caratteri.
●​ La funzione len( ) restituisce il numero di caratteri in una stringa.
●​ Si usa l’operatore + per concatenare le stringhe, ossia per metterle assieme
ottenendo una stringa più lunga.
●​ Per la concatenazione, l’operatore + impone che entrambi gli argomenti
siano stringhe. I numeri vanno convertiti in stringhe con la funzione str( )
●​ Si usa l’operatore [pos] per estrarre gli elementi della stringa, oppure [a:b:c]
per estrarre una porzione di caratteri.
●​ Gli indici dei caratteri delle stringhe sono calcolati partendo da 0
●​ La libreria standard contiene numeroso funzioni di manipolazione delle
stringhe.
●​ Per convertire i singoli caratteri da stringa al valore numerico utilizziamo le
funzione ord( ) e chr( ).
P3 : DECISIONI
INPUT & OUTPUT:
Puoi leggere una stringa dalla console con la funzione input( ):
-​ name = input( “Inserisci il tuo nome” )
Se serve un input numero invece di una stringa, si deve convertire la stringa in un
numero attraverso la funzione int( ), se serve invece un float useremo la funzione
float( ).
-​ nome = int(input(“Inserisci la tua età: “))
Talvolta è opportuno inserire dei valori numerici in stringhe di testo in modo da
ottenere un output più chiaro e ordinato da visualizzare.
PYTHON OFFRE DIVERSE SOLUZIONI:
-​ Concatenazione di stringhe
-​ f-String
-​ Operatore di formattazione % ​ ​ |
-​ metodo .format( )​ ​ ​ ​ | → NON TRATTATO IN DETTAGLIO.

f-STRING STRINGHE FORMATTATE:


●​ Una stringa formattata o f-String è una stringa preceduta dal carattere “f”
o “F”.
●​ Queste stringhe possono contenere dei campi sostituibili, nella forma di
espressione racchiuse tra parentesi graffe {}.
●​ Mentre le stringhe classiche hanno normalmente un valore costante, le
f-String sono praticamente espressioni valutate al momento
dell’esecuzione.
ESEMPI:
f “the result is {result}” → the result is 5
f “the sum is {a+b}” → the sum is 15
f “the result is {result=}” → the result is result=5
-​ Aggiungendo il simbolo “ = “, viene inserito anche il nome della variabile.
E’ possibile modificare il formato in cui vengono stampati i valori, utilizzando
degli specificatori di formato, essi vengono inseriti all’interno delle graffe dopo
l’espressione da valutare, separati dal simbolo “ : “
​ f “La distanza è {dist:8.2} metri “
{valore/variabile/espressione​ : specifica di formato }
SPECIFICATORI:
-​ Allineamento: < , > , = , ^
-​ Segno: + , - , ‘ ‘
-​ Conversione: s, b, c, d, o, x, X, n, e, E, f, F, g, G, %, None
Come scritto nell’esempio precedente ovvero: f “La distanza è {dist:8.2f} metri “
In questo esempio stiamo provando a stampare numeri reali (float) utilizzando le
f.String → in questo caso troviamo:
{ valore : ampiezza . precisione f }
-​ Valore = valore float da stampare.
-​ Ampiezza = numero di caratteri che verranno stampati
-​ Precisione = numero di cifre che verranno stampate dopo il punto decimale
-​ f = Usa il formato “float” non dimenticare
ESEMPI:
-​ f”{pi:10.3f}’
‘-----3.142’
-​ f”{pi:8.6f}’
‘3.141593’
-​ f”{pi:10.6f}’
‘--3.141593’
-​ f”{7:10.6f}’
‘--7.000000’
ARROTONDAMENTO:
Notiamo la differenza tra:
●​ print(round(pi, 3))
-​ Arrotonda il valore float alla terza cifra, e stampa il risultato.
-​ Non posso controllare l’ampiezza complessiva, non inserisce spazi
all’inizio.
-​ Se le cifre decimali arrotondate fossero degli 0, non verrebbero
stampate. Es: print(round(7, 3)) → ‘7’ e non ‘7.000’.
●​ print(f ‘{pi:8.3f}’)
-​ Definisce il numero di caratteri da stampare.
-​ Più ordinato e flessibile, se utilizzato per stampare.

Conclusione: meglio round( ), per arrotondare in formule matematiche, meglio


f ‘ {:f}’ per stampare.

OPERATORE DI FORMATTAZIONE %
Per controllare il modo in cui il numero viene rappresentato si usa l’operatore %
Tra i principali troviamo:
%s - Stringa (o altri oggetti rappresentabili come stringa, ad esempio numeri)
%d - Numero intero
%f - Numero in floating point
%. (number of digits) f - Numero floating point con un numero fisso di cifre dopo il
punto decimale.
%x / %X - Numero intero rappresentato in base 16 (hex)
print("Price per liter %.2f" %(price))
Price per liter: 1.22
print("Price per liter %10.2f" %(price))
Price per liter: 1.22
CONFRONTO TRA METODI DI FORMATTAZIONE X OUTPUT

OPERATORE: % F-STRING

“your age is %d” % (age) f”your age is {age}”

Stringa di formato Stringa preceduta dalla lettera “f”

% placeholder {...} placeholder

Il valore vero e proprio viene inserito {age} è una variabile esistente nel
prendendolo dai valori in %(val, val, …) codice python in esame
rispettando l’ordine

L’ISTRUZIONE IF:
●​ In un programma è spesso necessario prendere delle decisioni in base al
valore di ingresso o di variabili interne.
●​ Per esempio, nella situazione dei palazzi (in America) si “salta” spesso il 13°
piano, e così devono fare gli ascensori.
-​ Il 14° piano è in realtà il 13° piano.
-​ Quindi il numero di ogni piano sopra al 12°, è in realtà ‘piano - 1’

●​ Le due keyword che permettono di realizzare un costrutto condizionale


sono: if and else.
●​ L’istruzione if permette a un programma di fare cose diverse in base al
valore dei dati che sta elaborando.

SINTASSI: ESEMPIO
​ if condizione: ​ ​ ​ ​ if floor > 13 :​ ​ ​
​ enunciati actualFloor = floor - 1
​ else : else :​
​ enunciati_1 ​ actualFloor = floor

Alcuni costrutti Python sono compound statement ovvero istruzioni composte.


Tali compound statement si sviluppano su più di una riga di codice e consistono
di un header e di blocco di istruzioni.
I compound statement richiedono un “ : “ alla fine dell’header:
​ if <condition> : ← Header
​ ​ <instr 1>
​ ​ <instr 2> ← Blocco di istruzioni (insieme di una o più istruzione)
​ ​ <instr 3>
OPERATORI RELAZIONALI:
Ogni istruzione if è associata a una condizione che generalmente confronta due
valori con un operatore.

CONFRONTO DI STRINGHE:
-​ Verificare se due stringhe sono uguali
if name1 == name2:
​ print(“The strings are identical”)
-​ Verificare se due stringhe sono diverse
If name1 != name2:
​ print(“The strings are not identical”)
L’USO DI MATH.ISCLOSE( )
Il confronto a meno di un errore può essere ottenuto anche con la funzione
isclose( ) del modulo math.
​ from math import isclose
​ if isclose (r*r, 2.0):
Si può definire l’errore relativo o l’errore assoluto rispettivamente specificando:
-​ rel_tot e abs_tot

math.isclose(a, b, rel_tot, abs_tot) → dove:


a = obbligatorio, il primo valore da controllare
b = obbligatorio, secondo valore da controllare
rel_tot = opzionale, indica la tolleranza.
abs_tot = opzionale, indica il minimo di tolleranza.

L’ORDINE ALFABETICO e OPERATORI:


Per confrontare due stringhe alfabeticamente si usa un operatore relazionale.
ATTENZIONE:
●​ Le lettere MAIUSCOLE vengono prima di quelle minuscole
●​ Lo spazio viene prima di tutti i caratteri
●​ I numeri vengono prima delle lettere
●​ L’ordine delle lettere è definito dal codice ASCII.
Gli operatori aritmetici hanno la precedenza sugli operatori relazionali.

DECISIONI ANNIDATE:
E’ possibile annidare un if all’interno di una delle due diramazioni di un altro if.

ISTRUZIONI ELIF:
Abbreviazioni di: else, if…

PASS è un’istruzione “speciale”, che non fa nulla, ma permette la scrittura


sintattica corretta e prima o poi sarà sostituita da codice <vero>.
VARIABILI E OPERATORI BOOLEANI
Variabili booleane:
-​ Una variabile booleana può essere solo VERA o FALSA
-​ bool è un tipo di dato in Python
-​ Una variabile booleana è spesso utilizzata come flag proprio perché può
essere solo vera o falsa. La condizione di un’istruzione if è un valore
booleano.
-​ Ci sono tre diversi operatori booleani principali: and, or, not

CONDIZIONI MULTIPLE: AND


Combinare condizioni Booleane è utile, ad esempio, nel controllare su un valore
cade in un certo intervallo.
-​ ENTRAMBE le condizioni in un and devono essere VERE affinché il risultato
sia VERO.

Le variabili booleane possono essere usate per <ricordarsi> una certa


condizione, e testarla più avanti.
​ isLiquid = temp > 0 and temp < 100
​ if isLiquid :
​ print(“Liquid”)

CONDIZIONI MULTIPLE: OR
Si utilizza l’or se una sola delle condizioni deve essere Vera affinché la condizione
multipla sia Vera.
-​ Se una qualunque delle condizioni è vera, il risultato è VERO.

OPERATORE: NOT
Se c’è bisogno di invertire una variabile booleana o il risultato di un confronto, si
deve utilizzare il not
CONVERSIONE A VALORI BOOLEANI
E’ possibile convertire un qualsiasi valore in un booleano, usando la funzione
bool( ), con il seguente comportamento:
●​ bool(intero) = True se e solo se interno != 0
●​ bool(float) = True se e solo se float != 0
●​ bool(string) = True se e solo se string != “ “
●​ bool(lista) = True e se solo se len(linsta) != 0
●​ bool(None) è SEMPRE FALSA.

ANALISI DI STRINGHE:
È spesso necessario analizzare una stringa… Come per esempio sapere se una
stringa contiene al suo interno una certa sottostringa.
●​ Operatore in e il suo inverso not in
​ name = “Matteo Amoroso”
​ “teo” in name
​ → Ritorna vero perchè la sottostringa “teo” appare all’interno della variabile
stringa name.

Supponiamo di avere un nome di un file in una stringa, e di dover verificare che


abbia la corretta estensione:
​ if filename.endswith(“.html”) :
​ print(“This is an HTML file.”)
Il metodo endswith( ) applicato a una stringa, ritorna TRUE se la stringa termina
con la sottostringa fornita come parametro. E FALSE altrimenti.

DI SEGUITO OPERAZIONI PER ANALIZZARE SOTTOSTRINGHE:


VALIDAZIONE DEGLI INPUT:
Accettare un input senza controllarlo è in generale pericoloso.
I seguenti input non sono validi:
-​ Il numero 13
-​ Zero o un valore negativo
-​ Un numero maggiore di 20
-​ Un input che non sia una sequenza di cifre numeriche.
Non fidarsi MAI dell’input dell’utente, controllare sempre che contenga valori
accettabili, prima di continuare l’esecuzione.
Se il valore letto non è accettabile, stampare un messaggio e:
-​ Richiedere di inserire nuovamente il valore o uscire dal programma.
from sys import exit
exit(“Valore non accettabile”)

P3 : DECISIONI → SOMMARIO
●​ L’istruzione if permette a un programma di eseguire azioni diverse a
seconda dei dati che sta processando.
●​ Gli operandi relazionali ( < <= > >= == != ) vengono utilizzati per confrontare
numeri e stringhe.
●​ Le stringhe sono confrontate in ordine alfabetico.
●​ If multipli possono essere combinati per valutare decisioni complesse.
●​ Quando si utilizzano if multipli, si devono prima testare le condizioni più
generali e poi quelle più specifiche.
●​ Il tipo di dato booleano ha solo due possibili valori, Vero e Falso
●​ Python ha due operatori booleani che permettono di combinare condizioni
booleane: and e or.
●​ Per invertire una condizione, si usa l’operatore not.
●​ Gli operatori and e or valutano le condizioni da sinistra a destra:
●​ La legge di De Morgan spiega come negare condizioni multiple con and e
or.
●​ Si utilizzi la funzione print( ), per leggere dati da tastiera.
●​ Se l’input non è una stringa, si usino la funzione int( ) o float( ) per
convertire il testo inserito in numero.
●​ Si utilizzino le f-string per una formattazione dell’output più agevole.
●​ Si utilizzino le definizioni di formato per specificare come i valori
dovrebbero essere formattati (quando si stampano).
P4 : CICLI, RIPETIZIONI, INTERVALLI E SEQUENZE.
IL CICLO WHILE:
I cicli sono utilizzati per ripetere diverse volte lo STESSO blocco di istruzioni:
-​ … con valori diversi delle variabili.
-​ … fino a che una <<condizione di ciclo>> rimane VERA.
I casi principali di utilizzo sono: calcolare l'interesse composto, simulazione,
analisi di dati simili.

SINTASSI: ​ ​ ​ ​ ​ ​ ​ ​ ESEMPIO:
​ while condition : ​ ​ ​ ​ while balance < TARGET
​ enunciati ​ ​ ​ ​ interest = balance * RATE/100​
​ enunciati ​ ​ ​ ​ balance = balance + interest

Cicli controllati da un contatore:


-​ Un ciclo while controllato da un contatore, conta il numero di ripetizioni
effettuate e si ferma quando sono state completate un numero predefinito
di iterazioni.
Esempio:
​ counter = 1​ ​ ​ ​ ​ #Inizializza il contatore
​ while counter <= 10 :​ ​ ​ #Controlla il contatore
​ ​ print(counter)
​ ​ counter = counter + 1​ ​ #Aggiorna il contatore

Cicli controllati da un evento:


-​ Un ciclo while controllato da una condizione che, prima o poi, diventa
falsa, in questo caso il numero di iterazioni non è noto in anticipo.
Esempio:
​ balance = INITIAL_BALANCE​ ​ #Inizializza la variabile del loop
​ while balance <= TARGET: ​ ​ #Controlla la variabile del loop
​ ​ year = year + 1
​ ​ balance = balance * 2

Cicli MISTI:
-​ Non tutti i cicli sono controllati solamente da un contatore o da un evento.
Esempio:
Leggere una sequenza di numeri. Il programma interrompe la lettura quando ha
letto 10 numeri oppure quando legge il numero 0.
INTERRUZIONE e CONTINUAZIONE di un ciclo:
●​ BREAK:
Se all’interno di un ciclo si inserisce l’istruzione break
-​ Il ciclo viene interrotto.
-​ Senza completare l’iterazione corrente
-​ Anche se non sono state fatte tutte le iterazioni necessarie
-​ L’esecuzione continua con le istruzioni successive al ciclo.

●​ CONTINUE:
Se all’interno di un ciclo si inserisce l’istruzione continue
-​ Non viene completata l’iterazione corrente.
-​ Il ciclo continua normalmente con l’iterazione successiva (senza
terminare quella corrente).

VALORI SENTINELLA:
Quando si legge una sequenza di input, è spesso necessario un metodo per
indicare la fine della sequenza. Quando non si sa quanti elementi ci sono in una
lista, si può utilizzare un carattere o un valore speciale per identificare l’ultimo
della lista.
-​ Questo valore si chiama “ sentinella “
-​ Per input di numeri interi positivi, si può ad esempio usare 0 o -1
-​ Una sentinella identifica la fine dei dati ma NON FA PARTE DEI DATI STESSI.
●​ Alcuni programmatori non amano il “trucco” di inizializzare la variabile di
input ad un valore diverso dalla sentinella.
●​ Un’alternativa è di precaricare la variabile con una lettura iniziale FUORI
DAL CICLO
●​ A questo punto, all’interno del ciclo, la lettura del prossimo valore va
spostata alla fine del ciclo (ultima istruzione del corpo del ciclo).
IL CICLO FOR:
Il ciclo for … in serve a iterare su tutti i valori di un qualsiasi contenitore.
Un contenitore è un oggetto come una stringa, che può memorizzare un insieme
di elementi.
Python ha diversi tipi di contenitori:
-​ Una stringa è un contenitore di caratteri.
-​ Una lista è un contenitore di valori arbitrari (numerici stringhe, liste).
-​ Un file è un contenitore di linee di testo.

CICLI FOR VS WHILE


-​ Nel ciclo while, alla variabile indice(i) vengono assegnati i valori 0, 1, … E così
via.
-​ Nel ciclo for, alla variabile letter vengono assegnati tutti gli elementi del
contenitore:
stateName[0], stateName[1], e così via.
-​ Nota: “Virginia” è una stringa, contenitore della sequenza di lettere →
“V”, “i”, “r”, “g”, “i”, “n”, “i”, “a”.

IL CONTENITORE RANGE:
●​ È un contenitore speciale di una sequenza di numeri consecutivi.
●​ Si genera con la funzione range(N) crea una sequenza di interi da 0 a N-1
●​ Quindi un for con un range( ) è equivalente a un ciclo while controllato da
un contatore.
Si può utilizzare un ciclo for per creare un ciclo controllato da un contatore:

VERSIONE WHILE:​ ​ ​ ​ VERSIONE FOR:


​ i = 1​ ​ ​ ​ ​ ​ for i in range(1,10) :
​ while i < 10 : ​ ​ ​ ​ ​ print(i)
​ print(i)
​ i=i+1
Nel range il primo valore è l’inizio, il secondo è la fine ovvero se metto 10 andrà
fino a 10-1 = 9, il terzo è lo step con quanto va avanti.
CICLARE SU INDICE E VALORE:
While → Ciclo sull’indice​ ​ ​ ​ For → Ciclo sul valore
​ i = 0​ ​ ​ ​ ​ ​ ​ for lettera in nome:
​ while i < len(nome): ​ ​ ​ ​ print(lettera)
​ lettera = nome[i]​ ​ ​ ​ i=i+1
​ print(i, lettera)
​ i=i+1
PER STAMPARE I CARATTERI ED IL LORO INDICE POSSO FARE:
​ for (i, lettera) in enumerate(nome):
​ ​ print(i, lettera)

LA FUNZIONE ENUMERATE( )
La funzione enumerate trasforma un qualsiasi contenitore in una sequenza di
coppie esempio:
-​ nome = “ciao”
-​ enumerate(nome)
-​ for (indice, valore) in enumerate(nome):

CICLI ANNIDATI:
-​ Problemi più complessi richiedono spesso di annidare un ciclo all’interno
di un altro, il ciclo annidato sarà indentato all’interno del blocco di codice
dell’altro ciclo.
-​ Un buon esempio di utilizzo di cicli annidati è l’analisi delle celle di una
tabella…
Il ciclo più esterno itera sulle righe della tabella.
Il ciclo più interno processa le colonne nella riga corrente.

PARAMETRI OPZIONALI DELLA FUNZIONE PRINT:


●​ sep =
-​ Definisce il separatore da usare se si stampano diversi valori.
-​ Default: spazio ‘ ‘
-​ print(hour, min, sec, sep=’:’)

●​ end =
-​ Definisce cosa stampare alla fine di riga
-​ Default: <<a capo>> ‘\n’
-​ print(‘Hello’, end=’ ‘)

sep e end sono named parameters, parametri nominati in maniera esplicita.


Possiamo usare il parametro opzionale “end”, per evitare che la print stampi un
<<a capo>> dopo che gli argomenti sono visualizzati. Si utilizza quando vogliamo
stampare diversi elementi sulla stessa riga usando diverse istruzioni print.
Includendo end=” “ come argomento, la funzione print stampa una stringa vuota
dopo gli argomenti, al posto di un <<a capo>>. L’output della print successiva
inizierà di conseguenza sulla stessa riga.
APPLICAZIONE: NUMERI CASUALI E SIMULAZIONI:
●​ NUMERI CASUALI/SIMULAZIONI
-​ I giochi spessissimo utilizzano numeri casuali per rendere le cose più
interessanti, come il lancio dei dati, girare una ruota o estrarre una
carta.
-​ Una simulazione generalmente richiede di ciclare attraverso una
sequenza di eventi: giorni, minuti, secondi o eventi.
Python mette a disposizione un generatore di numeri casuali che produce
numeri che sembrano casuali. random() ritorna un numero >=0 e < 1.
Il generatore di numeri casuali si trova nel modulo “random”:
-​ from random import random.
ELABORAZIONE DI STRINGHE:
-​ Un tipico uso dei cicli è per l’analisi delle stringhe.
-​ Ad esempio, si potrebbe voler: calcolare il numero di occorrenze di uno o
più caratteri all’interno di una stringa, oppure, verificare che il contenuto
della stringa sia conforme a una qualche regola.

CONTARE I MATCH
-​ Si supponga di voler calcolare il numero di lettere maiuscole contenute in
una stringa.
-​ Si può usare un ciclo for per controllare ogni carattere della stringa e
verificare se sia maiuscolo.
-​ Il ciclo sottostante setta la variabile ch via via a ogni carattere della
stringa.
-​ Ogni iterazione del ciclo controlla un carattere della stringa e verifica se
sia maiuscolo.

CONTARE I VOCALI
-​ Si supponga di voler contare le vocali in una stringa.
-​ Si può utilizzare un ciclo for per controllare se sia parte della stringa di
sole vocali “aeiou”.
-​ Il ciclo sottostante setta a ogni iterazione la variabile ch al prossimo
carattere della stringa.
-​ A ogni iterazione il ciclo verifica se ch, minuscolo, sia anche incluso nella
stringa “aeiou”

RICERCA DI TUTTI I MATCH


-​ Quando è richiesto di esaminare ogni carattere di una stringa,
indipendentemente dalla sua posizione possiamo impostare un ciclo for-in.
-​ Se invece dobbiamo stampare anche la posizione di ogni carattere
maiuscolo in una frase, possiamo iterare sulle posizioni di ogni carattere e
usare la posizione per testare il carattere corrispondente.
-​ Inizializziamo il range alla lenght della stringa: Testiamo ogni carattere, se
maiuscolo, stampiamo la sua posizione i nella stringa.
COSTRUIRE UNA NUOVA STRINGA
●​ Il contenuto di una stringa non si può modificare
●​ Le stringhe sono immutabili → Dobbiamo creare una nuova stringa.

Questo ciclo costruisce una nuova stringa contenente un numero di carta di


credito senza spazi o trattini:
-​ Si legge il numero di carte di credito
-​ Si inizializza la nuova stringa come vuota (= “ “)
-​ Si testa ogni carattere inserito dall’utente

P4 : CICLI → SOMMARIO
●​ Cicli while, sono in generale più versatili
●​ Cicli for, si usano i cicli for per: iterare sugli elementi contenuti in un
contenitore, creare un ciclo controllato da un contatore di interi.
●​ La funzione enumerate permette di ciclare contemporaneamente sugli
indici e sui valori di un contenitore.
●​ Per interrompere anticipatamente una singola iterazione, usare continue,
per interrompere anticipatamente tutto il ciclo, usare break.
●​ Ogni ciclo richiede le seguenti parti:
-​ Inizializzazione, condizione e aggiornamento.
●​ Un ciclo esegue il suo blocco di istruzioni fintanto che la condizione è vera.
●​ Sbagliare il numero di ripetizioni di 1 è un errore molto comune.
●​ Un valore sentinella serve ad identificare la fine di un insieme di dati, ma
non fa mai parte dei dati stessi.
●​ È possibile utilizzare una variabile booleana per controllare un ciclo.
●​ I cicli sono utilizzati in molti problemi di manipolazione ed analisi delle
stringhe.
●​ In una simulazione, si usa un computer per simulare un’attività.
-​ Si può introdurre il concetto di <<casualità>> utilizzando i generatori
di numeri casuali.

Potrebbero piacerti anche