Saltar al contenido principal
LibreTexts Español

4.1: Entrada y Salida

  • Page ID
    82487
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    Hemos visto el uso de printf () para enviar información a la pantalla de la computadora. printf () es una función muy grande y complicada con muchas variantes posibles de especificadores de formato. Los especificadores de formato son los “% cosas” que se utilizan como marcadores de posición para los valores. Algunos ejemplos son:

    Tabla\(\PageIndex{1}\): Tipos de formato de impresión.
    %f flotar
    %lf doble (flotador largo)
    %e flotar usando notación exponente
    %g flotar usando un estilo más corto de e o f
    %d entero decimal
    %ld entero largo decimal
    %x hexadecimal (hexadecimal o base 16) entero
    %o octal (base 8) entero
    %u entero sin signo
    %c un solo carácter
    %s cadena de caracteres

    Supongamos que quería imprimir el valor de la variable ans en decimal, hexadecimal y octal. La siguiente instrucción lo haría todo:

    printf(“The answer is %d, or hex %x, or octal %o.\n”, ans, ans, ans );

    Observe cómo se etiquetan las tres variables. Esto es importante. Si imprimiste algo en hexadecimal sin algún tipo de etiqueta, es posible que no sepas si fue hexadecimal o decimal. Por ejemplo, si acabas de ver el número “23”, ¿cómo sabrías que es 23 decimal o 23 hex (35 decimal)? Para el caso, ¿cómo establecerías una constante hexadecimal en tu código C? El compilador tampoco tendría forma de “saber”. Para evitar esto, los valores hexadecimales tienen el prefijo 0x. Así, tenemos 0x23 para hex 23. La función printf () no agrega automáticamente el 0x en la salida. La razón es porque puede resultar una distracción si tienes una tabla llena solo con valores hexadecimales. Es bastante fácil usar 0x%d en lugar de solo %d para el formato de salida.

    También puede agregar un especificador de ancho de campo. Por ejemplo, %5d significa imprimir el entero en decimal con 5 espacios como mínimo. De igual manera, %6.2f significa imprimir el valor de punto flotante usando 6 espacios como mínimo. La porción “.2” es un especificador de precisión y en este caso indica 2 dígitos después de que se va a usar el punto decimal. Como puedes ver, ¡esta es una función muy potente y flexible!

    La función de entrada de espejo es scanf (). Esto es similar a la declaración de entrada de Python. Aunque puedes pedir varios valores a la vez, generalmente es mejor pedir un solo valor al usar esta función. Utiliza el mismo tipo de especificadores de formato que printf (). Hay un punto importante a tener en cuenta. La función scanf () necesita saber dónde colocar el valor ingresado en la memoria de la computadora. Simplemente informarle del nombre de la variable es insuficiente. Debes decirle donde en memoria se encuentra la variable, es decir, debes especificar la dirección de la variable. C usa el operador & para significar “dirección de”. Por ejemplo, si deseas obtener un entero del usuario y colocarlo en una variable llamada voltaje, es posible que veas un fragmento de programa así...

    printf(“Please enter the voltage:”);
    scanf(“%d”, &voltage);

    Es muy común que los nuevos programadores olviden el &. ¡Estén prevenidos!


    This page titled 4.1: Entrada y Salida is shared under a CC BY-NC-SA 4.0 license and was authored, remixed, and/or curated by James M. Fiore via source content that was edited to the style and standards of the LibreTexts platform; a detailed edit history is available upon request.