• Criterios de Entrada y Salida

    Volver a Indice

    Volver a Contenidos


    Un archivo es una secuencia de datos que son externos al programa. En C hay tres "archivos estándares", llamados "stdin", "stout" y "stderr". Normalmente, estos se asignan todos al terminal, por lo que la entrada se introduce por el teclado, y la salida y mensaje de error se presentan por la pantalla del terminal.
    La orden especial en la cabeza de un programa en C :

    #include


    enlaza efectivamente el programa con las funciones de entrada-salida estándares, las cuales transfieren datos a y desde estos archivos. En el momento que comienza la ejecución de un programa, se abren automáticamente estos tres archivos y las siguientes sentencias de entrada y salida pueden transferir datos a [ ellos sin ninguna otra previsión adicional. Las principales funciones de entrada para este propósito se llaman "getchar" y "scanf", mientras que las correspondientes funciones de salida se llaman "putchar" y "printf". Las funciones getchar y putchar son las funciones de entrada-salida más primitivas del C , transfiriendo sólo un carácter a o desde el programa cada vez. Tienen la siguiente forma:

    c = getchar(); putchar(c);


    Aquí, c es cualquier variable de tipo char, en la que puede almacenarse un carácter de entrada desde stdin, y desde la que un carácter de salida puede ser pre sentado en stdout.
    Junto con getchar (y scanf, también) existe una provisión especial para in dicar el final de un archivo dentro del programa. La definición: #define EOF- I se da dentro del paquete de entrada-salida estándar stdio, y el resultado devuelto por getchar será -- I, siempre que se presente el final del archivo.
    Entonces, la expresión :
    (c = getchar()) ! = EOF)

    sirve al propósito dual de obtener desde la entrada el siguiente carácter y, simul áneamente, comprobar si se ha llegado al final del archivo.
    En general son más útiles para la entrada y salida las funciones scanf y printf. Estas realizan la transferencia usual de números, cadenas de caracteres y otros datos de una forma conveniente y versátil. Scanf y printf pueden ser usadas para datos que estén formateados o en formato libre y tengan la siguiente sintaxis:

    scanf (control, pl, p2, ...) printf (control, pl, p29 ...)

    "Control' denota una cadena entre comillas que contiene una serie de descripciones de formatos para los elementos de datos, conforme se encuentren en el archivo de entrada o salida; p1, p2, ... denota una serie de punteros que direccionan a dónde se almacenarán los valores de entrada, y el, e2, ... denota a una serie de expresiones cuyos valores se presentarán como salida.
    Cada descripción de formato en la parte de "control" de estas funciones, puede ser una de las siguientes y tiene el significado descrito a la derecha:


    Descripción de formato
    Significado
    %d
    Un entero decimal
    %o
    Un entero octal
    %x
    Un entero hexagesimal
    %c
    Un carácter
    %s
    Una cadena de caracteres
    %f
    Un número decimal (float o double)
    \n
    Saltar a una nueva línea
    \t
    Tab horizontal
    \b
    Espacio atrás
    \"
    Comilla literal
    \\
    Slash literal

    Los últimos cinco pueden usarse sólo en la función printf con el propósito de espaciado horizontal y vertical. Los otros se aplican igualmente a las funciones scanf y printf.
    Dos ejemplos de estos controles:

    scanf("%f", &x)
    y
    printf("%f es su media Nn", av)

    La función scanf dice literalmente, recorrer hacia adelante el archivo de entrada (stdin) hasta que se localice el siguiente valor, interpretarlo como un valor decimal y almacenarlo en la dirección de memoria X. La función printf dice aquí presentar los valores decimales de las variables med y la cadena de valor "es su media", y luego saltar a una nueva línea.







  • Subprogramas, funciones y bibliotecas
    Volver a Indice

    Volver a Contenidos


    La mayoría de las tareas prácticas de programación son lo bastante grandes como para justificar la segmentación de programa en varias unidades funcionales, enlazadas todas juntas mediante un programa "principal", el cual controla la secuencia en la que estas unidades se ejecutarán.
    La otra ventaja de la segmentación de programas es que permite volver a usar el código sin reescribirlo y depurarlo cada vez que se necesita. C está especialmente bien adecuado para la segmentación de programas de esta forma.
    EI programa principal en C es un caso especial de una función, y generalmente se escriben varias funciones para realizar una tarea específica.
    Muchas funciones, tales como las funciones de entrada-salida estudiadas en la sección anterior, son tan importantes que se suministran en una "biblioteca de funciones estándares" (tales como stdio.h) y no necesitan ser redefinidas por el programador cuando las necesita. Otras son más especializadas y pueden ser definidas selectivamente cuando un programa particular las necesita.
    Además de la librería de entrada-salida estándar, la mayoría de las implementaciones del C dan otras librerías de funciones para suplir las necesidades de las diferentes aplicaciones.
    Por ejemplo, las aplicaciones matemáticas necesitan normalmente las funciones trigonométricas y logarítmicas, y éstas se suministran en una biblioteca llamada "math.h".
    Específicamente, esta biblioteca contiene las siguientes funciones:

  • Función Significado
    sen seno trigonométrico
    cos coseno
    tan tangente
    cotan cotangente
    asen arcoseno
    acos arcocoseno
    atan arcotangente
    log logaritmo natural
    log 10 logaritmo en base 10
    exp exponencial
    sqrt raíz cuadrada
    pow potencia
    senh seno hiperbólico
    cosh coseno hiperbólico
    tanh tangente hiperbólica


    Cualquier función, ya sea una función estándar o definida por el programador, se llama mediante la colocación de una "llamada a función" dentro de una expresión más larga, escrita de la forma nombrefuncion (e1, e2, ...,en)

    Escritura de funciones.
    Cuando las funciones estándares de C no realicen el tipo de cálculo deseado, el programador puede definir una nueva función mediante una "definición de función" Puede entonces ser llamada usando una llamada a función de la misma forma que se llama a las funciones estándares. Debido a que una función (escrita por el programador) se llama en el contexto de una función estándar, no debe dar más de un valor como resultado. El tipo (float, in, char, etc.) del resultado es identificado al comienzo de la declaración, cuya forma general es la siguiente:

    nombre de tipo (parámetros)
    declaraciones de parámetros
    {
    variables locales
    sentencias
    }

    "Tipo" identifica al tipo del resultado devuelto por la función, "nombre" denota a la función, "parámetros" es una lista (posiblemente vacía) de los parámetros de la función, "declaraciones de parámetros" declara a los tipos de los parámetros, "variables locales" declara las variables (automáticas y estáticas) que se utilizarán sólo localmente dentro del cuerpo de la función y "sentencias" define al propio cuerpo de la función.

    Llamada a funciones. Como se ha mencionado, una función puede llamarse sólo mediante la ejecución de una llamada a función dentro de una expresión.
    La llamada a la función da una lista de expresiones como argumentos que coincide, uno a uno, con los parámetros de la definición de la función.
    Una llamada a función se realiza en dos pasos:

    • Primero, a cada parámetro se le asigna el valor actual de su correspondiente parámetro actual (es decir, todos los parámetros son llamados por valor).
    • Segundo, se ejecuta el cuerpo de la función.
    • Tercero, el control se devuelve a la expresión que contenía la llamada a la función cuando se encuentra una sentencia return. El resultado devuelto es el valor de la expresión en la sentencia return, si está presente, o indefinido si no lo está.




  • Evaluación global del C™ (Realizada por Ricardo M. Cisneros, Universidad Autónoma de Guadalajara Mejico.)
    Volver a Indice

    Volver a Contenidos


    "Evaluaremos C usando nueve criterios :
    • Expresividad= Bueno
    • Bien-definido= Excelente
    • Tipos y estructuras de datos =Bueno
    • Modularidad= Excelente
    • Facilidades de entrada-salida= Bueno
    • Transportabilidad= Excelente
    • Eficiencia= Excelente
    • Pedagogía= Regular
    • Generalidad= Bueno


    La calificación de excelente de C para "bien-definido", "modularidad" "transportabilidad" y "eficiencia" se debe principalmente a la simplicidad de su diseño y al amplio uso de su sistema operativo UNIX.

    La modularidad está soportada fuertemente por la compilación independiente de funciones, mientras que la eficiencia queda reforzada por su variedad de tipos de datos y operadores de "bajo nivel".

    El ser débilmente "tipeado" también contribuye a la eficiencia del C, aunque, al mismo tiempo, le resta"pedagogía".
    En el momento de escribir este texto encontramos que existe una gran escasez de buenos textos de programación en C, así como del propio UNIX.
    Sin embargo, la "pedagogía" del C promete mejorar con sus recientes implementaciones sobre microcomputadoras y su más amplio uso en diferentes áreas de la programación de sistemas.

    La principal razón de que la generalidad del C sea buena es su disponibilidad de una extensa librería de función en las áreas de la programación matemática, procesamiento de archivos y procesamiento de texto, así como en su área nativa de la programación de sistemas.




  • PROGRAMA EN C


    Volver a Indice

    Volver a Contenidos



    #include
    #include
    #include
    char Name[50];
    char Rut[10];
    char Address[50];
    char Phone[15];
    char Esc[1];
    void main()
    {
    printf("Ingrese el Nombre de la persona :> ");
    scanf ("%s",&Name);
    printf("Ingrese el Rut de la persona :> ");
    scanf ("%s",&Rut);
    printf("Ingrese la Dirección de la persona :> ");
    scanf ("%s",&Address);
    printf("Ingrese el Telefono de la persona :> ");
    scanf("%s",&Phone);
    printf(" La persona ingresada es :> %s\n",Name);
    printf(" Rut de la persona ingresada :> %s\n",Rut);
    printf(" Dirección de la persona ingresada :> %s\n",Address);
    printf(" Telefono de la persona ingresada es :> %s\n\n",Phone);
    printf(" * Para terminar la aplicación presione una Tecla y luego Enter * ");
    scanf("%s",&Esc);
    }

  • 1