Programmazione Teoria
Programmazione Teoria
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.
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”
__________________________________________________________________________________________
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.
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:
totalVolume = bottles * 2
totalVolume = bottles * BOTTLE_VOLUME
ARITMETICA:
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:
—----------------------------------------------------------------------------------------------------------
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
OPERAZIONI SU STRINGHE
CARATTERI:
I caratteri sono memorizzati come valori interi.
https://home.unicode.org/
http://www.unicode.org/charts/
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.
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
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’
SINTASSI: ESEMPIO
if condizione: if floor > 13 :
enunciati actualFloor = floor - 1
else : else :
enunciati_1 actualFloor = floor
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
DECISIONI ANNIDATE:
E’ possibile annidare un if all’interno di una delle due diramazioni di un altro if.
ISTRUZIONI ELIF:
Abbreviazioni di: else, if…
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.
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 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.
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:
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.
● end =
- Definisce cosa stampare alla fine di riga
- Default: <<a capo>> ‘\n’
- print(‘Hello’, end=’ ‘)
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”
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.