Está en la página 1de 69

DIRECCIÓN GENERAL DE EDUCACIÓN TECNOLÓGICA INDUSTRIAL

CENTRO DE ESTUDIOS TECNOLÓGICOS INDUSTRIAL Y DE SERVICIOS No. 43


XOCHITEPEC MOR.

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

1. Nociones básicas de programación en la solución de problemas


1.1. Resolución de problemas computacionales
1.2. Programación
1.3. Léxico y programación
1.4. Programas y aplicaciones
1.5. Crisis de software.
1.6. Ciclo de vida de un programa
1.7. Breve historia de los lenguajes de programación
1.8. Definición de lenguajes de programación
1.9. Tipos de programación

2. Metodología de solución de problemas


2.1. Estrategia
2.1.1. ¿cómo se diseña una estrategia?
2.2. Definición del problema
2.3. Análisis del problema
2.4. Diseño del problema
2.5. Programación (codificación)
2.5.1. Elección y creación del método
2.5.2. Codificación
2.6. Prueba y depuración
2.6.1. Depuración
2.6.2. Documentación
2.7. Errores.
2.8. Evaluación de los resultados
2.9. Mantenimiento

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

4. Diseña y elabora algoritmos


4.1. Definición de algoritmo
4.2. Ejemplos de algoritmos
4.3. Clasificación de métodos
4.4. Definición de problema.
4.5. Características principales de un algoritmo
4.6. Elementos de un algoritmo
4.7. Formalización
4.8. Programación modular
4.9. Pasos para la solución de problemas
4.10. Estructuras algorítmicas
4.10.1. Secuenciales
4.10.2. Condicionales (selectivas)
4.10.3. Cíclicas

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.

A. Proporcionar una idea de su uso.


B. Visualizar sus ventajas e importancia.
C. Definir sus tipos y variantes.
D. Proporcionar conceptos sobre su análisis y diseño.
E. Proporcionar concepto sobre las técnicas de diseño.
F. Desglosar sus variantes (ordenación, búsqueda, etc.).

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.

Resultados del aprendizaje


A. Realizar seudocódigo.
B. Definir algoritmos.
C. Saber implementar las distintas estructuras de datos y sus operaciones.
D. Determinar la eficiencia de un algoritmo.

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. Repositorio de documentos y referencias con información de todas las unidades.


B. Se entregarán además Trabajos Prácticos que se irán resolviendo para la aplicación de los contenidos en-
señados tanto en el aula como así también en el Laboratorio de Computación.

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.

I. ACTIVIDAD DE INICIO. RESPONDER A LAS SIGUIENTES CUESTIONES.

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?

II. ACTIVIDAD DE INICIO. RESPONDER A LAS SIGUIENTES CUESTIONES.

En parejas realiza ejercicios describiendo los pasos:


A. Las actividades de un día en su vida cotidiana;
B. Dirigirse a un destino en transporte público; y
C. Preparar un alimento preferido.
D. Hacer la tarea en casa

6
Construye Algoritmos para la solución de problemas

1. NOCIONES BÁSICAS DE PROGRAMACIÓN EN LA SOLUCIÓN DE PROBLEMAS


1.1. RESOLUCIÓN DE PROBLEMAS COMPUTACIONALES
En la vida diaria nos enfrentamos continuamente a problemas que debemos resolver en lo posible felizmente.
Así como cada individuo tiene formas de encarar un problema y su propia manera de solucionarlo, compu-
tacionalmente hablando podemos hacer un paralelo. Ante la presentación de un problema encarar la mejor
forma de resolverlo para arribar al resultado esperado y correcto es un desafío. Para ello debemos com-
prender exactamente qué se pide, qué resultados se pretenden y que restricciones y/o condiciones existen.
Para realizar lo antes dicho dividiremos la resolución de un problema en etapas, las cuales enunciamos y de-
finimos a continuación.

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.

1.3. LÉXICO Y PROGRAMACIÓN


La programación se rige por reglas y un conjunto más o menos reducido de órdenes, expresiones, instruccio-
nes y comandos que tienden a asemejarse a una lengua natural acotada (en inglés); y que además tienen la
particularidad de una reducida ambigüedad. Cuanto menos ambiguo es un lenguaje de programación, se di-
ce, es más potente. Bajo esta premisa, y en el extremo, el lenguaje más potente existente es el binario, con
ambigüedad nula (lo cual lleva a pensar así del lenguaje ensamblador).

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.

1.4. PROGRAMAS Y APLICACIONES


Los programas suelen subdividirse en partes menores, llamadas módulos, de modo que la complejidad algo-
rítmica de cada una de las partes sea menor que la del programa completo, lo cual ayuda al desarrollo del
programa. Esta es una práctica muy utilizada y se conoce como "refino progresivo". Según Niklaus Wirth, un
programa está formado por los algoritmos y la estructura de datos.

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.

1.5. CRISIS DE SOFTWARE.


Los primeros ordenadores cumplían una única programación que estaba definida en los componentes eléctri-
cos que formaban el ordenador.
8
Construye Algoritmos para la solución de problemas

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:

1. Reconocer la necesidad de un programa para solucionar un problema o identificar la posibilidad de


automatización de una tarea.
2. Recoger los requisitos del programa. Debe quedar claro qué es lo que debe hacer el programa y pa-
ra qué se necesita.
3. Realizar el análisis de los requisitos del programa. Debe quedar claro cómo debe realizar el pro-
grama las cosas que debe hacer. Las pruebas que comprueben la validez del programa se pueden
especificar en esta fase.
4. Diseñar la arquitectura del programa. Se debe descomponer el programa en partes de complejidad
abordable.
5. Implementar el programa. Consiste en realizar un diseño detallado, especificando completamente to-
do el funcionamiento del programa, tras lo cual la codificación (programación propiamente dicha)
debería resultar inmediata.
6. Implantar (instalar) el programa. Consiste en poner el programa en funcionamiento junto con los com-
ponentes que pueda necesitar (bases de datos, redes de comunicaciones, etc.).

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.

1.6. CICLO DE VIDA DE UN PROGRAMA


Una de las cosas que se han definido tras el nacimiento de la ingeniería del software ha sido el ciclo de vida
de una aplicación. El ciclo de vida define los pasos que sigue el proceso de creación de una aplicación desde
que se propone hasta que finaliza su construcción. Los pasos son:

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

1.7. BREVE HISTORIA DE LOS LENGUAJES DE PROGRAMACIÓN


Charles Babbage definió a mediados del siglo XIX lo que él llamó la máquina analítica. Se considera a esta
máquina el diseño del primer ordenador. La realidad es que no se pudo construir hasta el siglo siguiente. El
caso es que su colaboradora Ada Lovelace escribió en tarjetas perforadas una serie de instrucciones que la
máquina iba a ser capaz de ejecutar. Se dice que eso significó el inicio de la ciencia de la programación de
ordenadores.

Clasificación de los lenguajes de programación:

A. Código máquina. Primera generación de lenguajes (1gl)


B. Lenguaje ensamblador. Segunda generación de lenguajes (2gl)
C. Lenguajes de alto nivel. Lenguajes de tercera generación (3gl)
D. Lenguajes de cuarta generación (4gl)
E. Lenguajes orientados a objetos
F. Lenguajes para la web

III. ACTIVIDAD. INVESTIGAR LAS CARACTERÍSTICAS DE LA


CLASIFICACIÓN DE LENGUAJES DE PROGRAMACIÓN

1.8. DEFINICIÓN DE LENGUAJES DE PROGRAMACIÓN


Es una serie de símbolos que sirven para transmitir uno o más mensajes (ideas) entre dos entidades diferentes.
A la transmisión de mensajes se le conoce comúnmente como comunicación.

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 mensajes deben correr en un sentido a la vez.


 Debe forzosamente existir 4 elementos: Emisor, Receptor, Medio de Comunicación y Mensaje.

Programar: Plantear solución a un problema mediante un Lenguaje de Programación.


10
Construye Algoritmos para la solución de problemas

El Paradigma de Programación condiciona la forma en que se expresa la solución a un problema.

El Lenguaje de Programación (que se encuadra en un determinado paradigma) es la herramienta que permi-


te expresar nuestra solución.

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".

1.9. TIPOS DE PROGRAMACIÓN

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.

Ejemplo de uso de esta programación (listado en Basic clásico):


10 X=RANDOM()*100+1;
20 PRINT “escribe el número que crees que guardo”
30 INPUT N
40 IF N>X THEN PRINT “mi número es menor” GOTO 20
50 IF N<X THEN PRINT “mi número es mayor” GOTO 20
60 PRINT “¡Acertaste!”

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.

B. Programación Estructurada. Conjunto de técnicas que aumentan considerablemente la productividad de


un programa, reduciendo el elevado tiempo requerido para escribir, verificar, depurar y mantener los
programas

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)

El listado anterior en un lenguaje estructurado sería (listado en Pascal):


PROGRAM ADIVINANUM;
USES CRT;
VAR x, n: INTEGER;
BEGIN
X=RANDOM()*100+1;
REPEAT
WRITE(“Escribe el número que crees que guardo”);
READ(n);
IF (n>x) THEN WRITE(“Mi número es menor”);
IF (n>x) THEN WRITE(“Mi número es mayor”);
UNTIL n=x;
WRITE(“Acertaste”);

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.

Ejemplo (código Java):


/**
*Calcula los primos del 1 al 1000
*/
public class primos {
/** Función principal */
public static void main(String args[]){
int n Primos=10000;
boolean primo[]=new boolean[nPrimos+1];
short i;
for (i=1;i<=nPrimos;i++) primo[i]=true;
for (i=2;i<=nPrimos;i++){
if (primo[i]){
for (int j=2*i;j<=nPrimos;j+=i){
primo[j]=false; }
}
}
for (i=1;i<=nPrimos;i++) {
System.out.print(" "+i);
}
}
}

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. METODOLOGÍA DE SOLUCIÓN DE PROBLEMAS


Una de las cosas que se han definido tras el nacimiento de la ingeniería del software ha sido el ciclo de vida
de una aplicación. El ciclo de vida define los pasos que sigue el proceso de creación de una aplicación desde
que se propone hasta que finaliza su construcción. Los pasos son:

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.

2.1.1. ¿CÓMO SE DISEÑA UNA ESTRATEGIA?


Por lo dicho, diseñar una estrategia consiste en dividir o descomponer el problema original en una suce-
sión de problemas más simples, de tamaño suficientemente pequeño como para que cada uno de ellos
pueda ser comprendido en su totalidad. Esto, permitirá atacar la solución de cada problema simple por
separado e independientemente de los demás, volviendo a aplicar este enfoque a cada uno de los sub-
problemas hasta llegar a subproblemas de solución simple. Una vez que todos ellos han sido resueltos, se
puede decir que el problema original ha sido resuelto.

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.

2.2. DEFINICIÓN DEL PROBLEMA


Está fase está dada por la formulación del problema en forma correcta y completa, el cual requiere una de-
finición clara y precisa. Esta enunciación de lo que se desea es primordial para el éxito de la resolución.

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:

A. ¿Qué información debe proporcionar la resolución del problema?


B. ¿Qué datos se necesitan para resolver el problema?

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

2.3. ANÁLISIS DEL PROBLEMA


En esta fase se determinan los requisitos que tiene que cumplir la aplicación. Se anota todo aquello que afec-
ta al futuro funcionamiento de la aplicación. Este paso le realiza un analista.

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.4. DISEÑO DEL PROBLEMA


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 aplicación. Las caracte-
rísticas de un buen algoritmo son:

a) Debe tener un punto particular de inicio.


b) Debe ser definido, no debe permitir dobles interpretaciones.
c) Debe ser general, es decir, soportar la mayoría de las variantes que se puedan presentar en la definición
del problema.
d) Debe ser finito en tamaño y tiempo de ejecución.

2.5. PROGRAMACIÓN (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. Esta etapa consiste en obtener la solución del problema dado. Se divide en dos
subetapas:

2.5.1. ELECCIÓN Y CREACIÓN DEL MÉTODO.


Se trata de buscar un procedimiento o método general que permita resolver el problema planteado utili-
zando una computadora. Es muy factible que se encuentren varios métodos para hacerlo, lo importante es
determinar la “mejor alternativa”, de acuerdo a distintos parámetros que se establezcan para esta selec-
ción. Esta puede ser la que produzca los resultados esperados en el menor tiempo y al menor costo o sólo
en el menor tiempo u otras.

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.

2.6. PRUEBA Y DEPURACIÓN


Esta etapa consiste en la ejecución del código del método elegido, es decir, suministrar los datos al compu-
tador, y obtener los resultados.

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.8. EVALUACIÓN DE LOS RESULTADOS


Obtenidos los resultados se les evalúa para verificar que sean correctos. En caso contrario, se revisa en las
etapas anteriores para detectar la falla o error, entrar a corregirla y reiniciar desde este punto los pasos
para resolver de nuevo y en forma correcta el problema.

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.

V. ACTIVIDAD. “RESOLVIENDO PROBLEMAS” ANALIZA LOS SIGUIENTES


PROBLEMAS, EN BASE A LOS DATOS QUE SE PRESENTAN, ANOTA CUALES SON LOS DATOS
DE ENTRADA, DE PROCESO Y OBTÉN LOS DATOS DE SALIDA

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: ___________________________

VI. ACTIVIDAD. REALIZA UNA INVESTIGACIÓN DOCUMENTAL DE LAS DIFERENTES


METODOLOGÍAS PARA LA RESOLUCIÓN DE UN PROBLEMA POR COMPUTADORA Y ALGO-
RITMOS, SOBRE LAS CARACTERÍSTICAS Y DEL PLANTEAMIENTO DE UN PROBLEMA

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

3.1. DEFINICIÓN DE OPERADORES.


Es el nombre utilizado para referenciar variables, constantes, tipos, funciones y otros objetos definidos por el
usuario. Un identificador puede tener uno o más caracteres (letras, dígitos y carácter de subrayado), siendo
significativos los primeros 32.

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.

3.2. PALABRAS RESERVADAS


Las palabras reservadas no llevan acento:

A. Leer , Escribir , Dimension


B. Si-Entonces-Sino, Segun
C. Mientras Hacer, Repetir Hasta Que, Para

3.3. TIPO DE OPERADORES.

A. Operadores aritméticos: En las expresiones aritméticas se utilizan los siguientes operadores aritméticos:

Operador Acción Ejemplo Resultado


^ Potencia 5^2 25
* Multiplicación 4*5 20
/ División 9/3 3
+ Suma 2+3 5
- Resta 5–2 3
 Asignación 1)= ó  1

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).

Operador Relacional Acción Ejemplo


> (mayor que) 5>3
< (menor que), 2<4
>= (mayor o igual que) a>=b
<= (menor o igual que) a<=b
= (igual que) m=n
<> (diferente que) 3<>2

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

Operadores Lógicos Acción Ejemplo


& (and) Conjunción (y) (5>3) & (5=1) // falso
| (or) Disyunción (0) (7=7) | (4>9) // verdadero
NO (not) Negación (no) NO (4=4) // falso

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

3.4. JERARQUÍA DE LOS OPERADORES.

Aritméticos, relacionales y lógicos Accion


() Paréntesis
^ Potencia
* , / , div, mod y NO Multiplicación, división, residuo división, división entera y negación,
+,-,Y Signo más, signo menos y conjunción
>, <, >=, <=, <>, = , O Mayor que, menor que, mayor igual que, menor igual que, igual que,
distinto que y disyunción

3.5. TABLA DE VERDAD DE LOS OPERADORES LÓGICOS.

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

Determine el valor de verdad de las expresiones:


(a<b) AND (b<c)
(10>20) AND (20<30)
V and V
V

((a>b) OR (a<c)) AND ((a == c) OR a>=b))


((10>20) OR (10<30)) AND ((10 ==30) OR (10>=20))
( F OR V ) and ( F OR F
V AND F
F

VIII. ACTIVIDAD. RESUELVA LAS SIGUIENTES EXPRESIONES UTILIZANDO


LAS TABLAS DE VERDAD

A. Resuelve las siguientes expresiones: considerando que: a=5 y b=2

1. a>b

2. a>=b

3. a<b

4. a<=b

5. NOT a=b

B. Resuelve las siguientes expresiones: considerando que:

a=3, b=4 y c=2


6. ((a*b) < (b+c)) AND (a=c)

a=2, b=5, c=3 y d=5


7. ((a+b) >c) OR ((b/d>b))

a=4, b=2 y c=3


8. X=(a/b)*c + (a/b)

20
Construye Algoritmos para la solución de problemas

C. Resuelve las siguientes expresiones: considerando que:


x=1, y=4 y z=10 Pi=3.141592 E=2.718281

9. Pi *x2>Y OR 2*Pi*x<=z

10. x>3 AND y=4 OR x+y<=z

11. x>3 AND (y=4 OR x+y<=z)

12. NOT y/2=2*x AND NOT y<(PI-e*z)

3.6. FUNCIONES MATEMÁTICAS


Son palabras reservadas que nos permiten realizar diversos cálculos matemáticos
FUNCIÓN SIGNIFICADO
RC(X) Raíz Cuadrada de X
ABS(X) Valor Absoluto de X
LN(X) Logaritmo Natural de X
EXP(X) Función Exponencial de X
SEN(X) Seno de X
COS(X) Coseno de X
ATAN(X) Arcotangente de X
TRUNC(X) Parte entera de X
REDON(X) Entero más cercano a X

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.

3.7. DEFINICIÓN DE VARIABLE Y CONSTANTE

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

IX. ACTIVIDAD. RESUELVA LAS SIGUIENTES CUESTIONES,

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.

C. Complete con una de las opciones propuestas entre paréntesis:


 Las siguientes........................... (variables / constantes) son.................... (Iguales / diferentes).
- ALTO - AlTo - AltO

 Las siguientes........................... (variables / constantes) son.................... (iguales / diferentes).


- ‘ALTO’ - ‘AlTo’ - ‘AltO’

3.8. QUE ES UN IDENTIFICADOR


Los Identificadores son palabras definidas por el programador para identificar variables. Un identificador es
una serie o secuencia de caracteres que sirve para identificar una posición en la memoria de la computadora,
que permite acceder a su contenido, están formados por letras, dígitos y el carácter subrayado ( _ ) que no
inicie con dígito, así mismo es el nombre que damos a todo lo que manipulamos dentro de un programa. Por
ejemplo variables, constantes, funciones, tipos definidos por el usuario etc.

3.9. CARACTERÍSTICAS DE LOS IDENTIFICADORES.


Reglas para formar un identificador:

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.

X. ACTIVIDAD. DECLARA UN IDENTIFICADOR PARA CADA UNO DE LOS


SIGUIENTES CASOS E INICIALÍZALOS, ADEMÁS ESPECÍFICA SI SERÁ UNA VARIABLE O UNA
CONSTANTE:

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

3.10. EXPRESIÓN MATEMÁTICAS Y ALGORÍTMICA

A. Expresiones algebraicas. Es un conjunto de símbolos, números o variables utilizados en matemáticas para


representar relaciones aritméticas. El término algebraico es utilizado en matemáticas pero la computado-
ra es incapaz de reconocer la simbología. Una expresión algebraica simple es (ax2 + bx = c)

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.

Las expresiones son combinaciones (asociaciones) de datos con operadores.

a3
b5 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:

Expresiones aritméticas (devuelve un número)


Expresiones lógicas (devuelve un valor lógico)
Expresiones de carácter (devuelve un carácter)

Suma  a + b – 3 (expresión aritmética)

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

Siguiendo las reglas, el siguiente operador que se resuelve es el de División.

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

El siguiente en resolverse es la otra multiplicación.

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

El siguiente es operador de multiplicador por ser el de mayor jerarquía.

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

La conversión de expresión algebraica a algorítmica.


Simplemente se sustituyen los operadores algebraicos por los operadores y funciones computacionales, en una
sola expresión en forma lineal

Expresión Aritmética o algebraica Expresión Algorítmica

((x^a + y^b) / x * y^ c )^d

Y^2+2*X-3

XI. ACTIVIDAD. CONVIERTA LAS SIGUIENTES EXPRESIONES MATEMÁTICAS


A EXPRESIONES ALGORÍTMICAS

Expresión Aritmética o algebraica Expresión Algorítmica

25
Construye Algoritmos para la solución de problemas

XII. ACTIVIDAD. RESUELVA LAS SIGUIENTES EXPRESIONES MATEMÁTICAS

Analice las expresiones en que intervienen y encuentre en la lista de opciones el resultado correcto de la ex-
presión.

3.11. TIPO DE DATOS

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

4. DISEÑA Y ELABORA ALGORITMOS

4.1. DEFINICIÓN DE ALGORITMO


La palabra algoritmo se utiliza, en general, como sinónimo de procedimiento, método o técnica. Pero en el
área de computación tiene un significado más específico.

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.

4.2. EJEMPLOS DE ALGORITMOS

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

4.3. CLASIFICACIÓN DE MÉTODOS


Los métodos que utilizan algoritmos para la resolución de algún problema o tarea se conocen como algorítmi-
cos.

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…

Existen dos tipos y son llamados así por su naturaleza:


A. Cualitativos: Son aquellos en los que se describen los pasos utilizando palabras.
B. Cuantitativos: Son aquellos en los que se utilizan cálculos numéricos para definir los pasos del proceso.

Existen dos maneras de representar un algoritmo:


A. Gráfica: es con símbolos, utilizando algún tipo de diagrama por ejemplo el diagrama de flujo.
B. No gráfica: describiendo las operaciones que se llevarán a cabo, utilizando un pseudocódigo (lenguaje
simulado donde se pueden describir las tareas a realizar sin conocer los comandos de un lenguaje especí-
fico).

Otra clasificación puede ser:


A. Deterministas: en cada paso del algoritmo se determina, de forma única, el siguiente paso (lineal no muy
complejo).

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

Ejemplos: la diferencia en el arreglo de un hombre y una mujer.

Determinista No determinista

4.4. DEFINICIÓN DE PROBLEMA


El lenguaje algorítmico es aquel que implementa una solución teórica a un problema indicando las operacio-
nes a realizar y el orden en el que se deben efectuarse. Por ejemplo en el caso de que nos encontremos en
casa con una bombilla fundida en una lámpara, un posible algoritmo sería:

A. Comprobar si hay bombillas de repuesto


B. En el caso de que las haya, sustituir la bombilla anterior por la nueva
C. Si no hay bombillas de repuesto, bajar a comprar una nueva a la tienda y sustituir la vieja por la nueva

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:

A. Comprobar si hay bombillas de repuesto


 Abrir el cajón de las bombillas
 Observar si hay bombillas

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.

4.5. CARACTERÍSTICAS PRINCIPALES DE UN ALGORITMO


A. Definido: cada paso debe ser enunciado en forma clara y precisa, y no debe dar lugar a ambigüeda-
des. Para los mismos datos el algoritmo debe dar siempre los mismos resultados
B. Debe resolver el problema para el que fue formulado. Lógicamente no sirve un algoritmo que no resuel-
ve ese problema. En el caso de los programadores, a veces crean algoritmos que resuelven problemas di-
ferentes al planteado.
C. Los algoritmos son independientes del ordenador. Los algoritmos se escriben para poder ser utilizados
en cualquier máquina.
D. Deben de ser precisos. Los resultados de los cálculos deben de ser exactos, de manera rigurosa. No es
válido un algoritmo que sólo aproxime la solución.
E. Deben de ser finitos. Deben de finalizar en algún momento. No es un algoritmo válido aquel que produce
situaciones en las que el algoritmo no termina.
F. Deben de poder repetirse. Deben de permitir su ejecución las veces que haga falta. No son válidos los
que tras ejecutarse una vez, ya no pueden volver a hacerlo por la razón que sea.
G. General. La solución debe ser aplicable a un tipo de problemas y no a un problema particular.
H. Validez. Un algoritmo es válido si carece de errores. Un algoritmo puede resolver el problema para el
que se planteó y sin embargo no ser válido debido a que posee errores.
I. Eficiencia. Un algoritmo es eficiente si obtiene la solución al problema en poco tiempo. No lo es si es lento
en obtener el resultado.
J. Óptimo. Un algoritmo es óptimo si es el más eficiente posible y no contiene errores. La búsqueda de este
algoritmo es el objetivo prioritario del programador. No siempre podemos garantizar que el algoritmo
hallado es el óptimo, a veces sí.

XIV. ACTIVIDAD. INDIVIDUAL CONTESTA LAS SIGUIENTES PREGUNTAS:

A. ¿Cuál es la definición formal de algoritmo?


B. ¿Cuándo podemos decir que un algoritmo funciona?
C. ¿Qué relación tiene un algoritmo claro con uno eficiente?
D. ¿Cuál es la función del proceso de salida de un algoritmo?
E. ¿Por qué un algoritmo debe ser claro?

4.6. ELEMENTOS DE UN ALGORITMO


A. Entrada. Los datos iniciales que posee el algoritmo antes de ejecutarse.
B. Proceso. Acciones que lleva a cabo el algoritmo.
C. Salida. Datos que obtiene finalmente el algoritmo.

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.

Ejemplos que se pueden presentar en la vida diaria:


A. Una receta de cocina
B. Las instrucciones para utilizar un aparato electrónico
C. El camino para llegar a un lugar determinado desde un punto de partida

Ejemplos de algoritmos computacionales:


A. Calcular los sueldos de los empleados de una empresa
B. Actualizar el stock de un comercio
C. Calcular las raíces de una ecuación

XV. ACTIVIDAD. “FORMALIZANDO LA SOLUCIÓN” COMPLETA LA SIGUIENTE TABLA

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.

Una acción es un evento que modifica el ambiente y puede ser:


A. Una acción Primitiva. Es cuando para un ejecutante dado su enunciado es suficiente para que pueda ser
ejecutada sin información adicional.
B. Una acción no-primitiva es aquella que puede ser descompuesta en acciones primitivas para un ejecutante
dado.

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

4.8. PROGRAMACIÓN MODULAR


Es un método de diseño y tiende a dividir el problema en partes perfectamente diferenciadas que puedan
ser analizadas, resueltas y puestas a punto por separado.

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. Un módulo debe corresponder a una función lógica perfectamente bien definida.


B. Los módulos deben ser pequeños para que sean claros y de poca complejidad.
C. Un módulo debe tener una estructura de caja negra, es decir la salida debe ser exclusivamente función
de la entrada.
D. Cada módulo deber tener una única entrada y una única salida.
E. Objetivos de la programación modular
F. La programación modular tiende a:
 Disminuir complejidad: disminuye la complejidad del problema original, dividiendo un problema en
partes más simples.
 Aumentar la claridad: el problema original es planteado ahora como una sucesión de módulos que re-
sulta más fácil de comprender inclusive para terceras personas.
 Aumentar la fiabilidad: como consecuencia de los dos puntos anteriores, aumenta la confiabilidad en
todo proceso de resolución.
 Facilitar modificaciones y conexiones: cada módulo puede realizarse y probarse por separado, mini-
mizándose los problemas de puesta a punto al final.

4.9. PASOS PARA LA SOLUCIÓN DE PROBLEMAS


No existe una metodología universal pero generalmente para el desarrollo de nuevos algoritmos se tienen los
siguientes métodos:

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

XVI. ACTIVIDAD. EJERCICIOS EN PAREJAS. ELABORA LOS SIGUIENTES ALGORITMOS

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. ESTRUCTURAS ALGORÍTMICAS.


Las estructuras de operación de programas son un grupo de formas de trabajo, que permiten, mediante la
manipulación de variables, realizar ciertos procesos específicos que nos lleven a la solución de problemas. Es-
tas estructuras se clasifican de acuerdo con su complejidad en:

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:

<variable> (asignación) <expresión>


a5 (a=15)
 Contador: Consiste en usarla como un verificador del número de veces que se realiza un proceso:
(a=a+1).

34
Construye Algoritmos para la solución de problemas

 Acumulador: Para ejecutarse la asignación, primero se evalúa la expresión de la derecha y luego


se asigna el resultado a la variable de la izquierda. El tipo de la variable y el de la expresión
deben coincidir. Consiste en usarla como un sumador en un proceso
(a=a+b)
n  1; // asigna el número 1 a n
suma  suma + 1 // incrementa el valor de suma en 1
 De trabajo: Donde puede recibir el resultado de una operación matemática que involucre muchas
variables. La jerarquía de los operadores matemáticos es igual a la del algebra, aunque puede
alterarse con el uso de paréntesis.
(a=c+b*2/4).
suma  ( 2 + 3 ) * X + T + Z
Velocidad  (distancia/(minuto*60+segundo+c/100))
Numero  u + 100 + d+10 + c
AT  (s+(s-1) + (s-2) + (s-3))^2
B. ENTRADA (Lectura). Consiste en recibir desde un dispositivo de entrada (p.ej. el teclado) un valor. Es-
ta operación se representa en un algoritmo como sigue:
Leer a
Leer b
Donde “a” y “b” son las variables que recibirán los valores
C. SALIDA (Escritura). Consiste en mandar por un dispositivo de salida (p.ej. monitor o impresora) un re-
sultado o mensaje. Este proceso se representa en un algoritmo como sigue:
Escribe El resultado es:
Escribe R
Escribe El resultado es: R
Donde “El resultado es:” es un mensaje que se despliega y R es una variable que contiene un valor.

4.10.2. CONDICIONALES (SELECTIVAS)


Se utilizan para tomar decisiones, también se denominan estructuras de decisión, alternativas o selectivas.
Aquí se evalúa una o varias condiciones cuyo resultado será una opción u otra, para lo cual es necesario
establecer una pregunta para determinar si la acción se realiza o no.

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:

Segun Indicador Hacer


Caso Valor 1:
Acción 1;
Caso Valor 2:
Acción 2;
...
Caso Valor n:
Acción n;
[De Otro 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:

Para <var>  <exp1> hasta < exp2> paso < exp3>

Haga <tareas a repetir>


Fin-para

La sentencia Para tiene los siguientes elementos:

 Vc: es la variable de control de la estructura repetitiva y actúa como un contador.


 Vi: es el valor inicial que inicializa la variable de control (número de repeticiones) de la estructura
repetitiva.
 Inc: es el elemento de incremento que aumenta o disminuye la variable de control (contador) cada
vez que se ejecuta el ciclo.

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:

Mientras que <condición>


Acción 1
Acción 2
Acción 3
Acción ……N
Fin-mientras

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>

XVII. ACTIVIDAD. “ENCONTRANDO LA PROBLEMÁTICA” OBSERVA LAS SIGUIENTES


IMÁGENES E IDENTIFICA LA PROBLEMÁTICA Y COMENTA TUS CONCLUSIONES.

1.- 2.-

3.- 4.-

XVIII. ACTIVIDAD. “PROBLEMAS A MÍ” DESARROLLA EL PROCESO


DE SOLUCIÓN DE LOAS SIGUIENTES PROBLEMAS

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.

9. Obtenga los 100 primeros números naturales.

10. Obtener los números pares comprendidos entre 1 y 1000

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

5.1. CONCEPTO DE DIAGRAMA DE FLUJO


Un diagrama de flujo es una representación gráfica de un algoritmo o de una parte del mismo. Los diagra-
mas de flujo ayudan en la comprensión de la operación de las estructuras de control (Si, Mientras).

La ventaja de utilizar un algoritmo es que se lo puede construir independientemente de un lenguaje de pro-


gramación, pues al momento de llevarlo a código se puede hacer en cualquier lenguaje.

Son representaciones gráficas de los pasos a seguir para lograr un resultado.

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.

5.2. CARACTERÍSTICAS QUE DEBE CUMPLIR UN DIAGRAMA DE FLUJO.


Un diagrama de flujo siempre tiene un único punto de inicio y un único punto de término. Las siguientes son ac-
ciones previas a la realización del diagrama de flujo:

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.

Nombre Símbolo Función


Representa el inicio y fin de un programa. También puede repre-
Terminal sentar una parada o interrupción programada que sea necesaria
realizar en un programa.

Cualquier tipo de introducción de datos en la memoria desde los


Entrada / salida
periféricos o registro de información procesada en un periférico.

Cualquier tipo de operación que pueda originar cambio de valor,


Proceso formato o posición de la información almacenada en memoria,
operaciones aritméticas, de transformaciones, etc.
Indica operaciones lógicas o de comparación entre datos (nor-
malmente dos) y en función del resultado de la misma determina
Decisión
(normalmente si y no) cuál de los distintos caminos alternativos del
programa se debe seguir

40
Construye Algoritmos para la solución de problemas

Sirve para enlazar dos partes cualesquiera de un diagrama a


Conector Misma
través de un conector en la salida y otro conector en la entrada.
Página
Su conexión es la misma página

Indica la continuación de la dirección del flujo de una página a


Conector Fuera otra. Tiene la misma misión que el anterior, pero este conector se
de Página utiliza cuando las partes a enlazar se encuentran en distinta pági-
na.
Indicador de di-
rección o línea Indica el sentido de la ejecución de las operaciones
de flujo

Se utiliza en ocasiones en lugar del símbolo de salida. El dibujo


Salida a impre-
representa un pedazo de hoja. Es usado para mostrar datos o re-
sora
sultados.

Salida a panta-
Se utiliza para representar la salida por medio del monitor
lla

5.4. SIMBOLOGÍA DE LOS OPERADORES EN DIAGRAMAS DE FLUJO

SÍMBOLO OPERACIÓN SIMBOLO OPERACIÓN


+ Sumar ≥ Mayor o igual que
- Menos ≤ Menor o igual que
* Multiplicación ≠ <> Diferente de
/ División Si
± Más o menos No
= Equivalente True
> Mayor que False
< Menor que

5.5. FUNCIONES DE UN DIAGRAMA.


A. Muestran gráficamente las acciones que se realizaran de acuerdo con el programa.
B. Ayudan a pensar claramente.
C. Ayudan a detectar errores.
D. Facilitan cambios en el programa.

5.6. REPRESENTACIÓN GRÁFICA DE LA SOLUCIÓN DE UN PROBLEMA.

41
Construye Algoritmos para la solución de problemas

5.7. VENTAJAS DE LOS DIAGRAMAS DE FLUJO


A. Favorecen la comprensión del proceso al mostrarlo como un dibujo. El cerebro humano reconoce muy fá-
cilmente los dibujos. Un buen diagrama de flujo reemplaza varias páginas de texto.
B. Permiten identificar los problemas y las oportunidades de mejora del proceso. Se identifican los pasos, los
flujos de los re-procesos, los conflictos de autoridad, las responsabilidades, los cuellos de botella, y los
puntos de decisión.
C. Muestran las interfaces cliente-proveedor y las transacciones que en ellas se realizan, facilitando a los
empleados el análisis de las mismas.
D. Son una excelente herramienta para capacitar a los nuevos empleados y también a los que desarrollan la
tarea, cuando se realizan mejoras en el proceso.
E. Al igual que el pseudocódigo, el diagrama de flujo con fines de análisis
de algoritmos de programación puede ser ejecutado en un ordenador, con un IDE como Free DFD.

5.8. PASOS PARA LA CONSTRUCCIÓN DE UN DIAGRAMA DE FLUJO


Los pasos a seguir para construir el diagrama de flujo son:
A. Establecer el alcance del proceso a describir. De esta manera quedará fijado el comienzo y el final del
diagrama. Frecuentemente el comienzo es la salida del proceso previo y el final la entrada al proceso si-
guiente.
B. Identificar y listar las principales actividades/subprocesos que están incluidos en el proceso a describir y
su orden cronológico.
C. Si el nivel de detalle definido incluye actividades menores, listarlas también.
D. Identificar y listar los puntos de decisión.
E. Construir el diagrama respetando la secuencia cronológica y asignando los correspondientes símbolos.
F. Asignar un título al diagrama y verificar que esté completo y describa con exactitud el proceso elegido.

5.9. REGLAS DE LOS DIAGRAMAS DE FLUJO


A. Debe de indicar claramente dónde inicia y dónde termina el diagrama.
B. Cualquier camino del diagrama debe de llevarte siempre a la terminal de fin.
C. Organizar los símbolos de tal forma que siga visualmente el flujo de arriba hacia abajo y de izquierda a
derecha.
D. La notación utilizada es independiente al lenguaje de programación.
E. No usar términos de lenguajes de programación dentro de los símbolos.
F. Centrar el diagrama en la página.

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.

L. No fraccionar el diagrama con el uso excesivo de conectores.


M. Solo debe llegar una sola línea de flujo a un símbolo. Pero pueden llegar muchas líneas de flujo a otras
líneas.

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.

5.10. EJEMPLOS DE DIAGRAMAS DE FLUJO.

Diseñar un algoritmo que dando como dato la ca-


lificación de un alumno en un examen escriba
«Aprobado» si su calificación es mayor que 8 y
«Reprobado» en caso contrario.

Diagrama de flujo que encuentre la suma de los


primeros 15 números naturales.

5.11. ESTRUCTURAS ALGORÍTMICAS EN UN DIAGRAMA DE FLUJO.

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).

5.11.2. CONDICIONALES (SELECTIVAS)

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

XXI. ACTIVIDAD. “PROBLEMAS A MÍ” DESARROLLA EL PROCESO


DE SOLUCIÓN DE LOS SIGUIENTES PROBLEMAS EN DIAGRAMA DE FLUJO

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.1. DEFINICIÓN PSEUDOCÓDIGO


El pseudocódigo (o falso lenguaje) es una descripción informal de alto nivel de un algoritmo informático
de programación, compacto e informal, que utiliza las convenciones estructurales de un lenguaje de progra-
mación verdadero2 , pero que está diseñado para la lectura humana en lugar de la lectura mediante máqui-
na, y con independencia de cualquier otro lenguaje de programación. Normalmente, el pseudocódigo omite
detalles que no son esenciales para la comprensión humana del algoritmo, tales como declaraciones de va-
riables, código específico del sistema y algunas subrutinas.

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):

Pseudocódigo estilo Fortran: Pseudocódigo estilo Pascal: Pseudocódigo estilo C:


programa bizzbuzz procedimiento bizzbuzz subproceso funcion bizzbuzz
hacer i = 1 hasta 100 para i := 1 hasta 100 hacer para (i <- 1; i<=100; i++) {
establecer print_number a verdadero establecer print_number a verdadero; establecer print_number a verdadero;
si i es divisible por 3 Si i es divisible por 3 entonces Si i es divisible por 3
escribir "Bizz" escribir "Bizz"; escribir "Bizz";
establecer print_number a falso establecer print_number a falso; establecer print_number a falso;
si i es divisible por 5 Si i es divisible por 5 entonces Si i es divisible por 5
escribir "Buzz" escribir "Buzz"; escribir "Buzz";
establecer print_number a falso establecer print_number a falso; establecer print_number a falso;
si print_number, escribir i Si print_number, escribir i; Si print_number, escribir i;
escribir una nueva línea escribir una nueva lína; escribir una nueva línea;
fin del hacer fin }

6.3. CARACTERÍSTICAS Y COMPONENTES


Las principales características de este lenguaje son:
A. Un pseudocódigo o falso Lenguaje, es una serie de normas léxicas y gramaticales parecidas a la mayoría
de los lenguajes de programación, pero sin llegar a la rigidez de sintaxis.
B. Debe tener un único punto de inicio.
C. Debe ser un número finito de posibles puntos de término.
D. Contener un número finito de caminos, entre el punto de inicio y los posibles puntos de término.
E. Permite codificar un programa con mayor agilidad que en cualquier lenguaje de programación, con la
misma validez semántica, normalmente se utiliza en las fases de análisis o diseño de software.
F. No puede ser ejecutado o interpretado por un PC. El pseudocódigo describe un algoritmo utilizando una
mezcla de frases en lenguaje común, instrucciones de programación y palabras clave que definen las es-
tructuras básicas.
G. El objetivo del pseudocódigo es permitir que el programador se centre en los aspectos lógicos de la solu-
ción, evitando las reglas de sintaxis de los lenguajes de programación

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.

Todo documento en pseudocódigo debe permitir la descripción de:


A. Instrucciones primitivas.
B. Instrucciones de proceso....
C. Instrucciones de control.
D. Instrucciones compuestas.
E. Instrucciones de descripción.

Componentes del pseudocódigo

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>

Estructura a seguir en su realización:


A. Cabecera. B. Cuerpo.
1. Programa. 6. Inicio.
2. Módulo. 7. Instrucciones.
3. Tipos de datos. 8. Fin.
4. Constantes.
5. Variables.

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

6.4. VENTAJAS DEL SEUDOCÓDIGO SOBRE LOS DIAGRAMAS DE FLUJO.


Los pseudocódigos presentan los siguientes beneficios:
A. Ocupan mucho menos espacio en el desarrollo del problema.
B. Permite representar de forma fácil operaciones repetitivas complejas.
C. Es más sencilla la tarea de pasar de pseudocódigo a un lenguaje de programación formal.
D. Si se siguen las reglas de identación se puede observar claramente los niveles en la estructura del pro-
grama.
E. En los procesos de aprendizaje de los alumnos de programación, éstos están más cerca del paso siguiente
(codificación en un lenguaje determinado, que los que se inician en esto con la modalidad Diagramas de
Flujo).
F. Mejora la claridad de la solución de un problema.

6.5. FUNCIONES Y OPERACIONES


Cada autor usa su propio pseudocódigo con sus respectivas convenciones. Por ejemplo, la instrucción "reem-
place el valor de la variable por el valor de la variable " puede ser representado como:
 asigne a el valor de

Las operaciones aritméticas se representan de la forma usual en matemáticas.

6.6. ESTRUCTURAS DE CONTROL


En la redacción del pseudocódigo se utiliza tres tipos de estructuras de control: las secuenciales, las selectivas
y las iterativas.

6.6.1. ESTRUCTURAS SECUENCIALES


Las instrucciones se siguen en una secuencia fija que normalmente viene dada por el número de renglón. Es
decir que las instrucciones se ejecutan de arriba hacia abajo. Las instrucciones se ejecutan dependiendo
de la condición dada dentro del algoritmo.

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. Deben ser seguidas de una secuencia definida de pasos.


B. Sólo puede ejecutarse una operación a la vez.

6.6.2. ESTRUCTURAS SELECTIVAS O CONDICIONALES


Las instrucciones selectivas representan instrucciones que pueden o no ejecutarse, según el cumplimiento de
una condición. La condición es una expresión booleana. Instrucciones es ejecutada sólo si la condición es
verdadera. Estas pueden ser:
50
Construye Algoritmos para la solución de problemas

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.

En esta estructura si Condición1 es cierta, entonces se ejecuta sólo Instrucciones1. En general,


si Condicióni es verdadera, entonces sólo se ejecuta Instruccionesi

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.

6.6.3. ITERATIVAS O REPETITIVAS


Las instrucciones iterativas representan la ejecución de instrucciones en más de una vez.

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:

Si asumimos que los elementos de son , entonces esta sentencia equivaldría a:

Que es lo mismo que:

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.

6.8. FUNCIONES Y PROCEDIMIENTOS


Muchas personas prefieren distinguir entre funciones y procedimientos. Una función, al igual que una función
matemática, recibe uno o varios valores de entrada y regresa una salida mientras que un procedimiento recibe
una entrada y no genera ninguna salida aunque en algún caso podría devolver resultados a través de sus
parámetros de entrada si estos se han declarado por referencia (ver formas de pasar argumentos a una fun-
ción o procedimiento).

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.

Procedimiento de la burbuja (a0, a1, a2, a3, ……….a (n – 1)


Para i  2 hasta n Hacer
Para j 0 hasta n – i Hacer
Si a(j) < a(j+1) entonces
Aux  a(j)
A(j)  a(j+1)
A(j+1)  aux
Fin si
Fin para
Fin para
Fin procedimiento

6.9. ARREGLOS
Son listas de datos del mismo tipo que pueden ser accedidos a través de un índice.

A. ARRAYS UNIDIMENSIONALES: VECTORES. Un array unidimensional, lineal o vector es un conjunto finito


y ordenado de elementos homogéneos.

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.

Lectura y escritura de datos:


leer <nom_array>[indice]
escribir <nom_array>[indice]
desde i=1 hasta 12
escribir “Introduce las ventas del mes”i
leer ventas [i]
fin desde
desde i=1 hasta 12
escribir “Ventas del mes”i”=”ventas [i]
fin desde

B. ARRAYS BIDIMENSIONALES O MATRICES. En un array unidimensional o vector cada elemento se refe-


rencia por un índice, en un array bidimensional cada elemento se va a referenciar por 2 índices, y ahora
la representación lógica ya no va a ser un vector, sino una matriz.

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.

Y más en general podemos definir un array de 2 dimensiones de la siguiente manera.


<nom_array>: array [LI1..LS2,LI2..LS2] de <tipo>
<var_array>[I , J]
LI1 <= I <= LS1
LI2 <= J <= LS2
El tamaño del array será (LS1-LI1 +1)*(LS2-LI2 +1)
Ventas de cada mes de 1990 a 1995:
Ventas: array [1990..1995,1..12] de real
6*12=72

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.

M: array [1..N,1..M] de entero


Var i,j entero
Desde i=1 hasta n
Desde j=1 hasta M
M [i,j]  0
Fin desde
Fin desde
- Para poner a 0 solo los elementos de la fila I:
Desde i=1 hasta N
M [i,j]  0
Fin desde

6.10. PIPEH PSEUDO INTERPRETE

6.10.1. UTILIZACIÓN DEL ENTORNO

A. Elementos de la Ventana

56
Construye Algoritmos para la solución de problemas

B. Menú Archivo

 Nuevo: Crea un nuevo algoritmo y escribe el prototipo básico en el área de trabajo.


 Abrir: Abre un algoritmo desde un archivo en formato txt o psc (texto ASCII).
 Guardar: Guarda el algoritmo actual con el nombre actual reemplazando al archivo existente.
 Guardar Como: Guarda el algoritmo actual con un nuevo nombre.
 Salir: Cierra la aplicación.

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

 Deshacer: Deshace el último cambio realizado al algoritmo. Solo tiene un nivel.


 Cortar, Copiar y Pegar: Interactúan entre el texto del área de trabajo y el portapapeles de Win-
dows.
 Seleccionar Todo: Selecciona todo el algoritmo.
 Buscar: Localiza una cadena dentro del algoritmo. No distingue entre mayúsculas y minúsculas.
 Buscar Siguiente: Repite la última búsqueda realizada comenzando desde la ubicación del cursor.

D. Menú Ejecución

Iniciar: Ejecuta el algoritmo en una nueva ventana de consola.

Si el algoritmo contiene errores de sintaxis, no será ejecutado.


57
Construye Algoritmos para la solución de problemas

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

 Barra de Acceso Rápido : Muestra u oculta la barra.


 Información De Ejecución: Muestra u oculta la información.
 Establecer Fuente: Permite seleccionar las propiedades de la fuente con la que se mostrara el al-
goritmo en el área de trabajo.
 Identado: Modifica el funcionamiento de las teclas Enter, BackSpace y Tab para facilitar el iden-
tado del código en el margen izquierdo.

F. Menú Ayuda

 Manual de Usuario: Muestra el Manual. Este Manual.


 Manual de Referencia: Muestra la página de referencia. Dicha página contiene un resume n de la
sintaxis de las instrucciones y los operador e s de un algoritmo.
 Acerca de...: Muestra información de la aplicación. Para poder visualizar los manuales es necesa-
rio tener instalado un visor de documentos PDF.

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.

H. Problemas con el Entorno


Debido a que la comunicación entre el entorno y el intérprete propiamente dicho se realiza a través de
archivos temporales, es posible que no funcione correctamente si Windows no se encuentra en
“c:\Windows” Para soluciona r este problema, edite el archivo PseInt.ini que se encuentra en el directorio
de instalación. Si no lo encuentra, debe crearlo en la carpeta junto a los ejecutables. En dicho archivo
agregue en cualquier lugar una línea como la siguiente:
WinDir=E:\windows\

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.

6.10.2. SINTAXIS DEL SEUDOCÓDIGO

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.

B. Acerca de constantes e identificadores


 Los identificadores deben constar solo de letras y números, comenzando siempre con una letra.
 Las constantes de tipo carácter se escriben entre comas (').

59
Construye Algoritmos para la solución de problemas

 En las constantes numérica s, el punto (.) es el separador decimal.


 Las constates lógicas son Verdadero y Falso.

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;

J. Repetir Hasta Que


Repetir
<...>
Hasta Que <condición>

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

Ejecuta un bloque de instrucciones un determinad o número de veces. Al ingresa r al bloque, la variable


<I> recibe el valor <VI> y se ejecutan las instrucciones. Luego incrementa la variable <I> en <P> se
evalúa si <I> supero a <VF>. Si esto es falso se repite hasta que <I> supere a <VF>. Si se omite el paso
(Con Paso <P>), la variable <I> se incrementara en 1.

Ejemplo:
Escribir 'Números pares de 10 a 20:';
Para a<-10 Hasta 20 Con Paso 2 Hacer
Escribir a;
FinPara

6.10.3. MENSAJES DE ERROR


Lista de posibles errores del algoritmo por orden alfabético:

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.

C. Constante o Identificador no valido.


Los identificadores deben comenzar siempre con una letra y pueden continua r solo con letras o números.
No pueden ser palabras reservadas. También lo puede causar una constante incorrecta.

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

E. División por cero


Una expresión matemática no debe intentar dividir por cero.

Ejemplo:
a<-0;
...
Escribir 7/a; // 7/a equivale a 7/0 y es imposible.

F. Entonces mal colocado.


Entonces siempre debe precede r a un Si, de lo contrario está mal colocado.

G. Falta cerrar comillas.


Este error es ocasionad o por una constante de tipo carácter incorrecta. Se deben delimitar con comillas
simples (') tanto el inicio como el final de la misma.

Ejemplo:
Escribir 'Total:,Tot;

H. Falta cerrar paréntesis.


Cuando en alguna expresión se abre un paréntesis que luego no se cierra. Se deben cerrar todos los pa-
réntesis que se abren.

Ejemplo:
Escribir (3+4/(2*a);

I. Falta cerrar Si/Para/Mientras /Repetir /Según


Todas las estructuras deben tener un comienzo y un final dentro del algoritmo. Puede faltar la palabra
FinSi /FinPara /FinMientras /Ha s t a Que /FinSegun o puede que este mal ubicada.

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

M. Falta nombre de proceso.


Todos los procesos deben comenzar con la palabra Proceso y a continuación un nombre valido para el
mismo.

Ejemplo:
Proceso // aquí se coloca el nombre

N. Falta punto y coma.


Las accione s secuenciales deben finalizar siempre en punto y coma (; ).

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

Q. FinSegun/FinSi /FinPara/FinMientras /FinProceso /Hasta que mal colocado


Estas estructuras deben tener su comienzo y su final en el mismo nivel, es decir que si están anidadas de-
ben incluir se completamente una dentro de otra. En el caso del proceso, es único y debe ser el primero en
abrir se y último en cerrar s e.

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

S. Instrucción fuera de proceso.


Todas las accione s deben estar contenida s dentro del proceso. Cualquier acción posterior a la palabra
FinProceso ocasiona este error.

T. La instrucción no debe tener parámetros


Ocurre cuando una instrucción que no espera parame t ro s los recibe. FinSi, Repetir, FinPara, FinMientras,
FinProceso y FinSegun no llevan parame t ro s.

U. Logaritmo de 0 o negativo
No se puede calcular el logaritmo de un número menor o igual a cero.

V. No coinciden los tipos.


Se produce cuando se utilizan variables, constante su operador es correspondiente a tipos de datos dife-
rentes.

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.

W. No lleva punto y coma.


Las instrucciones secuenciales (Leer, Escribir, Dimensión, <-) deben finalizar con el punto y coma (;).

Ejemplos:
Para a<-1 hasta 3 hacer;
Repetir;
Si a=1;

X. Numero de parámetros o subíndices incorrectos.


Puede ser causado por acceder a un elemento de un arreglo utilizando una cantidad de índices diferente
a las dimensione s declarada s o al invocar una función matemática con más de un parame t ro.

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

AA. Raíz de negativo.


Solo se trabaja con números dentro del campo de los reales, por lo que no se puede calcular la raíz cua-
drada de un número negativo.

BB. Se cerraron paréntesis demás.


Se produce cuando en alguna expresión matemática sobran paréntesis.

Ejemplo:
Escribir 2+(2*a)-b);

CC. Se esperaba <opción>:.


Después de iniciar la estructura de selección múltiple (Según). Deben introducirse al menos una opción, se-
guida por dos puntos (: ) y luego las acciones a realizar.

Ejemplos:
Según a
Escribir b;

DD. Se esperaba asignación.


La instrucción para siempre debe contener la asignación que inicialice la variable de control.
Ejemplo:
Para a hasta 5 hacer

EE. Se esperaba Con Paso o fin de instrucción.


Cuando en una instrucción para se introduce un parámetro (u otra instrucción) no valido.

Ejemplos:
Para a<-1 hasta 3 leer a;

FF. Se esperaba entonces.


El condicional siempre debe tener una salida por verdadero.

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)

GG. Se esperaba espacio o coma.


Cuando se encuentran dos variables o constantes consecutivas sin ningún separador en medio.

Ejemplo:
Escribir C B; // falta , u operador
Escribir '21' B; // falta ,'u operador
Mientras a='Si'Hacer // Falta espacio

HH. Se esperaba Proceso <nombre>.


Todos los procesos deben comenzar con la palabra Proceso y a continuación un nombre valido para el
mismo. Todas las acciones deben estar contenidas dentro del proceso.

II. Sino mal colocado.


Sino siempre debe estar dentro de un Si, de lo contrario está mal colocado.

JJ. Subíndices fuera de rango


Se produce cuando se llama a un elemento de un arreglo ubicado en una posición fuera se las definidas
en la instrucción dimensión.

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

XXIII. ACTIVIDAD. REALICE LOS SIGUIENTES EJERCICIOS EN SEUDOCÓDIGO Y


CAPTURARLOS EN PSEINT, VERIFICAR QUE SE EJECUTEN CORRECTAMENTE

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.

 Wikimedia Commons alberga contenido multimedia sobre Diagrama de flujo.


 Wikimedia Commons alberga contenido multimedia sobre diagrama de actividades.
 Documentos de la Especificación UML 2.0
 Introducción a los Diagramas de Actividades UML 2
 Wikimedia Commons alberga contenido multimedia sobre Programación.
 Wikcionario tiene definiciones para programación.
 Wikiquote alberga frases célebres de o sobre Programación.
 Wikilibros alberga un libro o manual sobre Fundamentos de programación.

69

También podría gustarte