Introduction to Fortran 90
|
|
|
- Filomena Papa
- 9 anni fa
- Просмотров:
Транскрипт
1 Sinonimi Introduction to Fortran 90 Nicola Spallanzani, CINECA Maurizio Cremonesi, CINECA Ottobre 2014
2 SINONIMI: SINTASSI DI BASE I sinonimi, o POINTER, non sono altro che nomi cui è associato un tipo ed eventualmente un rango. Ad un sinonimo corrisponde uno spazio in memoria solo dopo che è stato associato ad un altro oggetto. Per questo motivo abbiamo tradotto con la parola sinonimi i POINTERdel Fortran. I sinonimi possono essere associati ad altri sinonimi o ad altre entità dello stesso tipo, purché abbiano l'attributo TARGET. TYPE(punto), POINTER :: pt, pq TYPE(punto), TARGET :: p1, p2 pt => p1 pq => p2
3 SINONIMI: SINTASSI DI BASE Un sinonimo viene associato ad un'altra entità con l'operatore =>. Dopo questa associazione il "bersaglio" può essere indicato col nome del sinonimo. TYPE(punto), POINTER :: pt, pq TYPE(punto), TARGET :: p1, p2 pt => p1! pt è un nuovo nome per p1 pq => p2! pq è un nuovo nome per p2 pq = p1! Ora p1 e p2 hanno lo stesso valore
4 SINONIMI: ESEMPI REAL, DIMENSION(:), POINTER :: p REAL, DIMENSION(-4:5), TARGET :: a p => a! ATTENZIONE: p(-4:5) è sostanzialmente! un nuovo nome per a(-4:5) p => a(:)! in questo caso INVECE p(1:10) e' un! alias di a(-4:5) p => a(-4:5:2)! Ora p(1:5) si può usare in luogo! di a(-4:5:2)
5 SINONIMI: ESEMPI Si deve notare che se un sinonimo punta a una sezione di un vettore o matrice, il primo elemento per ogni dimensione ha sempre indice 1. REAL, DIMENSION(:), POINTER :: p REAL, DIMENSION(:,:), POINTER :: q REAL, DIMENSION(5,6), TARGET :: b p => b(3,:)! p(1:6) è sinonimo per la terza riga! di b(:,:) q => b(2:4,2:4)! q(1:3,1:3) si può usare in luogo! di b(2:4,2:4))
6 SINONIMI: ESEMPI Non è possibile associare un sinonimo a una sezione di array definita con un altro vettore: REAL, DIMENSION(:), POINTER :: pv1 REAL, DIMENSION(-3,5), TARGET :: tv1 INTEGER, DIMENSION(3) :: v=(/-3,1,4/) pv1 => tv1(v)! Non è corretto
7 SINONIMI: SINTASSI Un sinonimo dopo la dichiarazione ha stato indefinito. In pratica è come una variabile cui non è stato associato nessun valore. Un sinonimo viene azzerato (nullifiedin inglese) con l'istruzione NULLIFY. E' possibile azzerare i puntatori già nella dichiarazione, per mezzo della funzione intrinseca NULL: REAL, POINTER :: p(:)=>null() TYPE stringa CHARACTER, POINTER :: car(:)=>null() END TYPE
8 SINONIMI: SINTASSI Un sinonimo si dice associato quando lo si mette in relazione ad un'altra entità con l'operatore =>, oppure gli si associa memoria con ALLOCATE. Lo stato di un sinonimo può essere verificato con la funzione intrinseca ASSOCIATED: REAL, DIMENSION(:,:), POINTER :: q REAL, DIMENSION(5,6), TARGET :: b WRITE(*,*) ASSOCIATED(q)! Non valido: Q e' indefinito NULLIFY(q); WRITE(*,*) ASSOCIATED(q)!.FALSE. q => b; WRITE(*,*) ASSOCIATED(q)!.TRUE.
9 SINONIMI: SINTASSI Un sinonimo si può usare come qualsiasi altra entità dello stesso tipo e rango purché gli si associ memoria con ALLOCATE, analogamente a quanto si fa con i puntatori del C. REAL, DIMENSION(:,:), POINTER :: q REAL, DIMENSION(5,6), TARGET :: b WRITE(*,*) ASSOCIATED(q)! Non valido: Q è indefinito NULLIFY(q); ALLOCATE(q(5,6),STAT=st)! Assegna memoria WRITE(*,*) ASSOCIATED(q)!.TRUE.! Si può usare q come una normale matrice: q(:,:) = b(:,:) DEALLOCATE(q)! Si libera la memoria assegnata WRITE(*,*) ASSOCIATED(q)!.FALSE.
10 SINONIMI E TIPI PERSONALIZZATI In Fortran 90 i vettori allocabili non possono essere usati come componenti di un tipo personalizzato. E' necessario allora usare i sinonimi. TYPE dati INTEGER :: lda, ldb INTEGER, DIMENSION(:,:), POINTER :: indici REAL(8), DIMENSION(:,:), POINTER :: valori REAL(8), DIMENSION(:,:), POINTER :: coordinate END TYPE
11 SINONIMI E MEMORIA Quando si usano i sinonimi per gestire la memoria dinamicamente occorre fare particolare attenzione a liberare la memoria assegnata (con il comando DEALLOCATE) appena non è più necessaria, altrimenti si rischia di lasciare in giro "buchi" di memoria inutilizzabile. REAL, DIMENSION(:,:), POINTER :: q ALLOCATE(q(500,600),STAT=st)! Più di 1 MB associato a q NULLIFY(q)! Ora quel MB non è più accessibile
12 SINONIMI E MEMORIA Un altro pericolo da evitare è quello del cosiddetto sinonimo sospeso o danglingpointer: REAL, POINTER :: p1, p2 ALLOCATE (p1) p1 = 3.4 p2 => p1 DEALLOCATE (p1) Dopo che p1è stato "deallocato", la variabile alla quale puntava p2è scomparsa: p2diventa un sinonimo sospeso e ogni riferimento a p2produrrà risultati inattendibili. In questi casi la soluzione è azzerare p2 subito dopo la deallocazione di p1.
13 ESERCIZIO 1. Prevedere quali valori verrebbero stampati dal codice seguente: PROGRAM sinonimi REAL, POINTER :: p, q REAL, TARGET :: t1 = 3.4, t2 = 4.5 p => t1 PRINT *, Dopo p => t1, ASSOCIATED(p) = ", ASSOCIATED(p) q => t1 PRINT *, Dopo q => t1, ASSOCIATED(q) = ", ASSOCIATED(q) PRINT *,"ASSOCIATED(p, q) = ", ASSOCIATED(p, q) PRINT *, ma ASSOCIATED(p, t2) = ", ASSOCIATED(p, t2) NULLIFY(p) PRINT *, Dopo NULLIFY, ASSOCIATED(p) = ", ASSOCIATED(p) END PROGRAM sinonimi
14 VETTORI DI SINONIMI: SINTASSI Sembrerebbe immediato definire un vettore di sinonimi usando la sintassi INTEGER, DIMENSION(10,10), POINTER :: tabella ma questa è in concorrenzacon la sintassi con la quale si dichiara un sinonimo: infatti, per definizione, un sinonimo non ha dimensioni predefinite. Di conseguenza, in Fortran 90 non è possibile definire in modo diretto un vettore di sinonimi.
15 VETTORI DI SINONIMI: SINTASSI Si aggira il problema definendo in modo opportuno un tipo personalizzato: TYPE tabella INTEGER, DIMENSION(:), POINTER :: lista END TYPE tabella TYPE(tabella), DIMENSION(10,10) :: elenchi dove ogni elemento della matrice elenchiè un dato di tipo tabella e di conseguenza è un sinonimo.
16 VETTORI DI SINONIMI: SINTASSI L'esempio appena mostrato permette di realizzare in Fortran qualcosa che si avvicina ad un vettore di sinonimi, ma deve essere completato riservando la memoria necessaria ad ogni oggetto: TYPE tabella INTEGER, DIMENSION(:), POINTER :: lista END TYPE tabella INTEGER, DIMENSION(100) :: a TYPE(tabella), DIMENSION(10,10) :: elenchi ALLOCATE(elenchi(j,i)%lista(100),STAT=st) elenchi(j,i)%lista(n) = a(n)
17 VETTORI DI SINONIMI: ESEMPIO Può accadere in un programma di dover gestire una porzione di matrice, per esempio le metà inferiore o superiore separatamente. d s s s s s s s s s i d s s s s s s s s i i d s s s s s s s i i i d s s s s s s i i i i d s s s s s i i i i i d s s s s i i i i i i d s s s i i i i i i i d s s i i i i i i i i d s i i i i i i i i i d Nello schema le metà superiore, inferiore e la diagonale sono indicate con le lettere s, ie drispettivamente.
18 VETTORI DI SINONIMI: ESEMPIO Se è necessario ad esempio considerare solo la metà inferiore di una matrice, può essere inutile o addirittura impossibile memorizzare l'intera matrice. In questo caso si pone il problema di come memorizzare la sola porzione che interessa senza dover sprecare inutilmente la memoria. Una tecnica possibile fa uso di un vettore Vche memorizza i valori ed un indice I che registra dove inizia ogni nuova riga: a11 a21 a22 a31 a32 a33 a41 a42 a43 a44 V = a11 a21 a22 a31 a32 a33 a41 a42 a43 a44 I =
19 VETTORI DI SINONIMI: ESEMPIO PROGRAM matrice IMPLICIT NONE INTEGER, PARAMETER :: Nda = 10! Numero di righe INTEGER, PARAMETER :: Ndat = Nda + ( Nda * Nda ) / 2 REAL(8), DIMENSION(Ndat) :: ati! vettore dei dati INTEGER, DIMENSION(Nda) :: i_ati! vettore degli indici INTEGER :: ir, ic, i, ind
20 VETTORI DI SINONIMI: ESEMPIO Ati(:) = 0.0d0! Vettore dei dati Ind(:) = 0! Vettore degli indici DO ir = 1, Nda DO ic = 1, ir! Si definiscono i valori per ATI ind = ind + 1 IF ( ic.eq. 1 ) THEN! Inizio riga i_ati(ir) = ind ENDIF ati(ind) = ir + ic END DO END DO DO ir = 1, Nda print*,"ati(",ir,",:) = ",( ati(i_ati(ir) + ic), ic = 0, (ir - 1) ) END DO END PROGRAM matrice
21 VETTORI DI SINONIMI: ESEMPIO Con la sintassi Fortran è possibile strutturare i dati in modo più espressivo, senza rinunciare a risparmiare memoria: TYPE riga REAL(8), DIMENSION(:), POINTER :: col END TYPE riga INTEGER, PARAMETER :: nr=1000 TYPE (riga), DIMENSION(nr) :: mata_rig ALLOCATE(matA_rig(i)%col(nc), STAT=st) Grazie a questa struttura, l elemento mata_rig(i)%col(j) corrisponderebbe all'elemento A(i,j).
22 VETTORI DI SINONIMI: ESEMPIO PROGRAM matrice IMPLICIT NONE INTEGER, PARAMETER :: Nda = 10! Matrice mata, implementata con i tipi derivati TYPE riga REAL(8), DIMENSION(:), POINTER :: col END TYPE riga TYPE (riga), DIMENSION(:), POINTER :: mata_rig INTEGER :: ir, ic! Si riserva la memoria necessaria ALLOCATE(matA_rig(Nda), STAT=ic) DO ir = 1, Nda ALLOCATE(matA_rig(ir)%col(ir), STAT=ic) mata_rig(ir)%col = 0.0D0 END DO
23 VETTORI DI SINONIMI: ESEMPIO! Si definiscono i valori per mata DO ir = 1, Nda DO ic = 1, ir mata_rig(ir)%col(ic) = ir + ic END DO END DO DO ir = 1, Nda print*,"mata_rig(",ir,") = ",mata_rig(ir)%col(:) END DO END PROGRAM matrice
24 SINONIMI E PROCEDURE I sinonimi possono essere passati in argomento alle procedure. In questo caso la memoria può essere associata e disassociata ai sinonimi anche nella procedura. Una procedura con argomenti dummydichiarati POINTERo TARGET deve avere un'interfaccia esplicita. Ad una procedura con argomento sinonimo gli deve essere passato un sinonimo dello stesso tipo e rango. Un argomento sinonimo dummynon può avere l'attributo INTENT. Passare ad una procedura un sinonimo come argomento non dichiaratopointerequivale a passare alla procedura il "bersaglio" del sinonimo.
25 SINONIMI E PROCEDURE Se in una procedura si dichiara che qualche argomento è POINTER, ciò significa che si intende utilizzare quell'argomento per associargli della memoria, che quindi sarà conservata in uscita. Come sempre, occorre avere cura che il tipo ed il rango degli oggetti passati ad una procedura siano compatibili con quanto dichiarato nella procedura stessa. Può essere sorprendente il fatto che un argomento sinonimo non può avere attributo INTENT, tuttavia occorre fare attenzione a cosa significherebbe questo: se un argomento POINTER ha attributo INTENT(IN)significa che non si può cambiare l'oggetto associato (o la memoria), oppure non si può cambiare il valore dell'oggetto bersaglio?
26 SINONIMI E PROCEDURE Il Fortran 2003 avrebbe risolto la questione in favore delle limitazioni nell'operazione di associazione. Perciò, per lo standard 2003, ad un argomento POINTERcon INTENT(IN)non gli si può cambiare l'oggetto associato, né azzerarlo con NULLIFY, ma si può cambiare il valore all'oggetto bersaglio.
27 SINONIMI E PROCEDURE: ESEMPIO PROGRAM Sinonimi INTERFACE SUBROUTINE sub2(b) REAL, DIMENSION(:,:), POINTER :: b END SUBROUTINE sub2 END INTERFACE REAL, DIMENSION(:,:), POINTER :: p ALLOCATE (p(50, 50)) CALL sub1(p) CALL sub2(p) END PROGRAM Sinonimi Nell'esempio illustrato se la procedura SUB1non ha un'interfaccia esplicita, il suo unico argomento sarà dichiarato nel seguente modo: REAL, DIMENSION(:,:) :: a quindi come una matrice di forma presunta. Non può avere l'attributo POINTER, ma può avere un INTENTesplicito. Viceversa l'argomento di SUB2può essere dichiarato come illustrato, ma non può avere un INTENT.
28 FUNZIONI SINONIMO Il risultato di una funzione può essere un sinonimo. E' utile definire una funzione di questo tipo se non si può prevederne l'occupazione di memoria. FUNCTION NumeriPrimi(max) RESULT(lista) IMPLICIT NONE INTEGER, INTENT(INOUT) :: max INTEGER, DIMENSION(:), POINTER :: lista... RETURN END FUNCTION NumeriPrimi
29 FUNZIONI SINONIMO L'interfaccia di una funzione sinonimo deve essere esplicita. PROGRAM primi IMPLICIT NONE INTEGER :: n INTERFACE FUNCTION NumeriPrimi(max) RESULT(lista) IMPLICIT NONE INTEGER, INTENT(INOUT) :: max INTEGER, DIMENSION(:), POINTER :: lista END FUNCTION NumeriPrimi END INTERFACE... END PROGRAM primi
30 ESEMPIO: il crivello di Eratostene PROGRAM primi IMPLICIT NONE INTEGER :: n INTERFACE FUNCTION NumeriPrimi(max) RESULT(lista) IMPLICIT NONE INTEGER, INTENT(INOUT) :: max INTEGER, DIMENSION(:), POINTER :: lista END FUNCTION NumeriPrimi END INTERFACE DO PRINT *, "Digita un intero" READ *, n IF ( n.le. 0 ) EXIT WRITE(*,*) NumeriPrimi(n) END DO STOP END PROGRAM primi
31 ESEMPIO: il crivello di Eratostene (continuazione) FUNCTION NumeriPrimi(max) RESULT(lista) IMPLICIT NONE INTEGER, INTENT(INOUT) :: max INTEGER, DIMENSION(:), ALLOCATABLE :: primi INTEGER, DIMENSION(:), POINTER :: lista INTEGER :: i, n, quanti, st ALLOCATE(primi(max), STAT=st) IF ( st.ne. 0 ) THEN PRINT *, "errore allocazione PRIMI(",max,")" ELSE primi = (/ (i, i = 1, max) /) quanti = 0 DO i = 2, max IF ( primi(i).gt. 0 ) THEN DO n = i + 1, max IF ( primi(n).gt. 0.AND. MOD(primi(n), i).eq. 0 ) THEN primi(n) = 0; quanti = quanti + 1 END IF END DO END IF END DO END IF
32 ESEMPIO: il crivello di Eratostene (continuazione) ALLOCATE(lista(max - quanti), STAT=st) IF ( st.ne. 0 ) THEN PRINT *, "errore allocazione LISTA(",(max - quanti),")" ELSE lista = 0 i = 0 DO n = 1, max IF ( primi(n).gt. 0 ) THEN i = i + 1 IF ( i.gt. (max - quanti) ) THEN PRINT *, " I > ",(max - quanti) ELSE lista(i) = primi(n) END IF END IF END DO END IF DEALLOCATE(primi) RETURN END FUNCTION NumeriPrimi
33 OPERATORI SINONIMO (Fortran 2003) Lo standard FORTRAN 2003 permette di associare un nuovo nome agli operatori personalizzati definiti in un modulo. MODULE vettori INTERFACE OPERATOR (.turn.) MODULE PROCEDURE rigira END INTERFACE... END MODULE vettori PROGRAM giriamo USE vettori, OPERATOR(.gira.) => OPERATOR(.turn.)... END PROGRAM giriamo
34 LISTE PUNTATE Una lista puntata è un insieme di oggetti, l'uno legato al successivo. In generale ad una lista si possono aggiungere e togliere elementi in ordine casuale. In Fortran è facile generare liste con tipi personalizzati contenenti sinonimi ad oggetti dello stesso tipo. TYPE nodo TYPE(dati_reali) :: valore TYPE(nodo), POINTER :: succ, prec END TYPE nodo
35 CATASTE Una catasta è una lista con la particolarità che gli elementi si possono estrarre solo in ordine inverso all'ordine di immissione, ovvero dal più giovane al più vecchio. TYPE elemento TYPE(dati_reali) :: valore TYPE(elemento), POINTER :: prec END TYPE elemento TYPE(elemento) :: corr, temp
36 CODE Viceversa una coda è una lista in cui gli elementi si possono estrarre in ordine di immissione, ovvero dal più vecchio al più giovane. TYPE elemento INTEGER :: valore TYPE (elemento), POINTER :: prox END TYPE elemento TYPE (elemento), POINTER :: primo, ultimo, corr
37 ESERCIZI 2. Realizzare un esempio di catasta 3. Realizzare un esempio di coda
Vettori e Matrici (array)
Vettori e Matrici (array) Introduction to Fortran 90 Massimiliano Guarrasi, CINECA [email protected] Ottobre 2014 Array - Introduzione Gli array sono serie di variabili dello stesso tipo, ciascuna accessibile
Array in Fortran 90. Ing. Luca De Santis. Anno accademico 2006/2007. DIS - Dipartimento di informatica e sistemistica
Array in Fortran 90 Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2006/2007 Fortran 90: array DIS - Dipartimento di informatica e sistemistica 1 / 25 Cosa vedremo
Vettori e Matrici (array)
Vettori e Matrici (array) Introduction to modern Fortran Paolo Ramieri, CINECA Maggio 2016 Array - Introduzione Gli array sono serie di variabili dello stesso tipo, ciascuna accessibile mediante indici
Modularizzazione del software
Modularizzazione del software Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2006/2007 Fortran 90: Subroutine e function DIS - Dipartimento di informatica e sistemistica
Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN
Breve Manuale di Riferimento sulla Sintassi Linguaggi e versione aggiornata al 05/02/2004 Sommario Elementi di Base... 2 Dati, Tipi e Dichiarazioni... 2 Tipi di Dato di Base... 2 Tipi di Dato Strutturati...
Costrutti condizionali e iterativi
Costrutti condizionali e iterativi Introduction to Fortran 90 Paolo Ramieri, CINECA Aprile 2014 Strutture di controllo Le strutture di controllo permettono di alterare la sequenza di esecuzione delle istruzioni
Linguaggio C: PUNTATORI
Linguaggio C: PUNTATORI I puntatori sono una delle più importanti caratteristiche del linguaggio C. Permettono di lavorare a basso livello, mantenendo flessibilità e praticità. Il C utilizza molto i puntatori
Allocazione Dinamica della Memoria
Allocazione Dinamica della Memoria Elisa Marengo Università degli Studi di Torino Dipartimento di Informatica Elisa Marengo (UNITO) Allocazione Dinamica della Memoria 1 / 10 Scelta delle variabili Quando
Sviluppare un programma in FORTRAN
Sviluppare un programma in FORTRAN Scrivere il file sorgente Editor di testo (emacs, vi, notepad, etc) Compilare Compilatore (ifort, gfortran, etc) Eseguire il programma Riga di comando, doppio click,
Evoluzione del FORTRAN 14/03/2016. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 15 IL LINGUAGGIO FORTRAN
LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 15 IL LINGUAGGIO FORTRAN Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli Studi di Napoli Federico II wpage.unina.it/lapegna
Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal
Algoritmi, Strutture Dati e Programmi : Programmazione in Pascal Prof. Alberto Postiglione AA 2007-2008 Università degli Studi di Salerno Il Linguaggio di Programmazione Pascal Esistono molti linguaggi
Almerico Murli - Le variabili strutturate (array) VARIABILI STRUTTURATE (ARRAY)
VARIABILI STRUTTURATE (ARRAY) 1 successione (di numeri reali): i ℵ a R i vettore (di numeri reali): i I a i R con I ℵ sottoinsieme finito ogni componente del vettore e univocamente determinata dall indice
Il linguaggio C. Puntatori e dintorni
Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;
Fortran per Ingegneri
Fortran per Ingegneri Lezione 4 A.A. 2014/2015 Marco Redolfi [email protected] Simone Zen [email protected] Formati e Formattazione Finora abbiamo letto valori da tastiera e scritto sullo schermo
Unità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo.
Unità Didattica 4 Linguaggio C Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo. 1 Vettori Struttura astratta: Insieme di elementi dello stesso tipo, ciascuno individuato da un indice;
Breve guida al linguaggio FORTRAN 77
Breve guida al linguaggio FORTRAN 77 Variabili (valori di default) Iniziali con lettere da I a N Iniziali con lettere da A a H oppure da O a Z variabili intere, 4 byte in precisione singola variabili reali,
Operazioni di input e output in Fortran 90
Operazioni di input e output in Fortran 90 Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2006/2007 Fortran 90: file e formattazione DIS - Dipartimento di informatica
Fondamenti di Informatica 6. Algoritmi e pseudocodifica
Vettori e matrici #1 Fondamenti di Informatica 6. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile A.A. 2010-2011 1 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie
Fondamenti di Informatica T. Linguaggio C: i puntatori
Linguaggio C: i puntatori Il puntatore E` un tipo di dato, che consente di rappresentare gli indirizzi delle variabili allocate in memoria. Dominio: Il dominio di una variabile di tipo puntatore è un insieme
Esempio su strutture dati dinamiche: ArrayList
Esempio su strutture dati dinamiche: ArrayList 1 ArrayList Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione
Gestione dinamica della memoria
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Gestione dinamica della memoria Pietro Di Lena - [email protected] A pessimistic programmer sees the array as half empty.
Gli ARRAY in FORTRAN 90
ELEMENTI DI PROGRAMMAZIONE Gli ARRAY in FORTRAN 90 Un ARRAY è un AGGREGATO di più DATI dello stesso TIPO (interi, reali, etc), ognuno univocamente individuato dal valore di uno oppure due.. e fino a sette
Fortran per Ingegneri
Fortran per Ingegneri Lezione 1 A.A. 2013/2014 Ing. Davide Vanzo [email protected] Ing. Simone Zen [email protected] ufficio: Laboratorio didattico di modellistica ambientale (2 piano) Tel interno:
C: panoramica. Violetta Lonati
C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati
Introduzione al linguaggio C Puntatori
Introduzione al linguaggio C Puntatori Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 19 ottobre 2016
VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.
Excel VBA VBA Visual Basic for Application VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole. 2 Prima di iniziare. Che cos è una variabile?
Definizione Allocazione e deallocazione di variabili Allocazione e deallocazione di vettori
Università degli Studi di Cagliari Corso di Laurea in Ingegneria Biomedica (Industriale), Chimica, Meccanica, Elettrica FONDAMENTI DI INFORMATICA 1 http://www.diee.unica.it/~marcialis/fi1 A.A. 2010/2011
APPUNTI DEL CORSO DI LABORATORIO DI CALCOLO AVANZATO
APPUNTI DEL CORSO DI LABORATORIO DI CALCOLO AVANZATO Concetti fondamentali di FORTRAN 90 MARCO LIMONGI Istituto Nazionale di Astrofisica Osservatorio Astronomico di Roma 1. CONCETTI FONDAMENTALI DI FORTRAN
Cognome e Nome : Corso e Anno di Immatricolazione: Modalità di Laboratorio (Progetto/Prova) :
PROGRAMMAZIONE (Corsi B e C) Pre-appello di Gennaio 2004 (A.A. 2003/2004) PROGRAMMAZIONE (B e C) S. Straordinaria - Appello di Gennaio (A.A. 2002/2003) 22 Gennaio 2004 ore 11 Aula II di Facoltà (Durata:
(prof. Claudio Maccherani, Perugia, 2009)
(prof. Claudio Maccherani, Perugia, 2009) Il Fortran può essere considerato il primo linguaggio di programmazione ad alto livello. La sua prima implementazione, realizzata da un gruppo di lavoro diretto
Strutture Dinamiche. Fondamenti di Informatica
Strutture Dinamiche Fondamenti di Informatica 1 Indice Allocazione e de-allocazione di memoria Liste e loro gestione Companies, srl 2 Allocazione e cancellazione di memoria malloc (sizeof (TipoDato));
I puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore
I puntatori Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore...... L operatore & fornisce l indirizzo di un oggetto: p = &c; assegna a p l indirizzo di c, i.e., p
I puntatori e l allocazione dinamica di memoria. Esercizi risolti
I puntatori e l allocazione dinamica di memoria Esercizi risolti 1 Esercizio Si vuole realizzare un tipo struct, utilizzato per informazioni su operazioni di vendita, avente i seguenti campi: codice: numero
Programmazione orientata agli oggetti. Ivan Lanese
Programmazione orientata agli oggetti Ivan Lanese Argomenti Programmazione orientata agli oggetti Classi Oggetti Costruttori Scrivere grosse applicazioni La gran parte delle applicazioni sono GROSSE Windows
Alberi n-ari: specifiche sintattiche e semantiche. Realizzazioni. Visita di alberi n-ari.
Alberi n-ari: specifiche sintattiche e semantiche. Realizzazioni. Visita di alberi n-ari. Algoritmi e Strutture Dati + Lab A.A. / Informatica Università degli Studi di Bari Aldo Moro Nicola Di Mauro ALBERO
UD 3.2b: Programmazione in Pascal (1)
UD 3.2b: Programmazione in Pascal (1) Il Linguaggio di Programmazione Pascal Esistono molti linguaggi di programmazione. Per motivi didattici utilizzeremo una versione ridotta di un linguaggio di programmazione
Allocazione statica della memoria
2015 - Roberta Gerboni 1 2 Allocazione statica della memoria Cosa succede nella memoria del computer quando il un programma vengono dichiarate delle variabili? memoria Ad esempio: int main() 57 { int x=
28/02/2014 Copyright V. Moriggia
Informatica per la Finanza 3 Le variabili in VBA Altri I/O 28/02/2014 Copyright 2005-2007 V. Moriggia 1 28/02/2014 3.2 Le variabili in VBA V. Moriggia 1 28/02/2014 3.3 Dichiarazione di variabili in VBA
Rappresentazione degli algoritmi
Rappresentazione degli algoritmi Universitá di Ferrara Ultima Modifica: 21 ottobre 2014 1 1 Diagramma di flusso Utilizzare il diagramma di flusso per rappresentare gli algoritmi che risolvono i seguenti
La struttura dati CODA
Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 La struttura dati CODA Pietro Di Lena - [email protected] Introduzione Una coda (o queue) è una struttura dati astratta
Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo.
Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo. int a = 5; a 5 α=&a Esistono in C particolari variabili dette puntatori che possono
I Tipi di Dato Astratto
I Tipi di Dato Astratto Sommario Cosa sono le Strutture Dati Astratte? Le strutture dati Le operazioni Come scegliere fra varie implementazioni? Quale è la questione? Come organizzare (strutturare) i dati
9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
9 - Array Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di Laurea
Esercitazioni di Informatica 3
Esercitazioni di Informatica 3 Part I: Programming Languages Syntax and semantics Laurea in Ingegneria Informatica Politecnico di Milano Polo di Milano Leonardo Esercizio 1: EBNF Utilizzando il linguaggio
I puntatori e l allocazione dinamica di memoria
I puntatori e l allocazione dinamica di memoria Allocazione dinamica di memoria L allocazione delle variabili Allocazione e rilascio espliciti di memoria Le funzioni malloc e free 2 Allocazione dinamica
La classe std::vector della Standard Template Library del C++
La classe std::vector della Standard Template Library del C++ Alberto Garfagnini Università degli studi di Padova 23 Ottobre 2013 Programmazione generica in C++ : i Template I templates sono probabilmente
Cicli annidati ed Array multidimensionali
Linguaggio C Cicli annidati ed Array multidimensionali Cicli Annidati In C abbiamo 3 tipi di cicli: while(exp) { do { while(exp); for(exp;exp;exp3) { Cicli annidati: un ciclo all interno del corpo di un
VARIABILI E COSTANTI
VARIABILI E COSTANTI - Variabili e costanti - 1 PROBLEMA: Calcolo dell area di un triangolo di base b e altezza h. area = b ------------ h 2 ESEMPIO: b = 2,4 h = 1,5 area = 2,4 -------------------- 1,5
Introduzione al MATLAB c Parte 3 Script e function
Introduzione al MATLAB c Parte 3 Script e function Lucia Gastaldi DICATAM - Sezione di Matematica, http://lucia-gastaldi.unibs.it Indice 1 M-file di tipo Script e Function Script Function 2 Gestione dell
Programmazione Procedurale in Linguaggio C++
Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 6 Il FORTRAN versione 2.0 Questolavoroè concessoin uso secondoi termini di unalicenzacreative Commons (vedi ultima pagina) G. Mecca Università
Lezione 8 Struct e qsort
Lezione 8 Struct e qsort Rossano Venturini [email protected] Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Esercizio 3 QuickSort strambo Modificare il Quicksort
Programmazione orientata agli oggetti: le classi
Programmazione orientata agli oggetti: le classi Oggetti e tipi di dati La programmazione che abbiamo visto finora agisce su variabili che appartengono a tipi di dati predefiniti: interi, floating point,
