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


APPUNTI LABORATORIO DI PROGETTAZIONE SOFTWARE (PYTHON), Schemi e mappe concettuali di Laboratorio di Progettazione

Appunti teorici tratti dal corso del professor Giovanni Pascoschi del politecnico di Bari, linguaggio utilizzato: Python. Corso presente al primo anno, secondo semestre di Ingegneria dei sistemi medicali

Tipologia: Schemi e mappe concettuali

2021/2022

In vendita dal 06/09/2022

danieladibbi02
danieladibbi02 🇮🇹

3.5

(2)

2 documenti

1 / 32

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
1
1 MARZO
Scrivere programmi in Python ed eseguirli in Script Mode:
- Gli Statement inseriti in interactive mode non sono salvati come programma
- Per avere un programma eseguito in script mode:
1. Salvare un insieme di istruzioni Python statement in un file
2. Il nome del file (filename) deve avere estensione .py
3. Per eseguire (lanciare, run) il file o lo script digitare python filename al
sistema operativo tramite la command line
The IDLE Programming Environment
- IDLE ( integrated development program): singolo programma che offer I tool
per scrivere, eseguire e testare un programma
- L’istruzione PRINT stampa il suo argomento trasformandolo in una stringa
Print (5) Print (“hello world”) Print (1, 2, “ciao”) (importante lo spazio vuoto!!!)
Se dopo tutti gli argomenti c’è una virgola non viene stampato il ritorno a capo.
- Per evitare problemi con apostrofi, è possibile racchiudere i letterali di stringa
tra “ “ “ ( gestisce anche il multilinea)
Print(“”” T’amo
Sul lago”””)
- Carattere di continuazione riga (\): permette di interrompere l’istruzione e
riportarla su più linee: esempio
-
Print (‘my first name is’,\
First_name) l’under score _ indica che il nome è tutt’uno
La funzione print visualizza a schermo una linea di input:
- Di default viene inserito un carattere di nuova riga alla fine dei dati visualizzati
- L’argomento special end=’delimiter’ modifica il comportamento di print che
inserisce carettere delimiter alla fine dei dati al posto del carattere di nuova
riga
Print(“ciao”,end=”**”)
La funzione print utilizza uno spazio come separatore di elementi
- Argomento speciale sep=’delimiter? Modifica il comportamento di print Print
che usa il carattere Delimiter come separatore tra gli elementi
Print(“ciao”,”mondo”,sep=”**”)
I NUMERI
I numeri vengono definiti come in C
- “42” intero, decimale
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20

Anteprima parziale del testo

Scarica APPUNTI LABORATORIO DI PROGETTAZIONE SOFTWARE (PYTHON) e più Schemi e mappe concettuali in PDF di Laboratorio di Progettazione solo su Docsity!

1 MARZO

Scrivere programmi in Python ed eseguirli in Script Mode:

  • Gli Statement inseriti in interactive mode non sono salvati come programma
  • Per avere un programma eseguito in script mode:
    1. Salvare un insieme di istruzioni Python statement in un file
    2. Il nome del file (filename) deve avere estensione .py
    3. Per eseguire (lanciare, run) il file o lo script digitare python filename al sistema operativo tramite la command line The IDLE Programming Environment
  • IDLE ( integrated development program): singolo programma che offer I tool per scrivere, eseguire e testare un programma
  • L’istruzione PRINT stampa il suo argomento trasformandolo in una stringa Print (5) Print (“hello world”) Print (1, 2, “ciao”) (importante lo spazio vuoto!!!) Se dopo tutti gli argomenti c’è una virgola non viene stampato il ritorno a capo.
  • Per evitare problemi con apostrofi, è possibile racchiudere i letterali di stringa tra “ “ “ ( gestisce anche il multilinea) Print(“”” T’amo Sul lago”””)
  • Carattere di continuazione riga (): permette di interrompere l’istruzione e riportarla su più linee: esempio

Print (‘my first name is’,
First_name) l’under score _ indica che il nome è tutt’uno La funzione print visualizza a schermo una linea di input:

  • Di default viene inserito un carattere di nuova riga alla fine dei dati visualizzati
  • L’argomento special end=’delimiter’ modifica il comportamento di print che inserisce carettere delimiter alla fine dei dati al posto del carattere di nuova riga Print(“ciao”,end=”**”) La funzione print utilizza uno spazio come separatore di elementi
  • Argomento speciale sep=’delimiter? Modifica il comportamento di print Print che usa il carattere Delimiter come separatore tra gli elementi Print(“ciao”,”mondo”,sep=”**”) I NUMERI I numeri vengono definiti come in C
  • “42” intero, decimale
  • “0x2A” intero, esadecimale
  • “052” intero, ottale
  • “0.15” formato normale
  • “1.7e2” formato esponenziale : 1.7x 10^
  • Lo “0” inziale o finale può essere omesso: “.5” “5.”
  • Gli interi, se necessario, sono automaticamente convertiti in long : 2**64 che vuol dire 2^ Esistono gli stessi operatori del C, le parentesi possono essere usate per raggruppare:

(5+3)* 16 (6/3)/ 1 Esiste anche l’operatore elevamento “” 5 25 Non esistono “++” “—” Per avere la divisione intera si può usare “//” 3// 1 CONVERSIONE FRA NUMERI (CASTING) Esistono alcune utili funzioni di conversione fra i numeri:

  • “int(x[,base])” ritorna “x” convertito in intero. “base” è la base in cui “x” è rappresentato ( il valore di default è “10”) int(“13”) int(“13”, 8) 11
  • “long (x[,base]” come “int” ma ritorna un “long”
  • “float(x)” ritorna “x” convertito in floating point Float(“13.2”) 13. Float(“42”) 42. LE STRINGHE
  • Una variabile non può essere utilizzata prima che le venga assegnato un valore
  • L’assegnamento avviene attraverso l’operatore “=”
  • Non è creata una copia dell’oggetto: x=y # si riferiscono allo stesso oggetto

    x= y=x print (y) 2 4 MARZO CAPITOLO 2 INPUT, PROCESSING AND OUTPUT

  • I programmi devono essere progettati prima di essere scritti (inclusi schemi)
  • Program development cycle: progettare il programma scrivere il codice correggere i syntax errors testare il programma correggere gli errori logici
  1. PROGETTARE UN PROGRAMMA
  • La progettazione è la fase più importante dell’intero PDC.
  • Capire il task che il programma deve eseguire: definire i dettagli del programma deve eseguire: definire i dettagli del programma, definire i requisiti del software
  • Determinare i passi che devono essere seguiti per l’esecuzione del task: individuare una suddivisione del task in una serie di passi (e di risultati intermedi), creare un algoritmo
  • Algoritmo, pseudocodice, flowchart
  1. INPUT, PROCESSING E OUTPUT Tipicamente un computer esegue un processo su 3 fasi:
  • Riceve input: input= qualsiasi dato che il programma riceve quando viene eseguito
  • Esegue alcune operazioni sull’input
  • Produce output

3. VISULAIZZAZIONE DELL’OUTPUT CON LA FUNZIONE PRINT

  • Function: porzione di codice che permette di eseguire un’operazione
  • Funzione print: permette di visualizzare l’output a schermo
  • Argomento/i: dato/i utilizzati da una funzione Print(‘Hello world’)
  1. STRINGHE E LETTERALI STRINGA
  • String (stringa): sequenza di caratteri usati
  • String literal (letterali stringa): stringa che appare nel codice di un programma: deve essere racchiusa tra virgolette singole (‘) o doppie (“), per evitare problemi con apostrofi, è possibile racchiudere i letterali di stringa tra “”” ( gestisce anche il multilinea) Print (“”” T’amo Sul lago”””)
  1. COMMENTI
  • Commenti: note utilizzate per la spiegazione in un programma, ignorate dall’interprete Phyton, iniziano con il carattere #
  • End-line comment: appaiono alla fine di una linea di codice per spiegare a cosa serve tale linea
  1. VARIABILI Formato generale: variabile = expression Age = 29 (no virgolette)
  • Nelle istruzioni di assegnazione, il valore che riceve la variabile deve essere a destra dell’uguale
  • Una variabile può essere passata come argomento ad una funzione
  • È possibile utilizzare una variabile esclusivamente se le è stato assegnato un valore REGOLE PER I NOMI DELLE VARIABILI Regole per denominare le variabili in Phyton:
  • I nomi delle variabili non posso no essere delle key word di Phyton
  • Le variabili non possono contenere spazi
  • Il primo carattere deve essere una lettera o un underscore _
  • Dopo il primo carattere è possibile usare lettere, numeri e underscore
  • I nomi delle variabili sono case sensitive (alfa non è la stessa cosa di Alfa)
  • La maggior parte dei programmi necessitano della lettura di dati di input dall’utente
  • La funzione built-in input legge l’input da tastiera:
    1. Ritorna un dato di tipo stringa
    2. Formato: variable – input (prompt) (prompt è tipicamente una stringa che spiega all’utente che dato deve inserire)
    3. Non viene mostrato di default uno spazio dopo il prompt LEGGERE NUMERI CON LA FUNZIONE INPUT
  • La funzione input restituisce sempre una stringa
  • Funzioni built-in permettono di convertire i tipi di dato
  1. Int (item) converte item a int
  2. Float (item) converte item a float
  3. Nested function call: generico: function1 (function2 (argument)) il valore che ritorna la function2 viene passato alla function
  4. La conversione di tipo di dato viene effettuata solo se il numero (parametro passato) è un numero altrimenti viene lanciata un’eccezione ESEGUIRE I CALCOLI
  • Espressioni matematiche: eseguono calcoli e restituiscono un valore: operatore matematico, operandi
  • Due tipi diversi di divisione:
  1. Operatore / esegue la divisione in virgola mobile
  2. Operator // esegue la divisione intera PRECEDENZA DEGLI OPERATORI E RAGGRUPPAMENTO CON LE PARENTESI La precedenza degli operatori in Phyton
  3. Le operazioni racchiuse tra parentesi
  4. Potenza (**)
  5. Moltiplicazione (*), divisione (/ e //) e resto (%)
  6. Addizione (+) e sottrazione (-) L’operatore esponente e l’operatore resto
  • Operatore esponente(): eleva un numero ad una potenza: xy
  • Operatore resto (%): esegue la divisione e ritorna il resto 4%2= 5%2= Tipicamente usato per convertire tempo e distanza, o anche per verificare se numeri è pari o dispari ESPRESSIONI CON TIPI MISTI E CONVERSION DEI TIPI DI DATI

Il tipo di dato risultante da un’operazione matematica dipendente dai tipi di dato degli operandi

  • Due valori int: risultato int
  • Due valori float: risultato float
  • Int e float: int temporaneamente convertito in float, risultato dell’operazione float
  • La conversion di tipo float a int causa l’eliminazione della parte decimale SUDDIVIDERE IN PIU’ RIGHE LE ISTRUZIONI LUNGHE
  • Le istruzioni lunghe non possono essere visualizzate sullo schermo
  • Carattere di continuazione di riga (): permette di interrompere l’istruzione e riportarla su più linee ANCORA SU OUTPUT DEI DATI
  • La funzione print visualizza a schermo una linea di output
  1. Di default viene inserito un carattere di nuova riga alla fine dei dati visualizzati
  2. L’argomento special end=’delimiter’ modifica il comportamento di print che inserisce carattere delimiter alla fine dei dati al posto del carattere nuovo di riga
  • La funzione print utilizza uno spazio separatore di elementi: argomento speciale sep=’delimiter’ modifica il comportamento di print print che usa il carattere delimiter come separatore tra gli elementi.
  • Caratteri speciali utilizzabili nei letterali di stringa: tali caratteri vengono preceduti dal blackslash () (esempio: newline (\n), horizontal tab (\t)), trattati come comandi inclusi nella stringa
  • L’operatore + può essere utilizzato tra due stringhe – concatenazione FORMATTAZIONE DEI NUMERI È possibile decidere il formato dei numeri a schermo usando la funzione di Python format
  • Il simbolo % può essere utilizzato per indicare che il numero è espresso in percentuale CAPITOLO 3 DECISION STRUCTURES AND BOOLEAN LOGIC THE IF STATEMENT
  • Python syntax: If condition: Statement Statement (se allineate sono vere)

THE IF-ELIF-ELSE STATEMENT : versione speciale del costrutto decisionale Semplifica la scrittura delle strutture annidate (può includere elif) Syntax: if conditional Statements (se è vera esegue queste) Elif condition2 (due if dal lato falso) Statements Else (si riferisce al secondo if) Statements OPERATORI LOGICI Nelle condizioni complesse possono essere utilizzati gli operatori logici

  • Operatore and e or
  • Operatore not: operatore unitario TAVOLA DELLA VERITA’ DELL’OPERATORE AND EXPRESSION VALUE OF THE EXPRESSION False and false false False and true false True and false false True and true true TAVOLA DELLA VERITA’ DELL’OPERATORE OR EXPRESSION VALUE OF THE EXPRESSION False or false false False or true true True or false true True or true true TAVOLA DELLA VERITA’ DELL’OPERATORE NOT EXPRESSION VALUE OF THE EXPRESSION True false false true CONTROLLARE RANGE NUMERICI CON GLI OPERATORI LOGICI
  • Per verificare l’appartenenza ad un range x >= 10 and x <= 20
  • Per determinare se è al di fuori del range x < 10 or x > 20 VARIABILI BOOLEANE: può assumere 2 valori True o False
  • Rappresentato dal tipo di dati bool Uso comune del flag
  • Flag: variabile che segnala quando viene verificata una condizione in un programma
  • Flag a False: condizione non verificata
  • Flag a True: condizione verificata CAPITOLO 4: REPETITION STRUCTURES THE WHILE LOOP: A CONDITION-CONTROLLED LOOP
  • While-loop: while condition is true, do something
  • Due parti: 1. Condizione (vera o falsa) 2. Istruzioni ripetute finché la condizione è vera
  • Formato generale: while condition: statements STRUTTURA DI CONTROLLO DI RIPETIZIONE: sono le istruzioni che permettono di controllare l’esecuzione delle istruzioni del programma, sono le 3 ??? while in questo caso
  • While loop è conosciuto anche come ripetizione pre-condizionale
  • Prima di eseguire un’iterazione verifica condizione
  • Il loop non verrà mai eseguito se la condizione è falsa in partenza
  • Richiede alcuni passi prima di cominciare il loop LOOP INFINITI
  • Loops deve contenere nel corpo del ciclo un’istruzione che permette al loop di terminare
  • Il while può essere gestito o con un flag esterno oppure settando la variabile ad un valore che fa ciclare il while loop THE FOR LOOP: A COUNT-CONTROLLED LOOP Itera per un numero definito di volte (altrimenti usiamo il while)
  • Usa il for statement
  • Formato generale: for variable in [val1, val2, etc]: statements UTILIZZARE LA FUNZIONE RANGE NEL FOR La funzione range (intervallo) semplifica il processo di scrittura del for
  • Range ritorna un oggetto iterabile
  • Quindi viene chiamata la funzione range all’interno del costrutto for utilizzando come limite/i una o più variabili CALCOLO DI TOTALI Spesso i programmi devono calcolare la somma di una serie di numeri
  • Per fare ciò solitamente si utilizzano due elementi:
  • Un ciclo che legge i numeri in serie
  • Una variabile accumulatore (inizializzata a zero)
  • Alla fine del ciclo, l’accumulatore conterrà il totale della serie OPERATORI DI ASSEGNAZIONE INCREMENTALE OPERATOR EXAMPLE USAGE EQUIVALENT TO += x+=5 x= x + 5 - = y - =2 y = y- 2 *= z = 10 z = z /= a /= b a =a/ b %= c %= 3 c =c% 3 SENTINELLE Sentinella: valore speciale che segnala la fine di una sequenza di elementi
  • Deve essere un valore distintivo in modo tale da non essere confuso con un valore della sequenza
  • Ad esempio quando si legge un file in input, riga vuota può essere usata come sentinella CICLO DI VALIDAZIONE DELL’INPUT (PROBABILE ALL’ESAME) Programmi non possono sapere la differenza tra dati corretti e dati errati se non previsto
  • Se l’utente inserisce dei dati errati, il programma produrrà dati errati
  • GIGO: garbage in, garbage out
  • È importante progettare un programma in modo tale che i dati di input non siano mai accettati Input validation: verifica dei dati di input prima che siano processati dal programma
  • Solitamente viene utilizzato un ciclo while che ripete l’inserzione dei dati in input finché non sono corretti
  • Se i dati di input sono errati, viene mostrato un messaggio di errore e si richiedono i dati, altrimenti tali dati vengono elaborati 15 MARZO

2E. Algoritmi in Python ESERCIZIO 1: Dati due numeri interi non negativi, calcolarne il prodotto ( supponendo che non si abbia a disposizione l’operatore di moltiplicazione) Analisi dei dati:

  • Dati di Input: M, N, con M, N >= 0
  • Dati di Output: P (il prodotto tra M ed N) Bisogna effettuare delle somme successive, cioè sommare M a se stesso per N volte. TABELLA DELLE VARIABILI NOME Input Output L M x N x P x Vuole il while ESERCIZIO 2: Trovare quoziente e resto di una divisione intera per differenze successive (supponendo cioè di non disporre dell’operatore di divisione) Analisi dei dati:
  • Dati di Input: D, D1 (supponiamo D1>0)
  • Dati di Output: Q, R (quoziente e resto) TABELLA DELLE VARIABILI NOME I O L D x D1 x Q x R x ESERCIZIO 3: Sommare i primi N numeri iteri positivi e scrivere il risultato Analisi dei dati:
  • Dati di Input: N (con N>0)
  • Dati di Output: S (somma dei primi N numeri)

DEFINIRE E CHIAMARE UNA FUNZIONE IN PYTHON

Funzioni sono dei nomi simbolici. Regole di denominazione delle funzioni:

  • Non è possibile utilizzare le key word come nomi di funzioni
  • Non possono contenere spazi
  • Il primo carattere deve essere una lettera o un underscore
  • Gli altri caratteri possono essere lettere, numeri e underscore
  • Nomi delle funzioni case-sensitive
  • I nomi delle funzioni devono essere significativi dello scopo della funzione ( solitamente si usa un verbo)
  • Definizione di una funzione: specifica cosa fa la funzione def function_name(): statement statement
  • Header della funzione: prima linea della funzione (include la key word def e nome della funzione, seguita da parentesi e I due punti)
  • Blocco: insieme di istruzioni
  • Per eseguire una funzione è necessario chiamarla Quando una funzione viene chiamata:
  • L’interprete salta alla funzione ed esegue le istruzioni nel blocco
  • Una volta terminate le istruzioni nella funzione, l’interprete salta indietro alla parte del programma che ha chiamato la funzione (function return)
  • Funzione main: chiamata quando il programma viene avviato
  • Chiama le altre funzioni quando sono necessarie
  • Definisce la logica principale del programma INDENTAZIONE IN PYTHON Ciascun blocco deve essere correttamente identato
  • Le istruzioni nei blocchi devono cominciare con lo stesso numero di spazi bianchi
  • Per l’identazione si utilizzano i tab e gli spazi, ma non si possono usare entrambi altrimenti l’interprete Python non funziona correttamente (Noi usiamo i tab)
  • IDLE identa automaticamente le linee in un blocco
  • Linee bianche vengono ignorate FUNZIONI
  • Grafo gerarchico: mostrare le relazioni tra le funzioni

VARIABILI LOCALI

  • Local variable: variabile a cui viene assegnato un valore all’intero di una funzione
    • Appartenente alla funzione che l’ha creata
    • Solo le istruzioni della funzione possono accedervi
    • Errore se un’altra funzione cerca di accedervi
  • Scope (visibilità): la parte del programma che può accedere alla variabile
    • Per la variabile locale: funzione in cui viene creata created
    • Ciascuna funzione vede le proprie variabili locali MODIFICARE I PARAMETRI
  • Le variazioni che vengono apportate ai parametri all’interno delle funzioni non apportano modifiche agli argomenti (pass by value) VARIABILI GLOBALI E COSTANTI GLOBALI
  • Variabile globale: create da un istruzione di assegnazione fuori dalle funzioni
  • Scope è tutto il programma inclusi i blocchi delle funzioni ridichiarandola utilizzando keyword global
  • Ragioni per cui bisogna cercare di evitare le variabili globali:
  • Le variabili globali rendono il debugging più complesso (se richiamate in diversi punti del codice possono causare un valore di variabile sbagliato)
  • Funzioni che usano le variabili globali sono dipendenti da tali variabili (rendono tali funzioni difficili da trasferire e riusare in un altro programma)
  • Le variabili globali rendono un programma difficile da capire COSTANTI GLOBALI
  • Costanti globali non modificabili (nessun problema sul loro uso)
  • È possibile simulare costanti globali in Python dichiarandole come variabili globali non dichiarandole nuovamente nelle funzioni
  • Solitamente si utilizzano nomi scritti tutti in maiuscolo
  • Es. CONTRIBUTION_RATE=0. INTRODUZIONE ALLE FUNZIONI VALUE_RETURNING: generazione di numeri casuali
  • Una funzione void: esegue semplicemente le istruzioni che contiene e poi termina
  • Una funzione value-returning:
  • Esegue le istruzioni contenute e restituisce un valore all’istruzione che l’ha chiamata
  • Funzioni input, int e float sono esempi di funzioni value-returning
  • Eseguire calcoli complessi che necessitano di essere ripetuti più volte nel programma
  • Usare il valore restituito
  • Assegnarlo ad una variabile o utilizzarlo come argomento in un’altra funzione DIAGRAMMI IPO (INPUT-PROCESS-OUTPUT) Diagrammi IPO: descrivono l’input, la fase di elaborazione e l’output di una funzione
  • Strumento per progettare e documentare le funzioni
  • Tipicamente i diversi elementi sono disposti in colonne
  • Di solito forniscono delle brevi descrizioni dell’IPO senza entrare troppo nei dettagli
  • FOTO SUL TELEFONO RESTITUIRE STRINGHE
  • È possibile scrivere (ovviamente) delle funzioni che restituiscono delle stringhe
  • Per esempio: def get_name(): name = input(‘ Enter your name: ‘) return name RESTITUIRE VALORI BOOLEANI
  • Funzioni booleane: restituiscono True o Flase
  • Utilizzate per verificare una condizione ed utilizzate per decisioni e per i costrutti iterativi(calcoli tipici, come verificare se un numero è pari)
  • Utili per semplificare codici più complessi di validazione dell’inut
  • Solitamente hanno nomi che iniziano per is_ Def is_even(number): if (number2%) == 0: return True else: return False RESTITUIRE VALORI MULTIPLI In Python, una funzione può restituire valori multipli
  • I valori specificati dopo l’istruzione return e vengono separati da virgole
  • Formato: return expression1,

expression2, etc.

  • Quando si chiama una funzione che restituisce valori multipli, è necessario separare le variabili alla sinistra dell’operatore = per ricevere ciascun valore restituito Def get_name(): nome= input(‘nome:’) cognome = input (‘cognome:’) return nome, cognome nome, cognome = get_name() MEMORIZZARE LE FUNZIONI NEI MODULI
  • Nei programmi più grandi e complessi è importante mantenere il codice organizzato
  • Modularizzazione: raggruppamento di funzioni correlate in moduli
    • Rendono il programma più semplice da capire, testare e manutenere
    • Rendono più semplice il riuso del codice per programmi diversi (si importa il modulo contenente le funzioni richieste da ciascun programma)
  • Il modulo è un file che contiene codice Python
    • Contiene la definizione delle funzioni ma non contiene le chiamate a funzioni
  • Regole per i nomi dei moduli:
    • Il del file deve avere estensione .py
    • Non può essere una parola chiave di Python
  • I moduli si importano con l’istruzione import
  • Esempio: il modulo math (FOTO) I PROGRAMMI A MENU (ARGOMENTO QUASI SEMPRE PRESENTE ALL’ESAME)
  • Programma a menu: mostra una lista di operazioni a schermo, permettendo all’utente di scegliere l’opzione desiderata
    • La lista di opzioni mostrata a schermo viene chiamata menu
  • Il programma usa una struttura decisionale per determinare l’opzione del menu scelta e le operazioni richieste
    • Tipicamente ripete finché non termina