Cicli in Fortran I cicli consentono di eseguire una sequenza di istruzioni più di una volta due tipi: Cicli iterativi Cicli while.

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C++
Advertisements

Programma: main() { istruzioni } ; assegnazione condizione ciclo istruzione: ;
Informatica 22/03/2012.
Iterazione while – do while - for.
Iterazione A. Ferrari.
PROGRAMMARE IN PASCAL (le basi)
Universita di Camerino
MATLAB.
MATLAB. Scopo della lezione Programmare in Matlab Funzioni Cicli Operatori relazionali Esercizi vari.
Algoritmi e Programmazione
Informatica Generale Marzia Buscemi
Introduzione al linguaggio C
INFORMATICA Strutture iterative
Programmazione Procedurale in Linguaggio C++
Introduzione agli algoritmi. Definizione Sistema di regole e procedure di calcolo ben definite che portano alla soluzione di un problema con un numero.
PROGRAMMI DI RICERCA E ORDINAMENTO
Tipi di dato e controllo del flusso Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dellInformazione Università di Siena Via Roma 56 – – SIENA.
Linguaggio MATLAB: costrutti tipici (IF,WHILE…)
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione 1, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a.2009/2010 Prof.ssa Chiara Petrioli.
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
1 Corso di Informatica (Programmazione) Lezione 11 (19 novembre 2008) Programmazione in Java: controllo del flusso (iterazione)
1 Corso di Informatica (Programmazione) Lezione 10 (12 novembre 2008) Programmazione in Java: espressioni booleane e controllo del flusso (selezione)
Corso di Laurea in Biotecnologie Informatica (Programmazione)
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab m-file m-file script script Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali.
MATLAB.
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Indipendenza lineare,
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Esercizi vari Esercizi.
Il linguaggio Fortran 90: 4. Array: Vettori e Matrici
Il Linguaggio Fortran 90: 1. Preliminari
Il linguaggio Fortran 90: 2. Istruzioni di Controllo
Il linguaggio Fortran 90: 5. Formato di I/O e Files
Introduzione alla programmazione lll
Array Funzioni che operano su array. Funzioni Ricordiamo che una funzione è una parte di codice a sé stante che esegue un compito e/o ritorna un risultato.
ITERAZIONE e RICORSIONE (eseguire uno stesso calcolo ripetutamente) ITERAZIONE: ripetere piu volte una sequenza di operazioni istruzioni: for, while, do.
DAL PROBLEMA ALL'ALGORITMO Problemi e Programmi Paolo Amico
Fondamenti di Informatica I a.a Il linguaggio C Il controllo di flusso La selezione condizionale Listruzione switch I cicli Le istruzioni break,
Istruzioni di ripetizione in Java
Algoritmi su Tipi Semplici
Istruzioni Iterative Nicola Fanizzi
Strutture di controllo in C -- Flow Chart --
CODIFICA Da flow-chart a C++.
Architettura degli Elaboratori II (canale P-Z) Istruzioni di controllo Dott. Franco Liberati.
Il linguaggio C Le funzioni C Language Il passaggio dei parametri
Programmazione di Calcolatori
Parte 4 Elementi di Informatica di base
VARIABILI E COSTANTI LOGICHE
Laboratorio di Informatica1 Parte 4 Laboratorio di Informatica Dott.ssa Elisa Tiezzi Dott.ssa Elisa Mori.
Problema: come dividere due numeri
BIOINFO3 - Lezione 211 INPUT La lettura di un input dallo standard input (tastiera) si effettua utilizzando lespressione. Quando il programma incontra.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Anno accademico Le istruzioni di controllo in C.
Il linguaggio Fortran 90: 3. Procedure e Funzioni
TURBOPASCAL L’iterazione - prof. V. Riboldi -.
Il ciclo while.  Permette di ripetere un blocco di istruzioni fino a quando non si verifica un determinato evento  Il ciclo while può essere realizzato.
R 255 G 211 B 8 R 255 G 175 B 0 R 127 G 16 B 162 R 163 G 166 B 173 R 104 G 113 B 122 R 234 G 234 B 234 R 175 G 0 B 51 R 0 G 0 B 0 R 255 G 255 B 255 Supporting.
Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies.
Strutture di controllo Esercizi!. Utilizzare i metodi: I modi per poter richiamare un metodo, di una classe (ad esempio SavitchIn) sono due. 1) E’ sempre.
Lez. 9 (13/14)Elementi di Programmazione1 Lezione 9 Valutazione di espressioni File di testo sequenziali.
Informatica 4 Funzioni. FUNZIONE: definizione MATEMATICA Relazione (o applicazione) binaria tra due insiemi A e B che associa a ogni elemento di A un.
Lez 4 (13/14)Elementi di Programmazione1 Strutture di controllo 2.
1 Fabio Scotti – Università degli Studi di Milano Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( )
Lez. 11 (13/14)Elementi di Programmazione1 Lezione 11 Esercizi.
Lez.6 (13/14)Elementi di Programmazione1 Lezione 6 Funzioni Passaggio di parametri.
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Procedure - Funzioni. Procedure e funzioni Parti di programma a cui è associato un nome e che può essere attivata mediante una chiamata. Le funzioni a.
Informatica 4 La ricorsione. Definizione di ricorsione Ricorsione è la proprietà di quei programmi che, all’interno delle istruzioni che li compongono,
Strutture di controllo
Basi di Java Strutture base di Java. Basi di java ▪Variabili ▪Operatori ▪Condizioni e Cicli ▪Array.
Transcript della presentazione:

Cicli in Fortran I cicli consentono di eseguire una sequenza di istruzioni più di una volta due tipi: Cicli iterativi Cicli while

Ciclo Iterativo DO indice=inizio,fine,incremento istruzione 1 istruzione 2 …………… END DO blocco indice è una variabile intera ed è utilizzatata come contatore del ciclo inizio, fine, incremento sono parametri incremento è facoltativo se è omesso si assume che è uguale a 1

Ciclo Iterativo 1) inizio, fine, incremento possono essere costanti, variabili o espressioni; se sono variabili o espressioni devono essere valutate prima del ciclo 2) allinizio del ciclo il programma pone indice=inizio se indice*incremento =< fine*incremento il programma esegue le istruzioni allinterno del ciclo

Ciclo Iterativo 3) eseguite le istruzioni allinterno del ciclo il programma pone indice=indice+incremento se indice*incremento =< fine*incremento vengono eseguite nuovamente le istruzioni del ciclo 4) si ripete il punto 3) finchè indice*incremento =< fine*incremento quando questa condizione non è più vera viene eseguita la prima istruzione dopo il ciclo 5) Si eseguono n.iter.= (fine-inizio+incremento)/incremento

Ciclo Iterativo (esempi) DO i=1,10,2 istruzione …………… END DO 5 iterazioni DO i=3,-3,-2 istruzione …………… END DO 4 iterazioni

Istruzione CYCLE Istruzione CYCLE interrompe lesecuzione delle istruzioni del ciclo e fa ritornare allinizio del ciclo Lindice del ciclo viene incrementato e lesecuzione delle istruzioni del ciclo riprende se lindice non ha raggiunto il suo valore

Istruzione CYCLE (esempio) PROBLEM esempio INTEGER :: I DO i=1,10 IF ( i == 3 ) CYCLE WRITE(*,*) i END DO END PROGRAM esempio Si stampano tutti i numeri interi compresi tra 1 e 10 Escluso il numero 3

Istruzione EXIT Istruzione EXIT interrompe lesecuzione delle istruzioni del ciclo, fa uscire dal ciclo Viene eseguita la prima istruzione dopo END DO del ciclo

Istruzione EXIT (esempio) PROBLEM esempio INTEGER :: I DO i=1,10 IF ( i == 3 ) EXIT WRITE(*,*) i END DO END PROGRAM esempio Si stampa solamente il numero 1

Ciclo while DO WHILE (espressione logica) istruzione 1 istruzione 2 …………… END DO blocco quando lespressione logica è.TRUE. il blocco delle istruzioni del ciclo vengono ripetute quando lespressione logica è.FALSE. viene eseguita la prima istruzione dopo END DO

Ciclo while DO …………... IF (espressione logica) EXIT …………… END DO blocco quando lespressione logica è.TRUE. il blocco delle istruzioni del ciclo vengono ripetute quando lespressione logica è.FALSE. viene eseguita la prima istruzione dopo END DO

PROBLEM esempio DOUBLE PRECISION :: var,eps eps=1.D0 DO var=1.D0+eps IF ( var.EQ.1.D0) EXIT eps=eps/2.d0 END DO WRITE(*,*) eps =, eps END PROGRAM esempio Ciclo while

Cicli DO con nome DO indice = inizio, fine, incremento …………... IF (espressione logica) CYCLE …………… END DO [nome]

Cicli DO con nome DO …………... IF (espressione logica) CYCLE …………… END DO …………... IF (espressione logica) EXIT …………… [nome]

SUBROUTINE SUBROUTINE nome_subr ( lista_argomenti ) sezione esecutiva sezione dichiarativa RETURN END SUBROUTINE nome_subr

SUBROUTINE PROGRAM nome_prog CALL nome_subr ( lista_argomenti ) END PROGRAM nome_prog

SUBROUTINE 1) ogni subroutine è compilata separatamente dal programma principale e da altre subroutine quindi può usare le stessi nomi delle variabili e le stesse etichette utilizzate dal programma principale o da altre subroutine 2) lordine e il tipo degli argomenti della chiamata devono corrispondere a quelli della definizione

SUBROUTINE PROGRAM main INTEGER, PARAMETER :: n=2 DOUBLE PRECISION :: f,x(n) END PROGRAM main CALL funct( n,x,f ) SUBROUTINE funct(n,x,f ) INTEGER :: n DOUBLE PRECISION :: f,x(n)

Istruzione INTENT INTENT(IN) largomento è un dato di input INTENT(OUT) largomento è un dato di output INTENT(IN OUT) largomento è sia un dato di input che di output se listruzione INTENT è assente largomento è sia un dato di input che di output

Istruzione INTENT SUBROUTINE funct(n,x,f ) INTEGER, INTENT(IN) :: n DOUBLE PRECISION, INTENT(IN) :: x(n) DOUBLE PRECISION, INTENT(OUT) :: f

FUNCTION FUNCTION nome_funct ( lista_argomenti ) sezione esecutiva nome_funct=espressione sezione dichiarativa RETURN END FUNCTION nome_funct

PROGRAM nome_prog var=nome_funct( lista_argomenti ) END PROGRAM nome_prog FUNCTION

Calcolo del gradiente approssimato

per valori di sufficientemente piccoli Forward formula Backward formula Symmetric formula Calcolo del gradiente approssimato

subroutine gradapp(n,x,f) call funct(n,x,f) do i=1,n z=x z(i)=x(i)+eps call funct(n,z,fp) g(i)=(fp-f)/eps end do return end subroutine gradapp

Generatore di Numeri Pseudo-casuali RANDOM_NUMBER(x) x è un REAL ritorna un valore estratto da una sequenza di numeri pseudo-casuali il valore restituito nella variabile x è compreso tra 0 (incluso) e 1 (escluso)

Gen. di Num. Cas. (esempio di numero in [l,u) ) PROGRAM num_cas implicit none real :: num double precision, parameter :: l=-10, u=10 double precision :: dnum,x call RANDOM_NUMBER(num) dnum=dble(num) x=l+dnum*(u-l) stop end program num_cas

Sequenza pesudo-casuale seed della sequenza … s ……s……s circa numeri

Inizializzazione della sequenza RANDOM_SEED() imposta linnesco della sequenza random s ad un valore ottenuto sulla base del tempo di sistema. se CALL RANDOM_SEED() precede listruzione CALL RANDOM_NUMBER(num) ad ogni esecuzione del programma vengono generati numeri differenti altrimenti vengono generati gli stessi numeri