La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

BIOINFO3 - Lezione 191 Un ALGORITMO rappresenta la successione dei passi da eseguire per risolvere un PROBLEMA. Lalgoritmo può essere descritto formalmente.

Presentazioni simili


Presentazione sul tema: "BIOINFO3 - Lezione 191 Un ALGORITMO rappresenta la successione dei passi da eseguire per risolvere un PROBLEMA. Lalgoritmo può essere descritto formalmente."— Transcript della presentazione:

1 BIOINFO3 - Lezione 191 Un ALGORITMO rappresenta la successione dei passi da eseguire per risolvere un PROBLEMA. Lalgoritmo può essere descritto formalmente attraverso un FLOW-CHART. Algoritmi e flow-chart non sono però direttamente comprensibili ed eseguibili da un computer. Per far eseguire lalgoritmo al computer è necessario scrivere un PROGRAMMA che lo implementi. Il programma è una sequenza di ISTRUZIONI (che richiedono al computer lesecuzione di AZIONI) ed è scritto in un LINGUAGGIO di programmazione comprensibile al computer RICAPITOLANDO…

2 BIOINFO3 - Lezione 192 SCHEMA LOGICO Possiamo ricapitolare questi concetti in un semplice schema PROBLEMA ? ? ALGORITMOPROGRAMMA

3 BIOINFO3 - Lezione 193 LINGUAGGI DI PROGRAMMAZIONE Lunico linguaggio di programmazione comprensibile dal computer è il linguaggio macchina, formato da sequenze di bit secondo un determinato codice che è tipico del processore. Ogni processore ha il suo linguaggio macchina La prima evoluzione verso una programmazione più umana si è avuta negli anni 50 con lintroduzione di un codice mnemonico per ogni istruzione macchina e di nomi simbolici per indicare gli indirizzi di memoria. Nasceva il linguaggio chiamato ASSEMBLER, anchesso caratteristico del singolo processore,in corrispondenza 1:1 con il linguaggio macchina,

4 BIOINFO3 - Lezione 194 LINGUAGGI DI PROGRAMMAZIONE Successivamente, a partire dagli anni 60, nascono i cosiddetti linguaggi ad alto livello, che utilizzano istruzioni tratte dal linguaggio naturale (abbiamo visto quanto naturali siano le istruzioni di SQL). ANNI 60 ALGOLALGOrithmic Language(applicazioni matematiche) FORTRANFORmula TRANslation (applicazioni scientifiche) COBOLCOmmon Business Oriented Language (appl. gestionali) ANNI BASICBeginners All purpose Symbolic Instruction Code (per principianti) PASCAL LISPLISt Processing (elaborazioni di liste ed A.I.) PROLOGPROgramming LOGic (Logica Matematica) C C++(Programmazione ad oggetti)

5 BIOINFO3 - Lezione 195 LINGUAGGI DI PROGRAMMAZIONE ANNI 90 Con lavvento dei sistemi operativi a finestre (WINDOWS) nascono i linguaggi visuali che permettono la gestione di interfacce grafiche semplici e user-friendly VISUAL C++ VISUAL BASIC JAVA(dal nome di un caffè in polvere, facilmente trasportabile e solubile, permette di eseguire dei programmi, installati su pagine WEB direttamente nei browser (e quindi non sul server ma sul client, eventualmente può interagire con il server) PERL Practical Extraction and Report Language Pur se nato negli anni 80, nella seconda metà degli anni 90 assistiamo al successo incredibile di Perl, che diventa il linguaggio preferito per preparare degli script per lamministrazione di sistema nel sistema operativo LINUX e soprattutto per scrivere programmi cgi-bin da eseguire nei server WEB. Come dice il nome stesso Perl è vincente per la sua praticità, semplicità, potenza e compattezza (in un programma Perl di poche righe si possono concentrare decine e decine di righe di programma scritte in C) soprattutto nellestrazione di informazione da file (PARSERIZZAZIONE) e nella preparazione di report

6 BIOINFO3 - Lezione 196 GERARCHIA DEI LINGUAGGI GERARCHIA DEI LINGUAGGI Come dicevamo, ogni programma scritto in un qualsiasi linguaggio dovrà alla fin fine essere tradotto in linguaggio macchina per poter essere eseguito dal computer. LASSEMBLER è tradotto direttamente in linguaggio macchina da un programma ASSEMBLATORE. I linguaggi ad alto livello dovranno perciò a loro volta essere preventivamente tradotti in ASSEMBLER da un programma TRADUTTORE (che vedremo potrà essere di due tipi) PROGRAMMA IN UN LINGUAGGIO AD ALTO LIVELLO PROGRAMMA IN ASSEMBLER PROGRAMMA IN LINGUAGGIO MACCHINA TRADUTTORE ASSEMBLATORE

7 BIOINFO3 - Lezione 197 COMPILATORI ED INTERPRETI Lesecuzione di un programma scritto in un linguaggio ad alto livello può avvenire in due differenti modalità: Con un COMPILATORE lintero programma (sorgente) viene tradotto (compilato) in un programma equivalente in assembler. Si ottiene così un programma in codice macchina (eseguibile). Quando si vuole eseguire il programma si chiederà perciò al computer di eseguire direttamente la versione eseguibile.Ogni modifica del sorgente comporta la ricompilazione del programma per ottenere una versione aggiornata delleseguibile. Con un INTERPRETE, per eseguire un programma sorgente si chiederà invece lesecuzione di un programma interprete il quale leggerà man mano la singola istruzione del sorgente e solo in quel momento eseguirà delle corrispondenti istruzioni macchina. I programmi compilati sono quindi molto più veloci di quelli interpretati, ma questultimi sono più rapidi da modificare in fase di sviluppo e collaudo. Sia i compilatori che gli interpreti verificano la correttezza sintattica del programma.

8 BIOINFO3 - Lezione 198 PERL Lesecuzione di un programma scritto nel linguaggio PERL avviene tramite un interprete, quindi questo linguaggio non è il più indicato per programmi in cui il tempo di esecuzione sia un fattore critico. Da linea di comando UNIX lesecuzione di un programma scritto nel linguaggio perl e contenuto in un file (che indichiamo con nome-file) può avvenire in due modi: perl nome-file nome-file In entrambi i casi viene attivato linterprete, però nel secondo caso ciò avviene solo se la prima riga del file nome-file ha una sintassi particolare (#!/usr/bin/perl) che a sua volta richiama linterprete.

9 BIOINFO3 - Lezione 199 PATH DEI PROGRAMMI Sia linterprete perl sia il programma da eseguire saranno localizzati in qualche posto nellalbero delle directory Normalmente linterprete Perl si trova nella directory /usr/bin (se non sappiamo dove si trova possiamo scoprirlo con il comando whereis) Quindi significa che esiste una directory usr che contiene una directory bin che contiene il programma perl (linterprete). usr bin perl

10 BIOINFO3 - Lezione 1910 Esiste una variabile dambiente chiamata PATH, definita dallamministratore di sistema, che specifica in quali directory ricercare un programma da eseguire. Per verificarne il valore possiamo eseguire il comando UNIX env che mostra i valori correnti di tutte le variabili dambiente (che sono settate allinizio del nostro collegamento) PATH DEI PROGRAMMI

11 BIOINFO3 - Lezione 1911 Se nel PATH è indicata la directory /usr/local allora potremo richiamare linterprete perl da qualunque directory in cui ci trovassimo. Altrimenti è necessario spostarsi nella directory /usr/local con un comando di cd (change directory) Oppure (sempre se /usr/local non fosse definita nel PATH) specificare il path completo del file da eseguire (linterprete perl) PATH DEI PROGRAMMI

12 BIOINFO3 - Lezione 1912 PATH DEI PROGRAMMI Lo stesso discorso vale per il nostro programma, scritto in Perl, che vogliamo eseguire. Supponiamo che esso si chiami pippo.pl Anchesso si troverà in una certa posizione nellalbero delle directory, ad esempio, se sono lutente bioinfo3-01, nella mia home directory, ovvero in /home/bioinfo3-01/ usr bin perl home bioinfo3-01 pippo.pl

13 BIOINFO3 - Lezione 1913 Se ci troviamo nella stessa directory dove si trova il file da far eseguire allinterprete possiamo riferirci ad esso semplicemente con il suo nome. Altrimenti, se siamo in unaltra directory dobbiamo specificare il suo path completo In questo esempio mi trovavo nella mia directory chiamata b. Posso quindi far eseguire direttamente il programma pgmm.pl residente proprio in b N.B. E comunque necessario dire che il programma si trova nella directory corrente usando./ in quanto la mia directory /b non si trovava nel PATH. Se invece mi trovavo in unaltra directory avrei dovuto specificare il path (assoluto o relativo del programma) PATH DEI PROGRAMMI

14 BIOINFO3 - Lezione 1914 DIRITTO DI ESECUZIONE E importante verificare che lutente che vuol eseguire il programma ne abbia effettivamente il diritto. Uno degli errori più comuni, quando si prepara un programma cgi-bin da far eseguire al server web httpd, è quello di dimenticarsi di concedere il diritto di eseguire il nostro programma allutente del sistema deputato allesecuzione del server web. Si può usare ls –al per verificare i diritti sui programmi di una certa directory Nellesempio tutti gli utenti del sistema hanno il diritto di eseguire (x) il programma pgmm.pl. La prima tripletta rwx assegna allutente nicola il diritto di leggere (r), scrivere (w) ed eseguire il file; gli utenti del gruppo lab potranno solo leggere ed eseguire (x) il file ma non scriverlo (modificarlo o cancellarlo), manca w; gli altri utenti (e quindi anche quello che esegue httpd) possono analogamente leggerlo o eseguirlo

15 BIOINFO3 - Lezione 1915 CHMOD Se desideriamo cambiare i diritti sui file possiamo eseguire il comando CHMOD. Di solito, come nellesempio appena visto, va bene assegnare come diritti il valore 755 prima posizione r seconda posizione w terza posizione x chmod 755 pgmm.pl

16 BIOINFO3 - Lezione 1916 PARAMETRI DEL PROGRAMMA A questo punto il programma è effettivamente eseguibile. Possiamo passare dei parametri al programma elencandoli separati da spazio nella stessa riga del comando di esecuzione, dopo il nome del programma nome-file parametro 1 parametro 2 parametro n oppure perl nome-file parametro 1 parametro 2 parametro n Vedremo come, dallinterno del programma Perl, sarà possibile recuperare questi parametri

17 BIOINFO3 - Lezione 1917 RE-DIREZIONE INPUT E OUTPUT Se non specificato diversamente il programma prende il suo input dallo standard input, indicato con il simbolo STDIN (la tastiera) e produce il suo output sullo standard output, indicato con il simbolo STDOUT (il video). Come abbiamo già visto con il comando mysqldump, usando i simboli è possibile re-direzionare input ed output. Ad esempio si potrà leggere linput da un file o stampare loutput su un altro file (ovviamente anche entrambi contemporaneamente)./pippo.pl risultati Nellesempio si chiede lesecuzione del file pippo.pl, posto nella directory corrente (in realtà ad essere eseguito è linterprete Perl se pippo.pl è scritto in PERL e contiene nella prima riga #!/usr/bin/perl). Linput è preso dal file prova della directory corrente, anziché da tastiera, e loutput scritto sul file risultati anziché a video. Il file risultati se non esiste già nella directory corrente (in questo caso viene sovrascritto!) viene creato ex-novo per loccasione.

18 BIOINFO3 - Lezione 1918 RIEPILOGO Linguaggi di programmazione Compilatori ed interpreti Esecuzione di un programma (Perl): Path del programma, diritti, parametri, input e output


Scaricare ppt "BIOINFO3 - Lezione 191 Un ALGORITMO rappresenta la successione dei passi da eseguire per risolvere un PROBLEMA. Lalgoritmo può essere descritto formalmente."

Presentazioni simili


Annunci Google