Documentos de Académico
Documentos de Profesional
Documentos de Cultura
LÓGICA DE LA
PROGRAMACIÓN
Msc. Ing. Solange leal de Aguilar
Unidad 1:
Algoritmo y
Programas
Guía de la Unidad Nº 1.
Introducción
La informática y las ciencias de la computación en los primeros años del siglo XXI vienen marcadas por los
avances tecnológicos de la pasada década. Los más de veinte años de vida de la computadora personal (PC) y
los más de cincuenta años de la informática/computación tradicional vienen acompañados de cambios rápidos
y evolutivos en las disciplinas clásicas.
El rápido crecimiento del mundo de las redes y, en consecuencia, la World Wide Web hacen revolucionarios a
estos cambios, exigiendo cada vez más a formación en carreras de informática, ciencias de la computación o
ingeniería de sistemas deberá prestar especial importancia a temas tales como:
Es por ello que el objetivo fundamental de este texto es inducirlos a la comprensión lógica, abstracta y
estructurada de la resolución de problemas realizando ALGORITMO, DIAGRAMA DE FLUJO, PSEUDOCODIGO
Y a través de estas herramientas transformar tus ideas en CODIGO pro medio del uso de un LENGUAJE DE
PROGRAMACION.
El programador es antes 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 sistemático. Aplicando
la metodología necesaria para proporcionar estas soluciones informáticas funcionales a través de programas,
esto se denomina metodología de la programación. El eje central de esta metodología es el concepto, ya
tratado, de algoritmo.
……………………………….¡Empecemos!
Existen muchas definiciones de Algoritmo, según Joyanes indica que 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
—como se comentó anteriormente— de Mohammed alKhoWârizmi, matemático persa que vivió durante el
siglo IX y alcanzó gran reputación por el enunciado de las reglas paso a paso para sumar, restar, multiplicar y
dividir números decimales; la traducción al latín del apellido en la palabra algorismus derivó posteriormente
en algoritmo. Euclides, el gran mate mático griego (del siglo IV a. C.) que inventó un método para encontrar el
máximo común divisor de dos números, se considera con Al-Khowârizmi el otro gran padre de la algoritmia
(ciencia que trata de los algoritmos).
Otros autores indica que Un algoritmo es una descripción no ambigua y abstracta de cómo un tipo específico
de problema queda resuelto hasta su terminación, es una receta para resolver un problema de un tipo en
particular, que proporciona una solución cualquiera a situaciones problemáticas.
El profesor Niklaus Wirth —inventor de Pascal, Modula-2 y Oberon— tituló uno de sus más famosos libros,
Algoritmos + Estructuras de datos = Programas, significándonos que sólo se puede llegar a realizar un buen
programa con el diseño de un algoritmo y una correcta estructura de datos. Esta ecuación será una de las
hipótesis fundamentales consideradas en esta obra. La resolución de un problema exige el diseño de un
algoritmo que resuelva el problema propuesto.
1. Diseño del algoritmo, que describe la secuencia ordenada de pasos —sin ambigüedades— que conducen a
la solución de un problema dado. (Análisis del problema y desarrollo del algoritmo.)
3. Ejecución y validación del programa por la computadora. Para llegar a la realización de un programa es
necesario el diseño previo de un algoritmo, de modo que sin algoritmo no puede existir un programa.
Cuando indicamos con certeza que un PROGRAMADOR, aplica el RAZONAMIENTO LOGICO para buscar
soluciones adecuadas y funcionales, seleccionando elementos que son necesarios para el diseño del algoritmo
cualitativo de acuerdo con la estructura de datos y el análisis de Entrada – proceso---salida para la
preparación del Algoritmo.
El algoritmo lo podemos representar en nuestras acciones o entorno diario ver ejemplo 1 cuando queremos
ver una película en el cine.
Ejemplo Nº 1
0 inicio;
1 leer A,B,C;
2 Sumar= A+B+C;
3Escribir (´el resultado es :´Sumar´);
4 Fin.
Ser definido: Sin ambigüedad, cada paso del algoritmo debe indicar la acción a realizar sin criterios de
interpretación.
Ser finito: Un número específico y numerable de pasos debe componer al algoritmo, el cual deberá
finalizar al completarlos. Ejemplo:
PARTES DE UN ALGORITMO.
La definición de un algoritmo debe describir tres partes: tal como lo podemos ver en el ejemplo anterior 2
Entrada: Datos iniciales que posee un algoritmo antes de ejecutarse. Puede tener cero o más
datos de entrada.
Proceso: Acciones que lleva a cabo el algoritmo.
Salida: El resultado que se obtiene de la ejecución del algoritmo.
SE DEFINE LAS ENTRADAS: Se Identifica el problema donde consistirá en seleccionar los elementos que son
necesarios para realizar una acción, es decir, se establecen los elementos que se tiene y los elementos que se
deben solicitar para resolver el problema.
EJEMPLO: PARA CEPILLARSE LOS DIENTES CUALES SON LOS ELEMENTOS DE ENTRADA
CREMA DENTAL.
CEPILLO DE DIENTE.
EJEMPLO:
1) TOMAR LA PASTA DENTAL.
2) ABRIR LA TAPA DE LA CREMA DENTAL.
3) COLOCAR LA TAPA EN EL LABAMANO.
4) TOMAR EL CEPILLO CON LA OTRA MANO.
5) …….
6) ………
SALIDA: consiste en la obtención de un resultado…. OJO… NO CUALQUIER RESULTADO---- EL QUE DEBE SER….
EJEMPLO:
DIENTES LIMPIOS.
La resolución del problema a través del Algoritmo es la forma más efectiva para
desarrollar un pensamiento estructurado y lógico.
Son aquellas lenguas que han sido generadas espontáneamente en un grupo de hablantes con propósito de
comunicarse, a diferencia de otras lenguas, como puedan ser una lengua construida, los lenguajes de
programación o los lenguajes formales usados en el estudio de la lógica formal, especialmente la lógica
matemática.
Los algoritmos escritos en este lenguaje se caracterizan por seguir un proceso de ejecución común y lógico,
describiendo textualmente paso a paso cada una de las actividades a realizar para resolver un problema
determinado.
Los inconvenientes de escribir algoritmos en este lenguaje son: la ambigüedad, la no universalidad y la
amplitud del mismo lo cual genera errores y no puede ser interpretado correctamente por el computador.
Veamos los siguientes ejemplos de algoritmo con el uso del lenguaje natural.
1 INICIO
2 Poner aceite en la sartén
3 Colocar la sartén al fuego
4 Romper el huevo haciendo caer el contenido en la sartén.
5 Tirar las cáscaras a la basura
6 Poner sal en la yema
7 Si el huevo está sólido, ir a l paso 8, sino esperar
8 Servir el huevo en el plato
9 Limpiar la sartén
10 FIN
1 INICIO
2 Defina variable Edad=0, Cuento=0
3 Ingresa por teclado Edad
4 Si edad es igual a 0
Voy al paso 7
Fin del si (4)
5 si Edad es menor a 18
Cuento= Cuento + 1
Fin del si (5)
6 voy al paso 3
7 muestra Cuento
8 Fin
Ya el lenguaje natural casi no se utiliza, pero las dos herramientas de programación más utilizadas
comúnmente para DISEÑAR UN ALGORITMO SON LOS SIGUIENTES:
Pseudocódigo
Es una herramienta de programación en la que las instrucciones se escriben en palabras similares al inglés o
español, que facilitan tanto la escritura como la lectura de programas. En esencia, el pseudocódigo se puede
definir como un lenguaje de especificaciones de algoritmos. Aunque no existen reglas para escritura del
pseudocódigo en español, se ha recogido una notación estándar que se utilizará en el libro y que ya es muy
empleada en los libros de programación en español.
Las palabras reservadas básicas se representarán en letras negritas minúsculas. Estas palabras son traducción
libre de palabras reservadas de lenguajes como C, Pascal, etc. Más adelante se indicarán los pseudocódigos
fundamentales para utilizar en esta obra.
El pseudocódigo está pensado para facilitar a las personas el entendimiento de un algoritmo, y por lo tanto
puede omitir detalles irrelevantes que son necesarios en una implementación.
Programadores diferentes suelen utilizar convenciones distintas, que pueden estar basadas en la sintaxis de
lenguajes de programación concretos. Sin embargo, el pseudocódigo, en general, es comprensible sin
necesidad de conocer o utilizar un entorno de programación específico, y es a la vez suficientemente
estructurado para que su implementación se pueda hacer directamente a partir de él.
Son descripciones gráficas de algoritmos; usan símbolos conectados con flechas para indicar la secuencia de
instrucciones y están regidos por ISO y normalizado por el Instituto norteamericano de normalización (ANSI)
Los diagramas de flujo son usados para representar algoritmos pequeños, ya que abarcan mucho espacio y su
construcción es laboriosa. Por su facilidad de lectura son usados como introducción a los algoritmos,
descripción de un lenguaje y descripción de procesos a personas ajenas a la computación.
Dados tres números, determinar si la suma de cualquier pareja de ellos es igual al tercer número. Si se cumple
esta condición, escribir “Iguales” y, en caso contrario, escribir “Distintas”.
En el caso de que los números sean: 3 9 6 la respuesta es "Iguales", ya que 3 + 6 = 9. Sin embargo, si los
números fueran: 2 3 4 el resultado sería "Distintas".
Para resolver este problema, se puede comparar la suma de cada pareja con el tercer número. Con tres
números solamente existen tres parejas distintas y el algoritmo de resolución del problema será fácil.
1. Leer los tres valores, A, B y C.
2. Si A + B = C escribir "Iguales" y parar.
3. Si A + C = B escribir "Iguales" y parar.
4. Si B + C = A escribir "Iguales" y parar.
5. Escribir "Distintas" y parar.
La traza de un algoritmo se puede definir como la ejecución manual de forma secuencial de las sentencias que
lo componen. La traza de un algoritmo (o programa) indica la secuencia de acciones (instrucciones) de su
ejecución, así como, el valor de las variables del algoritmo (o programa) después de cada acción (instrucción).
La función principal que posee realizar la traza de un algoritmo es la de comprobar que éste funciona
correctamente o para realizar la etapa de depuración en la que se intenta corregir errores, simplificar el
algoritmo al máximo e incrementar su eficacia y velocidad.
Un programa de computadora necesita siempre de una documentación que permita a los usuarios aprender a
utilizarlos y mantenerlo, es común que un algoritmo escrito por una persona, sea leído y a veces usado por
otr@s. Por ello la documentación apoya a quien interactúa con el algoritmo ayudándolo a comprender o usar
un programa y así facilitar futuras modificaciones (mantenimiento).
Son comentarios, etiquetas de texto, que facilitan la comprensión del programa Documentación La
documentación del programa es fundamental para diseñadores y usuarios.
En pseudocódigo solo se documentarán los algoritmos internamente, esto es, se efectuarán comentarios de
ciertas acciones o grupos de acciones para permitir al diseñador o al equipo del diseño releer el algoritmo con
facilidad.
la doble barra //
EJEMPLO
y a continuación el texto o la frase explicativa .Al ejecutar el algoritmo, este texto a la derecha de la debe ser
ignorado, pues no constituye a una acción algorítmica. --- OJO ---- solo es en esa línea, si quiere agregar otro
comentario en la siguiente línea debe agregar otra vez //.
Es la contenida en líneas de comentarios. Esta documentación cubre los aspectos del programa relativos a la
sintaxis de lenguaje. Esta documentación está contenida en los comentarios entre llaves, paréntesis o
asteriscos. Algunos temas a considerar son:
Documentación ajena al programa fuente, que se suele incluir en un manual que acompaña al programa. Esta
documentación debe incluir:
Listado actual del programa fuente.
Especificación del programa.
Diagrama de estructura que representa la organización jerárquica de los módulos que comprenden el
programa.
Explicaciones de fórmulas complejas.
Especificación de los datos a procesar.
Formatos de pantallas utilizados para interactuar con los usuarios.
Cualquier indicación especial que pueda servir a los programadores que deben mantener el programa.
La documentación es vital cuando se desea corregir posibles errores futuros o bien cambiar el programa. Tales
cambios se denominan mantenimiento del programa. Después de cada cambio la documentación debe ser
actualizada para facilitar cambios posteriores. Es práctica frecuente numerar las sucesivas versiones de los
programas 1.0, 1.1, 2.0, 2.1, etc. (Si los cambios introducidos son importantes, se varía el primer dígito [1.0,
2.0,...]; en caso de pequeños cambios sólo se varía el segundo dígito [2.0, 2.1…].)
Documentar un programa no es sólo un acto de bien hacer del programador por aquello de dejar la obra
rematada. Es además una necesidad que sólo se aprecia en su debida magnitud cuando hay errores que
reparar o hay que extender el programa con nuevas capacidades o adaptarlo a un nuevo escenario.
Es por ello que Hay dos reglas que no se deben olvidar nunca:
PARTE 2
LENGUAJE DE PROGRAMACIÓN.
Para que un procesador realice un proceso se le debe suministrar en primer lugar un algoritmo adecuado. El
procesador debe ser capaz de interpretar el algoritmo, lo que significa:
Así pues, los lenguajes utilizados para escribir programas de computadoras son los lenguajes de programación
y programadores son los escritores y diseñadores de programas. El proceso de traducir un algoritmo en
pseudocódigo a un lenguaje de programación se denomina codificación, y el algoritmo escrito en un lenguaje
de programación se denomina código fuente. En la realidad la computadora no entiende directamente los
lenguajes de programación sino que se requiere un programa que traduzca el código fuente a otro lenguaje
que sí entiende la máquina directamente, pero muy complejo para las personas; este lenguaje se conoce como
lenguaje máquina y el código correspondiente código máquina.
Los programas que traducen el código fuente escrito en un lenguaje de programación —tal como C++— a
código máquina se denominan traductores. El proceso de conversión de un algoritmo escrito en pseudocódigo
hasta un programa ejecutable comprensible por la máquina, se muestra en la Figura 3.
Hoy en día, la mayoría de los programadores emplean lenguajes de programación como C++, C, C#, Java, Visual
Basic, XML, HTML, Perl, PHP, JavaScript..., aunque todavía se utilizan, sobre todo profesionalmente, los clásicos
COBOL, FORTRAN, Pascal o el mítico BASIC. Estos lenguajes se denominan lenguajes de alto nivel y permiten a
los profesionales resolver problemas convirtiendo sus algoritmos en programas escritos en alguno de estos
lenguajes de programación. Los lenguajes de programación se utilizan para escribir programas.
Los programas de las computadoras modernas constan de secuencias de instrucciones que se codifican como
secuencias de dígitos numéricos que podrán entender dichas computadoras. El sistema de codificación se
conoce como lenguaje máquina que es el lenguaje nativo de una computadora. Desgraciadamente la escritura
Lenguajes Maquina
Están escritos en lenguajes directamente inteligibles por la maquina (computadora), ya que sus instrucciones
son cadenas binarias (0 y 1).
Lenguajes compilados
Naturalmente, un programa que se escribe en un lenguaje de alto nivel también tiene que traducirse a un
código que pueda utilizar la máquina.
Lenguajes interpretados
Se puede también utilizar una alternativa diferente de los compiladores para traducir lenguajes de alto nivel.
En vez de traducir el programa fuente y grabar en forma permanente el código objeto que se produce durante
la compilación para utilizarlo en una ejecución futura, el programador sólo carga el programa fuente en la
computadora junto con los datos que se van a procesar.
Lenguajes intermediarios
Algunos lenguajes pertenecen a ambas categorías (LISP, Java, Python...) dado que el programa escrito en estos
lenguajes puede, en ciertos casos, sufrir una fase de compilación intermediaria, en un archivo escrito en un
lenguaje ininteligible (por lo tanto, diferente al archivo fuente) y no ejecutable (requeriría un intérprete). Los
applets Java, pequeños programas que a menudo se cargan en páginas web, son archivos compilados que sólo
pueden ejecutarse dentro de un navegador web (son archivos con la extensión .class).
Un paradigma de programación representa un enfoque particular o filosofía para la construcción del software.
No es mejor uno que otro, sino que cada uno tiene ventajas y desventajas. Dependiendo de la situación un
paradigma resulta más apropiado que otro.
Atendiendo al paradigma de programación, se pueden clasificar los lenguajes en: