Вы находитесь на странице: 1из 42

Lectura 1: Algoritmos introduccin

Unidad 1: Algoritmos introduccin

1.1 Sistemas de procesamiento de la informacin

Un lenguaje de programacin es un idioma artificial diseado para ser usado en las


computadoras. Pueden usarse para crear programas que controlen el comportamiento fsico y
lgico de una mquina, para expresar algoritmos con precisin, o como modo de comunicacin
humana. Est formado de un conjunto de smbolos y reglas sintcticas y semnticas que definen
su estructura y el significado de sus elementos y expresiones.

Existe un error comn que trata por sinnimos los trminos: lenguaje de programacin y lenguaje
informtico. Los lenguajes informticos engloban a los lenguajes de programacin y a otros ms,
como por ejemplo el HTML (lenguaje para pginas web que no es propiamente un lenguaje de
programacin sino un conjunto de instrucciones que permiten disear el contenido y el texto de los
documentos).

Permite especificar de manera precisa sobre qu datos debe operar una computadora, cmo
deben ser almacenados o transmitidos y qu acciones debe tomar bajo una variada gama de
circunstancias. Todo esto, a travs de un lenguaje que intenta estar relativamente prximo al
lenguaje humano o natural. Una caracterstica relevante de los lenguajes de programacin es
precisamente que ms de un programador puedan tener un conjunto comn de instrucciones que
puedan ser comprendidas entre ellos para realizar la construccin del programa de forma
colaborativa.

Los procesadores usados en las computadoras entienden nicamente instrucciones en lenguaje


mquina (combinacin de ceros y unos). Todo programa escrito en otro lenguaje puede ser
ejecutado de dos maneras:

Mediante un programa que va adaptando las instrucciones conforme son encontradas. A


este proceso se lo llama interpretar y a los programas que lo hacen se los conoce como
intrpretes. Ejemplos de esto son bash, clsico interprete en estaciones unix que fue
escrito para el proyecto GNU o Python.
Traduciendo el cdigo escrito del lenguaje (cdigo fuente), a su equivalente en lenguaje
mquina. A este proceso se le llama compilar y al programa traductor se le denomina
compilador. Ejemplos de esto son: El lenguaje C, que combina caractersticas de medio y
bajo nivel y el compilador gcc usado en el proyecto GNU.

La necesidad de recordar secuencias de programacin para las acciones usuales llev a


denominarlas con nombres fciles de memorizar y asociar: ADD (sumar), SUB (restar), MUL
Materia: Programacin Lgica

Profesor: Ing. Silvia Carrera -1-


(multiplicar), CALL (ejecutar subrutina), etc. A esta secuencia de posiciones se le denomin
"instrucciones", y a este conjunto de instrucciones se le llam lenguaje ensamblador.

Posteriormente aparecieron diferentes lenguajes de programacin, los cuales reciben su


denominacin porque tienen una estructura sintctica similar a los lenguajes escritos por los
humanos.

Los lenguajes de programacin se pueden clasificar atendiendo a varios criterios:

Segn el nivel de abstraccin


Segn el paradigma de programacin que poseen cada uno de ellos

Segn su nivel de abstraccin:

Lenguajes de Mquina

Estn escritos en lenguajes directamente legibles por la mquina (computadora), ya que sus
instrucciones son cadenas binarias (0 y 1). Da la posibilidad de cargar (transferir un programa a la
memoria) sin necesidad de traduccin posterior lo que supone una velocidad de ejecucin
superior, solo que con poca fiabilidad y dificultad de verificar y poner a punto los programas.

Lenguajes de bajo nivel

Los lenguajes de bajo nivel son lenguajes de programacin que se acercan al funcionamiento de
una computadora. El lenguaje de ms bajo nivel por excelencia es el cdigo mquina. A ste le
sigue el lenguaje ensamblador, ya que al programar en ensamblador se trabajan con los registros
de memoria de la computadora de forma directa. Ejemplo en lenguaje ensamblador intel x86.

Lenguajes de medio nivel

Hay lenguajes de programacin que son considerados por algunos expertos como lenguajes de
medio nivel (lenguaje C) al tener ciertas caractersticas que los acercan a los lenguajes de bajo
nivel pero teniendo, al mismo tiempo, ciertas cualidades que lo hacen un lenguaje ms cercano al
humano y, por tanto, de alto nivel.

Lenguajes de alto nivel

Los lenguajes de alto nivel son normalmente fciles de aprender porque estn formados por
elementos de lenguajes naturales, como el ingls. En BASIC, uno de los lenguajes de alto nivel
ms conocidos, los comandos como "IF CONTADOR = 10 THEN STOP" pueden utilizarse para pedir
a la computadora que pare si el CONTADOR es igual a 10. Esta forma de trabajar puede dar la
sensacin de que las computadoras parecen comprender un lenguaje natural; en realidad lo
hacen de una forma rgida y sistemtica, sin que haya cabida, por ejemplo, para ambigedades o
dobles sentidos.

Segn el paradigma de programacin:

Materia: Programacin Lgica

Profesor: Ing. Silvia Carrera -2-


Un paradigma de programacin representa un enfoque particular o filosofa para la construccin
del software. No es mejor uno que otro, sino que cada uno tiene ventajas y desventajas.
Dependiendo de la situacin un paradigma resulta ms apropiado que otro.

Atendiendo al paradigma de programacin, se pueden clasificar los lenguajes en:

El paradigma imperativo es considerado el ms comn y est representado, por ejemplo,


por el C o por BASIC.
El paradigma funcional est representado por la familia de lenguajes LIPS (en particular
Schema), ML o Haskell.
El paradigma lgico, un ejemplo es PROLOG.
El paradigma orientado a objetos. Un lenguaje completamente orientado a objetos es
Smalltalk.

Si bien puede seleccionarse la forma pura de estos paradigmas a la hora de programar, en la


prctica es habitual que se mezclen, dando lugar a la programacin multiparadigma.

Actualmente el paradigma de programacin ms usado debido a mltiples ventajas respecto a sus


anteriores, es la programacin orientada a objetos.

Lenguajes imperativos

Son los lenguajes que dan instrucciones a la computadora, es decir, rdenes.

Lenguajes Funcionales

Paradigma Funcional: este paradigma concibe a la computacin como la evaluacin de funciones


matemticas y evita declarar y cambiar datos. En otras palabras, hace hincapi en la aplicacin de
las funciones y composicin entre ellas, ms que en los cambios de estados y la ejecucin
secuencial de comandos (como lo hace el paradigma procedimental). Permite resolver ciertos
problemas de forma elegante y los lenguajes puramente funcionales evitan los efectos
secundarios comunes en otro tipo de programaciones.

Lenguajes Lgicos

La computacin lgica direcciona mtodos de procesamiento basados en el razonamiento formal.


Los objetos de tales razonamientos son "hechos" o reglas "if then". Para computar lgicamente se
utiliza un conjunto de tales estamentos para calcular la verdad o falsedad de ese conjunto de
estamentos. Un estamento es un hecho si sus tuplas verifican una serie de operaciones.

Un hecho es una expresin en la que algn objeto o conjunto de objetos satisface una relacin
especfica. Una tupla es una lista inmutable. Una tupla no puede modificarse de ningn modo
despus de su creacin.

Una regla if then es un estamento que informa acerca de conjuntos de tuplas o estamentos
relacionados que pueden predecir si otras tuplas verificaran otras relaciones.

Un estamento que es probado verdadero como resultado de un proceso se dice que es una
inferencia del conjunto original. Se trata por tanto de una descripcin de cmo obtener la
veracidad de un estamento dado que unas reglas son verdaderas.
Materia: Programacin Lgica

Profesor: Ing. Silvia Carrera -3-


La computacin lgica est por tanto relacionada con la automatizacin de algn conjunto de
mtodos de inferencia.

Lenguajes orientados a objetos

La Programacin Orientada a Objetos (POO u OOP segn sus siglas en ingls) es un paradigma
de programacin que usa objetos y sus interacciones para disear aplicaciones y programas de
computadora. Est basado en varias tcnicas, incluyendo herencia, modularidad, polimorfismo y
encapsulamiento. Su uso se populariz a principios de la dcada de 1990. Actualmente son
muchos los lenguajes de programacin que soportan la orientacin a objetos.

SISTEMA DE INFORMACION

Un sistema de informacin es un conjunto de elementos que interactan entre s con el fin de


apoyar las actividades de un negocio.

Un sistema de informacin realiza cuatro actividades bsicas: entrada, almacenamiento,


procesamiento y salida de informacin.

Entrada de Informacin: Es el proceso mediante el cual el Sistema de Informacin toma los datos
que requiere para procesar la informacin. Las entradas pueden ser manuales o automticas. Las
manuales son aquellas que se proporcionan en forma directa por el usuario, mientras que las
automticas son datos o informacin que provienen o son tomados de otros sistemas o mdulos.
Esto ltimo se denomina interfaces automticas.

Las unidades tpicas de entrada de datos a las computadoras son las terminales, las cintas
magnticas, las unidades de diskette, los cdigos de barras, los escners, la voz, los monitores
sensibles al tacto, el teclado y el mouse, entre otras.

Almacenamiento de informacin: El almacenamiento es una de las actividades o capacidades ms


importantes que tiene una computadora, ya que a travs de esta propiedad el sistema puede
recordar la informacin guardada en la seccin o proceso anterior. Esta informacin suele ser
almacenada en estructuras de informacin denominadas archivos. La unidad tpica de
almacenamiento son los discos magnticos o discos duros, los discos flexibles o diskettes y los
discos compactos (CD-ROM).

Procesamiento de Informacin: Es la capacidad del Sistema de Informacin para efectuar


clculos de acuerdo con una secuencia de operaciones preestablecida.

Estos clculos pueden efectuarse con datos introducidos recientemente en el sistema o bien con
datos que estn almacenados. Esta caracterstica de los sistemas permite la transformacin de
datos fuente en informacin que puede ser utilizada para la toma de decisiones, lo que hace
posible, entre otras cosas, que un tomador de decisiones genere una proyeccin financiera a partir
de los datos que contiene un estado de resultado o un balance general de un ao base.

Salida de Informacin: La salida es la capacidad de un Sistema de Informacin para sacar la


informacin procesada o bien datos de entrada al exterior. Las unidades tpicas de salida son las
Materia: Programacin Lgica

Profesor: Ing. Silvia Carrera -4-


impresoras, terminales, cintas magnticas, la voz, los graficadores y los plotters, entre otros. Es
importante aclarar que la salida de un Sistema de Informacin puede constituir la entrada a otro
Sistema de Informacin o mdulo. En este caso, tambin existe una interface automtica de
salida. Por ejemplo, el Sistema de Control de Clientes tiene una interface automtica de salida con
el Sistema de Contabilidad, ya que genera las plizas contables de los movimientos procesales de
los clientes.

A continuacin se muestran las diferentes actividades que puede realizar un Sistema de


Informacin de Control de Clientes:

Actividades que realiza un Sistema de Informacin:

Entradas:

Datos generales del cliente: nombre, direccin, tipo de cliente, etc.

Polticas de crdito: lmite de crdito, plazo de pago, etc.

Facturas (interface automtico).

Pagos, depuraciones, etc.

Proceso:

Clculo de antigedad de saldos.

Clculo de intereses moratorios.

Clculo del saldo de un cliente.

Almacenamiento:

Movimientos del mes (pagos, depuraciones).

Catlogo de clientes.

Facturas.

Salidas:

Reporte de pagos.

Estados de cuenta.

Plizas contables (interface automtica)

Consultas de saldos en pantalla de una terminal.

Las diferentes actividades que realiza un Sistema de Informacin se pueden observar en el diseo
conceptual ilustrado en la figura 1.

Materia: Programacin Lgica

Profesor: Ing. Silvia Carrera -5-


Informes
Entrada de
datos reportes

Proceso

Interface Interface
automtica de automtica de
entrada Almacenamiento salida

Figura 1

Tipos y Usos de los Sistemas de Informacin

Durante los prximos aos, los Sistemas de Informacin cumplirn tres objetivos bsicos dentro
de las organizaciones:

Automatizacin de procesos operativos.

Proporcionar informacin que sirva de apoyo al proceso de toma de decisiones.

Lograr ventajas competitivas a travs de su implantacin y uso.

Los Sistemas de Informacin que logran la automatizacin de procesos operativos dentro de una
organizacin, son llamados frecuentemente Sistemas Transaccionales, ya que su funcin
primordial consiste en procesar transacciones tales como pagos, cobros, plizas, entradas,
salidas, etc. Por otra parte, los Sistemas de Informacin que apoyan el proceso de toma de
decisiones son los Sistemas de Soporte a la Toma de Decisiones, Sistemas para la Toma de
Decisin de Grupo, Sistemas Expertos de Soporte a la Toma de Decisiones y Sistema de
Informacin para Ejecutivos.

Materia: Programacin Lgica

Profesor: Ing. Silvia Carrera -6-


El tercer tipo de sistema, de acuerdo con el uso u objetivo que cumplen, es el de los Sistemas
Estratgicos, los cuales se desarrollan en las organizaciones con el fin de lograr ventajas
competitivas, a travs del uso de la tecnologa de informacin.

A continuacin se mencionan las principales caractersticas de estos tipos de Sistemas de


Informacin.

Sistemas Transaccionales. Sus principales caractersticas son:

A travs de stos suelen lograrse ahorros significativos de mano de obra, debido a que
automatizan tareas operativas de la organizacin.

Con frecuencia son el primer tipo de Sistemas de Informacin que se implanta en las
organizaciones. Se empieza apoyando las tareas a nivel operativo de la organizacin.

Son intensivos en entrada y salid de informacin; sus clculos y procesos suelen ser simples y
poco sofisticados.

Tienen la propiedad de ser recolectores de informacin, es decir, a travs de estos sistemas se


cargan las grandes bases de informacin para su explotacin posterior.

Son fciles de justificar ante la direccin general, ya que sus beneficios son visibles y palpables.

Sistemas de Apoyo de las Decisiones. Las principales caractersticas de estos son:

Suelen introducirse despus de haber implantado los Sistemas Transaccionales ms relevantes


de la empresa, ya que estos ltimos constituyen su plataforma de informacin.

La informacin que generan sirve de apoyo a los mandos intermedios y a la alta administracin en
el proceso de toma de decisiones.

Suelen ser intensivos en clculos y escasos en entradas y salidas de informacin. As, por
ejemplo, un modelo de planeacin financiera requiere poca informacin de entrada, genera poca
informacin como resultado, pero puede realizar muchos clculos durante su proceso.

No suelen ahorrar mano de obra. Debido a ello, la justificacin econmica para el desarrollo de
estos sistemas es difcil, ya que no se conocen los ingresos del proyecto de inversin.

Suelen ser Sistemas de Informacin interactivos y amigables, con altos estndares de diseo
grfico y visual, ya que estn dirigidos al usuario final.

Apoyan la toma de decisiones que, son repetitivos y de decisiones no estructuradas que no suelen
repetirse. Por ejemplo, un Sistema de Compra de Materiales que indique cundo debe hacerse un
pedido al proveedor o un Sistema de Simulacin de Negocios que apoye la decisin de introducir
un nuevo producto al mercado.

Estos sistemas pueden ser desarrollados directamente por el usuario final sin la participacin
operativa de los analistas y programadores del rea de informtica.

Materia: Programacin Lgica

Profesor: Ing. Silvia Carrera -7-


Este tipo de sistemas puede incluir la programacin de la produccin, compra de materiales, flujo
de fondos, proyecciones financieras, modelos de simulacin de negocios, modelos de inventarios,
etc.

Sistemas Estratgicos. Sus principales caractersticas son:

Su funcin ms importante no es la de apoyar la automatizacin de procesos operativos ni


proporcionar informacin para apoyar la toma de decisiones.

Suelen desarrollarse dentro de la organizacin, por lo tanto no pueden adaptarse fcilmente a


paquetes disponibles en el mercado.

Tpicamente su forma de desarrollo es a base de incrementos y a travs de su evolucin dentro de


la organizacin. Se inicia con un proceso o funcin en particular y a partir de ah se van agregando
nuevas funcionalidades o procesos.

Su funcin es lograr ventajas que los competidores no posean, tales como ventajas en costos y
servicios diferenciados con clientes y proveedores. En este contexto, los Sistema Estratgicos son
creadores de barreras de entrada al negocio. Por ejemplo, el uso de cajeros automticos en los
bancos en un Sistema Estratgico, ya que brinda ventaja sobre un banco que no posee tal
servicio. Si un banco nuevo decide abrir sus puertas al pblico, tendr que dar este servicio para
tener un nivel similar al de sus competidores.

Apoyan el proceso de innovacin de productos y proceso dentro de la empresa debido a que


buscan ventajas respecto a los competidores y una forma de hacerlo en innovando o creando
productos y procesos.

Un ejemplo de estos Sistemas de Informacin dentro de la empresa puede ser un sistema MRP
(Manufacturing Resoure Planning) enfocado a reducir sustancialmente el desperdicio en el
proceso productivo, o bien, un Centro de Informacin que proporcione todo tipo de informacin;
como situacin de crditos, embarques, tiempos de entrega, etc. En este contexto los ejemplos
anteriores constituyen un Sistema de Informacin Estratgico si y slo s, apoyan o dan forma a la
estructura competitiva de la empresa.

Por ltimo, es importante aclarar que algunos autores consideran un cuarto tipo de sistemas de
informacin denominado Sistemas Personales de Informacin, el cual est enfocado a
incrementar la productividad de sus usuarios.

Evolucin de los Sistemas de Informacin

De la seccin anterior se desprende el concepto de evolucin que tienen los Sistemas de


Informacin en las organizaciones. Con frecuencia se implantan en forma inicial los Sistemas
Transaccionales y, posteriormente, se introducen los Sistemas de Apoyo a las Decisiones. Por
ltimo, se desarrollan los Sistemas Estratgicos que dan forma a la estructura competitiva de la
empresa.

En la dcada de los setenta, se estableci que la funcin de la Informtica en las organizaciones


evoluciona a travs de ciertas etapas de crecimiento, las cuales se explican a continuacin:

Materia: Programacin Lgica

Profesor: Ing. Silvia Carrera -8-


Etapa inicial: Comienza con la adquisicin de la primera computadora y normalmente se justifica
por el ahorro de mano de obra y el exceso de papeles.

Las aplicaciones tpicas que se implantan son los Sistemas Transaccionales tales como nminas
o contabilidad.

El pequeo Departamento de Sistemas depende en la mayora de los casos del rea de


contabilidad.

El tipo de administracin empleada es escaso y la funcin de los sistemas suele ser manejada por
un administrador que no posee una preparacin formal en el rea de computacin.

El personal que labora en este pequeo departamento consta a lo sumo de un operador y/o un
programador. Este ltimo podr estar bajo el rgimen de honorarios, o bien, puede recibirse el
soporte de algn fabricante local de programas de aplicacin.

En esta etapa es importante estar consciente de la resistencia al cambia del personal y usuario
(ciberfobia) que estn involucrados en los primeros sistemas que se desarrollan, ya que estos
sistemas son importantes en el ahorro de mano de obra.

Esta etapa termina con la implantacin exitosa del primer Sistema de Informacin. Cabe recalcar
que algunas organizaciones pueden vivir varias etapas de inicio en las que la resistencia al
cambio por parte de los primeros usuarios involucrados aborta el intento de introducir la
computadora a la empresa.

Etapa de contagio o expansin. Los aspectos sobresalientes que permiten diagnosticar rpido que
una empresa se encuentra en esta etapa son:

Se inicia con la implantacin exitosa del primer Sistema de Informacin en la organizacin. Como
consecuencia de lo anterior, el primer ejecutivo usuario se transforma en el paradigma o persona
que se habr que imitar.

Las aplicaciones que con frecuencia se implantan en esta etapa son el resto de los Sistemas
Transaccionales no desarrollados en la etapa de inicio, tales como facturacin, inventarios, control
de pedidos de clientes y proveedores, cheques, etc.

El pequeo departamento es promovido a una categora superior, donde depende de la Gerencia


Administrativa o Contralora.

El tipo de administracin empleada est orientada hacia la venta de aplicaciones a todos los
usuarios de la organizacin; en este punto suele contratarse a un especialista de la funcin con
preparacin acadmica en el rea de sistemas.

Se inicia la contratacin de personal especializado y nacen puestos tales como analista de


sistemas, analista-programador, programador de sistemas, jefe de desarrollo, jefe de soporte
tcnico, etc.

Las aplicaciones desarrolladas carecen de interfaces automticas entre ellas, de tal forma que las
salidas que produce un sistema se tienen que alimentar en forma manual a otro sistema, con la
consecuente irritacin de los usuarios.

Los gastos por concepto de sistemas empiezan a crecer en forma importante, lo que marca la
pauta para iniciar la racionalizacin en el uso de los recursos computacionales dentro de la
empresa. Este problema y el inicio de su solucin marcan el paso a la siguiente etapa.
Materia: Programacin Lgica

Profesor: Ing. Silvia Carrera -9-


Etapa de control o formalizacin. Para identificar a una empresa que transita por esta etapa es
necesario considerar los siguientes elementos:

Esta etapa de evolucin de la Informtica dentro de las empresas se inicia con la necesidad de
controlar el uso de los recursos computacionales a travs de las tcnicas utilizadas para realizar
presupuestos a base cero (partiendo de que no se tienen nada) y la implantacin de sistemas de
cargos a usuarios (por el servicio que se presta).

Las aplicaciones estn orientadas a facilitar el control de las operaciones del negocio para
hacerlas ms eficaces, tales como sistemas para control de flujo de fondos, control de rdenes de
compra a proveedores, control de inventarios, control y manejo de proyectos, etc.

El departamento de sistemas de la empresa suele ubicarse en una posicin gerencial,


dependiendo del organigrama de la Direccin de Administracin o Finanzas.

El tipo de administracin empleado dentro del rea de Informtica se orienta al control y a la


justificacin econmica de las aplicaciones a desarrollar. Nace la necesidad de establecer criterios
para las prioridades en el desarrollo de nuevas aplicaciones. La cartera de aplicaciones
pendientes por desarrollar empieza a crecer.

En esta etapa se inician el desarrollo y la implantacin de estndares de trabajo dentro del


departamento, tales como: estndares de documentacin control de proyectos, desarrollo y diseo
de sistemas de informacin, auditora de sistemas y programacin.

Se integra a la organizacin del departamento de sistemas, personal con habilidad administrativa


y preparacin tcnica.

Se inicia el desarrollo de interfaces automticas entre los diferentes sistemas.

Etapa de integracin. Las caractersticas de esta etapa son las siguientes:

La integracin de los datos y de los sistemas surge como un resultado directo de la centralizacin
del departamento de sistemas bajo una sola estructura administrativa.

Las nuevas tecnologas relacionadas con bases de datos, sistemas administradores de bases de
datos y lenguajes de cuarta generacin, hicieron posible la integracin.

En forma paralela a los cambios tecnolgicos, cambi el rol del usuario y del departamento de
Sistemas de Informacin. El departamento de sistemas evolucion hacia una estructura
descentralizada, permitiendo al usuario utilizar herramientas para el desarrollo de sistemas.

Los usuarios y el departamento de sistema iniciaron el desarrollo de nuevos sistemas,


reemplazando los sistemas antiguos, en beneficio de la organizacin.

Etapa de administracin de datos. Entre las caractersticas que destacan en esta etapa estn las
siguientes:

El departamento de Sistemas de Informacin reconoce que la informacin es un recurso muy


valioso que debe estar accesible para todos los usuarios.

Para poder cumplir con lo anterior resulta necesario administrar los datos en forma apropiada, es
decir, almacenarlos y mantenerlos en forma adecuada para que los usuarios puedan utilizar y
compartir este recurso.

Materia: Programacin Lgica

Profesor: Ing. Silvia Carrera - 10 -


El usuario de la informacin adquiere la responsabilidad de la integridad de la misma y debe
manejar niveles de acceso diferentes.

Etapa de madurez. Entre los aspectos sobresalientes que indican que una empresa se encuentra
en esta etapa, se incluyen los siguientes:

Al llegar a esta etapa, la Informtica dentro de la organizacin se encuentra definida como una
funcin bsica y se ubica en los primeros niveles del organigrama (direccin).

Los sistemas que se desarrollan son Sistemas de Manufactura Integrados por Computadora,
Sistemas Basados en el Conocimiento y Sistemas Expertos, Sistemas de Soporte a las
Decisiones, Sistemas Estratgicos y, en general, aplicaciones que proporcionan informacin para
las decisiones de alta administracin y aplicaciones de carcter estratgico.

En esta etapa se tienen las aplicaciones desarrolladas en la tecnologa de base de datos y se


logra la integracin de redes de comunicaciones con terminales en lugares remotos, a travs del
uso de recursos computacionales.

BIBLIOGRAFIA OBLIGATORIA:

Fundamentos de programacin. Algoritmos, Estructuras de datos y Objetos, Luis Joyanes


Aguilar. Mc Graw Hill. Tercera edicin. Captulo 1 (pginas 3 a 37)

1.2 Algoritmo. Concepto. Caractersticas

En matemticas, ciencias de la computacin y disciplinas relacionadas, un algoritmo (del latn,


dixit algorithmus y ste a su vez del matemtico persa Al Juarism) es una lista bien definida,
ordenada y finita de operaciones que permite hallar la solucin a un problema. Dado un estado
inicial y una entrada, a travs de pasos sucesivos y bien definidos se llega a un estado final,
obteniendo una solucin. Los algoritmos son objeto de estudio de la algoritmia.

En la vida cotidiana se emplean algoritmos en multitud de ocasiones para resolver diversos


problemas. Algunos ejemplos se encuentran en los instructivos (manuales de usuario), los cuales
muestran algoritmos para usar el aparato en cuestin o inclusive en las instrucciones que recibe
un trabajador por parte de su empleador. Tambin existen ejemplos de ndole matemtica, como
el algoritmo de la divisin para calcular el cociente de dos nmeros, el algoritmo de Euclides para
calcular el mximo comn divisor de dos enteros positivos, o el mtodo de Gauss para resolver un
Sistema lineal de ecuaciones.

Un algoritmo es un mtodo para resolver un problema. La resolucin de un problema exige el


diseo de un algoritmo que resuelva el problema propuesto. En la figura 2 se muestra un esquema
en bloques de tres etapas fundamentales en la resolucin de un problema.

Materia: Programacin Lgica

Profesor: Ing. Silvia Carrera - 11 -


Diseo del Programa de
Problema
algoritmo computadora

Figura 2

CARACTERISTICAS PRINCIPALES DE LOS ALGORITMOS

En general no existe ningn consenso definitivo en cuanto a la definicin formal de algoritmo.

Muchos autores los sealan como listas de instrucciones para resolver un problema abstracto, es
decir, que en un nmero finito de pasos convierten los datos de un problema (entrada) en una
solucin (salida).

Sin embargo cabe notar que algunos algoritmos no necesariamente tienen que terminar o resolver
un problema en particular. Por ejemplo, una versin modificada de la criba de Eratstenes que
nunca termine de calcular nmeros primos, no deja de ser un algoritmo.

A lo largo de la historia varios autores han tratado de definir formalmente a los algoritmos
utilizando modelos matemticos como mquinas de Turing entre otros. Sin embargo estos
modelos estn sujetos a un tipo particular de datos como son nmeros, smbolos o grficas
mientras que, en general, los algoritmos funcionan sobre una vasta cantidad de estructuras de
datos. En general, la parte comn en todas las definiciones se puede resumir en las siguientes
tres propiedades siempre y cuando no consideremos algoritmos paralelos.

Tiempo secuencial. Un algoritmo funciona en tiempo discreto es decir: paso a paso,


definiendo as una secuencia de estados "computacionales" por cada entrada vlida (la
entrada son los datos que se le suministran al algoritmo antes de comenzar).
Estado abstracto. Cada estado computacional puede ser descrito formalmente utilizando
una estructura de primer orden y cada algoritmo es independiente de su implementacin
(los algoritmos son objetos abstractos) de manera que en un algoritmo las estructuras de
primer orden son invariantes bajo isomorfismo.

Exploracin acotada. La transicin de un estado al siguiente queda completamente


determinada por una descripcin fija y finita; es decir, entre cada estado y el siguiente
solamente se puede tomar en cuenta una cantidad fija y limitada de trminos del estado
actual.

En resumen, un algoritmo es cualquier cosa que funcione paso a paso, donde cada paso se
pueda describir sin ambigedad y sin hacer referencia a una computadora en particular, y adems
tiene un lmite fijo en cuanto a la cantidad de datos que se pueden leer/escribir en un solo paso.

Esta amplia definicin abarca tanto a algoritmos prcticos como aquellos que solo funcionan en
teora, por ejemplo el mtodo de Newton y la eliminacin de Gauss-Jordan funcionan, al menos en
principio, con nmeros de precisin infinita; sin embargo no es posible programar la precisin
infinita en una computadora, y no por ello dejan de ser algoritmos.

Materia: Programacin Lgica

Profesor: Ing. Silvia Carrera - 12 -


En particular es posible considerar una cuarta propiedad que puede ser usada para validar la tesis
de Church-Turing de que toda funcin calculable se puede programar en una mquina de Turing
(o equivalentemente, en un lenguaje de programacin suficientemente general):

Aritmetizabilidad. Solamente operaciones innegablemente calculables estn disponibles


en el paso inicial.

Los algoritmos pueden ser expresados de muchas maneras, incluyendo en el lenguaje natural,
pseudocdigo, diagrama de flujo y lenguajes de programacin entre otros. Las descripciones en
lenguaje natural tienden a ser ambiguas y extensas. El usar pseudocdigo y diagramas de flujo
evita muchas ambigedades del lenguaje natural. Dichas expresiones son formas ms
estructuradas para representar algoritmos; no obstante, se mantienen independientes de un
lenguaje de programacin especfico.

La descripcin de un algoritmo usualmente se hace en tres niveles:

Descripcin de alto nivel. Se establece el problema, se selecciona un modelo matemtico y se


explica el algoritmo de manera verbal, posiblemente con ilustraciones y omitiendo detalles.

Descripcin formal. Se usa pseudocdigo para describir la secuencia de pasos que encuentran
la solucin.

Implementacin. Se muestra el algoritmo expresado en un lenguaje de programacin especfico


o algn objeto capaz de llevar a cabo instrucciones.

Tambin es posible incluir un teorema que demuestre que el algoritmo es correcto, un anlisis de
complejidad o ambos.

DIAGRAMA DE FLUJO:

Un diagrama de flujo es una forma de representar grficamente los detalles algortmicos de un


proceso multifactorial. Se utiliza principalmente en programacin, economa y procesos
industriales. Estos diagramas utilizan una serie de smbolos con significados especiales y son la
representacin grfica de los pasos de un proceso. En computacin, son modelos tecnolgicos
utilizados para comprender los rudimentos de la programacin lineal.

Los diagramas de flujo son descripciones grficas de algoritmos; usan smbolos conectados con
flechas para indicar la secuencia de instrucciones y estn regidos por ISO.

Los diagramas de flujo son usados para representar algoritmos pequeos, ya que abarcan mucho
espacio y su construccin es laboriosa. Por su facilidad de lectura son usados como introduccin a
los algoritmos, descripcin de un lenguaje y descripcin de procesos a personas ajenas a la
computacin.

Materia: Programacin Lgica

Profesor: Ing. Silvia Carrera - 13 -


Los smbolos que se utilizan para diseo se someten a una normalizacin, es decir, se hicieron
smbolos casi universales, ya que, en un principio cada usuario podra tener sus propios smbolos
para representar sus procesos en forma de Diagrama de flujo. Esto trajo como consecuencia que
slo aquel que conoca sus smbolos, los poda interpretar. La simbologa utilizada para la
elaboracin de diagramas de flujo es variable y debe ajustarse a las normas preestablecidas
universalmente para dichos smbolos o datos.

En los diagramas de flujo se presuponen los siguientes aspectos:

Existe siempre un camino que permite llegar a una solucin (finalizacin del algoritmo).

Existe un nico inicio del proceso.

Existe un nico punto de fin para el proceso de flujo (salvo del rombo que indica una
comparacin con dos caminos posibles).

Desarrollo del diagrama de flujo

Las siguientes son acciones previas a la realizacin del diagrama de flujo:

Identificar las ideas principales a ser incluidas en el diagrama de flujo. Deben estar
presentes el dueo o responsable del proceso, los dueos o responsables del proceso
anterior y posterior y de otros procesos interrelacionados, otras partes interesadas.

Definir qu se espera obtener del diagrama de flujo.

Identificar quin lo emplear y cmo.

Establecer el nivel de detalle requerido.

Determinar los lmites del proceso a describir.

Los pasos a seguir para construir el diagrama de flujo son:

1. 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 siguiente.

2. Identificar y listar las principales actividades/subprocesos que estn incluidos en el proceso


a describir y su orden cronolgico.

3. Si el nivel de detalle definido incluye actividades menores, listarlas tambin.

4. Identificar y listar los puntos de decisin.

Materia: Programacin Lgica

Profesor: Ing. Silvia Carrera - 14 -


5. Construir el diagrama respetando la secuencia cronolgica y asignando los
correspondientes smbolos.

6. Asignar un ttulo al diagrama y verificar que est completo y describa con exactitud el
proceso elegido.

A su vez, es importante que al construir diagramas de flujo, se observen las siguientes


recomendaciones:

Evitar sumideros infinitos, burbujas que tienen entradas pero no salidas.

Evitar las burbujas de generacin espontnea, que tienen salidas sin tener entradas,
porque son sumamente sospechosas y generalmente incorrectas.

VENTAJAS DEL USO DE DIAGRAMA DE FLUJO

Las ventajas del uso de los diagramas de flujos son numerosas, entre ellas podemos citar:

Favorecen la comprensin del proceso a travs de mostrarlo como un dibujo. El cerebro


humano reconoce fcilmente los dibujos. Un buen diagrama de flujo reemplaza varias
pginas de texto.

Permiten identificar los problemas y las oportunidades de mejora del proceso. Se


identifican los pasos redundantes, los flujos de los re-procesos, los conflictos de autoridad,
las responsabilidades, los cuellos de botella, y los puntos de decisin.

Muestran las interfaces cliente-proveedor y las transacciones que en ellas se realizan,


facilitando a los empleados el anlisis de las mismas.

Son una excelente herramienta para capacitar a los nuevos empleados y tambin a los que
desarrollan la tarea, cuando se realizan mejoras en el proceso.

TIPOS DE DIAGRAMA DE FLUJO

Los diagramas de flujo son una manera de representar visualmente el flujo de datos a travs de
sistemas de tratamiento de informacin. Los diagramas de flujo describen que operaciones y en
que secuencia se requieren para solucionar un problema dado.

Los tipos de diagrama de flujo, se refiere a la presentacin en el espacio del diagrama. Hay varios
modelos, por ejemplo:

1) Formato vertical: En l el flujo o la secuencia de las operaciones, va de arriba hacia abajo.


Es una lista ordenada de las operaciones de un proceso con toda la informacin que se
considere necesaria, segn su propsito.

2) Formato horizontal: En l, el flujo o la secuencia de las operaciones, va de izquierda a


derecha.
Materia: Programacin Lgica

Profesor: Ing. Silvia Carrera - 15 -


3) Formato panormico: El proceso entero est representado en una sola carta y puede
apreciarse de una sola mirada mucho ms rpido que leyendo el texto, lo que facilita su
comprensin, aun para personas no familiarizadas. Registra no solo en lnea vertical, sino
tambin horizontal, distintas acciones simultneas y la participacin de ms de un puesto o
departamento que el formato vertical no registra.

4) Formato Arquitectnico: Describe el itinerario de ruta de una forma o persona sobre el


plano arquitectnico del rea de trabajo.

Inicio o fin del programa

Pasos, procesos o lneas de instrucciones de programa de


cmputo.

Operaciones de entrada y salida.

Toma de decisin y Ramificacin.

Conector para unir el flujo a otra parte del diagrama.

Cinta magntica.

Disco magntico.

Conector de pgina.

Materia: Programacin Lgica

Profesor: Ing. Silvia Carrera - 16 -


Lneas de flujo.

Anotacin.

Display, para mostrar datos.

Enva datos a la impresora.

Entonces, un diagrama de flujo u organigrama es una representacin diagramtica que ilustra la


secuencia de las operaciones que se realizarn para conseguir la solucin de un problema. Los
diagramas de flujo se dibujan generalmente antes de comenzar a programar el cdigo frente a la
computadora. Los diagramas de flujo facilitan la comunicacin entre los programadores y la gente
del negocio. Estos diagramas de flujo desempean un papel vital en la programacin de un
problema y facilitan la comprensin de problemas complicados y sobre todo muy largos. Una
vez que se dibuja el diagrama de flujo, llega a ser fcil escribir el programa en cualquier lenguaje
de alto nivel. Vemos a menudo cmo los diagramas de flujo nos dan ventaja al momento de
explicar el programa a otros. Por lo tanto, est correcto decir que un diagrama de flujo es una
necesidad para la documentacin mejor de un programa complejo.

Los Diagramas de flujo se dibujan generalmente usando algunos smbolos estndares; sin
embargo, algunos smbolos especiales pueden tambin ser desarrollados cuando as sea
necesario. Algunos smbolos estndares, que se requieren con frecuencia para diagramar
programas de computadora se muestran a continuacin:

Dentro de los smbolos fundamentales para la creacin de diagramas de flujo, estn los que se
usan para las operaciones aritmticas y relacionales o de condicin. La siguiente es una lista de
smbolos utilizados:

+ Sumar

- Menos

* Multiplicacin

/ Divisin

Mas o menos

= Equivalente a

Materia: Programacin Lgica

Profesor: Ing. Silvia Carrera - 17 -


> Mayor que

< Menor que

>= Mayor o igual que

<= Menor o igual que

<> Diferente de

Si

No

True

False

Los Diagramas de flujo deben escribirse de arriba hacia abajo, y/o de izquierda a derecha.

Los smbolos se unen con lneas, las cuales tienen en la punta una flecha que indica la direccin
que fluye la informacin procesos, se deben de utilizar solamente lneas de flujo horizontal o
verticales (nunca diagonales).

Se debe evitar el cruce de lneas, para lo cual se quisiera separar el flujo del diagrama a un sitio
distinto, se pudiera realizar utilizando los conectores. Se debe tener en cuenta que solo se vana
utilizar conectores cuando sea estrictamente necesario.

No deben quedar lneas de flujo sin conectar

Todo texto escrito dentro de un smbolo debe ser legible, preciso, evitando el uso de muchas
palabras.

Todos los smbolos pueden tener ms de una lnea de entrada, a excepcin del smbolo final.

Solo los smbolos de decisin pueden y deben tener ms de una lnea de flujo de salida.

Materia: Programacin Lgica

Profesor: Ing. Silvia Carrera - 18 -


si

Inicio / fin
Decisin
no Proceso

conector

Entrada / salida
Subprograma
Figura 3

Para realizar diagramas ms sencillos de realizar, se emplear un nmero reducido de smbolos


como se muestra en la figura 3.

Ejemplo de diagramas de flujo

Ejemplo 1: Realizar un diagrama de flujo que determine y muestre por pantalla los nmeros pares
entre 2 y 100 (figura 4).

Materia: Programacin Lgica

Profesor: Ing. Silvia Carrera - 19 -


inicio

Suma 2

Numero4

Sumasuma +numero

Numeronumero+2

si
Numero< =100

no

Escribir

SUMA

fin

Figura 4

Ejemplo 2: Realizar un diagrama de flujo que permita el ingreso de 10 nmeros enteros, determine
y muestre por pantalla solamente los nmeros positivos que se hayan ingresado por teclado
(figura 5).
Materia: Programacin Lgica

Profesor: Ing. Silvia Carrera - 20 -


inicio

cantidad 1

no
Leer num Num>0

si

Cantidadcantidad +1 Mostrar
num

si
Cantidad<10

no

fin

Figura 5

Ejemplo 3: Crear un diagrama de flujo que permita intercambiar los valores de dos variables
numricas (tomas desde el teclado) (figura 6).

Materia: Programacin Lgica

Profesor: Ing. Silvia Carrera - 21 -


inicio

Leer A,B

AuxA

AB

BAux

Escribir

A, B

fin

Figura 6

El pseudocdigo es la descripcin de un algoritmo que asemeja a un lenguaje de programacin


pero con algunas convenciones del lenguaje natural (de ah que tenga el prefijo pseudo, que
significa falso). Tiene varias ventajas con respecto a los diagramas de flujo, entre las que se
destaca el poco espacio que se requiere para representar instrucciones complejas. El
pseudocdigo no est regido por ningn estndar.

La teora de autmatas y la teora de funciones recursivas proveen modelos matemticos que


formalizan el concepto de algoritmo. Los modelos ms comunes son la mquina de Turing,
mquinas de registro y funciones u-recursivas. Estos modelos son tan precisos como un lenguaje
mquina, careciendo de expresiones coloquiales o ambigedad, sin embargo se mantienen
independientes de cualquier computadora y de cualquier implementacin.

Muchos algoritmos son ideados para implementarse en un programa. Sin embargo, los algoritmos
pueden ser implementados en otros medios, como una red neuronal, un circuito elctrico o un
Materia: Programacin Lgica

Profesor: Ing. Silvia Carrera - 22 -


aparato mecnico y elctrico. Algunos algoritmos inclusive se disean especialmente para
implementarse usando lpiz y papel. El algoritmo de multiplicacin tradicional, el algoritmo de
Euclides, la criba de Eratstenes y muchas formas de resolver la raz cuadrada, son slo algunos
ejemplos.

Como medida de la eficiencia de un algoritmo, se suelen estudiar los recursos (memoria y tiempo)
que consume el algoritmo. El anlisis de algoritmos se ha desarrollado para obtener valores que
de alguna forma indiquen (o especifiquen) la evolucin del gasto de tiempo y memoria en funcin
del tamao de los valores de entrada.

El anlisis y estudio de los algoritmos es una disciplina de las ciencias de la computacin y, en la


mayora de los casos, su estudio es completamente abstracto sin usar ningn tipo de lenguaje de
programacin ni cualquier otra implementacin; por eso, en ese sentido, comparte las
caractersticas de las disciplinas matemticas. As, el anlisis de los algoritmos se centra en los
principios bsicos del algoritmo, no en los de la implementacin particular. Una forma de plasmar
(o algunas veces "codificar") un algoritmo es escribirlo en pseudocdigo o utilizar un lenguaje muy
simple tal como Lxico, cuyos cdigos pueden estar en el idioma del programador.

Algunos escritores restringen la definicin de algoritmo a procedimientos que deben acabar en


algn momento, mientras que otros consideran procedimientos que podran ejecutarse
eternamente sin pararse, suponiendo el caso en el que existiera algn dispositivo fsico que fuera
capaz de funcionar eternamente.

En este ltimo caso, la finalizacin con xito del algoritmo no se podra definir como la terminacin
de ste con una salida satisfactoria, sino que el xito estara definido en funcin de las secuencias
de salidas dadas durante un periodo de vida de la ejecucin del algoritmo. Por ejemplo, un
algoritmo que verifica que hay ms ceros que unos en una secuencia binaria infinita debe
ejecutarse siempre para que pueda devolver un valor til. Si se implementa correctamente, el
valor devuelto por el algoritmo ser vlido, hasta que evale el siguiente dgito binario. De esta
forma, mientras evala la siguiente secuencia podrn leerse dos tipos de seales: una seal
positiva (en el caso de que el nmero de ceros sea mayor que el de unos) y una negativa en caso
contrario.

Finalmente, la salida de este algoritmo se define como la devolucin de valores exclusivamente


positivos si hay ms ceros que unos en la secuencia y, en cualquier otro caso, devolver una
mezcla de seales positivas y negativas.

TECNICAS DE DISEO DE ALGORITMOS

Algoritmos voraces (greedy): seleccionan los elementos ms prometedores del conjunto


de candidatos hasta encontrar una solucin. En la mayora de los casos la solucin no es
ptima.
Algoritmos paralelos: permiten la divisin de un problema en subproblemas de forma que
se puedan ejecutar de forma simultnea en varios procesadores.
Algoritmos probabilsticos: algunos de los pasos de este tipo de algoritmos estn en
funcin de valores pseudoaleatorios.
Algoritmos determinsticos: El comportamiento del algoritmo es lineal: cada paso del
algoritmo tiene nicamente un paso sucesor y otro antecesor.

Materia: Programacin Lgica

Profesor: Ing. Silvia Carrera - 23 -


Algoritmos no determinsticos: El comportamiento del algoritmo tiene forma de rbol y a
cada paso del algoritmo puede bifurcarse a cualquier nmero de pasos inmediatamente
posteriores, adems todas las ramas se ejecutan simultneamente.
Divide y vencers: dividen el problema en subconjuntos disjuntos obteniendo una solucin
de cada uno de ellos para despus unirlas, logrando as la solucin al problema completo.
Metaheursticos: encuentran soluciones aproximadas (no ptimas) a problemas basndose
en un conocimiento anterior (a veces llamado experiencia) de los mismos.
Programacin dinmica: intenta resolver problemas disminuyendo su coste computacional
aumentando el coste espacial.
Ramificacin y acotacin: se basa en la construccin de las soluciones al problema
mediante un rbol implcito que se recorre de forma controlada encontrando las mejores
soluciones.
Vuelta Atrs (Backtracking): se construye el espacio de soluciones del problema en un
rbol que se examina completamente, almacenando las soluciones menos costosas.

ELEMENTOS BASICOS DE UN PROGRAMA

Los elementos bsicos que constituyen un programa o algoritmo son:

Palabras reservadas (inicio, fin, mientras, desde, escribir, mostrar leer, etc)
Identificadores (nombre de variables u objetos en general)
Caracteres especiales (coma, apstrofe, comillas, etc)
Constantes
Variables
Expresiones
Instrucciones

Adems de estos elementos bsicos, existen otros elementos que forman parte de los
programas, estos elementos son:

Bucles
Acumuladores
Contadores
Banderas o flag
Estructuras: secuenciales, selectivas y repetitivas

BIBLIOGRAFIA OBLIGATORIA:

Fundamentos de programacin. Algoritmos, Estructuras de datos y Objetos, Luis Joyanes


Aguilar. Mc Graw Hill. Tercera edicin. Captulo 1 y 2 (pginas 3 a 79)

Materia: Programacin Lgica

Profesor: Ing. Silvia Carrera - 24 -


1.3 Datos. Tipos. Datos numricos, lgicos y de carcter
En lenguaje de programacin un tipo de dato es un atributo de una parte de los datos que indica
al ordenador (y/o al programador) algo sobre la clase de datos sobre los que se va a procesar.
Esto incluye imponer restricciones en los datos, como qu valores pueden tomar y qu
operaciones se pueden realizar. Tipos de datos comunes son: enteros, nmeros de coma flotante
(decimales), cadenas alfanumricas, fechas, horas, colores, coches o cualquier cosa que se nos
ocurra. Por ejemplo, en Java, el tipo "int" representa un conjunto de enteros de 32 bits cuyo rango
va desde el -2.147.483.648 al 2.147.483.647, as como las operaciones que se pueden realizar
con los enteros, como la suma, resta y multiplicacin. Los colores, por otra parte, se representan
como tres bytes denotando la cantidad de rojo, verde y azul, y una cadena de caracteres
representando el nombre del color; las operaciones permitidas incluyen la adicin y sustraccin,
pero no la multiplicacin.

El tipo de dato tiene relacin con el espacio (en byte) que se utiliza en memoria dinmica para
almacenar los valores (variables, constantes).

ste es un concepto propio de la informtica, ms especficamente de los lenguajes de


programacin, aunque tambin se encuentra relacionado con nociones similares de las
matemticas y la lgica.

En un sentido amplio, un tipo de datos define un conjunto de valores y las operaciones sobre
estos valores. Casi todos los lenguajes de programacin explcitamente incluyen la notacin del
tipo de datos, aunque lenguajes diferentes pueden usar terminologa diferente. La mayor parte de
los lenguajes de programacin permiten al programador definir tipos de datos adicionales,
normalmente combinando mltiples elementos de otros tipos y definiendo las operaciones del
nuevo tipo de dato. Por ejemplo, un programador puede crear un nuevo tipo de dato llamado
"Persona" que especifica que el dato interpretado como Persona incluir un nombre y una fecha
de nacimiento.

Un tipo de dato puede ser tambin visto como una limitacin impuesta en la interpretacin de los
datos en un sistema de tipificacin, describiendo la representacin, interpretacin y la estructura
de los valores u objetos almacenados en la memoria del ordenador. El sistema de tipificacin usa
informacin de los tipos de datos para comprobar la verificacin de los programas que acceden o
manipulan los datos.

DATOS NUMERICOS:

El tipo numrico es el conjunto de los valores numricos. Estos pueden representarse en dos
formas distintas:

Tipo numrico entero ( entero)

Tipo numrico real ( real)

ENTEROS:

Materia: Programacin Lgica

Profesor: Ing. Silvia Carrera - 25 -


Los son nmeros sin coma, es decir, sin parte fraccionaria y pueden ser positivos o negativos,
algunos ejemplos de nmeros enteros son:

-12

31

111144

20

-5556

17

51

999

-999

REALES:

Los nmeros reales, son como lo entendemos con el concepto de algebra, es decir comprende a
los enteros positivos, negativos el cero, ms los nmeros decimales.

Los nmeros reales tienen mayor nmero de byte para ser almacenados en memoria dinmica
(memoria de sistema) que los enteros. Por lo tanto, a veces necesitamos guardar en una variable
un nmero entro cuya magnitud excede el mximo permitido, en estos casos se utiliza una
variable de tipo real en lugar de tipo entero (aunque el nmero en cuestin no tenga parte
fraccionaria).

Algunos ejemplos de nmeros reales son:

1.003

-1.5

100.08

2345000000

-444567,234

0.00178

DATOS LOGICOS:

Materia: Programacin Lgica

Profesor: Ing. Silvia Carrera - 26 -


El tipo de dato lgico, es aquel que solo puede tomar dos valores, cierto o verdadero, y falso.

DATOS DE TIPO CARCTER:

El tipo de dato carcter es el conjunto finito y ordenado de caracteres que la computadora


reconoce. Un dato de tipo carcter contiene un solo carcter.

Algunos ejemplos de este tipo son:

V
B

En pseudocdigo la A es distinta de la a, es decir maysculos y minsculas son distintas. Cada


uno de estos caracteres se representa por un entero en cdigo ASCII.

Por ejemplo la A mayscula se representa por el nmero entero 65 mientras que la letra a
minscula se representa con el entero 97.

BIBLIOGRAFIA OBLIGATORIA:

Fundamentos de programacin. Algoritmos, Estructuras de datos y Objetos, Luis Joyanes


Aguilar. Mc Graw Hill. Tercera edicin. Captulo 3 (pginas 83 a 92).

1.4 Variables y constantes


Las constantes son ciertos valores que no pueden cambiar durante la ejecucin del programa.
Existen otros valores que pueden cambiar a lo largo de la ejecucin del programa, estas son las
variables.

Ejemplo de constantes numricas conocidas son:


Materia: Programacin Lgica

Profesor: Ing. Silvia Carrera - 27 -


PI = 3.14

E= 2.718229

Se pueden definir constantes de todos los tipos primitivos de variables.

En general las constantes se designan con identificadores o nombres en mayscula.

Una variable en cambio, es un objeto cuyo valor puede cambiar.

Una variable tiene asociado: un identificador o nombre, un tipo asociado (entero, real, lgica de
carcter y de cadena) y un valor segn el tipo con el cual se haya declarado la variable.

La variable solo puede tomar valores permitido segn su tipo. Por ejemplo una variable real,
puede tomar valores positivos, negativos, con o sin como decimal e incluso el cero.

Si se intenta asignar un valor no permitido (segn su tipo) se producir un error de tipo.

En cuanto al identificador o nombre de un objeto, este es un conjunto de caracteres


alfanumricos, el primer carcter generalmente en todos los lenguajes es una letra.

Algunos ejemplos de variables son:

Dato

aa

c1

num1

num2

contador

ndice

Todos los lenguajes tienen un conjunto de palabras reservadas, estas son como su nombre lo
indica palabras que no pueden utilizarse para identificar objetos, estn reservadas al lenguaje.

En pseudocdigo hay palabras reservadas que no pueden utilizarse como identificadores como
por ejemplo:

Inicio

fin

entero

real

mientras

Materia: Programacin Lgica

Profesor: Ing. Silvia Carrera - 28 -


si

entonces

para

segun

sea

repetir

funcin

lgico

carcter

cadena

sino

Declaraciones correctas de objetos son:

entero dato

entero numero

lgico valor

real promedio1

real promedio2

carcter letra

Declaraciones incorrectas son:

entero 11

real -num

entero para

lgico inicio

BIBLIOGRAFIA OBLIGATORIA:

Fundamentos de programacin. Algoritmos, Estructuras de datos y Objetos, Luis Joyanes


Aguilar. Mc Graw Hill. Tercera edicin. Captulo 3 (pginas 83 a 125)

Materia: Programacin Lgica

Profesor: Ing. Silvia Carrera - 29 -


1.5 Expresiones. Aritmticas. Operadores. Reglas de prioridades.

Las expresiones son combinaciones de constantes, variables, smbolos de operacin, parntesis y


nombres de funciones especiales. Por ejemplo: a+ (b*c) +c en este caso los parntesis indican el
orden de clculo.

Cada expresin toma un valor que determina tomando los valores de las variables y constantes
implicadas y la ejecucin de las operaciones indicadas.

Una expresin consta de operadores y operandos. Segn el tipo de objetos que manipulan, las
expresiones se clasifican en:

Aritmticas

Relacionales

Lgicas

Carcter

El resultado de una expresin aritmtica es de tipo numrico, mientras que el resultado de una
expresin de tipo lgico y de tipo relacional es lgico y el resultado de una expresin de tipo
carcter es de tipo carcter.

EXPRESIONES ARITMETICAS

Las expresiones aritmticas son anlogas a las que se utilizan en el lgebra. Las variables y
constantes son de tipo numrico (entero, real) y las operaciones son las aritmticas:

+ suma

- Resta

* multiplicacin

/ divisin

^ ** exponenciacin

div divisin entera

mod mdulo (resto de una divisin entera)

Los smbolos +, -, *, ^, /, y las palabras reservadas mod y div se conocen como operadores
aritmticos.

Materia: Programacin Lgica

Profesor: Ing. Silvia Carrera - 30 -


En la expresin:

3+5

El 3 y 3l nmero 5 se llaman operandos y el smbolo que los vincula, es decir, +, es el operador.

El valor de la expresin, se conoce como el resultado de la expresin.

OPERADORES DIV Y MOD

El operador / se usa en la divisin real y el operador div en la divisin entera..

Por ejemplo:

A div B solo es vlido si el objeto A y B son ambos enteros.

La expresin 9 div 2, da como resultado 4, mientras que la expresin 9 div 3 da como resultado 3.

En la primera expresin, es decir 9 div 2, como el resultado debe ser entero, los decimales se
pierden, hay que notar que no se produce redondeo alguno.

El operador mod, da como resultado el resto de una divisin entera.

Por ejemplo:

9 mod 3 da como resultado 0

9 mod 11 da como resultado 9

8 mod 3 da como resultado 2

20 mod 2 da como resultado 0

REGLAS DE PRIORIDAD

Las reglas de prioridad determinan el orden en el que se ejecutan las operaciones.

Las reglas de precedencia o prioridad son:

1. Las operaciones que estn encerradas entre parntesis se evalan primero. Si existen
parntesis anidados (interiores unos a otros), las expresiones internas se evalan primero

2. Las operaciones aritmticas dentro de una expresin suelen seguir el siguiente orden de
prioridad:

Operador exponencial

Operadores de producto y divisin

Materia: Programacin Lgica

Profesor: Ing. Silvia Carrera - 31 -


Operadores div y mod

Operadores suma y resta

En caso de coincidir varios operadores de igual prioridad en una expresin o subexpresin


encerada entre parntesis, el orden de precedencia en este caso es de izquierda a derecha.

Ejemplos de aplicacin:

Ejemplo1: cul es el resultado de la siguiente expresin?

3 + 6 * 14

Rta: 87

Ejemplo2: cul es el resultado de la siguiente expresin?

8 + 7 * 3 +4 * 6

Rta: 53

Ejemplo3: cul es el resultado de la siguiente expresin?

-4 * 7 + 2 ** -5

Rta: -31

Ejemplo4: cul es el resultado de la siguiente expresin?

(8 + 7) * 3 +4 * 6

Rta: 69

Ejemplo5: cul es el resultado de la siguiente expresin?

8 + 7 * (3 +4) * 6

Rta: 302

Ejemplo6: cul es el resultado de la siguiente expresin?

(8 + 7) * (3 +4) * 6

Rta: 630

Materia: Programacin Lgica

Profesor: Ing. Silvia Carrera - 32 -


BIBLIOGRAFIA OBLIGATORIA:

Fundamentos de programacin. Algoritmos, Estructuras de datos y Objetos, Luis Joyanes


Aguilar. Mc Graw Hill. Tercera edicin. Captulo 3 (pginas 83 a 125)

1.6 Expresiones lgicas. Operadores de relacin.

Las expresiones lgicas o booleanas, son aquellas cuyo valor es verdadero o falso. En esencia
una expresin lgica es aquella que solo puede tomar dos valores.

Las expresiones lgicas se forman combinando constantes lgicas, variables lgicas y otras
expresiones lgicas, utilizando los operadores lgicos: not, and y or y los operadores relacionales
(o de comparacin): =, <, >, <=, >= y <>

= igual que

< menor que

>mayo que

<=menor o igual que

= mayor igualque

distinto de

Los operadores relacionales son binarios, es de necesitan dos operandos para cumplir su
funcin.

Los operadores lgicos, expresan su funcionalidad a travs de una tabla de verdad.

La tabla de verdad del operador and. La tabla tiene a su izquierda las combinaciones posibles de
estados vlidos para los objetos A y B, donde 0 lgico representa el falso, y el 1 lgico representa
el verdadero (Figura 7):

Materia: Programacin Lgica

Profesor: Ing. Silvia Carrera - 33 -


A B A and B

1 0 0

2 1 0

3 0 0

1 1 1

Figura 7

Del lado derecho representa la salida, segn la combinacin de los estados de la entrada.

La tabla muestra que en el nico caso en que el resultado de la expresin A and B da verdadero o
1 lgico, es cuando ambos objetos estn en 1 lgico o en verdadero.

La tabla de verdad del operador or o simplemente o. La tabla tiene a su izquierda las


combinaciones posibles de estados vlidos para los objetos A y B, donde 0 lgico representa el
falso, y el 1 lgico representa el verdadero (Figura 8):

A B A or B

0 0 0

0 1 1

1 0 1

1 1 1

Figura 8

Materia: Programacin Lgica

Profesor: Ing. Silvia Carrera - 34 -


La salida de la tabla (lado derecho) muestra que esta relacin da verdadero como resultado,
siempre que al menos uno de los dos objetos (A o B) sea verdadero.

La tabla de verdad del operador lgico not o simplemente no, es bastante sencilla, el operador not
es unario, es decir se aplica a un solo objeto (variable o constante); da como resultado el estado
opuesto del que tienen el objeto (Figura 9)

A no A

0 1

1 0

Figura 9

En las expresiones lgicas se pueden mezclar operadores de relacin y lgicos, por ejemplo:

( 2 < 5) y (10< 34) la expresin es verdadera

( 4<6) or (23 <4) la expresin es verdadera

( 2> 5) y (10< 34) la expresin es falsa

( 4>6) or (23 <4) la expresin es falsa

( 4<6) or (2 <4) la expresin es verdadera

( 2> 5) y (100< 34) la expresin es falsa

no 5 la expresin es falsa

3 <>4 la expresin verdadera

no ( 3<>4) la expresin falsa

BIBLIOGRAFIA OBLIGATORIA:

Fundamentos de programacin. Algoritmos, Estructuras de datos y Objetos, Luis Joyanes


Aguilar. Mc Graw Hill. Tercera edicin. Captulo 3 (pginas 83 a 125).

Materia: Programacin Lgica

Profesor: Ing. Silvia Carrera - 35 -


1.7 Operacin de asignacin.
La operacin de asignacin es el modo de almacenar valores de una variable. La operacin de
asignacin se representa con el smbolo u operador flecha . La operacin de asignacin se
conoce como instruccin o sentencia de asignacin cuando se refiere a un lenguaje de
programacin real.. El formato general de una operacin de asignacin es:

Variable expresin

La operacin A 10, significa que al contenido de la variable A se le asigna el nmero entero 10.

Es importante notar que la operacin de asignar es destructiva ya que el contenido previo a la


asignacin que tenia la variable, se pierde y se reemplaza por un nuevo valor.

Por ejemplo:

A 10

A1

A5

El objeto A contiene el valor entro 5, todos los datos previos se perdieron.

Las acciones de asignar se clasifican en tres grandes grupos: aritmticas, lgicas y de carcter.

ASIGNACION ARITMETICA

Las expresiones en las operaciones de asignacin son aritmticas, por ejemplo:

Ant 6+7

tt A + B

producto con1 *con2

ASIGNACION LOGICA

La expresin que se evala en la operacin de asignacin es lgica.

Suponiendo que A, B y P son variables de tipo lgico

A 5<7

B A or ( 3 <>3)

P 10< 2

Despus de realizarse las siguientes operaciones, las variables A, B y P tienen los valores
Verdadero, verdadero y falso
Materia: Programacin Lgica

Profesor: Ing. Silvia Carrera - 36 -


ASIGNACIN DE CADENAS DE CARACTERES

La expresin que se evala es de tipo cadena:

Cadena x

X hola

La instruccin de asignacin asigna a la variable x de tipo cadena, la cadena de caracteres hola

BIBLIOGRAFIA OBLIGATORIA:

Fundamentos de programacin. Algoritmos, Estructuras de datos y Objetos, Luis Joyanes


Aguilar. Mc Graw Hill. Tercera edicin. Captulo 3 (pginas 83 a 125)

1.8 Operaciones de entrada/salida

Las operaciones de entrada, permiten ingresar valores desde fuera de la computadora (teclado) a
objetos de un programa. Esta entrada se conoce como operacin de lectura. Los datos de entrada
se introducen mediante dispositivos de entrada de datos (teclados, etc).

La operacin de salida se denomina escritura.

En la escritura de algoritmos las acciones de lectura y escritura se representan por el siguiente


formato:

leer ( lista de variables de entrada separadas por coma)

escribir (lista de variables de salida separadas por coma)

Tambin se usan ingresar y mostrar. Ingresar es equivalente a leer, con el mismo formato. Mostrar
es equivalente a escribir con el mismo formato.

Por ejemplo:

leer ( a, b, c) esta lnea de pseudocdigo, representa el ingreso de tres valores por teclado y que
se guardan en las variables a, b y c

mostrar ( suma) esta lnea de pseudocdigo permite mostrar por pantalla el contenido de la
variable suma.

BIBLIOGRAFIA OBLIGATORIA:

Fundamentos de programacin. Algoritmos, Estructuras de datos y Objetos, Luis Joyanes


Aguilar. Mc Graw Hill. Tercera edicin. Captulo 3 (pginas 83 a 125)

Materia: Programacin Lgica

Profesor: Ing. Silvia Carrera - 37 -


1.9 Ejercicios de aplicacin.
La escritura de algoritmos mediante herramientas de programacin debe ser lo ms clara posible
y estructurada, de modo que la lectura facilite la comprensin del algoritmo en s, y su posterior
codificacin en un lenguaje especfico.

Un algoritmo constar de dos componentes: una cabecera de programa y un bloque algoritmo. La


cabecera de programa es una accin simple que comienza con la palabra algoritmo. Esta palabra
estar seguida por el nombre asignado al programa completo. El bloque algoritmo es el resto del
programa y consta de dos componentes: las acciones de declaracin y las acciones ejecutables.

Las declaraciones definen o declaran las variables y constantes que tengan nombre. Las acciones
ejecutables son las acciones que posteriormente deber realizar la computadora cuando el
algoritmo convertido en programa se ejecute.

Por ejemplo:

1) Implementar un programa que permita sumar dos nmeros enteros introducidos por
teclado. Mostrar el resultado por teclado. En la figura 10 se muestra el diagrama de flujo.

inicio

Leer ( a,b)

Sumaa +b

Escribir (suma)

fin

Figura 10

Algoritmo Suma-numeros
Materia: Programacin Lgica

Profesor: Ing. Silvia Carrera - 38 -


var

entero: a,b,suma

inicio

ingresar ( a,b)

Suma a + b

mostrar (suma)

fin

EXPLICACIN:

El algoritmo llamado Suma-numeros tiene dos secciones claras una de declaracin de variables,
corresponde a la palabra reservada var y otra que representa el algoritmo en s, representada por
la palabra reservada inicio.

En la parte para las variables declaramos los tipos, en este ejemplo las variables son enteras, hay
tres variables a y b, stas contienen los valores de entrada tomados desde el teclado y la variable
suma, que contendr el resultado del algoritmo ( suma del contenido de la variable a y b).

En la seccin correspondiente al algoritmo en s, donde comenzara la parte ejecutable de


cualquier lenguaje, encontramos la lnea ingresar (a,b) esta sentencia permite tomar valores
desde el teclado. La funcin ingresar puede llevar uno o ms variables. Las funciones se
reconocen porque a continuacin del nombre o identificador de la funcin se colocan los
parntesis (apertura y cierre). Dentro de los parntesis, se puede no colocar nada, lo cual estara
indicando que la funcin no recibe parmetros, es decir no necesita recibir informacin alguna
para realizar la tarea que esta funcin en particular realiza. Si la funcin necesita recibir
informacin, o ella devolver informacin, o ambas cosa, entonces se colocan los parmetros
separados por coma, tantos como se necesite.

La sentencia Suma a + b es una sentencia de asignacin, por la cual el contenido de memoria


llamado a se suma al contenido de memoria llamada b, y su suma se asigna a la variable Suma,
tanto a como b conservan los valores que tenan previos a la sentencia de asignacin.

La sentencia mostrar (Suma), permite escribir o mostrar por pantalla el contenido de la variable
Suma. Mostrar ( ) o escribir ( ) son funciones que permiten mostrar o escribir (es lo mismo) por
pantalla el contenido de los parmetros que se coloquen entre los parntesis.

Finalmente el algoritmo termina cuando se encuentra la palabra reservada fin.

Materia: Programacin Lgica

Profesor: Ing. Silvia Carrera - 39 -


2) Implementar un programa que permita ingresar un nmero entero por teclado. Se deber
mostrar en pantalla el cuadrado del nmero ingresado, en la Figura 11 se muestra el
diagrama de flujo.

Algoritmo Calcula-cuadrado

var

entero: a,,Resul

inicio

ingresar ( a)

Resul a**2

mostrar (Resul)

fin

inicio

Leer ( a)

Resula**2

Escribir (Resul)

fin

Figura 11

Materia: Programacin Lgica

Profesor: Ing. Silvia Carrera - 40 -


3) Implementar un programa que permita ingresar la longitud de un lado de un cuadrado,
medido en centmetros, el algoritmo deber calcular y mostrar por pantalla la superficie y
el permetro. En la figura 12 se muestra el diagrama de flujo.

Algoritmo Calcula-Per-Super

var

real: lado, Perim, Superf

inicio

mostrar ( ingresar el lado del cuadrado en cm)

ingresar ( lado)

Perim lado * 4

Superf lado ** 2

mostrar (Perim, Superf)

fin

Materia: Programacin Lgica

Profesor: Ing. Silvia Carrera - 41 -


inicio

mostrar (ingresar el lado en cm)

Escribir (lado)

Perim lado *4

Superf lado **2

Mostrar (Perim, Superf)

fin

Figura 12

BIBLIOGRAFIA OBLIGATORIA:

Fundamentos de programacin. Algoritmos, Estructuras de datos y Objetos, Luis Joyanes


Aguilar. Mc Graw Hill. Tercera edicin. Captulo 3 (pginas 83 a 125)

Materia: Programacin Lgica

Profesor: Ing. Silvia Carrera - 42 -