Capı́tulo 2
ALGORITMOS Y
PROGRAMAS EN C++
2.1. Resolución de problemas por computadora
Aprender a programar significa resolver problemas haciendo uso de una compu-
tadora y de algún lenguaje de programación.
La resolución de un problema tiene tres fases:
1. Análisis del problema.
2. Diseño del algoritmo.
3. Resolución del algoritmo mediante computadora.
Figura 2.1: Fases de resolución
2.1.1. Análisis del problema
Esta fase ayuda a comprender en detalle el problema, ya que es posible definir el
problema, etapa que concluye con la especificación de entradas y salidas. Es decir:
Define el problema.
Especifica las entradas (para resolver el problema).
Especifica las salidas (para proporcionar resultados para la solución).
9
10 CAPÍTULO 2. ALGORITMOS Y PROGRAMAS EN C++
2.1.2. Diseño del algoritmo
Un algoritmo es un método para resolver un problema, es decir es el conjunto de
instrucciones que especifican la secuencia de operaciones a realizar para resolver
un problema. En otras palabras, un algoritmo es una fórmula para la resolución
de un problema.
Las caracterı́sticas fundamentales de un algoritmo son:
a) Debe ser preciso y ordenado.
b) Debe estar bien definido, si se sigue un algoritmo dos veces se debe obtener el
mismo resultado.
c) Debe ser finito, debe terminar en algún momento.
La partes de un algoritmo son tres:
Entrada Información que se proporciona al algoritmo
Proceso
Salida Información producida por el algoritmo
Los problemas complejos se deben dividir en subproblemas y estos en otros más
simples, a esto se denomina Diseño descendente.
El primer esbozo del algoritmo es incompleto e indican algunos pasos, estos se
pueden ampliar con más detalle, a este proceso se denomina Refinamiento del
algoritmo.
Se debe representar este algoritmo por algún método o herramienta de pro-
gramación.
[Link]. Escritura de un algoritmo
Primero se realiza un algoritmo muy general, luego se descompone el mismo en
pasos muy simples (refinamiento), para la escritura se debe utilizar la indentación,
lo cual facilita la lectura posterior.
Un algoritmo consta de dos componentes:
Cabecera de programa o Un algoritmo empieza con la palabra Algoritmo
algoritmo seguido del nombre del programa.
Bloque algoritmo Es el resto del programa, sección de declaraciones
y sección de acciones.
2.1. RESOLUCIÓN DE PROBLEMAS POR COMPUTADORA 11
En la cabecera del algoritmo van las declaraciones de variables y constantes que se
utilizan en el algoritmo, listando sus nombres especificando sus tipos. Las variables
empiezan con la palabra reservada var y las constantes con const.
[Link]. Representación gráfica de algoritmos
Es un método que independiza el algoritmo del lenguaje de programación, además
permite una fácil codificación, los métodos usados son:
1. Diagrama de flujo
2. Diagrama N-S (Nassi – Schneiderman)
3. Pseudocódigo
4. Lenguaje español
5. Fórmulas
Diagrama de flujo
Denominado también Flor Chart, utiliza sı́mbolos estándar unidos por lı́neas de
flujo, que indican la secuencia en la que se deben ejecutar.
SÍMBOLO FUNCIÓN SÍMBOLO FUNCIÓN
Inicio/Fin Entrada desde
teclado
Entrada/Salida Salida por
pantalla
Proceso o
Subprograma
asignación
Decisión Decisión
múltiple
Conector en la
misma o dife- Lı́neas de flujo
rente pág.
Es un lenguaje de especificación de algoritmos, utiliza palabras reservadas en inglés
o español, además que pueden ser fácilmente traducidos a lenguajes estructurados.
12 CAPÍTULO 2. ALGORITMOS Y PROGRAMAS EN C++
(Pascal, Turbo Basic, C++, etc).
Al igual que los algoritmos utiliza indentación.
start inicio stop parada
end fin if-then-else si-entonces-sino
read leer while-wend mientras-fin mientras
write escribir repea-until repetir-hasta que
[Link]. Prueba de escritorio
Denominado también prueba de laboratorio, etapa en la que se enumeran en colum-
nas todas las variables utilizadas en el algoritmo y siguiendo el flujo del programa
(del diagrama de flujo o pseudocódigo) desde el inicio hasta el final del algoritmo,
se anotan los diferentes valores que toman las variables hasta llegar a la salida que
es la última columna y se verifica el resultado.
2.1.3. Resolución del algoritmo mediante computadora
Esta última etapa esta compuesta de las siguientes fases:
1. Codificación del algoritmo.
2. Ejecución del programa.
3. Comprobación del programa.
Para la codificación del algoritmo se utiliza un lenguaje de programación, el cuál
hace posible la comunicación entre el programador y la computadora.
2.2. Conceptos de un programa
Un programa es un conjunto de instrucciones que ejecutan una tarea determinada,
se considera también un medio para conseguir un fin, el fin es la solución del
problema.
El proceso de programación es el proceso de solución de problemas y el desarrollo
de un programa requiere de las siguientes fases:
1. Definición y análisis del problema.
2. Diseño del algoritmo.
a) Diagrama de flujo.
b) Pseudocodigo.
3. Codificación del programa.
2.3. PARTES DE UN PROGRAMA 13
4. Depuración y verificación del programa.
5. Documentación.
6. Mantenimiento.
2.3. Partes de un programa
Un programa tiene las siguientes partes:
Entrada
Salida
Algoritmo de resolución (Técnicas empleadas para obtener salidas a partir
de las entradas)
Entrada Es el proceso de introducir información a la memoria del
ordenador por dispositivos de entrada (teclado, discos, etc)
se denomina operación de lectura o acción leer.
Salida Se presenta en dispositivos de salida (pantalla, impresora,
discos, etc), se denomina operación de escritura o acción
escribir.
2.4. Instrucciones y tipos de instrucciones
Las instrucciones son las representaciones de los diferentes pasos o acciones de un
algoritmo. Las acciones o instrucciones resuelven el programa deben ser escritas y
posteriormente almacenadas en la memoria del ordenador en el mismo orden en
que han de ejecutarse, es decir, en secuencia.
PROGRAMAS
Lineal Las instrucciones se ejecutan secuencialmente sin bifurcaciones de:
Inst 1 .. Inst 2 . . . .... Inst n en un programa
Acción 1.. Acción 2 ...... Acción n en un algoritmo
No lineal La secuencia se interrumpe mediante instrucciones de bifurcación
Las instrucciones básicas son:
1. Instrucciones de inicio/fin inicio/fin
14 CAPÍTULO 2. ALGORITMOS Y PROGRAMAS EN C++
2. Instrucciones de asignación inicio/fin
3. Instrucciones de lectura leer
4. Instrucciones de Inicio/fin escribir
5. Instrucciones de Inicio/fin
[Link]. Instrucciones de bifurcación
Bifurcación hacia adelante (positiva)
Bifurcación hacia atrás(negativa)
Bifurcación incondicional
Se bifurca el flujo del programa sin ninguna condición, siempre que el flujo pase
por la instrucción (Ir a).
2.5. ELEMENTOS BÁSICOS DE UN PROGRAMA 15
Bifurcación condicional
La bifurcación depende del cumplimiento de una determinada condición.
2.5. Elementos básicos de un programa
Los elementos básicos de un programa o algoritmo son:
Palabras reservadas Son palabras que realizan una instrucción en un pro-
grama (una acción en un algoritmo), por lo que no
pueden ser utilizados como identificadores.
Identificadores Son los nombres de variables, una variable se identi-
fica por su nombre que lo asigna y tipo de variable,
los nombres deben tener relación con el dato que re-
presentan. El primer carácter debe ser una letra.
Caracteres especiales Son caracteres que no son dı́gitos numéricos ni letras
pero que se utilizan para separar instrucciones, in-
gresar comentarios como por ejemplo la coma, apos-
trofe, etc.
16 CAPÍTULO 2. ALGORITMOS Y PROGRAMAS EN C++
Constantes Las constantes son valores que no cambian durante
el desarrollo del algoritmo o ejecución del programa.
Constantes numéricas (enteras o reales)
Constantes de cadena o carácter
Constantes lógicas (verdadero o falso)
Variables Las variables son valores que cambian durante el de-
sarrollo del algoritmo o ejecución del programa.
Variables numéricas (enteras o reales)
Variables de cadena o carácter
Variables lógicas (verdadero o falso)
Expresiones Son combinaciones de constantes, variables y sı́mbo-
los de operación y son:
Expresiones aritméticas
Son iguales a las fórmulas matemáticas y sus opera-
dores tienen la siguiente prioridad:
Exponenciación
Multiplicación/división
División entera/módulo
Suma/resta
Expresiones lógicas
Utilizan operadores lógicos (not, and, or) y operado-
res relacionales (menor que, mayor que, igual, menor
o igual que, mayor o igual que, diferente de)
Expresiones de carácter
Utilizan los datos tipo carácter o cadena
Instrucciones Las instrucciones son:
Instrucciones de Inicio/fin
Instrucciones de asignación
Instrucciones de lectura
Instrucciones de escritura
Instrucciones de bifurcación
Otros elementos
Bucles.
Contadores.
Acumuladores.
Interruptores.
Estructuras.
Secuenciales.
Selectivas.
Repetitivas.
2.5. ELEMENTOS BÁSICOS DE UN PROGRAMA 17
2.5.1. Bucles
Denominado también lazo (loop). Es un segmento de algoritmo o programa, cuyas
instrucciones se repiten un determinado número de veces mientras se cumple una
cierta condición, puede ser:
Bucle finito.
Bucle infinito (no es recomendable).
Las partes de un bucle son:
Decisión.
Cuerpo del bucle.
Salida del bucle.
Los bucles pueden ser anidados o independientes, los bucles anidados son aque-
llos que están dispuestos de tal modo que unos son interiores a otros.
Bucles independientes Bucles anidados Bucles cruzados
Los bucles cruzados no se utilizan en el diseño del algoritmo.
2.5.2. Contadores
Los contadores sirven para contar suceso o acciones internas de un bucle, por lo
que son utilizados para controlar un bucle.
Es una variable cuyo valor se incrementa o decrementa en una cantidad constante
en cada repetición (iteración)
18 CAPÍTULO 2. ALGORITMOS Y PROGRAMAS EN C++
2.5.3. Acumuladores
Es una variable que almacena cantidades variables resultantes de sumas sucesivas.
Se diferencia de los contadores ya que el incremento o decremento es variable.
2.5.4. Interruptores
Denominado también conmutador (switch), indicador o bandera (flan). Es una
variable que puede tomar dos valores diferentes 1 y 0 a lo largo del programa.
2.5.5. Estructuras
Existen tres tipos de estructuras:
1. Estructura secuencial.
2. Estructura selectiva.
3. Estructura repetitiva.