Introduccin a la programacin en C
Sistemas Operativos :: UTN FRBA
2C2015
http://faq.utn.so/introC
nica funcin main que recibe una lnea de comandos y devuelve un entero
Funcin es un conjunto de sentencias ordenadas
Imperativo, procedural, tipado estatico, tipado debil
Qu es un programa en C?
Imperativo y Procedural: Cmo? no Qu?
Tipado esttico: Compilador ejerce reglas
Tipado dbil: un cacho de memoria
Tipo qu?!
short (2b)int (2/4/8b)long (4b)long long(8b)char (1b)float (4b)double (8b)
Tipos de datosExisten tipos de datos
de tamao fijo (u_int32)
Puede ser unsigned o signed
structspunteros (int)
Estructuras
NombreDNIEstado
struct persona{ char* int t_est}
typedef
t_persona
int main(void) {int a = 1; short b = 2; t_persona c;if (a == b) {
c.dni = a + b;printf(a y b son iguales. a+b=%d\n", c.
dni);} else{
printf(a es distinto (!=) de b\n); }return 0;
}
Primer ejemplo en C1234567890
int main(void) {int a = 1; char b = L;int *c;
c = &a;a = a+1;printf("La variable 'a' vale: %d y la variable 'c
lo mismo: %d y la variable b: %c\n", a, *c, b);}
Operadores & y *
c y a referencian la misma variable
Puntero a un entero
12345678
9
Punteros
Cdigo(ejecucin)
Heap(memoria dinmica)
Stack
?????????????????????????????????????????????????????????
B0CACACA
B0CACACA
39a
b
int* b = malloc( 50 );short a = 39;
Proceso Mario
int main(void) {int a = 1; char b = L;int *c;
c = &a;a = a+1;printf("...
}
Operadores & y * en memoriaCdigo
Stack
B0CACACA
1B0CACACA
B0CACACC
+12
Proceso Mario
Arrays estaticosint main(void) {
char numeros[20];int i, c = 5;for(i=0; i
Memoria dinmicaint main(void) {
t_persona* jose;
jose = malloc( sizeof(t_persona));if( !jose )
printf("Fall el malloc");jose->dni = 36725812;free( jose );
}
123456789
t_persona* jose;
jose = malloc(...);
jose->dni = 36725812;
Memoria dinmica en memoriaProceso Mario Verde
B00B1E55B0CACACA
Cdigo
Stack
Jos
FEOFE4536725812
3
B00B1E55
FE05FE45
Heap
jose
Arrays dinmicosint main(void) {
t_persona* facultad;int i;facultad = malloc( 50*sizeof(t_persona));for(i=0; idni = 50;facultad[i].dni = 50;
1234567890
int main(void) {char* nombre;
nombre = strdup("Maria");nombre[4] = 'o';
printf ("El valor de nombre es %s y su longitud: %lu\n", nombre, strlen(nombre));free( nombre );
}
Strings un array especial1234567890
char* nombre;nombre = strdup("Maria")nombre[4]='o';
Strings en memoriaProceso Koopa
B00B1E55nombre
Cdigo
Stack
Mario\0B00B1E55Heap
Funcionesint elevarAlCuadrado (int);int main(void) {
int aCuadrado, a = 2;aCuadrado = elevarAlCuadrado(a);
printf("el cuadrado es: %d\n", aCuadrado );
}
int elevarAlCuadrado (int x) { return x * x;}
1234567890
Pasar como referenciavoid elevarAlCuadrado (int*);int main(void) {
int a = 2;elevarAlCuadrado(&a);
printf("el cuadrado es: %d\n", a);}
void elevarAlCuadrado (int *x) { *x = *x * *x;}
1234567890
Nada de lo que vimos anda
int main(void) {char* nombre;nombre = strdup("Maria");nombre[4] = 'o';printf ("El valor de nombre es %s y su
longitud: %lu\n", nombre, strlen(nombre));free( nombre );
}
12345678
#include #include #include
Biblioteca estandar Contiene la macro assert (asercin), utilizada para detectar errores lgicos y otros tipos de
fallos en la depuracin de un programa. Conjunto de funciones para manipular nmeros complejos (nuevo en C99). Contiene funciones para clasificar caracteres segn sus tipos o para convertir entre maysculas y
minsculas independientemente del conjunto de caracteres (tpicamente ASCII o alguna de susextensiones).
Para testar los cdigos de error devueltos por las funciones de biblioteca. Para controlar entornos en coma flotante (nuevo en C99). Contiene la definicin de constantes que especifican ciertas propiedades de la biblioteca de coma flotante,
como la diferencia mnima entre dos nmeros en coma flotante (_EPSOLON), el nmero mximo de dgitos de precisin (_DIG), o el rango de valores que se pueden representar (_MIN, _MAX).
Para operaciones de conversin con precisin entre tipos enteros (nuevo en C99). Para utilizar los conjuntos de caracteres ISO 646 (nuevo en NA1). Contiene la definicin de constantes que especifican ciertas propiedades de los tipos enteros, como rango de valores que se
pueden representar (_MIN, _MAX). Para la funcin setlocale() y las constantes relacionadas. Se utiliza para seleccionar el entorno local apropiado
(configuracin regional). Contiene las funciones matemticas comunes. Declara las macros setjmp y longjmp para proporcionar saltos de flujo de control de programa no locales. Para controlar algunas situaciones excepcionales como la divisin por cero. posibilita el acceso a una cantidad variable de argumentos pasados a una funcin. Para el tipo booleano (nuevo en C99). Para definir varios tipos enteros (nuevo en C99). Para definir varios tipos de macros de utilidad. Proporciona el ncleo de las capacidades de entrada/salida del lenguaje C (incluye la venerable funcin printf). Para realizar ciertas operaciones como conversin de tipos, generacin de nmeros pseudo-aleatorios, gestin de
memoria dinmica, control de procesos, funciones de entorno, de sealizacin (??), de ordenacin y bsqueda. Para manipulacin de cadenas de caracteres. Contiene funcionalidades matemticas de tipo genrico (type-generic) (nuevo en C99). Para tratamiento y conversin entre formatos de fecha y hora.
http://es.wikipedia.org/wiki/Biblioteca_est%C3%A1ndar_de_C