Documentos de Académico
Documentos de Profesional
Documentos de Cultura
S EMANA 2
F UNDAMENTOS DE P ROGRAMACIÓN
U NIDAD 1
A LGORITMOS
• P ROBLEMAS Y ALGORITMOS
• PARTES Y CARACTERÍSTICAS DE LOS ALGORITMOS
Índice general
1 Información de la unidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Bibliografía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1. Información de la unidad
Objetivo
Analizar los problemas de la vida real, mediante el estudio de casos teórico-prácticos que
puedan representarse como algoritmos.
Tema
Algortimos
Subtemas
• El computador
• La memoria del computador
• El programa
• Problemas y algoritmos
• Partes y características de los algoritmos
Unidad
Introducción a la programación
2.1 El problema
En la vida diaria las personas llevan a cabo actividades repetitivas que corresponden a una
serie de pasos ordenados para resolver un problema específico. Algunos ejemplos de actividades
diarias incluyen cepillarse los dientes, ducharse y prepararse para ir al trabajo. Cada una de estas
actividades sigue una secuencia de pasos definida. A este conjunto de pasos diseñados para abordar
un problema determinado se lo conoce como algoritmo.
Los algoritmos son frecuentes en las matemáticas y la lógica, y son la base de la fabricación de
manuales de usuario, folletos de instrucciones, entre otros. En matemáticas, uno de los algoritmos
más conocidos es el atribuido a Euclides para obtener el máximo común divisor de dos enteros
positivos, o el llamado “método de Gauss” para resolver sistemas de ecuaciones lineales.
Recursos:
1 cepillo de dientes
1 crema dental
1 vaso con agua
Procedimiento:
1 aplicar la crema sobre la cabeza del cepillo
2 realizarse el cepillado dental
3 cepillar la lengua
4 enjuagarse la boca
5 enjuagar el cepillo
6 guardar el cepillo
7 guardar crema dental
8 guardar vaso
2.1 El problema 5
Resultado:
Dientes limpios
El Ejemplo 2.1 muestra el algoritmo para cepillarse los dientes. Esta solución no es la única
forma para llevar a cabo el cepillado dental; más bien, es una de las muchas posibles. Sin embargo,
independientemente de la solución elegida, es necesario seguir las etapas mostradas en la Figura
2.1 para resolver cualquier problema.
Problema
Etapa 1 En esta etapa se realiza un análisis del problema que permitan determinar los recursos
necesarios para plantear la solución.
Etapa 2 Esta estapa establece la secuencia de pasos a seguir y se determina la salida o resultado
que se obtendrá tras la ejecución de los pasos dados. Es decir, se define el procedimiento y la
salida esperada.
Etapa 3 Finalmente, en esta etapa se verifica que el algoritmo cumple con su objetivo; es decir,
asegurarse que resuelve el problema. Esta verificación se la realiza con datos representativos
al problema en cuestión.
Ejemplo 2.2. Crear un algoritmo que permita comprar en una tienda una camisa de fiesta.
Recursos:
presupuesto
modelo
talla
Procedimiento:
1 entrar a la tienda
2 ir a la secci ó n de camisas de fiesta
3 tomar una camisa
4 conseguir el modelo adecuado
5 comprobar la talla adecuada
6 comprobar que se tiene el presupuesto adecuado
7 comprar la camisa
Resultado:
Camisa de fiesta comprada
Entrada Se refiere a los datos de entrada –recursos– que el algoritmo necesita para operar. Estos
datos serán solicitados por el computador al usuario.
Proceso Corresponde a la secuencia de órdenes que el algoritmo realizará para obtener el resultado
–procedimiento–. Estas órdenes harán uso de los datos de entrada.
Salida Son los resultados del proceso ejecutado, una vez terminada la ejecución del algoritmo.
Los algoritmos poseen diferentes características que pueden depender de varios factores, tales
como el nivel de detalle que se quiera o se requiera dar al algoritmo, de la experiencia de la persona
quien lo realiza o del talento de quien lo escribe, entre otros. Sin embargo, independientemente de
la solución propuesta, todo algoritmo debe tener las características que se presentan en la Figura
2.3.
P RECISOS C ONCRETOS
I NDEPENDIENTES
F INITOS
DEL LENGUAJE
Precisos Los algoritmos han de ser precisos; es decir, no pueden ser ambiguos o subjetivos.
Ordenados Los algoritmos deben establecerse en una secuencia precisa y exacta, de esta manera
su lectura tendrá sentido en la resolución del problema.
Finitos Toda secuencia de algoritmos ha de terminar en algún determinado punto y dará el resultado
esperado; es decir, no puede prolongarse hasta el infinito.
Concretos Todo algoritmo debe ofrecer un resultado en base a las funciones que cumple.
Definidos Un mismo algoritmo, cuando se le proporcionan los mismos elementos de entrada dará
siempre los mismos resultados.
Independientes del lenguaje Los algoritmos son independientes de los lenguajes de programa-
ción, ya que que un mismo algoritmo puede ser implementado en diferentes lenguajes. En
otras palabras, se trata de un diseño previo a la programación.
El Ejemplo 2.3 presenta un algoritmo, en donde se contemplan los tres componentes que debe
tener un algoritmo.
Ejemplo 2.3. Se necesita crear un algoritmo que calcule el promedio de tres valores enteros
ingresados por el usuario y luego muestre el resultado al usuario.
2.2 Diagramas de flujo 7
Algoritmo 2.1.
El algoritmo del Ejemplo 2.3 correspondiente es el siguiente:
Entrada:
• primer valor
• segundo valor
• tercer valor
Proceso:
1 Solicitar al usuario que ingrese el primer valor
2 Solicitar al usuario que ingrese el segundo valor
3 Solicitar al usuario que ingrese el tercer valor
4 sumar los primer valor , segundo valor y tercer valor
5 promediar la suma para 3
6 presentar el promedio
Salida:
• promedio
Un algoritmo puede expresarse de las siguientes maneras:
• Lenguaje natural (suele ser ambiguo, pero es bastante útil para problemas simples)
• Pseudocódigo
• Diagramas de flujo
• Programas en lenguajes de programación
2.2 Diagramas de flujo
Un diagrama de flujo, o también llamado flujograma, es una representación gráfica de un
proceso o algoritmo que muestra las diferentes etapas, pasos o acciones que lo componen y cómo
se relacionan entre sí.
En un diagrama de flujo se emplean símbolos y conectores para representar los diferentes ele-
mentos de un algoritmo. El Cuadro 2.1 muestra los símbolos comunes utilizados en los flujogramas
que se tratarán en este libro.
Los diagramas de flujo representan la solución gráfica de un algoritmo y se componen de los
mismos elementos que se muestran en la Figura 2.2, a los que se añaden los símbolos que indican
el inicio y fin del proceso. La Figura 2.4 muestra el proceso a seguir en la construcción de un
flujograma.
2.2 Diagramas de flujo 8
Símbolo Descripción
Representa el punto inicial o final del proceso.
Inicio/Fin
Decisión
Inicio
Lectura
Proceso
Salida
Fin
Ejemplo 2.4. Considere el Algoritmo 2.1 del Ejemplo 2.3, que requiere promediar tres valores
enteros y mostrar su resultado al usuario. El diagrama de flujo correspondiente es el siguiente:
2.3 Pseudocódigo 9
Inicio
suma ← valor1+valor2+valor3
promedio ← suma/3
promedio
Fin
Diagrama de flujo 2.1.
Nótese que valor1, valor2, valor3, suma y promedio son identificadores de variables (o
simplemente variables) que el algoritmo utilizará para almacenar valores. Además, el símbolo
“←” indica que el valor calculado a su derecha será asignado a la variable del lado izquierdo.
2.3 Pseudocódigo
El pseudocódigo (o lenguaje de descripción algorítmico) es una descripción de alto nivel
compacta e informal del principio operativo de un programa informático o algoritmo. Es un
lenguaje intermedio entre el lenguaje natural y cualquier lenguaje de programación, tal como C,
Java, Python, entre otros.
En este libro se ha adoptado una notación para la escritura de los algoritmos que está basada en
la sintaxis del lenguaje de programación C.
La elección de utilizar el lenguaje C se debe a su rigurosidad y estructura estricta en la
programación. Esto obliga a los participante a desarrollar algoritmos siguiendo una metodología
precisa, lo que permitirá comprender los fundamentos de programación de manera sólida. Además,
esta experiencia obtenida les facilitará la transición hacia otros lenguajes de programación en el
futuro, demandando un mínimo esfuerzo para que puedan adaptarse a nuevas sintaxis y conceptos.
El detalle de la notación a usar será descrito progresivamente, conforme avance su lectura.
Estructura de un pseudocódigo
La definición de un algoritmo en pseudocódigo tendrá la siguiente estructura:
hidentificador-algoritmo:i
hvari
hvariables de entradai
hbegini
hinstruccionesi
hendi
en donde,
identificador-algoritmo: es el nombre que se le asigna al algoritmo para diferenciarlo de
otros.
2.3 Pseudocódigo 10
var: palabra reservada utilizada para declarar las variables que usarán el proceso.
begin· · · end: estas palabras reservadas encierran el bloque de instrucciones que ejecutará el
algoritmo.
Definición 2.2 (Bloque). Un bloque consiste en un conjunto de instrucciones que está delimitado
por las palabras reservadas begin y end.
El Ejemplo 2.5 muestra el algoritmo para calcular el promedio de tres valores numéricos,
representado en pseudocódigo.
Pseudocódigo 2.1.
promedio-números:
var
valor1, valor2, valor3
begin
1 valor1 ← 10
2 valor2 ← 5
3 valor3 ← 9
4 suma ← valor1 + valor2 + valor3
5 promedio ← suma / 3
end
De manera similar a lo explicado en el Diagrama de Flujo 2.1, las variables valor1, valor2,
valor3, suma y promedio empleadas en el Pseudocódigo 2.1 se utilizarán para almacenar
valores.
Ejemplo 2.6. Pseudocódigo que expresa de forma inapropiada el promedio de tres valores.
Pseudocódigo 2.2.
promedio-números:
var
valor1, valor2, valor3
begin
1 valor1 ← 10
2 valor2 ← 5
3 valor3 ← 9
4 promedio ← avg ( valor1 , valor2 , valor3 )
end
2.4 Ejercicios 11