Sintaxis De Las Palabras Reservadas En C
gabyziga9 de Octubre de 2012
4.520 Palabras (19 Páginas)1.282 Visitas
Introducción a la Programación en C
Explique el uso y la sintaxis de las palabras reservadas en C
Palabras reservadas
El lenguaje C está formado por un conjunto pequeño de palabras clave (reservadas) o comandos
(keywords), y una serie de operadores estos tienen un significado para el compilador y no puede cambiarse.
A continuación se presenta su significado y respectiva función en el lenguaje de programación.
Para especificar el tipo de almacenamiento automático se usa el especificador auto.
Sintaxis:
[auto] <tipo> <nombre_variable>;
Sirve para declarar variables automáticas o locales. Es el modificador por defecto cuando se declaran
variables u objetos locales, es decir, si no se especifica ningún modificador, se creará una variable
automática.
Estas variables se crean durante la ejecución, y se elige el tipo de memoria a utilizar en función del ámbito
temporal de la variable. Una vez cumplido el ámbito, la variable es destruida. Es decir, una variable
automática local de una función se creará cuando sea declarada, y se destruirá al terminar la función. Una
variable local automática de un bucle será destruida cuando el bucle termine.
Debido a que estos objetos serán creados y destruidos cada vez que sea necesario, usándose, en general,
diferentes posiciones de memoria, su valor se perderá cada vez que sean creadas, perdiéndose el valor
previo en cada caso.
Por supuesto, no es posible crear variables automáticas globales, ya que son conceptos contradictorios.
Almacenamiento estático
Para especificar este tipo de almacenamiento se usa el especificador static.
Sintaxis:
static <tipo> <nombre_variable>;
static <tipo> <nombre_de_función>(<lista_parámetros>);
Cuando se usa en la declaración de objetos, este especificador hace que se asigne una dirección de
memoria fija para el objeto mientras el programa se esté ejecutando. Es decir, su ámbito temporal es total.
En cuanto al ámbito de acceso conserva el que le corresponde según el punto del código en que
aparezca la declaración.
Para especificar este tipo de almacenamiento se usa la palabra extern.
Sintaxis:
extern <tipo> <nombre_variable>;
[extern] <tipo> <nombre_de_función>(<lista_parámetros>);
De nuevo tenemos un especificador que se puede aplicar a funciones y a objetos. O más precisamente, a
prototipos de funciones y a declaraciones de objetos.
Almacenamiento en registro
Para especificar este tipo de almacenamiento se usa el especificador register.
Sintaxis:
register <tipo> <nombre_variable>;
Indica al compilador una preferencia para que el objeto se almacene en un registro de la CPU, si es
posible, con el fin de optimizar su acceso, consiguiendo una mayor velocidad de ejecución.
Los datos declarados con el especificador register tienen el mismo ámbito que las automáticas. De hecho,
sólo se puede usar este especificador con parámetros y con objetos locales.
El compilador puede ignorar la petición de almacenamiento en registro, que se acepte o no estará basado
en el análisis que realice el compilador sobre cómo se usa la variable.
Modificador de almacenamiento constante
El modificador const crea nuevos tipos de objetos, e indica que el valor de tales objetos no puede ser
modificado por el programa. Los tipos son nuevos en el sentido de que const int es un tipo diferente de int.
Veremos que en algunos casos no son intercambiables.
Sintaxis:
const <tipo> <variable> = <inicialización>;
const <tipo> <variable_agregada> = ;
<tipo> <nombre_de_función> (const <tipo>*<nombre-de-variable> );
const <tipo> <nombre_de_función>(<lista_parámetros>);
<tipo> <nombre_de_función_miembro>(<lista_parámetros>) const;
Lo primero que llama la atención es que este modificador se puede aparecer en muchas partes diferentes
de un programa C++. En cada una de las sintaxis expuestas el significado tiene matices diferentes, que
explicaremos a continuación.
De las dos primeras se deduce que es necesario inicializar siempre, los objetos declarados como
constantes. Puesto que el valor de tales objetos no puede ser modificado por el programa posteriormente,
será imprescindible asignar un valor en la declaración. C++ no permite dejar una constante indefinida.
Cuando se trata de un objeto de un tipo agregado: array, estructura o unión, se usa la segunda forma.
En C++ es preferible usar este tipo de constantes en lugar de constantes simbólicas (macros definidas con
#define). El motivo es que estas constantes tienen un tipo declarado, y el compilador puede encontrar
errores por el uso inapropiado de constantes que no podría detectar si se usan constantes simbólicas.
Modificador de almacenamiento volatile
Sintaxis:
volatile <tipo> <nombre_variable>;
<identificador_función> ( volatile <tipo> <nombre_variable> );
<identificador_función> volatile;
Este modificador se usa con objetos que pueden ser modificados desde el exterior del programa, mediante
procesos externos. Esta situación es común en programas multihilo o cuando el valor de ciertos objetos
puede ser modificado mediante interrupciones o por hardware.
El compilador usa este modificador para omitir optimizaciones de la variable, por ejemplo, si se declara una
variable sin usar el modificador volatile, el compilador o el sistema operativo puede almacenar el valor leído
la primera vez que se accede a ella, bien en un registro o en la memoria caché. O incluso, si el compilador
sabe que no ha modificado su valor, no actualizarla en la memoria normal. Si su valor se modifica
externamente, sin que el programa sea notificado, se pueden producir errores, ya que estaremos
trabajando con un valor no válido.
Usando el modificador volatile obligamos al compilador a consultar el valor de la variable en memoria
cada vez que se deba acceder a ella.
Por esta misma razón es frecuente encontrar juntos los modificadores volatile y const: si la variable se
modifica por un proceso externo, no tiene mucho sentido que el programa la modifique.
"char" o carácter:
Sintaxis:
[signed|unsigned] char <identificador>[,<identificador2>[,<identificador3>]...];
Es el tipo básico alfanumérico, es decir que puede contener un carácter, un dígito numérico o un signo de
puntuación. Desde el punto de vista del ordenador, todos esos valores son caracteres. En C++ este tipo
siempre contiene un único carácter del código ASCII. El tamaño de memoria es de 1 byte u octeto. Hay
que notar que en C un carácter es tratado en todo como un número, de hecho, habrás observado que
puede ser declarado con y sin signo. Si no se especifica el modificador de signo, se asume que es con
signo.
Este tipo de variables es apto para almacenar números pequeños, como los dedos que tiene una persona,
o letras, como la inicial de mi nombre de pila.
El tipo char es, además, el único que tiene un tamaño conocido y constante. Para el resto de los tipos
fundamentales que veremos, el tamaño depende de la implementación del compilador, que a su vez
suele depender de la arquitectura del procesador o del sistema operativo. Sin embargo el tipo char siempre
ocupa un byte, y por lo tanto, podemos acotar sus valores máximo y mínimo.
Así, el tipo char con el modificador signed, puede tomar valores numéricos entre -128 y 127. Con el
modifiador unsigned, el rango está entre 0 y 255.
asm
Se utiliza para incluir directamente código ensamblador en su programa C++. El uso correcto de asm
depende de la implementación.
Sintaxis:
asm <instrucción en ensamblador>;
asm <instrucción –1>; asm <instruccion-2>;...
asm {
secuencia de instrucciones en ensamblador
}
_ ____
asm push ds;
asm {
pop ax
inc ax
push ax
}
bool
Tipo lógico (boolean) que toma valores verdadero (true) o falso (false) que puede contener los literales true y
false. Sustituye al sistema tradicional de C que considera el valor cero como falso y distinto de cero como
verdadero.
break
break permite salir del bucle do, while o for más interno. También se puede utilizar para salir de una
sentencia switch.
Un ejemplo de break en un bucle es:
while (Z < 10) {
cin >> Z;
if (Z < 0) break; // salir si Z es negativo
cout << “Hola mundo, yo sigo”;
}
case
Sirve para etiquetar los diferentes casos de la sentencia switch.
Sintaxis:
case <valor> : <sentencia>;
...
break;
_ ___
switch(numero)
{
case 2 + 5: cout << ”Es 7”;
break;
case 9 : cout << “Es 9”;
break;
default : cout << “N: 7 ni
...