1 Definición y Conversión de datos Agustín J. González ELO-329.

Slides:



Advertisements
Presentaciones similares
Curso de java básico (scjp)
Advertisements

Direcciones, Arreglos y Argumentos de Funciones
Informática II Prof. Dr. Gustavo Patiño MJ
Informática II Prof. Dr. Gustavo Patiño MJ
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
Unidad 3 Punteros.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Métodos Algoritmos y Desarrollo de Programas I. Cuando utilizar métodos  Los métodos se utilizan para romper un problema en pedazos de forma que este.
Material de apoyo Unidad 2 Estructura de datos
POO Java Módulo 3 Elementos de programas Identificadores
Tema 6: Clases Antonio J. Sierra.
Nombre, Alcance y Asociaciones (Bindings). Agenda Definición Nombre y Bindings Binding Time Importancia del Binding Time Eventos relacionados a la Asociación.
SCJP Sun Certified Programmer for Java 6
LENGUAJE “C” Programación.
1 Chapter 15 Pointers, Dynamic Data, and Reference Types Dale/Weems/Headington.
Introducción a los punteros
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SEMANA TRES ASIGNACION.
Capítulo 5. Punteros y Cadenas de Caracteres
Índice. Revisando conceptos acerca de la memoria.
INGENIERIA EN SISTEMAS COMPUTACIONALES
Java. Java nació el año 1991, por un par de ingenieros de la Sun Microsystems.
Sintaxis de C# (Declaraciones y Tipos)
ELO3201 Vectores (Vector) Agustín J. González ELO320.
COMPUTACIÓN I TEMA 6. Pasaje de parámetros por Referencia. Uso de apuntadores Prof. Mireya Morales.
Tipo de Datos Básicos.
PUNTEROS Ing Anghello Quintero.
PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++
Informática Ingeniería en Electrónica y Automática Industrial
1 Polimorfismo y Métodos Virtuales Agustín J. González ELO329.
1 Asignación Dinámica de Memoria Agustín J. González Versión original de Kip Irvine ELO 329.
Clases en C++ Agustín J. González ELO329.
1 Polimorfismo y Funciones Virtuales Agustín J. González ELO329.
Manejo de Punteros y objetos en memoria dinámica en C++
Elementos básicos del lenguaje

1 Manejo de Excepciones y otros Agustín J. González ELO-329.
Programación en C para electrónicos
Punteros.
Elementos básicos del lenguaje
1 Miembros Estáticos (Static) de Clases y Funciones Amigas (Friend) Agustín J. González ELO329.
Clase #05 switch/case, Ejercicio
1 Definición y Conversión de datos Agustín J. González ELO-329.
1 Miembros Estáticos (Static) de Clases y Funciones Amigas (Friend) Agustín J. González Versión Original de Kip Irvine ELO326: Seminario II 2do. Sem
1 Polimorfismo y Funciones Virtuales Agustín J. González Versión original de Kip Irvine ELO329.
1 Miembros Estáticos (Static) de Clases y Funciones Amigas (Friend) Agustín J. González Versión Original de Kip Irvine ELO329.
Los punteros Programación modular.
Punteros Recomendado: 1. Nivelación Funciones
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
Términos algoritmo diseñar algoritmo implementar algoritmo
1 Asignación Dinámica de Memoria Agustín J. González ELO 329.
1 Algunas ideas básicas de C++ Agustín J. González ELO-329.
Polimorfismo y Métodos Virtuales Agustín J. González ELO329.
El lenguaje C++ Isidro González Caballero (Universidad de Oviedo) Técnicas de Comp. en Física Santander, 13/12/
1 Miembros Estáticos (Static) de Clases y Funciones Amigas (Friend)‏ Agustín J. González ELO329.
Conceptos y Lenguaje Imperativo
MEMORIA DINÁMICA.
Algunas Características de C++ no presentes en C Agustín J. González ELO-329.
Tema 1. Estructuras de datos Objetivo: Objetivo: El alumno resolverá problemas de almacenamiento, recuperación y ordenamiento de datos y las técnicas de.
Herencia en C++ Agustín J. González ELO329. Diseño y Programación Orientados a Objetos 2 Motor ElectricMotor Motor y ElectricMotor Consideremos dos clases.
Prof. Manuel B. Sánchez. Declaración de Objetos Una vez que la clase ha sido implementada se pueden declarar objetos como variables locales de métodos.
Algunas Características de C++ no presentes en C
Algunas Características de C++ no presentes en C
Definición y Conversión de datos
Algunas Características de C++ no presentes en C
Definición y Conversión de datos
Algunas Características de C++ no presentes en C
Algunas Características de C++ no presentes en C
Algunas Características de C++ no presentes en C
Transcripción de la presentación:

1 Definición y Conversión de datos Agustín J. González ELO-329

2 const int n = 25; n = 36; // error const double z; // error int m = n; m = 36; Calificador Const El calificador const previene que un objeto sea modificado con posterioridad a su definición. El objeto calificado como constante debe tener un valor asignado en su definición. Ojo Definición versus declaración: en la definición la variable se solicita almacenamiento, en la declaración sólo se introduce un identificador y se indican sus atributos (tipos, parámetros etc). Un objeto calificado como constante puede ser asignado a uno no constante. Es mejor que usar #define....

3 Asignación de almacenamiento Variables con almacenamiento static (estático) existen durante todo el programa. Variables Global Variables declaradas con el calificador static Variables con almacenamiento automatic (automático) son creadas en el stack cuando son definidas dentro de un bloque. Variables/Objetos locales de funciones Parámetros de Funciones Variables con almacenamiento dynamic (Dinámico) se crean en el heap, y pueden ser creadas y removidas en tiempo de ejecución (operadores new y delete).

4 string FileName; void MySub( int N ) { double X; static int count; int * pN = new int; } static automatic dynamic Ejemplos de asignación de almacenamiento

5 Alcance de Variables Variables globales existen fuera de cualquier bloque de código. un bloque queda descrito por los símbolos {... } Variables locales existen dentro del bloque de código. Al interior de una función, por ejemplo. Variables miembros existen dentro del bloque de definición de una clase class name {... }

6 int N = 25; int & rN = N; // referencia a N /* similar a puntero en semántica, pero con sintaxis normal*/ rN = 36; cout << N; // "36" displayed Referencias Una referencia es un alias para algún objeto existente. Físicamente, la referencia almacena la dirección del objeto que referencia. En el ejemplo, cuando asignamos un valor a rN, también estamos modificando N:

7 int N = 26; int * pN = &N; // get the address /* la idea es similar al anterior, pero debemos usar otra sintaxis */ Punteros Un puntero almacena la dirección de algún objeto. El operador dirección-de (&) obtiene la dirección de un objeto.

8 Un puntero debe ser definido con el mismo tipo al que éste apunta. pN no puede apuntar a Z porque Z es un double: El formato interno y tamaño de un puntero no es el mismo que el de un entero! Variables Punteros double Z = 26; int * pN; pN = &Z; // error!

9 El operador * obtiene el contenido de la variable que es referenciada por un puntero. Obtiene el contenido de. Sólo punteros pueden ser des-refenciados. Operador “des-referencia” (Dereference Operator) int N = 26; int * pN = &N; cout << *pN << endl; // "26"

10 El operador * también puede ser usado para modificar el contenido de la variable (u objeto) referenciada. Al asignación de un valor a *pN cambia el valor de N. El operador * (cont) int N = 26; int * pN = &N; *pN = 35; cout << *pN << endl; // "35" cout << N << endl; // "35"

11 Un puntero puede ser asignado a otro siempre y cuando apunten al mismo tipo de variable. Ejemplo, cuando pZ es des-referenciado, nos permite cambiar el valor de N: Asignación de punteros int N = 26; int * pN = &N; int * pZ; pZ = pN; *pZ = 35; // now N = 35

12 La asignación de un objeto a otro puede ser hecha des-referenciando punteros. Asignación de punteros int N = 26; int * pN = &N; int Z = 0; int * pZ = &Z; *pZ = *pN; // Z = 26

13 Conversiones Implícitas Conversiones Implícitas pueden tener lugar cuando un objeto de un tipo es asignado a un objeto de otro tipo. C++ maneja conversiones automáticamente en el caso de tipos numéricos intrínsecos (int, double, float) Mensajes de advertencia (warning) pueden aparecer cuando hay riesgo de perdida de información (precisión). Hay variaciones de un compilador a otro Ejemplos...

14 int n = 26; double x = n; double x = 36; int b = x; // possible warning bool isOK = 1; // possible warning int n = true; char ch = 26; // possible warning int w = 'A'; Ejemplos de Conversión

15 Operación Cast Una operación de “casteo” cast explícitamente convierte datos de un tipo a otro. Es usado en conversiones “seguras” que podrían ser hechas por el compilador. Son usadas para abolir mensajes de advertencia (warning messages). El operador tradicional del C pone el nuevo tipo de dato entre paréntesis. C++ mejora esto con una operador cast tipo función. Ejemplos...

16 int n = (int)3.5; // traditional C int w = int(3.5); // estilo de función bool isOK = bool(15); char ch = char(86); // símbolo ascii string st = string("123"); // errors: no conversions available: int x = int("123"); string s = string(3.5); double x=3.1415; char *p = (char*)&x; // para acceder a //x byte por byte Ejemplos de Cast

17 static_cast<> El operador static_cast<> es la forma preferida para hacer conversiones “seguras” en C++. Éste reemplaza ambos el operador tradicional de C y el estilo función de C++. Fue introducido recientemente. Se recomienda usar este estilo de cast. Ejemplos...

18 int w = static_cast (3.5); bool isOK = static_cast (1); char ch = static_cast (86); Ejemplos de static_cast