Vous êtes sur la page 1sur 26

Unidad 3

LENGUAJES DE PROGRAMACIN

Para que un procesador realice un proceso se le debe suministrar en primer lugar un algoritmo
adecuado. El procesador debe ser capaz de interpretar el algoritmo, lo que significa:

Comprender las instrucciones de cada paso
Realizar las operaciones correspondientes.

Cuando el procesador es una computadora, el algoritmo se ha de expresar en un formato que se
denomina programa, ya que el pseudocdigo o el diagrama de flujo no son comprensibles por la
computadora, aunque pueda entenderlos cualquier programador. Un programa se escribe en un
lenguaje de programacin y las operaciones que conducen a expresar un algoritmo en forma de
programa se llaman programacin. As pues, los lenguajes utilizados para escribir programas de
computadoras son los lenguajes de programacin y programadores son los escritores y
diseadores de programas. El proceso de traducir un algoritmo en pseudocdigo a un lenguaje de
programacin se denomina codificacin, y el algoritmo escrito en un lenguaje de programacin se
denomina cdigo fuente.

En la realidad la computadora no entiende directamente los lenguajes de programacin sino que se
requiere un programa que traduzca el cdigo fuente a otro lenguaje que s entiende la mquina
directamente, pero muy complejo para las personas; este lenguaje se conoce como lenguaje
mquina y el cdigo correspondiente cdigo mquina. Los programas que traducen el cdigo
fuente escrito en un lenguaje de programacin a cdigo mquina se denominan traductores.

Hoy en da, la mayora de los programadores emplean lenguajes de programacin como C++, C,
C#, Java, Visual Basic, XML, HTML, Perl, PHP, JavaScript..., aunque todava se utilizan, sobre
todo profesionalmente, los clsicos COBOL, FORTRAN, Pascal o el mtico BASIC.
Estos lenguajes se denominan lenguajes de alto nivel y permiten a los profesionales resolver
problemas convirtiendo sus algoritmos en programas escritos en alguno de estos lenguajes de
programacin.

ESTRUCTURA BSICA DE UN PROGRAMA
Un programa de computadora es un conjunto de instrucciones rdenes dadas a la mquina- que
producirn la ejecucin de una determinada tarea. En resumen es un medio para conseguir un fin.
El proceso de programacin es, por consiguiente un proceso de solucin de problemas y el
desarrollo de un programa requiere de las siguientes fases:



PARTES CONSTITUTIVAS DE UN PROGRAMA

El programador debe establecer el conjunto de especificaciones que debe contener un programa:
entrada, salida y algoritmos de resolucin, que incluirn las tcnicas para obtener las salidas a
partir de las entradas.

El programador debe establecer de donde provienen las entradas al programa; que en cualquier
caso, procedern de un dispositivo de entrada. El proceso de introduccin de datos en la memoria
de la computadora se denomina entrada de datos, operacin de lectura o accin de leer.
Las salidas se deben presentar en dispositivos perifricos de salida: pantalla, impresoras, discos,
etc.





INSTRUCCIONES

Un programa puede ser lineal o no lineal en base a la secuencia de ejecucin de sus instrucciones.
Un programa lineal ejecuta las instrucciones sin bifurcaciones.
Un programa es no lineal cuando interrumpe la secuencia mediante instrucciones de bifurcacin.

TIPOS DE INSTRUCCIONES

Las instrucciones disponibles en un lenguaje de programacin dependen del tipo de lenguaje, pero
las instrucciones bsicas independientes de cualquier lenguaje se clasifican en:
Instrucciones de inicio/fin
Instrucciones de asignacin
Instrucciones de lectura
Instrucciones de escritura
Instrucciones de bifurcacin

En programacin se debe diferenciar entre el diseo del algoritmo y su implementacin en un
lenguaje especfico. Los lenguajes de programacin tienen elementos bsicos que se utilizan como
bloques constructivos, as como las reglas para las que esos elementos se combinan. Estas reglas
se denominan Sintaxis del lenguaje.
Los elementos bsicos constitutivos de un programa o algoritmo son:
Palabras reservadas
Identificadores (nombres de variables)
Caracteres especiales (coma, comillas, punto y coma, etc)
Constantes
Variables
Expresiones
Instrucciones

Adems de estos elementos bsicos existen otros elementos que forman parte de los programas:
Bucles
Contadores
Acumuladores
Interruptores
Estructuras
Secuencias selectivas o repetitivas

Representacin de textos

La informacin en formato de texto se representa mediante un cdigo en el que cada uno de los
distintos smbolos del texto (tales como letras del alfabeto o signos de puntuacin) se asignan a un
nico patrnde bits. El texto se representa como una cadena larga de bits en la cual los sucesivos
patrones representan los sucesivos smbolos del texto original.
En resumen, se puede representar cualquier informacin escrita (texto) mediante caracteres. Los
caracteres que se utilizan en computacin suelen agruparse en cinco categoras:
1. Caracteres alfabticos (letras maysculas y minsculas, en una primera versin del abecedario
ingls).

A, B, C, D, E, ... X, Y, Z, a, b, c, ... , X, Y, Z

2. Caracteres numricos (dgitos del sistema de numeracin).

0, 1, 2, 3, 4, 5, 6, 7, 8, 9 sistema decimal

3. Caracteres especiales (smbolos ortogrficos y matemticos no incluidos en los grupos
anteriores).

{ } ! ? & > # ...

4. Caracteres geomtricos y grficos (smbolos o mdulos con los cuales se pueden representar
cuadros, figuras geomtricas, iconos, etc.

5. Caracteres de control (representan rdenes de control como el carcter para pasar a la
siguiente

lnea [NL] o para ir al comienzo de una lnea [RC, retorno de carro, carriage return, CR]
emitir un pitido en el terminal [BEL], etc.).
Al introducir un texto en una computadora, a travs de un perifrico, los caracteres se codifican
segn un cdigo de entrada/salida de modo que a cada carcter se le asocia una determinada
combinacin de n bits.

Los cdigos ms utilizados en la actualidad son: EBCDIC, ASCII y Unicode.
Cdigo EBCDIC (Extended Binary Coded Decimal Inter Change Code).
Este cdigo utiliza n = 8 bits de forma que se puede codificar hasta m = 28 = 256 smbolos
diferentes. ste fue el primer cdigo utilizado para computadoras, aceptado en principio por IBM.

Cdigo ASCII (American Standard Code for Information Interchange).
El cdigo ASCII bsico utiliza 7 bits y permite representar 128 caracteres (letras maysculas
y minsculas del alfabeto ingls, smbolos de puntuacin, dgitos 0 a 9 y ciertos controles de
informacin tales como retorno de carro, salto de lnea, tabulaciones, etc.). Este cdigo es el ms
utilizado en computadoras, aunque el ASCII ampliado con 8 bits permite llegar a 28 (256)
caracteres distintos, entre ellos ya smbolos y caracteres especiales de otros idiomas como el
espaol.

Cdigo Unicode
Aunque ASCII ha sido y es dominante en los caracteres se leen como referencia, hoy da se
requiere de la necesidad de representacin de la informacin en muchas otras lenguas, como el
portugus, espaol, chino, el japons, el rabe, etc. Este cdigo utiliza un patrn nico de 16 bits
para representar cada smbolo, que permite 216 bits o sea hasta 65.536 patrones de bits
(smbolos) diferentes.
Desde el punto de vista de unidad de almacenamiento de caracteres, se utiliza el archivo (fichero).
Un archivo consta de una secuencia de smbolos de una determinada longitud codificados
utilizandoASCII o Unicode y que se denomina archivo de texto. Es importante diferenciar entre
archivos de texto simples que son manipulados por los programas de utilidad denominados
editores de texto y los archivos de texto ms elaborados que se producen por los procesadores de
texto, tipo Microsoft Word.
Ambos constan de caracteres de texto, pero mientras el obtenido con el editor de texto, es un
archivo de texto puro que codifica carcter a carcter, el archivo de texto producido por un
procesador de textos contiene nmeros, cdigos que representan cambios de formato, de tipos de
fuentes de letra y otros, e incluso pueden utilizar cdigos propietarios distintos de ASCII o Unicode.

Representacin de valores nmericos

El almacenamiento de informacin como caracteres codificados es ineficiente cuando la
informacin se registra como numrica pura. Veamos esta situacin con la codificacin del nmero
65; si se almacena como caracteres ASCII utilizando un byte por smbolo, se necesita un total de
16 bits, de modo que elnmero mayor que se poda almacenar en 16 bits (dos bytes) sera 99. Sin
embargo, si utilizamos notacin binaria para almacenar enteros, el rango puede ir de 0 a 65.535
(216 1) para nmeros de 16 bits.
Por consiguiente, la notacin binaria (o variantes de ellas) es la ms utilizada para el
almacenamiento de datos numricos codificados.
La solucin que se adopta para la representacin de datos numricos es la siguiente: al introducir
un nmero en la computadora se codifica y se almacena como un texto o cadena de caracteres,
pero dentrodel programa a cada dato se le enva un tipo de dato especfico y es tarea del
programador asociar cada dato al tipo adecuado correspondiente a las tareas y operaciones que
se vayan a realizar con dicho dato.
El mtodo prctico realizado por la computadora es que una vez definidos los datos numricos de
un programa, una rutina (funcin interna) de la biblioteca del compilador (traductor) del lenguaje de
programacin se encarga de transformar la cadena de caracteres que representa el nmero en su
notacin binaria.

Existen dos formas de representar los datos numricos: nmeros enteros o nmeros reales.

Representacin de enteros
Los datos de tipo entero se representan en el interior de la computadora en notacin binaria. La
memoria ocupada por los tipos enteros depende del sistema, pero normalmente son dos, bytes (en
las versiones de MS-DOS y versiones antiguas de Windows y cuatro bytes en los sistemas de 32
bits como Windows o Linux). Por ejemplo, un entero almacenado en 2 bytes (16 bits):
1000 1110 0101 1011

Representacin de reales

Los nmeros reales son aquellos que contienen una parte decimal como 2,6 y 3,14152. Los reales
se representan en notacin cientfica o en coma flotante; por esta razn en los lenguajes de
programacin.
Existen dos formas de representar los nmeros reales. La primera se utiliza con la notacin del
punto decimal.
Ejemplos
12.35 99901.32 0.00025 9.0
La segunda forma para representar nmeros en coma flotante en la notacin cientfica o
exponencial,conocida tambin como notacin E. Esta notacin es muy til para representar
nmeros muy grandes o muy pequeos.
Ejemplos
2.52 e + 8
8.34 E 4 equivale a 8.34/104 = 0.000834
7E5
18.35e15
5.95E25
9.11e 31 equivale a 0.000000000000000000000000000000911

Representacin de caracteres

Un documento de texto se escribe utilizando un conjunto de caracteres adecuado al tipo de
documento.
En los lenguajes de programacin se utilizan, principalmente, dos cdigos de caracteres. El ms
comnes ASCII (American Standard Code for Information Interchange) y algunos lenguajes, tal
como Java, utilizan Unicode (www.unicode.org). Ambos cdigos se basan en la asignacin de un
cdigo numrico a cada uno de los tipos de caracteres del cdigo.
El cdigo ASCII bsico que utiliza 7 bits (128 caracteres distintos) y el ASCII ampliado a 8 bits (256
caracteres distintos) son los cdigos ms utilizados. As se pueden representar caracteres tales
como 'A','B', 'c', '$', '4', '5', etc.

Unidad 3
3.1 Caracteristicas del lenguaje de programacion
Lenguaje de programacin


Captura de la microcomputadora Commodore PET-32 mostrando un programa en el lenguaje de programacin BASIC, bajo
el emulador VICE en una distribucin GNU/Linux.
Un lenguaje de programacin es un idioma artificial diseado para expresar procesos que pueden ser llevadas a cabo por
mquinas como lascomputadoras. 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.
1
Est formado por un conjunto
de smbolos y reglas sintcticas y semnticas que definen su estructura y el significado de sus elementos y expresiones. Al
proceso por el cual se escribe, se prueba, se depura, se compila y se mantiene elcdigo fuente de un programa informtico se
le llama programacin.
Tambin la palabra programacin se define como el proceso de creacin de un programa de computadora, mediante la
aplicacin de procedimientos lgicos, a travs de los siguientes pasos:
El desarrollo lgico del programa para resolver un problema en particular.
Escritura de la lgica del programa empleando un lenguaje de programacin especfico (codificacin del programa).
Ensamblaje o compilacin del programa hasta convertirlo en lenguaje de mquina.
Prueba y depuracin del programa.
Desarrollo de la documentacin.
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 HTML (lenguaje para el
marcado de pginas web que no es propiamente un lenguaje de programacin, sino un conjunto de instrucciones que permiten
disear el contenido 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 pueda usar un conjunto comn de instrucciones que sean
comprendidas entre ellos para realizar la construccin de un programa de forma colaborativa.
3.2 Estructura bsica de un programa.
Como ya se ha visto, cuando se escribe un programa lo que se trata de hacer es indicarle a la
computadora cmo ha de resolver un problema. Estos programas siguen determinada estructuras,
que dependen del tipo de lenguaje que usemos y del entorno en el cual lo creemos.
principio generales

Un cargador - todo programa necesita ser cargado en la memoria por el sistema operativo. De esto
se encarga el intrprete.
Definicin de los datos - la mayora de los programas operan con datos y por lo tanto en el cdigo
fuente debemos definir que tipo de datos vamos a utilizar en el programa. Esto se realiza de
manera diferente en los distintos lenguajes. Todos los lenguajes que usaremos tienen la
posibilidad de crear una nueva definicin de datos simplemente al utilizar los datos. Veremos esto
en la prxima seccin.
Instrucciones - son la parte central del programa. Las instrucciones manipulan los datos que
hemos definido, realizan clculos, muestran los resultados, etc.
La mayora de los programas siguen una de dos estructuras:
1.- Programas de lotes
Estos se ejecutan tpicamente desde una lnea de comando o automticamente desde otra
aplicacin y tienden al siguiente patrn
Inicializacin interna de los datos
Lectura de los datos ingresados
Procesamiento de los datos
Visualizacin o ejecucin de los resultados
2.- Programas controlados por eventos
La mayor parte de las interfaces responden a eventos
Los programas controlados por eventos son generalmente as:
Inicializacin interna de los datos
Espera de los eventos
Identificacin de los eventos y actuacin en consecuencia

3.3. TRADUCCION DE UN PROGRAMA
Un compilador es un programa informtico que traduce un
programa escrito en unlenguaje de programacin a otro lenguaje de
programacin, generando un programa equivalente que la mquina ser
capaz de interpretar. Usualmente el segundo lenguaje es lenguaje de
mquina, pero tambin puede ser un cdigo intermedio (bytecode), o
simplemente texto. Este proceso de traduccin se conoce como
compilacin.
Un compilador es un programa que permite traducir el cdigo fuente de
un programa enlenguaje de alto nivel, a otro lenguaje de nivel inferior
(tpicamente lenguaje de mquina). De esta manera un programador
puede disear un programa en un lenguaje mucho ms cercano a cmo
piensa un ser humano, para luego compilarlo a un programa ms
manejable por una computadora.
Partes de un compilador
La construccin de un compilador involucra la divisin del proceso en una
serie de fases que variar con su complejidad. Generalmente estas fases
se agrupan en dos tareas: el anlisis del programa fuente y la sntesis del
programa objeto.
Anlisis: Se trata de la comprobacin de la correccin del programa
fuente, e incluye las fases correspondientes al Anlisis Lxico (que
consiste en la descomposicin del programa fuente en componentes
lxicos), Anlisis Sintctico (agrupacin de los componentes lxicos en
frases gramaticales ) y Anlisis Semntico (comprobacin de la validez
semntica de las sentencias aceptadas en la fase de Anlisis Sintctico).
Sntesis: Su objetivo es la generacin de la salida expresada en
el lenguaje objeto y suele estar formado por una o varias combinaciones
de fases de Generacin de Cdigo (normalmente se trata de cdigo
intermedio o de cdigo objeto) y de Optimizacin de Cdigo (en las que
se busca obtener un cdigo lo ms eficiente posible).
Alternativamente, las fases descritas para las tareas de anlisis y sntesis
se pueden agrupar en Front-end y Back-end:
Front-end: es la parte que analiza el cdigo fuente, comprueba su
validez, genera el rbol de derivacin y rellena los valores de la tabla de
smbolos. Esta parte suele ser independiente de la plataforma o sistema
para el cual se vaya a compilar, y est compuesta por las fases
comprendidas entre el Anlisis Lxico y la Generacin de Cdigo
Intermedio.
Back-end: es la parte que genera el cdigo mquina, especfico de una
plataforma, a partir de los resultados de la fase de anlisis, realizada por
el Front End.
Esta divisin permite que el mismo Back End se utilice para generar
el cdigo mquina de varios lenguajes de programacin distintos y que el
mismo Front End que sirve para analizar el cdigo fuente de un lenguaje
de programacin concreto sirva para generarcdigo mquina en varias
plataformas distintas. Suele incluir la generacin y optimizacin del
cdigo dependiente de la mquina.
El cdigo que genera el Back End normalmente no se puede ejecutar
directamente, sino que necesita ser enlazado por un
programa enlazador (linker).
Tipos de compiladores
Esta taxonoma de los tipos de compiladores no es excluyente, por lo que
puede haber compiladores que se adscriban a varias categoras:
Compiladores cruzados: generan cdigo para un sistema distinto del que
estn funcionando.
Compiladores optimizadores: realizan cambios en el cdigo para mejorar
su eficiencia, pero manteniendo la funcionalidad del programa original.
Compiladores de una sola pasada: generan el cdigo mquina a partir de
una nica lectura del cdigo fuente.
Compiladores de varias pasadas: necesitan leer el cdigo fuente varias
veces antes de poder producir el cdigo mquina.
Compiladores JIT (Just In Time): forman parte de un intrprete y
compilan partes del cdigo segn se necesitan.
Proceso de compilacin
Es el proceso por el cual se traducen las instrucciones escritas en un
determinado lenguaje de programacin a lenguaje mquina. Adems de
un traductor, se pueden necesitar otros programas para crear un
programa objeto ejecutable. Un programa fuente se puede dividir en
mdulos almacenados en archivos distintos. La tarea de reunir el
programa fuente a menudo se confa a un programa distinto,
llamado preprocesador. El preprocesador tambin puede expandir
abreviaturas, llamadas a macros, a proposiciones del lenguaje fuente.
Normalmente la creacin de un programa ejecutable (un tpico.exe
para Microsoft Windows o DOS) conlleva dos pasos. El primer paso se
llama compilacin (propiamente dicho) y traduce el cdigo fuente escrito
en un lenguaje de programacin almacenado en un archivo a cdigo en
bajo nivel (normalmente en cdigo objeto, no directamente a lenguaje
mquina). El segundo paso se llama enlazado en el cual se enlaza el
cdigo de bajo nivel generado de todos los ficheros y subprogramas que
se han mandado compilar y se aade el cdigo de las funciones que hay
en las bibliotecas del compilador para que el ejecutable pueda
comunicarse directamente con el sistema operativo, traduciendo as
finalmente el cdigo objeto a cdigo mquina, y generando un mdulo
ejecutable.
Etapas del Proceso de Compilacin
El proceso de traduccin se compone internamente de varias etapas o
fases, que realizan distintas operaciones lgicas. Es til pensar en estas
fases como en piezas separadas dentro del traductor, y pueden en
realidad escribirse como operaciones codificadas separadamente aunque
en la prctica a menudo se integren juntas.
Fase de anlisis
Anlisis lxico
Artculo principal: Analizador lxico
El anlisis lxico constituye la primera fase, aqu se lee el programa
fuente de izquierda a derecha y se agrupa en componentes lxicos
(tokens), que son secuencias de caracteres que tienen un significado.
Adems, todos los espacios en blanco, lneas en blanco, comentarios y
dems informacin innecesaria se elimina del programa fuente. Tambin
se comprueba que los smbolos del lenguaje (palabras
clave, operadores,...) se han escrito correctamente.
Como la tarea que realiza el analizador lxico es un caso especial de
coincidencia de patrones, se necesitan los mtodos de especificacin y
reconocimiento de patrones, se usan principalmente los autmatas
finitos que acepten expresiones regulares. Sin embargo, un analizador
lxico tambin es la parte del traductor que maneja la entrada del cdigo
fuente, y puesto que esta entrada a menudo involucra un importante
gasto de tiempo, el analizador lxico debe funcionar de manera tan
eficiente como sea posible.
Anlisis sintctico
Artculo principal: Analizador sintctico
En esta fase los caracteres o componentes lxicos se agrupan
jerrquicamente en frases gramaticales que el compilador utiliza para
sintetizar la salida. Se comprueba si lo obtenido de la fase anterior es
sintcticamente correcto (obedece a la gramtica del lenguaje). Por lo
general, las frases gramaticales del programa fuente se representan
mediante un rbol de anlisis sintctico.
La estructura jerrquica de un programa normalmente se expresa
utilizando reglasrecursivas. Por ejemplo, se pueden dar las siguientes
reglas como parte de la definicin de expresiones:
Cualquier identificador es una expresin.
Cualquier nmero es una expresin.
Si expresin1 y expresin2 son expresiones, entonces tambin lo son:
expresin1 + expresin2
expresin1 * expresin2
( expresin1 )
Las reglas 1 y 2 son reglas bsicas (no recursivas), en tanto que la regla
3 define expresiones en funcin de operadores aplicados a otras
expresiones.
La divisin entre anlisis lxico y anlisis sintctico es algo arbitraria. Un
factor para determinar la divisin es si una construccin del lenguaje
fuente es inherentemente recursiva o no. Las construcciones lxicas no
requieren recursin, mientras que las construcciones sintcticas suelen
requerirla. Por ejemplo, no podemos emparejar de manera apropiada los
parntesis de las expresiones, o las palabras begin y end en
proposiciones sin imponer alguna clase de estructura jerrquica o de
anidamiento a la entrada.
Anlisis semntico
La fase de anlisis semntico revisa el programa fuente para tratar de
encontrar errores semnticos y rene la informacin sobre los tipos para
la fase posterior de generacin de cdigo. En ella se utiliza la estructura
jerrquica determinada por la fase de anlisis sintctico para identificar
los operadores y operandos de expresiones y proposiciones.
Fase de sntesis
Consiste en generar el cdigo objeto equivalente al programa fuente.
Slo se genera cdigo objeto cuando el programa fuente est libre de
errores de anlisis, lo cual no quiere decir que el programa se ejecute
correctamente, ya que un programa puede tener errores de concepto o
expresiones mal calculadas. Por lo general el cdigo objeto es cdigo de
mquina relocalizable o cdigo ensamblador.
Generacin de cdigo intermedio
Despus de los anlisis sintctico y semntico, algunos compiladores
generan una representacin intermedia explcita del programa fuente. Se
puede considerar esta representacin intermedia como un programa para
una mquina abstracta. Esta representacin intermedia debe tener dos
propiedades importantes; debe ser fcil de producir y fcil de traducir al
programa objeto.
Optimizacin de cdigo
La fase de optimizacin de cdigo consiste en mejorar el cdigo
intermedio, de modo que resulte un cdigo mquina ms rpido de
ejecutar. Esta fase de la etapa de sntesis es posible sobre todo si el
traductor es un compilador (difcilmente un intrprete puede optimizar el
cdigo objeto).
EL ENLACE DE UN PROGRAMA SE DA DE LA SIGUIENTE MANERA:
FUENTE: http://www.uhu.es/04004/material/Transparencias3.pdf
Fase de compilacin y linkado (link, montado o enlace)
Un programa escrito en un lenguaje de alto nivel, no puede
ser ejecutado directamente por un ordenador, sino que debe ser
traducido a lenguaje mquina.
Las etapas por las que debe pasar un programa escrito en un lenguaje
de programacin, hasta poder ser ejecutable
son:
Programa fuente: Programa escrito en un
lenguaje de alto nivel (texto ordinario que
contiene las sentencias del programa en un
lenguaje de programacin). Necesita ser
traducido a cdigo mquina para poder ser
ejecutado.
Compilador: Programa encargado de traducir
los programas fuentes escritos en un
lenguaje de alto nivel a lenguaje mquina y
de comprobar que las llamadas a las
funciones de librera se realizan
correctamente.
Programa (o cdigo) objeto: Es el programa
fuente traducido (por el compilador) a cdigo
mquina. An no es directamente
ejecutable.
Programa Ejecutable: Traduccin completa a cdigo mquina, realizada
por el enlazador, del programa fuente y que ya es directamente
ejecutable.
Montador o enlazador (Linker ): Es el programa encargado de insertar al
programa objeto el cdigo mquina de las funciones de las libreras
(archivos de biblioteca) usadas en el programa y realizar el proceso de
montaje, que producir un programa ejecutable .exe. Las libreras son
una coleccin de cdigo (funciones) ya programado y traducido a cdigo
mquina, listo para utilizar en un programa y que facilita la labor del
programador.

Errores en tiempo de compilacin

Si el programa fuente es sintcticamente correcto, el compilador
generar el cdigo objeto, en caso contrario mostrar una lista con los
errores encontrados, no generndose ningn programa objeto, para que
procedamos a su depuracin.
Los compiladores emiten mensajes de error o de advertencia durante las
fases de compilacin, de enlace o de ejecucin de un programa:
Los errores en tiempo de compilacin son los que se producen antes de
la ejecucin del programa, durante el proceso de compilacin del
programa.

Los errores que se pueden producir en la fase de compilacin son:
Errores fatales: Son raros. Indican errores internos del compilador.
Cuando ocurre la compilacin se detiene inmediatamente.
Errores de sintaxis: Son los errores tpicos de sintaxis. No detienen la
compilacin sino que al finalizar sta se mostrar la lista con todos los
errores encontrados. Algunos errores suelen ser consecuencia de otros
cometidos con anterioridad. Con este tipo de errores no se puede
obtener un programa objeto y por lo tanto tampoco el ejecutable.
Advertencias o avisos (warnings): Indican que hay lneas de cdigo
sospechosas que a pesar de no infringir ninguna regla sintctica, el
compilador las encuentra susceptibles de provocar un error. Cuando se
detecta un warning la compilacin no se detiene. Si en un programa
fuente slo se detectan warnings, se podr obtener un programa objeto,
que tras el linkado dar lugar a un programa ejecutable.
Una vez escritos, pueden ser ejecutados de diversas formas:
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 en
estaciones Unix y que fue escrito para el proyecto GNU o Python, cuya
peculiaridad adems de ser multipropsito, est en su facilidad de uso y
productividad y de hecho, es usado en parte de los proyectos Google y YouTube.
Traduciendo el cdigo escrito del programa (lo que se denomina 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 en su sintaxis caractersticas de medio y bajo nivel y el
compilador gcc usado en el proyecto GNU.
Programas que se auto-modifican
Un programa en ejecucin se trata de forma diferente que los datos en los cuales
opera. De cualquier forma, en algunos casos sta distincin es ambigua,
especialmente cuando un programa se modifica a s mismo. El programa
modificado es secuencialmente ejecutado como parte del mismo programa. Se
pueden escribir programas auto-modificables en lenguajes como Lisp, COBOL y
Prol
Ejecucin y almacenamiento de los programas
Tpicamente, los programas se almacenan en una memoria no voltil (por
ejemplo un disco), para que luego el usuario de la computadora, directa o
indirectamente, solicite su ejecucin. Al momento de dicha solicitud, el programa
es cargado en la memoria de acceso aleatorio o RAM del equipo, bajo el control
del software llamado sistema operativo, el cual puede acceder directamente al
procesador. El procesador ejecuta (corre) el programa, instruccin por
instruccin hasta que termina. A un programa en ejecucin se le suele llamar
tambin proceso. Un programa puede terminar su ejecucin en forma normal o
por causa de un error, dicho error puede ser de software o de hardware.

Pasos para la elaboracin y Ejecucin de un programa:
Los pasos a seguir los podemos resumir de la siguiente manera:
1 . Escribir el cdigo fuente, por ejemplo con el editor del EID.
2 . Compilar el fichero fuente
3 . Si se producen errores de sintaxis (o warnings) volver al editor y eliminar los
errores de sintaxis.
4 . Si no hay errores se obtendr el cdigo objeto y el enlazador construir el
archivo ejecutable.
5 . Una vez tengamos el archivo ejecutable, ser el sistema operativo el
encargado de colocar el programa en la memoria central y ejecutarlo.
6 . Comprobar el funcionamiento del programa.
7 . Si se detecta errores o un mal funcionamiento del programa, activar el
depurador para trazar el programa y ejecutarlo sentencia a sentencia.
8 . Una vez que hayamos encontrado la causa del error, volveremos al editor y lo
corregimos.
9 . El proceso de compilar, enlazar y ejecutar el programa lo repetiremos hasta
que no se produzcan errores.

Fase de ejecucin de un programa
Una vez que tenemos el programa en lenguaje mquina, para poderlo ejecutar
hay que introducirlo en la memoria.
1. Una utilidad del S.O. llamada cargador colocar el programa, y sus datos de
entrada, en memoria principal, preparndolo para su ejecucin.
2. El S.O. le pasa el control a la C.P.U. para que comience la ejecucin del
programa, realizando la Unidad de Control los siguientes pasos (fases):
Captacin de la instruccin: Lee de la Memoria Principal la instruccin a
ejecutar.
Ejecucin de la instruccin: Interpreta la instruccin leda y enva seales de
control a las unidades que deban intervenir en su ejecucin. Tras dicha ejecucin
se establece cul ser la siguiente instruccin a ejecutar.
3.1 Caractersticas del lenguaje de programacin
Las caractersticas ms comunes de un lenguaje de programacin junto a
las instrucciones, que realizan una operacin concreta, suelen ser los elementos
que lo forman, ya que para que un programa haga algo, hay que indicrselo por
medio de una serie de rdenes elementales que est disponibles en casi todos los
lenguajes, pero que segn el nivel se harn ms directamente o indirectamente.
Las operaciones que pueden realizar las instrucciones pueden ser condicionales,
de asignacin, lgica, comparacin, aritmticas, etc
Los elementos que permiten a los lenguajes realizar transacciones de datos se les
llamanvariables, y cuando ese elemento tiene la capacidad de operar con varios
datos del mismo tipo se le llama arreglo o array. Los tipos en una variable es lo
que indica el dato que almacena o soporta. La principal ventaja de definir tipos
para una variable o array, es que de esa forma se puede reservar memoria acorde
con los datos o la cantidad que se quiere trabajar, gestionando mucho mejor la
memoria y facilitando la operacin de los datos.
Los elementos que permiten la bifurcacin se les llama condicionantes, con ellos
se redirige el flujo del programa segn los casos o supuestos.
Aunque por medio de los elementos condicionantes se puede redirigir el flujo, el
direccionamiento se realiza por una llamada o por el uso de una instruccin de
salto que contina la ejecucin del programa a una direccin determinada. Por lo
tanto existen unos tipos de elementos que estn diseados para realizar saltos de
forma condicional, si necesidad de indicarles que vuelvan a la condicin una vez
acaben lo que tienen que hacer en caso de cumplirse la condicin. A esos
elementos se les llaman bucles, porque se repiten constantemente con solamente
indicar la condicin que se debe cumplir para que se repita.
Otro elemento es la funcin, citado al comentar el paradigma funcional, es un o
son elementos que pueden tomar valores y devolver un valor, fruto de un proceso
personalizado. La forma de crear funciones depender del lenguaje de
programacin.
Y por ltimo, otras caractersticas son la sintaxis, la forma en que se construye la
estructura del programa o se ejecuta una operacin, que depender tambin del
lenguaje de programacin.


3.2 Estructura bsica de un programa.
La estructura bsica de un programa suele componerse primeramente de
una parte declarativa, donde se definen los elementos que participaran en el
programa, luego le sigue la inicializacin, que consiste en asignar valores
iniciales a los elementos definidos o creados y por ltimo otra parte que difiere en
muchos lenguajes es el cuerpo principal del programa, que puede ser tanto una
funcin, una clase, o una parte del programa que indica el comienzo y fin.

Ejemplo de una estructura bsica de un programa en C#:

// ** Declaracin
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

// Espacio de trabajo
namespace ejemploDeUnaEstructuraDeUnPrograma
{
// El programa principal en C# incluye la funcin esttica
Main()
class Programa
{
// ** Declaracin de una funcin esttica que no
devuelve valor
static void MuestraMensaje(String mensaje)
{
Console.Out.WriteLine(mensaje);
Console.In.Read();
}

// *** Comienzo de la aplicacin
static void Main(string[] args)
{
// * Declaracin e inicializacin de una variable
String mensaje = "Hola mundo";

// * Resto del programa...
mensaje = "Bye bye";
MuestraMensaje(mensaje);
}
// *** fin de la aplicacin o programa
}
}

3.3 Traduccin de un programa: compilacin, enlace de un programa,
errores en tiempo de compilacin.
Una vez que tengamos listo el programa el siguiente paso es la ejecucin. Para
pasar a ese paso y dependiendo de la plataforma donde se desarrolle,
previamente habr que compilar el programa o traducirlo a un cdigo que la
plataforma pueda entenderlo para que lo ejecute, y dicho proceso es realizado
desde un programa denominado compilador.
Una vez compilado el programa, este puede requerir de otros programas
compilados por separado, como son el caso de las libreras estticas, por lo que
para unir los ficheros compilados existe otro programa que es denominado
el enlazador.
Puede ocurrir, que el proceso de compilacin no se lleve a cabo, esto
principalmente se debe a que el programa compilador suele estar diseado para
evitar que programas que no estn correctamente funcionales puedan ser
compilados, o porque hay partes del programa que el compilador no comprende
como puede ser un error sintctico. Tambin puede darse el caso en que el
programa es compilado correctamente pero contenga lneas que no son usadas o
variables sin inicializar, en definitiva, irregularidades que pueden generar un
resultado indeseado, en esos casos el compilador suele indicarlo con avisos.

3.4 Ejecucin de un programa.


Compilado y enlazado el programa, este ya est listo para ser ejecutado. El
programa una vez ejecutado pasar a ser gestionado por el sistema o plataforma,
que se encargar de cargarlo en memoria y se mantendr como un proceso en
ejecucin. Durante la ejecucin de un proceso si este no se comunica con el
sistema de forma peridica, el sistema puede darlo por perdido o que no
responde por lo que lo notificar al usuario. Bucles
infinitos, funcionesrecursivas o gestionar la memoria directamente son muchas
veces los causantes de que los procesos dejen de responder.

3.5 Elementos del lenguaje: datos, literales y constantes, identificadores,
variables, parmetros, operadores, entrada y salida de datos.
Normalmente la mquina trabaja con bits, pero trabajar de esta forma para
resolver o desarrollar soluciones informticas encaminadas a la contabilidad o
gestin empresarial es bastante incmodo. As que los lenguajes de programacin
facilitan trabajar con tipos de datos. Como antes se coment el tipo describe el
dato almacenado, pudiendo ser estosnumricos o con letras. Los datos
numricos en muchos lenguajes pueden ser catalogados en enteros o flotantes.
Tambin algunos lenguajes incluyen el tipo booleano, que es un dato que
solamente puede ser cierto o falso, similar al bit, que suele usarse
como bandera para indicar si una operacin se resolvi con xito o no.
Los datos pueden definirse desde el programa pero requieren de un contenedor,
este contenedor puede permitir que su contenido sea modificado tanta veces
como se requiera o para que sea inalterable. Al primer caso de contenedor se le
denomina variable y al segundoconstante por obvias razones ya mencionadas.
El valor asignado a la variable o constante se le denomina literal, mientras que el
nombre que se le da al contenedor, sea variable o constante, se le
denomina identificador. Los identificadores que se usan para describir los datos
que tomar una estructura como puede ser una funcin, son
denominadosparmetros, pero no dejan de ser variables cuando son usados
dentro la misma.
Los operadores, normalmente smbolos, indican al lenguaje la operacin que se
realizar, que como antes se cit pueden ser aritmticas, aquellas basadas en
operaciones de clculo; deasignacin, para asignar un valor a un
elemento; lgicos; condicionales o de comparacinentre otros.
La entrada y salida de datos normalmente se realizan desde funciones
integradas en el lenguaje que median con la mquina o la plataforma para facilitar
al programador estas tareas, son funciones indispensables en cualquier programa
ya que ofrecen una solucin a la comunicacin entre el usuario y la mquina,
aunque estas funciones tambin son usadas para permitir que una mquina se
comunique con otras mquinas.
Implementacin en C# de todo lo comentado:

String mensajeVariable = "Soy una cadena literal";

//identificador operador (asignacion)
mensajeVariable =
//literal operador (concatenacin) literal
"Bien" + "venido";

const String mensajeConstante = "Nadie podr
cambiarme!!";

// La lnea de abajo no es vlida, genera error
mensajeConstante = "Creistes que no cambiaras!!";

// Salida de datos (por pantalla), usando una
funcin que tiene definido un PARMETRO de tipo String. En
este caso toma un argumento literal.
Console.Out.Write("Por favor, introduce t nombre
y pulsa enter: ");

// Entrada de datos (desde el
teclado) mensajeVariable=Console.In.ReadL
ine();


PREDEFINIDOS POR LOS LENGUAJES
: Enteros
Decimales
De cadena
Bolanos

Tipo de
dato

Rango

Conversin
byte
0 .. 255

System.Byte
sbyte
-128 .. 127

System.SByte
short
-32,768 .. 32,767

System.Int16
ushort 0 .. 65,535 System.UInt16
int
-2,147,483,648 .. 2,147,483,647

System.Int32
uint
0 .. 4,294,967,295

System.UInt32
long
-9,223,372,036,854,775,808 ..
9,223,372,036,854,775,807

System.Int64
ulong
0 .. 18,446,744,073,709,551,615

System.UInt64
float -3.402823e38 .. 3.402823e38 System.Single
double
-1.79769313486232e308 ..
1.79769313486232e308

System.Double
decimal
-79228162514264337593543950335 ..
79228162514264337593543950335

System.Decimal
char
Un caracter.

System.Char
string
Una cadena de caracters.

-
bool True or False. System.Boolean



IDENTIFICADORES.
De igual manera que los identificadores en la solucin algortmica,
C# establece sus reglas para la definicin de estos:

Siempre debern iniciar con una
letra. Pueden contener letras y nmeros.
No se permiten caracteres especiales. El
nico permitido es _ .
No debe haber espacios en blanco.
Hace diferencia entre maysculas y
minsculas. Deben ser significativos y tener
relacin con el objeto que representan.
No deben ser palabras reservadas por el
lenguaje de programacin.


Ejemplos

NOMBRE Puede representar el nombre de una persona o ciudad.
NO_CONTROL Puede representar el nmero de control de alumno.
PRECIO Puede representar el precio de un artculo.

OPERADORES, OPERANDOS Y EXPRESIONES.

Un operador es un smbolo que le da instrucciones al lenguaje de
programacin para que ejecute alguna operacin, o accin, en uno o
ms operandos.

Un operando es algo sobre lo cual acta un operador (podra
considerarse como una expresin).

El operador de asignacin permite evaluar una expresin y calculado
su valor guardarlo en una posicin de memoria asignando dicho valor
a una variable. Dicho de otra manera, el valor calculado de la
expresin queda referenciado a la variable a la cual se le asigna.
La forma general de uso en lenguaje C# es:
Variable = Expresin;

Por ejemplo X=Y

Los operadores matemticos binarios que maneja C# son:

Los operadores matemticos binarios que maneja C#son:

Operador Smbolo Accin Ejemplo
Suma + Suma dos operandos X + Y
Resta - Resta el segundo operando del primero X - Y
Multiplicacin * Multiplica sus dos operandos X * Y
Divisin / Divide el primer operando entre el
segundo
X / Y
Mdulo % Toma la parte residuo de una divisin X%Y

C# tambien utiliza los operadores unarios

Operador/Smbolo Accin Ejemplo
++ Incremento en uno X++
-- Decremento en uno Y--


PRIORIDAD DE OPERADORES, EVALUACIN DE EXPRESIONES.

C# para las operaciones que tienen dos o ms operandos establece reglas que
permitan determinar el orden de las operaciones, se denominan reglas de
prioridad o precedencia y son:

1. Las operaciones que estn cerradas entre parntesis se evalan primero. Si
existen diferentes parntesis anidados (interiores unos a otros), las expresiones
ms internas se evalan primero.
2. Las operaciones aritmticas dentro de una expresin suelen seguir el or
den de prioridad especificado enla tabla.

3. En caso de coincidir varios operandos de igual prioridad en una expresin o
subexpresin encerrada entre parntesis, el orden de prioridad en este caso esde
izquierda a derecha.

3.6 Errores en tiempo de ejecucin.
Los errores en tiempo de ejecucin son aquellos normalmente originados por el
mal funcionamiento del programa. La causa a los errores de tiempo de ejecucin
suelen encontrarse por diversos motivos, la ms comn es cuando se
incluyen bucles infinitos en donde no existe comunicacin con el sistema o la
plataforma donde se ejecuta. Otra causa similar es la de abusar de
la recursividad, ya que adems de poder originar un bucle infinito, a ello se le
suma un consumo infinito de recursos. Luego otras causas, dependiendo del
lenguaje, pueden estar originadas a la mala gestin de los recursos, como por
ejemplo una solicitud de una direccin de memoria inexistente, o escritura de
memoria en zonas reservadas para otros procesos que se encuentran
ejecutndose, etc Es por eso que en el diseo del programa se tiene que tener
en cuenta los supuestos que se resuelvan con problemas o sin xito.

Vous aimerez peut-être aussi