Documentos de Académico
Documentos de Profesional
Documentos de Cultura
CAPÍTULO 1
INTRODUCCIÓN
Por otra parte, cuando se desea resolver un problema se debe seguir los
siguientes pasos:
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.
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.
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:
A1978
SA+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.
Líneas de flujo.
Comentarios.
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
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
sa+b
Escribir: s
Fin
Diagrama de flujo
Inicio
a, b
sa+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
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.1. Definición
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)
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
maya
Si (b > may)
Entonces: may b
Fin Si
Si (c > may)
Entonces: may c
Fin Si
Escribir: may
Fin
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
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
11
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
Falso Verdad
Condición(es)
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
Fin
Prueba de escritorio
a 5 El mayor es: 7
b 7
13
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
Opción
1 2 3 ……. No
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
op
Opción
1 2 3 4 5 6 7 No
Fin
Prueba de escritorio
op 5 Viernes
16
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
17
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
CAPÍTULO 4
ESTRUCTURAS ITERATIVAS
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
c1
p2
Mientras (c <= lim)
Escribir: p
pp+2
cc+1
Fin Mientras
Fin Si
lim
c1
p2
Falso
c <= lim
Verdad
p
cc+1
pp+2
Fin
Prueba de escritorio
lim 5 2 4 6 8 10
c 123456
p 2 4 6 8 10 12
19
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
20
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
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)
c1
p2
Repetir
Escribir: p
pp+2
cc+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
c1
p2
cc+1
pp+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
22
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
23
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
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)
p1
Para (i 1 lim)
Escribir: p
pp+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
p2
i 1 lim
pp+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
25
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
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
33
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
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
35
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
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).
var NomFum(Parámetros)
var NomFun(Parámetros)
NomFun
Parámetros
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
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
a, b
Sa+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
40
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
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).
NomProc(Parámetros)
NomProc(Parámetros)
NomProc
Parámetros
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
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
a, b
sa+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
44
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
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
a) Creación de un vector
Para (VarIniFin)
VarIniFin Leer: V[Var]
Fin Para
V[var]
Falso
Var
Verdad
46
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
Para (VarIniFin)
VarIniFin Leer: x
V[var]x
x Fin Para
V[var]x
Falso
Var
Verdad
Para (VarIniFin)
VarIniFin 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
Algoritmo
Inicio ProgramaVectorImpares
Entero n
n leer()
Entero Dim V[n]
CargarV(V, n)
MostrarV(V, n)
Fin
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
V , n
i 0 (n-1)
x
Verdad
V[i] i*2+1
x <1
Falso Falso
i
Return (x)
Verdad
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 04||0 1 2 3 4
Procedimiento MostrarV
1 3 5 7 9
V
1 3 5 7 9 Null
i 04||0 1 2 3 4
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
58
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
59
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
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
Para (f0(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
Para (f0(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
63
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
Diagrama de flujo
Inicio
n leer()
m leer()
CargarM(V, n, m)
MostrarV(V, n, m)
Fin
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 02||0 1 2
c 02||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 02||0 1 2
c 02||0 1 2
66
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
67
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
69
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
71
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
72
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
73
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
74
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
75
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
76
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
77
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
78
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
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
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
80
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
81
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
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 SumaRecur
Entero n
n leer()
Entero V[n]
CargarV(V, n)
Escribir: Suma(V, n)
Fin
83
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
84
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
85
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
86
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
87
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
88
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
89
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
CAPÍTULO 9
ORDENAMIENTO
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).
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
90
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
91
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
92
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
93
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
94
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
95
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
96
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
98
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
CAPÍTULO 10
BÚSQUEDA
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úsquedaBLineal(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
99
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
100
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
101
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
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.
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
Var_Arch
Var_Arch, Ruta:\Nom.dat
Var_Arch
Var_Arch
Var_Arch, Var_Reg
Var_Arch, Var_Reg
Var_Arch
Posición
106
Lic. Juan Mario Eguívar G. Lógica computacional Programación estructurada
Nuevo_Nom.Dat
Elimina el archivo
Var_Arch, Ruta:\Nom.dat
CantidadFILESIZE(Var_Arch)
PosiciónFILEPOS(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.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 EstructuradoCompuesto*/
{ 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
TamFILESIZE(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
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: ListadoLAux
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
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
nFILESIZE(Listado)
Para(inp:-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
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.
113