Elementi di programmazione Algoritmi Flow Chart, Fasi della programmazione Linguaggi Elementi di programmazione ad oggetti



Documenti analoghi
Fondamenti di Algoritmi

o Introduzione agli algoritmi o Rappresentazione delle Informazioni o Architettura del calcolatore o Reti di Calcolatori

Introduzione alla programmazione

LINGUAGGI DI ALTO LIVELLO. Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware

Linguaggi di alto livello. Barriera di astrazione. Pascal. Cobol. Fortran. Basic. Modula-2. Lisp. Simula67 Scheme. Smalltalk C++ Prolog AN

LINGUAGGI DI ALTO LIVELLO

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

C++ Barriera di astrazione. Barriera di astrazione. Basic. Basic. Lisp. Lisp. Pascal. Prolog. Pascal. Prolog. Cobol. Fortran IMPERATIVI FUNZIONALI

LINGUAGGI DI ALTO LIVELLO

Linguaggi di programmazione

Elementi di programmazione

Il linguaggio di programmazione Python

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE)

Lezione n. 2i Informatica e tecnologia informatica Sistema di elaborazione Algoritmo Linguaggi di programmazione Realizzazione di un programma

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia

DAGLI ALGORITMI AI LINGUAGGI. Linguaggi di Programmazione

Fondamenti di Informatica. Ingegneria elettronica

Linguaggi di alto livello, compilatori e interpreti

FONDAMENTI DI INFORMATICA

Linguaggi di Programmazione

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

Elementi di programmazione

ITI M. FARADAY. Programmazione a. s

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

FONDAMENTI DI INFORMATICA

Linguaggi di programmazione

Introduzione alla programmazione strutturata

PROBLEMI E ALGORITMI

Pag. 1. La formalizzazione dell informazione: Dati e Diagrammi di Flusso. Codifica degli algoritmi

Linguaggi, Traduttori e le Basi della Programmazione

Introduzione alla programmazione. Walter Didimo

ASTRAZIONE ASTRAZIONE

Programmazione. Dipartimento di Matematica. Ing. Cristiano Gregnanin. 29 febbraio Corso di laurea in Matematica

Introduzione - aspetti generali dell informatica

Linguaggi di programmazione

Linguaggi di alto livello, compilatori e interpreti

Cosa è un programma. Informatica di Base -- R.Gaeta 18

La Programmazione. Cos è la programmazione? Concetti preliminari

Lez. 8 La Programmazione. Prof. Pasquale De Michele (Gruppo 2) e Raffaele Farina (Gruppo 1) 1

Primi passi col linguaggio C

ASTRAZIONE. Sono indipendenti dalla macchina hardware sottostante ASTRAZIONE 1

Introduzione. Informatica B. Daniele Loiacono

Programmazione C Massimo Callisto De Donato

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma

Scrivere il software. Scrivere il software. Interprete. Compilatore e linker. Fondamenti di Informatica

Algoritmo. La programmazione. Algoritmo. Programmare. Procedimento di risoluzione di un problema

Algoritmi, linguaggi e programmi. Emilio Di Giacomo e Walter Didimo

Informatica. Dipartimento di Economia. Ing. Cristiano Gregnanin. 20 ottobre Corso di laurea in Economia

Introduzione alla Programmazione. Giselda De Vita

Laboratorio di Informatica. Introduzione

Unità di apprendimento 6. Il software: dal linguaggio alla applicazione

Corso di Fondamenti di Informatica Linguaggi di Programmazione

Esempio. Le istruzioni corrispondono a quelle di sopra, ma sono scritte in modo simbolico. E indipendente dalla machina

Il calcolatore. Architettura di un calcolatore (Hardware)

Linguaggi di Programmazione

La formalizzazione dell informazione: Dati e Diagrammi di Flusso

Le istruzioni corrispondono univocamente a quelle macchina, ma vengono espresse tramite nomi simbolici i (parole chiave)

PROBLEMI ALGORITMI E PROGRAMMAZIONE

Corso di Fondamenti di Informatica Linguaggi di Programmazione

Introduzione al C. InformaticaB. Daniele Loiacono

Algoritmi, linguaggi e programmi. Emilio Di Giacomo e Walter Didimo

Introduzione al Linguaggio C Corso di Informatica Laurea in Fisica

Calcolo numerico e programmazione Programmazione

AXO - Architettura dei Calcolatori e Sistema Operativo. organizzazione strutturata dei calcolatori

Octave. Luca Abeni. Informatica Luca Abeni 1 / 21

I Linguaggi di Programmazione

Informatica 3. Informatica 3. Lezione 1- Modulo 1. LEZIONE 1: Introduzione. Concetti di linguaggi di programmazione. Introduzione

Caratteristiche di un calcolatore elettronico

la traduzione dei programmi ed introduzione a Java

Concetti Introduttivi

Linguaggi di Programmazione

Introduzione agli Algoritmi

Unità di apprendimento 6. Dal problema al programma

Corso di Informatica. Problemi ed algoritmi. Ing Pasquale Rota

Informatica 3. LEZIONE 1: Introduzione. Modulo 1: Introduzione al corso Modulo 2: Introduzione ai linguaggi di programmazione

Introduzione all OOP!

La Programmazione. Cos è la programmazione? Concetti preliminari. Programmazione e Laboratorio di Programmazione Luca Tesei 1

Introduzione a Java. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni

Sommario. La Programmazione. Programmare vs Usare un computer. Programmare vs Usare un computer. Programmi ognidove. Programmi ognidove

Macchine astratte, linguaggi, interpretazione, compilazione

Le basi del linguaggio Java

La Programmazione. Programmare Macchine Astratte Compilazione / Interpretazione Java. Laboratorio di Programmazione - Luca Tesei

Macchine astratte, linguaggi, interpretazione, compilazione

Introduzione ai Calcolatori Elettronici

Concetti di Base sulla Programmazione. Prof.Ing.S.Cavalieri

Il Software programmabili programma algoritmo

Macchine astratte, linguaggi, interpretazione, compilazione

3. Programmi e algoritmi

Unità di apprendimento 6. Dal problema al programma

Non a caso viene definito linguaggio macchina. di Cassino. C. De Stefano Corso di Fondamenti di Informatica Università degli Studi

Transcript:

Elementi di programmazione Algoritmi Flow Chart, Fasi della programmazione Linguaggi Elementi di programmazione ad oggetti ELEMENTI DI INFORMATICA UFC_05 1

Algoritmi Un algoritmo è una serie finita di operazioni elementari che porta alla risoluzione in un tempo finito una classe di problemi. Eseguibilità: ogni azione deve essere eseguibile da parte dell esecutore dell algoritmo in un tempo finito Non-ambiguità: ogni azione deve essere univocamente interpretabile dall'esecutore Finitezza: il numero totale di azioni da eseguire, per ogni insieme di dati di ingresso, deve essere finito. ELEMENTI DI INFORMATICA UFC_05 2

Algoritmi e programmi Algoritmo Sequenza finita di passi che risolve in tempo finito un problema. Codifica Fase di scrittura di un algoritmo in un qualche linguaggio di programmazione, che specificano le azioni da compiere. Programma Testo scritto in accordo con la sintassi e la semantica di un linguaggio di programmazione. ALGORITMO PROBLEMA PROGRAMMA ELEMENTI DI INFORMATICA UFC_05 3

Diagrammi di flusso (Flow Chart) Per descrivere un algoritmo è possibile ricorrere a uno schema grafico che fa uso dei seguenti simboli ISTRUZIONE: DEFINISCE UNA ISTRUZIONE ESEGUIBILE INPUT/OUTPUT: INDICA UNA OPERAZIONE DI IMMISSIONE (INPUT) O DI COMUNICAZIONE ALL ESTERNO (OUTPUT) DI DATI DECISIONE: TEST LOGICO CHE PUO ESSERE VERO O FALSO IN CUI SI DECIDE COME PROSEGUIRE NEL PERCORSO DEL FC START/STOP: INDICA IL PUNTO DI INIZIO O FINE DELL ALGORITMO SOTTOPROGRAMMA: USATO PER LA CHIAMATA A UN SOTTOPROGRAMMA (SUBROUTINE) CON PASSAGGIO DI PARAMETRI. HA SOLO UNA FRECCIA IN USCITA ELEMENTI DI INFORMATICA UFC_05 4

Un esempio: calcolo della media di numeri inseriti da tastiera start Totale=0 NumeroVoti=0 Leggi un voto Totale=Totale+Voto NumeroVoti= NumeroVoti+1 NO Voti finiti? SI Media=Totale/ NumeroVoti Stampa la media stop ELEMENTI DI INFORMATICA UFC_05 5

Strutture di controllo SEQUENZA SELEZIONE ISTRUZIONE1 TEST FALSO TEST FALSO VERO VERO ISTRUZIONE2 ISTRUZIONI ISTRUZIONI 1 ISTRUZIONI 2 ISTRUZIONE N if(test) { istruzioni } if(test) { istruzioni 1} else { istruzioni 2} ELEMENTI DI INFORMATICA UFC_05 6

Strutture di controllo ITERAZIONE (CICLO FOR) INIZIALIZZAZIONE CONTATORE TEST VERO ISTRUZIONI FALSO for(init,test,update) { istruzioni } ITERAZIONE (CICLO WHILE) TEST ISTRUZIONI AGGIORNAMENTO CONTATORE while(test) { istruzioni } ELEMENTI DI INFORMATICA UFC_05 7

Esercizio Problema: dato un numero intero x (input) determinare la prima potenza del 2 maggiore di x. In pratica comunicare (output) l esponente n tale che 2 n > x ELEMENTI DI INFORMATICA UFC_05 8

Il linguaggio del calcolatore Il calcolatore esegue programmi scritti in un opportuno linguaggio: il linguaggio macchina Tale linguaggio differisce nei suoi dettagli da calcolatore a calcolatore Da processore a processore ELEMENTI DI INFORMATICA UFC_05 9

Le istruzioni macchina Un programma scritto in linguaggio macchina è formato da una sequenza di istruzioni appartenenti al set di istruzioni del particolare processore Ogni istruzione è formata da: Un codice operativo Zero o più operandi codice operativo operando(i) Tanto il codice operativo quanto gli operandi sono rappresentati nella memoria del calcolatore sotto forma di numeri binari Data la difficoltà per l uomo di interpretare numeri binari si usa l assembler al posto del linguaggio macchina ELEMENTI DI INFORMATICA UFC_05 10

I programmi Un programma consiste di due parti La parte istruzioni contenente il codice del programma La parte dati costituita dalle celle di memoria destinate a contenere i dati sui quali il programma opera Il processore esegue un programma dalla prima istruzione fino all istruzione halt ELEMENTI DI INFORMATICA UFC_05 11

Programma assembly e rappresentazione in memoria 0 1 2 3 4 5 LOAD 4, R1 LOAD 5, R2 SUB R1, R2 STORE R1, 7 50 40 istruzioni dati ELEMENTI DI INFORMATICA UFC_05 12

Il linguaggio Assembly La programmazione in linguaggio macchina è troppo complessa e noiosa per i programmatori Al posto delle sequenze di numeri, è più comodo usare delle abbreviazioni simili all inglese per rappresentare le operazioni elementari: Nasce il linguaggio Assembly È necessario un programma (assembler) che traduca in linguaggio macchina i programmi scritti in linguaggio assembly ELEMENTI DI INFORMATICA UFC_05 13

Programmi vs. processi Un programma è un entità statica Descrive semplicemente un algoritmo Con il termine processo si indica un programma in esecuzione Caratterizzato dal codice in esecuzione e da uno stato Esso è quindi un'entità dinamica, che dipende dai dati che vengono elaborati, e dalle operazioni eseguite su di essi ELEMENTI DI INFORMATICA UFC_05 14

I linguaggi di alto livello La programmazione in linguaggio macchina è improponibile per programmi di una certa complessità...... e l assembly oltre un certo limite non aiuta I linguaggi di alto livello facilitano la programmazione dei calcolatori Alto livello = Vicino al programmatore Ovviamente è necessario un programma (compilatore) che converta il programma scritto nel linguaggio di alto livello in linguaggio macchina ELEMENTI DI INFORMATICA UFC_05 15

Fasi della programmazione La preparazione di un programma scritto in un linguaggio ad alto livello, passa tra diverse fasi: editazione compilazione linking (collegamento) caricamento esecuzione ELEMENTI DI INFORMATICA UFC_05 16

Editazione Consiste nella scrittura del codice (testo del programma) in un file Si esegue tramite un programma chiamato editor o Ambiente di sviluppo Genera il programma sorgente ELEMENTI DI INFORMATICA UFC_05 17

Compilazione Il codice sorgente viene passato al compilatore che si occuperà di tradurre il programma nel codice in linguaggio macchina Genera il programma oggetto ELEMENTI DI INFORMATICA UFC_05 18

Linking (collegamento) I programmi scritti in linguaggio ad alto livello, contengono dei riferimenti a funzioni definite altrove Nelle librerie del linguaggio e/o del sistema operativo Il codice oggetto prodotto dal compilatore conterrà dei buchi (riferimenti alle funzioni di libreria) Il linker si occupa di collegare il codice oggetto con quello delle funzioni mancanti Genera il programma eseguibile ELEMENTI DI INFORMATICA UFC_05 19

Caricamento/Esecuzione Fase di caricamento Prima che possa essere eseguito, un programma dovrà essere caricato in memoria Il programma loader (parte del sistema operativo) si occupa di questa operazione Fase di esecuzione Il computer esegue il programma, una istruzione per volta ELEMENTI DI INFORMATICA UFC_05 20

Fasi della programmazione Librerie Programmatore (Programma sorgente) Compilatore (Programma Oggetto) Linker (Programma eseguibile) Caricamento/Esecuzi one ELEMENTI DI INFORMATICA UFC_05 21

L esercizio (frammento) in C void main () { int x, y, n; do { printf( Introdurre un intero positivo\n ); scanf( %d, &x);} while (x<0); n=0; y=1; while (y<x) { y=y*2; n=n+1;} printf( %d minore o uguale2 ^ %d\n, x, n); return 0; }printf("ecco il risultato %d", totale); ELEMENTI DI INFORMATICA UFC_05 22

Linguaggi compilati e interpretati Il calcolatore capisce solo il linguaggio macchina I programmi scritti in linguaggi di alto livello devono essere tradotti in linguaggio macchina prima di essere eseguiti Di ciò si occupa il compilatore In alternativa alcuni linguaggi di alto livello hanno associato un interprete Si tratta di un programma capace di capire quel particolare linguaggio e di eseguirne i programmi Un istruzione per volta ELEMENTI DI INFORMATICA UFC_05 23

Paradigmi di programmazione Imperativo un programma è composto di istruzioni che specificano operazioni (comandi) da eseguire; Funzionale un programma è la specifica di una funzione (che a sua volta può contenere la specifica di altre funzioni) Logico / Dichiarativo un programma è la descrizione delle proprietà dei risultati del programma, basata sulla logica matematica; Strutturato Parte dalla critica nei confronti della programmazione che fa uso del salto incondizionato e afferma che qualsiasi programma scritto usando il goto può essere riscritto senza, a patto di avere a disposizione tre tipi di strutture di controllo: sequenza, ripetizione e alternativa. Orientato agli oggetti Un programma è la specifica di un insieme di classi di oggetti, ognuna definita per mezzo di struttura e operazioni ELEMENTI DI INFORMATICA UFC_05 24

Linguaggi Imperativi Caratteristiche: di utilizzo più semplice indipendenti dall'elaboratore i programmi sono una sequenza di istruzioni; l'evoluzione del calcolo è costituita da una variazione dello stato della memoria Eseguono 3 tipi di operazioni: trasferimento dati operazioni aritmetiche alterazione del flusso del programmi Tra i linguaggi imperativi ricordiamo il Basic, Fortran, Cobol ELEMENTI DI INFORMATICA UFC_05 25

Linguaggi Funzionali il flusso di esecuzione del programma assume la forma di una serie di valutazioni di funzioni matematiche. Solitamente questo approccio viene usato maggiormente in ambiti accademici piuttosto che industriali Il primo linguaggio funzionale: Lisp (List Processing), fine anni '50 Altri linguaggi conosciuti sono: scheme, logo Differenze con i linguaggi imperativi: il calcolo è basato sul calcolo di valori e non sull'assegnamento di valori a variabili basato su valori e non su effetti il risultato è il risultato di una funzione, non l'effetto causato dalla esecuzione di una sequenza di operazioni ELEMENTI DI INFORMATICA UFC_05 26

Linguaggi logico/dichiarativi Basati sulla logica obiettivo: formalizzare il ragionamento caratterizzati da meccanismi deduttivi Programmare significa: descrivere il problema con formule del linguaggio interrogare il sistema, che effettua deduzioni sulla base delle definizioni Tra i linguaggi logico/dichiarativi ricordiamo il ProLog ELEMENTI DI INFORMATICA UFC_05 27

Linguaggi strutturati Le strutture di controllo ammesse dai linguaggi strutturati, e le regole sintattiche e semantiche del loro uso, possono variare nei dettagli specifici; tuttavia, devono essere rispettati un insieme di requisiti fondamentali: completezza. Un linguaggio strutturato deve fornire la sequenza, almeno una struttura di tipo alternativa, e almeno una struttura di tipo iterativa; singolo punto di ingresso e di uscita. Idealmente, ogni struttura di controllo, completa delle istruzioni controllate, deve poter essere considerata come una singola macro-istruzione dal punto di vista del controllo complessivo, con un ben identificato punto di ingresso e un ben identificato punto di uscita. componibilità. Ogni struttura di controllo può avere fra le sue istruzioni controllate, ricorsivamente, altre strutture di controllo (senza limiti). ELEMENTI DI INFORMATICA UFC_05 28

Linguaggi orientati agli oggetti Sono basati sul concetto di oggetto software Un oggetto software rappresenta un oggetto del mondo reale un numero, un archivio, un testo, una matrice, una persona... I dati sono rappresentati come oggetti Le azioni da compiere come operazioni da effettuare sugli oggetti. Di solito sono realizzati come estensione dei linguaggi imperativi. Un programma modella un problema reale come una collezione di oggetti software che interagiscono. Tra i più famosi ricordiamo Java, C++, Python,.NET, php ELEMENTI DI INFORMATICA UFC_05 29

Programmazione orientata agli oggetti Un linguaggio di programmazione è definito ad oggetti quando permette di implementare tre meccanismi usando la sintassi nativa del linguaggio: Incapsulamento consiste nella separazione della cosiddetta interfaccia di una classe dalla corrispondente implementazione, in modo che i client di un oggetto di quella classe possano utilizzare la prima, ma non la seconda Ereditarietà L'ereditarietà permette essenzialmente di definire delle classi a partire da altre già definite. Polimorfismo permette di scrivere un client che può servirsi di oggetti di classi diverse, ma dotati di una stessa interfaccia comune; a tempo di esecuzione, quel client attiverà comportamenti diversi senza conoscere a priori il tipo specifico dell'oggetto che gli viene passato. ELEMENTI DI INFORMATICA UFC_05 30

Oggetti Per capire cos è un oggetto prendiamo spunto dalla vita reale: un oggetto può essere un automobile, un computer, una casa, Un oggetto può essere definito elencando sia le sue caratteristiche sia i suoi comportamenti, cioè le funzioni che mette a disposizione Elencando le caratteristiche e i comportamenti, diamo una definizione generica Un oggetto però è un entità particolare, con le sue caratteristiche specifiche. ELEMENTI DI INFORMATICA UFC_05 31

Oggetti:un esempio Consideriamo ad esempio un oggetto automobile con gli attributi: Colore Posizione (immaginando l auto sul piano debbiamo fornire le coordinate x e y) Velocità Quindi l oggetto auto1 potrà essere così descritto: Colore = rosso PosizioneX=50 Velocità=10 PosizioneY=60 60 50 10 ELEMENTI DI INFORMATICA UFC_05 32

Oggetti:un esempio Lo stesso modo possiamo creare un altro oggetto dello stesso tipo cambindo gli attributi Per esempio l oggetto auto2 potrà essere così descritto: Colore = blu PosizioneX=50 PosizioneY=10 Velocità=5 50 60 10 60 5 10 ELEMENTI DI INFORMATICA UFC_05 33

Attributi e metodi Nella terminologia OOP le caratteristiche di un oggetto vengono chiamate attributi, i comportamenti vengono chiamati metodi I metodi sono le operazioni che un oggetto è in grado di compiere Un oggetto è quindi formato da attributi e metodi ELEMENTI DI INFORMATICA UFC_05 34

Classi Quindi gli oggetti sono diversi a seconda del valore assunto dalle loro caratteristiche, ma condividono la stessa struttura Questa struttura si chiama Classe Un oggetto è una istanza di una classe. Esso è dotato di tutti gli attributi e i metodi definiti dalla classe. ELEMENTI DI INFORMATICA UFC_05 35

Classi La struttura di una classe è la seguente: <nome classe> <attributo1> <attributo2> <metodo1> <metodo2> Diagramma delle classi ELEMENTI DI INFORMATICA UFC_05 36

Costruttori e distruttori Dal punto di vista del calcolatore, ogni oggetto è identificato da una certa zona di memoria, nella quale sono memorizzati gli attributi, e il valore di questi ultimi determina lo stato interno dell'oggetto. Istanziare un oggetto vuol dire allocare memoria ed eventualmente inizializzarla secondo le specifiche definite dalla classe. Molti linguaggi forniscono un supporto per l'inizializzazione automatica di un oggetto, con uno o più metodi speciali, detti costruttori. Analogamente, la fine della vita di un oggetto può essere gestita con un metodo detto distruttore. ELEMENTI DI INFORMATICA UFC_05 37

Processing Processing è un linguaggio di programmazione basato su Java, che consente di sviluppare diverse applicazioni come giochi, animazioni e contenuti interattivi. Da Java eredita completamente la sintassi, i comandi e il paradigma di programmazione orientata agli oggetti, ma in più mette a disposizione numerose funzioni ad alto livello per gestire facilmente l'aspetto grafico e multimediale. È distribuito sotto licenza Open Source, ed è supportato dai sistemi operativi GNU/Linux, Mac OS X e Windows. Processing può interagire con la scheda hardware Arduino. ELEMENTI DI INFORMATICA UFC_05 38

L esempio in processing ELEMENTI DI INFORMATICA UFC_05 39

Car mycar1; Car mycar2; // Two objects! void setup() { size(200,200); // Parameters go inside the parentheses when the object is constructed. mycar1 = n TECNICO SUPERIORE PER L AUTOMAZIONE INDUSTRIALE L esempio in processing Car mycar1; Car mycar2; // Definiti 2 oggetti di classe Car void setup() { size(200,200); mycar1 = new Car(color(255,0,0),0,100,2); mycar2 = new Car(color(0,0,255),0,10,1); } void draw() { background(255); mycar1.drive(); mycar1.display(); mycar2.drive(); mycar2.display(); } class Car { color c; float xpos; float ypos; float xspeed; // Il costruttore è definito con gli argomenti. Car(color tempc, float tempxpos, float tempypos, float tempxspeed) { c = tempc; xpos = tempxpos; ypos = tempypos; xspeed = tempxspeed; } void display() { stroke(0); fill(c); rectmode(center); rect(xpos,ypos,20,10); } void drive() { xpos = xpos + xspeed; if (xpos > width) { xpos = 0; } } } ELEMENTI DI INFORMATICA UFC_05 40

Fonti Wikipedia Informatica Arena, Borchia, Bruno, Messina Petrini ed. Il Sistema Operativo. Rappresentazione dell Informazione. Cenni di Programmazione Politecnico di Milano Prof. Gianluca Palermo Introduzione alla programmazione ad oggetti. Prof.ssa Samantha D antico Processing.org ELEMENTI DI INFORMATICA UFC_05 41