You are on page 1of 14

Tokens

Son cadenas de caracteres que tiene un significado coherente en cierto lenguaje


de programacin. Un token, tambin llamado componente lxico, es el elemento
mnimo de un programa de lenguaje C que es significativo para el compilador. En
un lenguaje de programacin, los tokens son el equivalente a las palabras y signos
de puntuacin en el lenguaje natural escrito.
Son los elementos ms bsicos sobre los cuales se desarrolla toda traduccin de
un programa, surgen en la primera fase, llamada anlisis lxico, sin embargo se
siguen utilizando en las siguientes fases.

El compilador descompone el texto fuente o programa en cada uno de sus tokens,


y a partir de esta descomposicin genera el cdigo objeto correspondiente.
Existen seis clases de tokens en el vocabulario del lenguaje C: palabras
reservadas, identificadores, constantes, cadenas de caracteres, operadores y
separadores.
Los tokens estn separados por "espacios en blanco". El espacio en blanco puede
ser uno o varios de los elementos siguientes:

Espacios en blanco
Tabulaciones horizontales o verticales
Nuevas lneas
Avances de pgina
Comentarios

Identificadores
Es un conjunto de caracteres alfanumricos que sirve para identificar las entidades
del programa (clases, funciones, variables, etc.) Los identificadores pueden ser
combinaciones de letras y dgitos. Cada lenguaje tiene sus propias reglas que
definen como pueden estar construidos.
En lenguaje C estas reglas son las siguientes:
1. Un identificador se forma con una secuencia de letras (minsculas de la a a
la z; maysculas de la A a la Z; y dgitos del 0 al 9).
2. El carcter guion bajo ( _ ) se interpreta como una letra ms.
3. Un identificador no puede contener espacios en blanco, ni otros caracteres
distintos de los citados, como por ejemplo (* , ; . : - +, ). Es importante
resaltar que las vocales no pueden llevar tilde ni diresis.
4. El primer carcter de un identificador debe ser siempre una letra o un guion
bajo, es decir, no puede ser un dgito.
5. Se hace distincin entre letras maysculas y minsculas.
6. El lenguaje C permite definir identificadores de hasta 31 caracteres de
longitud.
Ejemplos de identificadores vlidos son los siguientes:
tiempo, distancia1, caso_A, PI, velocidad_de_la_luz
Por el contrario, los siguientes nombres no son vlidos
1_valor, tiempo-total, dolares$, %final
En general es muy aconsejable elegir los nombres de las funciones y las variables
de forma que permitan conocer a simple vista qu tipo de variable o funcin
representan, utilizando para ello tantos caracteres como sean necesarios. Esto
simplifica la tarea de programacin, de correccin y mantenimiento de los
programas.

Palabras reservadas
El lenguaje C utiliza ciertos nombres para designar funciones, dichos nombres se
conocen como palabras reservadas. Una variable no puede llamarse igual que una
palabra reservada. Las palabras reservadas son identificadores predefinidos que
tienen un significado especial. En todos los lenguajes de programacin existe un
conjunto de palabras reservadas.
Estas palabras sirven para indicar al compilador que realice una tarea muy
determinada (desde evaluar una comparacin, hasta definir el tipo de una variable)
y tienen un especial significado para el compilador. A continuacin se presenta la
lista de las 32 palabras reservadas del lenguaje C, para las que ms adelante se
dar detalle de su significado.

auto

double

int

struct
2

break
case
char
const
continue
default
do

else
enum
extern
float
for
goto
if

long
register
return
short
signed
sizeof
static

switch
typedef
union
unsigned
void
volatile
while

1. auto: indica que una variable local se crea al inicio de la ejecucin de la


funcin y se destruye al final.
2. break: provoca que se termine la ejecucin de una iteracin o para salir de
la sentencia switch.
3. case: sentencia que hace parte de cada uno de los casos del switch.
4. char: tipo de dato carcter (normalmente 1Byte).
5. const: define variables cuyo valor debe permanecer constante durante la
ejecucin del programa.
6. continue: provoca que se comience una nueva iteracin, evalundose la
expresin de control.
7. default: es el caso por defecto que se ejecuta si dentro del switch no
concuerda ninguno de los casos definidos.
8. do: variacin del while donde primero se ejecuta y despus se procede a
evaluar la expresin de control.
9. double: tipo de dato flotante real (normalmente 8Bytes)
10. else: es la segunda parte de un condicional if, se ejecuta cuando no se
cumpla la primera condicin.
11. enum: permite declarar valores de datos que se ajustan a series ordenadas
en las cuales un elemento sigue, o precede, a otro.
12. extern: define que existe una variable global que est definida en otro
archivo fuente.
13. float: tipo de dato flotante real (normalmente 4Bytes).
14. for: sentencia de control iterativa que permite inicializar los controles de un
ciclo mediante la estructura: for ( Inicializacin; Condicin; Actualizacin)
15. goto: instruccin de control de salto que permite realizar saltos en el flujo
de control de un programa, es decir, permite transferir el control del
programa, alterando bruscamente el flujo de control del mismo.
16. if: sentencia de control bsica en la que se evala una expresin
condicional.
17. int: tipo de dato entero con signo (normalmente 2 o 4Bytes)
18. long: tipo de dato entero largo con signo (normalmente 4Bytes)
19. register: modificador aplicable nicamente a variables locales e indica al
compilador que esta variable debe ser almacenada en un registro del
procesador del ordenador.
20. return: indica a una funcin el valor que debe devolver.
21. short: tipo de dato entero corto con signo (normalmente 2Bytes)
3

22. signed: modificador que indica el tipo dato con signo.


23. sizeof: operador que nos permite obtener el tamao de un tipo o de una
variable.
24. static: modificador que indica que una variable local no se destruye al
finalizar la funcin donde fue declarada.
25. struct: un registro que agrupa distintos tipos de datos en una misma
estructura (sin solapamiento entre sus datos).
26. switch: sentencia de control bsica en la cual se evala una expresin, y
define una serie de opciones (casos) para su ejecucin.
27. typedef: utilizada para renombrar tipos de datos con el fin de que la
escritura y lectura del programa se nos haga ms sencilla.
28. union: todos los campos que especifiquemos en una union ocupan la
misma posicin de memoria (solapamiento entre sus datos).
29. unsigned: Modificador que indica que el tipo dato sin signo.
30. void: tipo de dato que puede representar: nada (para funciones) o cualquier
tipo de dato (para punteros).
31. volatile: modificador que indica al compilador que el valor de una variable
se puede cambiar por medios externos (no especificados) al programa.
32. while: sentencia de control iterativa, que evala una condicin para su
control.

Comentarios
Un comentario es una secuencia de caracteres utilizada para explicar el cdigo
fuente. C++ soporta comentarios estilo C y estilo C++. Un comentario estilo C
es una secuencia de caracteres cualesquiera encerrados entre los smbolos /* y
*/. Estos comentarios pueden ocupar ms de una lnea, pero no pueden anidarse.
Por ejemplo:
Int main() /* Funcin principal */
/* Este es un comentario
* que ocupa varias
* lneas.
*/

Un comentario estilo C++ comienza con los caracteres // y termina al final de la


lnea. Estos comentarios no pueden ocupar ms de una lnea. Por ejemplo:
Int main() // Funcin principal
// Este es un comentario
4

// que ocupa varias


// lneas
Este ltimo ejemplo emplea comentarios de una sola lnea para escribir un
comentario de ms de una lnea.
EJEMPLO

Signos de puntuacin
CARACTERES DE C
Los caracteres de C pueden agruparse en letras, dgitos, espacios en blanco,
caracteres especiales, signos de puntuacin y secuencia de escape.
Caracteres especiales y signos de puntuacin
Este grupo de caracteres se utiliza de diferentes formas; por ejemplo para indicar
que un identificador es una funcin o una matriz; para especificar una determinada
operacin aritmtica, lgica o de relacin; etc. Son los siguientes
, . ; : ? ( ) [ ] { } < ! | / \ ~ + # % & ^ * - = >

Archivos de cabecera
Los archivos de cabecera son archivos cuya extensin es .h, (ejemplo stdio.h), y
en principio uno incluye en su programa aquellos archivos necesario. Un archivo
de cabecera contiene declaraciones de variables y constantes, prototipos de
funciones, macros, etc. El lenguaje C ofrece una cantidad de importante de estos
archivos para que uno pueda escribir los programas y hacer uso de diversas
funciones que permitan, por ejemplo, ingresar datos por teclado, utilizar funciones
5

matemticas, utilizar funciones para manipular cadenas, funciones grficas,


funciones para manipular archivos, la BIOS, placa video, y muchos etc.
Los archivos de encabezado tambin contienen definiciones de varios tipos de
clases y funciones, as como las constantes que necesitan las funciones. Un
archivo de encabezado instruye al compilador acerca de cmo interconectarse
con los componentes de la biblioteca y los componentes escritos por el usuario.
La siguiente tabla muestra algunos de los principales archivos de cabecera
utilizados en la biblioteca estndar de C/C++.

ARCHIVOS DE CABECERA EN LA EJECUCIN DE UN PROGRAMA EN C/C++

EJEMPLOS DE ARCHIVOS DE CABECERA


#include <math.h>
#include <time.h>
Donde <iostream> contiene las funciones de ingresar y mostrar
datos.
Donde <math.h> contiene las funciones matemticas comunes.
Donde <time.h> contiene las funciones para
conversin entre formatos de fecha y hora.

tratamiento

Si usamos la biblioteca <iostream> tenemos que, las funciones ms


comunes que vamos a usar son de entrada / salida de datos. Y las
operaciones ms comunes como suma/resta/multiplicacin/divisin.
Si usamos la biblioteca <math.h> tenemos que, las funciones ms
comunes que vamos a usar son de clculos matemticos y conversiones.
Y posee operaciones como hallar coseno/hallar raz cuadrada/hallar la
potencia/etc...
Si usamos la biblioteca <time.h> tenemos que, las funciones ms
comunes que vamos a usar son de tratamiento y operaciones usando la
hora y fecha como base. Y posee operaciones como calcular el nmero
de veces que se dio click con el mouse durante la ejecucin del
programa/hallar un numero aleatorio/entre muchas opciones ms
EJEMPLO DEL USO DE CABECERA <iostream> EN LA EJECUCIN DE UN
PROGRAMA

Tipos de datos
Los tipos de datos C se clasifican en: tipos primitivos y tipos derivados.
Tipos primitivos
Se les llama primitivos porque estn definidos por el compilador. Hay siete tipos
primitivos de datos que podemos clasificar en: tipos enteros y reales.
Tipos enteros: char, short, int, long y enum.
Tipos reales: float y doubl.
Cada tipo primitivo tiene un rango diferente de valores positivos y negativos.
El tipo de datos que se seleccione para declarar las variables de un determinado
programa depender dl rango y tipo de valores que vayan a almacenar cada una
de ellas y de si estos son enteros o fraccionarios. Los ficheros de cabecera limits.h
y float.h especifican los valores mximo y mnimo para cada tipo.
Cada tipo entero puede ser calificado por las palabras clave signed o unsigned. Un
entero calificado signed es un entero con signo (+ o -). Un entero calificado
unsigned es un valor entero sin signo, el cual es manipulado como un valor entero
positivos.
Si los calificadores signed y unsigned se utilizan sin un tipo entero especifico, se
asume el tipo int. Por este motivo, las siguientes declaraciones son equivalentes:
signed y:
/* es equivalente a */
signed char y:
Char

El tipo char se utiliza para declarar datos enteros comprendidos entre -128 y +127.
Un char se define como un conjunto de 8 bits de los cuales uno es para especificar
el signo y el resto para el valor; dicho conjunto de bits recibe el nombre de byte.
Segn lo expuesto en el prrafo anterior, el tipo unsigned char puede almacenar
valores en el rango 0 a 255, ya que ahora no es necesario emplear un bit para el
signo.
El siguiente ejemplo declara la variable car de tipo char a la que se le asigna el
carcter a como valor inicial. Las cuatro declaraciones siguientes son idnticas.
char
char
char
char

car
car
car
car

=
=
=
=

a;
97; /* la a es el decimal 97 */
0x61; /* la a es el hexadecimal 0061 */
0141; /* la a es el octal 0141 */

Short
El tipo short, abreviatura de signed short int, se utiliza para declarar datos enteros
comprendidos entre -32768 y + 32767. Un valor short se define como un dato de
16 bits de longitud, independientemente de la plataforma utilizada.
El tipo unsigned char puede almacenar valores en el rango de 0 a 65535, ya que
ahora no es necesario emplear un bit para el signo.
Int
El tipo int, abreviatura de signed int se utiliza para declarar datos enteros
comprendidos entre -2147483648 y + 2147483647. Un valor int se define como un
dato de 32 bit de longitud.
El siguiente declara e inicia tres variables a, b y c, de tipo int:
int a = 2000;
int b = -30;
int c = 0xF003; /* valor en hexadecimal */
El tipo unsigned int puede almacenar valores en el rango de 0 a 4294967295, ya
que ahora no es necesario emplear un bit para el signo.
En general, el uso de enteros de cualquier tipo produce un cdigo compacto y
rpido. As mismo, podemos afirmar que la longitud de un short es siempre menor
o igual que la longitud de un int.
Long
10

El tipo long se utiliza para declarar datos comprendidos entre los valores
-2147483648 y +2147483648. Un valor long se define como un dato de 32 bits de
longitud.
El siguiente ejemplo declara e inicia las variables a, b y c, de tipo long:
long a = -1L; /* L indica que la constante -1 es long*/
long b = 125;
long c = 0x1F00230F; /* valor en hexadecimal */
El tipo unsigned long puede almacenar valores en el rango de 0 a 4294967295, ya
que ahora no es necesario emplear un bit para el signo.
Podemos afirmar que la longitud de un int es menor o igual que la longitud de un
long.
Enum
La declaracin de un tipo enumerado es simplemente una lista de valores que
pueden ser tomados por una variable de este tipo. Los valores de un tipo
enumerado se representarn con identificadores, que sern las constantes del
nuevo tipo.
Los valores de las constantes que componen el tipo enumerado comienzan en
cero y aumentan de uno en uno segn se lee la declaracin de arriba abajo o de
izquierda a derecha.
Crear una enumeracin supone definir un nuevo tipo de datos denominado tipo
enumerado y declarar una variable de este tipo. La sintaxis es la siguiente:
enum tipo_enumerado
{
/* identificadores de las constantes enteras */
}
Donde tipo_ enumerado es un identificado que nombra el nuevo tipo definido.
Despus de definir un tipo enumerado, podemos declarar una o ms variables de
este tipo, de la forma:
enum tipo_enumerado [variable[, variable]];
A cualquier identificador de la lista se le puede asignar un valor inicial entero por
medio de una expresin constante. Los identificadores sucesivos tomaran valores
correlativos a partir de ste.
A los miembros de una enumeracin se les aplica las siguientes reglas:

Dos o ms miembros puede tener un mismo valor.


Un identificador no puede aparecer en ms de un tipo.
11

Desafortunadamente, no es posible leer o escribir directamente un valor de


un tipo enumerado. El siguiente ejemplo aclara este detalle.

/* enum.c
*/
#include <stdio.h>
enum colores
{
azul, amarillo, rojo, verde, blanco, negro
}
main()
{
enum colores color;
/* leer un color introducido desde el teclado */
printf(Color: );
scanf(%d, &color);
/* Visualiza un color */
printf(%d\n, color);
}
Ejecucin del programa:
Color: 3 [Enter]
3
Float
El tipo float se utiliza para declarar un dato en coma flotante de 32 bits en el
formato IEEE 754 (este formato utiliza 1 bit para el signo, 8 bits para el exponente
y 24 para la mantisa). Los datos d tipo float almacenan valores con una precisin
aproximada de 7 dgitos. Para especificar que una constante (un literal) es de tipo
float, hay que aadir al final de su valor la letra f o F.
El siguiente ejemplo declara las variables a, b y c, de tipo real de precisin simple:
float a = 3.121592F
float b = 2.2e -5F;
float c = 2/3 .0F /* 0,666667*/
Double
El tipo double se utiliza para declarar un dato en coma flotante de 64 bits en el
formato IEEE 754 (1 bit para el signo, 11 bits para el exponente y 52 para la
12

mantisa). Los datos de tipo doubl almacenan valores con una precisin
aproximada de 16 dgitos. Por omisin, una constante de tipo double.
El siguiente ejemplo declara las variables a, b y c de tipo real de precisin doble.
double a = 3.141592;
omisin*/
double b = 2.2e+5;
double c = 2.0/ 3.0

/*

una

constante

es

double

por

Ejemplo: tipo de datos


El programa que se muestra a continuacin ilustra los ltimos conceptos
expuestos; define variables de los tipos char, int, float y double, asigna un valor a
cada una y muestra estos valores por la pantalla:
/* tipos1.c
*/
#include <stdio.h>
main ( )
{
/* Definir las variables c, i, f y d */
char c;
int i;
float f;
double d;
/* Asignar valores a las variables c, i, f y d*/
c = a;
i = 25;
f = 3.1416F
d = 2.7172;
/* Mostrar los
printf(c vale
printf(i vale
printf(f vale
printf(d vale

valores de c, i, f y d por la pantalla */


%c\n, c);
%c\n, i);
%c\n, f);
%c\n, d);

}
Ejecucin del programa;
c vale a
i vale 25
f vale 3.141600
13

d vale 2.717200
Tipos derivados
Los tipos derivados son construidos a partir de los tipos primitivos. Algunos de
ellos son: estructuras, uniones, matrices (arrays), punteros y funciones.

Bibliografa
http://mec21.etsii.upm.es/ayudainf/aprendainf/AnsiC/leng_c.pdf
http://www.exa.unicen.edu.ar/catedras/compila1/index_archivos/Introduccion.pdf
http://microe.udea.edu.co/~svillad/InformaticaI/Documentacion/Palabras
%20reservadas%20Lenguaje%20C.pdf
http://www.ecured.cu/index.php/Tokens
CEBALLOS, Francisco Javier, C/ C++ Curso de programacin, p.p 18-27.
http://www.cplusplus.com/
http://www.compuclasico.com/
C++ CMO PROGRAMAR
DEITEL, HARVEY M. Y PAUL J. DEITEL
PEARSON, EDUCACIN, Mxico 2009. Sexta edicin

14

You might also like