Está en la página 1de 20

3.

1 Caractersticas del lenguaje de programacin


Lenguaje de programacin
Un lenguaje de programacin es un idioma artificial diseado para expresar procesos que pueden
ser llevadas a cabo por mquinas como 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.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 el
cdigo 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 havisto, 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.
Principios 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.
LaMayorade 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

EstructuraBsicade un programa en C/C++:


La estructura de un programa es una cuestin que puede ser abordada desde varios puntos de
vista, consideremos para su estudio solo este caso. .
1. Componentes lgicos se refiere a los diversos elementos que componen una
aplicacin, desde los ms complejos hasta los ms simples. Si comparamos un programa con
un edificio, los elementos iran desde el edificio como un todo, a los ladrillos (sus elementos ms
pequeos).
2. Estructura lgica.Desde el punto de vista lgico, puede considerarse que los
programas comprenden dos tipos de elementos diferentes:estructuras de datos y algoritmos. O
dicho en otras palabras:datos, e instrucciones para su manipulacin. Su representacin
codificada adopta dos formas: una entendible por la mquina (ejecutable y ficheros de datos) y
otra entendible por el humano (fuente). Para el conjunto de ambas puede considerarse una
escala conceptual que, si vamos de lo general a lo particular, podemos representarla como
sigue:

Aplicacin:Comprende ejecutables y datos. Puede haber mltiples ficheros de ambos tipos


(ficheros de datos y ejecutables)
Programa: Parte de una aplicacin (cdigo) que puede cargarse y ejecutarse
independientemente.
Fichero fuente:Se llaman as (abreviadamente) los ficheros que contienen el cdigo fuente
(ficheros .C / .CPP) escrito por el programador
Funcin: Una parte de un programa (subrutina) con un nombre, que puede ser invocada
(llamada a ejecucin) desde otras partes tantas veces como se desee. Opcionalmente puede
recibir valores (argumentos); se ejecuta y puede devolver un valor
Bloque: Lista, que puede estar vaca, de sentencias delimitadas
Sentencia: Las sentencias se componen de una o varias expresiones y tienen sentido
computacional completo
Expresin: Las expresiones son secuencias de tokens (operadores, operandos y elementos
de puntuacin) que especifican una computacin; tienen sentido computacional en s mismas.
Son los bloques de computacin ms simples con los que se construye un programa [6 5]
aunque no pueden ejecutarse separadamente sino cuando forman una sentencia. Nota: la
diferencia entre sentencia y expresin es algo arbitraria.

3.3 Traduccin de un programa: compilacin, enlace de un programa, errores en


tiempo de compilacin
Un compilador es unprograma informticoquetraduce un programaescrito en unlenguaje de
programacina otro lenguaje de programacin, generando un programa equivalente que la
mquina ser capaz de interpretar. Usualmente el segundo lenguaje eslenguaje 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 elcdigo fuentede un programa enlenguaje
de alto nivel, a otro lenguaje de nivel inferior (tpicamentelenguaje 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 compilarloa 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 alAnlisis Lxico(que consiste en la descomposicin del programa fuente en
componentes lxicos),Anlisis Sintctico(agrupacin de los componentes lxicos en frases
gramaticales ) yAnlisis 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 ellenguaje objetoy 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

Alternativamente, las fases descritas para las tareas deanlisis y sntesisse pueden agrupar en
Front-end y Back-end:
Front-end: es la parte que analiza elcdigo fuente, comprueba su validez, genera elrbol de
derivaciny rellena los valores de latabla 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 elAnlisis Lxicoy 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 elFront End.
Esta divisin permite que el mismoBack Endse utilice para generar elcdigo mquinade
varioslenguajes de programacindistintos y que el mismoFront Endque sirve para analizar el
cdigo fuente de unlenguaje de programacinconcreto sirva para generarcdigo mquinaen
varias plataformas distintas. Suele incluir la generacin y optimizacin del cdigo dependiente
de la mquina.
El cdigo que genera elBack Endnormalmente no se puede ejecutar directamente, sino que
necesita ser enlazado por un programaenlazador(linker).

Preproceso
Lo primero que el compilador de C hace es pasar nuestro programa por el preprocesador.El
preprocesador se encarga de interpretar cada una de las directivas que aparecen en el
programa y de expandir las macros. Respecto a las directivas, son todos a aquellas lneas que
comienzan con un smbolo #. Hay un conjunto de directivas que son parte del estndar ANSI se
comentan en el apndice.

Compilacin del programa.


Una vez que el programador acaba de escribir el programa en su terminal y lo almacena en un
archivo debe traducirlo a cdigo ejecutable por la maquina. Este proceso se llama en su conjunto
compilacin del cdigo fuente en C.
#include<stdio.h>
Hace que se inserte el fichero stdio.h en el lugar donde aparece esa lnea. Como el lector puede
ver si examina el fichero stdio.h, lo que hay en el son declaraciones de prototipos de funciones y
de tipos de datos, perfectamente validos en C.
El compilador se encarga de la etapa de preproceso, justo antes de iniciar la compilacin. Por lo
tanto , esta etapa pasa normalmente desapercibida, aunque puede indicrsele al compilador que
solo efectu el preproceso, para ver cmo queda el programa despus de l. La forma de
solicitrselo depende de cada compilador en concreto. Una vez finalizado el preproceso , nuestro
programa que da listo para que pueda comenzarse su traduccin a cdigo ejecutable.
Enlace

La siguiente etapa de compilacin es el enlace con las funciones presentes en las libreras de
funciones. Si nuestro programa utiliza solo funciones ANSI, no suele ser necesario indicarle al
compilador en que libreras estn esas funciones. Sin embargo hay excepciones. Por ejemplo si
utilizamos funciones matemticas de la librera estndar en nuestro programa (es decir en el
programa aparece #include <math.h>, opcin lm. Sin embargo, si utilizamos funciones

Errores en tiempo de compilacin


El compilador es capaz de detectar algunos errores que pueden cometerse en el desarrollo de
un programa escrito en C. Evidentemente, no puede detectar todos ya que un programa
puede funcionar perfectamente pero no hacer lo que se espera de l. Los errores detectados
por el compilador son de dos clases: errores propiamente dichos (errors), y advertencias
(warnings)
Los errores se deben a cuestiones sintcticas relacionadas con el lenguaje. El compilador
enumera los errores que se encontraron, y luego detiene la compilacin. El mensaje de error
que aparece siempre indica al menos tres cosas:
*El nombre del fichero en donde se ha encontrado el error.
*la lnea del fichero en donde se ha detectado el error.
*un mensaje describiendo brevemente el error.
Las advertencias no indican errores, sino que llaman la atencin al programador sobre los
posibles usos incorrectos del lenguaje. Las advertencias, a diferencia de los errores no
detienen el proceso de compilacin, pero casi siempre sealan un error oculto. En general, si
aparece un warning hay que intentar eliminarlo. Si el compilador encuentra el error , intentara
seguir compilando el programa para encontrar todos los errores posibles, detenindose

3.4 Ejecucin de un programa


A un programa en ejecucin se le suele llamar tambinproceso.
Elproceso de ejecucinde un programa escrito en unlenguaje de programaciny medianteun
compilador tiene los siguientes pasos:

1. Escritura del programa fuente con un editor (programa que permite a una
computadoraactuar de modo similar a una mquina de escribir electrnica) y guardarlo en un
dispositivo dealmacenamiento.
2. Introducir el programa fuente en memoria.
3. Compilar el programa con el compilador.
4. Verficar y corregir errores de compilacin.
5. Obtencin del programa objeto
6. El enlazador (linker) obtiene el programa ejecutable.
7. Se ejecuta el programa y, si no existen errores, se tendr la salida del programa.
Se denominatiempo de ejecucin(runtimeen ingls) al intervalo detiempoen el que
unprogramade computadora se ejecuta en un sistema operativo. Este tiempo se inicia con la
puesta en memoria principaldel programa, por lo que el sistema operativo comienza a ejecutar
sus instrucciones. El intervalo finaliza en el momento en que ste enva al sistema operativo la
seal de terminacin, sea sta una terminacin normal, en que el programa tuvo la posibilidad
de concluir sus instrucciones satisfactoriamente, o una terminacin anormal, en el que el
programa produjo algn error y el sistema debi forzar su finalizacin.
Este trmino suele emplearse, en oposicin a tiempo de compilacion, para indicar si una accin
o hecho sucede en uno u otro tiempo.

3.5Elementos del lenguaje: datos, literales y constantes, identificadores, variables,


parmetros, operadores, entrada y salida de datos
TIPOS DE DATOS
Todos los lenguajes de programacin soportan algn conjunto de diferentes tipos de datos. Un
tipo de dato es un conjunto de valores y un conjunto de operaciones definidaspara esos
valores. Un tipo de dato describe un conjunto de objetos con la misma representacin. Existe
un nmero de operaciones asociadas con cada tipo, por ejemplo: es posible realizara
aritmtica sobre tipos de datos enteros y reales, concatenar conlos datos de tipo cadena o
recuperar o modificar el valor deun elemento de unarreglo. Un tipo de dato proporciona una
descripcin de sus instancias que indican al compilador cosas como cuanta memoria se debe
asignar para una instancia, cmo representar los datos en memoria y qu operaciones son
permisibles sobre esos datos.
Los tipos de datos que se construyen en el compilador, se conocen como tipos de
datosfundamentalesopredefinidos. Cada lenguaje de programacin incorpora una coleccin
de tipos de datos fundamentales, que incluyen normalmente enteros, reales, carcter etc. Los
lenguajes soportan tambin un nmero de constructores de tipos de datos estructurados o
compuestos, que son tipos ms complejos
SIMPLES O PRIMITIVOS (Bsicos, Fundamentales o predefinidos): Son aquellos que
reconoce directamente el lenguaje, sirven de base para otros tipos de datos
(complejos),ocupan solo una localidad de memoria, para el almacenamiento de un valor
simple, no de objetos complejos.Por lo tanto lavariable que lo identifica hace referencia a un
valor nico a la vez., este tipo dedatos se clasifican de la siguiente manera:

Numricos:
Son aquellos quesolamente aceptan caracteres numricos y el caracter puntoen el caso de
aquellos valoresfraccionarios.
Enteros:
Son aquellos que consideran solamente valores enteros (sin fracciones decimales) pudiendo ser
precedidos por el carcter (-), para asignarle el signo a los valores negativos.
Carcter o char :
Ocupan 16 bits, con un rango de 0 a 65,536.Este rango tan amplio, le permite al lenguaje
representar cualquier carcter alfabtico, numrico (sin signo) o especial de cualquier lenguaje
o idioma de cualquier parte del mundo, garantizando con esto la portabilidad.El carcter debe
estar delimitado por comillas simples (apostrofes).
NO PRIMITIVOS (Estructurados o compuestos):
Son aquellos que no estn considerados por el lenguaje y tendrn que ser definidos por el
programador, empleando para ello los tipos de datos simples o bsicos.
Identificadores, Variables y Constantes
Algunos de los principales componentes de un programa son los Identificadores,las variables y
las constantes.
Identificadores: Se emplean para asignarle un nombre a una clase, objeto, atributo, etc. Y se
puede emplear en el, cualquier secuencia de caracteres alfabticos en maysculas o
minsculas, numricos, los caracteres de subrayado (guin bajo), el de dlar ($) y no se

Constantes
Una constante es una partida de datos que permanecen sin cambios en el programa (durante el
desarrollo y ejecucin).
Variables
Una variable es una partida de datos cuyo valor puede cambiar en el programa (durante el
desarrollo y ejecucin).
Los diferentes tipos de variables dependen del lenguaje de programacin, por lo general estas
suelen ser enteras, reales, carcter, lgicas y de cadena.
Tanto las variables como las constantes tienen un nombre o identificador generalmente
conformado por caracteres alfanumricos (ciertos lenguajes de programacin admiten el carcter
de subrayado _ como vlido en los identificadores), y el primero de stos debe ser una letra.
Para poder usar una variable en C++, primero debemos declararla especificando cual de los tipos
de datos presentados arriba queremos que sea. La sintaxis para declarar una nueva variable es
escribir el especificador de tipo de dato que queremos (como int, short, float...) seguido por un
identificador de variable. Por ejemplo:
int a;

Son declaraciones validas de variables. La primera declara una variable de tipo int con el
identificador a. La segunda declara una variable de tipo float con el identificador mynumber.
Una vez declaradas, las variables a y mynumber pueden ser usadas dentro del resto de su
contexto en el programa.
Si necesita declarar algunas variables del mismo tipo y quiere ahorrarse escritura, puede
declarar todas estas en la misma lnea separando los identificadores con comas ( , ). Por
ejemplo:
int a, b, c;
declara tres variables (a, b y c) de tipo int , y tiene exactamente el mismo significado que si
hubiramos escrito:
int a;
int b;
int c;

Inicializacin de variables
Cuando declaramos una variable local, su valor es indeterminado por defecto. Pero usted podra
querer que una variable almacene un valor en concreto al momento de su declaracin. Para
hacer esto, usted tiene que anexar un signo igual seguido por el valor deseado en la declaracin
de la variable:
type identifier = initial_value ;
Por ejemplo, si queremos declarar una variable entera int llamada a que contenga el valor 0 al
momento en el cual es declarada, podramos escribir:
int a = 0;
Adicionalmente a esta forma de inicializacin de variables (conocida como c-like), C++ ha
aadido una nueva manera de inicializar una variable: encerrando el valor inicial entre parntesis
():
type identifier (initial_value) ;
por ejemplo:
int a (0);

Constantes: Literales
Una constante es cualquier expresin que tenga un valor arreglado. Estos pueden ser divididos en
nmeros Enteros, nmeros Punto-Flotante, Cadenas y smbolos.
Nmeros Enteros
1776
707
-273
Estas son constantes numricas que identifican nmeros enteros decimales. Note que para
expresar una constante numricas no necesitamos escribir comillas (") ni otro smbolo especial.
No hay duda de que es una constante dondequiera que se escriba 1776 en un programa, nos
estaremos refiriendo a el valor 1776.
En adicin a los nmeros decimales (esos que ya todos nosotros conocemos) C++ permite el uso
de constantes literales de nmeros octales (base 8) y nmeros hexadecimales (base 16). Si
queremos expresar un nmero octal debemos precederlo con un smbolo 0 (caracter cero). Y para
expresar un nmero hexadecimal tenemos que precederlo con los smbolos 0x (cero, x). Por
ejemplo, las siguientes constantes literales son todas equivalentes entre si:
75 // decimal 0113 // octal 0x4b // hexadecimal
Todas representan el mismo numero: 75 (setenta y cinco ) expresado como un nmero base 10,

Nmeros Punto Flotante


Estos expresan nmeros con decimales y/o exponentes. Estos pueden incluir un punto decimal,
un smbolo e (que expresa "por 10 a la n-esima potencia", donde n es el siguiente valor entero) o
ambos.
3.14159 // 3.14159 6.02e23 // 6.02 x 1023 1.6e-19 // 1.6 x 10-19 3.0 // 3.0
estos son cuatro nmeros vlidos con decimales expresados en C++. El primer nmero es PI, el
segundo es el numero de Avogadro, el tercero es la carga elctrica de un electrn (un nmero
extremadamente pequeo) -todos ellos aproximados- y el ltimo es el nmero 3 expresado como
un literal numrico en punto flotante.
Constantes declaradas (const)
con el prefijo const usted puede declarar constantes con un tipo especifico exactamente igual a
como hara con una variable:
const int width = 100;
const char tab = '\t';
const zip = 12440;
En caso de que el tipo no sea especificado (como en el ultimo ejemplo) el compilador asume que
es de tipo int.

3.6 Errores en tiempo de ejecucin


Los errores en tiempo de ejecucin son los que se producen durante la ejecucin del programa.
Son los ms difciles de encontrar, no son detectados por el compilador, ya que son errores de
lgica, no de sintaxis.Aunque al compilar un programa no de errores, el programa puede
funcionar incorrectamente y/o a dar errores durante su ejecucin. Por ejemplo:
Un programa puede producir resultados errneos, al equivocarnos (errores lgicos) al
programar el algoritmo (sumar en vez de restar, etc.).
Un programa puede interrumpirse bruscamente, por ejemplo si tenemos que hacer una
divisin y el divisor es cero,etc.
Los errores que se pueden producir en la fase de compilacin son:
Errores fatales: Son raros. Indican errores internos del compilador.Cuando ocurren 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 s que se podr obtener un programa objeto, que tras el
linkado dar lugar a un programa ejecutable.

Encontrar la causa que los provoca es una labor en ocasiones complicada, razn por la cual los
EID
(Entornos Integrados de Desarrollo,) nos proporcionan una herramienta llamada Depurador que
nos ayuda a encontrar los errores lgicos y dems errores producidos en tiempo de ejecucin.
Un depurador (debugger), es un programa diseado especficamente para la deteccin,
verificacin y correccin de errores. Los depuradores nos permiten trazar el programa (ejecutarlo
sentencia a sentencia) y visualizar el contenido de las variables y direcciones de memoria
durante la ejecucin del programa.
Adems permiten alterar el flujo de ejecucin del mismo, cambiar los valores delas variables e
introducir puntos de parada.