1 Corso di IMPIANTI DI ELABORAZIONE Seminario: Una panoramica sul PERL Docente: Ing. Vito AstaTutor: Ing. Paolo Molinari.

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C++
Advertisements

LINGUAGGIO DI PROGRAMMAZIONE C
INFORMATICA Algoritmi fondamentali
PUNTATORI Introduzione
PHP.
Algoritmi e Programmazione
Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A CDL in Ingegneria Elettronica - A.A Strutture dati dinamiche.
Fondamenti di Informatica CDL in Ingegneria Meccanica - A.A CDL in Ingegneria Meccanica - A.A Tipi di dati Ing. Simona Colucci.
Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A Tipi di dati Ing. Simona Colucci.
Università La Sapienza Web programming e programmazione multimediale 1 Web Programming e comunicazione multimediale Lezione 10: PHP.
Anno accademico Gli operatori e le espressioni in C.
Il linguaggio C Gli operatori e le espressioni C Language
Anno accademico Array e puntatori in C.
INFORMATICA Strutture iterative
Linguaggio MATLAB: costrutti tipici (IF,WHILE…)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Stringhe e Puntatori Marco D. Santambrogio – Ver. aggiornata al 18 Marzo 2013.
Process synchronization
File.
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
Laboratorio di Linguaggi lezione III Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea.
Laboratorio di Linguaggi lezione V Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
Laboratorio di Linguaggi lezione IV Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
Laboratorio di Linguaggi P R I M O C O M P I T I N O Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.
1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Il linguaggio Fortran 90: 4. Array: Vettori e Matrici
1 Implementazione di Linguaggi 2 Implementazione di Linguaggi 2 Federico Bernardi Type checking 2° parte Type checking 2° parte - Equivalenza di type expressions.
Approfondimento delle classi
1 Strutture Dinamiche Corso di Informatica A Vito Perrone.
Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio.
Dichiarazioni e tipi predefiniti nel linguaggio C
Fondamenti di Informatica A - Massimo Bertozzi TIPI DI DATO IN C++ What's in a name? That which we call a rose By any other name would smell as sweet.
I File.
Il Linguaggio C.
Le funzioni.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX AWK Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Shell: uso avanzato e script Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Corso di PHP.
4 Tipi di dati & variabili
Javascript: fondamenti, concetti, modello a oggetti
Java Contardi Carlo A.S. 2008/09.
CODIFICA Da flow-chart a C++.
2000 Prentice Hall, Inc. All rights reserved. Capitolo 10 (Deitel) Strutture, unioni ed enumerazioni Sommario Introduzione Definire le strutture.
Unità Didattica 3 Linguaggio C
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e stringhe Marco D. Santambrogio – Ver. aggiornata al 9 Agosto 2013.
14 marzo 2002 Avvisi:.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
Complessità di un algoritmo
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Approfondimenti sulle Classi.
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
CORSO DI PROGRAMMAZIONE II Lezione 22
Il linguaggio C Puntatori e dintorni.
Script di shell (bash).
Introduzione a Javascript
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Informatica 4 Funzioni. FUNZIONE: definizione MATEMATICA Relazione (o applicazione) binaria tra due insiemi A e B che associa a ogni elemento di A un.
1 Fabio Scotti – Università degli Studi di Milano Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( )
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Operatori di incremento e decremento
ALLOCAZIONE STATICA: LIMITI Per quanto sappiamo finora, in C le variabili sono sempre dichiarate staticamente –la loro esistenza deve essere prevista e.
Sommario Oggetti immutabili e non Tipi Primitivi: String, Arrays.
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Esercizi.
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (III)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – Ver. aggiornata al 14 Marzo 204.
Stringhe Una stringa è un vettore di char con un carattere costante \0 che indica la fine della stringa il terminatore rende differenti gli array di char.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – Ver. aggiornata al 28 Ottobre 2014.
Eprogram informatica V anno. Introduzione a PHP Introduzione La diffusione di PHP ha avuto un notevole incremento dalla fine degli anni Novanta a oggi,
Corso di IMPIANTI DI ELABORAZIONE
Transcript della presentazione:

1 Corso di IMPIANTI DI ELABORAZIONE Seminario: Una panoramica sul PERL Docente: Ing. Vito AstaTutor: Ing. Paolo Molinari

2 (P)ratical (E)xtraction and (R)eport (L)anguage Linguaggio parzialmente compilato e parzialmente interpretato Ottima portabililtà Orientato alla manipolazione delle stringhe (espressioni regolari) e alla formattazione dell’output Orientato agli oggetti Disponibilità (freeware) su rete dell’interprete, di una completa documentazione e di una vasta libreria

3 STRUTTURA DI UN PROGRAMMA #! /usr/bin/perl -w include BODY functions definitions NON NECESSARIE: dichiarazioni prototipi dichiarazioni variabili e tipi Ma comunque preferibili (use strict)

4 Esempio: #! /usr/bin/perl print “Come ti chiami?”; $name = ; chomp($name); if ($name eq ‘Paolo’) { print “Sei il tutor di Impianti\n”; } else { print “Non ti conosco!!!\n”; }

5 TIPI DI DATI scalar array hash (associative array) reference Minimo controllo Conversioni automatiche Concetto di “no unnecessary limits”

6 TIPI DI DATI: scalar Rappresentazione interna solo in virgola mobile a doppia precisione OPERATORI: + - / * % Sequenza di caratteri di 8 bit 2 tipi di valori (LITERAL) ammissibili: ‘stringa’ oppure “stringa” OPERATORI:. x (Rappresentazione di NUMERI e STRINGHE) Le variabili si indicano con il prefisso $ Conversione automatica dipendente dal contesto (operando) Interpolazione di scalari in stringhe

7 Esempio: Print ‘ciao\n’ # visualizza ciao\n print “ciao\n”# visualizza ciao e un newline $str = ‘pippo’; print ‘ciao $str’;# visualizza ciao $str print “ciao $str”;# visualizza ciao pippo $x = 10; $y = --$x; print “risultato = “. ($x + $y)# visualizza risultato = 19

8 TIPI DI DATI: array LITERAL: lista indicizzata di scalari (6, 7, pippo) (2, $temp) OPERATORI: assegnazione FUNZIONI: push, pop, unshift, shift, reverse, sort, chomp Gestione dinamica ed automatica della dimensione. Le variabili si indicano con il

9 Esempi di = ( );# array vuoto (dimensione = (1, 2, 3, 4, 5, 6, 7, 8, 9, = = (‘Luca’, ‘Giacomo’, = qw( Luca Giacomo = = 11, 12, 13); $len 10 ($len) (10)

10 Esempi di = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10); $x = $temp[2];# 3 $x = $temp[99];# undef $last_index = $#temp;# 9 $x = $temp[-3];# Slice, (3, 4) ($a, $b) = ($temp[1], $temp[4]);# $a= 2, $b=4, (2, 4)

11 Esempi di = qw( pippo pluto qui quo); $value = ‘qua’; $value);# (‘pippo’, ‘pluto’, ‘qui’, ‘quo’, ‘qua’) (‘pippo’, ‘pluto’, ‘qui’, ‘quo’) ‘minnie’);# (‘pippo’, ‘pluto’, ‘qui’, ‘quo’) (‘quo’, ‘qui, ‘pluto’, qw(qui pluto quo pippo); (‘pippo’, ‘pluto’, ‘qui’, ‘quo’)

12 TIPI DI DATI: hash LITERAL: non esiste una rappresentazione dedicata; vengono visti come array FUNZIONI: keys, values, each, delete simile all’array scalari al posto degli indici non esiste ordinamento fra i suoi elementi array associativi Le variabili si rappresentano con il prefisso %

13 Esempi: %anagrafica = (‘nome’ => ‘Mario’, ‘cognome’ => ‘Rossi’, ‘eta’ => 52 ); $nome = $anagrafica{‘nome’};# Mario $eta = $anagrafica{‘eta’}# = %anagrafica; # (‘nome’, ‘Mario’, ‘cognome’, ‘Rossi’, ‘eta’, 51) %anagrafica = qw( nome Angelo cognome Branduardi eta = keys %anagrafica;# (‘nome’, ‘cognome’, ‘eta’) $numero_chiavi = keys %anagrafica;# in contesto = values %anagrafica;# (‘Angelo’, ‘Branduardi’, 55) delete $anagrafica{‘nome’};

14 REFERENCE Costrutti per allocare memoria (malloc, calloc,…) puntatori Sintassi per creare strutture dati anonime reference CPERL int a, *p; &a; /* memorizza l’indirizzo di a */ p = &a;/* p punta ad a */ int b = *p;/* b e’ uguale ad a */ $a = ‘oggi’; \$a; # rappresenta l’indirizzo della variabile scalare $a $ar = \$a; # $ar punta a $a $b = $$ar; # $b vale ‘oggi’ Un reference è uno scalare che memorizza un indirizzo di memoria

15 Esempi di ref. e deref.

16 Strutture anonime ed annidate Si crea un puntatore senza partire da variabili già esistenti $ra = []; $rh = {}; Non sono realizzabili esplicitamente (array ed hash contengono solo scalari!) Ma i reference sono scalari e puntano a tutti gli altri tipi Uso dei reference per la realizzazione delle strutture annidate

17 Esempio di strutture annidate: vogliamo memorizzare tutti i fratelli di uno studente. %info = (‘nome’ => ‘Mario Rossi’, ‘eta’ => 21, ‘fratelli => [ {‘nome’ => ‘Lucio Rossi’, ‘eta’ => ‘15’ }, {‘nome’ => ‘Andrea Rossi’, ‘eta’ => ‘7’ } ] ) Il valore associato alla chiave ‘fratelli’ è un reference ad un array; gli elementi dell’array sono a loro volta reference ad hash.

18 Esempio di strutture annidate: come si costruiscono? La costruzione è implicita con il tipo di assegnazione via via effettuato. %hash1 = (‘nome’=> ‘Lucio Rossi’, ‘eta’, 15); %hash2 = (‘nome’=> ‘Andrea Rossi’, ‘eta’, 7); %info{“fratelli”} = (\%hash1, \%hash2); %info{“nome”} = “Mario Rossi”; %info{“eta”} = 21; Volendo eventualmente una anagrafica di questo tipo per tutti gli studenti, occorrerà definire un array di reference ad anagrafiche come quella appena vista: \%info)

19 STRUTTURE DI CONTROLLO if (expr) { … } else { … } unless (expr) { … } se expr è falsa if (expr1) { … } elsif (expr2) { … } else { … } while (expr) { … } finché è vera, esce non appena è falsa until (expr) { … } for (expr_inz; test; re-init) { … } foreach $t { … }

20 Esempio: $count = 0; while(chomp($input = ) and $count<10) { if($input eq 'n') { next; # riavvia il ciclo, ovvero riparte da while() } $log[$count] = $input; $count++; }

21 $count = 0; while(chomp($a = )) { if($a eq 'r') { $a = 'ZZ'; print "redo\n"; redo; } elsif($a eq 'l') { print "last\n"; last; } elsif($a eq 'n') { $count++; print "next\n"; next; } $array[$count] = $a; $count++; } print

22 %lovers = ('Romeo’ =>'Giulietta', 'Otello’ =>'Desdemona', 'Dante' =>'Beatrice'); ama(\%lovers); sub ama { my $rh = shift; foreach $lui (keys %$rh) { $lei = $rh->{$lui}; print "$lui ama $lei\n"; }

23 FUNZIONI sub MediaAritmetica($) { my $ra = shift;# ra è reference ad array my $somma;# per default inizializza a 0 # per tutti gli elementi dell’array foreach $valore { $somma += $valore; } return }