Algoritmos - 00 Guia Aprendizaje 2020 PDF
Algoritmos - 00 Guia Aprendizaje 2020 PDF
Algoritmos - 00 Guia Aprendizaje 2020 PDF
Enero 2020
Construye Algoritmos para la solución de problemas
A. INTRODUCCIÓN
B. FUNDAMENTACIÓN
C. OBJETIVOS
D. PROPUESTA METODOLÓGICA
E. EVALUACIÓN
3. Operadores
3.1. Definición de operadores.
3.2. Palabras reservadas.
3.3. Tipo de operadores.
3.4. Jerarquía de los operadores.
3.5. Tabla de verdad de los operadores lógicos.
3.6. Funciones matemáticas
3.7. Definición de variable, constante
3.8. Que es un identificador
3.9. Características de los identificadores.
3.10. Expresión matemáticas
3.11. Tipos de datos
2
Construye Algoritmos para la solución de problemas
5. Diagramas de flujo
5.1. Concepto de diagrama de flujo
5.2. Características que debe cumplir un diagrama de flujo.
5.3. Simbología
5.4. Simbología de los operadores en diagramas de flujo
5.5. Funciones de un diagrama
5.6. Representación gráfica de la solución de un problema.
5.7. Ventajas de los diagramas de flujo
5.8. Pasos para la construcción de un diagrama de flujo
5.9. Reglas de los diagramas de flujo
5.10. Ejemplos de diagramas de flujo
5.11. Estructuras algorítmicas en un diagrama de flujo
5.11.1. Secuenciales
5.11.2. Condicionales (selectivas)
5.11.3. Cíclicas
6. Pseudocódigo en PSEint
6.1. Definición de pseudocódigo
6.2. Sintaxis
6.3. Características y componentes
6.4. Ventajas del pseudocódigo sobre los diagramas de flujo
6.5. Funciones y operaciones
6.6. Estructuras de control
6.6.1. Estructuras secuenciales
6.6.2. Estructuras selectivas o condicionales
6.6.3. Iterativas o repetitivas
6.7. El anidamiento
6.8. Funciones y procedimientos
6.9. Arreglos
6.10. PIPEH PSeudo Interprete
6.10.1. Utilización del entorno
6.10.2. Sintaxis del seudocódigo
6.10.3. Mensajes de error
F. FUENTES BIBLIOGRÁFICAS
3
Construye Algoritmos para la solución de problemas
En el siguiente trabajo pretendemos presentar una serie de concepto y definiciones propios del estudio de los
Algoritmos, su análisis y diseño.
En el mismo podremos encontrar los conceptos de algoritmo y algunos de sus componentes, análisis y diseño.
También veremos los diferentes tipos de formas y tamaños o medidas en que se pueden almacenar y repre-
sentar los datos y estructuras en un algoritmo o programa. En ese mismo orden encontraremos las diferentes
técnicas para diseñarlos como son el método de la fuerza bruta, el voraz, divide y vencerás, programación
dinámica, de vuelta atrás, entre otros.
De igual forma podremos ver las definiciones y algunas características, reglas, normas, tipos de algoritmos de
búsqueda y ordenación así como sus aplicaciones. Finalmente veremos los que es la verificación y derivación
de programas, donde daremos los conceptos básicos de semántica y sus tipos haciendo mayor énfasis en la
semántica axiomática, la recursividad e iteración, los diseños de estos últimos, así como los típicos ciclos utili-
zados en algoritmos y programas y los paso a tener en cuenta al momento de desarrollar un algoritmo itera-
tivo o recursivo.
El programador de computadoras es ante que nada una persona que resuelve problemas, por lo que para
llegar a ser un programador eficaz se necesita aprender a resolver problemas de un modo riguroso y siste-
mático. A la metodología necesaria para resolver problemas mediante programas se denomina Metodología
de la Programación. El eje central de esta metodología es el concepto, ya tratado, de algoritmo.
Un algoritmo es un método para resolver un problema. Aunque la popularización del término ha llegado con
el advenimiento de la era informática, algoritmo proviene de Mohammed al-Khowarizmi, matemático persa
que vivió durante el siglo IX y alcanzo gran reputación por el enunciado de las reglas para sumar, restar,
multiplicar y dividir números decimales; la traducción al latín del apellido de la palabra algorismus derivo
posteriormente en algoritmo. Euclides, el gran matemático griego (del siglo IV antes de Cristo) que invento un
método para encontrar el máximo común divisor de dos números, se considera con Al-Khowarizmi el otro gran
padre de la algoritmia (ciencia que trata de los algoritmos).
En este tema pretende mostrar al alumno cómo, a partir de unas especificaciones de un problema del mundo
real, diseñar una solución para dicho problema (algoritmo) susceptible de ser codificada en un lenguaje de
programación. Con este objetivo se describirán las propiedades básicas de cualquier algoritmo, un conjunto
de bloques básicos que permiten la construcción de algoritmos y diversas formas de representación de los al-
goritmos. En el tema también se mostrarán las distintas fases que se deben de seguir para buscar una solución
a un problema del mundo real. En este tema no se aborda ningún lenguaje de programación particular; sino
que se muestra cómo diseñar soluciones a problemas que sean fáciles de implementar en cualquier lenguaje
de programación.
Objetivo General: Posibilitar la estudiante alcanzar una visión sistemática de lo que conocemos sobre Los Al-
goritmos Computacionales. El alumno tendrá las competencias necesarias para solucionar problemas, dise-
ñando algoritmos, diagramas de flujo y pseudocódigos, desarrollando programas en base a las estructuras
secuenciales, repetitivas y condicionales de un lenguaje de programación, considerando la depuración de los
procedimientos resultantes, así como, la ejecución de programas, que requieren cierto grado de orden y res-
ponsabilidad. En virtud de lo cual esta competencia está considerada en el nivel 2.
4
Construye Algoritmos para la solución de problemas
Objetivo Específico: Introducir los conceptos propios sobre Algoritmo, su importancia en el mundo de las apli-
caciones para computadoras y el manejo de lógica de programación.
Competencias generales
A. Capacidad de resolución de problemas aplicando conocimientos de matemáticas y lógica computacional
B. Capacidad para el uso profesional de la tecnología de la información y la comunicación.
C. Conocer los cimientos esenciales y fundacionales de la informática, abarcando tanto conceptos y teorías
abstractas como los valores y los principios profesionales, subrayando los aspectos esenciales de la disci-
plina que permanecen inalterables ante el cambio tecnológico.
D. Capacidad para trabajar en el ámbito profesional de la Ingeniería Informática de forma efectiva como
individuo, organizando y planificando su propio trabajo.
Competencias específicas
A. Capacidad para conocer e identificar la estructura, organización, funcionamiento e interconexión de los
sistemas informáticos, los fundamentos de su programación, y su aplicación para la resolución de proble-
mas
B. Capacidad para conocer, diseñar y aplicar de forma eficiente los algoritmos, diagramas de flujo, el seu-
docódigo y estructuras de datos más adecuados a la resolución de un problema.
Competencias transversales
A. Capacidad de análisis y síntesis.
B. Comunicación oral y escrita en la lengua nativa.
C. Utilizar eficientemente los recursos y herramientas disponibles en el aula virtual de la universidad, así co-
mo ser capaz de manejar en un nivel óptimo las tecnologías de la información y la comunicación aplica-
das a la educación a distancia.
D. Toma de decisiones.
E. Razonamiento crítico.
F. Liderazgo.
Las clases en el aula serán expositivas y debatidas, orientadas a la resolución de trabajos prácticos enfoca-
dos a situaciones reales de aplicación en el ámbito informático y tecnológico.
5
Construye Algoritmos para la solución de problemas
Se realizarán también clases de Taller en Laboratorio de Programación, siendo las primeras expositivas y
debatidas, y luego netamente prácticas realizando trabajos en grupo. Se facilitará a los alumnos:
A. Evaluación: La evaluación será continua para una verificación permanente de los conocimientos en el aula
y laboratorio llevando a cabo trabajos prácticos.
B. Se realizarán:
3 parciales escritos con un valor del 70%.
Prácticas en computadora
Síntesis de las prácticas.
Síntesis de los temas vistos en clase
C. Autoevaluación: Será utilizando el instrumento, donde el alumno se analizara de manera consciente.
Indicando a los alumnos que integren binas, para analizar y discutir cada una de las siguientes cuestiones, con
referencia a solución de problemas utilizando algoritmos. Cada alumno anotara sus definiciones o conceptos
según sus criterios y/o conocimientos.
A. ¿Qué es un problema?
B. ¿Qué es el planteamiento de un problema?
C. ¿Cuál es el procedimiento que sigues para resolver un problema?
D. ¿Cuáles son las fases de la resolución de un problema en computadora?
E. ¿Qué es un algoritmo?
F. ¿Cuáles son las características de un algoritmo?
G. ¿Qué son los datos de entrada y salida?
6
Construye Algoritmos para la solución de problemas
La computadora no solamente es una máquina que puede realizar procesos para darnos resultados, sin que
tengamos la noción exacta de las operaciones que realiza para llegar a esos resultados. Con la computado-
ra además de lo anterior también podemos diseñar soluciones a la medida, de problemas específicos que se
nos presenten. Más aún, si estos involucran operaciones matemáticas complejas y/o repetitivas, o requieren
del manejo de un volumen muy grande de datos.
El diseño de soluciones a la medida de nuestros problemas, requiere como en otras disciplinas una metodolo-
gía que nos enseñe de manera gradual, la forma de llegar a estas soluciones.
A las soluciones creadas por computadora se les conoce como programas y no son más que una serie de ope-
raciones que realiza la computadora para llegar a un resultado, con un grupo de datos específicos. Lo ante-
rior nos lleva al razonamiento de que un programa nos sirve para solucionar un problema específico.
Para realizar programas, además de conocer la metodología mencionada, también debemos de conocer de
manera específica las funciones que puede realizar la computadora y las formas en que se pueden manejar
los elementos que hay en la misma.
Computadora: Es un dispositivo electrónico utilizado para procesar información y obtener resultados. Los datos
y la información se pueden introducir en la computadora como entrada (input) y a continuación se procesan
para producir una salida (output).
Programa: Es el conjunto de instrucciones escritas de algún lenguaje de programación y que ejecutadas se-
cuencialmente resuelven un problema específico.
7
Construye Algoritmos para la solución de problemas
Dispositivos de Entrada: Como su nombre lo indica, sirven para introducir datos (información) en la compu-
tadora para su proceso. Los datos se leen de los dispositivos de entrada y se almacenan en la memoria cen-
tral o interna. Ejemplos: teclado, scanners (digitalizadores de rastreo), mouse (ratón), trackball (bola de ratón
estacionario), joystick (palancas de juego), lápiz óptico.
Dispositivos de Salida: Regresan los datos procesados que sirven de información al usuario. Ejemplo: monitor,
impresora.
1.2. PROGRAMACIÓN
Es el proceso de diseñar, codificar, depurar y mantener el código fuente de programas computacionales. El
código fuente es escrito en un lenguaje de programación. El propósito de la programación es crear progra-
mas que exhiban un comportamiento deseado. El proceso de escribir código requiere frecuentemente conoci-
mientos en varias áreas distintas, además del dominio del lenguaje a utilizar, algoritmos especializados y ló-
gica formal. Programar no involucra necesariamente otras tareas tales como el análisis y diseño de la aplica-
ción (pero sí el diseño del código), aunque sí suelen estar fusionadas en el desarrollo de pequeñas aplicacio-
nes.
En los lenguajes de programación de alto nivel se distinguen diversos elementos entre los que se incluyen el
léxico propio del lenguaje y las reglas semánticas y sintácticas.
A. Programa. La definición de la RAE es: Conjunto unitario de instrucciones que permite a un ordenador rea-
lizar funciones diversas, como el tratamiento de textos, el diseño de gráficos, la resolución de problemas
matemáticos, el manejo de bancos de datos, etc. Pero normalmente se entiende por programa un conjunto
de instrucciones ejecutables por un ordenador.
Un programa estructurado es un programa que cumple las condiciones de un algoritmo (finitud, precisión,
repetición, resolución del problema,...)
B. Aplicación (Apps). Software formado por uno o más programas, la documentación de los mismos y los
archivos necesarios para su funcionamiento, de modo que el conjunto completo de archivos forman una he-
rramienta de trabajo en un ordenador.
Normalmente en el lenguaje cotidiano no se distingue entre aplicación y programa; en nuestro caso entende-
remos que la aplicación es un software completo que cumple la función completa para la que fue diseñado,
mientras que un programa es el resultado de ejecutar un cierto código entendible por el ordenador.
La idea de que el ordenador hiciera varias tareas (ordenador programable o multipropósito) hizo que se
idearan las tarjetas perforadas. En ellas se utilizaba código binario, de modo que se hacían agujeros en ellas
para indicar el código 1 o el cero. Estos “primeros programas” lógicamente servían para hacer tareas muy
concretas.
Poco a poco las funciones que se requerían a los programas fueron aumentando produciendo miles de líneas
de código que al estar desorganizada hacían casi imposible su mantenimiento. Sólo el programador que ha-
bía escrito el código era capaz de entenderlo y eso no era en absoluto práctico.
La llamada crisis del software ocurrió cuando se percibió que se gastaba más tiempo en hacer las modifica-
ciones a los programas que en volver a crear el software. La razón era que ya se habían codificado millones
de líneas de código antes de que se definiera un buen método para crear los programas.
La solución a esta crisis ha sido la definición de la ingeniería del software como un oficio que requería un mé-
todo de trabajo similar al del resto de ingenierías. La búsqueda de una metodología de trabajo que elimine
esta crisis parece que aún no está resuelta, de hecho los métodos de trabajo siguen redefiniéndose una y otra
vez.
Existe una tendencia a identificar el proceso de creación de un programa informático con la programación,
que es cierta cuando se trata de programas pequeños para uso personal, y que dista de la realidad cuando
se trata de grandes proyectos. El proceso de creación de software, desde el punto de vista de la ingeniería,
incluye los siguientes pasos:
La ingeniería del software se centra en los pasos de planificación y diseño del programa, mientras que anti-
guamente (programación artesanal) la realización de un programa consistía casi únicamente en escribir el có-
digo, bajo sólo el conocimiento de los requisitos y con una modesta fase de análisis y diseño.
A. Análisis. En esta fase se determinan los requisitos que tiene que cumplir la aplicación. Se anota todo
aquello que afecta al futuro funcionamiento de la aplicación. Este paso le realiza un analista
B. Diseño. Se especifican los esquemas de diseño de la aplicación. Estos esquemas forman los planos del
programador, los realiza el analista y representan todos los aspectos que requiere la creación de la apli-
cación.
9
Construye Algoritmos para la solución de problemas
C. Codificación. En esta fase se pasa el diseño a código escrito en algún lenguaje de programación. Esta es
la primera labor que realiza el programador
D. Pruebas. Se trata de comprobar que el funcionamiento de la aplicación es la adecuada. Se realiza en
varias fases:
Prueba del código. Las realizan programadores. Normalmente progra-
madores distintos a los que crearon el código, de ese modo la prueba
es más independiente y generará resultados más óptimos.
Versión alfa. Es una primera versión terminada que se revisa a fin de
encontrar errores. Estas pruebas conviene que sean hechas por personal
no informático. El producto sólo tiene cierta apariencia de acabado.
Versión beta. Versión casi definitiva del software en la que no se esti-
man fallos, pero que se distribuye a los clientes para que encuentren po-
sibles problemas. A veces está versión acaba siendo la definitiva (como
ocurre con muchos de los programas distribuidos libremente por Inter-
net).
E. Mantenimiento. Tiene lugar una vez que la aplicación ha sido ya distribui-
da, en esta fase se asegura que el sistema siga funcionando aunque cam-
bien los requisitos o el sistema para el que fue diseñado el software. Antes
esos cambios se hacen los arreglos pertinentes, por lo que habrá que retro-
ceder a fases anteriores del ciclo de vida
La comunicación es un proceso complejo que requiere una serie de reglas simples, pero indispensables para
poderse llevar a cabo. Las dos principales son las siguientes:
Los lenguajes de programación son herramientas que nos permiten crear programas y software. Entre ellos
tenemos Delphi, Visual Basic, Pascal, Java, Javascript, etc..
Los lenguajes de programación facilitan la tarea de programación, ya que disponen de formas adecuadas que
permiten ser leídas y escritas por personas, a su vez resultan independientes del modelo de computador a uti-
lizar.
Lenguajes de Programación. Es un conjunto de símbolos, caracteres y reglas (programas) que les permiten a las
personas comunicarse con la computadora. Los lenguajes de programación tienen un conjunto de instrucciones
que nos permiten realizar operaciones de entrada/salida, calculo, manipulación de textos, lógi-
ca/comparación y almacenamiento/recuperación. Los lenguajes de programación se clasifican en:
A. Lenguaje Maquina: Son aquellos cuyas instrucciones son directamente entendibles por la computadora y no
necesitan traducción posterior para que la CPU pueda comprender y ejecutar el programa. Las instruccio-
nes en lenguaje maquina se expresan en términos de la unidad de memoria más pequeña el bit (dígito
binario 0 o 1).
B. Lenguaje de Bajo Nivel (Ensamblador): En este lenguaje las instrucciones se escriben en códigos alfabéticos
conocidos como mnemotécnicos para las operaciones y direcciones simbólicas. Los "Lenguajes Ensamblado-
res" y los "Lenguajes Maquina" son dependientes de la máquina. Cada tipo de máquina, tal como VAX de
digital, tiene su propio lenguaje maquina distinto y su lenguaje ensamblador asociado.
C. Lenguaje de Alto Nivel: Los lenguajes de programación de alto nivel (BASIC, pascal, cobol, fortran, etc.)
son aquellos en los que las instrucciones o sentencias a la computadora son escritas con palabras similares
a los lenguajes humanos (en general en inglés), lo que facilita la escritura y comprensión del programa.
Los lenguajes de " Alto Nivel" son los más utilizados como lenguaje de programación. En ese sentido se
llama "Independientes de la maquina". Ejemplos de estos lenguajes de alto nivel son PASCAL , JAVA y
FORTRAN ,COBOL C, ETC. La programación de un lenguaje de alto nivel requiere, de algún tipo de inter-
faz con el lenguaje máquina para que el programa pueda ejecutarse. Las interfaces mas comunes: un
"compilador" y un "interprete".
A. Programación Lineal. Se llama así a la programación que se realizaba en los albores de la informática
(aunque desgraciadamente en la actualidad muchos programadores siguen empleándola). En este estilo
de programación, predomina el instinto del programador por encima del uso de cualquier método lo que
provoca que la corrección y entendimiento de este tipo de programas sea casi ininteligible.
11
Construye Algoritmos para la solución de problemas
El código anterior crea un pequeño juego que permite intentar adivinar un número del 1 al 100.
En esta programación se utiliza una técnica que genera programas que sólo permiten utilizar tres estructu-
ras de control:
♦ Secuencias (instrucciones que se generan secuencialmente)
♦ Alternativas (sentencias if)
♦ Iterativas (bucles condicionales)
La ventaja de esta programación está en que es más legible (aunque en este caso el código es casi más
sencillo en su versión desordenada). Todo programador debería escribir código de forma estructurada.
C. Programación Modular. Es uno de los métodos de diseño más flexibles y potentes para manejar la pro-
ductividad de un programa. En la programación modular, se divide el programa en módulos (partes in-
dependientes), cada una de las cuales ejecuta una única actividad o tarea y se codifican independiente-
mente de otros módulos.
Completa la programación anterior permitiendo la definición de módulos independientes cada uno de los
cuales se encargará de una tarea del programa. De esta forma el programador se concentra en la codi-
ficación de cada módulo haciendo más sencilla esta tarea. Al final se deben integrar los módulos para
dar lugar a la aplicación final.
El código de los módulos puede ser invocado en cualquier parte del código. Realmente cada módulo se
comporta como un subprograma que, partir de unas determinadas entradas obtienen unas salidas concre-
tas. Su funcionamiento no depende del resto del programa por lo que es más fácil encontrar los errores y
realizar el mantenimiento.
D. Programación Orientada a Objetos. Es un paradigma de programación que usa objetos y sus interaccio-
nes, para diseñar aplicaciones y programas informáticos. En la programación orientada a objetos, un ob-
jeto contiene toda la información que permite definirlo e identificarlo frente a otros objetos pertenecientes
a otras clases e incluso frente a objetos de una misma clase, al poder tener valores bien diferenciados en
sus atributos. A su vez, los objetos disponen de mecanismos de interacción llamados métodos, que favore-
cen la comunicación entre ellos.
12
Construye Algoritmos para la solución de problemas
Es la más novedosa, se basa en intentar que el código de los programas se parezca lo más posible a la
forma de pensar de las personas. Las aplicaciones se representan en esta programación como una serie
de objetos independientes que se comunican entre sí. Cada objeto posee datos y métodos propios, por lo
que los programadores se concentran en programar independientemente cada objeto y luego generar el
código que inicia la comunicación entre ellos.
Es la programación que ha revolucionado las técnicas últimas de programación ya que han resultado un
importante éxito gracias a la facilidad que poseen de encontrar fallos, de reutilizar el código y de docu-
mentar fácilmente el código.
IV. ACTIVIDAD. ELABORAR UNA SÍNTESIS DEL TEMA 1, MÍNIMO DOS HOJAS,
ABARCANDO TODOS LOS TEMAS
13
Construye Algoritmos para la solución de problemas
2.1. ESTRATEGIA
El diseño de la estrategia consiste en encontrar un método que nos permita llegar a resolver el problema
planteado. Como primer paso de esta etapa, debemos preparar un plan o esquema general de las tareas
que deben realizarse para llegar a la solución. Este esquema se denomina estrategia y debe ser una lista de
QUÉ hacer.
Este proceso de descomposición de un problema partiendo de la formulación completa del problema has-
ta llegar a problemas elementales de simple solución, se llama diseño descendente, también conocido co-
mo top-down, método de refinamiento sucesivo o diseño compuesto.
Es importante que se conozca lo que se desea que realice la computadora; mientras esto no se conozca del
todo no tiene mucho caso continuar con la siguiente etapa.
El problema debe estar bien definido si se desea llegar a una solución satisfactoria para poder definir con
precisión el problema se requiere que las especificaciones de entrada y salida sean descritas con detalle.
Una buena definición del problema, junto con una descripción detallada de las especificaciones de entrada y
salida, son los requisitos más importantes para llegar a una solución eficaz.
El análisis del problema exige una lectura previa del problema a fin de obtener una idea general de lo que
se solicita. La segunda lectura deberá servir para responder a las preguntas:
La respuesta a la primera pregunta indicará los resultados deseados o las salidas del problema. La respuesta
a la segunda indicará qué datos se proporcionan o las entradas del problema.
14
Construye Algoritmos para la solución de problemas
A partir del estudio del problema se deberá identificar y conocer las partes principales del mismo y de esa
manera determinar lo que se desea de la computadora, para eso es necesario definir:
a) Los datos de entrada. Es la información mínima con que contamos para resolver el problema.
b) Resultados. Cuál es la información que se desea producir o que se desea obtener (salida).
c) Condiciones. Los métodos y fórmulas que se necesitan para procesar los datos. Una o más relaciones que
vinculan los dos conjuntos anteriores y que permitirán plantear la solución del problema.
Una recomendación muy práctica es el que nos pongamos en el lugar de la computadora y analicemos que es
lo que necesitamos que nos ordenen y en que secuencia para producir los resultados esperados.
2.5.2. CODIFICACIÓN.
La codificación es la operación de escribir la solución del problema (de acuerdo a la lógica del diagrama
de flujo o seudocódigo), en una serie de instrucciones detalladas, en un código reconocible por la compu-
tadora, la serie de instrucciones detalladas se le conoce como código fuente, el cual se escribe en un len-
guaje de programación o lenguaje de alto nivel. Esta etapa consiste en la ejecución del código del méto-
do elegido, es decir, suministrar los datos al computador, y obtener los resultados. Luego se analizarán los
mismos determinando si son realmente los esperados. Caso contrario, deberán analizarse las etapas pre-
vias, comenzando por la última hacia atrás, y realizar las modificaciones necesarias, repitiendo este pro-
ceso hasta obtener los resultados esperados.
15
Construye Algoritmos para la solución de problemas
Luego se analizarán los mismos determinando si son realmente los esperados. Caso contrario, deberán anali-
zarse las etapas previas, comenzando por la última hacia atrás, y realizar las modificaciones necesarias, re-
pitiendo este proceso hasta obtener los resultados esperados. Los errores humanos dentro de la programa-
ción de computadoras son muchos y aumentan considerablemente con la complejidad del problema. El proce-
so de identificar y eliminar errores, para dar paso a una solución sin errores se le llama depuración.
La depuración o prueba resulta una tarea tan creativa como el mismo desarrollo de la solución, por ello se
debe considerar con el mismo interés y entusiasmo. Resulta conveniente observar los siguientes principios al
realizar una depuración, ya que de este trabajo depende el éxito de nuestra solución.
2.6.1. DEPURACIÓN
Se trata de comprobar que el funcionamiento de la aplicación es la adecuada. Se realiza en varias fases:
A. Prueba del código. Las realizan programadores. Normalmente programadores distintos a los que
crearon el código, de ese modo la prueba es más independiente y generará resultados más óptimos.
B. Versión alfa. Es una primera versión terminada que se revisa a fin de encontrar errores. Estas pruebas
conviene que sean hechas por personal no informático. El producto sólo tiene cierta apariencia de
acabado.
C. Versión beta. Versión casi definitiva del software en la que no se estiman fallos, pero que se distribu-
ye a los clientes para que encuentren posibles problemas. A veces está versión acaba siendo la defini-
tiva (como ocurre con muchos de los programas distribuidos libremente por Internet).
2.6.2. DOCUMENTACIÓN
Es la guía o comunicación escrita es sus variadas formas, ya sea en enunciados, procedimientos, dibujos o
diagramas. A menudo un programa escrito por una persona, es usado por otra. Por ello la documentación
sirve para ayudar a comprender o usar un programa o para facilitar futuras modificaciones (manteni-
miento). La documentación se divide en tres partes:
a) Documentación Interna: Son los comentarios o mensaje que se añaden al código fuente para hacer más
claro el entendimiento de un proceso.
b) Documentación Externa: Se define en un documento escrito los siguientes puntos:
Descripción del Problema
Nombre del Autor
Algoritmo (diagrama de flujo o seudocódigo)
Diccionario de Datos
Código Fuente (programa)
c) Manual del Usuario: Describe paso a paso la manera cómo funciona el programa, con el fin de que el
usuario obtenga el resultado deseado.
2.7. ERRORES.
Cuando un programa obtiene una salida que no es la esperada, se dice que posee errores. Los errores son
uno de los caballos de batalla de los programadores ya que a veces son muy difíciles de encontrar (de ahí
que hoy en día en muchas aplicaciones se distribuyan parches para subsanar errores no encontrados en la
creación de la aplicación). Los tipos de errores más comunes son:
A. Error del usuario. Errores que se producen cuando el usuario realiza algo inesperado y el programa no
reacciona apropiadamente.
B. Error del programador. Son errores que ha cometido el programador al generar el código. La mayoría
de errores son de este tipo.
C. Errores de documentación. Ocurren cuando la documentación del programa no es correcta y provoca fa-
llos en el manejo.
16
Construye Algoritmos para la solución de problemas
D. Error de interfaz. Ocurre si la interfaz de usuario de la aplicación es enrevesada para el usuario impi-
diendo su manejo normal. También se llaman así los errores de protocolo entre dispositivos.
E. Error de entrada / salida o de comunicaciones. Ocurre cuando falla la comunicación entre el programa
y un dispositivo (se desea imprimir y no hay papel, falla el teclado,...)
F. Error fatal. Ocurre cuando el hardware produce una situación inesperado que el software no puede con-
trolar (el ordenador se cuelga, errores en la grabación de datos,...)
G. Error de ejecución. Ocurren cuando la ejecución del programa es más lenta de lo previsto.
La labor del programador es predecir, encontrar y subsanar (si es posible) o al menos controlar los errores.
Una mala gestión de errores causa experiencias poco gratas al usuario de la aplicación.
2.9. MANTENIMIENTO
Se lleva acabo después de terminado el programa, cuando se detecta que es necesario hacer algún cambio,
ajuste o complementación al programa para que siga trabajando de manera correcta. Para poder realizar
este trabajo se requiere que el programa este correctamente documentado. Tiene lugar una vez que la apli-
cación ha sido ya distribuida, en esta fase se asegura que el sistema siga funcionando aunque cambien los
requisitos o el sistema para el que fue diseñado el software. Antes esos cambios se hacen los arreglos perti-
nentes, por lo que habrá que retroceder a fases anteriores del ciclo de vida.
Problema A. Pedro tiene en su reloj las 9:00 a.m. y quiere saber que hora será, después de trascurrir 1998
horas y cuantos días pasaron.
Entrada: __________________________
Operaciones: ______________________
Salida: ___________________________
Problema B. Luis tiene un terreno de forma rectangular de 10 metros de ancho y 6 metros de largo, desea
ponerle piso de cemento a todo, él quiere saber cuántos bultos de cemento ocupará si por cada metro cua-
drado se lleva un bulto de cemento colocándolo con un grosor de 5cm, ¿le puedes ayudar?
Entrada: _________________________
Operaciones: ______________________
Salida: ___________________________
VII. ACTIVIDAD. ELABORAR UNA SÍNTESIS DEL TEMA 2, MÍNIMO DOS HOJAS,
ABARCANDO TODOS LOS TEMAS
17
Construye Algoritmos para la solución de problemas
3. OPERADORES
El primer carácter debe ser una letra o un símbolo. Se consideran caracteres distintos las mayúsculas y las mi-
núsculas. Se recomienda poner identificadores representativos.
Un operador es un símbolo que indica al compilador que realice manipulaciones lógicas o matemáticas espe-
cíficas. Los operadores del mismo nivel de precedencia son evaluados por el compilador de izquierda a de-
recha. Por supuesto, se puede utilizar paréntesis para ordenar la evaluación. También, conviene utilizar pa-
réntesis para hacer más claro el orden en que se producen las evaluaciones, tanto para la persona que lo
elabora o para los que después tengan que seguir el programa.
A. Operadores aritméticos: En las expresiones aritméticas se utilizan los siguientes operadores aritméticos:
B. Operadores relacionales: Las expresiones son asociaciones de datos con operadores relacionales y de su
evaluación siempre se obtiene un valor de tipo lógico (verdadero o falso).
C. Operadores Lógicos: El operador conjunción (y); el operador disyunción (o) siempre actúan sobre dos
operandos, mientras que, el operador negación (no) sólo actúa sobre un operando. Se usan para combi-
nar expresiones relacionales lógicamente en una hoja de cálculo y en software de base de datos (por
ejemplo, AND, OR). Estos operadores se utilizan para establecer relaciones entre valores lógicos. Estos va-
lores pueden ser resultado de una expresión relacional.
18
Construye Algoritmos para la solución de problemas
D. Operadores de Asignación. Los operadores de asignación se utilizan para formar expresiones de asig-
nación, en las que se asigna el valor de una expresión a un identificador. ***** Por definir el operador
de asignación** .
Cada expresión toma un valor que se determina tomando los valores de las variables y constantes impli-
cadas y la ejecución de las operaciones indicadas. Una expresión consta de operadores y operandos.
Según sea el tipo de datos que manipulan, se clasifican las expresiones en:
Aritméticas
Relaciónales
Lógicas
A. Tabla de verdad del operador Y. Es un operador binario con dos operandos. La expresión es verdadera
cuando ambos operandos son verdaderos. Es el operador lógico de conjunción: ejemplo si es verano y
hace calor vamos a la playa.
<Expresión 1> <Expresión 2> <Expresión 1> y <Expresión 2>
Verdadero Verdadero Verdadero
Verdadero Falso Falso
Falso Verdadero Falso
Falso Falso Falso
B. Tabla de verdad del operador O. Es un operador binario con dos operandos. La expresión es verdadera
cuando al menos uno de sus operandos son verdaderos. Es el operador lógico de disyunción: ejemplo es-
tudiamos o vamos al cine.
<Expresión 1> <Expresión 2> <Expresión 1> O <Expresión 2>
Verdadero Verdadero Verdadero
Verdadero Falso Verdadero
Falso Verdadero Verdadero
Falso Falso Falso
C. Tabla de verdad del operador NOT. Es un operador unario de un solo operando. Cambia de estado ló-
gico de la expresión; si es verdadero la transforma en falso y si es falso la transforma en verdadero.:
ejemplo No es verano.
19
Construye Algoritmos para la solución de problemas
<Expresión> NO <Expresión>
Verdadero Falso
Falso Verdadero
Ejemplos:
Si a=10, b=20, c=30
1. a>b
2. a>=b
3. a<b
4. a<=b
5. NOT a=b
20
Construye Algoritmos para la solución de problemas
9. Pi *x2>Y OR 2*Pi*x<=z
La función raíz cuadrada no debe recibir un argumento negativo. La función exponencial no debe recibir un
argumento menor o igual a cero.
A. VARIABLES. Una variable es un identificador que puede tomar diferentes valores dependiendo del tipo
que esta se declare.
Una variable es una posición de la memoria de la computadora que permite almacenar temporalmente
un dato durante la ejecución de un proceso, su contenido puede cambiar durante la ejecución del pro-
grama.
INICIALIZACIÓN DE VARIABLES. Inicializar una variable es el darle un valor después que se ha declarado
pero antes de que se ejecuten las sentencias en las que se emplea.
B. CONSTANTES. Constantes son los valores que no pueden ser modificados. Una constante es un dato numé-
rico o alfanumérico que no cambia durante la ejecución del programa.
21
Construye Algoritmos para la solución de problemas
A. Analice el valor de verdad de cada una de las siguientes expresiones. Justifique su respuesta.
La constante mantiene siempre su valor a lo largo del algoritmo.
Una variable es un lugar de memoria.
El nombre de una variable debe estar relacionado con su contenido.
El tipo de variable se define por su contenido. Si el contenido se modifica en el transcurso del algorit-
mo, puede cambiar el tipo.
Una variable puede almacenar una expresión.
El nombre de una variable será correcto siempre que el mismo comience con un número o una letra.
Resultado y RESULTADO son variables distintas.
´JUAN´ y JUAN son variables distintas.
En una expresión las sumas y restas se resuelven primero.
Una función no puede participar en el argumento de otra función.
Las palabras reservadas se escriben siempre con mayúsculas.
Una cadena de caracteres hay que encerrarlas entre apóstrofos o comillas.
B. Analice el valor de verdad de cada una de las siguientes expresiones. Justifique su respuesta.
A la izquierda del símbolo de asignación puede ir una variable.
La asignación X <- X + 2 carece de sentido porque no existe ningún número que incrementado en dos
unidades sea igual a sí mismo.
La acción de escritura destruye el contenido de las variables que utiliza.
En una única acción de lectura se pueden leer dos o más datos.
En una acción de lectura el primer valor ingresado se almacena en la variable que sigue a la palabra
LEER.
A. Un Identificador, o nombre de variable, debe constar sólo de letras y números, comenzando siempre por
una letra.
B. Debe comenzar con una letra (A - Z, mayúsculas o minúsculas) y no deben contener espacios en blanco.
C. Letras, dígitos y caracteres como el subrayado ( _ ) están permitidos después del primer carácter.
D. La longitud de identificadores puede ser de varios caracteres. Pero es recomendable una longitud pro-
medio de 8 caracteres.
22
Construye Algoritmos para la solución de problemas
E. El nombre del identificador debe dar una idea del valor que contiene.
identificador Variable/constante
A. Dirección de una persona
B. Código postal
C. Una tonelada en kilos
D. Peso de un producto a granel
E. Total de tiempo corrido en 20 vueltas a un
campo
F. Talla de zapatos en EE.UU
G. Teléfono de una persona
H. Un kilómetro en metros
I. Estatura de una persona
J. Total de las ventas realizadas en un período
K. Punto de ebullición
L. Total de artículos vendidos
M. La velocidad de la luz
N. Promedio de un alumno
O. Número de horas trabajadas
B. Expresiones algorítmicas. Es un conjunto de símbolos, números o variables que representan una instrucción
específica y computable para el computador. Las expresiones algorítmicas son utilizadas en los lenguajes
de programación para especificar claramente cuál es el orden y el tipo de operación a realizar por el
computador. Una expresión algorítmica típica es (a * x^2 + b * x =c)
Las expresiones son combinaciones de constantes, variables, símbolos de operación, paréntesis y nombres de
funciones especiales que es interpretada (evaluada) de acuerdo a las normas particulares de precedencia y
asociación para un lenguaje de programación en particular. Como en matemáticas, la expresión es su " valor
evaluado", es decir, la expresión es una representación de ese valor.
Ya teniendo claro las definiciones anteriores del conocimiento básico de cada expresión algebraica y algo-
rítmica, y de los operadores aritméticos, se debe tener en cuenta su prioridad en los operadores de manera
que el lenguaje máquina los interprete correctamente.
a3
b5 a+b–7
23
Construye Algoritmos para la solución de problemas
Cada expresión toma un valor que se determina al evaluar la expresión, el valor puede ser de tipo: numéri-
co, lógico y carácter.
De acuerdo a los tipos de datos que se manipulan en las expresiones pueden ser:
Para resolver las Expresiones algorítmicas es necesario seguir las reglas para resolver una operación (ser re-
suelven de izquierda a derecha) y la jerarquía de los operadores: Lógicos, Relacionales, algebraicos.
Los operadores algebraicos tienen mayor jerarquía, por lo tanto en una expresión algorítmica son los prime-
ros que se resolverán. A excepción que se encuentren paréntesis en ella, si este es el caso entonces se resol-
verá lo que se encuentre entre estos (Siguiendo la jerarquía de operadores).
Ejemplos:
En este caso la primera operación que se realizara será la que esta subrayada, Porque hay tres operadores
que tienen la misma jerarquía, pero aquí se aplica la regla de las operaciones que dice que se resuelven de
izquierda a derecha. Por lo tanto el operador mod(residuo de la división) se resuelve primero.
6 mod 2/7-1*6*4+18/1-3*4
0/7-1*6*4+18/1-3*4
Ahora se resuelve la multiplicación, como se ve en la expresión, hay dos operadores de multiplicación, por lo
tanto se resuelve la que está a las derecha porque así lo dice la regla.
0-1*6*4+18/1-3*4
0-6*4+18/1-3*4
La siguiente es la división, por tener mayor jerarquía que la suma, la resta y por estar a la izquierda.
0-24+18/1-3*4
0-24+18-3*4
En este caso quedaron operadores de misma jerarquía. Igual como se hizo antes se realiza el que está a la
izquierda.
0-24+18-12
24
Construye Algoritmos para la solución de problemas
Y^2+2*X-3
25
Construye Algoritmos para la solución de problemas
Analice las expresiones en que intervienen y encuentre en la lista de opciones el resultado correcto de la ex-
presión.
El dato es una representación simbólica (numérica, alfabética, etc.), atributo o característica de una entidad.
El dato no tiene valor semántico (sentido) en sí mismo, pero convenientemente tratado (procesado) se puede
utilizar en la realización de cálculos o toma de decisiones. Es de empleo muy común en el ámbito informático.
26
Construye Algoritmos para la solución de problemas
En programación un dato es la expresión general que describe las características de las entidades sobre las
cuales opera un algoritmo.
Todos los datos tienen un tipo asociado con ellos. Un dato puede ser un simple carácter, tal como b, un valor
entero tal como 35. El tipo de dato determina la naturaleza del conjunto de valores que puede tomar una
variable.
A. Simples: Son todos aquellos que abarcan una sola casilla de memoria como los boleanos, enteros, flotan-
tes, etc.
Datos Numéricos: Permiten representar valores escalares de forma numérica, esto incluye a los núme-
ros enteros y los reales
Datos lógicos: Son aquellos que solo pueden tener dos valores cierto (V o 1) o falso (F,0).
Datos alfanuméricos (string): Es una secuencia de caracteres alfanuméricos que permiten representar
valores identificables de forma descriptiva, esto incluye nombres de personas, direcciones, etc.
B. Tipos compuestos: Aparte de los anteriores, los tipos compuestos (también denominados tipos-clase). Son
compuestos o agregados de tipos básicos, por esta razón se les denomina también tipos agregados o
abstractos ADTs (“Abstract data types”). El “material” de que están compuestos son los tipos básicos, bien
en estado “puro” o en sus diversas “adaptaciones”. El proceso es recursivo, de forma que un tipo complejo
puede contener miembros que son a su vez tipos complejos y así sucesivamente. Desde el punto de vista
semántico la gramática C++ establece como tipos compuestos (“Compound types”) los siguientes:
Arreglos.
Matrices de objetos de cualquier tipo.
Funciones, que aceptan parámetros de ciertos tipos y devuelven void u objetos (o referencias a obje-
tos) de cierto tipo.
Punteros a-void; punteros a-objetos, o punteros a-función (incluyendo miembros estáticos de clases) de
un tipo determinado.
Punteros a miembros no-estáticos de clases (que señalan miembros de un tipo determinado dentro de
objetos de una clase determinada).
Referencias a objetos o funciones de un tipo determinado.
Clases.
Uniones.
XIII. ACTIVIDAD. ELABORAR UNA SÍNTESIS DEL TEMA 3, MÍNIMO DOS HOJAS,
ABARCANDO TODOS LOS TEMAS
27
Construye Algoritmos para la solución de problemas
Según la RAE: Es un conjunto ordenado y finito de operaciones que permite hallar la solución de un problema.
Los algoritmos, como indica su definición oficial, son una serie de pasos que permiten obtener la solución a un
problema. La palabra algoritmo procede del matemático Árabe Mohamed Ibn Al Kow Rizmi, el cual escribió
sobre los años 800 y 825 su obra Quitad Al Mugabala, donde se recogía el sistema de numeración hindú y
el concepto del cero. Fibonacci, tradujo la obra al latín y la llamó: Algoritmi Dicit.
Un algoritmo es un conjunto finito de operaciones no ambiguas y ordenadas (instrucciones - pasos) que segui-
dos en un determinado orden permiten resolver un tipo de problema.
Un algoritmo puede expresarse de distintas maneras: en forma gráfica, como un diagrama de flujo, en forma
de código como en pseudocódigo o un lenguaje de programación, en forma explicativa, etc.
Planteada una estrategia indicando QUÉ tareas hacer, debemos especificar una lista detallada de CÓMO
hacerlas, llegando así a definir una solución paso a paso del problema llamada algoritmo. La descripción de
la solución detallada por medio de un algoritmo constituye el segundo paso en la etapa de elección del mé-
todo.
FORMA CORRECTA DE LAVARSE LAS MANOS RECETA PARA PREPARAR DEDITOS DE QUESO PARA 8
PORCIONES. TIEMPO DE PREPARACION 20 MINUTOS
Inicio
Humedecer las manos Inicio
Aplicar jabón Ingredientes:
Lave las manos contando hasta 20 4 tazas de harina Robinson leudante
Enjuague completamente 2 tazas de agua
Seque las manos con toalla de tela o de pape 1 cucharadira de sal
Use toalla de papel para cerrar el grifo 3 cucharaditas de azucar
Tire el papel en el cesto ½ taza de manqtequilla
10 onzas de queso costeño
Aceite para freir
Preparacion:
Mezclatr tosdo los ingredientes hasta obtener una mezcla
homogenea y suave
Amasar la mezcla hasta lograr un textura sueve
Reposar la masa duante 10 munitos cubierta con un paño
Espolvarear harina Robinson leudante sobre al mesa
Exctendedr la masa con la yuda de un rodillo
Cotar en tirar de dos dedos de anchi
Pintar con aua las tiras de masa
Colocar el queso sobre la masa
Enrollar para armar los dedos
Feir en aciete calienbte
28
Construye Algoritmos para la solución de problemas
Los métodos que no utilizan un proceso establecido sino que implican algún juicio o interpretación se conocen
como métodos heurísticos.
Para la informática, el uso de programas representa el uso de algoritmos para resolver algún problema o ta-
rea en específico.
La codificación de estos algoritmos se realiza en algún lenguaje informático como C+, Java, Qbasic, entre
otros…
Inicio
Destapar la sopa
Agregar una taza pequeña con agua a la sopa
Introducir al horno de microondas
Programar el horno de microondas por 3 minutos
Sacar del horno
Fin
B. No deterministas: deben decidir en cada paso de la ejecución entre varias alternativas y agotarlas to-
das antes de encontrar la solución.
Inicio
Inicializar las variables A, B y C
Leer los tres valores
Almacenar en las variables A, B y C
Si A > B y A > C Entonces
Escribir A “Es el mayor”
Sino
Si B > A y B > C Entonces
Escribir B “Es el mayor”
Sino
Escribir C “Es el mayor”
Fin_Si
Fin_Si
Fin
29
Construye Algoritmos para la solución de problemas
Determinista No determinista
Los algoritmos son la base de la programación de ordenadores, ya que los programas de ordenador se
puede entender que son algoritmos escritos en un código especial entendible por un ordenador.
Lo malo del diseño de algoritmos está en que no podemos escribir lo que deseemos, el lenguaje de progra-
mación a utilizar no debe dejar posibilidad de duda, debe recoger todas las posibilidades.
Por lo que los tres pasos anteriores pueden ser mucho más largos:
B. Si hay bombillas:
Coger la bombilla
Coger una silla
Subirse a la silla
Poner la bombilla en la lámpara
30
Construye Algoritmos para la solución de problemas
C. Si no hay bombillas
Abrir la puerta
Bajar las escaleras....
Cómo se observa en un algoritmo las instrucciones pueden ser más largas de lo que parecen, por lo que hay
que determinar qué instrucciones se pueden utilizar y qué instrucciones no se pueden utilizar. En el caso de los
algoritmos preparados para el ordenador, se pueden utilizar sólo instrucciones muy concretas.
Teniendo en cuenta las características mencionadas previamente podemos decir que: un algoritmo es una se-
cuencia ordenada y finita de pasos que constituyen un método general para resolver un tipo de problemas.
Es de notar que esta definición, se refiere a ‘...resolver un tipo de problemas .....’ y no hace hincapié en el uso
del computador como herramienta para su resolución. Esto se debe a que el concepto de algoritmo se aplica
a problemas computacionales que van a ser resueltos por medio de un computador y a problemas no compu-
tacionales, en cuya resolución no interviene esta herramienta.
31
Construye Algoritmos para la solución de problemas
En ambos casos el lenguaje usado en la descripción del algoritmo debe ser comprensible para el destinatario
o para quien lo va a ejecutar. Por lo visto, para cualquier problema para el que pueda especificarse un mé-
todo finito de solución puede definirse un algoritmo.
Algoritmo:
Características de un algoritmo:
Elementos de un algoritmo:
4.7. FORMALIZACIÓN
Formalizaremos algunos conceptos vistos anteriormente.
Hemos mencionado que la forma de enunciar la solución a un problema planteado depende del ejecutante o
también llamado procesador. Por lo tanto llamaremos así a toda entidad capaz de entender un enunciado y
ejecutar los pasos descriptos en un algoritmo. Si bien en los ejemplos vistos el ejecutante se trataba de una
persona en la resolución de problemas computacionales debemos pensar que el procesador será la compu-
tadora.
También hemos notado que para poder realizar su tarea el ejecutante debe contar con los recursos adecua-
dos. El conjunto de estos recursos existentes en el momento de la ejecución de un trabajo constituye el ambien-
te del problema.
El método que se elija para proponer la solución de un tipo de problema depende del ejecutante y de los re-
cursos o elementos con que se cuenta (ambiente). Cuando definimos algoritmo hemos hablado de un conjunto
de pasos o acciones.
También hemos visto que en los ejemplos se nos presentan situaciones que indican alternativas: “SI se tiene so-
da...”, esta no es una acción porque no modifica el ambiente, pero son elementos que el ejecutante debe sa-
ber interpretar. A estos enunciados se los denomina condición.
Por lo tanto:
Una condición es una afirmación lógica sobre el estado de algún recurso del ambiente, que puede tomar va-
lor verdadero o falso en el momento de la observación. El ejecutante determina en el momento de la ejecu-
ción del algoritmo las acciones a seguir, dependiendo de que la condición sea satisfecha o no.
32
Construye Algoritmos para la solución de problemas
Para atacar el análisis de un problema, y siguiendo el diseño Top-Down, se pueden utilizar criterios de pro-
gramación modular para dividirlos en partes independientes, probando cada uno por separado y realizando
su recomposición ascendente.
Cada una de las partes independientes se llama Módulo y para su determinación se deben tener en cuenta
los siguientes criterios:
A. MÉTODO DE FUERZA BRUTA. No es un esquema algorítmico sino más bien una solución directa poco re-
flexionada. Puede dar una aproximación a la solución final y se basa primordialmente en el método de
prueba y error.
B. DIVIDE Y VENCERÁS. Consiste en descomponer el problema en subproblemas que se resuelven indepen-
dientemente para después combinar las soluciones o resolver el problema original. Se puede aplicar con
éxito a problemas matemáticos como multiplicación de matrices, algebra, etc..
C. MÉTODO VORAZ. Trata de producir un mejor resultado a partir de un conjunto de opciones. Se procede
paso a paso realizando la mejor elección entre las posibles. Se emplea en la optimización, por lo que
parte de una solución que puede mejorarse. El algoritmo se orienta a la selección de la mejor solución con
base a ciertas candidatas a solución. Ejemplo: desglosar una cantidad en el menor número de monedas
posible
D. PROGRAMACIÓN DINÁMICA. Permite resolver un problema mediante una secuencia de decisiones, me-
nos directo que el método voraz. Solamente al final se sabe la mejor decisión de todas. Inventada por el
matemático Richard Bellman en 1953. Se utiliza una tabla para ir identificando los resultados de cada al-
ternativa y se basa en ecuaciones.
E. ALGORITMOS VUELTA ATRÁS O BACKTRACKING. No siguen reglas para la búsqueda de una solución,
simplemente efectúan una búsqueda sistemática, probar todo lo posible hasta encontrar una solución. Se
llaman de vuelta atrás porque en caso de no encontrar una solución en alguna subtarea, se regresa a la
tarea original y comienza con otra subtarea o alternativa. Se asemejan al recorrido dentro de un dia-
grama de árbol.
33
Construye Algoritmos para la solución de problemas
A. de la vida escolar cotidiana donde se incluyan al menos la tres partes que lo integran (entrada, proceso y
salida).
B. Una receta de cocina
C. Las instrucciones para utilizar un aparato electrónico
D. Calcular los sueldos de los empleados de una empresa
E. Actualizar el stock de un comercio
4.10.1. SECUENCIALES
La estructura secuencial es aquella en la que una acción (instrucción) sigue a otra en secuencia. Las tareas
se suceden de tal modo que la salida de una es la entrada de la siguiente y así sucesivamente hasta el fin
del proceso. Una estructura secuencial se representa de la siguiente forma:
A. ASIGNACIÓN. Consiste, en el paso de valores o resultados a una zona de la memoria. Dicha zona se-
rá reconocida con el nombre de la variable que recibe el valor. La asignación se puede clasificar de
la siguiente forma:
Simples: La Instrucción de Asignación permite almacenar un valor en una variable. Consiste en pa-
sar un valor constate a una variable:
34
Construye Algoritmos para la solución de problemas
Las estructuras condicionales comparan una variable contra otro(s) valor(es), para que en base al resulta-
do de esta comparación, se siga un curso de acción dentro del programa. Cabe mencionar que la compa-
ración se puede hacer contra otra variable o contra una constante, según se necesite. Existen dos tipos bá-
sicos, las simples y las múltiples.
Las estructuras selectivas se utilizan para tomar decisiones lógicas, se evalúa una condición y en función
del resultado la misma se realiza una opción u otra. Las condiciones se especifican usando expresiones ló-
gicas. La representación de una estructura selectiva se hace con palabras en pseudocódigo (if, then, else o
bien en español si, entonces, si no), con una figura geométrica en forma de rombo en diagramas de flujo.
A. Simples. Las estructuras condicionales simples se les conoce como “Tomas de decisión”. Se representa
por si-entonces. Su efecto es el de ejecutar una determinada acción cuando se cumple una cierta con-
dición y en caso contrario seguir el orden secuencial, Si es verdadera, entonces ejecuta una o varias
acciones, si es falsa, entonces no hace nada y sigue la ejecución normal del programa, pasando a la
instrucción siguiente o finaliza la estructura selectiva. Estas tomas de decisión tienen la siguiente forma:
Si <condición> entonces
Acción(es)
Fin-si
35
Construye Algoritmos para la solución de problemas
B. Dobles. Si una condición es verdadera, se ejecuta la acción o las acciones S1, y si es falsa, se ejecuta
la acción 1 ó acción 2, pasando en cualquier caso a la instrucción siguiente a la finalización de la es-
tructura selectiva.
Las estructuras condicionales dobles permiten elegir entre dos opciones o alternativas posibles en fun-
ción del cumplimiento o no de una determinada condición. Se representa de la siguiente forma:
Si <condición> entonces Inicio
Acción(es) Leer el pedido (entrada)
si no Examinar la ficha del cliente ( proceso)
Acción(es) Si el cliente es solvente, aceptar pedido; en caso contrario, rechazar
Fin-si pedido (salida)Fin
C. Múltiples. Si una condición es verdadera, se ejecuta la acción o las acciones S1, y si es falsa, se ejecu-
ta la acción 1 ó acción 2, pasando en cualquier caso a la instrucción siguiente a la finalización de la
estructura selectiva.
Las estructuras de comparación múltiples, son tomas de decisión especializadas que permiten compa-
rar una variable contra distintos posibles resultados, ejecutando para cada caso una serie de instruc-
ciones específicas. La forma común es la siguiente:
Si <condición> entonces
Acción(es)
si no
Si entonces
Acción(es)
si no
.
. Varias condiciones
Donde:
Si ………………… Indica el comando de comparación
Condición………… Indica la condición a evaluar
entonces……..…… Precede a las acciones a realizar cuando se cumple la condición
acción(es)………… Son las acciones a realizar cuando se cumple o no la condición
si no……………… Precede a las acciones a realizar cuando no se cumple la condición
Dependiendo de si la comparación es cierta o falsa, se pueden realizar una o mas acciones.
D. Múltiples - casos. También es posible que a la hora de especificar la ejecución de una acción haya
que escoger ésta entre varias dependiendo del valor de una determinada variable (o indicador). Este
caso se expresa del siguiente modo:
Acción X;]
FinSegun
36
Construye Algoritmos para la solución de problemas
En esta construcción Indicador debe tener un determinado valor que en caso de coincidir con alguno de los
n valores provocará la ejecución de la acción asociada a dicho valor. Si el valor del Indicador no coinci-
diera con ninguno de los especificados se ejecutará la Acción X. No tiene por qué haber una Acción X pa-
ra cuando el Indicador' no coincida con ninguno de los n valores; en ese caso, si el Indicador' no coincide
con ningún valor no se ejecutaría ninguna acción.
Al igual que en los casos anteriores, todas las acciones que aparecen en esta estructura (Acción 1, Acción
2,..., Acción n y Acción X) pueden referirse a una única acción o a un conjunto de ellas.
4.10.3. CÍCLICAS
Se llaman problemas repetitivos o cíclicos a aquellos en cuya solución es necesario utilizar un mismo con-
junto de acciones que se puedan ejecutar una cantidad específica de veces. Esta cantidad puede ser fija
(previamente determinada por el programador) o puede ser variable (estar en función de algún dato
dentro del programa). Explicaremos las tres posibles estructuras cíclicas; Para, mientras, repetir. Comple-
mentamos con tres ejemplos para la correcta asimilación de estas estructuras. Los ciclos se clasifican en:
A. Hacer para (for). Ciclos con un Número Determinado de Iteraciones. Son aquellos en que el número de
iteraciones se conoce antes de ejecutarse el ciclo. La forma de esta estructura es la siguiente:
Dado un valor inicial exp1 asignado a la variable esta se irá aumentando o disminuyendo de acuerdo
a la exp3 hasta llegar a la exp2; si se omite el paso, significa que la variable aumentará de uno en
uno.
B. Hacer mientras que (do while). Ciclos con un Número Indeterminado de Iteraciones. Son aquellos en
que el número de iteraciones no se conoce con exactitud, ya que esta dado en función de un dato
dentro del programa.
Mientras Que: Esta es una estructura que repetirá un proceso durante “N” veces, donde “N” puede ser
fijo o variable. Para esto, la instrucción se vale de una condición que es la que debe cumplirse para
que se siga ejecutando. Cuando la condición ya no se cumple, entonces ya no se ejecuta el proceso. La
forma de esta estructura es la siguiente:
37
Construye Algoritmos para la solución de problemas
C. Repetir - hasta (repeat – until). Ciclos con un Número Indeterminado de Iteraciones. Esta es una estruc-
tura similar en algunas características, a la anterior.
Repite un proceso una cantidad de veces, pero a diferencia del Mientras Que, el Repita-Hasta lo ha-
ce hasta que la condición se cumple y no mientras, como en el Mientras Que. Por otra parte, esta es-
tructura permite realizar el proceso cuando menos una vez, ya que la condición se evalúa al final del
proceso, mientras que en el Mientras Que puede ser que nunca llegue a entrar si la condición no se
cumple desde un principio. La forma de esta estructura es la siguiente:
Repita
Acción 1
Acción 2
Acción 3
Acción ……N
Hasta <condición>
1.- 2.-
3.- 4.-
1. Mostrar su nombre, sexo edad y estado civil, que son ingresados por teclado
2. Ingrese dos números desde el teclado. Calcule la suma e imprima los números leídos y la suma.
3. Ingresar por teclado el nombre y la edad de cualquier persona e imprima tanto el nombre como la edad
38
Construye Algoritmos para la solución de problemas
4. Ingresar por teclado el nombre y la edad de cualquier persona e imprima, solo si la persona es mayor de
edad, el nombre de la persona.
5. Ingresar por teclado el nombre y la edad de cualquier persona e imprima solo si la persona es mayor de
edad, el nombre de la persona, de lo contrario, imprima un mensaje que diga : “no puede votar”.
6. Ingresar por teclado el nombre, la edad, el sexo (1 o 2) y el estado civil de cualquier persona e imprima
solo si la persona es un hombre soltero mayor de edad, el nombre de la persona. NOTA: en el campo de
estado civil se graba el numero 1 en vez de soltero, el numero 2 en vez de casado o el numero 3 en vez
de otro.
7. Ingrese un número y calcule e imprima su raíz cuadrada. Si el numero es negativo imprima el número y un
mensaje que diga “tiene raíz imaginaria”
8. Leer de un registro el nombre de un empleado, su salario básico por hora, el número de horas trabajadas
en el período y el porcentaje de retención en la fuente. Calcular el salario bruto, el valor de la retención
y su salario neto.
11. Encuentre la calificación promedio para un gran número, aunque desconocido, de calificaciones de exá-
menes. Estas vienen grabadas en registros. La calificación más alta posible es 10.0
12. Leer una serie de números. Obtener el cuadrado y el cubo de cada número e imprimir tanto los números
como sus cuadrados y sus cubos.
13. El Dane está interesado en saber el número de personas mayores de 18 años, tanto hombres como muje-
res en la ciudad de Medellín . Calcule e imprima el resultado de esta investigación. Se deben leer regis-
tros que contiene cada uno el sexo y el número de años.
14. Coldeportes de Antioquia está interesado en promover el básquetbol y para ello desea conocer personas
que tengan las siguientes características, edad máxima: 18 años, estatura mínima: 1.80 metros, peso má-
ximo: 80 kilos. Lea identificación. Edad , estatura y peso. Use centinela identificacion 99999
15. que pida al usuario una clave de acceso, y que no le permita seguir hasta que la introduzca correctamen-
te, se podría hacer así:
XIX. ACTIVIDAD. ELABORAR UNA SÍNTESIS DEL TEMA 4, MÍNIMO DOS HOJAS,
ABARCANDO TODOS LOS TEMAS
39
Construye Algoritmos para la solución de problemas
5. DIAGRAMAS DE FLUJO
Se utilizan para representar algoritmos pequeños, ya que requieren espacio y tiempo para su elaboración.
Debe ilustrar gráficamente los pasos o procesos a seguir.
Se constituye principalmente de la siguiente manera: inicia, recibe datos, realiza el procesamiento, muestra
resultados y finaliza.
A. Identificar las ideas principales a ser incluidas en el diagrama de flujo. Deben estar presentes el autor o
responsable del proceso, los autores o responsables del proceso anterior y posterior y de otros procesos
interrelacionados, así como las terceras partes interesadas.
B. Definir qué se espera obtener del diagrama de flujo.
C. Identificar quién lo empleará y cómo.
D. Establecer el nivel de detalle requerido.
E. Determinar los límites del proceso a describir.
5.3. SIMBOLOGÍA
Dichos diagramas se construyen utilizando ciertos símbolos de uso especial como son rectángulos, diamantes,
óvalos, y pequeños círculos, estos símbolos están conectados entre sí por flechas, conocidas como líneas de flu-
jo. A continuación se detallarán estos símbolos.
40
Construye Algoritmos para la solución de problemas
Salida a panta-
Se utiliza para representar la salida por medio del monitor
lla
41
Construye Algoritmos para la solución de problemas
42
Construye Algoritmos para la solución de problemas
G. Según la normativa, el flujo presupuesto es de izquierda a derecha y de arriba hacia abajo, siendo opta-
tivo el uso de flechas. Cuando el sentido es invertido (de derecha a izquierda o de abajo hacia arriba),
es obligatorio el uso de la flecha.
H. Todas las líneas deben estar conectadas por un símbolo.
I. No puede legar más de una línea en un símbolo
J. Las líneas deben ser rectas, verticales y horizontales, (no inclinadas ni cruzadas).
K. No cruzar las líneas de flujo empleando los conectores adecuados sin hacer uso excesivo de ellos.
N. Las líneas de flujo deben de entrar a un símbolo por la parte superior y/o izquierda y salir de él por la
parte inferior y/o derecha.
43
Construye Algoritmos para la solución de problemas
O. Evitar que el diagrama sobrepase una página; de no ser posible, enumerar y emplear los conectores co-
rrespondientes. Si se requiere más de una hoja se deben utilizar conectores fuera de página.
P. Usar lógica positiva, es decir, realizar procesos cuando es verdadera la condición y expresar las condi-
ciones de manera clara (por ej., "no es a =/= de b" ==> "a=b").
Q. Comentar al margen únicamente cuando sea necesario.
44
Construye Algoritmos para la solución de problemas
5.11.1. SECUENCIALES
A. ASIGNACIÓN.
Simples
Acumulador
De trabajo
B. ENTRADA (Lectura)
C. SALIDA (Escritura).
A. SIMPLES.
B. DOBLES.
C. MÚLTIPLES.
5.11.3. CÍCLICAS
A. HACER PARA (FOR).
B. HACER MIENTRAS QUE (DO WHILE).
C. REPETIR - HASTA (REPEAT – UNTIL).
45
Construye Algoritmos para la solución de problemas
XX. ACTIVIDAD. ELABORAR UNA SÍNTESIS DEL TEMA 5, MÍNIMO DOS HOJAS,
ABARCANDO TODOS LOS TEMAS
Ejercicio No: 1. Desarrolle un algoritmo que permita leer dos valores distintos, determinar cual de los dos va-
lores es el mayor y escribirlo.
Ejercicio No: 2. Desarrolle un algoritmo que permita leer tres valores y almacenarlos en las variables A, B y
C respectivamente. El algoritmo debe imprimir cual es el mayor y cual es el menor. Recuerde constatar que
los tres valores introducidos por el teclado sean valores distintos. Presente un mensaje de alerta en caso de
que se detecte la introducción de valores iguales.
Ejercicio No: 3. Desarrolle un algoritmo que realice la sumatoria de los números enteros comprendidos entre
el 1 y el 10, es decir, 1 + 2 + 3 + …. + 10.
Ejercicio No: 4. Determinar la hipotenusa de un triángulo rectángulo conocidas las longitudes de sus dos cate-
tos. Desarrolle el algoritmo correspondiente.
Ejercicio No: 5. Desarrolle un algoritmo que permita determinar el área y volumen de un cilindro dado su ra-
dio (R) y altura (H).
Ejercicio No: 6. Desarrolle un algoritmo que permita leer un valor cualquiera N y escriba si dicho número es
par o impar.
Ejercicio No: 7. Desarrolle un algoritmo que permita convertir calificaciones numéricas, según la siguiente ta-
bla: A = 19 y 20, B =16, 17 y 18, C = 13, 14 y 15, D = 10, 11 y 12, E = 1 hasta el 9. Se asume que la no-
ta está comprendida entre 1 y 20.
Ejercicio No: 8. Desarrolle un algoritmo que permita leer dos números y ordenarlos de menor a mayor, si es
el caso.
46
Construye Algoritmos para la solución de problemas
Ejercicio No: 9. Desarrolle un algoritmo que permita leer un valor entero positivo N y determinar si es primo
o no.
Ejercicio No: 10. Tanto el Pseudocódigo como el Diagrama de flujo presentan errores; encuéntrelos y corrija-
los. Realice un algoritmo que calcule el monto a pagar por el servicio de estacionamiento, teniendo en cuenta
que por la primera hora de estadía se tiene una tarifa de 1000 bolívares y las restantes tienen un costo de
600 bolívares. Se tiene como datos: hora de entrada, hora de salida (formato militar), iniciada una hora se
contabiliza como hora total.
Ejercicio No: 11. Realice un algoritmo que a partir de proporcionarle la velocidad de un automóvil, expresa-
da en kilómetros por hora, proporcione la velocidad en metros por segundo.
Ejercicio No: 12. Desarrolle un algoritmo que permita calcular Promedio de Notas; finaliza cuando N = 0.
Ejercicio No: 13. Desarrolle un algoritmo para la empresa Constructora Tecnovivir Casas C.A., que le permita
calcular e imprimir la nómina para su cancelación a un total de 50 obreros calificados a quienes debe cance-
lar por horas trabajadas. La hora trabajada se pautó en 30.000 Bolívares.
Ejercicio No: 14. Desarrolle un algoritmo que funcione como caja registradora,
Ejercicio No: 15. Desarrolle un algoritmo que permita determinar a partir de un número de días, ingresado
por pantalla, ¿Cuántos años, meses, semanas y días; constituyen el número de días proporcionado utilizando
la estructura Mientras o While.
Ejercicio No: 16. Determine el resultado del siguiente diagrama de flujo, realice el pseudocódigo. Elabore su
enunciado.
47
Construye Algoritmos para la solución de problemas
6. PSEUDOCÓDIGO EN PSEINT
6.2. SINTAXIS
En la actualidad y por lo general, el pseudocódigo, como su nombre lo indica, no obedece a las reglas de
sintaxis de ningún idioma en particular ni es de forma estándar sistemática, a pesar de que cualquier escritor
en particular vaya a pedir prestado las estructuras de control general, la sintaxis y el estilo, por ejemplo, de
algún lenguaje de programación convencional. Pero en caso de que se quiera ejecutar, se debe llevar a for-
ma tipo, para que no genere mensajes de error. Las fuentes populares incluyen la sintaxis
de Pascal, BASIC, C, C++, Java, Lisp, y ALGOL. Por lo general, se omiten las declaraciones de variables. A
veces, las llamadas a funciones, los bloques de código y el código contenido dentro de un loop se remplazan
por una sentencia de una línea en lenguaje natural.
Dependiendo del escritor, el pseudocódigo puede variar mucho en su estilo, yendo desde en un extremo, una
imitación casi exacta de un lenguaje de programación real, hasta al acercarse a una descripción en prosa de
formato de pseudocódigo en el otro extremo. Este es un ejemplo de pseudocódigo (para el juego matemáti-
co bizz buzz):
48
Construye Algoritmos para la solución de problemas
H. Se puede ejecutar en un ordenador (con un IDE como por ejemplo SLE, LPP, PilatoX, Maruga Script, Seu-
docódigo o PSeInt.)
I. Es una forma de representación sencilla de utilizar y de manipular.
J. Facilita el paso del programa al lenguaje de programación.
K. Es independiente del lenguaje de programación que se vaya a utilizar.
L. Es un método que facilita la programación y solución al algoritmo del programa.
A. Asignación de datos. Consiste en el paso de valores o resultados de una zona de memoria (variable) a
otra.
Simple. Dar un valor constante a una variable.
Contador. Se utiliza como un verificador de número de veces que se realiza el algoritmo.
Acumulador. Se usa como un sumador en el proceso.
De trabajo. Puede recibir resultados de operaciones matemáticas.
Formato: <nombre de variable> ← <expresión>
B. Escritura o salida de datos. Consiste en mandar por un dispositivo de salida un resultado o mensaje
(«mensaje«, valor).
Formato: salida: (<lista de expresiones>)
C. Lectura de datos. Consiste en recibir desde un dispositivo de entrada un valor o un dato, que se almacena
en una variable.
Formato: LEA <variable>
Ejemplo: Calcular el salario neto de un trabajador: De acuerdo al número de horas trabajadas, precio de la
hora. Al salario se le hacen descuentos por concepto de impuestos equivalentes al 20% del salario bruto.
Inicio
leer nombre, horas, precio_hora
salario_bruto = horas * precio_hora
impuestos =0.20 * salario_bruto
salario_neto = salario_bruto – impuestos
escribir nombre,, salario_neto
Fin
49
Construye Algoritmos para la solución de problemas
Es una estructura con una entrada y una salida, con una serie de acciones con ejecución lineal y un orden.
Las reglas o acciones del algoritmo deben cumplir las siguientes propiedades:
A. SIMPLES. Mediante la evaluación de una expresión, se ejecuta una alternativa determinada. Se utili-
zan para tomar decisiones lógicas; de ahí que se suelan denominar también estructuras de decisión o
alternativas.
B. SELECTIVA DOBLE (ALTERNATIVA). La instrucción alternativa realiza una instrucción de dos posibles,
según el cumplimiento de una condición. La condición es una variable booleana o una función reduci-
ble a booleana (lógica, Verdadero/Falso). Si esta condición es cierta se ejecuta Instrucciones1, si no es
así, entonces se ejecutaInstrucciones2.
C. MÚLTIPLES. Cuando existen más de dos alternativas posibles, es cuando se presenta el caso de alter-
nativas múltiples. También es común el uso de una selección múltiple que equivaldría a anidar varias
funciones de selección.
En este caso hay una serie de condiciones que tienen que ser mutuamente excluyentes, si una de ellas
se cumple las demás tienen que ser falsas necesariamente, hay un caso si no que será cierto cuando
las demás condiciones sean falsas.
51
Construye Algoritmos para la solución de problemas
D. MÚLTIPLES - CASOS. Una construcción similar a la anterior (equivalente en algunos casos) es la que se
muestra a continuación.
En este caso hay un Indicador es una variable o una función cuyo valor es comparado en cada caso
con los valores "Valori", si en algún caso coinciden ambos valores, entonces se ejecutarán
las Instruccionesi correspondientes. La secciónen otro caso es análoga a la sección si no del ejemplo
anterior.
A. BUCLE PARA (FOR). Una estructura de control muy común es el ciclo para, la cual se usa cuando se
desea iterar un número conocido de veces, empleando como índice una variable que se incrementa (o
decrementa). Es común usar la estructura de control para cada. Esta sentencia se usa cuando se tiene
una lista o un conjunto y se quiere iterar por cada uno de sus elementos:
B. BUCLE MIENTRAS (WHILE).Se realiza una serie de instrucciones mientras la condición se cumple. El
bucle se repite mientras la condición sea cierta, si al llegar por primera vez al bucle mientras la condi-
ción es falsa, el cuerpo del bucle no se ejecuta ninguna vez.
52
Construye Algoritmos para la solución de problemas
C. BUCLE REPETIR. Existen otras variantes que se derivan a partir de la anterior. Se realiza una serie de
instrucciones HASTA que la condición se cumple. La estructura de control repetir se utiliza cuando es ne-
cesario que el cuerpo del bucle se ejecuten al menos una vez y hasta que se cumpla la condición:
D. BUCLE HACER. El Bucle hacer se utiliza para repetir un bloque de código mientras se cumpla cierta
condición.
Sin embargo, en la práctica existen mejores formas de implementar esta instrucción dependiendo del
problema.
Es importante recalcar que el pseudocódigo no es un lenguaje estandarizado. Eso significa que diferentes
autores podrían dar otras estructuras de control o bien usar estas mismas estructuras, pero con una nota-
ción diferente. Sin embargo, las funciones matemáticas y lógicas toman el significado usual que tienen en
matemática y lógica, con las mismas expresiones.
6.7. EL ANIDAMIENTO
Cualquier instrucción puede ser sustituida por una estructura de control. El siguiente ejemplo muestra el pseu-
docódigo del ordenamiento de burbuja, que tiene varias estructuras anidadas. Este algoritmo ordena de me-
nor a mayor los elementos de una lista .
53
Construye Algoritmos para la solución de problemas
En general, las estructuras anidadas se muestran indentadas, para hacer más sencilla su identificación a sim-
ple vista. En el ejemplo, además de la indentación, se ha conectado con flechas los pares de delimitadores de
cada nivel de anidamiento.
En ambos casos es necesario dejar en claro cuáles son las entradas para el algoritmo, esto se hace común-
mente colocando estos valores entre paréntesis al principio o bien declarándolo explícitamente con un enun-
ciado. En el caso de las funciones, es necesario colocar una palabra como regresar o devolver para indicar
cuál es la salida generada por el algoritmo. Por ejemplo, el pseudocódigo de una función que permite calcu-
lar (un número elevado a potencia ).
Un ejemplo de procedimiento seria el algoritmo de Ordenamiento de burbuja, por el que partiendo de una
lista de valores estos se ordenan, nótese que en un procedimiento, no se calcula el valor de una función, sino
que se realiza una acción, en este caso ordenar la lista.
6.9. ARREGLOS
Son listas de datos del mismo tipo que pueden ser accedidos a través de un índice.
54
Construye Algoritmos para la solución de problemas
Es finito porque tiene un número determinado de elementos. Homogéneo porque todos los elementos al-
macenados van a ser del mismo tipo. Ordenado porque vamos a poder acceder a cada elemento del
array de manera independiente porque va a haber una forma de referenciar cada elemento. Para refe-
renciar cada elemento de un array vamos a usar índices (valor que directa o indirectamente referencia la
posición del array).
Los índices tienen que ser de cualquier tipo de datos escalar (entre los que se puede definir un orden, y
que entre 2 elementos consecutivos no puede haber infinitos elementos), aunque normalmente como índices
se van a utilizar números enteros. Para referenciar un elemento de un array usaremos el nombre del
array y entre corchetes [ ] el índice que determina la posición de ese elemento en el array.
El rango o longitud de un vector o array lineal es la diferencia entre el índice de valor máximo y el índice
de valor mínimo de ese array + 1. Normalmente los índices comienzan a enumerarse, es decir, el valor
mínimo del índice es 0 ó 1, dependiendo del lenguaje (en Pascal con 1 y en C con 0). Sin embargo nadie
impide que comiencen en cualquier otro valor.
Los arrays se almacenan siempre en posiciones consecutivas de memoria y podemos acceder a cada ele-
mento del array de manera independiente a través de los índices. Un índice no tiene porque ser un valor
constante, sino que puede ser también una variable o una expresión que al ser evaluada devuelva ese
índice. A la hora de definir un array siempre habrá que dar el nombre del array, el rango de sus índices
y el tipo de los datos que contiene, y para hacer esa declaración, se utiliza la siguiente nomenclatura.
Un array bidimensional de M*N elementos es un conjunto de M*N elementos, todos del mismo tipo, cada
uno de los cuales se referencia a través de 2 subíndices. El primer subíndice podrá variar entre 1 y M si
hemos empezado a numerar los índices por 1, y el segundo índice variará entre 1 y N, si hemos empeza-
do a numerar los índices por el 1.
55
Construye Algoritmos para la solución de problemas
La representación lógica de un array bidimensional es una matriz de dimensiones M*N donde M es el nú-
mero de filas de la matriz y N es el número de columnas, es decir, la 1ª dimensión indicaría las filas y la
2ª dimensión indicaría las columnas, es decir, al intentar acceder a un elemento I,J estaríamos accediendo
al elemento que ocupa la fila I y la columna J.
En memoria, sin embargo todos los elementos del array se almacenan en posiciones contiguas pero noso-
tros lo vemos como una matriz.
1 2 3 4 5 6 7 8 9 10 11 12
1990
1991
1992
1993 X
1994
1995
Manejo de matrices:
- Para poner a 0 todos los elementos de la matriz.
A. Elementos de la Ventana
56
Construye Algoritmos para la solución de problemas
B. Menú Archivo
Los elemento s 1, 2 y 3 (entre salir y guarda r como) son los tres últimos archivos trabajados. Si el pro-
grama se utiliza por primer a vez, estos no aparecen en el menú, sino que se agregaran cuando se abran
o guarden dichos algoritmos.
C. Menú Edición
D. Menú Ejecución
Cuando finaliza actualiza al área de Información de Ejecución. La ejecución puede interrumpirse en cual-
quier momento presiona n do Ctrl+Pause, aunque de esta forma no se obtiene información de ejecución.
Tampoco se obtiene la información de ejecución si se cierra dicha ventana desde su botón cerrar (la x en
la esquina superior derecha). Lo correcto es presionar <Enter> luego de recibir los mensajes de errores o
al finalizar el programa.
E. Menú Configuración
F. Menú Ayuda
G. Información de Ejecución
La Información de Ejecución se actualiza cada vez que se ejecuta el algoritmo.
58
Construye Algoritmos para la solución de problemas
En ella aparecen los errores encontrados, ya sean de sintaxis (antes de ejecuta r s e) o errores en tiempo
de ejecución. Al hacer click sobre los mismos, automáticamente se seleccionara la línea que contiene dicho
error en el área de trabajo. Si la ejecución se interrumpe de forma anormal (presionan d o Ctrl+Pause o
finalizando el proceso mediante Windows), dicha información no puede ser actualizada.
A partir de la versión 1.1 se puede redimensionar esta área mediante el spliter ubicado entre dicha área
y el área de trabajo. Notar el cursor del mouse como una doble flecha, manteniendo el botón izquierdo
apretad o podemos cambiar las dimensiones.
En este ejemplo, Windows se encuentra en la carpeta “c:\Windows. Nótese que la ruta termina en “\”. Es-
to siempre debe ser así. No sería correcto “e:\Windows”.
Otro posible problema, es que al ejecutar la aplicación un mensaje indique que no se encontró el intér-
prete. Debe asegurarse de ejecutar VPSeInt.exe desde el directorio donde instalo la aplicación. Si intento
actualizar el intérprete, consulte la documentación adjunta.
Si esto no soluciona su problema, escriba a zaskar@hotmail.com y describa con detalle el error en cues-
tión.
A. Consideraciones Previas
Forma general de un algoritmo escrito en seudocódigo:
Proceso <nombre>
<instrucción 1>;
<instrucción 2>;
<instrucción 3>;
...
FinProceso
Todos los algoritmos deben comenzar con la palabra Proceso y a continuación el nombre del mismo y de-
ben finalizar con la palabra FinProceso. No puede haber instrucciones fuera del proceso, aunque si co-
mentarios.
Las estructuras no secuenciales pueden anidarse. Es decir, pueden contener otras adentro, pero la estructu-
ra contenida debe comenzar y finalizar dentro de la contenedora.
Se pueden introducir comentarios luego de una instrucción o en líneas separadas mediante el uso de la
doble barra (//). Todo lo que precede a // no será tomado en cuenta al interpretar el algoritmo.
59
Construye Algoritmos para la solución de problemas
C. Asignación
<variable> <- <expresión>;
Primero evalúa la expresión de la derecha y luego asigna el resultado a la variable de la izquierda. De-
ben coincidir en tipo.
Ejemplos:
var<-1; // asigna 1 a var
Acumulador<-Acumulador +1; // incrementa en 1 el acumulador
D. Entrada
Leer <variable1>, <variable2>, ... , <variableN>;
Lee desde el ambiente (en este caso el teclado) los valores y los asigna a la o las variables respectiva-
mente. Puede leer una o más variables.
Ejemplos:
Leer Cantidad;
Leer Valor1,Valor2,Valor3;
E. Salida
Escribir < expresión 1>, < expresión 2>, ... , < expresión N>;
Devuelve al exterior (en este caso la pantalla) los resultados de las expresiones, o los contenidos de las
variables. También pude tener uno o más parámetros separados por comas.
Ejemplos:
Escribir 'Ingrese el nombre:';
Escribir 'Resultado:' , x*2 ;
F. Dimensionamiento
Dimensión <identificador1> (<max1>,...,<maxN>) , ... ;
Define un arreglo. Es decir, la cantidad de dimensione s y el valor máximo de cada una de ellas. También
pueden declararse más de un arreglo en la misma línea separándolos por comas. La cantidad de dimen-
siones puede ser una o más, y la máxima cantidad de elementos debe ser una expresión numérica positi-
va. Es necesario definir un arreglo antes de utilizarlo. Se pueden definir más de un arreglo en una misma
instrucción, separándolos con una coma (,).
Ejemplos:
Dimensión Alumnos (10);
Leer Alumno (1);
Dimensión Tabla (10, 5, 3), Resultados (5);
...
Escribir Tabla (1,3,2);
G. Condicional
Si <condición>
Entonces
...
60
Construye Algoritmos para la solución de problemas
Sino
...
FinSi
Evalúa la condición y ejecuta las acciones que correspondan; Entonces si es verdadera, Sino si es falsa.
Siempre debe estar presente Entonces, pero puede no aparece r Sino, y así no hacer nada en caso de
que la condición sea falsa. La condición puede ser una variable o una expresión lógica de tipo lógica.
Ejemplos:
Condición<- A>B;
Si Condición
Entonces Escribir 'Si';
Sino Escribir 'No';
FinSi
Si Cantidad > 10
Entonces
Escribir 'Demasiados artículos.';
Escribir 'Solo se consideraran los 10 primeros.';
FinSi
H. Selección Múltiple
Según <variable> Hacer
A: <...>;
B, C: <...>;
...
De Otro Modo: <...>;
FinSegun
Permite elegir entre dos o más posibles grupos de acciones. Evalúa el contenido de la variable y seleccio-
na el camino a seguir. La variable debe ser de tipo numérico. Las opciones se delimitan por los dos puntos
al final. Si un grupo de acciones se debe ejecutar en dos o más casos, los valores se pueden poner sepa-
rado s por comas en la misma línea. La opción final puede ser De Otro Modo, y se ejecuta si la variable
no coincide con ninguna de las anteriores.
Ejemplo:
Leer a;
Según a Hacer
1: Escribir 1;
2: Escribir 2;
3,4: Escribir '3 o 4';
De Otro Modo:
Escribir 'No está entre 1 y 4';
FinSegun
I. Mientras Hacer
Mientras <condición> Hacer
<...>
FinMientras
Ejecuta un grupo de acciones mientras la condición sea verdadera. Puede que no se ejecuten nunca, si al
momento de entrar en la estructura la condición ya es falsa. Debe contener dentro alguna acción que
pueda modificar la condición para salir.
61
Construye Algoritmos para la solución de problemas
Ejemplo:
Escribir 'Ingrese un numero o 0 para salir';
Leer a;
Mientras a<>0 Hacer
Tot<-Tot+a;
Escribir 'Ingrese otro número o 0 para salir';
FinMientras
Escribir 'Total:', Tot;
Ejecuta un grupo de accione s hasta que la condición sea verdadera. Como la condición se evalúa al final,
siempre las acciones serán ejecutadas al menos una vez. Debe contener dentro alguna acción que pueda
modificar la condición para salir.
Ejemplo:
Repetir
Tot<-Tot+a;
Escribir 'Ingrese un numero o 0 para salir';
Hasta Que a=0
Escribir 'Total:’, Tot;
K. Para
Para <I> <- <VI> Hasta <VF> ( Con Paso <P> ) Hacer
<...>
FinPara
Ejemplo:
Escribir 'Números pares de 10 a 20:';
Para a<-10 Hasta 20 Con Paso 2 Hacer
Escribir a;
FinPara
A. Asignación incompleta.
La causa de este error está en la ausencia de alguna de las dos partes de una asignación, (la variable o
la expresión a asignar).
Ejemplos:
Para <-3 hasta 5 hacer
a<-;
62
Construye Algoritmos para la solución de problemas
B. Carácter no valido.
Se encontró un carácter no que no existe en el seudocódigo. Ejemplos: &%#\¬°... Estos solo pueden apa-
recer dentro de constantes de tipo carácter.
Ejemplos:
Escribir 1erVar; // No puede empezar con numero
Tot<-Tot+ Primer_Var; // _ no es valido
Escribir 3.4.5; // el numero tiene dos puntos decimales
Escribir Para; // Para es palabra reservada
D. Demasiados Parámetros
Ocurre cuando una instrucción que admite solo un parámetro recibe más de uno.
Ejemplo:
a<-1,3; // 1 y 3 son dos parámetros
Ejemplo:
a<-0;
...
Escribir 7/a; // 7/a equivale a 7/0 y es imposible.
Ejemplo:
Escribir 'Total:,Tot;
Ejemplo:
Escribir (3+4/(2*a);
J. Falta condición.
Las estructuras de control repetitivas (Mientras, Repetir ... Hasta que) y las condicionales (Si y Según) re-
quieren las condiciones que determina n la salida del bucle.
63
Construye Algoritmos para la solución de problemas
Ejemplos:
Si
Hasta Que
Según Hacer
Mientras
K. Falta Hacer.
Las instrucciones Para, Mientras y Según, deben terminar con la palabra Hacer.
Ejemplos:
Para a<-1 hasta c
Según a
L. Falta Hasta.
La instrucción para siempre debe contener Hasta <valor final>.
Ejemplos:
Para a<-1 hacer
Ejemplo:
Proceso // aquí se coloca el nombre
Ejemplos:
Escribir 1
Leer a
Dimensión b(10)
O. Faltan Parámetros.
Se produce cuando se intenta realizar una acción sin los parámetros mínimos necesarios.
Ejemplos:
Escribir; // falta expresión
Leer; // falta identificador de variable
Dimensión; // falta identificador de arreglo
Para B // falta asignación, y valor final
P. Faltan subíndices.
En la declaración de un arreglo, siempre deben indicar s e las dimensione s y sus cantidades máximas de
elementos.
Ejemplo:
Dimensión C;
64
Construye Algoritmos para la solución de problemas
R. Identificador no valido.
Los identificador e s deben comenzar siempre con una letra y pueden continua r solo con letras o números.
No pueden ser palabras reservadas.
Ejemplos:
Leer 1erVar; // No puede empezar con numero
Leer Para; // Para es palabra reservada
U. Logaritmo de 0 o negativo
No se puede calcular el logaritmo de un número menor o igual a cero.
Ejemplos:
a<-'b';
c<-5+a; // a es carácter
Según a; // a es carácter
Si 1='3' // '3' es carácter, 1 es numérica
En las instrucciones Según y Para las constantes, expresiones o variables deben ser siempre de tipo numé-
rico.
Ejemplos:
Para a<-1 hasta 3 hacer;
Repetir;
Si a=1;
Ejemplos:
Escribir Cos(20,4); // cos es función matemática
65
Construye Algoritmos para la solución de problemas
Dimensión a(10,2);
Escribir a(2); // a fue definido como bidimensional
Y. Operador incorrecto.
Se encontró un operador mal ubicado o desconocido. También ocurre cuando se encuentran dos operador
e s seguidos sin una constante o variable en medio.
Ejemplos:
a<-5*/3; // */ dos operadores seguidos
Escribir 5++2; // ++ no es un operador
Z. Parámetro nulo.
El parámetro no puede estar vacío.
Ejemplos:
Escribir a,,2; // el 2do parámetro está vacío
Leer b,; // el 2do parámetro está vacío
Escribir (); // () es un parámetro nulo
Ejemplo:
Escribir 2+(2*a)-b);
Ejemplos:
Según a
Escribir b;
Ejemplos:
Para a<-1 hasta 3 leer a;
Ejemplos:
66
Construye Algoritmos para la solución de problemas
Si a=1
Sino Escribir 2;
FinSi
// Para evitar este error
// Se puede replantear la condición:
// Ejs: a<>1 ?(a=1)
Ejemplo:
Escribir C B; // falta , u operador
Escribir '21' B; // falta ,'u operador
Mientras a='Si'Hacer // Falta espacio
Ejemplo:
Dimensión a(5);
...
Escribir a(6); // a solo tiene 5 elementos.
XXII. ACTIVIDAD. ELABORAR UNA SÍNTESIS DEL TEMA 6, MÍNIMO DOS HOJAS,
ABARCANDO TODOS LOS TEMAS
Ejercicio No: 1. Desarrolle un algoritmo que permita leer dos valores distintos, determinar cual de los dos va-
lores es el mayor y escribirlo.
Ejercicio No: 2. Desarrolle un algoritmo que permita leer tres valores y almacenarlos en las variables A, B y
C respectivamente. El algoritmo debe imprimir cual es el mayor y cual es el menor. Recuerde constatar que
los tres valores introducidos por el teclado sean valores distintos. Presente un mensaje de alerta en caso de
que se detecte la introducción de valores iguales.
Ejercicio No: 3. Desarrolle un algoritmo que realice la sumatoria de los números enteros comprendidos entre
el 1 y el 10, es decir, 1 + 2 + 3 + …. + 10.
67
Construye Algoritmos para la solución de problemas
Ejercicio No: 4. Determinar la hipotenusa de un triángulo rectángulo conocidas las longitudes de sus dos cate-
tos. Desarrolle el algoritmo correspondiente.
Ejercicio No: 5. Desarrolle un algoritmo que permita determinar el área y volumen de un cilindro dado su ra-
dio (R) y altura (H).
Ejercicio No: 6. Desarrolle un algoritmo que permita leer un valor cualquiera N y escriba si dicho número es
par o impar.
Ejercicio No: 7. Desarrolle un algoritmo que permita convertir calificaciones numéricas, según la siguiente ta-
bla: A = 19 y 20, B =16, 17 y 18, C = 13, 14 y 15, D = 10, 11 y 12, E = 1 hasta el 9. Se asume que la no-
ta está comprendida entre 1 y 20.
Ejercicio No: 8. Desarrolle un algoritmo que permita leer dos números y ordenarlos de menor a mayor, si es
el caso.
Ejercicio No: 9. Desarrolle un algoritmo que permita leer un valor entero positivo N y determinar si es primo
o no.
Ejercicio No: 10. Tanto el Pseudocódigo como el Diagrama de flujo presentan errores; encuéntrelos y corrija-
los. Realice un algoritmo que calcule el monto a pagar por el servicio de estacionamiento, teniendo en cuenta
que por la primera hora de estadía se tiene una tarifa de 1000 bolívares y las restantes tienen un costo de
600 bolívares. Se tiene como datos: hora de entrada, hora de salida (formato militar), iniciada una hora se
contabiliza como hora total.
Ejercicio No: 11. Realice un algoritmo que a partir de proporcionarle la velocidad de un automóvil, expresa-
da en kilómetros por hora, proporcione la velocidad en metros por segundo.
Ejercicio No: 12. Desarrolle un algoritmo que permita calcular Promedio de Notas; finaliza cuando N = 0.
Ejercicio No: 13. Desarrolle un algoritmo para la empresa Constructora Tecnovivir Casas C.A., que le permita
calcular e imprimir la nómina para su cancelación a un total de 50 obreros calificados a quienes debe cance-
lar por horas trabajadas. La hora trabajada se pautó en 30.000 Bolívares.
Ejercicio No: 14. Desarrolle un algoritmo que funcione como caja registradora,
Ejercicio No: 15. Desarrolle un algoritmo que permita determinar a partir de un número de días, ingresado
por pantalla, ¿Cuántos años, meses, semanas y días; constituyen el número de días proporcionado utilizando
la estructura Mientras o While.
Ejercicio No: 16. Determine el resultado del siguiente diagrama de flujo, realice el pseudocódigo. Elabore su
enunciado.
68
Construye Algoritmos para la solución de problemas
1. Laboda, Javier; Josep Galimany, Rosa María Pena, Antoni Gual (1985). «Software». Biblioteca práctica
de la computación. Barcelona: Ediciones Océano-Éxito, S.A..
2. Bellows, Jeannie, Castek (2000). Activity Diagrams and Operation Architecture. Technologies Group Inc..
3. «Pseudocódigo - Estructuras condicionales». Consultado el 7 de diciembre de 2012.
4. «Instroducción al PseudoCódigo». Consultado el 7 de diciembre de 2012.
5. Peña Marí, Ricardo (2005) (en español). Diseño de programas: formalismo y abstracción (3 edición). Pear-
son Alhambra. pp. 488. ISBN 978-84-205-4191-4.
6. (en español) Pseudocódigos y programación estructurada (1 edición). Centro Técnico Europeo de Enseñan-
zas Profesionales. 2 de 1997. ISBN 978-84-8199-065-2.
7. Brassard, Gilles; Bratley, Paul (1996) (en español). Algorítmica: concepción y análisis. Peña Mari, Ricardo
Tr. (1 edición). Masson, S.A.. pp. 384. ISBN 978-84-458-0535-0.
8. Rodeira, ed (6 de 1994) (en Gallego). Pseudocódigos e programación estructurada (1 edición). ISBN 978-
84-8116-287-5.
9. Edebé, ed (8 de 1993) (en español). Pseudocódigos y programación estructurada (1 edición). ISBN 978-
84-236-3126-1.
69