Está en la página 1de 9

Módulo 2.

Programas y Lenguajes

Arquitectura de von Neumann

Actualmente las computadoras internamente están basadas en la arquitectura de


computadora John Von Neumann.
En dicha arquitectura, una computadora está formada por tres partes fundamentales:
 La Unidad de Memoria: donde se almacenan los programas y los datos.
 La Unidad de Entradas y Salidas: es la que se encarga de la comunicación de
información con el exterior a través de los periféricos o dispositivos (teclado,
monitor, mouse, impresora…).
 La Unidad Central de Procesamiento (CPU, procesador): es la que coordina el
funcionamiento conjunto de las demás unidades y realiza los cálculos.
Los datos y órdenes son representados internamente utilizando el sistema binario, es
decir, sólo dos valores: 0 y 1 que internamente se representan por: corrientes eléctricas,
campos magnéticos, marcas ópticas, etc.
0 -> apagado, false, cerrado, no pasa corriente.
1-> encendido, true, abierto, pasa corriente.

Un video sencillo que encontré -> Arquitectura Von Neumann

Si alguien está interesado en profundizar sobre este tema, puede leer


Organización y Arquitectura de Computadoras y también Sistema de
Representación Binario.

ipap.gba.gob.ar 1
Lenguajes de programación

Un lenguaje de programación es un lenguaje formal diseñado para realizar procesos que


pueden ser llevados a cabo por las computadoras.

Niveles de abstracción en los lenguajes

Los tipos de lenguajes de programación se caracterizan de acuerdo a su nivel en alto o


bajo, según puedan expresar el algoritmo de una manera adecuada a la
capacidad cognitiva humana, o más cercana a las instrucciones que ejecuta la
computadora.
Podríamos decir entonces que los leguajes de programación:

de alto nivel -> más cercanos al lenguaje humano o lenguaje natural.


(hay alta abstracción entre el lenguaje de programación y el
hardware). Más sencillo para programar.

de bajo nivel -> más cercanos al lenguaje de la computadora o lenguaje de


máquina.
(hay baja abstracción entre el lenguaje de programación y el
hardware). Más complejo para programar.

La computadora sólo entiende código binario o código máquina, consistente en ceros y


unos. Es decir, sólo utiliza 0 y 1 para codificar cualquier acción. Estos ceros y unos
representan literalmente instrucciones y datos a ser procesados por la Unidad Central de
Procesamiento (CPU).

ipap.gba.gob.ar 2
Ejemplo de código en lenguaje máquina:

El lenguaje ensamblador o Assembly, constituye el primer intento de sustitución del


lenguaje máquina por uno más cercano al usado por las personas. Es el lenguaje de más
bajo nivel en el que se puede programar. Derivado del código máquina cuyos códigos de
instrucciones han sido reemplazados por comandos “””más intuitivos”””.
Ejemplo de código en lenguaje ensamblador:

Actualmente los programadores muy rara vez escriben en lenguaje ensamblador. En su


lugar, utilizan lenguajes de alto nivel como C, Java, PHP, etc… Estos lenguajes evitan que
el programador tenga que involucrarse con el mundo físico del hardware y lo llevan a la
abstracción lógica.

ipap.gba.gob.ar 3
Ejemplo de código en lenguaje C:

Pero, dado que la computadora solo entiende código máquina ¿Cómo se terminan
finalmente ejecutándose estos programas escritos en lenguajes que no son código
máquina (tanto bajo como alto nivel)?
Con la aparición estos lenguajes se crearon los programas traductores para poder pasar
automáticamente los programas escritos a código máquina.

Compilador

Un compilador es un tipo de traductor que transforma un programa entero de


un lenguaje de programación (también llamado código fuente) a un lenguaje de código
máquina. Este proceso de traducción se lo conoce como compilación.

Compilar significa traducir el código escrito en “lenguaje entendible por humanos” (C,
Java, Pascal) a un código en “lenguaje máquina”, no entendible por humanos, pero si por
computadoras.
ipap.gba.gob.ar 4
Podríamos decir entonces que las etapas por las que debemos pasar desde que tenemos
un problema a resolver por computadora hasta obtener una solución al mismo, son las
siguientes:

¿Qué otra utilidad nos brindan los compiladores?


Dijimos que el compilador es como un traductor, traduce nuestro programa y genera un
archivo con código máquina listo para ejecutar. Pero para que esta traducción sea
posible, el programa debe cumplir con las reglas que impone el lenguaje de
programación. Cuando se detecta en el programa algo que no está permitido por las
normas del lenguaje (alguna instrucción mal escrita por ejemplo), el compilador muestra
un mensaje y se detiene la traducción (no compila, no traduce a código máquina).
Estos mensajes indican la anomalía puntual que ha detectado el compilador y nos ayudan
a poder corregir el error.

GCC es el compilador para el lenguaje C que traduce un programa y


generar un ejecutable en el lenguaje de la máquina. Si les interesa
pueden buscar más info acerca del mismo!

ipap.gba.gob.ar 5
Sintaxis y semántica

En el módulo anterior utilizamos un lenguaje natural para especificar las instrucciones


que debían llevarse a cabo. Esto, si bien facilita la escritura del algoritmo para quien debe
decir cómo resolver el problema, dificulta la comprensión de dicha solución por parte de
quien debe interpretarla.
Seguramente en algunos de los ejercicios que resolvimos hasta el momento, la mayoría
debe haber tenido diferentes interpretaciones ¿Por qué?
Fundamentalmente porque el lenguaje natural tiene varios significados para una palabra
(es ambiguo) y porque admite varias combinaciones para armar un enunciado. Estas dos
condiciones son “indeseables” para un lenguaje de programación por computadora.

• ¿Qué sucede si las latas de gaseosas estaban en un pack dentro de la heladera?


• ¿”Sacar una lata de gaseosa” equivale a “agarrar la lata y sacarla de la heladera” o
“agarrar la lata, sacarla de la heladera y tenerla en la mano o dejarla en la
mesada”?
• ¿Dónde se limita o asegura que con una mano no puedo agarrar más de una lata?

Por medio de estas preguntas nos damos cuenta que el significado de cada instrucción del
lenguaje debe ser exactamente conocido y como consecuencia no se pueden admitir
diferentes interpretaciones.
Un lenguaje de programación contiene un conjunto finito y preciso de instrucciones o
primitivas utilizables para especificar la solución buscada.
Desde el punto de vista del diseño del algoritmo, el contar con un número finito de
instrucciones posibles termina con el problema de decidir, de una forma totalmente
subjetiva, el grado de detalle necesario para que los pasos a seguir puedan ser
interpretados correctamente. El conjunto de instrucciones determinará cuales son los
pasos elementales posibles que se utilizarán para el diseño de la solución.

ipap.gba.gob.ar 6
Un lenguaje de programación reúne las siguientes características:
• Está formado por un número de instrucciones finito.
• Cada instrucción tiene un significado (resultado) preciso.
• Cada instrucción se escribe de un único modo.

¿Por qué son tan importantes estas características?


Porque si se quiere que una computadora interprete y ejecute las órdenes del lenguaje,
por más sofisticada que sea, requerirá que las órdenes dadas constituyan un conjunto
finito, que cada orden pueda ser interpretada de un modo único y que los problemas
solubles por la máquina sean expresables en el lenguaje.

La forma en que se debe escribir cada instrucción de un lenguaje y las reglas generales de
expresión de un problema completo en un lenguaje constituyen su sintaxis.
Por ejemplo:
• Indicar el comienzo y fin del algoritmo con palabras o símbolos especiales.
• Indicar el fin de cada instrucción con un punto y coma.
• Encerrar entre llaves el conjunto de instrucciones dentro de una estructura de
control.

El significado de cada instrucción del lenguaje y el significado global de determinados


símbolos del lenguaje constituyen su semántica.
Dado que cada instrucción debe tener un significado preciso, la semántica de cada
instrucción es una indicación exacta del efecto de dicha instrucción. Por ejemplo ¿Cuál
sería el efecto de una instrucción del siguiente tipo que vimos en el módulo 1:
si (condición)

sino

El efecto sería:
1. Evaluar la condición.
2. Si la condición es Verdadera, realizar las acciones indicadas antes del sino.
3. Si la condición es Falsa realizar las acciones indicadas a continuación del sino.

ipap.gba.gob.ar 7
Componentes de un Programa

Un programa es un conjunto de instrucciones u órdenes ejecutables sobre una


computadora, que permite cumplir con una función o tarea específica (dichas órdenes
están expresadas en un lenguaje de programación concreto).
Las componentes básicas de un programa son instrucciones y datos. Un programa está
escrito en un lenguaje de programación.

PROGRAMA = ALGORITMO + DATOS


Algoritmo: secuencia de pasos (instrucciones) a realizar sobre una computadora para
alanzar un resultado deseado en un tiempo finito.
Datos: es una representación de un objeto, del mundo real mediante la cual podemos
modelizar aspectos del problema que se quiere resolver con un programa sobre una
computadora.
Por ejemplo: un número, una letra, nombre de una persona.

Los algoritmos generalmente operan sobre datos de distinta naturaleza (números, letras,
símbolos, etc.)
Por lo tanto, los programas que implementan dichos algoritmos, necesitan alguna manera
de representarlos.

Tipos de Datos

Un tipo de dato es una clase de objetos de datos ligados a un conjunto de operaciones


para crearlos y manipularlos.

Los tipos de datos se caracterizan por:


-un rango de valores posibles (por ejemplo, para un tipo de dato de número
entero, tomar valores entre -4.294.967.296 y +4.294.967.296).
-un conjunto de operaciones realizables sobre ese tipo (sumar, restar, asignar un
valor).
-una representación (poder identificar el tipo de dato).
Los diferentes tipos de datos deben especificarse y a esta especificación dentro de un
programa se la conoce como DECLARACIÓN
Una vez declarado un tipo, podemos asociar al mismo variables, es decir nombres
simbólicos que pueden tomar los valores característicos del tipo.

ipap.gba.gob.ar 8
Variables

Una variable es una zona de memoria cuyo contenido va a ser de alguno de los tipos de
datos.

Una variable, en realidad, no es más que un nombre para identificar una posición de
memoria donde el programa podrá guarda distintos valores.
La dirección de esta zona se asocia con el nombre de la variable automáticamente.
Un programa debe definir todas las variables que utilizará antes de comenzar a utilizarlas,
a fin de indicarle al compilador de que tipo serán y, por tanto, cuánta memoria debe
destinar para albergar a cada una de ellas.

Entorno de desarrollo Code::Blocks.

Si bien es posible compilar y ejecutar programas escritos en lenguaje C desde la línea de


comando. Es muy beneficioso utilizar un entorno de desarrollo acorde al lenguaje donde
nos brinde ayuda para escribir nuestro código y nos facilite la tarea de compilar, ejecutar
y probar nuestros programas.
Code::Blocks es un entorno de desarrollo multiplataforma para programar en lenguaje C y
C++. Se encuentra bajo una licencia GNU, lo cual lo hace libre y gratuito. Al ser
multiplataforma es posible descargar e instalar el entorno en diversos sistemas
operativos, como Windows, Linux o Mac OS X.

ipap.gba.gob.ar 9

También podría gustarte