Monthly Archives: September 2014

Impostazioni disegno in Autocad

La finestra di dialogo impostazioni disegno si apre cliccando sul menu a tendina Strumenti e
selezionando l’omonimo comando impostazioni disegno, in questo modo si apre la seguente finestra:

autocad4

Scheda snap e griglia

Si può innanzitutto attivare o meno lo snap griglia nella modalità rettangolare ed assonometrico oppure polare. Lo snap costituisce il più piccolo spostamento permesso al cursore nelle due direzioni.

Autocad per mette di trovare facilmente dei punti speciali di un oggetto del nostro disegno attraverso il comando Snap ad oggetto (OSNAP), punti quali una estremità di una linea il centro di un cerchio etc.La scheda delle proprietà del comando OSNAP si visualizza dalla precedente cliccando su Objept Snap e si ottiene la seguente finestra:

autocad5

In essa si trovano già dei parametri selezionati di default quali intersezione tra linee, centro di un rettanglo etc ma se ne possono selezionare degli altri. Tale comando ci permetterà di realizzare i nostri disegni in modo più veloce.

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Operazioni di zoom in Autocad

Zoom

I comandi di Zoom si impartiscono dal menu VIEW. Il comando di zoom è usato per cambiare  la vista. Ci sono molti tipi di zoom ma i più importanti sono:

-zoom extents,
-zoom previous,
-zoom window
-zoom dynamic.  

Lo Zoom dinamico è il più utile dei comandi zoom, ma anche quello più difficile da imparare.
Quando si seleziona lo zoom dinamico si entra in una finestra bianca che rappresenta la vista corrente.

autocad3

Si può ridimensionare la finestra con un click sinistro del mouse trascinando fino alla grandezza desiderata, poi click sinistro di nuovo per memorizzare la grandezza scelta .

Dopo aver scelto la grandezza della zoommata basta spostare tale finestra nell’area che si intende ingrandire, e quindi con un click destro determinare l’ingrandimento.

A questo punto il display mostra lo zoom del disegno desiderato.

  1. Zoom extents permette di ingrandire tutta l’area di disegno così da mostrare tutti gli oggetti in essa contenuti.
  2. Zoom window ingrandisce quella parte dello schermo delimitata da una finestra realizzata attaverso due click sinistri successivi sull’area di disegno. (Nota: il comando zoom window può permettere solo ingrandimenti.)
  3. Zoom previous ritornerà alla vista precedente.

I comandi di Zoom possono essere impartiti con la tastiera digitando “Z” + , quindi  l’abbreviazione adatta per il tipo specifico di funzione dello zoom. Esempio: Digitando “Z”  poi “D” si ottiene lo zoom dinamico. Da notare che lo zoom window è quello di default.

Panning  

Il Panning è usato per muoversi lungo un disegno. Per cominciare utilizzare il comando pan  e poi delineare l’area che si vuole visualizzare

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Area di disegno di Autocad

L’area di disegno che è quella che si presenta ai nostri occhi quando avviamo autocad è costituita almeno da due schede: una chiamata Modello l’altra chiamata Layout ma le schede Layout possono essere illimitate potendole personalizzare.

La scheda modello rappresenta il foglio da disegno sul quale realizzare il nostro lavoro, senza preoccuparci di come poi il disegno verrà stampato.

Su tale area il cursore assume la forma di una croce, tale area può essere suddivisa in più sottoaree per poter suddividere il nostro disegno in più parti con il seguente comando:

Visualizza==>Finestre==>Nuove finestre

si può in questo modo disegnare su una finestra per volta passando dall’una all’altra con un
semplice click.

autocad2

Nella scheda layout è contenuto il disegno realizzato nella scheda modello, opportunamente
scalato pronto per la stampa cioè come noi vogliamo che compaia.

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Selezione degli oggetti in autocad

La selezione dell’oggetto è una degli aspetti più critici di AutoCad e se fatto male può provocare dei problemi non risolvibili. Gli oggetti possono essere selezionati in una varietà di modi.

Il più semplice metodo di selezione consiste nel selezionare gli oggetti uno alla volta attraverso una finestra quadrata, che si ottiene cliccando con il tasto sinistro del mouse e spostandosi per costruire una finestra quadrata che contenga al suo interno l’oggetto da selezionare.

Ci sono due possibili varianti:
1) Cliccando con il tasto sinistro e spostandosi verso sinistra, in questo caso vengono   selezionati gli oggetti attraversati dalla finestra quadrata e tale finestra è rappresentata da un quadrato tratteggiato.Come mostrato nella figura seguente:

autocad6

Dopo aver attraversato l’oggeto si clicca sull’angolo opposto della finestra e l’oggetto selezionato  si colora di blu e compaiono dei quadratini nei punti limite dell’oggetto.

2) Cliccando con il tasto sinistro e spostandosi verso destra, in questo caso vengono selezionati solo gli oggetti contenuti nella finestra quadrata e tale finestra è rappresentata da un quadrato con linea intera. Come mostrato nella figura seguente:

autocad7

Dopo aver inglobato l’oggetto all’interno della finestra si clicca sull’angolo opposto della finestra e l’oggetto selezionato si colora di blu e compaiono dei quadratini nei punti limite dell’oggetto.

Digitando  “P” si selezioneranno gli oggetti usati nel comando precedente. Il metodo di selezione più efficiente è l’uso della finestra che attraversa l’oggetto o quello che si otiene cliccando con il tasto sinistro del mouse sull’oggetto. Entrambe le selezione possono essere richiamate digitando “C” per la prima e “W” per la seconda.

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Interfaccia di Autocad

Questo tutorial presenta l’interfaccia di Autocad e gli attrezzi di base necessari per  aprire e vedere un disegno tracciato con AutoCAD . I file di archivio avranno la seguente  estensione .DWG  (file .DWG sono la configurazione di default usata in AutoCAD).

L’Interfaccia del mouse

Un mouse a due tasti è l’interfaccia più comune usata da AutoCAD. Il tasto sinistro è usato  per selezione l’oggetto e puntare ad esso. Il tasto destro è usato per i comandi di input,  la stessa operazione può essere fatta anche usandoil tasto enter o invio sulla tastiera.

Premendo il tasto destro del mouse o il trasto invio sulla tastiera, senza comando selezionato, si richiamerà l’ultimo comando usato .

Barra degli strumenti

La barra degli strumenti offre una interfaccia basata sulle icone. Le barre degli strumenti  possono essere mosse direttamente sullo schermo attraverso il tasto sinistro del mouse e poi  possono essere trascinate all’ubicazione desiderata. Le barre degli strumenti possono essere  rimosse o possono essere aggiunte alla finestra dello schermo usando il menu “view”:  “tool bars”.

Lanciare un comando dalla barra degli strumenti è semplice, basta un  click sinistro del mouse sull’icona che rappresenta il comando desiderato. Tenendo il cursore sull’icona del comando, verrà visualizzato il nome del comando.

autocad1

Tastiera -hotkeys  

Un metodo supplementare per eseguire comandi è attraverso l’input da tastiera. Tutti i comandi possono essere dattilografati sulla tastiera ed in più si possono anche utilizzare delle abbreviazioni . Molte abbreviazioni sono la prima lettera o prima e seconda lettera del comando. Esempio: Il comando MOVE potrebbe essere introdotto dattilografando  “M” e pigiando sul tasto invio della tastiera o con un click del tasto destro del mouse.

Per conoscere la hotkey di un comando guardare la linea di comando quando un comando viene eseguito, infatti su di essa compare l’abbreviazione richiesta.

Menu a cascata  

I Menu a cascata contengono tutti i principali comandi di AutoCAD . Per lanciare un comando, cliccare con il tasto sinistro del mouse sul menù a cascata appropriato, poi click sinistro di nuovo sul comando desiderato.

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Le procedure ricorsive nel Fortran


FORTRANUna procedura ricorsiva, nel Fortran, rappresenta una costruzione artificiosa che ci consente di utilizzare una funzione in se stessa. Analizziamo come nel liguaggio di programmazione Fortran possa essere gestita una procedura di talke tipo; vediamo allora un semplice esempio di funzione ricorsiva alfine di mettere in evidenza appunto il fatto che la funzione richiama se stessa:

RECURSIVE FUNCTION factorial(n) RESULT(res)
INTEGER res, n
IF(n.EQ.1) THEN
   res = 1
ELSE
   res = n*factorial(n-1)
END IF
END

Analizziamo allora nel dettaglio la funzione che presenta una struttura ramificata. La condizione n == 1 è la base della ricorsione. Questo è l’unico modo che si ha per ottenere che il programma smetta di chiamare se stesso.

La parte contenuta nel costrutto else rappresenta la ricorsione. C’è da notare che la chiamata factorial(n-1) avviene all’interno della funzione che sta definendo factorial(n). La parte essenziale di tutto il procedimento di ricorsione è appunto la chiamata a un valore inferiore, n-1, e tale chiamata continuerà fino a quando non si verificherà un valore di n pari a 0.

Possiamo quindi affermare che una procedura di ricorsione che abbia successo chiamerà sempre un valore inferiore.Ci sono molti pericoli connessi all’utilizzo di un algoritmo di ricorsione. Ad esempio così come accade con i cicli while, è possibile per la funzione di chiamare se stessa all’infinito in modo da non fornire mai una risposta.

Un’altro problema che può nascere dal suo utilizzo è legato al fatto che la ricorsione può causare calcoli ridondanti che, anche se possono essere conclusi, possono richiedere molto tempo. Infine  mentre un programma ricorsivo è in esecuzione ha bisogno di spazio in più per accogliere l’overhead della ricorsione.

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Le subroutine nel Fortran


FORTRANUna subroutine nel Fortran rappresenta un tipo di procedura, essa viene richiamata specificandone il nome attraverso l’istruzione CALL che riceve i valori di input e restituisce quelli di output attraverso una lista di argomenti.

Il costrutto nella sua forma generale per definire una subroutine è il seguente:

SUBROUTINE nome_subroutine [(lista_di_argomenti)]
 
    [definizione e dichiarazione delle variabili]
    [corpo della procedura]
[CONTAINS
    procedure interne]
[RETURN]
END [SUBROUTINE [nome_subroutine]]

 

Nella definizione della struttura è possibile identificare il nome della subroutine, che dovrà rispettare le regole per la scelta dei nomi nel Fortran, seguito dall’elenco delle varibili di scambio tra la procedura ed il programma chiamante.

Segue la definizione e la dichiarazione delle variabile che sono utilizzate all’interno della procedura, quindi segue il corpo della procedura cioè le istruzioni che dovrà eseguire nel momento in cui verrà chiamata dal programma principale.

Quando un programma chiama una subroutine, l’esecuzione del programma viene temporaneamente sospesa per consentire l’esecuzione della subroutine. Quando viene raggiunta l’istruzione RETURN o l’istruzione END SUBROUTINE l’esecuzione dell’unità chiamante riprende dalla riga successiva a quel la che ha effettuato la chiamata.

La chiamata avviene attraverso l’istruzione CALL, la cui sintassi è:

CALL nome_subroutine ([lista_di_argomenti])

 

Un esempio di soubroutine di fortran 90 è fornito di seguito:

!TRASFORMATA DI FOURIER DISCRETA
!________________________________
subroutine dft (A,N,E)
implicit none
17
integer :: N !numero di campioni
integer :: E !numero di campinature effettuate
integer :: i,j !indice di riga e di colonna della matrice
complex :: uim !unita' immaginaria
complex,dimension(0:1000,0:1000) :: A !matrice complessa

uim=(0,1)
do i=0, n-1
   do j=0, n-1
     A(i,j)=exp(-(2*3.14*uim*i*j)/n)
   end do
end do
E=N
end

Questa subroutine calcola le trasformate discrete di fourier dato un certo campione.

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Le funzioni nel Fortran


FORTRANLe funzioni, nel Fortran, rappresentano un tipo di sottoprogrammi che, se necessario, possono essere richiamati più volte all’interno del programma principale per soddisfare una particolare esigenza ed effettuare degli opportuni calcoli.

Le funzioni definite dall’utente, a differenza delle funzioni standard già ingoblate nell’ambiente di programmazione, vengono scritte al fine di soddisfare uno specifico scopo che nessun altro strumento a disposizione del programmatore è in grado di soddisfare.

Le funzioni sono definite attraverso un costrutto del tipo:

FUNCTION Area_Circle(r) USE Circle, ONLY : Pi
IMPLICIT NONE
REAL :: Area_Circle
REAL, INTENT(IN) :: r
Area_Circle = Pi * r * r
END FUNCTION Area_Circle

È tramite il nome della funzione che si richiama la funzione all’interno del programma principale. Gli argomenti contenuti nelle parentesi tonde sono gli identificatori su cui la funzione opera.

Le funzioni lavorano sui valori memorizzati negli argomenti e restituiscono un risultato del tipo specificato. L’elenco degli identificatori costituisce un insieme di oggetti fittizi, ai quali, quando il sottoprogramma viene richiamato, vengono rimpiazzati i valori degli argomenti dell’istruzione chiamante.

Dopo la definizione della una funzione, csegue il blocco di istruzioni che costituiscono il sottoprogramma. Tra queste vi deve essere almeno un’istruzione di assegnazione con il nome della funzione a sinistra del segno di uguale, che assegna un valore a questa variabile e che viene quindi restituito al programma chiamante al termine della funzione, che come tutti i programmi deve terminare con END.

Vediamo come esempio un programma che richiama al suo interno una funzione:

MODULE Circle
!---------------------------------------------------------------------
! ! Modulo che contiene la definizione delle variabili necessarie
! per la computazione dell'area del cerchio di raggio r !
!---------------------------------------------------------------------
REAL, PARAMETER :: Pi = 3.1415927
REAL :: radius
END MODULE Circle
PROGRAM Area
!---------------------------------------------------------------------
! ! Questo programma computa l'area del cerchio dato il raggio !
! Uses: MODULE Circle ! FUNCTION Area_Circle (r) !
!---------------------------------------------------------------------
16
USE Circle, ONLY : radius IMPLICIT NONE
INTERFACE
FUNCTION Area_Circle (r)
REAL, INTENT(IN) :: r
END FUNCTION Area_Circle
END INTERFACE
! Prompt user per il raggio del cerchio write(*, '(A)', ADVANCE =
"NO") "Digita il raggio del cerchio: " read(*,*) radius
! Write out area of circle using function call write(*,100) "Area
del cerchio con raggio", radius, " is", &
Area_Circle(radius)
100 format (A, 2x, F6.2, A, 2x, F11.2)
END PROGRAM Area
!-----Area_Circle----------------------------------------------------
! ! Funzione che calcola l'area del cerchio di raggio r !
!---------------------------------------------------------------------
FUNCTION Area_Circle(r) USE Circle, ONLY : Pi
IMPLICIT NONE REAL :: Area_Circle REAL, INTENT(IN) :: r
Area_Circle = Pi * r * r
END FUNCTION Area_Circle

Questo programma usa la funzione Area_Circle per computare l’area d’un cerchio di raggio r. La funzione compare dopo l’istruzione di fine programma della zona principale di programma, in modo da essere classificata come subprogram esterno. Poichè è una procedura esterna, il programma principale usa un INTERFACE BLOCK per definire tutti i parametri richiesti dalla funzione Area_Circle.

La versione in fortran 90 del subprogram funzione si comporta allo stesso modo del subprogram funzione presente nel fortran 77. Si noti che l’ unica differenza sostanziale qui è la capacità di dichiarare esplicitamente gli argomenti della funzione in se.Prendere la nota speciale del descrittore INTENT(IN) del tipo.

Questo attributo della variabile r nel subprogram di funzione identifica rigorosamente la variabile r come variabile di input. Tali variabili non possono essere modificati dal subprogram in modo involontario.

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Sottoprogrammi nel Fortran


FORTRANCosì come già accadeva per il fortran 77, anche il nuovo formato fortran 90 ci consente di suddividere un programma principali in una serie di sottoprogrammi. tali sottoprogrammi possono essere di due tipi:

  1. funzioni
  2. subroutine

In entrambi i casi è poi possibile suddividere il sottoprogrammi in ulteriori due forme:

  1. sottoprogramma interno
  2. sottoprogramma esterno.

I sottoprogrammi interni sono quelle procedure che possono comparire nell’ambito del programma principale. mentre i  sottoprogrammi esterni sono quelli che compaiono in una sezione separata di programma dopo l’ istruzione principale END del programma.

Ciò è del tutto simile a quanto già si faceva nel fortran 77 trattandosi pur sempre di programmazione procedurale.  Inoltre, così come in fortran 77, i sottoprogrammi del tipo function, nel fortran 90, hanno un tipo esplicito e sono indirizzati a restituire un valore.

Mentre i sottoprogrammi del tipo subroutine, non hanno tipo esplicito e restituiscono il risultato o nessun valore con una chiamata del parametro CONTAINS(). Poichè porremo l’attenzione sui sottoprogrammi esterni, è essenziale l’utilizzo di una caratteristica del fortran 90 conosciuta come INTERFACE BLOCKS.

Questo blocco è una caratteristica di sicurezza che permette che i programmi principali ed i subprograms esterni si connettano giustamente. Un INTERFACE BLOCKS si accerta che il programma chiamante ed il subprogram abbiano il numero ed il tipo corretti di argomenti.

Ciò aiuta il compilatore a rilevare l’uso errato d’un subprogram . Un INTERFACE BLOCK consiste di:

1. numero di argomenti
2. tipo di ogni argomento
3. che tipo del value(s) ha restituito il subprogram

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Gli array bidimensionali in Fortran


FORTRANUn array bidimensionale, anche detto matrice, è una variabile strutturata tale che i suoi elementi sono tutti dello stesso tipo e il meccanismo di accesso diretto ai suoi elementi consiste di due espressioni intere dette indici.

In Fortran gli array bidimensionali e in generale multidimensionali possono essere dichiarati nel modo seguente:

REAL, DIMENSION(2,3) :: A
REAL, DIMENSION(0:1,0:2) :: B
INTEGER,DIMENSION(10,20,3) :: I

Il limite massimo sul Rank (il numero di dimensioni) d’un array è 7. I valori degli elementi d’un array multidimensionale possono essere assegnati in un modo simile a quello per la varietà unidimensionale.

Ad esempio, i valori 1, 2, 3, 4, 5, 6 possono essere assegnati all’array bidimensionale A nel modo seguente:

A = (/ 1, 2, 3, 4, 5, 6 /)

Ciò assegna i valori dell’array di A nell’ordine della colonna simile alle regole di fortran 77. L’assegnazione dei valori di un array ad un altro array è consentita a condizione che entrambi gli array in questione abbiano la stessa dimensione fisica. Per esempio,

B = A

assegna i valori precedentemente assegnati all’array A all’array B. Così come con gli array unidimensionali, gli operatori e le funzioni applicate normalmente alle espressioni semplici, possono anche essere applicati agli array multidimensionali che hanno lo stesso numero di elementi.

Sono altresì disponibili diverse funzioni intrinseche per elaborare gli array multidimensionali. Quelle più utili sono:

  • MAXVAL(A, D): restituisce un array che contiene i valori massimi lungo la dimensione D(se la D e omessa, restituisce il valore massimo dell’intero array)
  • MAXLOC(A) : restituisce la locazione di memoria del valore max lungo D di A
  • SUM(A, D) : restituisce un array che contiene le somme degli elementi di A lungo la dimensione D (se la D e omessa,restituisce la somma degli elementi dell’ intero array)
  • MATMUL(A, B): restituisce il prodotto di A e della B
  • TRANSPOSE(A): restituisce la trasposta del 2d array A

Un array può essere allocatable ,cioè, può essergli assegnata una locazione di memoria precisa durante l’esecuzione. Vediamo allora come ichiarare un array allocatable reale A,

REAL, DIMENSION(:,:), ALLOCATABLE :: A

Nel momento di esecuzione, i limiti reali per l’array A possono essere determinati dalla istruzione:

ALLOCATE(A(N, N), STAT = AllocateStatus) SE (AllocateStatus/ = 0)
                      ARRESTO ” * * * non abbastanza ***” di memoria

Qui, la N ed AllocateStatus sono variabili numero intero. AllocateStatus prende il valore 0 se la ripartizione riesce o un certo altro valore dipendente della macchina se la  memoria risulta insufficiente.

Un array può essere liberato dalla memoria usando il comando di DEALLOCATE:

DEALLOCATE (A, Stat = DeAllocateStatus)

Di nuovo, DeAllocateStatus rappresenta una variabile  numero intero il cuivalore è 0 se la cancellazione avviene.

LINK DI APPROFONDIMENTO PER L’ARGOMENTO:

Gli array monodimensionali nel Fortran


FORTRANUn array monodimensionale rappresenta una struttura dati complessa, statica e omogenea, usata in molti linguaggi di programmazione derivante dalla nozione matematica di vettore. Più precisamente, l’array è in genere classificato come un costruttore di tipo: in altre parole, esso consente di definire nuovi tipi di dati a partire da tipi preesistenti.

Nel Fortran la dimensione di un array può essere specificata da un’istruzione di specifica del tipo :

REAL, DIMENSION(10) :: A
INTEGER,DIMENSION(0:9):: B

Qui, i due array A, B sono stati quotati con 10 scanalature di memoria. L’ indice dell’array reale A inizia da 1 mentre l’indice per l’array B parte da 0. Il valore dei diversi elementi dell’array A può essere inizializzato a 1, 2, 3…, 10 da uno dei due metodi:

A = (/ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 /)

o,

A = (/ (I, I = 1, 10) /)

L’assegnazione dei valori di un array ad un altro è permessa a condizione che entrambi gli array in questione abbiano la stessa dimensione fisica. Per esempio:

B = A

assegna i valori precedentemente assegnati all’ array di A all’ array B. Gli operatori e le funzioni applicate normalmente alle espressioni semplici possono anche essere applicati agli array che hanno lo stesso numero di elementi. Per esempio,

A = A + B C = 2*C

assegna all’elemento ith di A il valore della somma degli elementi ith degli array A e B. In modo analogo all’elemento ith dell’array C è assegnato il valore uguale all’elemento ith di A moltiplicato per 2.

Il costrutto WHERE può essere usato per assegnare i valori ai diversi elementi d’un array; vediamo come:

WHERE ( la sequenza di argomento logico)
       ISTRUZIONE di assegnazioni di array !Blocco 1
ELSEWHERE
       ISTRUZIONE di assegnazioni di array !Blocco2
END WHERE

Per esempio, se ad A sono assegnati i valori

A = (/ (I, I = 1.10) /)

allora, possiamo studiare la possibilit`a di assegnare gli elementi del- l’ array B come:

WHERE (A > 5)
       B = 1
ELSEWHERE
       B = 0
END WHERE

Ciò assegna alla B i valori 0, 0, 0, 0, 0, 1, 1, 1, 1, 1. Parecchie funzioni intrinseche sono disponibili per elaborare gli array. Alcuni di queste sono:

  • DOT_PRODUCT(A, B) :restituisce il prodotto scalare di A e della B.
  • MAXVAL(A) :restituisce il valore massimo degli elementi dell’array A
  • MAXLOC(A) :restituisce la locazione di memoria del valore massimo di A
  • PRODUCT(A) :restituisce il prodotto degli elementi di A
  • SUM(A) :restituisce lasomma degli elementi di A

Un array può essere allocatable ,cioè, può essergli assegnato la locazione di memoria durante l’esecuzione. La dichiarazione di un array allocatable reale A,si effetua nel modo seguente:

REAL, DIMENSION(:), ALLOCATABLE :: A

Al tempo di esecuzione, i limiti reali per l’array A possono essere determinati dall’istruzione

ALLOCATE (A(N))

dove la N è una variabile numero intero che precedentemente è stata assegnata. Per accertarsi che abbastanza memoria sia a disposizione per assegnare lo spazio per il vostro array, usare l’opzione STAT del comando di ALLOCATE nel seguente modo:

ALLOCATE (A(N), STAT = AllocateStatus) IF (AllocateStatus /= 0)
                        ARRESTO ” * * * non abbastanza ***” memoria

Qui, AllocateStatus è una variabile del tipo numero intero. AllocateStatus prende il valore 0 se la ripartizione riesce o un certo altro valore dipendente dalla macchina se la memoria è insufficiente. Un array può essere liberato dalla memoria usando il comando DEALLOCATE

DEALLOCATE(A, Stat = DeAllocateStatus)

Di nuovo, DeAllocateStatus è una variabile del tipo numero intero il cui valore è 0 se la cancellazione dell’assegnazione riuscisse.

LINK DI APPROFONDIMENTO PER L’ARGOMENTO: