Laboratorio di Informatica di Informatica Gianluca Della Vedova Nozioni di base Variabili Input /...

30
Laboratorio di Informatica Gianluca Della Vedova Nozioni di base Variabili Input / Output Liste Funzioni Dizionari Stringhe Espressioni Regolari Operazioni su File Ordinare Laboratorio di Informatica Gianluca Della Vedova Univ. Milano–Bicocca http://www.statistica.unimib.it/utenti/dellavedova Laboratorio di Informatica Gianluca Della Vedova Nozioni di base Variabili Input / Output Liste Funzioni Dizionari Stringhe Espressioni Regolari Operazioni su File Ordinare Gianluca Della Vedova Laboratorio di Informatica Ufficio U7-244 http://www.statistica.unimib.it/utenti/dellavedova [email protected] Laboratorio di Informatica Gianluca Della Vedova Nozioni di base Variabili Input / Output Liste Funzioni Dizionari Stringhe Espressioni Regolari Operazioni su File Ordinare Obiettivi Metodologie di progettazione Paradigmi di programmazione Perl Laboratorio di Informatica Gianluca Della Vedova Nozioni di base Variabili Input / Output Liste Funzioni Dizionari Stringhe Espressioni Regolari Operazioni su File Ordinare Programma Un programma è una procedura automatica per la risoluzione di problemi. Un problema è un insieme (infinito) di possibili istanze. Risolvere una istanza = fornire una soluzione Risolvere un problema = fornire una soluzione per ogni possibile istanza

Transcript of Laboratorio di Informatica di Informatica Gianluca Della Vedova Nozioni di base Variabili Input /...

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Laboratorio di Informatica

Gianluca Della VedovaUniv. Milano–Bicocca

http://www.statistica.unimib.it/utenti/dellavedova

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Gianluca Della Vedova

Laboratorio di InformaticaUfficio U7-244http://www.statistica.unimib.it/utenti/dellavedova

[email protected]

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Obiettivi

Metodologie di progettazioneParadigmi di programmazionePerl

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Programma

Un programma è una procedura automaticaper la risoluzione di problemi.Un problema è un insieme (infinito) dipossibili istanze.Risolvere una istanza = fornire una soluzioneRisolvere un problema = fornire unasoluzione per ogni possibile istanza

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Programma

Un programma:riceve in ingresso una istanzaemette in uscita una soluzione.

Programma = funzione dall’insieme delle istanzeall’insieme delle soluzioni possibili.

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Terminazione - correttezza

Un programma:termina se, per ogni istanza, la computazionerichiede un numero finito di passi di calcolo(tempo).è corretto se termina e per ogni istanzacalcola una soluzione corretta.

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Sintassi - Semantica

Sintassi Semanticaforma della frase significato della frasesequenza di simboli risultato della computazione

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Sistema complesso

Un sistema (programma) complesso è formato da:

varie componentiche interagiscono fra loro attraversointerfacce ben definiteUn sistema interagisce con l’esternoattraverso interfacce (composizione)

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Tecniche di progettazione

Top-down = dal generale al particolareBottom-up = dal particolare al generale

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Top-down

Notare che un concetto (complesso) èformato da più concetti (più semplici) legatifra loro.Notare che un concetto (complesso) èformato da più concetti (più semplici)distinti.

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Bottom-up

Partire da concetti semplici ed ottenere unconcetto lievemente più complesso.Estendere il linguaggio con nuovefunzionalità.

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Principi della progettazione

Semplicità: il disegno deve essere semplice,sia l’implementazione che l’interfaccia.Correttezza: il disegno deve esser corretto intutti i suoi aspetti. Non sono ammessi errori.Completezza: il disegno deve coprire tutti icasi ragionevolmente attesi. La semplicitànon può influenzare troppo la completezza.

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Principi della progettazione

Consistenza: il disegno deve essereconsistente, può essere leggermente piùcomplesso o meno completo al fine di evitareincosistenze. La consistenza è importantecome la correttezza.

[Richard Gabriel]

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Programma

Programma sorgente: sequenza di istruzioniin un adeguato linguaggio di programmazione(comprensibile da persone).Programma eseguibile: sequenza di istruzioniin linguaggio macchina, direttamenteeseguibili dal calcolatore (non comprensibileda persone).

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Compilatore

riceve un programma sorgenteemette un programma eseguibilecorrispondente.Non esegue direttamente il programma.

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Interprete

riceve un programma sorgentetrasforma una istruzione in un insiemeequivalente di istruzioni in linguaggiomacchina,esegue tali istruzioni una alla voltapoi passa alla istruzione successiva delprogramma sorgente.Non genera un programma eseguibile.

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Problema 1

Estrazione del LottoEstrazione di 5 numeri diversi fra loro ecompresi fra 1 e 90

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Problema 2

Valutazione di espressione algebrica confrazioniEsempio: 1

2 + (13 + 2

7) ∗23

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Perl

Perl è:un linguaggio interpretatoun linguaggio strutturato con estensioni adoggettiin grado di gestire nativamente sequenze dicaratteri (stringhe)

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Schema di programma

Ogni programma perl inizia con la riga

#!/usr/bin/perl}oppure

#!C:\Perl\bin\perl.exe

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Schema di programma

Ogni programma perl inizia con la riga

#!/usr/bin/perloppure

#!C:\Perl\bin\perl.exe

Anche se è preferibile usare

#!/usr/bin/perl -w

al fine di visualizzare tutti i warning.

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Sintassi

Ogni istruzione viene terminata con ;Un blocco di istruzioni è una sequenza diistruzioni racchiusa fra parentesi graffe {}.Un blocco di istruzioni è logicamenteequivalente ad una singola istruzione.Il cancelletto inizia un commento che terminaa fine riga# questo è un commento

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Variabili

Una variabile è un contenitore per un datoOgni variabile viene identificata con il suonome.Il nome di una variabile inizia col dollaro $valore = dato contenutoNome =⇒ valore

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Variabili

Il valore di una variabile può cambiare neltempol valore di una costante non può cambiare neltempoMolte operazioni in un programma sonomodifiche di valori di una variabile$c = 1;

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Assegnamenti

L’assegnamento determina il valore di unavariabile ($c = 1;)Un assegnamento ha una parte sinistra(lvalue) ed una parte destra (rvalue)La parte destra può essere una espressionecomposta ($c = $b + 1;)Una variabile può apparire in entrambe leparti ($p = $p+1)Più variabili possono essere il membro sinistrodi un assegnamento ($a,$b)=($c,$d);

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Tipi

Tipo variabile = insieme valoridichiarazione = decidere il tipo della variabile(intero, carattere)La dichiarazione avviene prima dell’uso.Ogni linguaggio ha tipi predefiniti e strumentiper crearne di derivati (stringa comesequenza di caratteri)

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Scopo

our $varglobale;

my $varlocale;

Le variabili locali hanno vita (scopo) soloall’interno del blocco in cui sono statidichiaratiSe esterne ad ogni blocco, le variabili localihanno per scopo il file.

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Condizioni

condizione: predicato logico da valutarevalore di una condizione: vero (true, 1) ofalso (false, 0)valutazione: determinare il valore di unacondizione in un contesto.g ≥ 10

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Condizioni

Operatori booleani: and, or, notvalutazione pigra di una condizione C1 and C2

Una istruzione condizionale viene eseguitasolo se la condizione ha un certo valore (Ifcondizione then Istruzione1 elseIstruzione2)

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Condizioni

Gli operatori di confronto fra interi sono iseguenti: == < > >= <= !=Fra stringhe eq neGli operatori logici sono NOT, AND, OR,denotati con ! && || oppurenot and orOgni condizione viene racchiusa fra parentesitondeFALSO=0, VERO6= 0

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Variabili e tipi

Una variabile può essere di tipo numerico ostringa.Un numero può essere intero, con virgola o innotazione scientificaUna costante stringa viene racchiusa da apici$a=’frase di quattro parole’;La variabile di default è $_

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Incrementi

Esistono vari operatori per incrementare unavariabile$a+=1;

$a++;

++$a;

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Assegnamenti speciali

$a*=2;$a/=2;$a––;$a.=’suffisso’;

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Input e Output

Per stampare a schermo: print "testo $a\n";Per leggere una riga da tastiera: $a =<STDIN>;

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Redirezione

É possibile ricevere i dati da un file:perl programma.pl < dati.txtÉ possibile inviare i dati ad un file:perl programma.pl > risultati.txtperl programma.pl > risultati.txt <dati.txt

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Condizione: if

if (condizione) {blocco 1

} else {blocco 2

}

condizione vera ⇒ si esegue il blocco 1altrimenti si esegue il blocco 2da else in poi è opzionale

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Esempio if

if ($n < 100) {print "$n piccolo";

} else {print "$n grande";

}

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Forme alternative

print "$n grande" unless ($n < 100);

print "$n piccolo" in ($n < 100);

($n < 100)? print "$n piccolo": print "$n grande";

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Array

Un array è una sequenza di variabili scalari,identificate con un indice (numero intero).indice minimo = 0$vettore[0]=4;$vettore[1]=6;

massimo indice = $#vettore

Indici utilizzati 0 ...$#vettore

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Array

Il nome di un array inizia con @Esempio: my @vettore;Gli array implementano funzioni N 7→ insieme$array[$indice]

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Visita sequenziale di array

Leggere un array un elemento alla voltaforeach $elemento (@lista)

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Visita sequenziale di array

foreach my $elemento (@lista) {print "$elemento\n";

}

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Visita sequenziale di array

foreach my $elemento (@lista) {print "$elemento\n";

}print "$elemento\n";

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Subroutine

Funzioni definite nel programmaEstensione del linguaggioIndistinguibili da funzioni native dellinguaggio

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Subroutine

Invocate con dei parametri.Parametri formali o attualiRestituiscono un valoreSubroutine = funzioniPermettono la suddivisione in modulicooperanti

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Subroutine

Distinzione fra implementazione e interfacciasubroutine corretta ⇒ implementazionetrascurabile

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Subroutine

identificate dalla parola chiave subil corpo è racchiuso da parentesi graffegli argomenti passati sono in @_variabili locali alla subroutine devonoessere precedute da my quando vengonousate la prima volta

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Subroutine

nel programma viene invocata con il suonome e gli argomenti fra parentesi tondese non ci sono argomenti si passa la listavuotavalore calcolato = returnErrore Rightarrow return undef;

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Esempio sub

#!/usr/bin/perl

$a=<STDIN>;$b=<STDIN>;$p=1;while ($b>0) {

$p=moltiplica($p,$a);$b--;

}print "$p\n";

sub moltiplica {return $_[0]*$_[1];

}

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Iterazione

Ripetizione di operazioniSolo se una condizione è vera.whileUn determinato numero di voltefor

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Valutazioni di espressioni

Le espressioni logiche vengono valutate:da sinistra a destrasolo se necessario

espr1 and espr2espr1 or espr2

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Valutazioni di espressioni

ogni istruzione restuisce un valore:vero = niente erroriundef = erroriTest: defined

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Esempio for

for $elem (@array) {print "$elem\n";

}

for ($i=0;$i<=$#array;$i++) {print "$array[$i]\n";

}

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Iterazione: for

for (pre-istruzioni; condizione; post-istruzioni) {blocco

}

1 Si eseguono le pre-istruzioni;2 Se la condizione è falsa, stop3 Si esegue il blocco;4 Si eseguono le post-istruzioni;5 Se la condizione è vera si torna al punto 3

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Esempio for

for ($i=0;$i<=$#array;$i++) {print "$array[$i]\n";

}

for $i (0..$#array) {print "$array[$i]\n";

}

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Problema

1 Dato un intero N dire se N è primo.2 Dire se N sia divisibile per p, p ≥ 23 Se N non è primo, allora è divisibile per un

intero p con p ≤√

N

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Soluzione

#!/usr/bin/perl -wmy $n=<STDIN>;my $p=2;while ($p <= sqrt($n)) {

if (($n/$p)==int($n/$p)) {print "N non è primo\n";exit;

}$p++;

}print "N è primo\n";

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Soluzione

#!/usr/bin/perl -wmy $n=<STDIN>;for (my $p=2; $p <= sqrt($n); ++$p) {

if (($n/$p)==int($n/$p)) {print "N non è primo\n";exit;

}}print "N è primo\n";

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Esercizio

Scrivere un programma Perl con le seguentispecificheInput: due numeri interi a, b > 0Output: il più grande numero intero chedivida esattamente sia a che b

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Esercizio

#!/usr/bin/perl -wmy ($a,$b);

($a,$b)=<STDIN>;

if ($a<$b) {($b,$a)=($a,$b);

}# a questo punto $a >= $bwhile ($a>$b) {

$a-=$b;if ($a<$b) { ($b,$a)=($a,$b); }

}print "$a\n";

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Tipi di dati astratti

struttura datioperazioni che coinvolgono la struttura dati

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Lista

creare una lista nuova.aggiungere un elemento in fondo (o all’inizio)della listarimuovere il primo (o l’ultimo) elemento dellalistadare il valore del primo (o dell’ultimo)elemento della listadire se la lista è vuota

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Esempio

Problema: cercare il valore massimo contenuto inun array

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Esempio

Problema: cercare il valore massimo contenuto inun array

my $max=0;foreach my $elem (@array) {

if ($elem>$max) {$max=$elem;

}}

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Liste

Una lista è un array.@lista@lista=(4,6);Le parentesi costruiscono una lista@lista=qw(4 6);

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Liste

@lista = ( elemento1, elemento2,elemento3);

$#lista

foreach $elemento (@lista)

push @array, @suffisso

push, pop per suffissi,unshift, shift per prefissi

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Esercizio

Scrivere un programma Perl con le seguentispecificheInput: un numero intero a > 0Output: la sequenza dei numeri primi il cuiprodotto è a

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Esercizio

#!/usr/bin/perl -wuse strict;my ($a,$d);

for ($a=<STDIN>;$a/2==int($a/2);$a/=2) {print ’2 ’;

}

for ($d=3;$d<=sqrt($a);$d+=2) {for (;$a/$d==int($a/$d);print "$d ", $a/=$d) {}

}print "$a" if ($a>1);print "\n";

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Valutazioni di espressioni

#!/usr/bin/perl -w

($a=1) && print ’$a vale uno’;

($a=1) && print "$a vale uno";

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Esempio while

while ($a>0) {print "*";$a--;

}print "\n";

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Iterazione: while

while (condizione) {blocco

}

1 Se la condizione è vera:2 si esegue il blocco;3 si torna al punto 1

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Esempio while

#!/usr/bin/perl -w

($x,$y)=<STDIN>;

while ($y>0) {$x++;$y--;

}print "$x\n";

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Forma alternative

until ($y<=0) {$x++;$y--;

}

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Programmi = Funzioni

programma: riceve in ingresso dei valori edemette un valorePrecondizioni: valgono prima di unaoperazionePostcondizioni: valgono dopo una operazioneInvarianti: valgono sempreSono tutte asserzioni

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Esempio

1. Read(x,y)2. while (y>0)3. x := x+14. y := y-1

5. endwhile6. Write(x)

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Esempio

1. Read(x,y)2. while (y>0)3. x := x+14. y := y-1

5. endwhile6. Write(x)

Postcond. x=xinizio+yinizio

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Esempio

1. Read(x,y)2. while (y>0)3. x := x+14. y := y-1

Inv. x+y=xinizio+yinizio5. endwhile6. Write(x)

Postcond. x=xinizio+yinizio

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Esempio

Precond. y>= 01. Read(x,y)2. while (y>0)3. x := x+14. y := y-1

Inv. x+y=xinizio+yinizio5. endwhile6. Write(x)

Postcond. x=xinizio+yinizio

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Hash

Hash=DizionarioGli hash implementano funzioni generiche.Chiave ⇒ CampoNome dizionario inizia con %.%associa.

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Hash

%dizionario=( chiave1, campo1, chiave2,campo2);%hash=(chiave1 => campo1,chiave2 => campo2);

$dizionario{chiave} = campo

while ( ($k,$v) = each %dizionario) {print $k => $v\n;

}

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Hash

keys %dizionario elenco chiavivalues %dizionario elenco campiexists $hash{chiave} esiste la chiave?defined $hash{chiave} è definita lachiave?delete $hash{chiave} cancella l’elemento.

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Array Slice

($primo,$secondo) = (@lista)[1,2];

($primo,$ultimo) = (@lista)[1,-1];

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Hash Slice

my @nomi =@daCognomiANomi{’Rossi’, ’Bianchi};

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Librerie

Le librerie vengono incluse con il comandouseuse Getopt::Long;Il comando use serve ad invocare delledirettiveuse strict;

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Substr

substr calcola la sottostringa di lunghezzafissata a partire da una posizione.$substring=substr($testo,5,3);posizione: 5, lunghezza: 3.Indice minimo = 0;$substring=substr($testo,5,1000);$substring=substr($testo,5,-1);substr($testo,5,-1) = ’fine’;indice massimo = -1

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Split - Join

@l=split(/x/,$testo);Divide il testo usando x come separatore$testo=join(’-’,@lista);Fonde gli elementi di @lista usando - perunire

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Index - Rindex

index calcola la posizione più a sinistra delpattern.$pos=index($testo,’a’);rindex calcola la posizione più a destra delpattern.$pos=rindex($testo,’a’);indice minimo = 0

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Espressioni regolari

un carattere auna concatenazione di espressioni regolariabcun insieme di caratteri [abc], [a-c], [^d]espressione regolare = regex

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Pattern matching

Una espressione regolare appare in unastringa?$testo=’stringa’($testo=~/pattern/) è una condizioneverificabile.($testo=~/[a-c]/) è vera($testo=~/[c-f]/) è falsa

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Caratteri speciali

un carattere “jolly” (wildcard) .inizio riga ^fine riga $cifra \dspazio \s

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Modificatori

Le parentesi tonde hanno il significatoabituale di raggruppare una sottoespressioneil backslash \ permette di cercare caratterispeciali ( \., \$)il punto interrogativo vuole dire che ilcarattere (o la sottoespressione)immediatamente precedente può apparire unavolta o non apparire

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Modificatori

il + vuole dire che il carattere (o lasottoespressione) immediatamenteprecedente deve apparire una o più volte.L’asterisco * vuole dire che il carattere (o lasottoespressione) immediatamenteprecedente può apparire un numero arbitrariodii volte (anche zero)

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Strategia

La sottostringa del testo che soddisfa il patternviene cercata con una strategia:

ingorda, perchè cerca la sottostringa piùlungasinistrorsa (leftmost) perchè cerca lasottostringa più a sinistra.(abracadabra=~/[bd](ab)?.*[ar]/)bracadabra

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Operatori non ingordi

Per avere una strategia il meno ingorda possibile,aggiungere ? agli operatori.(abracadabra=~/[bd](ab).*?[ar]?/)

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Modificatori

Alcune opzioni permettono di ottenere alcunevarianti di pattern matching:

/i: maiuscole=minuscole/x: si possono mettere commenti nel pattern/g: si cercano tutti match

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Operatori

Ricerca: $testo=~/pattern/Ricerca: $testo=~m/pattern/Sostituzione:$testo=~s/origine/destinazione/

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Variabili automatiche

Dopo un’operazione di pattern matching, iltesto che realizza il pattern si trova nellevariabili $1, $2, . . .Le parentesi determinano quale variabile

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Variabili automatiche

Nel pattern si usa \1, \2, . . .Si possono usare variabili.

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Restituzione

Il risultato di un’operazione di pattern matching èse assegnato ad uno scalare e la ricerca non èglobale: un valore booleano.se assegnate ad uno scalare e la ricerca èglobale: la sottostringa trovata.se assegnato ad una lista: una listacontenente se è stato trovato il pattern.

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

File

I file vengono identificati grazie al nomeI file vengono gestiti tramite un nomesimbolico (file handler)

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Gestione file

open($fh, <<, ’nomefile’);

minore ⇒ lettura, maggiore ⇒ scrittura,»>⇒ appendere.while (<$fh>) {

print STDOUT $_;}while ($line=<$fh>) {

print $line;}

close ($fh);

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

File

Prima di essere utilizzati i file devono essereapertiAll’apertura bisogna specificare la modalità diaccesso (lettura/scrittura)Alcuni file sono già aperti e disponibili:STDIN STDOUT STDERR

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Scrittura su file

Per scrivere su file la sintassi è’:print $fh output;$fh è il file handler del file su cui scrivereoutput è l’insieme dei dati da scrivereSe si omette il file si scrive su standardoutput, quindi...print questo stampa su schermo

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Scrittura su file

Sintassi di output:$variabile stampa il valore di $variabile’’testo con $variabile’’ la variabileviene sostituita dal suo valore’testo con $variabile’ la variabile nonviene sostituita dal suo valore’testo con ’.$variabile utilizza laconcatenazione

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Lettura da file

I file vengono letti una riga alla voltaPer leggere una riga di un file la sintassi è’:$a=<$fh>;L’istruzione sopra assegna alla variabile $a ilcontenuto della prima riga del file.Ogni file viene letto sequenzialmenteQuindi la seconda volta che viene eseguito$a=<$fh>; si legge la seconda riga

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Lettura da file

$a=<$fh>;viene valutato falso se il file è finitowhile($a=<$fh>) {print $a;

}chomp($a); rimuove il carattere diseparazione di riga eventualmente presente

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Ricorsione

Una subroutine invoca se stessa.Calcolo fattoriale n!

0! = 1n! = n(n − 1)! per n ≥ 1

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Fattoriale

#!/usr/bin/perl -w

my $n=<STDIN>;chomp $n;print fattoriale($n)."\n";

sub fattoriale {my $n=shift;return 1 if ($n<2);return $n*fattoriale($n-1);

}

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Ricorsione

Non sempre efficienteSempre riscrivibile come iterazioneGestendo la pila delle chiamate effettuateTalvolta più semplice della soluzione iterativa

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Calcolo fattoriale

#!/usr/bin/perl -wuse strict;my ($n,$f);$n=<STDIN>;

for (my $f=1;$n>1; $n--) {$f*=$n;

}print "$f\n";

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Esercizio

I numeri di Fibonacci sono definiti comesegue: Fib(0) = Fib(1) = 1,Fib(n) = Fib(n − 1) + Fib(n − 2) se n ≥ 2.Scrivere un programma Perl con le seguentispecificheInput: un numero intero n > 0Output: l’n-esimo numero di Fibonacci

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Esercizio

#!/usr/bin/perl -w

use strict;my $n;my $f;

$n=<STDIN>;$f=fib($n);print "$f\n";

sub fib{

my $n;$n=$_[0];

return 1 if ($n<2);return (fib($n-1)+fib($n-2));

}

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Esercizio

Albero binario: una radice, ogni nodo ha 0 o2 figli, ognuno dei quali è un nodo.In ogni nodo viene memorizzato un numero.

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Esercizio

Dato un albero binario, i cui nodi sonoetichettati da un intero, si definisce visita inpostordine la sequenza di etichette in cuil’etichetta di un nodo v compare dopo leetichette di tutti i discendenti di v .Determinare una corretta struttura dati perrappresentare un albero binario.Scrivere un programma Perl che calcola lavisita in postordine di un albero binario.

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Ordinare

@ordinato= sort @lista; oppure@ordinato= sort criterio @lista;criterio confronta due elementi

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Ordinare

sub criterio {# $a,$b i due valori# restituire -1,0,1# come ordine fra i due# elementi}

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Ordinare

@ordinato = sort{ $hash{$a} <=> $hash{$b} }keys %hash;

Ordina le chiavi del dizionario secondo i campi

Laboratoriodi

Informatica

GianlucaDella

Vedova

Nozioni dibase

Variabili

Input /Output

Liste

Funzioni

Dizionari

Stringhe

EspressioniRegolari

Operazionisu File

Ordinare

Interfacciarsi con l’OS

Gli apici rovesciati eseguono il comando eassegnano il risultato.system(comando);system attende il risultato di comando