Un ALGORITMO rappresenta la successione dei passi da eseguire per risolvere un PROBLEMA. - PowerPoint PPT Presentation

1 / 18
About This Presentation
Title:

Un ALGORITMO rappresenta la successione dei passi da eseguire per risolvere un PROBLEMA.

Description:

Title: Nessun titolo diapositiva Author: Nicola Cannata Last modified by: Nicola Vitulo Created Date: 6/16/2001 2:09:36 PM Document presentation format – PowerPoint PPT presentation

Number of Views:72
Avg rating:3.0/5.0
Slides: 19
Provided by: Nicola187
Category:

less

Transcript and Presenter's Notes

Title: Un ALGORITMO rappresenta la successione dei passi da eseguire per risolvere un PROBLEMA.


1
RICAPITOLANDO
  • 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

2
SCHEMA LOGICO
  • Possiamo ricapitolare questi concetti in un
    semplice schema

?
ALGORITMO
PROGRAMMA
PROBLEMA
?
3
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 11 con il
linguaggio macchina,
4
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 ALGOL ALGOrithmic Language (applicazioni
matematiche) FORTRAN FORmula TRANslation
(applicazioni scientifiche) COBOL COmmon
Business Oriented Language (appl.
gestionali) ANNI 70-80 BASIC Beginners All
purpose Symbolic Instruction Code (per
principianti) PASCAL LISP LISt Processing
(elaborazioni di liste ed A.I.) PROLOG PROgramming
LOGic (Logica Matematica) C C (Programmazion
e ad oggetti)
5
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
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
TRADUTTORE
PROGRAMMA IN ASSEMBLER
PROGRAMMA IN LINGUAGGIO MACCHINA
ASSEMBLATORE
7
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
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
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
PATH DEI PROGRAMMI
  • 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)

11
PATH DEI PROGRAMMI
  • 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)

12
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/

home
bioinfo3-01
pippo.pl
usr
bin
perl
13
PATH DEI PROGRAMMI
  • 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)

14
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
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
  • 4 2 1
  • user 7 r w x
  • group 5 r - x
  • other 5 r - x
  • Esempio
  • chmod 755 pgmm.pl

16
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 parametro1 parametro2 parametron
  • oppure
  • perl nome-file parametro1 parametro2
    parametron
  • Vedremo come, dallinterno del programma Perl,
    sarà possibile recuperare questi parametri

17
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 lt o gt è 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 ltprova gtrisultati
  • 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
RIEPILOGO
  • Linguaggi di programmazione
  • Compilatori ed interpreti
  • Esecuzione di un programma (Perl) Path del
    programma, diritti, parametri, input e output
Write a Comment
User Comments (0)
About PowerShow.com