.
“Año de la unidad, la paz y el desarrollo”
UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS
UNIVERSIDAD DEL PERÚ, DECANA DE AMÉRICA
FACULTAD DE CIENCIAS FÍSICAS
ESCUELA PROFESIONAL DE INGENIERÍA MECÁNICA DE
FLUIDOS
CURSO: Lenguaje de Programación
PROFESOR: William Wilfredo Chauca Nolasco
TAREA : 5
INTEGRANTE:
1. Muñoz Amaya, Jean Pierr
Lima-Perú
TAREA 05
1.- Calcula la suma de los n primeros enteros positivos, usando ciclo do if exit end do
PROGRAM SUMA_DE_NATURALES
IMPLICIT NONE
INTEGER::N,X,S
PRINT*,"INGRESE HASTA QUE NUMERO DESEA SUMAR"
READ*,N
X=1
S=0
DO
S=S+X
X=X+1
PRINT*,"LA SUMA DE LOS",X-1," PRIMEROS ENTEROS POSTIVOS ES:",S
IF(X>N) EXIT
END DO
END PROGRAM SUMA_DE_NATURALES
EJECUCIÓN DEL PROGRAMA:
INGRESE HASTA QUE NUMERO DESEA SUMAR
LA SUMA DE LOS 1 PRIMEROS ENTEROS POSTIVOS ES: 1
LA SUMA DE LOS 2 PRIMEROS ENTEROS POSTIVOS ES: 3
LA SUMA DE LOS 3 PRIMEROS ENTEROS POSTIVOS ES: 6
LA SUMA DE LOS 4 PRIMEROS ENTEROS POSTIVOS ES: 10
LA SUMA DE LOS 5 PRIMEROS ENTEROS POSTIVOS ES: 15
Press any key to continue
2.- Considérese ahora el problema de determinar el primer valor n para el cual la suma
excede a 10 000. usando ciclo do if exit end do
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
END PROGRAM PROBLEMA_2
EJECUCIÓN DEL PROGRAMA:
1 1
2 3
3 6
4 10
5 15
6 21
7 28
8 36
9 45
10 55
11 66
12 78
13 91
14 105
15 120
16 136
17 153
18 171
19 190
20 210
21 231
22 253
23 276
24 300
25 325
26 351
27 378
28 406
29 435
30 465
31 496
32 528
33 561
34 595
35 630
36 666
37 703
38 741
39 780
40 820
41 861
42 903
43 946
44 990
45 1035
46 1081
47 1128
48 1176
49 1225
50 1275
51 1326
52 1378
53 1431
54 1485
55 1540
56 1596
57 1653
58 1711
59 1770
60 1830
61 1891
62 1953
63 2016
64 2080
65 2145
66 2211
67 2278
68 2346
69 2415
70 2485
71 2556
72 2628
73 2701
74 2775
75 2850
76 2926
77 3003
78 3081
79 3160
80 3240
81 3321
82 3403
83 3486
84 3570
85 3655
86 3741
87 3828
88 3916
89 4005
90 4095
91 4186
92 4278
93 4371
94 4465
95 4560
96 4656
97 4753
98 4851
99 4950
100 5050
101 5151
102 5253
103 5356
104 5460
105 5565
106 5671
107 5778
108 5886
109 5995
110 6105
111 6216
112 6328
113 6441
114 6555
115 6670
116 6786
117 6903
118 7021
119 7140
120 7260
121 7381
122 7503
123 7626
124 7750
125 7875
126 8001
127 8128
128 8256
129 8385
130 8515
131 8646
132 8778
133 8911
134 9045
135 9180
136 9316
137 9453
138 9591
139 9730
140 9870
141 10011
N ES: 10011
Press any key to continue
3.- Imprimir una tabla de los cuadrados y cubos de los primeros N números enteros positivos.
Ordenar la tabla primero en orden ascendente y luego en orden descendente. usando ciclo do if exit
end do
Tabla en orden ascendente:
PROGRAM CUADRADOS_CUBOS
IMPLICIT NONE
INTEGER::N,C,D,X
PRINT*,"INGRESE EL VALOR DE N"
READ*,N
X=1
PRINT*," NUMERO CUADRADO CUBO"
DO
C=X*X
D=X*X*X
X=X+1
PRINT*,X-1,C,D
IF(X>N) EXIT
END DO
END PROGRAM CUADRADOS_CUBOS
EJECUCIÓN DEL PROGRAMA:
INGRESE EL VALOR DE N
NUMERO CUADRADO CUBO
1 1 1
2 4 8
3 9 27
4 16 64
5 25 125
Press any key to continue
Tabla en orden descendente:
PROGRAM CUADRADOS_CUBOS
IMPLICIT NONE
INTEGER::N,C,D,X
PRINT*,"INGRESE EL VALOR DE N"
READ*,N
PRINT*," NUMERO CUADRADO CUBO"
DO X=N,1,-1
C=X*X
D=X*X*X
PRINT*,X,C,D
IF(X>N) EXIT
END DO
END PROGRAM CUADRADOS_CUBOS
EJECUCIÓN DEL PROGRAMA:
INGRESE EL VALOR DE N
NUMERO CUADRADO CUBO
5 25 125
4 16 64
3 9 27
2 4 8
1 1 1
Press any key to continue
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
PRINT*,"INGRESE HASTA QUE NUMERO DESEA SUMAR"
READ*,N
X=1
S=0
M=1
PRINT*," NUMERO SUMA MULTIPLICACION"
DO
M=M*X
S=S+X
X=X+1
PRINT*,X-1,S,M
IF(X>N) EXIT
END DO
END PROGRAM SUMA_MULTIPLICACION
EJECUCIÓN DEL PROGRAMA:
INGRESE HASTA QUE NUMERO DESEA SUMAR
5
NUMERO SUMA MULTIPLICACION
1 1 1
2 3 2
3 6 6
4 10 24
5 15 120
Press any key to continue
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
EJECUCIÓN DEL PROGRAMA:
TABLA DE LA FUNCION F(X) = (1/SQRT(2*PI)) * EXP(-X*2)
X | F(X)
0.000000E+00 | 3.989799E-01
1.000000E-01 | 3.950100E-01
2.000000E-01 | 3.833357E-01
3.000000E-01 | 3.646402E-01
4.000000E-01 | 3.399883E-01
5.000000E-01 | 3.107259E-01
6.000000E-01 | 2.783588E-01
7.000000E-01 | 2.444256E-01
8.000000E-01 | 2.103791E-01
9.000000E-01 | 1.774894E-01
Press any key to continue
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
PRINT*,"INGRESE EL CONJUNTO DE NUMERO"
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
PRINT*, "CANTIDAD DE VECES QUE ES CERO: ", CERO
PRINT*, "CANTIDAD DE NUMEROS QUE SON MENORES A CERO: ", MENORES_A_CERO
PRINT*, "CANTIDAD DE NUMEROS QUE SON MAYORES A CERO: ", MAYORES_A_CERO
END PROGRAM CANTIDADES
EJECUCIÓN DEL PROGRAMA:
INGRESE EL CONJUNTO DE NUMERO
INGRESE EL NUMERO
INGRESE EL NUMERO
-1
INGRESE EL NUMERO
4
INGRESE EL NUMERO
INGRESE EL NUMERO
-2
INGRESE EL NUMERO
INGRESE EL NUMERO
CANTIDAD DE VECES QUE ES CERO: 2
CANTIDAD DE NUMEROS QUE SON MENORES A CERO: 2
CANTIDAD DE NUMEROS QUE SON MAYORES A CERO: 3
Press any key to continue
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
PRINT*,"INGRESE EL CONJUNTO DE NUMEROS"
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
PRINT*,"EL NUMERO MAYOR ES:",A
PRINT*,"EL NUMERO MENOR ES:",B
PRINT*,"LA MEDIA ARITMETICA DEL CONJUNTO DE NUMERO ES;",M
END PROGRAM MAYOR_MENOR
EJECUCIÓN DEL PROGRAMA:
INGRESE EL CONJUNTO DE NUMEROS
5
INGRESE EL NUMERO
2
INGRESE EL NUMERO
4
INGRESE EL NUMERO
3
INGRESE EL NUMERO
6
INGRESE EL NUMERO
5
EL NUMERO MAYOR ES: 6
EL NUMERO MENOR ES: 2
LA MEDIA ARITMETICA DEL CONJUNTO DE NUMERO ES; 4.000000
Press any key to continue
8.- Calcular el seno de un número x a partir de su serie de Taylor:
Considerar tantos términos como sean necesarios para que el error cometido en la aproximación
finita sea menor que cierta tolerancia prescrita (digamos <= 10-8). Observación: Notar que, dado un
término de la serie, el siguiente se obtiene multiplicando por -x2 y dividiendo por el producto de los
dos enteros siguientes. Testear el programa tanto con valores pequeños como con valores muy
grandes. Comentar los resultados obtenidos. usando ciclo do if exit end do
PROGRAM PROBLEMA_8
IMPLICIT NONE
REAL*8::D,TE,SE,ERR,P
INTEGER::S,F,K
PRINT*,"INGRESE EL VALOR DE X"
READ*,D
PRINT*,"INGRESE EL VALOR DE LA TOLERANCIA"
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
PRINT*,"EL SENO DE ",D,"ES:",SE
END PROGRAM PROBLEMA_8
EJECUCIÓN DEL PROGRAMA:
INGRESE EL VALOR DE X
INGRESE EL VALOR DE LA TOLERANCIA
EL SENO DE 4.000000000000000ES: -28.000000000000000
Press any key to continue
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
EJECUCIÓN DEL PROGRAMA MODIFICADO:
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
EJECUCIÓN DEL PROGRAMA SIN MODIFICARSE:
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
EJECUCIÓN DEL PROGRAMA MODIFICADO:
1.000000E-01 1.000000
1.000000E-02 1.100000
9.999999E-04 1.110000
Press any key to continue
12.- Diga Ud. si este segmento de programa es correcto o incorrecto porque_
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
EJECUCIÓN DEL PROGRAMA :
INGRESE EL VALOR DE J
5
INGRESE EL VALOR DE K
4
INGRESE EL VALOR DE L
2
1 4 5
2 4 5
3 4 5
4 4 5
5 4 5
6 4 5
7 4 5
8 4 5
9 4 5
10 4 5
Press any key to continue
-El programa es correcto por que si le pones una valor a las variables J,K,L y cumple la condición
establecida, en este caso la condición sería que J<K*L,si se cumple esa condición entonces el bucle
do while se ejecuta con normalidad al igual que el programa y se podrán ver los valores que toma
[Link] de esto se puede ver en la imagen anterior que I toma valores de 1 a 10 cuando se cumple
la condición ,si no se cumple con la condición entonces se cerrará el programa.
13.- Identifique los errores de sintaxis y ejecución de los siguientes bucles DO WHILE.
a. DO WHILE(I<=5)
-En este caso le falta “END DO”para cerrar el bucle.
[Link] 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.
[Link] 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.
[Link]*, X
DO WHILE (x*x > 0.0)
READ*, x
Print*,x,y
END DO
-La variable “y” no está definida.
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.
EJECUCIÓN DEL PROGRAMA:
10
Press any key to continue
b) En este caso el bucle iterativo no se cumple, ya que i tiene un rango de 1 hasta 10
y va disminuyendo en -1 en cada bucle,entonces i=1-1=0 , luego tomaría
i=-1,i=-2,etc ,lo cual esta mal ya que el rango es de i es de 1 a 10 no toma valores
menores a 1 por eso no cumple.
EJECUCIÓN DEL PROGRAMA:
Press any key to continue
c) En este caso el bucle iterativo solo se repite una vez ,cuando toma el valor de i=1
,ya que i tiene un rango de 1 hasta 10 ,pero va aumenta en +10 en cada bucle ,
entonces i=1+10=11, lo cual estaría mal ya que el rango de i es de 1 a 10 y no toma
valores mayores a 10
EJECUCIÓN DEL PROGRAMA:
Press any key to continue
d) En este caso el bucle iterativo se repite 7 veces, i toma valores de -2,0,2,4,6,8,10
ya que i tiene un rango de -2 a 10 y en cada bucle va disminuyendo en -2.
EJECUCIÓN DEL PROGRAMA:
-2
4
6
10
Press any key to continue
e)En este caso el bucle iterativo se repite 9 veces,i toma valores de
-2,-3-4,-5,-6,-7,-8,-9,-10 ya que i tiene un rango de -2 a 10 y en cada bucle va
disminuyendo en -1.
EJECUCIÓN DEL PROGRAMA:
-2
-3
-4
-5
-6
-7
-8
-9
-10
Press any key to continue
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.
EJECUCIÓN DEL PROGRAMA:
Press any key to continue
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
END PROGRAM PROBLEMA_15
EJECUCIÓN DEL PROGRAMA:
11 10
Press any key to continue
-El valor de la variable iter al final de la ejecución es de 10.
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
END PROGRAM PROBLEMA_15
EJECUCIÓN DEL PROGRAMA:
11 55
Press any key to continue
-El valor de la variable iter al final de la ejecución es de 55.
17.-Modificar el programa usando ciclo do if exit end do
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
EJECUCIÓN DEL PROGRAMA SIN MODIFICARSE:
Ejecuci¾n del bucle DO - 1
Numero de iteraci¾n: 1i= 1
Numero de iteraci¾n: 2i= 2
Numero de iteraci¾n: 3i= 3
He terminado la ejecuci¾n del bucle DO - 1
N·mero total de iteraciones: 3
i= 4
Stop - Program terminated.
Press any key to continue
Programa modificada:
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
EJECUCIÓN DEL PROGRAMA MODIFICADO:
Ejecuci¾n del bucle DO - 1
Numero de iteraci¾n: 1i= 1
Numero de iteraci¾n: 2i= 2
Numero de iteraci¾n: 3i= 3
He terminado la ejecuci¾n del bucle DO - 1
N·mero total de iteraciones: 3
i= 4
Stop - Program terminated.
Press any key to continue
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
PRINT*,"INGRESE LA CANTIDAD DE NUMEROS"
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
PRINT*,"LA SUMA DE LOS NUMEROS PARES ES:",SP
PRINT*,"LA SUMA DE LOS NUMEROS IMPARES ES:",SI
END PROGRAM PARES_IMPARES
EJECUCIÓN DEL PROGRAMA:
INGRESE LA CANTIDAD DE NUMEROS
INGRESE EL NUMERO
INGRESE EL NUMERO
4
INGRESE EL NUMERO
INGRESE EL NUMERO
INGRESE EL NUMERO
LA SUMA DE LOS NUMEROS PARES ES: 12
LA SUMA DE LOS NUMEROS IMPARES ES: 8
Press any key to continue
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
PRINT*," CELSIUS FAHRENHEIT"
DO
F=((9*C)/5)+32
C=C+X
Y=Y+1
PRINT*,Y-1,C-1,F
IF(C>5) EXIT
END DO
END PROGRAM CELSIU
EJECUCIÓN DEL PROGRAMA:
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
EJECUCIÓN DEL PROGRAMA:
X Y F(X,Y)
1.000000 2.000000 1.250000
1.000000 2.500000 1.450000
1.000000 3.000000 1.666667
1.000000 3.500000 1.892857
1.000000 4.000000 2.125000
1.000000 4.500000 2.361111
1.000000 5.000000 2.600000
1.000000 5.500000 2.840909
1.000000 6.000000 3.083333
1.500000 2.000000 1.041667
1.500000 2.500000 1.133333
1.500000 3.000000 1.250000
1.500000 3.500000 1.380952
1.500000 4.000000 1.520833
1.500000 4.500000 1.666667
1.500000 5.000000 1.816667
1.500000 5.500000 1.969697
1.500000 6.000000 2.125000
2.000000 2.000000 1.000000
2.000000 2.500000 1.025000
2.000000 3.000000 1.083333
2.000000 3.500000 1.160714
2.000000 4.000000 1.250000
2.000000 4.500000 1.347222
2.000000 5.000000 1.450000
2.000000 5.500000 1.556818
2.000000 6.000000 1.666667
2.500000 2.000000 1.025000
2.500000 2.500000 1.000000
2.500000 3.000000 1.016667
2.500000 3.500000 1.057143
2.500000 4.000000 1.112500
2.500000 4.500000 1.177778
2.500000 5.000000 1.250000
2.500000 5.500000 1.327273
2.500000 6.000000 1.408333
3.000000 2.000000 1.083333
3.000000 2.500000 1.016667
3.000000 3.000000 1.000000
3.000000 3.500000 1.011905
3.000000 4.000000 1.041667
3.000000 4.500000 1.083333
3.000000 5.000000 1.133333
3.000000 5.500000 1.189394
3.000000 6.000000 1.250000
3.500000 2.000000 1.160714
3.500000 2.500000 1.057143
3.500000 3.000000 1.011905
3.500000 3.500000 1.000000
3.500000 4.000000 1.008929
3.500000 4.500000 1.031746
3.500000 5.000000 1.064286
3.500000 5.500000 1.103896
3.500000 6.000000 1.148810
4.000000 2.000000 1.250000
4.000000 2.500000 1.112500
4.000000 3.000000 1.041667
4.000000 3.500000 1.008929
4.000000 4.000000 1.000000
4.000000 4.500000 1.006944
4.000000 5.000000 1.025000
4.000000 5.500000 1.051136
4.000000 6.000000 1.083333
Press any key to continue
22.- Dada la función
donde x varía desde -4 hasta 4; y varía desde .4 hasta
4 cada uno con incrementos de 0.5 elabore un
programa para visualizarlos 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