ELEMENTI DI PROGRAMMAZIONE 2015/16 UNINA2 INGEGNERIA MECCANICA/AEROSPAZIALE Prof Andrea Prevete PUNTATORI, TARGET, STRUTTURE DATI DINAMICHE
|
|
- Ambra Benedetti
- 7 anni fa
- Visualizzazioni
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 DIS - Dipartimento di informatica e sistemistica Anno accademico 2006/2007 Fortran 90: array DIS - Dipartimento di informatica e sistemistica 1 / 25 Cosa vedremo
DettagliFortran 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:
DettagliModularizzazione 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
DettagliIntroduction 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
DettagliEvoluzione 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
DettagliVettori 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
DettagliVettori 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
DettagliGestione 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.
DettagliBreve 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...
DettagliFunzioni, 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
DettagliAlgoritmi, 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
DettagliGli 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
DettagliEsercitazioni 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
DettagliLinguaggio 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
DettagliCorso 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
DettagliPuntatori 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 *
Dettagli7 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
DettagliTempo 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):
DettagliUnità 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;
DettagliCapitolo 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
DettagliFortran 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
DettagliBreve 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,
DettagliI 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
DettagliEsercizi 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
DettagliIntroduzione 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
DettagliSommario. 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
DettagliVARIABILI 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
DettagliInformatica 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
DettagliIl 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
DettagliIl 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;
DettagliInformatica 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:
DettagliVerso 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
DettagliLinguaggi 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
DettagliLe 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
DettagliUniversità 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
DettagliGli 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
DettagliStrutturare 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
DettagliStrategie 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
DettagliPuntatori. 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
DettagliPOINTERS. 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.
DettagliCapitolo 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
DettagliFondamenti 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
DettagliL 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
DettagliParametri 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
DettagliProgettazione 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,
DettagliProgrammazione 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:
DettagliLaboratorio 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
DettagliJavaScript 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
DettagliOttenere 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)
DettagliLinguaggio 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
DettagliCostrutti 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
DettagliLinguaggio 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
Dettagli6 - 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
DettagliFunzioni. 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
DettagliArgomenti 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
DettagliDefinizione 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
DettagliTipi 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,
DettagliLezione 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
DettagliLa 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
DettagliVariabili 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
DettagliArgomenti 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
DettagliStrutture 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
Dettagli3. 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
DettagliLa 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
DettagliLinguaggio 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
DettagliArray. 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
DettagliPREPARAZIONE 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
DettagliVariabili. 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
DettagliEsercizi 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
DettagliEsercizio 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
DettagliARRAY. 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
DettagliCaratteristiche 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
DettagliLaboratorio 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
DettagliSviluppare 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,
DettagliLaboratorio 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
DettagliEsercizio 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
DettagliEsercizi 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
DettagliDefinizioni 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
DettagliStrutture 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
DettagliPuntatori. 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
DettagliStruct, 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
DettagliEsercizio 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
Dettagli7 - 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
DettagliManipolazioni 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)
DettagliArray 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
DettagliDalla 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
DettagliPuntatori (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
DettagliAllocazione 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
DettagliArray 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
DettagliFORTRAN 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
DettagliFondamenti 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
DettagliAPPUNTI 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
DettagliCalcolatori 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
DettagliPASCAL 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)
DettagliDiagramma 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
DettagliI 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
DettagliBreve 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
DettagliCorso 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.
DettagliESECUZIONE 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
DettagliInformatica 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