Sunteți pe pagina 1din 5

2013 Mario Medina C.

1
2010 Mario Medina C.
Repaso
Lenguaje de
programacin C
Programacin Orientada a Objeto
Ing. Civil en Telecomunicaciones
Tipos de datos
Enteros
char: 8 bits (caracter ASCII ) (2
8
)
short int: 16 bits (2
16
)
long int: 32 bits (2
32
)
long long int: 64 bits (2
64
)
int: 32 bits (tpico)
Largo de palabra del procesador
Con signo (signed) sin signo (unsigned)
Constantes enteras
Caracteres entre comillas simples
Cdigo ASCII equivalente
A vale 65, 1 vale 49
Constantes enteras se evalan como int
Constantes long indicadas con sufijo L
123 es int, 123L es long int
Constantes octales comienzan con 0 (012),
constantes hexa comienzan con 0x
Tipos de datos
Punto flotante
float: nmero de precisin simple (32 bits)
Aprox. 6 dgitos decimales
double: nmero de precisin double (64
bits)
Aprox. 15 dgitos decimales
long double: nmero de precisin
extendida (80 bits)
Promocin de tipos
Compilador siempre realiza operaciones
usando el tipo de mayor precisin
char + int se calcula como int
float + double se calcula como double
int + float se calcula como float
Error tpico: operacin entre int da
resultado int (2/3 = 0)
Comentarios
Bloques de comentarios delimitados por
/* y */
Comentarios en lnea comienzan con //
/* Este es un comentario */
// Este tambien
2013 Mario Medina C. 2
Formato
Declaracin bsica
tipo lista_de_nombres;
Declaracin reserva espacio en memoria
Ejemplos
int I;
char letra1, letra2, letra3;
unsigned short direccion;
Declaraciones terminan con ;
El ; es el terminador en C
Nombres
Pueden incluir maysculas, minsculas,
nmeros, _
No pueden comenzar con un dgito
C distingue entre maysculas y minsculas
Abc abc ABC
Longitud ilimitada
Estndar permite ignorar caracteres > 31
Inicializacin de variables
Asignacin de valor inicial
int I = 15;
char letra1 = A, letra2, letra3;
unsigned short direccion = 0x3F65;
unsigned numero = 034;
No es necesario inicializar variables
Queda a criterio del programador
typedef
Mecanismo que permite definir nuevos
nombres para tipos de datos
typedef ushort unsigned short;
ushort corto, mascorto;
Simplifica el cdigo
Facilita los cambios de tipo de dato
Alcance de una variable
Seccin de cdigo donde una variable
dada es vlida
Alcance de nivel de bloque
Alcance de nivel de archivo
Nombres de variables en un alcance deben
ser nicos
Es posible que variables de un mismo nombre
existan en alcances diferentes
Alcance de bloque
Bloque: secuencia de cdigo delimitada por
llaves { y }
Variable definida al comienzo de un bloque es
visible en todo el bloque
Bloques pueden ser anidados
Variable declarada en bloque interno domina
sobre variable del mismo nombre en bloque
externo
2013 Mario Medina C. 3
Alcance de archivo
Identificadores declarados fuera de todo
bloque son visibles en todo el archivo
Variables globales
Todos los nombres de funciones tienen
alcance de archivo
Variables externas
En proyectos grandes, el cdigo fuente est
generalmente dividido en varios archivos
extern declara una variable global como
definida en otro archivo
Es costumbre definir todas las variables
globales en archivos separados
Archivos de encabezado (header files)
Extensin .h
Precedencia y Asociatividad
Indica qu operadores se evalan primero
y en qu orden
Usar parntesis para modificar precedencia
C no especifica orden de evaluacin
Qu valor imprime esta lnea?
printf(%d %d\n, n++, n/=2);
Depende de que operando se procesa primero
En qu elemento de a[] se almacena i?
a[i] = i++;
Precedencia de operadores (1)
Izquierda a derecha &
Izquierda a derecha == !=
Izquierda a derecha < <= > >=
Izquierda a derecha << >>
Izquierda a derecha + -
Izquierda a derecha * / %
Derecha a izquierda ! ~ ++ -- + -(unarios)
*
&
(cast) sizeof()
Izquierda a derecha () [] -> .
Operadores en misma lnea tienen misma precedencia
Precedencia de operadores (2)
Izquierda a derecha ,
Derecha a izquierda = += -= *= /= %= &= =|=
<<= >>=
Derecha a izquierda ?:
Izquierda a derecha ||
Izquierda a derecha &&
Izquierda a derecha |
Izquierda a derecha
Operadores en misma lnea tienen misma precedencia
Punteros
Un puntero es una variable que, en vez de
almacenar un valor, almacena la direccin
en memoria de otra variable
Declaracin de un puntero
int *p
Uso de punteros
*p hace referencia a lo apuntado por p
p corresponde al contenido del puntero
2013 Mario Medina C. 4
Declaracin de punteros
Todos los punteros tienen el mismo tamao
Dado por la arquitectura del procesador
Declaracin de puntero lleva el tipo del
objeto apuntado y un asterisco
char *cp;
double *dp;
Ambos punteros tienen el mismo tamao pero
apuntan a datos de 1 y 8 bytes, respectivamente
malloc()
Funcin para solicitar memoria al sistema
void *malloc(int nbytes)
Recibe como argumento el nmero de bytes
solicitado
Retorna un puntero a un rea de memoria
NULL si la funcin falla
Tipo del puntero: void
Definida en archivo <stdlib.h>
calloc()
Funcin para solicitar memoria al sistema
void *calloc(int num, int size)
Recibe como argumento el nmero de
elementos solicitado, y el tamao de cada
uno
Retorna un puntero a un rea de memoria
NULL si la funcin falla
Tipo del puntero: void
rea de memoria inicializada a 0
free()
Libera memoria obtenida via malloc()
void free(void *p)
Recibe como argumento un puntero a void
free(NULL) no hace nada!
Toda memoria solicitada al sistema debe
ser liberada
Fugas de memoria
Memoria es liberada automticamente al
trmino de la ejecucin
Puntero a void
Funciones malloc() y calloc()
retornan un puntero a void
Puntero sin tipo definido
Puede apuntar a cualquier tipo de objeto
Debe ser convertido al tipo correcto
float *fp;
fp = (float *)calloc(10,
sizeof(float));
Definicin de funciones en C
Formato de la definicin
tipo
nombre(parmetros formales)
cuerpo
Definicin especifica el cdigo de la
funcin
Declaracin define el perfil de uso de la
funcin
2013 Mario Medina C. 5
Funciones en C
Paso por valor
Funcin recibe una copia de los valores de los
argumentos
Funcin puede modificar copias sin alterar
variables originales
Paso por referencia
Funcin recibe direccin de los argumentos
Modificaciones s afectan variables originales
Paso por valor
void intercambio(int x, int y) {
int temp;
temp = x;
x = y;
y = temp;
}
Error: funcin intercambia copias de las
variables
Valores de x e y afuera de funcin no cambian
Paso por referencia
void intercambio(int *x, int *y) {
int temp;
temp = *x;
*x = *y;
*y = temp;
}
Funcin recibe direcciones de variables
Usar operador &
intercambio(&a, &b);
Funcin main()
Todas las funciones de C estn al mismo
nivel
No es posible anidar funciones
Todas las funciones tienen alcance global
Son visibles en todo el archivo
main() es la nica funcin especial de C
Es la primera funcin en ejecutarse
Slo puede haber una por programa
Perfil de uso de main()
Estndar define
int main(void), o
int main(int argc, char *argv[])
nicos prototipos vlidos!
main() debe retornar un entero
Valor es usado por el sistema operativo
0, o constante EXIT_SUCCESS
Constante EXIT_FAILURE
Incluir <stdlib.h>
Argumentos a main()
Argumentos de lnea de comando del
programa
int argc: nmero de argumentos del
programa
char *argv[]: puntero a un vector de
cadenas de caracteres que contienen los
argumentos

S-ar putea să vă placă și