Está en la página 1de 113

Lic. Juan Mario Eguívar G.

Lógica computacional Programación estructurada

CAPÍTULO 1

INTRODUCCIÓN

Los diagramas de flujo y la programación son la base de la formación y concreción


del conocimiento tanto en ingeniería de sistemas como electrónica y su trato indica
la lógica base de la solución de problemas diversos, considerando que los
diagramas utilizados en otras áreas como por ejemplo administración, son
similares mas no iguales.

Por otra parte, cuando se desea resolver un problema se debe seguir los
siguientes pasos:

i) Planteamiento del problema.


Por lo general, será realizado, en primera instancia, por el docente que dicta la
materia y conforme el estudiante avance en la curricula deberá ir adquiriendo
la habilidad de formular el problema en función a un fenómeno que se
presente.

ii) Análisis de variables.


En programas simples se definirán como de entrada (E), proceso (P) o salida
(S) y posteriormente se añadirá las opciones de recepción (R) y devolución
(D). Además, se deberá realizar una breve descripción de la variable y asociar
un acrónimo o una abreviación que se relacione directamente con la
descripción del problema. Finalmente se deberá considerar si las variables son
de tipo numérico o cadena y en tal caso agregar al principio el símbolo $. Por
otra parte, también se puede definir constantes.

iii) Algoritmo.
Es una descripción que se implementará directamente en pseudocódigo, bajo
las reglas específicas de programación, para luego poder trasladarse al
diagrama de flujo correspondiente y que alternativamente también permitirá
realizar la prueba de escritorio.

iv) Diagrama de flujo.


Es la representación gráfica del algoritmo utilizando figuras de programación y
aplicando variables definidas en el análisis.

1
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

v) Prueba de escritorio.
Permite analizar y demostrar la funcionalidad del diagrama de flujo o del
algoritmo en base al planteamiento del problema en base a las variables
definidas en el análisis, lo que más adelante se definirá como proceso de caja
blanca.

vi) Codificación, compilación, depuración, ejecución.


Codificación, consiste en traducir las figuras del diagrama de flujo por
instrucciones en un lenguaje de programación.

Compilación, éste paso lo realiza íntegramente la computadora y consiste en


buscar errores de codificación.

Depuración, lo realiza el programador y consiste en corregir todos los errores


que pueda presentar el programa, la mayoría de ellos serán ubicados por el
compilador.

Ejecución, consiste en hacer funcionar o correr el programa y observar como


realiza la tarea para la cual fue diseñado.

vii) Documentación interna.


Son elementos que permiten aclarar o definir las variables o los procesos,
también, son parte de las notas del analista y/o el programador para
posteriores revisiones o mejoras.

viii) Documentación externa.


También se lo define como manual de usuario que permite a cualquier
persona utilizar el programa.

ix) Mantenimiento.
Consiste en realizar mejoras y actualizaciones al programa para su mejor
desempeño.

2
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

CAPÍTULO 2

ESTRUCTURA SECUENCIAL

2.1. Definición
Implica que seguirá una línea de continuidad con la entrada de datos,
procesos y salida o resultados; además, se requiere aprender los siguientes
conceptos y definiciones:
i) Constante, es un espacio de memoria cuyo dato es fijo, es decir no
cambia durante la ejecución del programa.
ii) Variable, es un espacio de memoria cuyo dato puede tomar distintos
valores cada vez que se ejecuta un programa.
iii) Identificador, es la forma de representar al dato o al espacio de
memoria, utilizando para ello palabras, letras o letras con números. Un
identificador siempre comienza con una letra.
iv) Asignación, consiste en colocar unta dato en el espacio de memoria
utilizando para ello el signo , como por ejemplo:
A1978
SA+B
C$’J’
N$”HOLA”
v) Tipos de datos, para los diagramas de flujo existen varios tipos de datos
pero los más utilizados son:
Tipo Identificador Dato
Entero 123
Número entero E -35
N1 19
Real 12.36
Número real R -1.21
R1 456.09
Carácter$ ‘a’
Carácter C$ ‘;’
C1$ ‘&’
Cadena$ “Hola”
Cadena Cad$ “Dos amigos”
Cad1$ “3 años”
Lógico True
Booleano o lógico L False
L1 True

3
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

2.2. Figuras
Entrada/Salida de datos.

Lectura de datos (Leer).

Proceso de datos ().

Salida de datos por pantalla (Escribir).

Salida de datos por impresora (Mostrar).

Líneas de flujo.

Comentarios.

Conectores internos de página.

Conectores externos de página.

Operadores aritméticos
Operador Símbolo Ejemplo
Suma o adición + A+B
Resta o sustracción - A-B
*
Multiplicación o producto A*B
División o cociente / A/B
División entera Div A Div B
Módulo o residuo Mod A Mod B
Potencia ^ A^B

Funciones especiales
Función Símbolo Ejemplo
Valor absoluto || |A|
Parte entera [] [A]
Raíz cuadrada sqrt() sqrt(A)

4
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

Prioridad de los operadores


Operador Símbolo Prioridad
Agrupación () Primera
Potencia ^ Segunda
División entera y módulo div, mod Tercera
Multiplicación y división *, / Cuarta
Suma y resta +, - Quinta

2.3. Ejemplos
1) Elaborar un programa que permita sumar dos números enteros y
despliegue el resultado por pantalla.
Análisis
2 números enteros a, b (E)
Suma s (P/S)

Algoritmo
Inicio Programa_suma_2_números
Entero a, b, s
Leer: a, b
sa+b
Escribir: s
Fin

Diagrama de flujo
Inicio

a, b

sa+b

Fin

Prueba de escritorio
a 5 s=7
b 2
s 7

2) Elaborar un programa que permita leer los datos personales de una sola
persona y se los despliegue por pantalla e impresora.
5
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

3) Sumar y multiplicar tres números reales.


4) Halle el cuadrado y cubo de un número.
5) Leer desde el teclado cuatro valores, luego:
a) Imprima la suma de A, B, C, D.
b) Imprima la resta de A menos D.
c) Imprima el cuadrado de B.
d) Imprima el número D elevado a C.
6) Halle el perímetro y área de un cuadrado.
7) Se ingresa por teclado un monto en bolivianos, hallar su equivalente en
dólares, según el cambio actual.
8) Elaborar un programa que solicite por teclado el ingreso de una cantidad
en metros y despliegue por pantalla las equivalencias en centímetros,
milímetros y kilómetros.
9) Se ingresa por teclado dos números enteros, elaborar un programa que
intercambie dichos valores.
10) Calcular el perímetro y área de un rectángulo, habiendo ingresado por
teclado la base y la altura.
11) Se lee un número entero por teclado, calcular el número de dígitos que
tiene dicho número.
12) Se leen dos números enteros por teclado, determinar el mayor y el menor.

2.4. Ejercicios propuestos


1) Elaborar un programa que permita multiplicar tres números enteros.
2) Realizar un programa que solicite el año de nacimiento de una persona y
calcule su edad aproximada.
3) Se ingresa por teclado un monto en euros, hallar su equivalencia en
dólares y euros.
4) Halle las siguientes potencias: n0, n1, n2, n3, n4, n5.
5) Se ingresa por teclado dos números enteros, intercambiar dichos valores
sin utilizar variables auxiliares.
6) Se ingresa el precio de venta de un producto, averiguar cuánto es el
descuento del 16% y el precio con el descuento.
7) Se tiene los siguientes datos de un obrero: Nombre, sueldo base, bono de
antigüedad y descuento. Diseñe un programa que muestre el sueldo
líquido a pagar y el nombre del trabajador.
8) Se ingresa el sueldo básico de un trabajador, hallar el aumento del 12%,
un descuento del 8% y el sueldo líquido.
9) Elabore un programa que permita introducir por teclado los datos de una
persona que trabaja en una institución así como su sueldo básico, luego
despliegue los datos por pantalla y calcule su sueldo líquido realizando los
descuentos correspondientes por ley.
6
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

10) Un trabajador tiene como datos el nombre, el sueldo básico, cantidad de


hijos, cantidad de horas extras. Hallar el bono de producción del 8%,
descuento IVA 13%, aumento del 12%, descuento del seguro del 5%,
bono por cada hijo del 2%, el 0.5% por cada hora extra y el sueldo líquido.
11) Elabore un programa que convierta grados en radianes.
12) Si usted tiene un capital C de unidades monetarias, ganando un interés
del i% por periodo; al cabo de n periodos, ¿a cuánto asciende el capital?.
Sugerencia, utilice la fórmula del interés compuesto: C*(1+i)^n
13) Elabore un programa que permita calcular la edad de una persona en días
ingresando la fecha de nacimiento y la fecha actual. Sugerencia: Utilice la
fórmula [365.25*a]+[30.6*m]+d; donde: a=año, m=mes, d=día.
14) Aplique las leyes de Morgan para demostrar una de las siguientes
demostraciones: ¬(pvq)<=>¬p^¬q; ¬(p^q)<=>¬pv¬q; elaborando la
secuencia correcta de órdenes.
15) Utilizando los números de Catalán, divida un polígono convexo de n+2
lados en triángulos dibujando n-1 diagonales que no se intersectan.
Sugerencia: Aplique la fórmula: cat(n)=4^n/`[(n+1)*sqrt(π*n)].
16) Elaborar un programa que solicite por teclado el ingreso de una cantidad
en minutos y despliegue por pantalla las equivalencias en segundos,
horas, días, meses, años.
17) Elaborar un programa que solicite por teclado el ingreso de una cantidad
en litros y despliegue por pantalla las equivalencias en mililitros, galones.
18) Ingresamos una cantidad en kilos, determine su equivalencia en
toneladas, quintales, arrobas, libras, onzas y gramos.
19) Hallar el 10%, 25%, 50% de un número.
20) Calcular el perímetro y área de un triángulo rectángulo.
21) Calcular el perímetro y área de un círculo.
22) Calcular el volumen de una esfera.
23) Calcular el volumen de un cilindro.
24) Calcular el volumen de un tetraedro.
25) Calcular el volumen de un cono de revolución.
26) Se leen tres números enteros por teclado ordenarlos de forma
descendente.
27) Mostrar el último dígito de un número entero.
28) Se ingresa un número entero por teclado, mostrar por pantalla el número
pero sin su último dígito.
29) Se lee un número entero que tiene tres dígitos, mostrar por pantalla y por
separado los dígitos del número.
30) De un número entero que tiene cuatro dígitos, sumar los cuatro dígitos del
número.

7
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

31) Se lee un número real por teclado, mostrar su parte entera y su parte
decimal.
32) De un número real con dos dígitos en la parte entera y dos dígitos en la
parte decimal, intercambiar las partes.
33) Se tienen dos notas que se evalúan sobre 100 puntos, de un estudiante
de la materia de programación, hallar la tercera nota para que pueda
aprobar con un promedio de 71.
34) Hallar el dígito mayor y el menor de un número entero de tres dígitos.

8
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

CAPÍTULO 3

ESTRUCTURAS SELECTIVAS

3.1. Estructura selectiva simple

3.1.1. Definición

Permite la toma de decisiones en base a la idea de la lógica positiva,


es decir que el resultado se visualizará cuando la condición sea
verdadera.

Operadores lógicos
Operador Símbolo(s) Ejemplo
Mayor que > A>B
Mayor o igual que >= A >= B
Menor que < A<b
Menor o igual que <= A <= B
Igual que = A=B
Diferente que <> A <> B

Operadores relacionales
Operador Símbolo Ejemplo
Y and p1 and p2
O or p1 or p2
No not not (p1)

3.1.2. Figuras y pseudocódigo.

Falso Verdad
Condición(es)

Proceso(s) Verdad

Si (Condición(es))
Entonces: Proceso(s) Verdad
Fin Si

9
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

3.1.3. Ejemplos
1) Se lee tres números por teclado, hallar el mayor de los 3.
Análisis
3 números enteros a, b, c (E)
Mayor may (P/S)

Algoritmo
Inicio Programa_mayor_de_3_números_estr_selec_simple
Entero a, b, c, may
Leer: a, b, c
maya
Si (b > may)
Entonces: may  b
Fin Si
Si (c > may)
Entonces: may  c
Fin Si
Escribir: may
Fin

Diagrama de flujo Inicio

a, b, c

may  a

Falso Verdad
b > may

may  b

Falso Verdad
c > may

may  c

10
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

may

Fin
Prueba de escritorio
a 5 may=7
b 7
c -1
may 7

2) Se pregunta a quién ejecuta el programa si está habilitado(a) para


votar, si la respuesta es afirmativa (‘S’), entonces se pregunta si
puede elegir votar o no, y si la respuesta es nuevamente
afirmativa, entonces se deberá mostrar el mensaje por pantalla que
diga: “Usted es de la tercera edad”.
Nota: Utilice la lógica positiva y anidamiento (Anidamiento = Una
estructura dentro de la misma estructura) de “Si”.

Condición(es) 1

Condición(es) 2

Proceso(s) Verdad

Si (Condición(es))
Entonces: Si (Condición(es))
Entonces: Proceso(s) Verdad
Fin Si
Fin Si

3.1.4. Ejercicios propuestos

11
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

1) Se lee un número entero, si dicho valor está entre 0 y 1 que se


visualice el mensaje: “proporción correcta”.
2) Se lee por teclado un número, si es igual a la constante 12345,
entonces mostrar por pantalla: “Password correcto”.
3) Se pregunta a quién ejecuta el programa si estudió más de 12
años, entonces es bachiller; si estudió más de 15 años, entonces
es técnico superior; si estudió más de 16 años, entonces es
licenciado; más de 18 años, entonces es master; si estudió más de
20 años, entonces es doctor y si estudió más de 22 años es Phd.

3.2. Estructura selectiva doble


3.2.1. Definición
Permite elegir mediante una condición simple o compuesta el tipo de
respuesta o proceso a realizar.

3.2.2. Figuras y pseudocódigo

Falso Verdad
Condición(es)

Proceso(s) Falso Proceso(s) Verdad

Si (Condición(es))
Entonces: Proceso(s) Verdad
Sino: Proceso(s) Falso
Fin Si

3.2.3. Ejemplos
1) Mostrar en pantalla el mayor de dos números.
Análisis
2 números enteros a, b (E/S)

Algoritmo
Inicio Programa_mayor_de_2_números_estr_selec_doble
Entero a, b
Leer: a, b
Si (a > b)
Entonces: Escribir: “El mayor es: “, a
Sino: Escribir: “El mayor es: “, b
Fin Si
12
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

Diagrama de flujo
Inicio

a, b

Falso Verdad
a>b

El mayor es: b El mayor es: a

Fin

Prueba de escritorio
a 5 El mayor es: 7
b 7

2) Se lee un número por teclado, si es par, hallar el cubo de dicho


número y si es impar su cuadrado.
3) Se tiene como datos tres notas y el nombre del estudiante, muestre
el promedio y si aprobó o reprobó.
4) Hallar si un número es positivo, negativo o neutro.
5) Si un número es positivo averiguar si es par o impar, si es negativo
sumar tres números y si es neutro multiplicar dos números.
6) Hallar la división de dos números.

3.2.4. Ejercicios propuestos


1) Ordene tres números leídos por teclado en forma ascendente.
2) Encontrar el mayor de tres números.
3) Encontrar el menor de tres números.
4) Encontrar el mayor de cuatro números.
5) Encontrar el menor de cuatro números.
6) Encontrar el mayor de cinco números.
7) Encontrar el menor de cinco números.
8) Encontrar el mayor y menor de tres números.
9) Dados tres números enteros positivos, mostrar el número impar
más grande.
10) Verificar si un número es múltiplo de tres y de cinco.

13
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

11) Dados tres números se desea:


a) Hallar la diferencia del mayor con el menor.
b) Hallar la diferencia del intermedio con el menor.
c) Si los tres números son iguales desplegar un mensaje y no se
debe efectuar ninguna de las operaciones anteriores.
d) Si dos números son iguales, entonces se deberá efectuar el
producto del número igual con el diferente y no se deberá
realizar ninguno de los dos anteriores incisos.
12) Introducir las notas de un estudiante: pp, sp, ef y er (primer parcial,
segundo parcial, examen final y examen de recuperación). Se
desea calcular:
a) La nota final, reemplazando por la peor de las dos notas
anteriores. Se debe tomar en cuenta que la primera y la
segunda nota son por 30 puntos y la final por cuarenta puntos.
b) Si la nota final es mayor o igual a 51 mostrar por pantalla el
mensaje de aprobado, caso contrario de reprobado.
13) Se introduce un número entero de uno, dos o tres dígitos e imprima
el penúltimo dígito, si no lo tuviere que se imprima: “No tiene
penúltimo dígito”.
14) Elabore un programa que lea un número entero n y deduzca si está
comprendido entre -100 y 100.
15) Leer tres números por teclado y deducir si se han introducido en
orden creciente.
16) Se desea elaborar un programa que lea un año por teclado y
determine si es bisiesto.
17) Elabore un programa que resuelva la ecuación de segundo grado
para todas sus posibles soluciones.
18) Introducir dos números enteros y positivos, luego restar el menor
del mayor.
19) Introducir tres números enteros y negativos, luego encontrar el
menor de estos tres números.
20) Introducir dos números entero s, a y b, con parte decimal; luego
mostrar la parte entera que contenga la mayor parte decimal.
21) Leer un número n entero positivo, luego verificar si es par o impar.
Si es par, dividirlo por dos y si es impar, multiplicarlo por dos.
22) Se introduce por teclado la fecha de nacimiento; día, mes, año;
Determinar la fecha del día siguiente.
23) Leer dos números m y n, verificar si uno de ellos es múltiplo del
otro.
24) Elaborar un programa que resuelva un sistema de ecuaciones con
dos incógnitas.
14
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

a1x+b1y+c1=0
a2x+b2y+c2=0
25) Introducir tres números enteros positivos; a, b y c; distintos entre sí;
luego mostrarlos de tal manera que el menor de ellos se encuentre
entre los mayores (los mayores que se encuentran en los extremos
deben estar ordenados ascendentemente).
Si: a=2, b=5, c=12 => Se deberá mostrar: 5, 2, 12

3.3. Estructura selectiva múltiple


3.3.1. Definición
A diferencia de los dos anteriores modelos se realiza una selección
por igualación con múltiples opciones que es muy útil para la creación
de menús.

3.3.2. Figuras y pseudocódigo

Opción
1 2 3 ……. No

Proceso(s) 1 Proceso(s) 2 Proceso(s) 3 …………. Proceso No


Proceso(s) 3 Proceso(s) 3 Proceso(s) 3

Según (Opción)
Opción 1: Proceso(s) 1
Fin opción 1
Opción 2: Proceso(s) 2
Fin opción 2
Opción 3: Proceso(s) 3
Fin opción 3
………….
Defecto: Proceso No
Fin Según

3.3.3. Ejemplos
1) Se lee un número que representa a un día de la semana, muestre
por pantalla a qué día de la semana representa.
Análisis
Opción op (E)

15
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

Algoritmo
Inicio Programa_día_de_la_semana_estr_selec_múltiple
Entero op
Leer: op
Según (op)
Opción 1: Escribir: “Lunes”
Fin Opción 1
Opción 2: Escribir: “Martes”
Fin Opción 2
Opción 3: Escribir: “Miércoles”
Fin Opción 3
Opción 4: Escribir: “Jueves”
Fin Opción 4
Opción 5: Escribir: “Viernes”
Fin Opción 5
Opción 6: Escribir: “Sábado”
Fin Opción 6
Opción 7: Escribir: “Domingo”
Fin Opción 7
Defecto: Escribir: “Error”
Fin Según
Fin

Diagrama de flujo Inicio

op

Opción
1 2 3 4 5 6 7 No

Lunes Martes Miércoles Jueves Viernes Sábado Domingo Error

Fin

Prueba de escritorio
op 5 Viernes
16
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

2) Elabore un menú que permita seleccionar entre altas, medias y


bajas.

3.3.4. Ejercicios propuestos


1) Con la estructura selectiva múltiple realizar las operaciones
aritméticas básicas más la división entera, el módulo o residuo y la
potencia.
2) Con una estructura selectiva múltiple realizar lo siguiente:
a) Promedio de tres notas
b) Perímetro y área de un rectángulo.
c) Mayor de tres números.
d) Averigüe si un número es múltiplo de tres.
e) Averigüe si un número es par o impar.
3) Se lee un número que representa a un mes del año, muestre por
pantalla a qué mes del año representa.
4) Convertir las calificaciones numéricas: 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 a
calificaciones alfabéticas A, B, C, D, E, F, G, H, I, J;
respectivamente.

17
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

CAPÍTULO 4

ESTRUCTURAS ITERATIVAS

4.1. Estructura mientras


4.1.1. Definición
Permite repetir uno o más procesos siempre y cuando se cumpla una
o más condiciones, caso contrario saltará dichos procesos. Además,
se requiere utilizar las siguientes definiciones:
 Contador manual, es una variable de la cual se conoce tanto el
inicio como el valor final; dicha variable altera su valor de una forma
fija hasta llegar a su valor final y se clasifica en:
 Contador, es un contador manual que altera su dato en función
a un valor fijo.
var  valor inicial c1
var  var + valor fijo cc+2
 Acumulador, es un contador manual que altera su valor con
valores diferentes (en función a otra variable).
var  valor inicial a1
var  var + valor diferente aa+x

4.1.2. Figuras y pseudocódigo


Falso
Condición(es)
Verdad
Proceso(s)

Mientras (Condición(es))
Proceso(s)
Fin Mientras

4.1.3. Ejemplos
1) Genere los primeros números impares.
Análisis
Límite lim (E)
Contador c (P)
Número par p (P/S)

18
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

Algoritmo
Inicio Programa_ números_pares_estr_mientras
Entero lim, c, p
Leer: lim
c1
p2
Mientras (c <= lim)
Escribir: p
pp+2
cc+1
Fin Mientras
Fin Si

Diagrama de flujo Inicio

lim

c1
p2

Falso
c <= lim
Verdad
p

cc+1
pp+2

Fin

Prueba de escritorio
lim 5 2 4 6 8 10
c 123456
p 2 4 6 8 10 12

2) Genere los múltiplos de siete.


3) Muestre y halle la suma de los múltiplos del ocho.
4) Muestre y halle la suma y el promedio de los múltiplos del cinco.

19
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

4.1.4. Ejercicios propuestos


1) Generar los primeros números pares.
2) Muestre y halle la suma y promedio de los múltiplos del seis.
3) Muestre y halle la suma y promedio de los múltiplos del cuatro.
4) Genere la serie Fibonacci.
5) Se leen n números, contar cuantos son pares.
6) Se leen n números, contar cuantos están en el rango de 20 a 50.
7) Se leen n números, hallar la suma de los números si es que son
múltiplos de tres.
8) Genere los múltiplos del nueve.
9) Muestre y halle la suma, producto y promedio de los múltiplos del
tres.
10) Genere los primeros números negativos.
11) Genere la siguiente serie de números: 0, 1, 3, 6, 10,15, 21, 28, 36,
45, 55,…
12) Halle la multiplicación en base a sumas sucesivas.
13) Muestre la tabla de multiplicar de cualquier número.
14) Halle el factorial de un número entero.
15) Muestre los factores de un número entero.
16) Halle la suma de los factores de un número.
17) Averigüe cuántos factores tiene un número.
18) Averigüe si un número es primo.
19) Averigüe si un número es perfecto.
20) Averigüe cuántos dígitos contiene un número.
21) Hallar la suma de los dígitos de un número.
22) Encontrar el invertido de un número entero.
23) Averigüe si un número es capicúa.
24) Generar la serie: A, B, A, B, A, B,…
25) Generar la serie: A, B, C, A, B, C, A, B, C,…
26) Generar la serie: 1, 0, 0, 1, 0, 0, 1, 0, 0, 1,…
27) Generar la serie: 1, 0, 0, 2, 0, 0, 3, 0, 0, 4,…
28) Generar la serie: 1, 0, 2, 0, 0, 3, 0, 0, 0, 4,…
29) Generar la serie: 1, 2, 3, 4, 5, 6, 5, 4, 3, 2, 1,…
30) Determinar si dos números enteros positivos son amigos.

4.2. Estructura hasta


4.2.1. Definición
Permite repetir uno o más procesos al igual que la estructura anterior
con la diferencia de que dichos proceso, se ejecutara siempre una vez
y luego se define si cumple la o las condiciones. Por lo general, ésta

20
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

estructura está diseñada para validar la entrada de datos previamente


descritos en el capítulo 2.

4.2.2. Figuras y pseudocódigo

Proceso(s)

Verdad
Condición(es)
Falso
Repetir
Proceso(s)
Hasta (Proceso(s))

4.2.3. Ejemplos
1. Genere los primeros números impares.
Análisis
Límite lim (E)
Contador c (P)
Número par p (P/S)

Algoritmo
Inicio Programa_ números_pares_estr_hasta
Entero lim, c, p
Repetir
Leer: lim
Hasta (lim <= 0)
c1
p2
Repetir
Escribir: p
pp+2
cc+1
Hasta (c<=lim)
Fin Si

Diagrama de flujo
Inicio

β α

21
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

β α

lim

c <= 0

c1
p2

cc+1
pp+1

Verdad
c <= lim
Falso
Inicio

Prueba de escritorio
lim 5 2 4 6 8 10
c 123456
p 2 4 6 8 10 12

2. Genere los múltiplos de siete.


3. Muestre y halle la suma de los múltiplos del ocho.
4. Muestre y halle la suma y el promedio de los múltiplos del cinco.

4.2.4. Ejercicios propuestos


Misceláneo
1) Generar los primeros números pares.
2) Muestre y halle la suma y promedio de los múltiplos del seis.
3) Muestre y halle la suma y promedio de los múltiplos del cuatro.
4) Genere la serie Fibonacci.
5) Se leen n números, contar cuantos son pares.
6) Se leen n números, contar cuantos están en el rango de 20 a 50.
7) Se leen n números, hallar la suma de los números si es que son
múltiplos de tres.

22
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

8) Genere los múltiplos del nueve.


9) Muestre y halle la suma, producto y promedio de los múltiplos del
tres.
10) Genere los primeros números negativos.
11) Genere la siguiente serie de números: 0, 1, 3, 6, 10,15, 21, 28, 36,
45, 55,…
12) Halle la multiplicación en base a sumas sucesivas.
13) Muestre la tabla de multiplicar de cualquier número.
14) Halle el factorial de un número entero.
15) Muestre los factores de un número entero.
16) Halle la suma de los factores de un número.
17) Averigüe cuántos factores tiene un número.
18) Averigüe si un número es primo.
19) Averigüe si un número es perfecto.
20) Averigüe cuántos dígitos contiene un número.
21) Hallar la suma de los dígitos de un número.
22) Encontrar el invertido de un número entero.
23) Averigüe si un número es capicúa.
24) Generar la serie: A, B, A, B, A, B,…
25) Generar la serie: A, B, C, A, B, C, A, B, C,…
26) Generar la serie: 1, 0, 0, 1, 0, 0, 1, 0, 0, 1,…
27) Generar la serie: 1, 0, 0, 2, 0, 0, 3, 0, 0, 4,…
28) Generar la serie: 1, 0, 2, 0, 0, 3, 0, 0, 0, 4,…
29) Generar la serie: 1, 2, 3, 4, 5, 6, 5, 4, 3, 2, 1,…
30) Determinar si dos números enteros positivos son amigos.

4.3. Estructura para


4.3.1. Definición
Permite repetir uno o más procesos al igual que las estructuras
anteriores en base a la condición que se dé dentro del contador
automático.
 Contador automático, es una variable en la que se indica su inicio y
fin; dicha variable altera su valor de forma fija hasta que llega al
valor final. La forma en que se altera el valor de la variable
(incremento, decremento) es por defecto en una unidad.
var  valor inicial  valor final; incremento
i  n  1; -1
i  0  (n-1); 2
i  (j+1)  k Acá el incremento es por defecto de 1 en 1

23
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

4.3.2. Figuras y pseudocódigo

v  vi  vf

Proceso(s)

Falso
i
Verdad
Para ( i vi  vf)
Proceso(s)
Fin Para

4.3.3. Ejemplos
1) Genere los primeros números impares.
Análisis
Límite lim (E)
Contador automático i (P)
Número par p (P/S)

Algoritmo
Inicio Programa_ números_impares_estr_para
Entero lim, i, p
Repetir
Leer: lim
Hasta (lim <= 0)
p1
Para (i  1  lim)
Escribir: p
pp+2
Fin Para
Fin Si

Diagrama de flujo
Inicio

lim

β
α
24
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

β α

lim <= 0

p2

i  1  lim

pp+2

Falso
i
Verdad
Fin

Prueba de escritorio
lim 5 2 4 6 8 10
i 1 5||1 2 3 4 5
p 2 4 6 8 10 12

2) Genere los múltiplos de siete.


3) Muestre y halle la suma de los múltiplos del ocho.
4) Muestre y halle la suma y el promedio de los múltiplos del cinco.

4.3.4. Ejercicios propuestos


1) Generar los primeros números pares.
2) Muestre y halle la suma y promedio de los múltiplos del seis.
3) Muestre y halle la suma y promedio de los múltiplos del cuatro.
4) Genere la serie Fibonacci.
5) Se leen n números, contar cuantos son pares.
6) Se leen n números, contar cuantos están en el rango de 20 a 50.
7) Se leen n números, hallar la suma de los números si es que son
múltiplos de tres.
8) Genere los múltiplos del nueve.
9) Muestre y halle la suma, producto y promedio de los múltiplos del
tres.

25
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

10) Genere los primeros números negativos.


11) Genere la siguiente serie de números: 0, 1, 3, 6, 10,15, 21, 28, 36,
45, 55,…
12) Halle la multiplicación en base a sumas sucesivas.
13) Muestre la tabla de multiplicar de cualquier número.
14) Halle el factorial de un número entero.
15) Muestre los factores de un número entero.
16) Halle la suma de los factores de un número.
17) Averigüe cuántos factores tiene un número.
18) Averigüe si un número es primo.
19) Averigüe si un número es perfecto.
20) Averigüe cuántos dígitos contiene un número.
21) Hallar la suma de los dígitos de un número.
22) Encontrar el invertido de un número entero.
23) Averigüe si un número es capicúa.
24) Generar la serie: A, B, A, B, A, B,…
25) Generar la serie: A, B, C, A, B, C, A, B, C,…
26) Generar la serie: 1, 0, 0, 1, 0, 0, 1, 0, 0, 1,…
27) Generar la serie: 1, 0, 0, 2, 0, 0, 3, 0, 0, 4,…
28) Generar la serie: 1, 0, 2, 0, 0, 3, 0, 0, 0, 4,…
29) Generar la serie: 1, 2, 3, 4, 5, 6, 5, 4, 3, 2, 1,…
30) Determinar si dos números enteros positivos son amigos.

4.4. Ejercicios misceláneos


Estándar
1) Hallar el máximo común divisor y el mínimo común múltiplo de dos
números enteros positivos.
2) Se desea calcular independientemente la suma de los números pares e
impares comprendidos entre 1 y 200.
3) Calcular y visualizar la suma y el producto de los números pares
comprendidos entre 200 y 4000, ambos inclusive.
4) Construir la tabla de la suma.
5) Construir la tabla de la resta.
6) Construir la tabla de multiplicar.
7) Construir la tabla de la división.
8) Desplegar los primeros 25 números primos.
9) Dado un número real n, se desea encontrar su parte entera.
10) Dado un número n entero positivo, mostrar todos los números no primos
anteriores a n.
11) Calcular el cociente y resto de dos números enteros positivos a y b
mediante restas sucesivas.
26
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

12) Hallar la raíz cuadrada aproximada de un número n mayor o igual a


cero.
13) Hallar la raíz cúbica aproximada de un número n mayor o igual a cero.
14) Hallar la raíz cuarta aproximada de un número n mayor o igual a cero.
15) Hallar el producto de tres números enteros positivos a, b y c, mediante
sumas sucesivas.
16) Dado un número n entero positivo, verificar si éste es primo; si es así
hallar el factorial de n; caso contrario realizar la sumatoria de 0 hasta n.
17) Introducir un número entero positivo n, mostrar en pantalla todos los
múltiplos positivos de 3 y 9 anteriores a n.
18) Introducir tres números enteros positivos n, li (límite inferior), ls (límite
superior), donde li < ls; mostrar la tabla de multiplicar de n, desde li
hasta ls.
19) Convertir un número entero positivo n menor a 4000 en su equivalente
de número romano.
20) Convertir un número romano r en su número equivalente decimal.
21) Hallar el cuadrado de un número entero positivo n en base a la suma de
sus impares.
Si: n = 4 => 42 = 1 + 3 + 5 + 7 = 16
n = 3 => 32 = 1 + 3 + 5 = 9
22) Hallar el cubo de un número entero positivo n en base a la suma de
impares.
Si: n = 2 => 23 = 3 + 5 = 8
n = 3 => 33 = 7 + 9 + 11 = 27
n = 4 => 43 = 13 + 15 + 17 + 19 =64
23) Dados dos números x e y, hallar la potencia xy en base a sumas
sucesivas.
24) Dado un número n entero positivo mayor a 1, mostrar todos los números
primos anteriores a n.
25) Dado un número real positivo n, convertir la parte decimal en entera.
Si: n = 123.456 => m=0.123456
26) Dado un número entero positivo n, encontrar la raíz cuadrada, sin utilizar
el operador de exponenciación, ni la función raíz cuadrada. La raíz
cuadrada debe ser el entero más cercano menor o igual a n.
27) Representar cualquier número entero positivo n mediante sumas de
potencias de dos.
Si: n = 15 => 15 = 23 + 22 + 21 + 20
n = 7 => 7 = 22 + 21 + 20
28) Representar cualquier número entero positivo n mediante sumas y
restas de potencias de tres.
Si: n = 12 => 12 = 32 + 21
27
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

n = 15 => 15 = 33 - 32 - 31
29) Introducir dos números enteros positivos n y k, luego hallar el menor
múltiplo de k respecto a n.
Si: n = 7 y k = 3 => El menor múltiplo de 3 respecto a 7 es 6.
n = 12 y k = 5 => El menor múltiplo de 5 respecto a 12 es 10.
30) Introducir dos números enteros positivos n y k, luego hallar el múltiplo de
k que esté más cerca de n.
Si: n = 7 y k = 3 => El múltiplo más cercano de 3 respecto a 7 es 6.
n = 14 y k = 5 => El múltiplo más cercano de 5 respecto a 14 es 15.
n = 10 y k = 4 => El múltiplo más cercano de 5 respecto a 10 es 8 ó
12.
31) Dados dos números enteros positivos m y n, se desea obtener la
división de los mismos, en el formato de fracción mixta simplificándolo al
máximo.
18 1
Si: m = 18 y n = 4 => = 4 2 (Cuatro enteros y un medio).
4
Lote de números
1) Leer n números y mostrar cuántos números negativos se han leído.
2) Dado un lote de n números, determinar cuántas veces un número
positivo está seguido de un cero.
3) Dado un lote de n números determinar cuántos son primos, pares e
impares.
4) Dado un conjunto de n números determinar el promedio de los pares y
los impares.
5) Dado un conjunto de n números, mostrar la suma de todos aquellos que
no son primos y su promedio.
6) Encontrar el menor de n números.
7) Encontrar el mayor de n números.
8) Encontrar el menor y mayor de n números.
9) Dado un conjunto de n números, se desea saber:
a) El promedio de los números pares.
b) El promedio de los números impares.
c) La suma de los n números y el promedio.
10) Dado un lote de n grupos de datos, cada grupo contiene tres datos que
son los lados de un triángulo, se pide calcular el área, luego desplegar el
área y los lados.
11) De un lote de n números se pide determinar:
a) ¿Cuántas veces un número par está seguido por dos impares?
b) ¿Cuántas veces un número positivo está seguido por un negativo y
cero?
12) Dado un lote de z números se pide:

28
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

a) Determinar la cantidad de números primos y su suma.


b) Determinar la cantidad de números perfectos y su suma.
c) Determinar la cantidad de números no primos y su suma.
d) El promedio total de los números.
13) Dado un conjunto de n números se pide mostrar el promedio de cada
tres números:
Si: n = 5 => 4
3
2 => (4 + 3 + 2) / 3 = 3
7 => (3 + 2 + 7) / 3 = 4
9 => (2 + 7 + 9) / 3 = 6
14) Se tienen n números que representan el sueldo de n personas, se pide
mostrar la suma total de sueldos, el sueldo promedio, el sueldo mínimo
y el sueldo máximo.
15) Introducir números enteros positivos, finalizar cuando introduzca el -999
y para cada número introducido se pide:
a) Si el número es par, calcular su factorial.
b) Si el número es impar, verificar si es primo.
c) Si el número es impar y además es múltiplo de tres mostrar la suma
de sus divisores.
Manejo de dígitos
1) Dado un número n entero positivo mostrar la cantidad de dígitos pares
que éste contiene.
2) Dado un número n entero positivo mostrar la cantidad de dígitos impares
que éste contiene.
3) Dado un número n entero positivo mostrar la cantidad de dígitos cero
que éste contiene.
4) Dado un número n entero positivo mostrar la cantidad de dígitos
diferentes de cero que éste contiene.
5) Dado un número entero positivo n se desea saber:
a) ¿Cuántos de sus dígitos son pares?
b) ¿Cuántos de sus dígitos son múltiplos de tres?
c) La suma de todos sus dígitos.
6) Dado un número entero positivo n, contar cuántos de sus dígitos son
múltiplos 2, 3 y 5.
7) Dado un número entero positivo n, invertirlo y almacenarlo en m; luego
mostrar ambos números.
8) Dado un número entero positivo n y defina lo siguiente:
Si: n = 18953647, número válido, tiene los dígitos diferentes.
n = 23452, número no válido, tiene dígitos repetidos.

29
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

9) Dado un número entero positivo n con los dígitos diferentes entre sí,
determinar el mayor dígito que éste contiene y la posición que ocupa
contando de derecha a izquierda.
Si: n = 3264510 => El dígito mayor es 6 y se encuentra en la posición 5.
10) Dado un número entero positivo n con los dígitos diferentes entre sí,
determinar el menor dígito que éste contiene y la posición que ocupa
contando de derecha a izquierda.
Si: n = 3172645 => El dígito menor es 1 y se encuentra en la posición 6.
11) Dado un número entero positivo n con los dígitos diferentes entre sí, se
pide intercambiar el dígito mayor con el dígito menor.
12) Dados dos números enteros positivos a y b, dado a mayor que b.
determinar cuántas veces el número b se encuentra en a.
Si: a = 32432 y b = 32 => 32 se encuentra en 32432, 2 veces.
a = 77777 y b = 77 => 77 se encuentra en 77777, 4 veces.
13) Dado un número entero positivo n ordenar sus dígitos en forma
ascendente.
14) Dado un número entero positivo n ordenar sus dígitos en forma
descendente.
15) Dado un número real positivo r, se pide invertir los dígitos del número,
manteniendo la cantidad de dígitos en la parte entera como en la parte
decimal.
Si: r = 123.45 => s = 543.21
16) Dado un número entero positivo n con los dígitos diferentes entre sí
mostrar el dígito mayor y la posición que éste ocupa; se debe tomar en
cuenta las posiciones de izquierda a derecha.
17) Dado un número real positivo r contar la cantidad de dígitos enteros y
decimales que contenga.
18) Dado un número entero positivo n hallar la suma de los factoriales de los
dígitos.
19) Leer un número n entero positivo de más de cuatro dígitos e
intercambiar los dígitos de las posiciones pares con los dígitos de las
posiciones impares (de derecha a izquierda).
20) Leer un número real positivo r, luego intercambiar el primer dígito de la
parte entera con el primer dígito de la parte decimal.
Si: r = 987.321 => s = 187.329
21) Mostrar todos los números de tres dígitos que cumplan las siguientes
condiciones:
a) Todos sus dígitos deben ser distintos entre sí.
b) El primer dígito de la derecha debe ser par.
c) El dígito central debe ser primo.

30
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

22) Dado un número n entero positivo de más de seis dígitos construir otros
dos números a y b, donde a está formado por los dígitos pares de n y b
está formado por los dígitos impares de n.
23) Dado un número n entero positivo, eliminar todos los dígitos pares de
éste contenga.
24) Dado un número n entero positivo, eliminar todos los dígitos cero de
éste contenga.
25) Dado un número n entero positivo, eliminar todos aquellos dígitos que
se encuentran más de una vez en n (debe permanecer únicamente uno
de ellos).
26) Dado un número entero positivo n, se pide sumar 1 a los dígitos pares y
restar 1 a los dígitos impares.
27) Dado un número real positivo r, cambiar la parte entera con la parte
decimal y con el orden de los dígitos invertidos.
28) Dado un número entero positivo n de más de tres dígitos, hacer rotar los
dígitos de n, a la derecha k veces (k entero positivo mayor a 0); además,
mostrar cada rotación.
29) Dado un número x entero positivo generar y desplegar el número
capicúa que le corresponde de la siguiente manera:
Si: x = 123 => El número capicúa correspondiente es 12321.
30) Dado un número entero positivo n de más de tres dígitos, hacer rotar los
dígitos de n a la izquierda k veces (k entero positivo mayor a 0);
además, mostrar cada rotación.
31) Dado un número n entero positivo de más de seis cifras y otro k también
entero positivo de una sola cifra, insertar éste elemento en la posición p
(p es entero positivo y menor o igual al número de dígitos que tiene n.
considerar las posiciones del número n de derecha a izquierda del
número n.
Si: n = 12608567, k = 9 y p = 4; entonces: n = 126089567
32) Dado un número n entero positivo y otro k también entero positivo, se
pide insertar el número k en la posición p (p es entero positivo y menor o
igual al número de dígitos que tiene n. Considerar las posiciones del
número n de derecha a izquierda) del número n.
Si: n = 123, k = 5467 y p = 2; entonces: n = 1254673
n = 6, k = 54321 y p = 1; entonces: n = 654321
33) Generar un número n de k dígitos que cumpla las siguientes
condiciones:
a) Si la posición es múltiplo de dos asignar el dígito 0.
b) Si la posición es múltiplo de tres pero no de dos asignar el 1.
c) Si la posición es múltiplo de cinco pero no de dos ni de tres asignar
el 2.
31
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

d) Si no se cumple ninguna de las anteriores condiciones asignar el 3.


Si: k = 10, entonces: n = 3 0 1 0 2 0 3 0 1 0
(Considerar las posiciones de izquierda a derecha).
34) Introducir n números enteros positivos por teclado, desplegar aquellos
números tales que la diferencia entre el número y el invertido den como
resultado 54.
35) Dado un conjunto de n números enteros positivos mayores a cien,
generar un número a con los dígitos centena de los números
introducidos.
Si: n = 5 => 123, 7645, 6534, 126273, 123343
Entonces: a = 16523
36) Dado un número n entero positivo, hacer lo siguiente:
a) Si la cantidad de dígitos de n es impar, verificar si el elemento central
del número es un punto silla (es un número que se encuentra situado
entre dos números mayores).
b) Si la cantidad de dígitos de n es par, dividir el número en otros dos
números, a y b; mostrar el mayor y el menor, además de sus
posiciones (considerar las posiciones de derecha a izquierda) de los
dígitos que se encuentran en la primera parte (a) y hallar la suma de
todos los dígitos no primos que se encuentran en la segunda parte
(b).
Si: n = 1763542 => La cantidad de dígitos es impar y el elemento
central es 3, es punto silla.
Si: n = 60514718 => La cantidad de dígitos es par, entonces se debe
dividir en otros dos números.
a = 6051 => El dígito mayor es 6 y la posición que ocupa es 4.
b = 4718 => La suma de los dígitos no primos es: s = 4+1+8=13
37) Introducir un número n entero positivo, luego mostrar cada dígito par de
n, generando un nuevo número con dígitos impares en sentido
decreciente.
Si: n = 5634528; entonces se deberá obtener lo siguiente:
5 6 3 4 5 2 8 => Mostrar: 7531
Mostrar: 1
Mostrar: 31
Mostrar: 531
38) Introducir n números, finalizar cuando se introduzca -999, mostrar todos
aquellos números que el primer y último dígito igual.
39) Introducir por teclado un conjunto de n números, los cuales representan
los datos de una encuesta realizada a n estudiantes de la carrera de
ingeniería respecto a su edad y sexo. Cada número está formado por
tres dígitos que representan la edad y el sexo del estudiante
32
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

encuestado, los datos se deben leer de la siguiente manera: Los dos


primeros dígitos representan la edad del estudiante y el tercer dígito el
sexo (1 – Varón, 0 – Mujer), los dígitos se cuentan de izquierda a
derecha. Se pide mostrar en pantalla:
a) El número total de mujeres.
b) El número total de varones.
c) El promedio de edad de los varones.
d) El promedio de edad de las mujeres.
e) El promedio total de todos los estudiantes encuestados.
40) Generar la tabla Booleana para n entradas.
Si: n = 2; entonces se tiene:
A B
0 0
0 1
1 0
1 1
41) Dado un número n entero positivo, mostrar todos los dígitos que son
puntos silla.
42) Dado un número n entero positivo, generar el triángulo de Pascal de
grado n.
43) Introducir un número entero positivo n, formar otro número real m a
partir de los dígitos de n. la parte entera de estar formada por los dígitos
pares y la parte decimal por los dígitos impares.
Si: n = 6524381 => r = 6248.531
44) Introducir un número r entero positivo, llevar a la parte derecha los
dígitos impares y a la izquierda los pares, ordenándolos
ascendentemente.
Si: r = 54532767 => r = 24635577
45) Dado un número n entero positivo en base 10, hallar su equivalente m
en base x (con x, entero positivo, en el rango 1 < x < 10).
Si: n = 143(10) y x = 5 => m = 1033(5)
46) Dado un número real positivo r en base 10, menor a 1, hallar su
equivalente m en base x, con x entero positivo mayor a 1 y menor a 10,
y que sea máximo de cinco dígitos.
Si: r = 0.53(10) y x = 7 => m = 0.34653(7)
47) Dado un número real positivo r en base 10, hallar su equivalente m en
base x, donde x es un número entero positivo mayor a 1 y menor a 10
(luego del punto decimal máximo cinco dígitos).
Si: r = 32.15(10) y x = 5 => m = 112.03333(5)

33
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

48) Dado un número n entero positivo en base x ( x es un número entero


positivo mayor a 1 y menor a 10), se desea obtener su equivalente en
base 10.
Si: n = 1202 y x = 3 => m = 47(10)
49) Dado un número real positivo r menor a 1 en base x (x es un número
entero positivo mayor a 1 y menor a 10), se desea obtener su
equivalente (luego del punto decimal máximo cinco dígitos).
Si: r = 0.102 y x = 3 => m = 0.407(10)
50) Dado un número real positivo r en base x (x es un número entero
positivo mayor a 1 y menor a 10), obtener su equivalente en base 10.
Si: r = 121.11 y x = 4 => m = 25.3125(10)
51) Dado un número n entero positivo en base x, hallar su complemento
auténtico (el complemento auténtico de un número N con K dígitos en
una base B se define como: CA(N(B)) - BK - N.
Si: n = 12345 y x = 7 => CA(12345(7)) = 54322(7)
52) Dado un número n entero positivo en base x, hallar su complemento
restringido (el complemento restringido de un número N con K dígitos en
una base B se define como: CR(N(B)) - (BK – 1).- N
Si: n = 12345 y x = 7 => CR(12345(7)) = 54321(7)
53) Dados dos números enteros positivos, a y b, en base x (x es un número
entero positivo mayor a 1 y menor a 10), hallar la suma de n respecto a
m en base x.
Si: m = 1207, n = 7640 y x = 8 => s = 1207(8) + 7640(8) = 11047(8)
54) Dados dos números enteros positivos, a y b, en base x (x es un número
entero positivo mayor a 1 y menor a 10), hallar la diferencia de n
respecto a m en base x.
Si: m = 4233, n = 1234 y x = 6 => r = 4233(6) - 1234(6) = 2555(6)
55) Dados dos números enteros positivos, a y b, en base x (x es un número
entero positivo mayor a 1 y menor a 10), hallar el producto de n respecto
m en base x.
Si: m = 123, n = 12 y x = 5 => p = 123(5) * 12(5) = 2031(5)
56) Dados dos números enteros positivos, a y b, en base x (x es un número
entero positivo mayor a 1 y menor a 10), hallar la división entera de n
respecto a m en base x.
Si: m = 2031, n = 12 y x = 5 => d = 2031(5) / 12(5) = 123(5)

Sucesiones y series
1) Generar la siguiente sucesión para n términos: 0, 1, 2, 3, 4, 5,…
2) Generar la siguiente sucesión para n términos: 0, 2, 3, 5, 8, 12, 19, 31,…
3) Generar la siguiente sucesión para n términos: 0, 0, 0, 1, 1, 1, 0, 0, 0, 1,
1,1,…
34
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

4) Generar la siguiente sucesión para n términos: 0, 2, 3, 8, 15, 30, 56,


104,…
5) Generar la siguiente sucesión para n términos: 1, 3, 2, 4, 5, 7, 6, 9, 11,
10, 12,…
6) Generar la siguiente sucesión para n términos: 1, 1, 1, 3, 5, 9, 17, 31,…
7) Generar la siguiente sucesión para n términos: 1, 3, 7, 13, 21, 31, 43,…
8) Generar la siguiente sucesión para n términos: 1, 3, 7, 15, 31, 63, 127,…
9) Generar la siguiente sucesión para n términos: 1, 4, 13, 40, 121, 364,…
10) Generar la siguiente sucesión para n términos: 2, 12, 30, 56, 90,…
11) Generar la siguiente sucesión para n términos: 7, 6, 5, 7, 6, 5, 7, 6, 5,…
12) Generar la siguiente sucesión para n términos: 5, 3, 1, 5, 3, 1, 5, 3, 1,…
13) Generar la siguiente sucesión para n términos: 1, -3, 5, -7, 9, -11, 13,…
14) Generar la siguiente sucesión para n términos: 1, 2, 3, 2, 3, 4, 3, 4, 5, 4,
5, 6,…
15) Generar la siguiente sucesión para n términos: -1, 1, -1, 1, -1, 1, -1, 1,…
16) Generar la siguiente sucesión para n términos: 0, 1, 3, 7, 14, 26,…
17) Generar la siguiente sucesión para n términos: -1, 0, 3, 8, 15, 24,…
18) Generar la siguiente sucesión para n términos: 0, 1, 1, 2, 4, 7, 13, 24,…
19) Generar la siguiente sucesión para n términos: 0, 1, 0, 0, 1 ,1, 0, 0, 0, 1,
1, 1,…
20) Generar la siguiente sucesión para n términos: 1, 0, 1, 1, 0, 0, 1, 1, 1, 0,
0, 0,…
21) Generar la siguiente sucesión para n términos: 0, 1, 2, 3, 4, 5, 6, 8, 10,
7, 9, 11,…
22) Generar la siguiente sucesión para n términos: 1, 2, 2, 3, 3, 3, 4, 4, 4,
4,…
23) Generar la siguiente sucesión para n términos: 0, 1, 2, 0, 1, 2, 3, 4, 0, 1,
2, 3, 4, 5, 6,…
24) Generar la siguiente sucesión para n términos: -1, 0, -2, 1, -3, 2, -4, 3,…
25) Generar la siguiente sucesión para n términos: 1, 0, 3, 2, 5, 4, 7, 6,…
26) Generar la siguiente sucesión para n términos: -7, -7, 6, -3, 5, 26, 81,
255,…
27) Generar la siguiente sucesión para n términos: 4, 6, 8, 11, 15, 21, 30,
44, 66,…
28) Generar la siguiente sucesión para n términos: 1, 2, 4, 3, 5, 7, 6, 8, 10,
12, 9, 11, 13, 15, 17,…
29) Generar la siguiente sucesión para n términos: 1, 1, 3, 0, 5, -1, 7, -2, 9,
-3,…
30) Generar la siguiente sucesión para n términos: 1, 1, 3, 0, 5, -1, 7, -2, 9,
-3,…

35
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

31) Generar la siguiente sucesión para n términos: 2, 1, 0, 6, 5, 4, 12, 11,


10, 20, 19, 18,…
32) Generar la siguiente sucesión para n términos: 0*1, 1*2, 3*5, 8*13,…
33) Generar la siguiente sucesión para n términos: -1, 0, 1, -1, 0, 1, -1, 0,
1…
34) Generar la siguiente sucesión para n términos: 1, 2, 3, 2, 1, 2, 3, 2, 1,…
35) Generar la siguiente sucesión para n términos: -1, 2, 3!, 4, -5, 6!, -7, 8,
9!, 10, -11,…
36) Introducir un número n entero positivo, luego mostrar el siguiente
triángulo numérico para n filas:
Si: n = 4, entonces se tiene: 1, 3, 5, 7
1, 3, 5
1, 3
1
37) Introducir un número n entero positivo, luego mostrar el siguiente
triángulo numérico para 2n filas:
Si: n = 3, entonces se tiene: 1, 3, 5
5, 3, 1
1, 3
3, 1
1
1
38) Introducir un número n entero positivo, luego mostrar el siguiente
triángulo numérico para n filas:
Si: n = 4, entonces se tiene: 1
2, 4
3, 6, 9
4, 8, 12, 16
Sumatorias
1) Hallar la suma de los n primeros términos de la siguiente serie:
1+2+3+4+5+6+7+…
2) Hallar la suma de los n primeros términos de la siguiente serie:
1+3+6+10+…
3) Hallar la suma de los n primeros términos de la siguiente serie:
1!+2!+3!+4!+5!+6!+…
4) Hallar la suma de los n primeros términos de la siguiente serie:
0!+1!+1!+2!+3!+5!+8!+13!+…
5) Hallar la suma de los n primeros términos de la siguiente serie: (x+1)!+
(x+2)!+ (x+3)!+ (x+4)!+… (Con x entero positivo).

36
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

1
6) Hallar la suma de los n primeros términos de la siguiente serie: 1 + 2 +
1 1 1 1 1 1 1
+4+5+⋯ 1+2+3+4+5+⋯
3
1 1
7) Hallar la suma de los n primeros términos de la siguiente serie: +4+
2
1 1 1
+ 8 + 10 + ⋯
6
1 1
8) Hallar la suma de los n primeros términos de la siguiente serie: + 21 +
20
1 1 1
+ 23 + 24 + ⋯
22
1
9) Hallar la suma de los n primeros términos de la siguiente serie: − 1! +
3 5 7 9
− 3! + 4! − 5! + ⋯
2!
1∗2
10) Hallar la suma de los n primeros términos de la siguiente serie: −
3!
3∗4 5∗6 7∗8 9∗10
+ 11! − + −⋯
7 15 19!
11) Dado un número n entero positivo, hallar el valor de la siguiente
𝑦
sumatoria: ∑𝑛𝑥=1 ∑𝑛𝑦=1 𝑥!
12) Dado un número n entero positivo, hallar el valor de la siguiente
(2𝑖)
sumatoria: ∑𝑛𝑖=1(−1)𝑖+1 (2𝑖+1)!
13) Dados los números m y n enteros positivos, hallar el valor de la
𝑖∗𝑗∗𝑘
siguiente sumatoria: ∑𝑚 𝑛 𝑚+𝑛
𝑖=1 ∑𝑗=1 ∑𝑘=𝑖+𝑗 𝑚+𝑛
14) Dado un número n entero positivo, hallar el valor de la siguiente
productoria: ∏𝑛𝑖=1 𝑖 2
15) Dados tres números enteros positivos m, n y p, encontrar el valor de la
𝑝
siguiente expresión: ∑𝑚 𝑛
𝑖=1 ∑𝑗=1 ∏𝑘=1(𝑖 + 𝑗) ∗ (𝑗 + 𝑘)
16) Dado un número n entero positivo, hallar el valor de la siguiente
1! 2! 3! 4!
sumatoria: ∑1 𝑘
− ∑2 𝑘
+ ∑3 𝑘
− ∑4 𝑘

𝑘=1 𝑥! 𝑘=1 𝑥! 𝑘=1 𝑥! 𝑘=1 𝑥!
17) Calcular el valor de ex mediante aproximaciones sucesivas con un error
1 1 1
menor o igual a 10-5: 1 + 𝑥 + 2! 𝑥 2 + 3! 𝑥 3 + 4! 𝑥 4 + ⋯
18) Calcular el valor de sen(x) mediante aproximaciones sucesivas con un
1 1 1
error menor o igual a 10-5: sin(𝑥) = 1 − 3! 𝑥 3 + 5! 𝑥 5 − 7! 𝑥 7 + ⋯
19) Calcular el valor de cos(x) mediante aproximaciones sucesivas con un
1 1 1
error menor o igual a 10-5: cos(𝑥) = 1 − 2! 𝑥 2 + 4! 𝑥 4 − 6! 𝑥 6 + ⋯
20) Calcular el valor de tg(x) mediante aproximaciones sucesivas utilizando
para esto los resultados obtenidos anteriormente.

37
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

CAPÍTULO 5

FUNCIONES
5.1. Definición
Son una forma de dividir un programa para que sea más simple su solución,
utilizan la metodología Top-Down y se caracterizan porque siempre
devuelven una respuesta al programa que las invoca. Además, el número de
argumentos en el parámetro debe ser la misma cantidad y en el mismo orden
para la invocación de una función. Finalmente, los parámetros pueden ser de
recepción (R) o devolución (D).

5.2. Figuras y pseudocódigo


Se divide en dos partes que son:
i) Llamada a una función

var NomFum(Parámetros)

var  NomFun(Parámetros)

ii) Retorno de una función

NomFun

Parámetros

Proceso(s)
Return(var)

Fin NomFun

Inicio Variable_Retorno Función NomFun (Parámetros)


Declaración de variables locales
Proceso(s)
Return(var)
Fin NomFun

5.3. Ejemplos
1) Hallar el producto de dos números enteros en base a sumas sucesivas.
Análisis
Programa principal
Dos números a, b (E)

38
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

Suma s (P/S)

Función leer
Un número x (E/D)

Función suma
Dos números a, b (R)
Suma s (P/D)

Algoritmo
Inicio Programa_principal_suma_en_base_función
Entero a, b, s
a  leer(_leer
b  leer()
s  suma(a, b)
Escribir: s
Fin

Inicio Entero Función leer()


Entero x
Repetir
Leer: x
Hasta (x < 0)
Return(x)
Fin leer

Inicio Entero Función suma(Entero a, Entero b)


Entero s
sa+b
Return(s)
Fin suma

Diagrama de flujo
Inicio

a leer()
Se pasa a la función leer
b leer()

39
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

s suma(a, b)

Fin

Función leer Función suma

a, b

Sa+b
x Return (x)
Verdad
x <= 0
Fin suma
Falso
Return (x)

Fin leer

Prueba de escritorio
Programa principal
a 3
s=7
b 4
s 7

Función leer
x 3 4

Función suma
a 3
b 4
s 7

2) Genere los primeros números pares.


3) Genere los múltiplos del siete.
4) Muestre y halle la suma de los múltiplos del ocho.

40
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

5) Muestre y halle la suma y promedio de los múltiplos del cinco.

5.4. Ejercicios propuestos


1) Halle el cuadrado de un número entero sumando números impares.
2) Hallar la altura de un tanque esférico. Suponga que el tanque esférico
tiene radio R, conteniendo agua con un altura H; entonces su volumen es:
𝐻
𝑉 = 𝜋(𝑅 − )𝐻 3
3
Asumiendo Hi como el valor calculado para H en la i-ésima iteración y W i
como el i-ésimo valor calculado para W, se tiene:
𝑉
𝑊𝑖 =
𝑅−𝐻
𝜋( 3 𝑖 )
𝐻𝑖 = √𝑊𝑖
El proceso iterativo concluye cuando se cumple:
|𝐻𝑖−1 − 𝐻𝑖 | ≤ 𝜀
3) Hallar el coeficiente binomial de n tomados de m formas, aplicando la
𝑛!
fórmula: 𝐶(𝑛, 𝑚) = 𝑚!(𝑛−𝑚)!
4) Hallar la potencia de un número entero dado por xy.
5) Introduzca un valor entero positivo correspondiente a una posición de la
serie Fibonacci y despliegue dicho valor. Sugerencia: Aplique la fórmula:
𝑐 1+𝑐 𝑛 1−𝑐 𝑛
𝐹𝑛 = 5 [( ) −( ) ], dado: c=√5
2 2
6) Calcular la función exponencial de un número real x en base a la serie de
Taylor considerando un margen de error del 0.0005. Nota: Aplique la
𝑥2 𝑥3
fórmula: 𝐸𝑥𝑝(𝑥) = 1 + 𝑥 + + +⋯
2! 3!

41
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

CAPÍTULO 6

PROCEDIMIENTOS

6.1 Definición
Son una forma de dividir un programa para que sea más simple su solución,
utilizan la metodología Top-Down y se caracterizan porque pueden devolver:
Ninguna, una, dos o más respuestas al programa que las invoca. Además, el
número de argumentos en el parámetro debe ser la misma cantidad y en el
mismo orden para la invocación de un procedimiento. Finalmente, los
parámetros pueden ser de recepción (R) o devolución (D).

6.2. Figuras y pseudocódigo


Se divide en dos partes que son:
i) Llamada a un procedimiento

NomProc(Parámetros)

NomProc(Parámetros)

ii) Retorno de un procedimiento

NomProc

Parámetros

Proceso(s)

Fin NomProc

Inicio Procedimiento NomProc (Parámetros)


Declaración de variables locales
Proceso(s)
Fin NomProc

6.3. Ejemplos
1) Hallar el producto de dos números enteros en base a sumas sucesivas.
Análisis
Programa principal
Dos números a, b (E)

42
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

Función leer
Un número x (E/D)

Procedimiento suma
Dos números a, b (R)
Suma s (P/S)

Algoritmo
Inicio Programa_principal_suma_en_base_procedimiento
Entero a, b
a  leer()
b  leer()
suma(a, b)
Fin

Inicio Entero Función leer()


Entero x
Repetir
Leer: x
Hasta (x < 0)
Return(x)
Fin leer

Inicio Procedimiento suma(Entero a, Entero b)


Entero s
sa+b
Escribir: s
Fin suma

Diagrama de flujo
Inicio

a leer()
Se pasa a la función leer
b leer()

suma(a, b)

Fin

43
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

Función leer Procedimiento suma

a, b

sa+b
x
Verdad s
x <= 0
Falso
Fin suma
Return (x)

Fin leer

Prueba de escritorio
Programa principal
a 3
b 4

Función leer
x 3 4
s=7
Procedimiento suma
a 3
b 4
s 7

2) Genere los primeros números pares.


3) Genere los múltiplos del siete.
4) Muestre y halle la suma de los múltiplos del ocho.
5) Muestre y halle la suma y promedio de los múltiplos del cinco.

6.4. Ejercicios propuestos


1) Halle el cuadrado de un número entero sumando números impares.
2) Hallar la altura de un tanque esférico. Suponga que el tanque esférico
tiene radio R, conteniendo agua con un altura H; entonces su volumen
es:
𝐻
𝑉 = 𝜋(𝑅 − )𝐻 3
3

44
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

Asumiendo Hi como el valor calculado para H en la i-ésima iteración y W i


como el i-ésimo valor calculado para W, se tiene:
𝑉
𝑊𝑖 =
𝑅 − 𝐻𝑖
𝜋( 3 )
𝐻𝑖 = √𝑊𝑖
El proceso iterativo concluye cuando se cumple:
|𝐻𝑖−1 − 𝐻𝑖 | ≤ 𝜀
3) Hallar el coeficiente binomial de n tomados de m formas, aplicando la
𝑛!
fórmula: 𝐶(𝑛, 𝑚) = 𝑚!(𝑛−𝑚)!
4) Hallar la potencia de un número entero dado por xy.
5) Introduzca un valor entero positivo correspondiente a una posición de la
serie Fibonacci y despliegue dicho valor. Sugerencia: Aplique la fórmula:
𝑐 1+𝑐 𝑛 1−𝑐 𝑛
𝐹𝑛 = 5 [( ) −( ) ], dado: c=√5
2 2
6) Calcular la función exponencial de un número real x en base a la serie de
Taylor considerando un margen de error del 0.0005. Nota: Aplique la
𝑥2 𝑥3
fórmula: 𝐸𝑥𝑝(𝑥) = 1 + 𝑥 + + +⋯
2! 3!
7) Crear un programa que resuelva el problema de Newton-Raphson para el
𝑓(𝑋 )
cálculo de una raíz y que se basa en la relación: 𝑋𝑛+1 = 𝑋𝑛 + 𝑓′(𝑋𝑛 ); que
𝑛
es evaluada por el concepto de los límites. El algoritmo concluye cuando:
|𝑋𝑛+1 − 𝑋𝑛 | ≤ 𝜀
8) Sea la ecuación de la línea: 𝐴𝑥 + 𝐵𝑦 = 𝐶, y su pendiente expresada
como: 𝑚 = (𝑌2 − 𝑌1 )(𝑋2 − 𝑋1 ); luego: 𝑌 − 𝑌1 = 𝑚(𝑋 − 𝑋1 ); se tiene que:
(𝑌2 − 𝑌1 )𝑋 + (𝑋1 − 𝑋2 )𝑌 = 𝑌1 (𝑋1 − 𝑋2 ) + (𝑌2 − 𝑌1 )𝑋1; de donde:
𝐴 = 𝑌2 − 𝑌1
𝐵 = 𝑋1 − 𝑋2
𝐶 = 𝐴𝑋1 + 𝐵𝑌1
Cree el procedimiento línea, determina: A, B, C; para dos puntos (X, Y);
definiendo la ecuación respectiva. Teniendo las dos ecuaciones de la
línea: 𝐴1 𝑋 + 𝐵1 𝑌 = 𝐶1 y 𝐴2 𝑋 + 𝐵2 𝑌 = 𝐶2 ; resuelva la intersección siempre
y cuando sean pendientes iguales.
9) Elabore un programa para la optimización por sección dorada que es un
método eficiente para la búsqueda de la mejor solución de una función:
𝑦 = 𝑓(𝑥), donde se utiliza la constante áurea, cuyo valor viene dado por:
(√5−1)
𝜏= = 0.618
2

45
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

CAPÍTULO 6

ARREGLOS

7.1. Vectores
7.1.1. Definición
Es conjunto arreglado (ordenado o desordenado) de datos
(elementos). Un vector posee las mismas características de una
variable pero que a diferencia de ésta el espacio de memoria se
encuentra dividido en espacios (de 0 hasta n-1); además, la posición
“n” se encuentra reservada para el dato “null” que indica el final del
arreglo para el momento de extracción de datos; con figuras
dinámicas se lo denomina como fin de enlace o tierra. Gráficamente
se representa como se muestra a continuación:

V
……. null

0 1 2 n-1 n

7.1.2. Figuras y pseudocódigo


Las figuras utilizadas hasta el último capítulo son suficientes y
necesarias para la resolución de vectores (Arreglos
unidimensionales).

a) Creación de un vector

Dim V[n] TipoDato Dim V[n]

b) Cargar datos en un vector


Hay 2 (dos) opciones:

Para (VarIniFin)
VarIniFin Leer: V[Var]
Fin Para
V[var]

Falso
Var
Verdad

46
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

Para (VarIniFin)
VarIniFin Leer: x
V[var]x
x Fin Para

V[var]x

Falso
Var
Verdad

c) Extraer datos de un vector por pantalla

Para (VarIniFin)
VarIniFin Escribir: V[Var]
Fin Para
V[var]

Falso
Var
Verdad

7.1.3. Ejemplos
1) Crear un programa que permita cargar un vector con los primeros
“n” números impares.
Análisis
Programa principal
Dimensión n (E)
Un vector de números enteros V (P/S)

Función leer
Un número x (E/D)

Procedimiento CargarV
Dimensión n (R)
Contador automático i (P)
Vector V (R/P/D)

Procedimiento MostrarV
Dimensión n (R)
47
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

Contador automático i (P)


Vector V (R/P/D)

Algoritmo
Inicio ProgramaVectorImpares
Entero n
n  leer()
Entero Dim V[n]
CargarV(V, n)
MostrarV(V, n)
Fin

Inicio Entero Función leer()


Entero x
Repetir
Leer: x
Hasta (x < 1)
Return(x)
Fin leer

Inicio Procedimiento CargarV(Entero V[], Entero n)


Entero i
Para(i0(n-1))
V[i] i*2+1
Fin Para
Fin CargarV

Inicio Procedimiento MostrarV(Entero V[], Entero n)


Entero i
Para(i0(n-1))
Escribir: V[i]
Fin Para
Fin MostrarV

48
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

Diagrama de flujo
Inicio

n leer()

CargarV(V, n)

MostrarV(V, n)

Fin

Función leer Procedimiento CargarV

V , n

i  0  (n-1)
x
Verdad
V[i]  i*2+1
x <1
Falso Falso
i
Return (x)
Verdad

Fin leer Fin CargarV

Procedimiento MostrarV

V , n

i  0  (n-1)

V [i]

Falso
i
Verdad
Fin MostrarV

49
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

Prueba de escritorio
Programa principal
n 5

V
null
V
1 3 5 7 9 null

Función leer
X 5

Procedimiento CargarV
V
1 3 5 7 9 Null

i 04||0 1 2 3 4

Procedimiento MostrarV
1 3 5 7 9
V
1 3 5 7 9 Null

i 04||0 1 2 3 4

2) Crear un programa que permita cargar un vector con los primeros


“n” números pares.
3) Crear un programa que permita cargar un vector con los primeros
“n” múltiplos del 7.
4) Crear un programa que permita cargar un vector con los primeros
“n” números de Fibonacci.
5) Crear un programa que permita cargar un vector con los primeros
“n” números negativos.

7.1.4. Ejercicios propuestos


1) Cargue un vector con los múltiplos del seis, muestre el contenido;
luego halle la suma y promedio de dichos valores.
2) Cargar un vector con “n” números leídos por teclado, luego contar
y mostrar cuantos son pares.
3) Cargar un vector con “n” números leídos por teclado, luego contar
y mostrar cuantos están en el rango de 20 a 50.

50
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

4) Cargar un vector con “n” números leídos por teclado, luego hallar
la suma de los números si es que son múltiplos de tres y
desplegar el resultado por pantalla.
5) Muestre y halle la suma, producto y promedio de un vector al cual
se le cargue los múltiplos del tres.
6) Muestre el contenido de un vector en el cual se cargue la
generación de la siguiente serie de números: 0, 1, 3, 6, 10,15, 21,
28, 36, 45, 55,…
7) Cargue un vector con la tabla de multiplicar de cualquier número
(donde el límite es definido por el usuario), luego muestre el
contenido del vector.
8) Cargue los factores de un número entero en un vector y
despliegue el contenido del vector por pantalla.
9) Halle la suma de los factores de un número que son cargados en
un vector.
10) Hallar la suma de los dígitos de un número que son cargados en
un vector.
11) Cargar un vector con la serie: A, B, A, B, A, B,…; luego desplegar
dicho vector por pantalla.
12) Cargar un vector con la serie: A, B, C, A, B, C, A, B, C,…; luego
desplegar dicho vector por pantalla.
13) Cargar un vector con la serie: 1, 0, 0, 1, 0, 0, 1, 0, 0, 1,…; luego
desplegar dicho vector por pantalla.
14) Cargar un vector con la serie: 1, 0, 0, 2, 0, 0, 3, 0, 0, 4,…; luego
desplegar dicho vector por pantalla.
15) Cargar un vector con la serie: 1, 0, 2, 0, 0, 3, 0, 0, 0, 4,…; luego
desplegar dicho vector por pantalla.
16) Cargar un vector con la serie: 1, 2, 3, 4, 5, 6, 5, 4, 3, 2, 1,…;
luego desplegar dicho vector por pantalla.
17) Utilizando vectores determinar si dos números enteros positivos
son amigos.
18) Desplegar los primeros 25 números primos cargados previamente
en un vector.
19) Dado un número “n” entero positivo, cargar en un vector todos los
números no primos anteriores a “n”; luego desplegar el contenido
del vector.
20) Dado un número “n” entero positivo, verificar si éste es primo; si
es así hallar el factorial de n; caso contrario realizar la sumatoria
de un vector cargado de “0” hasta “n”.
21) Introducir un número entero positivo “n”, cargar en un vector
todos los múltiplos positivos de 3 y 9 anteriores a n.
51
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

22) Introducir tres números enteros positivos n, li (límite inferior), ls


(límite superior), donde li < ls; cargar la tabla de multiplicar de n
en un vector, desde li hasta ls, y desplegar dicho vector por
pantalla.
23) Utilizando vectores convertir un número entero positivo n menor a
4000 en su equivalente de número romano.
24) Utilizando vectores convertir un número romano r en su número
equivalente decimal.
25) Dado un número n entero positivo mayor a 1, cargar en un vector
todos los números primos anteriores a n; luego desplegar dicho
vector por pantalla.
26) Cargar n números en un vector y mostrar cuántos números
negativos se han leído.
27) Dado un lote de n números cargados en un vector, determinar
cuántas veces un número positivo está seguido de un cero.
28) Dado un lote de n números cargados en un vector determinar
cuántos son primos, pares e impares.
29) Dado un conjunto de n números cargados en un vector
determinar el promedio de los pares y los impares.
30) Dado un conjunto de n números cargados en un vector, mostrar
la suma de todos aquellos que no son primos y su promedio.
31) Encontrar el menor de n números cargados en un vector.
32) Encontrar el mayor de n números cargados en un vector.
33) Encontrar el menor y mayor de n números cargados en un vector.
34) Dado un conjunto de n números cargados en un vector, se desea
saber:
a) El promedio de los números pares.
b) El promedio de los números impares.
c) La suma de los n números y el promedio.
35) Dado un lote de n grupos de datos, crear un vector, donde cada
grupo contiene tres datos que son los lados de un triángulo, se
pide calcular el área, luego desplegar el área y los lados.
36) De un lote de n números cargados en un vector se pide
determinar:
a) ¿Cuántas veces un número par está seguido por dos
impares?
b) ¿Cuántas veces un número positivo está seguido por un
negativo y cero?
37) Dado un lote de z números cargados en un vector se pide:
a) Determinar la cantidad de números primos y su suma.
b) Determinar la cantidad de números perfectos y su suma.
52
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

c) Determinar la cantidad de números no primos y su suma.


d) El promedio total de los números.
38) Dado un conjunto de n números cargados en un vector se pide
mostrar el promedio de cada tres números:
Si: n = 5 => 4
3
2 => (4 + 3 + 2) / 3 = 3
7 => (3 + 2 + 7) / 3 = 4
9 => (2 + 7 + 9) / 3 = 6
39) Se tienen n números cargados en un vector que representan el
sueldo de n personas, se pide mostrar la suma total de sueldos,
el sueldo promedio, el sueldo mínimo y el sueldo máximo.
40) Dado un número n entero positivo cargar en un vector y mostrar
la cantidad de dígitos pares que éste contiene.
41) Dado un número n entero positivo cargar en un vector y mostrar
la cantidad de dígitos impares que éste contiene.
42) Dado un número n entero positivo cargar en un vector y mostrar
la cantidad de dígitos cero que éste contiene.
43) Dado un número n entero positivo cargar en un vector y mostrar
la cantidad de dígitos diferentes de cero que éste contiene.
44) Dado un número entero positivo n, cargar en un vector sus
dígitos, luego se desea saber:
a) ¿Cuántos de sus dígitos son pares?
b) ¿Cuántos de sus dígitos son múltiplos de tres?
c) La suma de todos sus dígitos.
45) Dado un número entero positivo n, cargar sus dígitos en un vector
y contar cuántos son múltiplos 2, 3 y 5.
46) Dado un número entero positivo n, utilizando un vector, invertirlo
y almacenarlo en m; luego mostrar ambos números.
47) Dado un número entero positivo n, cargar sus dígitos en un vector
y defina lo siguiente:
Si: n = 18953647, número válido, tiene los dígitos diferentes.
n = 23452, número no válido, tiene dígitos repetidos.
48) Dado un número entero positivo n con los dígitos diferentes entre
sí, cargarlos en un vector, determinar el mayor dígito que éste
contiene y la posición que ocupa contando de derecha a
izquierda.
Si: n = 3264510 => El dígito mayor es 6 y se encuentra en la
posición 5.
49) Dado un número entero positivo n con los dígitos diferentes entre
sí, cargar los dígitos en un vector y determinar el menor dígito
53
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

que éste contiene y la posición que ocupa contando de derecha a


izquierda.
Si: n = 3172645 => El dígito menor es 1 y se encuentra en la
posición 2.
50) Dado un número entero positivo n con los dígitos diferentes entre
sí, cargar cada dígito en una posición de un vector e intercambiar
el dígito mayor con el dígito menor, luego mostrar el nuevo
número.
51) Dados dos números enteros positivos a y b, cargar los dígitos de
cada número en un vector; además, dado a mayor que b.
determinar cuántas veces el número b se encuentra en a.
Si: a = 32432 y b = 32 => 32 se encuentra en 32432, 2 veces.
a = 77777 y b = 77 => 77 se encuentra en 77777, 4 veces.
52) Dado un número entero positivo n, cargar sus dígitos en un vector
y ordenar los mismos en forma ascendente.
53) Dado un número entero positivo n, cargar sus dígitos en un vector
y ordenar los mismos en forma descendente.
54) Dado un número real positivo r, cargar los dígitos en un vector,
luego se pide invertir los dígitos del número, manteniendo la
cantidad de dígitos en la parte entera como en la parte decimal.
Si: r = 123.45 => s = 543.21
55) Dado un número entero positivo n con los dígitos diferentes entre
sí, cargar los dígitos en un vector, luego mostrar el dígito mayor y
la posición que éste ocupa; se debe tomar en cuenta las
posiciones de izquierda a derecha.
56) Dado un número entero positivo n, cargar sus dígitos en un vector
y hallar la suma de los factoriales de los dígitos.
57) Leer un número n entero positivo de más de cuatro dígitos, cargar
sus dígitos en un vector e intercambiar los dígitos de las
posiciones pares con los dígitos de las posiciones impares (de
derecha a izquierda).
58) Leer un número real positivo r, cargar sus dígitos en un vector y
luego intercambiar el primer dígito de la parte entera con el primer
dígito de la parte decimal.
Si: r = 987.321 => s = 187.329
59) Cargar en un vector todos los números de tres dígitos que
cumplan las siguientes condiciones:
a) Todos sus dígitos deben ser distintos entre sí.
b) El primer dígito de la derecha debe ser par.
c) El dígito central debe ser primo.
Desplegar dicho vector.
54
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

60) Dado un número n entero positivo de más de seis dígitos, cargar


los dígitos en un vector y construir otros dos números a y b,
donde a está formado por los dígitos pares de n y b está formado
por los dígitos impares de n.
61) Dado un número n entero positivo, cargar sus dígitos en un
vector, eliminar todos los dígitos pares de éste contenga y
mostrar el nuevo número.
62) Dado un número n entero positivo, cargar sus dígitos en un
vector, eliminar todos los dígitos cero de éste contenga y mostrar
el nuevo número.
63) Dado un número n entero positivo, cargar sus dígitos en un
vector, eliminar todos aquellos dígitos que se encuentran más de
una vez en n (debe permanecer únicamente uno de ellos), luego
mostrar el nuevo número.
64) Dado un número entero positivo n, cargar sus dígitos en un
vector, se pide sumar 1 a los dígitos pares y restar 1 a los dígitos
impares, luego mostrar el nuevo número.
65) Dado un número real positivo r, cargar sus dígitos en un vector,
cambiar la parte entera con la parte decimal y con el orden de los
dígitos invertidos, luego mostrar el nuevo número.
66) Dado un número entero positivo n de más de tres dígitos, cargar
los dígitos en un vector, hacer rotar los dígitos a la derecha k
veces (k entero positivo mayor a 0) y mostrar el nuevo número;
además, mostrar cada rotación.
67) Dado un número entero positivo n de más de tres dígitos, cargar
los dígitos en un vector, hacer rotar los dígitos a la izquierda k
veces (k entero positivo mayor a 0) y mostrar el nuevo número;
además, mostrar cada rotación.
68) En un vector cargar los dígitos de un número n entero positivo de
más de seis cifras y otro k también entero positivo de una sola
cifra, insertar éste elemento en la posición p (p es entero positivo
y menor o igual al número de dígitos que tiene n. considerar las
posiciones del número n de derecha a izquierda del número n.
Si: n = 12608567, k = 9 y p = 4; entonces: n = 126089567
69) En un vector cargar los dígitos de un número n entero positivo y
otro k también entero positivo, se pide insertar el número k en la
posición p (p es entero positivo y menor o igual al número de
dígitos que tiene n. Considerar las posiciones del número n de
derecha a izquierda) del número n.
Si: n = 123, k = 5467 y p = 2; entonces: n = 1254673
n = 6, k = 54321 y p = 1; entonces: n = 654321
55
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

70) Introducir n números enteros positivos en un vector, desplegar


aquellos números tales que la diferencia entre el número y el
invertido den como resultado 54.
71) Dado un conjunto de n números enteros positivos mayores a cien
cargados en un vector, generar un número a con los dígitos
centena de los números introducidos.
Si: n = 5 => 123, 7645, 6534, 126273, 123343
Entonces: a = 16523
72) Introducir n números en un vector, finalizar cuando se introduzca
-999, mostrar todos aquellos números con el primer y último
dígito igual.
73) Introducir por teclado un conjunto de n números en un vector, los
cuales representan los datos de una encuesta realizada a n
estudiantes de la carrera de ingeniería respecto a su edad y sexo.
Cada número está formado por tres dígitos que representan la
edad y el sexo del estudiante encuestado, los datos se deben leer
de la siguiente manera: Los dos primeros dígitos representan la
edad del estudiante y el tercer dígito el sexo (1 – Varón, 0 –
Mujer), los dígitos se cuentan de izquierda a derecha. Se pide
mostrar en pantalla:
a) El número total de mujeres.
b) El número total de varones.
c) El promedio de edad de los varones.
d) El promedio de edad de las mujeres.
e) El promedio total de todos los estudiantes encuestados.
74) Dado un número n entero positivo, cargar sus dígitos en un vector
y mostrar todos los dígitos que son puntos silla.
75) Introducir un número r entero positivo, cargar sus dígitos en un
vector, llevar a la parte derecha los dígitos impares y a la
izquierda los pares, ordenándolos ascendentemente; luego
mostrar el nuevo número.
Si: r = 54532767 => r = 24635577
76) Dado un número n entero positivo en base x, cargar sus dígitos
en un vector, luego hallar su complemento auténtico (el
complemento auténtico de un número N con K dígitos en una
base B se define como: CA(N(B)) - BK – N).
Si: n = 12345 y x = 7 => CA(12345(7)) = 54322(7)
77) Dado un número n entero positivo en base x, cargar sus dígitos
en un vector, luego hallar su complemento restringido (el
complemento restringido de un número N con K dígitos en una
base B se define como: CR(N(B)) - (BK – 1).- N
56
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

Si: n = 12345 y x = 7 => CR(12345(7)) = 54321(7)


78) Dados dos números enteros positivos, a y b, en base x (x es un
número entero positivo mayor a 1 y menor a 10), cargar sus
dígitos en dos vectores y hallar la suma de n respecto a m en
base x en un tercer vector.
Si: m = 1207, n = 7640 y x = 8 => s = 1207(8) + 7640(8) = 11047(8)
79) Dados dos números enteros positivos, a y b, en base x (x es un
número entero positivo mayor a 1 y menor a 10), cargar sus
dígitos en dos vectores y hallar la diferencia de n respecto a m en
base x en un tercer vector.
Si: m = 4233, n = 1234 y x = 6 => r = 4233(6) - 1234(6) = 2555(6)
80) Dados dos números enteros positivos, a y b, en base x (x es un
número entero positivo mayor a 1 y menor a 10), cargar sus
dígitos en dos vectores y hallar el producto de n respecto m en
base x en un tercer vector.
Si: m = 123, n = 12 y x = 5 => p = 123(5) * 12(5) = 2031(5)
81) Dados dos números enteros positivos, a y b, en base x (x es un
número entero positivo mayor a 1 y menor a 10), cargar sus
dígitos en dos vectores hallar la división entera de n respecto a m
en base x en un tercer vector.
Si: m = 2031, n = 12 y x = 5 => d = 2031(5) / 12(5) = 123(5)
82) Cargar en un vector la siguiente sucesión para n términos: 0, 1, 2,
3, 4, 5,…
83) Cargar en un vector la siguiente sucesión para n términos: 0, 2, 3,
5, 8, 12, 19, 31,…
84) Cargar en un vector la siguiente sucesión para n términos: 0, 0, 0,
1, 1, 1, 0, 0, 0, 1, 1,1,…
85) Cargar en un vector la siguiente sucesión para n términos: 0, 2, 3,
8, 15, 30, 56, 104,…
86) Cargar en un vector la siguiente sucesión para n términos: 1, 3, 2,
4, 5, 7, 6, 9, 11, 10, 12,…
87) Cargar en un vector la siguiente sucesión para n términos: 1, 1, 1,
3, 5, 9, 17, 31,…
88) Cargar en un vector la siguiente sucesión para n términos: 1, 3, 7,
13, 21, 31, 43,…
89) Cargar en un vector la siguiente sucesión para n términos: 1, 3, 7,
15, 31, 63, 127,…
90) Cargar en un vector la siguiente sucesión para n términos: 1, 4,
13, 40, 121, 364,…
91) Cargar en un vector la siguiente sucesión para n términos: 2, 12,
30, 56, 90,…
57
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

92) Cargar en un vector la siguiente sucesión para n términos: 7, 6, 5,


7, 6, 5, 7, 6, 5,…
93) Cargar en un vector la siguiente sucesión para n términos: 5, 3, 1,
5, 3, 1, 5, 3, 1,…
94) Cargar en un vector la siguiente sucesión para n términos: 1, -3,
5, -7, 9, -11, 13,…
95) Cargar en un vector la siguiente sucesión para n términos: 1, 2, 3,
2, 3, 4, 3, 4, 5, 4, 5, 6,…
96) Cargar en un vector la siguiente sucesión para n términos: -1, 1, -
1, 1, -1, 1, -1, 1,…
97) Cargar en un vector la siguiente sucesión para n términos: 0, 1, 3,
7, 14, 26,…
98) Cargar en un vector la siguiente sucesión para n términos: -1, 0,
3, 8, 15, 24,…
99) Cargar en un vector la siguiente sucesión para n términos: 0, 1, 1,
2, 4, 7, 13, 24,…
100) Cargar en un vector la siguiente sucesión para n términos: 0, 1,
0, 0, 1 ,1, 0, 0, 0, 1, 1, 1,…
101) Cargar en un vector la siguiente sucesión para n términos: 1, 0,
1, 1, 0, 0, 1, 1, 1, 0, 0, 0,…
102) Cargar en un vector la siguiente sucesión para n términos: 0, 1,
2, 3, 4, 5, 6, 8, 10, 7, 9, 11,…
103) Cargar en un vector la siguiente sucesión para n términos: 1, 2,
2, 3, 3, 3, 4, 4, 4, 4,…
104) Cargar en un vector la siguiente sucesión para n términos: 0, 1,
2, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 5, 6,…
105) Cargar en un vector la siguiente sucesión para n términos: -1, 0,
-2, 1, -3, 2, -4, 3,…
106) Cargar en un vector la siguiente sucesión para n términos: 1, 0,
3, 2, 5, 4, 7, 6,…
107) Cargar en un vector la siguiente sucesión para n términos: -7, -
7, 6, -3, 5, 26, 81, 255,…
108) Cargar en un vector la siguiente sucesión para n términos: 4, 6,
8, 11, 15, 21, 30, 44, 66,…
109) Cargar en un vector la siguiente sucesión para n términos: 1, 2,
4, 3, 5, 7, 6, 8, 10, 12, 9, 11, 13, 15, 17,…
110) Cargar en un vector la siguiente sucesión para n términos: 1, 1,
3, 0, 5, -1, 7, -2, 9, -3,…
111) Cargar en un vector la siguiente sucesión para n términos: 1, 1,
3, 0, 5, -1, 7, -2, 9, -3,…

58
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

112) Cargar en un vector la siguiente sucesión para n términos: 2, 1,


0, 6, 5, 4, 12, 11, 10, 20, 19, 18,…
113) Cargar en un vector la siguiente sucesión para n términos: 0*1,
1*2, 3*5, 8*13,…
114) Cargar en un vector la siguiente sucesión para n términos: -1, 0,
1, -1, 0, 1, -1, 0, 1…
115) Cargar en un vector la siguiente sucesión para n términos: 1, 2,
3, 2, 1, 2, 3, 2, 1,…
116) Cargar en un vector la siguiente sucesión para n términos: -1, 2,
3!, 4, -5, 6!, -7, 8, 9!, 10, -11,…
117) Hallar la suma de los n primeros términos de la siguiente serie
cargada en un vector: 1+2+3+4+5+6+7+…
118) Hallar la suma de los n primeros términos de la siguiente serie
cargada en un vector: 1+3+6+10+…
119) Hallar la suma de los n primeros términos de la siguiente serie
cargada en un vector: 1!+2!+3!+4!+5!+6!+…
120) Hallar la suma de los n primeros términos de la siguiente serie
cargada en un vector: 0!+1!+1!+2!+3!+5!+8!+13!+…
121) Hallar la suma de los n primeros términos de la siguiente serie
cargada en un vector: (x+1)!+ (x+2)!+ (x+3)!+ (x+4)!+… (Con x
entero positivo).
122) Hallar la suma de los n primeros términos de la siguiente serie
1 1 1 1 1 1 1 1
cargada en un vector: 1 + 2 + 3 + 4 + 5 + ⋯ 1 + 2 + 3 + 4 + 5 + ⋯
123) Hallar la suma de los n primeros términos de la siguiente serie
1 1 1 1 1
cargada en un vector: 2 + 4 + 6 + 8 + 10 + ⋯
124) Hallar la suma de los n primeros términos de la siguiente serie
1 1 1 1 1
cargada en un vector: 20 + 21 + 22 + 23 + 24 + ⋯
125) Hallar la suma de los n primeros términos de la siguiente serie
1 3 5 7 9
cargada en un vector: − 1! + 2! − 3! + 4! − 5! + ⋯
126) Hallar la suma de los n primeros términos de la siguiente serie
1∗2 3∗4 5∗6 7∗8 9∗10
cargada en un vector: − + − + −⋯
3! 7 11! 15 19!
127) Dado un número n entero positivo, hallar el valor de la siguiente
𝑦
sumatoria cargada en un vector: ∑𝑛𝑥=1 ∑𝑛𝑦=1 𝑥!
128) Dado un número n entero positivo, hallar el valor de la siguiente
(2𝑖)
sumatoria cargada en un vector: ∑𝑛𝑖=1(−1)𝑖+1 (2𝑖+1)!
129) Dados los números m y n enteros positivos, hallar el valor de la
𝑖∗𝑗∗𝑘
siguiente sumatoria cargada en un vector: ∑𝑚 𝑛 𝑚+𝑛
𝑖=1 ∑𝑗=1 ∑𝑘=𝑖+𝑗 𝑚+𝑛

59
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

130) Dado un número n entero positivo, hallar el valor de la siguiente


productoria cargada en un vector: ∏𝑛𝑖=1 𝑖 2
131) Dados tres números enteros positivos m, n y p, encontrar el
valor de la siguiente expresión cargada en un vector:
𝑝
∑𝑚 𝑛
𝑖=1 ∑𝑗=1 ∏𝑘=1(𝑖 + 𝑗) ∗ (𝑗 + 𝑘)
132) Dado un número n entero positivo, hallar el valor de la siguiente
1! 2! 3!
sumatoria cargada en un vector: ∑1𝑘=1 𝑥!𝑘
− ∑2 𝑘
+ ∑3 𝑘

𝑘=1 𝑥! 𝑘=1 𝑥!
4!
∑4𝑘=1 𝑥!𝑘

133) Calcular el valor de ex mediante aproximaciones sucesivas con
un error menor o igual a 10-5 cargando cada término en una
1 1 1
posición de un vector: 1 + 𝑥 + 2! 𝑥 2 + 3! 𝑥 3 + 4! 𝑥 4 + ⋯
134) Calcular el valor de sen(x) mediante aproximaciones sucesivas
con un error menor o igual a 10-5 cargando cada término en una
1 1 1
posición de un vector: sin(𝑥) = 1 − 3! 𝑥 3 + 5! 𝑥 5 − 7! 𝑥 7 + ⋯
135) Calcular el valor de cos(x) mediante aproximaciones sucesivas
con un error menor o igual a 10-5 cargando cada término en una
1 1 1
posición de un vector: cos(𝑥) = 1 − 2! 𝑥 2 + 4! 𝑥 4 − 6! 𝑥 6 + ⋯
136) Calcular el valor de tg(x) mediante aproximaciones sucesivas,
cargando cada término en una posición de un vector, utilizando
para esto los resultados obtenidos anteriormente.

7.2. Matrices
7.2.1. Definición
Es conjunto arreglado (ordenado o desordenado) de datos
(elementos). Una matriz posee las mismas características de una
variable pero que a diferencia de ésta el espacio de memoria se
encuentra dividido en espacios (de 0 hasta n-1 filas y de 0 hasta m-1
columnas); además, la posiciones “n, m” se encuentran reservada
para el dato “null” que indica el final del arreglo para el momento de
extracción de datos; con figuras dinámicas se lo denomina como fin
de enlace o tierra. Gráficamente se representa como se muestra a
continuación:

60
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

M
0 1 ….. n-1 N
0 M1,1 M1,2 ….. M1n-1 M1n
1 M2,1 M2,2 ….. Mn-2 M2n
. . . . .
. . . ….. . .
. . . .
m-1 Mm-1,1 Mm-1,2 ….. Mn-1,m-1 Mm-1,n
M Mm,1 Mm,2 ….. Mn-1,m Mm,n

7.2.2. Figuras y pseudocódigo


Las figuras utilizadas hasta el último capítulo son suficientes y
necesarias para la resolución de matrices (Arreglos bidimensionales).

a) Creación de una matriz

Dim M[n,m] TipoDato Dim M[n,m]

b) Cargar datos en una matriz


Hay 2 (dos) opciones:

Para (f0(n-1))
f 0 (n-1) Para (c 0  (m-1))
Leer: M[f,c]
c 0  (m-1) Fin Para
Fin Para
M[f,c]

Falso
c
Verdad
Falso
f
Verdad

61
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

Para (f  0  (n-1))
f  0  (n-1) Para(c  0  (m-1))
Leer: x
M[f,c]  x
c  0  (m-1) Fin Para
Fin Para
x

V[var]x

Falso
c
Verdad
Falso
f
Verdad

c) Extraer datos de una matriz por pantalla

Para (f0(n-1))
f 0 (n-1) Para (c 0  (m-1))
Escribir: M[f,c]
c 0  (m-1) Fin Para
Fin Para
M[f,c]

Falso
c
Verdad
Falso
f
Verdad

7.2.3. Ejemplos
1) Crear un programa que permita cargar una matriz con los
primeros “n” números impares.
Análisis
Programa principal
Dimensiones n, m (E)
Una matriz de números enteros M (P/S)

62
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

Función leer
Un número x (E/D)

Procedimiento CargarM
Dimensiones n, m (R)
Contadores automáticos f, c (P)
Matriz M (R/P/D)

Procedimiento MostrarM
Dimensiones n,m (R)
Contadores automáticos f, c (P)
Matriz M (R/P/D)

Algoritmo
Inicio ProgramaMatrizImpares
Entero n, m
n  leer()
m  leer()
Entero Dim M[n,m]
CargarM(M, n, m)
MostrarM(M, n, m)
Fin

Inicio Entero Función leer()


Entero x
Repetir
Leer: x
Hasta (x < 1)
Return(x)
Fin leer

Inicio Procedimiento CargarM(Entero M[][], Entero n, Entero m)


Entero f, c
Para(f  0  (n-1))
Para(c  0  (m-1))
M[f,c] i*2+1
Fin Para
Fin Para
Fin CargarM

63
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

Inicio Procedimiento MostrarM(Entero M[][], Entero n, Entero m)


Entero f, c
Para(f  0  (n-1))
Para(c  0  (m-1))
Escribir: M[f,c]
Fin Para
Fin Para
Fin MostrarM

Diagrama de flujo
Inicio

n leer()

m leer()

CargarM(V, n, m)

MostrarV(V, n, m)

Fin

Función leer Procedimiento CargarM

V , n, m

f  0  (n-1)
x
Verdad
x <1 c  0  (m-1)

Falso
M[f,c]  i*2+1
Return (x)
Falso
c
Fin leer
Verdad
Falso
f
Verdad
Fin CargarM

64
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

Procedimiento MostrarM

V , n, m

f  0  (n-1)

c  0  (m-1)

M[f,c]

Falso
c
Verdad
Falso
f
Verdad
Fin CargarM
Prueba de escritorio
Programa principal
n 3
m 3

Función leer
X 3 3

Procedimiento CargarM
M
1 3 5
7 9 11
13 15 17

f 02||0 1 2
c 02||0 1 2

65
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

M
1 3 5 1 3 5
7 9 11 7 9 11
13 15 17
13 15 17
f 02||0 1 2
c 02||0 1 2

2) Crear un programa que permita cargar una matriz con los


primeros “n” números pares.
3) Crear un programa que permita cargar una matriz con los
primeros “n” múltiplos del 7.
4) Crear un programa que permita cargar una matriz con los
primeros “n” números de Fibonacci.
5) Crear un programa que permita cargar una matriz con los
primeros “n” números negativos.
6) Generar y mostrar la matriz ajedrez.
1 0 1 0 1
0 1 0 1 0
1 0 1 0 1
0 1 0 1 0
1 0 1 0 1

7.2.4. Ejercicios propuestos


1) Construir en una matriz la tabla de la suma y desplegarla por
pantalla.
2) Construir en una matriz la tabla de la resta y desplegarla por
pantalla.
3) Construir en una matriz la tabla de multiplicar y desplegarla por
pantalla.
4) Construir en una matriz la tabla de la división y desplegarla por
pantalla.
5) Crear una matriz de la tabla Booleana para n entradas y
desplegarla por pantalla.
Si: n = 2; entonces se tiene:
A B
0 0
0 1
1 0
1 1

66
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

6) Dado un número n entero positivo, generar el triángulo de Pascal


de grado n en una matriz y desplegarla por pantalla.
7) Introducir un número n entero positivo, luego mostrar el siguiente
triángulo numérico para n filas en una matriz y desplegarla por
pantalla:
Si: n = 4, entonces se tiene: 1, 3, 5, 7
1, 3, 5
1, 3
1
8) Introducir un número n entero positivo, luego mostrar el siguiente
triángulo numérico para 2n filas en una matriz y desplegarla por
pantalla:
Si: n = 3, entonces se tiene: 1, 3, 5
5, 3, 1
1, 3
3, 1
1
1
9) Introducir un número n entero positivo, luego mostrar el siguiente
triángulo numérico para n filas en una matriz y desplegarla por
pantalla:
Si: n = 4, entonces se tiene: 1
2, 4
3, 6, 9
4, 8, 12, 16
10) Cargue una matriz con los múltiplos del seis, muestre el
contenido; luego halle la suma y promedio de dichos valores.
11) Cargar una matriz con “n” números leídos por teclado, luego
contar y mostrar cuantos son pares.
12) Cargar una matriz con “n” números leídos por teclado, luego
contar y mostrar cuantos están en el rango de 20 a 50.
13) Cargar una matriz con “n” números leídos por teclado, luego
hallar la suma de los números si es que son múltiplos de tres y
desplegar el resultado por pantalla.
14) Muestre y halle la suma, producto y promedio de una matriz a la
cual se le cargue los múltiplos del tres.
15) Muestre el contenido de una matriz en la cual se cargue la
generación de la siguiente serie de números: 0, 1, 3, 6, 10,15, 21,
28, 36, 45, 55,…

67
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

16) Cargue una matriz con la tabla de multiplicar de cualquier número


(donde el límite es definido por el usuario), luego muestre el
contenido de la matriz.
17) Cargar una matriz con la serie: A, B, A, B, A, B,…; luego
desplegar dicha matriz por pantalla.
18) Cargar una matriz con la serie: A, B, C, A, B, C, A, B, C,…; luego
desplegar dicha matriz por pantalla.
19) Cargar una matriz con la serie: 1, 0, 0, 1, 0, 0, 1, 0, 0, 1,…; luego
desplegar dicha matriz por pantalla.
20) Cargar una matriz con la serie: 1, 0, 0, 2, 0, 0, 3, 0, 0, 4,…; luego
desplegar dicha matriz por pantalla.
21) Cargar una matriz con la serie: 1, 0, 2, 0, 0, 3, 0, 0, 0, 4,…; luego
desplegar dicha matriz por pantalla.
22) Cargar una matriz con la serie: 1, 2, 3, 4, 5, 6, 5, 4, 3, 2, 1,…;
luego desplegar dicha matriz por pantalla.
23) Desplegar los primeros 25 números primos cargados previamente
en una matriz.
24) Dado un número “n” entero positivo, verificar si éste es primo; si
es así hallar el factorial de n; caso contrario realizar la sumatoria
de una matriz cargada de “0” hasta “n”.
25) Introducir tres números enteros positivos n, li (límite inferior), ls
(límite superior), donde li < ls; cargar la tabla de multiplicar de n
en una matriz, desde li hasta ls, y desplegar dicha matriz por
pantalla.
26) Cargar n números en una matriz y mostrar cuántos números
negativos se han leído.
27) Dado un lote de n números cargados en una matriz, determinar
cuántas veces un número positivo está seguido de un cero.
28) Dado un lote de n números cargados en una matriz determinar
cuántos son primos, pares e impares.
29) Dado un conjunto de n números cargados en una matriz
determinar el promedio de los pares y los impares.
30) Dado un conjunto de n números cargados en una matriz, mostrar
la suma de todos aquellos que no son primos y su promedio.
31) Encontrar el menor de n números cargados en una matriz.
32) Encontrar el mayor de n números cargados en una matriz.
33) Encontrar el menor y mayor de n números cargados en una
matriz.
34) Dado un conjunto de n números cargados en una matriz, se
desea saber:
d) El promedio de los números pares.
68
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

e) El promedio de los números impares.


f) La suma de los n números y el promedio.
35) Dado un lote de n grupos de datos, crear una matriz, donde cada
grupo contiene tres datos que son los lados de un triángulo, se
pide calcular el área, luego desplegar el área y los lados.
36) De un lote de n números cargados en una matriz se pide
determinar:
a) ¿Cuántas veces un número par está seguido por dos
impares?
b) ¿Cuántas veces un número positivo está seguido por un
negativo y cero?
37) Dado un lote de z números cargados en una matriz se pide:
a) Determinar la cantidad de números primos y su suma.
b) Determinar la cantidad de números perfectos y su suma.
c) Determinar la cantidad de números no primos y su suma.
d) El promedio total de los números.
38) Dado un conjunto de n números cargados en una matriz se pide
mostrar el promedio de cada tres números:
Si: n = 5 => 4
3
2 => (4 + 3 + 2) / 3 = 3
7 => (3 + 2 + 7) / 3 = 4
9 => (2 + 7 + 9) / 3 = 6
39) Se tienen n números cargados en una matriz que representan el
sueldo de n personas, se pide mostrar la suma total de sueldos,
el sueldo promedio, el sueldo mínimo y el sueldo máximo.
40) Cargar en una matriz todos los números de tres dígitos que
cumplan las siguientes condiciones:
a) Todos sus dígitos deben ser distintos entre sí.
b) El primer dígito de la derecha debe ser par.
c) El dígito central debe ser primo.
Desplegar dicho vector.
41) Introducir n números enteros positivos en una matriz, desplegar
aquellos números tales que la diferencia entre el número y el
invertido den como resultado 54.
42) Dado un conjunto de n números enteros positivos mayores a cien
cargados en una matriz, generar un número a con los dígitos
centena de los números introducidos.
Si: n = 5 => 123, 7645, 6534, 126273, 123343
Entonces: a = 16523

69
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

43) Introducir n números en una matriz, finalizar cuando se introduzca


-999, mostrar todos aquellos números con el primer y último
dígito igual.
44) Introducir por teclado un conjunto de n números en una matriz,
los cuales representan los datos de una encuesta realizada a n
estudiantes de la carrera de ingeniería respecto a su edad y sexo.
Cada número está formado por tres dígitos que representan la
edad y el sexo del estudiante encuestado, los datos se deben leer
de la siguiente manera: Los dos primeros dígitos representan la
edad del estudiante y el tercer dígito el sexo (1 – Varón, 0 –
Mujer), los dígitos se cuentan de izquierda a derecha. Se pide
mostrar en pantalla:
a) El número total de mujeres.
b) El número total de varones.
c) El promedio de edad de los varones.
d) El promedio de edad de las mujeres.
e) El promedio total de todos los estudiantes encuestados.
45) Cargar en una matriz la siguiente sucesión para n términos: 0, 1,
2, 3, 4, 5,…
46) Cargar en una matriz la siguiente sucesión para n términos: 0, 2,
3, 5, 8, 12, 19, 31,…
47) Cargar en un vector la siguiente sucesión para n términos: 0, 0, 0,
1, 1, 1, 0, 0, 0, 1, 1,1,…
48) Cargar en un vector la siguiente sucesión para n términos: 0, 2, 3,
8, 15, 30, 56, 104,…
49) Cargar en un vector la siguiente sucesión para n términos: 1, 3, 2,
4, 5, 7, 6, 9, 11, 10, 12,…
50) Cargar en un vector la siguiente sucesión para n términos: 1, 1, 1,
3, 5, 9, 17, 31,…
51) Cargar en un vector la siguiente sucesión para n términos: 1, 3, 7,
13, 21, 31, 43,…
52) Cargar en un vector la siguiente sucesión para n términos: 1, 3, 7,
15, 31, 63, 127,…
53) Cargar en un vector la siguiente sucesión para n términos: 1, 4,
13, 40, 121, 364,…
54) Cargar en un vector la siguiente sucesión para n términos: 2, 12,
30, 56, 90,…
55) Cargar en un vector la siguiente sucesión para n términos: 7, 6, 5,
7, 6, 5, 7, 6, 5,…
56) Cargar en un vector la siguiente sucesión para n términos: 5, 3, 1,
5, 3, 1, 5, 3, 1,…
70
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

57) Cargar en un vector la siguiente sucesión para n términos: 1, -3,


5, -7, 9, -11, 13,…
58) Cargar en un vector la siguiente sucesión para n términos: 1, 2, 3,
2, 3, 4, 3, 4, 5, 4, 5, 6,…
59) Cargar en un vector la siguiente sucesión para n términos: -1, 1, -
1, 1, -1, 1, -1, 1,…
60) Cargar en una matriz la siguiente sucesión para n términos: 0, 1,
3, 7, 14, 26,…
61) Cargar en una matriz la siguiente sucesión para n términos: -1, 0,
3, 8, 15, 24,…
62) Cargar en una matriz la siguiente sucesión para n términos: 0, 1,
1, 2, 4, 7, 13, 24,…
63) Cargar en una matriz la siguiente sucesión para n términos: 0,
1, 0, 0, 1 ,1, 0, 0, 0, 1, 1, 1,…
64) Cargar en una matriz la siguiente sucesión para n términos: 1,
0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0,…
65) Cargar en una matriz la siguiente sucesión para n términos: 0,
1, 2, 3, 4, 5, 6, 8, 10, 7, 9, 11,…
66) Cargar en una matriz la siguiente sucesión para n términos: 1,
2, 2, 3, 3, 3, 4, 4, 4, 4,…
67) Cargar en una matriz la siguiente sucesión para n términos: 0,
1, 2, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 5, 6,…
68) Cargar en una matriz la siguiente sucesión para n términos: -1,
0, -2, 1, -3, 2, -4, 3,…
69) Cargar en una matriz la siguiente sucesión para n términos: 1,
0, 3, 2, 5, 4, 7, 6,…
70) Cargar en una matriz la siguiente sucesión para n términos: -7, -
7, 6, -3, 5, 26, 81, 255,…
71) Cargar en una matriz la siguiente sucesión para n términos: 4,
6, 8, 11, 15, 21, 30, 44, 66,…
72) Cargar en una matriz la siguiente sucesión para n términos: 1,
2, 4, 3, 5, 7, 6, 8, 10, 12, 9, 11, 13, 15, 17,…
73) Cargar en una matriz la siguiente sucesión para n términos: 1,
1, 3, 0, 5, -1, 7, -2, 9, -3,…
74) Cargar en una matriz la siguiente sucesión para n términos: 1,
1, 3, 0, 5, -1, 7, -2, 9, -3,…
75) Cargar en una matriz la siguiente sucesión para n términos: 2,
1, 0, 6, 5, 4, 12, 11, 10, 20, 19, 18,…
76) Cargar en una matriz la siguiente sucesión para n términos: 0*1,
1*2, 3*5, 8*13,…

71
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

77) Cargar en una matriz la siguiente sucesión para n términos: -1,


0, 1, -1, 0, 1, -1, 0, 1…
78) Cargar en una matriz la siguiente sucesión para n términos: 1,
2, 3, 2, 1, 2, 3, 2, 1,…
79) Cargar en una matriz la siguiente sucesión para n términos: -1,
2, 3!, 4, -5, 6!, -7, 8, 9!, 10, -11,…
80) Hallar la suma de los n primeros términos de la siguiente serie
cargada en una matriz: 1+2+3+4+5+6+7+…
81) Hallar la suma de los n primeros términos de la siguiente serie
cargada en una matriz: 1+3+6+10+…
82) Hallar la suma de los n primeros términos de la siguiente serie
cargada en una matriz: 1!+2!+3!+4!+5!+6!+…
83) Hallar la suma de los n primeros términos de la siguiente serie
cargada en una matriz: 0!+1!+1!+2!+3!+5!+8!+13!+…
84) Hallar la suma de los n primeros términos de la siguiente serie
cargada en una matriz: (x+1)!+ (x+2)!+ (x+3)!+ (x+4)!+… (Con x
entero positivo).
85) Hallar la suma de los n primeros términos de la siguiente serie
1 1 1 1 1 1 1 1
cargada en un vector: 1 + 2 + 3 + 4 + 5 + ⋯ 1 + 2 + 3 + 4 + 5 + ⋯
86) Hallar la suma de los n primeros términos de la siguiente serie
1 1 1 1 1
cargada en una matriz: 2 + 4 + 6 + 8 + 10 + ⋯
87) Hallar la suma de los n primeros términos de la siguiente serie
1 1 1 1 1
cargada en una matriz: 20 + 21 + 22 + 23 + 24 + ⋯
88) Hallar la suma de los n primeros términos de la siguiente serie
1 3 5 7 9
cargada en una matriz: − 1! + 2! − 3! + 4! − 5! + ⋯
89) Hallar la suma de los n primeros términos de la siguiente serie
1∗2 3∗4 5∗6 7∗8 9∗10
cargada en una matriz: − + 11! − + −⋯
3! 7 15 19!
90) Dado un número n entero positivo, hallar el valor de la siguiente
𝑦
sumatoria cargada en una matriz: ∑𝑛𝑥=1 ∑𝑛𝑦=1 𝑥!
91) Dado un número n entero positivo, hallar el valor de la siguiente
(2𝑖)
sumatoria cargada en una matriz: ∑𝑛𝑖=1(−1)𝑖+1 (2𝑖+1)!
92) Dados los números m y n enteros positivos, hallar el valor de la
𝑖∗𝑗∗𝑘
siguiente sumatoria cargada en una matriz: ∑𝑚 𝑛 𝑚+𝑛
𝑖=1 ∑𝑗=1 ∑𝑘=𝑖+𝑗 𝑚+𝑛
93) Dado un número n entero positivo, hallar el valor de la siguiente
productoria cargada en una matriz: ∏𝑛𝑖=1 𝑖 2

72
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

94) Dados tres números enteros positivos m, n y p, encontrar el


valor de la siguiente expresión cargada en una matriz:
𝑝
∑𝑚 𝑛
𝑖=1 ∑𝑗=1 ∏𝑘=1(𝑖 + 𝑗) ∗ (𝑗 + 𝑘)
95) Dado un número n entero positivo, hallar el valor de la siguiente
1! 2! 3!
sumatoria cargada en una matriz: ∑1𝑘=1 𝑥!𝑘
− ∑2 𝑘
+ ∑3 𝑘

𝑘=1 𝑥! 𝑘=1 𝑥!
4!
∑4𝑘=1 𝑥!𝑘

96) Calcular el valor de ex mediante aproximaciones sucesivas con
un error menor o igual a 10-5 cargando cada término en una
1 1 1
posición de una matriz: 1 + 𝑥 + 2! 𝑥 2 + 3! 𝑥 3 + 4! 𝑥 4 + ⋯
97) Calcular el valor de sen(x) mediante aproximaciones sucesivas
con un error menor o igual a 10-5 cargando cada término en una
1 1 1
posición de una matriz: sin(𝑥) = 1 − 3! 𝑥 3 + 5! 𝑥 5 − 7! 𝑥 7 + ⋯
98) Calcular el valor de cos(x) mediante aproximaciones sucesivas
con un error menor o igual a 10-5 cargando cada término en una
1 1 1
posición de una matriz: cos(𝑥) = 1 − 2! 𝑥 2 + 4! 𝑥 4 − 6! 𝑥 6 + ⋯
99) Calcular el valor de tg(x) mediante aproximaciones sucesivas,
cargando cada término en una posición de una matriz,
utilizando para esto los resultados obtenidos anteriormente.
100) Generar y mostrar la matriz mariposa.
1 0 1 0 1
1 1 0 1 1
1 1 1 1 1
1 1 0 1 1
1 0 1 0 1
101) Generar y mostrar la matriz rombo:
0 0 1 0 0
0 1 1 1 0
1 1 1 1 1
0 1 1 1 0
0 0 1 0 0
102) Generar y mostrar la matriz reloj de arena 1:
1 1 1 1 1
0 1 1 1 0
0 0 1 0 0
0 1 1 1 0
1 1 1 1 1
0 0 0 0 0

73
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

103) Generar y mostrar la matriz pescado:


1 0 1 0 1 0 0
1 1 0 1 1 1 0
1 1 1 1 1 0 1
1 1 0 1 1 1 0
1 0 1 0 1 0 0
104) Generar y mostrar la matriz diamante:
0 1 1 1 0
1 1 1 1 1
0 1 1 1 0
0 0 1 0 0
105) Generar y mostrar la matriz perdigón
1 1 1 1 1
1 1 1 1 1
1 1 0 1 1
1 1 1 1 1
1 1 1 1 1
106) Generar y mostrar la matriz cuadro o marco:
1 1 1 1 1
1 0 0 0 1
1 0 0 0 1
1 0 0 0 1
1 1 1 1 1
107) Generar y mostrar la matriz doble marco
1 1 1 1 1 1 1
1 0 0 0 0 0 1
1 0 1 1 1 0 1
1 0 1 0 1 0 1
1 0 1 1 1 0 1
1 0 0 0 0 0 1
1 1 1 1 1 1 1
108) Generar y mostrar la matriz diagonal principal:
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
109) Generar y mostrar la matriz diagonal secundaria:
0 0 0 0 1
0 0 0 1 0
0 0 1 0 0
0 1 0 0 0
1 0 0 0 0

74
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

110) Generar y mostrar la matriz X:


1 0 0 0 1
0 1 0 1 0
0 0 1 0 0
0 1 0 1 0
1 0 0 0 1
111) Generar y mostrar la matriz cruz:
0 0 1 0 0
0 0 1 0 0
1 1 1 1 1
0 0 1 0 0
0 0 1 0 0
112) Generar y mostrar la matriz asterisco:
1 0 1 0 1
0 1 1 1 0
1 1 1 1 1
0 1 1 1 0
1 0 1 0 1
113) Generar y mostrar la matriz reloj de arena 2:
1 1 1 1 1
0 1 1 1 0
0 0 1 0 0
0 1 1 1 0
1 1 1 1 1
114) Generar y mostrar la matriz caracol:
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
115) Generar y mostrar la matriz víbora horizontal:
1 2 3 4 5
10 9 8 7 6
11 12 13 14 15
20 19 18 17 16
21 22 23 24 25
116) Generar y mostrar la matriz doble víbora horizontal:
1 2 3 4 5
10 9 8 7 6
11 12 13 12 11
6 7 8 9 10
5 4 3 2 1

75
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

117) Generar y mostrar la matriz víbora vertical:


1 10 11 20 21
2 9 12 19 22
3 8 13 18 23
4 7 14 17 24
5 6 15 16 25
118) Generar y mostrar la matriz doble víbora vertical:
1 10 11 6 5
2 9 12 7 4
3 8 13 8 3
4 7 12 9 2
5 6 11 10 1
119) Generar y mostrar la matriz triangular inferior:
1 0 0 0 0
1 1 0 0 0
1 1 1 0 0
1 1 1 1 0
1 1 1 1 1
120) Generar y mostrar la matriz triangular superior:
1 1 1 1 1
0 1 1 1 1
0 0 1 1 1
0 0 0 1 1
0 0 0 0 1
121) Generar y mostrar la matriz:
0 0 7 0 0
0 0 8 0 0
1 2 3 4 5
0 0 9 0 0
0 0 10 0 0
122) Generar y mostrar la matriz:
1 0 0 0 0
1 2 0 0 0
1 2 3 0 0
1 2 3 4 0
1 2 3 4 5
123) Generar y mostrar la matriz:
5 0 0 0 0
5 4 0 0 0
5 4 3 0 0
5 4 3 2 0
5 4 3 2 1

76
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

124) Generar y mostrar la matriz:


1 0 0 0 0
2 1 0 0 0
3 2 1 0 0
4 3 2 1 0
5 4 3 2 1
125) Generar y mostrar la matriz:
1 0 0 0 0
2 2 0 0 0
3 3 3 0 0
4 4 4 4 0
5 5 5 5 5
126) Generar y mostrar la matriz:
a b c d e
0 a b c d
0 0 a b c
0 0 0 a b
0 0 0 0 a
127) Generar y mostrar la matriz:
a b c d e
0 b c d e
0 0 c d e
0 0 0 d e
0 0 0 0 e
128) Generar y mostrar la matriz:
a a a a a
0 b b b b
0 0 c c c
0 0 0 d d
0 0 0 0 e
129) Generar y mostrar la matriz:
0 0 1 0 0
0 2 2 2 0
3 3 3 3 3
0 4 4 4 0
0 0 5 0 0

77
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

130) Generar y mostrar la matriz payaso:


1 0 0 1 0 0 13 1 1 1 1 1
1 0 1 1 1 0 14 0 1 1 1 0
1 1 1 1 0 1 15 0 0 1 0 0
1 0 1 1 1 0 16 0 1 1 1 0
1 0 0 1 0 0 17 1 1 1 1 1
1 2 3 4 5 6 7 8 9 10 11 12
0 0 0 0 0 0 18 1 1 1 1 1
0 1 1 1 0 0 19 1 0 0 0 1
1 1 1 1 1 0 20 1 0 1 0 1
0 1 1 1 0 0 21 1 0 0 0 1
0 0 1 0 0 0 22 1 1 1 1 1
131) Generar y mostrar la matriz payaso diabólico:
1 0 0 0 1 0 0 21 1 1 1 1 1 34 5 4 3 2 1 0
1 1 0 1 1 1 0 22 0 1 1 1 0 35 0 5 4 3 2 1
1 1 1 1 1 0 1 23 0 0 1 0 0 36 0 0 5 4 3 2
1 1 0 1 1 1 0 24 0 1 1 1 0 37 0 0 0 5 4 3
1 0 0 0 1 0 0 25 1 1 1 1 1 38 0 0 0 0 5 4
0 0 0 0 0 0 0 26 1 1 1 1 1 39 0 0 0 0 0 5
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1 1 1 1 1 1 1 27 0 0 0 0 0 40 0 0 1 1 0 0
1 0 0 0 0 0 1 28 0 1 1 1 0 41 0 0 1 1 0 0
1 0 1 1 1 0 1 29 1 1 1 1 1 42 1 1 1 1 1 1
1 0 1 0 1 0 1 30 0 1 1 1 0 43 1 1 1 1 1 1
1 0 1 1 1 0 1 31 0 0 1 0 0 44 0 0 1 1 0 0
1 0 0 0 0 0 1 32 0 0 0 0 0 45 0 0 1 1 0 0
1 1 1 1 1 1 1 33 0 0 0 0 0 46 0 0 0 0 0 0
132) Crear un programa que permita sumar dos matrices.
133) Crear un programa que permita restar dos matrices.
134) Crear un programa que permita multiplicar dos matrices.
135) Crear un programa que permita hallar la matriz inversa.
136) Crear un programa que halle la transpuesta de una matriz.
137) Crear un programa que halle el producto de un escalar por
una matriz.
138) Crear un programa que halle el determinante de una matriz.
139) Crear un programa que halle la solución de un sistema de
ecuaciones mediante el uso de matrices.
140) Crear un programa que construya un cuadrado mágico.

78
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

7.3. Arreglos multidimensionales


7.3.1. Definición
Es conjunto arreglado (ordenado o desordenado) de datos
(elementos). Es una colección de matrices que puede tener de 3
(tres) a “n” dimensiones dado que es virtual.

Filas

Profundidad o
Columnas
dimensiones
7.3.2. Ejercicio
Con todo lo mostrado hasta el momento, cree una multi-matriz de 3
(tres) dimensiones en la que la primera dimensión se visualice la
matriz mariposa, en la segunda la matriz diamante y en la tercera la
matriz “X”.

79
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

CAPÍTULO 8

RECURSIVIDAD

A partir del presente capítulo se presentarán algunos algoritmos recursivos como


parte de los ejemplos, dejando al lector el análisis, diagrama de flujo y prueba de
escritorio correspondientes como parte de los ejercicios propuestos.

8.1. Definición
Un programa es recursivo cuando se invoca (llama) a sí mismo para resolver
una parte de un problema; por tanto, debido a la reducción en código es
mucho más rápido que un programa normal pero consume más memoria, lo
que aplicado a un conjunto de datos grande resulta inconveniente.

8.2. Ejemplos
1) Aplicar recursividad para hallar el producto de dos números enteros
mediante sumas sucesivas.
Algoritmo
Inicio Prod2NumRecur
Entero a, b
a  leer()
b  leer()
Escribir: Producto(a,b)
Fin

Inicio Entero Función leer()


Entero x
Repetir
Leer: x
Hasta (x < 1)
Return(x)
Fin leer

Función Entero Producto(Entero a, Entero b)


Si (b=1)
Entonces: Producto  a
Sino: Producto  a + Producto(a,b-1)
Fin Si
Fin Función Producto

80
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

2) Aplicar recursividad para hallar el factorial de un número entero positivo.


Inicio FacRecur
Entero n
n  leer()
Escribir: Fact(n)
Fin

Inicio Entero Función leer()


Entero x
Repetir
Leer: x
Hasta (x < -1)
Return(x)
Fin leer

Función Entero Fact(Entero n)


Si (n<=1)
Entonces: Fact  1
Sino: Fact  n * Fact(n-1)
Fin Si
Fin Fact

3) Elaborar un programa recursivo para contar números enteros positivos de


1 hasta n.
Inicio ContRec
Entero j, lim
lim  leer()
j  Contar(n)
Fin

Inicio Entero Función leer()


Entero x
Repetir
Leer: x
Hasta (x < 0)
Return(x)
Fin leer

81
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

Función Entero Contar(Entero n)


Si (n>1)
Entonces: Contar  Contar(n-1)
Fin Sin
Escribir: n
Fin Contar

4) Crear un programa recursivo para hallar el máximo común divisor de dos


números enteros positivos.
a) Inicio MCDRecu1
Entero a, b
a  leer()
b  leer()
Escribir: MCD(a, b)
Fin

Inicio Entero Función leer()


Entero x
Repetir
Leer: x
Hasta (x < 1)
Return(x)
Fin leer

Función Entero MCD(Entero a, Entero b)


Si ((a Mod b)=0)
Entonces: MCD  b
Sino: MCD  MCD(b,(a Mod b))
Fin Si
Fin MCD

b) Inicio MCDRecu2
Entero a, b
a  leer()
b  leer()
Escribir: MCD(a, b)
Fin

82
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

Inicio Entero Función leer()


Entero x
Repetir
Leer: x
Hasta (x < 1)
Return(x)
Fin leer

Función Entero MCD(Entero a, Entero b)


Si (a=b)
Entonces: MCD  b
Sino: Si (b<a)
Entonces: MCD  MCD(a-b,b)
Sino: MCD  MCD(a,b-a)
Fin Si
Fin Si
Fin MCD

5) Crear un programa recursivo para calcular la suma de un arreglo


unidimensional.

Inicio SumaRecur
Entero n
n  leer()
Entero V[n]
CargarV(V, n)
Escribir: Suma(V, n)
Fin

Inicio Procedimiento CargarV(Entero V[], Entero n)


Entero i
Para(i0(n-1))
V[i] i*2+1
Fin Para
Fin CargarV

83
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

Inicio Entero Función leer()


Entero x
Repetir
Leer: x
Hasta (x < 1)
Return(x)
Fin leer

Función Entero Suma(Entero V[], Entero n)


Si (n=1)
Entonces: Suma  V[1]
Sino: Suma  Suma(V, (n-1))+V[n]
Fin Si
Fin

6) Crear un programa recursivo para encontrar y desplegar por pantalla el


máximo de un arreglo unidimensional.
Inicio maxRecur
Entero n
n  leer()
Real Dim V[n]
Cargar(V, n)
Escribir: Max(V, n)
Fin

Inicio Procedimiento CargarV(Entero V[], Entero n)


Entero i
Para(i0(n-1))
V[i] i*2+1
Fin Para
Fin CargarV

Inicio Entero Función leer()


Entero x
Repetir
Leer: x
Hasta (x < 1)
Return(x)
Fin leer

84
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

Función Real Max(Real V[], Entero n)


Si (n=1)
Entonces: Max  V[1]
Sino: Si (V[n]>Max(V, (n-1))
Entonces: Max  V[n]
Sino: Max  Max(V, (n-1))
Fin Si
Fin Si
Fin Max

7) Calcular el determinante de una matriz utilizando recursividad.


Inicio CofactorRecur
Entero n
n  leer()
Real Dim M[n, n]
CargarM(M, n, n)
MostrarM(M, n, n)
Escribir: Det(M, n)
Fin

Inicio Entero Función leer()


Entero x
Repetir
Leer: x
Hasta (x < 1)
Return(x)
Fin leer

Inicio Procedimiento CargarM(Real M[][], Entero n, Entero m)


Entero f, c
Para(f  0  (n-1))
Para(c  0  (m-1))
M[f,c] i*2+1
Fin Para
Fin Para
Fin CargarM

85
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

Inicio Procedimiento MostrarM(Real M[][], Entero n, Entero m)


Entero f, c
Para(f  0  (n-1))
Para(c  0  (m-1))
Escribir: M[f,c]
Fin Para
Fin Para
Fin MostrarM

Función Real Det(Real M, Entero n)


Real Dim Coef[n,n]
Real Suma
Entero Signo, i, j
Si (n=1)
Entonces: d  M[1,1]
Sino: Signo  1
Para (i  0  (n-1))
Para (j  0  (n-1))
Coef[i,j]  M[i,j]
Fin Para
Fin Para
Suma  M[n, n]*Det[Coef,(n-1))
Para (j  (n-1)  0 : -1)
Signo  Signo*(-1)
Para (i  0  (n-1))
Coef[i,j]  M[i,j+1]
Suma  Suma*Signo*M{n,j]*Det(Coef, (n-1))
Fin Para
Fin Para
Det  Suma
Fin Si
Fin

86
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

8) Crear un programa recursivo que presente todas las posibles maneras en


que se pueden arreglar n elementos.
Inicio PermutaRecur
Entero n
Cadena $s
$s  leer()
n  longitud($s) /*Es una función (parte de una librería) predefinida
en lenguajes de alto nivel y en algunos de medio nivel*/
Permutación($s, n)
Fin

Inicio Cadena Función leer()


Cadena $x
Repetir
Leer: x
Hasta (x = “ “)
Return(x)
Fin leer

Inicio Procedimiento Rotación(Cadena $s, Entero n)


Entero i
Caracter $c
$c  $s[0]
Para (i  0  (n-2))
$s[i]  $s[i+1]
Fin Para
$s[n-1]  $c
Fin Rotación

Inicio Procedimiento Permutación(Cadena $s, Entero n)


Entero i
Para (i  1  (n-1))
Si (n=1)
Entonces: Escribir: $s
Rotación($s, n)
Sino: Permutación($s, (n-1))
Rotación($s, n)
Fin Si
Fin Para
Fin Permutación

87
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

9) Crear un programa para calcular la función de Ackermann.


Inicio AckermannRecur
Entero n, m
m  leer()
n  leer()
Escribir: Ack(m, n)
Fin

Inicio Entero Función leer()


Entero x
Repetir
Leer: x
Hasta (x < 1)
Return(x)
Fin leer

Inicio Entero Función Ack(Entero m, Entero n)


Si (m>0)
Entonces: Si (n=0)
Entonces: Ack  Ack((m-1), 1)
Sino: Si (n>0)
Entonces: Ack  Ack((m-1), Ack(m, (n-1)))
Fin Si
Fin Si
Sino: Si (m=0)
Entonces: Ack  n+1
Fin Si
Fin Si
Fin Ack

8.3. Ejercicios propuestos


1) Realizar el análisis, diagrama de flujo y prueba de escritorio para el
algoritmo desarrollado en el ejemplo 1 de la sección 8.2.
2) Realizar el análisis, diagrama de flujo y prueba de escritorio para el
algoritmo desarrollado en el ejemplo 2 de la sección 8.2.
3) Realizar el análisis, diagrama de flujo y prueba de escritorio para el
algoritmo desarrollado en el ejemplo 3 de la sección 8.2.
4) Realizar el análisis, diagrama de flujo y prueba de escritorio para el
algoritmo desarrollado en el ejemplo 4 de la sección 8.2.
5) Realizar el análisis, diagrama de flujo y prueba de escritorio para el
algoritmo desarrollado en el ejemplo 5 de la sección 8.2.

88
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

6) Realizar el análisis, diagrama de flujo y prueba de escritorio para el


algoritmo desarrollado en el ejemplo 6 de la sección 8.2.
7) Realizar el análisis, diagrama de flujo y prueba de escritorio para el
algoritmo desarrollado en el ejemplo 7 de la sección 8.2.
8) Realizar el análisis, diagrama de flujo y prueba de escritorio para el
algoritmo desarrollado en el ejemplo 8 de la sección 8.2.
9) Realizar el análisis, diagrama de flujo y prueba de escritorio para el
algoritmo desarrollado en el ejemplo 9 de la sección 8.2.
10) Crear un programa recursivo para calcular el término n de la serie de
Fibonacci.

89
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

CAPÍTULO 9

ORDENAMIENTO

En el presente capítulo se presentarán algunos algoritmos de ordenamiento como


parte de los ejemplos, dejando al lector el análisis, diagrama de flujo y prueba de
escritorio correspondientes como parte de los ejercicios propuestos.

9.1. Definición
Son algoritmos diseñados para dar, especialmente, en el caso numérico un
orden, ascendente o descendente; ya que también se puede aplicar a las
cadenas y caracteres que implica el orden alfabético. Además, implica que
posteriormente se facilitará la búsqueda (Capítulo 9).

Todos los algoritmos de búsqueda se aplican a los arreglos unidimensionales


pero en el caso que se presente un arreglo bidimensional se deberá trasladar
su contenido a un vector, ordenar el vector, y trasladar nuevamente el
contenido, ordenado, a la matriz.

9.2. Ejemplos
1) Aplicar el método Bubblesort (Burbuja) para ordenar un vector con
números enteros de “n” posiciones.
Inicia Burbuja
Entero n
n  leer()
Real Dim V[n]
CargarV(V, n)
BubbleSort(V, n)
MostrarV(V, n)
Fin

Inicio Entero Función leer()


Entero x
Repetir
Leer: x
Hasta (x < 1)
Return(x)
Fin leer

90
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

Inicio Procedimiento CargarV(Real V[], Entero n)


Entero i
Para(i0(n-1))
Leer: V[i]
Fin Para
Fin CargarV

Inicio Procedimiento MostrarV(Real V[], Entero n)


Entero i
Para(i0(n-1))
Escribir: V[i]
Fin Para
Fin MostrarV

Inicio Procedimiento BubbleSort(Real V[], Entero n)


Entero i, j
Real aux
Para (i  1  (n-1))
Para (j  (n-1)  i : -1)
Si (V[j-1]>V[j])
Entonces: aux  V[j]
V[j]  V[j-1]
V[j-1]  aux
Fin Si
Fin Para
Fin Para
Fin BubbleSort

2) Aplicar el método Shakesort (doble Burbuja) para ordenar un vector con


números enteros de “n” posiciones.
Inicio DobleBurbuja
Entero n
n  leer()
Real Dim V[n]
CargarV(V, n)
ShakerSort(V, n)
MostrarV(V, n)
Fin

91
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

Inicio Entero Función leer()


Entero x
Repetir
Leer: x
Hasta (x < 1)
Return(x)
Fin leer

Inicio Procedimiento CargarV(Real V[], Entero n)


Entero i
Para(i0(n-1))
Leer: V[i]
Fin Para
Fin CargarV

Inicio Procedimiento MostrarV(Real V[], Entero n)


Entero i
Para(i0(n-1))
Escribir: V[i]
Fin Para
Fin MostrarV

92
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

Inicio Procedimiento ShakerSort(Real V[], Entero n)


Entero i, k, tope, medio
Real aux
tope  1
medio  n-1
kn
Repetir
Para (imedio tope:-1)
Si (V[i-1]>V[i])
Entonces: auxV[i]
V[i]V[i-1]
V[i-1]aux
ki
Fin Si
Fin Para
Para (itopemedio)
Si (V[i-1]>V[i])
Entonces: auxV[i]
V[i]V[i-1]
V[i-1]aux
ki
Fin Si
Fin Para
mediok-1
Hasta (superior > medio)
Fin ShakerSort

3) Aplicar el método Heapsort (Montículo), que utiliza al arreglo


unidimensional como un árbol binario completo, para ordenar un vector
con números enteros de “n” posiciones.
Inicio Montículo
Entero n
n  leer()
Real Dim V[n]
CargarV(V, n)
HeapSort(V, n)
MostrarV(V, n)
Fin

93
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

Inicio Entero Función leer()


Entero x
Repetir
Leer: x
Hasta (x < 1)
Return(x)
Fin leer

Inicio Procedimiento CargarV(Real V[], Entero n)


Entero i
Para(i0(n-1))
Leer: V[i]
Fin Para
Fin CargarV

Inicio Procedimiento MostrarV(Real V[], Entero n)


Entero i
Para(i0(n-1))
Escribir: V[i]
Fin Para
Fin MostrarV

Función Entero Izquierda(Entero i)


Izquierda2*i
Fin Izquierda

Función Entero Derecha(Entero i)


Derecha2*i+1
Fin Derecha

Procedimiento Intercambio(Real x, Real y)


Real aux
auxx
xy
yaux
Fin Intercambio

94
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

Procedimeinto Heapify(Real V[], Entero i, Entero Tamaño)/*Mantiene la


propiedad de Heap para la construcción del árbol binario*/
Entero I, D, Mayor
IIzquierda(i)
DDerecha(i)
Si ((I<=Tamaño)and(V[I]>V[i]))
Entonces: MayorI
Sino: Mayori
Fin Si
Si ((D<=Tamaño)and(V[D]>V[Mayor]))
Entoces: MayorD
Fin Si
Si (Mayor<>i)
Entonces: Intercambio(V[i], V[Mayor])
Heapify(V, Mayor)
Fin Si
Fin Heapify

Procedimiento BuildHeap(Real V[], Entero n)/*Produce un salto*/


Entero i, Tamaño
Tamañon
Para(i(n Div 2)0:-1)
Heapify(V, i)
Fin Para
Fin BuildHeap

Procedimiento HeapSort(Real V[], Entero n)/*Ordena el arreglo*/


Entero i, Tamaño
Tamañon
Para(i(n-1)1:-1)
Intercambio(V[0], V{i])
Heapify(V, i, n)
Fin Para
Fin HeapSort

95
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

4) Aplicar el método recursivo Quicksort para ordenar un vector con


números enteros de “n” posiciones.
Inicio Quick
Entero n
n  leer()
Entero Dim V[n]
CargarV(V, n)
QuickSort(V, n)
MostrarV(V, n)
Fin

Inicio Entero Función leer()


Entero x
Repetir
Leer: x
Hasta (x < 1)
Return(x)
Fin leer

Inicio Procedimiento CargarV(Entero V[], Entero n)


Entero i
Para(i0(n-1))
Leer: V[i]
Fin Para
Fin CargarV

Inicio Procedimiento MostrarV(Entero V[], Entero n)


Entero i
Para(i0(n-1))
Escribir: V[i]
Fin Para
Fin MostrarV

Procedimiento Intercambio(Entero x, Entero y)


Entero aux
auxx
xy
yaux
Fin Intercambio

96
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

Procedimiento QuickSort(Entero V[], Entero n)


Entero Inicio, Fin
Inicio0
Finn-1
QuickS(Inicio, Fin, V)
Fin QuickSort

Procedimiento QuickS(Entero Inicio, Entero Fin, Entero V[])


Entero i, j, x
iInicio
jFin
x(V[i]+V[j]) Div 2
Repetir
Mientras(V[i]<x)
ii+1
Fin Mientras
Mientras(x<V[j])
jj-1
Fin Mientras
Si(i<j)
Entonces: Intercambio(V[i], V[j])
ii+1
jj-1
Sino: Si(i=j)
Entonces: ii+1
Fin Si
Fin Si
Hasta(i>j)
Si(Inicio<j)
Entonces: QuickS(Inicio, j, V)
Fin Si
Si(Fin>i)
Entonces: QuickS(i, Fin, V)
Fin Si
Fin QuickS

9.3. Ejercicios propuestos


1) Realizar el análisis, diagrama de flujo y prueba de escritorio para el
algoritmo desarrollado en el ejemplo 1 de la sección 9.2.
2) Realizar el análisis, diagrama de flujo y prueba de escritorio para el
algoritmo desarrollado en el ejemplo 2 de la sección 9.2.
97
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

3) Realizar el análisis, diagrama de flujo y prueba de escritorio para el


algoritmo desarrollado en el ejemplo 3 de la sección 9.2.
4) Realizar el análisis, diagrama de flujo y prueba de escritorio para el
algoritmo desarrollado en el ejemplo 4 de la sección 9.2.

98
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

CAPÍTULO 10

BÚSQUEDA

En el presente capítulo se presentarán algunos algoritmos de búsqueda como


parte de los ejemplos, dejando al lector el análisis, diagrama de flujo y prueba de
escritorio correspondientes como parte de los ejercicios propuestos.

10.1. Definición
Son algoritmos diseñados para, especialmente, el caso numérico buscar un
dato, ascendente o descendente; ya que también se puede aplicar a las
cadenas y caracteres que implica búsqueda de información. Para aplicar los
métodos que se describen a continuación el conjunto de datos debe estar
previamente ordenado.

10.2. Ejemplos
1) Aplicar el método de búsqueda lineal para encontrar un dato en un vector
con números enteros de “n” posiciones.
Inicio BúsquedaLineal
Entero n, x
n  leer()
Real Dim V[n]
CargarV(V, n)
Escribir: “Ingrese un dato real que desea buscar: “
Leer: x
BúsquedaBLineal(V, n, x)
Si(Búsqueda>0)
Entonces: Escribir: “El elemento es el número: “, Búsqueda
Sino: Escribir: “El elemento no se encuentra”
Fin Si
MostrarV(V, n)
Fin

Inicio Entero Función leer()


Entero x
Repetir
Leer: x
Hasta (x < 1)
Return(x)
Fin leer

99
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

Inicio Procedimiento CargarV(Real V[], Entero n)


Entero i
Para(i0(n-1))
Leer: V[i]
Fin Para
Fin CargarV

Inicio Procedimiento MostrarV(Real V[], Entero n)


Entero i
Para(i0(n-1))
Escribir: V[i]
Fin Para
Fin MostrarV

Función Entero BLineal(Real V[], Entero n, Real x)


Entero i
i0
Mientras((i<=(n-1))and(V[i]<>x))
ii+1
Fin Mientras
Si(i>(n-1))
Entonces: Return(0)
Sino: Return(1)
Fin Si
Fin BLineal

100
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

2) Aplicar el método de búsqueda binaria para encontrar un dato en un


vector con números enteros de “n” posiciones.
Inicio BúsquedaBinaria
Entero n, x
n  leer()
Real Dim V[n]
CargarV(V, n)
Escribir: “Ingrese un dato real que desea buscar: “
Leer: x
BúsquedaBBinary(V, n, x)
Si(Búsqueda>0)
Entonces: Escribir: “El elemento es el número: “, Búsqueda
Sino: Escribir: “El elemento no se encuentra”
Fin Si
MostrarV(V, n)
Fin

Inicio Entero Función leer()


Entero x
Repetir
Leer: x
Hasta (x < 1)
Return(x)
Fin leer

Inicio Procedimiento CargarV(Real V[], Entero n)


Entero i
Para(i0(n-1))
Leer: V[i]
Fin Para
Fin CargarV

Inicio Procedimiento MostrarV(Real V[], Entero n)


Entero i
Para(i0(n-1))
Escribir: V[i]
Fin Para
Fin MostrarV

101
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

Función Entero BBinary(Real V[], Entero n, Real x)


Entero I, D, m
I0
Dn-1
Mientras(I<D)
m(I+D) Div 2
Si(V[m]<x)
Entonces: Im+1
Sino: Dm
Fin Si
Si(V[m]=x)
Entonces: Return(m)
Sino: Return(0)
Fin Si
Fin Mientras
Fin BBinary

3) Aplicar el método de búsqueda por interpolación para encontrar un dato


en un vector con números enteros de “n” posiciones.
Inicio BúsquedaInterpolación
Entero n, x
n  leer()
Real Dim V[n]
CargarV(V, n)
Escribir: “Ingrese un dato real que desea buscar: “
Leer: x
BúsquedaInterpol(V, n, x)
Si(Búsqueda>0)
Entonces: Escribir: “El elemento es el número: “, Búsqueda
Sino: Escribir: “El elemento no se encuentra”
Fin Si
MostrarV(V, n)
Fin

Inicio Entero Función leer()


Entero x
Repetir
Leer: x
Hasta (x < 1)
Return(x)
Fin leer
102
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

Inicio Procedimiento CargarV(Real V[], Entero n)


Entero i
Para(i0(n-1))
Leer: V[i]
Fin Para
Fin CargarV

Inicio Procedimiento MostrarV(Real V[], Entero n)


Entero i
Para(i0(n-1))
Escribir: V[i]
Fin Para
Fin MostrarV

Función Entero Interpol(Real V[], Entero n, Real x)


Entero Top, Bottom, m, m1
Top0
Bottomn-1
Mientras(Bottom>=Top)
Si(V[Top]=V[Bottom])
Entonces: Si(V[Top]=x)
Entonces: Return(Top)
Sino: Return(0)
Fin Si
Fin Si
m1[(Bottom-Top)*(x-V[Top])/(V[Bottom]-V[Top])]
[ ] /*Parte entera*/
mTop+m1
Si((m<Top)or(m>Bottom))
Entonces: Return(0)
Fin Si
Si(x=V[m])
Entonces: Return(m)
Sino: Si(x<V[m])
Entonces: Bottomm-1
Sino: Topm+1
Fin Si
Fin Si
Fin Mientras
Return(0)
Fin Interpol
103
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

10.3. Ejercicios propuestos


1) Realizar el análisis, diagrama de flujo y prueba de escritorio para el
algoritmo desarrollado en el ejemplo 1 de la sección 10.2.
2) Realizar el análisis, diagrama de flujo y prueba de escritorio para el
algoritmo desarrollado en el ejemplo 2 de la sección 10.2.
3) Realizar el análisis, diagrama de flujo y prueba de escritorio para el
algoritmo desarrollado en el ejemplo 3 de la sección 10.2.
4) Buscar, definir, interpretar y aplicar el método de búsqueda Shell.
5) Buscar, definir, interpretar y aplicar el método de búsqueda Hash abierto.
6) Buscar, definir, interpretar y aplicar el método de búsqueda Hash con
desbordamiento.

104
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

CAPÍTULO 11

ARCHIVOS

11.1. Definición
Es un conjunto de datos organizados en campos y registros donde cada uno
de ellos está relacionado entre sí, incluyendo a un identificador.

11.2. Tipos de archivos


Se pueden subclasificar en:
a) Por su tipo de acceso
Existen tres tipos que son:
i) Secuencial
Trabaja con poca información y existen dos tipos que son:
 Lógico
Se utiliza para buscar información en un conjunto relativamente
pequeño.

 Físico
Trabaja con poca información o con la información principal de
acceso.

ii) Indexado
Está ordenado con índices de información amplia y extensa.

iii) Directo
Se aplica a información muy extensa y para buscar información
concreta.

b) Según su forma
Existen dos tipos que son:
i) Maestro
Es información definida y que no se puede cambiar.

ii) Temporal
Es la forma mediante la cual se puede alterar un archivo maestro y
que puede ser la base para una copia de seguridad.

105
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

11.3. Figuras y pseudocódigo


Cierra el canal entre el archivo lógico y físico.

Var_Arch

Abrir el canal entre el archivo lógico y físico.

Var_Arch, Ruta:\Nom.dat

Crear el archivo físico.

Var_Arch

Habilitar la ruta para la lectura o escritura.

Var_Arch

Realizar la lectura de un registro del archivo.

Var_Arch, Var_Reg

Realizar la escritura de un registro en el archivo.

Var_Arch, Var_Reg

Ubica el puntero en un registro determinado del archivo.

Var_Arch
Posición

106
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

Cambia el puntero a un registro determinado en el archivo.

Nuevo_Nom.Dat

Elimina el archivo

Var_Arch, Ruta:\Nom.dat

Función FILESIZE: Permite determinar la cantidad de registros que tiene un


archivo.

CantidadFILESIZE(Var_Arch)

Función FILEPOS: Permite determinar la posición del puntero en el archivo.

PosiciónFILEPOS(Var_Arch)

Función EOF (End Of File): Es una función lógica que devuelve verdad
cuando el puntero se encuentra al final del archivo; caso contrario devuelve
falso.

Falso Verdad
EOF(Var_Arch)

11.4. Características y módulos de un archivo


Todo archivo se caracteriza por que debe estar comprendido mínimamente
por: Altas (adicionar registros), medias (modificaciones parciales y totales
según el tipo de usuario) y bajas (lógicas o con posibilidad de recuperación
de información, y físicas o eliminación definitiva). Además, los módulos
mínimos requerido son:
 Creación.
 Adición.
 Listado.
 Búsqueda.
 Eliminación.
 Modificación.
 Inserción.
 Ordenamiento.
107
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

11.5. Ejemplo
Realizar el pseudocódigo de los módulos: Crear, adicionar, listar, buscar,
eliminar, modificar, insertar y ordenar un archivo.
Inicio Archivo
Estructurado RegPersonas /*RegPersonas es EstructuradoCompuesto*/
{ Cadena ApPat$
Cadena ApMat$
Cadena Nom$
Entero Edad
Carácter Sexo$ }//Fin Listado
Listado : RegPersonal
CrearArch(Listado)
AdiciónArch(Listado)
BuscArch(Listado)
ElimArch(Listado)
ModifArch(Listado)
InserArch(Listado)
OrdenArch(Listado)
Fin

Creación de un archivo
Procedimiento CrearArch(Estructurado Listado)
Carácter c$
Escribir: “Se creará el archivo, ¿Continuar? (S/N)
Leer: c$
Si(c$=’S’)
Entonces: Abrir la ruta: Listado, “C:\RegPersonas.DAT”
Habilitar la ruta: Listado
Cerrar la ruta: Listado
Escribir: “¡Archivo creado!”
Sino: Escribir: “No se creo el archivo”
Fin Si
Fin Crear

Adición de un registro al archivo


Procedimiento AdiciónArch(Estructurado Listado)
Carácter op$
Entero Tam
Abrir la ruta: Listado, “C:\RegPersonas.DAT”
Habilitar la ruta: Listado
Repetir
108
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

TamFILESIZE(Listado)
Ubica el puntero en el último registro: Listado, Tam
Leer: RegPersona.ApPat$, RegPersona.ApMat, RegPersona.Nom,
RegPersona.Edad, RegPersona.Sexo$
Escribir el registro en el archivo: Listado, RegPersona
Escribir: “¿Desea adicionar otro registro? (S/N): ”
Hasta(op$=´N´)
Cerrar la ruta: Listado
Fin AdiciónArch

Listado de registros del archivo


Procedimiento ListarArch(Estructurado Listado)
Entero Tam, P
Abrir la ruta: Listado, “C:\RegPersonas.DAT”
Habilitar la ruta: Listado
Repetir
Leer un registro del archivo: Listado, RegPersona
Escribir: RegPersona.ApPat$, RegPersona.ApMat,
RegPersona.Nom, RegPersona.Edad,
RegPersona.Sexo$
TamFILESIZE(Listado)
PFILEPOS(Listado)
Escribir: “¿Desea continuar? (S/N): ”
Hasta((op$=´N´)and(Tam<=P))
Cerrar la ruta: Listado
Fin ListarArch

Búsqueda del apellido paterno en un registro


Procedimiento BuscArch(Estructurado Listado)
Cadena Dato$
Entero sw
Abrir la ruta: Listado, “C:\RegPersonas.DAT”
Habilitar la ruta: Listado
Leer: Dato$
sw0
Mientras(not(EOF(Listado))and(sw=0))
Leer un registro del archivo: Listado, RegPersona
Si(RegPersona.ApPat=Dato$)
Entonces: sw1
Escribir: RegPersona.ApPat$
RegPersona.ApMat$
109
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

RegPersona.Nom$
RegPersona.Edad
RegPersona.Sexo$
Fin Si
Fin Mientras
Cerrar la ruta: Listado
Fin BuscArch

Eliminación de un registro
Procedimiento ElimArch(Estructurado Listado)
Cadena Dato$
LAux : RegPersonas
Abrir la ruta: Listado, “C:\RegPersonas.DAT”
Habilitar la ruta: Listado
Abrir la ruta: Listado, “C:\RPAux.DAT”
Habilitar la ruta: LAux
Leer: Dato$
Mientras(not(EOF(Listado)))
Leer un registro del archivo: Listado, RegPersonal
Si(Dato$<>RegPersonal.ApPat)
Entonces: Escribir un registro en el archivo: LAux, RPAux
Fin Si
Fin Mientras
Cerrar la ruta: Listado
Cerrar la ruta: ListadoAux
Eliminar el archivo físico: Listado
Abrir la ruta: LAux
Cambiar el puntero: RPAux
Si(RegPersonal.ApPat<>RPAux.ApPat)
Entonces: ListadoLAux
Eliminar el archivo: LAux
Escribir: “Registro eliminado”
Sino: Escribir: “No existe el registro”
Fin Si
Fin ElimArch

Modificación de un registro
Procedimiento ModifArch(Estructurado Listado)
Cadena Dato$
Entero sw, p
Abrir la ruta: Listado, “C:\RegPersonas.DAT”
110
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

Habilitar la ruta: Listado


Leer: Dato$
sw0
Mientras(not(EOF(Listado))and(sw=0))
Si(RegPersonal.ApPat=Dato$)
Entonces: sw1
Escribir: RegPersona.ApPat$
RegPersona.ApMat$
RegPersona.Nom$
RegPersona.Edad
RegPersona.Sexo$
Leer: RegPersona.ApPat$
RegPersona.ApMat$
RegPersona.Nom$
RegPersona.Edad
RegPersona.Sexo$
pFILEPOS(Listado)
Ubicar el puntero en: Listado, p
Escribir el registro en el archivo: Listado, RegPersona
Fin Si
Fin Mientras
Si(sw<>0)
Entonces: Escribir: “Registro modificado”
Sino: Escribir: “No existe el registro”
Fin Si
Fin ModifArch

Inserción de un registro
Procedimiento InserArch(Estructurado Listado)
Entero p, n, i
Abrir la ruta: Listado, “C:\RegPersonas.DAT”
Habilitar la ruta: Listado
Leer: p
nFILESIZE(Listado)
Para(inp:-1)
Ubicar el puntero en: Listado, (i-1)
Leer del archivo el registro: Listado, RegPersonal
Escribir en el archivo el registro: Listado,RegPersonal
Fin Para
Leer: RegPersona.ApPat$, RegPersona.ApMat$, RegPersona.Nom$,
RegPersona.Edad, RegPersona.Sexo$, Fin InserArch
111
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

Ubicar el puntero en: Listado, (i-1)


Escribir en el archivo el registro: Listado,RegPersonal
Cerrar la ruta: Listado
Fin InserArch

Ordenamiento del archivo


Procedimiento OrdenArch(Estructurado Listado)
Entero Tam, n, i
Listado RegPersonal1, RegPersonal2
Abrir la ruta: Listado, “C:\RegPersonas.DAT”
Habilitar la ruta: Listado
TamFILESIZE(Listado)
Para(i1(n-1))
Para(j(i+1)n)
Si(RegPersonal1.Edad>RegPersonal2)
Entonces: RegPersonalRegPersonal.Edad
Ubicar el puntero en: Listado, j+1
Escribir en el archivo el registro:
Listado,RegPersonal
Ubicar el puntero en: Listado, j-1
Escribir en el archivo el registro:
Listado,RegPersonal
Fin Si
FinPara
Fin Para
Cerrar la ruta: Listado
Fin OrdenArch

11.6. Ejercicios propuestos


1. Del ejemplo anterior realizar el análisis, algoritmo y prueba de escritorio
de cada uno de los módulos.
2. Crear el programa principal para el ejercicio anterior, realizando el
análisis, algoritmo, diagrama de flujo y prueba de escritorio.

112
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada

Bibliografía

 Autor, E. (2001). Programación en Turbo Pascal 7.0 Paso a paso. Lima-Perú: Macro E. I. R. L.

 Ceballos Sierra, F. J. (2000). Java 2 Curso de programación. Madrid España: Alfaomega RA-MA.

 Lecca, E. R. (1997). Algoritmos en Borland Pascal. Lima-Perú: RAFFO-LECCA.

113

También podría gustarte