P1-La_Programmazione (33784317).pdf

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 Diagrammi di flusso: Blocchi di inizio/fine Start Stop 58 Diagrammi di flusso: Blocchi di azione azione azione generica di I/O 59 Diagrammi di flusso: Blocco di decisione V condizione F 60 Diagrammi di flusso: Blocco di connessione 61 Diagramma di flusso : Esempio Start 1 F 2 5 V 3 Stop 4 62 Costruzione di diagrammi di flusso  Per mezzo dei diagrammi di flusso si possono rappresentare flussi logici complicati a piacere  E’ però preferibile scrivere diagrammi di flusso strutturati, che seguano cioè le regole della programmazione strutturata  Così facendo si ottiene: o Maggiore formalizzazione dei problemi o Riusabilità del codice o Maggiore leggibilità 63 Diagrammi di flusso strutturati  Definizione formale: o Diagrammi di flusso strutturati: Composti da strutture elementari indipendenti tra loro o Struttura elementare = Composizione particolare di blocchi elementari o Sempre riducibili ad un diagramma di flusso elementare costituito da un'unica azione  Rispetto a diagrammi di flusso non strutturati questo implica l’assenza di salti incondizionati all'interno del flusso logico del diagramma 64 Diagrammi di flusso strutturati (Cont.)  Un diagramma di flusso è detto strutturato se contiene solo un insieme predefinito di strutture elementari: o Uno ed uno solo blocco Start o Uno ed uno solo blocco Stop o Sequenza di blocchi (di azione e/o di input-output) o If - Then - ( Else ) o While - Do o Repeat - Until 65 Sequenza struttura-1... struttura struttura-2 66 If-Then-Else V condizione F struttura-1 struttura-2 67 If-Then V condizione F struttura 68 While-Do condizione F V struttura 69 Do – While struttura condizione F V 70 Teorema di Böhm - Jacopini Qualunque diagramma di flusso è sempre trasformabile in un diagramma di flusso strutturato equivalente a quello dato  Quindi, qualunque flusso logico può essere realizzato utilizzando solamente due strutture di controllo: o Meccanismo di decisione o Meccanismo di ripetizione (loop) 71 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 72 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 73 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 74 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 75 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 76 Esercizio Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 77 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 78 Introduzione a Python 1.3, 1.4, 1.5, 1.6 Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 79 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 80 https://www.python.org/ Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 81 https://docs.python.org/ Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 82 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 83 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 84 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 85 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 86 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 87 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 88 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 89 L’IDE di Visual Studio Code Sorgente del programma Debugger Errori File di progetto Output Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 90 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 91 Creare un nuovo progetto Nuova cartella di Progetto Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 92 Creare un file Python Nome file (.py) New file Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 93 Scrivere un programma Python Elenco file del Scrivere il progetto programma Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 94 Eseguire il programma Run ▶ Run ▶ Output del programma Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 95 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 96 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 97 Modalità interattiva di Python Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 98 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 99 Modalità interattiva di Python Finestra interattiva Politecnico di Torino, 2023/24 INFORMATICA / COMPUTER SCIENCES 100 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 101 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 102 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 103 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 104 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 105 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 106 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 107 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 108 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 109

Use Quizgecko on...
Browser
Browser