Introduzione alla programmazione PROGRAMMAZIONE
|
|
- Alessia Serafini
- 7 anni fa
- Visualizzazioni
Transcript
1 Introduzione alla programmazione PROGRAMMAZIONE 1
2 Introduzione alla programmazione Definizione Un algoritmo è una collezione ordinata di operazioni non ambigue e computabili che, una volta eseguite, producono un risultato e terminano in un tempo finito (An algorithm is a well-ordered collection of unambiguous and effectively computable operations that when executed produces a result and halts in a finite amount of time [Schneider and Gersting 1995].) Un algoritmo è una procedura passo passo con una rappresentazione finita destinata a produrre un certo risultato a partire da un dato input (eventualmente vuoto) 2
3 Introduzione alla programmazione Definizione Un programma per computer è la traduzione di un algoritmo nell'insieme delle istruzioni in linguaggio macchina che il computer è in grado di eseguire Osservazione Un calcolatore è in grado di eseguire solo istruzioni comprese nel linguaggio macchina della cpu che lo equipaggia 3
4 Introduzione alla programmazione Programmare significa: Identificare il problema da risolvere Definire un algoritmo A che risolva il problema Tradurre l'algoritmo in un testo scritto in una notazione particolare detta 'linguaggio di programmazione' producendo un programma P Partendo da P si dovrà arrivare ad una versione in linguaggio macchina eseguibile 4
5 Linguaggi di programmazione La modalità di passaggio dalla notazione del linguaggio di programmazione al linguaggio macchina sono di base due: - Compilazione - Interpretazione 5
6 Linguaggi di programmazione In linea generale qualsiasi linguaggio potrebbe essere oggetto di compilazione o interpretazione. Nondimeno ogni linguaggio è legato ad una delle due modalità di traduzione in linguaggio macchina e per questo motivo di parla di: linguaggi compilati linguaggi interpretati 6
7 Linguaggi di programmazione compilati In questo caso esiste un programma detto 'compilatore' in grado di effettuare la traduzione dalla notazione propria del linguaggio di programmazione ad una versione in linguaggio macchina specifico per la cpu disponibile (e al sistema operativo utilizzato). La traduzione in linguaggio macchina sarà oggetto di successiva esecuzione. 7
8 Linguaggi di programmazione compilati La compilazione non è un processo semplice e passa attraverso due passi fondamentali: Compilazione vera e propria nella quale il nostro pezzo di programma (potrebbe essercene più d'uno) viene tradotto in linguaggio macchina passando spesso per una versione assembler Unione (link) dei segmenti di codice macchina prodotti alle librerie standard di collegamento al kernel e al sistema operativo e ad eventuali altre librerie richieste dall'utente 8
9 Linguaggi di programmazione compilati hello.c #include <stdio.h> int main(int argc, char *argv[]) { printf( Hello World!\n ); } COMPILAZIONE hello.o LINK hello INPUT OUTPUT hello.o 9
10 Linguaggi di programmazione compilati Per i programmi più semplici, scritti in una manciata di file di testo, il compilatore può occuparsi facilmente di compilazione e link in un solo passaggio, in caso di programmi più voluminosi è meglio spezzare in due il processo. La compilazione e` un'attivita` pesante, la compilazione di una parte consistente di un sistema operativo puo` durare ore. 10
11 Linguaggi di programmazione compilati Le limitazioni dei compilatori (macchinosità del processo, pesantezza computazionale) sono compensate da un grande vantaggio, il codice macchina prodotto viene eseguito più velocemente di qualsiasi altro prodotto in modo alternativo. La tecnologia dei compilatori ha anche superato la capacità di un essere umano di produrre programmi efficienti programmando direttamente in assembler. 11
12 Linguaggi di programmazione interpretati L'esecuzione di un programma scritto in un linguaggio interpretato è assicurata da un 'interprete', un programma che deve essere già presente nel sistema operativo. Un interprete, come un compilatore, accetta in input un file di testo che contiene il programma ma passa direttamente all'esecuzione senza produrre un file di output in linguaggio macchina. 12
13 Linguaggi di programmazione interpretati Un interprete esegue un programma isolando, all'interno del file di testo che ne contiene la descrizione, i comandi che descrivono l'algoritmo, isolandone uno, eseguendolo e passando al successivo. Un linguaggio interpretato opera appoggiandosi al linguaggio macchina che costituisce l'interprete stesso, senza produrne di nuovo. 13
14 Linguaggi di programmazione interpretati Il funzionamento di un interprete è molto più lento del corrispondente linguaggio compilato, anche di 100/1000 volte. Il grande vantaggio degli interpreti è la flessibilità. Un programma può essere mandato in esecuzione su qualsiasi architettura hardware/software sulla quale sia presente l'interprete appropriato e questo senza passare attraverso fasi di traduzione. Basta avere una copia del file di testo che contiene il programma 14
15 Linguaggi di programmazione interpretati La classificazione tra linguaggi interpretati e compilati non è così rigida. Esistono diverse tecniche che permettono di velocizzare l'esecuzione di un interprete, normalmente al costo di una piccola perdita di flessibilità. 15
16 Linguaggi di programmazione Tra i principali linguaggi compilati: Assembler: microprogrammazione C: programmazione di sistema Fortran: programmazione scientifica, C++: programmazione di applicazioni per l'utenza finale 16
17 Linguaggi di programmazione Tra i linguaggi interpretati possiamo annoverare: Perl: gestione di sistema e di grandi quantita` di testo scritto, ambienti web Python: scientifico, ambienti grafici, gestione di sistema Cobol: business Java: applicativo, grandi progetti Php: siti web 17
18 Linguaggi di programmazione interpretati Molti linguaggi interpretati attuano una strategia molto semplice per ovviare alla mancanza di velocità: quando un'operazione è costosa in termini di tempo si crea una nuova funzionalità dell'interprete che richiama un frammento precompilato di codice macchina che possa eseguire velocemente l'operazione desiderata. I frammenti sono poi organizzati in 'librerie' di 'funzioni' da utilizzare al bisogno. 18
19 Linguaggi di programmazione interpretati Esempio Si consideri il seguente frammento di programma: N = <un numero intero> F = ComputaFattoriPrimi(N) Visto che il calcolo dei fattori primi di un numero e` un'operazione molto pesante potremmo svilupparne una versione in C, compilarla e renderla disponibile per l'interprete 19
20 Linguaggi di programmazione interpretati L'interprete, che naturalmente è un programma precompilato, viene arricchito con nuove funzioni pre-compilate. La notazione del linguaggio interpretato deve naturalmente fornire la possibilità di richiamare le funzioni pre-compilate in modo semplice. In questo senso il Python è un esempio di chiarezza pulizia concettuale. Altri due linguaggi che seguono questo schema sono Perl e PHP. 20
21 Linguaggi di programmazione interpretati Il costo di questa soluzione è naturalmente rappresentato dalla necessità di associare all'interprete una lunga lista di librerie precompilate che funzionano solo su una particolare architettura hardware/software. 21
22 Linguaggi di programmazione interpretati #!/usr/bin/python print "hello world" INTERPRETE (PYTHON) OUTPUT INPUT 22
23 Linguaggi di programmazione interpretati E` possibile una strategia mista tra compilazione e interpretazione e l'esempio principale e` il linguaggio Java. Un programma Java deve essere compilato per l'esecuzione sulla Java Virtual Machine, che altro non e` che un interprete di bytecode. Il bytecode e` un linguaggio estremamente semplice (paragonabile all'assembler) e questo fa della JVM un interprete veloce. 23
24 Assembler L'assembler è un ausilio mnemonico per evitare di scrivere direttamente in linguaggio macchina, è il linguaggio di livello immediatamente superiore al linguaggio macchina che è il solo che la CPU intende. L'assembler è specifico per ogni CPU mappandosi le sue istruzioni negli elementi operazionali di base che la CPU fornisce.
25 Simulazione di una CPU minima Definiamo un insieme minimale di istruzioni Ogni istruzione sarà memorizzata in una cella di memoria standard da 32bit La CPU è simulata attraverso un serie di macro in linguaggio C e quindi useremo un compilatore C per arrivare all'esecuzione del programma Vedremo la rappresentazione in linguaggio macchina delle istruzioni e la loro versione in assembler.
26 La CPU simulata RAM CPU R0 DATI ALU R1 : R7 B U S C1 Cn IR PC RC La ALU riconosce la prossima istruzione e chiama il Cx dedicato Programma (in linguaggio macchina)
27 Istruzioni macchina Definiamo tre tipi di istruzioni macchina Trasferimento di dati tra la RAM e i registri della CPU: carica dalla RAM nel registro e viceversa Aritmetiche: somma, sottrazione, moltiplicazione e divisione Controllo: confronto tra valori, salto condizionato in un punto del programma, fine programma.
28 Flusso del programma Le istruzioni vengono eseguite nell'ordine nelle quali sono memorizzate nella RAM. Il terzo gruppo di istruzioni (confronto tra valori e salto) permette di modificare il flusso di esecuzione e scegliere di volta in volta le istruzioni desiderate.
29 Creazione del programma Per creare il nostro programma assembler dovremo scrivere un file di testo. Il testo dovrà rappresentare le istruzioni desiderate (cioè la semantica del nostro programma) usando una specifica sintassi. Queste istruzioni saranno poi tradotte nella sintassi del linguaggio macchina dal programma compilatore del linguaggio.
30 Istruzioni di trasferimento 1/2 LAYOUT 8 bit 4 bit 20 bit CODICE-OPER. N REG. INDIRIZZO DI RAM 32 bit LOAD(REGISTRO, INDIRIZZO RAM); SINTASSI SEMANTICA Carica il valore che recupera all'indirizzo di ram dato nel registro indicato CODICE MACCHINA:
31 Istruzioni di trasferimento 2/2 LAYOUT 8 bit 4 bit 20 bit CODICE-OPER. N REG. INDIRIZZO DI RAM 32 bit STORE(REGISTRO, INDIRIZZO RAM); SINTASSI SEMANTICA Carica il valore presente nel registro dato nell'indirizzo di RAM indicato CODICE MACCHINA:
32 Istruzioni aritmetiche 1/2 Eseguono somma, sottrazione, moltiplicazione e divisione usando i registri come operandi. Restituiscono il risultato nel primo dei due registri forniti. SEMANTICA LAYOUT 8 bit 4 bit 4 bit 16 bit CODICE-OPER. N REG. N REG. INUTILIZZATI 32 bit INTADD(REGISTRO,REGISTRO); FLOATDIV(REGISTRO,REGISTRO); SINTASSI
33 Istruzioni aritmetiche 2/2 INTADD FLOATADD INTSUB FLOATSUB INTMULT FLOATMULT INTDIV FLOATDIV CODICI CODICE MACCHINA: SOMMA IL CONTENUTO DEL REGISTRO R1 E R2 (CHE DEVONO CONTENERE VALORI INTERI) E RITORNA IL RISULTATO IN R
34 Istruzioni di confronto 1/2 Confrontano il contenuto di due registri R i e R j e: Se R i < R j mette '-1' nel registro RC Se R i = R j mette '0' nel registro RC Se R i > R j mette '1' nel registro RC SEMANTICA LAYOUT 8 bit 4 bit 4 bit 16 bit CODICE-OPER. N REG. N REG. INUTILIZZATI 32 bit
35 Istruzioni di confronto 2/2 INTCOMPARE FLOATCOMPARE CODICI INTCOMPARE(REGISTRO,REGISTRO); FLOATCOMPARE(REGISTRO,REGISTRO); SINTASSI CODICE MACCHINA: CONFRONTA IL CONTENUTO DEL REGISTRO R1 E R2 (CHE DEVONO CONTENERE VALORI INTERI) E RITORNA IL RISULTATO IN RC
36 Istruzioni di controllo del flusso 1/2 Permettono di saltare ad un'istruzione arbitraria e di continuare da quella istruzione l'esecuzione. Il tutto a seconda del contenuto del registro RC e quindi sulla base dell'ultima istruzione di confronto eseguita. BRLT BRNE BRLE BRGE BREQ BRGT CODICI BRANCH CODICE MACCHINA:
37 Istruzioni di controllo del flusso 2/2 LAYOUT 8 bit 4 bit 20 bit CODICE-OPER. n.a. INDIRIZZO DI RAM 32 bit SEMANTICA BRLT A: BRLE A: BREQ A: BRGT A: BRGE A: se RC=-1 pone PC=A altrimenti PC=PC+1 se RC<1 pone PC=A altrimenti PC=PC+1 se RC=0 pone PC=A altrimenti PC=PC+1 se RC=1 pone PC=A altrimenti PC=PC+1 se RC>-1 pone PC=A altrimenti PC=PC+1 BRANCH A: pone PC=A BRLT(etichetta); SINTASSI
38 Istruzione di fine programma 1/1 SEMANTICA L'istruzione termina il programma STOP; SINTASSI LAYOUT 8 bit 24 bit CODICE-OPER. n. a. 32 bit STOP CODICE
39 Esempio di linguaggio macchina Vediamo un programma in linguaggio macchina che: trasferisce il contenuto delle 2 parole della RAM di indirizzi 64 e 68 nei registri R0 ed R1. somma i contenuti dei registri R0 ed R1. trasferisce il risultato nella parola della RAM all indirizzo 60.
40 Rappresentazione in RAM RAM RAM xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx 38 8 xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx DATI xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx Copia 64 in R0 Copia 68 in R1 Somma R0 e R1 Copia R0 in 60 xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx PROGRAMMA xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx
41 Limiti del linguaggio macchina I programmi in linguaggio macchina sono difficili da capire, scrivere e modificare Il programmatore si deve occupare dei dettagli particolari del computer che sta usando, ad esempio deve posizionare le singole zone di memoria che contengono i valori in uso. L'assembler è una prima soluzione a questi problemi.
42 Vantaggi dell'assembler Al posto dei codici macchina ci sono LOAD, INTADD, FLOATCOMPARE, etc. Al posto degli indirizzi di RAM per i dati del programma useremo dei nomi. Al posto degli indirizzi di RAM useremo dei nomi per rappresentare anche le posizioni di interesse all'interno del programma. Questo semplifica la rappresentazione dei cambi di flusso del programma. Si distingue tra tipi di dati: interi e virgola mobile.
43 Riassunto delle parole chiave Trasferimento: LOAD, STORE. Aritmetiche: INTADD, INTSUB, INTMULT, INTDIV, FLOATADD, FLOATSUB, FLOATMULT, FLOATDIV. Test: INTCOMPARE, FLOATCOMPARE. Salto: BRLT, BRLE, BREQ, BRGE, BRGT, BRANCH. Terminazione: STOP. Inizio/Fine del testo del programma: BEGIN, END
44 Versione assembler BEGIN; INT Z; INT X = 38; INT Y = -1; LOAD(R0,X); LOAD(R1,Y); INTADD(R0,R1); STORE(R0,Z); END; INIZIO TESTO DEL PROGRAMMA DICHIARAZIONI DEGLI IDENTIFICATORI DEI DATI ISTRUZIONI SUI DATI FINE TESTO DEL PROGRAMMA
45 Osservazioni Il programma è più leggibile. Il programma non è direttamente eseguibile dalla CPU. La CPU è in grado di eseguire solo il linguaggio macchina, quindi serve una traduzione prima dell'esecuzione.
46 Esempio Vediamo un altro esempio che fa uso delle istruzioni di controllo del flusso. Il nostro programma dovrà: caricare due valori dalla RAM, sommarli e mettere il risultato in RAM al posto del maggiore dei due, se sono uguali non importa dove metto il risultato.
47 maggiore.c BEGIN; INT X=38; INT Y=9; LOAD(R0,X); LOAD(R1,Y); LOAD(R2,X); INTADD(R2,R1); INTCOMPARE(R0,R1); BRGE(maggiore); STORE(R2,Y); STOP; maggiore: STORE(R2,X); STOP; END; RISULTATO IN Y DICHIARAZIONE E INIZIALIZZAZIONE VARIABILI IN RAM CARICAMENTO NEI REGISTRI SOMMA R0 R1? STOP RISULTATO IN X
48 Esempio Vediamo un altro esempio che utilizza le funzioni di controllo di flusso per realizzare un ciclo. Il programma calcola la potenza di un numero dato X all'intero dato N e mette il risultato nella variabile 'POW'
49 FLOAT X=1.7; INT N=4; FLOAT POW; INT Uno=1; INT Zero=0; FLOAT Unofl=1.0; LOAD(R0, Zero); LOAD(R1, Uno); LOAD(R2, X); LOAD(R3, N); LOAD(R4, Unofl); potenza.c NO DICHIARAZIONI INIZIALIZZAZIONI & INIZIALIZZAZIONI CARICO I VALORI NEI REGISTRI TEST: R0 = R3? SI Ciclo: INTCOMPARE(R3, R0); BREQ(Esci); FLOATMULT(R4, R2); INTSUB(R3,R1); BRANCH(Ciclo); Esci: STORE(R4,POW); FLOATVIEW(POW); STOP; MOLTIPLICA R4 * R2 E RISULTATO R4 SOTTRAI R3 - R1 E RISULTATO R3 COPIA R4 IN 'POW' STAMPA 'POW' FINE
50 Il linguaggio C Il linguaggio C è il principale strumento per la programmazione dei sistemi operativi e, ormai, il linguaggio compilato per antonomasia. Altri linguaggi per essere compilati vengono prima tradotti in C e poi compilati con il compilatore di questo linguaggio (ad esempio il Fortran). 50
51 Il linguaggio C Questo è un esempio di programma C. #include <stdio.h> int main(int argc, char *argv) { printf( Hello World\n ); } 51
52 Il linguaggio C cosa si nota: 1) #include -> inclusione di una libreria esterna (le definizioni); 2) main() -> il nome convenzionale per indicare il punto di inizio delle istruzioni. 3) la notazione è organizzata per funzioni (non matematiche, sono liste di istruzioni) quella iniziale è la main(). 4) ogni funzione e` un blocco di istruzioni 52
53 Il linguaggio C Quella del C è una notazione particolarmente stringente come accade spesso nei linguaggio compilati. Vediamo adesso un esempio semplice di come un frammento di codice C viene tradotto in assembler. NB: è possibile chiedere al compilatore C di produrre l'assembler al posto del linguaggio macchina. 53
54 Il linguaggio C partiamo da il programma più semplice possibile: int sum(int x, int y) { return x+y; } analizziamone l'assembler prodotto. 54
55 Traduzione in assembler.lfb0:.cfi_startproc pushq %rbp.cfi_def_cfa_offset 16.cfi_offset 6, -16 movq %rsp, %rbp.cfi_def_cfa_register 6 movl %edi, -4(%rbp) movl %esi, -8(%rbp) movl -8(%rbp), %eax movl -4(%rbp), %edx addl %edx, %eax popq %rbp.cfi_def_cfa 7, 8 ret.cfi_endproc 55
56 Usare il compilatore C Il testo del programma in codice C questo dovrà essere memorizzato in un file con nome che finisce in '.c'. Ad esempio 'mioprogramma.c' Il comando per ottenere un programma di nome 'mioprogramma' è: prompt$ cc -o mioprogramma mioprogramma.c 56
57 Avviare il nostro programma Per avviare il nostro programma in teoria basterebbe digitarne il nome sulla shell: prompt$ mioprogramma in realtà l'esecuzione funziona in questa maniera solo se il programma sta in ben specificate directory e la nostra non è compresa. Il comando diventa allora: prompt$./mioprogramma 57
LINGUAGGIO MACCHINA e ASSEMBLER. Una CPU MINIMA Il linguaggio macchina di MINIMA Il linguaggio Assembler per MINIMA
LINGUAGGIO MACCHINA e ASSEMBLER Una CPU MINIMA Il linguaggio macchina di MINIMA Il linguaggio Assembler per MINIMA Nel computer non vengono memorizzati soltanto i dati da elaborare ma anche il programma
Architettura di un calcolatore e linguaggio macchina. Primo modulo Tecniche della programmazione
Architettura di un calcolatore e linguaggio macchina Primo modulo Tecniche della programmazione CPU Central Processing Unit, processore Unita logica/aritmetica: elaborazione dati Unita di controllo: coordina
Istruzioni macchina. Dove sono gli operandi? Ciclo della CPU. Elementi di un istruzione macchina. Rappresentazione delle istruzioni
Istruzioni macchina Linguaggio macchina Insieme delle istruzioni (instruction set) che la CPU puo eseguire Capitolo 10 1 2 Elementi di un istruzione macchina Codice operativo Specifica l operazione da
Lezione 6 Introduzione al C++ Mauro Piccolo
Lezione 6 Introduzione al C++ Mauro Piccolo piccolo@di.unito.it Linguaggi di programmazione Un linguaggio formale disegnato per descrivere la computazione Linguaggi ad alto livello C, C++, Pascal, Java,
Linguaggio macchina. 3 tipi di istruzioni macchina. Istruzioni per trasferimento dati. Istruzioni logico/aritmetiche
3 tipi di istruzioni macchina Linguaggio macchina e assembler 1) trasferimento tra RAM e registri di calcolo della CPU 2) operazioni aritmetiche: somma, differenza, moltiplicazione e divisione 3) operazioni
Il linguaggio di programmazione Python
Università Roma Tre Dipartimento di Matematica e Fisica Percorso Abilitante Speciale Classe A048 Matematica Applicata Corso di Informatica Il linguaggio di programmazione Python Marco Liverani (liverani@mat.uniroma3.it)
Introduzione al Linguaggio C Corso di Informatica Laurea in Fisica
Introduzione al Linguaggio C Corso di Informatica Laurea in Fisica prof. ing. Corrado Santoro A.A. 2009-10 Dai flow-chart ai linguaggi... Abbiamo imparato ad usare uno strumento formale i flowchart per
I linguaggi di programmazione
I linguaggi di programmazione 1 Lessico, sintassi e semantica Lessico: l insieme di regole formali per la scrittura di parole in un linguaggio Sintassi: l insieme di regole formali per la scrittura di
Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore
Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori Elementi di Programmazione Algoritmi e programmi Algoritmo Sequenza
Esempio. Le istruzioni corrispondono a quelle di sopra, ma sono scritte in modo simbolico. E indipendente dalla machina
Il compilatore C Astrazione Linguaggio macchina implica la conoscenza dei metodi usati per la rappresentazione dell informazioni nella CPU Linguaggio Assembly è il linguaggio delle istruzioni che possono
LINGUAGGI DI ALTO LIVELLO
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 C Fortran Modula-2 Cobol Algol Basic Ada
Il CPU UNITA DI CALCOLI (ALU) UNITA DI CONTROLLO (CU) 1
Il CPU UNITA DI CONTROLLO (CU) UNITA DI CALCOLI (ALU) info@stoianov.it La struttura del Calcolatore UNITA DI CONTROLLO (CU) UNITA DI CALCOLI (ALU) CPU INPUT OUTPUT MEMORIA CENTRALE MEMORIA ESTERNA info@stoianov.it
Laurea triennale - Comunicazione&DAMS - UNICAL. Dr. Annamaria Bria 1
Corso di INFORMATICA Laurea triennale - Comunicazione&DAMS Dr. Annamaria Bria 1 1 Dipartimento di Matematica Università della Calabria Corso di laurea intercalsse in COMUNICAZIONE&DAMS www.mat.unical.it/bria/informatica2011-12.html
Primi passi col linguaggio C
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Come introdurre un linguaggio di programmazione? Obiettivi: Introduciamo una macchina astratta
Introduzione alla programmazione
Introduzione alla programmazione Risolvere un problema Per risolvere un problema si procede innanzitutto all individuazione Delle informazioni, dei dati noti Dei risultati desiderati Il secondo passo consiste
Linguaggi di Programmazione
Linguaggi di Programmazione E una notazione con cui e possibile descrivere gli algoritmi. Programma: e la rappresentazione di un algoritmo in un particolare linguaggio di programmazione. In generale, ogni
Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura
Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE Francesco Tura francesco.tura@unibo.it 1 Lo strumento dell informatico: ELABORATORE ELETTRONICO [= calcolatore = computer] Macchina multifunzionale Macchina
Laurea triennale - Comunicazione&DAMS - UNICAL. Dr. Marco Manna 1
Corso di INFORMATICA Laurea triennale - Comunicazione&DAMS Dr. Marco Manna 1 1 Dipartimento di Matematica Università della Calabria Corso di laurea intercalsse in COMUNICAZIONE&DAMS http://elleboro.unical.it/drupalab/informatica2009/
Programmazione al livello del CPU
Corsi di Laurea in Biologia e Biologia Molecolare Università di Padova, AA 2012/2013 Programmazione al livello del CPU www.stoianov.it info@stoianov.it 1 Esecuzione condizionale Eseguire blocco A o blocco
Il Software programmabili programma algoritmo
Il Software La proprietà fondamentale dei calcolatori e` quella di essere programmabili cioè in grado di svolgere compiti diversi a seconda delle istruzioni fornite dall utente mediante un programma, ossia
INTRODUZIONE ALLA PROGRAMMAZIONE
INTRODUZIONE ALLA PROGRAMMAZIONE Prof. Enrico Terrone A. S: 2008/09 Definizioni Programmare significa risolvere problemi col computer, cioè far risolvere problemi al computer attraverso un insieme di informazioni
Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.
Unità Didattica 1 Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C UNIX (1969) - DEC PDP-7 Assembly Language BCPL - un OS facilmente accessibile che fornisce potenti strumenti
Corso di Fondamenti di Informatica Linguaggi di Programmazione
Corso di Fondamenti di Informatica Linguaggi di Programmazione Anno Accademico Francesco Tortorella Linguaggi di programmazione Un calcolatore basato sul modello di von Neumann permette l esecuzione di
C++ Barriera di astrazione. Barriera di astrazione. Basic. Basic. Lisp. Lisp. Pascal. Prolog. Pascal. Prolog. Cobol. Fortran IMPERATIVI FUNZIONALI
Linguaggi di alto livello Barriera di astrazione C Fortran Cobol Modula-2 Basic Pascal Algol Ada Lisp Smalltalk Simula67 Scheme C++ Prolog ML AN - 1995 Linguaggi di alto livello IMPERATIVI C Fortran Modula-2
DAGLI ALGORITMI AI LINGUAGGI. Linguaggi di Programmazione
DAGLI ALGORITMI AI LINGUAGGI Linguaggi di Programmazione E` una notazione con cui e` possibile descrivere gli algoritmi. Programma: e` la rappresentazione di un algoritmo in un particolare linguaggio di
Introduzione alla Programmazione. Giselda De Vita
Introduzione alla Programmazione Giselda De Vita - 2015 1 Sulla base dell ambito in cui si colloca il problema da risolvere, è opportuno adottare un linguaggio piuttosto che un altro: ² Calcolo scientifico:
Introduzione a Java. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni
Introduzione a Java IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni Linguaggi di programmazione Ogni programma viene scritto utilizzando un linguaggio specializzato, formale e comprensibile da
Algoritmo. La programmazione. Algoritmo. Programmare. Procedimento di risoluzione di un problema
Algoritmo 2 Procedimento di risoluzione di un problema La programmazione Ver. 2.4 Permette di ottenere un risultato eseguendo una sequenza finita di operazioni elementari Esempi: Una ricetta di cucina
Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L attività di progettare e realizzare un programma è detta programmazione
10: I LINGUAGGI di PROGRAMMAZIONE PARTE 1
Data: 12-10-2016 Pag: 8 10: I LINGUAGGI di PROGRAMMAZIONE PARTE 1 1. Definizioni a) Linguaggi Naturali = i linguaggi degli esseri umani Lessico = le parole che si usano Sintassi = le regole con cui si
Linguaggi di programmazione
Parte 2 Linguaggi di programmazione Livello di Astrazione per la Codifica di un Algoritmo Si può risolvere un problema senza prima fissare un insieme di azioni, di mosse elementari possibili per l elaboratore?
Cosa è un programma. Informatica di Base -- R.Gaeta 18
Cosa è un programma Il programma è la scatola nera che risolve il problema computazionale; Il programma è una sequenza di istruzioni che devono essere eseguite; Il programma è la traduzione per il computer
; programma MOV AX, DATO_1. ; somma al contenuto dell' accumulatore il contenuto del registro B
Linguaggi di programmazione Il linguaggio base di un elaboratore è il linguaggio macchina. Linguaggio macchina: insieme di istruzioni espresse nel formato numerico (binario) di un particolare processore.
Linguaggi, compilatori e interpreti
Linguaggi, compilatori e interpreti 1 Il codice macchina Ciascun calcolatore ha un ampio insieme di istruzioni che è in grado di eseguire. Le istruzioni vengono rappresentate mediante sequenze di bit 001000100011
Linguaggi di Programmazione
Linguaggi di Programmazione Linguaggi di Programmazione Programmazione. Insieme delle attività e tecniche svolte per creare un programma (codice sorgente) da far eseguire ad un computer. Che lingua comprende
Introduzione alla programmazione. Walter Didimo
Introduzione alla programmazione Walter Didimo Programmi Un programma è una frase (anche molto lunga) che descrive delle azioni che devono essere svolte da un calcolatore La frase deve essere dettagliata
Informatica Generale Andrea Corradini I linguaggi di programmazione
Informatica Generale Andrea Corradini 17 - I linguaggi di programmazione Sommario Cos'è un linguaggio di programmazione? Una prospettiva storica: linguaggi di prima, seconda e terza generazione I paradigmi
Linguaggi di programmazione
Linguaggi di programmazione Fondamenti di Informatica Daniele Loiacono Ho definito un algoritmo e adesso? Daniele Loiacono Dall algoritmo all esecuzione q Come deve essere formalizzato un algoritmo affinché
Linguaggi di Programmazione
Linguaggi di Programmazione 1 Linguaggio naturale e linguaggio macchina La comunicazione uomo-macchina avviene attraverso formalismi che assumono la forma di un linguaggio. Caratteristiche del Linguaggio
Perché il linguaggio C?
Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare
Lez. 5 La Programmazione. Prof. Salvatore CUOMO
Lez. 5 La Programmazione Prof. Salvatore CUOMO 1 2 Programma di utilità: Bootstrap All accensione dell elaboratore (Bootsrap), parte l esecuzione del BIOS (Basic Input Output System), un programma residente
ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE)
1 LEZIONE 9 ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE) Laboratorio di Informatica per l Educazione A. A. 2014/2015 IN SINTESI (ELABORAZIONE) Con i COMPUTER, le macchine diventano
PROBLEMI ALGORITMI E PROGRAMMAZIONE
PROBLEMI ALGORITMI E PROGRAMMAZIONE SCIENZE E TECNOLOGIE APPLICATE CLASSE SECONDA D PROGRAMMARE = SPECIFICARE UN PROCEDIMENTO CAPACE DI FAR SVOLGERE AD UNA MACCHINA UNA SERIE ORDINATA DI OPERAZIONI AL
LINGUAGGI DI ALTO LIVELLO. Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware
LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware 1 LINGUAGGI DI ALTO LIVELLO Barriera di astrazione Fortran Cobol Basic Pascal Python C
Introduzione alla programmazione
Introduzione alla programmazione Cosa è un calcolatore? Hardware Processore Memoria Periferiche Funzionamento Esegue istruzioni elementari Esegue istruzioni molto velocemente Deve essere programmato Il
LINGUAGGI DI ALTO LIVELLO
LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware 1 LINGUAGGI DI ALTO LIVELLO Barriera di astrazione C Fortran Modula-2 Cobol Algol Basic
Laboratorio di Informatica Ingegneria Clinica Lezione 7/11/2011. Prof. Raffaele Nicolussi
Laboratorio di Informatica Ingegneria Clinica Lezione 7/11/2011 Prof. Raffaele Nicolussi FUB - Fondazione Ugo Bordoni Via del Policlinico, 147-00161 Roma Docente Raffaele Nicolussi rnicolussi@fub.it Lezioni
Lezione 15 Il Set di Istruzioni (1)
Lezione 15 Il Set di Istruzioni (1) Vittorio Scarano Architettura Corso di Laurea in Informatica Università degli Studi di Salerno Un quadro della situazione Input/Output Sistema di Interconnessione Registri
Lez. 8 La Programmazione. Prof. Pasquale De Michele (Gruppo 2) e Raffaele Farina (Gruppo 1) 1
Lez. 8 La Programmazione Prof. Pasquale De Michele (Gruppo 2) e Raffaele Farina (Gruppo 1) 1 Dott. Pasquale De Michele Dott. Raffaele Farina Dipartimento di Matematica e Applicazioni Università di Napoli
Linguaggio C - sezione dichiarativa: costanti e variabili
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - sezione dichiarativa: costanti e variabili La presente
Rappresentazione con i diagrammi di flusso (Flow - chart)
Rappresentazione con i diagrammi di flusso (Flow - chart) Questo tipo di rappresentazione grafica degli algoritmi, sviluppato negli anni 50, utilizza una serie di simboli grafici dal contenuto evocativo
Programmazione. Andrea Passerini Informatica. Programmazione
Andrea Passerini passerini@disi.unitn.it Informatica Linguaggi di programmazione Il calcolatore è in grado di comprendere solo istruzioni in linguaggio macchina. Il linguaggio macchina non è adatto alla
Struttura dei programmi C
Programmi C Struttura dei Programmi C Dichiarazione delle variabili Operazioni di Ingresso/Uscita Fondamenti di Informatica 1 Struttura dei programmi C Un programma C deve contenere, nell'ordine: una parte
Elementi di programmazione
Fondamenti di Informatica per la Sicurezza a.a. 2003/04 Elementi di programmazione Stefano Ferrari Università degli Studi di Milano Dipartimento di Tecnologie dell Informazione Stefano Ferrari Università
ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2009/2010
Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2
ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C
Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2
Macchine Astratte. Luca Abeni. February 22, 2017
Macchine Astratte February 22, 2017 Architettura dei Calcolatori - 1 Un computer è composto almeno da: Un processore (CPU) Esegue le istruzioni macchina Per fare questo, può muovere dati da/verso la memoria
Fondamenti di Informatica T-1
Fondamenti di Informatica T-1 Introduzione al linguaggio Java - Input/Output, Variabili, Tipi Tutor: Allegra De Filippo allegra.defilippo@unibo.it a.a. 2015/2016 Fondamenti di Informatica T-1 Allegra De
Linguaggio C: introduzione
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: introduzione La presente dispensa e da utilizzarsi
Elaborazione dell informazione
Elaborazione dell informazione Primo esempio Ricominciamo dai numeri (45 + 25) è definita rigorosamente Un primo calcolatore (a) Figura 1.1 Configurazione del pallottoliere (a) prima e (b) dopo l esecuzione
in termini informali: un algoritmo è una sequenza ordinata di operazioni che risolve un problema specifico
Click to edit Algoritmo Master title style algoritmo: un insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce un risultato e si arresta in un tempo finito
la traduzione dei programmi ed introduzione a Java
la traduzione dei programmi ed introduzione a Java programmi descrizioni di algoritmi effettuate tramite linguaggi di programmazione lo stesso algoritmo, fissato un linguaggio di programmazione, può essere
CORSO DI PROGRAMMAZIONE E INFORMATICA GENERALE 1
CORSO DI PROGRAMMAZIONE E INFORMATICA GENERALE 1 Lezione 1 (Introduzione e Definizioni) Docenti Docente: Prof. Michele Colajanni Lezioni (Aula IV): martedì 10:00-12:45 Esercitazioni (Laboratorio): mercoledì
AMBIENTI DI PROGRAMMAZIONE
AMBIENTI DI PROGRAMMAZIONE È l'insieme dei programmi che consentono la scrittura, la verifica e l'esecuzione di nuovi programmi (fasi di sviluppo) Sviluppo di un programma Affinché un programma scritto
Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.
Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe. 1) Comprendere il problema 2) Stabilire quali sono le azioni da eseguire per risolverlo 3) Stabilire la
DEC PDP8, III Generazione, '65-'75
Parte I DEC PDP8, III Generazione, '65-'75 PDP8 Architettura (Livello Registri) 12 bit Program Counter PC 12 bit Memory Address Register MAR Random Access Memory RAM 4096 x 16 1 bit I 3 bit Operation Code
Concetti di Base sulla Programmazione. Prof.Ing.S.Cavalieri
Concetti di Base sulla Programmazione Prof.Ing.S.Cavalieri 1 La Programmazione Dato un problema INFORMATICO, programmare significa: Definire i dati in ingresso e il risultato che si vuole raggiungere Definire
Corso di Informatica di Base
Corso di Informatica di Base A.A. 2011/2012 Algoritmi e diagrammi di flusso Luca Tornatore Cos è l informatica? Calcolatore: esecutore di ordini o automa Programma: insieme di istruzioni che possono essere
Funzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7
1 PANORAMICA SUL LINGUAGGIO C
1 PANORAMICA SUL LINGUAGGIO C 1.1 Le origini del linguaggio C Il C fu inventato e implementato da Dennis Ritchie negli anni 70 su una macchina che impiegava il sistema operativo Unix. Il C è il risultato
Assembly. Linguaggio di programmazione corrispondente al linguaggio macchina P.H. Cap. 2.1, 2.2 e App. A. Linguaggio assembly (App.
Assembly Linguaggio di programmazione corrispondente al linguaggio macchina P.H. Cap. 2.1, 2.2 e App. A 1 Linguaggio assembly (App. A) Rappresentazione simbolica del linguaggio macchina Più comprensibile
Programmazione Procedurale in Linguaggio C++
Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 1 Introduzione G. Mecca M. Samela Università della Basilicata Elementi di Base >> Sommario Sommario Linguaggi di Programmazione Sintassi
Programmazione C Massimo Callisto De Donato
Università degli studi di Camerino Scuola di scienze e tecnologia - Sezione Informatica Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto LEZIONE
Macchine Astratte. Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari. Linguaggi di Programmazione feb, 2016
Macchine Astratte Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari Linguaggi di Programmazione 010194 29 feb, 2016 Sommario 1 Introduzione Macchina astratta Interprete Implementazione
Informatica Generale 07 - Sistemi Operativi:Gestione dei processi
Informatica Generale 07 - Sistemi Operativi:Gestione dei processi Cosa vedremo: Esecuzione di un programma Concetto di processo Interruzioni Sistemi monotasking e multitasking Time-sharing Tabella dei
Linguaggi di programmazione
Linguaggi di programmazione Programmazione L attività con cui si predispone l elaboratore ad eseguire un particolare insieme di azioni su particolari dati, allo scopo di risolvere un problema Dati Input
Il Processore. Informatica di Base -- R.Gaeta 27
Il Processore Il processore (detto anche CPU, ovvero, Central Processing Unit) è la componente dell unità centrale che fornisce la capacità di elaborazione delle informazioni contenute nella memoria principale
CONCETTI FONDAMENTALI
CONCETTI FONDAMENTALI Algoritmo Procedura di trasformazione di un insieme di dati iniziali in un insieme di risultati finali mediante una sequenza di istruzioni. Linguaggio di programmazione Programma
Le basi del linguaggio Java
Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una
Corso di Architettura (Prof. Scarano) 09/04/2002
Corso di Architettura (Prof. Scarano) 09/0/2002 Un quadro della situazione Lezione 15 Il Set di Istruzioni (1) Vittorio Scarano Architettura Corso di Laurea in Informatica Università degli Studi di Salerno
Il Linguaggio C. Caratteristiche. Caratteristiche. Esempio di programma in C. Tipi di dato primitivi in C. Dati
Caratteristiche Il Linguaggio C Linguaggio sequenziale (lineare), imperativo, strutturato a blocchi usabile anche come linguaggio di sistema software di base sistemi operativi compilatori... FI - Algoritmi
L ELABORATORE ELETTRONICO
L ELABORATORE ELETTRONICO Il calcolatore elettronico è uno strumento in grado di eseguire insiemi di azioni ( mosse ) elementari le azioni vengono eseguite su oggetti (dati) per produrre altri oggetti
Unità di apprendimento 6. Il software: dal linguaggio alla applicazione
Unità di apprendimento 6 Il software: dal linguaggio alla applicazione Unità di apprendimento 6 Lezione 2 Conosciamo i linguaggi di programmazione In questa lezione impareremo: che cos è un linguaggio
Fondamenti di Algoritmi
Fondamenti di Algoritmi Corsi di Informatica Grafica Prof. Manuel Roveri Dipartimento di Elettronica e Informazione roveri@elet.polimi.it Indice Algoritmi: Definizione Diagrammi di Flusso Esempi ed esercizi
INFORMATICA. Scienza dei calcolatori elettronici (computer science) Scienza dell informazione (information science)
INFORMATICA Cosa è l informatica Scienza dei calcolatori elettronici (computer science) Scienza dell informazione (information science) E una scienza E una tecnologia Cosa può essere automatizzato nell
Corso di Fondamenti di Informatica Linguaggi di Programmazione
di Cassino e del Lazio Meridionale Corso di Informatica Linguaggi di Programmazione Anno Accademico 2014/2015 Francesco Tortorella Linguaggi di programmazione Un calcolatore basato sul modello di von Neumann
Corso di Laurea Ingegneria Informatica Laboratorio di Informatica
Corso di Laurea Ingegneria Informatica Laboratorio di Informatica Capitolo 4 Traduzione ed esecuzione di programmi Ottobre 2006 Traduzione ed esecuzione di programmi 1 Nota bene Alcune parti del presente
INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione
PARTE III MACCHINE A REGISTRI
PARTE III MACCHINE A REGISTRI Macchine a registri (RAM) Modelli di costo RAM e macchine di Turing Macchine a registri elementari 1 3.1 MACCHINE A REGISTRI (RAM: Random Access Machines) Introdotte da Shepherdson
INFORMATICA. L informatica comprende:
Varie definizioni: INFORMATICA Scienza degli elaboratori elettronici (Computer Science) Scienza dell informazione Definizione proposta: Scienza della rappresentazione e dell elaborazione dell informazione
Tipi di dato semplici
Tipi di dato semplici Perché dichiarare una variabile? 2 Una variabile rappresenta uno spazio di memoria centrale Prima dell esecuzione del programma deve essere chiaro quanto spazio serve al programma
Programmazione: Sommario
Programmazione: Sommario Concetti di Base della Programmazione; Algoritmi; Diagrammi di Flusso; Istruzioni Sequenziali, Condizionali, Cicliche; Logo Variabili, Procedure e Parametri; 1 Il Problema computazionale
Lezione 15. L elaboratore Elettronico
Lezione 15 Architettura di un calcolatore L elaboratore Elettronico Un elaboratore elettronico è una macchina elettronica in grado di elaborare dati secondo le specifiche fornite da un algoritmo Internamente
I Linguaggi di Programmazione
I Linguaggi di Programmazione 1 Linguaggio naturale e linguaggio macchina La comunicazione uomo-macchina avviene attraverso formalismi che assumono la forma di un linguaggio. Caratteristiche del Linguaggio
Introduzione al C. Introduzione. Linguaggio ad alto livello. Struttura di un programma C
Introduzione 2 Introduzione al C Linguaggio di programmazione ad alto livello (HLL) Sviluppato negli anni 70 (C standard ANSI) Molto diffuso e adatto ad un ampio spettro di applicazioni: Scientifiche Gestionali
Sistemi di Elaborazione delle Informazioni
SCUOLA DI MEDICINA E CHIRURGIA Università degli Studi di Napoli Federico II Corso di Sistemi di Elaborazione delle Informazioni Dott. Francesco Rossi a.a. 2016/2017 1 Programma del corso Informatica di
Primi passi con JFlex
Primi passi con JFlex Luca Chiodini Abstract Ci proponiamo di muovere i primi passi nel mondo dell analisi lessicale e della produzione automatica di un analizzatore lessicale. Verrà mostrato l uso di
Algoritmi e basi del C Struttura di un programma
Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 17 Marzo 2015 Compitini Compitini di INFO: 24 Aprile 2015 4.15pm @ C.G.1 (Ed. 9) 21
Elementi di programmazione
Fondamenti di Informatica per la Sicurezza a.a. 2008/09 Elementi di programmazione Stefano Ferrari UNIVERSITÀ DEGLI STUDI DI MILANO DIPARTIMENTO DI TECNOLOGIE DELL INFORMAZIONE Stefano Ferrari Università