ARRAY. Fortran 90[/95] ARRAY: dichiarazione. Esempio (arraybase.f90) ARRAY: inizializzazione. ARRAY: inizializzazione
|
|
- Elisa Gori
- 7 anni fa
- Visualizzazioni
Transcript
1 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 di queste variabili in modo diretto tramite un indice (o una n-upla di indici) a() a(2) a(3) a(4) a(5) a(6) a(7) Esempio (arraybase.f9) INTEGER, DIMENSION() :: a INTEGER :: i DO i, a(i)2i-!i primi numeri dispari DO i2, a(i)a(i)a(i-)! Somma primi i dispari WRITE (, '(X,"a(",I3,") ",I5)') i, a(i) ARRAY: dichiarazione TIPO, DIMENSION(<const>) :: nome, nome2 <const> deve essere un intero costante o parameter Esempi: integer, dimension() :: a integer, parameter :: max55 real, dimension(max) :: r logical, dimension(4) :: logic complex, dimension(max) :: comp character(6),dimension(8) :: nomi ARRAY: inizializzazione do i, a(i)! Iniz. uno alla volta r.! Tutto r diventa nullo logic(/.true.,.false., &.true.,.false. /) ARRAY: inizializzazione Per gli elementi degli array valgono le stesse regole delle variabili integer, dimension() :: a do i, write (,) a(i)! Valori "casuali" Ogni elemento di un array è una variabile!
2 ARRAY: rango Gli array possono avere più indici (dimensioni) integer, dimension(,4,5) :: a Il rango di un array è il numero di dimensioni dell array stesso do i, do j,4 do k,5 write (,) a(i,j,k)! Rango 3 ARRAY Gli indici degli array possono avere diversi valori di minimo e massino integer, dimension(3:,-4:5) :: a do i3,, do j-4,5, write (,) a(i,j)! Rango 2 Gli array in memoria Gli array in memoria akind(<tipo>) a() akind(<tipo>) a(2) a2kind(<tipo>) a(3) <tipo>, dimension(n)::a Indichiamo con a l indirizzo del primo elemento del array a Indichiamo con KIND(<tipo>) il numero di byte occupati da un elemento di a L i-esimo elemento di a si a(n-2)kind(<tipo>) a(n-) trova nell indirizzo a(i-)kind(tipo) a(n-)kind(<tipo>) a(n) a(,) a(2,) a(3,) a(4,) a(,2) a(2,2) a(3,2) a(4,2) a(,3) a(2,3) a(3,3) a(4,3) <tipo>, dimension(n,m)::a Nell esempio n4 e m3 L elemento in riga i e colonna j (a(i,j)) di a ha indirizzo a((j-)ni-)kind(tipo) Esempio: sia l indirizzo di a(,) sia. Calcoliamo l indirizzo di a(3,2): (42)424 Gli array in memoria Esempio: crivello di Eratostene <tipo>, dimension(n,m)::a Nell esempio n4 e m3 L elemento in riga i e colonna j (a(i,j)) di a ha indirizzo a((j-)ni-)kind(tipo) Esempio: sia l indirizzo di a(,) sia. Calcoliamo l indirizzo di a(3,2): (42)424 Metodo per trovare i numeri primi tra 2 e n Osservazione: i multipli di un numero non possono essere primi Se etichetto i numeri multipli di un numero come non-primi non serve valutarne la primalità quando li incontro Se ho già considerato tutti i numeri fino a k e k non è stato marcato come non-primo, posso dire se k è primo o no? 2
3 Esempio: crivello di Eratostene Metodo per trovare i numeri primi tra 2 e n Osservazione: i multipli di un numero non possono essere primi Se etichetto i numeri multipli di un numero come non-primi non serve valutarne la primalità quando li incontro Se ho già considerato tutti i numeri fino a k e k non è stato marcato come non-primo allora k è primo! (Non è multiplo di nessuno dei numeri precedenti) Esempio dell esempio 2,3,4,5,6,7,8,9,,,2,3,4,5,6,7,8,9,2,2,22,23,24,25 2,3,4,5,6,7,8,9,,,2,3,4,5,6,7,8,9,2,2,22,23,24,25 2,3,4,5,6,7,8,9,,,2,3,4,5,6,7,8,9,2,2,22,23,24,25 2,3,4,5,6,7,8,9,,,2,3,4,5,6,7,8,9,2,2,22,23,24,25 2,3,4,5,6,7,8,9,,,2,3,4,5,6,7,8,9,2,2,22,23,24,25 2,3,4,5,6,7,8,9,,,2,3,4,5,6,7,8,9,2,2,22,23,24,25 2,3,4,5,6,7,8,9,,,2,3,4,5,6,7,8,9,2,2,22,23,24,25 2,3,4,5,6,7,8,9,,,2,3,4,5,6,7,8,9,2,2,22,23,24,25 2,3,4,5,6,7,8,9,,,2,3,4,5,6,7,8,9,2,2,22,23,24,25 2,3,4,5,6,7,8,9,,,2,3,4,5,6,7,8,9,2,2,22,23,24,25 Implementazione Fissato n dobbiamo poter marcare i numeri da 2 a n come primi o non-primi Dobbiamo esaminare i numeri in ordine e se incontriamo un numero primo dobbiamo marcare tutti i successivi multipli come numeri primi Se incontro un numero non-primo non faccio nulla Come deve essere la marcatura iniziale? Alla fine stampo solo i numeri marcati Implementazione Usiamo un array LOGICAL per sapere se un numero (di indice) i è primo o no Serve un limite superiore al valore di n per creare questo array integer, parameter :: MAXN22 integer :: n! input al programma:! numeri primi tra 2 e n integer :: i,j! variabili di ciclo logical, dimension(2:maxn) :: mark! mark(i) contiene.true. se i e`! Primo write (,) "Inserire il valore di n" read (,) n if (n>maxn) STOP n troppo alto (>M)" Mark.true.! Inizializzazione di Mark! Esegue il crivello do i2,n! Bastava n/2 if (mark(i)) then! se mark(i) e` vero i e`! primo! do j2i,n,i! marca tutti i multipli di! i<n come non-primi mark(j).false. end if! Ciclo di stampa do i2,n if (mark(i)) write(,)"numero", i, "primo" 3
4 DO implicito Inizializzare gli array integer, dimension(4) :: v& (/, 3, 56, 5 /) Cosa fare se la dimensione cresce molto? integer :: dimension() :: & v2 (/ (3, i,) /) integer :: dimension() :: & v3 (/ (2i-, i,) /) v() v(2)3 v(3)56 v(4)5 Risultato v2()3 v2(2)3 v2(3)3 v2(998)3 v2(999)3 v2()3 v3() v3(2)3 v3(3)5 v3(4)7 v3(998)995 v3(999)997 v3()999 DO impliciti annidati Si possono annidare più cicli uno nell altro v (/ ((, i,4), 5j, j,5) /) v,,,,5,,,,,,,,,,5, Cercheremo di non usarli Write con do impliciti Write (,) (2i-, i,5) Stampa: Write (,) a Equivale a: Write (,) a(), a(2),, a() Write (,) (a(i), i,,3) Equivale a: Write (,) a(), a(4), a(7), a() Write (,) (a(i), i,,3) FORMAT (X, 4I6) Identico a: Write (,) a(), a(4), a(7), a() INDICI FUORI RANGE integer :: dimension(4) :: v& (/, 3, 56, 5 /) Quanto vale v()?! Può succedere di tutto! Alcuni compilatori fanno il controllo degli indici gfortran e g95 non lo fanno (sono ancora giovani ) Il debug può essere molto difficile!!! Consiglio Definire le dimensioni degli array usando variabili di tipo parameter, a meno che il programma non sia davvero molto semplice Evita di dover cambiare molte righe di codice nel caso in cui si debbano ridimensionare le strutture dati integer, parameter:: max55, min5 real, dimension(min:max) :: r 4
5 ARRAY: assegnazione Se due array hanno lo stesso rango e gli stessi indici possiamo usare una assegnazione diretta integer, dimension(3:,-4:5) :: a, b integer, dimension(3:9,-2:5) :: c ab! OK! cb! ERRORE DI COMPILAZIONE a e b hanno lo stesso shape (forma), b e c invece no! La forma non cambia se cambiano i range Esempio integer, dimension(3:9) :: a, b integer, dimension(3:8) :: c integer, dimension(:7) :: d abd! OK! dca! ERRORE DI COMPILAZIONE ab! OK! Due array hanno la stessa forma se le varie dimensioni coincidono a e d hanno lo stesso shape ma range diversi Esempio Esempio a(3) b(3) d() d() c(3) a(3) a(4) a(5) b(4) b(5) d(2) d(3) d(2) d(3) c(4) c(5) a(4) a(5) a(6) b(6) d(4) d(4) c(6) a(6) a(7) b(7) d(5) d(5) c(7) a(7) a(8) b(8) d(6) d(6) c(8) a(8) a(9) b(9) d(7) d(7) a(9) Esempio Funzioni di elemento a(3) a(4) a(5) a(6) a(7) a(8) a(9) b(3) b(4) b(5) b(6) b(7) b(8) b(9) Con funzione di elemento si intendono quelle funzioni che possono essere applicate a ogni elemento dei vettori come a valori scalari Le somme e i prodotti delle slide precedenti possono essere visti come dei casi particolari Anche sin(), cos(), abs(), etc. possono essere applicate a vettori bsin(a) calcola i seni di tutti gli elementi di a, dove b deve avere lo stesso shape di a. 5
6 Esempio integer :: dimension(4) :: v& (/, -3, 56, -5 /) write (,) abs(v)! Stampa In appendice A del libro, le funzioni indicate come funzione di elemento possono essere applicate ad array! Sottoarray Usando una sintassi simile a molti linguaggi di tipo scientifico (e.g. MATLAB) si possono specificare porzioni di array Sia b<e a(b:e:s) è un array che contiene solo gli elementi i cui indici sono b, bs, b2s,, bks, dove bks<e e b(k)s>e Esempio a(/, 3, 6, 7, 2, 4, 3 /) Write (,) a(2:6:3) stampa 3 2 Write (,) a(2:6) stampa Write (,) a(2::2) stampa Write (,) a(:3) stampa 3 6 Esempio Integer :: i3, j6 a(/, 3, 6, 7, 2, 4, 3 /) Write (,) a(i:j:2) stampa 6 2 Write (,) a(2:j:i) stampa 3 2 Write (,) a(i:) stampa Indici vettoriali INTEGER, dimension(5) :: vett & (/, 6, 4,, 9 /) real, dimension() :: a & (/.,., 2., 3., 4., 5.&, 6., 7., 8., 9. /) real, dimension(5) :: b ba(vett) bconterrà: [., 5., 3.,., 8.] Indici vettoriali INTEGER, dimension(5) :: vett & (/, 6, 4,, 9 /) real, dimension() :: a & (/.,., 2., 3., 4., 5.&, 6., 7., 8., 9. /) real, dimension(5) :: b a(vett)b ERRORE IN COMPILAZIONE!! 6
7 Mark.true.! Inizializzazione di Mark! Esegue il crivello do i2,n! Bastava n/2 if (mark(i)) mark(2i:n:i).false.! Ciclo di stampa do i2,n if (mark(i)) write(,)"numero", i, "primo" Somma dispari In quanti modi si può calcolare la somma dei primi n numeri dispari? Quello che serve in ogni caso è un ciclo che enumeri i numeri dispari per ogni possibile valore di n Se n fosse fissato a priori (non un input al problema) si potrebbe calcolare il risultato senza usare un ciclo: 357 Modo s DO i,n ss2i-! 2i- i-esimo numero dispari Modo 2 s DO i,2n-,2 ssi! i e` l i-esimo numero dispari s i DO ss2i- ii IF (i>n) EXIT Modi 3 e 4 s i DO ii ss2i- IF (in) EXIT s i DO ssi ii2 IF (i>2n-)& EXIT Modi 5 e 6 s s i i- DO ii2 ssi IF (i2n-)& EXIT 7
8 Modo 7 s i Alternativamente: DO IF ((i/2)2i) THEN ii IF (MOD(i,2)) THEN ssi! I e` dispari!! nn-! Quanti numeri mancano? IF (n) EXIT END IF Modo 8 s n2n-! n-esimo numero dispari DO ssn nn-2 IF (n-) EXIT Modo 9 (sommadispariancora.f9) Modo 9 integer, dimension(5) :: a& (/ (2i-, i,5) /)! (/ (i, i,9,2) /) write (,'(I4,/)') a write (,) '-----' a(2:5)a(2:5)a(:4) write (,('(I4,/)')) a La somma tra due array non corrisponde a un ciclo DO eseguito elemento per elemento, ma è come se si creassero due array temporanei e se ne calcolasse la somma. Il risultato viene assegnato all array di destinazione! Modo 9 (sommadispariancora.f9) integer, dimension(5) :: a& (/ (2i-, i,5) /)! (/ (i, i,9,2) /) write (,'(I4,/)') a write (,) '-----' a(2:)a(2:)a(:4) write (,('(I4,/)')) a Qual è il valore in r dopo l esecuzione delle seguenti istruzioni se r è REAL? r(2/3)4. 8
9 Qual è il valore in r dopo l esecuzione delle seguenti istruzioni se r è REAL? r(2/3.)45/3 Qual è il valore in r dopo l esecuzione delle seguenti istruzioni se r è REAL? r(2/3.)45/3 r(2./3.)4 Qual è il valore in r dopo l esecuzione delle seguenti istruzioni se r è REAL? r(2/3.)45/3 r(2./3.)4 r Qual è il valore in r dopo l esecuzione delle seguenti istruzioni se r è REAL? r(2/3.)45/3 r(2./3.)4 r r r r3.666 Se a vale 6 e b vale -7, quale valore hanno le seguenti espressioni logiche? (a>b).and. (a-b<b-a) (a>b).or. (a-b<b-a) (mod(a,3).and..not.mod(b,3)) Convertire i seguenti numeri in binario Convertire i seguenti numeri in decimale 9
10 LSB Numero Risultato: LSB Numero Risultato: LSB Numero Risultato: LSB Numero Risultato: LSB Numero Risultato: LSB Numero Risultato:2
11 Variazione Dato un numero b: Si consideri b come base numerica Si fornisca in output un istogramma che dica quante volte la cifra i del sistema numerico in base b appare come ultima cifra di un numero primo (tra 2 e n) Variazione Dato un numero b: Si consideri b come base numerica Si fornisca in output un istogramma che dica quante volte la cifra i del sistema numerico in base b appare come ultima cifra di un numero primo (tra 2 e n) Il valore dell ultima cifra di un numero n in base b è il resto della divisione di n per b MOD(n,b) Implementazione Dato un numero primo se ne calcola il valore dell ultima cifra in base b Il numero di primi con quella cifra finale viene incrementato si uno! Serve un array indicizzato con le cifre finali che contenga il numero di volte in cui una cifra appare come ultima cifra integer, parameter :: MAXN22 integer :: n! input al programma:! numeri primi tra 2 e n integer :: i,j! variabili di ciclo logical, dimension(2:maxn) :: mark! mark(i) contiene.true. se i e`! Primo integer, parameter :: MAXC5 integer, dimension(maxc) :: istogramma! istogramma che dice quante volte! la cifra i appare come ultima! cifra di un numero primo write (,) "Inserire il valore di n" read (,) n if (n>maxr) STOP n troppo alto (>M)" write (,) "Inserire il valore della base numerica" read (,) cifre if (cifre>maxc) STOP "b troppo alto! inizializza l'istogramma:! bastava istogramma do i,cifre istogramma(i)! Esegue il crivello do i2,n! Bastava n/2 if (mark(i)) then! se mark(i) e`! vero i e` primo! do j2i,n,i! marca tutti i! multipli di i<n! come non-primi mark(j).false. end if
12 ! Ciclo di stampa j! Conta i numeri primi trovati do i,n if (mark(i)) then! MOD(i,cifre) valore! dell ultima! cifra in base (cifra) istogramma(mod(i,cifre))& istogramma(mod(i,cifre)) jj end if! stampa il report write (,) "Sono stati trovati", & j, "numeri primi" write (,) "Istogramma:" do i,cifre write (,) "Cifra", i, "appare", istogramma(i), "volte" 2
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
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 Fortran 90 Elda Rossi, CINECA Marzo 2015 Array - Introduzione Gli array sono serie di variabili dello stesso tipo, ciascuna accessibile mediante indici numerici.
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 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...
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,
DettagliLaboratorio di Calcolo Numerico Laboratorio 3: Algoritmi stabili e instabili Programma gnuplot
Laboratorio di Calcolo Numerico Laboratorio 3: Algoritmi stabili e instabili Programma gnuplot Andrea Franceschini E-mail: franceschini@dmsa.unipd.it Dispense: http://www.math.unipd.it/ putti/teaching/calcolo
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,
DettagliIntroduzione Generalitá sull uso degli array Array allocabili Funzioni intrinseche. Array. Fondamenti di Informatica T (A-K) AA
allocabili AA 2013-2014 allocabili Introduzione Un array rappresenta un gruppo di variabili (o costanti) dello stesso tipo, a cui si fa riferimento con un singolo nome. Si definisce anche vettore un array
DettagliLinguaggio C: Array Valeria Cardellini
Linguaggio C: Array Valeria Cardellini Corso di Calcolatori Elettronici A.A. 2018/19 Università degli Studi di Roma Tor Vergata Dipartimento di Ingegneria Civile e Ingegneria Informatica Array in C q Dichiarazione
DettagliAppelli degli anni precedenti Domande di teoria
Appelli degli anni precedenti di teoria 10 settembre 2003 1) Indicare i compiti principali di un sistema operativo 2) Spiegare come e' strutturata e come funziona la memoria di un computer 3)Rappresentare
DettagliCorso di Fondamenti di Informatica Università degli Studi di Cassino
Un linguaggio ad alto livello deve offrire degli strumenti per: rappresentare le informazioni di interesse dell algoritmo definire le istruzioni che costituiscono l algoritmo Cominciamo ad analizzare la
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
DettagliProgrammare con MATLAB c Parte 5 Cicli: for e while
Programmare con MATLAB c Parte 5 Cicli: for e while Lucia Gastaldi DICATAM - Sezione di Matematica, http://lucia-gastaldi.unibs.it Indice 1 La notazione due punti 2 Ciclo: for 3 Ciclo con controllo: while
DettagliIntroduzione al MATLAB c Parte 2
Introduzione al MATLAB c Parte 2 Lucia Gastaldi Dipartimento di Matematica, http://dm.ing.unibs.it/gastaldi/ 24 settembre 2007 Outline 1 M-file di tipo Script e Function Script Function 2 Elementi di programmazione
Dettaglidel Linguaggio C Istruzioni di iterazione
Istruzioni i Iterative ti del Linguaggio C Istruzioni di iterazione Le istruzioni di iterazione forniscono strutture di controllo che esprimono la necessità di ripetere una certa istruzione durante il
DettagliInformatica (A-K) 5. Algoritmi e pseudocodifica
Vettori e matrici #1 Informatica (A-K) 5. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile & Ambientale A.A. 2011-2012 2 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie
DettagliFondamenti di Informatica 6. Algoritmi e pseudocodifica
Vettori e matrici #1 Fondamenti di Informatica 6. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile A.A. 2010-2011 1 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie
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
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
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
DettagliProgrammazione Procedurale in Linguaggio C++
Programmazione Procedurale in Linguaggio C++ Strutture di Controllo Parte 4 Conclusioni G. Mecca M. Samela Università della Basilicata Strutture di Controllo >> Sommario Sommario Ricapitolazione Alcune
DettagliCostrutti condizionali e iterativi
Costrutti condizionali e iterativi Introduction to modern Fortran Paolo Ramieri, CINECA Maggio 2017 Strutture di controllo Le strutture di controllo permettono di alterare la sequenza di esecuzione delle
DettagliIterazione indeterminata
Iterazione indeterminata In alcuni casi il numero di iterazioni da effettuare non è noto prima di iniziare il ciclo, perché dipende dal verificarsi di una condizione. Esempio: Leggere una sequenza di interi
DettagliFondamenti di Informatica
Vettori e matrici #1 Le variabili definite come coppie sono dette variabili scalari Fondamenti di Informatica 5. Algoritmi e pseudocodifica Una coppia è una variabile
DettagliProblema. Vettori e matrici. Vettori. Vettori
e matrici Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione in C Problema Si vuole un programma che chieda 10 numeri dalla tastiera e li visualizzi dall ultimo al primo Soluzione attuale (con le
DettagliQualsiasi programma in C++ segue lo schema: Variabili
Qualsiasi programma in C++ segue lo schema: #include // libreria che gestisce flusso di input e output using namespace std; // uso di librerie standard del C++ int main() { // dichiarazioni
DettagliStrutture di controllo condizionali in Matlab
Strutture di controllo condizionali in Matlab Informatica B Le strutture condizionali A cosa servono le strutture condizionali? %Inserimento dei parametri della parabola: y=ax^2+bx+c a = input( inserire
DettagliDott. R. Gori, Dott. A. Rama INFORMATICA 242AA a.a. 2011/12 pag. 1. Le istruzioni iterative permettono di ripetere determinate azioni più volte:
Leggere 5 interi, calcolarne la somma e stamparli. Variante non accettabile: 5 variabili, 5 istruzioni di lettura, 5... int i1, i2, i3, i4, i5; scanf("%d", &i1):... scanf("%d", &i5); printf("%d", i1 +
DettagliI tipi strutturati e i record in C++
I tipi strutturati e i record in C++ Docente: Ing. Edoardo Fusella Dipartimento di Ingegneria Elettrica e Tecnologie dell Informazione Via Claudio 21, 4 piano laboratorio SECLAB Università degli Studi
DettagliUn ripasso di aritmetica: Conversione dalla base 10 alla base 2
Un ripasso di aritmetica: Conversione dalla base 10 alla base 2 Dato un numero N rappresentato in base dieci, la sua rappresentazione in base due sarà del tipo: c m c m-1... c 1 c 0 (le c i sono cifre
DettagliUniversità degli Studi di Ferrara
Università degli Studi di Ferrara Corso di Laurea in Matematica - A.A. 2018 2019 Programmazione Lezione 19 Controllo di Flusso in MATLAB Docente: Michele Ferrari - michele.ferrari@unife.it Nelle lezioni
DettagliUn ripasso di aritmetica: Rappresentazione decimale - limitazioni
Un ripasso di aritmetica: Rappresentazione decimale - limitazioni Consideriamo la base dieci: con tre cifre decimali si possono rappresentare i numeri compresi tra 0 e 999, il numero successivo (1000)
DettagliMatrici. 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
DettagliStringhe in C. Alessandra Giordani Lunedì 23 aprile 2012
Stringhe in C Alessandra Giordani agiordani@disi.unitn.it Lunedì 23 aprile 2012 http://disi.unitn.it/~agiordani/ Stringhe Sono particolari array: Ogni elemento del vettore è di tipo char La stringa è terminata
DettagliFortran in pillole : prima parte
Fortran in pillole : prima parte Annamaria Mazzia Dipartimento di Metodi e Modelli Matematici per le Scienze Applicate Corso di Metodi Numerici per l Ingegneria Introduzione al Fortran Un libro consigliato
DettagliI costrutti forniti dal linguaggio si dividono in corrispondenti classi di istruzioni
Classi di istruzioni In maniera simile a quanto fatto per i dati, un linguaggio mette a disposizione dei costrutti per realizzare la parte esecutiva dell algoritmo. Questa consiste di: Leggi i valori di
DettagliIl primo programma C++
Il primo programma C++ Un programma in qualsiasi linguaggio evoluto è una sequenza di istruzioni che la CPU dopo opportune conversioni esegue. La sintassi dei linguaggi di programmazione è molto piu rigida
DettagliAlgoritmi, Strutture Dati e Programmi. UD 5.a: Searching (parte 1)
Algoritmi, Strutture Dati e Programmi : Searching (parte 1) Prof. Alberto Postiglione AA 2007-2008 Ricerca di un'informazione in una tabella Determinare se una parola X è presente in un dizionario (cioè
DettagliLa codifica dei numeri
La codifica dei numeri La rappresentazione dei numeri con il sistema decimale può essere utilizzata come spunto per definire un metodo di codifica dei numeri all interno degli elaboratori: la sequenza
DettagliMATLAB c. Lucia Gastaldi Dipartimento di Matematica Lezione 4 (15 ottobre 2003)
MATLAB c M-file. Lucia Gastaldi Dipartimento di Matematica http://dm.ing.unibs.it/gastaldi/ Lezione 4 (15 ottobre 2003) Esercizio Problema 3: la successione di funzioni f n (x) = (x 2 x) n per 0 x 1 è
DettagliQualsiasi programma in C++ segue lo schema:
Qualsiasi programma in C++ segue lo schema: #include // libreria che gestisce flusso di input e output using namespace std; // uso di librerie standard del C++ int main() { // dichiarazioni
DettagliAssegnazione di una variabile
Assegnazione di una variabile Per scrivere un valore dentro una variabile si usa l operatore di assegnazione, che è rappresentato dal simbolo =. Quindi, se scrivo int a; a = 12; assegno alla variabile
DettagliIstruzioni condizionali di diramazione in Fortran 90
Istruzioni condizionali di diramazione in Fortran 90 Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2006/2007 Fortran 90: Istruzioni di diramazione DIS - Dipartimento
DettagliLa sezione di dichiarazione delle costanti 1.2 I tipi elementari Classificazione dei tipi Il tipo integer Il tipo boolean
Laboratorio di Programmazione A.A. 2000\2001 La sezione di dichiarazione delle costanti 1.2 I tipi elementari Classificazione dei tipi Il tipo integer Il tipo boolean Editazione a cura di: de Pinto E.
DettagliEsercizi in Python. Docente: Domenico Daniele Bloisi
Esercizi in Python Docente: Domenico Daniele Bloisi http://profs.scienze.univr.it/~bloisi/asl/asl.html Esercizio 1 Utilizzare il linguaggio di programmazione Python per stampare a video la scritta "prima
DettagliArray. Aggragati di variabili omogenee...
Array Aggragati di variabili omogenee... Cosa è un array È un insieme di variabili omogenee identificato da un indice, ad esempio Se devo leggere 1 numeri dallo standard input e memorizzarli all'interno
DettagliI tipi di dato del Fortran
I tipi di dato del Fortran In Fortran sono disponibili 5 tipi di dato (tipi primitivi o predefiniti): INTEGER REAL COMPLEX CHARACTER LOGICAL tipi numerici tipi non numerici Non considereremo il tipo COMPLEX
DettagliC: panoramica. Violetta Lonati
C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati
DettagliIntroduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software
Introduzione alla programmazione Algoritmi e diagrammi di flusso F. Corno, A. Lioy, M. Rebaudengo Sviluppo del software problema idea (soluzione) algoritmo (soluzione formale) programma (traduzione dell
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
DettagliIstruzioni iterative. Istruzioni iterative
Istruzioni iterative Esempio: Leggere 5 interi, calcolarne la somma e stamparli. Variante non accettabile: 5 variabili, 5 istruzioni di lettura, 5... int i1, i2, i3, i4, i5; scanf("%d", &i1):... scanf("%d",
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
DettagliC array. Problema: scrivere un programma che, ricevuto in input un intero n ed n interi positivi, li stampi in ordine inverso.
Problema: scrivere un programma che, ricevuto in input un intero n ed n interi positivi, li stampi in ordine inverso. Non sappiamo a priori quante variabili dobbiamo definire per contenere gli interi.
DettagliStrutture di controllo e cicli
AA 2012-2013 IF logico L IF logico rappresenta il tipo piú semplice di istruzione condizionale IF logico L IF logico rappresenta il tipo piú semplice di istruzione condizionale Sintassi IF ( e s p r e
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
DettagliLaboratorio di Matematica e Informatica 1
Laboratorio di Matematica e Informatica 1 Matteo Mondini Antonio E. Porreca matteo.mondini@gmail.com porreca@disco.unimib.it Dipartimento di Informatica, Sistemistica e Comunicazione Università degli Studi
DettagliCorso di PHP. Prerequisiti. 3 - Le strutture di controllo. Istruzioni semplici Controllo del flusso di programma
Corso di PHP 3 - Le strutture di controllo 1 Prerequisiti Istruzioni semplici Controllo del flusso di programma 2 1 Introduzione In molti casi le sole istruzioni viste finora non sono sufficienti a risolvere
DettagliINFORMATICA. Strutture iterative
INFORMATICA Strutture iterative Strutture iterative Si dice ciclo (loop) una sequenza di istruzioni che deve essere ripetuta più volte consecutivamente. Si consideri ad esempio il calcolo del fattoriale
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,
DettagliLaboratorio di Programmazione Laurea in Informatica A.A. 2000/2001 Docente: A. Lanza
1 Laboratorio di Programmazione Laurea in Informatica A.A. 2000/2001 Docente: A. Lanza Le relazioni tra tipi I costrutti selettivi Le istruzioni iterative Un problema (uso di istruzioni iterative) Editazione
DettagliAritmetica in Floating Point
Aritmetica in Floating Point Esempio di non associatività Alcune proprietà delle operazioni in aritmetica esatta possono non valere in aritmetica finita in virgola mobile (floating point). Ad esempio:
DettagliPREFAZIONE... IX Lo scopo di questo libro... ix La metodologia di insegnamento... ix Panoramica sul libro... xiii
Sommario PREFAZIONE... IX Lo scopo di questo libro... ix La metodologia di insegnamento... ix Panoramica sul libro... xiii CAPITOLO 1: INTRODUZIONE AI COMPUTER, A INTERNET E AL WEB... 1 1.1 Introduzione...
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 2017
DettagliINFORMATICA GENERALE Prof. Alberto Postiglione. Scienze della Comunicazione Università di Salerno. Il Linguaggio di Programmazione Pascal
INFORMATICA GENERALE Prof. Alberto Postiglione Scienze della Comunicazione Università degli Studi di Salerno : Programmazione in Pascal (1) PROGRAMMAZIONE: Introduzione al Pascal (1) 14 nov 2011 Dia 2
DettagliLaboratorio di Calcolo Numerico Laboratorio 4: Functions e metodo di Picard
Laboratorio di Calcolo Numerico Laboratorio 4: Functions e metodo di Picard Andrea Franceschini E-mail: franceschini@dmsa.unipd.it Dispense: http://www.math.unipd.it/ putti/teaching/calcolo ambientale/index.html
DettagliRappresentazione degli algoritmi
Rappresentazione degli algoritmi Universitá di Ferrara Ultima Modifica: 21 ottobre 2014 1 1 Diagramma di flusso Utilizzare il diagramma di flusso per rappresentare gli algoritmi che risolvono i seguenti
DettagliStrutture di Controllo
Strutture di Controllo Istruzioni condizionali e cicli http://www.dia.uniroma3.it/~roselli/ roselli@dia.uniroma3.it Credits Materiale a cura del Prof. Franco Milicchio Introduzione Fino ad ora, il nostro
DettagliLaboratorio di Calcolo Numerico Laboratorio 8: Vettori e Matrici
Laboratorio di Calcolo Numerico Laboratorio 8: Vettori e Matrici Claudia Zoccarato E-mail: claudia.zoccarato@unipd.it Dispense: Moodle Dipartimento ICEA 03 Maggio 2017 Richiami In MATLAB, ogni variabile
Dettagliosservazione: 1 MCD(m,n) min(m,n) = si provano i numeri compresi tra 1 e min(m,n) conviene iniziare da min(m,n) e scendere verso 1
Esempio: Leggere due interi positivi e calcolarne il massimo comun divisore. MCD(12, 8) = 4 MCD(12, 6) = 6 MCD(12, 7) = 1 Sfruttando direttamente la definizione di MCD osservazione: 1 MCD(m,n) min(m,n)
DettagliLinguaggio Testuale. E un formalismo che consente di rappresentare gli algoritmi mediante semplici istruzioni in linguaggio «parlato»
Linguaggio Testuale E un formalismo che consente di rappresentare gli algoritmi mediante semplici istruzioni in linguaggio «parlato» Delle volte viene chiamato metalinguaggio, e l algoritmo scritto tramite
DettagliEsercizi di MatLab. Sommario Esercizi di introduzione a MatLab per il corso di Calcolo Numerico e Laboratorio, A.A
Esercizi di MatLab Sommario Esercizi di introduzione a MatLab per il corso di Calcolo Numerico e Laboratorio, AA 2017 2018 Gli esercizi sono divisi in due gruppi: fondamentali ed avanzati I primi sono
DettagliINFORMATICA GENERALE Prof. Alberto Postiglione. Università degli Studi di Salerno. UD 3.2b: Programmazione in Pascal (1)
INFORMATICA GENERALE Prof. Alberto Postiglione Scienze della Comunicazione Università degli Studi di Salerno : Programmazione in Pascal (1) PROGRAMMAZIONE: Introduzione al Pascal (1) 14 nov 2011 Dia 2
DettagliProgrammazione I - Laboratorio
Programmazione I - Laboratorio Esercitazione 3 - Array Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti di.unipi.it 2. Dipartimento
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
DettagliProgrammazione C Massimo Callisto De Donato
Università degli studi di Camerino Scuola di scienze e tecnologia - Sezione Informatica Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto LEZIONE
DettagliLaboratorio di Programmazione Laurea in Informatica A.A. 2000/2001 Docente: A. Lanza. Il tipo ARRAY Problemi (calcolo della frequenza, trasposta, )
Laboratorio di Programmazione Laurea in Informatica A.A. 2000/2001 Docente: A. Lanza Il tipo ARRAY Problemi (calcolo della frequenza, trasposta, ) Editazione a cura di Bombini T., De Candia P. e Galantino
DettagliLe etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j
L insieme delle istruzioni (2) Architetture dei Calcolatori (lettere A-I) Istruzioni per operazioni logiche: shift Shift (traslazione) dei bit di una parola a destra o sinistra sll (shift left logical):
DettagliCorso di Informatica di Base
Corso di Informatica di Base A.A. 2011/2012 Algoritmi e diagrammi di flusso Luca Tornatore Cos è l informatica? Calcolatore: esecutore di ordini o automa Programma: insieme di istruzioni che possono essere
DettagliDati due punti sul piano calcolare la loro distanza
Introduzione al C Primo esempio in C Dati due punti sul piano calcolare la loro distanza Soluzione: la distanza fra due punti si calcola secondo il teorema di Pitagora, con la formula: y Distanza = (lato12
DettagliCalcolatori Elettronici
Calcolatori Elettronici Il linguaggio assemblativo MIPS (1) Istruzioni di ALU: operazioni ed operandi Trasferimenti tra memoria e CPU Vettori (1) Le costanti Livelli di astrazione s o f t w a r e H W Linguaggio
DettagliLaboratorio di Programmazione Laurea in Informatica A.A. 2000/2001 Docente: A. Lanza
Laboratorio di Programmazione Laurea in Informatica A.A. 2000/2001 Docente: A. Lanza Il tipo subrange La sezione di dichiarazione delle variabili Problemi ed esercizi su subrange ed enumerati Editazione
DettagliIng. Lorenzo Vismara
Ing. Lorenzo Vismara ! "# #!$#%&# '(!)&!*)&#*$# +!, +$-.(( #!((%&#, #!& %&) /$#01&! 0#( 3452 $ 6#( 1 2 &## #!7 #89): #;##( 1? )#&)< $9): #@82 #)AA)#&#&$( #7)& @B && ##@A&#C 7 $C#&7 @B A&#)@#7&#
DettagliCorso di Informatica
Corso di Informatica Modulo T -Struttura vettore 0/08/0 Prerequisiti Programmazione elementare Passaggio parametri per indirizzo 0/08/0 Introduzione I dati di tipo semplice (Intero, Reale, Carattere, Booleano)
DettagliArray Tipi di dato semplici e strutturati strutturati array elementi omogenei numero d ordine indice lunghezza dimensione
Array Tipi di dato semplici e strutturati i tipi di dato visti finora erano tutti semplici: int, char, float,... i dati manipolati sono spesso complessi (o strutturati) con componenti elementari o strutturate
DettagliIntroduzione al C. Unità 7 Array. S. Salza, C. Ciccotelli, D. Bloisi, S. Peluso, A. Pennisi
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 7 Array S. Salza, C. Ciccotelli, D. Bloisi, S. Peluso, A. Pennisi Sommario Unità
DettagliLaboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale
Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Il problema di fondo Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Algoritmi e Programmazione Stefano
DettagliEfficienza: esempi. Nella lezione precedente. Fondamenti di Informatica. Ferdinando Cicalese. ! Qualche problema computazionale
Efficienza: esempi Fondamenti di Informatica Ferdinando Cicalese Nella lezione precedente! Qualche problema computazionale " Trova min " Selection sort! Pseudocodice per descrivere algoritmi " Variabili
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;
DettagliESPRESSIONI. Ivan Lanese
ESPRESSIONI Ivan Lanese Argomenti Espressioni Spaziatura e commenti Per domani Domani sarete divisi in 2 gruppi Il gruppo coi portatili qui in aula Controllate di essere in grado di avviare Eclipse sul
DettagliArray. Maurizio Palesi Salvatore Serrano. In C si possono definire tipi strutturati Vi sono due costruttori fondamentali
MASTER Information Technology Excellence Road (I.T.E.R.) Array Maurizio Palesi Salvatore Serrano Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 1 Tipi di dato stutturati In C si possono
DettagliFortran in pillole : seconda lezione
Fortran in pillole : seconda lezione Annamaria Mazzia Dipartimento di Metodi e Modelli Matematici per le Scienze Applicate Corso di Metodi Numerici per l Ingegneria I predicati Riprendiamo l algoritmo
DettagliESERCITAZIONE N.8. Il calcolatore ad orologio di Gauss. L aritmetica dell orologio di Gauss. Operazioni e calcoli in Z n
Il calcolatore ad orologio di Gauss ESERCITAZIONE N.8 18 novembre L aritmetica dell orologio di Gauss Operazioni e calcoli in Z n 1, 1, -11, sono tra loro equivalenti ( modulo 12 ) Rosalba Barattero Sono
DettagliTipi di dato strutturati: Array
Tipi di dato strutturati: Array I tipi di dato visti finora sono tutti semplici: int, char, float,... ma i dati manipolati nelle applicazioni reali sono spesso complessi (o strutturati) Gli array sono
Dettagli