Tipos abstractos de datos (TAD)

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Tipos abstractos de datos (TAD)"

Transcripción

1 Capítulo 2 Tipos abstractos de datos (TAD) Objetivo: Introducir al alumno las estructuras de datos mediante el concepto de tipo abstracto de datos. En este capítulo se presenta una primera implementación del TAD Conjunto y se irá mejorando a lo largo del mismo incluyendo un análisis de la complejidad de los métodos que lo forman. 2.1 Introducción Un tipo de datos es una abstracción que determina un conjunto de valores que deben tener los datos de cierto tipo. Por ejemplo en los lenguajes de programación se tienen el tipo entero, real y Booleano. A partir de eso se puede determinar, por ejemplo, que el 5 es un número entero, que true es un valor Booleano, etc. Además, los datos tienen ciertas operaciones y propiedades, por ejemplo sabemos que para números se tienen las operaciones aritméticas y para booleanos las operaciones lógicas. Entre las propiedades de estos datos se cuenta con que los datos forman conjuntos cerrados, por ejemplo una operación entre dos Booleanos devuelve un booleano. Al considerar tanto datos como operaciones se tiene un tipo abstracto de datos. Un tipo abstracto de datos (TAD) es un conjunto de datos con sus operaciones. Se denominan TAD porque nada en la definición indica el cómo se implementan las operaciones (por cierto, puede haber más de una implementación), por tanto en Java para definir TAD se recomienda usar interfaces. 1

2 2.2. EL TAD CONJUNTO 2 Para completar la descripción de un TAD se debe proporcionar además de la interfaz con las operaciones que se pueden realizar, una descripción de las propiedades que deben tener tales operaciones. Un mecanismo útil para describir estos aspectos no-sintácticos es el uso de pre/post condiciones. Una pre-condición es aquella propiedad que debe satisfacerse antes de la ejecución de un método. Un post-condición especifica propiedades que se deben esperar como consecuencia de la ejecución de un método. Por su parte, las estructuras de datos tradicionales son mecanismos útiles para almacenar y recuperar (en/de memoria) colecciones de datos. En Java representan una implementación de un TAD particular. 2.2 El TAD Conjunto Un conjunto puede verse como un tipo de datos donde se puede almacenar cualquier cantidad de datos sin importar el orden y sin posibilidad de repetición de valores. Las operaciones básicas con conjuntos son: almacenar un dato en él, eliminar un dato, verificar si contiene algún dato particular, determinar si el conjunto está vacío o su tamaño. Además podrían estar las operaciones clásicas de intersección, unión y diferencia. Una forma bonita de definir un TAD es mediante una interfaz, así que para los conjuntos se puede tener la siguiente: public interface Conjuntable { public void agregarelemento(object elem); public void eliminarelemento(object elem); public boolean contieneelemento (Object elem); public boolean estávacío(); public int tama~no();... //Operaciones clásicas con conjuntos. Quedan como ejercicio Propiedades que se esperan de un conjunto: agregarelemento. Si el elemento no existe en el conjunto lo agrega al conjunto, aunque no está definida la posición del nuevo elemento. Si el elemento ya se encuentra en el conjunto se dispara una excepción. En caso de ser exitosa la operación el tamaño del conjunto crece en una unidad.

3 2.2. EL TAD CONJUNTO 3 contieneelemento. Regresa true si el elemento está en el conjunto y false en otro caso. Este método no cambia el estado del conjunto. eliminarelemento. Si el elemento existe en el conjunto lo elimina, en caso contrario dispara la excepción NoSuchElementException. En caso de que la operación sea exitosa se reduce el tamaño del conjunto en una unidad. estávacio. Devuelve true si el conjunto está vacío y false en otro caso. tama~no. Devuelve un entero que indica la cantidad de elementos en el conjunto. La interfaz es independiente de la implementación. A continuación se presenta una implementación usando arreglos. /** * Programa que implementa el tipo de datos abstracto conjunto. Amparo López Gaona Agosto public class Conjunto implements Conjuntable { private Object[] datos; private int indicefinal; /** Constructor por omisión, crea un conjunto con una capacidad máxima de * 20 elementos public Conjunto() { datos = new Object[20]; indicefinal = 0; /** * Crea un arreglo con capacidad para un conjunto de un máximo determinado * por el usuario o 20 en caso de proporcionar un número negativo. tam - entero positivo que determina el tama~no máximo del conjunto

4 2.2. EL TAD CONJUNTO 4 public Conjunto(int tam) { datos = (tam <= 0)? new Object [20] : new Object [tam] ; indicefinal = 0; /** * Método que determina si un conjunto no tiene elementos. boolean - true si el conjunto está vacío y false en otro caso. public boolean estávacío(){ return (indicefinal == 0); /** * Método que determina la cantidad de elementos en el conjunto int - cantidad de elementos en el conjunto. public int tama~no(){ return indicefinal; /** * Método que determina si un elemento dado está en el conjunto elem - Objeto a buscar boolean - true si el objeto se encuentra en el conjutno y * false en otro caso public boolean contieneelemento (Object elem){ if (!estávacío()) for (int i = 0; i < indicefinal; i++) if (elem.equals(datos[i])) return true; return false; /** * Método que permite borrar un elemento del conjunto elem - Objeto a eliminar

5 2.2. EL TAD CONJUNTO 5 public void eliminarelemento(object elem){ int i = 0; boolean borrado = false; while (i < indicefinal &&! borrado) if (elem.equals(datos[i])){ for (int j = i; j < indicefinal -1; j++) datos[j] = datos[j+1]; indicefinal--; borrado = true; else i++; // recorre los elemntos del arreglo /** * Método que permite agregar un elemento del conjunto, si aún no está * en él elem - Objeto a insertar en el conjunto. public void agregarelemento(object elem){ if (! contieneelemento(elem) && indicefinal < datos.length) datos[indicefinal++] = elem; Análisis de algoritmos En general interesa conocer qué tan eficientes son los métodos programados, es decir estimar el tiempo requerido para ejecutar cada uno. Porque no es deseable ejecutar un programa que tarde un año en su ejecución o que requiera más memoria de la disponible. A primera vista parece sencillo medir la efectividad de un algoritmo en términos de tiempo, basta que al ejecutar el programa se tome el tiempo que tarda en correr. Ya sea con un reloj en mano o bien desde el programa. Esto no es muy deseable porque depende de la máquina, aún del compilador, en que se haya ejecutado el programa. El análisis de algoritmos es un técnica que permite caracterizar la ejecución de algoritmos de manera independiente de cualquier plataforma, com-

6 2.2. EL TAD CONJUNTO 6 pilador o lenguaje. En lugar de medir el tiempo de ejecución de un programa se mide el del algoritmo, el cual estará programado en uno o más métodos, así que la medida se basa en el examen del tiempo de ejecución para la invocación de un solo método. Al hacer más rápido un método se puede mejorar la velocidad de ejecución de un programa entero. Generalmente se calcula el tiempo de ejecución en el peor caso, porque el mejor caso no aporta nada y el caso promedio refleja el comportamiento típico. Así que con el peor caso se tiene un estimado de ejecución con cualquier entrada posible. Si el método para calcular el tamaño de un conjunto fuera el siguiente: for (int i = 0; i <datos.length; i++) if (datos[i] == null) return i; return datos.length; y el conjunto tuviera 100 elementos, sería necesario hacer 100 asignaciones y si cada una se realiza en un tiempo constante c, entonces el método tarda c 100 unidades de tiempo en realizarse. Si el tamaño del arreglo cambia a n, se requiere que se hagan n asignaciones. En este caso se dice que el tiempo de ejecución del método depende de la cantidad de datos de entrada, o más formalmente que se tiene un algoritmo de complejidad O(n) (O grande de n). En caso de que el método estuviera programado como sigue: public int tama~no(){ return indicefinal; En este caso con una sola instrucción se puede determinar el tamaño del conjunto. Este algoritmo es mucho mejor que el anterior, porque no depende de la cantidad de datos de entrada, por lo tanto toma un tiempo constante en su ejecución, así que se dice que es de orden O(1). En el análisis de la complejidad de un algoritmo no se incluyen constantes, es decir, no se dice O(2n 2 ) ni O(n 2 + n), en ambos casos la forma correcta es O(n 2 ). Por ejemplo, si se desea bajar un archivo de n Kbytes que está en Internet. Si se tarda 3 segundos en establecer la conexión, luego la carga se realiza a 1.5 Kb/seg, el tiempo requerido se describe como T (n) = n/1,5 + 3, por tanto se tiene una función lineal. Si n = 1500 entonces T(n) = 1003 y

7 2.2. EL TAD CONJUNTO 7 T(750) = 503, que es casi la mitad. Luego si se duplica el tiempo de inicio se tiene que T(1500) = 1006 y T(750) = 506, es decir sigue siendo casi la mitad sin importar la constante, por tanto se ignoran las constantes. Funciones comunes Las funciones más comunes para rango de crecimiento son: Función c log n log 2 n n n n log n n n nombre Constante Logarítmica Log-cuadrática Raíz cuadrada Lineal n 2 Cuadrática n 3 Cubica n d, d > 3 Polinomial 2 n Exponencial n! Factorial Ejercicio: Cuál es el tiempo de ejecución de una función de cada uno de los grados, si se tiene n = 10 5 datos de entrada, y se realizan 10 6 operaciones por segundo. Respuesta: Qué analizar? Función Nombre Tiempo de ejecución log n Logarítmica 1.2 *10 5 seg n Lineal 0.1 seg n log n 1.2 seg n 2 Cuadrática 2.8 horas n 3 Cubica 31.7 años 2 n Exponencial más de un siglo Si se tiene el siguiente método para calcular la suma de los primeros n números al cubo y se desea calcular su complejidad.

8 2.2. EL TAD CONJUNTO 8 public static int sumancubos(int n) { int suma; suma = 0; for (int i=1; i < n; i++) suma += i*i*i; return suma; El tiempo requerido para resolver las declaraciones no cuenta, las asignaciones toman una unidad de tiempo, el cuerpo del for toma cuatro (dos multiplicaciones, una suma y una asignación) por n veces que se ejecuta da un total de 4n unidades. El encabezado del for toma una unidad para la inicialización, n + 1 para las comparaciones y n para el incremento, lo cual da un total de 2n + 2. Sumado todo nos da un total de 6n + 4, es decir se tiene un método que orden O(n) o sea lineal. Para evitar hacer esos cálculos tan detallados se tienen las siguientes reglas generales: 1. Asignaciones, declaraciones. Para efectos de cálculos se asume que todas las operaciones sobre tipos primitivos, las asignaciones, las secuencias de asignaciones toman un tiempo constante. 2. Proposiciones consecutivas. Se suman. 3. Condicionales. Se toma el tiempo de la condición más el mayor de las dos alternativas. if (a > 0) { suma += a; datos++; else a*= (-1); 4. Ciclos. El tiempo de ejecución de un ciclo es el tiempo de ejecución de su cuerpo por el número de veces que se realiza. El caso más sencillo es cuando están fijos los valores de entrada y de salida y el cuerpo toma un tiempo constante. Ejemplo: for (int i=0; i < n; i++) if (valores[i] < mínimo) mínimo = valores[i];

9 2.2. EL TAD CONJUNTO 9 Este ciclo se realiza n veces y el cuerpo toma un tiempo constante cada vez, por tanto el tiempo de ejecución de este ciclo es O(n). Cuál es el tiempo de ejecución del siguiente ciclo? public boolean esprimo (int n) { for (int i=2; i*i <= n; i++) if (0 == n %i) return false; return true; Aquí el ciclo se hace mientras la i sea menor o igual a la raíz cuadrada de n, es decir el número máximo de iteraciones es n, como el cuerpo del ciclo toma un tiempo constante, se tiene que el algoritmo es O( n). Recordemos que estas medidas representan la ejecución en el peor caso. 5. Ciclos anidados. El tiempo de ejecución de una proposición dentro de un grupo de ciclos anidados es el tiempo de ejecución de la proposición multiplicado por el producto de los tamaños de todos los ciclos. Ejemplo: for (int i = 0; i <n ; i++) for (int j=0; j < n ; j++) k++; Este algoritmo es de orden n 2, porque cada ciclo se realiza n veces y el cuerpo es de orden uno. for (int i = 0; i <n ; i++) for (int j=0; j < n ; j++) { c[i][j] = 0; for (int k=0; k < n ; k++) c[i][j] += a[i][k] * b[k][j]; El tiempo de ejecución de este ciclo es O(n 3 ). Cuando los límites de las iteraciones están relacionados con los índices externos, el análisis se vuelve más complejo.

10 2.2. EL TAD CONJUNTO 10 for (int i = n-1; i > 0; i--) for (int j = 0; j < i; j++) if (v[j] > v[j+1]) { double temp = v[j]; v[j] = v[j+1]; v[j+1] = temp; Para determinar el tiempo de ejecución de este algoritmo notamos que la iteración interna se realiza n 1 veces, la segunda n 2 veces, etc. Así el ciclo interno se realiza (n 1) + (n 2) = ((n 1)n)/2 = (n 2 n)/2 por tanto el algoritmo es O(n 2 ). 6. Llamadas a métodos. El tiempo se calcula como el necesario para realizar tal método. public void imprimeprimos(int n) { for (int i =2; i <=n; i++) if (esprimo(i)) System.out.println("valor "+ i + "es primo."); else System.out.println("valor "+ i + "no es primo."); El método esprimo tiene un tiempo de ejecución O( n) (como se vió antes) por tanto imprimeprimo es de orden O(n n) Cuando se suma complejidad algorítmica, el valor mayor es el que predomina y se conserva para el resultado. Por ejemplo O(n 2 )+O(n) = O(n 2 +n) = O(n 2 ). La tabla es la que da las prioridades Iteradores Es tarea común, recorrer una colección o estructura de datos para obtener todos los elementos de ella, ya sea para imprimirlos o bien realizar una operación sobre todos ellos (por ejemplo, incrementar el salario de todos los empleados, dar de alta un conjunto de alumnos en un curso particular, etc.) Para ello se usa, en general, un for.

11 2.2. EL TAD CONJUNTO 11 for (int i = 0; i < miarreglo.tama~no(); i++) { Object v = miarreglo.obtenerelemento(i);... Sólo que esta forma no es genérica pues depende de obtenerelemento y de que se sabe que en la implementación se utiliza un arreglo. Otra forma de hacerlo es implementando la interfaz Iterator del paquete java.util presentada a continuación: public interface Iterator { public boolean hasnext(); public Object next() throws NoSuchElementException; public void remove() throws IllegalStateException, NoSuchElementException; Así que normalmente las clases que implementan o tienen colecciones incluyen un método que devuelve un conjunto de elementos de una clase que implementa la interfaz Iterador. El objeto cliente no requiere conocer la organización de los datos. En general, se define como una clase interna, como se verá en el siguiente ejemplo. import java.util.*; public class Conjunto implements Conjuntable { // Misma estructura y métodos que antes más los métodos siguientes: public Iterator elementos () { return new datosindexados(); private class datosindexados implements Iterator { private int pos = 0; //Posición inicial public datosindexados(){ Constructor por omisión public boolean hasnext() { return (pos < nelems); // Determina si aún hay elementos en // el conjunto

12 2.3. ARREGLOS EXPANDIBLES 12 public Object next() throws NoSuchElementException { if (hasnext()) // Devuelve el siguiente elemento en el conjunto return datos[pos++]; throw new NoSuchElementException(); public void remove() throws IllegalStateException, NoSuchElementException { throw new NoSuchElementException(); public static void main( String[] xx) {... System.out.println("Voy a imprimir: "); for (Iterator it = c.elementos(); it.hasnext();) System.out.print((Integer) it.next() + " "); Definir una clase dentro de otra permite establecer que hay una estrecha relación entre ambas clases. Una clase interna tiene acceso, sin calificativo, a todos los métodos y estructura del objeto que la encierra (aún los privados). Se recomienda que la clase interna sea muy sencilla. La clase externa proporciona la mayoría de la funcionalidad y la interna, sólo funcionalidad asociada a la externa pero subordinada a ella. 2.3 Arreglos expandibles El arreglo es la única estructura de datos que proporciona Java. La ventaja de los arreglos es que toma el mismo tiempo acceder a cualquier elemento de él, sin embargo no pueden crecer, es costoso insertar o suprimir elementos de una colección almacenada en un arreglo sin dejar huecos. Es decir, aunque son sumamente útiles no son apropiados para todos los problemas de almacenamiento de datos.

13 2.3. ARREGLOS EXPANDIBLES 13 interface ArregloExpandible { public boolean estávacio (); public int tama~no (); public void agregarelemento(object val, int pos); public Object obtenerelemento(int pos); public void eliminarelemento(int pos); public void reemplazarelemento(object v, int pos); public void ajustartama~no(int nuevotama~no) ; La forma de trabajar de los objetos de la clase que implemente la interfaz ArregloExpandible es la siguiente: estávacio. Devuelve true si el arreglo no tiene elementos y false en otro caso. tama~no. Devuelve un entero que indica la cantidad de elementos almacenados en el arreglo. agregarelemento. Agrega un elemento al arreglo en la posición indicada (ésta debe tener un valor menor o igual al tamaño del arreglo). Para insertar un elemento, se hace un espacio en el arreglo recorriendo los elementos hacia le final del arreglo. Si el arreglo está lleno, se aumenta su capacidad. El tamaño del arreglo se incrementa en una unidad. Notar que en este arreglo se tienen dos conceptos, tama~no que es la cantidad de elementos en él y capacidad que es la cantidad de localidades que contiene físicamente el arreglo. Este último dato lo desconoce el usuario. tamano() Capacidad (datos.length) datos Figura 2.1: Arreglo expandible

14 2.3. ARREGLOS EXPANDIBLES 14 obtenerelemento. Devuelve el elemento almacenado en la posición indicada, siempre y cuando sea ésta sea válida. Si la posición es inválida se dispara la excepción ArrayIndexOutOfBoundsException. Este método no cambia el estado del objeto. eliminarelemento. Elimina el elemento almacenado en la posición indicada, siempre y cuando sea ésta sea válida. Si la posición es inválida se dispara la excepción ArrayIndexOutOfBoundsException. En caso de que la operación sea exitosa se reduce el tamaño del arreglo en una unidad. reemplazarelemento. Sustituye el elemento almacenado en la posición indicada por el elemento indicado. Si la posición es invalida dispara la excepción. ArrayIndexOutOfBoundsException. El método no cambia el tamaño del arreglo. ajustartama~no. Aumenta la capacidad del arreglo en el número de unidades indicado. Este método no altera la cantidad de elementos almacenados en el arreglo.

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

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Unidad Didáctica 2 Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.3 Índice

Más detalles

La eficiencia de los programas

La eficiencia de los programas La eficiencia de los programas Jordi Linares Pellicer EPSA-DSIC Índice General 1 Introducción... 2 2 El coste temporal y espacial de los programas... 2 2.1 El coste temporal medido en función de tiempos

Más detalles

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

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

Más detalles

Lenguajes de Programación Curso 04-05. Práctica 4. Herencia. Utilización de interfaces y clases abstractas. 1. Interfaces 1. 2. Clases abstractas 2

Lenguajes de Programación Curso 04-05. Práctica 4. Herencia. Utilización de interfaces y clases abstractas. 1. Interfaces 1. 2. Clases abstractas 2 Objetivos Herencia. Utilización de interfaces y clases abstractas. Índice 1. Interfaces 1 2. Clases abstractas 2 3. Collections Framework 3 3.1. Collection........................................... 3

Más detalles

PROGRAMACION ORIENTADA A OBJETOS Ingenieria Informática Final Febrero 2006/07

PROGRAMACION ORIENTADA A OBJETOS Ingenieria Informática Final Febrero 2006/07 PROGRAMACION ORIENTADA A OBJETOS Ingenieria Informática Final Febrero 2006/07 Ejercicio 1. Un indice de referencias cruzadas de las palabras que aparecen en un texto es una tabla por palabras y, por cada

Más detalles

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

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 2 - Introducción al lenguaje Java, identificadores y comentarios. Carlos Montenegro Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 1. Introducción: Java tiene como todos

Más detalles

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

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs. Variables Una variable no es más que un nombre simbólico que identifica una dirección de memoria: Suma el contenido de la posición 3001 y la 3002 y lo almacenas en la posición 3003 vs. total = cantidad1

Más detalles

CAPITULO 4. AGRUPAR OBJETOS

CAPITULO 4. AGRUPAR OBJETOS CAPITULO 4. AGRUPAR OBJETOS 4.1 Agrupar objetos en colecciones de tamaño flexible Frecuentemente se necesitan agrupar los objetos en colecciones; muchas veces el número de elementos almacenados en la colección

Más detalles

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

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo Algoritmos En general, no hay una definición formal de algoritmo. Muchos autores los señalan como listas de instrucciones para resolver un problema abstracto, es decir, que un número finito de pasos convierten

Más detalles

NOTACIÓN O GRANDE. El análisis de algoritmos estima el consumo de recursos de un algoritmo.

NOTACIÓN O GRANDE. El análisis de algoritmos estima el consumo de recursos de un algoritmo. NOTACIÓN O GRANDE El análisis de algoritmos estima el consumo de recursos de un algoritmo. Esto nos permite comparar los costos relativos de dos o más algoritmos para resolver el mismo problema. El análisis

Más detalles

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta Centro Asociado Palma de Mallorca Antonio Rivero Cuesta La Sintaxis de Java I... 5 Tipos de datos... 6 Tipos de datos simples... 7 Operadores... 11 Operadores Aritméticos... 12 Operadores relacionales...

Más detalles

Complejidad de los Algoritmos

Complejidad de los Algoritmos Que es un Algoritmo? Complejidad de los Algoritmos Webster: cualquier método especial para resolver cierta clase de problemas. Horowitz: método preciso utilizable en una computadora para la solución de

Más detalles

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez Elementos de lenguaje: Identificadores Tipos de datos 2 Tipos de datos primitivos 3 Tipos de datos referenciados Clases Interfaces Arrays

Más detalles

Tema 7.- Fundamentos de la Programación Orientada a Objetos

Tema 7.- Fundamentos de la Programación Orientada a Objetos Tema 7.- Fundamentos de la Programación Orientada a Objetos 7 de enero de 2014 Objetivos Saber definir clases propias. Saber crear objetos de una clase determinada e interactuar con ellos (Problema 1).

Más detalles

Notación Asintótica 2

Notación Asintótica 2 Notación Asintótica 2 mat-151 1 Éxamen Rápido (6 minutos) Cada operación fundamental usa c milisegundos, cuánto tiempo toma contar hasta 1,000,000? Cuál es el valor de N? Cuál es el órden de complejidad

Más detalles

NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS

NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS 1 NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Árboles Binarios y Árboles Binarios Ordenados 2 Contenido Árboles binarios Iteradores Árboles binarios ordenados 3 Árboles binarios Algunas definiciones para

Más detalles

Complejidad computacional (Análisis de Algoritmos)

Complejidad computacional (Análisis de Algoritmos) Definición. Complejidad computacional (Análisis de Algoritmos) Es la rama de las ciencias de la computación que estudia, de manera teórica, la optimización de los recursos requeridos durante la ejecución

Más detalles

Tema 3. Análisis de costes

Tema 3. Análisis de costes Tema 3. Análisis de costes http://aulavirtual.uji.es José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz {badia, bmartine, morales, sanchiz}@icc.uji.es Estructuras de datos y de la información

Más detalles

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

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial. Tipos de Datos Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial. Entrada de datos Procesamientos de datos Salida de resultados Los

Más detalles

INTRODUCCIÓN...9 CAPÍTULO 1. ELEMENTOS DE UN PROGRAMA INFORMÁTICO...11

INTRODUCCIÓN...9 CAPÍTULO 1. ELEMENTOS DE UN PROGRAMA INFORMÁTICO...11 Índice INTRODUCCIÓN...9 CAPÍTULO 1. ELEMENTOS DE UN PROGRAMA INFORMÁTICO...11 1.1 PROGRAMA Y LENGUAJESDE PROGRAMACIÓN...12 1.1.1 EL LENGUAJE JAVA...13 1.1.2 EL JDK...15 1.1.3 LOS PROGRAMAS EN JAVA...16

Más detalles

Tema 2. El lenguaje JAVA

Tema 2. El lenguaje JAVA Tema 2. El lenguaje JAVA Nomenclatura habitual Variables Tipos de variables Tipos primitivos Referencias Arrays Operadores Operadores de Java Precedencia de operadores Sentencias de control Sentencias

Más detalles

INTERFACE COMPARATOR. DIFERENCIAS ENTRE COMPARATOR Y COMPARABLE. CLASE COLLECTIONS. EJERCICIOS RESUELTOS. (CU00918C)

INTERFACE COMPARATOR. DIFERENCIAS ENTRE COMPARATOR Y COMPARABLE. CLASE COLLECTIONS. EJERCICIOS RESUELTOS. (CU00918C) APRENDERAPROGRAMAR.COM INTERFACE COMPARATOR. DIFERENCIAS ENTRE COMPARATOR Y COMPARABLE. CLASE COLLECTIONS. EJERCICIOS RESUELTOS. (CU00918C) Sección: Cursos Categoría: Lenguaje de programación Java nivel

Más detalles

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005 Dpto. de Ingeniería de Sistemas Telemáticos E.T.S.I. Telecomunicación Universidad Politécnica de Madrid FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005 Normas de examen: Con libros y apuntes Duración: 2 horas

Más detalles

CONCEPTOS BASICOS DEL LENGUAJE JAVA

CONCEPTOS BASICOS DEL LENGUAJE JAVA CONCEPTOS BASICOS DEL LENGUAJE JAVA NOMENCLATURA GENERAL En Java se distinguen las letras mayúsculas y minúsculas. Las reglas del lenguaje respecto a los nombres de variables son muy amplias y permiten

Más detalles

1. Cuántas sentencias hay en la secuencia principal del siguiente programa?

1. Cuántas sentencias hay en la secuencia principal del siguiente programa? 1. Cuántas sentencias hay en la secuencia principal del siguiente programa? public class PruebaSwitch { System.out.print ("Opcion: "); case 3: System.out.println ("miércoles "); A. 1. B. 4. C. Más de 10.

Más detalles

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

Introducción a Java (II) Dr. (c) Noé Alejandro Castro Sánchez Introducción a Java (II) Dr. (c) Noé Alejandro Castro Sánchez Sintaxis de Java Sintaxis Define las reglas que determinar el uso de palabras clave, operadores y variables para construir y evaluar expresiones.

Más detalles

Interfaces y Clases Internas. ELO329: Diseño y Programación Orientados a Objetos

Interfaces y Clases Internas. ELO329: Diseño y Programación Orientados a Objetos Interfaces y Clases Internas ELO329: Diseño y Programación Orientados a Objetos Qué queremos decir con interfaces y clases internas? NOTA: El término interfaz aquí NO se refiere a las interfaces gráficas

Más detalles

Introducción a Java LSUB. 30 de enero de 2013 GSYC

Introducción a Java LSUB. 30 de enero de 2013 GSYC Introducción a Java LSUB GSYC 30 de enero de 2013 (cc) 2013 Laboratorio de Sistemas, Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento - NoComercial

Más detalles

AGRUPA P R OBJET E OS 1

AGRUPA P R OBJET E OS 1 AGRUPAR OBJETOS 1 Son objetos que pueden almacenar un número arbitrario de objetos. Para formar colecciones usaremos la clase ArrayList. Para poder utilizar dicha clase habrá que importar el paquete java.util,

Más detalles

Elementos de un programa en C

Elementos de un programa en C Elementos de un programa en C Un programa en C consta de uno o más archivos. Un archivo es traducido en diferentes fases. La primera fase es el preprocesado, que realiza la inclusión de archivos y la sustitución

Más detalles

Tema 9. Algoritmos sobre listas. Programación Programación - Tema 9: Algoritmos sobre listas

Tema 9. Algoritmos sobre listas. Programación Programación - Tema 9: Algoritmos sobre listas Tema 9 Algoritmos sobre listas Programación 2015-2016 Programación - Tema 9: Algoritmos sobre listas 1 Tema 9. Algoritmos sobre listas Algoritmos sobre Arrays. Búsqueda. Inserción. Ordenación. Programación

Más detalles

M. en E. Noemí López García

M. en E. Noemí López García La forma de indicar al servidor que nuestro código PHP comienza es: M. en E. Noemí López García sentencias php Existen otros métodos de indicar el inicio de código php pero el indicado es el más común

Más detalles

Árboles binarios de búsqueda

Árboles binarios de búsqueda Clase 27 Árboles binarios de búsqueda Árboles binarios de búsqueda En la clase anterior, definimos el concepto de árbol binario de búsqueda como un árbol binario de nodos que contienen una clave ordenada

Más detalles

Control de Flujo. Estructuras de Control! Experiencia Educativa de Algorítmica CONTROL DE FLUJO

Control de Flujo. Estructuras de Control! Experiencia Educativa de Algorítmica CONTROL DE FLUJO Control de Flujo Estructuras de Control Experiencia Educativa de Algorítmica 1 Introducción El estilo de como escribimos y analizamos un algoritmo se convierte en una de las principales características

Más detalles

PHP: Lenguaje de programación

PHP: Lenguaje de programación Francisco J. Martín Mateos Carmen Graciani Diaz Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Tipos de datos Enteros Con base decimal: 45, -43 Con base octal: 043, -054

Más detalles

Java Básico. Métodos estáticos

Java Básico. Métodos estáticos Java Básico Métodos estáticos Agregando métodos estáticos En un programa es deseable separar los algoritmos y asignarles un nombre. Cada algoritmo separado será llamado método. Cuando no necesitamos crear

Más detalles

Clases e instancias. Algoritmos y Estructuras de Datos I. Clases e instancias. memoria dinámica.

Clases e instancias. Algoritmos y Estructuras de Datos I. Clases e instancias. memoria dinámica. Algoritmos Estructuras de Datos I Primer cuatrimestre de 2014 Departamento de Computación - FCEN - UBA Programación imperativa - clase 10 Memoria dinámica listas enlazadas Clases e instancias El paquete

Más detalles

FUNDAMENTOS DE INFORMÁTICA

FUNDAMENTOS DE INFORMÁTICA FUNDAMENTOS DE INFORMÁTICA Tema 2 Expresiones, operadores y estructuras de control Departamento de Ingeniería de Sistemas y Automática Universidad de Vigo Fundamentos de Informática. Departamento de Ingeniería

Más detalles

Programación Estructurada

Programación Estructurada Programación Estructurada PROGRAMACIÓN ESTRUCTURADA 1 Sesión No. 2 Nombre: El lenguaje de programación C Contextualización Una constante en todos los lenguajes de programación (viejos y nuevos) es la implementación

Más detalles

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C Algoritmo y Estructura de Datos Ing. M. Laura López 1 Estructura de un programa en C 2 Estructura de un programa en C #include Archivos de cabecera # define Definición de constantes Declaraciones Globales

Más detalles

Tipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos

Tipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos Algoritmos y Estructuras de Datos I 1 cuatrimestre de 009 Departamento de Computación - FCEyN - UBA Programación funcional - clase Tipos algebraicos Tipos algebraicos y abstractos ya vimos los tipos básicos

Más detalles

<tipo> Tipo de dato de los elementos del vector

<tipo> Tipo de dato de los elementos del vector Vectores y matrices Declaración Vector (array unidimiensional): []; Tipo de dato de los elementos del vector Identificador de la variable.

Más detalles

Este método se basa en buscar el elemento menor el vector y colocarlo en la primera

Este método se basa en buscar el elemento menor el vector y colocarlo en la primera Lectura ORDENACIÓN DE ARREGLOS Con frecuencia se requiere clasificar u ordenar los elementos de un vector (arreglo unidimensional) en algún orden en particular. Por ejemplo, ordenar un conjunto de números

Más detalles

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

Guía práctica de estudio 05: Diagramas de flujo Guía práctica de estudio 05: Diagramas de flujo Elaborado por: M.C. Edgar E. García Cano Ing. Jorge A. Solano Gálvez Revisado por: Ing. Laura Sandoval Montaño Guía práctica de estudio 05: Diagramas de

Más detalles

ESCUELA DE INFORMÁTICA

ESCUELA DE INFORMÁTICA TÉCNICO EN SISTEMAS LABORAL SUBMODULO TEMA 1 (Visual Basic for Application) Microsoft VBA (Visual Basic for Applications) es el lenguaje de macros de Microsoft Visual Basic que se utiliza para programar

Más detalles

4. Operadores Operador asignación

4. Operadores Operador asignación Programación orientada a objetos con Java 43 4. Operadores Objetivos: a) Describir los operadores (aritméticos, incrementales, de relación, lógicos y de asignación) y los tipos de dato primitivos sobre

Más detalles

Ciclos. Recordando Estructuras de Control Básicas: SELECCIÓN (condición) SECUENCIAL

Ciclos. Recordando Estructuras de Control Básicas: SELECCIÓN (condición) SECUENCIAL Ciclos Fundamentos de Programación Recordando Estructuras de Control Básicas: Una secuencia es una serie de estatutos que se ejecutan uno después de otro. Selección (condición) ejecuta diferentes estatutos

Más detalles

Instrucciones de control

Instrucciones de control Instrucciones de control Instrucciones de control de flujo C# ofrece un conjunto de sentencias similar al de C, C++ o Java. A continuación se estudian muy brevemente cada una de ellas. if if se utiliza

Más detalles

Tiempo de Ejecución. Midiendo el Tiempo de Ejecución

Tiempo de Ejecución. Midiendo el Tiempo de Ejecución Tiempo de Ejecución Arturo Díaz Pérez Sección de Computación Departamento de Ingeniería Eléctrica CINVESTAV-IPN Av. Instituto Politécnico Nacional No. 2508 Col. San Pedro Zacatenco México, D. F. CP 07300

Más detalles

Principios de Computadoras II

Principios de Computadoras II Departamento de Ingeniería Electrónica y Computadoras Ing. Ricardo Coppo rcoppo@uns.edu.ar Qué es un Objeto? Un objeto es una instancia de una clase Las clases actuán como modelos que permiten la creación

Más detalles

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

Programación Orientada a Objetos Sentencias Java Parte I Ing. Julio Ernesto Carreño Vargas MsC. Sentencias Java Parte I Ing. Julio Ernesto Carreño Vargas MsC. Variables Conceptos de Memoria Una variable es un espacio en la memoria del PC Cada variable tiene un nombre, un tipo, un tamaño y un valor

Más detalles

Universidad de Managua

Universidad de Managua Universidad de Managua Introducción a la Programación Tema 7 Introducción a la programación en lenguaje C# Objetivos - Describir la estructura básica de un programa en Lenguaje C# - Explicar las estructuras

Más detalles

Excepciones en Java Colecciones e iteradores Genericidad Cierre de UML

Excepciones en Java Colecciones e iteradores Genericidad Cierre de UML Excepciones en Java Colecciones e iteradores Genericidad Cierre de UML Carlos Fontela cfontela@fi.uba.ar Temario Excepciones en Java Colecciones e iteradores En Java 1.4 y.net 1.1 Genericidad Desde Java

Más detalles

Funciones como Subprogramas en C++

Funciones como Subprogramas en C++ FUNCIONES Cuando es necesario escribir programas complicados para resolver problemas complejos, una práctica común entre los programadores es descomponer el algoritmo (el diagrama de flujo) en varias partes.

Más detalles

Grados Ing. Inf. y Mat. Inf. Julio 2014 Algoritmos y Estructura de Datos Página 1 de 6

Grados Ing. Inf. y Mat. Inf. Julio 2014 Algoritmos y Estructura de Datos Página 1 de 6 Grados Ing. Inf. y Mat. Inf. Julio 201 Algoritmos y Estructura de Datos Página 1 de 6 Algoritmos y Estructura de Datos: Examen Julio (Solución) Grados Ing. Inf. y Mat. Inf. Julio 201 Departamento de Lenguajes,

Más detalles

FUNDAMENTOS DE INFORMÁTICA

FUNDAMENTOS DE INFORMÁTICA FUNDAMENTOS DE INFORMÁTICA Tema 1 Introducción a la Programación en Visual Basic Departamento de Ingeniería de Sistemas y Automática Universidad de Vigo undamentos de Informática. Departamento de Ingeniería

Más detalles

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

Programación n Orientada a Objetos Sentencias Java Parte I. Ing. Julio Ernesto Carreño o Vargas MsC. Programación n Orientada a Objetos Sentencias Java Parte I Ing. Julio Ernesto Carreño o Vargas MsC. Variables y expresiones aritméticas Variables Conceptos de Memoria Una variable es un espacio en la memoria

Más detalles

Metodología y Tecnología de la Programación

Metodología y Tecnología de la Programación Metodología y Tecnología de la Programación Curso 2008/09 Tema 7 Tipos de Datos Abstractos Temario 7.1 Concepto de Tipo de Datos Abstracto 7.2 Clasificación de Tipos de Datos Abstractos 7.3 Especificación

Más detalles

QUÉ ES UNA CLASE JAVA? ATRIBUTOS (PROPIEDADES O CAMPOS), CONSTRUCTOR Y MÉTODOS. (CU00623B)

QUÉ ES UNA CLASE JAVA? ATRIBUTOS (PROPIEDADES O CAMPOS), CONSTRUCTOR Y MÉTODOS. (CU00623B) APRENDERAPROGRAMAR.COM QUÉ ES UNA CLASE JAVA? ATRIBUTOS (PROPIEDADES O CAMPOS), CONSTRUCTOR Y MÉTODOS. (CU00623B) Sección: Cursos Categoría: Curso Aprender programación Java desde cero Fecha revisión:

Más detalles

Unidad II. Fundamentos de programación en Java. Ing. José Luis Llamas Cárdenas

Unidad II. Fundamentos de programación en Java. Ing. José Luis Llamas Cárdenas Unidad II Fundamentos de programación en Java Ing. José Luis Llamas Cárdenas En java para poder escribir se emplea el objeto System.out, t pero para leer del teclado es necesario emplear System.in Et Este

Más detalles

Clase adicional 2. Estructuras básicas de control. Temas

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

Más detalles

Algoritmos de Ordenación

Algoritmos de Ordenación Algoritmos de Ordenación Pedro Corcuera Dpto. Matemática Aplicada y Ciencias de la Computación Universidad de Cantabria corcuerp@unican.es Algoritmos comunes - Ordenación Ordenación o clasificación es

Más detalles

Análisis y Diseño de Algoritmos Tablas de Hash

Análisis y Diseño de Algoritmos Tablas de Hash Análisis y Diseño de Algoritmos Tablas de Hash Guillermo Morales-Luna Arturo Díaz Pérez CONTENIDO 1. Dispersión 2. Funciones de dispersión (a) Método de división (b) Método de multiplicación 3. Direccionamiento

Más detalles

Métodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo

Métodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo TEMA 2: CONCEPTOS BÁSICOS DE ALGORÍTMICA 1. Definición de Algoritmo 1.1. Propiedades de los Algoritmos 2. Qué es un Programa? 2.1. Cómo se construye un Programa 3. Definición y uso de herramientas para

Más detalles

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

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA APUNTES DE JAVA FUNCIONAMIENTO DE UN PROGRAMA Assembler Ensamblador Ejecuta Programador Programa fuente BASIC Interprete Ejecuta C, C++, Pascal Compilador Compila Ejecuta Programa fuente Programa Objeto

Más detalles

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

Herramientas de Programación. M.C. Juan Carlos Olivares Rojas Herramientas de Programación M.C. Juan Carlos Olivares Rojas Febrero 2011 Temario Simbología Reglas para la construcción de Diagramas Pseudocódigo Temario Tipos de Datos y Expresiones Estructuras lógicas

Más detalles

Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A.

Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A. SISTEMAS INFORMÁTICOS I Junio 2003 INGENIERÍA EN INFORMÁTICA - Código Carrera 55 - Código Asignatura 077 Tipo de Examen: A NO SE PERMITE EL USO DE NINGÚN MATERIAL Tiempo: 2 horas Apellidos: Nombre: DNI:

Más detalles

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

Fundamentos de JAVA. Angel Kuri Enero, /2/2006 Fundamentos de JAVA Angel Kuri Enero, 2006 Enunciados y Expresiones Los siguientes son enunciados sencillos: int i = 1 import java.awt.font System.out.println( Esta moto es una + color + + marca); m.enginestate

Más detalles

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Algoritmos y programas. Algoritmos y Estructuras de Datos I Algoritmos y programas Algoritmos y Estructuras de Datos I Primer cuatrimestre de 2012 Departamento de Computación - FCEyN - UBA Programación funcional - clase 1 Funciones Simples - Recursión - Tipos de

Más detalles

Estructura de datos Tema 2: Tipos Abstractos de Datos (TADs)

Estructura de datos Tema 2: Tipos Abstractos de Datos (TADs) Universidad de Valladolid Departamento de informática Campus de Segovia Estructura de datos Tema 2: Tipos Abstractos de Datos (TADs) Prof. Montserrat Serrano Montero ÍNDICE Tipos de datos El tipo abstracto

Más detalles

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java Identificadores Las variables se utilizan en programación para almacenar temporalmente

Más detalles

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

UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO. UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO. TRUJILLO 1.- Resumen de Prog1 Comentarios es C++ Declaraciones de variables.

Más detalles

Conceptos a tratar. Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos

Conceptos a tratar. Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos Programación Orientada a Objetos Facultad de Informática Dep. Ingeniería del Software e Inteligencia Artificial Universidad

Más detalles

LA ESTRUCTURA DE DATOS PILA EN JAVA. CLASE STACK DEL API JAVA. EJEMPLO Y EJERCICIOS RESUELTOS. (CU00923C)

LA ESTRUCTURA DE DATOS PILA EN JAVA. CLASE STACK DEL API JAVA. EJEMPLO Y EJERCICIOS RESUELTOS. (CU00923C) APRENDERAPROGRAMAR.COM LA ESTRUCTURA DE DATOS PILA EN JAVA. CLASE STACK DEL API JAVA. EJEMPLO Y EJERCICIOS RESUELTOS. (CU00923C) Sección: Cursos Categoría: Lenguaje de programación Java nivel avanzado

Más detalles

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

2. EXPRESIONES 3. OPERADORES Y OPERANDOS 4. INDENTIFICADORES COMO LOCALIDADES DE MEMORIA CONTENIDOS: 1. TIPOS DE DATOS 2. EXPRESIONES 3. OPERADORES Y OPERANDOS 4. INDENTIICADORES COMO LOCALIDADES DE MEMORIA OBJETIO EDUCACIONAL: El alumno conocerá las reglas para cambiar fórmulas matemáticas

Más detalles

Distinguir las diferentes estructuras de repetición utilizadas en problemas con bucles: mientras, repetir mientras, para.

Distinguir las diferentes estructuras de repetición utilizadas en problemas con bucles: mientras, repetir mientras, para. ESTRUCTURAS ITERATIVAS 1 ESTRUCTURAS ITERATIVAS OBJETIVOS Aprender a resolver problemas mediante la ejecución repetida de una secuencia de proposiciones llamados bucle o estructuras repetitivas o iterativas.

Más detalles

Definición de Memoria

Definición de Memoria Arquitectura de Ordenadores Representación de Datos en Memoria Abelardo Pardo abel@it.uc3m.es Universidad Carlos III de Madrid Departamento de Ingeniería Telemática Definición de Memoria DRM-1 La memoria

Más detalles

Guía - Taller # 2 (JAVA)

Guía - Taller # 2 (JAVA) CEET - Distrito Capital Programa de Formación: ADSI 150752 TRIMESTRE VI Conocimiento de Conocimiento: Aplicar diversos estilos de Programación usando herramientas para Desarrollo Web Instructor: Ing. Espec.

Más detalles

Programcaión Básica. Secuencias de Control y Repetición. Arturo Vega González.

Programcaión Básica. Secuencias de Control y Repetición. Arturo Vega González. Programación Básica Arturo Vega González a.vega@ugto.mx Division de Ciencias e Ingenierías Universidad de Guanajuato Campus León Sesión 5 Universidad de Guanajuato, DCI, Campus León 1 / 31 Universidad

Más detalles

ANEXO XVII DE LA RESOLUCION N

ANEXO XVII DE LA RESOLUCION N Hoja 1 de 7 UNIVERSIDAD NACIONAL DE CÓRDOBA Facultad de Ciencias Exactas Físicas y Naturales República Argentina Programa de: Código: Informática Carrera: Materia común Res. Nº Plan: Puntos:3.5 Escuela:

Más detalles

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

Tema 2. El lenguaje de programación Java (Parte 1) Programación en Java Tema 2. El lenguaje de programación Java (Parte 1) Luis Rodríguez Baena Facultad de Informática Elementos del lenguaje (I) El juego de caracteres. No utiliza ASCII, sino Unicode de

Más detalles

JAVA 7 Los fundamentos del lenguaje Java

JAVA 7 Los fundamentos del lenguaje Java Presentación 1. Historia 9 1.1 Por qué Java? 9 1.2 Objetivos del diseño de Java 10 1.3 Auge de Java 11 2. Características de Java 12 2.1 El lenguaje de programación Java 12 2.1.1 Sencillo 13 2.1.2 Orientado

Más detalles

Primer Parcial Septiembre 5 de 2009

Primer Parcial Septiembre 5 de 2009 Primer Parcial Septiembre 5 de 2009 Algoritmos y Lenguajes II Reglas del juego Tal como se le dijo antes, durante este examen usted no puede pedir ABSOLUTAMENTE nada prestado a sus compañeros, ni hablar

Más detalles

Retículos y Álgebras de Boole

Retículos y Álgebras de Boole Retículos y Álgebras de Boole Laboratorio de Matemática Discreta Jesús Martínez Mateo jmartinez@fi.upm.es Práctica 1. Ordenación topológica A. Herramientas necesarias Para la práctica que vamos a realizar

Más detalles

Ejemplo, generación de #s aleatorios

Ejemplo, generación de #s aleatorios Ejemplo, generación de #s aleatorios Supón que tienes un generador de números aleatorios enteros [0,2] con distribución uniforme, y tu necesitas generar números con distribución uniforme [0,4]. Alguien

Más detalles

Programación. Tema 8: Tablas Hash. Apuntes elaborados por: Eduardo Quevedo, Aaron Asencio y Raquel López Revisado por: Javier Miranda el????

Programación. Tema 8: Tablas Hash. Apuntes elaborados por: Eduardo Quevedo, Aaron Asencio y Raquel López Revisado por: Javier Miranda el???? Programación. Tema : Tablas Hash /Mayo/ Apuntes elaborados por: Eduardo Quevedo, Aaron Asencio y Raquel López Revisado por: Javier Miranda el???? Tema : Tabla Hash Las tabla hash aparece para conseguir

Más detalles

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

Java Avanzado. Guía 1. Java Avanzado Facultad de Ingeniería. Escuela de computación. Java Avanzado. Guía 1 Java Avanzado Facultad de Ingeniería. Escuela de computación. Java Avanzado. Guía 2 Introducción Este manual ha sido elaborado para orientar al estudiante de Java Avanzado en el desarrollo

Más detalles

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

Caracteres y Cadenas Conversión de Datos Funciones y procedimientos Archivos cabecera. Fundamentos de programación 1 Caracteres y Cadenas Conversión de Datos Funciones y procedimientos Archivos cabecera Fundamentos de programación Agenda Caracteres y Cadenas Conversión de Datos Introducción a las funciones y procedimientos

Más detalles

Tema 2. Técnicas básicas de POO. Técnicas de Programación - Curso 2007/08

Tema 2. Técnicas básicas de POO. Técnicas de Programación - Curso 2007/08 Tema 2 Técnicas básicas de POO Técnicas de Programación - Curso 2007/08 Contenido Principios de POO Encapsulación Herencia Polimorfismo Ejemplos Técnicas básicas Delegación Uso de interfaces Interfaces

Más detalles

- Compilar y ejecutar programas en Java - Estructura básica de una clase - El comando javac - El comando java - Introducción al IDE de desarrollo

- Compilar y ejecutar programas en Java - Estructura básica de una clase - El comando javac - El comando java - Introducción al IDE de desarrollo - Introdución a Java - Breve historia de Java - Características del lenguaje Java - Estructura del JDK 1.6 - Documentación del API (JavaDoc) - Instalar y configurar el ambiente de desarrollo - La variable

Más detalles

Lenguaje de programación con JAVA

Lenguaje de programación con JAVA Pág. N. 1 Lenguaje de programación con JAVA Familia: Editorial: Autor: Tecnología de la información y computación Macro Eric Gustavo Coronel Castillo ISBN: 978-612-304-288-2 N. de páginas: 360 Edición:

Más detalles

Aplicaciones de Escritorio

Aplicaciones de Escritorio Aplicaciones de Escritorio Introducción n a la Programación Orientada a Objetos con Java Disertantes: Ing. Rasjido, Jose. AdeS Montenegro, Cristian. Agenda Clases y Paquetes. Clases y Paquetes. Modificadores

Más detalles

Java para programadores

Java para programadores Java para programadores Java y Servicios Web I Master en Ingeniería Matemática Manuel Montenegro Dpto. Sistemas Informáticos y Computación Desp. 467 (Mat) montenegro@fdi.ucm.es Contenidos Variables. Tipos

Más detalles

Programación. Test Autoevaluación Tema 3

Programación. Test Autoevaluación Tema 3 Programación Test Autoevaluación Tema 3 Autores: M. Paz Sesmero Lorente Paula de Toledo Heras Fco. Javier Ordoñez Morales Juan Gómez Romero José A. Iglesias Martínez José Luis Mira Peidro SOLUCIONES 1.

Más detalles

Aprendizaje activo: flujos

Aprendizaje activo: flujos Clase 29 Aprendizaje activo: flujos La aplicación Logger 2 1 Objetivos En el marco de trabajo de la aplicación Logger, analizaremos tres formas de leer y escribir datos utilizando flujos de Java: 1. como

Más detalles

la solución a una ecuación cuadrática solicitando al usuario los términos de dicha ecuación.

la solución a una ecuación cuadrática solicitando al usuario los términos de dicha ecuación. ALGORITMOS SECUENCIALES: La estructura secuencial es aquella en la que una acción (instrucción) sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente

Más detalles

Unidad II: Análisis semántico

Unidad II: Análisis semántico Unidad II: Análisis semántico Se compone de un conjunto de rutinas independientes, llamadas por los analizadores morfológico y sintáctico. El análisis semántico utiliza como entrada el árbol sintáctico

Más detalles

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

Programación de Computadores 4 Iteraciones y Decisiones. Prof. Javier Cañas. Universidad Técnica Federico Santa María Departamento de Informática Programación de Computadores 4 Iteraciones y Decisiones Prof. Javier Cañas Universidad Técnica Federico Santa María Departamento de Informática Contenido 1 Introducción 2 Operadores Relacionales y Lógicos

Más detalles

Lenguajes de Programación

Lenguajes de Programación Lenguajes de Programación Dr. Carlos Artemio Coello Coello Tarea No. 1 12 de enero de 2015 Tomaremos el pseudo-código proporcionado en el libro de texto, cuyas instrucciones guardan el formato ilustrado

Más detalles

Objetivo de aprendizaje del tema

Objetivo de aprendizaje del tema Computación II Tema 3. Identificadores, palabras clave y tipos de datos Objetivo de aprendizaje del tema Al finalizar el tema serás capaz de: Distinguir i entre modificadores d válidos y no válidos. Enumerar

Más detalles