INFORMATICA UMANISTICA B ALGORITMI, PROGRAMMI, E LINGUAGGI DI PROGRAMMAZIONE.

Slides:



Advertisements
Presentazioni simili
Il Software.
Advertisements

Software di base: Linguaggi di Programmazione
Analisi – Progettazione - Programmazione
Costruzione di un semplice programma che opererà su uno smartphone
I linguaggi di programmazione
Linguaggi di programmazione
MATLAB. Scopo della lezione Programmare in Matlab Funzioni Cicli Operatori relazionali Esercizi vari.
Dipartimento di Matematica
Algoritmi e Programmazione
Informatica Generale Susanna Pelagatti
3. Programmazione strutturata (testo di riferimento: Bellini-Guidi)
Informatica di base A.A. 2003/2004 Algoritmi e programmi
Università degli Studi di Bergamo Facoltà di Lingue e Letterature Straniere Facoltà di Lettere e Filosofia A.A Informatica generale 1 Appunti.
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Corso di Informatica (Programmazione)
Corso di Laurea in Biotecnologie Informatica (Programmazione)
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab m-file m-file script script Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali.
MATLAB.
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Indipendenza lineare,
XML e XSL. XSL - eXtensible Stylesheet Language XSL è un linguaggio di annotazione che serve a "trasformare" la struttura di un documento in formato XML.
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L’attività di.
Introduzione alla programmazione lll
DAL PROBLEMA ALL'ALGORITMO Problemi e Programmi Paolo Amico
Informatica? Scienza della rappresentazione e dell’elaborazione dell’informazione ovvero Studio degli algoritmi che descrivono e trasformano l’informazione.
Somma = A + B start Stampa Somma Leggi A,B stop Sub SOMMA( ) Dim A, B as Integer A = InputBox("Immetti un numero") B = InputBox(Immetti un secondo numero)
INFORMATICA UMANISTICA B
INFORMATICA UMANISTICA B
INFORMATICA UMANISTICA B
ANNUNCI MODULO C, D, E LABORATORI SONO INIZIATI
INFORMATICA UMANISTICA B STRUTTURE DATI BASI DI DATI RAPPRESENTAZIONE DELLA CONOSCENZA ONTOLOGIE.
Selezione (=scelta) con “if-else”
Strutture di controllo in C -- Flow Chart --
Fondamenti di Informatica Algoritmi
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Gli algoritmi.
DIAGRAMMI DI FLUSSO Notazione grafica usata per descrivere in modo intuitivo le azioni di cui è fatto un algoritmo. Viene usata per descrivere i passi.
Elementi di Informatica
Da Problema a Programmazione
Dall’algoritmo al programma.
ELEMENTI DI PROGRAMMAZIONE
PROGRAMMAZIONE: linguaggi
Lezione 1 Linguaggi di programmazione – Algoritmi –Istruzioni
Lezione 6 Strutture di controllo Il condizionale
PROBLEMA ALGORITMO PROGRAMMA LINGUAGGI di PROGRAMMAZIONE
CONCETTI DI BASE 1.0 FONDAMENTI 1.1 HARDWARE 1.2 SOFTWARE 1.3 RETI
Fondamenti di Informatica e Informatica di base Prof.ssa Elisa Tiezzi
Corso di Programmazione in Java – Esercizio n° 001
Linguaggi per COMUNICARE
Programmazione Strutturata
IO E LA MATEMATICA PROCEDURALE
DIVERTIRSI CON SCRATCH
Dal problema all’ algoritmo
Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies.
Allievi Elettrici - AA Le funzioni ricorsive in C
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali
1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore , Dipartimento di Informatica, stanza 306-PS o per posta.
L’ELABORATORE ELETTRONICO uno strumento in grado di eseguire insiemi di azioni (“mosse”) elementari le azioni vengono eseguite su oggetti (dati) per produrre.
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Informatica e Informatica di Base
Problemi, algoritmi e programmazione
Programmazione dei Calcolatori Elettronici
Strutture di controllo
LINGUAGGI DI PROGRAMMAZIONE E' un linguaggio formale dotato di una sintassi ben definita che viene utilizzato per scrivere programmi che realizzano algoritmi.
Click to edit Master title styleAlgoritmo algoritmo: un insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito,
ALGORITMI, LINGUAGGI E PROGRAMMI Facoltà di Lingue e Letterature Straniere Corso di laurea in Relazioni Pubbliche.
INFORMATICA ALGORITMI, PROGRAMMI, E LINGUAGGI DI PROGRAMMAZIONE.
ALGORITMI e DIAGRAMMI DI FLUSSO
Transcript della presentazione:

INFORMATICA UMANISTICA B ALGORITMI, PROGRAMMI, E LINGUAGGI DI PROGRAMMAZIONE

PROGRAMMI Un computer e una macchina per eseguire PROGRAMMI Un programma e un ALGORITMO per risolvere un certo PROBLEMA scritto secondo le regole di un LINGUAGGIO DI PROGRAMMAZIONE

ALGORITMO Un PROGRAMMA e un ALGORITMO posto in forma comprensibile al computer Definizione informale di ALGORITMO: una sequenza FINITA di passi DISCRETI e NON AMBIGUI che porta alla soluzione di un problema Questa definizione si puo applicare al di fuori dellInformatica: nella matematica (da cui ha origine) ma anche nella cucina

UN QUASI-ALGORITMO: LA RICETTA PER LA BAGNA CAUDA 1. Cuocere gli spicchi di aglio, coperti con il latte, fino a quando non diventino teneri. 2. Tritare l'aglio 3. Unirlo all'olio, alle acciughe tagliate molto finemente 4. Cuocere a fiamma moderata e mescolare fino a far ridurre il contenuto in un composto omogeneo. 5. Dopo circa venti minuti aggiungere qualche fiocco di burro 6. Servire in tavola con le verdure.

PERCHE QUASI- ALGORITMO? Numero di passi e finito Ma molti passi sono ambigui: teneri? `fiamma moderata?

IL TERMINE ALGORITMO Il nome ALGORITMO deriva dal nome del matematico persiano Muhammad ibn Mūsa 'l- Khwārizmī che attorno all825 scrisse un trattato chiamato Kitāb al-djabr wa 'l- muqābala (Libro sulla ricomposizione e sulla riduzione)Muhammad ibn Mūsa 'l- Khwārizmī AL-KHWARIZMI ALGORISMO ALGORITMO (ALGEBRA deriva da AL-DJABR)

UN PROBLEMA, DUE ALGORITMI: IL MASSIMO COMUN DIVISORE

MCD: UN ALGORITMO ELEMENTARE A scuola si impara un algoritmo molto semplice per calcolare MCD: la SCOMPOSIZIONE IN FATTORI PRIMI 42 = 2 x 3 x 7 56 = 2 x 2 x 2 x 7 Algoritmo MCD(M, N): 1. Scomponi M ed N in fattori primi 2. Estrai i componenti comuni Questo metodo si puo solo applicare per numeri piccoli (la scomposizione in fattori primi e molto costosa)

MCD: LALGORITMO DI EUCLIDE MCD(M,N): 1. RIPETI finche M N 2. SE M > N, M M –N; 3. ALTRIMENTI, N N – M; 4. RITORNA al passo 1; 5. OUTPUT M

ESEMPIO MCD(42,56): M(42) N(56); N (56) > M (42) N 14 M(42) N(14); M (42) > N (14); M 28 M(28) N(14) M(28) > N (14); M 14 OUTPUT: 14

MCD: LALGORITMO DI EUCLIDE, II MCD(M,N): 1. Dividi M per N; sia R il resto 2. Se R = 0, termina; MCD = N 3. Altrimenti, M = N, N = R, e ritorna da

UN ALGORITMO PIU FORMALE (CLASSIFICAZIONE DELLA TEMPERATURA) INPUT: una temperatura in Celsius ALGORITMO: 1. SE temperatura > ALLORA caldo 3. ALTRIMENTI freddo OUTPUT: CALDO o FREDDO

ALCUNE CONSIDERAZIONI: PROBLEMI ED ALGORITMI Ci sono sempre molti algoritmi per risolvere un problema Parte dellarte della programmazione e trovare gli algoritmi piu efficienti

ALGORITMI E FUNZIONI In termini matematici, un algoritmo puo essere visto come una FUNZIONE che produce un certo OUTPUT dato un certo INPUT Per esempio, MCD(42,56) = 14 Due algoritmi si dicono EQUIVALENTI se producono lo stesso output dato lo stesso input. Fattori primi e Euclide sono EQUIVALENTI (ma non egualmente efficienti!!)

ALGORITMI PIU COMUNI IN INFORMATICA Algoritmi MATEMATICI Per fare calcoli anche molto complessi (per esempio, integrali, la scoperta di numeri primi) Algoritmi di ORDINAMENTO Algoritmi di RICERCA Algoritmi per il TRATTAMENTO DELLE STRINGHE COMPILATORI Algoritmi di COMPRESSIONE

DA ALGORITMI A PROGRAMMI

LINGUAGGI DI PROGRAMMAZIONE Un linguaggio di programmazione permette di esprimere certi tipi di istruzioni in modo che possano venire poi convertite in istruzioni macchina Un linguaggio di programmazione e caratterizzato da SINTASSI (come vengono scritte le istruzioni) SEMANTICA (come devono venire interpretate)

CONSIDERAZIONI, II: INGREDIENTI ESSENZIALI DI UN LINGUAGGIO DI PROGRAMMAZIONE MCD(M,N): 1. RIPETI finche M N 2. SE M > N, M M –N; 3. ALTRIMENTI, N N – M; 4. RITORNA al passo 1; 5. OUTPUT M

DIAGRAMMI DI FLUSSO Una rappresentazione grafica usata per descrivere in modo piu preciso i passi di un algoritmo senza usare una sintassi specifica Un diagramma e composto da una serie di BLOCCHI uniti da archi

BLOCCHI: INIZIO E FINE PROGRAMMA

BLOCCHI: ISTRUZIONI ELEMENTARI

COUNT 0COUNT COUNT + 1

BLOCCHI: INPUT / OUTPUT

ESEMPIO: AREA DEL RETTANGOLO Calcolo dellarea di un rettangolo AREA: 1. Leggi da input laltezza H 2. Leggi da input la base B 3. Calcola larea A 4. Produci in output il risultato

AREA DEL RETTANGOLO: DIAGRAMMA DI FLUSSO

LE VARIABILI Molti algoritmi richiedono un qualche modo per immagazzinare i risultati di certi calcoli. Per esempio, nellalgoritmo per MCD, M e N Quasi tutti i linguaggi di programmazione permettono di usare delle VARIABILI per questo scopo. Una variabile puo essere pensata come un nome per una zona di memoria.

ESEMPIO: SCAMBIO DI VALORI 1. Leggi il valore della prima variabile X 2. Leggi il valore della seconda variabile Y 3. Salva il valore di X in una variable Aux per ricordarlo 4. Assegna ad X il valore di Y 5. Assegna a Y il valore di Aux

DIAGRAMMA DI FLUSSO

CONDIZIONALI Unaltro degli ingredienti fondamentali di un linguaggio di programmazione e la possibilita di scegliere di eseguire istruzioni diverse a seconda dei risultati di un TEST

CONDIZIONALI

ESEMPIO: PARI O DISPARI 1. Leggi N 2. Dividi N per 2 3. Se Resto = 0 scrivi: N e pari 4. Altrimenti scrivi: N e dispari

PARI E DISPARI

RIPETIZIONI Lultimo componente fondamentale di un linguaggio di programmazione e la possibilita di ripetere le stesse azioni un gran numero di volte

RIPETIZIONI

ALGORITMO DI EUCLIDE M = N? OUTPUT:M M > N? M M - NN N - M STOP START T T F F

REMINDER: LA MACCHINA DI TURING E LIPOTESI DI CHURCH Quando avevamo introdotto la macchina di Turing, si era menzionata lipotesi di Church: La macchina di Turing e una macchina UNIVERSALE Nel senso che ogni programma eseguibile puo essere scritto sotto forma di istruzioni per la macchina di Turing Questa ipotesi si basa sul fatto che la macchina di Turing puo esprimere tutti i costrutti fondamentali appena discussi

STRUTTURE DATI

LINGUAGGI DI PROGRAMMAZIONE Il calcolatore comprende istruzioni in LINGUAGGIO MACCHINA Una prima astrazione dal linguaggio macchina sono i cosiddetti ASSEMBLER che esprimono le istruzioni macchina in formato simbolico ADD R1 R2 Una seconda astrazione sono i linguaggi di programmazione AD ALTO LIVELLO che astraggono dalle istruzioni macchina X X + Y

ALGORITMO DI EUCLIDE IN UN TIPICO LINGUAGGIO AD ALTO LIVELLO function MCD(M,N) while M N if M > N then M M - N else N N - M return M

COMPILATORE E un programma che trasforma un programma espresso in linguaggio ad alto livello (PROGRAMMA SORGENTE) in linguaggio macchina (PROGRAMMA OGGETTO) In Windows: crea file.exe Linguaggi tipicamente compilati: C, C++, Fortran, Pascal

COMPILATORI

INTERPRETI Un interprete e un programma che interpreta le istruzioni di un programma ad alto livello DIRETTAMENTE, senza tradurle in linguaggio macchina Tipici linguaggi interpretati: Java, Lisp, Perl, Python

UN ESEMPIO DI LINGUAGGIO DI PROGRAMMAZIONE VISUAL BASIC e il linguaggio di programmazione usato per sviluppare applicazioni in ambienti Microsoft Windows E un linguaggio Di alto livello Interpretato Visuale

VISUAL BASIC: ASSEGNAZIONE AD UNA VARIABILE

VISUAL BASIC: INPUT / OUTPUT

VISUAL BASIC: COSTRUTTI CONDIZIONALI

VISUAL BASIC: ITERAZIONI

DIFFERENZE TRA LINGUAGGI AD ALTO LIVELLO PERL: If (A*A + B*B = C*C) { print Triangolo rettangolo\n; } else { print Triangolo non rettangolo\n; }

DIFFERENZE TRA LINGUAGGI AD ALTO LIVELLO GREP in PERL: while ( ) { if (/Poesio/) { print $_;} }

DIFFERENZE TRA LINGUAGGI AD ALTO LIVELLO …. import java.util.regex.*; public class Grep { …. // Pattern used to parse lines private static Pattern linePattern = Pattern.compile(".*\r?\n"); // The input pattern that we're looking for private static Pattern pattern; // Compile the pattern from the command line private static void compile(String pat) { try { pattern = Pattern.compile(pat); } catch (PatternSyntaxException x) { System.err.println(x.getMessage()); System.exit(1); } } // Use the linePattern to break the given CharBuffer into lines, applying // the input pattern to each line to see if we have a match private static void grep(File f, CharBuffer cb) { Matcher lm = linePattern.matcher(cb); // Line matcher Matcher pm = null; // Pattern matcher int lines = 0; while (lm.find()) { lines++; CharSequence cs = lm.group(); // The current line if (pm == null) pm = pattern.matcher(cs); else pm.reset(cs); if (pm.find()) System.out.print(f + ":" + lines + ":" + cs); if (lm.end() == cb.limit()) break; } }

XSL XSL (eXtensible Stylesheet Language): un linguaggio che permette di specificare come visualizzare un documento formattato in XML Uso tipico: convertire XML in HTML

COSTRUTTI CONDIZIONALI IN XSL 1. The poem's author is jm. Seest thou yon dreary Plain, forlorn and wild, The seat of desolation, void of light, Save what the glimmering of these livid flames Casts pale and dreadful?

LINGUAGGI DI MARCATURA E LINGUAGGI DI PROGRAMMAZIONE Attenzione a non confondere un linguaggio di MARCATURA come XML con un linguaggio di PROGRAMMAZIONE come XSL Un linguaggio di marcatura CLASSIFICA certe porzioni di testo Un linguaggio di programmazione specifica ISTRUZIONI

QUALI SONO I LINGUAGGI DI PROGRAMMAZIONE PIU USATI?

LETTURE Da Wikipedia: le voci Algoritmo Diagramma a blocchi Programma Linguaggio di Programmazione