Fundamentos de Programacion ORT
Fundamentos de Programacion ORT
Fundamentos de Programacion ORT
Objetivos
Pretendemos que al finalizar de estudiar esta unidad el alumno logre:
● Comprender qué es la programación.
● Realizar el análisis de problemas sencillos.
● Generar estrategias de resolución básicas.
● Utilizar pseudocódigo.
Usted debe tener presente que los contenidos presentados en el módulo no ahondan
profundamente en el tema, sino que pretenden ser un recurso motivador para que, a través
de la lectura del material, la bibliografía sugerida y el desarrollo de las actividades
propuestas alcance los objetivos planteados.
1
Instituto de Tecnología ORT
Carrera de Analista de Sistemas
Materia: Fundamentos de la Programación
Algoritmos - Introducción
Como ya mencionamos, un algoritmo es un conjunto ordenado de instrucciones que,
siguiendo un método y/o modelo planteado por un paradigma1, sirve para llevar a cabo la
resolución de un problema.
Aunque no lo sepamos, en la vida cotidiana estamos ejecutando algoritmos continuamente.
Es decir, seguimos un conjunto de instrucciones implícitas que alguna vez aprendimos, y lo
hacemos prácticamente de modo automático. Por ejemplo, cada vez que cocinamos algún
plato de pasta, sabemos que debemos seguir una cantidad de instrucciones que ya
conocemos, pero que pertenecen a una receta.
Veamos, primero debemos poner el agua a hervir, luego le agregamos sal y, si queremos,
un poco de aceite. Cuando hierve, agregamos los fideos. Esperamos a que pasen 10
1
Un paradigma de programación es un modelo básico de diseño e implementación de programas, que permite
desarrollar programas conforme a ciertos principios o fundamentos específicos que se aceptan como válidos. En
el sitio de la Universidad de Murcia (http://www.um.es/docencia/barzana/IAGP/Iagp3.html#BM3) podemos leer
“Un paradigma de programación es un modelo básico de diseño y desarrollo de programas, que permite producir
programas con unas directrices específicas. (…) Un paradigma de programación es una colección de modelos
conceptuales que juntos modelan el proceso de diseño y determinan, al final, la estructura de un programa”.
2
Instituto de Tecnología ORT
Carrera de Analista de Sistemas
Materia: Fundamentos de la Programación
minutos, apagamos la hornalla, ponemos manteca en el plato, colamos los fideos y los
servimos.
Recordemos que en este caso, el problema era cocinar los fideos. Teniendo en cuenta este
ejemplo, podemos ver que si la receta está escrita en español, inglés o italiano, no es
importante, ya que el algoritmo plantea la solución del problema sin importar en que lenguaje
o idioma esté escrito.
Basta que quien deba ejecutarlo, entienda ese lenguaje, para poder ejecutar las acciones
indicadas.
La ejecución puede llevar a la resolución correcta del problema, o bien mostrarnos un error.
En este caso, debemos volver a las etapas anteriores, para encontrar si el error se produjo
en la etapa de análisis o de codificación y corregirlo. Este proceso puede realizarse varias
veces hasta depurar el programa.
Pseudocódigo
El pseudocódigo es una representación de instrucciones expresadas en lenguaje natural.
Tienen un orden específico que nos marca el rumbo para resolver nuestro problema.
Ejemplos
Ejemplo 1
Primer ejemplo de resolución de un problema a través de pseudocódigo
Para comenzar a tratar los conceptos de resolución de problemas, utilizaremos una situación
que se puede dar en lo cotidiano.
Para plantear la solución de un problema primero debo analizar el enunciado del problema, y
en caso de hacer falta, puedo mencionar ciertos puntos que aclaren los datos que creo
pueden faltar. De esta manera “completo” el enunciando para poder encarar la propuesta de
una solución.
Entonces, se definen hipótesis cuando los datos del enunciado no son suficientes para la
resolución del problema.
Hipótesis
Mi vecina del 9º B habitualmente está en su casa.
Datos
¿Qué datos tengo? De la lectura del enunciado surge que:
Mi vecina del 9º B tiene una copia de mis llaves.
Pasos de la solución
● Comunicarme con mi vecina.
● Explicarle la situación.
● Pedirle que me alcance mis llaves.
4
Instituto de Tecnología ORT
Carrera de Analista de Sistemas
Materia: Fundamentos de la Programación
Se trata de una enumeración detallada y ordenada de los pasos a seguir para resolver un
problema.
Hemos expresado las líneas de cada paso con un número pues las mismas expresan una
secuencia. Esto quiere decir que el orden de la ejecución es línea a línea de acuerdo a los
números.
Con este primer ejemplo, aprendimos a detallar paso a paso un problema (como en el caso
de la receta de cocina) y que al finalizar, este conjunto de instrucciones, he solucionado mi
problema.
Incluso el comentario “en dónde vivo solo” es una aclaración implícita de que no hay nadie
en mi casa que pueda abrirme la puerta.
Ejemplo 2
Toma de decisión. Segundo ejemplo de resolución de un problema a través de
pseudocódigo.
Vamos a modificar el enunciado del ejemplo anterior para introducir la toma de decisión.
5
Instituto de Tecnología ORT
Carrera de Analista de Sistemas
Materia: Fundamentos de la Programación
Hipótesis
Mi vecina del 9º B, siempre duerme en su casa.
Datos
Puede ser que no sea aún las 22 Hs.
Mi vecina llega muchas veces a su casa pasadas las 22:30 Hs.
Para resolver este problema nos surge un problema: puede que mi vecina no esté en su
casa a la hora que llegamos.
Pueden pasar dos cosas: que mi vecina esté o no esté. En cada caso deberé hacer algo
diferente. Es posible que en cada caso deba hacer más de una actividad.
En este caso debemos verificar si la vecina nos atiende el timbre, y en caso de no hacerlo,
por ejemplo, ir a tomar un café.
Pasos de la solución
1. Comunicarme con mi vecina
1.1. Tocar el timbre a mi vecina
1.2. Si (mi vecina atendió el timbre)
1.2.1. Entonces
1.2.1.1. Pedirle que baje a abrirme
1.2.1.2. Explicarle la situación
1.2.1.3. Pedirle que me alcance mis llaves
1.2.1.4. Aguardar que me entregue las llaves
1.2.1.5. Agradecerle mucho
1.2.1.6. Ingresar a mi casa
1.2.2. Si no atendió el timbre
1.2.2.1. Ir a tomar un café
6
Instituto de Tecnología ORT
Carrera de Analista de Sistemas
Materia: Fundamentos de la Programación
La instrucción 1.2 y todas las sub-instrucciones que la componen, forman lo que se llama un
si condicional.
Esta estructura nos sirve para generar distintas resoluciones para una situación particular.
Si la condición es verdadera (Mi vecina atendió el timbre), entonces se llevarán a cabo las
subinstrucciones 1.2.1.1 a 1.2.1.6 (en general todas las indicadas como 1.2.1.x).
Observemos que se utiliza una tabulación para indicar un incremento de nivel, esto permite
establecer jerarquías en el pseudocódigo y permite identificar fácilmente el orden.
Sabemos que la instrucción 1 está compuesta por las instrucciones 1.1, 1.2 y 1.3,
generalizándolo como 1.x donde x es cualquier número entero que marca el orden de la
instrucción.
A su vez, las instrucciones 1.2 y 1.3 pueden a su vez estar compuestas por otro conjunto de
instrucciones; para indicarlo, agregamos un número más en la numeración y tabulamos
nuevamente. Cada vez que tabulamos, decimos que estamos indentando2.
La situación que se planteó en este ejemplo (“toma de decisión”) se puede dar muchas
veces en el programa. Incluso se puede dar de forma anidada.
Mi vecina puede no estar antes de las diez y media de la noche y además la debo llamar al
celular o la casa de su hija.
En este caso debo determinar si es más temprano de esa hora, y en caso de ser así debo
llamar primero a la casa de la hija y si no atiende allí debo llamar a su celular. En este caso
son procesos de selección anidados.
Otro ejemplo: debo llamar a mi vecina y puede ser que mi teléfono celular se haya quedado
sin batería. En este caso debo verificar esto e ir a buscar un teléfono público si no tengo
carga. Se trata de varios procesos de selección en un mismo problema.
2
La indentación se realiza insertando tabulaciones a la izquierda (se corre el texto hacia la derecha), generando
grupos lógicos que permitirán hacer un análisis más simple y encontrar posibles errores.
7
Instituto de Tecnología ORT
Carrera de Analista de Sistemas
Materia: Fundamentos de la Programación
Ejemplo 3
Ciclo Mientras (condición) hacer – fin-Mientras
Continuando con el ejemplo anterior -y como último ejemplo para cerrar la idea de
algoritmos y pseudocódigo- vamos a suponer que comunicarme con mi vecina puede
costarme más trabajo, con lo cual tendré que probar varias veces hasta contactarme con
ella. Podría, por ejemplo, tocarle el timbre y llamarla al celular hasta lograr la comunicación.
Hipótesis
Mi vecina del 9º B, tiene una copia de mis llaves
Su celular siempre está prendido.
Datos
No son aún las 22 hs y mi vecina llega muchas veces a su casa pasadas las 22:30 hs.
Cuento con su número de teléfono celular.
Pasos de la solución
1. Comunicarme con mi vecina
1.1. Tocar el timbre a mi vecina
1.2. Si (mi vecina atendió el timbre)
1.2.1. Entonces
1.2.1.1. Pedirle que baje a abrirme
1.2.2. si no atendió el timbre
1.2.2.1. escribir el número de mi vecina en el celular
8
Instituto de Tecnología ORT
Carrera de Analista de Sistemas
Materia: Fundamentos de la Programación
La instrucción 1.2.2.1 indica que las próximas subinstrucciones van a repetirse mientras que
la condición mi vecina no respondió, se evalúe como verdadero. La instrucción 1.2.2.4 indica
el fin de las subinstrucciones. Esta instrucción marca el retorno al origen del ciclo, el cual
será evaluado nuevamente hasta que el resultado de la condición sea falso. En ese
momento, continua el flujo del programa con la siguiente instrucción al fin-mientras.
Las instrucciones 1.2.2.1 y 1.2.2.2 son lo que se llama una lectura adelantada. Antes de
comenzar el ciclo, hacemos una primera evaluación, cuyo resultado puede dar falso (que mi
vecina atienda) y por lo tanto no precisar hacer un ciclo.
En el ejemplo:
● si mi vecina me responde la primera vez que la llamo, no preciso intentarlo
nuevamente.
● si mi vecina no responde, entonces debo intentarlo varias veces, por lo tanto se
ingresa en la estructura repetitiva.
Debemos leer con cuidado el ejemplo para poder comprender cómo vuelvo a ejecutar las
líneas de más arriba.
Notemos que entre el “mientras” y el “fin-mientras” hay un conjunto de líneas que serán
ejecutadas tantas veces (posiblemente, más de una) como sea necesaria, hasta que se
cumpla la condición o situación que esperamos y que está asociada al “mientras”.
Siguiendo con el mismo ejemplo, cuando recibimos una llamada telefónica que no queremos
atender, el contestador tarda algunos rings hasta que atiende automático. Esto pasa pues
tiene programado un ciclo mientras fin-mientras, hasta que la cantidad de rings sea seis.
En síntesis
Ya disponemos de tres herramientas para expresar las estrategias para resolver problemas:
● la secuencia: permite ejecutar paso a paso en forma ordenada un conjunto de
instrucciones;
9
Instituto de Tecnología ORT
Carrera de Analista de Sistemas
Materia: Fundamentos de la Programación
Es importante que antes de comenzar a tratar de describir los pasos a seguir en la solución
(diagrama) nos detengamos a pensar en una estrategia de resolución. Esto quiere decir que
además de detectar los datos y los objetivos debemos tratar de escribir en palabras (no en
un diagrama) cómo vamos a encarar la solución.
10