ELEMENTI DI PROGRAMMAZIONE 2015/16 UNINA2 INGEGNERIA MECCANICA/AEROSPAZIALE Prof Andrea Prevete PUNTATORI, TARGET, STRUTTURE DATI DINAMICHE

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "ELEMENTI DI PROGRAMMAZIONE 2015/16 UNINA2 INGEGNERIA MECCANICA/AEROSPAZIALE Prof Andrea Prevete PUNTATORI, TARGET, STRUTTURE DATI DINAMICHE"

Transcript

1 ELEMENTI DI PROGRAMMAZIONE 2015/16 UNINA2 INGEGNERIA MECCANICA/AEROSPAZIALE Prof Andrea Prevete PUNTATORI, TARGET, STRUTTURE DATI DINAMICHE

2 puntatori e target Le forme generali delle istruzioni per la dichiarazione di un puntatore e di un target sono le seguenti: tipo, POINTER [, attributi ] :: nome_puntatore tipo, TARGET [, attributi ] :: nome_target

3 puntatori e target Un puntatore deve avere lo stesso tipo e lo stesso rango del suo target. Nel caso di puntatori ad array l istruzione di dichiarazione deve specificare unicamente il rango ma non le estensioni. Vediamo due definizioni d esempio: INTEGER, POINTER, DIMENSION(:) :: punt1 REAL, POINTER, DIMENSION(:,:) :: punt2 Punt1 potrà puntare unicamente ad array monodimensionali di tipo intero, punt2 unicamente ad array bidimensionali di tipo reale.

4 puntatori e target Vediamo tre esempi, corretti, di definizione di variabili puntatore con il relativo target REAL, POINTER :: pt REAL, TARGET :: a=3 INTEGER, POINTER, DIMENSION(:) :: pt1, pt2 INTEGER, TARGET :: x(5), y(10), z(100) REAL, POINTER, DIMENSION(:,:,:) :: punt REAL, TARGET :: targ(:,:,:)

5 puntatori e target Un puntatore può essere associato ad un dato target a mezzo di una istruzione di assegnazione di puntatore: nome_puntatore => nome_target Quando la precedente istruzione è eseguita, l indirizzo di memoria del target viene immagazzinato nel puntatore: da questo momento, ogni riferimento al puntatore avrà lo stesso effetto di un riferimento ai dati immagazzinati nel target. Se un puntatore già associato ad un target viene usato in una nuova istruzione di assegnazione, allora l associazione con il primo target viene perduta, sostituita dalla nuova associazione. In una istruzione di assegnazione è anche possibile assegnare il valore di un puntatore ad un altro puntatore: puntatore1 => puntatore2 Come effetto di questa istruzione, entrambi i puntatori punteranno direttamente ed indipendentemente allo stesso target. Se uno dei due puntatori viene successivamente associato ad un diverso target l altro puntatore non sarà affetto da tale cambiamento. Tuttavia, se puntatore2 viene deassociato anche puntatore1 assumerà lo stesso stato.

6 puntatori e target A titolo di esempio si consideri il seguente insieme di istruzioni: REAL, TARGET :: x REAL, POINTER :: p1, p2 x = 3.14 p1 => x p2 => p1 x = 2.72 Se si esegue questo frammento di programma, sia p1 che p2 punteranno a x, per cui le istruzioni seguenti: WRITE(*,*) x WRITE(*,*) p1 WRITE(*,*) p2 forniranno tutte lo stesso risultato: 2.72.

7 puntatori e target Se ora si apporta una piccola modifica alle righe precedenti: REAL, TARGET :: x, y REAL, POINTER :: p1, p2 x = 3.14 y = 2.72 p1 => x p2 => y il nuovo valore di x e di p1 sarà 3.14 mentre il nuovo valore di y e p2 sarà Se a questo punto si esegue l istruzione di assegnazione: p2 = p1 tutte e quattro le variabili avranno valore Ciò significa che l istruzione di assegnazione di puntatori ha lo stesso effetto della assegnazione delle variabili a cui essi puntano. In altre parole si sarebbe avuto lo stesso risultato se si fosse posto: y = x

8 puntatori e target Se, invece, si fosse avuto: p2 => p1 si sarebbe fatto in modo che sia p1 che p2 puntassero alla stessa variabile x mentre alla variabile y non sarebbe stato riferito alcun puntatore, con il risultato che p1, p2 e x avrebbero avuto valore 3.14 mentre y avrebbe mantenuto il valore Questo esempio fa comprendere come ogni qualvolta un puntatore sia usato in una espressione al posto di un dato effettivo, nell espressione viene usato il valore del target a cui il puntatore è riferito. Questo processo è noto come dereferencing del puntatore: un puntatore, pertanto, è da riguardarsi semplicemente come un alias del suo target. Allo stesso modo, tutte le volte che un puntatore appare come un alias di un altra variabile, esso subisce automaticamente il dereferencing ossia è il valore del suo target che viene usato al posto del puntatore stesso. Ovviamente, affinché ciò possa avvenire è necessario che il puntatore sia associato ad un target. I puntatori sono automaticamente dereferenziati quando compaiono all interno di una espressione o nelle istruzioni di I/O.

9 puntatori e target Quindi i puntatori prevedono due differenti forme di assegnazione che, avendo due significati completamente diversi, non devono assolutamente essere confusi: assegnazione di puntatore (=>): è una forma di aliasing (ossia un modo di riferirsi ad uno stesso oggetto con nomi differenti), a mezzo della quale il puntatore ed il suo target sono riferiti ad una stessa locazione di memoria. Questo tipo di assegnazione può aver luogo tra una variabile puntatore ed una variabile target, oppure tra due variabili puntatore. assegnazione standard (=): quando a sinistra dell assegnazione c è l alias di un dato oggetto, l operazione di assegnazione deve essere pensata applicata proprio all oggetto puntato (ossia il valore specificato viene assegnato allo spazio puntato). Questo tipo di assegnazione può aver luogo tra una variabile puntatore ed un oggetto avente un appropriato tipo e rango; contrariamente a quanto avviene con l assegnazione di puntatore, l oggetto il cui nome è sul lato destro dell assegnazione non deve necessariamente avere l attributo TARGET. Se una particolare locazione di memoria ospita una variabile che sia puntata da un certo numero di puntatori, allora il cambiamento del valore immagazzinato in questa locazione chiaramente andrà a modificare i valori dereferenziati di tutti i puntatori associati a quella variabile.

10 puntatori e target Consideriamo, ad esempio, il seguente frammento di codice: REAL,TARGET,DIMENSION(3,3) :: b REAL,TARGET,DIMENSION(3) :: r, s REAL,POINTER,DIMENSION(:,:) :: a REAL,POINTER,DIMENSION(:) :: x, y y => s! Associazione di puntatore: nessuna!assegnazione WRITE(*,*) s! Stampa il valore originale di s a => b! Associazione di puntatore: nessuna!assegnazione x => r! Associazione di puntatore: nessuna!assegnazione y = MATMUL(a,x)! Equivale all istruzione di! assegnazione s=matmul(a,x) WRITE(*,*) s! Adesso s è cambiato e si avra un! output differente rispetto a prima

11 puntatori e target Un puntatore può essere deassociato dal suo target o a seguito di una nuova istruzione di assegnazione (a mezzo della quale esso risulta associato ad un nuovo target) oppure attraverso l esecuzione dell istruzione NULLIFY. Quest ultima ha la seguente forma: NULLIFY (puntatore1 [, puntatore2,...]) A seguito di tale istruzione, tutti i puntatori presenti nella lista degli argomenti risulteranno deassociati dai loro rispettivi target. Lo stato di associazione di un puntatore può essere conosciuto a mezzo della funzione intrinseca ASSOCIATED la cui espressione generale è la seguente: ASSOCIATED(puntatore [, target ]) Il valore ritornato da questa funzione può essere.true. o.false.

12 puntatori e target IMPORTANTE: In realtà un puntatore può avere tre stati, 1) ASSOCIATO 2) DEASSOCIATO o NULLO (in seguito all applicazione di un operazione esplicita di NULLIFY 3) INDEFINITO Quest ultimo stato, il più ambiguo, caratteristico di un puntatore dichiarato ma non ancora utilizzato dal programma, andrebbe accuratamente risolto per esempio inizializzando allo stato NULLO tutti i puntutatori dichiarati dal programma.

13 STRUTTURE DATI DINAMICHE L utilizzo più importante dei PUNTATORI è certamente connesso alla gestione dinamica delle strutture dati. Si consideri, ad esempio, il seguente segmento di codice: INTEGER, DIMENSION(:,:), POINTER, :: a, b, tmp INTEGER n, m, errore.. ALLOCATE(a(n, m), STAT=errore).. ALLOCATE(a(n, m), STAT=errore).. tmp=>a a=>b b=>tmp! sono stati allocate dinamicamente due tabelle, a e b.! quindi i contenuti delle tabelle sono stati scambiati in maniera molto! efficiente semplicemente scambiando i nomi delle tabelle

14 STRUTTURE DATI DINAMICHE All'inizio: a b?? Dopo l'allocazione: a b a b Alla fine:

15 STRUTTURE DATI DINAMICHE Una delle più comuni e potenti applicazioni dei puntatori è nella creazione e nella gestione delle cosiddette liste concatenate. Una lista concatenata è una collezione di oggetti di tipo derivato, ciascuno dei quali avente come componente un puntatore alla successiva variabile della lista. In una lista concatenata gli oggetti connessi (i nodi ) si caratterizzano per il fatto che: Non sono immagazzinati necessariamente in maniera contigua. Possono essere creati dinamicamente (cioè al tempo di esecuzione). Possono essere inseriti in un punto qualsiasi della lista. Possono essere rimossi dinamicamente. E, quindi, evidente che una lista può crescere o ridursi in maniera arbitraria durante l esecuzione di un programma.

16 STRUTTURE DATI DINAMICHE Una lista concatenata consiste essenzialmente di strutture (ossia, con terminologia Fortran, di oggetti di tipo derivato) contenenti campi per i comuni dati e in più un ulteriore campo che rappresenta un puntatore al successivo elemento della lista. Per convenzione il primo e l ultimo nodo della lista vengono chiamati rispettivamente testa e coda della lista. testa vlr pnt vlr pnt vlr pnt vlr pnt coda

17 STRUTTURE DATI DINAMICHE TYPE :: Nodo CHARACTER(8) :: colore TYPE(Nodo), POINTER :: ptr END TYPE Nodo TYPE(Nodo), POINTER :: headp, tmpp ROSSO GIALLO headp VIOLA X

18 STRUTTURE DATI DINAMICHE ALLOCATE (headp) headp%colore = VIOLA NULLIFY (headp%ptr) ALLOCATE (tempp) tmpp%colore = GIALLO tmpp%ptr => headp headp => tmpp ALLOCATE (tempp) tmpp%colore = ROSSO tmpp%ptr => headp headp => tmpp! alloca il primo nodo! headp-> VIOLA!alloca secondo nodo! headp-> GIALLO -> VIOLA!alloca terzo nodo! headp-> ROSSO -> GIALLO -> VIOLA NULLIFY (tmpp)

19 STRUTTURE DATI DINAMICHE!Per viaggiare attraverso la lista!stampando i valori dei singoli nodi!è sufficiente partire dalla testa e!quindi sfruttare il puntatore al prossimo nodo tmpp => headp DO WHILE (ASSOCIATED(tmpP)) WRITE(*,*) tmpp%colore tmpp => tmpp%ptr END DO

20 STRUTTURE DATI DINAMICHE Una caratteristica fondamentale delle organizzazioni a lista è l estrema semplicità e flessibilità delle operazioni di aggiornamento. Per esempio, l eliminazione dell elemento GIALLO si traduce in un semplice reindirizzamento del puntatore dell elemento che lo precede! ROSSO GIALLO headp VIOLA X

21 STRUTTURE DATI DINAMICHE! Nell esempio che segue un ciclo per attraversare una lista! alla ricerca dell elemento GIALLO per eliminarlo DO WHILE (ASSOCIATED(tmpP)) IF (tmpp%colore== ROSSO ) THEN precp%ptr => tmpp%ptr DEALLOCATE(tmpP) EXIT END IF precp => tmpp tmp => tmp%ptr END DO

22 PROGRAMMAZIONE MODULARE Il più generale programma FORTRAN può essere pensato come la combinazione/ interazione di: 1)Un main programma 2)Procedure esterne (Subroutine e/o Function) 3)Procedure interne (Subroutine e/o Function) 4)Moduli

23 PROGRAMMAZIONE MODULARE

24 PROGRAMMAZIONE MODULARE La generica struttura di una FUNCTION è la seguente: type FUNCTION function-name (arg1, arg2,.., argn) [dichiarazioni] [istruzioni] [procedure interne] END FUNCTION function-name

25 PROGRAMMAZIONE MODULARE PROGRAM mio INTEGER a, b, c, somma READ(*,*) a, b c=somma(a, b) WRITE(*,*) c END PROGRAM INTEGER FUNCTION somma(a1, a2) INTEGER, INTENT(in) :: a1, a2 somma=a1+a2 END FUNCTION Il programma principale dichiara la funzione esterna somma, passandole per riferimento i parametri a e b. L attributo INTENT(in) indica al compilatore che a1 ed a2 hanno solo funzione di INPUT per la procedura e non possono quindi essere modificate.

26 PROGRAMMAZIONE MODULARE PROGRAM mio INTEGER a, b, c, somma READ(*,*) a, b c=somma(a, b) WRITE(*,*) c WRITE(*,*) a END PROGRAM INTEGER FUNCTION somma(a1, a2) INTEGER :: a1, a2 a1=a1+a2 somma=a1 END FUNCTION Cambiare il valore di un parametro formale durante l esecuzione della funzione significa alterare il valore degli argomenti attuali passati dal programma chiamante!

27 PROGRAMMAZIONE MODULARE INTEGER FUNCTION somma(a1, a2) INTEGER, INTENT(in) :: a1, a2 somma=a1 somma=somma+a2 END FUNCTION Non è possibile usare una variabile-funzione nella parte destra di un espressione!

28 PROGRAMMAZIONE MODULARE FUNCTION add_vett (a, b, n) INTEGER, INTENT(IN) :: n REAL, DIMENSION (n), INTENT(IN) :: a, b REAL, DIMENSION (n) :: add_vett INTEGER :: i DO i = 1, n END DO add_vett(i) = a(i) + b(i) END FUNCTION add_vett E possibile impostare un array come valore ritornato da una funzione!

29 PROGRAMMAZIONE MODULARE La generica struttura di una SUBROUTINE è la seguente: SUBROUTINE subroutine-name(arg1,arg2,...,argn) [dichiarazioni] [istruzioni] [procedure interne] END SUBROUTINE subroutine-name

30 PROGRAMMAZIONE MODULARE PROGRAM mio INTEGER a, b, c READ(*,*) a, b CALL somma(a, b, c) WRITE(*,*) c END PROGRAM SUBROUTINE somma(a1, a2, s) INTEGER, INTENT(IN) :: a1, a2 INTEGER, INTENT(OUT) :: s s=a1+a2 RETURN END SUBROUTINE L esito del codice sopra riportato è lo stesso di quello visto per l analoga FUNCTION. INTENT(in) ed INTENT(out) devono essere obbligatoriamente usate. Se qualche variabile ha entrambe le funzioni si userà INTENT(inout)

31 PROGRAMMAZIONE MODULARE PROGRAM mio INTEGER a, b, c READ(*,*) a, b CALL somma(a, b, c) WRITE(*,*) c END PROGRAM SUBROUTINE somma(a1, a2, s) INTEGER, INTENT(IN) :: a1, a2 INTEGER, INTENT(OUT) :: s WRITE(*,*) a s=a1+a2 END SUBROUTINE Una procedura esterna non ha accesso alle variabili definite nel programma chiamante!

32 PROGRAMMAZIONE MODULARE PROGRAM mio INTEGER a, b, c READ(*,*) a, b CALL somma(a, b, c) WRITE(*,*) c CONTAINS SUBROUTINE somma(a1, a2, s) INTEGER, INTENT(IN) :: a1, a2 INTEGER, INTENT(OUT) :: s WRITE(*,*) a s=a1+a2 END SUBROUTINE END PROGRAM La parola chiave CONTAINS consente di dichiarare una procedura come INTERNA al programma principale. In questo caso cambia la visibilità delle variabili e l istruzione WRITE darà il risultato aspettato.

33 PROGRAMMAZIONE MODULARE La più flessibile, potente ed innovativa UNITA DI PROGRAMMA resa disponibile da FORTRAN 90 è sicuramente il MODULO. Vediamo un esempio. MODULE mudulo_punti TYPE :: punto REAL :: x,y END TYPE punto CONTAINS FUNCTION addpunti(p,q) TYPE (punto),intent(in) :: p,q TYPE (punto) :: addpunti addpunti%x = p%x + q%x addpunti%y = p%y + q%y END FUNCTION addpunti END MODULE modulo_punti

34 PROGRAMMAZIONE MODULARE Quindi il programma principale potrebbe fruire dei contenuti del modulo precedente con una semplice dichiarazione di uso: USE modulo_punti TYPE (punto) :: px, py, pz... pz = addpunti(px,py)...

35 PROGRAMMAZIONE MODULARE MODULE dati_condivisi SAVE INTEGER, PARAMETER :: NUM_VALORI = 5 REAL, DIMENSION(NUM_VALORI) :: valori END MODULE dati_condivisi PROGRAM test_modulo USE dati_condivisi valori = (/ 1., 2., 3., 4., 5. /) WRITE (*,*) "prima esecuzione sub" CALL sub1 WRITE (*,*) "seconda esecuzione sub" CALL sub1 END PROGRAM test_modulo SUBROUTINE sub1 USE dati_condivisi WRITE (*,*) valori valori = 2 * valori WRITE (*,*) valori END SUBROUTINE sub1 La direttiva SAVE consente di congelare le variabili assicurando la permanenza del loro valore fra più chiamate d uso del modulo!

36 PROGRAMMAZIONE MODULARE PROGRAM test INTERFACE REAL FUNCTION quoz(x,y) REAL, INTENT(IN)::x,y END FUNCTION quoz END INTERFACE INTEGER :: i=3,j=25 WRITE(*, *) Il quoziente è &, quoz(i,j) END PROGRAM test REAL FUNCTION quoz(x,y) REAL,INTENT(IN):: x,y quoz=x/y END FUNCTION quoz Una ragione profonda perchè un progettista FORTRAN dovrebbe includere i sottoprogrammi in un modulo piuttosto che pensarli come procedure esterne è che nel primo caso il compilatore possiede un interfaccia esplicita del sottoprogramma stesso e, quindi, ha tutte le informazioni necessarie per controllare la corrispondenza fra gli argomenti fittizi e quelli effettivi. Alternativamente è possibile utilizzare un INTERFACE BLOCK come nell esempio a sinistra. Il compilatore segnalerebbe errore riconoscendo, grazie all interfaccia, la mancata corrispondenza fra parametri REAL ed INTEGER.

37 PROGRAMMAZIONE MODULARE PROGRAM esempio INTERFACE REAL FUNCTION esp(a, b) REAL, INTENT(IN) :: a INTEGER, INTENT(IN), & OPTIONAL :: b END FUNCTION esp END INTERFACE REAL :: x=2. INTEGER :: y=3 WRITE(*,*) esp(x) END PROGRAM esempio REAL FUNCTION esp(a, b) REAL, INTENT(IN) :: a INTEGER, INTENT(IN), & OPTIONAL :: b IF (PRESENT(b)) THEN FUN = a**b ELSE FUN = a END IF END FUNCTION esp L interfaccia esplicita rende possibile l impostazione di parametri opzionali!

38 PROGRAMMAZIONE MODULARE THE END

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. 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

Dettagli

Fortran per Ingegneri

Fortran per Ingegneri Fortran per Ingegneri Lezione 6 A.A. 2013/2014 Ing. Davide Vanzo davide.vanzo@unitn.it Ing. Simone Zen simone.zen@unitn.it ufficio: Laboratorio didattico di modellistica ambientale (2 piano) Tel interno:

Dettagli

Modularizzazione del software

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

Dettagli

Introduction to Fortran 90

Introduction to Fortran 90 Sinonimi Introduction to Fortran 90 Nicola Spallanzani, CINECA Maurizio Cremonesi, CINECA Ottobre 2014 SINONIMI: SINTASSI DI BASE I sinonimi, o POINTER, non sono altro che nomi cui è associato un tipo

Dettagli

Evoluzione del FORTRAN 14/03/2016. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 15 IL LINGUAGGIO FORTRAN

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

Dettagli

Vettori e Matrici (array)

Vettori e Matrici (array) Vettori e Matrici (array) Introduction to Fortran 90 Massimiliano Guarrasi, CINECA m.guarrasi@cineca.it Ottobre 2014 Array - Introduzione Gli array sono serie di variabili dello stesso tipo, ciascuna accessibile

Dettagli

Vettori e Matrici (array)

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

Dettagli

Gestione dinamica della memoria

Gestione dinamica della memoria Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Gestione dinamica della memoria Pietro Di Lena - pietro.dilena@unibo.it A pessimistic programmer sees the array as half empty.

Dettagli

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN

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...

Dettagli

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni, Stack e Visibilità delle Variabili in C Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7

Dettagli

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal

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

Dettagli

Gli ARRAY in FORTRAN 90

Gli ARRAY in FORTRAN 90 ELEMENTI DI PROGRAMMAZIONE Gli ARRAY in FORTRAN 90 Andrea Prevete, UNINA2 INGEGNERIA MECCANICA/AEROSPAZIALE, a.a. 2012/13 Un ARRAY è un AGGREGATO di più DATI dello stesso TIPO (interi, reali, etc), ognuno

Dettagli

Esercitazioni di Informatica 3

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

Dettagli

Linguaggio C: PUNTATORI

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

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA2 2.1- Funzioni 1 Prerequisiti Programmazione elementare in Java Tecnica top-down Concetto matematico di funzione Compilazione e link di programmi Esecuzione di funzioni

Dettagli

Puntatori in C Lucidi della Pof.ssa Pazienza

Puntatori in C Lucidi della Pof.ssa Pazienza Puntatori in C Lucidi della Pof.ssa Pazienza http://www.uniroma2.it/didattica/foi2/ Puntatori L operatore di indirizzo & Indirizzi, puntatori Aritmetica dei puntatori L operatore di dereferenziazione *

Dettagli

7 Procedure. Estensioni sintattiche Dec ::= void Ide (Ptype Ide) Block Com ::= Ide(Exp);

7 Procedure. Estensioni sintattiche Dec ::= void Ide (Ptype Ide) Block Com ::= Ide(Exp); 7 Procedure Nei linguaggi di programmazione è di fondamentale importanza riuscire a scrivere dei programmi che siano facili da leggere e da modificare. Lo scopo di funzioni e procedure è quello di permettere

Dettagli

Tempo di vita e scope delle variabili

Tempo di vita e scope delle variabili Tempo di vita e scope delle variabili Richiami sulla struttura di un programma C Un programma C deve essere contenuto in uno o più file (salvo diversa specifica, per ora si assume tutto in un unico file):

Dettagli

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. 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;

Dettagli

Capitolo 5 - Funzioni

Capitolo 5 - Funzioni Capitolo 5 - Funzioni Divide and conquer Introduzione Costruire un programma da pezzi più piccoli o da singole componenti Questi pezzi più piccoli sono chiamati moduli Ogni singolo pezzo è più facilmente

Dettagli

Fortran per Ingegneri

Fortran per Ingegneri Fortran per Ingegneri Lezione 4 A.A. 2014/2015 Marco Redolfi marco.redolfi@unitn.it Simone Zen simone.zen@unitn.it Formati e Formattazione Finora abbiamo letto valori da tastiera e scritto sullo schermo

Dettagli

Breve guida al linguaggio FORTRAN 77

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,

Dettagli

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 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

Dettagli

Esercizi Strutture dati di tipo astratto

Esercizi Strutture dati di tipo astratto Salvatore Cuomo Esercizi Strutture dati di tipo astratto Lezione n. 20 Parole chiave: Strutture dati, pile code, liste Corso di Laurea: Informatica Insegnamento: Programmazione II, modulo di Laboratorio

Dettagli

Introduzione al linguaggio C Puntatori

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

Dettagli

Sommario. Le strutture dati elementari per implementare sequenze: Vettori Liste

Sommario. Le strutture dati elementari per implementare sequenze: Vettori Liste Sequenze Sommario Le strutture dati elementari per implementare sequenze: Vettori Liste Strutture dati elementari Le strutture dati vettore e lista sono fra le strutture dati più usate e semplici Il loro

Dettagli

VARIABILI E COSTANTI

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

Dettagli

Informatica 3. LEZIONE 2: Sintassi e semantica

Informatica 3. LEZIONE 2: Sintassi e semantica Informatica 3 LEZIONE 2: Sintassi e semantica Modulo 1: Introduzione ai concetti di sintassi e semantica Modulo 2: Il concetto di binding Modulo 3: Variabili Modulo 4: Routine Convenzioni dei nomi Informatica

Dettagli

Il puntatore. Il puntatore

Il puntatore. Il puntatore Il puntatore È un tipo scalare, che consente di rappresentare gli indirizzi delle variabili allocate in memoria. Il dominio di una variabile di tipo puntatore è un insieme di indirizzi: Il valore di una

Dettagli

Il linguaggio C. Puntatori e dintorni

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;

Dettagli

Informatica 3. Informatica 3. LEZIONE 2: Sintassi e semantica. Lezione 2- Modulo 1. Le componenti di un linguaggio di programmazione

Informatica 3. Informatica 3. LEZIONE 2: Sintassi e semantica. Lezione 2- Modulo 1. Le componenti di un linguaggio di programmazione Informatica 3 Informatica 3 LEZIONE 2: Sintassi e semantica Lezione 2- Modulo 1 Modulo 1: Introduzione ai concetti di sintassi e semantica Modulo 2: Il concetto di binding Modulo 3: Variabili Modulo 4:

Dettagli

Verso i puntatori: Cosa è una variabile?

Verso i puntatori: Cosa è una variabile? Verso i puntatori: Cosa è una variabile? Quando si dichiara una variabile, ad es. int a; si rende noto il nome e il tipo della variabile. Il compilatore alloca l opportuno numero di byte di memoria per

Dettagli

Linguaggi e Ambienti di Programmazione

Linguaggi e Ambienti di Programmazione Linguaggi e Ambienti di Programmazione Principi e tecniche diffuse che si incontrano spesso nelle applicazioni dell informatica. Compilatori Editor di struttura: riceve in input una sequenza di comandi

Dettagli

Le basi del linguaggio Java

Le basi del linguaggio Java Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una

Dettagli

Università degli Studi di Cassino e del Lazio Meridionale Corso di Fondamenti di Informatica Allocazione dinamica di memoria

Università degli Studi di Cassino e del Lazio Meridionale Corso di Fondamenti di Informatica Allocazione dinamica di memoria di Cassino e del Lazio Meridionale Corso di Informatica Allocazione dinamica di memoria Anno Accademico 2015/2016 Francesco Tortorella Allocazione dinamica di memoria Finora abbiamo considerato variabili

Dettagli

Gli ARRAY in FORTRAN 90

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

Dettagli

Strutturare il codice: sottoprogrammi

Strutturare il codice: sottoprogrammi Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Motivazioni Alcuni problemi si presentano frequentemente durante lo sviluppo di un programma

Dettagli

Strategie di programmazione

Strategie di programmazione Funzioni Funzioni in C Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Funzioni in C Strategie

Dettagli

Puntatori. Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori

Puntatori. Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori Puntatori Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori 1 Il puntatore Un tipo puntatore è un tipo scalare per

Dettagli

POINTERS. Una variabile pointer è una variabile che ha come valore un indirizzo di memoria.

POINTERS. Una variabile pointer è una variabile che ha come valore un indirizzo di memoria. POINTERS Una variabile pointer è una variabile che ha come valore un indirizzo di memoria. Es. Sia y una variabile intera di valore e sia yptr una variabile pointer avente come valore l indirizzo di y.

Dettagli

Capitolo 7 I puntatori in C

Capitolo 7 I puntatori in C 1 Capitolo 7 I puntatori in C 7.2 Dichiarazione e inizializzazione di puntatori Variabili puntatore Contengono gli indirizzi di memoria come valore Le normali variabili contengono uno specifico valore

Dettagli

Fondamenti di Informatica T. Linguaggio C: i puntatori

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

Dettagli

L Allocazione Dinamica della Memoria

L Allocazione Dinamica della Memoria L Allocazione Dinamica della Memoria Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario Questo documento

Dettagli

Parametri Formali di una Funzione e Record di Attivazione

Parametri Formali di una Funzione e Record di Attivazione Parametri Formali di una Funzione e Attivazione Un record di attivazione rappresenta il mondo di una funzione, e contiene tutto ciò che ne caratterizza l esistenza, tra cui ad esempio: le variabili locali

Dettagli

Progettazione di algoritmi: componenti di base e metodologie di sviluppo. Variabili e costanti. Variabili e costanti A = 2. Algoritmo PASCAL-LIKE

Progettazione di algoritmi: componenti di base e metodologie di sviluppo. Variabili e costanti. Variabili e costanti A = 2. Algoritmo PASCAL-LIKE Progettazione di algoritmi: componenti di base e metodologie di sviluppo Variabili e costanti Variabili e costanti PROBLEMA: calcolo dell area A di un triangolo di base b ed altezza h b h A =.4.5 b =.4,

Dettagli

Programmazione con Java

Programmazione con Java Programmazione con Java Classi e istanze in Java Definizione di classe in Java A meno che non si usino classi già scritte da altri, prima di poter creare un qualsiasi oggetto devo creare la sua rappresentazione:

Dettagli

Laboratorio di Informatica Ingegneria Clinica Lezione 14-16/11/2011

Laboratorio di Informatica Ingegneria Clinica Lezione 14-16/11/2011 Laboratorio di Informatica Ingegneria Clinica Lezione 14-16/11/2011 Raffaele Nicolussi FUB - Fondazione Ugo Bordoni Via del Policlinico, 147 00161 Roma I puntatori Variabili e parametri Parametri formali

Dettagli

JavaScript Core Language. Prof. Francesco Accarino IIS Atiero Spinelli Sesto San Giovanni via leopardi 132

JavaScript Core Language. Prof. Francesco Accarino IIS Atiero Spinelli Sesto San Giovanni via leopardi 132 JavaScript Core Language Prof. Francesco Accarino IIS Atiero Spinelli Sesto San Giovanni via leopardi 132 Condizioni L utilizzo di operatori relazionali e logici consente di formulare delle condizioni

Dettagli

Ottenere una modifica del parametro attuale

Ottenere una modifica del parametro attuale Ottenere una modifica del parametro attuale Le variabili passate come parametri a una funzione, se alterate durante l esecuzione, non cambiano valore all uscita dalla funzione (parametri passati per valore)

Dettagli

Linguaggio C: puntatori

Linguaggio C: puntatori Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica A - GES Prof. Plebani A.A. 2006/2007 Linguaggio C: puntatori La presente dispensa e da utilizzarsi ai soli fini didattici previa

Dettagli

Costrutti condizionali e iterativi

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

Dettagli

Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione

Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione

Dettagli

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 6 - Blocchi e cicli Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it

Dettagli

Funzioni. function [<risultati>] = nome_funzione ([ par.formali ])

Funzioni. function [<risultati>] = nome_funzione ([ par.formali ]) MATLAB Le funzioni Funzioni Con il termine funzione si intende, in generale, un operatore che, applicato a un insieme di operandi, calcola un valore come risultato, esattamente come avviene anche per una

Dettagli

Argomenti Avanzati.! I puntatori! Stack! Visibilità delle Variabili

Argomenti Avanzati.! I puntatori! Stack! Visibilità delle Variabili Linguaggio C Argomenti Avanzati! I puntatori! Stack! Visibilità delle Variabili 2 ! Il C consente di associare ai tipi di dati nomi definiti dal programmatore, mediante la parola chiave typedef! Dal punto

Dettagli

Definizione di metodi in Java

Definizione di metodi in Java Definizione di metodi in Java Un metodo in Java definisce un operazione ad alto livello (sottoprogramma) che consente di manipolare dati e oggetti. Durante la computazione effettuata da un programma, un

Dettagli

Tipi derivati. Fortran 90[/95] Esempio. Tipi strutturati. Istanziazione e accesso. Esempio

Tipi derivati. Fortran 90[/95] Esempio. Tipi strutturati. Istanziazione e accesso. Esempio Fortran 90[/95] M. Bianco Tipi derivati Per tipo derivato si intendono dei tipi di dati costruiti sui tipi base del linguaggio Fortran90 ha cinque tipi base (più i diversi kind): integer, real, character,

Dettagli

Lezione 8 Struct e qsort

Lezione 8 Struct e qsort Lezione 8 Struct e qsort Rossano Venturini rossano@di.unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Esercizio 3 QuickSort strambo Modificare il Quicksort

Dettagli

La struttura dati CODA

La struttura dati CODA Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 La struttura dati CODA Pietro Di Lena - pietro.dilena@unibo.it Introduzione Una coda (o queue) è una struttura dati astratta

Dettagli

Variabili strutturate

Variabili strutturate Esempio Ordinamento crescente di numeri: 25 7 I passo: 25 7 25 7 7 25 7 25 Variabili strutturate in due scambi 25 è stato portato al suo posto Gli array II passo: 7 25 7 25 7 25 in uno scambio 7 è stato

Dettagli

Argomenti della lezione. Introduzione agli Algoritmi e alle Strutture Dati. Lista Lineare. Lista Lineare come Tipo di Dato Astratto

Argomenti della lezione. Introduzione agli Algoritmi e alle Strutture Dati. Lista Lineare. Lista Lineare come Tipo di Dato Astratto Argomenti della lezione Introduzione agli Algoritmi e alle Strutture Dati Operazioni su Liste Dr. Emanuela Merelli Tipi di Dato Astratto Lista Lineare Pila Coda Concetto di Struttura dati dinamiche Lista

Dettagli

Strutture dati nel supporto a run time

Strutture dati nel supporto a run time Strutture dati nel supporto a run time 1 Entità presenti quando un programma va in esecuzione programmi d utente (compilati) routines del supporto interprete I/O, librerie, routines per la gestione delle

Dettagli

3. Le routine evento in Access 2000/2003

3. Le routine evento in Access 2000/2003 LIBRERIA WEB 3. Le routine evento in Access 2000/2003 Le routine evento possono essere associate a un singolo controllo grafico (caselle di testo, pulsanti di comando, ecc.) presente all interno di una

Dettagli

La gestione della memoria dinamica Heap

La gestione della memoria dinamica Heap Laboratorio di Algoritmi e Strutture Dati La gestione della memoria dinamica Heap Prof. Luigi Lamberti 2005 Cenni sui Processi Un Programma è un insieme di Istruzioni memorizzato in un file con le costanti

Dettagli

Linguaggio C: le funzioni. Visibilità variabili e passaggio parametri

Linguaggio C: le funzioni. Visibilità variabili e passaggio parametri Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: le funzioni. Visibilità variabili e passaggio parametri

Dettagli

Array. Parte 7. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Array. Parte 7. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm

Dettagli

PREPARAZIONE PER SECONDA PROVA IN ITINERE Esercizio 1 SULLA MODELLAZIONE DEI DATI

PREPARAZIONE PER SECONDA PROVA IN ITINERE Esercizio 1 SULLA MODELLAZIONE DEI DATI PREPARAZIONE PER SECONDA PROVA IN ITINERE Esercizio 1 SULLA MODELLAZIONE DEI DATI Si definisca il tipo opportuno di dato per memorizzare una tabella che contenga, per ciascuna delle principali valute (dollaro

Dettagli

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico

Dettagli

Esercizi Array Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Esercizi Array Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm

Dettagli

Esercizio 1. E vero che in un AVL il minimo si trova in una foglia o nel penultimo livello? FB = -1. livello 0 FB = -1. livello 1 FB = -1.

Esercizio 1. E vero che in un AVL il minimo si trova in una foglia o nel penultimo livello? FB = -1. livello 0 FB = -1. livello 1 FB = -1. Esercizio 1 E vero che in un AVL il minimo si trova in una foglia o nel penultimo livello? FB = -1 livello 0 FB = -1 FB = -1 livello 1 FB = -1 livello 2 livello 3 L altezza è 3, il minimo si trova nel

Dettagli

ARRAY. Fortran 90[/95] ARRAY: dichiarazione. Esempio (arraybase.f90) ARRAY: inizializzazione. ARRAY: inizializzazione

ARRAY. Fortran 90[/95] ARRAY: dichiarazione. Esempio (arraybase.f90) ARRAY: inizializzazione. ARRAY: inizializzazione Fortran 9[/95] M. Bianco ARRAY Un array è una sequenza di variabili di uno stesso tipo identificate da un nome Queste variabili vengono memorizzare in posizioni contigue di memoria Si può accedere a una

Dettagli

Caratteristiche di un linguaggio ad alto livello

Caratteristiche di un linguaggio ad alto livello Caratteristiche di un linguaggio ad alto livello Un linguaggio ad alto livello deve offrire degli strumenti per: rappresentare le informazioni di interesse dell algoritmo definire le istruzioni che costituiscono

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica Liste semplici (semplicemente linkate) Una lista semplice e costituita da nodi Laboratorio di Informatica 7. Strutture complesse di dati in C++ Ogni nodo e una struttura che contiene : Dati Un riferimento

Dettagli

Sviluppare un programma in FORTRAN

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,

Dettagli

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Dott.Davide Di Ruscio Dipartimento di Informatica Università degli Studi di L Aquila Lezione del 08/05/08 Nota Questi lucidi sono tratti

Dettagli

Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length);

Esercizio 2 (punti 7) Dato il seguente programma C: #include <stdio.h> int swap(int * nome, int length); Fondamenti di Informatica L-A (A.A. 004/005) - Ingegneria Informatica Prof.ssa Mello & Prof. Bellavista I Prova Intermedia del 11/11/004 - durata h - COMPITO B Esercizio 1 (punti 1) Una associazione di

Dettagli

Esercizi sulla macchina assembler, strutturazione a livelli, spazio di indirizzamento

Esercizi sulla macchina assembler, strutturazione a livelli, spazio di indirizzamento Architettura degli Elaboratori, a.a. 2005-06 Esercizi sulla macchina assembler, strutturazione a livelli, spazio di indirizzamento Esercizio 1 (svolto) a) Compilare in assembler Risc (Cap. V) un programma

Dettagli

Definizioni syntax-directed

Definizioni syntax-directed Definizioni syntax-directed Esempio: Notazione infissa Notazione postfissa Produzioni E E 1 + T E E 1 T E T T 0 T 1 T 2... T 9 Regole semantiche E.t := E 1.t _T.t _ + E.t := E 1.t _T.t _ - E.t := T.t T.t

Dettagli

Strutture Dati Dinamiche

Strutture Dati Dinamiche Strutture Dati Dinamiche Motivazioni Le variabili considerate fino a questo punto devono essere dichiarate staticamente, ossia la loro esistenza, il loro nome e la loro dimensione devono essere previsti

Dettagli

Puntatori. Fondamenti di Programmazione

Puntatori. Fondamenti di Programmazione Puntatori Fondamenti di Programmazione Funzioni utili stdio.h c = getchar(); restituisce un carattere letto da tastiera. Equivale a: scanf( %c, &c); putchar(c); scrive un carattere sullo schermo. Equivale

Dettagli

Struct, enum, Puntatori e Array dinamici

Struct, enum, Puntatori e Array dinamici Struct, enum, Puntatori e Array dinamici Tratti dal corso del Dr. Francesco Fabozzi Corso di Informatica Tipi di dato in C Abbiamo esaminato diversi tipi di dato che il C mette a disposizione dell utente

Dettagli

Esercizio 2: Algebra dei Puntatori e Puntatori a Puntatori

Esercizio 2: Algebra dei Puntatori e Puntatori a Puntatori Esercizio 2: Algebra dei Puntatori e Puntatori a Puntatori Salvatore Mandrà 7 Ottobre 2008 1 Esercizio L esercizio prevede l implementazione di funzioni per il prodotto di una matrice per un vettore, attraverso

Dettagli

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari 7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa

Dettagli

Manipolazioni elementari di flussi di testo strutturati

Manipolazioni elementari di flussi di testo strutturati Manipolazioni elementari di flussi di testo strutturati L output di molti comandi è costituito da flussi di testo strutturati: ogni riga rappresenta una parte del risultato ed è divisa in campi (fields)

Dettagli

Array k-dimensionali

Array k-dimensionali Informatica B a.a 2005/06 (Meccanici 4 squadra) Scaglione: da PO a ZZZZ PhD. Ing. Michele Folgheraiter Array k-dimensionali In C è possibile definire array con più dimensioni (ANSI C massimo k=12), per

Dettagli

Dalla prima lezione. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 7 VARIABILI E COSTANTI 28/02/2016. Concetto di algoritmo

Dalla prima lezione. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 7 VARIABILI E COSTANTI 28/02/2016. Concetto di algoritmo LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 7 VARIABILI E COSTANTI Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli Studi di Napoli Federico II wpage.unina.it/lapegna

Dettagli

Puntatori (in C) Emilio Di Giacomo

Puntatori (in C) Emilio Di Giacomo Puntatori (in C) Emilio Di Giacomo Puntatori In questa lezione parleremo di uno dei costrutti più potenti del C: i puntatori I puntatori vengono utilizzati per realizzare il passaggio di parametri per

Dettagli

Allocazione della memoria. Allocazione dinamica della memoria. Allocazione della memoria. Allocazione automatica

Allocazione della memoria. Allocazione dinamica della memoria. Allocazione della memoria. Allocazione automatica Allocazione dinamica della memoria Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione in C Allocazione della memoria Il termine allocazione viene utilizzato per indicare l assegnazione di un blocco

Dettagli

Array e puntatori in C

Array e puntatori in C Array e puntatori in C Diapositive adattate dalle omonime create dalla Dottoressa di Ricerca Giovanna Melideo per il corso di Laboratorio di Algoritmi e Strutture Dati 10/05/2005 LP2-04/05 - Appunti di

Dettagli

FORTRAN 77 FORTRAN 77 FORTRAN 77 FORTRAN 77 FORTRAN 77 FORTRAN 77. Introduzione. Introduzione. PROGRAM {nome} {dichiarazioni}

FORTRAN 77 FORTRAN 77 FORTRAN 77 FORTRAN 77 FORTRAN 77 FORTRAN 77. Introduzione. Introduzione. PROGRAM {nome} {dichiarazioni} Introduzione Introduzione PROGRAM {nome} {istruzioni (statements)} Struttura Esempio 1 col. 01-05 : statement label (opzionale) col. 06 : continuazione linea col. 07-72 : FORTRAN statements col. 73-80

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Fondamenti di Informatica AlgoBuild: Strutture selettive, iterative ed array Prof. Arcangelo Castiglione A.A. 2016/17 AlgoBuild : Strutture iterative e selettive OUTLINE Struttura selettiva Esempi Struttura

Dettagli

APPUNTI DEL CORSO DI LABORATORIO DI CALCOLO AVANZATO

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

Dettagli

Calcolatori Elettronici

Calcolatori Elettronici Calcolatori Elettronici Il linguaggio assemblativo MIPS (4) Le function (2) Gestione dei sottoprogrammi $a0 - $a3 - $v1 $ra : 4 registri argomento per il passaggio dei parametri : due registri per la restituzione

Dettagli

PASCAL standard. Il linguaggio PASCAL nasce come evoluzione del linguaggio ALGOL60 (ALGOrithmic Language) nel 1968 ad opera di N. Wirth.

PASCAL standard. Il linguaggio PASCAL nasce come evoluzione del linguaggio ALGOL60 (ALGOrithmic Language) nel 1968 ad opera di N. Wirth. PASCAL standard Il linguaggio PASCAL nasce come evoluzione del linguaggio ALGOL60 (ALGOrithmic Language) nel 1968 ad opera di N. Wirth. Nb: primi linguaggi furono: Fortran, Algol, Ada, Cobol (cfr testo)

Dettagli

Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto

Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto 14 1. Dato un numero dire se è positivo o negativo 2. e se il numero fosse nullo? 3. Eseguire il prodotto tra

Dettagli

I Tipi di Dato Astratto

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

Dettagli

Breve storia del FORTRAN

Breve storia del FORTRAN Fondamenti di Informatica Linguaggi di programmazione ad alto livello: C e Fortran90 1 Breve storia del FORTRAN Il FORTRAN (= FORmula TRANslator) nacque nel 1957. Nel 1980 venne rilasciato il FORTRAN77

Dettagli

Corso di Fondamenti di Informatica

Corso di Fondamenti di Informatica Corso di Fondamenti di Informatica Puntatori a funzioni 1 Funzioni che restituiscono puntatori Il valore di ritorno restituito da una funzione può essere di qualsiasi tipo, compreso il tipo puntatore.

Dettagli

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2

Dettagli

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE Francesco Tura francesco.tura@unibo.it 1 Lo strumento dell informatico: ELABORATORE ELETTRONICO [= calcolatore = computer] Macchina multifunzionale Macchina

Dettagli