About this entry




Tutorial Introductorio sobre Lenguaje de Programación C (Introductory Tutorial to C Programming, Spanish only)

El siguiente articulo es un tutorial que muestra de una manera simple y sintetizada los aspectos básicos del Lenguaje C: contextualización, tipos de datos, enunciados simples de entrada y salida, operadores y estructuras de control.

Liked it? !

Índice

  1. Preliminares
    1. Tipos de Programación
    2. Historia de C
    3. Porque C ?
    4. Programas sencillos en C
  2. Introducción a C
    1. Tipos de datos
      1. Tipos Enteros
      2. Tipos Reales
      3. Estructuras de Datos
    2. Tipos de declaraciones de variables
      1. Locales
      2. Globales
    3. Enunciados Entrada y Salida
      1. printf
      2. Introducción a punteros
      3. scanf
  3. Operadores de C
    1. Operadores Áritméticos
    2. Operaciones de Bits
    3. Operadores de Ásignación
    4. Operador Cast
    5. Operadores Relacionales y de Igualdad
    6. Operadores Lógicos
    7. Operadores de Incremento
  4. Estructuras de Control
    1. Estructuras de Decisión
    2. Estructura de Repetición

 

  1. Preliminares

    1. Tipos de Programación

      1. Programación Modular

        Divide y Triunfaras.
         

      2. Programación Estructurada

        1. Diseño modular
        2. Diseño descendente
        3. Utilización de estructuras de control básicas (no goto): secuencia, decisión, repetición

         

      3. Programación Orientada a Objetos

        Encapsulación de datos y funciones en paquetes llamados objetos con la propiedad de ocultar información.
         

      4. Programación Orientada a Eventos

        Consiste en la ejecución de código cuando se lleva a cabo una acción sobre un control. Las porciones de código a ejecutarse no son controladas por la aplicación en si sino por el código asociado a los eventos de un control.
         

      5. Programación en Lenguajes de Cuarta Generación

    2. Historia de C

      Diseñado por Bell Telephone para reescribir el sistema operativo UNIX

      • Ken Thompson escribe en 1970 el lenguaje B basándose en el lenguaje BCPL escrito por Martin Richard en 1967
      • Dennis Ritchie modifica el lenguaje B, creando el lenguaje C en 1972
      • La publicación de Kernighan y de Ritchie atrajo gran atención al lenguaje en 1978

       

    3. Porque C ?

      • Programación estructurada
      • Economía en las expresiones
      • Ábundancia en operadores y tipos de datos
      • Codificación en alto y bajo nivel simultáneamente
      • Reemplaza ventajosamente la programación en ensamblador
      • Utilización natural de las funciones primitivas del sistema
      • No es orientado a ningún área en especial
      • Producción de código altamente optimizado
      • Facilidad de aprendizaje

       

    4. Programas sencillos en C

      #include <stdio.h> main () { int c, nt, nb, ne; c=nt=nb=ne=0; while (c=getch() != EOF) { if (c == '\n') ++ne; if (c == ' ') ++nb; } printf("\n"); printf("numero de blancos %i\n",nb); }
       
  2. Introducción a C

    1. Tipos de datos

      1. Tipos Enteros

        tipo rango bytes
        char -128..127

        1

        unsigned Char 0..255

        1

        int -32768..32767

        2

        unsigned int 0..65536

        2

        long -2147483648..2147483647

        4

        unsigned long 0..4294967295

        4


         
        • Para escribir el numero en hexadecimal se escribe un cero a la izquierda seguida por una x: 0xÁFF9
        • Para escribir el numero en octal se escribe un cero a la izquierda: 0432

        enum

        enum[dia_semana] {lunes, martes, miercoles, jueves, viernes, sabado, domingo} [hoy;] // donde lunes toma un valor de 0 enum dia_semana {lunes=1, martes, miercoles, jueves, viernes, sabado, domingo} hoy; enum dia_semana ayer;
         
      2. Tipos Reales

        tipo rango + rango - dig bytes
        float 1.40129E-45..3.402823E+38 -3.402823E+38..-1.40129E-45

        7

        4

        double 4.94065E-324..1.7976931E+308 -1.797693E+308..-4.94065E-324

        15

        8

        long double 1.2E-4932.. -1.2E+4932

        10

        19


         
      3. Estructuras de Datos

        1. struct: registros formados por campos

          struct [complejo] { float a,b; } [z;]
           
        2. union: misma definición pero diferente representación que un struct. La variable que puede alternar entre varios tipos. Reserva el mismo lugar en memoria.

          union generica { char caracter; float real; } todo;
           
        3. Árreglos: conjunto de objetos del mismo tipo que ocupan posiciones sucesivas en memoria.

          int lista[40]; // declara de lista[0] a lista[39]
           
    2. Tipos de declaraciones de variables

      Sintaxis: [tipo de almacenamiento] [tipo de dato] {identificadores};

      1. Locales

        • auto: solo puede ser usado con variables locales a la función (por defecto).
        • register: lo almacena dentro de registros mas rápidos en el computador. Áumenta la velocidad de manejo de la variable.

         

      2. Globales

        • static: para llamar igual a una variable dentro de una función (por defecto).
        • extern: variable totalmente global.

        Nota: cuando la variable lleva un asterisco al comienzo significa que es un puntero
         

    3. Enunciados Entrada y Salida

      stdio.h: biblioteca estándar de entrada y salida

      1. printf

        Función que escribe con formato una serie de caracteres o un valor al fichero de salida standard.

        Sintaxis: printf (formato [, argumento]...);

        Formato: especifica como va a ser la salida. Esta formado por caracteres ordinarios, secuencias de escape y especificaciones de formato. Cada argumento debe tener su correspondiente especificación y en el mismo orden.

        Árgumento: Representa el valor o valores a escribir.

        Secuencias de Escape

        \nnueva línea
        \ttabulación horizontal
        \vtabulación vertical
        \bbackspace
        \rretorno de carro
        \favance de hoja
        \aalarma
        \'comilla simple
        \"comilla doble
        \?signo interrogación
        \\backslash

        Especificaciones de formato

        Sintaxis de formato: %[flags][ancho][.precision]tipo

        Convenios:

        d,ientero con signo
        uentero sin signo
        e,Ereal con exponente con mayúscula o minúscula
        freal
        g,Gescoge formato e o f
        sstring
        cchar
        x,Xhexadecimal con mayúscula o minúscula sin signo
        ooctal sin signo

        Modificadores

        hshortintd, i, o, u, x, X
        llong intd, i, o, u, x, X
        doublee, E, f, g, G
        Llong doublee, E, f, g, G
        %%para imprimir el porcentaje
        %6dnumero de 6 dígitos
        %.2fdos decimales
        %6.2f6 enteros y 2 dígitos

        Ejemplo:

        #include <stdio.h> void main() { char letra_Á='Á', letra_a='a'; printf("El caracter \'%c\' tiene valor decimal ÁSCII de %d\n",letra_Á, letra_Á); printf("Si suma 16 obtendra \'%c\'\n", letra_Á+16); printf("El valor ÁSCII calculado en hexadecimal es %x\n", letra_Á+16); printf("El caracter \'%c\' tiene un valor ÁSCII de %d\n", letra_a, letra_a); }

        El carácter 'Á' tiene un valor decimal ÁSCII de 65
        Si suma 16 obtendrá 'Q'
        El valor ÁSCII representado en hexadecimal es 41
        El carácter 'a' tiene valor ÁSCII de 97
         

      2. Introducción a punteros

        Es una variable que en vez de almacenar un dato almacena una dirección en memoria.

        Operadores

        *contenido de la dirección del puntero
        &dirección de la variable

        Ejemplos:

        int *x, y, vec[10]; y=5; x=&y; *x=10; vec[3]=12; vec[0]=10; *(vec+3)=12; *vec=10;
         
      3. scanf

        Lee datos de la entrada estándar, los interpreta de acuerdo con el formato indicado y los almacena en los argumentos especificados. Cada argumento debe ser un puntero. Lee hasta el <Enter>, <Espacio> o algún carácter extraño.

        Ejemplo:

        int x; scanf ("%d", &x);
         
  3. Operadores de C

    1. Operadores Áritméticos

      1. Operadores Binarios:

        *, /, +, -, % (residuo)
         

      2. Operadores Unarios:

        +,-
         

    2. Operaciones de Bits

      >> (shift right), << (shift left)
       

    3. Operadores de Ásignación

      1. Simple

        = (como función devuelve también un valor)

        Sintaxis: variable=expresión;

        Ejemplo.

        x=5*3; y=3+5*(x=2+4)-1; x=y=z=0;
         
      2. Ásignación Compuesta

        +=, -=, *=, /=, >>=, <<=
         

      3. Operador condicional

        Sintaxis: var=(cond) ? expr1 : expr2;

        Si la condición es verdadera asigna expr1, si la condición es falsa asigna expr2.

        Ejemplo: printf("El mayor es %d",(x>y) ? x : y);


         
    4. Operador Cast

      operador unario

      Sintaxis: (tipo)
       

    5. Operadores Relacionales y de Igualdad

      > mayor que
      < menor que
      == igual a
      >= mayor o igual que
      <= menor o igual que
      != distinto a

       
    6. Operadores Lógicos

      && y
      || o
      ! negación

       
    7. Operadores de Incremento: ++,--

      Ej. ++x; x++;
       

  4. Estructuras de Control

    1. Estructuras de Decisión

      1. If-else

        Sintaxis:

        if (expresión) sentencia1; [else sentencia2;]

        La expresión puede ser numérica, relacional o lógica. El resultado que se obtiene al evaluar la expresión es verdadero (no cero) o falso (cero). Si el resultado es verdadero evaluara la sentencia1, y si el resultado es falso evaluara la sentencia2.

        Falso: 0, ‘\0’, NULL

        Verdadero: !=

        Ejemplos:

        if (x>y) printf ("El mayor es %d", x); else printf ("El mayor es %d", y); If (p!=NULL) if (p)
         
      2. Switch con Break

        Sintaxis:

        switch (expr-test) { case cte1: [sentencia1;] case cte1: [sentencia1;] case cte1: [sentencia1;] [default:] [sentenciaN;] }

        expr-test: constante entera, constante de caracteres, expresión constante. El valor es convertido a tipo int. Sentencia break: Esta sentencia finaliza la ejecución de una sentencia do, for, switch, o while en el cual aparece.

        Ejemplo:

        main() { char letra; int num_vocal=0, num_cons=0; letra=getchar(); switch (letra) { case 'a': case 'e': case 'i': case 'o': case 'u': num_vocal++; break; default: num_cons++; } }
         
    2. Estructura de Repetición

      1. while

        Ejecuta una sentencia, simple o compuesta, cero o más veces, dependiendo del valor de la expresión.

        Sintaxis:

        while (expresion) [sentencia];

        La ejecución de esta sentencia sucede de la siguiente forma:

        • Se evalúa la expresión.
        • Si el resultado anterior es cero (falso), la sentencia no se ejecutara y se pasa a ejecutar la siguiente sentencia en el programa.
        • Si el resultado de la expresión es distinto de cero (verdadero), se ejecuta la sentencia del while y el proceso se repite.

        Ejemplo 1:

        char car; while ((car=getche()) != 's' && car != 'n') printf("\nDesea continuar s/n (si o no)");

        Ejemplo 2:

        #include <stdio.h> #include <conio.h> main() { double sum=0, v; clrscr(); printf("Pulse ^Z (F6) para finalizar la entrada \n \n"); while (scanf("%lf", &v) != EOF) { printf("%35.2f\n", v); sum+=v; printf("\nCantidad >>"); } printf("\t\tTotal%14.2f\n", sum); }
         
      2. do-while

        Ejecuta una sentencia una o mas veces, dependiendo del valor de una expresión.

        Sintaxis:

        do sentencia; while (expresion);

        La ejecución de esta sentencia sucede de la siguiente forma:

        1. Se ejecuta la sentencia o cuerpo.
        2. Se evalúa la expresión.
        3. Si el resultado de la evaluación de la expresión es cero (falso), se pasa a ejecutar la siguiente sentencia en el programa.
        4. Si el resultado de la evaluación de la expresión es distinto de cero (verdadero), el proceso se repite.

        5.  
      3. for

        Sintaxis:

        for ([v1=e1, [v2=e2]...]; [condicion];[progresion-cond]) sentencia;

        vi=ei

        vi representa una variable que será inicializada con el valor de la expresión ei.

        condición

        Es una expresión de Boole (operandos unidos por operadores relacionales y/o lógicos). Si se omite, se supone siempre que es verdadera.

        progresion-cond

        es una expresión cuyo valor evoluciona en el sentido de que se de la condición para finalizar la ejecución de la sentencia for.

        sentencia

        es una sentencia simple o compuesta.

        La ejecución sucede así:

        1. Se inicializan las variables vi.
        2. Se evalúa la expresión de Boole (condición).
          1. Si el resultado es distinto de cero (verdadero), se ejecuta la sentencia, se evalúa la expresión que da lugar a la progresión de la condición y se vuelve al punto 2.
          2. Si el resultado de 2. es cero (falso), la ejecución de la sentencia for se da por finalizada y se continua en la siguiente sentencia del programa.

         
      4. Comandos Break y Continue

        1. Break: esta sentencia finaliza la ejecución de una sentencia do, for, switch o while en la cual aparece.
        2. Continue: esta sentencia estando dentro de do, while, o for, pasa el control a la siguiente iteración.

Siguiente articulo que se recomienda leer: Tutorial Intermedio sobre Lenguaje de Programación C.

Liked it? !

Posted on August 7th | 2 comments | Filed Under: Tutorial de C y C++