Raptor herramienta automática para el
diseño de Algoritmos Computacionales
Capítulo 1: Conceptos Básicos
Dr. Edgar Danilo Domínguez Vera
Alfaomega Grupo Editor S.A de C.V
Una vez que usted haya estudiado este capítulo, será
capaz de:
1. Entender los conceptos básicos de la
computación y la informática que le permitan
diseñar algoritmos computacionales.
Objetivos 2. Comprender las principales acciones
computacionales que se utilizan para diseñar
de algoritmos computacionales.
aprendizaje: 3. Aplicar el enfoque de sistemas a una
metodología para el diseño algoritmos
computacionales.
4. Transformar una fórmula matemática en una
fórmula computacional.
5. Otorgar nombres a los identificadores de un
algoritmo computacional siguiendo reglas de
calidad.
Tratamiento de
Información e • Tratamiento de Información es el
Informática conjunto de acciones permiten el
procesamiento de datos mediante las
operaciones de lectura, escritura, copia,
transmisión, ordenación, clasificación,
comparación, archivo, cálculo, traducción,
análisis y síntesis
• La informática es ciencia que se ocupa de
estudiar el Tratamiento de Información
mediante la utilización de dispositivos
electrónicos diseñados para ejecutar las
acciones que permiten el procesamiento
de datos.
LA COMPUTADORA
• La computadora es un dispositivo electrónico o hardware que se
utiliza para el procesamiento de datos con el objetivo de
transformarlos en información que sea útil en la toma de decisiones.
• La computadora requiere de programas computacionales o software
para que realicen acciones útiles en apoyo a las actividades humanas
• Unidades Funcionales
– 1) La Unidad Central de Proceso que se subdivide en la Unidad
de Control y la Unidad Aritmético-lógica.
– 2) La unidad de memoria.
– 3) La unidad de entrada.
– 4) La Unidad de Salida
– 5) La Unidad de Almacenamiento Secundario.
– 6) Bus del sistema
• Unidades Funcionales
– 1) La Unidad Central de
Proceso que se subdivide en la
1.1 UNIDADES Unidad de Control y la Unidad
FUNCIONALES Aritmético-lógica.
DE LA – 2) La unidad de memoria.
COMPUTADORA – 3) La unidad de entrada.
– 4) La Unidad de Salida
– 5) La Unidad de
Almacenamiento Secundario.
– 6) Bus del sistema
Mapa Conceptual de la Computadora
• Se subdivide en la Unidad Aritmético-
Lógica o Arithmetic-Logic Unit (ALU) y la
Unidad de Control o Control Unit (CU).
• La unidad aritmético-lógica ejecuta
operaciones matemáticas y lógicas para
procesar los datos y obtener información.
Unidad La suma, la resta, la multiplicación y la
Central de división, así como and, or y not, son
algunas de las operaciones que está
Proceso unidad puede realizar.
• La unidad de control es la encargada de
administrar los recursos o unidades con
los que cuenta la computadora. Esta
unidad interpreta las instrucciones
generadas por un programa e inicia las
operaciones apropiadas para llevarlas a
cabo.
La unidad de memoria de una
computadora requiere de un
suministro de energía permanente
para funcionar, almacenar,
conservar y accesar a información
digital.
Unidad de
Memoria
Se subdivide en la memoria de
acceso aleatorio o Random Access
Memory (RAM) y la memoria de
solo lectura o Read-only memory
(ROM).
• La RAM también es conocida como
memoria primaria, principal o
Random interna, está construida por
Access circuitos integrados. Su capacidad
de almacenamiento y conservación
Memory está limitada en cuanto a espacio y
(RAM) a su conexión permanente a una
fuente de energía. Cuando esa
fuente se suspende, toda
información que estaba allí
almacenada se pierde, por eso se
dice que es volátil.
• La ROM solo permite la lectura de la
información y no su modificación. La
información digital almacenada en la ROM
no se pierde cuando se suspende la fuente
de energía. Sin embargo, requiere de la
Read-only fuente de la energía para funcionar y accesar
memory los datos. Las tareas encargadas a los
programas grabados en la ROM son para la
(ROM) gestión del proceso de arranque de la
computadora, el chequeo inicial del sistema,
carga del sistema operativo y diversas
rutinas de control de dispositivos de
entrada/salida. Estos programas o utilidades
forman parte del Sistema Básico de Entrada
y Salida o Basic Input Output System (BIOS)
• Todo dispositivo electrónico que permite
la introducción de datos a la unidad de
memoria de una computadora se le
conoce como unidad de entrada. Dicha
introducción de datos se hace mediante
Unidad de puertos o dispositivos diseñados con ese
objetivo, los más comunes son el teclado,
Entrada el mouse o ratón, digitalizador de
imágenes o scaner, lector de tarjetas
electrónicas, lector de código de barras,
monitor sensible al tacto o touch screen
monitor, etc.
• Todo dispositivo electrónico que
permite presentar al usuario el
estado de los datos que se
Unidad de encuentran en la unidad de
memoria de la computadora, es
Salida una unidad de salida. El monitor
tradicional o la impresora son
algunos de los que se podemos
mencionar
• Todo medio electrónico que permite el
almacenamiento y conservación de video,
voz, datos, sonidos, texto, etcétera, en
formato digital sin que requiera estar
permanentemente conectado a una
Unidad de fuente de energía se le denomina
Almacenamiento memoria auxiliar, externa o periférica.
Secundario • A esta categoría pertenecen los discos
duros, las cintas magnéticas, discos
externos, tarjetas de memoria flash,
etcétera a los cuales también se les
conoce como soporte o medios de
almacenamiento.
• Las cinco unidades funcionales explicadas
anteriormente se pueden comunicar entre sí gracias
al bus del sistema. Físicamente es un conjunto de
cables y se encuentra separado en tres canales
– Bus de Datos
Este bus es bidireccional y es el canal por el cual
se conducen los datos entre la CPU y los demás
dispositivos (memorias, puertos y otros).
– Bus de Direcciones
Bus del El bus de direcciones es un canal unidireccional
por el cual la CPU envía las direcciones de
Sistema memoria para ubicar información en los
dispositivos de memoria, puertos u otros
dispositivos de la computadora.
– Bus de Control
El bus de control, al igual que el bus de
direcciones es unidireccional y se utiliza para
efectuar la lectura y escritura en las memorias y
puertos de entrada-ealida. Este bus en general
lo emplea la CPU para controlar el flujo de los
datos y las direcciones de forma organizada.
• La Ingeniería de Software es la disciplina
que aglutina métodos y herramientas que
coadyuvan a la construcción de software
con calidad. Al conjunto de actividades
Ingeniería que permiten desarrollar software Roger
S. Pressman le llama Proceso de Software.
de Software • Un algoritmo computacional puede
convertirse en un programa
computacional o software utilizando
métodos y herramientas de esta disciplina
1.2 DEFINICIÓN DE ALGORITMO
COMPUTACIONAL
Algoritmo Matemático Algoritmo Computacional
• es un conjunto de pasos o • es un conjunto de acciones
procedimientos que deben computacionales que deben
seguirse para resolver un ejecutarse con una
problema aritmético. secuencia lógica para
• Los algoritmos matemáticos resolver un problema
que el ser humano empieza mediante operaciones
conocer en los primeros propias del Tratamiento de
años de su vida son la suma, Información
la resta, la multiplicación y
la división
• La lectura de datos
• La impresión de
1.3 ACCIONES resultados
COMPUTACIO
NALES BÁSICAS • El proceso de datos
• La selección de
alternativas
• El ciclo
• es la asignación o inserción
de datos en la memoria
RAM de la computadora. La
diferencia entre asignación
Lectura e inserción es la utilización
de datos o no de un dispositivo de
entrada, como el teclado,
para colocar el dato en la
memoria RAM.
• Es permitir que el usuario
Impresión observe, en el monitor de la
computadora o en papel, el
de estado o valor de los datos
Resultados que están almacenados en
la memoria RAM.
• Es la ejecución de
operaciones aritméticas
Proceso que permiten obtener o
de Datos calcular datos desconocidos
a partir de datos
previamente conocidos.
• es la posibilidad de
configurar diferentes
opciones mutuamente
excluyentes, que se pueden
Selección
elegir a partir de
de condiciones matemáticas;
Alternativas éstas se plantean con
operadores lógicos y
relacionales
• Es la posibilidad de configurar una opción
repetitiva y una opción diferida; estas
opciones NO son mutuamente excluyentes.
• La opción repetitiva consiste en que una o
más acciones computacionales puedan
ejecutarse en la misma secuencia y de
manera reiterada, bajo un ambiente
controlado para que eventualmente deje de
dar vueltas, impidiendo generar ciclos
El ciclo infinitos. La ejecución o no de la opción
repetitiva se plantea a partir de condiciones
matemáticas con el uso de operadores
lógicos y relacionales.
• La opción diferida consiste en una o más
acciones computacionales cuya ejecución se
postergan para después que el ciclo ha
llegado a su fin.
• Es el conjunto de reglas que
La sintaxis de permiten escribir software. Un
un lenguaje algoritmo computacional se
transforma en software haciendo
de uso de la sintaxis; a esta actividad
programación se le llama codificación. Por tanto,
podemos afirmar que un algoritmo
codificado es un programa
computacional o software.
• Es la habilidad intelectual de
analizar e interpretar un problema;
llevar ese problema a un nivel de
Programación abstracción tal que permita
de desarrollar una solución mediante
computadoras un algoritmo computacional, que
posteriormente pueda convertirse
en un código que sea interpretable
y ejecutable por una computadora.
• A cada símbolo que forma parte de los
alfabetos que permiten la comunicación
entre las personas se le llama caracter.
Estos símbolos o caracteres se combinan
entre sí para conformar palabras que
tienen una carga social y un significado en
cada cultura o comunidad.
Los • Por tanto, una palabra es un conjunto de
caracteres que tiene un significado
caracteres denotativo y connotativo.
• Los significados procuran definirse
mediante instituciones especializadas
como la Real Academia Española. El
conjunto de palabras y símbolos de
expresión permiten la existencia de los
idiomas o lenguas.
• En la década de 1960, la necesidad
de estandarización llevó a la
creación del Código Estándar
Americano para el Intercambio de
Información (ASCII o American
1.4 CÓDIGO Standard Code for Information
ASCII Interchange). La tabla del ASCII
contiene 128 caracteres con su
correspondiente número asignado.
El código ASCII permite que los
equipos TIC puedan comunicarse
entre sí.
Comunicación
Planeación
1.5 METODOLOGÍA
PARA LA SOLUCIÓN Diseño
DE PROBLEMAS
MEDIANTE Revisión del Diseño
PROGRAMACIÓN
DE Codificación
COMPUTADORAS
Revisión de la Codificación
Compilación
Prueba
La identificación de un problema, y su eventual
solución, se logra teniendo comunicación con las
personas que desean resolverlo.
La comunicación permite establecer los
requerimientos del problema, entenderlo
claramente, así como determinar con precisión los
Comunicación requisitos para su solución.
Es útil hacer un análisis mediante un enfoque de
sistemas, el cual permite identificar los datos
conocidos, los datos que se desean conocer y
cómo pueden procesarse para conocerlos.
Esta etapa concluye cuando ha quedado definido y
delimitado el alcance del software, donde se
plasma las características y funcionalidades que
tendrá o debe tener el software se va a construir.
Planeación
• La mayoría de los problemas se pueden resolver de más de una forma, por lo que es
necesario pensar y planear diferentes alternativas que permitan resolverlo.
• En la planeación deben definirse los productos de trabajo, las acciones y tareas a
realizar. Un producto de trabajo es aquel elemento que forma parte de la estructura
arquitectónica del software, por ejemplo el alcance del software o el diseño del
software. Una acción es el conjunto de tareas que producen un producto de trabajo
importante. Una tarea se centra en un objetivo pequeño pero bien definido que
produce un resultado tangible como las pruebas del software.
• Considerar las restricciones del problema como pueden ser los valores válidos que
pueden tomar los datos conocidos, es decir, cuál es su dominio; por ejemplo, el
dominio numérico para la calificación de un examen sólo puede ser de cero a cien,
cualquier otro valor no es válido. Asimismo, se debe identificar el tipo de datos o su
forma, es decir, si son numéricos, alfabéticos o alfanuméricos.
• Estimar además, la longitud final del software que se va a construir y el tiempo el costo
y el esfuerzo que se requerirá para concluirlo
• Contar con de datos de prueba que serán alimentados al software, y se compararán los
datos esperados con los observados.
• Consiste en crear o desarrollar una lista de
pasos o acciones computacionales a seguir
para la solución del problema, lo cual
permitirá tener un modelo llamado
algoritmo computacional.
• El diseño suele ser una representación
gráfica del software que se va a construir.
Diseño • Se puede implementar mediante dos
opciones: El diagrama de flujo y el
Pseudocódigo; en ambos casos se refiere a
la secuencia lógica en la que se deben
ejecutar las acciones computaciones que
permiten resolver el problema.
• Es la parte más difícil del proceso de
solución de problemas.
• Una vez que se tenga el algoritmo
Revisión del computacional hay que verificar que
sea correcto y que resuelva el
Diseño problema en la forma que se
intenta. Diseñar algoritmos en una
herramienta automática como
Raptor es útil porque permite
revisar y probar la eficacia el diseño.
• Consiste en transformar el algoritmo
computacional en líneas de texto
utilizando palabras reservadas de un
lenguaje de programación que se
conoce como programa computacional.
Esto se hace utilizando una herramienta
o software especial que permite la
escritura de código pues cuenta con un
Codificación editor de textos y un conjunto de reglas
que son parte de su sintaxis.
• También, se requiere conocer un
lenguaje de programación y su sintaxis
ya que cada acción computacional del
algoritmo se convierte a una o varias
líneas de código en el lenguaje
seleccionado.
• Todos los lenguajes de
Revisión de programación tienen sus propias
reglas las cuales deben respetarse
la para no generar errores; éstos se
Codificación pueden clasificar en errores de
sintaxis, de ejecución y de lógica.
• Una vez que se ha terminado de codificar el
algoritmo, el programa computacional se
debe compilar.
• La compilación es el proceso de verificar que
el programa esté escrito respetando las
reglas o sintaxis del lenguaje. Cuando esto
no sucede así, se deben corregir los errores
hasta que desaparezcan por completo. A
Compilación éstos se les llama errores de sintaxis. La
mayoría del software creado para permitir la
codificación de programas cuenta con una
opción de compilación o verificación
automatizada de la sintaxis.
• Cuando un código no tiene errores de
sintaxis, el compilador genera un programa
ejecutable
• También llamada pruebas unitarias
• En esta etapa el programa se ejecuta
para saber si funciona correctamente.
Durante la prueba todavía pueden
aparecen errores de ejecución o de
Prueba lógica, los cuales deben ser corregidos.
Se debe tener a la mano un grupo de
valores de prueba que generan
resultados esperados para comparar
éstos con los resultados que arroja el
programa
1.6 EL ENFOQUE DE SISTEMAS EN EL DISEÑO DE
ALGORITMOS COMPUTACIONALES
Las entrada Las Salida
del Proceso del
problema Problema
• Se refiere a la introducción
Las datos conocidos a la
Entradas computadora mediante
asignación o inserción.
del Éstos se almacenan en una
Problema porción de la memoria
RAM.
• implica la utilización de los
datos de entrada para
generar los datos de salida,
para lograr esto,
Proceso generalmente se utiliza
alguna fórmula aritmética
para calcular los datos que
se desean conocer.
• Los datos de salida, y
probablemente algunos o
Las todos de los datos de
Salidas entrada, se imprimirán en
papel o se presentarán en
del el monitor de la
Problema computadora para que el
usuario pueda utilizarlos en
la toma de decisiones.
1.7 MÉTODOS PARA EL DISEÑO DE
ALGORITMOS
Diagramas de Flujo Pseudocódigo
• Al conjunto de símbolos que • Se basa en el establecimiento
representan acciones de un conjunto de palabras
computacionales y que se clave que se refieren a las
disponen en una secuencia acciones computaciones y que
lógica para que puedan permiten describir un
ejecutar un algoritmo algoritmo computacional.
computacional se le llama Posteriormente, esta
diagrama de flujo, el cual es descripción se ajusta a la
la representación gráfica de sintaxis de un lenguaje de
un programa de programación para convertirlo
computadora. en software o programa
computacional.
• Operandos: Variable
dependiente, variables
Elementos independientes y constantes
de una • Operadores: símbolos o
Expresión caracteres que representan
un operación aritmética (+.-
matemática .*,/)
• A cada operando se le asigna
un IDENTIFICADOR o nombre
para distinguirlos unos de
otros
• Los identificadores que forman parte de
la lectura de datos son las variables
independientes o las constantes de una
fórmula matemática
• El Proceso de Datos es la ejecución de
Identificadores y los operadores aritméticos, para
finalmente, asignar el resultado a la
Acciones variable dependiente
Computacionales • Impresión de Resultados implica
mostrar, en el monitor o imprimir en
papel, mensajes y/o el estado actual de
los valores que tienen los
identificadores que están almacenados
en la memoria RAM
1.8 LAS EXPRESIONES MATEMÁTICAS
Tabla 1.2 Visualización de fórmulas matemáticas bajo el enfoque de sistemas
Datos de Entrada Datos de Salida
Fórmula (Variables Independientes (Variable Dependiente)
Matemática o Constantes)
C=A+B A, B C
C = BA A, B X
Z = XY X, Y Z
A = r 2 ,r A
Esta visualización es desde el punto de vista de la ciencia matemática
Operadores Matemáticos Binarios
Tabla 1.3. Operadores Matemáticos Binarios
Operador Acción
+ Suma
- Resta
* Multiplicación
/ División (cociente)
% División Entera (residuo)
^ Potencia
1. Se le llama subexpresión a una parte de la fórmula completa.
Todas las subexpresiones deben ser evaluadas por separado.
2. Para alterar los niveles de prioridad se pueden usar
paréntesis. Las subexpresiones que se anotan entre paréntesis
tienen prioridad por encima de todas las demás.
3. Si hay varias subexpresiones se evalúan de izquierda a
derecha.
1.9 REGLAS DE 4. Si hay subexpresiones que están dentro de otras
subexpresiones se evalúa de la más interna a la más externa.
PRIORIDAD 5. La regla de prioridad de los operadores dice que los
operadores en la misma subexpresión son evaluados en el
PARA ESCRIBIR siguiente orden:
EXPRESIONES i.
ii.
Los operadores unarios, doble más o doble menos.
Los operadores binarios de multiplicación y división.
MATEMÁTICAS 6.
iii. Los operadores binarios de suma y resta.
La regla de la asociatividad dice que los operadores unarios en
la misma subexpresión y en el mismo nivel de prioridad, tales
como ++ y - -, son evaluados de derecha a izquierda
(asociatividad a la derecha). Por otro lado, los mismos
operadores binarios en la misma subexpresión y en el mismo
nivel de prioridad, tales como + y -, son evaluados de
izquierda a derecha (asociatividad a la izquierda).
Fórmula matematica vs.
Fórmula computacional
Tabla 1.4 Ejemplos de conversión de fórmula matemática a fórmula computacional
Fórmula Matemática Fórmula Computacional
D=A+B+C D=A+B+C
D=A–BC D=A–B*C
C=A/B
D=A /(B+C)
D=(A+B)/C
d = b–4ac d=b^2–4*a*c
M= 3*X^2/(Y–3)
y−b
m= m=(y–b)/(x–c)
x −c
3X
K= K = 3 * X / ( 1 + sqrt( X ) )
1+ X
Todo software durante su vida útil
debe recibir mantenimiento para que
funcione adecuadamente. Por eso, una
de las preocupaciones de la Ingeniería
de Software es disminuir el costo de
1.10 REGLAS DE mantenimiento porque suele ser alto
CALIDAD PARA en tiempo y costo.
DAR NOMBRE A
IDENTIFICADORES
DE VARIABLES Y En el presente libro iremos
CONSTANTES
presentando reglas de calidad en la
escritura de algoritmos que tienen
como objetivo a generar código
estandarizado que facilita el
mantenimiento del software
1. Las variables deben tener un nombre
Reglas de significativo, es decir, que con el puro
nombre se pueda o ayude a deducir a qué se
calidad 2.
refiere.
Evite abreviaciones o variables de una sola
letra.
para 3. El primer carácter del nombre de la variable
debe ser una letra en mayúscula, las demás
nombres en minúscula. Cuando dos palabras
describan mejor a una variable, la primera
de letra de la segunda palabra deberá ser
mayúscula.
4. Si el nombre de la variable requiere un
Variables número, escríbalo continuo a las letras. Dele
preferencia a usar el número al final del
nombre.
5. No utilice acentos en las palabras.
Ejemplo nombres de variables
Tabla 1.5 Ejemplos aceptados de nombres de variables
Matricula ValorEntero2 PagoNeto1
Nombre ContadorPares PagoNeto2
Salon PagoBruto Salario1Parcial
ValorEntero1 ApellidoPaterno Salario2Parcial
• Los nombres de las constantes deben ser
significativo, es decir, que con el puro nombre
Reglas de se pueda o ayude a deducir a qué se refiere.
• Evite abreviaciones o constantes de una sola
calidad letra.
• Todos los caracteres alfabéticos que forman
para parte del nombre de la constante deben ser
letras mayúsculas.
nombres • Si el nombre de la constante requiere un
número, escríbalo continuo a la letras. Dele
de preferencia a usar el número al final del
nombre.
Constantes • Cuando sea necesario que el nombre de la
constante tenga más de una palabra, éstas se
separarán utilizando un guión bajo.
• No utilice acentos en las palabras.
Ejemplo de nombres de constantes
Tabla 1.6 Ejemplos aceptados de nombres de constantes
PI VELOCIDAD_LUZ ERROR_ESTADISTICO
GRAVEDAD GRAVEDAD_METRICA1 GRAVEDAD1_METRICA
VALOR_MAXIMO GRAVEDAD_METRICA2 GRAVEDAD2_METRICA
VALOR_MINIMO GRAVEDAD_ANGLOSAJON IMPUESTO_VALOR_AGREGADO
METRO KILOGRAMO LITRO
1. Coloque espacios a cada lado de un
operador binario.
2. Cuando utilice paréntesis deje un espacio en
blanco antes y después de los operandos.
1.11 REGLAS 3. Cuando realice divisiones con expresiones
cuyo de denominador pueda ser CERO, o
DE CALIDAD que el radicando de una raíz cuadrada pueda
ser negativo; haga una prueba explícita de
PARA ESCRIBIR este caso y manéjela de manera apropiada
EXPRESIONES de su programa (tal como la impresión de un
mensaje de error), en lugar de permitir que
MATEMÁTICAS ocurra un error de ejecución o fatal.
4. Otorgue un valor inicial a las variables
contadoras y acumuladoras para disminuir la
probabilidad de resultados incorrectos y
evitar errores de ejecución o de lógica.