Sei sulla pagina 1di 19

3.

1 Desarrollo histrico del lenguaje estructurado


Probablemente habremos escuchado hablar de distintos lenguajes de programacin:
Pascal, Basic, Fortran, Cobol, C, C++, Visual Basic, Java, Perl, Python, etc. Podramos
hacer una lista de hasta 20 30 lenguajes que son de amplio uso hoy en da (aunque
algunos destacan por nmero de usuarios sobre los dems).
Los primeros lenguajes de programacin fueron creados al mismo tiempo
que aparecan los primeros computadores, hacia 1940. Se trataba de
lenguajes denominados de bajo nivel cuya escritura era muy compleja.
Posteriormente surgieron lenguajes que eran ms fciles de escribir y de
interpretar. Se considera como primer lenguaje de alto nivel a Fortran, un lenguaje que
surgi hacia finales de los aos 50, diseado para programacin cientfica y clculo
numrico. Al contrario que otros lenguajes que cayeron en desuso, Fortran ha
evolucionado y continu siendo usado (incluso lo es hoy en da, aunque no sea tan
popular como lo fue en el pasado).De modo orientativo, este podra ser un esquema sobre
la evolucin de los lenguajes.

Este esquema es meramente orientativo: es imposible reflejar la diversidad de lenguajes y


su evolucin en un grfico tan simplificado. Tambin los datos relativos a fechas son
orientativos.
Fortran puede decirse que introdujo los fundamentos de la programacin moderna, al
introducir muchos de los conceptos que hoy nos parecen bsicos y que usan
prcticamente todos los lenguajes de programacin.
Tras Fortran surgieron otros lenguajes (COBOL, Algol60 y muchos otros).
No hay que suponer que lo nico vlido sea la programacin orientada a objetos por ser lo
ms moderno. Al contrario, muchsima programacin de la que se hace hoy en da se
basa en lenguajes o cdigo no orientado a objetos. Adems, la misma programacin
orientada a objetos se basa en conceptos muy antiguos de programacin (programacin
estructurada, modular, etc.).

Tener en cuenta que algunos lenguajes que nacieron en los aos 60 han perdido vigencia
y ya no se usan, mientras que otros se han ido modernizando y continan usndose ms
o menos ampliamente, como es el caso de Cobol.
C es un lenguaje de gran importancia histrica, antecedente de algunos de los lenguajes
ms utilizados hoy en da (C++, Java), y que an hoy sigue utilizndose y teniendo
demanda laboral.
El lenguaje C fue desarrollado en la dcada de los 70 y constituye un lenguaje muy
robusto usado como ncleo del sistema operativo Unix. C no admite la orientacin a
objetos y muchas veces se alude a l como un lenguaje poco amigable desde el punto de
vista de que algunos aspectos de su sintaxis, elementos de programacin que emplea
(manejo directo de memoria) y otras cuestiones hacen que sea un lenguaje difcil de
aprender en su totalidad. C++ fue una evolucin de C desarrollada en los aos 80.
Introdujo el diseo orientado a objetos, pero manteniendo la compatibilidad con C. Esto
supona que C++ permitiera tanto el uso de la programacin estructurada tradicional
como la programacin orientada a objetos. Adems C++ mantuvo ciertas caractersticas
de C que hicieron que la evolucin fuera parcial.
Como paso final en esta evolucin estara Java, un lenguaje que evoluciona a partir de C
y C++, pero que elimina diversos aspectos de estos lenguajes y se constituye en un
lenguaje definitivamente orientado a objetos, un lenguaje completamente nuevo. Java es
un lenguaje popular y de amplio uso.
Programacin estructurada, es la tcnica en la cual la estructura de un programa es
posible mediante tres esctructuras de control:
a.

Secuencia: Significa que las instrucciones


de un programa se ejecutan una despus de otra,
ambas con una sola entrada y una nica salida.

b.

Seleccin: Equivale a la instruccin IF de


todos los lenguajes de programacin, tambin
conocida como la estructura SI-CIERTO-FALSO,
plantea la seleccin entre dos alternativas con
base en el resultado de la evaluacin de una
condicin o predicado.

c.

Iteracin o Repetitivas: Repeticin de una


operacin mientras se cumple una condicin.

Corresponde a la ejecucin repetida de una instruccin mientras que se cumple una


determinada condicin.

3.2 Estructura general de un programa


La mejor forma de aprender un lenguaje es programando con l. El programa ms sencillo
que se puede escribir en C es el siguiente:
main()
{
}

Como podemos imaginar, este programa no hace nada, pero contiene la parte ms
importante de cualquier programa C y adems, es el ms pequeo que se puede escribir
y que se compila correctamente. En l se define la funcin main, que es la que ejecuta el
sistema operativo al llamar a un programa C. El nombre de una funcin C siempre va
seguida de parntesis, tanto si tiene argumentos como si no. La definicin de la funcin
est formada por un bloque de sentencias, que esta encerrado entre llaves {}.
Un programa algo ms complicado, pero que hace algo, es el siguiente:
#include <stdio.h>
main()
{
/* Este es mi primer programa en C*/
printf("Bienvenido a la programacin en lenguaje C\n");
return 0;
}

Con l visualizamos el mensaje Bienvenido a la programacin en lenguaje C en el


terminal.
La primera lnea indica que se tengan en cuenta las funciones y tipos definidos en la
biblioteca stdio (standard input/output). Estas definiciones se encuentran en el fichero de
encabezado (header) stdio.h.
En la funcin main se incluye una primera sentencia que llama a la funcin printf. sta
toma como argumento (encerrado entre parntesis) una cadena de caracteres limitados
por dobles comillas " " y la imprime en la salida habitual, que generalmente es el terminal
en el que trabajamos. El smbolo \n indica un cambio de lnea.
La segunda sentencia, return 0, termina el programa y devuelve un valor (cero) al sistema
operativo (por lo general es cero si la ejecucin fue correcta y se usan valores distintos de
cero para indicar diversos errores que pudieron ocurrir). Si bien no es obligatorio terminar
el programa con un return, es conveniente indicarle a quien lo haya invocado, sea el
Sistema Operativo o algn otro programa, si la finalizacin ha tenido xito o no. De
cualquier manera, en este caso, si sacamos esa sentencia el programa, ste funcionar
exactamente igual, pero al ser compilado, el compilador nos advertir de la falta de
retorno.

La inclusin de comentarios en un programa es una saludable prctica, como lo


reconocer cualquiera que haya tratado de leer un listado hecho por otro programador o
por s mismo, varios meses atrs. Para el compilador, los comentarios son inexistentes,
por lo que no generan lneas de cdigo, permitiendo abundar en ellos tanto como se
desee. En el lenguaje C se toma como comentario todo carcter entre los smbolos: /* */.
Cada sentencia de programa queda finalizada por el terminador ";", que indica al
compilador el fin de la misma. Esto es necesario ya que sentencias complejas pueden
llegar a tener ms de un rengln, y habr que avisar al compilador donde terminan. Es
perfectamente lcito escribir cualquier sentencia abarcando los renglones que la misma
necesite; por ejemplo podra ser:
printf("Bienvenido a la programacin
en lenguaje C\n");

Un programa en C es simplemente un fichero de caracteres que contiene un conjunto de


instrucciones que un programa especial, el compilador o traductor, se encarga de
transformar en un cdigo que la computadora puede ejecutar (cdigo objeto). En general,
un programa suele estar compuesto de tres partes:

el encabezamiento, que especifica las declaraciones globales de los datos y sus


tipos, que vamos a manejar a lo largo del programa;

la funcin principal, que se suele llamar main, y define la estructura del


programa.

las funciones o subrutinas auxiliares, que realizan las operaciones necesarias;


son llamadas por la rutina principal, la funcin main. Se suelen colocar despus de
esta funcin.

Encabezamiento
main( )
{
}
f1( )
{
}

variables locales
sentencias

variables locales
sentencias

...
...
...
fn( )
{

variables locales
sentencias

Cuando la envergadura del programa es grande se suele fragmentar el programa en


varias partes, incluyendo cada parte en un fichero separado. El lenguaje C define el
mtodo que debemos seguir para separar las diferentes partes del programa.
Normalmente colocaremos en cada fichero todas las subrutinas y funciones que se
encarguen de una tarea del programa. Por tanto, un programa C puede estar formado por
diferentes mdulos o fuentes. Es conveniente mantener los fuentes de un tamao no
muy grande, para que la compilacin sea rpida. Tambin, al dividirse un programa en
partes, se puede facilitar la legibilidad del programa y su estructuracin. Los diferentes
fuentes son compilados de forma separada -nicamente los fuentes que han sido
modificados desde la ltima compilacin-, y despus enlazados o combinados entre ellos
y con las bibliotecas necesarias para formar el programa en su versin ejecutable,
mediante un programa denominado enlazador (linker).
Los comandos necesarios para compilar, enlazar los diferentes mdulos y ejecutar un
programa dependen del sistema operativo, y debemos dirigirnos a los manuales
correspondientes para conocer la sintaxis exacta. Como forma ms comn podemos dar
la siguiente:

compilar:

cc prog
cc modulo1, modulo2

enlazar:

link prog, modulo1, modulo2

ejecutar:

prog

3.3 Palabras Reservadas


C utiliza ciertos nombres para designar funciones, dichos nombres se conocen como
palabras reservadas. Una variable no puede llamarse igual que una palabra reservada. C
cuenta con 48 palabras reservadas, estas son:

3.4 Representacin de datos bsicos


En el lenguaje C estandarizado como C89, existan cuatro tipos de datos bsicos que son:
los nmeros enteros, los nmeros reales, los caracteres, y los punteros. A partir del

estndar C99 se agregan: los valores lgicos (verdadero o falso) y los nmeros
complejos.
Estos tipos de datos son parte del lenguaje, y por ello se los considera primitivos. Ms
adelante veremos que con el uso de estructuras y uniones es posible crear tipos
compuestos de datos a partir de estos tipos primitivos.

Enteros
Los enteros son el tipo de dato ms primitivo en C. Se usan para representar nmeros
enteros. Pero siempre se pueden encontrar otras aplicaciones para los nmeros enteros.
En general se pueden usar para representar cualquier variable discreta.
Los tipos de datos enteros son: short, int, long y long long, cada uno representando
un nmero entero de un tamao o capacidad determinado. Segn el compilador y la
plataforma de hardware, cada uno de estos tipos de dato puede ocupar desde 1 byte
hasta 8 bytes en memoria (para ms detalles busca en la referencia).
Adems, el lenguaje C hace la distincin de si el entero es con signo (signed) o sin signo
(unsigned). En caso de que no se declare si es con signo o sin signo, se toma con signo.
Algunos ejemplos de declaraciones de enteros:
int a;
unsigned int a;
signed long a;
signed long long a = 10000000;
Todos los nmeros son representados en memoria mediante una cadena de bits. En el
caso de los nmeros con signo, el bit ms significativo es el que se usa para
representar el signo. La representacin de los nmeros negativos se realiza mediante el
complemento a dos, que es una tcnica que permite operar con los nmeros negativos
de forma lgica.
A modo de ejemplo, la representacin en memoria del nmero -8 en una variable de 2
bytes, entera, con signo, sera la siguiente:
1111111111111000
Flotantes
Se denomina flotantes a los tipos de datos que representan a los nmeros reales, ya que
utilizan un sistema de representacin basado en la tcnica de coma flotante, que permite
operar con nmeros reales de diversas magnitudes, mediante un nmero decimal llamado
mantisa y un exponente que indica el orden de magnitud.
El tipo de dato flotante en lenguaje C slo tiene dos tamaos: el float y el double, que
son 4 bytes y 8 bytes respectivamente. Se los puede utilizar tanto para representar
nmeros decimales, como para representar nmeros enteros con un orden de magnitud
muy grande.

La forma de declarar una variable flotante es escribiendo en una lnea uno de los tipos de
datos flotantes y a continuacin el nombre de la variable y tal vez algn valor que se les
quiera dar.
Algunos ejemplos:
float a;
double a = 1e23;
double a = 3.1416;
float a = 4e-9;
double a = -78;
Hay que tener en cuenta que aunque los valores flotantes son ms convenientes para
algunas aplicaciones, hay casos en los que se prefieren los enteros. Esto se debe a que
los nmeros flotantes no necesariamente tienen soporte de hardware, en particular en las
plataformas integradas. Una alternativa que se utiliza en estas situaciones es interpretar
los enteros como decimales de forma que 150 se interprete como 1.5 y 2345 como 23.45.
Para el caso de los flotantes de 4 bytes, se utiliza 1 bit para el signo, 7 bits para el
exponente y 24 bits para el valor del nmero. El procedimiento para almacenar un nmero
en una variable flotante es el siguiente:
1. Se convierte a binario la parte entera.
2. Se coloca el signo en el bit ms significativo de la misma manera que en los
enteros (1 para el - y 0 para el +).
3. Se mueve la coma (en la representacin binaria de la parte entera) hasta que est
a la derecha del primer uno y ste se descarta (el uno ms significativo). El valor
del exponente ser el nmero de posiciones que se movi la coma. El exponente
usa la representacin de un entero con complemento a dos.
4. Se convierte en binario la parte decimal del nmero. Esto usando el peso de los
bits. el bit decimal ms significativo vale 1/2, el siguiente vale 1/4, el otro 1/8, el
otro 1/16 y as hasta completar lo que falta para los 23bits del valor.
5. Se concatena todo y ese es el valor flotante representado en memoria.
Caracteres
Los caracteres se representan utilizando el tipo char, que tiene slo 1 byte de tamao.
Este tipo se utiliza para representar los 256 caracteres de la tabla de caracteres del
sistema. El tipo char es tambin un tipo entero, ya que puede tomar valores de 0 a 255.
Por lo tanto tambin puede ser signed o unsigned.
En cuanto a la forma de declarar variables de tipo char es la misma forma que con los
otros tipos.
char a;

char a = 's';
unsigned char a = 48;
Como puedes ver, se le puede asignar un nmero a una variable char, ya que se trata de
un tipo entero. En muchas situaciones se utiliza el tipo char para almacenar nmeros
pequeos, ya que ocupa en memoria slamente un byte.
Es importante notar que con la llegada de la codificacin UTF-8, los caracteres de los
diversos idiomas pueden ocupar 1, 2, 3 o 4 bytes, de modo que el tipo char ya no alcanza
para la representacin de todos los caracteres posibles. Por ello, el estndar C99
introduce el tipo wchar que puede ocupar ms de 1 byte, segn sea necesario para la
codificacin utilizada por el sistema.

3.5 Declaracin de variables, Constantes, Procedimientos


y Funciones
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
permiten los espacios en blanco como separadores de palabras.
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;
float mynumber;
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);
Ambas formas son validas y equivalentes en C++.
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, octal y hexdecimal, respectivamente.
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 Operaciones aritmticas, lgicas y relacionales


El lenguaje C permite manejar una gran variedad de operadores como lo son: Operadores
aritmticos, lgicos, de asignacin, relacionales.

Operadores Aritmticos
Operador

Nombre

Descripcin

Sentido

Suma

Suma dos nmeros

De izquierda a derecha

Resta

Resta dos nmeros

De izquierda a derecha

Divisin

Divide dos nmeros

De izquierda a derecha

Producto

Multiplica dos nmeros

De izquierda a derecha

Resto

Calcula el resto de una divisin

De izquierda a derecha

Operadores Lgicos
Operador

Nombre

Descripcin

Sentido

No lgico

Realiza la operacin lgica NOT

De izquierda a derecha

&&

Y lgico

Realiza la operacin lgica AND

De izquierda a derecha

||

lgico

Realiza la operacin lgica OR

De izquierda a derecha

Operadores Relacionales
Operador

Nombre

Descripcin

Sentido

==

Igual a

Compara dos valores y devuelve


verrdadero (1) si son iguales.

De izquierda a
derecha

!=

Diferente
de

Compara dos valores y devuelve


verrdadero (1) si son diferentes.

De izquierda a
derecha

>

Mayor que

Compara dos valores y devuelve


verrdadero si el izquierdo es mayor que
el derecho.

De izquierda a
derecha

>=

Mayor o
igual que

Compara dos valores y devuelve


verrdadero si el izquierdo es mayor o
igual que el derecho.

De izquierda a
derecha

<

Menor que

Compara dos valores y devuelve


verrdadero si el izquierdo es menor que
el derecho.

De izquierda a
derecha

<=

Menor o
igual que

Compara dos valores y devuelve


verrdadero si el izquierdo es menor o
igual que el derecho.

De izquierda a
derecha

Ejemplos:
Post-Incremento
#include <stdio.h>
void main(){
int a,b;
a=10;
b=a++; //A la variable b se le asigna el
valor de a; luego el valor
//de la variable a se incrementa

en 1
}

Pre-Incremento
#include <stdio.h>
void main()
{
int a,b;
a=10;
b=++a; //El valor de a es incrementado
en 1 y luego este valor es asignado a
//la variable b
}

3.7 Diseo, Edicin, Compilacin y Ejecucin de


programas.
Definicin del problema y diseo de la solucin
Desarrollar un programa, incluso para programas tan sencillos como los que se
van a realizar en esta asignatura, es parte de un proceso que empieza por la
definicin del problema y el diseo de una solucin. Estos pasos se abordan
antes de empezar a codificar. Si el problema es grande y complicado ser
necesario aplicar tcnicas que permitan descomponerlo en problemas ms
pequeos cuyas soluciones puedan integrarse para resolver el problema global.
Pero aunque el problema se reduzca a plantear un pequeo algoritmo, sigue
siendo necesario comprender el problema y solucionarlo antes de empezar a
codificar la solucin1. Aunque las soluciones se disean pensando en los trminos
de las abstracciones que nos proporciona el lenguaje de programacin, la
codificacin es un paso posterior al planteamiento de la solucin.

Codificacin
Una vez que hemos resuelto el problema podemos pasar a codificar la solucin,
creando un archivo o un conjunto de archivos que contengan el cdigo fuente.
Para ello se necesita un programa editor que permita escribir y guardar nuestro
programa. En las prcticas se va a utilizar el editor que proporciona el entorno de
desarrollo Codelite, pero vale cualquier editor que utilice el conjunto de caracteres
que admite un compilador de C. Durante la codificacin es muy habitual incorporar
cdigo disponible en bibliotecas software, que puede haber sido desarrollado por
el propio programador o por terceros. La reutilizacin es un aspecto fundamental
del desarrollo software. Los lenguajes de programacin establecen mecanismos
para importar y utilizar dichas libreras aunque no estn disponibles los archivos
con su cdigo fuente.
Es importante, aunque no necesario para que un programa funcione, seguir unas
buenas prcticas de programacin a la hora de escribir el cdigo. Las primeras
buenas prcticas que debe aprender son:
Utilizar nombres significativos para variables y funciones, evitando nombres que
no ayuden a entender el propsito de una variable o funcin. Hilando ms fino, se
recomienda utilizar sustantivos para los nombres de variables y verbos para las
funciones.
Documentar adecuadamente el cdigo. No se trata de documentar hasta la
ltima declaracin de variable, pero s aquellos detalles que ayudan a entender
por qu se ha escrito ese cdigo. La documentacin es esencial para entender o
modificar cdigo fuente.

Compilacin y ensamblado del programa


El programa que hemos editado es cdigo fuente y no puede ser ejecutado
directamente por ningn computador: es necesario traducirlo a cdigo mquina.
Para ello necesitamos un compilador o un intrprete. Existen lenguajes de
programacin, como C, en que el cdigo fuente es traducido por un compilador a
cdigo mquina y se genera un archivo directamente ejecutable. La figura 2
muestra el proceso completo de generacin de un programa ejecutable en C a
partir del cdigo fuente. Otros lenguajes, como Java, se compilan a un lenguaje
intermedio (que en el caso de Java se denomina bytecode) que posteriormente es
interpretado y ejecutado por un programa especial que se denomina intrprete.
Adems, los programas habitualmente no se encuentran en un nico archivo, sino
distribuidos en muchos, que deben ensamblarse para dar lugar a un programa
ejecutable. La obtencin de un programa ejecutable implica, por un lado, la
traduccin de los archivos en cdigo fuente a archivos con cdigo objeto y, por
otro, el ensamblado de los archivos con cdigo objeto.

Ejecucin, prueba y depuracin del programa


Dependiendo del lenguaje y de la plataforma de ejecucin que utilicemos, para
ejecutar un programa puede bastar con escribir su nombre como un comando en
una consola o hacer doble clic en un icono o puede ser necesario utilizar algn
programa auxiliar que lance al nuestro. En cualquier caso, que nuestro programa
sea capaz de ejecutarse no significa que realice correctamente la tarea que tiene
encomendada. En programacin es muy difcil acertar a la primera. Normalmente
es necesario ejecutar el programa una y otra vez hasta conseguir detectar y
corregir todos sus fallos. Existen tcnicas para probar los programas de forma
exhaustiva y utilidades (depuradores) que ayudan a detectar y corregir los errores
de programacin. Los errores de programacin se clasifican en:

Errores de compilacin (sintcticos). Detectados por el compilador cuando


el cdigo fuente no se ajusta a lenguaje C. Ejemplos: falta de de parntesis, llaves,
punto y coma al final de cada lnea, utilizacin de palabras reservadas como
identificadores, etc.
Errores en tiempo de ejecucin (semnticos). El programa compila pero no
resuelve correctamente el problema, su comportamiento no se ajusta al esperado,
el programa se cuelga, etc. Estos errores son generalmente difciles de detectar,
ya que el compilador no ayuda a detectarlos. Hay que recurrir al uso de tcnicas
de depuracin, como la impresin de trazas del funcionamiento del programa, y al
uso de programas depuradores.

Potrebbero piacerti anche