You are on page 1of 4

Resumen de C

1 Estructura de un programa C
/* Programa de Ejemplo Fecha: Autor: */ #include .... #define .... typedef .... Prototipos] void main(void) { variables /* descripcion */] instrucciones] }

4 Ejemplo del bucle for


for(i=0 i<3 i++) { printf("Universidad Pontificia Comillas\n") printf("c/Alberto Aguilera 23\n") printf("E-28015 Madrid\f") }

5 Operadores Aritmeticos
int: +, -, *, /(division +, -, *, / ++, --, +=, -=, *=, /=

entera) , %(resto)

double:

Otros operadores:

6 Operadores logicos y relacionales


mayor que > menor que < mayor o igual a >= menor o igual a <= igual a == distinto de != AND logico: && OR logico: || negacion: !

2 Caracteres especiales
'\n' '\r' '\0' '\t' '\f' '\'' '\"' '\\' cambio de l nea (newline) retorno de carro (return) caracter 0 (NULL) TAB cambio de pagina (form feed) comilla simple comilla doble la barra \

7 Sintaxis del bucle while


while(condicion){

3 Formatos de printf,
formato %d %hd %ld %u %hu %lu %f %lf %c %s tipo de variable int short long unsigned int unsigned short unsigned long float, double double (solo scanf) char cadena de caracteres

scanf

instruccion 1 instruccion 2
...

instruccion n

8 Sintaxis del bucle do-while


do{

instruccion 1 instruccion 2
...

}while(condicion)

instruccion n

instruccion 1 1
break ... case constante ...

9 Sintaxis del if
if (condicion)

instruccion 1 n1 n: instruccion n 1

...

instruccion 1 instruccion 2 instruccion n


...

break default:

instruccion n nn instruccion d 1 instruccion d nd


break ...

10 Sintaxis del if-else


if (condicion)

instruccion 1.1 instruccion 1.2


... {

} else

instruccion 1.n

13 Las sentencias break y continue


hace que el ujo de programa salga del bloque en el que se encuentre (bucle o switch-case) y continue al nal de este. continue hace que el ujo del programa vuelva al principio del bucle y comience la siguiente iteracion.
break

instruccion 2.1 instruccion 2.2 instruccion 2.m


...

11 Sintaxis del bloque if


if (condicion)

else-if

14 Vectores y matrices
double vector 10] char cadena 256] char matriz 10] 20] vector 2] = 3 scanf("%lf", &vector 5])

instruccion 1.1 instruccion 1.2


...

instruccion 1.m else if (condicion) instruccion 2.1 instruccion 2.2 instruccion 2.n instruccion 3.1 instruccion 3.2 instruccion 3.p
... { ...

15 Instruccion #define
#define TAM_VECTOR 10

... } else

16 Cadenas de caracteres
char cadena N]

12 Sintaxis de la construccion
switch-case
switch(expresion){ case constante 1:

gets(cadena) /* lee una frase hasta final de linea */ scanf("%s",cadena) /* lee una palabra */ printf("%s",cadena) /* escribe una cadena (frase o palabra)

Funciones estandar (de string.h):


strlen: strcpy:

longitud de la cadena copia o inicializa strcmp: compara cadenas 2

17 Estructura de una funcion

24 Funciones y punteros

tipo devuelto NombreFuncion(tipo 1 argumento 1,. . . ,tipo n Para que una funcion modi que variables pertenecientes a argumento n) quien la llama, esta tiene que trabajar con punteros a dichas { variables. Para ello el prototipo de la funcion ha de ser por instruccion 1 ejemplo: instruccion 2 instruccion n return expresion devuelta
} ... void cambio(int *pa, int *pb) /* Si tipo_devuelto no es void*/

la llamada a la funcion, suponiendo que queremos que modique las variables x e y:


cambio( &x, &y)

18 Prototipo de una funcion

Y la funcion ha de usar el operador * para acceder al contenido de las posiciones de memoria a las que apuntan los tipo devuelto NombreFuncion(tipo 1 argumento 1,. . . ,tipo n punteros que tiene como argumentos: argumento n) void cambio(int *pa, int *pb)
{

19 Paso de vectores a funciones


Prototipo: tipo devuelto NombreFuncion(tipo nombre vector Para llamar a la funcion: NombreFuncion(nombre vector) La funcion trabaja con la matriz original.
] ) }

int tmp tmp=*pa *pa=*pb *pb=tmp

20 Paso de matrices a funciones


Para una matriz de 3x5 se har a:
void InicializaMatriz(int matriz ] 5])

25 Asignacion dinamica de memoria


Para solicitar memoria al sistema operativo se suele utilizar la funcion calloc(). Por ejemplo:
pent = (int *) calloc(100, sizeof(int))

21 Declaracion de punteros
tipo *nombre puntero

La funcion calloc() devuelve NULL si no hay memoria su ciente. Para liberar la memoria cuando ya no sea necesario usarla mas:
free(pent)

22 Operador &
pvar = &juan

Devuelve la direccion del objeto sobre el que se aplica. Por ejemplo: Para abrir un archivo en modo lectura y escritura: asigna al puntero pvar la direccion de la variable juan.
FILE *pfich ... pfich = fopen("pepe", "r") ...

26 Archivos

23 Operador *

La funcion fopen() devuelve NULL si no puede abrir el archiSi se precede un puntero del operador * se accede a la direc- vo. cion a la que apunta el puntero. Por ejemplo: En la tabla 1 se muestran los modos de apertura. Para cerrar un archivo: *pvar = pepe Escribe el valor de pepe en la direccion a la que apunta pvar. 3
fclose(pfich)

Modo
r r+

w w+

Abre el archivo para leer. El archivo ha de existir. Se posiciona al principio del archivo. Abre el archivo para leer y escribir. El archivo ha de existir. Se posiciona al principio del archivo. Abre el archivo para escribir. Si el archivo existe borra su contenido y si no existe crea uno nuevo. Abre el archivo para escribir y leer. Si el archivo existe borra su contenido y si no existe crea uno nuevo. Abre el archivo para a~adir. Si el archivo no n existe crea uno nuevo, pero si existe no borra su contenido. Se posiciona al nal del archivo de forma que sucesivas escrituras se a~aden al archivo n original. Ha de a~adirse a cualquiera de los modos anterion res si el archivo que se va a abrir contiene datos binarios en lugar de texto ASCII1 . Tabla 1: Modos de apertura de los archivos.

Descripcion

Para leer o escribir una estructura en un archivo binario se usan las funciones:
size_t fread (void *estructura, size_t tamaNo, size_t numero, FILE *archivo) size_t fwrite(void *estructura, size_t tamaNo, size_t numero, FILE *archivo) estructura es la direccion de la estructura, tama~o de la estructura, numero es el numero de n estructuras consecutivas que se leen o se escriben y archivo es el archivo desde el que se lee o en el que se escribe. Ambas funciones devuelven el numero de estructuras escritas o le das del archivo (numero). Si ocurre un error devolvera un numero menor que el que se pretend a escribir o leer (o incluso 0 si no se ha escrito o le do ninguna). tamaNo es el

Escritura y lectura de archivos binarios

En donde

27 Estructuras
Normalmente las estructuras se de nen con typedef. Ejemplo:
typedef struct { double real double imag } COMPLEJO

Para escribir en un archivo de texto se utiliza fprintf(). Por ejemplo:


fprintf(pfich, "El valor de %d en " "hexadecimal es %x\n", 15, 15) fscanf().

Para leer un dato de un archivo de texto se utiliza Ejemplo:

valor_devuelto = fscanf(pfich, "%d", &num) valor devuelto

Para declarar una variable de tipo estructura se utiliza el nombre de nido en el typedef
COMPLEJO v1 /* Primer complejo */

vale 1 si se ha le do el dato correctamente, 0 si ha ocurrido un error de formato y EOF si se ha llegado Para acceder individualmente a los campos de la estructura al nal del chero. En estos dos ultimos casos no modi ca la se utiliza el operador punto. variable num Para leer o escribir un caracter o una cadena de caracteres se Los vectores de estructuras se declaran igual que los vectores de cualquier otro tipo. Ejemplo: pueden usar las funciones:
int fgetc(FILE *puntero a archivo) int fputc(int caracter, FILE *puntero a archivo) char *fgets(char *cadena, int tam cad, FILE *puntero a archivo) int fputs(const char *cadena, FILE *puntero a archivo) fgetc y fputc devuelven el caracter le do o escrito o un EOF si se ha producido algun error. fgets devuelve la cadena le da o NULL si se ha producido un error. Por ultimo, fputs COMPLEJO v 100] v 1].real=4.5 /* Vector de 100 complejos */

Entrada-salida sin formato

v1.real=5.6 vi.imag=-3.5

Los punteros de estructuras se declaran igual que los punteros de cualquier otro tipo, pero para acceder a los distintos campos se utiliza el operador -> en lugar de poner el * delante del nombre:
COMPLEJO *pcomp pcomp = &v1 pcomp->real=7.4 /* Puntero a una estructura */

devuelve un numero no negativo si ha escrito la cadena o un EOF si se ha producido un error.

You might also like