Introducción a C (Vintage v2)

download Introducción a C (Vintage v2)

of 19

description

Introducción a C

Transcript of Introducción a C (Vintage v2)

  • 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