Está en la página 1de 52

.

“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
I.Ejemplo 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.

b.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

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

También podría gustarte