Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Funzioni in Python: Guida all'Utilizzo e Implementazione, Appunti di Programmazione e controllo

Una guida dettagliata sull'utilizzo e l'implementazione delle funzioni in python. Vengono spiegati concetti chiave come la chiamata di funzioni, le funzioni integrate, i cicli annidati e l'elaborazione di stringhe. Il testo include esempi pratici e spiegazioni chiare su come progettare e testare le proprie funzioni, oltre a discutere l'ambito delle variabili e le funzioni ricorsive. Ideale per studenti e programmatori che desiderano approfondire la loro conoscenza delle funzioni in python e migliorare le loro competenze di programmazione. Una panoramica completa e ben strutturata delle funzioni in python, rendendolo una risorsa preziosa per l'apprendimento e la consultazione.

Tipologia: Appunti

2024/2025

Caricato il 15/10/2025

elisa-alesiani
elisa-alesiani 🇮🇹

2 documenti

1 / 36

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Fondamenti di
programmazione
UTILIZZARE “W3SCHOOL.COM/PYTHON/DEFAULT.ASP” PER ULTERIORI
CONOSCENZE
CAP.1: Introduzione software, hardware e sviluppo degli algoritmi
Algoritmo
Un algoritmo è una descrizione passo passo di come risolvere un problema. C’è
differenza tra algoritmo e programma. Il programma può essere infinito mentre
l’algoritmo è sempre finito.
Programmi
Un programma per computer comunica a un computer la sequenza di passaggi
necessari per completare un’attività specifica. Il programma è costituito da un numero
elevato di istruzioni primitive (semplici).
I computer possono svolgere una vasta gamma di compiti perché possono eseguire
programmi diversi. Ogni programma è progettato per indirizzare il computer a
lavorare su un’attività specifica.
Programmazione
L’atto di progettare, implementare e testare programmi per computer.
Software e hardware
Andiamo a separare la parte software da quella hardware perché la parte hardware è
“inferiore”. Nell’architettura di Von Neumann non c’era la parte software, non aveva
programmi.
L’hardware è costituito dagli elementi fisici di un sistema informatico (monitor,
mouse, tastiera…).
-La CPU esegue il controllo del programma e l’elaborazione dei dati.
È composta dall’unità di controllo, l’unità logica aritmetica, i registi e il clock. Dirige il
funzionamento del processore.
-I dispositivi di archiviazione includono memoria (RAM) e spazio di archiviazione
secondario (disco rigido, unità flash).
Esistono due tipi di archiviazione: primaria e secondaria. La prima è volatile, mantiene
la memoria finché è fornita energia elettrica.
Lo storage secondario fornisce uno storage più lento, meno costoso e persistente: i
dati persistono senza energia elettrica.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24

Anteprima parziale del testo

Scarica Funzioni in Python: Guida all'Utilizzo e Implementazione e più Appunti in PDF di Programmazione e controllo solo su Docsity!

Fondamenti di

programmazione

UTILIZZARE “W3SCHOOL.COM/PYTHON/DEFAULT.ASP” PER ULTERIORI

CONOSCENZE

CAP.1: Introduzione software, hardware e sviluppo degli algoritmi

Algoritmo Un algoritmo è una descrizione passo passo di come risolvere un problema. C’è differenza tra algoritmo e programma. Il programma può essere infinito mentre l’algoritmo è sempre finito. Programmi Un programma per computer comunica a un computer la sequenza di passaggi necessari per completare un’attività specifica. Il programma è costituito da un numero elevato di istruzioni primitive (semplici). I computer possono svolgere una vasta gamma di compiti perché possono eseguire programmi diversi. Ogni programma è progettato per indirizzare il computer a lavorare su un’attività specifica. Programmazione L’atto di progettare, implementare e testare programmi per computer. Software e hardware Andiamo a separare la parte software da quella hardware perché la parte hardware è “inferiore”. Nell’architettura di Von Neumann non c’era la parte software, non aveva programmi. L’hardware è costituito dagli elementi fisici di un sistema informatico (monitor, mouse, tastiera…). -La CPU esegue il controllo del programma e l’elaborazione dei dati. È composta dall’unità di controllo, l’unità logica aritmetica, i registi e il clock. Dirige il funzionamento del processore. -I dispositivi di archiviazione includono memoria (RAM) e spazio di archiviazione secondario (disco rigido, unità flash). Esistono due tipi di archiviazione: primaria e secondaria. La prima è volatile, mantiene la memoria finché è fornita energia elettrica. Lo storage secondario fornisce uno storage più lento, meno costoso e persistente: i dati persistono senza energia elettrica.

I computer memorizzano sia dati che programmi che si trovano nella memoria secondaria e caricati in memoria primaria quando il programma viene eseguito. Il computer tipico ha una memoria principale che va da 4 Gb a 32 Gb. -I dispositivi di input/output consentono all’utente di interagire con il computer (mouse, tastiera, stampante…). Eseguire un programma Quando un programma viene avviato, viene portato in memoria, dove la CPU può leggerlo. -La CPU esegue il programma un’istruzione alla volta. -Il programma può reagire agli input dell’utente. -Le istruzioni e gli input dell’utente guidano l’esecuzione del programma. -La CPU legge i dati, li modifica e li riscrive in memoria, sullo schermo o sulla memoria. Software È tipicamente realizzato come programma applicativo. Il software è una sequenza di istruzioni e decisioni implementate in un linguaggio tradotte in una forma che può essere eseguita sul computer. Algoritmi Per far eseguire un compito ad un computer si inizia scrivendo un algoritmo. Un algoritmo è una sequenza di azioni da compiere per portare a termine un determinato compito. Per problemi complessi, gli sviluppatori di software scrivono un algoritmo prima di tentare di scrivere un programma per computer. È consigliato scrivere algoritmo (pseudocodice/diagramma di flusso) prima di ogni progetto. Un algoritmo descrive una sequenza di passaggi che è:

  1. Non ambiguo a) Non sono necessarie “assunzioni” per eseguire l’algoritmo b) L’algoritmo utilizza istruzioni precise
  2. Eseguibile a) L’algoritmo può essere eseguito in pratica
  3. Terminante a) L’algoritmo finisce o, si ferma, alla fine. Prima domanda da farsi per lo sviluppo di un algoritmo è: quali sono i dati di input e output? Potrebbe capitare che non si hanno né dati di input ne dati di output. LINGUAGGIO DI PROGRAMMAZIONE PYTHON The Python Language
  • Gli argomenti sono racchiusi tra parentesi e gli argomenti multipli sono separati da virgole.
  • Una sequenza di caratteri racchiusi tra virgolette è chiamata stringa. Esempi

Stampa valori numerici

  • Print(3+4)
  • Valuta l’espressione 3+4 e mostra 7

Passa molteplici valori alla funzione

  • print(“the answer is”, 6 * 7)
  • Mostra the answer is 42

Ogni valore passato alla funzione viene visualizzato, uno dopo l’altro, con uno spazio

vuoto dopo ogni valore.

Errori Esistono due categorie di errori:

  1. Errori di lessico, sintassi, semantica
  • Ortografia, capitalizzazione, punteggiatura
  • Ordine delle istruzioni, corrispondenza di parentesi, virgolette...
  • L'interprete non esegue il programma
  • Correggere il primo errore elencato, quindi eseguire di nuovo
  • Ripetere l’operazione fino a quando tutti gli errori sono stati corretti
  1. Errori logici (run-time)
  • Il programma viene eseguito, ma produce risultati indesiderati
  • Il programma può “bloccarsi” CAP. 2: Programmare con numeri e stringhe I numeri e le stringhe di caratteri sono tipi di dati importanti in qualsiasi programma Python. Sono mattoni fondamentali che utilizziamo per costruire strutture di dati più complesse. 2.1 VARIABILI Una variabile è una posizione di memoria denominata in un programma. Esistono molti tipi di variabili, ognuno dei quali viene utilizzato per memorizzare cose diverse. Si “definisce” una variabile dicendo all’interprete Python:
  • Quale nome si utilizzerà per riferirsi ad essa
  • Il valore iniziale della variabile Si utilizza un’istruzione di assegnazione per inserire un valore in una variabile. Per definire una variabile devi specificare un valore iniziale. Istruzione di assegnazione Si utilizza l’istruzione di assegnazione ‘=’ per inserire un nuovo valore in una variabile

CansPerPack = 6 # definisce e inizializza la variabile cansPerPack

Il valore a destra del segno ‘=’ viene assegnato alla variabile a sinistra. ATTENZIONE: per il confronto NON si utilizza il segno “=”. Per il confronto si utilizza il doppio uguale (==) Esempio

Le bibite sono vendute in lattine e bottiglie. Un negozio offre una confezione da sei

lattine da 12 once allo stesso prezzo di una bottiglia da due litri. Quale conviene

comprare? (12 once fluide equivalgono a circa 0,355 litri).

Elenco delle variabili: Tipo di numero

Numero di lattine per confezione Numero intero

Once per lattina Numero intero

Once per bottiglia Numero con frazione

Abbiamo tre diversi tipi di dati:

  1. Numeri interi 7 (integer or int)
  2. Un numero frazionario 8,88 (float)
  3. Una sequenza di caratteri “Bob” (string) Il tipo di dati è associato al valore, non alla variabile.

CansPerPack = 6 # int

CanVolume = 12.1 # float

Aggiornando una variabile (assegnando un valore) Se a una variabile esistente viene assegnato un nuovo valore, questo sostituisce il contenuto precedente della variabile. Esempio

Eseguire l’assegnamento: cansPerPack = cansPerPack + 2

  • Step 1: trovare il valore di cansPerPack e aggiungervi 2.
  • Step 2: memorizzare il risultato nella variabile denominata a sinistra

dell’operatore di assegnazione.

A warning... Poiché il tipo di dati è associato al valore e non alla variabile:

  • A una variabile possono essere assegnati valori diversi in punti diversi del programma.

taxRate = 5 # an int

Then later...

taxRate = 5.5 # a float

can volume Error: variable names cannot contain spaces class Error: you cannot use a reserved word as a variable name ltr/fl.oz Error: you cannot use symbols such as / or. Costanti In Python una costante è una variabile il cui valore non deve essere modificato dopo che le è stato assegnato un valore iniziale.

  • È consuetudine utilizzare le maiuscole per le costanti (BOTTLE_VOLUME) per poterle distinguere dalle variabili. È un modo intuitivo per dare un’indicazione visiva.

VOLUME_BOTTIGLIA = 2.

È buona norma utilizzare le costanti con nome per spiegare i valori numerici da utilizzare nei calcoli.

Cosa è più chiaro?

  • Volume totale = bottiglie * 2
  • Volume totale = bottiglie * VOLUME_BOTTIGLIA Un programmatore che legge la prima istruzione potrebbe non capire il significato del “2”. Python permette di cambiare il valore di una costante (solo perché lo si può fare, non significa che lo si debba fare). Commenti in Python Usate i commenti all’inizio di ogni programma e per chiarire i dettagli del codice. I commenti sono una cortesia verso gli altri e un modo per documentare il proprio pensiero. I commenti servono ad aggiungere spiegazioni per gli esseri umani che leggono il codice. Il compilatore (interprete) IGNORA i commenti. 2.2 OPERAZIONI ARITMETICHE Operazioni aritmetiche di base Python supporta tutte le operazioni aritmetiche di base:
  • Somma +
  • Sottrazione -
  • Moltiplicazione *
  • Divisione / Mischiare tipi numerici

Se in un’espressione aritmetica si mescolano valori interi e in virgola mobile, il risultato è un valore in virgola mobile.

7 + 4.0 #si ottiene il valore float 11.

(se si mescolano stringhe con valori interi o in virgola mobile, il risultato è un errore) Potenze Doppi asterischi ** vengono utilizzate per elevamento a potenza. Divisione intera (floor)

Quando si dividono due interi con l’operatore / si ottiene un valore reale (float). Ad

esempio:

  • 7 / 4
  • Si ottiene 1. È possibile eseguire una divisione intera utilizzando l’operatore //
  • L'operatore // calcola il quoziente e toglie la parte frazionale
  • 7 // 4
  • Il risultato è 1 perché 7 diviso 4 è 1.75 con una parte frazionale di 0.75 che

viene scartata.

Calcolo di un resto Se siete interessati al resto della divisione di due numeri interi, utilizzate l’operatore “%”

  • Resto = 7 % 4
  • Il valore del resto sarà 3 Talvolta l’operatore % è chiamato modulus Expression (n= 1729) Value n % 10 9 n // 10 172 n % 100 29 n % 2 1 -n // 10 - Col numero negativo arrotonda es - In Python si usa float 32 Il double è un'estensione per numeri più grandi se i 4 byte di float 32 non dovesse bastare. Chiamata di funzioni

cos(x) The cosine of x in radians sin(x) The sine of x in radians tan(x) The tangent of x in radians exp(x) e elevata a x degrees(x) Convert x radians to degrees (x * 180/pi greco) radians(x) Convert x degrees to radians (x * pi greco/180) log(x) log(x, base) The natural logarithm of x (to base e) or the logarithm of x to the given base Con l’asterisco importo tutte le funzioni del modulo Math.

from math import *

Funzioni integrate (built-in function) Built-in functions sono un piccolo insieme di funzioni che sono definite come parte del linguaggio Python. Possono essere usate senza importare nessun modulo. Conversione da virgola mobile a numero intero È possibile utilizzare tutte le funzioni int() e float() per convertire tra valori interi e in virgola mobile:

  • si perde la parte frazionaria del valore in virgola mobile (non si verifica l’arrotondamento). Espressioni aritmetiche Errori di arrotondamento I valori in virgola mobile non sono esatti, si tratta di una limitazione dei valori binari: non tutti i numeri in virgola mobile hanno una rappresentazione esatta. E’ possibile gestire gli errori di arrotondamento:  Arrotondando al numero intero più vicino  Oppure visualizzando un numero fisso di cifre dopo il separatore decimale

2.3 PROBELM SOLVING

Un passo molto importante per lo sviluppo di un algoritmo è quello di eseguire prima i calcoli a mano, senza quello non è possibile scrivere il programma. Esempio di problema: Una fila di piastrelle bianche e nere deve essere collocata lungo una parete. L'architetto ha specificato che la prima e l’ultima piastrella devono essere nere.

  • Calcolare il numero di piastrelle necessarie e la distanza da ciascuna estremità, dato lo spazio disponibile e la larghezza di ciascuna piastrella.

Total width= 100

Tile width= 5

Calcola ampiezza totale di tutte le piastrelle

One black tile: 5

9 pairs pf BWs: 90

Total tile width: 95

Calcolare le distanze (una per ogni estremità

100-95= 5 total gap tolgo una piastrella perché deve essere nera

5 gap/ 2= 2.5 ad ogni estremità

Dopodiché si deve ideare un algoritmo

Total width – tile width / ( 2 x tile width)

(per vedere algoritmo vai su spider “tiles.py”)

2.4 STRINGHE

Un testo comprende caratteriCaratteri sono lettere, numeri, segni di punteggiatura, spazi, ... ▫ Una stringa è una sequenza di caratteri Una stringa in Python viene specificata racchiudendo una sequenza di caratteri all’interno di una coppia corrispondente di apici singoli (‘’) o doppi (“”). Ricordate di usare coppie di virgolette corrispondenti, singole con singolo, doppie con doppie. Il numero di caratteri di una stringa si chiama lunghezza della stringa

La lunghezza di “Harry” è 5

Stringhe e caratteri Le stringhe sono sequenze di caratteri Python usa caratteri Unicode

  • Unicode definisce più di 100,000 caratteri
  • Unicode è stato progettato per essere in grado di codificare il testo essenzialmente in tutte le lingue scritte Copiando un carattere da una stringa Ogni carattere all’interno di una stringa ha un numero di indice 0 1 2 3 4 5 6 7 8 9 c h a r s h e r e Il primo carattere è l’indice zero L'operatore [] restituisce un carattere ad un dato indice all’interno di una stringa: 0 1 2 3 4 H a r r y

name= Harry

start= name [0]

last= name[4]

Operazioni col le stringhe Metodi Nella programmazione informatica, un oggetto è un’entità software che rappresenta un valore con un determinato comportamento.

  • Un valore può essere semplice, come una stringa, o complesso, come una finestra grafica o un file di dati. Il comportamento di un oggetto è dato dai suoi metodi.
  • Un metodo è una raccolta di istruzioni di programmazione per eseguire un compito specifico, simile a una funzione. A differenza della funzione però, che è un’operazione indipendente, un metodo può essere applicato solo a un oggetto del tipo per cui è stato definito.
  • I metodi sono specifici per un tipo di oggetto
  • Le funzioni sono generali e possono accettare argomenti di tipo diverso. Con il metodo dobbiamo scrivere prima l’oggetto. È possibile applicare il metodo upper() a qualsiasi stringa, in questo modo:

name= “Jonh Smith”

# Sets uppercaseName to “JONH SMITH”

uppercaseName= name.upper()

Method Returns lower() A lowercase version of string s. upper() An uppercase version of s. replace(old, new) A new version of string s in which every occurrence of the substring old is replaced by the string new. 2.5 INPUT E OUTPUT È possibile leggere una stringa dalla console con la funzione input():

name= input(“please enter your name”)

La conversione di una variabile stringa in numero può essere utilizzata se è necessario un input numerico (piuttosto che stringa):

age= int(input(“please enter age:”))

L'istruzione sopra può essere svolta anche in due steps (ottenendo l’input e convertendolo in un numero):

aString= input(“please enter age:”) # String input

age= int(aString) # Converted to int

CAP. 3 DECISIONI

3.1 Istruzione if Un programma informatico deve spesso prendere decisioni basate su input o circostanze. Ad esempio, gli edifici spesso saltano il piano numero 13. Il piano 14 è in realtà il piano 13, quindi ogni piano sopra il 12 è in realtà “piano -1”.

3.2 Operatori relazionali Assegnazione vs. Test di uguaglianza

  • Assegnazione; floor = 13
  • Condizionale: controlla se qualcosa è vero; if floor == 13 : Confronto di stringhe
  • Controllare se due stringhe sono uguali; if name1 == name 2 :
  • Controllare se due stringhe non sono uguali; if name1 != name 2 : Errore comune (virgola mobile) I numeri a virgola mobile hanno una precisione limitata e i calcoli possono introdurre errori di arrotondamento. È necessario tenere conto di questi inevitabili arrotondamenti quando si confrontano i numeri in virgola mobile. Operatori procedurali (relazionali) e operatori aritmetici Gli operatori procedurali hanno una precedenza inferiore rispetto agli operatori aritmetici. I calcoli vengono eseguiti prima del confronto. Normalmente i calcoli si trovano sul “lato destro” dell’operatore di confronto o di assegnazione. Implementazione di un’istruzione if
  1. Decidere una condizione di ramificazione
  2. Scrivere codice per il ramo vero
  3. Scrivere codice per il ramo falso
  4. Ricontrolla gli operatori relazionali
  5. Rimuovi la duplicazione
  6. Testare entrambi i rami
  1. Scrivere il codice in Python 3.3 Condizioni annidate In una condizione sono presenti altre condizioni. Es: wine? true; >= 21 true Tracciamento manuale Il tracciamento manuale ti aiuta a capire se un programma funziona correttamente
  • Creare una tabella di variabili chiave
  • Annota con carta e penna i valori per differenti input Usare valori di input di esempio che:
  • Sai quale dovrebbe essere il risultato corretto
  • Testano ogni ramo del codice 3.4 Alternative multiple Cosa succede se hai più di due rami? Esempio di effetto di terremoto: Non appena una delle condizioni di test ha esito positivo, il blocco di istruzioni viene eseguito, non vengono tentati altri test. Se nessuna delle condizioni di test ha esito positivo, viene eseguita la clausola else finale. 3.5 Variabili e operatori logici-booleani Variabili booleane Una variabile booleana è spesso chiamata flag perché può essere up (true) o down (false). Esistono due operatori booleani: and, or; vengono utilizzati per combinare più condizioni. Condizioni combinate: AND OR Usiamo and se tutte e due le Usiamo or se solo una delle due condizioni devono essere vere. condizioni deve essere vera.

3.6 Analisi delle stringhe Analisi delle stringhe – Operatore IN A volte è necessario determinare se una stringa contiene una determinata sottostringa.

Name = “John Wayne”

“Way” in name

Restituisce True perché la sottostringa “Way” si trova all’interno della stringa

memorizzata nella variabile name.

L’operatore not in è l’inverso dell’operatore in. Sottostringa: Suffissi Supponiamo che ti venga assegnato il nome di un file e che sia necessario assicurarsi che abbia l’estensione corretta.

if filename.endswith(“.html”) :

print(“This is an HTML file. ”)

Il metodo stringa endswith() viene applicato alla stringa memorizzata in filename e restituisce True se la stringa termina con la sottostringa “.html” e False in caso contrario.

3.7 Convalida dell’input Accettare l’input dell’utente è pericoloso. Convalidare l’input attraverso le condizioni. Summary: if statement L'istruzione if consente a un programma di eseguire azioni diverse a seconda della natura dei dati da elaborare. Gli operatori relazionali (< <= > >= == !=) vengono utilizzati per confrontare numeri e stringhe. Le stringhe vengono confrontate in ordine lessicografico. È possibile combinare più istruzioni if per valutare decisioni complesse. Quando si utilizzano più istruzioni if, testare le condizioni generali dopo condizioni più specifiche. Summary: condizioni annidate