Apuntes de Programación y estructuras de datos. Tipos de datos
|
|
|
- Héctor Ávila Peña
- hace 9 años
- Vistas:
Transcripción
1 Apuntes de Programación y estructuras de datos. Tipos de datos Nikos Mylonakis, Fernando Orejas y Ana Cristina Zoltan [email protected] Dept. Llenguatges i Sistemes Informátics Universitat Politécnica de Catalunya Barcelona March 4, 2010 p.1/36
2 Introducción a la comprobación de tipos Un tipo se puede definir como una propiedad de un conjunto de valores Ejemplos: booleanos, enteros, entero_par, entero_impar, tablas, tuplas, etc Los tipos también se pueden asociar a todas las construcciones del lenguaje, por ejemplo las operaciones, las instrucciones y los subprogramas Los tipos se introducen en los LPs por motivos de seguridad. March 4, 2010 p.2/36
3 Los tipos determinan cómo se pueden utilizar las entidades del LP Ejemplo 1: Si x es entero lo podemos sumar a un entero pero no lo podemos utilizar en una operación lógica o como una acción Ejemplo 2: Si A:tabla [1..100] de entero la expresión A[50] es correcta pero A[120] no Para detectar los errores de uso de las diferentes entidades de un LP los LP realizan una comprobación de tipos March 4, 2010 p.3/36
4 Ejemplo 1: Para que x + y sea correcta x e y han de ser bien enteros bien reales Ejemplo 2: Para que A[50] sea correcta A ha de ser de tipo tabla y 50 ha de estar entre el subrango de la tabla. La comprobación de tipos puede ser estática (en tiempo de compilación) o dinámica (en tiempo de ejecución) Hay comprobaciones de tipos que sólo se pueden realizar en tiempo de ejecución. March 4, 2010 p.4/36
5 La comprobación de tipos dinámica hace que los programas se ejecuten más lentamente En algunos LP las comprobaciones dinámicas son opcionales. Java las realiza siempre Las ventajas de la comprobación de tipos son fiabilidad (si hay errores se detectan lo más pronto posible) y eficiencia (la memoria asignada a las variables se puede gestionar con una pila si no se utilizan punteros) Las desventajas son que a veces se imponen restricciones innecesarias y que es pesado tener que declarar todo March 4, 2010 p.5/36
6 Clases de sistemas de tipos Los sistemas de tipos en los LP pueden ser monomórficos (toda entidad sólo tiene un único tipo) o polimórficos ( una entidad puede tener más de un tipo). La notación algorítmica que utilizamos es monomórfica aunque puede haber sobrecarga de operadores y Java es polímorfico (por la relación clase-subclase) Hay dos clases de polimorfismo: polimorfismo de subclase y polimormismo parámetrico Ejemplo de polimorfismo parámetrico: listas de cualquier tipo ([α]) en Haskell donde α denota cualquier tipo March 4, 2010 p.6/36
7 Otra decisión de diseño de los sistemas de tipo LP es la equivalencia de tipos Ejemplo : x:=y requiere la comprobación de que ambos tipos son equivalentes Hay dos clases de equivalencia: por nombre y por estructura La equivalencia por nombre requiere que los dos tipos tengan el mismo nombre La equivalencia por estructura requieren que los dos tipos tengan la misma estructura March 4, 2010 p.7/36
8 Ejemplo: tipo T = tabla [1..100]deentero T = tabla [1..100]deentero ftipo var t1,t2 : T; t3 : T ; t4 : tabla [1..100]deentero fvar March 4, 2010 p.8/36
9 Si hay equivalencia por nombre t1 := t2 es correcto pero t1 := t3 y t1 := t4 no. Si hay equivalencia estructural t1 := t2, t1 := t3 y t1 := t4 son correctas En Java la equivalencia de tipos es por nombre La equivalencia estructural varía según el LP March 4, 2010 p.9/36
10 Otro tema relacionado con la equivalencia de tipos son las coerciones Las coerciones son conversiones ímplicitas de tipos Ejemplo: En C se realiza una coerción al realizar x = y si x es real y y entero En Java no existen coerciones Siempre se permite realizar conversiones explícitas March 4, 2010 p.10/36
11 Concepto de subclase Se dice que existe una relación de subclase entre SC y C (SC es subclase de C) si siempre que podemos utilizar elementos de la clase C también podemos utilizar elementos de la subclase SC La relación de subclase no es lo mismo que la relación de subconjunto en teoría de conjuntos March 4, 2010 p.11/36
12 tipo t = tupla A : entero; B : booleano; ftupla st = tupla A : entero; B : booleano; C : caracter; ftupla ftipo March 4, 2010 p.12/36
13 Los valores de st no están incluidos en t pero en cambio sí que puede existir una relación de subclase El motivo es porque las operación de acceso a un campo de las tuplas hace que siempre que se utilice un elemento de t se puede utilizar un elemento de st pues los campos de t están incluidos en st. En algunos LP como en Java para que puede existir relación de subclase se tiene que declarar explícitamente March 4, 2010 p.13/36
14 Reglas de inferencia en sistema de tipos Si los tipos son propiedades de conjuntos de valores, la lógica es una buena herramienta para tratarlas Un sistema de tipos quedará definido por un conjunto de reglas para inferir si una cierta construcción del LP tiene su tipo correcto Las reglas de inferencia tendrán la forma premisa1... premisan conclusion March 4, 2010 p.14/36
15 Ejemplo de reglas lógicas A B A B A B B Las premisas y conclusiones de las reglas de un sistema de tipos para determinar el tipo de una expresión podrían ser de la forma Expr : T (Expr tiene el tipo T ) Ejemplo de estas reglas serían A E1 : entero E2 : entero E1 + E2 : entero E1 : entero E2 : entero E1 E2 : booleno March 4, 2010 p.15/36
16 El problema está en que la comprobación de tipos requiere un conjunto de declaraciones de constantes y variables ademas de la aridad de las operaciones predefinidas Por tanto las reglas requieren de entorno Γ que contiene una lista con todas las declaraciones definidas y predefinidas Nosotros no veremos las reglas de generación del entorno pero si veremos el formato general de las reglas para comprobar el tipo de las expresiones March 4, 2010 p.16/36
17 Γ {x : T } x : T Γ {f : T1... TN T } f : T1... TN T Γ f : T1... TN T Γ E1 : T1... Γ EN : TN Γ f(e1,...,en) : T Los operadores unarios y binarios tendrían reglas específicas por su posición infija y prefija March 4, 2010 p.17/36
18 Las reglas para las instrucciones serían: Γ x : T Γ E : T Γ x := E : Instr Γ I1 : Instr Γ I2 : Instr Γ I1;I2 : Instr Γ E : booleano Γ I1 : Instr Γ I2 : Instr Γ SiE entoncesi1sinoi2 : Instr Γ E : booleano Γ I : Instr Γ mientrase hacer I fmientras : Instr March 4, 2010 p.18/36
19 La comprobación de tipos de los subprogramas requeriría un nuevo tipo (por ejemplo Subpr) El entorno se tendría que actualizar con la lista de parámetros y variables locales A continuación se pasaría a comprobar que el tipo del cuerpo del subrprograma es una instrucción March 4, 2010 p.19/36
20 Finalizada la comprobación el entorno se tiene que actualizar con el nombre del subprograma y el tipo de sus parámetros para comprobar que las llamadas a los subprogramas son correctas Debido a que pueden haber llamadas recursivas esta actualización se ha de hacer antes de comprobar el tipo del cuerpo del subprograma March 4, 2010 p.20/36
21 Ejercicio: Comprobar el tipo de la siguiente función funcionf(x,y : entero)retorna b : booleano x := x + 1; y ::= y + 2; b := x y retorna b ffuncion March 4, 2010 p.21/36
22 Algoritmos de comprobación de tipos Los compiladores de los LP no implementan sistemas deductivos de comprobación de tipos por ser ineficientes Los compiladores utilizan una tabla de símbolos para guardar la información que tenemos en el entorno de las reglas La representación del programa es mediante un árbol sintáctico La comprobación de tipos requiere realizar un recorrido recursivo del árbol sintáctico desde las hojas hasta la raíz asociando un tipo a cada nodo March 4, 2010 p.22/36
23 Reglas de inferencia con subtipo Recordemos que un tipo st es subtipo de un tipo t si cualquier elemento de st puede ser utilizado en un contexto en el que se utiliza t Las reglas de inferencia con subtipos tienen reglas adicionales como la reflexividad y la transitividad de la relación de subtipos y la regla de subsumción. La regla para subsumir nos dice que cuando un elemento es de un tipo st, ese elemento también tiene los tipos de los supertipos de st, esto es, de todos los tipos t de los cuales st es subtipo March 4, 2010 p.23/36
24 La formalización de las reglas es la siguiente Γ T < T Γ T1 < T2 Γ T2 < T3 Γ T1 < T3 Γ {ST < T } ST < T Γ expr : ST Γ ST < T Γ expr : T March 4, 2010 p.24/36
25 Veamos cómo se implementa la comprobación de tipos con subtipos El funcionamiento general es el mismo teniendo una tabla de símbolos y un árbol sintáctico al que hay que comprobar su tipo La tabla de símbolos contiene el menor subtipo asociado a las variables, constantes y parámetros de las operaciones y las relaciones de subtipos entre los tipos El proceso recursivo es el mismo de las hojas a la raíz pero con comprobaciones adicionales March 4, 2010 p.25/36
26 Si tenemos que f : T1... TN y al realizar la comprobación de f(e1,...,en) tenemos que E1 : T1,...,EN : TN si TJ < TJ para todo J entre 1 y N el tipo de f(e1,...,en) será correcto y de tipo T. Si hay sobrecarga se tienen que tratar todas las alternativas posibles March 4, 2010 p.26/36
27 El sistema de tipos de Java El sistema de tipos de Java es polimórfico (por relación de subclase/subtipo) No realiza coerciones implícitas Permite sobrecarga si no hay ambiguedades Ejemplo g : t1 t2 ts,g : t1 t2 ts, t1 < t1,t2 < t2 y a : t1,b : t2, la expresión g(a,b) da error cuando es ambigua. Si hiciesemos x = g(a,b) y x : ts podríamos desambiguar pero en Java da error March 4, 2010 p.27/36
28 Recordamos que en Java la asociación de tipos es estática pero la asociación de métodos es dinámica con ciertas restricciones En Java se puede asignar a una variable x de clase C un valor de una subclase de C SC pero x continua siendo de la clase C y x sólo puede acceder a los atributos declarados en C Con respecto de los métodos, por asociación dinámica si hay una redefinición de un método de C en SC una llamada a ese método con la variable x utilizaría el de SC March 4, 2010 p.28/36
29 La relación de subclase en Java se define mediante la cláusula extends entre clases como ya vimos y sólo se puede heredar de una superclase (herencia simple) En Java también se permite dejar sin definir ciertos métodos de una clase. En estos casos la clase se denomina abstracta March 4, 2010 p.29/36
30 Mediante la herencia podremos completar la clase definiendo los métodos no definidos Así podríamos implementar en Java el ejemplo del programa del cálculo de los salarios de los trabajadores de una empresa En Java también existen interfaces y son similares a las clases abstractas con la particularidad que permiten la herencia múltiple March 4, 2010 p.30/36
31 En Java tenemos dos clases de tipos: los primitivos y los referencia subclase de la clase general Object Los primitivos denotan un conjunto de valores y son por ejemplo int, boolean, byte, float, long, etc Los tipos referencia incluyen los strings, arrays y las clases definidas por el usuario Los tipos referencia denotan una posición de memoria que contiene un valor del tipo referenciado March 4, 2010 p.31/36
32 Una decisión de diseño de Java que se le critica de insegura es que si B es subclase de A entonces los arrays de B (B[]) son subclase de los arrays de A (A[]) Si generamos una tabla de 10 posiciones de clases de B mediante la inicialización B[]b = newb[10] y declaramos a como un array de A A[]a Como los arrays de B son subclase de los arrays de A podemos realizar la asignación a=b, March 4, 2010 p.32/36
33 Ahora podríamos hacer la asignación a[4] = new A() y por tanto el array b contendría un valor de A La implementación de Java no permite ejecutarlo Por este y otros motivos esta relación de subclase en arrays no se considera una buena decisión de diseño March 4, 2010 p.33/36
34 El sistema de tipos de C++ El sistema de tipos de C++ también es polimórfico (por relación de subclase/subtipo) C++ sí que realiza coerciones implícitas También permite sobrecarga si no hay ambiguedades March 4, 2010 p.34/36
35 En C++ la asociación de tipos es estática y la asociación de métodos redefinidos también es dinámica Para ello se tienen que definir los subprogramas como virtuales y los objetos como referencias a sus clases. Si no se definen como virtuales se considera el subprograma sobrecargado March 4, 2010 p.35/36
36 La relación de subclase en C++ se define mediante el símbolo : y una lista de superclases separadas por comas. Por tanto se permite herencia multiple. Como ya vimos en el anterior capítulo se puede poner operadores de acceso private, public o protected. En C++ también se permite dejar sin definir los métodos virtuales de una clase. March 4, 2010 p.36/36
Apuntes de Programación y estructuras de datos. Control de datos
Apuntes de Programación y estructuras de datos. Control de datos Nikos Mylonakis, Fernando Orejas y Ana Cristina Zoltan [email protected] Dept. Llenguatges i Sistemes Informátics Universitat Politécnica
Aspectos de los LP. Diseño de compiladores. Estático vs. Dinámico. Estático vs. Dinámico. Scope. Scope 24/03/2015
Aspectos de los LP Diseño de compiladores Lenguajes de Programación Antes de comenzar con la construcción de un compilador, debemos comprender los conceptos basicos del lenguaje de programación con el
Expresión, Operador, Operando, Asignación, Prioridad
4. EXPRESIONES Y OPERADORES Conceptos: Resumen: Expresión, Operador, Operando, Asignación, Prioridad En este tema se presentan los siguientes elementos de la programación: las expresiones y los operadores.
Tema 3. Programación orientada a objetos en Java (Parte 1)
Programación en Java Tema 3. Programación orientada a objetos en Java (Parte 1) Luis Rodríguez Baena Facultad de Informática Clases y objetos (I) Clase Cojunto de datos (atributos) y funciones (métodos)
Tema 7: Polimorfismo. Índice
Tema 7: Polimorfismo Antonio J. Sierra Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos. Recursividad. Control de acceso. Static. Final. Argumento
Modulo 11. Clases y Objetos en Java
El siguiente texto es una traducción no oficial del documento publicado por el grupo JEDI, Introduction to Programming 1, no pretende en ningún momento reemplazar los contenidos generados por este grupo.
1.2. Es Java un lenguaje ideal para aprender a programar? 1.4. Cuáles son las versiones y distribuciones Java y cuál usar?
1 1. Introducción 1.1. Qué es Java? 1.2. Es Java un lenguaje ideal para aprender a programar? 1.3. Es Java software libre? 1.4. Cuáles son las versiones y distribuciones Java y cuál usar? 1.5. Qué sistema
Introducción a la programación orientada a objetos
Introducción a la programación orientada a objetos Cristina Cachero Castro Pedro J. Ponce de León Amador Estela Saquete Boró Departamento de lenguajes y sistemas informáticos Universidad de Alicante Índice
TEMA 1 FUNDAMENTOS DE PROGRAMACIÓN
TEMA 1 FUNDAMENTOS DE PROGRAMACIÓN 1.1 Introducción 1.2 Evolución de los lenguajes de programación 1.3 Paradigmas de programación 1.4 Métodos de implementación 1.5 Lecturas recomendadas 1.6 Ejercicios
Tema 4 Genericidad en Java. Programación Orientada a Objetos Curso 2013/2014
Tema 4 Genericidad en Java Programación Orientada a Objetos Curso 2013/2014 Contenido Antecedentes. Genericidad en Java 5 y posterior. Características avanzadas: Genericidad restringida. Tipo puro. Limitaciones
230086 - POO - Programación Orientada a Objetos
Unidad responsable: Unidad que imparte: Curso: Titulación: Créditos ECTS: 2016 230 - ETSETB - Escuela Técnica Superior de Ingeniería de Telecomunicación de Barcelona 701 - AC - Departamento de Arquitectura
Algoritmos y Diagramas de flujo
Algoritmos y Diagramas de flujo En los pasos a seguir para el desarrollo de un problema, existen básicamente dos tipos de elementos con los cuales es posible especificar un problema en forma esquemática
La sintaxis básica para definir una clase es la que a continuación se muestra:
DEFINICIÓN DE CLASES Y OBJETOS EN C# Sintaxis de definición de clases La sintaxis básica para definir una clase es la que a continuación se muestra: class nombreclase miembros De este modo se definiría
CLAVE ASIGNATURA REQUISITOS HORA/SEMANA CREDITOS TI-8 PROGRAMACION II 80% DE ASISTENCIA 4 6
PRESENTACIÓN: La programación orientada a objetos es una evolución de la programación procedural basada en funciones. La POO permite agrupar secciones de código con funcionalidades comunes, pretende agrupar
CURSO DE LENGUAJE C. 4.1 Conceptos básicos de funciones 4.2 Funciones que regresan valores no enteros 4.3 Variables externas 4.4 Reglas de alcance
Capítulo 1. Introducción general 1.1 Comencemos 1.2 Variables y expresiones aritméticas 1.3 La proposición FOR 1.4 Constantes simbólicas 1.5 Entrada y salida de caracteres 1.6 Arreglos 1.7 Funciones 1.8
Diseño de algoritmos paralelos
PROGRAMACIÓN CONCURRENTE TEMA 7 Diseño de algoritmos paralelos ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA DEPARTAMENTO DE CIENCIAS DE LA COMPUTACIÓN DISEÑO DE ALGORITMOS PARALELOS - TEMA 7.2 Algoritmos
Tema 2. Variables, ámbitos y comprobación de tipos
Tema 2. Variables, ámbitos y comprobación de tipos 1. Variables 1.1. Nombre 1.2. Dirección 1.3. Tipo 1.4. Valor 2. Ligadura(binding) 3. Tipos 2.1. Ligadura de tipos Ligadura estática de tipos Ligadura
Declaración de variables. Sentencias de entrada/salida
Declaración de variables. Sentencias de entrada/salida Introducción En los capítulos anteriores se introdujo la notación algorítmica y unas nociones básicas del lenguaje de programación FORTRAN; se describió
ANÁLISIS SEMÁNTICO VERIFICACIÓN DE TIPOS
Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del público
Programación Orientada a Objetos. Sesión 4: Herencia
Programación Orientada a Objetos Sesión 4: Herencia Contextualización Cuando hablamos de informática, podemos contemplar varios elementos que se utilizan dentro de ésta misma, por ejemplo, la herencia
Introducción a Java. Fernando Cerezal López. 24 Noviembre 2005
24 Noviembre 2005 disponibles de acceso public private protected de tipo static abstract final modificadores más avanzados que no vamos a ver... Clase Sintaxis modificadores class nombreclase{} Tipos primitivos
UNIVERSIDAD SAN MARCOS
Prof. Edwin Gerardo Acuña Acuña UNIVERSIDAD SAN MARCOS ALGEBRA Este capítulo estudia los conceptos básicos del álgebra, una de las disciplinas de la matemática que tiene más aplicaciones en diversos campos.
REPASO ARRAYS MULTIDIMENSIONALES EN JAVA. DECLARACIÓN Y USO. EJEMPLOS Y EJERCICIOS RESUELTOS. (CU00905C)
APRENDERAPROGRAMAR.COM REPASO ARRAYS MULTIDIMENSIONALES EN JAVA. DECLARACIÓN Y USO. EJEMPLOS Y EJERCICIOS RESUELTOS. (CU00905C) Sección: Cursos Categoría: Lenguaje de programación Java nivel avanzado I
3. Tipos primitivos de dato
Programación orientada a objetos con Java 31 3. Tipos primitivos de dato Objetivos: a) Describir los tipos de datos primitivos (numéricos, booleano y de tipo carácter) en el lenguaje de programación Java
Herencia. Implementación en Java
Herencia Implementación en Java Herencia Concepto de Herencia Es el mecanismo que permite definir nuevas clases partiendo de otras ya existentes. Las clases que derivan de otras heredan automáticamente
UNIDAD 2 COMPUERTAS LOGICAS
UNIDAD 2 TABLA DE CONTENIDO. 2.1 Qué es Electrónica Digital. 30 2.2 Álgebra de booleana. 31 2.3 Operación booleana y compuertas lógicas. 31 2.4 Inversión o negación (complemento). 32 2.5 Suma booleana
Práctica 2. Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones
Práctica 2 Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos
APUNTES PARA LENGUAJES Y COMPILADORES
APUNTES PARA LENGUAJES Y COMPILADORES Cuando se define un lenguaje de programación, se determina su sintaxis y su semántica La sintaxis se refiere a las notaciones necesarias para escribir programas, y
Qué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +.
APUNTES DE JAVA Agenda Bienvenida Conociendo Java La Maquina Virtual Descargar e instalar el compilador El entorno de trabajo El paradigma de la programación orientada a objetos Qué es Java? Un lenguaje
CONTENIDOS. La herencia permite: - Adoptar automáticamente características ya implementadas. Ahorro de tiempo y esfuerzo
CONTENIDOS 1. Introducción 2. Cuándo se aplica el mecanismo de herencia 3. Un ejemplo de herencia 4. Terminología 5. Clase derivada. Creación de una clase derivada 6. Miembros que no se heredan automáticamente
Operando1 operador de relación Operando2
PROGRAMACIÓN 10 Prof. Dolores Cuiñas H. Recuerde que estos son apuntes muy simplificados que deberá completar con la bibliografía recomendada APUNTES Nº 5 ESTRUCTURAS DE CONTROL SELECTIAS O ESTRUCTURAS
descripción del argumento identificador tipo longitud condición restricción
Recuerde que estos son apuntes muy simplificados que deberá completar con la bibliografía PROGRAMACIÓN 0 Prof. Dolores Cuiñas H. recomendada APUNTES Nº. METODOLOGÍA PARA LA CONSTRUCCIÓN DE PROGRAMAS. Presentaremos
FUNDAMENTOS DE INFORMÁTICA
FUNDAMENTOS DE INFORMÁTICA Tema 3 Estructuras de datos Departamento de Ingeniería de Sistemas y Automática Universidad de Vigo undamentos de Informática. Departamento de Ingeniería de Sistemas y Automática.
METODOS, SOBRECARGA Y CONSTRUCTORES
METODOS, SOBRECARGA Y CONSTRUCTORES METODOS Los métodos son funciones de una clase. Generalmente los métodos se dividen en aquellos que se usan internamente en la clase, llamados métodos privados (private),
El lenguaje C. 1. Estructuras. Principios de Programación. 1.1. Definicion de estructuras
Principios de Programación El lenguaje C 1. Estructuras Las estructuras son colecciones de variables relacionadas bajo un nombre. Las estructuras pueden contener variables de muchos tipos diferentes de
Problemas de Recursividad
Problemas de Recursividad Problema 1. El factorial de un número entero n 0, denotado como n!, se define! como!!! i = 1 2 n cuando n > 0, y 0! = 1. Por ejemplo 6! = 1 2 3 4 5 6 = 720 Diseñad una método
CAPÍTULO 1 INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
CONTENIDO PRÓLOGO XIX CAPÍTULO 1 INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS 1.1 Introducción 2 1.2 Resolución de problemas mediante la computadora 3 1.3 Conceptos de programación orientada a objetos
Procesadores de lenguaje Tema 5 Comprobación de tipos
Procesadores de lenguaje Tema 5 Comprobación de tipos Departamento de Ciencias de la Computación Universidad de Alcalá Resumen Sistemas de tipos. Expresiones de tipo. Equivalencia de tipos. Sobrecarga,
Introducción a las sentencias de control
INSTRUCCIONES DE CONTROL CONTENIDOS 1. Introducción a las sentencias de control. 2. Instrucciones o sentencias condicionales: IF, IF-ELSE, SWITCH. 3. Instrucciones o sentencias repetitivas o iterativas:
Sistemas Operativos. Clase 2: Administración de procesos.
Sistemas Operativos Clase 2: Administración de procesos. Administración de procesos Un concepto muy importante en el ambiente de diseño de todo sistema operativo, es el de proceso o tarea. De manera general,
Diseño Dirigido por Responsabilidades con los patrones GRASP. Pearson Educación, S.A. Todos los derechos reservados.
Diseño Dirigido por Responsabilidades con los patrones GRASP Experto (en información) Cómo asignar responsabilidades? Asignar una responsabilidad al objeto que tiene la información necesaria para realizarla:
Una Clase: define un grupo de objetos que tienen propiedades similares y se comportan de manera similar.
Clases La programación orientada a objetos utiliza clases para encapsular (envolver, esconder) datos (atributos) y métodos (comportamientos). Por ejemplo, el estéreo de un auto encapsula todos los atributos
Tema 3 Constantes, Variables y Tipos
Tema 3 Constantes, Variables y Tipos Contenidos 1. Definiciones. 1.1 Variables y Constantes. 1.2 Identificadores. 2. Declaración de Variables en un Programa en C. 3. Tipos de Datos. 3.1 Clasificación.
CONCEPTO O DEFINICIÓN DE HERENCIA EN JAVA Y EN PROGRAMACIÓN ORIENTADA A OBJETOS. QUÉ ES? EXTENDS. EJEMPLOS. (CU00684B)
APRENDERAPROGRAMAR.COM CONCEPTO O DEFINICIÓN DE HERENCIA EN JAVA Y EN PROGRAMACIÓN ORIENTADA A OBJETOS. QUÉ ES? EXTENDS. EJEMPLOS. (CU00684B) Sección: Cursos Categoría: Curso Aprender programación Java
PROGRAMACIÓN ALGORITMOS y DIAGRAMAS
PROGRAMACIÓN ALGORITMOS y DIAGRAMAS ALGORITMO DEFINICIÓN: CONSISTE EN LA DESCRIPCIÓN CLARA Y DETALLADA DEL PROCEDIMIENTO A SEGUIR PARA ALCANZAR LA SOLUCIÓN A UN PROBLEMA ESTABLECIENDOSE UNA SECUENCIA DE
Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1
Prologo Agradecimientos Nota de los autores Índice general I III V VII 1 Problemas, algoritmos y programas 1 1.1 Programas y la actividad de la programación.................... 4 1.2 Lenguajes y modelos
Declaración de variables (integer, single, double, boolean, etc.) en Visual Basic. Dim. Ejemplos. (CU00309A)
aprenderaprogramar.com Declaración de variables (integer, single, double, boolean, etc.) en Visual Basic. Dim. Ejemplos. (CU00309A) Sección: Cursos Categoría: Curso Visual Basic Nivel I Fecha revisión:
Conjuntos disjuntos (Relaciones de equivalencia)
Conjuntos disjuntos (Relaciones de equivalencia) Una relación R se define en un conjunto C si para todo par de elementos (a,b),a,b C,a R b es verdadera o falsa. Una relación de equivalencia es una relación
En este capitulo se estudiarán los conceptos relacionados a métodos, como lo son sobrecarga, métodos estáticos.
Lección 3: Creando clases 1. Definición de métodos 2. Sobrecarga de métodos 3. Definición de constructores 4. Creando miembros estáticos 5. Construcción e inicialización de objetos Objetivos En este capitulo
Oracle Database 11g: Programación con PL/SQL Nuevo
Oracle University Contacte con nosotros: 902 302 302 Oracle Database 11g: Programación con PL/SQL Nuevo Duración: 5 Días Lo que aprenderá Este curso ofrece una introducción sobre PL/SQL a los estudiantes
SISTEMA DE NUMERACIÓN BINARIO
SISTEMA DE NUMERACIÓN BINARIO Cuando se trabaja en una computadora, los datos son convertidos en números dígitos que, a su vez, son representados como pulsaciones o pulsos electrónicos. En la actualidad
Clase adicional 2. Estructuras básicas de control. Temas
Clase adicional 2 Temas Estructuras de control Sentencia condicional Iteración Clases Definir una clase Crear una instancia de una clase Campos estáticos Problemas de la clase adicional Problema de diseño
Cristian Blanco www.cristianblanco.es
UNIDAD DIDÁCTICA 7. ANÁLISIS Y DISEÑO ORIENTADO A OBJETOS. DIAGRAMA DE CLASES 7.1 Introducción La construcción de software es un proceso cuyo objetivo es dar solución a problemas utilizando una herramienta
Taller de Programación I. Tema 10: Herencia en Java
INACAP Universidad Tecnológica de Chile Sede Santiago Centro Taller de Programación I Curso Java J2SE Tema 10: Herencia en Java Ing. Manuel López Ramos (versión 1) Parte I Qué es la herencia entre clases?
Oliverio J. Santana Jaria. Sistemas Digitales Ingeniería Técnica en Informática de Sistemas Curso 2006 2007
Oliverio J. Santana Jaria Sistemas Digitales Ingeniería Técnica en Informática de Sistemas Curso 2006 2007 7. Álgebra de Boole Este El que éxito resulta de la diseñar tecnología y fabricar digital circuitos
INGENIERIA DE SISTEMAS 1 ESTRUCTURAS DE DATOS (Listas simples) INTRODUCCIÓN A LAS ESTRUCTURAS DE DATOS
INGENIERIA DE SISTEMAS 1 ESTRUCTURAS DE DATOS (Listas simples) 1. INTRODUCCIÓN INTRODUCCIÓN A LAS ESTRUCTURAS DE DATOS Las computadoras fueron diseñadas o ideadas como una herramienta mediante la cual
Conjuntos y relaciones
Conjuntos y relaciones Introducción Propiedades de las relaciones Sobre un conjunto Reflexivas Simétricas y transitivas Cerradura Relaciones de equivalencia Órdenes parciales Diagramas de Hasse Introducción
Categorías de métodos. Métodos constructores y destructores
1. Categorías de los métodos 2. Inicialización de miembros 3. Métodos constructores 4. Inicialización de objetos con y sin constructores 5. Sobrecarga de funciones constructoras 6. Argumentos implícitos
Programación y matemática
Programación y matemática Los objetos matemáticos se describen usando un lenguaje al que llamamos lenguaje matemático. Como este lenguaje tiene pautas claras que indican cuáles descripciones tienen sentido
Unidad V Análisis Semántico. M.C. Juan Carlos Olivares Rojas
Unidad V Análisis Semántico M.C. Juan Carlos Olivares Rojas Agenda 5.1 Analizador semántico 5.2 Verificación de tipos en expresiones. 5.3 Conversión de tipos. 5.4 Acciones agregadas en un analizador sintáctico
k k N b Sistemas Númericos Sistemas con Notación Posicional (1) Sistemas con Notación Posicional (2) Sistemas Decimal
Sistemas con Notación Posicional (1) Sistemas Númericos N b = a n-1 *b n-1 + a n-2 *b n-2 +... + a 0 *b 0 +a -1 *b - 1 + a -2 *b -2 +... + a -m *b -m Sistemas con Notación Posicional (2) N b : Número en
Teoría de Conjuntos. Conjunto es: colección de cosas, o una colección determinada de objetos.
Teoría de Conjuntos Apuntes Fernando Toscano tomados por A.Diz-Lois La teoría de conjuntos es una herramienta formal semántica que trata de dotar de significado, o lo que es lo mismo dotar de interpretación.
Java posee dos grandes categorías de tipos para las variables:
Declaración identificador tipo int i; i entero String s; s referencia a string int a[]; a referencia a arreglo de enteros int[] b; b referencia a arreglo de enteros Java posee dos grandes categorías de
Lógica y Programación
Lógica y Programación Programación funcional con Haskell Antonia M. Chávez, Carmen Graciani, Agustín Riscos Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Programación
color (yerba, verde) el mismo predicado, pero con diferentes argumentos, puede no ser verdadero: color (yerba, azul) o color (cielo, verde)
Lógica de Predicados La principal debilidad de la lógica proposicional es su limitada habilidad para expresar conocimiento. Existen varias sentencias complejas que pierden mucho de su significado cuando
Base de Datos Oracle 10g: Programación con PL/SQL NUEVO
Oracle University Llámenos: 01-800-919-3027 Base de Datos Oracle 10g: Programación con PL/SQL NUEVO Duración: 5 días Lo que aprenderá Este curso ofrece una introducción sobre PL/SQL a los estudiantes y
Capítulo 4 Memoria virtual
Capítulo 4 Memoria virtual Cómo la memoria virtual se mapea a la memoria física. La memoria virtual es una técnica de gestión de la memoria que permite que el sistema operativo disponga, tanto para el
Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria.
1.2. Jerarquía de niveles de un computador Qué es un computador? Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria. Sistema complejo se estudia
Proposiciones Condicionales
SENTENCIAS CONDICIONALES SIMPLES: if- Anteriormente se discutió que una de las estructuras utilizadas en la programación estructurada es la Estructura Selectiva o Condicional. Se explican aquí las sentencias
INTRODUCCIÓN A VISUAL BASIC
INTRODUCCIÓN A VISUAL BASIC Lenguaje de programación basado en objetos y dirigido por eventos (o sucesos), desarrollado por el alemán Alan Cooper para el entorno Windows de Microsoft. Es un lenguaje de
TEMA I PROGRAMACIÓN ORIENTADA A OBJETOS PROGRAMACIÓN N ORIENTADA A OBJETOS OBJETOS (I) OBJETOS (II)
PROGRAMACIÓN N ORIENTADA A OBJETOS TEMA I PROGRAMACIÓN ORIENTADA A OBJETOS Programación OO Se basa en la creación de objetos, con sus propiedades y métodos Ventajas Código optimizado Buena reutilización
Generación de funciones lógicas mediante multiplexores
Generación de funciones lógicas mediante multiplexores Apellidos, nombre Martí Campoy, Antonio ([email protected]) Departamento Centro Informática de Sistemas y Computadores Universidad Politécnica de
APLICACIÓN DE ÁRBOLES BINARIOS
PRÁCTICA Nº 6: 2 sesiones (del 22 al 31 de Mayo de 2002) APLICACIÓN DE ÁRBOLES BINARIOS A LA COMPRESIÓN DE FICHEROS DE TEXTO MEDIANTE LA UTILIZACIÓN DE LOS CÓDIGOS DE HUFFMAN 0.- OBJETIVOS El objetivo
TEMA I: LOS CONCEPTOS FUNDAMENTALES DE LA TEORÍA DE LA COMPUTABILIDAD
1 Asignatura: Lógica 3 Curso 2004-2005 Profesor: Juan José Acero 20 25 de Octubre del 2004 TEMA I: LOS CONCEPTOS FUNDAMENTALES DE LA TEORÍA DE LA COMPUTABILIDAD 1. El concepto de algoritmo. Los matemáticos
DISEÑO CURRICULAR ALGORITMOS, ESTRUCTURAS Y PROGRAMACIÓN I
DISEÑO CURRICULAR ALGORITMOS, ESTRUCTURAS Y PROGRAMACIÓN I FACULTAD (ES) CARRERA (S) Ingeniería Computación y Sistemas CÓDIGO HORAS TEÓRICAS HORAS PRÁCTICAS UNIDAS CRÉDITO SEMESTRE 122643 02 02 03 II PRE-REQUISITO
Clases abstractas e interfaces en Java
Clases abstractas e interfaces en Java Clases abstractas public abstract class Figura { private String _nombre; public Figura (string nombre) { _nombre = nombre; final public boolean mayor_que (Figura
PROGRAMACIÓN EN JAVA
1. INTRODUCCIÓN A LA PROGRAMACIÓN 1.1. Datos, algoritmos y programas 1.1.1. Definición de algoritmo 1.1.2. Datos 1.1.3. Características de un programa 1.2. Paradigmas de programación 1.2.1. Programación
Lógica de Predicados MRC
Lógica de Predicados MRC Víctor Peinado [email protected] 6-7 de noviembre de 2014 Referencias (Partee, et al., 1990, chap. 7) 1 1 Partee, B.; ter Meulen, A.; Wall, R. Mathematical Methods in Linguistics
Sintaxis y Semántica del Lenguaje. Gramáticas
Gramáticas La tarea de proveer una descripción bien concisa y entendible de un lenguaje de programación es difícil pero esencial para el éxito de un lenguaje. Uno de los problemas en describir un lenguaje
Teoría de conjuntos. Tema 1: Teoría de Conjuntos.
Tema 1: Teoría de Conjuntos. La teoría de Conjuntos es actualmente una de las más importantes dentro de la matemática. Muchos de los problemas que se le han presentado a esta disciplina en los últimos
UNIDAD I. ALGORITMOS
UNIDAD I. ALGORITMOS 1.1 Definición Un algoritmo es una serie de pasos organizados que describe el proceso que se debe seguir, para dar solución a un problema específico. 1.2 Tipos Cualitativos: Son aquellos
Programación Digital I
Programación Digital I Programación Digital I Gilberto Diaz [email protected] Universidad de Los Andes Facultad de Ingeniería Escuela de Sistemas Depto de Computación Mérida - Venezuela Repaso Componentes
TEMA 5. Agenda. Herencia
TEMA 5 Herencia V1.3 Manuel Pereira González Agenda Implementación Métodos Heredados vs Sobreescritos La Clase Object Resumen 1 Introducción Herencia Una clase (subclase ó clase hija) hereda la estructura
Examen Teórico Convocatoria de Junio de 2012
Examen Teórico Convocatoria de Junio de 2012 Nombre: DNI: Titulación: 1. Sobre el control de errores en Java: a) El siguiente método contiene un error de compilación debido al uso de excepciones. Explica
Clases y herencia. FJP Unidad 8. Diseño de clases
Clases y herencia FJP Unidad 8 Encapsulamiento Diseño de clases El encapsulamiento provee protección de atributos y métodos definidos en una clase de forma tal que comportamiento de objetos de una clase
Sus socios en ISO 9000. Manual de Calidad
Sus socios en ISO 9000 Manual de Calidad ESTRUCTURA DE DOCUMENTACION GERENCIA NIVEL 1: Manual de Calidad - Políticas (Política de la compañía, autorización y alcance del sistema ) NIVEL 2: Procedimientos
Guía práctica de estudio 08: Polimorfismo
Guía práctica de estudio 08: Polimorfismo Elaborado por: M.C. M. Angélica Nakayama C. Ing. Jorge A. Solano Gálvez Autorizado por: M.C. Alejandro Velázquez Mena Guía práctica de estudio 08: Polimorfismo
Clases Abstractas e Interfaces
Clases Abstractas e Interfaces Presentación basada en: 1. Java 2., Curso de programación. Fco. Javier Ceballos. Ed. Alfoomega&RA-MA, 2003. 2. Apuntes del Curso Programación Orientado a Objetos. Pablo Castells.
