INTRODUCCION A LA PROGRAMACION CON LENGUAJE JAVA Realizado: Lic. Adrian E, Quisbert Vilela 1 La presente edición es propiedad del Autor, cualquier reproducción y/o difusión total o parcial de esta, por cualquier medio, esta prohibido y penado por la ley de acuerdo a disposiciones legales en vigencia. Título: “INTRODUCCION A LA PROGRAMACION CON LENGUAJE JAVA” Primera Edición Autor: Lic. Adrian E. Quisbert Vilela La Paz-Bolivia 2 Lic. Adrian E. Quisbert Vilela Dedicatoria Dedico esta obra con todo mi cariño y amor, a mi esposa Martha Quisbert Ch. y a mis hijos Daniel y Gabriela, por todo el apoyo incondicional que me dieron en los momentos difíciles y cuando más los necesite, y por ser las personas que dieron nuevamente sentido a mi vida. Adrián E. Quisbert Vilela 3 4 5 ………………………………………………………..60 6 7 Tema 1 Conceptos Fundamentales de programación 8 - - - 9 - 10 11 12 13 14 15 16 Memoria Auxiliar Procesador Elementos de Entrada Unidad de Control + Unidad Aritmético Lógica Elementos de Salida Memoria Central 17 18 19 - 20 21 22 23 24 25 26 27 Tema 2 Algoritmos - - - 28 29 30 Diseño del Algoritmo 31 32 o o o o o 33 34 35 36 37 38 39 40 41 42 43 Expresión 1 Operador de relación expresión 2 44 7. 45 46 Tema 3 Acción 1 Acción 1 Acción N 47 48 Inicio capital Ganancia= capital * 0.02 ganancia fin 49 f 50 51 c1, c2, c3, ef, tf Inicio c1, c2, c3, ef, tf 52 5) Un maestro desea saber que porcentaje de hombres y que porcentaje de mujeres hay en un grupo de estudiantes. 53 54 55 P = 5 + 5 +5 + 5 = 20 56 P = 5 + 5 + 8 + 8 = 26 57 58 59 60 RESIDUO 61 62 Tema 4 63 64 V F ón Sentencias V F ón Sentencias Sentencias 65 OPCION 1 2 3 S1 S1 S1 S2 S2 S2 …. N S1 S2 66 67 inicio N F V N mod 2 =0 “Par” “Impar” Fin 68 inicio A,B F V A>B A,“ Es Mayor B,“Es Mayor” Fin 69 inicio N V F N<0 V F N=0 “Positivo” “Negativo ” “Neutro” Fin 70 𝑥= −𝐴±√𝐵2 −4𝐴𝐶 2𝐴 𝐵2 − 4𝐴𝐶 𝑋= Y= −𝐴+√𝐵2 −4𝐴𝐶 2𝐴 −𝐴−√𝐵2 −4𝐴𝐶 2𝐴 71 A,B,C D = (B*B)-(4*A*C) F V D>=0 X.Y Fin 72 inicio A,B,C V F A>B and A>C F A es mayor V B>A and B>C F V C>A and C>B B es mayor C es mayor Fin 73 74 inicio N F N mod 3 =0 and N mod 5 <> 0 V Fin 75 N N N 76 77 78 inicio N V F N>=100 AND N <100 D1 = N mod 10 N =N div 10 D2 = N mod 10 N =N div 10 D3 = N mod 10 N =N div 10 NO ES DE 3 DIGITOS DM = 0 F V DM < D1 DM = D1 F V DM < D2 DM = D2 V F DM < D3 DM = D3 DM FIN 79 80 F V prom>70 ” fin 81 F V fin 82 83 F V fin 84 Inicio SI NO totcomp > 500 000 crédito = totcomp * 0.15 cantinv, préstamo, crédito, int fin 85 IJNICIO Swich(N) N N 1 2 3 4 5 6 7 “LUNE S” “MARTES ” MIERCOLE S JUEVES VIERNE S SABADO DOMING O OP OP=’S’ FIN N 6 12 salida SABADO NO EXISTE DIA OP S N 86 Ejercicios propuestos . – 1. 2. 3. 4. 5. Pedir un número entre 0 y 99999 y decir cuantas cifras tiene. Una farmacia desea un programa para ingresar el valor de compra y calcular lo siguiente: si el pago se efectúa al “contado”, calcular un descuento del 5%; pero si el pago es con “tarjeta” se incrementa un recargo del 3% al valor de compra. Calcular y visualizar el descuento o recargo según sea el caso y el total a pagar de la compra. Diseñe un programa que lea la temperatura en centígrados del día e imprima el tipo de clima de acuerdo a la siguiente tabla. (Use condicional múltiple). Determinar si un número es múltiplo de 10. Hacer un programa que simule un cajero automático con un saldo inicial de 1000 dólares, con el siguiente menú de opciones: SWITCH 1. Ingresar dinero a la cuenta 2. Retirar dinero de la cuenta 3. Salir 87 88 Tema 5 Estructuras de control de repetición o o o 89 90 91 S=S+A 92 93 94 95 96 97 98 99 100 101 102 103 P = (I * I ) - 1 104 N 10 M 5 5 i 1 2 3 j 1 2 3 4 5 6 1 2 3 4 5 6 1 P 1 2 3 4 5 2 4 6 8 10 CODIFICACION 105 106 107 FIN 108 109 110 N 5 i 5 4 3 2 1 0 S 0 5 9 12 14 15 Codificación 111 112 N 5 S 0 1 1,5 1.666 1.7076 1.715933 I 1 2 3 4 5 6 J 1 2 1 2 3 1 2 3 4 1 2 3 4 5 1 2 3 4 5 6 F 1 1 1 1 2 1 1 2 6 1 1 2 6 24 1 1 2 6 24 120 import java.util.Scanner; public class Serie4 { public static void main(String arg[]) { int N, i, F, j; double S; Scanner lee = new Scanner(System.in); System.out.println("ingrese valor N"); N = lee.nextInt(); S = 0; for (i = 0; i <= N; i++) { F = 1; for (j = 1; j <= i; j++) { F = F * j; } S = S + (1.0 / F); } System.out.println("La sumatoria es :" + S); } } 113 CONDICION CONDICION S2 S1 S1 S2 114 INICIO N NI = 0 N <> 0 N 5314 531 53 5 0 R 4 1 3 5 NI 0 4 41 413 4135 R= N MOD 1O N= N/ 10 NI = NI * 10 + R NI FIN 115 INICIO N 5314 531 53 5 0 N NI = 0 AUX = N R 4 1 3 5 NI 0 4 41 413 4135 AUX 5314 N <> 0 R= N MOD 1O N= N/ 10 NI = NI * 10 + R V F NI = AUX N NO ES CAPICUA N ES CAPICUA FIN 116 inicio X,Y X <> Y V F X>Y Y=Y-X X=X-Y X FIN import java.util.Scanner; public class Mcd { public static void main(String arg[]) { 117 Scanner lee = new Scanner(System.in); int x, y; System.out.println("ingrese valor de X"); x = lee.nextInt(); System.out.println("ingrese valor de Y"); y = lee.nextInt(); while (x != y) { if (x > y) { x = x - y; } else { y = y - x; } } System.out.println("el MCD es " + x); } } 118 Diagrama de flujo PRUEBA DE ESCRITORIO inicio X 8 Y 2 4 6 8 A 8 B 2 X 2 4 6 Y 3 6 A 2 B 3 X,Y A=X B=Y X <> Y V F Codificacion X>Y Y= Y + B X=X+A import java.util.Scanner; public class MinimoComumMultiplo { X FIN public static void main(String arg[]) { long X, Y, A, B; Scanner lee = new Scanner(System.in); System.out.print(" Ingrese valor de X:"); X = lee.nextLong(); System.out.print(" Ingrese valor de Y:"); Y = lee.nextLong(); A=X; B=Y; while (X != Y) { if (X > Y) { Y = Y + B; } else { X = X + A; } } System.out.println("el Minimo Comun Miltiplo es:" + X); } } 119 120 121 Diagrama de flujo inicio N,b S=”” N <> 0 R = N mod b N=N/b V F R >= 10 L=char(65+(R-10)) S= L+S L=char(48+R) S=L+S S Fin public class ConvertirBase { public static void main(String arg[]) { int N, B, R; String S; char L; Scanner lee = new Scanner(System.in); System.out.println("Ingrese un Numero en base 10"); N = lee.nextInt(); System.out.println("Ingrese base "); B = lee.nextInt(); S = ""; while (N != 0) { R = N % B; N = N / B; if (R >= 10) { L = (char) (65 + (R - 10)); S = L + S; } else { L = (char) (48 + R); S = L + S; } } System.out.println("El numero Convertido es :"+S); } } 122 Diagrama de flujo Inicio N,B C=0 N >=B N =N /B C=C+1 C fin 123 C= 2 A 10 6 2 inicio A,B C= 0 B 4 C 0 1 2 import java.util.Scanner; public class Division2Numeros { public static void main(String arg[]) { int A, B, C; Scanner lee = new Scanner(System.in); System.out.println("Ingrese valor de A"); A = lee.nextInt(); System.out.println("Ingrese Valor de B "); B = lee.nextInt(); C = 0; while (A >= B) { A = A - B; C = C + 1; } System.out.println(" la division es " + C); } A >=B A=A–B C= C+1 C fin } 124 S1 S2 CONDIDICION Sx 125 Calcula el factorial de un numero N (N!) For While Do while Inicio Inicio N N N F=1 F=1 i=1 i=1 F=1 i=1,N,1 F= F* i i <= N Inicio F= F* i i=i+1 I F= F* i F i <= N i=i+1 F fin F fin fin import java.util.Scanner; public class FactorialFOR { public static void main(String arg[]) { long F; int N, i; Scanner lee = new Scanner(System.in); System.out.println("ingrese un Numero N:"); N = lee.nextInt(); F = 1; for(i=1;i<=N;i++) { F=F*i; } System.out.println("El factorial es:" + F); } } import java.util.Scanner; public class FactorialWHILE { public static void main(String arg[]) { long F; int N, i; Scanner lee = new Scanner(System.in); System.out.println("ingrese un Numero N:"); N = lee.nextInt(); F = 1; i=1; while(i <= N) { F=F*i; i++; } System.out.println("El factorial es:" + F); } } import java.util.Scanner; public class FactorialDOWHILE { public static void main(String arg[]) { long F; int N, i; Scanner lee = new Scanner(System.in); System.out.println("ingrese un Numero N:"); N = lee.nextInt(); F = 1; i=1; do { F=F*i; i++; }while(i <= N); System.out.println("El factorial es:" + F); } } 126 inicio N S=0 I = 1, N , 1 A A mod 2 =0 S= S + A i S op Op = “Si” 127 fin 128 Inicio Prueba de escritorio N 3 ‘1’ 1 2 3 4 1 2 1 2 3 1 2 3 4 J=1 , i , 1 ‘0’ j i fin 129 inicio Prueba de escritorio N N 4 D=4 C=1 i 1 2 3 4 5 D 4 8 16 c 1 2 v f I mod 2 = 0 D c D= D*2 C= C+1 i fin Ni=0 NI = NI * 10 + R NI = 0*10 + 4 =4 NI = 4*10 + 3 = 43 NI = 43*10 + 2 = 432 NI = 432*10 + 1 = 4321 130 inicio N NI=0 R = N mod 10 N= N / 10 NI = NI * 10 + R N <> 0 NI fin A=123 10 3 12 2 10 1 1 10 0 131 inicio inicio N N C=0 C=0 A A CD=0 f v A >=100 and A <=999 A <> 0 A = A / 10 CD= CD + 1 C = C +1 v f CD = 3 C C=C +1 fin C fin Ejercicios propuestos . – 1. 2. 3. Escribí un programa que, dado un número entero positivo, calcule y muestre su factorial. El factorial de un número se obtiene multiplicando todos los números enteros positivos que hay entre el 1 y ese número. El factorial de 0 es 1. Escribí un programa que permita al usuario ingresar N números enteros, que pueden ser positivos o negativos. Al finalizar, mostrar la sumatoria de los números negativos y el promedio de los positivos. No olvides que no es posible dividir por cero, por lo que es necesario evitar que el programa arroje un error si no se ingresaron números positivos. Escribí un programa que permita al usuario ingresar una cantidad de números positivos indefinida (la cantidad que ingresará no se conoce y puede cambiar en cada ejecución), finalizando cuando ingresa el número 0 (que no se tendrá en cuenta). Una vez terminada la lectura de números, informar cuál fue el mayor de los números ingresados. 132 4. Escribí un programa que, dado un número entero por el usuario (guardado como int), muestre la suma de todos sus dígitos. Recordá que vas a necesitar obtener cada uno de los dígitos por separado para poder sumarlos entre sí. 133 Tema 6 Programación Modular El problema es mejor dividir 134 Sub problema 1 Sub problema 2 …… Sub problema n Modulo 135 136 Sub programa 6.5. Ejemplos. N=X inicio Factorial( N ) N F= 1 Fac = Factorial( N ) Fac F= F * i i fin Return (F) 137 138 Potencia(X,Y) Principal() P=1 X,Y i=1, Y,1 Z = potencia(X,Y) P= P * X Z i return Return( P) inicio Principal() fin 139 Factorial( N ) F= 1 Potencia(X,Y) P=1 i=1, Y,1 P= P * X F= F * i i Return (F) i Return( P) 140 SumaSerie(N,X) Principal() S=0 N, X S= SumaSerie(N,X) F= factorial(i) P= potencia( X, i) S= S + P / F S return i inicio Return S Principal() fin 4 141 BuscaDigitoMenor(N) eliminaDigito(N,D) DM = N MOD 10 N= N / 10 NN =0 N <> 0 N <> 0 R = N MOD 10 N= N / 10 R2 = N MOD 10 N= N / 10 F V D <> R F V NN=NN*10+R DM > R2 DM = R2 RETURN NN RETURN DM Principal() OrdenaNunero(N) N NO = 0 NO = OrdenaNumero(N) N <> 0 NO DM = buscaDigitoMenor(N) N = elininaDigito(N,DM) RETURN NO = NO * 10 + DM INICIO Principal() RETURN NO fin 142 143 Verifica(N) C= 0 Sw = false v F N mod i = 0 C= C + 1 144 f v C >=3 I = n +1 i v f C =2 Sw=true Return sw Genera primos GeneraPrimo(N) CN = 2 CP=0 CP <=N v f Verifica(CN)=true CN CP = CP + 1 CN = CN + 1 Return 145 principal N GeneraPrimo(N) RETURN INICIO Principal() fin 146 NI = 0 NI = Ni * 10 + R NI = 0 * 10 + 4 = 4 NI = 4*10 + 3 =43 NI = 43 * 10 + 2 =432 NI = 432*10 + 1 = 4321 147 | Invetir(N) NI = 0 Principal() N N <> 0 NI = invertir(N) R = N Mod 10 N = N /10 NI = NI * 10 + R NI Return Return (NI) inicio Principal() fin 148 Invetir(N) Capicua(N) NI = 0 Sw = false N <> 0 NI = invertir(N) R = N Mod 10 N = N /10 NI = NI * 10 + R f v N = NI Sw= true Return (NI) Return(sw) 149 Principal() N Sw=capicúa(N) f v Sw=true e “capicua” “No capicua” Return inicio Principal() fin 150 151 Cambia base Principal() CambiaBase( N, b) N,b Nb = “” Nb = CambiaBase(N,b) =capicúa(N) N <> 0 R = N mod b N=N/B f Nb v Return R >9 Nb = Nb + char(48+R) Nb = Nb + char(65+(R-10)) inicio Principal() Return Nb Fin 152 153 CambiaBase10(N,b) Principal() L = longitud(N) N10 = 0 I=0 , L – 1 , 1 X = (int)N[i] P = potencia(b, L-(i+1)) Y=X*P N10 = N10 + Y N,b Nb = CambiaBase10(N,b) =capicúa(N) Nb Return inicio Return (N10) Principal() Fin 154 155 156 Tema 7 Estructura de datos (Vectores y Matrices) 157 o 158 Llenar(V[] , n) i = 0, n-1 , 1 Llenar(V[] , n) i = 0, n-1 , 1 V[ i ] V[ i ] i i return return 159 SumarElementos(V[] , n) S= 0 i = 0, n-1 , 1 S = S + V [i] i Principal() N V = array [ 0..N] Llena( V[], N) S=SumarElementos ( V[], N) Return (s) mostrar( V[], N) S return inicio Principal() fin 160 161 Leer un vector Principal Principal() SumarPares(V[] , n) S= 0 N i = 0, n-1 , 1 V = array [ 0..N] v f Llena( V[], N) V[i] mod 2 = 0 S = S + V [i] S=SumarPares ( V[], N) mostrar( V[], N) i S Return (s) return inicio Principal() fin 162 3) Dado un vector V sumar elementos de las posiciones pares 163 Leer un vector Principal Principal() SumarPosPares(V[] , n) S= 0 N i = 0, n-1 , 1 V = array [ 0..N] v f Llena( V[], N) i mod 2 = 0 S = S + V [i] i S=SumarPosPares ( V[], N) mostrar( V[], N) S Return (s) return inicio Principal() fin 164 165 Leer un vector Principal Principal() buscaMenor(V[] , n) Em= V[0] N i = 1, n-1 , 1 V = array [ 0..N] v f Llena( V[], N) Em > V[i] Em = V[i] Em=buscaMenor ( V[], N) i mostrar( V[], N) Return (Em) Em return inicio Principal() fin 166 167 168 Primer caso eliminar el primer elemento x que se encuentra. Leer un vector eliminaX(V[] , n,x) i = 0, n–1,1 v f X = V[i] j = i, n–1,1 V[ j ] = V[ j+1] n=n–1 i= n +10 i Return (n) 169 Principal Principal() N V = array [ 0..N] Llena( V[], N) X N=eliminaX ( V[], N,X) mostrar( V[], N) return inicio Principal() fin 170 171 i j j j j V= 2 0 5 1 6 2 1 3 2 4 V= 2 0 5 1 6 2 1 3 2 4 V= 1 0 5 1 6 2 2 3 2 4 I j j j V= 1 0 5 1 6 2 2 3 2 4 V= 1 0 2 1 6 2 5 3 2 4 V= 1 0 2 1 6 2 5 3 2 4 V= 1 0 2 1 5 2 6 3 2 4 V= 1 0 2 1 2 2 6 3 5 4 V= 1 0 2 1 2 2 5 3 6 4 I j j I j 172 Leer un vector ordena(V[] , n) i = 0, n–2,1 j = i+1 , n – 1 , 1 v f V[i] > V[j] Aux = V[i] V[i] = V[j] V[j] = Aux j i Return Principal Principal() N V = array [ 0..N] Llena( V[], N) ordena ( V[], N) mostrar( V[], N) return 173 inicio Principal() fin 174 Suma vector sumarVector(A[],B[],C[] , n) i = 0, n–1,1 C[i] = A[i] + B[i] i Return Principal Principal() N A = array [ 0..N] B=array [0..N] C=array [0..N] Llena( A[], N) Llena( B[], N) SumarVector( A[],B[],C[], N) mostrar( A[], N) mostrar( B[], N) mostrar( C[], N) return 175 inicio Principal() fin 176 return Principal rellenarNaturales (V[] , n) Principal() i = 0, n-1 , 1 N V [i] = (i+1) V = array [ 0..N] i rellenarNaturales( V[], N) Return (s) mostrar( V[], N) return inicio Principal() fin 177 178 Principal rellenarPares (V[] , n) Principal() i = 0, n-1 , 1 N V [i] = 2*(i+1) V = array [ 0..N] i rellenarPares( V[], N) Return (s) mostrar( V[], N) return rellenarPares (V[] , n) J=0 inicio i = 2, n*2 , 2 V [j] = i J=j+1 Principal() fin i Return (s) 179 180 V[5 ] = V[ 3] + V[4] Principal rellenarFibonaci (V[] , n) Principal() V[0] = 0 V[1] = 1 N i = 2, n-1 , 1 V = array [ 0..N] V [i] = V[i-2] + V[i-1] rellenarFibonaci( V[], N) i mostrar( V[], N) Return (s) return inicio Principal() fin 181 182 Principal contarPosNegCero (V[] , n) Principal() Cont1=0 Cont2=0 Cont3=0 N V = array [ 0..N] i = 0, n-1 , 1 F v f Llena( V[], N) V[i]=0 ContarPosNegCero( V[], N) v V[i]>0 Cont3=cont3+1 Cont1=cont1+1 Cont2=cont2+1 mostrar( V[], N) return i inicio Principal() Cont1,cont2,cont3 fin Return (s) 183 184 Principal promedio(V[] , n) Principal() S=0 P=0 N i = 0, n-1 , 1 V = array [ 0..N] S = S + V[i] promedio( V[], N) i P = S/n mostrar( V[], N) return P Return inicio Principal() fin 185 186 Principal rellenarPares1 (V[] , n) Principal() i = 0, n-1 , 1 N V [i] =(n*2) – (2*i) V = array [ 0..N] i rellenarPares1( V[], N) Return (s) mostrar( V[], N) return inicio Principal() fin 14) Llenar un vector V de N posiciones, con la siguiente serie: 3, 32, 33, 34, …., 3N N = 10 31, 32, 33, 34, 35 36, 37, 38, 39, 310 V= V= 31 32 33 34 35 36 37 38 39 310 0 1 2 3 4 5 6 7 8 9 3 0 9 1 27 2 81 3 4 5 6 7 8 9 187 Principal RellenarPot3 (V[] , n) Principal() i = 0, n-1 , 1 N P = 3(i+1) V[i] = P i Return V = array [ 0..N] rellenarPot3( V[], N) mostrar( V[], N) return inicio Principal() fin 188 189 Principal MostrarPuntosilla (V[] , n) Principal() i = 1, n-2 , 1 N f v V[i]<V[i+1] and V[i]>V[i-1] V = array [ 0..N] Llenar( V[], N) V[i] MostrarPuntoSilla ( V[], N) i mostrar( V[], N) return Return inicio Principal() fin 190 191 Principal BusquedaSecuencial (V[] , n, X) Principal() Pos= -1 N i = 0, n-1 , 1 V = array [ 0..N] f v V[i] = X Llenar( V[], N) Pos= i X Pos= busquedaSecuencial( V[], N,X) v i f Return (pos) Pos >=0 “Elemento X encontrado en la posicion” pos “No existe Elemento X mostrar( V[], N) return inicio Principal() fin 192 193 0 1 2 3 4 5 6 194 195 196 o 197 Leer un vector Mostrar un vector Llenar(M[][] , f, c) Mostrar(M[ ][ ] , f, c) i = 0, f-1 , 1 i = 0, f-1 , 1 j = 0, c-1 , 1 J = 0, c-1 , 1 M[ i ][ j ] M[ i ] [ j ] j j i j return return 198 Principal() inicio f,c Principal() M = array [ 0..f, 0..c] of integer fin Llenar(M,f,c) } Mostrar(M,f,c) return 2) Generar la siguiente matriz rectangular ANxM, con los siguientes elementos: Ejemplo. Si N=4x3 1 4 7 10 2 5 8 11 3 6 9 12 199 Leer un vector Principal() Generar1(M[][] , f, c) f,c Cont = 1 M = array [ 0..f, 0..c] of integer i = 0, f-1 , 1 Generar1 (M,f,c) j = 0, c-1 , 1 } Mostrar(M,f,c) M[i][j] = cont Cont = cont+1 return j inicio i Principal() return fin 200 Nprimo(n) Num = 2 Cp = 0 Np=0 Cp <n f v Verifica(Num)=true Np=num Cp = cp +1 201 Num = num + 1 Return (np) Leer un vector Principal() GenerarPrimo(M[][] , f, c) f,c Cont = 1 M = array [ 0..f, 0..c] of integer i = 0, f-1 , 1 GenerarPrimi (M,f,c) j = 0, c-1 , 1 } P= Nprimo(cont) M[i][j] = P Cont = cont+1 Mostrar(M,f,c) return inicio j Principal() i fin return 202 203 Leer un vector Principal() GenerarPares(M[][] , f, c) f,c Cont = 2 M = array [ 0..f, 0..c] of integer i = 0, f-1 , 1 GenerarPares (M,f,c) j = 0, c-1 , 1 } Mostrar(M,f,c) return M[i][j] = cont Cont = cont+2 inicio j Principal() i fin return 204 205 0 (3,0) 1 (3,1) 0 (3,2) Leer un vector Principal() GenerarTableroAjedres(M[][] , f, c) f,c i = 0, f-1 , 1 M = array [ 0..f, 0..c] of integer j = 0, c-1 , 1 GenerarTableroAjedres (M,f,c) f v (i+j)mod 2 = 0 } M[i][j] = 1 M[i][j] = 0 Mostrar(M,f,c) return j inicio i Principal() return fin 206 207 Leer un vector Principal() GenerarLatina(M[][] , f, c) 1 f,c i = 0, f-1 , 1 M = array [ 0..f, 0..c] of integer Con= i +1 GenerarLatina (M,f,c) j = 0, c-1 , 1 } M[i][j[ = cont f Mostrar(M,f,c) return v Cont = f inicio Cont = cont +1 cont = 1 Principal() j fin i return 208 209 Leer un vector Principal() GenerarFilas(M[][] , f, c) f,c i = 0, f-1 , 1 M = array [ 0..f, 0..c] of integer j = 0, c-1 , 1 GenerarFilas (M,f,c) } Mostrar(M,f,c) M[i][j] = i+1 return j inicio i Principal() return fin 210 211 Leer un vector Principal() SumarElementos(M[][] , f, c) f,c sumaM = 0 M = array [ 0..f, 0..c] of integer i = 0, f-1 , 1 Llenar (M,f,c) j = 0, c-1 , 1 Sm=sumarElementos (M,f,c) } Mostrar(M,f,c) sumaM = sumaM + M[i][j] Sm j return i inicio Principal() Return(sumaM) fin 212 213 Leer un vector Principal() SumarElementos(M[][] , f, c) f,c sumaM = 0 M = array [ 0..f, 0..c] of integer i = 0, f-1 , 1 Llenar (M,f,c) j = 0, c-1 , 1 Sm=sumarElementos (M,f,c) } Mostrar(M,f,c) sumaM = sumaM + M[i][j] Promedio = Sm / (f*c) j i Return(sumaM) promedio return inicio Principal() fin 214 215 Principal() multuplicaElementos(M[][] , f, c) f,c sumaM = 1 M = array [ 0..f, 0..c] of integer i = 0, f-1 , 1 Llenar (M,f,c) j = 0, c-1 , 1 Sm=multiplicaElementos (M,f,c) } Mostrar(M,f,c) sumaM = sumaM * M[i][j] Sm j return i inicio Principal() Return(sumaM) fin 216 217 Principal() sumaDiagonal (M[][] , f, c) f,c S=0 M = array [ 0..f, 0..c] of integer i = 0, f-1 , 1 Llenar(M,f,c) j = 0, c-1 , 1 f S=sumaDiagonal (M,f,c) v I=j } Mostrar(M,f,c) S=S+M[i][j] s j return i Return(s) inicio Principal() fin 218 Principal() sumaDiagonalSec (M[][] , f, c) f,c S=0 M = array [ 0..f, 0..c] of integer i = 0, f-1 , 1 Llenar(M,f,c) j = 0, c-1 , 1 f S=sumaDiagonalSec (M,f,c) v i = ( f - (j+1)) } Mostrar(M,f,c) S=S+M[i][j] s j return i Return(s) inicio Principal() fin 219 220 Principal() generaX(M[][] , f, c) f,c i = 0, f-1 , 1 M = array [ 0..f, 0..c] of integer j = 0, c-1 , 1 f generaX (M,f,c) v } Mostrar(M,f,c) (i=j) or (i=f-(j+1)) return M[i][j] = 0 M[i][j] =1 j inicio i Principal() Return fin 221 222 Principal() generaTrianSup(M[][] , f, c) f,c i = 0, f-1 , 1 M = array [ 0..f, 0..c] of integer j = i, c-1 , 1 GeneraTrianSup (M,f,c) M[i][j] = 1 Mostrar(M,f,c) j i Return Sm return inicio Principal() fin 223 224 Principal() generaTrianInf(M[][] , f, c) f,c i = 0, f-1 , 1 M = array [ 0..f, 0..c] of integer j = 0, i , 1 GeneraTrianInf (M,f,c) } Mostrar(M,f,c) M[i][j] = 1 Sm j return i inicio Principal() Return fin 225 Principal() SumaMat (A[][] ,B[][], C[][], f, c) f,c i = 0, f-1 , 1 A = array [ 0..f, 0..c] of integer Llenar (A,f,c) j = 0, c-1 , 1 F1,c1 C[i][j] = A[i][j]+B[i][j] B = array [ 0..f1, 0..c1] of integer Llenar (B,f1,c1) j v f f=f1 and c=c1 i Return C = array [ 0..f1, 0..c1] of integer SumarMat(A,B,C,f,c) No se puede sumar } mostrar(A,f,c) mostrar(B,f1,c1) mostrar(C,f,c) return inicio Principal() fin 226 227 228 229 Principal() MulMat (A[][] ,B[][], C[][], f, c,f1,c1) f,c i = 0, f-1 , 1 A = array [ 0..f, 0..c] of integer Llenar (A,f,c) j = 0, c1-1 , 1 F1,c1 C[i,j] = 0 B = array [ 0..f1, 0..c1] of integer k = 0, f1-1 , 1 Llenar (B,f1,c1) C[i][j] = C[i,j] + (A[ i, k ] * B[ k , j ] v f C = f1 k C = array [ 0..f, 0..c1] of integer j mulMat(A,B,C,f,c,f1,c1) i Return No se puede multiplicar mostrar(A,f,c) mostrar(B,f1,c1) mostrar(C,f,c1) return inicio Principal() fin 230 231 232 Principal() CuboMagico(M[][] , n) n Fil = 0 Col = n/2 M = array [ 0..n, 0..n] of integer i = 1, n*n , 1 cuboMagico (M,n) M[fil,col] = i } v Mostrar(M,n,n) return i mod n = 0 f Fil = Fil + 1 v inicio Fil = 0 Fil = n-1 Fil = Fil - 1 Principal() fin v f col = n1 Col = Col + 1 Col = 0 i Return 233 234 Principal() caracol(M[][] , n) n cont = 1 M = array [ 0..n, 0..n] of integer i = 0, n/2+1 , 1 caracol (M,n) j = i, n-i , 1 } M[i , j ] = cont Cont = Cont +1 Mostrar(M,n,n) return j j = i+1, n-i , 1 inicio M[ j, n-i-1 ] = cont Cont = Cont +1 Principal() j fin j = n-i-2, i, -1 M[ n-i-1 , j] = cont Cont = Cont +1 j 235 j = n-i-2, i+1 , -1 M[ j,i] = cont Cont = Cont +1 j i Return 236 237 Principal() TiroBlanco(M[][] , n) n cont = n/2+1 M = array [ 0..n, 0..n] of integer i = 0, n/2+1 , 1 tiroBlanco (M,n) j = i, n-i , 1 } Mostrar(M,n,n) M[i , j ] = cont return j j = i+1, n-i , 1 inicio M[ j, n-i-1 ] = cont } Principal() j fin j = n-i-2, i, -1 M[ n-i-1 , j] = cont j 238 j = n-i-2, i+1 , -1 M[ j,i] = cont j Cont = cont -1 i Return 239 240 Principal() sumaPArImpar (M[][] , f, c) f,c SP = 0 SI = 0 SD=0 M = array [ 0..f, 0..c] of integer Llenar(M,f,c) i = 0, f-1 , 1 sumaPArImpar (M,f,c) } j = 0, c-1 , 1 f v M[ i, j ] mod 2 =0 SP=SP+M[i][j ] SI=SI+M[i][j] v f I=j SD=SD+M[i][ j] Mostrar(M,f,c) return inicio Principal() fin j i 241 SI,SP,SD Return import java.util.Scanner; 242 243 244 245 246 22) Teniendo dos vectores A y B de N posiciones cada uno, a partir de estos crear otro vector C que contenga los elementos tanto de A como de B de forma intercalada. Ejemplo: Si N=4 Vector A: 1 4 9 0 Vector B: 20 Vector C: 30 40 1 50 20 4 30 9 40 0 50 Principal intercalar (A[] , B[], C[], n) Principal() J=0 N i = 0, n-1 , 1 C[J] = A[i] C[J+1] = B[i] J= J +2 i Return A = array [ 0..N] B = array[0..N] C=array [0..N+N] llena( A[], N) llena( B[], N) intercalar( A,B,C N) mostrar( A[], N) 247 mostrar( B[], N) mostrar( C[], N) return inicio Principal() fin 248 249 250 Lic. Adrian Eusebio Quisbert Vilela Nació En La Paz el 5 de Marzo de 1970, Licenciado en informática de la Universidad Mayor de San Andrés (UMSA), Magister En Ciencias de la computación de Universidad Mayor de San Andrés (UMSA), Egresado de la Carrera de Auditoría de la Universidad Mayor de San Andrés (UMSA) y, Diplomado en Organización y Administración Pedagógica del Aula en Educación Superior (CEPIES-UMSA), Diplomado “Aprendizaje Cooperativo con Estilo Salesiano y la Nueva Tecnología Informática en Educación Superior” de la Universidad Católica de Brasil, Postgrado Coordinador de Recursos Telemáticos de Centros Educativos: Universidad de Barcelona – España FUNDACION EDEBÉ. Desarrollador de software en Alfa SRL. (1993-1996), Sub Jefe de Carrera de Informática Industrial “EISPDM” (1998-1999), Jefe de Área del Tecnológico Santo Toribio de Mogrovejo (2002-2008), (2014) Docente Interino de la Carrera de Ingeniería Petrolera (UMSA), Docente de la Carrera de Informática Industrial de La Escuela Industrial Superior “Pedro Domingo Murillo”, Docente de la Carrera de Ingeniería de Sistemas de la Universidad Salesiana de Bolivia y docente de la Universidad Pública de El Alto (UPEA) ,Consultor de Proyectos de Implementación de sistemas de Informáticos y desarrollador de software. 251