SlideShare una empresa de Scribd logo
1 de 36
Descargar para leer sin conexión
Tipos de datos (cont.)

         Repaso lecturas SSD5


SSD5           Mtl Lourdes Cahuich   1
Entrada y salida
       • Flujos (Stream)
         – La entrada y salida de información se basa en
           flujos; un flujo es una secuencia de bytes que
           se mueven de un lugar a otro
         – El proceso de salida implica el movimiento de
           bytes (uno a la vez) de un programa hacia un
           dispositivo (monitor, impresora, archivo, etc.)


SSD5                         Mtl Lourdes Cahuich             2
Entrada y salida
       • La entrada implica el flujo de bytes desde
         un dispositivo (teclado, archivo, red) hacia
         el programa

       entrada: cin >> name;
       salida: cout << “enter your name”;




SSD5                       Mtl Lourdes Cahuich          3
Uso de los flujos estándar
       • Tres flujos específicos están siempre
         disponibles para cada programa: entrada
         estándar, salida estándar y error estándar; cada
         uno tiene un uso específico
          – entrada estándar: lee los datos de consola
          – salida estándar: escribe datos a la consola
          – error estándar: muestra mensajes de error en
            la consola


SSD5                          Mtl Lourdes Cahuich           4
Uso de los flujos estándar
       • Los objetos cin y cout dan acceso respectivo
         al flujo estándar de entrada y salida. El
         objeto cerr da acceso al flujo de error
         estándar
         cin >> name >> age
         cerr << “nInvalid age entered”;
         cout << “n” << name << “is” << age;


SSD5                       Mtl Lourdes Cahuich          5
Uso de los flujos estándar
       • Los programadores pueden definir cómo
         las clases que crean interactúan con los
         flujos usando los operadores << y >>
       • Esto es conocido como sobrecarga del
         operador Inserción (<<) y Extracción (>>)




SSD5                      Mtl Lourdes Cahuich        6
Uso de los flujos estándar
       • Se puede definir el comportamiento de
         estos operadores para las clases que
         creamos




SSD5                      Mtl Lourdes Cahuich    7
El archivo de entrada y salida
       • La entrada y salida en archivos es similar al
         de teclado y pantalla
       • La diferencia esta en que hay que abrir y
         cerrar archivos explícitamente
       • El objeto requerido es ifstream
       • Esta clase no es parte del lenguaje C++ y
         se debe incluir su biblioteca

SSD5                        Mtl Lourdes Cahuich          8
El archivo de entrada y salida
       • Es buena práctica revisar si al intentar abrir
         un archivo realmente se tiene éxito




SSD5                        Mtl Lourdes Cahuich           9
#include <fstream>
…
   ifstream inf;
   inf.open(“arch.txt”);
   if(!inf){
         cerr << “no se puede abrir archivo” << endl;
         return EXIT_FAILURE
       }
       int x;
       while(inf>>x){
         cout << x << endl>
       }
       inf.close();
…
SSD5                    Mtl Lourdes Cahuich             10
}
El archivo de entrada y salida
       • La salida del archivo se semeja a su entrada
         y se necesita incluir la referencia a la
         biblioteca fstream; pero utilizando un objeto
         ofstream en lugar de un ifstream




SSD5                       Mtl Lourdes Cahuich           11
…
        ofstream onf;
        onf.open(“nomarch.txt”);
        if(!onf){
           cerr << “no se pudo abrir archivo” << endl;
           return EXIT_FAILURE;
        }
        for (int i = 1 ; i <= 10 ; i++){
           onf << “esta es la linea” << i << endl;
        }
        onf.close();
…       SSD5              Mtl Lourdes Cahuich        12
El archivo de entrada y salida
       • Hay que tener presente que el archivo de
         Entrada/Salida está basado en un flujo que
         es secuencial por naturaleza por lo que es
         difícil y muy costoso moverse hacia delante
         y hacia atrás, y el único método de acceso
         es recorrer el archivo de inicio a fin



SSD5                      Mtl Lourdes Cahuich          13
Fallas comunes
       • El flujo espera espacios en blanco para
         separar los valores que lee (pueden ser
         espacios en blanco, tabuladores, caracteres
         de nueva línea o retorno)
       • La entrada del flujo ignora por default
         espacios blancos adicionales; la operación
         de entrada no hace caso de este espacio en
         blanco adicional

SSD5                       Mtl Lourdes Cahuich         14
Fallas comunes
       • Otra falla común es cuando se intenta leer
         una línea de texto en variable string; la
         forma apropiada de introducir una línea
         entera de texto es usando la función
         getline que se encuentra en la biblioteca
         string: esta función tiene su propia falla, ya
         que la implantación de Microsoft tiene un
         error en que se requiere un doble enter al
         final de cada línea
SSD5                        Mtl Lourdes Cahuich           15
El preprocesador
       • Sustitución de texto
         – El preprocesador es una herramienta para
           manipular el contenido de los archivos fuente
           antes de compilar; el preprocesador realiza la
           sustitución y modificadores de texto
         – La inclusión de archivos, sustitución macro y
           compilación condicional son tres
           características de alto nivel que el
           preprocesador brinda al programador

SSD5                        Mtl Lourdes Cahuich             16
El preprocesador
       – Los archivos de código fuente por lo general
         necesitan ser modificados antes de la
         compilación y para esto es necesario conocer
         el uso básico del procesador.
       – Los programas de C++ se componen
         enteramente de texto por lo que se debe usar
         el preprocesador para incluir la declaración de
         clases o funciones externas, conocido como
         “inclusión de archivo”


SSD5                       Mtl Lourdes Cahuich             17
El preprocesador
       – Un programador interactúa con el
         preprocesador mediante comandos llamados
         “directivas del procesador” que comienzan
         con el signo de número (#); las directivas son
         comandos de una sola línea que se colocan en
         un archivo de código fuente




SSD5                      Mtl Lourdes Cahuich             18
El preprocesador
       – La inclusión de una directiva indica al
         preprocesador la realización de cierta acción;
         ésta acción depende de la directiva en algunos
         casos el preprocesador hace una modificación
         en el archivo de código fuente; por ejemplo, la
         inclusión del contenido de otro archivo




SSD5                      Mtl Lourdes Cahuich              19
Inclusión de archivos
       • La inclusión de archivos es una
         característica del preprocesador de C++
         que permite que un archivo fuente utilice
         código compartido; con la línea #include
         se incluye un archivo; el preprocesador
         sustituye la línea que contiene la directiva
         con el contenido del archivo específicado


SSD5                        Mtl Lourdes Cahuich         20
Inclusión de archivos
       • #include acepta dos diferentes formas de
         su parámetro <nombre> busca un archivo
         especificado en un conjunto de lugares
         independientes de la implantación
         (directorios del sistema y bibliotecas)
         “nombre” manda a buscar el archivo en el
         mismo directorio de la aplicación (archivos
         creados por el usuario)
SSD5                       Mtl Lourdes Cahuich         21
Sustitución macro
       • Se puede realizar una sustitución del texto
         definido por el programador o a través de
         un archivo completo del código fuente;
         esto se conoce como sustitución macro
         #define identifica el texto de reemplazo




SSD5                       Mtl Lourdes Cahuich         22
Sustitución macro
       • Al usar esta directiva un programador
         declara un identificador y especifica su
         texto de reemplazo
         #define MAXIMO 20
       • Se puede utilizar la sustitución macro para
         implantar una variable constante



SSD5                       Mtl Lourdes Cahuich         23
Sustitución macro
       • Los programadores deben utilizar la
         palabra reservada const en lugar de la
         sustitución macro para crear variables
         constantes debido a que const es parte del
         lenguaje C++ y no una característica del
         preprocesador; estos const soportan mejor
         la revisión de tipos


SSD5                      Mtl Lourdes Cahuich         24
Sustitución macro
       • El preprocesador soporta macros con
         parámetros y es muy parecido a una
         función normal de C++
       • El preprocesador sustituye la llamada de la
         función aparente con el texto de reemplazo
         de macro



SSD5                      Mtl Lourdes Cahuich          25
#define identific(identif, identif,…) texto_reemplazo



#define max(x,y) ( ( (x)>(y) ) ? (x) : (y) )




  SSD5                  Mtl Lourdes Cahuich             26
Compilación condicional
       • #define soporta la compilación
         condicional; donde se compilan solamente
         ciertas secciones de nuestro código fuente;
         lo cual es útil para insertar código de
         depuración que puede ser habilitado y
         deshabilitado fácilmente (#define, #if,
         #endif)


SSD5                       Mtl Lourdes Cahuich         27
#define DEBUG
…
#if defined (DEBUG)
  cerr << “debuggin habilitado” <<
  endl;
#endif
…
#if defined (DEBUG)
  cerr << “i=“ << i << endl;
  cerr <<“arr[i]=” <<arr[i] << endl;
#endif
…
SSD5           Mtl Lourdes Cahuich     28
Compilación condicional
       • Se evalúa como verdadera solamente si se
         ha definido un identificador DEBUG
       • La compilación condicional sirve para
         prevenir definiciones múltiples de las clases
         y funciones contenidas en archivos de
         cabecera, para no incluir varias veces un
         mismo archivo si se incluye en varios
         códigos fuente

SSD5                       Mtl Lourdes Cahuich           29
#if ! defined (_PERSON_H_)
#define _PERSON_H_
  class Person{
    …
  }
#endif




SSD5           Mtl Lourdes Cahuich   30
Verificación de suposiciones
       • Verificar las suposiciones que usan
         afirmaciones es un ejemplo del uso común
         del preprocesador y sus características
       • Una afirmación es una declaración puesta en
         el código para verificar una suposición




SSD5                       Mtl Lourdes Cahuich         31
Verificación de suposiciones
       • Si al ejecutarla la suposición demuestra ser
         incorrecta, la declaración de la “afirmación”
         despliega un mensaje de notificación y
         detiene la ejecución del programa, lo cual
         es muy útil para la detección de errores
       • Todos los tipos de suposiciones se hacen
         sobre los datos contenidos en las variables

SSD5                        Mtl Lourdes Cahuich          32
Verificación de suposiciones
       • Cuando diseñamos y codificamos una
         función esperando que los parámetros
         contengan datos válidos; en caso contrario
         podría ser un error
       • La codificación alrededor de datos
         inválidos sirve solamente para ocultar el
         error, mientras que usar una afirmación
         puede detectar y precisar la existencia de
         ese error
SSD5                      Mtl Lourdes Cahuich         33
Verificación de suposiciones
       • ¿Cómo manejar datos inválidos? Una
         manera implica el codificar de manera
         defensiva para detectar éstos, se previene
         una operación inválida pero no nos ayuda a
         detectar cómo y dónde se generó el error o
         los datos inválidos



SSD5                      Mtl Lourdes Cahuich         34
Verificación de suposiciones
       • La segunda manera es usando “afirmaciones”
         (assert) en caso de que la función reciba
         datos no válidos la afirmación despliega un
         mensaje de error y detiene la ejecución del
         programa
         assert (expresion)



SSD5                      Mtl Lourdes Cahuich          35
Verificación de suposiciones
       • La declaración assert es una macro
         almacenada en <assert> e incorpora
         diversas aplicaciones del procesador
       • Cuando se liberan las versiones del
         software, los programadores, por lo general
         eliminan las afirmaciones



SSD5                      Mtl Lourdes Cahuich          36

Más contenido relacionado

La actualidad más candente

40 Novedades de JavaSE 9
40 Novedades de JavaSE 940 Novedades de JavaSE 9
40 Novedades de JavaSE 9Alexis Lopez
 
Entonamiento y perfilado de Drupal
Entonamiento y perfilado de DrupalEntonamiento y perfilado de Drupal
Entonamiento y perfilado de Drupalcamposer
 
Tutorial php basico
Tutorial php basicoTutorial php basico
Tutorial php basicoYo ♥ Tacna
 
Replicación de servidores
Replicación de servidoresReplicación de servidores
Replicación de servidoresJuan Carlos A S
 
Curso puppet lenguaje_2
Curso puppet lenguaje_2Curso puppet lenguaje_2
Curso puppet lenguaje_2martacdehesa
 

La actualidad más candente (7)

Automatización de tareas con Gulp
Automatización de tareas con GulpAutomatización de tareas con Gulp
Automatización de tareas con Gulp
 
40 Novedades de JavaSE 9
40 Novedades de JavaSE 940 Novedades de JavaSE 9
40 Novedades de JavaSE 9
 
Entonamiento y perfilado de Drupal
Entonamiento y perfilado de DrupalEntonamiento y perfilado de Drupal
Entonamiento y perfilado de Drupal
 
Tutorial php basico
Tutorial php basicoTutorial php basico
Tutorial php basico
 
Replicación de servidores
Replicación de servidoresReplicación de servidores
Replicación de servidores
 
C++
C++ C++
C++
 
Curso puppet lenguaje_2
Curso puppet lenguaje_2Curso puppet lenguaje_2
Curso puppet lenguaje_2
 

Similar a 3 Tipos De Datos Cont

3 Tipos De Datos
3 Tipos De Datos3 Tipos De Datos
3 Tipos De DatosUVM
 
Estructura programa c++
Estructura programa c++Estructura programa c++
Estructura programa c++UVM
 
Rendimiento en magento
Rendimiento en magentoRendimiento en magento
Rendimiento en magentoOnestic
 
Sistemas Operativos
Sistemas OperativosSistemas Operativos
Sistemas OperativosUCC
 
Sistemas Operativos
Sistemas OperativosSistemas Operativos
Sistemas OperativosLidia
 
7 standard io and pipes
7 standard io and pipes7 standard io and pipes
7 standard io and pipesJuan Camilo
 
7 standard io and pipes
7 standard io and pipes7 standard io and pipes
7 standard io and pipescyberleon95
 
7 standard io and pipes
7 standard io and pipes7 standard io and pipes
7 standard io and pipesyimfer1
 
Php 6 y Mysql
Php 6 y MysqlPhp 6 y Mysql
Php 6 y Mysqljograci
 
Optimización de aplicaciones PHP (server side)
Optimización de aplicaciones PHP (server side)Optimización de aplicaciones PHP (server side)
Optimización de aplicaciones PHP (server side)Oriol Jiménez
 
Semana 9 -_standard_io_and_pipes
Semana 9 -_standard_io_and_pipesSemana 9 -_standard_io_and_pipes
Semana 9 -_standard_io_and_pipesvictdiazm
 
Abf leccion 03
Abf leccion 03Abf leccion 03
Abf leccion 03victdiazm
 

Similar a 3 Tipos De Datos Cont (20)

3 Tipos De Datos
3 Tipos De Datos3 Tipos De Datos
3 Tipos De Datos
 
Estructura programa c++
Estructura programa c++Estructura programa c++
Estructura programa c++
 
Que es php
Que es phpQue es php
Que es php
 
Que es php
Que es phpQue es php
Que es php
 
Que es php
Que es phpQue es php
Que es php
 
Rendimiento en magento
Rendimiento en magentoRendimiento en magento
Rendimiento en magento
 
Sistemas Operativos
Sistemas OperativosSistemas Operativos
Sistemas Operativos
 
Sistemas Operativos
Sistemas OperativosSistemas Operativos
Sistemas Operativos
 
7 standard io and pipes
7 standard io and pipes7 standard io and pipes
7 standard io and pipes
 
7 standard io and pipes
7 standard io and pipes7 standard io and pipes
7 standard io and pipes
 
7 standard io and pipes
7 standard io and pipes7 standard io and pipes
7 standard io and pipes
 
Introducción a Javascript I
Introducción a Javascript IIntroducción a Javascript I
Introducción a Javascript I
 
Php 6 y Mysql
Php 6 y MysqlPhp 6 y Mysql
Php 6 y Mysql
 
Sistemas operativos ii
Sistemas operativos iiSistemas operativos ii
Sistemas operativos ii
 
Optimización de aplicaciones PHP (server side)
Optimización de aplicaciones PHP (server side)Optimización de aplicaciones PHP (server side)
Optimización de aplicaciones PHP (server side)
 
Framework Catalyst
Framework CatalystFramework Catalyst
Framework Catalyst
 
Semana 9 -_standard_io_and_pipes
Semana 9 -_standard_io_and_pipesSemana 9 -_standard_io_and_pipes
Semana 9 -_standard_io_and_pipes
 
Tarea 3
Tarea 3Tarea 3
Tarea 3
 
Abf leccion 03
Abf leccion 03Abf leccion 03
Abf leccion 03
 
Performance en Drupal 7
Performance en Drupal 7Performance en Drupal 7
Performance en Drupal 7
 

Más de UVM

Tiempo compartido en programación
Tiempo compartido en programaciónTiempo compartido en programación
Tiempo compartido en programaciónUVM
 
Portafolio de evidencias del curso Programación Avanzada
Portafolio de evidencias del curso Programación AvanzadaPortafolio de evidencias del curso Programación Avanzada
Portafolio de evidencias del curso Programación AvanzadaUVM
 
Eficiencia en uso tiempo
Eficiencia en uso  tiempoEficiencia en uso  tiempo
Eficiencia en uso tiempoUVM
 
Administración de memoria arreglos dinamicos
Administración de memoria arreglos dinamicosAdministración de memoria arreglos dinamicos
Administración de memoria arreglos dinamicosUVM
 
Practica de arreglos
Practica de arreglosPractica de arreglos
Practica de arreglosUVM
 
Otra introducción a apuntadores
Otra introducción a apuntadoresOtra introducción a apuntadores
Otra introducción a apuntadoresUVM
 
Ejemplo de solución de práctica funciones stl
Ejemplo de solución de práctica funciones stlEjemplo de solución de práctica funciones stl
Ejemplo de solución de práctica funciones stlUVM
 
Breve repaso de apuntadores
Breve repaso de apuntadoresBreve repaso de apuntadores
Breve repaso de apuntadoresUVM
 
Arreglos conceptos básicos
Arreglos conceptos básicosArreglos conceptos básicos
Arreglos conceptos básicosUVM
 
Resolución práctica de tipos de datos
Resolución práctica de tipos de datosResolución práctica de tipos de datos
Resolución práctica de tipos de datosUVM
 
Resumen de funciones
Resumen de funcionesResumen de funciones
Resumen de funcionesUVM
 
Biblioteca estándar de funciones
Biblioteca estándar de funcionesBiblioteca estándar de funciones
Biblioteca estándar de funcionesUVM
 
Manejo de bits
Manejo de bitsManejo de bits
Manejo de bitsUVM
 
Aclaración de dudas 4 de septiembre
Aclaración de dudas 4 de septiembreAclaración de dudas 4 de septiembre
Aclaración de dudas 4 de septiembreUVM
 
Aclaraciones varias a códigos entregados en sesión 3
Aclaraciones varias a códigos entregados en sesión 3Aclaraciones varias a códigos entregados en sesión 3
Aclaraciones varias a códigos entregados en sesión 3UVM
 
Funciones definidas por el usuario
Funciones definidas por el usuarioFunciones definidas por el usuario
Funciones definidas por el usuarioUVM
 
Función main()
Función main()Función main()
Función main()UVM
 
Depuración de un programa en c++
Depuración de un programa en c++Depuración de un programa en c++
Depuración de un programa en c++UVM
 
Algunas dudas de la sesión 28 agosto
Algunas dudas de la sesión 28 agostoAlgunas dudas de la sesión 28 agosto
Algunas dudas de la sesión 28 agostoUVM
 
Objetos y arreglos en C#
Objetos y arreglos en C#Objetos y arreglos en C#
Objetos y arreglos en C#UVM
 

Más de UVM (20)

Tiempo compartido en programación
Tiempo compartido en programaciónTiempo compartido en programación
Tiempo compartido en programación
 
Portafolio de evidencias del curso Programación Avanzada
Portafolio de evidencias del curso Programación AvanzadaPortafolio de evidencias del curso Programación Avanzada
Portafolio de evidencias del curso Programación Avanzada
 
Eficiencia en uso tiempo
Eficiencia en uso  tiempoEficiencia en uso  tiempo
Eficiencia en uso tiempo
 
Administración de memoria arreglos dinamicos
Administración de memoria arreglos dinamicosAdministración de memoria arreglos dinamicos
Administración de memoria arreglos dinamicos
 
Practica de arreglos
Practica de arreglosPractica de arreglos
Practica de arreglos
 
Otra introducción a apuntadores
Otra introducción a apuntadoresOtra introducción a apuntadores
Otra introducción a apuntadores
 
Ejemplo de solución de práctica funciones stl
Ejemplo de solución de práctica funciones stlEjemplo de solución de práctica funciones stl
Ejemplo de solución de práctica funciones stl
 
Breve repaso de apuntadores
Breve repaso de apuntadoresBreve repaso de apuntadores
Breve repaso de apuntadores
 
Arreglos conceptos básicos
Arreglos conceptos básicosArreglos conceptos básicos
Arreglos conceptos básicos
 
Resolución práctica de tipos de datos
Resolución práctica de tipos de datosResolución práctica de tipos de datos
Resolución práctica de tipos de datos
 
Resumen de funciones
Resumen de funcionesResumen de funciones
Resumen de funciones
 
Biblioteca estándar de funciones
Biblioteca estándar de funcionesBiblioteca estándar de funciones
Biblioteca estándar de funciones
 
Manejo de bits
Manejo de bitsManejo de bits
Manejo de bits
 
Aclaración de dudas 4 de septiembre
Aclaración de dudas 4 de septiembreAclaración de dudas 4 de septiembre
Aclaración de dudas 4 de septiembre
 
Aclaraciones varias a códigos entregados en sesión 3
Aclaraciones varias a códigos entregados en sesión 3Aclaraciones varias a códigos entregados en sesión 3
Aclaraciones varias a códigos entregados en sesión 3
 
Funciones definidas por el usuario
Funciones definidas por el usuarioFunciones definidas por el usuario
Funciones definidas por el usuario
 
Función main()
Función main()Función main()
Función main()
 
Depuración de un programa en c++
Depuración de un programa en c++Depuración de un programa en c++
Depuración de un programa en c++
 
Algunas dudas de la sesión 28 agosto
Algunas dudas de la sesión 28 agostoAlgunas dudas de la sesión 28 agosto
Algunas dudas de la sesión 28 agosto
 
Objetos y arreglos en C#
Objetos y arreglos en C#Objetos y arreglos en C#
Objetos y arreglos en C#
 

Último

Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...JaquelineJuarez15
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofJuancarlosHuertasNio1
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 

Último (20)

Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sof
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 

3 Tipos De Datos Cont

  • 1. Tipos de datos (cont.) Repaso lecturas SSD5 SSD5 Mtl Lourdes Cahuich 1
  • 2. Entrada y salida • Flujos (Stream) – La entrada y salida de información se basa en flujos; un flujo es una secuencia de bytes que se mueven de un lugar a otro – El proceso de salida implica el movimiento de bytes (uno a la vez) de un programa hacia un dispositivo (monitor, impresora, archivo, etc.) SSD5 Mtl Lourdes Cahuich 2
  • 3. Entrada y salida • La entrada implica el flujo de bytes desde un dispositivo (teclado, archivo, red) hacia el programa entrada: cin >> name; salida: cout << “enter your name”; SSD5 Mtl Lourdes Cahuich 3
  • 4. Uso de los flujos estándar • Tres flujos específicos están siempre disponibles para cada programa: entrada estándar, salida estándar y error estándar; cada uno tiene un uso específico – entrada estándar: lee los datos de consola – salida estándar: escribe datos a la consola – error estándar: muestra mensajes de error en la consola SSD5 Mtl Lourdes Cahuich 4
  • 5. Uso de los flujos estándar • Los objetos cin y cout dan acceso respectivo al flujo estándar de entrada y salida. El objeto cerr da acceso al flujo de error estándar cin >> name >> age cerr << “nInvalid age entered”; cout << “n” << name << “is” << age; SSD5 Mtl Lourdes Cahuich 5
  • 6. Uso de los flujos estándar • Los programadores pueden definir cómo las clases que crean interactúan con los flujos usando los operadores << y >> • Esto es conocido como sobrecarga del operador Inserción (<<) y Extracción (>>) SSD5 Mtl Lourdes Cahuich 6
  • 7. Uso de los flujos estándar • Se puede definir el comportamiento de estos operadores para las clases que creamos SSD5 Mtl Lourdes Cahuich 7
  • 8. El archivo de entrada y salida • La entrada y salida en archivos es similar al de teclado y pantalla • La diferencia esta en que hay que abrir y cerrar archivos explícitamente • El objeto requerido es ifstream • Esta clase no es parte del lenguaje C++ y se debe incluir su biblioteca SSD5 Mtl Lourdes Cahuich 8
  • 9. El archivo de entrada y salida • Es buena práctica revisar si al intentar abrir un archivo realmente se tiene éxito SSD5 Mtl Lourdes Cahuich 9
  • 10. #include <fstream> … ifstream inf; inf.open(“arch.txt”); if(!inf){ cerr << “no se puede abrir archivo” << endl; return EXIT_FAILURE } int x; while(inf>>x){ cout << x << endl> } inf.close(); … SSD5 Mtl Lourdes Cahuich 10 }
  • 11. El archivo de entrada y salida • La salida del archivo se semeja a su entrada y se necesita incluir la referencia a la biblioteca fstream; pero utilizando un objeto ofstream en lugar de un ifstream SSD5 Mtl Lourdes Cahuich 11
  • 12. ofstream onf; onf.open(“nomarch.txt”); if(!onf){ cerr << “no se pudo abrir archivo” << endl; return EXIT_FAILURE; } for (int i = 1 ; i <= 10 ; i++){ onf << “esta es la linea” << i << endl; } onf.close(); … SSD5 Mtl Lourdes Cahuich 12
  • 13. El archivo de entrada y salida • Hay que tener presente que el archivo de Entrada/Salida está basado en un flujo que es secuencial por naturaleza por lo que es difícil y muy costoso moverse hacia delante y hacia atrás, y el único método de acceso es recorrer el archivo de inicio a fin SSD5 Mtl Lourdes Cahuich 13
  • 14. Fallas comunes • El flujo espera espacios en blanco para separar los valores que lee (pueden ser espacios en blanco, tabuladores, caracteres de nueva línea o retorno) • La entrada del flujo ignora por default espacios blancos adicionales; la operación de entrada no hace caso de este espacio en blanco adicional SSD5 Mtl Lourdes Cahuich 14
  • 15. Fallas comunes • Otra falla común es cuando se intenta leer una línea de texto en variable string; la forma apropiada de introducir una línea entera de texto es usando la función getline que se encuentra en la biblioteca string: esta función tiene su propia falla, ya que la implantación de Microsoft tiene un error en que se requiere un doble enter al final de cada línea SSD5 Mtl Lourdes Cahuich 15
  • 16. El preprocesador • Sustitución de texto – El preprocesador es una herramienta para manipular el contenido de los archivos fuente antes de compilar; el preprocesador realiza la sustitución y modificadores de texto – La inclusión de archivos, sustitución macro y compilación condicional son tres características de alto nivel que el preprocesador brinda al programador SSD5 Mtl Lourdes Cahuich 16
  • 17. El preprocesador – Los archivos de código fuente por lo general necesitan ser modificados antes de la compilación y para esto es necesario conocer el uso básico del procesador. – Los programas de C++ se componen enteramente de texto por lo que se debe usar el preprocesador para incluir la declaración de clases o funciones externas, conocido como “inclusión de archivo” SSD5 Mtl Lourdes Cahuich 17
  • 18. El preprocesador – Un programador interactúa con el preprocesador mediante comandos llamados “directivas del procesador” que comienzan con el signo de número (#); las directivas son comandos de una sola línea que se colocan en un archivo de código fuente SSD5 Mtl Lourdes Cahuich 18
  • 19. El preprocesador – La inclusión de una directiva indica al preprocesador la realización de cierta acción; ésta acción depende de la directiva en algunos casos el preprocesador hace una modificación en el archivo de código fuente; por ejemplo, la inclusión del contenido de otro archivo SSD5 Mtl Lourdes Cahuich 19
  • 20. Inclusión de archivos • La inclusión de archivos es una característica del preprocesador de C++ que permite que un archivo fuente utilice código compartido; con la línea #include se incluye un archivo; el preprocesador sustituye la línea que contiene la directiva con el contenido del archivo específicado SSD5 Mtl Lourdes Cahuich 20
  • 21. Inclusión de archivos • #include acepta dos diferentes formas de su parámetro <nombre> busca un archivo especificado en un conjunto de lugares independientes de la implantación (directorios del sistema y bibliotecas) “nombre” manda a buscar el archivo en el mismo directorio de la aplicación (archivos creados por el usuario) SSD5 Mtl Lourdes Cahuich 21
  • 22. Sustitución macro • Se puede realizar una sustitución del texto definido por el programador o a través de un archivo completo del código fuente; esto se conoce como sustitución macro #define identifica el texto de reemplazo SSD5 Mtl Lourdes Cahuich 22
  • 23. Sustitución macro • Al usar esta directiva un programador declara un identificador y especifica su texto de reemplazo #define MAXIMO 20 • Se puede utilizar la sustitución macro para implantar una variable constante SSD5 Mtl Lourdes Cahuich 23
  • 24. Sustitución macro • Los programadores deben utilizar la palabra reservada const en lugar de la sustitución macro para crear variables constantes debido a que const es parte del lenguaje C++ y no una característica del preprocesador; estos const soportan mejor la revisión de tipos SSD5 Mtl Lourdes Cahuich 24
  • 25. Sustitución macro • El preprocesador soporta macros con parámetros y es muy parecido a una función normal de C++ • El preprocesador sustituye la llamada de la función aparente con el texto de reemplazo de macro SSD5 Mtl Lourdes Cahuich 25
  • 26. #define identific(identif, identif,…) texto_reemplazo #define max(x,y) ( ( (x)>(y) ) ? (x) : (y) ) SSD5 Mtl Lourdes Cahuich 26
  • 27. Compilación condicional • #define soporta la compilación condicional; donde se compilan solamente ciertas secciones de nuestro código fuente; lo cual es útil para insertar código de depuración que puede ser habilitado y deshabilitado fácilmente (#define, #if, #endif) SSD5 Mtl Lourdes Cahuich 27
  • 28. #define DEBUG … #if defined (DEBUG) cerr << “debuggin habilitado” << endl; #endif … #if defined (DEBUG) cerr << “i=“ << i << endl; cerr <<“arr[i]=” <<arr[i] << endl; #endif … SSD5 Mtl Lourdes Cahuich 28
  • 29. Compilación condicional • Se evalúa como verdadera solamente si se ha definido un identificador DEBUG • La compilación condicional sirve para prevenir definiciones múltiples de las clases y funciones contenidas en archivos de cabecera, para no incluir varias veces un mismo archivo si se incluye en varios códigos fuente SSD5 Mtl Lourdes Cahuich 29
  • 30. #if ! defined (_PERSON_H_) #define _PERSON_H_ class Person{ … } #endif SSD5 Mtl Lourdes Cahuich 30
  • 31. Verificación de suposiciones • Verificar las suposiciones que usan afirmaciones es un ejemplo del uso común del preprocesador y sus características • Una afirmación es una declaración puesta en el código para verificar una suposición SSD5 Mtl Lourdes Cahuich 31
  • 32. Verificación de suposiciones • Si al ejecutarla la suposición demuestra ser incorrecta, la declaración de la “afirmación” despliega un mensaje de notificación y detiene la ejecución del programa, lo cual es muy útil para la detección de errores • Todos los tipos de suposiciones se hacen sobre los datos contenidos en las variables SSD5 Mtl Lourdes Cahuich 32
  • 33. Verificación de suposiciones • Cuando diseñamos y codificamos una función esperando que los parámetros contengan datos válidos; en caso contrario podría ser un error • La codificación alrededor de datos inválidos sirve solamente para ocultar el error, mientras que usar una afirmación puede detectar y precisar la existencia de ese error SSD5 Mtl Lourdes Cahuich 33
  • 34. Verificación de suposiciones • ¿Cómo manejar datos inválidos? Una manera implica el codificar de manera defensiva para detectar éstos, se previene una operación inválida pero no nos ayuda a detectar cómo y dónde se generó el error o los datos inválidos SSD5 Mtl Lourdes Cahuich 34
  • 35. Verificación de suposiciones • La segunda manera es usando “afirmaciones” (assert) en caso de que la función reciba datos no válidos la afirmación despliega un mensaje de error y detiene la ejecución del programa assert (expresion) SSD5 Mtl Lourdes Cahuich 35
  • 36. Verificación de suposiciones • La declaración assert es una macro almacenada en <assert> e incorpora diversas aplicaciones del procesador • Cuando se liberan las versiones del software, los programadores, por lo general eliminan las afirmaciones SSD5 Mtl Lourdes Cahuich 36