Documentos de Académico
Documentos de Profesional
Documentos de Cultura
información
Introducción
De forma simplificada, vinculamos el concepto de lógica a la capacidad de comprender
una situación y definir una respuesta coherente a la misma. La programación requiere
de lógica y debemos desarrollarla independientemente de cuál sea el lenguaje de
programación que utilicemos. Entonces, la lógica de programación representa la
organización coherente de las instrucciones del programa para alcanzar sus objetivos.
A diario realizamos muchas actividades que siguen una secuencia lógica y, en general,
lo hacemos con tanta naturalidad que ni siquiera nos damos cuenta. Como
mencionamos, un algoritmo es el conjunto de pasos necesarios para resolver un
problema y, si lo pensamos un poco, veremos que efectivamente fue lo que aplicamos
para llegar al resultado final.
En otras palabras, el uso de algoritmos está muy extendido en nuestra vida. Los
encontramos en instrucciones para realizar un pan casero, guías para ejecutar procesos
o desarrollar un programa.
Vamos a trabajar con este caso a lo largo del módulo y en esta primera lectura tu
objetivo será validar cómo se vinculan los programas y algoritmos junto al orden en que
debemos utilizarlos.
Resolución de problemas
Una de las etapas más desafiantes al momento de resolver un problema utilizando una
computadora es identificar el modelo de resolución. Para ello necesitamos definir un
algoritmo, que es el conjunto de pasos necesarios para resolver un problema. En
escenarios complejos, los algoritmos de resolución tienen una mayor dificultad y dan
lugar a distintas formas de encarar los modelos de resolución.
Como la computadora trabaja con un sistema binario (0 y 1), para que un programa
pueda ser ejecutado debe utilizarse un traductor para convertir el código fuente escrito
en un lenguaje de alto nivel a lenguaje de máquina.
La computadora
Desde los inicios de la humanidad, las personas han buscado simplificar y optimizar la
manera en que resuelven sus problemas. Esta necesidad dio origen a diversos inventos
a lo largo del tiempo para realizar cálculos de una manera cada vez más rápida,
llegando hasta lo que hoy conocemos como computadora.
Figura 2: Computadora
Fuente: elaboración propia.
En este punto es importante señalar que los datos son hechos o cifras en bruto, que
deben organizarse antes de utilizarse. La información son los datos que se han
procesado para que resulten de utilidad. Por ejemplo, la distancia entre dos puntos es un
dato que combinado con otros datos como el desnivel y temperatura nos permite contar
con información sobre la complejidad o no de realizar el trayecto en bicicleta. Cuando
continuamos agregando grados de abstracción, llegamos al conocimiento, que permite
adquirir información valiosa para comprender la realidad por medio de la razón, el
entendimiento y la inteligencia.
Sistema operativo: es el software que coordina todos los servicios y aplicaciones que
se utilizan en una computadora. Provee, además, los drivers necesarios para realizar el
manejo del hardware en los mismos.
Software de aplicación: son los programas que están escritos en algún lenguaje de
programación para realizar actividades que resulten de utilidad para los usuarios.
Lenguajes de programación
La computadora permite la resolución de problemas de cálculo matemático y lógico, a
partir de los programas que tiene almacenados. Un programa es una secuencia de
instrucciones ejecutables que permiten que la computadora llegue a un resultado a partir
de un grupo de datos específicos. A partir de esta definición podemos inferir que un
programa nos sirve para resolver un problema específico.
Lenguaje de máquina.
Lenguaje de bajo nivel (ensamblador).
Lenguajes de alto nivel.
Lenguaje de máquina
Como veremos más adelante, los programas escritos en estos lenguajes necesitan de
un intérprete o compilador para traducir las instrucciones a lenguaje de máquina. Existen
también enfoques mixtos, como el usado por Java, en el que se realizan ambos
procesos.
Paradigmas de programación
Para explicarlo vamos a utilizar la óptica de Martin (2019), quien ordena los paradigmas
de programación en una línea. En un punto se encuentran los paradigmas imperativos
como los más cercanos al funcionamiento de la computadora, por lo que debemos estar
atentos a temas como la memoria, el rendimiento o los periféricos. En el otro punto se
encuentran los paradigmas declarativos, en donde se especifica qué es lo que
deseamos obtener y no cómo obtenerlo.
Lógica proposicional
Las proposiciones son los elementos básicos con los que se construye esta sistema.
Una proposición es un enunciado que puede ser verdadero (1) o falso (0).
Las siguientes son proposiciones:
No sé si viajaremos
x = 2 + 3 (No tiene un valor de verdad claro al depender de cuanto valga x)
El concepto de proposición es abstracto por lo que no es lo mismo que una frase. Por
ejemplo, “Argentina superó a Francia en la final” y “Francia fue superado por Argentina
en la final” son dos frases diferentes y una misma proposición.
Tabla 2: Negación
Tabla 4: Disyunción
Tabla 5: Condicional
Tabla 6: Bicondicional
Se trata de proposiciones entre las que no existe una relación lógica que podamos
representar con conectores. Es decir, aunque la conclusión es evidente no podemos
expresarla mediante la lógica proposicional.
En lógica matemática, cuando un predicado se conecta con una expresión, se dice que
expresa una propiedad y cuando se conecta con dos o más expresiones se dice que
expresa una relación (como la relación de ser más grande que).
Cuando queremos expresar que existe al menos un elemento de ese conjunto (sin
especificar cuál) que pertenece al conjunto del predicado, utilizamos el cuantificador
existencial ∃, que puede traducirse como “existe al menos un”
∃x[P(x)]
La propiedad P se cumple para al menos un x.
Una regla de inferencia es una forma lógica que consiste en una función que toma
premisas, analiza su sintaxis y devuelve una conclusión (o conclusiones).
Compilador
Un compilador es un programa que toma todas las instrucciones del código de fuente
escrito en algún lenguaje de programación, lo traduce en una sola operación a código de
máquina en un proceso denominado compilación y genera un programa ejecutable.
En este proceso de compilación se detectan los errores de código, que deben ser
corregidos para luego volver a ejecutar la compilación con el fin de hacer la traducción
del código.
Es importante notar que el compilador genera un archivo ejecutable que sirve para la
plataforma sobre la cual se hizo el programa, si necesitamos que corra sobre otra
plataforma es necesario utilizar el compilador correspondiente.
Fases de la compilación
Figura 4: Compilación
Intérprete
Un intérprete es un programa que traduce las instrucciones del código fuente escrito en
algún lenguaje de programación a código de máquina, a medida que se va ejecutando
sin necesidad de generar un archivo ejecutable. El intérprete toma la primera sentencia
del programa y la traduce a lenguaje de máquina, se ejecuta y continua con el mismo
proceso con la siguiente sentencia.
Desde el punto de vista de rendimiento, un lenguaje interpretado es algo más lento que
uno compilado, pero también es más flexible a la hora de crear el código.
Figura 5: Intérprete
Resumen de traductores
En una primera fase el compilador de Java (javac) realiza una traducción del código
fuente original a un código intermedio binario independiente (bytecode). Este código
binario es multiplataforma y luego es procesado por el intérprete (java) que sí es
dependiente de la plataforma. En la figura el intérprete se denomina virtual machine.
Una máquina virtual (VM) es una aplicación de software que simula a una computadora,
ocultando el sistema operativo y hardware. Si se implementa la misma VM en distintas
plataformas, las aplicaciones escritas para ese tipo de VM podrán funcionar
independientemente del sistema operativo y hardware que tengan. En el caso de Java
se la conoce como Máquina Virtual de Java (JVM) y es una de las más utilizadas en la
actualidad.
Decimos que los bytecodes de Java son portables, ya que se pueden ejecutar en
cualquier plataforma que contenga una JVM con versión de Java compatible con la
utilizada en el momento de compilarlos, sin necesidad de volver a compilar el código
fuente.
Caso lectura 1: Algoritmos y programas
Retomando el caso, en esta primera lectura podemos observar que una vez analizado el
problema resulta fundamental trabajar en la lógica de programación y diseñar los
algoritmos, antes de comenzar a programar.
Actividades de repaso
Un algoritmo representa la organización coherente de las
instrucciones del programa para alcanzar sus objetivos.
Justificación
Referencias
[Imagen sin título sobre paradigmas de programación], (2019).
https://desdelashorasextras.blogspot.com/2019/10/paradigmas-y-tipos-de-
lenguajes_80.html
De Pierro, B. (2018). El mundo mediado por algoritmos.
https://revistapesquisa.fapesp.br/es/el-mundo-mediado-por-algoritmos/