Presentación de PowerPoint - fcfm.buap.mx · Dato • Es el conjunto de representaciones...

Post on 08-Dec-2018

222 views 0 download

Transcript of Presentación de PowerPoint - fcfm.buap.mx · Dato • Es el conjunto de representaciones...

4. DATOSProgramación I

Los datos manejados por una computadora pueden ser entendidos de dos maneras distintas:

• Desde el punto de vista físico

• tiene que ver con el consumo de áreas de almacenamiento que ocupan (bytes que ocupan en memoria)

• Desde el punto de vista de relevancia

• lo que importa es el significado y el valor que el usuario les otorga

Fuente: Ramírez (2007)

Dato

• Es el conjunto de representaciones simbólicas no significativas, dado que no se tiene la capacidad de reconocerles un significado más allá del que tienen los símbolos que componen a dicho dato.

Información

• Es el conjunto de datos que en determinada cantidad y forma aumenta el conocimiento o reduce la incertidumbre respecto a un sujeto, evento o circunstancia. La información sólo podrá ser considerada como tal si se tiene la capacidad de reconocerla.

Conocimiento

• Es la información cuando se tiene la capacidad para usarla en actividades del plano real y limitado. Tiene naturaleza práctica.

Fuente: Ramírez (2007)

Entendidos desde el punto de vista de relevancia…

Acciones que es posible realizar con los datos:

• Recopilación

• Procesamiento

• Generación

• Divulgación

Fuente: Ramírez (2007)

Entendidos desde el punto de vista de relevancia…

En términos computacionales, los valores que pueden ser manejados tienen la siguiente:

Nat

ura

leza

Numéricos

Enteros

Reales

ComplejosAlfanuméricos

Fechas

Nulos

Booleanos

Entendidos desde el punto de vista de relevancia…

Fuente: Ramírez (2007)

Propiedades de los datos

• DominioEs el conjunto de valores válidos para un dato. A la cantidad de valores permitidos en un dominio se le llama amplitud de dominio.

• TipoEs un dominio nominado de datos que permite el almacenamiento de una determinada naturaleza de dato, atendiendo un grado de exactitud específico, causando un consumo determinado de almacenamiento.

• ValorEs la expresión almacenada como dato en un momento determinado.

Fuente: Ramírez (2007)

Entendidos desde el punto de vista de relevancia…

Datos en el lenguaje C

Tip

os

de

dat

os

sim

ple

sNuméricos

Enteros

(punto o coma fija)

Con signo

Sin signo

Reales (punto o coma flotante)

Precisión simple

Precisión doble

Caracter

Nulos

Entendidos desde el punto de vista de relevancia…

Datos en el lenguaje C

Tip

os

de

dat

os

estr

uct

ura

do

s o

der

ivad

os

de

los

fun

dam

enta

les Arreglos

Cadenas

Uniones

Registros o estructuras

Punteros

Funciones

Entendidos desde el punto de vista de relevancia…

Fuente: Ceballos Sierra (1995)

Tipos de datos simples en el lenguaje CPalabras reservadas para declarar variables de tipo entero con variantes

Cómo se representan en memoria(depende del compilador usado y el sistema operativo)

Dominio o rango del tipo de dato

Formatoprintf y scanf

shortshort intsigned shortsigned short int

2 bytes = 16 bitsEl dominio se calcula usandocomplemento a 2:[-2n-1, 2n-1 - 1], n número de bits

[-32 768, 32 767] %hd%hi

unsigned shortunsigned short int

2 bytes = 16 bitsEl dominio se calcula usandobinario puro o sin signo: [0, 2n - 1]

[0, 65 535] %hu

int, signed, signed int 4 bytes = 32 bits [-2 147 483 648, 2 147 483 647]

%i%d

unsigned, unsigned int 4 bytes = 32 bits [0, 4 294 967 295] %u

longlong intsigned longsigned long int

4 bytes = 32 bits8 bytes = 64 bits (GNU/Linux)

[-2 147 483 648, 2 147 483 647][-9223372036854775808,9223372036854775807]

%ld

unsigned longunsigned long int

4 bytes = 32 bits8 bytes = 64 bits (GNU/Linux)

[0, 4 294 967 295][0, 18446744073709551615]

%lu

Entendidos desde el punto de vista físico…

Continuación…

Palabras reservadas para declarar variables de tipo entero con variantes

Cómo se representan en memoria(si se usa el compilador C99)

Dominio o rango del tipo de dato Formatoprintf y scanf

long longlong long intsigned long longsigned long long int

8 bytes = 64 bits [-9 223 372 036 854 775 808,9 223 372 036 854 775 807]

%lld%I64d%I64u(últimos 2solo para windows)

unsigned long longunsigned long long int

8 bytes = 64 bits [0,18 446 744 073 709 551 615]

%llu

En general se tiene el tipo de dato int pero se forman distintos dominios con los modificadores:

short, signed, unsigned y long

Entendidos desde el punto de vista físico…

Continuación…Palabras reservadas para declarar variables de tipo real

Cómo se representan en memoria(depende del compilador usado y el sistema operativo)

Dominio o rango del tipo de dato Formatoprintf y scanf

float 4 bytes = 32 bits

El dominio se calcula usandonotación normalizada (conceptos de mantisa, fracción, exponente)

6 a 7 dígitos significativos

[-3.402823e+38, -1.175494e-38] U 0 U [1.175494e-38, 3.402823e+38]

%f%e%E

double 8 bytes = 64 bits

15 a 16 dígitos significativos

[-1.79793e+308, -2.225074e-308] U 0 U [2.225074e-308, 1.797693e+308]

%f, %e%E%lf (scanf)

long double 12 bytes = 96 bits16 bytes = 128 bits (GNU/Linux)

[-1.189731e+4932, -3.362103e-4932] U 0 U [3.362103e-4932,1.89731e+4932]

%Lf%Le%Lg

Entendidos desde el punto de vista físico…

Continuación…

Palabras reservadas para declarar variables de tipo caracter

Cómo se representan en memoria(depende del compilador usado y el sistema operativo)

Dominio o rango del tipo de dato Formatoprintf y scanf

charsigned char

1 bytes = 8 bits

El dominio se calcula usandocomplemento a 2:[-2n-1, 2n-1 - 1], n número de bits

[-128 , 127]Cada número entero representa o codifica a un único caracter

%c

unsigned char 1 bytes = 8 bits

El dominio se calcula usandobinario puro o sin signo: [0, 2n - 1]

[0, 255]

Cada número entero representa o codifica a un único caracter

%c

Entendidos desde el punto de vista físico…

Fuente: Ceballos Sierra(1995)

De acuerdo a lo anterior, los errores que pueden ocurrir con losvalores y los tipos de datos son:

• De dominio, cuando el valor está fuera del dominio del tipo

• Overflow o desbordamiento, el valor es demasiado grande para ser representado

• Underflow, el valor es demasiado pequeño para serrepresentado

• Sign, el valor no está permitido para el tipo de dato

Fuente: Ceballos Sierra(1995)

Conversión implícita de tipos

Cuando los operandos que intervienen en una operación son de tipos diferentes, antes de realizar la operación especificada, automáticamente el compilador convierte o promueve los tipos de los valores a un tipo en común (conversión estándar) de acuerdo a las siguientes reglas, las cuales se aplican en el orden expuesto para cada operación binaria perteneciente a una expresión, siguiendo el orden de evaluación (orden de prioridad):

Fuente: Ceballos Sierra (1995)

1. Si un operando es de tipo long double, el otro operando es convertido a tipo long double.

2. Si un operando es de tipo double, el otro operando es convertido a tipo double.

3. Si un operando es de tipo float, el otro operando es convertido a tipo float.

4. Un char o un short, con o sin signo, se convertirán a un int, si el tipo int puede representar todos los valores del tipo original, o a unsignedint en caso contrario. Generalmente los caracteres se convierten a enteros con extesión de signo.

5. Si un operando es de tipo unsigned long, el otro operando es convertido a unsigned long.

6. Si un operando es de tipo long, el otro operando es convertido a tipo long.

7. Si un operando es de tipo unsigned int, el otro operando es convertido a tipo unsigned int.

En resumen:

• Los operandos que intervienen en una determinada operación son convertidos al tipo del operando de precisión más alta.

• Las constantes reales son de tipo double por defecto.

• Una expresión booleana da como resultado un 1 si es verdadera o un 0 si es falsa.

• En una asignación, el valor de la parte derecha es convertido al tipo de la variable de la izquierda , según las siguientes reglas:

• Los reales se convierten a enteros truncando la parte fraccionaria

• Un double pasa a float redondeando y perdiendo precisión si el valor double no puede ser representado exactamente como float

Fuente: Ceballos Sierra (1995)

Conversión explícita de tipos

Se puede realizar una conversión explícita mediante cast o casting

Sintáxis:

(nombre del tipo) expresión

Ejemplo:

sqrt( (double) n+2 )

La expresión es convertida al tipo especificado si esa conversión estápermitida, en caso contrario se obtendrá un error.

En lo posible es mejor no utilizarla porque puede producir resultadosinesperados

Fuente: Ceballos Sierra (1995)

Ejemplos

long a;

unsigned char b;

int c, f;

float d;

f = a + b * c / d;

• 1. Orden de prioridad: *, /, +

• El valor de b se convierte al tipo int, a esto se le conoce como conversion ensanchante (menos a más precisión)

• El resultado tipo int de la multiplicaciónse convierte a float y el resultado de la división es tipo float

• El valor de a se convierte a float

• El resultado tipo float de la suma se convierte al tipo int para asignar, a estose le conoce como conversiónestrechante (de más a menos precisión)

float f;

f = 3.0 / 7.0;

if ( f == 3.0/7.0) printf (“Iguales”);

else printf (“Diferentes”);

• 3.0 y 7.0 son constantes literales y pordefecto son de tipo double

• El resultado de la división es del tipodouble pero se convierte a float (conversión estrechante)

• EL mismo valor double es comparadocon con el de float y no son iguales

• Solución: double num;

• Solución: if (f==3.0f/3.0f)

Fuente: Jiménez Millán (2013)

Tener en cuenta que, en las conversiones pueden ocurrir uno de dos errores:

PLOSS, pérdida parcial de significaciónTLOSS, pérdida total de significación

Referencias

• Ceballos Sierra, F. J. (1995). Curso de programación C/C++. Madrid: RA-MA.• Jiménez Millán, A. (2013). Curso de C++ (2.2.5 Conversiones estándar). Recuperado

de www.zator.com/Cpp• Ramírez, F. (2007). Introducción a la programación. Algoritmos y su implementación

en Visual Basic. NET, C#, y C++ (2a. ed.). México: Alfaomega.