Tag Archives: giuseppe ciaburro

Documentazione ActivePython

python

ActivePython Documentation rappresenta una nutrita collezione di documentazione che viene fornita a corredo della IDE già dettagliatamente descritta nelle pagine precedenti.

Si tratta di una raccolta davvero completa che ci fornirà tutti gli argomenti necessari per apprendere le caratteristiche di base del linguaggio di programmazione Python se siamo dei principianti, mentre ci permetterà di arricchire le nostre competenze se siamo già pratici della sintassi di questo potente ma snello strumento per la programmazione ad oggetti.

Documentazione Python

Documentazione Python

Il sommario che si apre quando richiamiamo la documentazione Python ci offre i seguenti argomenti:

  • Active Python User Guide
  • What’s New
  • Python Documentation
  • Helpful Resources
  • PyWin 32 Documentation

 Come è possibile verificare, la documentazione a corredo del pacchetto ci permette di accedere ad una Guida all’uso di Active Python, alle novità introdotte dalla nuova versione, ad una raccolta di documenti su Python, alle risorse di aiuto ed infine alla documentazione su PyWin 32.

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Editor Pythonwin

python

L’editor Pythonwin è la versione Windows di Scintilla. Scintilla offre tutto ciò che ci si aspetta da un editor di Python, come un sistema di identazione intelligente, code-folding (che permette di nascondere delle porzioni di un file di codice mentre si lavora ad altre parti dello stesso file), e l’evidenziazione della sintassi.

Inoltre, la finestra di editor può essere divisa in due, fornendo uno strumento utile per un confronto efficace tra codici sorgente, mentre a sinistra della finestra dell’editor può essere aperto un pannello di servizio del browser che ci permette di navigare nel file system del computer.

Il layout compatto di questi pannelli, combinato con una interfaccia MDI, rende facile lavorare su un numero elevato di file nello stesso momento.

python

L’editor è facilmente personalizzabile attraverso delle comode finestre di dialogo. Pythonwin è stato uno dei primi Python IDE a sostenere il completamento automatico, l’avviso di rientro incoerente, e suggerimenti per le chiamate di funzioni, e lo fa abbastanza bene considerando che è estremamente difficile da attuare a causa della natura debolmente tipizzata di Python. È inoltre possibile controllare la correttezza sintattica del codice senza eseguirlo.

Pythonwin rappresenta una risorsa open source, scritto da Mark Hammond, e ora parte del pacchetto ActiveState Active Python, anche se può essere scaricato separatamente. Cosicchè Active Python nasce dal’accorpamento di una IDE completa, di un interprete Python e di una piccola selezione di librerie standard, cosa questa che sembra essere una tendenza nel mondo Windows.

 LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

La Guida in linea di Python

python

Per consultare la guida in linea di Python dobbiamo digitare il comando help() per ricevere informazioni sull’uso dell’interprete python. Dopo aver impartito il comando si riceve un messaggio di benvenuto dalla funzione di Guida in linea che ci invita nel caso fossimo dei principianti a consultare il tutorial disponibile su Internet al seguente url:

http://docs.python.org/tutorial/:

>>> help()
Welcome to Python 3.1!  This is the online help utility.

If this is your first time using Python, you should definitely check out the tutorial on the Internet at http://docs.python.org/tutorial/.

Enter the name of any module, keyword, or topic to get help on writing Python programs and using Python modules.  To quit this help utility and return to the interpreter, just type "quit".

To get a list of available modules, keywords, or topics, type "modules", "keywords", or "topics".  Each module also comes with a one-line summary of what it does; to list the modules whose summaries contain a given word such as "spam", type "modules spam".

help>

 Nella guida in linea, come già detto attivabile con il comando help(), basterà inserire il nome di qualsiasi modulo, parola chiave o un argomento per ottenere aiuto nella redazione di programmi Python. Per uscire poi dalla guida in linea per fare ritorno all’interprete, sarà sufficiente digitare “quit”. Per ottenere invece un elenco dei moduli disponibili, delle parole chiave previste o degli argomenti utilizzabili, sarà necessario digitare “modules”,”keywords”, oppure “topics”.

Ogni modulo poi ha un sommario contenuto nella guida in linea in cui vengono elencate tutte le sue caratteristiche, mentre per elencare i moduli la cui sintesi contiene una parola data dovremo aggiungerla alla parola modules. Ad esempio per avere informazioni sul modulo array inseriremo tale nome nella shell della guida in linea per ottenere le informazioni riportate nella figura.

python

É allora consigliabile consultare la guida in linea dell’interprete Python ogni qualvolta ci si trova a dover utilizzare una risorsa Python che non si conosce in modo adeguato; abbiamo visto che attraverso l’help della Python Interactive Shell sarà semplice ed immediato ottenerne una sufficiente documentazione.

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Array allocabili nel Fortran


FORTRANLe funzionalità di elaborazione degli Array nel Fortran 90 rappresentano i più significativi miglioramenti del linguaggio offerti dal nuovo standard. Tra queste assumono particolare importanza gli Array allocabili nel Fortran, cioè la possibilità di dichiarare un array con l’attributo ALLOCATABLE. Tale attributo indica che lo spazio per quell’array non viene riservato all’inizio dell’esecuzione del programma ma solo dopo l’esecuzione dell’istruzione ALLOCATE(), in cui si determina anche la dimensione dell’array.

Gli array possono essere molto grandi, in tal caso, richiedono molta memoria; pertanto, è spesso utile riservare questo spazio solo durante i tempi in cui è richiesto l’utilizzo dell’array. Questo non può essere fatto quando la dimensione dell’array è dichiarato durante la compilazione. Per questo motivo è conveniente utilizzare, per tali risorse, la cosiddetta ”free store” una memoria di run time per allocare così tale memoria solo durante l’esecuzione del programma. Questa memoria può essere utilizzata e ripristinata utilizzando i seguenti comandi.

Per dichiarare un array come allocabile utilizzeremo la seguente sintassi:

type, DIMENSION(:), ALLOCATABLE ::nome_array

Ad esempio scriveremo:

INTEGER, DIMENSION(:), ALLOCATABLE :: VETTORE

che crea un array intero di nome  VETTORE  a cui sarà allocata della memoria solo durante l’esecuzione ed in misura della sua grandezza.

Una volta che l’array non risulta più necessario, è importante deallocare la memoria in modo che possa essere utilizzata per altre risorse. Per fare questo utilizzeremo il comando DEALLOCATE. Quindi sarà importante utilizzare l’opzione STAT onde verificare che la deallocazione abbia avuto successo.

 DEALLOCATE (VETTORE)

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Come formattare i numeri nel formato esponenziale nel Fortran


FORTRANPer formattare i numeri nel formato esponenziale nel Fortran si utilizza il descrittore E che ci consente di controllare la rappresentazione dei numeri nel formato esponenziale. La forma generale di tale descrittore è:

rEw.d

dove r,w e d assumono il seguente significato:

  • d = Numero di cifre da visualizzare a destra del punto decimale
  • r = Fattore di ripetizione: specifica il numero di volte che un descrittore deve essere utilizzato
  • w = Larghezza di campo: numero di caratteri da utilizzare

Per meglio comprendere il concetto appena esposto analizziamo allora il seguente esempio di istruzione di uscita formattata:

E15.5

che indica di rapresentare il numero in notazione esponenziale con 15 caratteri di cui 5 a destra del punto.

Quindi se dovessimo rappresentare il numero 5.37939E6 con il formato precedente avremmo:

       0.53794E+07
   ____|____|____|
       5   10    15

infatti occorrono:

  • 1 carattere per il segno della mantissa;
  • 2 caratteri per lo zero ed il punto decimale;
  • 5 caratteri per la mantissa;
  • 1 carattere per la lettera E;
  • 1 carattere per il segno dell’esponente;
  • 2caratteri per l’esponente;

per un totale di 12 caratteri, avendo utilizzato 15 caratteri rendiamo il tutto più leggibile.

In generale deve valere la seguente espressione:

w >= d+7

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Come formattare i numeri reali nel Fortran

FORTRANPer formattare i numeri reali nel Fortran si utilizza il descrittore F che ci consente di controllare la rappresentazione dei numeri reali. La forma generale di tale descrittore è:

rFw.d

dove r,w e d assumono il seguente significato:

  • d = Numero di cifre da visualizzare a destra del punto decimale
  • r = Fattore di ripetizione: specifica il numero di volte che un descrittore deve essere utilizzato
  • w = Larghezza di campo: numero di caratteri da utilizzare

Per meglio comprendere il concetto appena esposto analizziamo allora il seguente esempio di istruzione di uscita formattata:

2F8.3

che indica di ripetere per due variabili il formato di numero reale con l’utilizzo di 8 caratteri di cui 3 a destra del punto.

Quando viene stampato un numero reale, la sua parte intera viene stampato come se si utilizzasse il descrittre Im-(d+1). Pertanto, se il numero di posizioni non è sufficiente per stampare completamente la parte intera, tutte le posizioni w saranno riempite con asterischi. Si noti che la parte intera contiene un segno e di conseguenza w deve essere maggiore o uguale a d + 2.
La parte frazionaria può avere più di d cifre. In questo caso, la (D+1)-esima cifra sarà arrotondata alla desima cifra.

Come formattare i numeri reali nel Fortran

Ad esempio, se il numero 1,73 è stampato con il formato F3.1 (usando cioè 3 posizioni per stampare un numero reale con la posizione più a destra utilizzata per la parte frazionaria), poiché la seconda cifra della parte frazionaria è 3, il risultato sarà 1.7 in quanto l’ultima cifra è arrotondata per difetto. Tuttavia, se si stampa il numero 1,76 con lo stesso formato F3.1, il risultato diventa 1.8 perché l’ultima cifra è arrotondata per eccesso.

La parte frazionaria può avere meno di d cifre. In questo caso, verranno aggiunti degli zeri finali.
Si noti che d può essere zero. In questo caso, nessuna parte frazionaria verrà stampata. Più precisamente, la posizione più a destra è il punto decimale.

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Come formattare i numeri interi nel Fortran


FORTRANPer formattare i numeri interi nel Fortran si utilizza ildescrittore I che ci consente di controllare la rappresentazione dei numeri interi. La forma generale di tale descrittore è:

rIw oppure rIw.m

dove r,w e m assumono il seguente significato:

  • m = Numero minimo di cifre da stampare
  • r = Fattore di ripetizione: specifica il numero di volte che un descrittore deve essere utilizzato
  • w = Larghezza di campo: numero di caratteri da utilizzare

Per meglio comprendere il concetto appena esposto analizziamo allora il seguente esempio di istruzione di uscita formattata:

INTEGER :: a = 1, b = -2  
WRITE(*,"(2I5.2)") a, b

Il descrittore di formato utilizzato è 2I5.2 che del tutto uguale a (I5.2,I5.2,) grazie all’utilizzo del contatore di ripetizione 2. Così, ognuna delledue variabili intere sarà restituita secondo quanto stabilito dallo specificatore I5.2 ottenendo così il risultato seguente:

___01__-02

Analizziamo nel dettaglio quanto appena scritto: abbiamo deciso di rappresentare le due varibili intere mediante lo stesso descrittore che ci impone di utilizzare almeno due cifre e cinque spazi. Allora per la varibile a che contiene il numero 1 abbiamo utilizzato le cifre 01 in quanto il descrittore ci imponeva l’utilizzo di almeno due cifre (ecco il significato della presenza dello zero), mentre abbiamo inserito tre spazi bianchi a sinistra del numero ( tre caratteri underscore _), in quanto occorrevano cinque spazi per rappresentare il numero così come indicato dal ddescrittore.

Come formattare i numeri interi nel FortranNelle operazioni di input i due descrittori Iw.m e Iw si comportano allo stesso modo in quanto gli eventuali spazi bianchi posizionati in testa al numero, inseriti per garantire la lunghezza del campo, vengono completamente ignorati.

Nelle operazioni di output invece il dato intero viene rappresentato in un campo di w caratteri con almeno m cifre, di cui le prime uguali a zero se il numero da rappresentare è composto da meno di m cifre. In tal caso, come specificato nell’esempio appena mostrato, la lunghezza del campo wviene garantita dall’inserimento di spazi bianchi. Nel caso invece il campo non fosse sufficiente per contenere tutte le cifre del valore intero da produrre, il campo sarà riempito con un numero di asterischi pari a w.

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

La funzione size di Matlab

MATLAB

La funzione size di Matlab rappresenta un modo per ricavare le dimensioni di un array multidimensionale, infatti ci consente di ricavare i valori di ogni dimensioni dell’array.

La sintassi della funzione size è la seguente:

d = size (X)
 [m, n] = size (X)
 size = m (X, dim)
 [D1, D2, D3 ,…, dn] = size (X),

Allora la seguente linea di codice:

d = size (X)

restituisce i valori di ogni dimensione della matrice X restituendola in un vettore con d (X) elementi. Se X è uno scalare, restituisce il vettore [1 1]. Mentre:

[m, n] = size (X)

restituisce la dimensione della matrice X in due variabili separate m e n. Così:

size = m (X, dim)

restituisce il valore della dimensione di X specificata dallo scalare dim. Infine:

[D1, D2, D3 ,…, dn] = size (X)

per n> 1, restituisce i valori delle dimensioni della matrice X nella variabili D1, D2, D3 ,…, dn, a condizione che il numero di n argomenti di uscita sia uguale a nDims (X).

La funzione size di Matlab

Esempio 1
Il valore della seconda dimensione di rand (2,3,4) è 3.

size = m (rand (2,3,4), 2)
m =
 3

La dimensione è fornita come un singolo vettore.

d = size (rand (2,3,4))
d =
 2 3 4

I valori di ciascuna dimensione vengono assegnati a una variabile separata.

[m, n, p] = size (rand (2,3,4))
 m =
 2
n =
 3
p =
 4

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Le procedure ricorsive in ambiente Matlab

MATLAB

Le procedure ricorsive in ambiente Matlab rappresentano una soluzione a diversi problemi che si incontrano nella pratica comune, nella sostanza una procedura ricorsiva non rappresenta altro che un programma che nella sua esecuzione chiama se stesso.

La Ricorsione è una costruzione subdola che permette di chiamare una funzione in se stessa. Ci sono molti pericoli usando la ricorsione. Il primo è che, come con i cicli while, è possibile per la funzione di chiamare se stesso per sempre e non fornire mai una risposta. La seconda è che la ricorsione può causare calcoli ridondanti che, anche se possono essere conclusi, possono richiedere molto tempo. Il terzo pericolo è che, mentre un programma ricorsivo è in esecuzione ha bisogno di spazio in più per accogliere l’overhead della ricorsione.

Ecco un semplice esempio di ricorsione:

function y=twoexp(n)

% y=twoexp(n). procedura ricorsiva per la valutazione di y=2^n.
% La procedura effettua una valutazione solo se n è maggiore di zero.

if n==0, y=1;
   else y=2*twoexp(n-1);
end

Il programma ha una struttura ramificata. La condizione n == 0 è la base della ricorsione. Questo è l’unico modo per ottenere che il programma smetta di chiamare se stesso. La parte contenuta in else è la ricorsione. Notate come il twoexp (n-1) si verifica proprio lì nel programma che sta definendo twoexp (n)! Il segreto è che è chiamata a un valore inferiore, n-1, e continuerà a farlo fino a quando non si mette n = 0. Una ricorsione di successo chiama sempre un valore inferiore.

matlab

L’uso della ricorsione può rendere più semplice la programmazione, il vantaggio consiste nel fatto che le funzioni ricorsive possono venire scritte tenendo conto della definizione ricorsiva stessa, per cui si ottengono facilmente dei programmi corretti senza dover simulare lo stato della memoria.

La tecnica ricorsiva permette di scrivere algoritmi eleganti e sintetici per molti tipi di problemi comuni, anche se non sempre le soluzioni ricorsive sono le più efficienti. Questo è dovuto al fatto che comunemente la ricorsione viene implementata utilizzando le funzioni, e che l’invocazione di una funzione ha un costo rilevante, e questo rende più efficienti gli algoritmi iterativi.

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Sottomatrici e operatore due punti in Matlab

MATLAB
I Vettori e le sottomatrici sono spesso usati in MATLAB per ottenere complessi effetti di manipolazione dei dati. L’operatore due punti, che viene spesso utilizzato in Matlab sia per generare vettori e sottomatrici di riferimento sia per indicizzare dei vettori, risulta fondamentale per la manipolazione efficiente di questi oggetti.

Un uso creativo delle sottomatrici e operatore due punti in Matlab consente di minimizzare l’uso di loop, che rallentano MATLAB, e rende il codice semplice e leggibile, senza che l’utente debba applicare alcuno sforzo per acquisire familiarità con essi.

L’ espressione 01:05 è in realtà il vettore riga [1 2 3 4 5]. I numeri non devono essere interi, né l’incremento deve essere necessariamente unitario. Per esempio:

0.2:0.2:1.2

ci permette di ottenere il vettore seguente

[0.2, 0.4, 0.6, 0.8, 1.0, 1.2]

mentre la notazione seguente:

5:-1:1

ci permette di ottenere il vettore seguente

[5 4 3 2 1]

Le dichiarazioni che seguono, per esempio, ci permettono di generare una tavola con i valori della funzione seno in specifici punti. Proviamo:

x = [0.0:0.1:7.0];
y = sin (x);
[x y]
plot(x,y)

Si noti che, poiché la funzione seno opera su ogni elemento del vettore argomento, si produce un vettore y degli stessi elementi del vettore x. In questo modo si ottiene il seguente grafico:

Sottomatrici e operatore due punti in Matlab

La notazione due punti può essere utilizzata per accedere a sottomatrici di una matrice. Allora definiamo una matrice A:

A = [1 2 3; 4 5 6; 7 8 9]

Allora per esempio digitando sulla riga di comando la seguente notazione

A (1:4,3)

si ottiene un vettore colonna costituito dai primi quattro elementi della terza colonna di A.
L’operatore due punti di per sé denota una riga o colonna:

A (:, 3)

è la terza colonna di A, mentre

A (1:4,:)

sono le prime quattro righe di A.

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Come definire una funzione in Matlab

MATLAB
Le Funzioni in matlab sono M-file che possono accettare argomenti d’entrata e forniscono argomenti di uscita. Il nome dell’M-file e della funzione deve essere lo stesso. Le Funzioni operano su variabili definite nel workspace proprio, separato dal workspace a cui si accede all’ingresso di MATLAB, cioè le variabili usate all’interno della funzione sono locali.

Vediamo come definire una funzione in Matlab con parametri in ingresso e parametri in uscita. Si voglia costruire una funzione che, dati i lati ”a” e ”b” di un rettangolo fornisca l’area ”A”, il perimetro ”p” e la diagonale ”d”. Indichiamo con (a; b) la lista d’ingresso (parentesi tonde) e con [A; p; d] la lista d’uscita (parentesi quadre) (si noti la virgola fra i parametri).

function [ A , p , d ] =rettang ( a , b )
A = a * b; 
p = 2 * ( a + b );
d =sqrt ( a^2 + b^2 );

Si noti che non c’è confusione tra la lettera A (maiuscolo) e la a (minuscolo) perchè MATLAB distingue le lettere maiuscole dalle minuscole. Questa function, salvata con il nome rettang.m può essere richiamata da un altro modulo o direttamente dalla finestra comandi ad esempio con il comando:

[area; perim; diag] =rettang(2; 3)

Quindi la sintassi da utilizzare è la seguente:

function [lista d'uscita] = nome (lista d'ingresso)

Un buono esempio è fornito dalla funzione rank. L’M-file rank.m è disponibile nella directory toolbox/matlab/matfun. Si può lanciare il file digitando:

rank

Il file in questione è il seguente.

function r = rank(A,tol)
% RANK Matrix rank.
% RANK(A) provides an estimate of the number of linearly
% independent rows or columns of a matrix A.
% RANK(A,tol) is the number of singular values of A
% that are larger than tol.
% RANK(A) uses the default tol = max(size(A)) * norm(A) * eps.
s = svd(A);
if nargin==1
tol = max(size(A)) * max(s) * eps;
end
r = sum(s > tol);

La prima linea di una funzione M-file inizia con la funzione keyword. La quale da il nome alla funzione ed ordina gli argomenti. In questo caso,ci sono due argomenti di input ed uno di output. Le righe seguenti,che iniziano con il simbolo %, rappresentano dei commenti per un aiuto, non vengono considerate nell’applicazione. Queste linee si stampano quando si digita:

help rank

La prima linea del testo di aiuto è la H1 line che MATLAB espone quando si ricerca aiuto digitando help on nella directory che contiene la funzione. Il resto del file rappresenta codice eseguibile MATLAB definendo la funzione. La variabile s presente nel corpo della funzione, cosìcome le variabili sulla prima fila r, A e tol, sono del tutto locali alla funzione; sono indipendenti e separate da qualsiasi variabile nel workspace di MATLAB. Questo esempio illustra un aspetto delle funzioni di MATLAB, che ordinariamente non si trova negli altri linguaggi di programmazione , un numero variabile di argomenti. La funzione rank può essere usata in molti modi diversi:

rank(A)
r = rank(A)
r = rank(A,1.e-6)

Ricordiamo ancora una volta che se nessun argomento di output è fornito, il risultato è immagazzinato nella variabile ans. Se il secondo argomento di input non è fornito, la funzione calcola un valore di default. Fra il corpo della funzione, due quantità chiamate nargin e nargout sono disponibili, le quali ci dicono il numero di argomenti di input e di output coinvolti in ciascun uso della funzione. La funzione rank usa nargin, ma non ha bisogno di usare nargout.

LINK DI APPROFONDIMENTO PER L’ARGOMENTO: