Beruflich Dokumente
Kultur Dokumente
El tipo void se utiliza para declarar funciones que no retornan un valor o para
declarar un puntero a un tipo no especificado. Si void aparece entre parntesis
a continuacin del nombre de una funcin, no es interpretado como un tipo. En
este caso indica que la funcin no acepta argumentos.
Ejemplo:
double fx(void);
void fy(void);
*p;
Este ejemplo declara la funcin denominada fx como una funcin sin
argumentos que devuelve un valor de tipo real de doble precisin; la funcin fy,
como una funcin sin argumentos que no devuelve valor alguno; y un
puntero p a un objeto de un tipo no especificado.
2)Tipo de Datos Compuestos
Este apartado describe los mecanismos de formacin de tipos de datos ms
complejos: vectores, registros (struct), registros variantes (union) y punteros.
(a)Vectores
Los vectores son conjuntos de elementos del mismo tipo. En C, todos los
vectores empiezan en el elemento 0. La declaracin:
int vt[MAX_PROCESS];
Declara un vector, vt, de enteros, con MAX_PROCESS (constante) posiciones. A
estas posiciones se hace referencia como vt[0] avt[MAX_PROCESS-1]. Existen
vectores de dos, tres y ms dimensiones. Adems pueden ser de cualquier tipo.
(b)Registros
Los registros son conjuntos de variables, generalmente de tipos diferentes. La
declaracin:
typedef struct
{
char hostname[LONG_HOST];
int port;
} type_address;
Declara a type_address como un registro con dos campos, el vector de
caracteres hostname y el entero port.
Para asignar el valor 1001 al campo port, se indica:
type_address.port = 1001;
Donde el operador "." indica que se ha seleccionado un miembro del registro.
(c)Registros Variantes (unin)
Los registros variantes estn formados tambin por varios miembros, pero slo
pueden contener el valor de uno de ellos en cada momento. La declaracin:
union type_mess
{
int m3;
int m4[MAX_PROCESS];
};
Indica que type_mess puede contener un entero o un vector de enteros, pero
no ambos. Los compiladores deben reservar espacio suficiente para que los
registros variantes puedan contener la variante que ocupe ms espacio en
memoria.
(d)Punteros
En C, los punteros se utilizan para almacenar direcciones de mquina. Su uso
es muy frecuente. La declaracin:
int i, *pi, a[10], *b[10], **ppi;
Declara un entero i; un puntero a un entero, pi; un vector de 10 elementos, a;
un vector de 10 punteros a enteros, b; y un puntero a un puntero a un
entero, ppi. Las reglas exactas de sintaxis de declaraciones complejas que
combinen vectores, punteros y otros tipos son bastante complicadas.
Por ejemplo, la declaracin:
typedef struct ptr_group
{
int group;
int components;
int view;
struct ptr_group *p_group;
ptr_process *p_process;
} ptr_group;
Las siguientes expresiones: ptr_group *p;ptr_group g; declaran que p es un
puntero a un registro de tipo ptr_group, y que g es un registro de ese tipo. Para
hacer que p apunte a g, se hara: p = & g; donde el smbolo "\&" representa el
operador unario que hace referencia a la direccin de la variable que le sigue.
Para copiar la variable entera group_num, el valor del miembro group, se
escribe:
group_num = p-group;
Ntese el empleo de la flecha para acceder a los miembros de un registro por
medio de un puntero. Una forma equivalente es la siguiente:
group_num = *(p.group);
Donde "*" es el operador unario de indireccin, mediante el cual se accede al
contenido de la direccin que se pone a continuacin.
Conversin de Tipos.
En C se pueden realizar variadas conversiones entre tipos. En muchas
ocasiones es necesario forzar explcitamente el tipo resultante de la
conversin. Esto puede conseguirse especificando el tipo deseado entre
parntesis delante de la expresin que se ha de convertir, por ejemplo:
marshall_long(packet, (long)i);
Convertira el entero i a tipo long antes de pasarlo como parmetro al
procedimiento marshall_long, que esperar a su entrada una variable de
tipo long.
Sentencias de Control.
En C los procedimientos contienen declaraciones e instrucciones. Ya hemos
examinado las declaraciones, as que es el momento de centrar la atencin en
las instrucciones. Las instrucciones if, while y las de asignacin son igual de
importantes que las de otros lenguajes.Lo nico que vale la pena destacar es
que se utilizan llaves para agrupar instrucciones compuestas, y que la
instruccin while tiene dos formas, la normal, y el do while, equivalente
al repeat de Pascal.
1)Sentencia if
Toma una decisin referente a la accin a ejecutar en un programa, basndose
en el resultado (verdadero o falso) de una expresin.
if (expresin)
sentencia1;
[ else
sentencia2];
expresin:debe ser una expresin numrica, relacional o lgica. El resultado
que se obtiene al evaluar la expresin es verdadero (no cero) ofalso (cero).
sentencia1/2: Representan una sentencia simple o compuesta. Cada sentencia
simple debe estar separada de la anterior por un punto y coma.
La ejecucin de la sentencia if sucede as:
Si el resultado de la expresin es verdadero, se ejecutar lo indicado por
la sentencia1.
Si el resultado de la expresin es falso, se ejecutar lo indicado por
la sentencia2.
llamada a funcin
[]
Subndice de un arreglo
->
Inversor Lgico
Resta
--
Decrementar en uno
++
Incrementar en uno
&
Divisin
suma
<
menor que
>
mayor que
<=
menor igual
>=
mayor igual
==
igualdad de comparacin
!=
desigualdad
&&
||
operador lgico OR
?:
asignacin simple
sizeof
Operadores de Asignacin:
Operad
or
Significado
*=
multiplicado
por
/=
dividido por
%=
modulo de
+=
aadir a
-=
sustraer
desde
2)Expresiones Condicionales
C Tiene un operador ternario (?:), que se utiliza en expresiones condicionales,
las cuales tienen la forma: operando 1 ? operando2 : operando3
Significado
"r"
"w"
"a"
"r+"
"w+"
"a+"
Edicin de un Programa
Para editar un programa, primeramente se debe llamar, para su ejecucin, al
programa editor o procesador de textos que se vaya a utilizar. Se puede utilizar
el procesador de textos suministrado con el compilador o un propio procesador.
El nombre del fichero para salvar el programa en el disco, debe tener como
extensin .c. El paso siguiente es escribir el texto correspondiente al programa
fuente. Cada sentencia del lenguaje C finaliza con un punto y coma y cada
lnea del programa se finaliza pulsando la tecla Enter. Los comentarios
comienzan con el smbolo /* y acaban con */, y pueden extenderse a varias
lneas. A continuacin se presenta el siguiente ejemplo con lo dicho hasta
ahora.
/*********************Saludo*********************/
# include stdio.h
# include stdlib.h
main()
{
char *mensaje1 = "Bienvenido a C ";
char *mensaje2 = "esto es un ejemplo ";
system("cls ");
printf(" Escriba su nombre: ");
gets(nombre);
printf(" n%s %s n%s n ",mensaje1, nombre, mensaje2);
}
Las dos primeras lneas incluyen las declaraciones necesarias para las
funciones que aparecen en el programa. Estas funciones
son:system(), printf() y gets(). En la funcin main() lo que se hace es definir las
cadenas de caracteres mensaje1 y mensaje2 y tomar del teclado la
variable nombre. El despliegue en pantalla ser algo como esto:
Bienvenido a C, <nombre que se haya elegido>, esto es un ejemplo.
Compilar un Programa
El siguiente paso es compilar el programa, esto es, transformar la versin del
programa comprensible para el ser humano en la versin comprensible para el
ordenador. Utilizando un procesador de textos o un editor, se escriben las
lneas del programa, creando el fichero fuente. El compilador entonces utiliza
este fichero para generar otro fichero pero escrito ahora en lenguaje mquina.
Al compilar un programa, se pueden presentar errores de compilacin, debidos
a que el programa escrito no se adapte a la sintaxis y reglas del compilador;
pero es posible ir corrigiendo estos errores hasta obtener una compilacin
limpia.
Enlazar un Programa
}
Las definiciones de funcin pueden aparecer en cualquier orden y en uno o
varios ficheros fuente, pero una funcin no puede separarse en archivos
diferentes. Para devolver valores, las funciones ejecutan la instruccin return,
que puede tener una expresin que se devuelve como el valor de la funcin.
Cuando una funcin devuelve un valor, el tipo del mismo viene especificado
antes del nombre de la funcin. Una funcin no tiene necesariamente que
regresar un valor.