programacion en c/c++

18
Tokens Son cadenas de caracteres que tiene un significado coherente en cierto lenguaje de programación. Un token, también llamado componente léxico, es el elemento mínimo de un programa de lenguaje C que es significativo para el compilador. En un lenguaje de programación, los tokens son el equivalente a las palabras y signos de puntuación en el lenguaje natural escrito. Son los elementos más básicos sobre los cuales se desarrolla toda traducción de un programa, surgen en la primera fase, llamada análisis léxico, 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 descomposición genera el código objeto correspondiente. Existen seis clases de tokens en el vocabulario del lenguaje C: palabras reservadas, identificadores, constantes, cadenas de caracteres, operadores y separadores.

Upload: vagolandfrog

Post on 17-Jan-2016

49 views

Category:

Documents


6 download

DESCRIPTION

1

TRANSCRIPT

Page 1: programacion en c/c++

TokensSon cadenas de caracteres que tiene un significado coherente en cierto lenguaje de programación. Un token, también llamado componente léxico, es el elemento mínimo de un programa de lenguaje C que es significativo para el compilador. En un lenguaje de programación, los tokens son el equivalente a las palabras y signos de puntuación en el lenguaje natural escrito.

Son los elementos más básicos sobre los cuales se desarrolla toda traducción de un programa, surgen en la primera fase, llamada análisis léxico, 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 descomposición genera el código 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 están 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 líneas Avances de página Comentarios

Page 2: programacion en c/c++

IdentificadoresEs un conjunto de caracteres alfanuméricos que sirve para identificar las entidades del programa (clases, funciones, variables, etc.) Los identificadores pueden ser combinaciones de letras y dígitos. 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 (minúsculas de la a a la z; mayúsculas de la A a la Z; y dígitos del 0 al 9).

2. El carácter guion bajo ( _ ) se interpreta como una letra más.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 diéresis.

4. El primer carácter de un identificador debe ser siempre una letra o un guion bajo, es decir, no puede ser un dígito.

5. Se hace distinción entre letras mayúsculas y minúsculas. 6. El lenguaje C permite definir identificadores de hasta 31 caracteres de

longitud.

Ejemplos de identificadores válidos son los siguientes:

tiempo, distancia1, caso_A, PI, velocidad_de_la_luz

Por el contrario, los siguientes nombres no son válidos

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 función representan, utilizando para ello tantos caracteres como sean necesarios. Esto simplifica la tarea de programación, de corrección y mantenimiento de los programas.

Palabras reservadasEl 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 programación existe un conjunto de palabras reservadas.

Estas palabras sirven para indicar al compilador que realice una tarea muy determinada (desde evaluar una comparación, hasta definir el tipo de una variable) y tienen un especial significado para el compilador. A continuación se presenta la

2

Page 3: programacion en c/c++

lista de las 32 palabras reservadas del lenguaje C, para las que más adelante se dará detalle de su significado.

auto double int structbreak else long switchcase enum register typedefchar extern return unionconst float short unsignedcontinue for signed voiddefault goto sizeof volatiledo if static while

1. auto: indica que una variable local se crea al inicio de la ejecución de la función y se destruye al final.

2. break: provoca que se termine la ejecución de una iteración 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 carácter (normalmente 1Byte).5. const: define variables cuyo valor debe permanecer constante durante la

ejecución del programa.6. continue: provoca que se comience una nueva iteración, evaluándose la

expresión 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: variación del while donde primero se ejecuta y después se procede a

evaluar la expresión 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 condición.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 ( Inicialización; Condición; Actualización)15.goto: instrucción 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 básica en la que se evalúa una expresión condicional.

17. int: tipo de dato entero con signo (normalmente 2 o 4Bytes)

3

Page 4: programacion en c/c++

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 función el valor que debe devolver.21.short: tipo de dato entero corto con signo (normalmente 2Bytes)22.signed: modificador que indica el tipo dato con signo.23.sizeof: operador que nos permite obtener el tamaño de un tipo o de una

variable.24.static: modificador que indica que una variable local no se destruye al

finalizar la función 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 básica en la cual se evalúa una expresión, y

define una serie de opciones (casos) para su ejecución.27. typedef: utilizada para renombrar tipos de datos con el fin de que la

escritura y lectura del programa se nos haga más sencilla.28.union: todos los campos que especifiquemos en una union ocupan la

misma posición 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 evalúa una condición para su

control.

ComentariosUn comentario es una secuencia de caracteres utilizada para explicar el código fuente. C++ soporta comentarios estilo C y estilo C++. Un comentario estilo C es una secuencia de caracteres cualesquiera encerrados entre los símbolos /* y */. Estos comentarios pueden ocupar más de una línea, pero no pueden anidarse. Por ejemplo:

Int main() /* Función principal */

/* Este es un comentario

* que ocupa varias

* líneas.

*/

4

Page 5: programacion en c/c++

Un comentario estilo C++ comienza con los caracteres // y termina al final de la línea. Estos comentarios no pueden ocupar más de una línea. Por ejemplo:

Int main() // Función principal

// Este es un comentario

// que ocupa varias

// líneas

Este último ejemplo emplea comentarios de una sola línea para escribir un comentario de más de una línea.

EJEMPLO

Signos de puntuación CARACTERES DE C

Los caracteres de C pueden agruparse en letras, dígitos, espacios en blanco, caracteres especiales, signos de puntuación y secuencia de escape.

Caracteres especiales y signos de puntuación

Este grupo de caracteres se utiliza de diferentes formas; por ejemplo para indicar que un identificador es una función o una matriz; para especificar una determinada operación aritmética, lógica o de relación; etc. Son los siguientes

5

Page 6: programacion en c/c++

, . ; : ? ‘ “ ( ) [ ] { } < ! | / \ ~ + # % & ^ * - = >

Archivos de cabeceraLos archivos de cabecera son archivos cuya extensión 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 matemáticas, utilizar funciones para manipular cadenas, funciones gráficas, funciones para manipular archivos, la BIOS, placa video, y muchos etc.

Los archivos de encabezado también 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 cómo 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 estándar de C/C++.

6

Page 7: programacion en c/c++

ARCHIVOS DE CABECERA EN LA EJECUCIÓN DE UN PROGRAMA EN C/C++

7

Page 8: programacion 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 matemáticas comunes.

Donde “ <time.h> ” contiene las funciones para tratamiento y conversión entre formatos de fecha y hora.

Si   usamos   la   biblioteca “ <iostream> “ tenemos   que,   las   funciones  más   comunes   que vamos a usar son de entrada / salida de datos. Y  las operaciones más comunes como suma/resta/multiplicación/división.

Si usamos la biblioteca “ <math.h> “ tenemos que, las funciones más comunes que vamos a  usar  son de cálculos  matemáticos  y  conversiones.  Y  posee operaciones  como hallar coseno/hallar raíz cuadrada/hallar la potencia/etc...

Si usamos la biblioteca “ <time.h> “ tenemos que, las funciones más comunes que vamos a usar  son de tratamiento y operaciones usando  la hora y   fecha como base.  Y posee operaciones como calcular el número de veces que se dio click con el mouse durante la ejecución del programa/hallar un numero aleatorio/entre muchas opciones más…

EJEMPLO DEL USO DE CABECERA <iostream> EN LA EJECUCIÓN DE UN PROGRAMA

8

Page 9: programacion en c/c++

Tipos de datosLos tipos de datos C se clasifican en: tipos primitivos y tipos derivados.

Tipos primitivos

Se les llama primitivos porque están 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 máximo y mínimo 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.

Según lo expuesto en el párrafo 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 carácter ‘a’ como valor inicial. Las cuatro declaraciones siguientes son idénticas.

char car = ‘a’;char car = 97; /* la ‘a’ es el decimal 97 */char car = 0x61; /* la ‘a’ es el hexadecimal 0061 */char car = 0141; /* la ‘a’ es el octal 0141 */

9

Page 10: programacion en c/c++

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 código compacto y rápido. Así mismo, podemos afirmar que la longitud de un short es siempre menor o igual que la longitud de un int.

Long

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

10

Page 11: programacion en c/c++

La declaración 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 representarán con identificadores, que serán las constantes del nuevo tipo.

Los valores de las constantes que componen el tipo enumerado comienzan en cero y aumentan de uno en uno según se lee la declaración de arriba abajo o de izquierda a derecha.

Crear una enumeración 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.

Después de definir un tipo enumerado, podemos declarar una o más 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 expresión constante. Los identificadores sucesivos tomaran valores correlativos a partir de éste.

A los miembros de una enumeración se les aplica las siguientes reglas:

Dos o más miembros puede tener un mismo valor. Un identificador no puede aparecer en más de un tipo. 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;

11

Page 12: programacion en c/c++

/* leer un color introducido desde el teclado */printf(“Color: ”);scanf(“%d”, &color);/* Visualiza un color */printf(“%d\n”, color);

}

Ejecución 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 precisión aproximada de 7 dígitos. Para especificar que una constante (un literal) es de tipo float, hay que añadir al final de su valor la letra ‘f’ o ‘F’.

El siguiente ejemplo declara las variables a, b y c, de tipo real de precisión simple:

float a = 3.121592Ffloat 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 mantisa). Los datos de tipo doublé almacenan valores con una precisión aproximada de 16 dígitos. Por omisión, una constante de tipo double.

El siguiente ejemplo declara las variables a, b y c de tipo real de precisión doble.

double a = 3.141592; /* una constante es double por omisión*/double b = 2.2e+5;double c = 2.0/ 3.0

Ejemplo: tipo de datos

El programa que se muestra a continuación 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>

12

Page 13: programacion en c/c++

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.1416Fd = 2.7172;

/* Mostrar los valores de c, i, f y d por la pantalla */printf(“c vale %c\n”, c);printf(“i vale %c\n”, i);printf(“f vale %c\n”, f);printf(“d vale %c\n”, d);

}

Ejecución del programa;

c vale ai vale 25f vale 3.141600d 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.

Bibliografía 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 programación, p.p 18-27.

http://www.cplusplus.com/

13

Page 14: programacion en c/c++

http://www.compuclasico.com/

C++ CÓMO PROGRAMAR DEITEL, HARVEY M. Y PAUL J. DEITEL PEARSON, EDUCACIÓN, México 2009. Sexta edición

14