Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Lógica Computacional
Descripción breve
Conceptos elementales de cada una de las unidades de la asignatura de Lógica Computacional, con
ejercicios y soluciones.
Metodología de la Programación 3
Algoritmos 4
Diagramas de Flujo: 6
Estructuras secuenciales. 7
1
Ejercicios Unidad IV – Arreglos de Una y Dos Dimensiones 21
UNIDAD V – SUBPROGRAMAS 22
SOLUCIONES 24
REFERENCIAS 42
2
Unidad I – Algoritmos y Diagramas de Flujo
Fases para la Resolución de Problemas
1. Lectura y comprensión del problema.
2. Determinar las causas.
3. Buscar las soluciones.
4. Identificar la solución más eficiente y eficaz.
5. Implementar la solución.
6. Prueba y depuración.
Metodología de la Programación
CONCEPTO DESCRIPCIÓN
Toma de datos El programador deberá recibir una descripción clara y detallada de la
aplicación que debe desarrollar y en caso de no recibir suficiente
información, debe solicitarla en la medida necesaria para el desarrollo de
su trabajo.
Modularización Esta fase consiste en la descomposición sucesiva del problema en
módulos o subproblemas cada vez más concretos y detallados. Estos
módulos normalmente se programarán y desarrollarán
independientemente y luego se enlazarán.
Representación gráfica de las En esta etapa se realiza una representación gráfica clara y detallada que
operaciones refleje la secuencia en que deben ser ejecutadas las diferentes
operaciones. Se utilizan los diagramas de flujo.
Codificación en un lenguaje de Una vez que el diagrama de flujo está ya definido se pasa a la fase de
programación escritura del programa en el lenguaje elegido y la obtención del programa
fuente.
Preparación de un conjunto de Es necesario un conjunto de datos que permitan probar el programa
datos cuando se ejecute.
Ejecución y corrección de errores Según sea el tipo de lenguaje elegido así se realizarán las diferentes fases
del programa de la traducción del programa a lenguaje o código de máquina (programa
objeto).
Puesta a punto final del programa El programa se considera terminado cuando se han realizado las pruebas,
y ensayada su fiabilidad con los conjuntos de datos seleccionados y otros
nuevos que se quieran elegir, y no se encuentran ya errores de ningún
tipo.
Documentación del programa Es todo el material escrito que se ha ido produciendo simultáneamente a
la elaboración del programa. La puesta a punto final del programa debe ir
a la par con la documentación del mismo.
La documentación de un programa debe ser de dos tipos:
Documentación para personal informático.
Documentación de usuario.
T ABLA 1 - METODOLOGÍA DE LA PROGRAMACIÓN
Fuente: Elaboración propia.
3
Algoritmos
Definición
Un algoritmo es una serie de operaciones detalladas y no ambiguas, a ejecutar
paso a paso, y que conducen a la resolución de un problema.
Es un conjunto de reglas para resolver una cierta clase de problema o una forma
de describir la solución de un problema.
Es el medio por el que se explica cómo puede resolverse un problema, mediante
aproximaciones paso a paso. Se puede formular de muchas formas, siempre y
cuando se realice de modo no ambiguo.
Características
Un algoritmo debe ser preciso e indicar el orden de realización de cada paso.
Un algoritmo debe estar definido.
◦ Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado
cada vez.
Un algoritmo debe ser finito. Todo algoritmo tiene un final.
Las partes de un algoritmo
Tiene tres partes.
◦ Entrada.- Los datos que se necesitan para empezar el proceso.
◦ Salida.- El resultado que produce el algoritmo.
◦ Proceso.- Son las operaciones que se utilizan para obtener el resultado.
4
Ejercicios. Unidad I – Algoritmos y Diagramas de Flujo
5
Unidad II – Estructuras Secuenciales y Selectivas.
Diagramas de Flujo:
Son la representación gráfica de un algoritmo.
Símbolo Función
Se utiliza para iniciar y para finalizar un diagrama de flujo. En
su interior se escriben las palabras INICIO o FIN según el
momento del proceso.
Bloque de Entrada
En su interior se escriben las variables de entrada, se deben
separar por comas.
Simboliza que las variables de entrada se sustituirán por un
valor capturado a través de un dispositivo externo,
generalmente el teclado.
Bloque de Asignación
En su interior se realizan operaciones de asignación.
Tiene un operador que recibe el nombre de asignador y se
simboliza con una flecha que mira a la izquierda.
La variable que queda a la izquierda del asignador recibe el
valor de la expresión que se encuentra a la derecha.
La expresión de la derecha puede tomar la forma de:
VARIABLE EXPRESIÓN Una operación aritmética.
Una función – SQRT(), MOD(), INT()
Una constante.
Otra variable.
Bloque de comparación
En su interior se realizan operaciones lógicas o de
comparación.
En su forma elemental se comparan dos expresiones
separadas por el operador lógico que convenga.
Los operadores lógicos son: >, <, >=, <=, =, <>
Bloque iterativo
Marca el inicio de un ciclo de iteraciones fijas.
En su interior se escriben los elementos que acompañan a
este tipo de ciclo.
La variable de control del ciclo, el valor de inicio, y el número
de iteraciones que se deben realizar
Bloque de Salida
En su interior se escriben las variables que almacenan el
resultado del proceso.
Las variables deberán separarse con comas.
T ABLA 2 - S IMBOLOGÍA BÁSICA DE LOS DIAGRMAS DE FLUJO
Fuente: Elaboración propia.
6
Estructuras secuenciales.
Una operación a continuación de la otra. Se trabaja de arriba hacia abajo.
Ejemplo: Construir el diagrama de flujo para calcular la edad de una persona, conociendo el año
de nacimiento.
INICIO
A_ACT, A_NAC
EDAD
FIN
7
Las comparaciones le dan mucha fuerza a la construcción de los diagramas de flujo, a
través de ellos se podrán resolver infinidad de situaciones.
Las estructuras que podrán construirse son muy diversas. A continuación, se muestran
algunas de ellas. Todo depende de la solución que se necesite.
Una sentencia SI_entonces puede tener otra estructura SI_entonces, y esta a su vez
puede contener otra, y así sucesivamente; al mismo tiempo, dentro de cada estructura
pueden existir diferentes acciones.
Las estructuras SI interiores a otras estructuras SI reciben el nombre de anidadas.
8
Fuente: Elaboración propia.
Ejemplo: Construir un diagrama de flujo para calcular la edad de una persona conociendo
el año de nacimiento y determinar si es mayor de edad.
INICIO
A_ACT, A_NAC
MSG, EDAD
FIN
9
Ejercicios Unidad II – Estructuras Secuenciales y Selectivas
1. Construir un diagrama de flujo para calcular e imprimir la mitad de una cantidad.
2. Construir un diagrama de flujo para calcular e imprimir la edad de una persona al
año actual, se conoce el año de nacimiento.
3. Construir un diagrama de flujo para calcular e imprimir el número de horas extras
realizadas por una persona durante la semana, sabiendo que la jornada laboral
normal es de 40 horas.
4. Construir un diagrama de flujo para calcular e imprimir el porcentaje de una
cantidad.
5. Construir un diagrama de flujo para calcular e imprimir el total a pagar si se debe
aplicar un porcentaje de descuento.
6. Construir un diagrama de flujo para calcular e imprimir el total a pagar con el
porcentaje de IVA incluido.
7. Construir un diagrama de flujo para calcular la edad de una persona y determinar
si es o no mayor de edad.
8. Construir un diagrama de flujo para determinar si una persona hizo o no horas
extras y calcular e imprimir el pago que recibirá por éstas, sabiendo que las horas
extras se pagan al doble de una hora normal.
9. Construir un algoritmo para determinar la renta de una vivienda de acuerdo con la
zona en la que se encuentra: en el norte la renta es de 8000, en el sur de 1000, en
el oeste de 3000 y en el oriente de 2000.
10. Construir un diagrama de flujo para calcular e imprimir el total que debe pagar una
persona sabiendo lo siguiente: al finalizar su compra deberá sacar una pelotita de
un ánfora, si la pelota es verde no pagará, si la pelota es amarilla tendrá un 50%
de descuento, si es roja no tendrá porcentaje de descuento.
10
Unidad III – Ciclos de Iteración Fija y Variable
Los ciclos o bucles
Los ciclos se utilizan cuando un proceso debe ser repetido varias veces.
Cada repetición del proceso recibe el nombre de iteración.
El bloque iterativo
Los bloques de iteración facilitan la escritura de los diagramas de flujo, ya que cada vez
que descubrimos (o sospechamos) que tenemos un ciclo de iteración fija controlado por
un contador, dibujamos dicho bloque e integramos el ciclo.
Es importante recordar que el corazón del ciclo se encuentra en la porción del proceso, el
bloque de iteración representa simplemente el mecanismo para entrar y salir del proceso.
11
El bloque iterativo se utiliza para controlar las veces que se repite un proceso. Los
elementos que lo forman son:
Variable de control que
•
incrementa de uno en
J = 1 100
uno y controla las
repeticiones del proceso.
• Operador igual.
PROCES
O
• Valor inicial (constante,
variable u operación).
• Flecha que mira a la
derecha.
• Valor final (constante, variable u operación).
• El bloque de iteración representa el mecanismo de entrada y salida del ciclo.
• El ciclo empieza al entrar al bloque por la flecha superior.
• Al entrar a través de la flecha de la izquierda, la variable de control incrementa su
valor en uno hasta alcanzar el (valor final + 1). El ciclo se repite tantas veces como
marque el valor final.
• Al salir del ciclo el valor de la variable de control es (valor final + 1).
Ejemplo: Diagrama de flujo para calcular e imprimir cada resultado de una tabla de
multiplicar.
NUM – Número al que
INICIO se calculará la tabla de
multiplicar.
J – Variable control.
Para este ejemplo
NUM además de controlar la
repetición del ciclo
guarda la secuencia de
números por los que
multiplicará el NUM.
J = 1 10
RESULT – Guarda el
valor de cada
multiplicación.
RESULT
12
DIAGRAMA 7-C ALCULA E IMPRIME LA TABLA DE MULTIPLICAR DE UN NÚMERO DADO .
Fuente:Elaboración propia.
MIENTRAS la
condición se cumpla
el ciclo se repite.
El ciclo se termina
HASTA que se
cumpla la condición.
DIAGRAMA 8-F ORMAS DEL CICLO DE ITERACIÓN VARIABLE , CONDICIÓN DE TÉRMINO AL INICIO O AL FINAL DEL CICLO .
Fuente: Elaboración propia.
13
Ejemplo: Construir un diagrama de flujo para leer dos valores y detenerse cuando la
suma de ambos sea mayor que su multiplicación.
INICIO
SUMA 0
MULT 1
SI SUMA,
SUMA >=
MULT MULT
NO
A, B FIN
SUMA A + B
MULT A * B
DIAGRAMA 9-C APTURA 2 VALORES Y SE DETIENE CUANDO LA SUMA DE AMBOS SEA MAYOR QUE LA MULTIPLICACIÓN .
Fuente: Elaboración propia.
Contador
Un contador es una variable que guarda el valor que resulta del incremento o
decremento de una constante cada vez que se repite el proceso dentro de un ciclo
(iteración).
El incremento es siempre constante.
El incremento puede ser positivo o negativo.
CONT CONT +1 o CONT CONT - 1
Acumulador
Un acumulador es una variable que tiene la función de almacenar la cantidad resultante
de sumas consecutivas efectuadas cada vez que se repite el proceso dentro de un ciclo
(iteración).
14
El incremento o decremento de cada suma es variable en lugar de constante como en el
caso del contador.
ACUM ACUM + VALOR
Bandera, Switch o Interruptor
La bandera es una variable que indica que un determinado suceso ha ocurrido.
Solamente toma uno de dos valores 0 o 1.
El 0 indica apagado y el 1 encendido.
Generalmente el valor inicia como apagado fuera del ciclo y dentro del ciclo se
encenderá si una situación esperada se presenta.
La bandera perderá su efectividad si se apaga y enciende dentro de un mismo ciclo.
15
a)
b)
16
Unidad IV – Arreglos de Una y Dos Dimensiones
Las variables dimensionadas permiten conservar en la memoria valores que pueden ser
utilizados varias veces durante el proceso. Su funcionamiento es idéntico al de las
variables simples, eso quiere decir que funcionan con las operaciones estudiadas hasta el
momento. En este curso estudiaremos dos tipos de variables dimensionadas: las de una
dimensión, también conocidas como vectores y las de dos dimensiones o matrices.
Sintaxis:
El nombre del vector debe tener relación con el contenido almacenado.
Ejemplo: Si se almacenan nombres de frutas el vector se llamará FRUTA.
Para recuperar el dato guardado en un cajón se utiliza la siguiente forma:
El nombre del vector seguido de paréntesis con el número del cajón
correspondiente.
Ejemplo: Para recuperar el dato guardado en el cajón 4 del vector FRUTA.
FRUTA(4).
El número puede ser sustituido por una variable que tenga un número contenido
dentro de la longitud del vector.
J3
17
FRUTA(J)
De esta forma se recuperaría el dato guardado en el cajón 3.
El número del cajón puede trabajarse de forma independiente, esto es, sin estar
acompañado del nombre del vector y los paréntesis.
Ejemplo:
DIAGRAMA 10-A LMACENA FRUTAS EN LOS CAJONES , Y POSTERIORMENTE SE MUESTRA EL CONTENIDO DE ACUERDO
CON EL NÚMERO DE CAJÓN SOLICITADO A TRAVÉS DEL TECLADO .
18
Arreglos de Dos Dimensiones o Tablas, o Matrices
Definición:
Una MATRIZ es una estructura formada por filas y columnas que también recibe el
nombre de TABLA.
Se utilizan cuando es necesario conservar valores en la memoria para utilizarlos
posteriormente durante el proceso, generalmente para realizar búsquedas.
Comúnmente los elementos que pertenecen a una misma fila representan un conjunto de
datos relacionados.
La figura que se muestra es una tabla de 4 filas y 5 columnas.
20 14 13 12 11
18 13 15 2 9
5 3 4 14 16
0 9 6 3 1
Para trabajar con el dato almacenado, cada cajón tiene una dirección formada por el
número de fila y el número de columna en que se encuentra.
Ejemplo: El número 2, está almacenado en (2,4).
Los datos almacenados en cada cajón permanecen en la memoria.
Pueden ser utilizados varias veces durante el proceso hasta que son sustituidos
por un nuevo valor.
El número total de cajones es la dimensión de la tabla.
o La dimensión de la tabla es el resultado de multiplicar el número de filas
por el número de columnas.
19
El nombre de la matriz seguido de paréntesis con la dirección del cajón
correspondiente. La dirección es un par ordenado (x,y), en donde la x es el
número de fila y la y el número de columna.
Ejemplo: MEDICINA(2,4), trabajando con lo almacenado en la fila 2, columna 4.
Los números pueden ser sustituidos por variables.
F2
C4
MEDICINA(F,C)
Para obtener el contenido de un cajón, el nombre de la tabla siempre se
acompañará de la dirección.
INICIO
SUM_F 0
F=1 4
C=1 5
F=1 4
VAL(F,C)
FIN
C=1 5
SUM_F
MOD(F/2)
SUM_F SUM_F+VAL(F,C)
=0
20
Ejercicios Unidad IV – Arreglos de Una y Dos Dimensiones
1. Construir un diagrama de flujo para calcular e imprimir el promedio de las
calificaciones de 50 alumnos y mostrar cuántos de ellos tuvieron una calificación
menor al promedio del grupo.
2. Construir un diagrama de flujo para contar e imprimir cuántas personas de algunos
estados de la república están en una fila de 1000 personas.
3. Construir un diagrama de flujo para buscar e imprimir en un vector con valores
ordenados de manera creciente un par de valores duplicados, si no se encuentra
imprimir el mensaje correspondiente.
4. Construir un diagrama de flujo que forme un conjunto C con la unión de los
elementos de los conjuntos A y B.
5. Construir un diagrama de flujo que forme un conjunto C con la intersección de los
elementos de los conjuntos A y B.
6. Construir una tabla de 5 x 6, en ella está contenido un cero, imprime su ubicación.
7. Construir una tabla de 8 x 8 imprimir la suma de los elementos que se encuentran
en la diagonal.
8. Construir una tabla de 7 x 8 en donde el contenido de cada ubicación es igual a la
suma de la fila y la columna.
9. Construir una tabla de M x 4 columnas, en ella se almacenan medicamentos. En la
primera columna se almacena los códigos, en la segunda los nombres, en la
tercera la fecha de caducidad y en la cuarta la existencia. Localizar aquellos
medicamentos con fecha de caducidad menor a una fecha dada y modificar la
existencia a 0.
10. Construir una tabla en la que se almacenan las ventas de una semana de una
cadena de 5 tiendas. Calcular e imprimir las ventas de cada día.
21
Unidad V – Subprogramas
Los subprogramas son rutinas, procedimientos o conjuntos de instrucciones que
realizan una labor específica. Los subprogramas o subrutinas nacieron de la necesidad
de no repetir innecesariamente un trabajo ya hecho. Pueden invocarse desde el cuerpo
del programa principal cuantas veces se desee. Constituyen el núcleo de lo que se
denomina programación estructurada, y permiten la descomposición de un problema
complejo en subproblemas más sencillos abordables de forma independiente.
El bloque que se utiliza para mostrar en el diagrama de flujo la presencia de un
subprograma es el siguiente:
Ejemplo:
Diagrama de flujo para calcular la mediana de un grupo de valores. Recordemos que para
calcular la mediana el grupo de datos deberá estar ordenado en orden creciente.
Entonces el diagrama de flujo contendrá una llamada a un subprograma para ordenarlos.
22
DIAGRAMA 13-S UBPROGRAMA DE ORDENAMIENTO CRECIENTE
Fuente: Elaboración propia.
23
SOLUCIONES
24
Soluciones de los ejercicios Algoritmos
y Diagramas de Flujo
1. Son fases de la resolución de problemas.
A. Lectura y comprensión, modularización, codificación.
B. Determinar las causas, búsqueda de la solución, prueba y depuración.
C. Toma de datos, modularización, representación gráfica.
D. Ninguna de las anteriores.
2. Son fases de la metodología de la programación.
A. Determinar las causas, búsqueda de la solución, prueba y depuración.
B. Lectura y comprensión, modularización, codificación.
C. Toma de datos, modularización, representación gráfica.
D. Ninguna de las anteriores.
3. Explicación paso a paso de cómo resolver un problema.
A. Definición de algoritmo.
B. Análisis del problema.
C. Modularización del problema
D. Codificación.
4. Es una característica de los algoritmos.
A. Completo.
B. Congruente.
C. Consistente.
D. Definido.
5. Es la parte del algoritmo en la que se realizan operaciones.
A. Entrada
B. Proceso
C. Salida
D. Ninguna de las anteriores.
25
Soluciones de los ejercicios secuenciales
y alternativos
26
27
28
29
30
Soluciones de los ejercicios con ciclos y
variables de trabajo
31
32
33
Respuesta: Infinito.
Respuesta: 20
34
Soluciones de los ejercicios con
variables dimensionadas
35
36
37
38
39
REFERENCIAS
Forsythe, A., Keenan, T., Organick, E., Stenberg, W. (1981). Lenguajes de Diagramas de Flujo. Quinta Edición.
Limusa, México.
Joyanes, L. (2008). Fundamentos de Programación. Cuarta Edición. McGraw Hill, España.
Joyanes, L. (2013). Fundamentos de Programación. Primera Edición. McGraw Hill, España.
40