P1-La_Programmazione.pdf
Document Details
Uploaded by Deleted User
Politecnico di Torino
2023
Tags
Related
Full Transcript
Unità P1: Introduzione alla programmazione BREVE INTRODUZIONE AD HARDWARE, SOFTWARE E SVILUPPO DI ALGORITMI Capitolo 1 This Photo by Unknown Author is licensed under CC BY-SA...
Unità P1: Introduzione alla programmazione BREVE INTRODUZIONE AD HARDWARE, SOFTWARE E SVILUPPO DI ALGORITMI Capitolo 1 This Photo by Unknown Author is licensed under CC BY-SA Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 1 Convenzioni grafiche Capitolo 1 File contenente Riferimento ai l’esercizio risolto capitoli/ paragrafi 📜 hello.py (presente in 1.7 del libro esempi.zip) Caratteri a spaziatura fissa Istruzioni Python Argomenti opzionali o non fondamentali Link di https://www.example.com/xyz approfon- dimento Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 2 Unità P1: Obiettivi ▪ Introduzione agli elaboratori elettronici e alla programmazione o Hardware e software dei computer e programmazione o Scrivere ed eseguire il primo programma in Python o Diagnosticare e correggere errori di programmazione o Usare pseudo-codice per descrivere un algoritmo ▪ Diagrammi di Flusso (Flow Chart) come supporto per il Problem Solving o Rappresentazione o Passaggi progettuali ▪ Introduzione a Python o Strumenti o Linguaggio Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 3 Introduzione ai sistemi di elaborazione Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 4 Definizione di Informatica ▪ L’Informatica (Computer Science) è la scienza che si occupa dello studio della rappresentazione e manipolazione dell’informazione Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 5 Elaboratore elettronico input output (dati) (risultati) (calcolo / elaborazione) Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 6 Problemi ▪ Come codificare i dati in un formato che sia comprensibile dall’elaboratore ▪ Come codificare gli ordini come sequenza di operazioni che produce l’elaborazione desiderata ▪ Come decodificare il risultati in un formato che possa essere compreso dall’utente umano Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 7 Informazione digitale: tutto diventa «bit» Testo Dati Voce 01101100 10100101 Musica Immagini Video Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 8 Hardware e Software ▪ Un calcolatore elettronico è composto da due parti ▪ Hardware: la componente fisica, consiste di dispositivi elettronici e parti meccaniche, magnetiche ed ottiche ▪ Software: la parte «intangibile», consiste di: o Programmi: le «istruzioni» per l’hardware o Dati: le informazioni su cui lavorano i programmi Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 9 Hardware ▪ Hardware comprende gli elementi fisici di un sistema di elaborazione o Esempi: monitor, mouse, memoria esterna, tastiera, …. ▪ La central processing unit (CPU) controlla l’esecuzione del programma e l’elaborazione di dati ▪ I dispositivi di memoria comprendono la memoria interna (RAM) e la memoria secondaria o Hard disk o Dischi Flash o CD/DVD ▪ I dispositivi di Ingresso / Uscita (Input / output) permettono all’utente di interagire con il computer o Mouse, tastiera, stampante, schermo, … Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 10 Vista semplificata dell’hardware di un PC Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 11 Software ▪ Software viene tipicamente sviluppato sotto forma di «programma applicativo» (App) o Microsoft Word è un esempio di software o I Giochi elettronici sono software o I sistemi operativi ed i driver dei dispositivi sono anch’essi software ▪ Software o Il Software è una sequenza di istruzioni e decisioni implementata in qualche linguaggio e tradotta in una forma che possa essere eseguita nel computer o Il Software gestisce i dati utilizzati dalle varie istruzioni ▪ I computer eseguono istruzioni molto semplici in rapida successione o Le istruzioni più semplici vengono raggruppate per eseguire compiti più complessi ▪ La programmazione è l’atto di progettare ed implementare i programmi software Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 12 Programmi ▪ Un programma per computer indica al computer la sequenza di passi necessaria a completare un determinato compito o Il programma consiste di un (elevatissimo) numero di istruzioni primitive (semplicissime) ▪ I computer possono eseguire un ampio spettro di compiti perché possono eseguire diversi programmi o Ciascun programma è progettato per indirizzare il computer affinché lavori su un compito specifico ▪ Programmazione: o È l’atto (e anche l’arte) di progettare, implementare e verificare (testare) i programmi Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 13 Eseguire un programma ▪ Le istruzioni di un programma ed i relativi dati (come testi, numeri, audio o video) sono memorizzati in formato digitale ▪ Per eseguire un programma, questo deve essere portato in memoria, dove la CPU lo possa leggere ▪ La CPU esegue il programma un’istruzione per volta o Il programma può anche reagire agli input provenienti dall’utente ▪ Le istruzioni e gli input dell’utente determinano l’esecuzione del programma o La CPU legge i dati (compreso l’input utente), li modifica e li riscrive nuovamente in memoria, sullo schermo, o sulla memoria di massa Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 14 Cucinare vs Programmare Hardware Software Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 15 Cucinare vs Programmare Hardware Software Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 16 Cucinare vs Programmare Ingredients/Data Instructions/Code Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 17 Cosa vuol dire “programmare”? ▪ La programmazione consiste nello scrivere un «documento» (file sorgente) che descrive la soluzione al problema considerato ▪ In generale, “la” soluzione a un dato problema non esiste o La programmazione consiste nel trovare la soluzione più efficiente ed efficace per il problema, secondo opportune metriche Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 18 Cosa vuol dire “programmare”? ▪ Programmare è un’attività “creativa”! o Ogni problema è diverso da ogni altro problema o Non ci sono soluzioni sistematiche/analitiche o soluzioni “universali”! ▪ Programmare è un’operazione complessa o Un approccio “diretto” (dal problema direttamente al codice sorgente) è impraticabile o Solitamente, lo sviluppo è organizzato in diverse fasi (raffinamenti) successivi Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 19 Sviluppo di un programma Problema Soluzione informale Soluzione formale Programma Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 20 Cosa impareremo in questo corso? ▪ Dalla specifica di un problema, fino alla realizzazione di una soluzione a tale problema, sotto forma di un programma Costruire un programma Il primo corso di INGEGNERIA al Politecnico Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 21 Cosa impareremo in questo corso? ▪ Ad acquisire la predisposizione mentale (forma mentis) necessaria ad affrontare compiti di «problem posing» e «problem solving» o Analizzare un problema e decomporlo in problemi più piccoli o Descrivere la soluzione di un problema, in modo chiaro e non ambiguo o Analizzare ed esplicitare i passi del nostro ragionamento ▪ Queste capacità sono utili in tutte le discipline scientifiche (e non scientifiche) ▪ In particolare… o …a PENSARE come ‘pensa’ un computer o … PARLARE ad un computer in modo che ci possa ‘comprendere’ Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 22 Strumenti per il Problem Solving Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 23 Le Regole ▪ Devo risolvere il problema ed immaginare di avere solamente un foglio di carta (memoria) ed una penna ▪ Ogni informazione che ho bisogno di ricordare deve essere scritta sul foglio di carta Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 24 Esercizio ▪ Trovare chi sia lo studente più anziano presente nell’aula Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 25 Algoritmi 1.7 Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 26 Algoritmo Linguaggio visuale strutturato Operazioni sequenziali Sotto-operazioni Ripetizioni Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 27 Pensare come un programmatore Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 28 Pensare come un programmatore Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 29 Una prima definizione ▪ Algoritmo ▪ Un algoritmo è una descrizione passo-passo di come risolvere un problema Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 30 Introduzione agli algoritmi ▪ Per fare in modo che un computer esegua un compito, il primo passo è scrivere un algoritmo ▪ Un Algoritmo è: o Una sequenza (l’ordine è importante!) di azioni da compiere (istruzioni) per svolgere il compito dato, e raggiungere un obiettivo specifico o Come una ‘ricetta’ ▪ Per i problemi più complessi, gli sviluppatori software studiano un algoritmo, poi lo formalizzano come pseudo-codice o diagrammi di flusso, prima di iniziare la scrittura di un programma vero e proprio ▪ Sviluppare algoritmi richiede fondamentalmente capacità di problem solving o Tali capacità sono utili in molti campi, anche al di fuori dell’informatica Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 31 Algoritmo: Definizione formale ▪ Un algoritmo descrive una sequenza di passi con le seguenti caratteristiche: ▪ Non ambigua o Non vi possono essere delle «assunzioni» sulla conoscenza necessaria per eseguire l’algoritmo o L’algoritmo usa istruzioni precise ▪ Eseguibile o L’algoritmo può essere svolto, in pratica ▪ Termina o L’algoritmo, prima o poi, dovrà necessariamente terminare e fermarsi Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 32 Problem Solving: Progettazione di algoritmi ▪ Gli algoritmi sono semplicemente dei piani operativi o Piani dettagliati che descrivono i passi per risolvere un problema specifico ▪ Alcuni li conosciamo già o Calcolare l’area di un cerchio o Trovare la lunghezza dell’ipotenusa di un triangolo ▪ Alcuni sono più complessi e richiederanno più passi o Risolvere un’equazione di 2o grado o Trovare il MCD tra due numeri o Calcolare π con 100 cifre decimali o Calcolare la traiettoria di un razzo Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 33 Algoritmi nella vita quotidiana 1. metti l’acqua 2. accendi il fuoco 3. aspetta 4. se l’acqua non bolle torna a 3 5. butta la pasta 6. aspetta un po’ 7. assaggia 8. se è cruda torna a 6 9. scola la pasta Chi si è accorto che manca il sale? Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 34 Un semplice esempio ▪ Un semplice algoritmo per prepararti un succo d’arancia o Per semplicità, assumiamo che le seguenti condizioni siano verificate: Hai un bicchiere pulito nell’armadio Hai del succo d’arancia nel frigorifero ▪ Un algoritmo valido potrebbe essere: o Prendi un bicchiere dall’armadio o Vai al frigorifero e prendi la bottiglia del succo d’arancia o Apri la bottiglia del succo d’arancia o Versa il succo d’arancia dalla bottiglia al bicchiere o Rimetti la bottiglia del succo d’arancia nel frigorifero o Bevi il succo Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 35 Esempio di Problem Solving ▪ Problema: Calcola il massimo tra AeB Problema ▪ Soluzione: Se A>B, il massimo Soluzione sarà A, altrimenti sarà B informale o NOTA: e se sono uguali? ▪ Soluzione formale: Soluzione 1. inizialmente: max = 0 formale 2. se A > B allora max = A; stop 3. altrimenti max = B; stop Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 36 Esempio di Problem Solving ▪ Problema: Calcola il Massimo Comun Problema Divisore (MCD) tra A e B ▪ Soluzione: Per definizione il MCD è il Soluzione numero intero più grande che li divide informale esattamente (sia A che B). Possiamo allora provare con tutti i numeri interi tra 1 ed A oppure B Soluzione ▪ Soluzione formale: ??? formale Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 37 Esempio: scegliere un’automobile ▪ Definizione del problema: o Avete la scelta di scegliere l’acquisto di un’auto tra due possibili o Una ha una maggiore efficienza (minor consumo di benzina), ma è anche più costosa o Conoscete il prezzo e l’efficienza (in km per litro) di entrambe le auto o Prevedete di tenere l’auto per 10 anni o Quale auto è più conveniente? Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 38 Sviluppare l’algoritmo ▪ Determinare gli input e l’output ▪ Dalla definizione del problema, sappiamo: o Car 1: Prezzo d’acquisto, Efficienza o Car 2: Prezzo d’acquisto, Efficienza o Prezzo al litro = $1.40 o Km annuali percorsi = 15,000 o Durata = 10 anni ▪ Per ciascuna auto dovremo calcolare: o Effettivo carburante consumato in un anno o Costo annuale del carburante o Costi operativi di ciascuna auto o Costo totale dell’auto ▪ Sceglieremo l’auto con il costo minore Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 39 Formalizzazione della soluzione PSEUDO-CODICE FLOW CHART ▪ Pro ▪ Pro o Immediato o Più intuitivo: formalismo grafico o Descrizione dell’algoritmo più astratta ▪ Contro o Descrizione dell’algoritmo non molto astratta ▪ Contro o L’interpretazione è più complessa o Richiede l’apprendimento del significato dei blocchi o Difficile rappresentare operazioni più complesse o troppo astratte Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 40 Tradurre l’algoritmo in pseudo-codice ▪ Dividere il problema in sotto-problemi più semplici o ‘Calcola il costo totale’ di ciascuna auto o Per calcolare il costo totale annuale dobbiamo calcolare i costi operativi o I costi operativi dipendono dal costo annuale del carburante o Il costo annuale è il prezzo al litro * il consumo annuale o Il consumo annuale è la percorrenza totale / l’efficienza ▪ Descrivere ciascuno dei sotto-problemi come pseudo-codice o costo totale = prezzo di acquisto + costi operativi Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 41 Pseudo-codice ▪ Per ciascuna auto, calcola il costo totale o Carburante consumato all’anno = kilometri percorsi all’anno / efficienza o Costo annuo carburante = prezzo al litro * carburante consumato all’anno o Costo operativo = durata * costo annuo carburante o Costo totale = prezzo di acquisto + costo operativo ▪ Se costo totale 1 < costo totale 2 o Scegli auto 1 ▪ Altrimenti o Scegli auto 2 Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 42 Esempio: conto corrente bancario ▪ Definizione del problema: o Depositate $10,000 in un conto corrente che garantisce un interesse del 5 percento all’anno. Quanti anni sono necessari affinché il saldo del conto corrente arrivi al doppio della cifra originaria? ▪ Come lo risolviamo? o Metodo manuale Fare una tabella Aggiungere nuove righe fino a trovare il risultato o Usare un foglio di calcolo! Costruiamo una formula Calcoliamo ogni linea a partire da quella precedente Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 43 Sviluppo dei passi dell’algoritmo o Depositate $10,000 in un conto corrente che garantisce un interesse del 5 percento all’anno. Quanti anni sono necessari affinché il saldo del conto corrente arrivi al doppio della cifra originaria? ▪ Dividiamolo in passi o Iniziamo con un valore 0 per l’anno ed un saldo di $10,000 o Ripetiamo le seguenti operazioni finché il saldo rimane inferiore a $20,000 Aggiungi 1 al valore dell’anno Moltiplica il saldo per 1.05 (corrisponde all’aumento del 5%) o La risposta sarà il valore finale dell’anno Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 44 Tradurre in pseudo-codice ▪ Pseudo-codice o Via di mezzo tra il linguaggio naturale ed un linguaggio di programmazione ▪ Passi da eseguire o Poni il valore dell’anno a 0 o Poni il valore del saldo a $10,000 o Finché il saldo è minore di $20,000 Aggiungi 1 al valore dell’anno Moltiplica il saldo per 1.05 o Restituisci il valore dell’anno come risposta finale ▪ Lo pseudo-codice si traduce facilmente in Python Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 45 Dalla Soluzione al Programma ▪ Scrivere un programma è un’operazione quasi immediata, se si parte da una soluzione formale (pseudo-codice o flow chart) ▪ I linguaggi di programmazione offrono diversi costrutti ed istruzioni, di complessità variabile o Dipende dal linguaggio utilizzato Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 46 Quali linguaggi? ▪ Diversi livelli di astrazione o Linguaggi ad alto livello Elementi del linguaggio hanno complessità equivalente ai blocchi dei diagrammi di flusso strutturati (condizionali, cicli,…) Esempi: C, C++, Java, JavaScript, Python, ecc. Indipendenti dall’hardware o Linguaggi ‘assembler’ Elementi del linguaggio sono istruzioni microarchitetturali Fortemente dipendenti dall’hardware Esempio: Linguaggio Assembler del microprocessore Intel Core Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 47 Quali linguaggi? – Esempi ▪ Linguaggi ad alto livello … if x > 3: x = x + 1 … ▪ Linguaggio assembler … Specifico per una specifica LOAD Reg1, Mem architettura (microprocessore) ADD Reg1, 10 … Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 48 Astrazione dei dati 100 101 x; integer; 3 102 value=3 103 Indirizzi c; character; ‘a’ 104 di memoria value=‘a’ 105 106 t; real; 107 -11.564 value=-11.564 108 Memoria Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 49 Istruzioni ▪ Operazioni supportate dal linguaggio di programmazione, che saranno eseguite traducendole in codice macchina o Pseudo-istruzioni Direttive all’interprete o compilatore del linguaggio, non corrispondono ad effettivo codice eseguibile o Istruzioni elementari (o primitive) Operazioni che corrispondono direttamente ad operazioni hardware Esempio: interazioni con dispositivi di I/O, accesso ai dati, modifica dei dati o Istruzioni di controllo del flusso Permettono l’esecuzione di operazioni complesse, controllando l’esecuzione di sequenze di istruzioni elementari Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 50 Esempio di programma PROGRAM prova; identifiers // test program Pseudo-instruction KEYWORDS CONSTANTS pi = 3.14159 coeff = 0.19 Allocate memory cells VARIABLES x: INTEGER Specify data types Control y: REAL flow c: CHARACTER instruction BEGIN PROGRAM x = 2; Primitive instructions “Running” IF (y > 2) THEN y = x * pi; part PRINT x, y; END PROGRAM Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 51 Costruire Casi di Prova (Test Case) 3.6 Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 52 Problem Solving: Test ▪ Per verificare la correttezza di un programma, occorre testarlo (collaudarlo) o Un Test (o Caso di Test) è un insieme di input che viene usato per verificare se il programma genera l’output corretto, in quel caso specifico ▪ Nessun test sarà mai completo al 100%, ma dovrebbe coprire tutti i possibili comportamenti del programma ▪ Cercare di ottenere una copertura completa di tutti i punti di decisione (alternative) o Creare test separati per ogni alternativa del programma (es., nazionale/internazionale) o Creare test le “condizioni limite”: il valore minimo (massimo), un valore appena sopra il minimo (max), appena sotto il min (max), appena sopra/sotto una soglia interna al programma, … o Creare test per valori speciali (0, 1, numeri molto grandi, …) o Creare test per valori non validi (valori negativi, stringhe anziché numeri, valori vuoti, …) Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 53 Pianificare… ▪ Cercare di fare una stima ragionevole del tempo necessario a: o Progettare l’algoritmo o Sviluppare i casi di test o Tradurre l’algoritmo in codice, e scrivere tale codice o Testare e correggere (debug) il programma ▪ Lasciare sempre del tempo extra per problemi imprevisti ▪ Con il crescere dell’esperienza le stime diventeranno via via più precise. È comunque meglio avere del tempo in più rispetto a consegnare in ritardo Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 54 Usare Flow Chart per Sviluppare e Raffinare Algoritmi 3.5 Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 55 Problem Solving: Flow Chart ▪ Un diagramma di flusso (flow chart) mostra la struttura delle decisioni e delle attività necessari a risolvere un problema ▪ Elementi principali dei flow chart: Connetterli con frecce Ciascun ramo di una decisione può contenere Le frecce devono andare verso i altre attività ed altre blocchi, non verso altre frecce decisioni Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 56 Usare i Flow Chart ▪ I Flow Chart sono uno strumento eccellente ▪ Aiutano a visualizzare il flusso, lo svolgimento, dell’algoritmo ▪ Costruire un flow chart o Collegare le attività ed i blocchi di input / output nella sequenza in cui dovranno essere eseguiti o Quando occorre prendere una decisione, usare il rombo (istruzione condizionale) che possiede due uscite o Mai indirizzare una freccia verso un ramo «interno» Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 57 Flow chart condizionali ▪ Due alternative ▪ Più di due alternative Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 58 Flow Chart: Spese di spedizione ▪ Le spese di spedizione sono $5 negli Stati Uniti continentali (48 stati) e $10 verso Hawaii ed Alaska. Le spedizioni estere (extra- USA) costano anch’esse $10 ▪ Tre rami alternativi: Ramo Ramo Ramo “internazionale” Hawaii/Alaska 48 stati Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 59 Non incrociare i rami ▪ Le spese di spedizione sono $5 negli Stati Uniti continentali (48 stati) e $10 verso Hawaii ed Alaska. Le spedizioni estere (extra- USA) costano anch’esse $10 ▪ Non fate così! International Hawaii/Alaska Lower 48 Branch Branch Branch Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 60 Flow Chart finale ▪ Le spese di spedizione sono $5 negli Stati Uniti continentali (48 stati) e $10 verso Hawaii ed Alaska. Le spedizioni estere (extra- USA) costano anch’esse $10 Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 61 Scelte e decisioni complesse sono difficili! ▪ I computer sono usati anche per ordinare e dirigere i bagagli negli aeroporti ▪ Questi sistemi: o Leggono le etichette sulle valigie o Ordinano gli elementi o Instradano gli elementi presso i nastri trasportatori o Operatori umani poi metteranno le valigie sui bus ▪ Nel 1993, Denver costruì un nuovo aeroporto con un sistema di gestione bagagli “allo stato dell’arte” in cui sostituiva gli operatori umani con carrelli robotizzati o Il sistema fallì o L’aeroporto non poteva aprire senza la gestione bagagli… o Il sistema fu sostituito (ci volle oltre 1 anno) o Il costo stimato: circa 1 miliardo di dollari (del 1994) o L’azienda che aveva progettato il sistema (ovviamente?) fallì Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 62 Esercizio ▪ Fred vende mazzi di fiori al centro commerciale ▪ Un giorno Joe, il capo di Fred, gli dice che in qualunque momento della giornata, egli (Joe) ha bisogno di sapere: o Quanti mazzi di fiori sono stati venduti o Qual era il valore del mazzo più costoso venduto o Qual era il valore del mazzo meno costoso venduto o Qual era il valore medio dei mazzi venduti Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 63 Esercizio Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 64 Disegnare e “eseguire” diagrammi di flusso ▪ Con Carta e Penna (o a mente, per quelli più semplici) ▪ Con applicazioni di disegno o LucidChart o Diagrams.net / Draw.io o Smartdraw o Microsoft Visio ▪ Con appositi programmi didattici o Controllo della struttura o Talvolta, esecuzione dell’algoritmo http://www.flowgorithm.org/ Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 65 Introduzione a Python 1.3, 1.4, 1.5, 1.6 Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 66 Il linguaggio Python ▪ All’inizio degli anni ’90 Guido van Rossum progettò ciò che sarebbe diventato il linguaggio di programmazione Python ▪ Van Rossum non era soddisfatto dei linguaggi esistenti o Erano ottimizzati per scrivere grandi programmi, eseguibili in modo efficiente ▪ Voleva un linguaggio che permettesse di creare rapidamente i programmi, ma anche modificarli in modo semplice o Progettato per avere una sintassi più semplice e pulita degli altri linguaggi come Java, C and C++ (più facile da apprendere) o L’ambiente Python aveva un approccio “batterie comprese”, offrendo subito la disponibilità di molte funzioni utili in modo standard o Python è interpretato, rendendo più facile lo sviluppo ed il test di brevi programmi ▪ I programmi Python sono eseguiti dall’interprete Python o L’interprete legge il programma e lo esegue Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 67 https://www.python.org/ Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 68 https://docs.python.org/ Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 69 Altri siti utili ▪ https://realpython.com/ o Molti tutorial a diversi livelli di approfondimento ▪ https://devdocs.io/python/ o Guida alle funzioni della libreria standard ed elenco dei moduli disponibili Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 70 Ambienti di programmazione ▪ Ci sono vari modi per creare un programma o Usando un sistema integrato di sviluppo (IDE, Integrated Development Environment) IDLE, PyCharm, Visual Studio Code, Wing 101, … o Usando un semplice editor di testi Blocco note, Notepad++, Atom, vi, gedit, … ▪ Usate il metodo ed il tool con cui vi trovate più a vostro agio o Nel corso useremo l’IDE Visual Studio Code o l’IDE on-line replit.com o Gli esempi del libro usano l’IDE Wing o Spyder Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 71 Componenti di un IDE ▪ L’editor del codice sorgente aiuta il programmatore con: o Visualizzazione dei numeri di linea del codice o Evidenziazione e colorazione della sintassi (commenti, testi, …) o Indentazione automatica del codice o Evidenziazione degli errori di sintassi o Completamento automatico dei nomi ▪ Finestra di output o L’output (testuale) generato dal programma ▪ Debugger o Strumenti di ausilio alla ricerca degli errori logici nel programma Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 72 Programmazione con un editor di testi ▪ Si può anche usare un semplice editor di testi per scrivere il codice ▪ Salvando il file come hello.py, usare una finestra di comando per: o Compilare & eseguire il programma (Compila ed) esegue il programma: python hello.py Sorgente del Output del programma: programma in Hello, world hello.py Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 73 Il nostro primo programma ▪ Il classico programma ‘Hello World’ in Python o print è un esempio di una istruzione (statement) Python IDE write Text editor hello.py IDE 📜 hello.py run Console Output Nota: questo simbolo indica che il file è disponibile tra il materiale del corso Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 74 Scrivere un programma in Python ▪ Attenzione agli errori di battitura – es.: ‘print’ vs. ‘primt’ ▪ PyTHon fA diFFereNza tra MAIUscole e minuSCOLE ▪ Gli spazi sono importanti, soprattutto all’inizio della linea (indentazione o rientro) ▪ Le linee che iniziano con # sono commenti (vengono ignorati da Python) Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 75 Dal sorgente all’esecuzione del programma ▪ Il compilatore legge il programma e genera le istruzioni binarie (byte code, semplici istruzioni per la Macchina Virtuale Python) o La Macchina Virtuale Python è un programma che si comporta come la CPU del computer (esegue istruzioni, in software) o Ogni libreria necessaria (es. per la grafica) viene automaticamente trovata ed inclusa dalla macchina virtuale Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 76 L’IDE di Visual Studio Code Sorgente del programma Debugger Errori File di progetto Output Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 77 Progetto vs. Programma vs. File ▪ Un singolo Programma potrebbe essere molto grande, in tal caso sarà composto da molti File diversi ▪ Gli IDE permettono di raggruppare un insieme di File correlati in un “Progetto” o In Visual Studio Code, un progetto corrisponde ad una cartella (Folder) ▪ Ogni volta che vogliamo creare un nuovo Programma, dovremo o Creare un nuovo Progetto (Folder) o Creare uno (o più) File Python all’interno del Progetto Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 78 Creare un nuovo progetto Nuova cartella di Progetto Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 79 Creare un file Python Nome file (.py) New file Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 80 Scrivere un programma Python Elenco file del Scrivere il progetto programma Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 81 Eseguire il programma Run ▶️ Run ▶️ Output del programma Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 82 Organizzare il lavoro ▪ Il ‘codice sorgente’ è salvato nel file.py ▪ Creiamo una cartella per il corso di Informatica ▪ Creiamo una cartella di progetto per ciascun programma, all’interno della cartella di Informatica o Un programma sarà composto da uno o più file.py ▪ Fare backup regolari e frequenti dei propri dati o Su chiavetta USB (o più di una) o Su un disco di rete (servizio cloud) or hard disk esterno o Fatelo. Davvero. Sempre. Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 83 Modalità interattiva di Python ▪ L’interprete di Python normalmente carica un intero programma ed esegue le istruzioni in esso contenute o Procedimento simile ad altri linguaggi (compilati) ▪ In alternativa: in modo interattivo, Python può eseguire un’istruzione per volta o Permette di scrivere velocemente dei ‘programmini di test’ o Permette di provare e sperimentare con le varie istruzioni o Permette di scrivere istruzioni Python direttamente nella finestra di console Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 84 Modalità interattiva di Python Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 85 Modalità interattiva di Python Scrivere REPL e selezionare Python: Start REPL Premere F1 per aprire la finestra di comando REPL = Read, Evaluate, Print Loop Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 86 Modalità interattiva di Python Finestra interattiva Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 87 IDE On-line : https://replit.com File di progetto Output del Sorgente del programma e programma console interattiva Opzione fantastica per esempi rapidi, per testare frammenti di programma, per evitare di creare un intero Progetto per una piccola parte di codice,, … Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 88 Sintassi Python: Print ▪ Usare la funzione print() in Python o Una funzione è un insieme di istruzioni (con un nome) che svolge un compito (task) particolare (in questo caso, stampare un valore su schermo) o È codice che qualcun altro ha scritto per noi! Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 89 Sintassi per le funzioni Python ▪ Per usare (o ‘chiamare’) una funzione in Python, occorre specificare: o Il nome della funzione che vogliamo usare Nell’esempio precedente, il nome era print o Tutti i valori (argomenti, parametri) di cui la funzione ha bisogno per svolgere il proprio compito In questo caso, "Hello World!" o Gli argomenti sono racchiusi tra parentesi tonde o Se vi sono più argomenti, sono separati da virgole. Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 90 Stringhe ▪ Una sequenza di caratteri racchiusa tra apici o virgolette è chiamata Stringa o Può essere racchiusa tra 'apici singoli' o Può essere racchiusa tra "apici doppi" o "virgolette" Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 91 Altri esempi della funzione print ▪ Stampare valori numerici o print(3 + 4) o Valuta l’espressione 3 + 4 e visualizza 7 ▪ Passare più valori alla funzione o print("The answer is", 6 * 7) o Visualizza The answer is 42 o Tutti i valori passati alla funzione vengono visualizzati, uno dopo l’altro, separati da uno spazio ▪ Per default, la funzione print crea una nuova linea (va «a capo») ogni volta che stampa i suoi argomenti print("Hello") print("World!") o Stampa due linee di testo: Hello World! Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 92 Il nostro secondo programma # Computes and Prints 7 print(3 + 4) # Prints "Hello World!" in two lines print("Hello") print("World!") # Prints multiple values with a single print function call print("My favorite numbers are", 3 + 4, "and", 3 + 10) # Prints three lines of text with a blank line print("Goodbye") print() print("Hope to see you again") 📜 printtest.py Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 93 Errori ERRORI A TEMPO DI COMPILAZIONE ERRORI A TEMPO DI ESECUZIONE (RUN-TIME) O ERRORI DI SINTASSI O ERRORI LOGICI ▪ Scrittura, maiuscole, punteggiatura ▪ Il programma viene eseguito, ma non produce il risultato corretto ▪ Ordine delle istruzioni, corrispondenza delle parentesi, virgolette, indentazione, … ▪ Il programma può andare in ‘crash’ ▪ Il compilatore non crea alcun programma ▪ Sono i più difficili da trovare e correggere eseguibile o Anche per programmatori più esperti ▪ Correggere il primo errore evidenziato, poi ri-compilare o Ripetere finché tutti gli errori no sono corretti ▪ Solitamente rivelati ed evidenziati direttamente dall’IDE Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 94 Errori di sintassi ▪ Gli errori di sintassi vengono catturati dal compilatore ▪ Verificare cosa succede se… o Sbagliamo una maiuscola Print("Hello World!") o Dimentichiamo le virgolette print(Hello World!) o Virgolette non corrispondenti print("Hello World!') o Parentesi non corrispondenti print('Hello' ▪ Proviamo ciascun esempio nell’IDE o Nel sorgente del programma o Nella console Python interattiva o Quali messaggi di errore vengono generati? Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 95 Errori Logici ▪ Verificare cosa succede se… o Dividiamo per zero print(1/0) o Sbagliamo il testo print("Hello, Word!") o Dimentichiamo q.cosa (cancellare linea 2) ▪ Il programma compila «normalmente» e viene eseguito o L’output però non è quello che ci aspettiamo ▪ Proviamo ciascun esempio nell’IDE o Quali errori vengono generati? Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 96