You are on page 1of 105

MÓDULO

MÓDULO

Esta obra está bajo una licencia Attribution-NonCommercial-ShareAlike 3.0 Unported de


Creative Commons. Para ver una copia de esta licencia, visite
http://creativecommons.org/licenses/by-nc-sa/3.0/ o envie una carta a Creative Commons, 171
Second Street, Suite 300, San Francisco, California 94105, USA.
Unidad 1

Conceptos
Básicos
Los algoritmos son una secuencia de pasos lógicos que permiten el
desarrollo de soluciones a problemáticas especificas, las cuales
efectivizan el quehacer de las diferentes disciplinas del ser humano.
Esta unidad permitirá la construcción de bases sólidas en el desarrollo
de algoritmos, examinando a profundidad las definiciones,
características, los tipos de representaciones gráficas, pasos para
resolver problemas y las expresiones.
1. Definición de Algoritmos

1.1. Definición de Algoritmos

Antes de comenzar esta unidad, se recomienda realizar la actividad individual 1.

La palabra “Algoritmo” tuvo sus orígenes por el gran matemático árabe “Mohamed Ibn
Moussa Al Kow Rizmi”, quien escribió acerca de sistema de numeración hindú entre los años
800 y 825. Más adelante Fibonacci tradujo su obra al latín dando como resultado la palabra
dixit algorithmus o Algoritmi.

Otras teorías dicen que la palabra evoluciono de “Algorismos” que era la forma de hacer
aritmética usando guarismos arábigos, la palabra estaba formada de la siguiente manera:

Algiros [Dolor] + Arithmos= [Número]

¡Pero no es para asustarse, los algoritmos no serán un dolor de cabeza en este curso!

Algoritmo es una palabra que se confunden constantemente con “Logaritmo”, como si al


escribirlo se hubieran mezclado las cuatro primeras letras, pero en realidad el significado es
diferente.

Un Algoritmo es una secuencia lógica, ordenada y finita de pasos que nos ayudan a resolver
un problema.

Los algoritmos se usan a diario cuando se realiza cualquier actividad ordenada,

Por ejemplo:

Cuando se prepara un alimento.


Cuando una persona se alista para salir al trabajo o a la universidad.
Cuando se lavan los platos.
Cuando una persona se peina.

1.2. Características de los Algoritmos

A nivel general estas son las principales características de los algoritmos:

1. Un Algoritmo debe ser finito, debe tener un inicio y un fin definido.


2. Un algoritmo debe ser preciso y definido. Si se recorre un algoritmo dos veces, el
resultado debe ser el mismo.
3. Un algoritmo debe ser lógico y ordenado.

2
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Algunos autores como Donald Knuth1 definen 5 características de los algoritmos:

Carácter finito: Tiene principio y fin definido.

1. Precisión: Es claro a la hora de realizar procedimientos, cada paso está bien definido.

2. Entrada: Todo algoritmo tiene 0 ó más entradas, estas se pueden definir: al inicio del
algoritmo o como resultados de procesos (internamente).

3. Salida: Un algoritmo tiene 1 ó más salidas. Se considera inútil un algoritmo que no


entregue algún tipo de resultado.

4. Eficacia: Un algoritmo debe ser eficaz (procesos Vs Tiempo). Un algoritmo debe tardar
menos tiempo en procesar una tarea, de lo que podría tardar una persona sin ayuda de
maquinas.

A continuación se presenta paso a paso el desarrollo de un algoritmo:

1. Algoritmo para preparar un café instantáneo caliente

Algoritmo
INICIO
1. Servir agua caliente en un pocillo
2. 1Agregar café instantáneo
3. Agregar azúcar
4. Revolver
FIN

3
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Ahora se toma el mismo ejemplo del café de forma más minuciosa:

Algoritmo
INICIO
1. Tomar un pocillo
2. Abrir la llave del agua
3. Servir agua en el pocillo
4. Abrir la tapa del horno microondas
5. Meter el pocillo al horno microondas
6. Cerrar la tapa del horno microondas
7. Programar el tiempo de cocción
8. Si no está caliente el agua
9. Volver al paso 7
10. Si ya está caliente el agua
11. Sacar el pocillo del horno
12. Cerrar la tapa del horno microondas
13. Agregar café instantáneo
14. Agregar Azúcar
15. Revolver
FIN

Así mismo y de manera más minuciosa se podría realizar el mismo algoritmo; es posible
hacerlo en cuatro pasos como en el primer ejemplo del café o en quince o más pasos, como
en el segundo, todo de acuerdo a las necesidades.

4
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
2. Representación Gráfica de los
Algoritmos

2.1. Representación Gráfica de los Algoritmos

Antes de continuar se recomienda realizar la actividad individual 2

Cuando se piensa en representar gráficamente un algoritmo y se indica que puede hacerse


mediante dibujos, símbolos, cuadros o texto, u otros elementos que pueden imaginarse. Por
ejemplo:

Marzo de 2008

Estos elementos nos ubican muy cerca de la realidad, porque efectivamente los algoritmos
pueden ser escritos y representados de diferentes formas, por ejemplo, usando el lenguaje
común (texto), aunque podría resultar un tanto difícil de manejar debido a la diversidad del
lenguaje.

Si se piensa en palabras que tienen significado o escritura diferente según las regiones del
país, imagine las dificultades que se podrían presentar al tratar de comunicarse con las
personas.

¿Que tal, confuso?, bueno precisamente pensando en ello es que se han establecido varios
métodos de representación algorítmica que permiten el entendimiento y minimizan las
ambigüedades (imprecisiones); aunque para utilizar uno u otro método hay que tener muy
en cuenta el problema que se quiera solucionar, es decir, los métodos van ligados con la
complejidad del algoritmo, por ejemplo si se necesita realizar un algoritmo sencillo y se
desea obtener una rápida comprensión de sus relaciones lo más recomendable sería que se
empleara un diagrama de flujo o si por el contrario el algoritmo es grande y complejo este
método resultaría un tanto incomodo ya que su planteamiento y diseño serían muy
laboriosos, entonces, lo más recomendable es buscar alternativas que se adapten a las
necesidades.

5
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
2.2. Descripción Narrada

Se puede decir que este método es el más sencillo, porque lo único que se debe hacer es
describir textual y lógicamente el proceso que se seguirá para la solucionar un problema.

Ejemplo: Piense en cuantas veces ha realizado una llamada telefónica, ahora recuerde los
pasos que normalmente sigue para realizar este proceso.

El modelamiento del proceso puede hacerse utilizando este método.

INICIO
1. Tomar la bocina
2. Verificar que haya tono de marcado
3. Digitar el número telefónico de destino
4. Esperar que se establezca la comunicación
5. Iniciar la conversación
6. Finalizar la conversación
7. Colgar la bocina.
FIN

Como se puede notar es algo simple de hacer, solamente es seguir proceso lógico de las
cosas utilizando el lenguaje natural.

2.3. Diagramas de Flujo

Para representar algoritmos mediante este método se utilizan símbolos o figuras con los
pasos del algoritmo escritos dentro, como si se tuviera una especie de descripción narrada
dentro de figuras unidas con flechas y que representan una acción dentro del procedimiento.

Los diagramas de flujo son muy útiles porque facilitan la comprensión de las relaciones y la
interacción con el usuario.

Reglas para la elaboración de un Diagrama de Flujo o Flujograma:

1. Se escribe de arriba hacia abajo y de izquierda a derecha


2. Siempre se usan flechas verticales u horizontales, jamás curvas
3. Evitar cruce de flujos (Flechas)
4. En cada paso expresar una acción concreta
5. Llevar una secuencia lógica en la solución del problema
5.1 Inicio
5.2 Lectura o Entrada de datos
5.3 Proceso de datos (Operaciones necesarias para la solución)
5.4 Salida de información (Resultados)
5.5 Fin

6
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Conociendo ya las reglas del juego se puede proceder a la revisión de los principales
símbolos que se deben utilizar para dibujar un diagrama de flujo.

7
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Conociendo entonces la simbología que se debe utilizar, realice un algoritmo que calcule la
edad de una persona sabiendo su fecha de nacimiento y la imprima junto con su nombre,
pero que además le permita al usuario elegir si desea imprimir en impresora o solo verlo en
la pantalla, entonces manos a la obra.

Ejemplo: Algoritmo que imprime por pantalla o por impresora el nombre de una persona y
calcula su edad sabiendo la fecha de nacimiento.

8
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
El anterior es un diagrama de flujo sencillo, al observarlo se puede notar que lo único que se
hizo fue intentar plasmar por medio de figuras (diagramas) la solución “narrada”; teniendo
en cuenta los parámetros anteriormente mencionados.

Ahora imagine modelar un algoritmo utilizando un diagrama de flujo que lleve un control de
los empleados de una empresa X , calculando sus salarios básicos, netos, deducciones,
descuentos, auxilios, bonificaciones y que además lleve la contabilidad de todos los ingresos
y egresos de la empresa. Al pensar en este modelo resulta algo engorroso y es por este tipo
de problemas que se pensó en otro método más cómodo de modelamiento: El pseudocódigo.

2.4. Pseudocódigo

Si se observa la semántica de esta palabra se encuentra Pseudo = falso, lo que quiere


decir que realmente no es un código sino una imitación de instrucciones que se darían en el
lenguaje, pero con símbolos matemáticos, se puede pensar que es la combinación de la
descripción narrada (lenguaje común o Pseudolenguaje que no es tan rígido como el
matemático pero tampoco tan informal como el nuestro) y el diagrama de flujo, que utiliza
también símbolos pero comprensibles para el computador; este método fue ideado
principalmente para contrarrestar las desventajas como el redibujo completo de un
diagrama de flujo para realizar solo una pequeña modificación.

A continuación se puede observar una forma de utilizar este método para resolver un
algoritmo.

Ejemplo: Algoritmo que lee dos números y calcula su producto y suma.

Inicio
Imprima (“Ingrese dos números”)
lea (a, b)
producto = (a * b)
suma = (a + b)
Imprima (“El producto de los números es “producto, “y su suma es” suma)
fin

En el ejemplo anterior se utilizaron algunas palabras como: lea e imprima, estas palabras
son reservadas de los algoritmos, ninguna variable o constante debe llevar ese nombre.
Las principales palabras reservadas en algoritmos son:

Lea o Leer: Es una palabra reservada que indica que un dato ingresado debe ser
leído para ser procesado.
Imprima o Imprimir: Es una palabra reservada que indica que un resultado y/o
mensaje será mostrado (puede utilizarse para pedir información al usuario o para
mostrarle algún resultado).
Inicio: Es una palabra reservada que delimita el inicio de cada algoritmo.
Fin: Es una palabra reservada que delimita el final de cada algoritmo.
Producto y Suma: Son variables que permiten almacenar nuestros datos.

9
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
3. Datos

3.1. Definición de Dato

Un dato es una representación simbólica que no tiene sentido por sí mismo, pero que al ser
tratado, se puede usar en la realización de cálculos o en la toma de decisiones.
Los datos son las partes fundamentales de la información.

Ejemplo: Observe los siguientes símbolos, y trate de encontrarles su significado.

Si se miran cada uno de los símbolos anteriores, no se podría decir mucho acerca de ellos,
pues no tienen valor semántico, pero si a los símbolos se les aplica un tratamiento
adecuado, se podría entonces entender claramente su sentido.

10
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Después de aplicar el proceso adecuado a cada uno de los datos, se tienen elementos que
hablan por sí solos. Estos elementos son La Información.

En el primer cuadro se encuentra información acerca de la capital de un país,


también acerca de una fruta.
En el segundo cuadro una estructura conceptual en blanco.
Y en el tercer cuadro la fracción de una partitura musical.

Como consecuencia, se puede definir la palabra información como un conjunto de datos


procesados: Una sola nota musical no puede hacer una canción, pero muchas notas
musicales, seguramente sí.

Grafica de procesamiento de datos:

3.2. Tipos de Dato

Cuando se habla de tipos de datos, se hace referencia al rango de valores que acepta una
maquina (computador), y que a su vez almacenan las variables para procesar los datos. La
definición de un tipo de dato es de gran importancia porque ahí es donde se le dice a la
maquina que reserve determinado espacio en memoria para almacenar información. Si se
tiene una variable para almacenar la edad de una persona (En el siguiente tema se aclara el
concepto de variable) no tendría lógica decir que esa variable va a almacenar salarios, pues
son datos de diferentes tipos.

Los siguientes son los tipos de datos que se usaran en este curso:

Tipo de
Descripción Ejemplo
Dato
Entero Son todos los números positivos y 1,-80,1586,31600,-
negativos que no contengan 32700,5,78,100
decimales
Números
Real Son números decimales, monedas $10.500,
o porcentajes. 23,4%
123879,00987
Char Caracteres ASCII, para su manejo „A‟, ‟Z‟,‟v‟,‟J‟,‟q‟
Texto en código fuente se encierran entre
comillas simples

11
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Cadena Cadenas de texto cualquiera “Hola”, “Perro”,
“Nubia”, “Elefante”,
“Algoritmo”, “123456”,
“A”
Booleano Lógico Son tipos de datos que solo 0y1
manejan dos valores. Falso y Verdadero

Los tipos de datos se usan para declarar variables de acuerdo a su contenido. Ejemplos:

Nombre de la variable Descripción Tipo de


dato
Variable1 Contiene edades Entero
Variable2 Contiene el estado de una bombilla, Lógico
encendida o apagada
Variable3 Contiene el salario de un empleado Real
Variable4 Contiene el sexo de una persona, F o M Char

Es importante tener en cuenta que los tipos de datos numéricos se asignan únicamente a las
variables con las cuales se realiza algún tipo de operación, por ejemplo, un variable contiene
la edad de una persona, yo con la edad podría calcular la fecha de nacimiento. Pero si una
variable contiene un número de teléfono, se debería declarar de tipo cadena, pues nunca se
realizarían operaciones matemáticas con ese dato.

Nombre de la Descripción Tipo de dato


variable
Variable5 Contiene el número de teléfono de una Cadena
persona

12
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
4. Variables

4.1. Variables

Se denomina variable al conjunto de bytes que almacenan valores de determinados tipos,


como un sueldo, un nombre, una fecha, un número. Las variables se pueden asociar en este
caso a los recipientes que se muestran a continuación, que pueden contener cualquier
elemento.

Diseño: Jhonatan Arroyave Jaramillo. Marzo de 2008

A cada variable debe asignársele un nombre con las siguientes características:

1. Debe comenzar con una letra.


2. No debe contener caracteres especiales.
3. Debe contener máximo 32 caracteres.

Es importante tener en cuenta que los nombres que se asignan a cada variable deben hacer
referencia a su contenido, pues eso ayudará a mantener un código optimo y ordenado.

Nota: en computadores se define caracteres como letras o números.

Gráficamente sería:

Diseño: Jhonatan Arroyave Jaramillo. Marzo de 2008

13
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
4.2. Declaración de variables

Antes de comenzar a utilizarlas se deben definir qué tipos de datos se guardaran en las
variables, es decir, si se necesita realizar operaciones matemáticas, lo ideal sería tener una
“vasija” que sólo guarde números o si por el contrario se necesita almacenar nombres se
debe designar otro recipiente para los nombres (cadenas); es muy importante estar atentos
y guardar los elementos en las vasijas correspondientes.

Piense por un momento ¿qué pasaría si se guardaran los zapatos en la nevera?

La sintaxis para la declaración de variables es la siguiente:

Var Nombre_variable: Tipo de dato

Se escribe la palabra var, que indica que se van a declarar una variable, luego el nombre de
la variable, y el tipo de dato.

Ahora en términos reales sería:

Var Salario: Numérico real

Y gráficamente:

4.3. Asignación de variables

Ya que se conoce el concepto teórico y se tiene una representación gráfica de variable, se


puede pasar a la asignación de variables; para almacenar información en una variable basta
sólo con ponerle un signo de igual ( = ) después de la variable seguido del valor que se
desea asignar:

Nombre_variable=valor

Observe la asignación con los recipientes del ejemplo anterior:

14
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Luego de haberles asignado valor a las variables se verán de la siguiente forma:

Diseño: Jhonatan Arroyave Jaramillo. Marzo de 2008

Si se retoma el tema 3 que habla sobre los tipos de datos, se puede observar la forma en
que se implementa con las variables:

Si bien la variable “salario” contiene el salario (720.000), este valor contenido en nuestra
variable es un número por lo tanto no deben asignársele datos de otro tipo.

Diseño: Jhonatan Arroyave Jaramillo. Marzo de 2008

En la asignación anterior el programa generará error, porque no tiene lógica, ya que


anteriormente se había definido la variable salario como número real.

15
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
5. Constantes

5.1. Constantes

Las constantes son elementos con características similares a las variables, la diferencia
radica en la forma en que almacena los datos. Una variable se le asigna un dato, y en
cualquier momento del algoritmo el valor puede cambiar, mientras que las constantes, como
su nombre lo dice, mantiene su valor durante todo el algoritmo.

Para comprender mejor el concepto de variables y constantes se puede hacer una


comparación y pensar que la memoria del computador es una serie de casilleros donde
algunos son grandes y guardan números reales y otros pequeños que guardan números
enteros, caracteres o números especiales; cada casillero tiene un nombre que lo identifica
durante todo el proceso es lo que llamamos identificador; algunos casilleros pueden cambiar
la información que tienen dentro durante el transcurso del algoritmo es decir están sin
“candado”, este es el caso de las variables, sin embargo no todos los casilleros están
abiertos, algunos si tienen candado lo que indica que se encuentran bloqueados durante
todo el proceso, es decir, deben permanecer inalterados, a estos se les llama constantes.

Diseño: Jhonatan Arroyave Jaramillo. Marzo de 2008

Ejemplo: El valor de la gravedad = 9.8 m/sg2

Las constantes así como las variables deben tener un tipo de dato, que debe estar definido
desde el principio para saber qué tipos de operaciones soporta.

Se toma la constante gravedad, y se analizan sus posibles valores y el significado que podría
tener dependiendo del valor tomado.

gravedad = 0 gravedad = 0 gravedad = „0‟

16
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
La primera constante representa el número cero como entero, la segunda representa el
número cero como valor lógico, y le tercera representa el cero como un carácter. Notemos
que las tres constantes tienen aparentemente el mismo valor pero si por ejemplo deseamos
multiplicarla con otro valor los resultados que nos arrojaría serían completamente diferentes.

Es de gran importancia tener claro el uso que se da a la constante y en general a todas las
variables, para ello se debe primero definir un tipo de dato antes de asignarle un valor, este
proceso se hace igual al de las variables y posibilita el correcto desarrollo del algoritmo.

5.2. Declaración de constantes

Para declarar constantes en un algoritmo se debe anteponer a la constante la palabra


“const”, que indica que lo que va a declararse es una constante.

Ejemplo:

CONST nombre_constante: tipo de dato

Gráficamente:

Diseño: Jhonatan Arroyave Jaramillo. Marzo de 2008

5.3. Inicialización de Constantes

Las constantes se inicializan de la misma forma que se hace en las variables, la diferencia
está en que las variables cambian su valor en durante el programa y las constantes no.
La sintaxis es:

Const nombre_constante=valor

17
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Ejemplo:

Se tiene el año de nacimiento de un trabajador. Calcule la edad del trabajador e imprímalo.

Algoritmo Explicación
INICIO Inicio del programa
Var edad, anio_nac: entero; Declaración de las variables edad y anio_nac en
entero. Las fechas son tipo fecha, pero en este
caso solo se trabaja con el año y puede
declararse como entero.
Const anio_actual: entero; Declaración de la constante anio_actual en
entero.
anio_actual=2008 Inicialización de la constante con el valor
entero 2008.
edad=0; Inicialización de la variable edad en cero. Este
paso se realiza para verificar que la variable
este en cero al comenzar el algoritmo.
IMPRIMA “Ingrese año de El programa pide que ingrese el año de
nacimiento”; nacimiento.
LEA (anio_nac); Se lee el año de nacimiento y se le asigna a la
variable anio_nac.
edad=(anio_actual-anio_nac); Se calcula la edad del empleado restándole al
año actual el año de nacimiento.
IMPRIMA “El empleado tiene ” + El programa muestra el mensaje de respuesta.
edad + “ años”; El signo más (+) se usa para concatenar
cadenas de texto, más adelante se explicara su
uso. Si la edad del empleado es 45 el mensaje
quedaría:
“El empleado tiene 45 años”.
FIN Fin del algoritmo

Se puede observar que cada paso del algoritmo anterior termina con punto y coma (;), esto
se realiza para diferenciar cada paso, pues en ocasiones la escritura puede gastar más de
una línea.

18
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
6. Compilador

6.1. Compilador

Un compilador es un programa que convierte el código de un lenguaje de programación a


lenguaje de máquina, es decir, a un sistema binario de órdenes que solo puede entender el
computador.

Cuando se escribe un programa en pseudocódigo, se está definiendo de forma general; para


que el programa pueda ejecutarse se debe definir y programar en un lenguaje de
programación. Los lenguajes de programación tratan al máximo de manejar una sintaxis
similar a la del pseudocódigo, pero cada uno guarda su propio estilo.

A continuación se presenta una tabla comparativa con ejemplos sencillos de algunas


sentencias en pseudocódigo y su respectiva sentencia en un lenguaje de programación
cualquiera:

Tipo de Sentencia Pseudocódigo Consola VisualBasic.NET PHP


Inicio del algoritmo INICIO Sub Main() <?php
Condicional SI…..FIN SI IF……END IF IF{……}
Ciclo para HAGA PARA….FIN PARA FOR….NEXT FOR{…}
Fin del Algoritmo FIN End Sub ?>

Después de que se tiene un algoritmo en un lenguaje cualquiera, se puede pasar al proceso


de compilación.

La compilación es el proceso en el que se revisa el código fuente y se detectan todos los


errores de sintaxis, por ejemplo cuando se escribe una letra de más en una sentencia o
cuando se usa de forma inadecuada las estructuras de un lenguaje.

Ejemplo:

Algoritmo
INICUO
1. Tomar un pocillo
2. Abrir la llave del agua
3. Servir agia en el pocillo
4. Abrir la tapa del horno microondas
5. Meter el pocillo al horno microondas
6. Cerrar la tapa del horno microondas
7. Programar el tiempo de cocción
8. Si no está caliente el agua

19
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
9. Volver al paso 7
10. Si ya está caliente el agua
11. Sacar el pocillo del horno
12. Cerrar la tapa del orno microondas
13. Agregar café instantáneo
14. Agregar Azúcar
15. Revolver
FIN

Las partes subrayadas son errores de sintaxis, este tipo de errores puede detectarlos un
compilador, en cambio, si los errores fueran de lógica, como en la historieta de la actividad
individual 1, el compilador no podría detectar ningún error.

El siguiente es el proceso a seguir según los resultados de la compilación:

Tomado de BECERRA SANTAMARIA, César A.


Algoritmos Conceptos Básicos. 4 Edición.
Colombia : Kimpres, 1992. Adaptación:
Giselle Andrea Tamayo Mármol y Jhonatan
Arroyave Jaramillo. Abril de 2008.

20
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Para lograr llegar hasta el punto “Perfecto” hay que corregir los errores de sintaxis y los de
lógica. Este proceso se llama Depuración de un programa.

Para este curso, se va a realizar un ejercicio interesante; cuando el estudiante este


escribiendo algoritmos se pondrá en la tarea de compilarlo, este proceso lo se hará de forma
manual, y consistirá en verificar minuciosamente la sintaxis de cada algoritmo.

1 Es importante tener en cuenta que no todos los lenguajes de programación son


compilados, algunos son lenguajes interpretados.

21
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
7. Pasos para Resolver un Problema

7.1. Pasos para Resolver un Problema

Ya que se tienen las bases necesarias para iniciar el proceso de resolución de problemas
utilizando algoritmos, observe los pasos que se deben tener en cuenta para esta actividad.

Diseño de la solución (algoritmo)

1. Implementación de la solución planteada


a. Elaboración de algoritmos
1. Análisis del problema
2. Diseño de la solución
3. Construcción del algoritmo
4. Prueba de escritorio
5. Codificación
b. Codificación en algún lenguaje de programación
c. Compilación y ejecución
d. Pruebas del algoritmo
2. Pruebas del sistema
3. Puesta en marcha

Análisis del problema: En este punto se analiza el problema que se desea resolver
utilizando como herramienta el computador; en este estudio se deben hacer
entrevistas con los usuarios y con todas las personas que conocen el tema para
obtener ideas que permitan solucionar el problema y posibles casos especiales o
imprevistos que se puedan presentar. Un buen análisis tendrá como consecuencia un
buen diseño.
Diseño de la solución: Luego de hacer un buen análisis entramos a considerar las
situaciones que identificamos en este y definimos las bases de datos, archivos,
procesos y todo lo necesario para resolver el problema.
Implementación: En este paso se construyen las bases de datos y todo lo que se
plantea en el diseño de la solución para elaborar el sistema.
Pruebas: Consisten en suministrar, al modelo desarrollado, datos ficticios con el fin
de comprobar que el sistema responde correctamente a todas las situaciones que se
hallaron en el análisis. Esta fase de pruebas es muy importante puesto que allí se
pueden detectar fallas y situaciones que no se consideraron, por alguna razón, en el
análisis y en el diseño. Las pruebas se deben supervisar en forma exhaustiva por los
usuarios del sistema y por sus desarrolladores.
Puesta en marcha: Consiste en liberar el sistema desarrollado, para que el usuario
lo utilice en su labor diaria. En esta fase se hace seguimiento al funcionamiento de la
aplicación para efectuar los últimos ajustes en caso de que sea necesario.

Nota: Para este curso se trabajara solo en la elaboración de algoritmos.

22
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
8. Expresiones y Operadores

8.1. Expresiones

Las expresiones son la combinación válida de operadores, constantes y variables que dan
como resultado un valor determinado; las expresiones pueden contener operadores
aritméticos, lógicos y relacionales.

Cada expresión es una línea de código y debe terminar en ; (punto y coma), esto con el fin
de separar cada línea, pues hay casos en los cuales una sola expresión puede gastar más de
una línea.

8.2. Operadores

Los operadores son los protagonistas en la realización de los algoritmos, ya que facilitan el
procesamiento de información y obtención de resultados, en pocas palabras, los operadores
permiten la manipulación de los valores.

Los operadores pueden ser lógicos, matemáticos o relacionales.

8.3. Operadores Matemáticos

Los operadores matemáticos que se manejan en los algoritmos son:

Operador Suma (+): Es utilizado en algoritmos para realizar sumas de números


(enteros o reales) y para concatenar cadenas de texto o caracteres. El uso del
operador se define en tiempo de ejecución, es decir, mientras el algoritmo está en
proceso; si los datos son enteros o reales el símbolo cumple la función de suma, pero
si los datos son cadenas o caracteres, el símbolo cumple la función d concatenar.

Ejemplo:

Si se tienen dos variables enteras a=100 y b=2


Y se pide sumarlas, se realizaría el siguiente procedimiento:

Suma=(a+b); El resultado en este caso sería suma=102

Si se tienen dos variables de texto (cadenas) nombre=”Nubia Amparo” y apellido=


“Giraldo”, y se pide imprimir el nombre completo, el procedimiento a seguir es:

Nom_completo= nombre+apellido;

23
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
El resultado sería: nom_completo=”Nubia AmparoGiraldo”, como se puede observar, el
segundo nombre quedo unido al apellido; esto sucede porque se está concatenando las dos
variables de forma sencilla. La solución al inconveniente del espacio es concatenar el nombre
con un espacio, y el espacio con el apellido. Veamos:

Nom_completo= nombre+” ”+apellido

El resultado en este caso sería: nom_completo=”Nubia Amparo Giraldo”

Operador Resta (-): La resta en algoritmos tiene única función, restar numero
enteros o reales.

El uso es de la misma manera que en la suma.

Ejemplo:

Calcular la edad de una persona, teniendo el año de nacimiento.

Para este ejercicio se tiene una constante que es el año actual, a la cual se le asigna
el valor 2008. Si el año de nacimiento es 1986, la operación es:

edad=(anio_actual-anio_nacimiento);

El resultado es: edad=22;

Operador Multiplicación (*): Este operador se utiliza para ejecutar


multiplicaciones entre datos de tipo entero o real. Al usar este operador se debe
tener presente que el resultado debe estar en un rango establecido para el tipo de
dato.

Ejemplo:

Multiplicar a=12000 y b=15

Mult=(a*b);

El resultado será: Mult=180000;

Operador división (/): El operador “div”, divide un dato de tipo entero entre otro
entero, es un operador que no guarda decimales, realiza únicamente divisiones
enteras. Es importante tener en cuenta que el denominador debe ser diferente de
cero, pues de lo contrario generaría u error en la división y el programa finalizaría.

Ejemplo:

Dividir a entre b:

24
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
INICIO
Var a,b,c entero
a=10;
b=3;
c= (a/b);
FIN

Se observa que al realizar esta operación, el contenido de C, seria 3.3333, pero como se
está usando el operador div solo se toma el valor entero, en este caso 3.

Operador módulo (%): Calcula el resto de un valor dividido entre otro. El signo del
resultado de la operación de módulo coincide con el signo del dividendo (el primer
número). Por ejemplo, -4 % 3 y -4 % -3 dan ambos como resultado -1.

Ejemplo

El siguiente ejemplo numérico utiliza el operador de módulo (%), posteriormente


aparecerá la respuesta de acuerdo al valor que toma a y b:
INICIO
Var a,b,c entero
c= (a%b);
FIN

Para el caso de a=12 y b=5, la operación arrojaría c=2;


Para el caso de a=4 y b=4, la operación arrojaría c=0;

8.4. Prioridad de Operadores Matemáticos

Todas las expresiones entre paréntesis se evalúan primero. En las expresiones con
paréntesis anidados, el más interno se evalúa primero.

Dentro de una misma expresión los operadores se evalúan en el siguiente orden:

1. (^) Exponenciación
2. (*, /, %) Multiplicación, división, modulo.
3. (+, -) Suma y resta.

Los operadores en una misma expresión con igual nivel de prioridad se evalúan de izquierda
a derecha.

25
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
8.5. Operadores Relacionales

Son usados para establecer relación entre dos valores; dicha comparación produce un
resultado booleano, es decir, verdadero o falso).

Los operadores relacionales comparan valores del mismo tipo (numéricos o cadenas). Estos
tienen el mismo nivel de prioridad en su evaluación.

Los operadores relaciónales tiene menor prioridad que los aritméticos.

Los operadores Relacionales son:

1. Mayor que (>)


2. Menor que (<)
3. Mayor o igual que (> =)
4. Menor o igual que (< =)
5. Diferente (< >)
6. Igual (=)

Ejemplos:

Si a = 10, b = 20, c = 30

Falso
a+b>c
a-b<c Verdadero
a-b=c Falso
a*b<>c Verdadero

8.6. Operadores Lógicos

Los operadores lógicos que se manejan en algoritmos son:

Operador And ( y ):Indica que una expresión es válida si se cumplen exactamente


las dos condiciones contenidas.

Valor1 Operador Valor2 Resultado


V And V V
V And F F
F And V F
F And F F

26
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Operador Or ( o ): Indica que una expresión es válida si se cumple una de las dos
condiciones contenidas.

Valor1 Operador Valor2 Resultado


V Or V V
V Or F V
F Or V V
F Or F F

Operador Not ( No ): Es la negación de una expresión.

Valor1 Resultado
V F
F V

Ejemplos:

Sea: a = 20
b = 22
c = 23
d = 20

27
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
8.7. Prioridad de los Operadores Lógicos

1. Not
2. And
3. Or

8.8. Prioridad General de los operadores

1. ()
2. ^
3. *, /, Mod, Not
4. +, -, And
5. >, <, > =, < =, < >, =, Or

28
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Unidad 2

Estructuras
de Control
Las estructuras de control son sentencias que permiten modificar el
flujo de ejecución de algoritmos, estas sentencias pueden ser
condicionales, ciclos, interruptores entre otros.
1. Contadores

1.1. Contadores

Un contador como su nombre lo indica se emplea para contar las veces que sucede un
evento; un ejemplo muy sencillo y común del uso de este concepto se puede apreciar en el
contador de visitas de una página web.

Ejemplo de Utilización de Contadores:

1. Contador = Entero;
2. Contador = 0;
3. Contador = Contador + 1 ;

VARIABLE OPERADOR DEFINICION UTILIZACION


1. Contador = Entero Definición de tipo

2. Contador = 1 Inicialización de la
variable contador. No es
camisa de fuerza
inicializar los contadores
en cero.
3. Contador = =;+ (Utilización de la
Contador +1 variable suma para
acumular salarios)

30
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
1.2. Acumuladores

Si se recurre a la razón natural y se trata de deducir el significado de esta palabra a partir


de su nombre e imaginando objetos de la realidad que se puedan relacionar con este sin
duda pueden llegar gran cantidad de elementos a la mente. Como por ejemplo:

Acumulador de Energía
(Baterías)

Acumulador de Basura
(Papelera)

Acumulador de Monedas
(Alcancía)

Acumulador de Libros
(Biblioteca)

Diseño de Imágenes: Jhonatan Arroyave Jaramillo y Giselle Andrea Tamayo Mármol. Mayo de 2008

31
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Estos elementos nos ubican muy cerca de la realidad, porque efectivamente los
acumuladores son utilizados para sumar o acumular información del mismo tipo.

Los acumuladores son variables, por tanto se les debe dar el mismo trato, es decir, declarar
su tipo e inicializarse antes de comenzar a trabajar con ellos como se vio en la unidad
pasada.
Cada vez que se lea un dato o calcule un resultado se debe aumentar el acumulador y es
recomendable inicializarlo con el valor de cero para evitar alteraciones en los resultados.

Ejemplo de Utilización de Acumuladores:


1. Suma = Real;
2. Suma = 0;
3. Suma = Suma +salario;

VARIABLE OPERADOR DEFINICION UTILIZACION


1. Suma = Real Definición de tipo
2. Suma = 0 Inicialización de la
variable
acumulador
3. Suma = Suma = ; + (Utilización de la
+salario variable suma para
acumular salarios)

1.3. Condiciones

Las condiciones nos sirven para decirle al computador que debe hacer, es decir son
instrucciones que definen una acción, por ejemplo, cuando su médico le receta una medicina
y le indica que se debe tomar 2 pastillas rojas cada 6 horas, una amarilla cada 24 y una
blanca cada 8, le está dando una serie de instrucciones que usted debe realizar para curar
su malestar.

32
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Diseño Imagen: Jhonatan Arroyave Jaramillo y Giselle Andrea Tamayo Mármol. Mayo de 2008

33
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
2. Estructuras de decisión

Se puede presentar el caso que se tenga que modelar algoritmos más complejos para los
cuales se necesitan más herramientas de las que hemos visto hasta ahora; es en estos
casos cuando tenemos que apropiarnos de las estructuras de decisión las cuales permiten
tomar decisiones y hacer comparaciones para solucionar un problema; veamos cuales son:

Instrucción SI: Ejecuta instrucciones o acciones de comparación de acuerdo a una


condición.

Sintaxis:

Si (condición) entonces
Ejecuta acciones
Fin SI

Ejemplo de Utilización: Realice un algoritmo que lea un número y diga si es mayor que 8.

1 Inicio
2 Imprima (“Ingrese los números”)
3 lea (numero)
4 Si (numero >8) entonces
5 Imprima: (“El numero ingresado es mayor que 8”)
6 Fin Si
7 Fin

Instrucción SI – SINO: La instrucción si tiene un componente opcional llamado


SINO; que se utiliza cuando lo que se está comprando puede tener una segunda
opción.

Sintaxis:

Si (condición) entonces
Ejecuta acciones si la condición es verdadera
SINO
Ejecuta acciones si la condición es falsa
Fin SI

Realice un algoritmo que discrimine los números dados en positivos y negativos.

34
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
1 Inicio
2 Imprima (“Ingrese el número”)
3 Leer (numero)
4 Si (numero >0) entonces
5 Imprima (“Numero Positivo”)
6 Sino
7 Imprima (“Numero Negativo”)
8 FinSi
9 Fin

Análisis: Como se puede apreciar en la instrucción SI se evalúa la condición de que el


numero ingresado sea positivo; de ser esta verdadera se ejecutará la acción de Imprimir la
palabra “Numero Positivo” pero de no ser cierta imprimirá “Numero Negativo”.

Este ejercicio a diferencia del anterior tiene dos posibles opciones es por esto que utilizamos
la instrucción SI – SINO.

2.1. Estructuras de decisión Anidadas

En ocasiones no basta solo con contemplar dos condiciones, existen problemas que exigen el
control de situaciones dentro de otras ya controladas; para esto utilizamos las estructuras
de decisión anidadas que no son más que SI - SINO dentro de otros SI, es decir, comprobar
condiciones dentro de condiciones o comprobar múltiples condiciones simultáneamente.

Sintaxis: Sintaxis:
Si (condición) entonces Si (condición) entonces
Ejecuta acciones si la Ejecuta acciones si la condición
condición es verdadera es verdadera
SINO Sino
Ejecuta acciones si la Ejecuta acciones si la condición
condición es falsa es falsa
Si (condición) entonces Fin SI
Ejecuta acciones si la Si (condición) entonces
condición es verdadera Ejecuta acciones si la condición
Sino es verdadera
Ejecuta acciones si la Sino
condición es falsa Ejecuta acciones si la condición
Fin SI es falsa
: Fin SI
: :
: :
Fin SI :

35
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Ejemplo de Utilización: Elabore un algoritmo que lea un número, si es negativo conviértalo
positivo e imprima “la conversión del numero X a positivo es” y si es positivo > 2 súmele 10
e imprima su resultado.

1 Inicio
2 Imprima (“Ingrese los números”)
3 leer (n1)
4 Si (n1 < 0) entonces
5 ConversionNeg=n1* -1
6 imprima (“La conversión del número” n1 “a positivo es: ” ConversionNeg )
7 Sino
8 Si (n1>2) entonces
9 PositvoMayor =n1 + 10
10 imprima (“Numero Positivo > de 2 + 10 es ” PositvoMayor)
11 FinSi
12 FinSi
13 Fin

2.2. Selección Múltiple (Case)

En el tema anterior se trataron algoritmos con las estructuras SI – FINSI, SI – SINO –


FINSI, pero si se necesitan realizar algoritmos que impliquen muchas condiciones puede
resultar algo dificultosa la solución utilizando estas estructuras; precisamente pensando en
ello es que se ha ideado un método de selección múltiple que como su nombre lo indica
permite escoger de una lista de opciones varias de ellas.

Es muy común llegar a una tienda y seleccionar diferentes tipos de dulces; o quizá llegar a
una floristería y escoger flores distintas.

36
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Diseño Imágenes: Jhonatan Arroyave Jaramillo y Giselle Andrea Tamayo Mármol. Mayo de 2008

Pues bien, en la estructura case en base a una serie de opciones el algoritmo realiza
instrucciones dependiendo de la opción que se haya elegido. Veamos cómo se escribiría en
forma general.

Sintaxis:

CASOS
: Condición 1: Instrucciones ejecutadas si la condición 1 es verdadera
SALTE (termina la estructura, indica que debe saltar a la instrucción siguiente
después del FIN CASOS)

: Condición 2: Instrucciones ejecutadas si la condición 2 es verdadera


SALTE (termina la estructura, indica que debe saltar a la instrucción siguiente
después del FIN CASOS)

: Condición 3: Instrucciones ejecutadas si la condición 3 es verdadera


SALTE (termina la estructura, indica que debe saltar a la instrucción siguiente
después del FIN CASOS)

:
:
:
OTRO CASO: Instrucciones ejecutadas cuando no cumple ninguna de las
condiciones (caso por defecto)

FIN CASOS

37
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
3. Ciclos

Los ciclos en algoritmos son utilizados para realizar tareas repetitivas y que pueden resultar
engorrosas para las personas, un cálculo pequeño fácilmente se puede hacer a mano pero
cuando los datos tienen un crecimiento exponencial se hace más difícil la tarea, por ejemplo,
imagine que usted debe calcular el salario de 10.000 empleados o que debe contar el
número de personas que ingresan diariamente a una página Web X; difícil ¿no? Pues bien,
es aquí donde entran a jugar los ciclos también llamados bucles o lazos quienes realizan
eficientemente tareas repetitivas.

Si se abordamos la definición de ciclo según la Real Academia de la Lengua, encontraremos


las siguientes definiciones:

Período de tiempo o cierto número de años que, acabados, se vuelven a contar de


nuevo.
Serie de fases por las que pasa un fenómeno periódico.
Conjunto de una serie de fenómenos u operaciones que se repiten ordenadamente.

En conclusión podemos decir que un ciclo es una secuencia de pasos o instrucciones que se
repiten finita o infinitamente dependiendo de la condición dada. Las instrucciones dentro de
un ciclo se repiten las veces que lo haga este, caso contrario ocurre con las que se
encuentran fuera, solo se repiten una vez y después que se haya completado el ciclo,
observe las siguientes ejemplos reales de ciclos para comprender mejor este concepto.

Ciclo Menstrual:
El ciclo menstrual presente en la población femenina también sigue un estricto orden
nótese por ejemplo que el óvulo NUNCA se va a disolver sin antes haber madurado.

Diseño Imágenes: Jhonatan Arroyave Jaramillo y


Giselle Andrea Tamayo Mármol. Mayo de 2008

Ciclo Horario: Ciclo del Agua:

38
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Observe el funcionamiento de estos En este ciclo el agua de los ríos, lagos y mares
sistemas, note que el minutero no se se evapora para, luego subir a las nubes que
incrementa hasta que el indicador de con el calor del sol se precipita y cae en forma
segundos haya terminado de lluvia; observe que hasta que el agua no se
completamente su ciclo de 60 evapore NO es posible que caiga en forma de
segundos e igualmente ocurre con el lluvia, es decir, se deben cumplir primero las
indicador de la hora una vez hayan instrucciones anteriores.
pasado 60 minutos se incrementa
jamás lo hará antes.

Diseño Imágenes: Jhonatan Arroyave Jaramillo y Giselle Andrea


Tamayo Mármol. Mayo de 2008
Diseño Animación: Jhonatan Arroyave Jaramillo y Giselle
Andrea Tamayo Mármol. Mayo de 2008

Ciclo de la Vida:
Diariamente interactuamos con este ciclo, vemos los niños nacer, crecer, quizá
reproducirse y muy seguramente morir; aunque este ciclo no siempre cumple su
recorrido al pie de la letra porque por ejemplo existen niños que muren al nacer o
personas que durante toda su vida no se reproducen, en fin, cantidad de variantes
pueden surgir en este caso, pero de lo que si se está seguro que no sucederá es que
los seres humanos se reproduzcan después de muertos o antes de nacer.
Como se puede ver existen unos pasos que se TIENEN que cumplir antes que otros
OBLIGATORIAMENTE.

39
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Diseño Imágenes: Jhonatan Arroyave Jaramillo y Giselle Andrea Tamayo Mármol. Mayo de 2008

3.1. Clases de ciclos

En algoritmos así como en la vida real existen varios tipos de ciclos, unos más apropiados
para modelar ciertas situaciones que otros pero todos de gran utilidad en el proceso de
resolución de problemas. Veamos algunos de ellos.

Ciclo Para
Ciclo Mientras
Ciclo Hacer Mientras
Ciclo Repita Hasta

Estos ciclos serán de gran utilidad cuando se desee resolver problemas como el cálculo de
salarios, edades, comisiones, en fin cálculos que impliquen la evaluación de una cantidad
significativa y repetitiva de registros. Veamos cómo es su estructura y funcionamiento.

3.2. Ciclo Para

Se repite un número determinado de veces con variación constante, este ciclo se utiliza
cuando se conoce el valor inicial y final de la variable que va a controlar el ciclo. Por
ejemplo, se sabe que hay 1000 trabajadores en una empresa y que a cada uno de ellos
según las semanas de trabajo se les dará un incentivo; para la realización de este ejercicio
podemos utilizar un ciclo para en el cual la variable controladora del ciclo irá hasta 1000
(valor final) e incrementará automáticamente de 1 en 1 su valor.

Veamos cómo es la forma general de este ciclo y un ejemplo de aplicación.

40
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Sintaxis:

PARA (Variable ID) DESDE (Valor Inicial) HASTA (Valor Final) CON VARIACION DE
(Variable o Constante)
Instrucciones que se ejecutan mientras la variable ID esté dentro del rango (Valor
Inicial – Valor Final)
FIN PARA

Ejemplo de Utilización: Algoritmo que imprime los números enteros del 1 al 100

Inicio
PARA K DESDE 1 HASTA 100 CON VARIACION DE 1
imprima (K)
FIN PARA
Fin

Como podemos ver en este ejercicio se conoce el valor inicial de la variable controladora del
ciclo (K) en este caso 1 además del valor final de la misma 100 y la instrucción imprima se
repite 100 veces ( cada vez que se cumpla el ciclo).

3.3. Ciclo Mientras

Este ciclo se repite siempre y cuando la condición dada se cumpla. Es muy común ver como
en la entrada a un cine alguien verifica que las personas que ingresen hayan pagado su
entrada y esto se hace recibiendo la boleta, pues bien, comparando esta situación con el
ciclo mientras se tiene que el ver la película se puede relacionar con las instrucciones que se
ejecutarán si se cumple la condición de pagar la entrada; o cuando una persona se sube a
un bus, pasa la registradora si cumple la condición de pagar el pasaje sino inmediatamente
se debe devolver y no puede montarse al bus; igual ocurre con este ciclo, PRIMERO evalúa
la condición y si es verdadera ejecuta las acciones necesarias, de no ser así termina
inmediatamente y no realiza las acciones.

La condición evaluada puede ser una expresión lógica o relacional, por lo general en la
condición se evalúa el valor de una variable la cual recibe el nombre de variable
controladora del ciclo y que debe ser incrementada antes de finalizarlo.

Sintaxis:

MIENTRAS (Condición)
Instrucciones que se ejecutan mientras la Condición sea verdadera
FIN MIENTRAS

Ejemplo de Utilización: Algoritmo que lea un numero entero e imprima la tabla de


multiplicar de este número (el numero debe ir desde 1 hasta 10)

41
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Algoritmo Explicación
INICIO Inicio del programa
Variables: K, num, respuesta: Entero Declaración de variables en entero.
K, num, respuesta: 0 Inicialización de las variables en cero
El programa hace la petición de datos al
Imprima (“Ingrese el numero a operar”) usuario, necesarios para realizar los
cálculos.
Se lee el dato ingresado y se le asigna a
Lea (num)
la variable num
Se inicializa la variable controladora del
K=1;
ciclo K en 1
Se verifica que la variable no sea mayor
MIENTRAS K <=10 de 10; (condición establecida por el
ejercicio)
Se multiplica el contenido de la variable
Respuesta=num*K num por el de la variable K y se le asigna
a la variable respuesta
Se imprime el contenido de las variables,
nótese que se hace dentro del ciclo, por
Imprima (num, “*”, K, “ =” , respuesta) lo tanto realizará esta acción todas las
veces que sea necesario (hasta que se
cumpla la condición )
K=K+1 Se incrementa el valor de K
FIN MIENTRAS Fin del ciclo mientras, ya que en la
instrucción anterior se incrementó la
variable K, el ciclo no termina de
ejecutarse hasta que esta variable sea
<= 10, es decir, hasta que deje de
cumplir la condición.
FIN Fin del algoritmo

3.4. Ciclo Hacer - Mientras

Este ciclo funciona de forma similar al ciclo Mientras en términos de repetición de


expresiones mientras se cumpla una expresión, la diferencia entre ellos radica en que en el
ciclo hacer – Mientras las sentencias se ejecutan mínimo una vez, antes de que se evalúe la
expresión, es decir, el ciclo siempre se ejecuta al menos una vez, aunque la expresión que lo
evalúa sea falsa. Este tipo de ciclo, no están soportados por todos los lenguajes de
programación (Lo manejan: C/C++, Java o C#), por lo cual no será muy usado en los
algoritmos.

42
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Sintaxis:

HACER
Instrucciones del ciclo
MIENTRAS (Condición)

Ejemplo de Utilización: Realice un algoritmo que calcule la edad de n personas, como dato
de ingreso se pide el año de nacimiento y el nombre, y como información de salida se pide
que imprima el nombre junto con la dad. El programa deberá preguntar al usuario si desea
calcular la edad de la siguiente persona.

1 INICIO
2 Entero: edad, Anacimiento, Aactual
3 Cadena: nom, opcion
4 nom= “ “
5 edad, Anacimiento= 0
6 Aactual=2008
7 Hacer
8 Imprimir: (“Ingrese el nombre”)
9 Leer: nom
10 Imprimir: (“Ingrese el año de nacimiento”)
11 Leer: Anacimiento
12 edad=(Aactual-Anacimiento)
13 imprimir: (“La edad de : ” nom “es: “ edad)
14 Imprimir (“Desea calcular la edad de otra persona(S/N)?”)
15 Leer opcion
16 Mientras (pcion=’S’) /* Cuando no se requiera repetir el ciclo se
contestará con N */
18 FIN ALGORITMO

43
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
1 Inicio del Algoritmo
2 Asignación de tipo de dato entero a las variables edad, Anacimiento, actual
3 Asignación de tipo de dato cadena a las variables nom, opción
4 Inicialización de la variable nom
5 Inicialización de las variables edad, Anacimiento
6 Inicialización de la constante Aactual
7 Inicio del ciclo Hacer – Mientras
8 El algoritmo le pide al usuario ingresar el nombre de la primera persona
9 Lee el nombre de la persona y lo almacena en la variable nom
10 El algoritmo le pide al usuario ingresar el año de nacimiento
11 Lee el año de nacimiento y lo almacena en la variable Anacimiento
12 Calcula la edad restando el añoactual con el año de nacimiento
13 Muestra el resultado del cálculo: La edad de XXX es XX
14 El algoritmo le pregunta al usuario si desea calcular la edad de otra persona
15 Lee la opcion
16 Cierre del ciclo haga – mientras, se evalúa la condición, si la respuesta es S
vuelve a comenzar el ciclo, de lo contrario termina.
18 Fin del algoritmo

3.5. Ciclo Hasta o Repita Hasta

Las sentencias de este ciclo se ejecutan una vez y se repiten mientras que la condición sea
falsa. La condición es evaluada al final del ciclo.

Sintaxis:

REPETIR
Instrucciones del ciclo
HASTA (Condición)

Ejemplo: Realice un algoritmo que permita sumar 10 números introducidos por el teclado.

1 INICIO
2 Entero: suma, cont, numero
3 suma, cont, numero=0
4 Repetir
5 Imprimir: (“Ingrese el numero”)
6 Leer: numero
7 suma =suma+numero
8 cont=cont+1
9 Hasta cont=10
10 Imprimir: ( “La suma es: ” suma)
11 FIN ALGORITMO

44
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
1 Inicio del Algoritmo
2 Asignación de tipo de dato entero al acumulador suma, al contador cont y a la
variable numero
3 Inicialización de las variables suma, cont y numero
4 Inicio del ciclo Repita - Hasta
5 El algoritmo le pide al usuario el número que desea sumar
6 Se lee el número
7 Se realiza la acumulación en la variable suma
8 Se incrementa el contador cont en uno
9 Fin del ciclo Repita – Hasta, se evalúa la condición que el contador sea menor
que 10 para volver a empezar o salir
10 Se imprime el resultado de la suma
11 Fin del algoritmo

3.6. Ciclos Anidados

Así como los condicionales, los ciclos también pueden anidarse. Cuando se inserta un ciclo
dentro de otro, la estructura interna debe estar totalmente incluida dentro de la externa.
Cualquier tipo de ciclo puede ser anidado sin importar la combinación. En los ciclos anidados
se debe ejecutar totalmente el ciclo mas interno para dar paso al externo.

Sintaxis:

Sintaxis:

Inicio Ciclo 1
Instrucciones del ciclo 1
Inicio Ciclo 2
Instrucciones del ciclo 2
Inicio Ciclo 3
Instrucciones del ciclo 3
Fin Ciclo 3
Instrucciones del ciclo 2
Fin Ciclo 2
Instrucciones del ciclo 1
Fin Ciclo 1

Ejemplo: Realice un algoritmo que muestre el funcionamiento del Ciclo Horario, y que
imprima la hora en cada cambio de minuto.

45
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
1 INICIO
2 Entero: hora, min, seg, i, j, k
3 hora, min, seg, i, j, k = 0
4 Para i = 0, 59, 1
5 Para j =0, 59, 1
6 Para k= 0, 59, 1
7 seg=seg+1
8 Fin Para
9 Min=min+1
10 Imprima (“La hora es :” + hora + “:” + “min” + “:”+ seg)
11 Fin Para
12 hora=hora+1
13 Fin para
14 FIN ALGORITMO

1 Inicio del algoritmo


2 Asignación del tipo de dato a entero a las variables hora, min, seg, i, j, k
3 Inicialización de las variables
4 Inicio del ciclo Para 1, que manejara las horas, por ser el más externo
5 Inicio del ciclo Para 2, que manejara los minutos, al final de este ciclo se
deberá imprimir la hora.
6 Inicio del ciclo Para 3, que manejara los segundos. Este ciclo es el ultimo en
iniciar y el primero en terminar.
7 Incrementación de los segundos
8 Fin del ciclo 3
9 Incrementación de los minutos
10 Impresión de la hora actual
11 Fin del ciclo 2
12 Incrementación de la hora
13 Fin ciclo 1
14 Fin del algoritmo

46
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
4. Estructuras de Control

4.1. Registro Centinela

Para controlar los ciclos se usan contadores, o banderas básicamente, pero existen otro tipo
de controladores de ciclos llamados centinelas.

Un centinela es un valor especifico predefinido dado a una variable que permite detectar
cuando se desea terminar de repetir las acciones que constituyen el cuerpo del ciclo, por
ejemplo se puede diseñar un ciclo que pida el nombre y la nota de una serie de alumnos y
establecer que termine cuando se le introduzca un * (asterisco) como nombre.

Ejemplo:

Realice un algoritmo que permita calcular el salario de empleados, teniendo como datos de
ingreso el nombre, número de horas trabajadas y valor hora.

Al final calcule el total de empleados que tienen un salario mayor a $100.000, el algoritmo
finaliza cuando se ingrese un nombre = *

1 INICIO
2 Entero: nhoras, cont
3 Real: salario, vhora
4 Cadena: nom
5 nhoras, salario, contm vhora = 0
6 nom=” ”
7 leer: nom
8 Mientras ( nom <> *)
9 Leer: nhoras, vhora
10 salario=nhoras*vhora
11 Si salario > 100000 entonces
12 Cont=cont+1
13 Fin Si
14 Imprima: (“Nombre: ” nom “, Salario: ” salario)
15 leer: nom
16 Fin Mientras
17 Imprima (“El número de empleados que ganan más de 100000 es” cont)
18 FIN ALGORITMO

47
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
1 Inicio del algoritmo
2 Asignación de tipo de dato entero a la variable nhoras y al contador cont
3 Asignación de tipo de dato real a las variables salario y vhora
4 Asignación de tipo de dato cadena a la variable nom
5 Inicialización de variables enteras y reales en 0
6 Inicialización de la variable nom en vacio
7 Se lee el nombre del primer empleado
8 Inicio del ciclo Mientras, se valida con el nombre leído que sea diferente de *
9 Se lee el número de horas trabajadas y el valor hora del empleado
10 Se calcula el salario del empleado multiplicando nhoras * vhora
11 Condicional para validar si el salario es mayor a 100000
12 En caso de que el salario cumpla la condición, se cuenta con la variable cont
13 Fin del condicional
14 Se imprime el nombre y el salario del empleado
15 Se lee el nombre de un nuevo empleado, si se ingresa * el ciclo termina
16 Fin del ciclo Mientras, si cumple la condición el ciclo vuelve, sino termina
17 El ciclo termina y se imprimen los resultados generales
18 Fin del algoritmo

4.2. Registro Identificador

Es el primer registro que se lee dentro en un algoritmo y está definido por una variable que
indica cuantos registros son los que se van a leer a continuación y puede ser condicionado
por diferentes ciclos.

Ejemplo

Realice un algoritmo que lea que lea N registros en cada registro se lee el nombre y edad de
personas. Calcule e Imprima el Promedio de edad, Cuantas personas son > 60 años y el
Porcentaje de personas < 10 años.

48
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
1 INICIO
2 entero Acumed, Contper, Contmen, edad, N
3 cadena nom
4 Acumed, Contper, Contmen, edad, N=0
5 nom=” ”
6 Leer (N)
7 PARA a=1,N,1
8 Leer(nom, edad)
9 Acumed = Acumed + edad
10 Sí ( edad > 60) Entonces
11 Contper = Contper + 1
12 Fin si
13 Sí (edad < 10) Entonces
14 Contmen = Contmen + 1
15 Fin si
16 Fin para
17 Promg = Acumed / N
18 Porc = Contmen * 100 / N
19 Imprima Contper, Promg, Porc
20 FIN

1 Inicio del algoritmo


2 Asignación de tipo de dato entero a variables
3 Asignación de tipo de dato cadena a la variable nom
4 Inicialización de variables enteras en 0
5 Inicialización de variable tipo cadena en vacio
6 Se lee el N, que será el número de iteraciones que tendrá el ciclo
7 Inicio ciclo para desde 1, hasta el valor leído con incremento de 1
8 Se lee el nombre y la edad
9 Se suma la edad al acumulado general
10 Condicional que evalúa si la persona es mayor de 60 años
11 Si cumple cuenta a la persona en el contador de mayores
12 Fin del condicional
13 Condicional que evalúa si la persona es menor de 10 años
14 Si cumple cuenta a la persona en el contador de menores
15 Fin del condicional
16 Fin del ciclo para
17 Se realizan cálculos generales de promedio de edad
18 Porcentaje de personas menores de 10 años
19 Se imprimen los resultados
20 Fin del algoritmo

49
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
5. Interruptores, Switches o
Banderas
Es un campo de memoria o variable que puede tomar dos valores a lo largo de la ejecución
del algoritmo y permite comunicar información de una parte a otra del mismo. Los
interruptores suelen tomar valores booleanos como:

1y0
verdadero y falso
si y no

De ahí su nombre de interruptor, encendido y apagado. Los interruptores SW se suelen


inicializar a un valor determinado y luego se modifica su valor durante el recorrido del
algoritmo, y lo podemos relacionar con el interruptor para encender la luz.

Diseño Imagen: Jhonatan Arroyave Jaramillo y Giselle Andrea Tamayo Mármol. Mayo de 2008

Los interruptores usan para:

Ejecutar alternativamente acciones diferentes dentro de un bucle.


Recordar en puntos determinados del programa la ocurrencia o no de un
suceso anterior.
Decidir en instrucciones alternativas cual es la acción a seguir.

50
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Sintaxis

Inicio
Sw=0
Ciclo de Repetición
Si ( Condición) Entonces
Sw =1
Fin-si
Cierre ciclo de repetición
Si Sw = 0 Entonces
“ No se cumple la condición”
Sino
“ Si se cumple la condición”
Fin-si
Fin

Ejemplo:
Realice un algoritmo que lea una secuencia de números enteros e imprimir el mayor.
Al final deberá imprimir también un mensaje que indica si se ha leído un algún número
negativo. El primer registro a insertar será 0.

1 INICIO
2 Entero: Numero, mayor, band, n, i
3 Numero, mayor, band, n=0
4 Imprimir: (“Cuantos números desea ingresar”)
5 Leer: n
6 PARA i=1,N,1
7 Leer:Numero
8 Sí ( Numero > mayor) Entonces
9 mayor = Numero
10 Fin si
11 Sí (Numero < 0) Entonces
12 Band=1
13 Fin si
14 Fin para
15 Imprimir (“ El numero mayor es: ” mayor)
16 Sí (band=1) Entonces
17 Imprimir (“Se ha leído uno o más numero negativos”)
18 Fin si
19 FIN

51
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
1 Inicio del algoritmo
2 Asignación de tipo de dato entero a variables
3 Inicialización de variables numéricas en 0
4 El algoritmo pide el número de registros a evaluar
5 Se lee el número de registros
6 Inicio del ciclo para desde 1 hasta n con incrementos de 1
7 Se lee el número a evaluar
8 Condicional si el numero es mayor que cero(se pide que el primer registro sea cero
para validar que el mayor numero no sea uno negativo, en otros ejercicios se
trabajara este problema de forma avanzada)
9 Si el número es mayor que la variable mayor, entonces se reasigna el valor de
dicha variable
10 Fin del condicional
11 Condicional que evalúa si el numero ingresado es negativo
12 Si es negativo, le asigna 1 a la variable band, de lo contrario permanece en 0
13 Fin condicional
14 Fin ciclo para
15 Se imprime el número mayor
16 Condicional para preguntar si se introdujeron valores negativos, por medio de la
variable band
17 En caso afirmativo se imprime el mensaje
18 Fin condicional
19 Fin del algoritmo

52
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
6. Ejercicios propuestos usando
Selección Múltiple

Algoritmo que lee el nombre de un empleado, estado civil, edad y salario actual. Para el
empleado leído determine en nuevo salario con base en las siguientes políticas:

Soltero menor de 30 años se le aumenta el 10% de su salario actual


Soltero mayor de 30 años se le aumenta el 12% de su salario actual
Casado menor de 25 se le aumenta el 12% de su salario actual
Separado menor de 20 años se le aumenta el 8% de su salario actual
Viudo menor de 30 años se le aumenta el 15% de su salario actual
Viudo mayor de 30 años se le aumenta el 12% de su salario actual
Empleado en unión libre que devenga menos de 1000 pesos se le
aumenta el 20% de su salario actual
Empleado en unión libre que devengue 1000 pesos o mas se le
aumenta el 12% de su salario actual.

Tomado de Algoritmia básica – Roberto Flórez R.


Ude@ Para ser, saber y saber hacer

53
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Unidad 3

Arreglos
Los arreglos son un conjunto de cantidades y valores similares que se
almacenan de forma consecutiva en memoria, estos conjuntos deben
poseer nombre y se utiliza un subíndice para indicar la posición de los
elementos contenidos en él; pueden ser de varios tipos según sus
dimensiones y sobre ellos se pueden realizar diferentes operaciones
como búsqueda, modificación, inserción y eliminación de elementos.
1. Definición de Arreglos

Los arreglos son un conjunto de cantidades o valores de igual tipo y comportamiento, que se
almacenan de forma consecutiva en memoria, cada conjunto debe tener un nombre y se
usa un indicador de posición llamado índice para cada elemento del conjunto.

Los arreglos pueden ser de tres tipos:

1.1. Unidimensionales

Tienen una sola dimensión, son conocidos comúnmente como vectores:

Para referirse a un determinado elemento del vector, se coloca el nombre del vector y
dentro de un paréntesis un subíndice que indica la posición del elemento al que nos
estamos refiriendo.

El subíndice o índice de un elemento (1,2,....i,n) designa su posición en la ordenación del


vector .

Con los datos almacenados en los vectores se pueden realizar diferentes operaciones como:

Creación: Todo vector tiene nombre, tiene una dimensión (tamaño), es decir, se
divide en una cantidad física de posiciones, tiene un índice que indica el numero de
cada posición de vector este debe ser un numero entero.

Asignación : La asignación de valores aun elemento del vector se realiza con la


instrucción de asignación :

vec(10)  5 Asigna el número 5 al elemento 10 del vector vec.1

1
Para este curso se usara tanto el paréntesis como corchetes para marcar los subíndices de
los arreglos.

55
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Lectura y escritura de datos: La lectura de datos para los arreglos en general se
realiza por medio de ciclos y aunque puede hacerse con condicionales puede
convertirse en un proceso muy engorroso. Las instrucciones que usaremos para leer
e imprimir elementos de vectores son:

o Leer v Lectura del vector


o Escribir v Escritura del vector
o Leer v(5) Leer elemento v(5) del vector v

Recorrido: puede hacerse a los elementos de un vector para introducir datos


(escribir), para visualizar un contenido (leer), para efectuar una acción general sobre
todos los elementos de un vector.

Ejemplo: Lea un vector llamado VEC1 que contiene 10 posiciones.

VEC1 = array[10] entero


Haga para i= 0 hasta 9
leer VEC1(i)
FIN PARA

0 1 2 3 4 5 6 7 8 9
101 5 8 88 6 368 10258 25 123 0

1.2. Bidimensionales
Tienen dos dimensiones, se conocen como matrices o tablas.

Conjunto de cantidades organizadas en filas y en columnas, para referirse a un elemento


debe escribir el nombre de la matriz y dentro de un paréntesis el subíndice de filas y el

56
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
subíndice de columnas separados por comas. Una matriz puede entenderse como un
conjunto de vectores.

Creación: Para crear una matriz se debe escribir el nombre de la matriz y seguido
entre paréntesis el subíndice de fila y el subíndice de columnas.

Tipos de Matrices:

Matriz cuadrada es aquélla que él numero de filas es igual al de las columnas.


Matriz identidad es una matriz cuadrada que contiene en su diagonal principal valores
iguales a 1, y el resto de valores iguales a 0.

1.3. Multidimensionales
Están formados por tres o más dimensiones, para este curso no se trabajarán con este tipo
de vectores.

57
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
2. Ordenamiento de Vectores

Si una clínica maneja un promedio de 100 pacientes, la búsqueda manual de sus historias
clínicas quizá sea un poco engorrosa pero en 30 minutos se podría hacer; ahora bien si en
vez de 100 se tienen 1’000.000 pacientes, imaginen ¿cómo sería la búsqueda de sus
historias si no se encuentran organizadas? Pensando en problemas como estos es que nace
la concepción de organización de la información.

El ordenamiento de vectores tiene como finalidad principal el acceso o búsqueda de


información en el menor tiempo posible.

Consiste en organizar los registros o datos incluidos dentro de los mismos de manera
secuencial, basado en algún criterio; este criterio puede ser cualquier valor o también se
puede realizar en base a cualquier campo incluido en el arreglo; para esto se utilizan varios
métodos, veamos cuales son:

Diseño Imagen: Jhonatan Arroyave Jaramillo y Giselle Andrea Tamayo Mármol. Julio de 2008.

2.1. Métodos de Ordenamiento de vectores

Existen varios métodos de ordenamiento, los más conocidos son:

Ordenamiento por intercambio. (Burbuja)


Ordenamiento por inserción. (Inserción)
Ordenamiento por selección. (Shell)

58
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Ordenamiento por Burbuja:

Este método consiste en comparar los datos de un vector y ordenarlos de mayor a


menor; se comparan los datos secuencialmente (uno seguido del otro), si el anterior
dato es menor al siguiente comparado se intercambian de lo contrario se dejan tal y
como estaban antes y se avanza para seguir comparando los datos, es decir, se
compara el primer dato con el segundo, el segundo con el tercero, el tercero con el
cuarto y así sucesivamente hasta finalizar el recorrido del vector.

Inicio
VectorBurbuja array (N)
PARA K DESDE 1 HASTA K < N CON INCREMENTO DE 1
{
PARA J = K + 1 HASTA J <= N
{
si ( VectorBurbuja [ K ] > VectorBurbuja [ J ] )
{
Aux = VectorBurbuja [ K ];
V [ K ] = V [J ];
V [ J ] = Aux;
}
}
}
Fin

Ordenamiento por Inserción Directa:

Este método consiste en determinar la posición correcta del elemento y cuando se haya
hecho terminar la comparación.

Inicio
PARA K= 2 HASTA n CON INCREMENTO 1
AUX= Vector[K]
K = K -1
MIENTRAS (J>=1) ^(AUX < Vector[k])
Vector (J+1) = Vector [J]
K=K+1
FIN MIENTRAS
Vector[J+1] =AUX
FIN PARA
FIN

Ordenamiento por Selección Directa:

Este método consiste en encontrar el menor valor del vector y ubicarlo en la primera
posición, luego se compara el siguiente valor y se ubica en la posición n-1, es decir, se

59
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
compara desde el primero hasta una posición antes del último elemento puesto
anteriormente; y así consecutivamente hasta ordenar todo el vector.

Inicio
PARA K= 1 HASTA N -1 CON INCREMENTO 1
menor= Vector[I]
K=I
PARA J=K+1 HASTA N
SI Vector[J] < menor
menor = Vector[J]
K=J
FIN PARA
Vector[K] = Vector[I]
Vector[I] = menor
FIN PARA
Fin

60
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
3. Inserción, Eliminación y
Modificación de vectores

3.1. Inserción de elementos en vectores

Imagínese que se administra una biblioteca y llega un nuevo libro, lo que se debe hacer es
ubicarlo en un lugar específico sin alterar el orden que se tenía anteriormente si la biblioteca
se encuentra ordenada claro está porque de lo contrario será indiferente el lugar en el que
se ubique; pues bien este mismo proceso se debe seguir para insertar un elemento en un
vector.

1. Buscar el lugar indicado en el cual se insertará el elemento; para ello hay que tener en
cuenta si el vector está o no ordenado.

2. Insertar el elemento en el lugar indicado.

Vector Ordenado (Ubicación apreciable) Vector Desordenado (Ubicación despreciable )

Imágenes Diseñadas por: Jhonatan Arroyave Jaramillo y Giselle Andrea Tamayo Mármol. Julio de 2008

Veamos cómo se vería este procedimiento en un algoritmo.

Inserción de un elemento en un vector Ordenado ascendente

ALGORITMO

61
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Inicio (Vector, m )

Variables: K, m, n, Vector, posición, Dato:


Entero
Si m == n
Imprima: “Vector lleno”

Fin si

PARA K = m HASTA posición CON


VARIACION DE -1
Vector[K+1] = Vector [K]
FIN PARA
Vector [posición] = Dato
m=m+1
Fin

3.2. Borrado de elementos en vectores

El proceso que se sigue para eliminar elementos de un vector es muy similar al que se sigue
en la inserción de elementos

1. Buscar el lugar indicado en el cual se borrará el elemento.

2. Borrar el elemento en el lugar indicado.

Búsqueda de un dato a borrar

Inicio (Vector, m, Dato

Variables: K, m, Vector, Dato: Entero


I=1
MIENTRAS (I <=m r ^ Vecto[I] ≠ Dato )
I = I +1
FIN MIENTRAS
Retorne (I)
Fin

Ahora que ya se sabe cuál es el dato a borrar se procede a eliminarlo

62
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Borrado de un elemento en un vector

ALGORITMO

Inicio (Vector, m, posicion )

Variables: K, m, Vector, posición, Dato: Entero


Si posicion = m + 1
Imprima: “El dato no existe”

Fin si

PARA K = i + 1 HASTA m CON VARIACION DE + 1


Vector[K-1] = Vector [K]
FIN PARA
m=m-1
Fin

3.3. Modificación de elementos en vectores

Para modificar un elemento del vector se siguen las siguientes pautas:

1. Saber que dato se desea modificar


2. Ubicarlo
3. Proceder a modificarlo

Modificación de un elemento en un vector

ALGORITMO

63
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Inicio
Variables: modificar, modificado, N: Entero
Leer: modificar, modificado, N
Si N>= 1 entonces
I=1
Bandera=0
MIENTRAS (I<= N ) AND (Bandera = 0)
Si Vector [I] = modificar entonces
Bandera = 1
Vector[I] = modificado
sino
I=I+1
Fin si
FIN MIENTRAS
Si Bandera=0 entonces
Imprima (“ El elemento”, modificar “no existe
en el vector”)
Fin si
sino
Imprima (“No hay elementos en el vector”)
Fin si
Fin

64
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
4. Recorrido, Impresión y Llenado
de Matrices

Una matriz se puede recorrer e imprimir de varias formas:

1. Filas
2. Columnas

Veamos cómo sería:

4.1. Recorrido por filas

Consiste en recorrer e imprimir todo el contenido de la fila 1, luego el de la fila 2, 3… y así


sucesivamente hasta llegar a la última fila de la matriz.

Algoritmo recorrido e impresión por filas

Inicio
PARA F = 1 HASTA N
PARA C = 1 HASTA N
Imprima (“El elemento de la fila: ”, F, “Columna”, C, “es:” Matriz[F,C])
FIN PARA
FIN PARA
Fin

4.2. Recorrido por Columnas

El procedimiento es similar al anterior, se recorre e imprime el contenido de la primera


columna hasta llegar al final de esta, luego se sigue el mismo proceso con las siguientes.

Algoritmo recorrido e impresión por filas

Inicio
PARA C = 1 HASTA N
PARA F = 1 HASTA N
Imprima (“El elemento de la Columna: ”, C, “Fila”, F, “es:” Matriz[F,C])
FIN PARA
FIN PARA
Fin

65
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
4.3. Llenado de una matriz

Para llenar una matriz se sigue el mismo proceso de recorrido e impresión y también se
puede hacer por filas o solo varía en dos instrucciones

Veamos cuales son:

Llenado por filas

Inicio
PARA F = 1 HASTA N
PARA C = 1 HASTA N
Leer Elemento
Matriz [F,C]  Elemento
FIN PARA
FIN PARA
Fin

Llenado por Columnas

Inicio
PARA C = 1 HASTA N
PARA F = 1 HASTA N
Leer Elemento
Matriz [F,C] Elemento
FIN PARA
FIN PARA
Fin

66
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
5. Diagonal principal y Secundaria
de una Matriz

5.1. Diagonal Principal de una Matriz.

En la diagonal principal de una matriz las posiciones de las filas son iguales a las columnas.
Gráficamente se vería así:

Un esquema de la diagonal principal en orden ascendente y descendente es:

Diagonal Principal Descendente Diagonal Principal Ascendente

Filas Columnas Filas Columnas


N N 1 1
: : 2 2
: : 3 3
6 6 4 4
5 5 5 5
4 4 6 6
3 3 : :
2 2 : :
1 1 N N

67
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Un algoritmo que imprime la diagonal principal es:

Inicio
PARA C = 1 HASTA N
PARA F = 1 HASTA N
Si F = C
Imprima Matriz [F,C]
Fin si
FIN PARA
FIN PARA
Fin

Se realiza la comparación de las filas y columnas para verificar que realmente se esté
realizando la impresión de la diagonal principal.

5.2. Diagonal Secundaria de una Matriz.

En la diagonal secundaria de una matriz las posiciones de las filas son contrarias a las
columnas. Gráficamente se vería así:

68
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Un esquema de la diagonal secundaria en orden ascendente y descendente es:

Diagonal Principal Descendente Diagonal Principal Ascendente

Filas Columnas Filas Columnas


1 N N 1
2 : : 2
3 : : 3
4 6 6 4
5 5 5 5
6 4 4 6
: 3 3 :
: 2 2 :
N 1 1 N

Un algoritmo que imprime la diagonal secundaria es:

Inicio
C=N
PARA F = 1 HASTA N
Imprima Matriz [F,C]
C=C-1
FIN PARA
Fin

69
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
6. Operaciones con Vectores

Sobre los vectores se pueden realizar dos tipos de operaciones:

1. Sobre los elementos contenidos en el vector

Asignación de datos
Lectura de datos
Impresión de datos

2. Sobre el vector completo

Inserción
Eliminación
Recorrido
Ordenación
Búsqueda

6.1. Asignación de datos

Un vector funciona similar a las variables; en ellos se pueden almacenar datos introducidos
por el usuario o por el programador; por ejemplo el vector Nombres almacena los datos
personales de los estudiantes de un colegio, este vector es llenado por cada uno de ellos
(usuarios).

Ahora bien, quien realiza un algoritmo puede sin ningún problema definir un vector y
asignarle un valor en cierta posición del vector.

Vector [posición]  20

Se denotará con  la asignación de un valor al vector y con [posición] la posición en la cual


se desea asignar el valor; donde posición es representado por un número de 0 hasta n
según sea el tamaño del vector; es decir, en un vector de 5 posiciones se pueden almacenar
hasta 5 elementos donde la variable posición puede tomar valores entre 0 y 4.

70
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Sintaxis:

NombreVector[posicion]  Valor

Ejemplo de aplicación:

VNumeros [5]  13 Al vector VNumeros se le está signando el valor de 13 en la posición 5

VNombres [2]  María Al vector VNombres se le asigna el valor de María en la posición 2.

Se han visto dos ejemplos de asignación de un dentro del vector; este proceso se puede
realizar seguidamente hasta llenar completamente el vector, sin embargo este método
resultaría engorroso y poco eficiente por lo que se recomienda utilizar un ciclo ya sea Para o
Mientras para asignar valores a todas las posiciones.

6.2. Lectura de datos

Este tipo de proceso se realizan sobre vectores llenos, por ejemplo si en el vector nombres
se desea leer el dato ubicado en la posición 4 se procede de la siguiente forma:

Leer VNombres [4] Se lee el dato ubicado en la posición 4

Este proceso es exactamente igual que la lectura de cualquier dato ingresado por el usuario
simplemente se utiliza la estructura de vector: NombreVector [Número de Posición a leer].

6.3. Impresión de datos

Este proceso es exactamente igual que anterior, solo que hay salida de información.
Tomemos el ejemplo anterior y veamos cómo se escribe:

Imprima “El elemento de la posición 4 es:”, VNombres [4]

Se imprime un mensaje seguido del elemento ubicado en la posición 4.

71
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
6.4. Búsqueda de elementos en un vector

Si se tienen un conjunto de datos dentro de un vector y se desea buscar solo uno o varios
pero que cumplan con ciertas características se recurren a las búsquedas para realizar este
proceso; existen dos tipos de búsqueda:

1. Secuencial
2. Binaria

1. Búsqueda Secuencial

Es método realiza comparaciones a lo largo de todo el vector empezando desde la primera


posición hasta la última siguiendo un estricto orden; generalmente se utiliza este método de
búsqueda cuando se tienen vectores desordenados. Estas búsquedas son: Búsqueda con
Barrido Completo y Búsqueda con Barrido Interrumpido.

Búsqueda con Barrido Completo: Se realiza la búsqueda desde el primer elemento


hasta el último; es recomendable utilizar este método cuando las características a
buscar en los elementos sean comunes, es decir, cuando posiblemente varios
elementos contengan las mismas características.
Búsqueda con Barrido Interrumpido: Se realiza hasta que se encuentre el elemento
y cuando lo haga finaliza la búsqueda o hasta que se recorra todo el vector.

2. Búsqueda Binaria

En este método se halla la posición del elemento deseado en un vector ordenado; los pasos
a seguir son los siguientes:

Hallar el elemento central del vector


En caso que sea el elemento a buscar finaliza la búsqueda
En caso que el elemento sea menor que el central se procederá a buscar en la
primera mitad del vector.
En caso que el elemento sea mayor que el central se procederá a buscar en la
segunda mitad del vector.
Luego se selecciona la mitad del vector donde se cree que está el elemento y se
repite el proceso.
Si esa mitad donde se presume estar el vector es menor que 1 el elemento no está
en el vector y finaliza la búsqueda.

72
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
7. Arreglos Paralelos

7.1. Arreglos Paralelos

Los arreglos paralelos no son más que un conjunto de vectores en los cuales la información
de uno está relacionada con la de los demás; quizá esta definición resulte un poco
complicada pero si se hace una la siguiente comparación se puede comprender mejor el
concepto.

Suponga que se tienen tres vectores, el primero con los nombres de 30 estudiantes de un
curso, el segundo con las notas de Matemáticas y en el tercero las notas de Español; a la
posición 1 del primer vector le corresponde el elemento ubicado en la misma posición de los
vectores 2 y 3. En este caso los vectores son paralelos.

Ahora, haciendo referencia a lo anterior se puede definir en términos concretos que los
vectores paralelos son un conjunto de arreglos donde el valor de un elemento se relaciona
con otro en uno o más vectores.

Estudiantes Matemáticas Español


Ana 2.5 3.0
Pedro 3.1 4.6
Luis 4.5 2.9
Carlos 5 3.6
María 2.3 4.1
Ángela 1.2 5
. . .
. . .
. . .

73
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Unidad 4

Programación
Modular
La programación modular es uno de los métodos de diseño más flexibles y
potentes para mejorar la productividad de un programa. En programación
modular, el programa se divide en módulos (partes independientes), cada
una de las cuales ejecuta una única actividad o tarea y se codifican
independientemente de otros módulos. Cada uno de estos módulos se
analizan, codifican y ponen a punto por separado.
1. Definición de Programación
Modular

Los subprogramas son muy útiles a la hora de solucionar grandes problemas, por ejemplo,
imagine que se está construyendo un hospital en un lejano pueblo y se desean transportar
los materiales desde la ciudad pero el camino hacia el pueblo es lo suficientemente angosto
para no permitir el paso de maquinaria pesada con los materiales, ¿que se podría hacer para
solucionar este problema?

Una muy buena solución para ello no siendo la única es dividir los materiales en fracciones
más pequeñas posibilitando de esta forma su transporte en vehículos de menor tamaño.

Si con esta ilustración aún no tiene una idea intuitiva de programación modular imagine otra
situación que tal vez le dé un poco mas de claridad para comprender este concepto.

¿Cómo funciona una fábrica de camisas?

Para una fábrica de estas resultaría muy costoso que cada empleado realizara
completamente una prenda; es por esto que dividen el trabajo por módulos en los cuales
cada uno de ellos se encarga de una labor específica como: hacer cuellos, pegar cuellos y

75
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
finalmente otro módulo ensambla las camisas y da como resultado la producción que se
desea a costos más bajos. Este tipo de producción es llamado “producción en línea”.

Imagen tomada de:http://www.normark.es/img/grupo/gr_FabricaChina.jpg

Pues bien, este concepto es utilizado en programación y se le llama programación


modular.

La Programación Modular no es más que la división de un problema o tarea compleja en


tareas más sencillas y menos tediosas cuyo objetivo primordial es el aumento en la
eficiencia de los algoritmos y optimización de los recursos ya que el código escrito puede ser
fácilmente reutilizado en posteriores algoritmos.

Veamos un ejemplo gráfico de este tipo de programación:

Se desea realizar un algoritmo que realice simule una calculadora y realice las
siguientes operaciones con un conjunto de números dados:
Suma,
Resta,
Multiplicación,
División,
Potenciación,
Logaritmo,
Raíz cuadrada.

76
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Calculadora

Suma
División
Resta
Potenciación

Logaritmo
Raíz Cuadrada
Multiplicación

El programa principal Calculadora invoca o llama a los subprogramas Suma, resta,


multiplicación, división, potenciación, logaritmo y raíz cuadrada cuantas veces el
usuario necesite realizar alguna de estas operaciones.

Ahora veamos cómo sería en notación algorítmica:

SINTAXIS:

INICIO (Programa Principal)

Asignación de tipos (Entero, Real…)


Inicialización de variables

Llamada Subprograma 1 (variables)


:
:
:
Llamada Subprograma n (variable)

FIN

77
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
2. Subprogramas

Un subprograma es un algoritmo ligado a otro programa principal que lo utiliza para realiza
una tarea específica y repetitiva.

Este tipo de programación tiene la ventaja de reducir el código redundante ya que en vez de
reescribir el bloque de instrucciones cada vez que se necesite se construye un subprograma
y se invoca las veces que se requiera hacer la misma tarea; esto permite que los programas
sean más cortos y por ser así facilitan la corrección de errores y escritura de nuevas
instrucciones.

Un subprograma es un algoritmos como cualquier otro y puede cumplir perfectamente con


las mismas características y funciones; sin embargo son utilizados para cumplir operaciones
específicas, es decir, el subprograma recibe datos del programa que lo invoca, realiza los
cálculos necesarios y finalmente retorna o devuelve resultados.

Un subprograma puede ser llamado y a la vez ser llamado por otro subprograma.
Ilustremos gráficamente este suceso:

En el gráfico se puede ver como el programa principal invoca a los subprogramas cada vez
que los requiera; cuando el programa llamante invoca un subprograma se tiene hasta recibir
la respuesta o el retorno de información del subprograma que llamó; también se puede
apreciar como el subprograma división realiza sus cálculos, llama a los subprogramas
multiplicación y resta, espera los resultados que estos le devuelvan y se los retorna junto
con los suyos al programa principal.

78
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
79
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Ahora veamos cómo sería en notación algorítmica:

SINTAXIS:

Subprograma_NombreSubprograma (Parámetros: Entrada, Salida)


Inicio
Asignación de tipos (Entero, Real…)
Inicialización de variables propias del subprograma
<Instrucciones Subprograma>
:
:
Llamada a subprograma x (si lo requiere)
:
:
Regrese

En este tema se ha introducido un concepto diferente, es el concepto de parámetros; pues


bien, los parámetros generalmente son variables que representan los datos de entrada,
salida y/o entrada y salida en el subprograma; es decir, el programa principal o
subprograma Y hace una llamada al subprograma X, le envía datos ya sea de entrada para
que realice cálculos y el subprograma X a su vez le devuelve datos de salida con los
resultados de los mismos; o también puede ocurrir que el mismo dato de entrada sea
modificado por el subprograma X y lo retorne con otro valor

Estos parámetros reciben un nombre de acuerdo con su acción, por ejemplo:

Los Parámetros de Entrada son llamados Parámetros por valor.


Los Parámetros de Salida y de Entrada/Salida son llamados Parámetros por
referencia.

En la definición de un subprograma es necesario definir estos parámetros, cuales son de


entrada, salida o Entrada/Salida; en este curso se denotarán los parámetros por

valor o de Entrada con una flecha hacia abajo y los de Salida o parámetros

por referencia con una flecha hacia arriba

En el tema 6 de la unidad 1 se vio el concepto de variable ahora se introducirá una nueva


función de las variables; estas pueden ser Locales o Globales.

Variables Locales: Estas variables son utilizadas dentro del subprograma que fueron
definidas y su tiempo de vida termina inmediatamente finaliza el subprograma.

Variables Globales: Son definidas en el programa principal y pueden ser utilizadas tanto
dentro como fuera de este y en los subprogramas contenidos en el mismo.

80
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
3. Funciones

Las funciones son subprogramas que retornan un valor de acuerdo a los parámetros de
Entrada que se le hayan ingresado y los muestran por medio de parámetros de salida.

En el ejemplo de la calculadora se puede apreciar que los subprogramas suma, resta,


multiplicación, división, potenciación y raíz cuadrada son funciones ya que retornan el
resultado de sus cálculos al programa principal o subprograma que los invocó.

81
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
4. Procedimientos

Los procedimientos funcionan de manera contraria a las funciones; son subprogramas que
ejecutan tareas pero no retornan ningún valor; generalmente son precedidos de la palabra
void.

Veamos cómo se escribiría esto:

Void Nombre_Procedimiento (Parámetros: Entrada, Salida)


Inicio
Asignación de tipos (Entero, Real…)
Inicialización de variables propias del subprograma
<Instrucciones Subprograma>
:
:
< Llamada a subprograma x>
:
:
< Llamada a subprograma x>
Fin

82
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
5. Ejercicios Resuelto
1. Se dispone un conjunto de personas, con sus nombres y fechas de nacimiento, se les
debe calcular:

Edad,
Edad promedio de los mayores de edad,
Porcentaje de menores de edad,
Edad promedio del grupo.

El fin de archivo lo indica el nombre xxx

[Programa Principal]
1 Void EDADES
2 Inicio
3 Fnac, Fact, Smay, Cmay, Cmen, Cper, Sed = Entero.
4 Fac = 2008
5 Cper, Cmay, Smay, Sed = 0
6 Leer (Nom, Fnac)
7 Haga Mientras (Nom <> xxx)
8 Llamar_a CALED (Fnac, Fact, Ed)
9 Imprima (“Nombre”, Nom “su edad es:”, Ed)
10 Llamar_a TOTALES (Ed, Smay, Cmen, Cmay, Sed)
11 Cper = Cper+1
12 Leer (Nom, Fnac)
13 Fin Mientras
14 Llamar_a GENERALES (Ppmen, Pmay, Sed, Cmen, Cper, Cmay, Eprom, Smay)
15 Llamar_a MOSTRAR (Pmay, Ppmen, Eprom)
16 Fin

83
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
1 Definición de Programa Principal e identificación del mismo
2 Inicio Algoritmo
3 Declaración de variables globales
4 Definición de la variable fecha actual
5 Inicialización de variables globales en 0 (cero)
6 Lee el nombre y fecha de nacimiento para luego almacenarlas en las variables Nom y Fnac
7 Inicio del ciclo Haga Mientras
8 Llamada al subprograma CALED
9 Imprime nombre y edad
10 Llamada al subprograma TOTALES
11 Incremento del contador de personas Cper
12 Lee el siguiente nombre; esta instrucción ese necesaria para seguir comparando hasta
encontrar el fin de archivo xxx
13 Fin del ciclo mientras
14 Llamada al subprograma GENERALES
15 Llamada al subprograma MOSTRAR
16 Fin Algoritmo

[Subprograma]
1 Entero CALED (Fnac, Fact, Ed)
2 Inicio
3 Ed = Entero.
4 Ed = 0
5 Ed = Fnac –Fact
6 Regrese

1 Definición e identificación del subprograma


2 Inicio Subprograma
3 Declaración de la variable Ed
4 Inicialización de la variable Ed
5 Cálculo de la edad restándole la fecha de nacimiento a la fecha actual
6 Fin del subprograma y retorno de valores en este caso la edad (Ed)

[Subprograma]
1 Entero TOTALES (Ed, Smay, Cmen, Sed)
2 Inicio
3 Si Ed >= 18
4 Cmay = Cmay + 1
5 Smay = Smay + Ed
6 sino
7 Cmen = Cmen + 1
8 Fin si
9 Sed = Sed + Ed
10 Regrese

84
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
1 Definición e identificación del subprograma
2 Inicio Subprograma
3 Inicio del condicional si quien verifica que la persona sea mayor de edad
4 Incremento del contador de mayores
5 Incremento del acumulador de edades mayores
6 Componente sino quien verifica los menores de edad
7 Incremento del contador de menores
8 Fin condicional Si
9 Incremento del acumulador de edades
10 Fin del subprograma y retorno de valores en este caso el contador de
mayores, suma mayores, contador menores, suma edades (Cmay, Smay,
Cmen, Sed)

[Subprograma]
1 Entero MOSTRAR (Pmay, Ppmen, Eprom)
2 Inicio
3 Imprima (“Promedio edad :”,Eprom “Promedio menores:”, Ppmen, “Promedio mayores”, Pmay)
4 Regrese
4

1 Definición e identificación del subprograma


2 Inicio Subprograma
3 Imprime los resultados de los promedios ingresados
4 Fin del subprograma y retorno de valores en este caso Edad promedio (Eprom)

[Subprograma]
1 Entero GENERALES (Cmay, Cper, Smay, Cmen, Sed, Eprom, Ppmen)
2 Inicio
3 Pmay, Ppmen, Eprom = Real
4 Pmay, Ppmen, Eprom = 0
5 Eprom = Sed/Cper
6 Ppmen = Cmen/Cper
7 Pmay = Smay/Cmay
8 Regrese

85
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
1 Definición e identificación del subprograma
2 Inicio Subprograma
3 Declaración de las variables Pmay, Ppmen, Eprom como reales
4 Inicialización de las variables en 0 (cero)
5 Cálculo de la edad promedio resultante de la división entre la suma de
edades y el número total de personas
6 Cálculo del promedio de personas menores resultante de la división entre
el número de menores y el número total de personas
7 Cálculo del promedio de mayores resultante de la división entre la suma
de mayores de edades y el número de personas mayores
8 Fin del subprograma y retorno de valores en este caso la edad promedio y
el promedio de menores (Eprom, Ppmen)

Fin del subprograma y retorno de valores en este caso el contador de


mayores, suma mayores, contador menores, suma edades (Cmay, Smay,
Cmen, Sed)

86
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Unidad 5

Programación
Orientada a Objetos
La programación orientada a objetos P.O.O. trata de solucionar
problemas emulando la vida real a través de objetos y utilizando
conceptos como polimorfismo y herencia. La programación orientada a
objetos ha tomado gran impulso en la última década sobre todo porque
facilita la solución de algoritmos, edición y reutilización del código fuente.
1. Introducción a la Programación
Orientada a Objetos (P.O.O)

1.1. Programación Orientada a Objetos

La Programación Orientada a Objetos es ver las cosas como son en la vida real; este método
de programación se enfocada en los objetos, sus propiedades, métodos y atributos.

Por ejemplo tomemos un objeto de la vida real: Una lámpara y modelémoslo según la
programación orientada a objetos.

Pues bien, la lámpara puede realizar acciones como encender y apagar, en programación
orientada a objetos o POO estas acciones son llamadas métodos; además de eso también
posee características como el color, la marca, etc. A esto se le llama propiedades.

La programación orientada a objetos no es más que pensar en entidades u objetos reales y


su comportamiento en el medio.

Veamos algunas definiciones básicas en las que se fundamenta la Programación Orientada a


Objetos.

88
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
1.2. Conceptos Básicos

Anteriormente, un programa, era simplemente, una serie de instrucciones que le indican a la


máquina qué hacer. Lea, asigne, procese, muestre, etc., mientras que con la POO, un
programa es un conjunto de objetos que dialogan entre sí, para realizar las distintas tareas
programadas. Cuando se ejecuta un programa orientado a objetos, los objetos están
recibiendo, interpretando y respondiendo a mensajes de otros objetos. Un POO se compone
solamente de objetos. Cada uno de ellos es una entidad que tiene unas propiedades
particulares. Los atributos, y unas formas de operar sobre ellos, los métodos. Por ejemplo,
una ventana de una aplicación Windows, es un objeto. El color de fondo, la anchura, la
altura, etc., son atributos. Las rutinas, lógicamente transparentes para el usuario, que
permiten maximizar la ventana, minimizarla, entre otros, son los métodos.

1.3. Ventajas de la POO

Anterior a la POO existían otros modelos de programación entre ellos - la programación


estructurada- los cuales presentaban ciertos problemas, tales como:

Dificultad de modificación de una parte sin afectar al sistema entero.


No aprovechamiento de código existente, siendo cada programa construido desde
cero.
Dificultad en la separación de tareas y responsabilidades, todo programador tenía
que conocer cada parte del sistema.
Dificultad para transmitir lo modelos de negocios en los modelos de programación.
Dificultad en la integración de sistemas.

El hecho de utilizar un lenguaje POO no implica que ya no se tengan los problemas citados;
para ello se debe, realmente programar orientados a objetos y olvidar antiguas prácticas de
la programación. De nada sirve tener una sola clase llamada Program con un sólo método
llamado Main.

Las metodologías Orientados a Objetos resuelven en cierta medida los problemas


anteriormente listados y proporcionan los siguientes beneficios:

Transición intuitiva de los modelos de análisis de negocios a los modelos de


implementación de software.
Mantenimiento e implementación de cambios más eficiente y rápida
Permite separar partes del sistema para trabajar en ellos sin afectar al resto del
mismo.
Permite la reutilización de código de componentes en otros sistemas e incorporar
componentes de terceros.
Permite una mejor integración de sistemas distribuidos con un bajo acoplamiento.
Mejores interfaces graficas y componentes al aprovechar frameworks preconstruidos
y probados.

89
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Del mismo modo, para obtener éstas ventajas se debe aplicar al software los
principios y metodologías de la POO.

1.4. Cómo se piensa en objetos

Pensar en términos de objetos es muy parecido a cómo se haría en la vida real. Por ejemplo,
pensar en un vehículo para tratar de modelarlo en un esquema de POO. Se podría decir, que
el vehículo es el elemento principal que tiene una serie de características, como podrían ser
el color, el modelo o la marca. Además tiene una serie de funcionalidades asociadas, como
pueden ser ponerse en marcha, parar o detenerse.

Pues en un esquema POO el vehículo sería el objeto, las propiedades serían las
características como el color o el modelo y los métodos serían las funcionalidades asociadas
como ponerse en marcha o parar.

Por poner otro ejemplo se verá, cómo se modelaría en un esquema POO una fracción, es
decir, esa estructura matemática que tiene un numerador y un denominador que divide al
numerador, por ejemplo 3/2.

La fracción será el objeto y tendrá dos propiedades, el numerador y el denominador. Luego


podría tener varios métodos como simplificarse, sumarse con otra fracción o número,
restarse con otra fracción, etc.

Estos objetos se podrán utilizar en los programas; por ejemplo en un programa de


matemáticas se haría uso de objetos fracción y en un programa que gestione un taller de
vehículos, se utilizará el objeto vehículo. Los programas Orientados a Objetos utilizan
muchos objetos para realizar las acciones que se desean realizar y ellos mismos también son
objetos. Es decir, el taller de vehículos será un objeto que utilizará objetos vehículo,
herramienta, mecánico, recambios, etc.

90
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
2. Definiciones

2.1. Clase

Es la definición de todos los objetos que la conforman, en una clase están contenidos todos
los objetos y métodos. Cuando se define un objeto con sus métodos y atributos realmente
lo que se está haciendo es definiendo una clase.

Se podría decir que una clase es una plantilla donde se definen objetos, métodos y atributos.
Las clases son declaraciones de objetos, también se podrían definir como abstracciones de
objetos. Esto quiere decir que la definición de un objeto es la clase. Cuando se programa un
objeto y se definen sus características y funcionalidades en realidad lo que se está haciendo,
es programar una clase. En los ejemplos anteriores en realidad se hablaban de las clases
vehículo o fracción porque sólo se estuvo definiendo, aunque por encima, sus formas.

2.2. Subclase

Las subclases toman las variables de las clases y realizan operaciones para estas; la
subclase realiza las operaciones y las envía a la clase quien es la encargada de mostrarlas.

2.3. Objeto

Este concepto es primordial en la POO y representa igual que en la vida real cualquier
entidad que se pueda imaginar, por ejemplo:

2 3

4 5 6

Imágenes: 1, 2,5: Equipo Técnico P.A.V. 3,4 y 6. Galería ClipArt Microsoft Word

91
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Simplemente es pensar en cualquier ente que se pueda representar y que posea
características y/o funciones.

El avión es un objeto compuesto por una serie de características como son el motor, hélices,
etc. y que además tiene comportamientos como volar, aterrizar, despegar, etc.

En POO a las características de los objetos como lo son el color, tamaño se les llama
atributos y al comportamiento o funciones que pueden realizar se les llama métodos.

Los objetos son ejemplares de una clase cualquiera. Cuando se crea un ejemplar (también
llamado Molde) se tiene que especificar la clase a partir de la cual se creará. Esta acción de
crear un objeto a partir de una clase se llama instanciar (que viene de una mala traducción
de la palabra instace que en inglés significa ejemplar). Por ejemplo, un objeto de la clase
fracción es por ejemplo 3/5. El concepto o definición de fracción sería la clase, pero cuando
ya se está hablando de una fracción en concreto 4/7, 8/1000 o cualquier otra, se llama
objeto.

2.4. Atributo

Como se mencionó en el tema anterior de esta unidad, un atributo se define como la


característica o conjunto de ellas que posee un objeto.

Por ejemplo, tomemos varios objetos comunes y veamos sus atributos:

1. Bombillo

Forma
Color
Material
Luminosidad
Marca

2. Cuaderno

Forma
Color
Material
Argollado o tipo encuadernación
Carátula
Marca

3. Lapicero

Forma
Color

92
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Tamaño
Tinta
Marca

2.5. Método

Los métodos describen el comportamiento y función de un objeto.

Retomemos los ejemplos anteriores pero en vez de analizar sus atributos observemos los
métodos:

1. Bombillo

Encendido / Brillar
Apagado / No brillar

2. Cuaderno

Abrir
Cerrar
Arrancar hoja

3. Lapicero

Escribir
Expandir punta
Contraer punta

2.6. Instancia

Se define instancia como la persona, objeto o conjunto de ellos que conforman un grupo o
nivel; en programación orientada a objetos se suele decir que un objeto es una instancia de
una clase.

Por ejemplo, de la clase Mamífero, se obtiene un objeto de esta clase el cual podría ser el
animal delfín; aplicando este concepto se dice que el objeto delfín es una instancia de la
clase Mamífero. Es un integrante (Instancia) del grupo Mamíferos.

93
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
2.7. Mensaje

Como en la vida real cuando se desea comunicar con alguien se le envía un mensaje ya sea
por medio de una carta, una llamada, un e-mail, etc.

Igualmente funciona en POO, un mensaje es la transmisión de información entre objetos a


través del paso de mensajes.

En la programación orientada a objetos el paso de mensajes es muy importante ya por


medio de este método los objetos pueden llamar a funciones y realizar cada una de sus
actividades. Por ejemplo.

2.8. Herencia

Así como un niño hereda de su madre el color de los ojos, la sonrisa y de su padre la forma
de caminar igualmente ocurre en la programación orientada a objetos; los objetos heredan
características o métodos de otros; esta funcionalidad es muy importante ya que se reduce
notablemente el código y la redundancia. Veamos un ejemplo gráfico de esto.

Animal

Peces Insectos Aves Mamíferos Reptiles

Como podemos ver en el gráfico los peces, insectos, aves, mamíferos y reptiles aunque son
clases diferentes tienen en común algo y es que todos son animales; esto indica que cada

94
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
uno de ellos tiene sus propias características pero han heredados algunas o todas las
funciones y métodos de la clase animal.

Otro ejemplo muy práctico es la herencia en una Cuenta bancaria de las cuales heredan
las cuentas de Ahorro y Corriente; de estas a su vez heredan otros tipos de cuenta; en el
momento de crear los métodos para las clases cuenta de ahorros y corriente se omitirán
aquellos que son comunes para ambas y que están contenidos en la superclase Cuenta
bancaria, no es necesario hacerlo, de este modo se facilita la programación y reutilización
del código escrito.

2.9. Polimorfismo

Si se remite a la etimología de la palabra se encontrará que es la propiedad de los


elementos y sus compuestos, que pueden cambiar de forma sin variar su naturaleza.

Pues bien, este concepto funciona precisamente igual en la programación orientada a


objetos, el polimorfismo no es más que la característica que tienen los objetos de
comportarse de diferente forma según sea el contexto en el que se desenvuelven.

Un ejemplo muy común de polimorfismo en muchos lenguajes es el uso que se le puede dar
al operador “+”; en algunos casos funciona como suma (si está en medio de dos números);
pero en otras ocasiones concatena o une cadenas de texto (si se encuentra en medio de
letras).

1+1  Suma los números y se obtiene como resultado otro número 2

“Ana” + “María”  Concatena el texto y se obtiene como resultado la frase Ana María.

2.10. Abstracción

La Real Academia de la Lengua Española define la abstracción como la acción de separar por
medio de una operación intelectual las cualidades de un objeto para considerarlas
aisladamente o para considerar el mismo objeto en su pura esencia o noción.

En POO expresa la acción de conceptualizar a los elementos de un sistema (los módulos)


excluyendo aquellos elementos que no son relevantes para la solución del problema, es
decir, excluyendo aquellos aspectos (atributos y comportamientos) que no son importantes
según el dominio del problema, haciendo mayor énfasis en el "qué hace" el objeto sobre el
"cómo lo hace". Por ejemplo: La representación abstracta de Empleado tiene como
atributos: Nombre, Salario e Identificador. Pero no su Estatura o Edad, a menos que sean
relevantes para el dominio del problema. Por otra parte, en términos de la POO, una
representación abstracta no es otra cosa que el mecanismo utilizado por ésta para construir
objetos, al cual se le conoce como Clase.

95
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Clase: Es el orden en el que, con arreglo a determinadas condiciones o calidades, se
consideran comprendidas diferentes cosas. En POO es una representación abstracta de un
conjunto de elementos del sistema que tienen las mismas características y
comportamientos, y a partir de la cual se pueden crear ejemplares u objetos utilizables. Es
decir que una clase equivale a la generalización de un tipo específico de objetos. Mientras
que un objeto es una representación concreta y específica de una clase, por lo que se dice
también que es una instancia de clase.

A partir de este concepto se puede definir la abstracción en palabras más simples y


enfocadas a la POO como el proceso que brinda la posibilidad de simplificar la solución de un
problema mediante la separación de las características más importantes de un objeto.

2.11. Encapsulamiento

El encapsulamiento consiste en ocultar los datos contenidos en objetos, métodos y variables


para protegerlos de malos usos, por ejemplo, se crea un objeto que funciona como una
unidad completa con sus métodos y variables y se le empaqueta en una “capsula” por
decirlo así con un nombre que identifica el uso que se le puede dar.

Este método permite que los datos de un objeto sean utilizados únicamente por quien tenga
derecho; además facilita la programación ya que se pueden reutilizar métodos o
procedimiento ya creados siempre y cuando estén encapsulados como públicos y brinda
privacidad en aquellos que se declaren como privados.

En POO es la capacidad de una representación abstracta (clase) de ocultar la


implementación de sus atributos y comportamientos, restringiendo el acceso externo a los
datos guardados por una instancia, denominado estado. Dicho estado es manipulado de
manera controlada mediante una serie de métodos, denominada interfaz, definidos para la
interactuación con otras instancias a través de mensajes (invocación de métodos). Por
ejemplo: La Cerradura tiene una interfaz de "giro a la derecha" que abre y "giro a la
izquierda" que cierra, pero el modo en que internamente lo realiza permanece oculto. Con
esto se logra que los datos de los sistemas sean más seguros y confiables, al controlar el
modo en que éstos son modificados. Por otro lado facilita la separación de tareas ya que otro
objeto sólo necesita conocer su interfaz para poder enviarle mensajes y colaborar con él, sin
necesidad de conocer su implementación y viceversa.

El encapsulamiento garantiza la integridad de los datos de un objeto.

96
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Diseño Imagen: Jhonatan Arroyave Jaramillo y Giselle Tamayo Mármol. Junio de 2008

Las formas de encapsular son:

Público: Permite acceder a la clase desde cualquier parte del programa

Privado: Solo se permite el acceso desde la misma clase.

Protegido: Permite el acceso únicamente desde la misma clase y sus herederos

2.12. Jerarquía

Clasificación u ordenación según un grado de valor o dependencia. En POO se refiere a la


organización entre las diferentes representaciones abstractas que comprenden el sistema.
Dicha organización especifica la relación entre las representaciones abstractas la cual puede
ser de diferentes formas. En POO resaltan dos: La Agregación y la Herencia. o Agregación:
Es la acción de formar un objeto juntando a otros colocándolos con cierto orden. En POO es
la relación entre entidades que contempla la composición de una(s) para formar parte de
otra, esto implica una relación jerárquica de tipo "tiene un(a)". Por ejemplo: Un Automóvil
"tiene un" Motor, el cual a su vez "tiene una" Transmisión, etc.

Esta propiedad permite modelar e implementar con precisión procesos de negocio a nuestro
software. o Herencia: Es la capacidad de los progenitores de transmitir un conjunto de
características a su descendencia. En POO brinda la capacidad de derivación de una entidad
a partir de otra que le "transmite" su comportamiento, siendo la relación jerárquica de tipo
"es un".

Por ejemplo: Un Felino "es un" Mamífero que a su vez "es un" Animal.
La Herencia, también conocida como Generalización, establece que:

Algunas entidades son más generales.


Algunas otras son especializaciones de las anteriores.
Por ende todos los objetos derivan de una clase superior y heredan la estructura de
datos y las operaciones que han sido definidas para dicha clase. Para ello al diseñar

97
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
las clases se clasifican de acuerdo al conjunto de características o funciones similares
entre ellas.

Esto permite crear nuevas representaciones abstractas especializadas a partir de otra


más general de la cual heredan su implementación, permitiendo reutilizar el código y
concentrarse sólo en agregar nuevas características. Del ejemplo anterior, la
representación abstracta de Animal es la más general de todas y de la cual se
especializan tanto las representaciones abstractas de Mamífero y Felino, quienes a su
vez heredan la implementación de Animal y cuyas implementaciones sólo añaden
nuevos comportamientos especializados.

98
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Glosario

GLOSARIO

CÓDIGO FUENTE: Programa en su forma


ACUMULADOR: Campo o variable que original, tal y como fue escrito por el
sirve para llevar una suma o cuenta de programador, el código fuente no es
diferentes valores. ejecutable directamente por el
computador, debe convertirse en lenguaje
ARCHIVO: Son un conjunto de registros de maquina mediante compiladores,
lógicos. ensambladores o interpretes.

BASE DE DATOS: Es un almacenamiento CONSTANTE: Valor o conjunto de


colectivo de las bibliotecas de datos que caracteres que permanecen invariables
son requeridas y organizaciones para durante la ejecución del programa.
cubrir sus requisitos de procesos y
recuperación de información. DATO: El termino que usamos para
describir las señales con las cuales trabaja
BASIC: ( BIGINNERS ALL PURPUS la computadora es dato; Aunque las
SIMBOLIC INSTRUTION CODE ), Lenguaje palabras dato e información muchas veces
de instrucciones simbólicas de propósito son usada indistintamente, si existe una
general para principiantes, esta disponible diferencia importante entre ellas. En un
en modo compilador e interprete, siendo sentido estricto, los datos son las señales
este ultimo el mas popular para el usuario individuales en bruto y sin ningún
circunstancial y para el programador significado que manipulan las
principiante. computadoras para producir información.

BIT:(dígito binario ) un dígito simple de DIAGRAMA DE FLUJO: Es la


un numero binario (1 ó 0) representación gráfica de una secuencia
de instrucciones de un programa que
ejecuta un computador para obtener un
BUFFER: Memoria intermedia, una
resultado determinado.
porción reservada de la memoria, que se
utiliza para almacenar datos mientras son
procesados. EDITOR: Es un software empleado para
crear y manipular archivos de texto, tales
como programas en lenguaje fuente, lista
BYTE: Grupo de bits adyacentes operados
de nombres y direcciones.
como una unidad, ( grupos de 8 bits ).

FUNCION: Subprograma que retorna un


CAMPO: Es el espacio en la memoria que
resultado de acuerdo a los parámetros por
sirve para almacenar temporalmente un
valor que se le hayan introducido.
dato durante el proceso, Su contenido
varia durante la ejecución del programa.
HARDWARE: Es la parte tangible del
computador.
IDENTIFICADOR: Es el nombre que se le PROCESO: Son las operaciones, y
dan a los programas, subprogramas, resultados que se realizan sobre los datos
constantes y variables. con base en a las instrucciones de un
algoritmo.
INFORMACION: Es lo que se obtiene del
procesamiento de datos, es el resultado PROGRAMA: Es una colección de
final. instrucciones que indican a la
computadora que debe hacer. Un
INSTRUCCION O SENTENCIA: Conjunto programa se denomina software, por lo
de caracteres que se utilizan para dirigir tanto , programa, software e instrucción
un sistema de procesamiento de datos en son sinónimos.
la ejecución de una operación .
PROGRAMADOR: Un individuo que
INTERFAZ: Una conexión e interaccion diseña la lógica y escribe las líneas de
entre hardware, software y usuario, es código de un programa de computadora.
decir como la plataforma o medio de
comunicación entre usuario o programa. PSEUDOCODIGO: Herramienta de
análisis de programación. Versiones
INTERPRETE: Dispositivo o programa que falsificadas y abreviadas de las actuales
recibe una por una las sentencias de un instrucciones de computadora que son
programa fuente, la analiza y la convierte escritas en lenguaje ordinario natural.
en lenguaje de maquina si no hay errores
en ella. También se puede producir el REDUNDANTE: Repetición excesiva de
listado de las instrucciones del programa. una frase, palabra o concepto.

LÓGICA: Es una secuencia de operaciones REGISTRO: Es un grupo de campos


realizadas por el hardware o por el relacionados que se usan para almacenar
software. datos acerca de un tema ( registro
maestro ) ó actividad ( registro de
PARÁMETROS POR REFERENCIA: transacción ).
Variables que contienen datos de salida en
los cuales se retornan los resultados de las SOFTWARE: Conjunto de programas,
operaciones realizadas dentro de un documentos, procesamientos y rutinas
subprograma. asociadas con la operación de un sistema
de computadoras, es decir, la parte
PARÁMETROS POR VALOR: Variables intangible de computador.
que contienen datos de entrada necesarios
para realizar operaciones dentro de un USUARIO: Cualquier individuo que
subprograma. iteractúa con la computadora a nivel de
aplicación. Los programadores, operadores
PARÁMETROS: Son los datos mediante y otro personal técnico no son
los cuales un programa se comunica con el considerados usuarios cuando trabajan
subprograma al que llama; pueden ser por con la computadora a nivel profesional.
valor o por referencia.
VARIABLE: En programación es una
PERIFERICOS: cualquier dispositivo de estructura que contiene datos y recibe un
hardware conectado a una computadora. nombre único dado por el programador,

100
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
mantiene los datos asignados a ella hasta
que un nuevo valor se le asigne o hasta
que el programa termine.

101
Tecnológico de Antioquia Institución Universitaria
Vicerrectoría Académica
Bibliografía

Bibliografía

1. BECERRA SANTAMARIA, César A. Algoritmos Conceptos Básicos. 4 Edición. Colombia :


Kimpres, 1992. 233 p.

2. FLOREZ, Roberto. Algoritmia Básica. Colombia: Universidad de Antioquia Medellín


(Colombia) Ude@, 2006.

3. JOYANES AGUILAR Luis, ZAHONERO MARTINEZ Ignacio, Estructura de Datos, Algoritmos,


abstracción y objetos. McGraw Hill.

4. JOYANES AGUILAR, Luis; RODRÍGUEZ BAENA, Luis; FERNÁNDEZ AZUELA, Matilde.


Fundamentos de programación: libro de problemas. Segunda Edición. Madrid: McGraw-
Hill, 2003. 430 p.
5. JOYANES AGUILAR, Luis; RODRÍGUEZ BAENA, Luis; FERNÁNDEZ AZUELA, Matilde.
Fundamentos de programación: libro de problemas. Segunda Edición. Madrid: McGraw-
Hill, 2003. 430 p.

6. KNUTH, Donald E. El arte de programar ordenadores, Algoritmos Fundamentales. España


: Reverte 1987.

7. MEJIA DE RESTREPO, Eugenia Victoria. Algoritmos Guía Didáctica. Tecnológico de


Antioquia Medellín (Colombia). 2004.
8. OVIEDO R. Efraín. Algoritmos Estructurados. Segunda Edición.
Cibergrafía

Cibergrafía

http://www.trucoswindows.net/foro/topico-30003-poo.html

http://www.algoritmia.net

http://informatica.uv.es/iiguia/2000/AED/2002_03/Teoria/

You might also like