Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Programacion Tarea 5
Programacion Tarea 5
TAREA : 5
INTEGRANTE:
PROGRAM SUMA_DE_NATURALES
IMPLICIT NONE
INTEGER::N,X,S
READ*,N
X=1
S=0
DO
S=S+X
X=X+1
IF(X>N) EXIT
END DO
2.- Considérese ahora el problema de determinar el primer valor n para el cual la suma
PROGRAM PROBLEMA_2
INTEGER X,M
M=0
DO
IF(M>10000) EXIT
X=X+1
M=M+X
PRINT*,X,M
END DO
PRINT*,"N ES:",M
Ordenar la tabla primero en orden ascendente y luego en orden descendente. usando ciclo do if exit
end do
IMPLICIT NONE
INTEGER::N,C,D,X
READ*,N
X=1
C=X*X
D=X*X*X
X=X+1
PRINT*,X-1,C,D
IF(X>N) EXIT
END DO
INGRESE EL VALOR DE N
1 1 1
2 4 8
3 9 27
4 16 64
5 25 125
IMPLICIT NONE
INTEGER::N,C,D,X
READ*,N
DO X=N,1,-1
C=X*X
D=X*X*X
PRINT*,X,C,D
IF(X>N) EXIT
END DO
5 25 125
4 16 64
3 9 27
2 4 8
1 1 1
4.- Calcular la suma y multiplicación de los N primeros números enteros positivos. usando ciclo do if
exit end do
PROGRAM SUMA_MULTIPLICACION
IMPLICIT NONE
INTEGER::N,X,S,M
READ*,N
X=1
S=0
M=1
DO
M=M*X
S=S+X
X=X+1
PRINT*,X-1,S,M
IF(X>N) EXIT
END DO
5.- Tabular la función para x en el intervalo [0;1] con un paso h = 0:1 (Ayuda: Notar
que si [a;b] es el intervalo bajo consideración, los puntos donde hay que evaluar f están dados por xi =
a+ih con i = 0.….N, siendo N = (b-a)/h). usando ciclo do if exit end do
PROGRAM PROBLEMA_5
IMPLICIT NONE
INTEGER::I,L
REAL::R,M,Y
REAL,PARAMETER::PI=3.141,Z=0.0,G=1.0
M=0.1
L=INT((G-Z)/M)
PRINT*,"TABLA DE LA FUNCION F(X) = (1/SQRT(2*PI)) * EXP(-X*2)"
PRINT*," X | F(X) "
DO I=0,L
R=Z+I*M
Y=(1.0/SQRT(2.0*PI)) * EXP(-R**2)
PRINT*,R,' | ', Y
IF(I==L) EXIT
END DO
END PROGRAM PROBLEMA_5
6.- Dado un conjunto de N números determinar cuántos de ellos son negativos, positivos o cero.
usando ciclo do if exit end do
PROGRAM CANTIDADES
IMPLICIT NONE
INTEGER::CERO,MENORES_A_CERO,MAYORES_A_CERO
INTEGER::X,N,I
CERO = 0
MENORES_A_CERO = 0
MAYORES_A_CERO = 0
I=1
READ*,X
DO
PRINT*,"INGRESE EL NUMERO"
READ*,N
IF (N == 0) THEN
CERO = CERO+1
END IF
IF (N < 0) THEN
MENORES_A_CERO = MENORES_A_CERO+1
END IF
IF (N > 0) THEN
MAYORES_A_CERO = MAYORES_A_CERO+1
END IF
I=I+1
IF(I>X) EXIT
END DO
INGRESE EL NUMERO
INGRESE EL NUMERO
-1
INGRESE EL NUMERO
4
INGRESE EL NUMERO
INGRESE EL NUMERO
-2
INGRESE EL NUMERO
INGRESE EL NUMERO
7.- Dado un conjunto de N números reales determinar cuál es el máximo, el mínimo y la media
aritmética del conjunto. usando ciclo do if exit end do
PROGRAM MAYOR_MENOR
IMPLICIT NONE
INTEGER::TOTAL,A,B,X
REAL::M,S,N
READ*,TOTAL
X=1
S=0
DO
PRINT*,"INGRESE EL NUMERO"
READ*,N
S=S+N
IF(X==1) THEN
A=N
B=N
ELSE
IF(N>A) THEN
A=N
ELSE
IF(N<B) THEN
B=N
END IF
END IF
END IF
X=X+1
IF(X>TOTAL) EXIT
END DO
M=S/TOTAL
PROGRAM PROBLEMA_8
IMPLICIT NONE
REAL*8::D,TE,SE,ERR,P
INTEGER::S,F,K
READ*,D
READ*,P
TE=D
SE=D
ERR=ABS(D)
S=-1
F=1
K=1
DO WHILE(ERR>P)
TE=TE*D*D/(K*(K+1))
SE=SE+S*TE
S=-S
F=F*(K+1)*(K+2)
K=K+2
ERR=ABS(TE)/SE
END DO
INGRESE EL VALOR DE X
9.- El siguiente segmento del programa Ud. debe modificarlo usando la sentencia do if(condición) exit
end do
r = 0.0
DO WHILE (r <= 5.0)
Pr = 4.0*r*r*EXP(−2.0*r)
r = r + 0.1
print*, r, Pr
END DO
EJECUCIÓN DEL PROGRAMA SIN MODIFICARSE:
1.000000E-01 0.000000E+00
2.000000E-01 3.274923E-02
3.000000E-01 1.072512E-01
4.000000E-01 1.975722E-01
5.000000E-01 2.875705E-01
6.000000E-01 3.678795E-01
7.000000E-01 4.337197E-01
8.000001E-01 4.833301E-01
9.000001E-01 5.168551E-01
1.000000 5.355684E-01
1.100000 5.413411E-01
1.200000 5.362872E-01
1.300000 5.225354E-01
1.400000 5.020893E-01
1.500000 4.767508E-01
1.600000 4.480835E-01
1.700000 4.174049E-01
1.800000 3.857949E-01
1.900000 3.541153E-01
2.000000 3.230338E-01
2.100000 2.930501E-01
2.200000 2.645219E-01
2.300000 2.376893E-01
2.400000 2.126969E-01
2.500000 1.896134E-01
2.600000 1.684487E-01
2.700000 1.491680E-01
2.799999 1.317036E-01
2.899999 1.159651E-01
2.999999 1.018470E-01
3.099999 8.923516E-02
3.199999 7.801140E-02
3.299999 6.805747E-02
3.399999 5.925772E-02
3.499999 5.150104E-02
3.599999 4.468229E-02
3.699999 3.870308E-02
3.799999 3.347227E-02
3.899998 2.890614E-02
3.999998 2.492834E-02
4.099998 2.146966E-02
4.199998 1.846775E-02
4.299998 1.586668E-02
4.399998 1.361650E-02
4.499998 1.167280E-02
4.599998 9.996224E-03
4.699998 8.552002E-03
4.799998 7.309522E-03
4.899998 6.241902E-03
4.999998 5.325591E-03
5.099998 4.540010E-03
Press any key to continue
Programa Modificado:
PROGRAM X
REAL::r
r = 0.0
DO
Pr = 4.0*r*r*EXP(-2.0*r)
r = r + 0.1
print*, r, Pr
IF(r>5) EXIT
END DO
END PROGRAM X
1.000000E-01 0.000000E+00
2.000000E-01 3.274923E-02
3.000000E-01 1.072512E-01
4.000000E-01 1.975722E-01
5.000000E-01 2.875705E-01
6.000000E-01 3.678795E-01
7.000000E-01 4.337197E-01
8.000001E-01 4.833301E-01
9.000001E-01 5.168551E-01
1.000000 5.355684E-01
1.100000 5.413411E-01
1.200000 5.362872E-01
1.300000 5.225354E-01
1.400000 5.020893E-01
1.500000 4.767508E-01
1.600000 4.480835E-01
1.700000 4.174049E-01
1.800000 3.857949E-01
1.900000 3.541153E-01
2.000000 3.230338E-01
2.100000 2.930501E-01
2.200000 2.645219E-01
2.300000 2.376893E-01
2.400000 2.126969E-01
2.500000 1.896134E-01
2.600000 1.684487E-01
2.700000 1.491680E-01
2.799999 1.317036E-01
2.899999 1.159651E-01
2.999999 1.018470E-01
3.099999 8.923516E-02
3.199999 7.801140E-02
3.299999 6.805747E-02
3.399999 5.925772E-02
3.499999 5.150104E-02
3.599999 4.468229E-02
3.699999 3.870308E-02
3.799999 3.347227E-02
3.899998 2.890614E-02
3.999998 2.492834E-02
4.099998 2.146966E-02
4.199998 1.846775E-02
4.299998 1.586668E-02
4.399998 1.361650E-02
4.499998 1.167280E-02
4.599998 9.996224E-03
4.699998 8.552002E-03
4.799998 7.309522E-03
4.899998 6.241902E-03
4.999998 5.325591E-03
5.099998 4.540010E-03
Press any key to continue
10.- El siguiente segmento del programa Ud. debe modificarlo usando la sentencia do if(condición)
exit end do
J=1
DO WHILE (J <= 100)
Print*, J
J=J+1
END DO
EJECUCIÓN DEL PROGRAMA SIN MODIFICARSE:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
Press any key to continue
Programa modificado:
PROGRAM Y
INTEGER::J
J=1
DO
Print*, J
J=J+1
IF(J> 100) EXIT
END DO
END PROGRAM Y
EJECUCIÓN DEL PROGRAMA MODIFICADO:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
Press any key to continue
11.- El siguiente segmento del programa Ud. debe modificarlo usando la sentencia do if(condición)
exit end do
x = 1.0
Suma = 0.0
DO WHILE (x >= 0.01)
Suma = Suma + x
x = x/10
END DO
1.000000E-01 1.000000
1.000000E-02 1.100000
9.999999E-04 1.110000
Press any key to continue
Programa modificado:
PROGRAM Z
REAL::X,Suma
x = 1.0
Suma = 0.0
DO
Suma = Suma + x
x = x/10
PRINT*,x ,Suma
IF(x<0.01) EXIT
END DO
END PROGRAM Z
PROGRAM MODIFICADO
INTEGER::J,K,L,I
PRINT*,"INGRESE EL VALOR DE J"
READ*,J
PRINT*,"INGRESE EL VALOR DE K"
READ*,K
PRINT*,"INGRESE EL VALOR DE L"
READ*,L
IF(J<K*L) THEN
DO WHILE(I<10)
I=I+1
PRINT*,I,K,J
END DO
END IF
END PROGRAM MODIFICADO
a. DO WHILE(I<=5)
Print*, I
END DO
-En este caso es infinito el bucle ya que el “I” no tiene un rango establecido y no
cambia la variable I.
c.DO WHILE(x>=y)
IF(x>0) THEN
z=SQRT(x)
END DO
-En este caso no tiene “END IF” para cerrar el bucle de condicion.
d.READ*, X
READ*, x
Print*,x,y
END DO
14.- ¿Cuántas veces se repetirán las instrucciones del cuerpo del bucle DO iterativo?
a) Como se puede ver en la imagen se repite 4 veces el bucle iterativo ,toma los
valores de 7,8,9,10, ya que su rango de i va desde 7 hasta 10.
10
-2
4
6
10
-2
-3
-4
-5
-6
-7
-8
-9
-10
f)En este caso el bucle iterativo no se cumple, ya que i tiene un rango de -10 hasta
-7 y va disminuyendo en -3 en cada bucle,entonces i=-10-3=-13 , luego tomaría
i=-16,i=-19,etc ,lo cual esta mal ya que el rango de i es de -10 a -7 no toma valores
menores a -10 por eso no cumple.
15.- Indique el valor de la variable iter después de la ejecución del bucle DO.
PROGRAM PROBLEMA_15
INTEGER::ITER,INDICE
ITER=0
DO INDICE=1,10,1
ITER=ITER+1
END DO
PRINT*,INDICE,ITER
16.- Indique el valor de la variable iter después de la ejecución del bucle DO.
PROGRAM PROBLEMA_15
INTEGER::ITER,INDICE
ITER=0
DO INDICE=1,10,1
ITER=ITER+INDICE
END DO
PRINT*,INDICE,ITER
PROGRAM Ejdo1
IMPLICIT NONE
INTEGER :: i, n, iteraciones
n=2
iteraciones = 0
print*, "Ejecución del bucle DO − 1"
DO i = 1, 3*n – 3,1
iteraciones = iteraciones +1
Print*," Numero de iteración: ", iteraciones, " i = " , i
END DO
Print*,"He terminado la ejecución del bucle DO − 1"
Print*," Número total de iteraciones: " , iteraciones
Print*," i = " , i
STOP
END PROGRAM Ejdo1
PROGRAM Ejdo1
IMPLICIT NONE
INTEGER :: i,n,iteraciones
n=2
i=1
iteraciones = 0
print*, "Ejecución del bucle DO - 1"
DO
iteraciones = iteraciones +1
i=i+1
Print*," Numero de iteración: ", iteraciones, " i = " , i-1
If(i>3*n-3) Exit
END DO
Print*,"He terminado la ejecución del bucle DO - 1"
Print*," Número total de iteraciones: " , iteraciones
Print*," i = " , i
STOP
END PROGRAM Ejdo1
i= 4
18.- Ingresar una serie de números enteros y mostrar la sumatoria de los pares y la sumatoria de los
impares. usando ciclo do if exit end do
PROGRAM PARES_IMPARES
INTEGER::X,SP,SI,Y
X=1
SP=0
SI=0
READ*,Y
DO
PRINT*,"INGRESE EL NUMERO"
READ*,N
IF(MOD(N,2)==0) THEN
SP=SP+N
ELSE
SI=SI+N
END IF
X=X+1
IF(X>Y) EXIT
END DO
INGRESE EL NUMERO
INGRESE EL NUMERO
4
INGRESE EL NUMERO
INGRESE EL NUMERO
INGRESE EL NUMERO
19.- Ingresar una serie de caracteres y contar la cantidad de letras ‘A’ que aparecen. Termina la
serie cuando se ingresa un ‘*’. usando ciclo do if exit end do
20.- Mostrar la tabla de conversión de grados Celsius a grados Fahrenheit para temperaturas que
comienzan en -5º C y terminan en 5º C. (1º F: 9/5 x C + 32). usando ciclo do if exit end do
PROGRAM CELSIU
IMPLICIT NONE
REAL::C,X,F,Y
C=-5
X=1
Y=1
F=((9*C)/5)+32
C=C+X
Y=Y+1
PRINT*,Y-1,C-1,F
IF(C>5) EXIT
END DO
CELSIUS FAHRENHEIT
1.000000 -5.000000 23.000000
2.000000 -4.000000 24.800000
3.000000 -3.000000 26.600000
4.000000 -2.000000 28.400000
5.000000 -1.000000 30.200000
6.000000 0.000000E+00 32.000000
7.000000 1.000000 33.800000
8.000000 2.000000 35.600000
9.000000 3.000000 37.400000
10.000000 4.000000 39.200000
11.000000 5.000000 41.000000
Press any key to continue
21.- Dada la función , donde x varía desde 1 hasta 4; y varía desde 2 hasta 6 cada
uno con incrementos de 0.5 elabore un programa para visualizar los valores de x, y, f(x,y) usando ciclo
anidados, donde el ciclo para la variable x es externo y el ciclo para la variable y es interno. Realice el
programa con
a.- Usando ciclo do conocido
b.- Usando ciclo do while
c.- Usando ciclo do if condition exit end do
PROGRAM FUNCION_RESPECTO_X_Y
IMPLICIT NONE
REAL::F,X,Y
PRINT*," X Y F(X,Y)"
DO X=1,4,0.5
DO Y=2,6,0.5
F=(X**2+Y**2)/(2*X*Y)
PRINT*,X,Y,F
END DO
END DO
END PROGRAM FUNCION_RESPECTO_X_Y