Corso di Informatica e Rappresentazione Digitale - Linguaggi - PDF
Document Details
Uploaded by Deleted User
Università Telematica San Raffaele Roma
Noemi Scarpato
Tags
Summary
Questi appunti presentano una panoramica sui linguaggi di programmazione, algoritmi, e il concetto di processo in informatica. Trattano anche la traduzione da Algoritmo a Programma.
Full Transcript
Noemi Scarpato CORSO DI INFORMATICA E RAPPRESENTAZIONE DIGITALE Noemi Scarpato Università Telematica San Raffaele Roma LINGUAGGI 1 di 16 ...
Noemi Scarpato CORSO DI INFORMATICA E RAPPRESENTAZIONE DIGITALE Noemi Scarpato Università Telematica San Raffaele Roma LINGUAGGI 1 di 16 Noemi Scarpato Linguaggi di programmazione Noemi Scarpato Università Telematica San Raffaele Roma LINGUAGGI 2 di 16 Noemi Scarpato Cosa Vedremo Nelle Lezioni 1. Fondamenti Dell´Informatica 2. Architetture e Sistemi Operativi 3. Introduzione alle Reti di Calcolatori - INTERNET, IL World Wide Web e i loro servizi. 4. Elaborazione di documenti elettronici LINGUAGGI 3 di 16 Noemi Scarpato Fondamenti Dell’ Informatica Nozione di algoritmo Linguaggi di programmazione Calcolabilità Problemi irresolubili Complessità di calcolo Logica e informatica LINGUAGGI 4 di 16 Noemi Scarpato Linguaggi di Programmazione Finora abbiamo stabilito come passare da: Problema Algoritmo Ora vogliamo determinare come “tradurre” un algoritmo in un linguaggio comprensibile per il calcolatore Algoritmo Programma Def: Data una macchina, un programma è la traduzione di un algoritmo in una sequenza di istruzioni che la macchina può eseguire N.B. – Una macchina ha un insieme di istruzioni che può eseguire. – Le istruzioni, come i dati, sono scritti secondo una codifica. LINGUAGGI 5 di 16 Noemi Scarpato Linguaggi di Programmazione La traduzione da Algoritmo a Programma avviene mediante l’utilizzo dei linguaggi di programmazione. I linguaggi di programmazione devono essere: comprensibile dall’uomo; interpretabile ed eseguibile da un calcolatore elettronico; chiari e concisi ; non ambigui; LINGUAGGI 6 di 16 Noemi Scarpato Linguaggi di Programmazione Un linguaggio di programmazione permette di esprimere: Operazioni di base: – operazioni aritmetiche; – lettura da tastiera di un dato; – scrittura su monitor di un dato. Costrutti linguistici per combinare in modo opportuno le operazioni di base: – eseguire una dopo l’altra una sequenza di operazioni(istruzioni sequenziali) – eseguire una operazioni solamente se una certa condizione è verificata(istruzioni decisionali) LINGUAGGI 7 di 16 Noemi Scarpato Linguaggi di Programmazione – eseguire un’operazione per un certo numero di volte(istruzioni iterative); Procedure e Funzioni Esempio: calcolo dello stipendio in base alla paga oraria ed il numero di giorni lavorativi: STIPENDIO(PagaOraria,GiorniLavorativi){ OreTotali := 8*GiorniLavorativi; return PagaOraria*OreTotali; } LINGUAGGI 8 di 16 Noemi Scarpato Processo Si faccia attenzione: Un algoritmo non è l’esecuzione materiale delle azioni volte a raggiungere il risultato finale. Definizione: L’esecuzione delle azioni atte ad eseguire un Algoritmo in un determinato momento è detto processo.(Nelle lezioni seguenti sarà approfondito il concetto di processo.) LINGUAGGI 9 di 16 Noemi Scarpato COMPILATORI E INTERPRETI Finora abbiamo stabilito come passare da: Problema Algoritmo e come passare da: Algoritmo Programma Domanda: Il calcolatore è in grado di leggere un programma scritto in un qualsiasi linguaggio di programmazione? La risposta e ancora una volta no manca un ultimo passo fondamentale ovvero la “traduzione” da un linguaggio di programmazione (linguaggio ad alto livello) al cosiddetto linguaggio macchina (linguaggio a basso livello). LINGUAGGI 10 di 16 Noemi Scarpato COMPILATORI E INTERPRETI Esistono due tipologie di traduttori : Compilatori Interpreti Trattiamo prima della compilazione: Per eseguire un programma scritto in un linguaggio ad alto livello L su una macchina che comprende solo un linguaggio a basso livello, possiamo tradurre il programma in L in un programma in CR. Nel caso generale, ogni costrutto ad alto livello deve venire tradotto in una serie di corrispondenti istruzioni di basso livello. LINGUAGGI 11 di 16 Noemi Scarpato COMPILATORI E INTERPRETI La traduzione avviene in modo automatico, sfruttando un apposito programma (che il progettista del linguaggio ad alto livello ha scritto per noi) che esegue la traduzione. Un tale programma si chiama compilatore. La figura seguente rappresenta in modo schematico la situazione. PHL indica un generico programma scritto nel linguaggio (ad alto livello) HL; Comp è il compilatore che preso PHL come dato, restituisce come risultato PLL, un programma equivalente a PHL, ma scritto in linguaggio macchina; PLL può finalmente venire eseguito sulla macchina che abbiamo a disposizione(Calcolatore). LINGUAGGI 12 di 16 Noemi Scarpato COMPILATORI E INTERPRETI N.B. Non deve sorprendere che un programma (PHL) costituisca il dato d’ingresso di un altro programma (il compilatore): Il compilatore prende come dato il testo di PHL, cioè la sequenza di caratteri di cui PHL è composto e fornisce PLL come output che può essere letto ed eseguito dal calcolatore. LINGUAGGI 13 di 16 Noemi Scarpato COMPILATORI E INTERPRETI Definizione:un compilatore è un vero e proprio traduttore da un linguaggio (ad alto livello) ad un altro (a basso livello). Il programma originario non viene eseguito che al termine del procedimento di traduzione. Possiamo pensare di operare in un altro modo, in un certo senso analogo alla traduzione in simultanea. Questa tecnica fa uso di un programma che viene detto interprete. Anche un interprete, come un compilatore, prende come dato di ingresso un programma ad alto livello PHL. Ma a differenza di un compilatore prende in ingresso anche i dati per il programma PHL. A questo punto non produce una traduzione di PHL, ma lo esegue direttamente sui dati forniti. In nessun momento esiste una traduzione di PHL nel linguaggio a basso livello, ma l’interprete è comunque capace di eseguire passo dopo passo le istruzioni di PHL. LINGUAGGI 14 di 16 Noemi Scarpato COMPILATORI E INTERPRETI La figura seguente rappresenta in modo schematico la situazione. Il programma Interprete prende come dato PHL; L’interprete è eseguito sulla macchina e si comporta come se fosse PHL. LINGUAGGI 15 di 16 Noemi Scarpato COMPILATORI E INTERPRETI In un certo senso, l’interprete è una sorta di trasformista: preso come dato un certo programma PHL, si traveste da PHL, comportandosi come se fosse PHL. Le due tecniche che abbiamo visto, compilazione e interpretazione, sono equivalenti quanto a potenza espressiva: ogni linguaggio può essere sia compilato che interpretato. Vi sono motivazioni di efficienza e di semplicità che suggeriscono di adottare l’una o l’altra tecnica (o un misto delle due) nel caso di specifici linguaggi. LINGUAGGI 16 di 16 Noemi Scarpato CORSO DI INFORMATICA E RAPPRESENTAZIONE DIGITALE Noemi Scarpato Università Telematica San Raffaele Roma ALGORITMI 1 di 18 Noemi Scarpato Algoritmi Noemi Scarpato Università Telematica San Raffaele Roma ALGORITMI 2 di 18 Noemi Scarpato Cosa Vedremo Nelle Lezioni 1. Fondamenti Dell´Informatica 2. Architetture e Sistemi Operativi 3. Introduzione alle Reti di Calcolatori - INTERNET, IL World Wide Web e i loro servizi. 4. Elaborazione di documenti elettronici ALGORITMI 3 di 18 Noemi Scarpato Fondamenti Dell’ Informatica Nozione di algoritmo Algoritmo: Modello per risolvere i problemi Linguaggi di programmazione Calcolabilità Problemi irresolubili Complessità di calcolo Logica e informatica ALGORITMI 4 di 18 Noemi Scarpato Dal Problema All’Algoritmo Cos’è un problema? Un esempio “La Ricetta”: Problema: Spaghetti all’arrabbiata: Ingredienti: (per 6 persone) spaghetti g 500 - polpa di pomodoro fresco g 400 - cipolla mondata g 30 - olive nere - capperi - peperoncino piccante - basilico - olio d’oliva – sale. Soluzione Lessate gli spaghetti in abbondante acqua salata a piacere. Intanto, in una larga casseruola, fate riscaldare 3 cucchiaiate d’olio, insaporendolo con la cipolla tritata, un peperoncino intero, una decina di olive e una cucchiaiata di capperi. Unite quindi la polpa di pomodoro e fate cuocere il tutto per circa 5’. Scolate la pasta al dente e fatela saltare velocemente nel sugo, poi trasferitela in una terrina e servitela guarnita con basilico fresco. Risultato Buon appetito! ALGORITMI 5 di 18 Noemi Scarpato Dal Problema All’Algoritmo Cos’è un problema? Un altro esempio “Il problema del contadino”: Problema: Un contadino ha venduto Kg 125 di uva a 0,55 € al chilogrammo e con il ricavo ha acquistato 3 metri di stoffa pagandola 15,80 € al metro. Quale somma gli è rimasta? Soluzione 0,55 €/kg×125kg= € 68,75 RICAVO UVA VENDUTA 15,80 €/m×3m= € 47,40 SPESA STOFFA € 68,75- €47,40 = €21,35 SOMMA RIMASTA Risultato Al contadino rimangono €21,35 ALGORITMI 6 di 18 Noemi Scarpato Problemi Dati e Risultati Nella ricetta, distinguiamo in primo luogo tre aspetti: 1. Abbiamo lo scopo della ricetta, cioè il piatto che deve essere realizzato. 2. Abbiamo quindi gli ingredienti, partendo dai quali è possibile realizzare il piatto. 3. Infine, abbiamo la descrizione di come trasformare gli ingredienti nel piatto finale. Anche nel problema del contadino possiamo distinguere gli stessi tre aspetti: 1. Abbiamo lo scopo del problema conoscere quale somma gli è rimasta al contadino dopo le operazioni di acquisto e vendita. 2. Abbiamo i dati da cui partire per calcolare le entrate e le uscite. 3. Infine, abbiamo la descrizione di come combinare questi dati per ottenere la somma rimanente. ALGORITMI 7 di 18 Noemi Scarpato Problemi Dati e Risultati(2) Possiamo generalizzare e riformulare questi tre aspetti nel modo che segue: Abbiamo un problema, per il quale vorremmo costruire una soluzione. La soluzione si ottiene manipolando dei dati iniziali e costruendo con essi quello che ci interessa. La costruzione della soluzione avviene seguendo una sequenza di istruzioni. L’algoritmo deve essere eseguito da un esecutore che deve disporre dei mezzi necessari all’esecuzione dell’algoritmo stesso. ALGORITMI 8 di 18 Noemi Scarpato Algoritmo Un algoritmo è una successione non ambigua ,finita e ripetibile di istruzioni che permette di risolvere in modo generale un problema. Le istruzioni fanno riferimento ad un’insieme di operazioni elementari che si suppone siano eseguibili da un certo esecutore. L’esecuzione dell’algoritmo (cioè il seguire passo dopo passo le istruzioni) permette di costruire effettivamente la soluzione al problema assegnato. La soluzione è costruita a partire da alcuni dati di ingresso ed è composta da uno o più dati di uscita. ALGORITMI 9 di 18 Noemi Scarpato Algoritmo(2) Esaminiamo in particolare le seguenti caratteristiche di un algoritmo: Soluzione generale di un problema: Uno stesso elenco di istruzioni può servire a condurre alla soluzione di problemi che differiscono solo per i dati iniziali (detti più correttamente parametri). Negli esempi precedenti: raddoppiando la dose degli ingredienti si possono ottenere spaghetti per 12 persone mentre se il contadino spende e/o percepisce somme differenti da quelle date la procedura per il calcolo sarà la medesima. ALGORITMI 10 di 18 Noemi Scarpato Algoritmo(3) Sequenza di istruzioni non ambigua: Le istruzioni che compongono un algoritmo devono essere non ambigue, ovvero non soggette ad interpretazioni differenti da parte dell’esecutore. Se pensiamo all’algoritmo della ricetta l’istruzione salare a piacere non è precisa poiché non viene specificata l’esatta quantità di sale da aggiungere. Quindi una ricetta non può essere definita un algoritmo non ambiguo mentre se diciamo che un contadino ha venduto Kg 125 di uva a 0,55 € al kilo e che il ricavo si calcola moltiplicando i kg per il prezzo questa operazione può essere svolta solo in un modo e quindi non è ambigua. Sequenza di istruzioni ripetibile: Un’istruzione è ripetibile se può essere replicata più volte, anche da esecutori differenti, nella stessa maniera. Ciò può avvenire solo se l’operazione in questione non è ambigua. ALGORITMI 11 di 18 Noemi Scarpato Un esempio in pseudocodice: Algoritmo 1. Incollare a destra i due numeri della Somma 2. Considerare le cifre della colonna più a destra 3. Assumere inizialmente il riporto uguale a O 4. Sommare le cifre della colonna in considerazione e aggiungere il riporto 5. Se il risultato ottenuto eseguendo la istr.4 è < 10 scrivere la cifra risultante nella colonna in considerazione, assegnare al riporto il valore O e andare all’istr.7. 6. Se il risultato ottenuto eseguendo la istr.4 è ≥ 10 sottrarre 10. Scrivere la cifra risultante nella colonna in considerazione, porre il riporto =1 e andare alla istr.7. ALGORITMI 12 di 18 Noemi Scarpato Un esempio in pseudocodice: Algoritmo della Somma 7. Spostarsi sulla colonna immediatamente a sinistra, se non vi sono cifre ed il riporto = 0 fermati altrimenti vai all’istr.8 8. Andare all’istr.4 ALGORITMI 13 di 18 Noemi Scarpato Flussi Di Controllo Come visto nell’esempio precedente ci sono delle istruzioni “speciali” che modificano l’ordine di esecuzione delle istruzioni di un algoritmo e sono in grado di fare salti condizionali o di invocare iterazioni. Riassumendo ci sono tre tipi di istruzioni: – Sequenziali; – Condizionali; – Iterative. ALGORITMI 14 di 18 Noemi Scarpato Flussi Di Controllo Le istruzioni sequenziali vengono eseguite una di seguito all’altra,mentre le condizionali scelgono in base a condizioni che possono risultare vere o false quale delle due istruzioni alternative va eseguita. Le istruzioni Iterative consentono di ripetere un certo numero di volte un gruppo di istruzioni (ciclo). Le istruzioni condizionali e iterative consentono di realizzare un flusso di controllo dell’algoritmo. ALGORITMI 15 di 18 Noemi Scarpato DIAGRAMMI DI FLUSSO (FLOW CHART) Per rappresentare gli algoritmi si usano spesso i diagrammi di flusso o flow chart. Essi sono anche detti diagrammi a blocchi poiché sono composti da diversi tipi di blocchi. Esistono 5 tipi di blocchi elementari: Inizio Fine Operazione di I/O Controllo Elaborazione Tali blocchi sono connessi tramite frecce entranti o uscenti: ALGORITMI 16 di 18 Noemi Scarpato DIAGRAMMI DI FLUSSO (FLOW CHART) Una combinazione di blocchi elementari descrive un algoritmo se: viene usato un numero finito di blocchi lo schema inizia con un blocco iniziale e termina con un blocco finale Condizioni di validità condizioni sui blocchi: blocco azione e blocco lettura/scrittura: ogni blocco di questi due tipi ha una sola freccia entrante e una sola freccia uscente blocco di controllo: ogni blocco di questo genere ha una sola freccia entrante e due frecce uscenti condizioni sulle frecce: ogni freccia deve entrare in un blocco condizioni sui percorsi: dal via deve essere possibile raggiungere ogni blocco da ogni blocco dev'essere possibile raggiungere il blocco finale ALGORITMI 17 di 18 Noemi Scarpato DIAGRAMMI DI FLUSSO (FLOW CHART) I flussi di controllo sono rappresentati nei seguenti modi: Istruzione 1 Istruzione 1 NO Sequenza Iterazione Condizione Condizione SI NO Istruzione 2 Condizione SI Istruzione 1 Istruzione 2 Istruzione 2 ALGORITMI 18 di 18 Noemi Scarpato CORSO DI INFORMATICA E RAPPRESENTAZIONE DIGITALE Noemi Scarpato Università Telematica San Raffaele Roma INTRODUZIONE 1 di 8 Noemi Scarpato Introduzione La prima domanda che ci dobbiamo porre nell’affrontare lo studio di questo corso è: "Cos’è l’informatica?“: Le risposte possono essere diverse ad esempio: – Un insieme di servizi e manufatti ("i computer’’). – Una tecnologia che rende possibili quei servizi e manufatti. – Una disciplina scientifica che giustifica e studia quella tecnologia. INTRODUZIONE 2 di 8 Noemi Scarpato Introduzione Tutte le risposte della slide precedente sono valide e non sono neanche le sole che si potrebbero dare per rispondere al quesito "Cos’è l’informatica?“. Questo perché l’informatica è una materia complessa che necessita della conoscenza sia dei computer intesi come entità fisiche sia della tecnologia necessaria alla loro realizzazione e al loro funzionamento. E’ fondamentale inoltre conoscere le basi della disciplina scientifica che giustifica e studia quella tecnologia. L’informatica è quindi una scienza che fonda una tecnologia che a sua volta realizza strumenti e servizi. INTRODUZIONE 3 di 8 Noemi Scarpato Introduzione Perché studiare l’informatica? In sintesi: L’informatica non è solo strumento, ma anche disciplina scientifica; Conoscere alcuni aspetti di questa disciplina è importante anche per lo studente che non studia informatica "di mestiere"; Questa conoscenza permette infatti un uso consapevole degli strumenti informatici. INTRODUZIONE 4 di 8 Noemi Scarpato Cosa Vedremo Nelle Lezioni 1. Fondamenti Dell´Informatica 2. Architetture e Sistemi Operativi 3. Introduzione alle Reti di Calcolatori - INTERNET, IL World Wide Web e i loro servizi. 4. Elaborazione di documenti elettronici INTRODUZIONE 5 di 8 Noemi Scarpato ESERCITAZIONI Durante il corso vi verrà richiesto di produrre alcuni elaborati. Tali elaborati saranno valutati dal docente e la loro votazione si sommerà a quella della prova teorica. Gli elaborati consisteranno in: Documento di Testo (Word); Presentazione (Power Point); Al termine di ogni lezione vi verrà inoltre proposto un breve test di autovalutazione sugli argomenti affrontati nella lezione o eventuali esercitazioni tali test ed esercitazioni non sono obbligatori a differenza degli elaborati. INTRODUZIONE 6 di 8 Noemi Scarpato ESAMI L'esame verterà su tutti gli argomenti affrontati durante il corso; Sarà inoltre possibile la richiesta di una dimostrazione pratica al computer degli elaborati presentati (Vedi Esercitazioni). L’esame potrà essere in forma esclusivamente orale o composto da un test scritto e da un breve colloquio orale. Costituisce prerequisito per l’esame aver consegnato gli elaborati richiesti nei tempi che saranno indicati di volta in volta. INTRODUZIONE 7 di 8 Noemi Scarpato LIBRO DI TESTO Il testo di riferimento del corso è: Informatica e cultura dell’informazione McGraw-Hill. Luca Mari, Giacomo Buonanno, Donatella Sciuto INTRODUZIONE 8 di 8 Noemi Scarpato METODI DI VALUTAZIONE, GESTIONE DEI DATI E DELLA CONOSCENZA, APPLICATI ALLE ATTIVITA' MOTORIE Noemi Scarpato Modello Entità-Relazione 1 di 28 Noemi Scarpato METODI DI VALUTAZIONE, GESTIONE DEI DATI E DELLA CONOSCENZA, APPLICATI ALLE ATTIVITA' MOTORIE MODELLO ENTITÀ-RELAZIONE Modello Entità-Relazione 2 di 28 Noemi Scarpato Il Modello Concettuale Entità- Relazione (ER) Obiettivi: Introdurre la progettazione concettuale Definire il linguaggio ER Discuterne i costrutti principali Modello Entità-Relazione 3 di 28 Noemi Scarpato Fasi di sviluppo di una Base di Dati Analisi dei Requisiti Progettazione Concettuale Progettazione Logica Raffinamento dello Schema Progettazione Fisica e ulteriore Raffinamento dello schema Progettazione delle Applicazioni e della Sicurezza Modello Entità-Relazione 4 di 28 Noemi Scarpato Analisi dei requisiti Consente di determinare quali dati devono essere memorizzati e quali applicazioni (distinte) insisteranno su di essi Requisiti utente Processo informale Modello Entità-Relazione 5 di 28 Noemi Scarpato Progettazione Concettuale Il modello concettuale serve descrivere tutte le informazioni che popoleranno la futura base di dati e le relazioni che nel dominio applicativo sussistono tra loro. Tali proprietà sono formalizzate attraverso un linguaggio molto generale (alto potere espressivo) che e’ detto linguaggio ER e il risultato della descrizione e’ detto schema ER (Entita’- Relazioni) Modello Entità-Relazione 6 di 28 Noemi Scarpato Progettazione logica Dipende dal DBMS sottostante Nei DB relazionali , coincide con la definizione dello schema logico Modello Entità-Relazione 7 di 28 Noemi Scarpato Raffinamento dello schema Analisi dello schema logico iniziale Determinazione dei problemi: incompletezza ridondanze La normalizzazione è un processo formalizzato che garantisce, tramite una teoria algebrica rigorosa, alcune proprietà importanti Modello Entità-Relazione 8 di 28 Noemi Scarpato Progettazione Fisica Analisi dei carichi Definizione degli indici o ristrutturazione Obbiettivo: massimizzare le prestazioni rispetto alle applicazioni previste Modello Entità-Relazione 9 di 28 Noemi Scarpato Progettazione Applicazioni e Sicurezza Definizione dei processi applicativi Determinazione di (classi di) processi simili Creazione di gruppi di utenti, privilegi e regole di accessibilità Modello Entità-Relazione 10 di 28 Noemi Scarpato Progettazione Concettuale Obiettivi: Quali sono le entità e le relazioni dell’organizzazione? Quali informazioni su queste entità e relazioni dovrebbero essere memorizzate nella base di dati? Quali sono i vincoli di integrità o le business rulesin vigore? Uno