Introduzione al corso. Obiettivo del corso

Documenti analoghi
FONDAMENTI DI INFORMATICA

FONDAMENTI DI INFORMATICA

Corso di Laurea Ingegneria Informatica Laboratorio di Informatica

la traduzione dei programmi ed introduzione a Java

Introduzione alla programmazione. Walter Didimo

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

Informazioni sul corso

Introduzione alla Programmazione. Giselda De Vita

Traduzione e interpretazione

Linguaggi di alto livello, compilatori e interpreti

Domenico Talia. Corso di Laurea in Ingegneria Informatica. Facoltà di Ingegneria A.A UNICAL. D. Talia SISTEMI DISTRIBUITI - UNICAL 1

Università degli Studi di Bologna. Facoltà di Ingegneria CORSO DI INGEGNERIA DEL SOFTWARE. Prof. Evelina Lamma

Le basi del linguaggio Java

Introduzione alla programmazione

Corso di Fondamenti di Informatica Linguaggi di Programmazione

Fondamenti di informatica T-1 (A K) Esercitazione 2: Linguaggio Java, basi e controllo del flusso

Programmazione. Andrea Passerini Informatica. Programmazione

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 07. Oggetti e Java. Marzo Programmazione Java 1

CORSO DI PROGRAMMAZIONE E INFORMATICA GENERALE 1

Linguaggi di alto livello, compilatori e interpreti

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

Ereditarietà e polimorfismo

Corso sul linguaggio Java

Traduzione ed Interpretazione. Queste sconosciute

Programmazione Procedurale in Linguaggio C++

Il linguaggio di programmazione Python

Concetti introduttivi

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

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Linguaggi di programmazione

Traduzione ed Interpretazione

CORSO DI Principi di Sistemi Operativi (1? anno Corso di Laurea Specialistica in Ingegneria Informatica) ANNO ACCADEMICO

Introduzione al corso

Salvatore Cuomo Prolusione

10: I LINGUAGGI di PROGRAMMAZIONE PARTE 1

Corso di Fondamenti di Informatica e Laboratorio T-AB

PROVA FINALE Ingegneria del software

Basi di Dati Ingegneria Informatica e delle Telecomunicazioni

Corso di Fondamenti di Informatica Classi di istruzioni 2

Programmazione C Massimo Callisto De Donato

Il Software programmabili programma algoritmo

Capitolo 1. Introduzione. Cay S. Horstmann Concetti di informatica e fondamenti di Java

Elementi di Informatica

Principi di Progettazione del Software a.a Introduzione al corso Prof. Luca Mainetti Università del Salento

Fondamenti di Informatica T-1

Principi di Progettazione del Software a.a Introduzione al corso Prof. Luca Mainetti Università del Salento

Programmazione I - corso B a.a prof. Viviana Bono

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

Concetti introduttivi

Docente: Prof. Marco Patella Tutor: Stefano Pio Zingaro

Elementi di programmazione

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Istruzioni semplici e strutturate

Prof. Rossella Cancelliere

Linguaggio C: Introduzione ad ambienti di sviluppo integrati (IDE) e a Dev-C++ Università degli Studi di Brescia

Capitolo 19. Ricorsione

Fondamenti di Informatica T1"

Informatica! Appunti dal laboratorio 1!

FONDAMENTI DI INFORMATICA

Corso Programmazione

Introduzione a Ingresso e Uscita. Scrittura di un programma C++ Compilazione Esecuzione

Corso di Fondamenti di Informatica e Laboratorio ato o T-AB

Docente: Prof. Marco Patella Tutor: Vincenzo Lomonaco

Funzioni. Unità 1. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Programmazione Procedurale in Linguaggio C++

INTRODUZIONE ALLA PROGRAMMAZIONE. Cosimo Laneve

LINGUAGGI DI ALTO LIVELLO

24 - Possibili approfondimenti

Corso di Architettura degli Elaboratori

Linguaggi di Programmazione

Elementi di programmazione

Fondamenti di Informatica e Laboratorio T-AB!

Corso: Fondamenti di Informatica (Gruppo 2) a.a Corsi di laurea: Ing. Settore Informazione

Programmazione modulare

Primi passi col linguaggio C

Informatica e Comunicazione Digitale Crediti formativi 9. No, ma la frequenza è fortemente consigliata Lingua di erogazione

Reti Logiche e Architettura dei Calcolatori

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

L organizzazione dei programmi

Introduzione al Linguaggio C ed all IDE DEV-C++

Introduzione all OOP!

Programmazione: Sommario

Ambienti di Sviluppo. Linguaggi compilati

Informatica! Appunti dal laboratorio 1!

Algoritmi e Strutture Dati

Introduzione al corso

Macchina Astratta: struttura e realizzazione.

Elementi di Informatica e Programmazione

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

Fondamenti di Informatica T-1. Introduzione al linguaggio Java Input/output, variabili, tipi

Davide Cervi Classe : 3E I.T.E Agostino Bassi - Lodi

Prof. Pagani corrado JAVA

I Linguaggi di Programmazione

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011. Benvenuti al Corso!

Corso di Laurea Ingegneria Informatica

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

Studente (Cognome Nome):

INSEGNAMENTO DI INGEGNERIA DEL SOFTWARE B (5 CFU) CORSO DI LAUREA SPECIALISTICA IN INGEGNERIA INFORMATICA a.a

Transcript:

Università della Calabria Corso di Laurea in Ingegneria Elettronica Programmazione Orientata agli Oggetti A.A. 2006/2007 Introduzione al corso Paolo Trunfio * * DEIS, Università della Calabria http://si.deis.unical.it/~trunfio Obiettivo del corso Obiettivo del corso è acquisire le conoscenze necessarie per realizzare applicazioni informatiche secondo il paradigma della programmazione orientata agli oggetti, utilizzando il linguaggio C++. Contenuti delle lezioni: Studio delle caratteristiche di base del C++ partendo dalle conoscenze su Java acquisite nel corso di Fondamenti di Informatica. Studio della programmazione orientata agli oggetti e sviluppo di applicazioni basate su tale paradigma, facendo uso dei meccanismi e delle librerie standard di C++. Contenuti delle esercitazioni: Progettazione ed implementazione di applicazioni informatiche basate sui concetti presentati a lezione. Programmazione Orientata agli Oggetti 1.2 Paolo Trunfio DEIS, UNICAL

Docente: Paolo Trunfio DEIS - Cubo 41C, terzo piano Materiale didattico: Informazioni sul corso Lucidi delle lezioni: http://si.deis.unical.it/trunfio/teaching/poo0607/ Lucidi ed altro materiale: http://icampus.ingegneria.unical.it/ Libro di testo: S. B. Lippman, J. Lajoie. C++: Corso di programmazione. Terza Edizione. Addison-Wesley, 2000. 1209 pagine. oppure: H. Schildt. Guida al C++. Terza Edizione. Mc Graw-Hill, 2003. 585 pagine. Programmazione Orientata agli Oggetti 1.3 Paolo Trunfio DEIS, UNICAL Propedeuticità: Calcolo I. Fondamenti di Informatica. Informazioni sull esame Modalità di svolgimento dell esame: Prova scritta obbligatoria. Prova orale facoltativa (obbligatoria nel caso in cui non sia stato conseguito un voto minimo nella prova scritta). Programmazione Orientata agli Oggetti 1.4 Paolo Trunfio DEIS, UNICAL

La programmazione orientata agli oggetti Nella programmazione orientata agli oggetti (POO) un programma è composto da un insieme di entità software, denominate oggetti, che interagiscono secondo determinati schemi. Esempi di linguaggi che supportano la programmazione orientata agli oggetti sono Java e C++. La programmazione orientata agli oggetti differisce dalla cosiddetta programmazione imperativa, basata sul concetto di istruzione: un programma consiste in una sequenza di istruzioni che specificano in modo dettagliato le operazioni che devono essere eseguite dall elaboratore per risolvere il problema dato. Esempi di linguaggi imperativi sono Fortran, Pascal e C. E possibile utilizzare i linguaggi orientati agli oggetti per realizzare programmi prevalentemente imperativi (come nel corso di Fondamenti di Informatica), ma in tal modo non si sfruttano i vantaggi derivanti dall uso dei meccanismi propri della programmazione orientata agli oggetti. Programmazione Orientata agli Oggetti 1.5 Paolo Trunfio DEIS, UNICAL Il linguaggio C++ C++ è un linguaggio di programmazione orientato agli oggetti sviluppato da Bjarne Stroustrup a partire dai primi anni 80. La versione standard di C++ è stata rilasciata nel 1998. C++ è basato sul linguaggio C, dal quale eredita in gran parte la sintassi. La maggior parte del codice C è anche codice C++ valido, ma C non è esattamente un sottoinsieme di C++. Oltre al supporto alla programmazione orientata agli oggetti, C++ fornisce numerose caratteristiche aggiuntive rispetto a C, incluso il meccanismo dei template ed un ampia libreria standard (la codiddetta Standard Template Library o STL). C++ presenta numerose similitudini con il linguaggio Java, del quale può essere considerato un progenitore. Chi conosce Java è in grado di scrivere semplici programmi C++ senza particolari difficoltà. Programmazione Orientata agli Oggetti 1.6 Paolo Trunfio DEIS, UNICAL

Java vs. C++: un esempio import java.util.scanner; public class Fattoriale { Fattoriale.java public static int leggipositivo() { Scanner sc = new Scanner(System.in); int n; do { System.out.print("Inserisci un numero positivo: "); n = sc.nextint(); while (n < 0); return n; public static int fattoriale(int n) { int fatt = 1; for (int k = n; k > 1; k--) fatt *= k; return fatt; public static void main(string[] args) { int a = leggipositivo(); int f = fattoriale(a); System.out.print("Fattoriale di "+a+" = "+f+"\n"); #include <iostream> using namespace std; int leggipositivo() { int n; do { cout << "Inserisci un numero positivo: "; cin >> n; while (n < 0); return n; int fattoriale(int n) { int fatt = 1; for (int k = n; k > 1; k--) fatt *= k; return fatt; Fattoriale.cpp int main() { int a = leggipositivo(); int f = fattoriale(a); cout << "Fattoriale di " << a << " = " << f << "\n"; return 0; Programmazione Orientata agli Oggetti 1.7 Paolo Trunfio DEIS, UNICAL Java vs. C++: compilazione ed esecuzione Java: C++: Fattoriale.java Codice sorgente in Java Fattoriale.cpp Codice sorgente in C++ compilazione Fattoriale.class Bytecode interpretabile da qualsiasi JVM compilazione Fattoriale.exe Codice assembly eseguibile solo su uno specifico processore interpretazione Java Virtual Machine (JVM) esecuzione JVM per una specifica piattaforma hardware/ software esecuzione Macchina reale Macchina reale Nota: le estensioni dei file sorgente e degli eseguibili dipendono dal sistema Programmazione Orientata agli Oggetti 1.8 Paolo Trunfio DEIS, UNICAL

Portabilità: Java vs. C++: portabilità ed efficienza Il programma Java (bytecode) può essere interpretato ed eseguito su qualsiasi macchina che disponga di una Java Virtual Machine. Il programma C++ (eseguibile) può essere eseguito solo sulle macchine con la piattaforma per la quale il programma è stato generato. Per utilizzare il programma C++ su una piattaforma diversa è necessario ricompilarlo per quella piattaforma in modo da generare l eseguibile specifico. Efficienza: I programmi C++ sono tipicamente più veloci di quelli Java, principalmente perchè l eseguibile C++ contiene istruzioni di basso livello (assembly) per uno specifico processore. Il bytecode Java contiene istruzioni di livello intermedio che devono essere interpretate da uno strato software aggiuntivo (la JVM) per poter essere eseguite. Programmazione Orientata agli Oggetti 1.9 Paolo Trunfio DEIS, UNICAL Ambiente di programmazione L ambiente di programmazione utilizzato durante il corso è Bloodshed Dev-C++. La versione 4.9.9.2 di Dev-C++ è installata sui computer del Laboratorio di Informatica. Il file di installazione devcpp-4.9.9.2_setup.exe (circa 9 MB) può essere copiato presso il Laboratorio di Informatica, scaricato dal sito del corso su icampus, oppure scaricato direttamente da Internet. Programmazione Orientata agli Oggetti 1.10 Paolo Trunfio DEIS, UNICAL

Dev-C++: un esempio Supponiamo di voler scrivere ed eseguire il seguente programma utilizzando Dev-C++: hello.cpp #include <iostream> using namespace std; int main () { cout << "Ciao a tutti\n"; system("pause"); return 0; Istruzione facoltativa Con questa istruzione si blocca l esecuzione fino a quando non si preme un tasto Programmazione Orientata agli Oggetti 1.11 Paolo Trunfio DEIS, UNICAL Dev-C++: un esempio Programmazione Orientata agli Oggetti 1.12 Paolo Trunfio DEIS, UNICAL

Dev-C++: editing Programmazione Orientata agli Oggetti 1.13 Paolo Trunfio DEIS, UNICAL Dev-C++: compilazione Programmazione Orientata agli Oggetti 1.14 Paolo Trunfio DEIS, UNICAL

Dev-C++: compilazione Programmazione Orientata agli Oggetti 1.15 Paolo Trunfio DEIS, UNICAL Dev-C++: compilazione Programmazione Orientata agli Oggetti 1.16 Paolo Trunfio DEIS, UNICAL

Dev-C++: esecuzione Programmazione Orientata agli Oggetti 1.17 Paolo Trunfio DEIS, UNICAL Dev-C++: esecuzione Programmazione Orientata agli Oggetti 1.18 Paolo Trunfio DEIS, UNICAL

Dev-C++: esecuzione Il file eseguibile (hello.exe) può essere eseguito anche direttamente: Programmazione Orientata agli Oggetti 1.19 Paolo Trunfio DEIS, UNICAL