PARI/GP Introduzione.

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C++
Advertisements

Prof. Rebecca Montanari Anno accademico 2011/2012
La programmazione in linguaggio Listato
Realizzazione in PARI/GP
PROGRAMMARE IN PASCAL (le basi)
Sviluppo di programmi strutturati
I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI
MATLAB.
Dipartimento di Matematica
Algoritmi e Programmazione
INFORMATICA typedef.
Semantiche dei linguaggi di programmazione
L’ALGEBRA NEI PROGRAMMI
Intelligenza Artificiale 1 Gestione della conoscenza lezione 8
Sistemi basati su conoscenza Conoscenza e ragionamento Prof. M.T. PAZIENZA a.a
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.
Informatica 3 Codifica binaria.
Laboratorio di Linguaggi lezione IX: Dentro le Librerie Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese.
Corso di Informatica (Programmazione)
1 Corso di Informatica (Programmazione) Lezione 10 (12 novembre 2008) Programmazione in Java: espressioni booleane e controllo del flusso (selezione)
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.
CORSO DI PROGRAMMAZIONE II
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L’attività di.
Linguaggio di programmazione C (Introduzione alla programmazione)
DAL PROBLEMA ALL'ALGORITMO Problemi e Programmi Paolo Amico
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Adriana Pietramala Dott.ssa.
Fondamentidi Programmazione Corso: Fondamenti di Programmazione Classe: PARI-DISPARI Docente: Prof. Luisa Gargano Testo: Aho, Ulman, Foundations of Computer.
Marco Panella MATLAB Marco Panella
Procedure e funzioni nei linguaggi di alto livello Lab Programmazione - turno /2006.
Esempi di riuso del codice nei linguaggi di alto livello Lab Programmazione - turno /2006.
Programmazione Corso di laurea in Informatica
LA STRUTTURA MOLTIPLICATIVA
Lezione 3 informatica di base per le discipline umanistiche vito pirrelli Istituto di Linguistica Computazionale CNR Pisa Dipartimento di linguistica Università
Lezione 3 informatica di base per le discipline umanistiche vito pirrelli Istituto di Linguistica Computazionale CNR Pisa Dipartimento di linguistica Università
Strutture di controllo in C -- Flow Chart --
Usare rappresentazioni di lunghezza fissa porta ad avere valori non rappresentabili: Overflow indica un errore nella rappresentazione del risultato in.
Lezione II Laboratorio di Programmazione. Sito del corso Lo trovate a:
Corso di PHP.
Programmazione in Java Claudia Raibulet
INTRODUZIONE A MATLAB.
PROGRAMMAZIONE: linguaggi
Lezione 1 Linguaggi di programmazione – Algoritmi –Istruzioni
Lezione 7 Strutture di controllo Il ciclo while
Introduzione a XI Conferenza nazionale di Statistica febbraio 2013 Pillole formative di statistica.
BIOINFO3 - Lezione 201 Come in ogni corso di introduzione ad un linguaggio di programmazione, proviamo a scrivere lormai celebre primo programma di prova.
Corso di Programmazione in Java – Esercizio n° 001
ECDL Patente europea del computer
Appunti di Java (J2SDK 1.4.2, JDK 1.6.0) prof. Antonella Schiavon settembre 2009.
ND-partizione (A) n   A  somma  0 M  1/2 (  a i ) for i  1 to n do S[i]  choice ({true, false}) if S[i] then somma  somma + a i if somma > M then.
Programmazione imperativa
Lezione 3 Struttura lessicale del linguaggio
Programmazione in Python
Algebra di Boole.
Introduzione a Javascript
AlgoLab - Pile e Code Pile e code Laboratorio di Algoritmi 02/03 Prof. Ugo de’ Liguoro.
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (II) Istruzioni e strutture di controllo.
Arduino: introduzione alla programmazione
Didattica e Fondamenti degli Algoritmi e della Calcolabilità Terza giornata: principali classi di complessità computazionale dei problemi Guido Proietti.
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Rappresentazione in virgola mobile (floating-point) Permette di rappresentare numeri con ordini di grandezza molto differenti utilizzando per la rappresentazione.
1 Linguaggi: guardando la semantica §esistono un insieme di concetti semantici e di strutture di implementazione in termini dei quali si descrivono in.
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Rappresentazione dell'informazione 1 Se ho una rappresentazione in virgola fissa (es. su segno e 8 cifre con 3 cifre alla destra della virgola) rappresento.
Informatica e Informatica di Base
I Sistemi Operativi. Definizione Per Sistemi Operativi (di seguito SO) si intendono quei pacchetti software, a loro volta costituiti da più sottoprogrammi.
Esercizio n o 3 Si realizzi una calcolatrice a 32 bit con interfaccia “normale” (decimale) con LabView, utilizzando SOLAMENTE: –convertitore decimale (input)
UNIMORE University of Modena and Reggio Emilia Scratch Simone Calderara
Basi di Java Strutture base di Java. Basi di java ▪Variabili ▪Operatori ▪Condizioni e Cicli ▪Array.
Transcript della presentazione:

PARI/GP Introduzione

PARI/GP PARI/GP è la combinazione di due ambienti: PARI – libreria di funzioni (scritte in C) orientate alla teoria dei numeri GP – interprete che fornisce una interfaccia a linea di comando alle funzioni di PARI che permette di fruire di un ambiente di sviluppo per applicazioni numeriche. Le funzioni di PARI/GP sono raccolte in forma di libreria di funzioni C e possono essere richiamate da un qualunque programma in linguaggio C. Scaricabile dalla rete http://pari.math.u-bordeaux.fr/ Software libero con licenza GPL (General Public License)

Filosofia di PARI L’idea alla base del linguaggio è quella di fornire per le operazioni un risultato il più corretto possibile. Per esempio utilizza le frazioni come risultato delle divisioni intere: 1 / 3 fornisce come risultato “un terzo” 1. / 3 fornisce 0.333333333333333333333

Perché utilizziamo PARI Fornisce funzioni potenti dedicate alla teoria dei numeri Potremmo scriverle utilizzando le funzioni base (ma sarebbe oneroso in termini di tempo di programmazione) Dà la possibilità di operare con aritmetica intera con valori di lunghezza arbitraria Numeri «molto grandi»

Interfaccia «povera»

Help on line ? per ottenere il manuale in linea tutorial.pdf presente nei file di installazione user.pdf manuale più approfondito

Operatori +, -, *, / con ovvio significato / divisione (la filosofia del linguaggio fa sì che il calcolo sia il più possibile preciso: 4/3 fornisce come risultato quattro terzi) \ (divisione Euclidea) (divisione intera) % (resto Euclideo) (resto della divisione intera) ^ esponenziale operatori logici ! not && and || or i valori logici sono intesi come 1=true e 0=false

«macchina calcolatrice» E’ possibile utilizzare l’ambiente come «macchina calcolatrice» evoluta Esempio: 3+5 5^4 4/3 4\3 5! Permette di operare con numeri molto grandi 100! E’ possibile assegnare valori a variabili x = 2^10 y=x^x I valori booleani sono rappresentati da 0(false) e 1(true)

Strutture di controllo In PARI le strutture di controllo sono in realtà funzioni Esempio if if(<condizione>,<istr.vero>,<istr.falso>) if (voto>=6,print("promosso"),print("bocciato")) massimo(a,b)={ if (a>b,a,b);} Esempio while while(<condizione>,<corpo ciclo>) while(x<10,print(x);x++); numeriDaA(vmin,vmax)={ local n; n=vmin; while(n<=vmax, print(n); n++);}

for Sintassi ciclo for (ripetizione di una sequenza di istruzioni) for(<var>=<inizio>,<fine>,<istruzioni>) for(i=10,20,print(i*2)); for(i=10,20,print(i*2);print(i));

File di funzioni Le funzioni possono essere memorizzate in file di testo (con estensione .gp) I file possono essere letti con il comando read(nomefile) Suggerimento memorizzare i file nella sottocartella examples

Esempi di funzioni dieci()={ local n; for(n=1,10,print(n)); } valuta(voto)={ if (voto>=6,print("promosso"),print("bocciato")); numeriDaA(vmin,vmax)={ n=vmin; while(n<=vmax, print(n); n++ );

Esempi dispari(x)={ if((x%2)==0,0,1); } divisori(n)={ local d; fordiv(n,d,print(d));va fatt(n)={ if(n==0,1,n*fatt(n-1));

Funzioni utili … … per le nostre applicazioni di crittografia isprime(n) 1 se n è primo, 0 se non primo factor(n) restituisce la fattorizzazione di n

Alcuni esempi /* m modulo n */ modulo(m,n)=lift(Mod(m,n)) /* prodotto in Zn */ prodottoZn(x,y,n)=modulo(x*y,n) /* tavola della moltiplicazione Zn */ moltiplicazioneZn(n)= { local(mat,i,j); mat = matrix(n,n); for(i=1,n, for(j=1,n,mat[i,j]=prodottoZn(i-1,j-1,n)); ); print("tavola moltiplicazione ",n); return(mat); }

… esempi /* rappresentazione (max 8 cifre) binaria "a rovescio" */ rbinr(n)= { local(c); for(c=0,7,print(bittest(n,c))); } /* restituisce rappresentazione (max 8 cifre) binaria */ rbin(n)= local(ris); ris=""; for(c=0,7,ris=concat(bittest(n,c),ris)); return(ris);

Conversione lettere numeri /* restituisce un numero compreso fra 1 e 26 che rappresenta la posizione della lettera nell'alfabeto */ lToN(lett)= { local(numeri); /* array utilizzato per la conversione */ local(ris); /* risultato numerico della conversione */ num=Vecsmall(lett); /* array con rappresentazione numerica della stringa */ ris = num[1]; /* primo elemento dell'array (indici partono da 1) */ ris = ris - 64; /* rientra nell'intervallo 1::26 */ } /* dato un numero compreso fra 1 e 26 restituisce la corrispondente lettera dell'alfabeto */ nTol(num)=Strchr(num+64);

Videolezioni http://www.youtube.com/watch?feature=player_embedded&v=0G-9JzlrzBM