Tema 3. Tipos de datos simples

Documentos relacionados
Elementos de un programa en C

El lenguaje C. 1. Identificadores, constantes y variables

Principios de Computadoras II

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

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Curso de Programación Avanzada en C

Programación Orientada a Objetos Sentencias Java Parte I Ing. Julio Ernesto Carreño Vargas MsC.

Programación n Orientada a Objetos Sentencias Java Parte I. Ing. Julio Ernesto Carreño o Vargas MsC.

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

Tema 4. Operadores y Expresiones

Expresiones y sentencias

OPERADORES Y EXPRESIONES

4. Operadores Operador asignación

Java Avanzado. Guía 1. Java Avanzado Facultad de Ingeniería. Escuela de computación.

Capítulo 7 OPERADORES Y EXPRESIONES. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"

Práctica de constantes, expresiones y operadores. Programación en C 1

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Programación en java. Estructuras algorítmicas

Expresiones Aritméticas. Programación digital I Escuela de Sistemas Facultad de Ingeniería Gilberto Diaz

Ficha de Aprendizaje N 13

Datos y tipos de datos

Exterior del algoritmo. Entorno. Usuario. Procesador. Escribir. v1 v2 v3. Leer. <acción> {; <acción>}

Operadores y Expresiones

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA

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

LENGUAJE. Tema 2 Elementos de un programa

Programación de Computadores 4 Iteraciones y Decisiones. Prof. Javier Cañas. Universidad Técnica Federico Santa María Departamento de Informática

Computación II. Introducción a Visual Basic

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Tema 2. El lenguaje JAVA

Java para programadores

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

Operadores. Javier Fernández Rivera -

2.2 Nombres, Ligado y Ámbito

2. EXPRESIONES 3. OPERADORES Y OPERANDOS 4. INDENTIFICADORES COMO LOCALIDADES DE MEMORIA

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Es toda la información que utiliza el computador. Según sea la información que guardemos en los datos, se clasifican en los siguientes tipos:

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Pseudolenguaje. (1 byte) (valores códigos ASCII) [CHAR_MIN.. CHAR_MAX] (Definida en <limits.h>) No hay. Dominio n 1 [MIN(C)..

Laboratorio de Arquitectura de Redes. Punteros en lenguaje C

Caracteres y Cadenas Conversión de Datos Funciones y procedimientos Archivos cabecera. Fundamentos de programación

Datos y tipos de datos

PROGRAMACION ORIENTADA A OBJETOS EN C++

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

Fundamentos de JAVA. Angel Kuri Enero, /2/2006

1 Estructura básica de un programa C++

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Estatutos de Control C# Estatutos de Decisión (Selección)

GUÍA BÁSICA DE SCHEME v.4

Programación Estructurada

Java para no Programadores

CONCEPTOS BASICOS DEL LENGUAJE JAVA

INICIACIÓN A LA PROGRAMACIÓN II

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Curso de Java Introducción a la Programación III

Elementos léxicos del lenguaje de programación C

INTRODUCCIÓN A C++ TRANSVERSAL DE PROGRAMACIÓN BÁSICA

Introducción al Lenguaje de Programación C

INTRODUCCIÓN A LA PROGRAMACIÓN EN FORTRAN. Métodos Numéricos Carlos Zotelo

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

Definición de Memoria

INTRODUCCIÓN AL LENGUAJE C++

Operadores de comparación

Se guardan en archivos con extencion c y los cabezales con extension h

TECNICO SUPERIOR EN INFORMÁTICA EMPRESARIAL MÓDULO INTRUCCIONAL

Un identificador le da nombre único a un elemento en un programa (Variables, procedimientos, etc.). No puede contener operadores como + - * /

Las plantillas permiten definir funciones genéricas.

1 ELEMENTOS BASICOS DEL LENGUAJE

Guía práctica de estudio 05: Diagramas de flujo

Funciones como Subprogramas en C++

UNIDAD I. ALGORITMOS

Tema 3 Constantes, Variables y Tipos

Tema 3 Elementos básicos de programación

Programación orientada a objetos. Resumen de Temas Unidad 4: Sobrecarga

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)

: Algorítmica y Estructura de Datos I

FUNDAMENTOS BÁSICOS DE PROGRAMACIÓN EN C++

Expresión, Operador, Operando, Asignación, Prioridad

UNIVERSIDAD NACIONAL EXPERIMENTAL DE GUAYANA VICERRECTORADO ACADÉMICO COORDINACION DE PRE-GRADO PROYECTO DE CARRERA DE INGENIERIA INDUSTRIAL

Tema 2. El lenguaje de programación Java (Parte 1)

Tema 3.- Predicados y sentencias condicionales

LABORATORIO DE PROCESADORES DE LENGUAJE Curso: Práctica 2: Analizador léxico/sintáctico/semántico con Flex y Bison

Programación en Visual Basic Ricardo Rodríguez García

Estructura de Datos [Tipos de datos concretos y tipos de datos abstractos]

Herramientas de Programación. M.C. Juan Carlos Olivares Rojas

SENA Distrito Capital Centro de Electricidad, Electrónica y Telecomunicaciones ADSI - Ing. Espec. Javier Vaquiro

Introducción a C++ y Code::Blocks

Tema 7. El sistema de clases

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

Hoja de ejercicios del Tema 3

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACION

Tema 2. Memoria Dinámica. 2.1 Datos estáticos y dinámicos

Inicio del programa. Entrada de datos. Proceso de datos. Salida de datos. Fin del programa

PROGRAMACIÓN UNIDADES

Introducción a Java (II) Dr. (c) Noé Alejandro Castro Sánchez

Instituto Tecnológico de Celaya

Programación en Pascal

Transcripción:

Tema 3. Tipos de datos simples Contenido del tema: Concepto de tipo. Tipos simples. Operadores. Expresiones. Semántica. Tipos y expresiones en lenguaje C++ Francisco J. Veredas Dpto. Lenguajes y Ciencias de la Computación 1 Concepto de tipo 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. 2 1

Ejemplos de datos en un algoritmo Zonas de declaraciones de datos (constantes y variables) Tipo CONST N MAX_VALOR = 100 VAR N suma = 0 Valor Dominio: valores naturales Identificador Operadores: + - * DIV MOD 3 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. 4 2

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 5 Clasificación de los tipos de datos Tipos simples o no estructurados No están compuestos por otros tipos. Contienen un solo valor. 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). 6 3

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 7 Propiedades de los tipos predefinidos Atómicos. Ordenados: admiten operadores relacionales: ==, >, <, >=, <=,!= Tipos escalares Sucesor, predecesor únicos (excepto R): Orden: Predecesor: Sucesor: Tipos ordinales ORD: T {0,..., #Τ 1} PRED: Τ Τ SUC: Τ Τ 8 4

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 9 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. Conversión interna entre caracteres y su representación física. 10 5

Tipo real (R) Dominio: conjunto R Operadores específicos: + - (binario) * / - (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). 11 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(). No hay conversión Representación física: códigos E/S estándar. 12 6

Tipo lógico o booleano (B) Dominio: VERDADERO y FALSO. Operadores lógicos: Y O NO. a b a Y b a O b NO a F F F F V F V F V V V F F V F V V V V F Literales: VERDADERO y FALSO. Entrada salida: no permitida. NO b V F V F 13 Tipos predefinidos en C++ Enteros (int, long, short): +, -, *, /, % Naturales (unsigned int, unsigned short, unsigned long): +, -, *, /, % Reales (float, double): +, -, *, /, sqrt,... Lógicos (bool): Caracteres (char) Precisión doble Valores: true, false Operadores: &&,,! 14 7

Definición de tipos en C++. Ejemplo // Programa ejemplo de definición // de los tipos de las variables en C++ #include <iostream> using namespace std; int main () { int res1, res2; float dato; cout << Dame un valor entero ; cin >> res1; res2 = res1; // res2 contiene el mismo valor que res1 cout << Dame un valor real; cin >> dato; cout << Fin programa definicion de tipos ; } return 0; 15 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 {Id 1, Id 2,..., Id n } IdTipoEnumerado Literales: identificadores: Id 1, Id 2,..., Id n 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 16 8

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 17 Los tipos enumerados... Mejoran la legibilidad y permiten restringir y controlar el dominio. TIPOS ENUM {rojo, amarillo, verde} TpColor VAR TpColor semaforo N posicion INICIO semaforo = amarillo posicion = ORD(rojo) // Asigna 1 semaforo = PRED(verde) // Asigna amarillo semaforo = SUC(verde) // Error semántico semaforo = naranja // Valor no permitido semaforo = 1 // Error semántico 18 9

Tipos enumerados en C++ /*Como definir tipos enumerados y variables de dicho tipo.*/ enum TpColor {rojo, azul,verde}; int main() { TpColor c1,c2; c1 = rojo; c2 = c1; //c1 y c2 con el mismo valor return 0; } 19 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. 20 10

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<POW(cifra, exp)) 21 Elementos léxicos de una expresión Operandos: Constantes literales. Constantes simbólicas. Variables. Llamadas a funciones. Operadores: Aritméticos. Relacionales. Lógicos. 22 11

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) 23 Elementos semánticos de una expresión Todos los elementos son de un determinado tipo. Todos los operadores y funciones devuelven un determinado tipo. tipo argumento 1 tipo argumento 2... Operador o función tipo del resultado 24 12

Tipos de los operadores Sobrecarga de operadores N Z N Z + - * DIV MOD N Z R R + - * / R B B Y O B B NO B tipo simple tipo simple < > <= >=!= == B 25 Tipos de las funciones predefinidas N Z ABS N Z R SQRT R Z Z POW Z R Z POW R N Z CHR C ordinal ORD N Z C CAP C ordinal ordinal SUC PRED ordinal 26 13

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: VAR N a, b = 3; R c, d = 2.0; B e INICIO a = (2 * 5) DIV b c = 4E3 * POW(10.5, d) / 25.0 e = a > b Y c < d a = b / 2.0 // Error semántico e = a > a // Error semántico 27 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. 28 14

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 29 La sentencia de asignación (=) Es un operador universal: aplicable a cualquier tipo de datos, simples o compuestos. variable = expresión lvalue Memoria r-value 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 y (2) modificar el valor (estado) que ya tenga. 30 15

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. 31 Ejemplos de asignación de literales Suponiendo las siguientes declaraciones de variables... VAR Z N R C Num1 Num2 Num3 Letra1, Letra2 son válidas: Num1 = -10; Num2 = 32; Num3 = 1.5E2; Letra1 = 1 ; Letra2 = Ñ ; no son válidas: Num2 = -20; Num3 = 10; Letra1 = 1; Letra2 = ab ; 32 16

Otros ejemplos de asignaciones semaforo = verde semaforo = PRED(verde) a = ORD( 8 )-ORD( 0 ) a = (b*4) DIV (a+b) e = VERDADERO e = a > 4 c1 = a ; c2 = CAP(c1) c2 = CHR(126) c = R(a)/R(b) // TSemaforo // TSemaforo // N // Z // B // B // C // C // R 33 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); 34 17

Ejemplos de asignaciones en C++ int main () { int unsigned int float char Num1; Num2, Num4=2; Num3; Letra1, Letra2; Num1 = -10; Num2 = (32+10)/Num4; Num3 = 1.5E2; Letra1 = 1 ; Letra2 = Ñ ; Num2 = -20; // No es correcta Num3 = 10; // Se aconseja mejor usar 10.0 Letra1 = 65; // No es correcta, aunque Letra2 = ab ; // No es correcta } return 0; 35 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. 36 18