Programma in fortran 90 per il calcolo del minimo.

xry-votailprof
salve a tutti, non riesco a scrivere un programma per il calcolo del minimo tra n numeri con il linguaggio fortran90. vi chiedo gentilmente di aiutarmi. io ho fatto così :
PROGRAM minimo
IMPLICIT NONE
INTEGER :: n, k, x, min ! n è il numero di "numeri" da confrontare , k è il contatore , x rappresenta gli n numeri e min è il minimo.
! inizializzo le variabili
n = 0
k = 0
k = k + 1
WRITE (*,*) ' il numero "n" dei numeri da confrontare vale ='
READ (*,*) n
WRITE (*,*) ' inserisci gli "n" numeri da confrontare ='
READ (*,*) x
min = x
arrivato a questo punto mi blocco perchè oltre a dover confrontare gli x con il min devo anche confrontare il K con il numero di confronti da fare ( scusate il pessimo gioco di parole ) e dovendo utilizzare il costrutti IF (.....) THEN.... non so proprio dove mettere le mani.
grazie in anticipo.

Risposte
Rggb1
Meglio se usi un costrutto DO.. non credi?

xry-votailprof
non siamo ancora arrivati a spiegare questo tipo di costrutto e la professoressa ha richiesto esplicitamente il costrutto if

Rggb1
Beh spero almeno abbiate studiato il GOTO. ;)

Qual è il problema dunque?

xry-votailprof
che non so come fare, se potresti farmi vedere e spiegarmi il perchè te ne sarei grato, comunque abbiamo fatto il goto

Rggb1
Dubbio: a quale livello sei dunque? :?
Conosci (o sapresti inventare) un algoritmo per trovare il valore minimo in un insieme di numeri? Sei in grado di schematizzarlo, anche a parole e/o in un linguaggio naturale?

Perché poi, la scrittura in Fortran (o in altro linguaggio di programmazione) vien da sé.

xry-votailprof
ovviamente non ho mai programmato in vita mia,quindi sono praticamente ad un livello più che basso.
bhè per trovare il minimo tra n numeri bisogna sceglierne uno e confrontarlo con tutti gli altri se questo è il più piccolo di tutti allora è il minimo mentre se ce ne uno più piccolo inizio a confrontare questo con gli altri e così via finché non trovo il minimo.....ma non so come scriverlo in fortran.

Rggb1
Devi fare qualcosa del genere:
C	Nucleo del programma
C	--------------------
	n = 0
	k = 0
	WRITE (*,*) ' Inserisci il numero dei valori da confrontare: '
	READ (*,*) n

10	k = k + 1
	WRITE (*,*) ' Inserisci il valore: '
	READ (*,*) x

	IF (k .eq. 1) THEN
		min = x 
	ELSE IF (x .lt. min) THEN
		min = x
	END IF

	IF (k .lt. n) THEN
		GO TO 10
	END IF

	WRITE (*,*) ' valore minimo =', min

Qualche spiegazione, visto che dici di essere a zero:
- il programma esegue un ciclo (ripete le operazioni) per 'n' volte; incrementa k di 1 e lo confronta con n ogni volta;
- se 'k' vale uno allora è la prima volta che il ciclo di operazioni viene eseguito: prende il primo valore letto come minimo;
- se il valore letto è minore del minimo finora trovato, aggiorna il valore del minimo;
- alla fine mostra (stampa) il valore minimo trovato.

Da notare che i valori letti non vengono mantenuti in memoria dal programma.

apatriarca
[OT]
Mi sono sempre chiesto che cosa porta un(a) professore(ssa) a scegliere fortran (soprattutto la versione degli anni '70) per un corso di programmazione per principianti. È un linguaggio famoso per essere poco leggibile e per avere costrutti che portano a codice spaghetti nei quali è difficile seguire il flusso di esecuzione del programma.
[/OT]

xry-votailprof
ti ringrazio =), sei stato molto gentile.

xry-votailprof
lei ci disse che il linguaggio fortran è il più usato dai matematici e dato che noi studiamo matematica...... credo abbia a che fare con questo.
A dire la verità credo anche che sia una questione di tradizione, comunque sia i nostri programmi hanno a che fare solo ed esclusivamente con la matematica, ricerca delle radici di un equazione, moltiplicazioni tra matrici e roba simile e non andremo oltre.

apatriarca
Fortran è certamente molto usato in analisi numerica, ma per niente in tutti gli altri. Non sono convinto che sia davvero il linguaggio più usato dai matematici. Ma anche lo fosse, c'è sempre tempo per imparare un secondo o terzo linguaggio e il fortran è un pessimo linguaggio con cui iniziare a mio parere.

xry-votailprof
guarda dato che sicuramente ne sai molto più di me rispetto e non contesto il tuo parere, quando questo corso sarà finito ho intenzione comunque di imparare almeno un altro linguaggio e stavo pensando al C, tu cosa ne pensi?

Rggb1
@Acheronte
La questione è già stata affrontata diverse volte. La mia opinione è: meglio imparare prima le tecniche basilari di programmazione, e poi affrontare un linguaggio di alto livello. Al limite le cose possono essere fatte assieme (anche se io preferirei di no).

@apatriarca
Sul Fortran non mi pronuncio per motivi "affettivi" ;).

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.