Procesamiento de
Información y
Algoritmos
Programación
Lógica
1
1. Sistemas de procesamiento
de información
El ser humano, a lo largo de la historia, tuvo que lidiar con obstáculos y
problemas, y en su evolución ha desarrollado sistemas informáticos que le
ha permitido resolver estos problemas con mayor facilidad, en forma rápida
y precisa.
Para solucionar un problema mediante un sistema informático se deben
tener en cuenta los siguientes conceptos:
2
Figura 1: Resolución de problemas con un sistema informático
Figura 2: Entrada-proceso-salida
3
1.1. Clasificación de los lenguajes de programación
Los lenguajes de programación se pueden clasificar según varios criterios,
que desarrollaremos a continuación.
Lenguaje de alto nivel: utiliza sintaxis y estructuras que resultan más fáciles
de entender para las personas que escriben programas. Se emplean palabras
del lenguaje natural y se aleja de los tecnicismos de la computadora. Los
programas escritos en este lenguaje necesitan de un intérprete o compilador
para traducir las instrucciones a lenguaje de bajo nivel. Ejemplos de
lenguajes de alto nivel son C++ y Java.
4
Lenguaje funcional: se basa en la aplicación de funciones matemáticas y la
composición entre ellas, a diferencia de los cambios de estado que define el
lenguaje imperativo.
Lenguaje lógico: aplica reglas lógicas para que, a partir de ellas, se pueda
llegar a ciertas conclusiones luego de utilizar razonamiento formal. Los
objetos de tales razonamientos son hechos. Se intenta llegar a la solución de
un problema mediante la comprobación de la veracidad o falsedad de un
conjunto de expresiones.
1.2.1. Intérprete
5
Figura 3: Intérprete
Programa
fuente
Intérprete
Traducción y
ejecución
1.2.2. Compilador
6
Figura 4: Compilador
Programa
fuente
Compilador
Programa
objeto
Montador
Programa
ejecutable en
lenguaje máquina
Fuente: elaboración propia
7
2. Sistemas de información
Un sistema es un conjunto de elementos que interactúan entre sí para lograr
un objetivo. Esta es una de las definiciones más clásicas que podemos
encontrar de dicho concepto y es aplicable a muchos contextos. Si acotamos
el alcance de esta definición al tratamiento de la información de una unidad
de negocio para su uso posterior, con el objetivo de cubrir una necesidad,
entonces estamos haciendo referencia a un sistema de información. Este es
utilizado para dar apoyo a las diversas actividades de negocio de una
organización o proyecto. Un sistema de información involucra elementos
como tecnologías, software, procesos y personas. Las actividades de un
sistema de información son las siguientes:
8
información operativo. Suele ser el primero en implementarse en una
organización.
9
3. Elementos del lenguaje
3.1. Entidades y ligaduras
Se denomina entidad a un elemento sobre el cual trabaja un programa. Una
entidad puede ser un subprograma, variable, sentencia, etcétera. Una
entidad tiene atributos, por ejemplo, nombre, valor, tipo, ubicación en
memoria, tiempo de vida, etcétera. Los atributos son asociados a una
entidad por medio del mecanismo de ligadura. Esta es una asociación entre
dos cosas, es decir, la relación entre un atributo y una entidad. Entonces, por
ejemplo, una variable tiene un nombre, un tipo de dato, una ubicación en
memoria, un tiempo de vida, etcétera. Esta asociación se puede producir en
tiempo de compilación (ligadura estática) o durante la ejecución del
programa (ligadura dinámica). El momento en el cual se crea la ligadura o en
el que se decidió su implementación se denomina tiempo de ligadura.
10
3.2. Sintaxis y semántica
Los lenguajes de programación deben seguir ciertas reglas que determinan
la validez de las sentencias empleadas. Este conjunto de reglas define la
sintaxis del lenguaje de programación, que, a su vez, está determinada por:
alfabeto;
identificadores;
palabras reservadas;
espacios en blanco;
símbolos de operadores;
expresiones;
delimitadores de código;
comentarios.
Por otro lado, el significado que toma cada uno de los elementos de un
lenguaje de programación de acuerdo al contexto define la semántica del
lenguaje. La sintaxis no tiene en cuenta el contexto, mientras que la
semántica sí lo hace. Las variables, los valores y las expresiones son algunos
de los elementos principales de la semántica de un lenguaje de
programación. Estos elementos tienen una semántica que indica cómo debe
definírselos. Como ejemplo de aplicación de semántica, se puede mencionar
el chequeo de tipos de datos en expresiones. Este depende del contexto,
porque debe conocerse el tipo de dato esperado y el que actualmente se
recibe de la expresión, y determinar si son compatibles. Por ejemplo, si se
utiliza el operador aritmético suma en una expresión, entonces el tipo de
11
dato esperado es numérico y los operandos deben ser valores numéricos
también.
12
4. Algoritmo. Concepto.
Características
Un algoritmo es un conjunto de pasos para resolver un problema. Se parte
desde un estado inicial y una entrada para llegar a un estado final o solución.
Estos pasos deben tener ciertas características para que sean considerados
parte de un algoritmo. Teniendo en cuenta este concepto, se puede
observar fácilmente que en la vida cotidiana se utilizan algoritmos
constantemente en todo momento. Algunos ejemplos pueden ser el uso de
manuales de usuario, una receta de cocina, el algoritmo para obtener el
cociente entre dos números, etcétera. Con el marcado avance de las ciencias
de la computación hace ya varios años, los problemas son resueltos
utilizando algoritmos que se encuentran representados mediante
programas o software.
13
La descripción de un algoritmo en lenguaje natural puede tener
ambigüedades y ser extensa, y para ello se emplean técnicas formales de
descripción de algoritmos, como diagramas de flujo y pseudocódigos. Estas
representaciones son más estructuradas en comparación con el uso del
lenguaje natural, pero, a su vez, son independientes de los lenguajes de
programación. Por último, se tiene que traducir la representación formal del
algoritmo a una implementación en algún lenguaje de programación.
14
4.3. Diseño de algoritmos
Para resolver un problema mediante un algoritmo, se puede recurrir a
distintas técnicas que permiten reducir la complejidad en el diseño del
algoritmo. Una de las técnicas más conocidas es la de divide y vencerás. Esta
implica dividir el problema en partes más pequeñas, ya que cada una de
estas partes es más fácil de resolver. Esta subdivisión en problemas más
pequeños se puede realizar tantas veces como sea necesario con cada una
de las partes, hasta el punto en el que obtener la solución para cada una de
las partes no sea una tarea compleja. Una vez que se obtienen las soluciones
a cada subproblema, estas se combinan para dar una solución al problema
original de mayor complejidad.
15
Como principales ventajas de la aplicación de esta técnica de diseño pueden
mencionarse:
Comprensión más fácil del problema.
Mayor facilidad para resolver problemas complejos.
Mayor facilidad para analizar y mejorar la eficiencia del algoritmo.
Realizar modificaciones en algunas de las partes del algoritmo es más
fácil.
Mayor facilidad para verificar el problema por medio de sus partes o
módulos.
16
Figura 7: Figuras utilizadas en diagramas de flujo
17
Ejemplo 2: realizar un diagrama de flujo que permita el ingreso de 10
números enteros y muestre por pantalla solamente los números positivos
que se hayan ingresado.
18
4.4.2. Pseudocódigo
algoritmo Numeros_Pares
var
entero: suma
inicio
suma 0
repetir
suma suma + 2
escribir(suma)
hasta-que suma >= 100
fin
algoritmo Numeros_positivos
var
entero: cantidad, num
inicio
cantidad 1
repetir
leer(num)
si num > 0 entonces
escribir(num)
fin-si
cantidad cantidad + 1
hasta-que cantidad > 10
fin
19
Ejemplo 3: realizar el pseudocódigo que permita intercambiar los valores de
dos variables numéricas ingresadas por teclado.
algoritmo Intercambio_variables
var
entero: A, B, aux
inicio
leer(A,B)
aux A
AB
B aux
escribir(A,B)
fin
20
Referencias
Joyanes Aguilar, L. (2008). Fundamentos de programación. Algoritmos,
estructura de datos y objetos. Madrid, ES: McGraw-Hill.
21