CONTENIDO DE LA LECCIÓN 6 FLUJO DE SALIDA ESTANDAR EN C++

Tamaño: px
Comenzar la demostración a partir de la página:

Download "CONTENIDO DE LA LECCIÓN 6 FLUJO DE SALIDA ESTANDAR EN C++"

Transcripción

1 CONTENIDO DE LA LECCIÓN 6 FLUJO DE SALIDA ESTANDAR EN C++ 1. INTRODUCCIÓN 3 2. FLUJOS Archivos de encabezado de la biblioteca iostream Clases y objetos de flujo de entrada/salida 5 3. FLUJO DE SALIDA Operador de inserción de flujo Ejemplos 6.1, Cascada del operador de inserción de flujo Ejemplo Uso de caracteres especiales Ejemplos 6.4, 6.5, 6.6, 6.7, Otros caracteres especiales Ejemplo 6.9, Visualizando números con cout Ejemplos 6.11, Visualizando varios valores con un cout Ejemplo Visualizando caracteres fijos con cout Ejemplo Visualizando cadena de caracteres y números con cout Ejemplo 6.15, 6.16, Utilizando cout para combinar diferentes tipos de valores Ejemplos Visualizando objetos variable con cout Ejemplo Salida de variables char * Ejemplo Salida de caracteres con la función miembro put( ); put( ) en cascada E/S SIN FORMATO MEDIANTE read( ), gcount( ) y write( ) Ejemplo REDIRECCIONANDO LA SALIDA DE cout Ejemplos 6.22, EXAMEN BREVE MANIPULACIÓN DEL FLUJO Cambio de base para números enteros: dec, oct, hex y setbase( ) Ejemplos 6.24, Precisión de punto flotante Ejemplos 6.26, Anchura de campo (setw( ), width( )) Ejemplos 6.28, 6.29, 6.30, 6.31, Examen breve Manipuladores definidos por el usuario Ejemplo

2 8. ESTADOS DE FORMATO DE FLUJO Indicadores de estado de formato Ceros a la derecha y puntos decimales ( ios::showpoint ) Ejemplo Alineación ( ios::left, ios::right, ios::internal ) Ejemplos 6.35, 6.36, 6.37, Relleno ( fill, setfill ) Ejemplos 6.39, Base de flujo integral ( ios::dec, ios::oct, ios::hex, ios::showbase ) Ejemplo Números de punto flotante, notación científica ( ios::scientific, ios::fixed ) Ejemplos 6.42, Control de mayúsculas / minúsculas ( ios::uppercase ) Ejemplo Establecimiento y restablecimiento de los indicadores de formato 40 ( flags, setiosflags, resetiosflags ) Ejemplo EXAMEN BREVE ESTADOS DE ERROR DE FLUJO Ejemplo ENLACE DE UN FLUJO DE SALIDA A UN FLUJO DE ENTRADA CONCEPTO DE PRECISIÓN Ejemplo CONCEPTO DE SOBRE FLUJO Ejemplo UTILIZANDO cout PARA IMPRIMIR INFORMACIÓN Ejemplo LO QUE NECESITA SABER PREGUNTAS Y PROBLEMAS Preguntas Problemas

3 LECCIÓN 6 FLUJO DE SALIDA ESTANDAR EN C++ INTRODUCCIÓN En esta lección se verá como generar datos de salida desde el sistema. En general la obtención de datos de entrada al sistema se conoce como lectura y la generación de datos desde el sistema se denomina escritura. Veremos cómo escribir información en la pantalla de su monitor y en la impresora. En otra lección, aprenderá cómo escribir información en un archivo, asi como leer información desde el teclado y desde un archivo en disco. Objetivo de esta lección: Comprender y utilizar el flujo de salida orientada a objetos de C++. Aprender a formatear las salidas. Comprender la jerarquía de clases de flujo de E/S. Aprender a enviar la salida a objetos de tipos definidos por el usuario. Crear manipuladores de flujo definidos por el usuario. Determinar el éxito o la falla de las operaciones de entrada/salida. Saber como enlazar flujos de salida con flujos de entrada. Las bibliotecas estándar de C++ proporcionan un amplio conjunto de capacidades de entrada/salida. Esta lección trata de los flujos de E/S comunes, suficiente para resolver la mayoría de los problemas de computación, además ofrece una panorámica de las capacidades restantes. Las características de E/S que aquí se describen están orientadas a objetos. Deberá encontrar interesante el ver la manera en que se implementan. Este estilo de E/S utiliza otras características de C++, tales como referencias, sobrecarga de funciones y de operadores. Como veremos, C++ utiliza E/S a prueba de tipos. Cada operación de E/S se realiza automáticamente en una forma sensible con respecto al tipo de datos. Si una función de E/S se ha definido adecuadamente para que maneje un tipo de dato en particular, entonces dicha función manejará automáticamente ese tipo de datos. Si no hay concordancia entre el tipo de datos y la función que maneja ese tipo de datos, el compilador envía un mensaje de error. Por lo tanto, los datos inadecuados no pueden andar furtivamente por el sistema (como puede suceder en C un hueco que C permite para producir algunos errores sutiles y extraños). Los usuarios pueden especificar la E/S tanto de tipos estándar como de tipos definidos por el usuario. Esta capacidad es una de las características más valiosas de C++. FLUJOS La E/S en C++ se da en flujo de bytes. Un flujo es simplemente una secuencia de bytes. En las operaciones de entrada, los bytes fluyen desde un dispositivo (por ejemplo: 6-3

4 teclado, unidad de disco, escáner) hacia la memoria principal. En operaciones de salida los bytes fluyen de la memoria principal hacia un dispositivo (por ejemplo: pantalla, impresora, unidad de disco, escáner). La aplicación asocia significado a los bytes. Los bytes pueden representar: caracteres ASCII, datos sin procesar en formato interno, imágenes gráficas, voz digital, video digital o cualquier otro tipo de información que pueda requerir una aplicación. El trabajo de los mecanismos de E/S del sistema es mover bytes de los dispositivos hacia la memoria y viceversa, en forma consistente y confiable. Tales transferencias involucran frecuentemente el movimiento mecánico, tal como la rotación de un disco o de una cinta o la digitación de caracteres en un teclado. El tiempo que se llevan estas transferencias normalmente es inmenso en comparación con el tiempo que le lleva al procesador manejar los datos internamente. Por lo tanto, las operaciones de E/S requieren una planeación y afinación cuidadosa para asegurar el máximo desempeño. C++ proporciona capacidades de E/S de bajo nivel y alto nivel. Las capacidades de E/S de bajo nivel (es decir, E/S sin formato) por lo general especifican que un cierto número de bytes deberá transferirse de un dispositivo a la memoria o de la memoria a un dispositivo. En dichas transferencias el byte individual es el asunto de interés. Tales capacidades de bajo nivel proporcionan transferencias de alta velocidad y de gran volumen, pero no son particularmente convenientes para los usuarios. Los usuarios prefieren una vista de nivel alto de la E/S (es decir, la E/S formateada), en donde los bytes están agrupados en unidades significativas, tales como : enteros, números de punto flotante, caracteres, cadenas y tipos definidos por el usuario. Estas capacidades orientadas a tipo son satisfactorias para la mayor parte de la E/S, que no sea el procesamiento de archivo de alto volumen. ARCHIVOS DE ENCABEZADO DE LA BIBLIOTECA iostream La biblioteca iostream de C++ proporciona cientos de capacidades de E/S. Varios archivos de encabezado contienen partes de la interfaz a la biblioteca. La mayoría de los programas C++ incluyen el archivo de encabezado <iostream.h>, que contiene la información básica requerida para todas las operaciones de flujo de E/S. Dicho archivo contiene los objetos cin, cout, cerr y clog, que corresponden respectivamente con el flujo de entrada y salida estándar, el flujo de errores estándar no almacenado en búfer y el flujo de errores estándar almacenado en búfer. Se proporcionan capacidades de E/S formateadas y sin formato. El archivo de encabezado <iomanip.h> contiene información útil para realizar la E/S formateada con los llamados manipuladores de flujo con parámetros. El archivo de encabezado <fstream.h> contiene información importante para las operaciones de procesamiento de archivos controladas por el usuario. 6-4

5 Cada implementación de C++ por lo general contiene otras bibliotecas relacionadas con la E/S que proporcionan capacidades específicas del sistema, tales como el control de dispositivos de propósito especial para E/S de audio y video. CLASES Y OBJETOS DE FLUJO DE ENTRADA / SALIDA La biblioteca iostream contiene muchas clases para manejar una amplia variedad de operaciones de E/S. La clase istream soporta las operaciones de flujo de entrada. La clase ostream soporta las operaciones de flujo de salida. La clase iostream soporta las operaciones de flujo tanto de entrada como de salida. La clase istream y la clase ostream deriva mediante herencia simple a partir de la clase base ios. La clase iostream deriva mediante herencia múltiple tanto de la clase istream como de la clase ostream. En la figura 6.1 se resumen estas relaciones de herencia. ios istream ostream iostream Figura 6.1 Parte de la jerarquía de clases de flujo de E/S. La sobrecarga de operadores (utilización de un operador para realizar más de una tarea) proporciona una notación conveniente para la realización de la entrada/salida. El operador de desplazamiento a la izquierda (<<) está sobrecargado para indicar el flujo de salida y se denomina operador de inserción de flujo. El operador de desplazamiento a la derecha (>>) está sobrecargado para indicar el flujo de salida y se denomina operador de extracción de flujo. Estos operadores se utilizan con los objetos de flujo estándar cin, cout, cerr, clog, y comúnmente con los objetos de flujo definidos por el usuario. cin es un objeto de la clase istream, y se dice que está enlazado (o conectado) al dispositivo de entrada estándar que normalmente es el teclado. El operador de extracción de flujo, como se utiliza en la siguiente instrucción, causa que un valor para la variable entera calificacion (suponiendo que calificacion ha sido declarada como int) se reciba desde cin hacia la memoria: cin >> calificacion; Observe que la operación de extracción de flujo es lo suficientemente inteligente para saber el tipo de dato que es. Suponiendo que calificacion se haya declarado adecuadamente, no se necesita especificar información adicional con dicho operador (como es el caso de la E/S estilo C). cout es un objeto de la clase ostream, y se dice que está enlazado al dispositivo de salida estándar que normalmente es la pantalla. El operador de inserción de flujo, como se 6-5

6 utiliza en la siguiente instrucción, causa que al valor de la variable entera calificacion se le dé salida desde la memoria hacia el dispositivo de salida estándar: cout << calificacion; Observe que el operador de inserción es lo suficientemente inteligente para saber el tipo de calificacion (suponiendo que se haya declarado adecuadamente), por lo que no se necesita especificar información adicional con dicho operador. El formato general para el enunciado cout es el siguiente: cout << elemento1 << elemento2 << elemento 3 <<... << elementon; Como puede observar, después de cout sigue una lista de elementos para escribirse, los cuales están separadas por el operador de inserción de flujo <<. De esta manera, un enunciado cout representa una secuencia o flujo de datos o que se dirige a la pantalla del monitor. Los elementos se insertan dentro de un flujo de salida a través del operador de inserción de flujo <<. Conforme los elementos se insertan dentro del flujo, estos fluyen a la pantalla de su monitor, como se ilustra en la figura 6.3: cout << elemento1 << elemento2 << elemento3 <<... << elementon; Elemento1 Elemento2 Elemento3... ElementoN Elementos de datos del flujo de salida cout que se muestran en la pantalla PANTALLA Figura 6.3. Los elementos que se muestran se insertan dentro del flujo de salida cout usando el operador de inserción de flujo <<. Algunos sistemas acumulan información de salida en una memoria temporal (búfer o buffer) hasta que haya suficiente información para justificar la escritura en la pantalla. cerr es un objeto de la clase ostream, y se dice que está enlazado al dispositivo de errores estándar. Las salidas hacia el objeto cerr no se almacena en el búfer. Esto significa que cada inserción de flujo de cerr causa que su salida aparezca inmediatamente; esto es adecuado para notificar al usuario algún error en forma inmediata. clog es un objeto de la clase ostream, y también se dice que esta enlazado al dispositivo de errores estándar. Las salidas de clog se almacenan en el búfer. Esto significa que cada inserción a clog puede causar que su salida se conserve en un búfer hasta que éste se llene o vacíe. 6-6

7 El procesamiento de archivos de C++ utiliza las clases ifstream para realizar operaciones de entrada de archivo, ofstream para las operaciones de salida de archivo y fstream para las operaciones de entrada/salida de archivo. La clase ifstream hereda de istream, la clase ofstream hereda de ostream y la clase fstream hereda de iostream. En la figura 6.2 se resumen las diversas relaciones de herencia de las clases relacionadas con la E/S. Existen más clases, en la jerarquía de clases de flujo de E/S completa, soportadas en la mayoría de las instalaciones, pero las clases que aquí se muestran proporcionan las capacidades que necesitan casi todos los programadores. Si desea más información sobre el procesamiento de archivos, vea la referencia de la biblioteca de clases de su sistema C++. ios istream ostream ifstream iostream ofstream fstream Figura 6.2 Parte de la jerarquía de clases de flujo de E/S con las principales clases para el procesamiento de archivos. FLUJO DE SALIDA La clase ostream de C++ proporciona la habilidad para realizar salida formateada y sin formato. Las capacidades para la salida incluyen: salida de tipos de datos estándar con el operador de inserción de flujo, salida de caracteres con la función miembro put( ), salida sin formato con la función miembro write( ), salida de enteros en formatos decimal, octal y hexadecimal, salida de valores de punto flotante con diversas precisiones, con puntos decimales forzados en notación científica y en notación fija, salida de datos alineados en campos de anchura indicados, salida de datos en campos rellenados con caracteres especificados y salida de letras mayúsculas en notación científica y notación hexadecimal. OPERADOR DE INSERCIÓN DE FLUJO El flujo de salida puede realizarse mediante el operador de inserción de flujo << sobrecargado. Dicho operador está sobrecargado para dar salida a elementos de datos de tipos estándar: numérico, cadenas y valores de apuntador. Ejemplo 6.1 El siguiente programa: SALUDOS1.CPP, muestra la salida de una cadena utilizando una sola instrucción de inserción de flujo. 6-7

8 /* El siguiente programa: SALUDOS1.CPP, muestra la salida de una cadena utilizando una sola instrucción de inserción de flujo. Ejemplo 6.2 //Para cout Salida : Bienvenidos al INSTITUTO POLITECNICO NACIONAL! cout << " Bienvenidos al INSTITUTO POLITÉCNICO NACIONAL!"; }//Fin de main( ) El siguiente programa: SALUDOS2.CPP, muestra la misma salida que el programa SALU- DOS1.CPP, utilizando varias instrucciones de inserción de flujo. /* El siguiente programa: SALUDOS2.CPP, muestra la salida de una cadena utilizando varias instrucciones de inserción de flujo. //Para cout Salida : Bienvenidos al INSTITUTO POLITECNICO NACIONAL! cout << " Bienvenidos al "; cout << "INSTITUTO POLITÉCNICO NACIONAL! "; }//Fin de main( ) CASCADA DEL OPERADOR DE INSERCIÓN DE FLUJO Los operadores << y >> sobrecargados pueden utilizarse en forma de cascada, como se muestra en el siguiente ejemplo: Ejemplo 6.3 El siguiente programa: CASCADA.CPP, ilustra el uso del operador << sobrecargado en forma de cascada. /* El siguiente programa: CASCADA.CPP, ilustra el uso del operador de inserción << utilizado en forma de cascada. //Para cout cout << "15 más 27 es: " << ( ) << endl; }//Fin de main( ) Salida : 15 más 27 es: 42 Las múltiples inserciones de flujo del programa CASCADA.CPP, se ejecutan como si hubieran sido escritas de la siguiente manera : 6-8

9 ( ( ( cout << "15 más 27 es: ") << ( ) ) << endl ); es decir, << asocia de izquierda a derecha. Este tipo de puesta en cascada de los operadores de inserción de flujo se permite debido a que el operador << sobrecargado devuelve una referencia hacia el objeto operando izquierdo es decir, cout. Por lo tanto, la expresión entre paréntesis del extremo izquierdo ( cout << "15 más 27 es: " ) envía la cadena de caracteres y devuelve una referencia a cout. Esto permite evaluar la expresión que está entre paréntesis en la parte media como ( cout << ( ) ) que envía el valor entero 100 y devuelve una referencia a cout. A continuación la expresión entre paréntesis más a la derecha se evalúa como ( cout << endl ); que envía a la salida un salto a una nueva línea, vacía a cout y devuelve una referencia a cout. Esta última devolución ya no se utiliza. USO DE CARACTERES ESPECIALES La mayoría de los programas que elaborará, visualizarán varias líneas de salida. Cuando desea avanzar el cursor al principio de una nueva línea, puede utilizar el carácter nueva línea ( '\n' ) en el flujo de salida. Cuando se inserta en el flujo de salida, se genera un retorno de carro/salto de línea (CRLF). C++ le proporciona dos maneras de generar una nueva línea. Primero, puede colocar el carácter '\n' dentro de una cadena de caracteres como se muestra en el Ejemplo 6.4: Ejemplo 6.4 El siguiente programa: DOSLINEAS.CPP, visualiza la salida de dos cadenas en dos líneas, utilizando la secuencia de escape '\n'. /* El siguiente programa: DOSLINEAS.CPP, muestra en la pantalla dos cadenas de caracteres en dos líneas, utilizando el carácter de escape '\n'. // Para cout cout << "Esta es la línea uno.\nesta es la línea dos."; } // Fin de main( ) Esta es la línea uno. Esta es la línea dos. 6-9

10 Segundo, si no esta desplegando una cadena de caracteres, puede colocar el carácter nueva línea entre apóstrofes, como se ve en el Ejemplo 6.5: Ejemplo 6.5 El siguiente programa NVALINEA.CPP visualiza los números 1,0,0 y 1 en líneas diferentes: /* El siguiente programa: NVALINEA.CPP, visualiza los números 1, 0, 0 y 1 en líneas diferentes. // Para cout cout << 1 << '\n' << 0 << '\n' << 0 << '\n' << 1; } // Fin de main( ) En vez de utilizar el carácter nueva línea, puede utilizar el manipulador de flujo (ver este tema más adelante) endl (end line). El manipulador de flujo endl hace dos cosas: primero, al igual que la secuencia de escape '\n' genera un CRLF y, segundo, a diferencia de la secuencia de escape '\n', inmediatamente emite la salida. El manipulador de flujo endl hace que cualquier información acumulada en la memoria temporal o búfer se escriba inmediatamente. Ejemplo 6.6 Ejemplo 6.7 El siguiente programa: ENDL1.CPP, muestra el uso del manipulador de flujo endl. /* El siguiente programa: ENDL1.CPP, muestra el uso del manipulador de flujo endl. //Para cout Bienvenidos al INSTITUTO POLITECNICO NACIONAL! cout << " Bienvenidos al "; cout << "INSTITUTO POLITÉCNICO NACIONAL!"; cout << endl; }//Fin de main( ) El siguiente programa: ENDL2.CPP, ilustra el uso de endl: /* El siguiente programa. ENDL2.CPP, ilustra el uso del manipulador endl. // Para cout El lenguaje C++ es... bastante fácil. cout << "El lenguaje C++ es... " << endl << "bastante fácil."; } // Fin de main( ) 6-10

11 Ejemplo 6.8 Es posible enviar a la salida expresiones tal como se muestra en el siguiente programa: EXPRESIO- NES.CPP. /* El siguiente programa: EXPRESIONES.CPP, muestra el uso de envío a la salida de valores de expresiones. //Para cout cout << "15 más 27 es: "; 15 más 27 es: 42 //No se necesitan los paréntesis, pero se utilizan para claridad cout << ( ); //expresión cout << '\n'; }//Fin de main( ) OTROS CARACTERES ESPECIALES En la lección 3 página 3-24 (constantes de tipo carácter y cadena) hemos visto ya los caracteres especiales, los repetiremos simplemente para tener una rápida referencia. Carácter Propósito \a Carácter alerta (o campana) \b Carácter retroceso (backspace) \f Carácter alimentación de hoja (formfeed) \n Carácter nueva línea (newline) \r Carácter retroceso de carro (carriage return) (no alimenta nueva línea) \t Carácter de tabulador horizontal (horizontal tab) \v Carácter de tabulador vertical (vertical tab) \\ Carácter diagonal inverso (backslash) \? Carácter interrogación (question mark) \ Carácter apóstrofe \ Carácter comillas \0 Carácter nulo \0OO Valor octal tal como \007 \xhhh Valor hexadecimal tal como \xffff Ejemplo 6.9 El siguiente programa: ESPECIAL.CPP utiliza los caracteres especiales '\a' (alerta) y tabulador ( '\t' ) para emitir un sonido en la bocina de la computadora y luego visualiza las palabras, Campana Campana Campana, separadas cada una de ellas por un tabulador. 6-11

12 /* El siguiente programa: ESPECIAL.CPP, utiliza los caracteres especiales '\a' (alerta) y tabulador ('\t') para emitir un sonido en la bocina de la computadora y luego visualiza las palabras, Campana Campana Campana, separadas cada una por un tabulador. // Para cout cout << "Campana\a\tCampana\a\tCampana\a"; } // Fin de main( ) Campana Campana Campana Como antes hemos dicho, la salida no es inmediatamente emitida al dispositivo, sino más bien se va acumulando en cierta área de la memoria (búfer o buffer) asignada a tal dispositivo. Sin embargo, cuando se encuentra con el manipulador endl o bien una operación de lectura, el búfer es vaciado (enviar la información al dispositivo). Si desea vaciar inmediatamente el buffer asignado al dispositivo sin necesidad de dar un salto de línea se puede utilizar la palabra flush. Ejemplo 6.10 El siguiente programa: FLUSH.CPP, ilustra el uso del manipulador flush para vaciar el búfer. /* El siguiente programa: FLUSH.CPP, muestra el uso del manipulador flush para enviar inmediatamente la salida al dispositivo. // Para cout Esta línea aparece inmediatamente. Lo mismo sucede con esta línea... cout << "Esta línea aparece inmediatamente." << flush; cout << "\nlo mismo sucede con esta línea..." << flush; } // Fin de main( ) VISUALIZANDO NÚMEROS CON cout Cuando quiera escribir información numérica fija, simplemente inserte los valores numéricos dentro del flujo de salida cout utilizando el operador <<. Ejemplo 6.11 El siguiente programa: 1001.CPP despliega el número 1001 en su pantalla: /* El siguiente programa: 1001.CPP, despliega el número 1001 por pantalla. // Para cout cout << 1001; } // Fin de main( )

13 Ejemplo 6.12 Cuando se inserta un valor de punto flotante fijo, se obtiene el decimal fijo equivalente en la salida, no el equivalente exponencial. El siguiente programa: FLOTANTE.CPP, usa cout para desplegar el número en su pantalla. /* El siguiente programa: FLOTANTE.CPP, despliega el número por pantalla. cout << ; } // Fin de main( ) // Para cout VISUALIZANDO VARIOS VALORES CON UN cout Cuando utiliza cout, puede utilizar el operador de inserción más de una vez por enunciado. La salida no genera ningún espacio entre los elementos. Ejemplo 6.13 El siguiente programa: 1001BIS.CPP, usa el operador cuatro veces para desplegar el número 1001 en la pantalla. /* El siguiente programa: 1001BIS.CPP, utiliza el operador << cuatro veces para desplegar el número 1001 en la pantalla. // Para cout cout << 1 << 0 << 0 << 1; } // Fin de main( ) 1001 Ambas condiciones (espaciado y salida decimal) se pueden modificar con las opciones de formato dentro del enunciado cout. El formato de salida se explicará mas adelante (Manipulación de flujo). VISUALIZANDO CARACTERES FIJOS CON cout Para escribir información de caracteres, deberá encerrar la información de salida entre comillas (comillas simples para caracteres sencillos y comillas dobles para cadenas de caracteres). Por consiguiente, el enunciado: genera como salida una A. cout << 'A'; 6-13

14 El enunciado: produce como salida: La vida es bella! Ejemplo 6.14 cout << "La vida es bella! " ; Veamos un ejemplo en el que se muestren varios mensajes en la pantalla del monitor. Llamemos al programa COUT.CPP: /* El siguiente programa: COUT.CPP, utiliza el objeto de flujo de salida cout para visualizar varios mensajes en la pantalla del monitor. // Para cout cout << "Esta es la línea uno.\n"; cout << "Este texto se encuentra "; cout << "en la línea dos.\n"; cout << "Esta es la última línea."; } // Fin de main( ) Esta es la línea uno. Este texto se encuentra en la línea dos. Esta es la última línea. VISUALIZANDO CADENA DE CARACTERES Y NÚMEROS CON cout Ejemplo 6.15 El siguiente programa: CVALNUM.CPP, utiliza cout para visualizar cadena de caracteres y números: /* El siguiente programa: CVALNUM.CPP, muestra como cout visualiza cadena de caracteres y números. cout le permite visualizar cadenas de caracteres, números enteros // Para cout y de punto flotante cout << "cout le permite visualizar cadenas de caracteres, números enteros\n"; cout << "y de punto flotante.\n\n"; cout << 1001; cout << '\n'; cout << ; } // Fin de main( ) Ejemplo 6.16 El programa siguiente: MSTR1001.CPP visualiza una cadena de caracteres y un número utilizando un cout: 6-14

15 /* El siguiente programa: MSTR1001.CPP, visualiza una cadena de caracteres y un número, utilizando un solo cout. // Para cout cout << "Mi número favorito es: " << 1001; } // Fin de main( ) Mi número favorito es: 1001 Ejemplo 6.17 El programa siguiente: ENM1001.CPP, visualiza el número 1001 en medio de dos cadenas de caracteres: /* El siguiente programa: ENM1001.CPP, visualiza el número 1001 en medio de dos cadenas de caracteres. // Para cout cout << "El número " << 1001 << " es mi favorito"; } // Fin de main( ) El número 1001 es mi favorito UTILIZANDO cout PARA COMBINAR DIFERENTES TIPOS DE VALORES Ejemplo 6.18 Un objeto de flujo de salida cout le permite escribir diferentes tipos de valores, como se muestra en el siguiente programa: UNCOUT.CPP: /* El siguiente programa: UNCOUT.CPP, le muestra como se puede utilizar un solo cout para escribir cadenas y números de diferentes tipos. cout visualiza cadenas // Para cout cout << "cout visualiza cadenas " << "\n\n" << 1001 << '\n' << ; } // Fin de main( ) 6-15

16 VISUALIZANDO OBJETOS VARIABLE CON cout Lo siguiente que deberá aprender es cómo escribir información contenida en un objeto variable. De nuevo, ésta es una tarea sencilla si se utiliza el objeto cout: simplemente inserte el (los) identificador(es) de variables dentro del flujo cout con el operador de inserción <<. Por ejemplo, si su programa ha definido voltaje, corriente y resistencia como objetos variables, puede escribir sus respectivos valores insertándolos dentro de un flujo cout, de la manera siguiente: cout << voltaje << corriente << resistencia; El enunciado anterior escribirá los valores almacenados en memoria para voltaje, corriente y resistencia, en ese orden. El orden de salida será el mismo que el orden listado dentro del enunciado cout. Sin embargo, no habrá espacios entre los valores. Los caracteres en blanco se deben insertar en forma separada para proporcionar espacio. Ejemplo 6.19 El siguiente programa: OHM.CPP, utiliza la ley de Ohm que establece que el voltaje es igual al producto de la corriente por la resistencia. Su objetivo es escribir un mensaje junto con los valores de la corriente y resistencia, así como el voltaje. /* El siguiente programa: OHM.CPP, calcula y muestra el voltaje usando la ley de OHM. Este programa calculará el voltaje dada una corriente de amperes y una resistencia de ohms. // Para cout Valor de corriente = amperes. Valor de resistencia = 4700 ohms. Valor del voltaje resultante = 4.7 volts float voltaje = 0.0; // Para el voltaje calculado. float corriente = 0.001; // Valor de la corriente. float resistencia = ; // Valor de la resistencia. // Breve descripción del programa. cout << "Este programa calculará el voltaje dada una corriente de " "amperes\ny una resistencia de ohms." << endl << endl; // Cálculo del voltaje utilizando la ley de Ohm. voltaje = corriente * resistencia; // Mostrar los resultados. cout << "Valor de corriente = " << corriente << " amperes.\n" "Valor de resistencia = " << resistencia << " ohms.\n" "Valor del voltaje resultante = " << voltaje << " volts" << endl; } // Fin de main ( ) SALIDA DE VARIABLES char * En la E/S estilo C es necesario que el programador proporcione información del tipo de datos. C++ determina automáticamente los tipos de datos una mejora agradable sobre C. Pero a veces esto resulta un estorbo. Por ejemplo, sabemos que una cadena de caracteres 6-16

17 es de tipo char *. Supongamos que quiere imprimir el valor de ese apuntador, es decir, la dirección de memoria del primer carácter de dicha cadena. Pero el operador << ha sido sobrecargado para que imprima los datos de tipo char * como cadenas terminadas en nulo. La solución es hacer una conversión de tipo mediante cast del apuntador a un tipo void * (esto deberá hacerse para cualquier variable de apuntador que el programador desee enviar a la salida como una dirección). Ejemplo 6.20 El siguiente programa: DIRCHAR.CPP, muestra la impresión de una variable char * en formatos de cadena y dirección. Observe que la dirección se imprime como número hexadecimal (base 16). En C++ los números hexadecimales comienzan con 0x o 0X. /* El siguiente programa: DIRCHAR.CPP, muestra en pantalla el contenido de una variable char * en formatos de cadena y de dirección. //Para cout El valor de cadena es: INSTITUTO POLITECNICO NACIONAL El valor de static_cast<void *>( cadena ) es: 0x169f00ba char *cadena = "INSTITUTO POLITÉCNICO NACIONAL"; cout }//Fin de main( ) << "El valor de cadena es: " << cadena << "\nel valor de static_cast< void * >( cadena ) es: " << static_cast< void * > ( cadena ) << endl; SALIDA DE CARACTERES CON LA FUNCIÓN MIEMBRO put( ); put( ) EN CASCADA La función miembro put( ) envía a la salida un carácter como en cout.put('a'); que despliega una A en la pantalla. Las llamadas a put( ) pueden ponerse en cascada como en cout.put( 'A ').put ( '\n' ); la cual da salida a la letra A seguida de un carácter de nueva línea. Como sucede con <<, la instrucción anterior se ejecuta de esta forma debido a que el operador punto (.) asocia de izquierda a derecha y la función miembro put( ) devuelve una referencia al objeto mediante el que se realizó la llamada a put( ). La función put( ) también puede invocarse mediante una expresión de valor ASCII, como en cout.put( 65 ), lo cual también da salida a A. E/S SIN FORMATO MEDIANTE read( ), gcount( ) y write( ) Aunque la idea de esta lección, es tratar exclusivamente con el objeto flujo de salida de datos, trataremos brevemente el flujo de entrada de datos. 6-17

18 La entrada/salida sin formato se realiza con las funciones miembro read( ) y write( ). Cada una de ellas da entrada o envía a la salida algún número de bytes desde o hacia un arreglo de caracteres que está en memoria. Estos bytes no tienen ningún formato. Se les da entrada o salida simplemente como bytes sin formato. Por ejemplo, la llamada: char buffer[] = "INSTITUTO POLITÉCNICO NACIONAL"; cout.write( buffer, 10 ); envía a la salida los primeros 10 bytes de buffer (incluyendo los caracteres nulos que podrían causar que terminara la salida con cout y <<). Debido a que una cadena de caracteres se evalúa por la dirección de su primer carácter, la llamada cout.write( "ABCDEFGHIJKLMNOPQRSTUVWXYZ", 10 ); despliega los primeros 10 caracteres de la cadena. La función miembro read( ) introduce un número determinado de caracteres en un arreglo. Si se leen menos caracteres que el número indicado, se establece la bandera failbit. Pronto veremos la manera de determinar si se ha establecido failbit. La función miembro gcount( ) reporta cuántos caracteres ha leído la última operación de entrada. Ejemplo 6.21 El siguiente programa: SINFORMATO.CPP, muestra las funciones miembro read( ) y gcount( ) de istream y la función miembro write( ) de ostream. El programa utiliza read( ) para introducir 20 caracteres (a partir de una secuencia de entrada más larga) en el arreglo de caracteres buffer, se vale de gcount( ) para determinar el número de caracteres que se introdujeron y emplea write( ) para enviar a la salida los caracteres que están en el buffer. /* El siguiente programa: SINFORMATO.CPP, ilustra el uso de las funciones miembro read( ), gcount( ) y write( ). //Para cout y cin const int TAMANO = 80; char buffer[tamano]; Introduzca una oración: DABALE ARROZ A LA ZORRA EL ABAD La oración introducida fue: DABALE ARROZ A LA ZO cout << "Introduzca una oración:\n"; cin.read(buffer, 20); cout << "\nla oración introducida fue:\n"; cout.write( buffer, cin.gcount( ) ); cout << endl; }//Fin de main( ) 6-18

19 REDIRECCIONANDO LA SALIDA DE cout En realidad cout dirige la salida al dispositivo estándar (stdout) asignado al sistema (en nuestro caso lo es la pantalla del monitor). Por lo tanto, es posible desde el sistema operativo redireccionar la salida de cout. Por ejemplo, en el caso del programa FLUSH.CPP, si quisiéramos que la salida de cout fuera dirigida a la impresora, entonces desde el DOS podemos escribir el siguiente comando: o bien si quisiéramos enviarla a un archivo: C:\> FLUSH.EXE > prn C:\> FLUSH.EXE > nombrearchivo Si por alguna razón desea que la salida no sea redireccionable, por ejemplo, le agradaría que los mensajes de error que envíe al usuario aparezcan en la pantalla del monitor y no en la impresora, entonces deberá utilizar el objeto cerr en vez del objeto cout. Este objeto envía la salida al dispositivo estándar para el manejo de errores (stderr) el cual no es redireccionable y normalmente es la pantalla del monitor. Ejemplo 6.22 El siguiente programa: CERR.CPP, ilustra el uso del objeto cerr. * El siguiente programa: CERR.CPP, utiliza el flujo de salida cerr para visualizar el mensaje "Este mensaje siempre aparece en el dispositivo estándar stderr". // Para cout Este mensaje siempre aparece en el dispotivo estándar: stderr cerr << "Este mensaje siempre aparece en el dispotivo estándar: stderr"; } // Fin de main( ) Existe otro objeto de flujo de salida, clog, que se utiliza al igual que cerr, salvo que la salida no la envía directamente al dispositivo asignado (como es el caso de cerr) sino que la envía al área búfer. 6-19

20 Ejemplo 6.23 El siguiente programa: CLOG.CPP, ilustra el uso de clog. /* El siguiente programa: CLOG.CPP, utiliza el flujo de salida clog para visualizar el mensaje "Este mensaje NO siempre aparece inmediatamente en el dispositivo estándar: stderr". Este mensaje NO siempre aparece inmediatamene en el dispositivo estándar: stderr // Para cout clog << "Este mensaje NO siempre aparece inmediatamente en el dispositivo estándar: stderr"; } // Fin de main( ) EXAMEN BREVE 14 MANIPULACIÓN DEL FLUJO A la organización de la salida de un programa se le conoce con el nombre de formateo de la salida. Las formas más comunes de dar formato a la salida son las siguientes: 1. Mediante el uso de funciones miembro de un objeto de flujo. Su sintaxis es la siguiente: nombreobjetoinvocador.nombrefuncionmiembro(listaargumentos ); Por ejemplo: cout.width( 5 ); cout.fill( '*' ); cout.precision( 2 ); Nota: Estas instrucciones se estudiaran mas adelante. 2. Mediante el uso de funciones especiales llamadas manipuladores (o modificadores), con o sin argumentos. Por ejemplo: cout << flush; cout << endl; cout << setw( 5 ) << 12 << endl; cout << seprecision( 2 ) << << endl; Nota: Estas instrucciones se estudiaran mas adelante. 3. Mediante el uso de banderas (indicadores) como argumentos de la función miembro setf( ) del objeto de flujo: Por ejemplo: cout.setf( ios::fixed ); cout.setf( ios::showpoint ); Nota: Estas instrucciones se estudiaran mas adelante. 6-20

21 a. Cualquier bandera (indicador) establecida puede desactivarse. Para desactivar una bandera usamos la función miembro unsetf( ). Por ejemplo, el siguiente enunciado hará que el programa deje de incluir el signo de mas antes de los enteros positivos que se envían al flujo cout. cout.unsetf( ios::showpos ); 4. Mediante el uso de banderas (indicadores) como argumento de la función setiosflags( ). a. Cualquier bandera (indicador) establecida puede desactivarse. Para desactivar una bandera usamos la función resetiosflags( ). Por ejemplo, el siguiente enunciado hará que el programa deje de justificar la salida de los datos a la izquierda. resetiosflags( ios::left ); 5. Para emplear los manipuladores es preciso incluir la siguiente directiva en el programa: #include <iomanip.h> Un manipulador es una función que se invoca de manera no tradicional. A su vez, la función manipuladora invoca una función miembro. Los manipuladores se colocan después del operador de inserción <<, como si la función manipuladora fuera un elemento que se enviara a la salida. Al igual que las funciones tradicionales, los manipuladores pueden tener o no argumentos. Ya vimos un manipulador: endl. El manipulador setw( ) y la función miembro width( ) hacen exactamente lo mismo. Invocamos al modificador setw( ) escribiéndolo después del operador de inserción <<, como si lo fuéramos a enviar al flujo cout, y este a su vez invoca a la función miembro width( ). Por ejemplo, lo que se muestra a continuación despliega los números 15, 25 y 35 usando la anchura de campo especificada: cout << Inicio << setw( 4 ) << 15 << setw( 4 ) << 25 << setw( 6 ) << 30; La instrucción anterior produce la siguiente salida: Inicio (Hay dos espacios antes del 15, dos antes del 25 y cuatro antes del 30). El manipulador setprecision( ) hace exactamente lo mismo que la función miembro precision( ). Sin embargo, las llamadas a setprecision( ) se escriben después del operador de inserción <<, tal como se hace con el manipulador setw( ). Por ejemplo, lo que sigue despliega los números que se listan empleando el número de dígitos después del punto decimal que se indica en la llamada a setprecision( ): cout.setf( ios::fixed ); cout.setf( ios::showpoint ); cout << $ << setprecision( 2 ) << 10.3 << endl << $ << 20.5 << endl; La instrucción anterior produce la siguiente salida salida: $10.30 $

22 Al igual que con la función miembro precision( ) cuando establecemos el número de dígitos después del punto decimal empleando el manipulador setprecision( ) el efecto persiste hasta que otra llamada a setprecision( ) o precision( ) cambie el número de dígitos. C++ proporciona diversos manipuladores de flujo que realizan tareas de formato. Dichos manipuladores proporcionan capacidades tales como: Establecimiento de: Base 8, 10 y 16 para números enteros. Precisiones. La anchura de campos. Punto decimal y ceros a la derecha para flotante y doble. La alineación a la izquierda o derecha. El caracter de relleno de una salida. Los indicadores de formato (restablecimiento). Vaciado de flujo. Inserción de nuevas líneas en el flujo de salida y vaciado de flujo. inserción de un carácter nulo en el flujo de salida y el salto de espacios en blanco en el flujo de entrada. Estas características se describen en las siguientes secciones. CAMBIO DE BASE PARA NUMEROS ENTEROS: dec, oct, hex Y setbase( ) Los enteros normalmente se interpretan como valores en base 10. Para cambiar la base sobre la que se interpretan los enteros en un flujo, inserte el manipulador hex para establecer la base a hexadecimal (base 16), inserte el manipulador oct para establecer la base a octal (base 8), inserte el manipulador de flujo dec para restablecer la base a decimal. La base de un flujo también se puede cambiar por medio del manipulador de flujo setbase( ), el cual toma un argumento entero de 8, 10 o 16 para establecer la base. Debido a que setbase( ) toma un argumento, se le llama manipulador de flujo con parámetro. El uso de setbase( ), o cualquier otro manipulador con parámetro, requiere la inclusión del archivo de encabezado <iomanip.h>. La base permanece igual hasta que se cambia explícitamente. Ejemplo 6.24 El siguiente programa: OCTHEX1.CPP, muestra el uso de los manipuladores de flujo hex, oct, dec y setbase( ). /* El siguiente programa: OCTHEX1.CPP, ilustra el uso de los manipiladores de flujo oct, hex, dec y setbase( ). //Para cout #include <iomanip.h> //Para oct, hex, dec y setbase( ) int n; Introduzca un número decimal: en hexadecimal es : 1c8 456 en octal es : en decimal es : 456 cout << "Introduzca un número entero: "; 6-22

23 cin >> n; cout }//Fin de main( ) << n << " en hexadecimal es: " << hex << n << '\n' << dec << n << " en octal es : " << oct << n << '\n' << setbase( 10 ) << n << " en decimal es: " << n << endl; Ejemplo 6.25 El siguiente programa: OCTHEX2.CPP, de igual manera ilustra el uso de los manipuladores hex, oct, dec y setbase( ). /* El siguiente programa. OCTHEX2.CPP, ilustra el uso de los manipuladores oct, hex, dec, setbase( ). // Para cout #include <iomanip.h> // oct, dec, hex, setbase( ) // Observe como al utilizar un manipulador el mismo queda activo // hasta que otro manipulador lo desactive. cout << "Octal: " << oct << 10 << ' ' << 20 << endl; cout << "Hexadecimal: " << hex << 10 << ' ' << 20 << endl ; cout << "Decimal: " << dec << 10 << ' ' << 20 << endl; cout << endl; Octal: Hexadecimal: a 14 Decimal: Octal: 12 Decimal: 255 Decimal: 10 Hexadecimal: ff Octal: Hexadecimal: a 14 Decimal: cout << "Octal: " << oct << 10 << endl; cout << "Decimal: " << dec << 0xFF << endl; cout << "Decimal: " << dec << 012 << endl; cout << "Hexadecimal: " << hex << 255 << endl; cout << endl; // Los siguientes ejemplos muestran el uso del manipulador setbase( ) cout << "Octal: " << setbase( 8 ) << 10 << ' ' << 20 << endl; cout << "Hexadecimal: " << setbase( 16 ) << 10 << ' ' << 20 << endl; cout << "Decimal: " << setbase( 10 ) << 10 << ' ' << 20 << endl; } // Fin de main( ) NOTA: Observe que cuando utiliza alguno de los manipuladores dec, oct, hex o setbase( ), el mismo permanece activo hasta que termine su programa o utilice un manipulador diferente. PRECISIÓN DE PUNTO FLOTANTE (precision( ), setprecision( )) Dependiendo de cuando fue escrito su compilador (versión), la precisión se toma como el número de cifras significativas o el número de dígitos después del punto decimal. Así, algunos ejemplos de setprecision( 2 ) según la primera opción son: e e Ejemplos en base a la segunda opción son: e e

24 En estas lecciones, cuando nos refiramos a precision, estaremos hablando de la segunda opción: número de dígitos después del punto decimal. Podemos controlar la precisión de los números de punto flotante utilizando el manipulador de flujo setprecision( ) o la función miembro precision( ). Una llamada a cualquiera de éstos establece la precisión para todas las operaciones de salida subsecuentes hasta cambiar nuevamente la precision. La función miembro precision( ) sin argumentos devuelve el valor de la precisión actual. Ejemplo 6.26 El siguiente programa: PRECISION1.CPP, ilustra el uso del manipulador setprecision( ) /* El siguiente programa: PRECISION1.CPP, muestra el uso del manipulador setprecision( ) para indicar el número de dígitos decimales del valor flotante. //Para cout #include <iomanip.h> //Para setprecision( ) float valor = ; cout << setiosflags( ios::fixed ); cout << setprecision( 0 ) << valor << endl; cout << setprecision( 1 ) << valor << endl; cout << setprecision( 2 ) << valor << endl; cout << setprecision( 3 ) << valor << endl; cout << setprecision( 4 ) << valor << endl; cout << setprecision( 5 ) << valor << endl; cout << setprecision( 6 ) << valor << endl; } //Fin de main( ) Ejemplo 6.27 El siguiente programa: PRECISION2.CPP, utiliza la función miembro precision( ) y el manipulador setprecision( ) para imprimir una tabla que muestra la raíz cuadrada de 2 con precisiones que varían de 0 a 9. (Ver salida a continuación). Raíz cuadrada de 2 con precisión 0-9. Precisión establecida por la función miembro precision( ):

25 Precision establecida por el manipulador setprecision( ): /* El siguiente programa: PRECISION2.CPP, utiliza la función miembro precision( ) y el manipulador setprecision( ) para imprimir una tabla que muestra la raíz cuadrada de 2 con precisiones que varían de 0 a 9. //Para cout #include <iomanip.h> //Para precision( ) y setprecision( ) #include <math.h> //Para sqrt( ) double raiz2 = sqrt( 2.0 ); int posiciones; cout << setiosflags( ios::fixed ) << "Raíz cuadrada de 2 con precision 0-9.\n" << "Precision establecida por la " << "funcion miembro precision( ):" << endl; for( posiciones = 0; posiciones <= 9; posiciones++ ) cout.precision( posiciones ); cout << raiz2 << '\n'; }//Fin del for cout << "\nprecision establecida por el " << "manipulador setprecision( ):\n"; for( posiciones = 0; posiciones <= 9; posiciones++ ) cout << setprecision( posiciones ) << raiz2 << '\n'; }//Fin de main( ) ANCHURA DE CAMPO (setw( ), width( )) La función miembro width( ) de ios establece la anchura del campo (es decir, el número de posiciones de carácter con el que un valor deberá enviarse a la salida o el número de caracteres que deberá introducirse) y devuelve la anchura anterior. Si los valores procesados son más pequeños que la anchura de campo, se insertan caracteres de relleno como relleno. Un valor más grande que el ancho indicado no se truncará, sino que se imprimirá el número completo. 6-25

26 Ejemplo 6.28 El siguiente programa: ANCHURA1.CPP, muestra como se usa cout.width( numerocaracteres ): /* El siguiente programa: ANCHURA1.CPP, ilustra el uso de La función miembro cout.width( ). // Para cout cout << "Mi número favorito es:"; cout.width( 3 ); cout << 1001 << endl; cout << "Mi número favorito es:"; cout.width( 4 ); cout << 1001 << endl; cout << "Mi número favorito es:"; cout.width( 5 ); cout << 1001 << endl; Mi número favorito es:1001 Mi número favorito es:1001 Mi número favorito es: 1001 Mi número favorito es: 1001 cout << "Mi número favorito es:"; cout.width( 6 ); cout << 1001 << endl; } // Fin de main() Nota: Cuando utilice la función miembro width( ), debe de especificar el ancho deseado para cada valor que desee mostrar. Ejemplo 6.29 Varios de los programas anteriores visualizan números en la pantalla. Para asegurar que los números se muestren correctamente, el programa debe de manejar los espacios antes y después de los números. Cuando utiliza cout y cerr para visualizar la salida, sus programas pueden especificar el número mínimo de caracteres requeridos para mostrar la salida utilizando el manipulador setw( ). Para utilizar setw( ) especifique el número mínimo de caracteres que el valor utilizará. Por ejemplo, el programa siguiente ANCHURA2.CPP utiliza el manipulador setw( ) para seleccionar anchos de 3, 4, 5 y 6 caracteres para el valor /* El siguiente programa: ANCHURA2.CPP, ilustra el uso del manipulador setw( ). // Para cout #include <iomanip.h> // Para setw( ) Mi número favorito es:1001 Mi número favorito es:1001 Mi número favorito es: 1001 Mi número favorito es: 1001 cout << "Mi número favorito es:" << setw( 3 ) << 1001 << endl; cout << "Mi número favorito es:" << setw( 4 ) << 1001 << endl; cout << "Mi número favorito es:" << setw( 5 ) << 1001 << endl; cout << "Mi número favorito es:" << setw( 6 ) << 1001 << endl; } // Fin de main( ) Nota: Cuando usa setw( ) para seleccionar un ancho, el ancho es únicamente para el siguiente valor. Si requiere especificar un ancho para múltiples valores, requerirá utilizar setw( ) para cada 6-26

27 Ejemplo 6.30 uno de ellos. Si el ancho es menor que el número a mostrar, C++ toma la decisión correcta de utilizar como ancho, el número de dígitos que el número tenga. El siguiente programa: ANCHURA3.CPP, es otro ejemplo en el que se utiliza setw( ). Ver la salida a continuación: NOMBRE DIRECCION TELEFONO // El siguiente programa: ANCHURA3.CPP, muestra el uso del manipulador setw( ). // Para incluir cout #include <iomanip.h> // Para incluir setw( ) // Salta cuatro líneas y muestra los encabezados cout << "\n\n\n\n" << setw( 15 ) << "NOMBRE" << setw( 22 ) << "DIRECCIÓN" << setw( 23 ) << "TELÉFONO" << endl; cout << setw( 14 ) << "----" << setw( 22 ) << " " << setw( 23 ) << "------" << endl; } //Fin de main( ) Ejemplo 6.31 Dado un valor de corriente de amperes y un valor de resistencia de ohms, escriba un programa llamado: ANCHURA4.CPP, para calcular el voltaje usando la ley de Ohm. Escriba los valores de la corriente, resistencia y voltaje usando formato en la salida. /* El siguiente programa: ANCHURA4.CPP, muestra los valores de la ley de Ohm en forma tabular. // Para incluir cout #include <iomanip.h> // Para incluir setw( ) // Definición e iniciación de variables float voltaje = 0.0; float corriente = 0.001; float resistencia = ; CORRIENTE RESISTENCIA VOLTAJE

28 // Cálculo del voltaje voltaje = corriente * resistencia; // Muestra los títulos. Se prepara la salida de los valores en formato decimal, // justificado a la izquierda y con tres decimales de precisión. cout.setf( ios::fixed ios::left ); cout.precision( 3 ); cout << "\n\n\n\n" << setw( 20 ) << "CORRIENTE" << setw( 20 ) << "RESISTENCIA" << setw( 20 ) << "VOLTAJE" << endl; cout << setw( 20 ) << " " << setw( 20 ) << " " << setw( 20 ) << " " << endl; // Muestra valores //cout.precision( 3 ); Qué ocurre si se cambia la precisión a 2 dec? //cout.unsetf( ios::fixed ); Qué ocurre si se desactiva el formato decimal? cout << setw( 20 ) << corriente << setw( 20 ) << resistencia << setw( 20 ) << voltaje << endl; } //Fin de main( ) Ejemplo 6.32 Nota: Más adelante se explicará el uso de los miembros cout.setf( ios::fixed ios::left ), y cout.unsetf( ios::fixed ). El siguiente programa: ANCHURA5.CPP, muestra el uso de la función miembro width( ) tanto en la entrada como en la salida. Observe que en la entrada se leerá un máximo de un carácter menos que la anchura, debido a que se hace la previsión para el carácter nulo que se colocará en la cadena de entrada. Recuerde que la extracción de flujo termina cuando se encuentra un espacio en blanco que no está al inicio. El manipulador de flujo setw( ) también puede utilizarse para establecer la anchura de campo. Nota: cuando se pide al usuario que introduzca los datos, éste deberá dar una línea de texto y oprimir ENTER seguido del fin de archivo (<ctrl>z en sistemas compatibles con IBM PC, <ctrl>d en sistemas UNIX y Macintosh). Ver la salida a continuación. Introduzca una oración: Nuestra vida son los ríos que van a parar a la mar. Nues tra vida son los ríos que van a para r a la mar. 6-28

Formato de salida con la instrucción cout Por Fabian Gentile

Formato de salida con la instrucción cout Por Fabian Gentile Formato de salida con la instrucción cout Por Fabian Gentile Un medio de formatear la salida es usar manipuladores, que son funciones especiales que sirven para cambiar la apariencia de una operación de

Más detalles

Entrada y Salida estándar en C++

Entrada y Salida estándar en C++ Entrada y Salida estándar en C++ Un programa en C++ puede realizar operaciones de entrada y salida de varias formas distintas. A continuación describiremos lo que se conoce como flujos. Un flujo de entrada

Más detalles

Apuntadores en C y C++

Apuntadores en C y C++ Apuntadores en C y C++ Universidad de Carabobo Facultad Experimental de Ciencias y Tecnología Prof. Marcos A. Gil T. 8 de diciembre de 2004 1. Introducción Los apuntadores en C y C++ son una herramienta

Más detalles

Entrada y Salida en C++

Entrada y Salida en C++ Entrada y Salida en C++ Fundamentos de Programación Curso: 1º FP 1 Introducción Flujo de entrada: serie de entradas que alimentan un ordenador para que el programa las utilice. Flujo de salida: serie de

Más detalles

Formato para prácticas de laboratorio

Formato para prácticas de laboratorio PROGRAMA PLAN DE CLAVE DE UNIDAD DE NOMBRE DE LA UNIDAD DE EDUCATIVO ESTUDIO APRENDIZAJE APRENDIZAJE Ing. En Mecatrónica 2009-2 11892 Programación Orientada a Objetos PRÁCTICA No. 3 LABORATORIO DE NOMBRE

Más detalles

Ampliación de Sistemas Operativos Trabajo voluntario Tema 1 Francisco Charte Ojeda ENTRADA/SALIDA EN C++

Ampliación de Sistemas Operativos Trabajo voluntario Tema 1 Francisco Charte Ojeda ENTRADA/SALIDA EN C++ Ampliación de Sistemas Operativos Trabajo voluntario Tema 1 Francisco Charte Ojeda ENTRADA/SALIDA EN C++ ENTRADA/SALIDA EN C++ Principales características Jerarquía de clases de E/S Aspectos generales

Más detalles

Entrada y Salida en C++

Entrada y Salida en C++ Estructura de Datos y Algoritmos Entrada y Salida en C++ 1. Introducción Las bibliotecas estándar de C++ proporcionan un amplio conjunto de capacidades de entrada/salida (E/S). C++ utiliza E/S a prueba

Más detalles

Laboratorio de Arquitectura de Redes. Entrada y salida estándar

Laboratorio de Arquitectura de Redes. Entrada y salida estándar Laboratorio de Arquitectura de Redes Entrada y salida estándar Entrada y salida estándar Entradas y salidas Salida con formato: printf() Entrada de datos con formato: scanf() El buffer de teclado Entrada

Más detalles

Informática Ingeniería en Electrónica y Automática Industrial

Informática Ingeniería en Electrónica y Automática Industrial Informática Ingeniería en Electrónica y Automática Industrial Entrada y salida estándar V1.3 Autores Entrada y salida estándar Entradas y salidas Salida con formato: printf() Entrada de datos con formato:

Más detalles

Datos y tipos de datos

Datos y tipos de datos Datos y tipos de datos Dato Representación formal de hechos, conceptos o instrucciones adecuada para su comunicación, interpretación y procesamiento por seres humanos o medios automáticos. Tipo de dato

Más detalles

Informática PRÀCTICA 9 Curs Práctica Nº 9: Rango y precisión de representación de números en el ordenador.

Informática PRÀCTICA 9 Curs Práctica Nº 9: Rango y precisión de representación de números en el ordenador. Departamento de Práctica Nº 9: Rango y precisión de representación de números en el ordenador. Uso de punteros Objetivos de la práctica: - Entender la representación de números (enteros y reales) en el

Más detalles

TEMA 7: Ficheros. TEMA 7: Ficheros. 7.1.-Concepto de fichero

TEMA 7: Ficheros. TEMA 7: Ficheros. 7.1.-Concepto de fichero TEMA 7: Ficheros 7.1.-Concepto de fichero Todas las estructuras de datos que hemos visto hasta ahora utilizan memoria principal. Esto tiene dos limitaciones importantes: 1. Los datos desaparecen cuando

Más detalles

Programación 1 Tema 13. Entrada y salida de datos

Programación 1 Tema 13. Entrada y salida de datos Programación 1 Tema 13 Entrada y salida de datos Objetivos Interacción de un programa con su entorno (consola, sistema de ficheros) leyendo o escribiendo datos Fichero como secuencia persistente de datos

Más detalles

Programación 1 Tema 3. Información, datos, operaciones y expresiones

Programación 1 Tema 3. Información, datos, operaciones y expresiones Programación 1 Tema 3 Información, datos, operaciones y expresiones Índice Datos y tipos de datos Datos primitivos en C++ Expresiones e instrucción de asignación Datos y tipos de datos Problema información

Más detalles

Objetivo N 2. Conocer la Estructura General de un Programa en C++ Estructura de Datos Prof. Egilde Márquez

Objetivo N 2. Conocer la Estructura General de un Programa en C++ Estructura de Datos Prof. Egilde Márquez Objetivo N 2 Conocer la Estructura General de un Programa en C++ Estructura de Datos Prof. Egilde Márquez * Un programa en C++ está definido por funciones (grupo de instrucciones que pueden o no hacer

Más detalles

Informática PRÀCTICA 3 Curs Práctica Nº 3: Tipos de datos simples. Constantes y variables. Operadores aritméticos. Formato de salida.

Informática PRÀCTICA 3 Curs Práctica Nº 3: Tipos de datos simples. Constantes y variables. Operadores aritméticos. Formato de salida. Práctica Nº 3: Tipos de datos simples. Constantes y variables. Operadores aritméticos. Formato de salida. Objetivos de la práctica: - Mostrar la sintaxis de los diferentes tipos de datos presentes en C/C++.

Más detalles

TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS

TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS Una vez que ya sabes crear tus propios programas, vamos a analizar los fundamentos del lenguaje de programación C. Este capítulo incluye además los siguientes temas:

Más detalles

CAPITULO 4: ENTRADA Y SALIDA DE DATOS.

CAPITULO 4: ENTRADA Y SALIDA DE DATOS. CAPITULO 4: ENTRADA Y SALIDA DE DATOS. 1. INTRODUCCIÓN. Hemos visto que el lenguaje C va acompañado de una colección de funciones de biblioteca que incluye un cierto número de funciones de entrada/salida.

Más detalles

Práctica 2. Desarrollo de programas. Entrada y salida estándar en C.

Práctica 2. Desarrollo de programas. Entrada y salida estándar en C. INFORMÁTICA Práctica 2. Desarrollo de programas. Entrada y salida estándar en C. Grado en Ingeniería en Electrónica y Automática Industrial Curso 2014-2015 v2.0 (05.09.14) CREACIÓN DE UN PROGRAMA A la

Más detalles

Laboratorio de Informática GRADO EN FÍSICA

Laboratorio de Informática GRADO EN FÍSICA Objetivos de la práctica: - Conocer los límites de representación de los tipos de datos simples. - Realizar programas de cálculo sencillo utilizando operadores aritméticos - Utilizar funciones básicas

Más detalles

ESCUELA POLITÉCNICA SUPERIOR PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF

ESCUELA POLITÉCNICA SUPERIOR PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF ESCUELA POLITÉCNICA SUPERIOR GRADO EN DISEÑO IND. INFORMÁTICA CURSO 2012-13 PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF HASTA AHORA... En prácticas anteriores se ha aprendido: La estructura principal de un

Más detalles

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C Algoritmo y Estructura de Datos Ing. M. Laura López 1 Estructura de un programa en C 2 Estructura de un programa en C #include Archivos de cabecera # define Definición de constantes Declaraciones Globales

Más detalles

LENGUAJE DE PROGRAMACION I. Ing. JAVIER ECHEGARAY ROJO Ing. WILDER ROMAN MUNIVE. Ing. Javier Echegaray Rojo / Ing. Wilder Román Munive Pag 1

LENGUAJE DE PROGRAMACION I. Ing. JAVIER ECHEGARAY ROJO Ing. WILDER ROMAN MUNIVE. Ing. Javier Echegaray Rojo / Ing. Wilder Román Munive Pag 1 Ing. JAVIER ECHEGARAY ROJO Ing. WILDER ROMAN MUNIVE Ing. Javier Echegaray Rojo / Ing. Wilder Román Munive Pag 1 CAPITULO 3. ENTRADA Y SALIDA BÁSICA Usando la librería estandar de entrada y salida, seremos

Más detalles

Definición Es una directiva using que ayuda al compilador a localizar una clase que se usa en la aplicación.

Definición Es una directiva using que ayuda al compilador a localizar una clase que se usa en la aplicación. Capitulo 3 Introducción a las aplicaciones de C# Resumen: Item using System; espacios de nombres: Las palabras clave estilo de mayúsculas/minúsculas Pascal public class Bienvenido1 Definición Es una directiva

Más detalles

Trataremos los principales aspectos de las operaciones de E/S en archivos.

Trataremos los principales aspectos de las operaciones de E/S en archivos. Entrada/Salida de archivos Trataremos los principales aspectos de las operaciones de E/S en archivos. Operaciones de escritura en archivos El archivo de cabecera fstream.h define las clases ifstream, ostream

Más detalles

INFORMÁTICA INDUSTRIAL

INFORMÁTICA INDUSTRIAL INFORMÁTICA INDUSTRIAL PROGRAMACIÓN BÁSICA C++ (II) M. Abderrahim, A. Castro, J. C. Cas3llo Departamento de Ingeniería de Sistemas y Automá3ca 4. Entrada y salida estándar M. Abderrahim, A. Castro, J.

Más detalles

Entrada/Salida en C++

Entrada/Salida en C++ Flujos en C++ (Streams) Entrada/Salida en C++ Programación Orientada a Objeto Ing. Civil en Telecomunicaciones Hasta aquí, hemos usado cin y cout para leer desde teclado y escribir a consola C++ no incluye

Más detalles

TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL.

TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL. Tema 2. TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL. PARTE : VARIABLES, OPERADORES Y CONSTANTES.. INTRODUCCIÓN AL LENGUAJE C 2. PROGRAMAS BÁSICOS EN LENGUAJE C 3. DATOS EN LENGUAJE C

Más detalles

Programación estructurada (Introducción a lenguaje C)

Programación estructurada (Introducción a lenguaje C) Programación estructurada (Introducción a lenguaje C) M. en C. Sergio Luis Pérez Pérez UAM CUAJIMALPA, MÉXICO, D. F. Trimestre 15-I Sergio Luis Pérez (UAM CUAJIMALPA) Curso de programación estructurada

Más detalles

Elementos de un programa en C

Elementos de un programa en C Elementos de un programa en C Un programa en C consta de uno o más archivos. Un archivo es traducido en diferentes fases. La primera fase es el preprocesado, que realiza la inclusión de archivos y la sustitución

Más detalles

Informática PRÀCTICA 2 Curs

Informática PRÀCTICA 2 Curs Práctica Nº 2: Estructura general de un programa en C/C++. Introducción a las funciones de Entrada y salida en C++ (cin y cout) sin formato. Objetivos de la práctica: - Presentar la estructura general

Más detalles

INICIACIÓN A LA PROGRAMACIÓN EN C

INICIACIÓN A LA PROGRAMACIÓN EN C INICIACIÓN A LA PROGRAMACIÓN EN C Estructura de un programa sencillo en lenguaje c: Librería estándar de entrada salida Llave de apertura para delimitar el cuerpo de la función Llave de cierre para delimitar

Más detalles

Lección 2 Introducción al lenguaje C

Lección 2 Introducción al lenguaje C Lección Introducción al lenguaje C Decimal Binario Hexadecimal A B C D E F Octal Equivalencia entre decimal, binario, hexadecimal y octal. Código ASCII (American Standard Code for Information Interchange)

Más detalles

El lenguaje C++ A partir del lenguaje C Entorno de programación Visual C++

El lenguaje C++ A partir del lenguaje C Entorno de programación Visual C++ El lenguaje C++ A partir del lenguaje C Entorno de programación Visual C++ Nuevas palabras reservadas asm inline public virtual catch new template class operator this delete private throw friend protected

Más detalles

Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola)

Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola) Objetivos de la sesión Entender el tipo de programas que se pueden realizar con aplicaciones de consola. Conocer el concepto de variable, la forma en que se declaran y su utilización. Conocer la forma

Más detalles

Programación 1 Tema 15. Trabajo con ficheros binarios

Programación 1 Tema 15. Trabajo con ficheros binarios Programación 1 Tema 15 Trabajo con ficheros binarios Índice Ficheros binarios Diferencia con ficheros de texto Herramientas de C++ para trabajar con ficheros binarios Problemas básicos con ficheros binarios

Más detalles

Lenguaje C Elementos de un Programa. Ing. Hugo Fdo. Velasco Peña Universidad Nacional 2006

Lenguaje C Elementos de un Programa. Ing. Hugo Fdo. Velasco Peña Universidad Nacional 2006 Lenguaje C Elementos de un Programa Ing. Hugo Fdo. Velasco Peña Universidad Nacional 2006 Objetivos Conocer los elementos que conforman un programa en C 1. Elementos léxicos de un Programa Cuando el programa

Más detalles

Tipos de variables. Lenguaje C. Departamento de Electrónica. Tipos de datos, variables y constantes. Fundación San Valero

Tipos de variables. Lenguaje C. Departamento de Electrónica. Tipos de datos, variables y constantes. Fundación San Valero Lenguaje C Tipos de variables Departamento de Electrónica Fundación San Valero Tipos de datos, Cinco tipos de datos básicos: Carácter (char): 8 bits -128 a 127. Entero (int): 32 bits -2.147.483.648 a 2.147.483.647.

Más detalles

<<Streams>> y Strings. en C++

<<Streams>> y Strings. en C++ Dr. Florentino Fernández Riverola ESTRUCTURAS DE DATOS Y C/C++ y Strings Escuela Superior de Ingeniería Informática Departamento de Informática Universidad de Vigo riverola@uvigo.es en C++

Más detalles

Programación 1 Tema 15. Trabajo con ficheros binarios

Programación 1 Tema 15. Trabajo con ficheros binarios Programación 1 Tema 15 Trabajo con ficheros binarios Índice Ficheros binarios Diferencia con ficheros de texto Herramientas de C++ para trabajar con ficheros binarios Problemas básicos con ficheros binarios

Más detalles

Principios de Computadoras II

Principios de Computadoras II Departamento de Ingeniería Electrónica y Computadoras Operadores y Expresiones rcoppo@uns.edu.ar Primer programa en Java 2 Comentarios en Java Comentario tradicional (multi-línea) Comentario de línea Comentario

Más detalles

CONTENIDO DE LA LECCIÓN 16

CONTENIDO DE LA LECCIÓN 16 CONTENIDO DE LA LECCIÓN 16 USO DE REFERENCIAS EN C++ 1. Introducción 2 2. Parámetros de referencia como alias 2 2.1. Ejemplo 16.1 3 3. Variables de referencia como alias 4 3.1. Ejemplos 16.2, 16.3, 16.4,

Más detalles

UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO

UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO LICENCIATURA EN INGENIERÍA DE SOFTWARE UNIDAD DE APRENDIZAJE: PROGRAMACIÓN Créditos institucionales de la UA: 8 Material visual: Diapositivas Unidad de competencia

Más detalles

Constantes. Las constantes no cambian durante la ejecucion de un programa en C++, en C++ existen 4 tipos de constantes:

Constantes. Las constantes no cambian durante la ejecucion de un programa en C++, en C++ existen 4 tipos de constantes: Constantes Las constantes se pueden declarar con la palabra reservada const y se le asigna un valor en el momento de la declaracion, este valor no se puede modificar durante el programa y cualquier intento

Más detalles

E/S POR CONSOLA DE C++ Parte I. Elementos Básicos Dr. Oldemar Rodríguez R.

E/S POR CONSOLA DE C++ Parte I. Elementos Básicos Dr. Oldemar Rodríguez R. E/S POR CONSOLA DE C++ Parte I. Elementos Básicos Dr. Oldemar Rodríguez R. Dado que C++ es un superconjunto de C, todos los elementos del lenguaje C están contenidos en el lenguaje C++. Esto implica que

Más detalles

Hoja de ejercicios del Tema 3

Hoja de ejercicios del Tema 3 Facultad de Informática Universidad Complutense Fundamentos de la programación Curso 2013 2014 Hoja de ejercicios del Tema 3 1. Escribe un programa que lea un número entero positivo del teclado y muestre

Más detalles

Hoja de ejercicios del Tema 3

Hoja de ejercicios del Tema 3 Facultad de Informática Universidad Complutense Fundamentos de la programación Curso 2013 2014 Hoja de ejercicios del Tema 3 1. Conversiones de tipos: Prueba el siguiente programa en tu compilador (copia

Más detalles

Tema 2 Elementos básicos en C

Tema 2 Elementos básicos en C Tema 2 Elementos básicos en C Tema 2.- Elementos básicos 2.1. Estructura general de un programa 2.2. Tipos de datos simples 2.3. Funciones de entrada / salida 2.1 Estructura de un programa 2.1 Estructura

Más detalles

PARTES DE UN PROGRAMA EN C/C++

PARTES DE UN PROGRAMA EN C/C++ 1 PARTES DE UN PROGRAMA EN C/C++ 2 Un Programa Sencillo Considérese el programa transcrito a continuación: 1: #include 2: void main () 3: { 4: cout

Más detalles

Introducción a c++ Introducción a la programación EIS Informática III

Introducción a c++ Introducción a la programación EIS Informática III Introducción a c++ Un lenguaje de programación es un lenguaje formal diseñado para realizar procesos que pueden ser llevados a cabo por máquinas como las computadoras. Pueden usarse para crear programas

Más detalles

Programación 1. Tema I. Conceptos y elementos básicos de Programación. Lección 1. Problemas de tratamiento de información, algoritmos y programas

Programación 1. Tema I. Conceptos y elementos básicos de Programación. Lección 1. Problemas de tratamiento de información, algoritmos y programas Programación 1 Tema I. Conceptos y elementos básicos de Programación Lección 1. Problemas de tratamiento de información, algoritmos y programas 1 Problemas, algoritmos y programas Problemas de tratamiento

Más detalles

Entrada y salida de datos en C y C++

Entrada y salida de datos en C y C++ Universidad Nacional de Rosario Facultad de Ciencias Exactas, Ingeniería y Agrimensura Escuela de Ingeniería Electrónica Cátedra de Informática II Entrada y salida de datos en C y C++ Informática II Entrada/Salida

Más detalles

1. Gestión de E/S. 2. Clases básicas. 3. E/S estándar. 4. Manejo de ficheros. Entrada/Salida en C++

1. Gestión de E/S. 2. Clases básicas. 3. E/S estándar. 4. Manejo de ficheros. Entrada/Salida en C++ Entrada/Salida en C++ 1. Gestión de E/S. 2. Clases básicas. 3. E/S estándar. 4. Manejo de ficheros. Lenguaje C++. Leng. Prog. II. Filiberto Pla y Jorge Badenas. Gestión de Entrada/Salida Principios generales

Más detalles

INSTITUTO NACIONAL SUPERIOR DEL PROFESORADO TÉCNICO - TÉCNICO SUPERIOR EN INFORMÁTICA APLICADA - PROGRAMACIÓN I

INSTITUTO NACIONAL SUPERIOR DEL PROFESORADO TÉCNICO - TÉCNICO SUPERIOR EN INFORMÁTICA APLICADA - PROGRAMACIÓN I RESOLUCIÓN DE PROBLEMAS Y ALGORITMOS La principal razón para que las personas aprendan lenguajes de programación es utilizar una computadora como una herramienta para la resolución de problemas. Cinco

Más detalles

CAPITULO 2: VARIABLES Y CONSTANTES

CAPITULO 2: VARIABLES Y CONSTANTES CAPITULO 2: VARIABLES Y CONSTANTES 1. TIPOS DE DATOS. Existen cinco tipos de datos atómicos en C; char: carácter, int: entero, float: real coma flotante, double: real de doble precisión y void: sin valor.

Más detalles

Tipos de datos y Operadores Básicos

Tipos de datos y Operadores Básicos Módulo I: Conceptos Básicos Tema 1. Qué es un ordenador? Tema 2. Cómo se representan los datos en un ordenador? Tema 3. Qué es un lenguaje de programación? Tema 4. Cómo se hace un programa informático?

Más detalles

Capítulo 11 INTRODUCCIÓN A LA CODIFICACIÓN EN C. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"

Capítulo 11 INTRODUCCIÓN A LA CODIFICACIÓN EN C. Presentación resumen del libro: EMPEZAR DE CERO A PROGRAMAR EN lenguaje C Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C" Autor: Carlos Javier Pes Rivas (correo@carlospes.com) Capítulo 11 INTRODUCCIÓN A LA CODIFICACIÓN EN C 1 OBJETIVOS Aprender a

Más detalles

USO DE SUBRUTINAS, TRANSMISIÓN DE PARÁMETROS Y COMPILACIÓN CONDICIONAL EN C++

USO DE SUBRUTINAS, TRANSMISIÓN DE PARÁMETROS Y COMPILACIÓN CONDICIONAL EN C++ USO DE SUBRUTINAS, TRANSMISIÓN DE PARÁMETROS Y COMPILACIÓN CONDICIONAL EN C++ Bruno López Takeyas Instituto Tecnológico de Nuevo Laredo Reforma Sur 2007, C.P. 88250, Nuevo Laredo, Tamps. México http://www.itnuevolaredo.edu.mx/takeyas

Más detalles

CONTENIDO DE LA LECCIÓN 15

CONTENIDO DE LA LECCIÓN 15 CONTENIDO DE LA LECCIÓN 15 FUNCIONES SOBRECARGADAS 1. Introducción 2 2. Sobrecarga de una función 2 2.1. Ejemplos 15.1, 15.2, 15.3, 15.4, 15.5 2 3. Cuando utilizar la sobrecarga de funciones 6 4. Plantillas

Más detalles

Variables - Tipos de Datos - Operadores - Precedencia

Variables - Tipos de Datos - Operadores - Precedencia Variables - Tipos de Datos - Operadores - Precedencia Alejandro Furfaro Mayo 2011 Alejandro Furfaro () Variables - Tipos de Datos -Operadores - Precedencia Mayo 2011 1 / 12 Agenda 1 Tipos de Datos Macros

Más detalles

Una clasificación de los tipos de datos existentes en los diferentes lenguajes de programación se presenta a continuación:

Una clasificación de los tipos de datos existentes en los diferentes lenguajes de programación se presenta a continuación: Clase teórica 2 Algoritmos en C Página 1 de 6 TIPOS DE DATOS Una clasificación de los tipos de datos existentes en los diferentes lenguajes de programación se presenta a continuación: Por el momento nuestro

Más detalles

Examen escrito de Programación 1

Examen escrito de Programación 1 Examen escrito de Programación 1 Escuela de Ingeniería y Arquitectura Departamento de Informática e Ingeniería de Sistemas 6 de septiembre de 2016 Se debe disponer sobre la mesa en lugar visible un documento

Más detalles

Caracter a caracter los datos pueden ser escritos o leidos carácter a carácter, con las funciones fputc() y fgetc().

Caracter a caracter los datos pueden ser escritos o leidos carácter a carácter, con las funciones fputc() y fgetc(). Notas auxiliares sobre manejo de archivos Las funciones de entrada salida (E/S) de las librerías estandar de C, permiten leer y escribir datos a, y desde, archivos y dispositivos. La caracteristica fundamental

Más detalles

Programación 1 Tema 5. Instrucciones simples y estructuradas

Programación 1 Tema 5. Instrucciones simples y estructuradas Programación 1 Tema 5 Instrucciones simples y estructuradas Índice Instrucciones simples Instrucciones estructuradas 2 Instrucción ::= 3 Instrucciones.

Más detalles

Catálogo de Trabajadores

Catálogo de Trabajadores Escuela de Computación Empresarial Cuaderno de trabajo de NOI-Windows Objetivo general: Al termino de esta sección el alumno operará el Catálogo de los trabajadores y datos complementarios, aprenderá la

Más detalles

PRÁCTICA MANEJO INTERNO DE DATOS. Objetivos

PRÁCTICA MANEJO INTERNO DE DATOS. Objetivos Objetivos a) El alumno será capaz de codificar y decodificar la representación de caracteres. b) El alumno realizará conversiones de números enteros entre distintas bases. Al final de esta práctica el

Más detalles

Sintaxis de los aspectos generales de un lenguaje de programación

Sintaxis de los aspectos generales de un lenguaje de programación Sintaxis de los aspectos generales de un lenguaje de programación por Iván Cruz Un lenguaje de programación cuenta con una estructura y sintaxis que debe ser utilizada exactamente como se indique para

Más detalles

Gestión de E/S. Ficheros Flujos. Objetivos. Metodología de la Programación II

Gestión de E/S. Ficheros Flujos. Objetivos. Metodología de la Programación II Objetivos Metodología de la Programación II Gestión de E/S. Ficheros 1.Conocerelconceptodeflujocomoelmecanismoabstractodecomunicación entre la memoria y los dispositivos. 2. Conocer cómo se realiza la

Más detalles

Instituto Tecnológico de Celaya

Instituto Tecnológico de Celaya ARCHIVOS (FICHEROS) Siempre que se usa una computadora, se utilizan archivos para almacenar la información. Por ejemplo, cuando se crea un programa en C++, se crea un archivo con extensión cpp que contiene

Más detalles

Sistemas Operativos Practica 1: procesos y concurrencia.

Sistemas Operativos Practica 1: procesos y concurrencia. Sistemas Operativos Practica 1: procesos y concurrencia. Objetivos: Introducir al alumno a los conceptos de programa, concurrencia, paralelismo y proceso o tarea. Manejo del concepto de concurrencia haciendo

Más detalles

En este artículo vamos a conocer los tipos de datos que podemos manejar programando en C.

En este artículo vamos a conocer los tipos de datos que podemos manejar programando en C. El primer objetivo de un programa informático es el manejo de datos. Un dato es toda aquella información que se puede tratar en un programa informático. En este artículo vamos a conocer los tipos de datos

Más detalles

Curso de Programación Avanzada en C

Curso de Programación Avanzada en C Curso de Programación Avanzada en C Copyright, 1996 Universidad Sim on Bol ivar 1 Prof. Mariela J. Curiel Contenido del Curso Conceptos BásicosB Estructuras de Control Arreglos Otros tipos de datos derivados

Más detalles

UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO.

UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO. UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO. TRUJILLO 1. Introducción. 2. Clases que contiene el archivo fstream.h.

Más detalles

Departamento de Electrónica

Departamento de Electrónica Introducción al Departamento de Electrónica Fundación San Valero Introducción al 1 Introducción al Introducción al 2 Introducción al Introducción al 3 Características del Características del Departamento

Más detalles

Programación. Test Autoevaluación Tema 3

Programación. Test Autoevaluación Tema 3 Programación Test Autoevaluación Tema 3 Autores: M. Paz Sesmero Lorente Paula de Toledo Heras Fco. Javier Ordoñez Morales Juan Gómez Romero José A. Iglesias Martínez José Luis Mira Peidro SOLUCIONES 1.

Más detalles

INICIACIÓN A LA PROGRAMACIÓN EN C

INICIACIÓN A LA PROGRAMACIÓN EN C INICIACIÓN A LA PROGRAMACIÓN EN C Estructura de un programa sencillo en lenguaje c: Librería estándar de entrada salida Llave de apertura para delimitar el cuerpo de la función Llave de cierre para delimitar

Más detalles

DOCUMENTACIÓN PARA EL TRABAJO CON LA PLATAFORMA GUADALBOT

DOCUMENTACIÓN PARA EL TRABAJO CON LA PLATAFORMA GUADALBOT DOCUMENTACIÓN PARA EL TRABAJO CON LA PLATAFORMA GUADALBOT I.E.S VIRGEN DE LAS NIEVES Programación C para microcontroladores La función printf Índice de contenidos Introducción...2 La función printf...2

Más detalles

UNIDAD 1. COMPONENTES DEL COMPUTADOR

UNIDAD 1. COMPONENTES DEL COMPUTADOR UNIDAD 1. COMPONENTES DEL COMPUTADOR OBJETIVO Nº 1.1: DEFINICIÓN DE COMPUTADOR: Es un dispositivo electrónico compuesto básicamente de un procesador, una memoria y los dispositivos de entrada/salida (E/S).

Más detalles

Lenguajes de programación

Lenguajes de programación Lenguajes de programación Un computador solo entiende lenguaje binario Un procesador tiene un conjunto finito de operaciones binarias Un programa de computador es una secuencia de estas instrucciones Etapas

Más detalles

APELLIDOS NOMBRE GRUPO CALIFICACIÓN FECHA

APELLIDOS NOMBRE GRUPO CALIFICACIÓN FECHA Hoja 1/10 Duración: una hora y media Resultados de aprendizaje que se evalúan en este examen: R2: Saber emplear las estructuras de control de flujo de programación para implementar algoritmos sencillos.

Más detalles

Tema 3. Entrada y Salida

Tema 3. Entrada y Salida Tema 3 Entrada y Salida main() {int a,b,c; a=5;b=25;c=10; a=a+b+c; a=a+b*c; a=a+b/c; a=a+b%c; a=(a+b)/c; a=a+(b/c); } Ejercicio: Traza Entrada Necesidad de la entrada de datos, ejemplo: int main() { int

Más detalles

Fundamentos de Programción (I)

Fundamentos de Programción (I) Fundamentos de Programción (I) Algoritmos Entrada y Salida en C++ Fundamentos de programación Objetivo: Traducir nuestras ideas a un nuevo lenguaje de programación para resolver un problema. Problema Método

Más detalles

Tema 13: Manejo de archivos en lenguaje C

Tema 13: Manejo de archivos en lenguaje C Tema 13: Manejo de archivos en lenguaje C M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco)

Más detalles

Examen escrito de Programación 1

Examen escrito de Programación 1 Examen escrito de Programación 1 Escuela de Ingeniería y Arquitectura Departamento de Informática e Ingeniería de Sistemas 7 de septiembre de 2017 Se debe disponer sobre la mesa en lugar visible un documento

Más detalles

Computación Aplicada. Universidad de Las Américas. Aula virtual de Computación Aplicada. Módulo de Excel 2013 LIBRO 6

Computación Aplicada. Universidad de Las Américas. Aula virtual de Computación Aplicada. Módulo de Excel 2013 LIBRO 6 Computación Aplicada Universidad de Las Américas Aula virtual de Computación Aplicada Módulo de Excel 2013 LIBRO 6 Contenido FORMA DE HACER CÁLCULOS... 3 QUÉ SON LAS FÓRMULAS Y QUÉ LAS FUNCIONES?... 4

Más detalles

UNIDAD 3 Uso de Clases Predefinidas. 1.- INTRODUCCION.

UNIDAD 3 Uso de Clases Predefinidas. 1.- INTRODUCCION. UNIDAD 3 Uso de Clases Predefinidas. 1.- INTRODUCCION. Los tipos de datos definidos por el usuario o clases es lo que distingue al C++ de los lenguajes procedurales tradicionales. Una clase es un nuevo

Más detalles

Entrada de datos y salida de resultados.

Entrada de datos y salida de resultados. Clase 2 de C++ Entrada de datos y salida de resultados. Son operadores que sirven para introducir los datos a un programa y visualizar los resultados o impresiones. En C: Operadores scanf y printf: Ejemplos:

Más detalles

La Herencia. La primera línea de cada declaración debe incluir la sintaxis siguiente:

La Herencia. La primera línea de cada declaración debe incluir la sintaxis siguiente: La Herencia Es la capacidad de compartir atributos y métodos entre clases. Es la propiedad que permite definir nuevas clases usando como base clases ya existentes. La nueva clase (clase derivada) hereda

Más detalles

Tema 5. Entrada y Salida

Tema 5. Entrada y Salida Tema 5 Entrada y Salida Contenidos 1. Conceptos Previos de Entrada y Salida de Datos. 2. Funciones de Salida de Datos. putchar puts printf 3. Funciones de Entrada de Datos. getchar gets scanf 4. Ficheros

Más detalles

Servicios del Sistema Operativo (SO)

Servicios del Sistema Operativo (SO) Servicios del Sistema Operativo (SO) Un SO brinda un entorno para ejecutar programas. Este, ofrece servicios a los programas y a los usuarios de dichos programas. Por supuesto, los servicios específicos

Más detalles

Introducción a C++ Índice

Introducción a C++ Índice Introducción a C++ 1. 2. 3. 4. 5. 6. Índice 1. Diferencias entre C y C++. 2. Diferencias entre C++ y Java. 3. Ejemplos. 4. Funciones. 5. Memoria dinámica 6. Librería de funciones. 1 1. Diferencias entre

Más detalles

Operaciones de E/S en ANSI C

Operaciones de E/S en ANSI C Operaciones de E/S en ANSI C Las operaciones de entrada/salida estándar (realizadas habitualmente con printf y scanf) se realizan en realidad sobre ficheros que representan los dispositivos mediante los

Más detalles