domingo, 24 de febrero de 2008

que son los DATOS?

JULIAN DAVID CARVAJAL
2007167569
MAESTRO: JORGE MARIÑO
MATERIA: INT. A LA PROGRAMACION
TEMA: ¿QUE SON LOS DATOS?
LOS DATOS

Concepto de DATOS:

Datos son los hechos que describen sucesos y entidades."Datos" es una palabra en plural que se refiere a más de un hecho. A un hecho simple se le denomina "data-ítem" o elemento de dato.Los datos son comunicados por varios tipos de símbolos tales como las letras del alfabeto, números, movimientos de labios,puntos y rayas, señales con la mano, dibujos, etc. Estos símbolos se pueden ordenar y reordenar de forma utilizable y se les denomina información.Los datos son símbolos que describen condiciones, hechos, situaciones o valores. Los datos se caracterizan por no contener ninguna información. Un dato puede significar un número, una letra, un signo ortográfico o cualquier símbolo que represente una cantidad, una medida, una palabra o una descripción.La importancia de los datos está en su capacidad de asociarse dentro de un contexto para convertirse en información. Por si mismos los datos no tienen capacidad de comunicar un significado y por tanto no pueden afectar el comportamiento de quien los recibe.

¿Qué es un dato?
– Valor
• Constante: no cambia durante la ejecución del programa.
•Variable: cambia durante la ejecución de un programa.

– Identificador: el dato tiene un nombre.
• Normas de estilo para diferenciar entre identificadores
– de constantes
– y de variable.
– Tipo
• Dominio: valores que puede tomar el dato.
• Operaciones permitidas.
– Cardinalidad (#): número de valores distintos.
Ejemplos de datos en un algoritmo

Operadores básicos
• Los operadores permiten manipular datos.
• Operadores básicos: conjunto mínimo.
• Construcción de nuevos operadores: busca optimizar la eficiencia.
• Operadores generales:
– Asignación (=): el valor de un dato se copia en otro dato.
• Es un operador universal para todos los tipos de datos, simples o compuestos.
– Comparación de igualdad (==): verifica si dos datos tienen el mismo valor.
• Se emplea en expresiones lógicas (devuelve VERDADERO o FALSO).
• No es un operador universal: no está definida para tipos compuestos.
Uso de operadores y tipos
• En nuestro pseudolenguaje, los operadores se aplican sobre datos con el mismo tipo.
•Algunos lenguajes de programación son más estrictos que otros respecto al tipado de datos:
– C/C++: flexible
– MODULA-2: estricto
– ADA: muy estricto
Clasificación de los tipos de datos
• Tipos simples o no estructurados
– No están compuestos por otros tipos.
– Contienen un solo v alor.
– Son atómicos: indivisibles.
– Se dividen en:
• Predefinidos: propios del lenguaje empleado.
• Definidos por el usuario (programador).
• Tipos compuestos o estructurados:
– Se componen de otros tipos (simples o compuestos).
Tipos simples predefinidos
• Son la base de la programación.
• Dependen del lenguaje empleado.
• Pueden usarse sin necesidad de definirlos.
• En nuestro pseudolenguaje:
•N: números naturales
•Z: números enteros
•R: números reales
•B: booleanos
•C: caracteres
Propiedades de los tipos predefinidos
• Atómicos.
• Ordenados: admiten operadores relacionales: Tipos escalares
==, >, <, >=, <=, !=
• Sucesor, predecesor únicos (excepto R): Tipos ordinales
Orden: ORD: T ® {0, . . ., #T-1}
Predecesor: PRED: T ® T
Sucesor: SUC: T ® T
Operadores para tipos predefinidos
• Naturales (N): +, -, *, DIV, MOD
• Enteros (Z): +, -, *, DIV, MOD, ABS
• Reales (R): +, -, *, /, SQRT, POW, etc.
• Lógicos (B): Valores: VERDADERO, FALSO
Operadores: Y, O, NO
• Caracteres (C): ORD, CHR
Tipo natural (N) y tipo entero (Z)
• Dominio: conjunto N y conjunto Z
• Operadores específicos: + - (binario) * DIV MOD – (unario).
• Funciones predefinidas específicas: ABS(expresión), POW (base, exponente), etc.
• Literales: 34, -999, 0, etc.
• Entrada/salida formateada: Leer(), Escribir().
• Representación física:
– N: binario puro
– Z: signo-magnitud, complemento-1, complemento-2
Tipo real (R)
• Dominio: conjunto R
• Operadores específicos: + - (binario) *DIV MOD / - (unario).
• Funciones predefinidas específicas: SQRT(expresión), POW (base, exponente), etc.
• Literales: 10, -12.25, .36, 3.9E-56
• Entrada/salida formateada: Leer(), Escribir().
• Distintas representaciones físicas: coma fija (precisión limitada), coma flotante (prec. variable).
Tipo carácter (C)
• Dominio: conjunto de caracteres gráficos y de control del sistema.
• Operadores: ninguno específico.
• Funciones predefinidas específicas: CHR(), CAP().
• Literales: ‘a’, ‘A’, ‘0’, ‘&’, ‘\n’, ‘\0’, ‘\\’, ‘\’’, ‘\”’.
• Entrada/salida: Leer(), Escribir().
• Representación física: códigos E/S estándar.
Tipo lógico o booleano (B)
• Dominio: VERDADERO y FALSO.
• Operadores lógicos: Y O NO.





• Literales: VERDADERO y FALSO.
• Entrada salida: no permitida.

Tipos predefinidos en C++
• Enteros (int, long, short): +, -, *, /, %
• Naturales (unsigned int, unsigned short, unsigned long): +, -, *, /, %
• Reales (float, double): +, -, *, /, sqrt, . .
• Lógicos (bool):Valores: true, false Operadores: &&, , !
• Caracteres (char)

Definición de tipos en C++. Ejemplo

Tipos simples definidos por el usuario
• Los tipos enumerados:
– Permiten definir nuevos tipos simples, de cardinalidad (n) reducida, y valores fácilmente interpretables.
– Se declaran en la sección de TIPOS de un algoritmo.
ENUM {Id1, Id2, ..., Idn} IdTipoEnumerado
– Literales: identificadores: Id1, Id2, ..., Idn
– Son tipos ordinales: ORD(), SUC() y PRED().
– No tienen operadores específicos.
– Representación física: como N o como Z.
– La entrada/salida no está permitida.
– El tipo booleano puede verse como un enumerado con dos valores: ENUM {VERDADERO, FALSO} B

Los tipos simples mejoran la legibilidad...

... aunque el dominio sea arbitrario...
CONST
N ROJO = 1 /***********************/
N VERDE = 2 /* Valores arbitrarios */
N AMARILLO = 3 /***********************/

... y no haya manera de restringirlo y/o controlarlo.

VAR
N color, semaforo
INICIO
color = ROJO // Más legible
semaforo = 9 // Nada lo impide


Los tipos enumerados...
• Mejoran la legibilidad y permiten restringir y controlar el dominio.


Tipos enumerados en C++:Tipos de datos compuestos
• Se componen de otros tipos (simples o compuestos a su vez).
• Componentes homogéneos: arrays.
• Componentes heterogéneos: registros.
• No ordenados: no se les puede aplicar los operadores relacionales.
• La asignación entre datos del mismo tipo compuesto es siempre posible: copia completa del dato.
Expresiones aritméticas y lógicas
• Una expresión es una combinación de elementos que representan valores (operandos) y conectivas (aritméticas y/o lógicas) que representan operaciones (operadores).
• Ejemplos:
s<=((d+4.0e-5)*32.1)/SQRT(valor) Y NO fin (angulo==45) O NO (33.56
Elementos léxicos de una expresión
• Operandos:
– Constantes literales.
– Constantes simbólicas.
– Variables.
– Llamadas a funciones.
• Operadores:
– Aritméticos.
– Relacionales.
– Lógicos.

Elementos sintácticos de una expresión
• Notación infija para los operadores binarios
a * b
suma >= 20.5
• Notación prefija para los operadores unarios
- x
NO a
• Posibilidad de uso y anidamiento de paréntesis.
(dato + 5) * 32
((valor + 0.6 * (2.6 – dato)) * 1E6 + 99.9)

Elementos semánticos de una expresión
• Todos los elementos son de un determinado tipo.
• Todos los operadores y funciones devuelven un determinado tipo.



Tipos de los operadores

Tipos de las funciones predefinidas




Compatibilidad de tipos
• Los operandos binarios deben ser compatibles entre sí y con los operadores.
• Regla de estilo, que los tipos de los operandos de una expresión DEBEN SER IDÉNTICOS.
• Ejemplo:
Conversiones de tipo
• Permiten mezclar en la misma expresión datos de distinto tipo.
• Tipos de conversión:
– Explícita: TipoDestino(expresión)
• Son indicadas por el programador: 2 + Z(3.6 / 2)
• Regla de estilo: todas las conversiones de tipo en una expresión deben ser explícitas.
– Implícitas: especificadas por el lenguaje
• Ejemplo: 2 + 3.5 (convierte el segundo operando al tipo del primero, esto es, natural o entero)
• Regla de estilo: deben evitarse las conversiones implícitas.

Evaluación de una expresión
• Reglas de precedencia:
– Los paréntesis tienen la mayor precedencia: los más internos preceden a los más externos.
– Si no se utilizan paréntesis, el orden en que se realizan las operaciones es el siguiente:
• 1º Operador unario lógico y aritmético: NO y -
• 2º Operadores multiplicativos: *, /, DIV, y MOD
• 3º Operadores aditivos (binarios): + y –
• 4º Operadores relacionales: <, >, <=, >=, ==, !=
• 5º Operador lógico de conjunción: Y
• 6º Operador lógico de disyunción: O
– Los operadores con la misma precedencia se evalúan de izquierda a derecha.
• Recomendación: en caso de duda, usar paréntesis

La sentencia de asignación (=):
• Es un operador universal: aplicable a cualquier tipo de datos, simples o compuestos.
variable = expresión
lvalue r-value
Memoria valor

• A la izquierda de la expresión debe haber una variable (contenedor).
• Los tipos de la variable y la expresión deben ser idénticos.
• Dos posibles acciones: (1) inicializar una variable después de declararla

(2) modificar el valor (estado) que ya tenga.

Precisiones sobre la asignación
• Modo de ejecución:
1) Se calcula el resultado correspondiente a la expresión que aparece a la derecha.
2) Se almacena el valor calculado en la variable cuyo nombre aparece a la izquierda. A=5

A=A + 1

• El tipo de la expresión de la derecha (r-value) debe ser idéntico al de la variable (l-value)..

• Pueden hacerse conversiones explícitas de tipos entre tipos compatibles antes de realizar la asignación.
Ejemplo: suma = 3.5 + R(num), si suma es real y num natural.

Ejemplos de asignación de literales
Suponiendo las siguientes declaraciones de variables...

Otros ejemplos de asignaciones
semaforo = verde // TSemaforo
semaforo = PRED(verde) // TSemaforo
a = ORD(‘8’)-ORD(‘0’) // N
a = (b*4) DIV (a+b) // Z
e = VERDADERO // B
e = a > 4 // B
c1 = ‘a’; c2 = CAP(c1) // C
c2 = CHR(126) // C
c = R(a)/R(b) // R


Expresiones en C++
• El tipo de la expresión/variable de la derecha debe ser compatible con el tipo de la variable, aunque se aconseja, como regla de estilo, que sean tipos idénticos.
• Sin embargo, existen conversiones implícitas, desaconsejadas. Por ejemplo,
float x; int y; x = y; //El tipo de y se pasa a float
• Usaremos conversiones explícitas.
Por ejemplo, x = float(y);


Ejemplos de asignaciones en C++:



Bibliografía
• Joyanes, L. Fundamentos de Programación.
Algoritmos y Estructuras de Datos.
3ª Edición, McGraw-Hill, 2003.
• Joyanes, L. Programación en C++: Algoritmos,
Estructuras de Datos y Objetos.
McGraw Hill. 2000.
• Deitel, P., Deitel, H. C++ Cómo Programar.
Prentice Hall. 1999.
• Wirth, N. Algoritmos y Estructuras de Datos.
Prentice-Hall, 1987.