thotgor
13-05-2005, 12:20
chi mi da una mano a convertire questo programma in fortran 90 a fortran 77?
Program gittata
!Programma per il calcolo della distanza percorsa da un proiettile
!sparato con una velocit iniziale ed un angolo theta rispetto al suolo.
IMPLICIT NONE
! Dichiarazione dei parametri
REAL, PARAMETER :: gradi_rad = 0.01745329 ! Da gradi a rad
! Dichiara le variabili
REAL :: gravity = -9.81 ! Accelerazione di gravità (m/s*s)
INTEGER :: max_degrees ! Angolo di massima gittata (gradi)
REAL :: max_range ! Massima gittata alla velocità vO (metri)
REAL :: range ! Gittata con un dato angolo (metri)
REAL :: radian ! Angolo iniziale (in radianti)
INTEGER :: theta ! Angolo iniziale (in gradi)
REAL :: v0 ! Velocità del proiettile (in m/s)
! Inizializza le variabili.
max_range = 0.
max_degrees = 0
v0 = 20.
! Calcolo ciclico per ogni angolo.
loop: DO theta = 0, 90
! Angolo in radianti.
radian = real (theta) * gradi_rad
! Calcola la gittata in metri
range = (-2.* v0**2 / gravity) * sin(radian) * cos(radian)
! Visualizza il valore della gittata per questo angolo.
WRITE (*,*) 'THETA= ' , theta, ' gradi; Gittata = ', range, ' metri '
! Confronta la gittata corrente con la gittata massima precedente.
! Se la gittata corrente è maggiore, salva il suo valore
! e l'angolo corrispondente.
IF ( range > max_range ) THEN
max_range = range
max_degrees = theta
END IF
END DO loop
! Lascia una riga vuota e visualizza la gittata massima
! e l'angolo corrispondente.
WRITE (*,*) ''
WRITE (*,*) 'Gittata massima = ', max_range, ' a' , max_degrees, ' gradi'
END PROGRAM
Grazie, vi giuro!
Program gittata
!Programma per il calcolo della distanza percorsa da un proiettile
!sparato con una velocit iniziale ed un angolo theta rispetto al suolo.
IMPLICIT NONE
! Dichiarazione dei parametri
REAL, PARAMETER :: gradi_rad = 0.01745329 ! Da gradi a rad
! Dichiara le variabili
REAL :: gravity = -9.81 ! Accelerazione di gravità (m/s*s)
INTEGER :: max_degrees ! Angolo di massima gittata (gradi)
REAL :: max_range ! Massima gittata alla velocità vO (metri)
REAL :: range ! Gittata con un dato angolo (metri)
REAL :: radian ! Angolo iniziale (in radianti)
INTEGER :: theta ! Angolo iniziale (in gradi)
REAL :: v0 ! Velocità del proiettile (in m/s)
! Inizializza le variabili.
max_range = 0.
max_degrees = 0
v0 = 20.
! Calcolo ciclico per ogni angolo.
loop: DO theta = 0, 90
! Angolo in radianti.
radian = real (theta) * gradi_rad
! Calcola la gittata in metri
range = (-2.* v0**2 / gravity) * sin(radian) * cos(radian)
! Visualizza il valore della gittata per questo angolo.
WRITE (*,*) 'THETA= ' , theta, ' gradi; Gittata = ', range, ' metri '
! Confronta la gittata corrente con la gittata massima precedente.
! Se la gittata corrente è maggiore, salva il suo valore
! e l'angolo corrispondente.
IF ( range > max_range ) THEN
max_range = range
max_degrees = theta
END IF
END DO loop
! Lascia una riga vuota e visualizza la gittata massima
! e l'angolo corrispondente.
WRITE (*,*) ''
WRITE (*,*) 'Gittata massima = ', max_range, ' a' , max_degrees, ' gradi'
END PROGRAM
Grazie, vi giuro!