Especificación de programas. Algoritmos y Estructuras de Datos I. Correctitud de ciclos

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

Download "Especificación de programas. Algoritmos y Estructuras de Datos I. Correctitud de ciclos"

Transcripción

1 Especificación de programas Algoritmos y Estructuras de Datos I Segundo cuatrimestre de 2014 Departamento de Computación - FCEyN - UBA Simulacro Coloquio Final - clase 1 Sean dos programas, cada uno recibe un único argumento de entrada. Supongamos que ambos son correctos para la misma especificación. Ambos programas dan el mismo valor para cada posible valor de entrada? No, porque la especificación puede admitir varios valores posibles. Ejemplo: Q : res > 0. Además, los programas pueden retoornar valores distintos para entradas que no satisfacen la precondición. 1 2 Sea (P, Q) la especificación de un problema, donde P es la precondición y Q es la postcondición. Sea foo un programa correcto respecto de (P, Q). Indicar verdadero o falso y justificar: 1. foo es correcto respecto de (P R, Q). No necesariamente. Ejemplo: foo es el problema de dividir enteros, P: divisor distinto de 0, R: divisor igual a foo es correcto respecto de (P, Q S). No necesariamente. 3. foo es correcto respecto de (P, Q S). Sí, porque Q fuerza la verdad de Q S, para todo S. 4. foo es correcto respecto de (P, P). No necesariamente. Supongamos foo modifica un argumento de entrada negativo en el valor absoluto del mismo. Entonces foo es correcto repecto de modifica x P : pre(x) < 0 Q : x = abs(pre(x)). pero foo no es correcto respecto de (P, P). 5. foo es correcto respecto de (Q, P). No necesariamente. 6. foo es correcto respecto de (Q, Q). No necesariamente. 3 Correctitud de ciclos Enunciar el teorema del invariante con la siguiente modificación: consignar que la función variante sea creciente en cada iteración del ciclo. Teorema del Invariante Sea while (B) cuerpo un ciclo con guarda B, precondición P C y poscondición Q C. Sea I un predicado booleano, v una expresión variante, c una cota, y sean los estados e1 y e2 así: while (B) //estado e1 cuerpo //estado e2 Si valen: 1. P C I 2. (I B) Q C 3. el invariante se preserva en la ejecución del cuerpo, i.e. si I B vale en el estado e1 entonces I vale en el estado e2 4. v es estrictamente creciente, i.e. v@e2 > v@e1 5. (I v c) B entonces para cualquier valor de las variables del programa que haga verdadera P C, el ciclo termina y hace verdadera Q C, es decir, el ciclo es correcto para su especificación (P C, Q C ). 4

2 Algoritmos con secuencias Sea foo(x, y) un programa, y sea (x 0, y 0 ) una pareja de argumentos de entrada. Supongamos que la ejecución de foo(x 0, y 0 ), pasa dos veces por el mismo punto del programa con el mismo estado. Podemos concluir que la ejecución de foo(x 0, y 0 ) no termina? Si foo(x 0, y 0 ) pasa dos veces por el mismo estado E es porque tiene un ciclo. El estado E se transformó, después de una o más instrucciones, nuevamanete en el estado E. Dado que la ejecución es determinística, cada vez que pasa por E volverá a pasar por E. Luego, la ejecución de foo(x 0, y 0 ) no termina. Dar un programa que resuelve este problema. problema lcp(a : [[Char]]) = res : [Z] requiere long(a) >= 1 asegura res == [longitud prefijo comun(a[i], a[i + 1]) i [0..long(a) 2]] aux longitud prefijo comun(s, t) = máx[i + 1 i [0.. mín[long(s), long(t)]], s[0..i] == t[0..i]] donde max y min son las funciones que seleccionan, respectivamente, los valores máximos y mínimos de una lista de enteros. 5 6 Búsqueda lineal Búsqueda Binaria José dejó estacionado su auto con patente AED 001 dentro de un estacionamiento para 500 autos, con cocheras numeradas de 0 a 499, pero solamente se acuerda que el número de cochera terminaba en 5. La información de qué auto hay en cada cochera está guardada en arreglo de String. Las cocheras vacías tienen asociada la patente con string vacío. Las cocheras ocupadas tienen asociada la patente del auto estacionado. Especificar el problema de encontrar el número de cochera donde José dejó su auto, y dar un programa que lo resuelva correctamente. Considerar un arreglo de de String. Hacer una búsqueda lineal solamente en las posiciones que terminan en 5. int cochera(string a[], int n) int i=5; while (i<n && a[i].compare("aed001")!=0) i = i+10; return i; Dada la siguiente especificación. problema maximo(a : [T], n : Int) = res : Int requiere a == n n 3; requiere ( j [1..n 1))(ordenadoAsc(a[0..j]) ordenadodes(a[j..n)); asegura ordenadoasc(a[0..res]) ordenadodes(a[res..n)); aux ordenadoasc(a) == ( i [0.. a 1))(a[i] < a[i + 1]); aux ordenadodes(a) == ( i [0.. a 1))(a[i] > a[i + 1]); Completar el siguiente programa para que sea una adaptación del algoritmo de búsqueda binaria para resolver el problema maximo. 7 8

3 Ordenamiento int maximo(tipot a[], int n) int i=0, d=n-1; while (.. ) int medio= (i+d)/2; if (..) i=m; else d= m; return(..); Consideremos que ya está definida en el lenguaje de especificación la siguiente relación de orden entre números enteros que dice x antesoigualque y si la suma de los dígitos de x es menor o igual que la suma de los dígitos de y. Por ejemplo, 1 antesoigualque 2; 11 antesoigualque 2; 2 antesoigualque 11; 11 antesoigualque 3. Consideremos el problema: problema sortantes(a : [Int], n : Int) requiere pre(a) = n; modifica a; asegura mismos(a, pre(a)); asegura ( k [0.. a 1))a[k] antesoigualque a[k + 1]; Por ejemplo, sortantes([109, 0, 9, 38, 49]) transforma el arreglo en [0, 9, 109, 38, 49]. Mientras que sortantes([109, 82]) transforma el arreglo en [109, 82] o en [82, 109], cualquiera de las dos es una solución aceptable para ese problema. Escribir el programa sortantes que resuelve el problema adaptando Selection Sort o Upsort. Disponen de una función antesoigualque, en C++, que toma dos enteros y retorna el valor booleano correspondiente a la relación de orden descripta Combinado void upsort (int a[], int n) int m, actual = n-1; while (actual > 0) m = maxposa(a,0,actual); swap(a, m, actual); actual--; int maxposa(const int a[], int desde, int hasta) int mp = desde, i = desde; while (i < hasta) i++; if ( not( antesoigualque(a[i], a[mp]))) mp = i; return mp; Dar un programa que resuleve el problema. problema cuentaelementos Comunes(a : [T ], n : Int, b : [T ], m : Int) = res : Int requiere a == n requiere b == m requiere ordenado(a) requiere ordenado(b) asegura res == [mín(cuenta(a, x), cuenta(b, x)) x [a 0..a n 1 ]] aux ordenado(b : [Int]) = k [0.. b 1)b k b k+1 aux cuenta(a, x) == [y y a, y == x] aux min(u, v) = β(u v) u + β(u > v) v El programa es una pequeña variante del merge. Si en el programa usamos las variables enteras, i,j para recorrer los arreglos a, b de izquierda a derecha, la función variante v = n + m (i + j), cota

4 Invariante de representación y Abstracción Invariante de representación y Abstracción Dadas la especificación de un tipo compuesto y un estructura de datos para su implementación, existe una única elección para InvRep y Abs? No! Por ejemplo? El tipo compuesto conjunto implementado sobre una secuencia (secuencia con o sin repetidos, ordenado o no) La elección de InvRep y Abs, influencia la implementación de las operaciones del tipo? Si Cómo? Considerar la operación unión de conjuntos para los casos secuencia con repetidos vs secuencias sin repetidos Dada la siguiente especificación Tipo T problema p(t: T) modifica t; problema q(t: T) asegura Q q; Y el siguiente invariante de representación InvRep(x): x.a > x.b Es correcta la siguiente demostración? void T::p() swap(this -> a,this -> b); this -> q(); //vale Q q No!!! Las operaciones públicas asumen que vale invrep Dado el siguiente bloque de código, nota algún problema en la administración de la int* pint = new int; *pint = 5; pint = new int; *pint = 3; delete pint; Si!! Hay pérdida de memoria Dado el siguiente bloque de código, hay algún problema en la administración de la int* pint = new int; *pint = 5; delete pint; *pint = 3; Si!! Hay un acceso a memoria liberada (aunque el programa tal vez funcione) 15 16

5 Dado el siguiente bloque de código, nota algún problema en la administración de la int* pint1 = new int; int* pint2 = pint1; *pint1 = 3; *pint2 = 5; delete pint1; delete pint2; Si!! Se intenta liberar dos veces la misma posición de memoria Considerar la siguiente implementación para una lista enlazada circular. struct linklist int valor; linklist *next; ; class link linklist *list; Dar una implementación para la operación de agregar al inicio

Esquema. Condicionales. Ejemplo de condicional. Demostración. P { if (B) uno else dos } Q. P { while (B) cuerpo } Q

Esquema. Condicionales. Ejemplo de condicional. Demostración. P { if (B) uno else dos } Q. P { while (B) cuerpo } Q Esquema Teórica Imperativo 2 Estructuras de control Instrucción de asignación P{v=e Q // estado 1; vale P: true v:=e; // vale Q: v == e@1 && para toda vi: vi == vi@1 Instrucciones de Control de Flujo P

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

Estructuras de Datos y de la Información Ingeniería Técnica en Informática de Gestión. Curso 2007/2008 Ejercicios del Tema 2

Estructuras de Datos y de la Información Ingeniería Técnica en Informática de Gestión. Curso 2007/2008 Ejercicios del Tema 2 Estructuras de Datos y de la Información Ingeniería Técnica en Informática de Gestión. Curso 2007/2008 Ejercicios del Tema 2 Diseño de algoritmos recursivos 1. Dado un vector de enteros de longitud N,

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

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

Prueba N o 1. Programación II

Prueba N o 1. Programación II UNIVERSIDAD ANDRÉS BELLO 1 Prueba N o 1 Programación II Profesores: José Luis Allende y Carlos Beyzaga. Fecha: 10 de Septiembre de 2013 Nombre: Nota: Instrucciones: Coloque su nombre a todas las hojas.

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

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

Árboles balanceados (AVL) Tablas de dispersión (Hash) Colas de prioridad (Heap)

Árboles balanceados (AVL) Tablas de dispersión (Hash) Colas de prioridad (Heap) Práctico 4 Árboles balanceados (AVL) Tablas de dispersión (Hash) Colas de prioridad (Heap) Clasificación de ejercicios: (I) Imprescindibles (R) Recomendados (C) Complementarios Árboles balanceados (AVL)

Más detalles

TAD CONJUNTOS Y MULTICONJUNTOS

TAD CONJUNTOS Y MULTICONJUNTOS TAD CONJUNTOS Y MULTICONJUNTOS INTRODUCCIÓN Qué es un conjunto? Un conjunto en matemática es una colección de objetos. Los objetos no mantienen ninguna relación aparente entre ellos y tampoco están obligados

Más detalles

Ejercicios Tema 6. Funciones

Ejercicios Tema 6. Funciones Ejercicios Tema 6. Funciones 1. Programa que calcule el cuadrado de todos los números comprendidos entre dos dados. Usar una función a la que se le pasa como parámetro un valor y retorna su cuadrado. 2.

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

Elección de estructuras

Elección de estructuras Elección de estructuras Algoritmos y Estructuras de Datos 2 Departamento de Computación, Facultad de Ciencias Exactas y Naturales, Universidad de Buenos Aires 10 de octubre de 2014 Repaso: Qué es elegir

Más detalles

Clases y Objetos. Informática II Ingeniería Electrónica

Clases y Objetos. Informática II Ingeniería Electrónica Clases y Objetos Informática II Ingeniería Electrónica Los Tipos de Datos Hasta ahora, en un programa podemos usar para representar variables a: Tipos fundamentales : enteros (int), caracteres (char),

Más detalles

Tema 4: Corrección y Robustez en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

Tema 4: Corrección y Robustez en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Tema 4: Corrección y Robustez en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Contenido Asertos en C++ Mecanismo de excepciones: Declaración de excepciones Lanzar excepciones

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

Problemas de Recursividad

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

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

Examen Principios de Programación Febrero 2012

Examen Principios de Programación Febrero 2012 Por favor siga las siguientes indicaciones: Escriba con lápiz. Escriba su nombre y número de documento en todas las hojas que entregue. Numere las hojas e indique el total de hojas en la primera de ellas.

Más detalles

ALGEBRA LINEAL - 2do Cuatrimestre 2014 Práctica 2 - Espacios vectoriales

ALGEBRA LINEAL - 2do Cuatrimestre 2014 Práctica 2 - Espacios vectoriales Departamento de Matemática - Facultad de Ciencias Exactas y Naturales - UBA 1 ALGEBRA LINEAL - 2do Cuatrimestre 2014 Práctica 2 - Espacios vectoriales Espacios vectoriales 1. Sea V un espacio vectorial

Más detalles

Sorting++ Herman Schinca. Clase 21. 10 de Junio de 2011

Sorting++ Herman Schinca. Clase 21. 10 de Junio de 2011 Sorting++ Herman Schinca Clase 21 10 de Junio de 2011 Recordando Ya vimos 3 algoritmos de ordenamiento basados en la comparación entre elementos: Selection, Insertion y Bubble. Los 3 en peor caso (cuando

Más detalles

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

Estructuras de Datos Declaraciones Tipos de Datos

Estructuras de Datos Declaraciones Tipos de Datos Departamento de Informática Universidad Técnica Federico Santa María Estructuras de Datos Declaraciones Tipos de Datos Temas: 2-3-4 IWI-131, paralelo 01 Profesor: Teddy Alfaro O. Lenguaje de Programación

Más detalles

Tema: Estructuras de Selección en C#.

Tema: Estructuras de Selección en C#. Programación I, Guía 4 1 Tema: Estructuras de Selección en C#. Facultad: Ingeniería Escuela: Ingeniería en Computación Asignatura: Programación I Objetivos Utilizar las instrucciones de selección if e

Más detalles

PRÁCTICA ALGORÍTMICA: EJERCICIOS PROPUESTOS

PRÁCTICA ALGORÍTMICA: EJERCICIOS PROPUESTOS Página 1 de 7 PRÁCTICA ALGORÍTMICA: EJERCICIOS PROPUESTOS EJERCICIOS DE ESTRUCTURA REPETITIVA 1. (Problema 4) Escriba un algoritmo que lea del teclado un número entero y que compruebe si es menor que 5.

Más detalles

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

Estructura de Datos [Tipos de datos concretos y tipos de datos abstractos] Estructura de Datos [Tipos de datos concretos y tipos de datos abstractos] M. en C. Sergio Luis Pérez Pérez UAM CUAJIMALPA, MÉXICO, D. F. Trimestre 14-O Sergio Luis Pérez (UAM CUAJIMALPA) Curso de Estructura

Más detalles

ORDENAMIENTO Y BÚSQUEDA EN ARREGLOS

ORDENAMIENTO Y BÚSQUEDA EN ARREGLOS 1 ORDENAMIENTO Y BÚSQUEDA EN ARREGLOS Corina Flores Villarroel ORDENAMIENTO EN ARREGLOS Y COLECCIONES Una de las tareas más comunes a la hora de procesar datos es la clasificación u ordenación de los datos.

Más detalles

ESTRUCTURAS DE CONTROL

ESTRUCTURAS DE CONTROL ESTRUCTURAS DE CONTROL En lenguajes de programación, las estructuras de control permiten modificar el flujo de ejecución de las instrucciones de un programa. Con las estructuras de control se puede: De

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

Lección 2 Introducción al lenguaje C

Lección 2 Introducción al lenguaje C Lección Introducción al lenguaje C Decimal Binario Hexadecimal A B C D E F Octal Equivalencia entre decimal, binario, hexadecimal y octal. Código ASCII (American Standard Code for Information Interchange)

Más detalles

Construcciones del Lenguaje Java

Construcciones del Lenguaje Java Construcciones del Lenguaje Java Autor: Juan Alberto López Cavallotti Versión de Java: 5 / 6 Comentarios Comentario de Línea Comentario Multilínea //Esto es un comentario. /* Esto comenta varias lineas.

Más detalles

Palabras reservadas de C++ y C. Una palabra reservada no puede declararse como un identificador, esto haría un conflicto entre conectores y funciones.

Palabras reservadas de C++ y C. Una palabra reservada no puede declararse como un identificador, esto haría un conflicto entre conectores y funciones. Palabras reservadas de C++ y C Una palabra reservada no puede declararse como un identificador, esto haría un conflicto entre conectores y funciones. A continuación se muestra el link del listado de palabras

Más detalles

Algoritmos de Ordenamiento

Algoritmos de Ordenamiento Algoritmos de Ordenamiento mat-151 Alonso Ramírez Manzanares Computación y Algoritmos 12.04 Algoritmos de ordenamiento Entrada: secuencia de números. Salida: permutación

Más detalles

Introducción a la Programación Orientada a Objetos DCIC - UNS 2015

Introducción a la Programación Orientada a Objetos DCIC - UNS 2015 PRACTICO Nº 7 En todos los problemas considere la importancia de interpretar correctamente los enunciados, en particular cuando incluye notación simbólica. En todas las soluciones considere la importancia

Más detalles

Introducción al lenguaje C

Introducción al lenguaje C Programación 2 Profesorado de Informática CeRP del Suroeste, Uruguay 29 de marzo de 2016 Estructuras de control IV Iteración Sentencia for: for (inicio; condicion; paso) cuerpo for (int i = 0; i < 10;

Más detalles

Introducción rápida a la programación (estructurada ) con C++

Introducción rápida a la programación (estructurada ) con C++ Introducción rápida a la programación (estructurada ) con C++ A B No A? Si B A Los Bloques pueden ser una línea de código o un modulo (función o subrutina) que pueden estar contenido en otro archivo de

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

Tema 3.- Predicados y sentencias condicionales

Tema 3.- Predicados y sentencias condicionales UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR DE CÓRDOBA DEPARTAMENTO DE INFORMÁTICA Y ANÁLISIS NUMÉRICO PROGRAMACIÓN DECLARATIVA INGENIERÍA INFORMÁTICA ESPECIALIDAD DE COMPUTACIÓN CUARTO CURSO PRIMER

Más detalles

El programa que permite el manejo de la base de datos tiene la siguiente funcionalidad:

El programa que permite el manejo de la base de datos tiene la siguiente funcionalidad: El TAD Diccionario Cuando se usa un conjunto en el diseño de un algoritmo podría no ser necesario contar con operaciones de unión o intersección. A menudo lo que se necesita es simplemente manipular un

Más detalles

Algoritmos para determinar Caminos Mínimos en Grafos

Algoritmos para determinar Caminos Mínimos en Grafos Problemas de camino mínimo Algoritmos para determinar Caminos Mínimos en Grafos Algoritmos y Estructuras de Datos III DC, FCEN, UBA, C 202 Problemas de camino mínimo Dado un grafo orientado G = (V, E)

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

Compiladores e Intérpretes Proyecto N 1 Sintaxis de MiniJava Segundo Cuatrimestre de 2015

Compiladores e Intérpretes Proyecto N 1 Sintaxis de MiniJava Segundo Cuatrimestre de 2015 Departamento de Cs. e Ingeniería de la Computación Universidad Nacional del Sur Compiladores e Intérpretes Proyecto N 1 Sintaxis de MiniJava Segundo Cuatrimestre de 2015 1. Introducción Este documento

Más detalles

324 MR Versión 1 Prueba Integral 1/3 Semana 10 Lapso 2015-2

324 MR Versión 1 Prueba Integral 1/3 Semana 10 Lapso 2015-2 324 MR Versión 1 Prueba Integral 1/3 UNIVERSIDAD NACIONAL ABIERTA VICERRECTORADO ACADÉMICO ÁREA INGENIERÍA MODELO DE RESPUESTA ASIGNATURA: Computación II CÓDIGO: 324 MOMENTO: Prueba Integral FECHA DE APLICACIÓN:

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

Práctica IV: Métodos de Newton-Raphson y de la secante, para encontrar las raíces de una función.

Práctica IV: Métodos de Newton-Raphson y de la secante, para encontrar las raíces de una función. Práctica IV: Métodos de Newton-Raphson y de la secante, para encontrar las raíces de una función. Se suele llamar método de Newton-Raphson al método de Newton cuando se utiliza para calcular los ceros

Más detalles

Tipos de datos en S. Lógica y Computabilidad. Codificación de variables y etiquetas de S. Codificación de programas en S

Tipos de datos en S. Lógica y Computabilidad. Codificación de variables y etiquetas de S. Codificación de programas en S Tipos de datos en S Lógica y Computabilidad Verano 2011 Departamento de Computación - FCEyN - UBA Computabilidad - clase 5 Codificación de programas, Halting problem, diagonalización, tesis de Church,

Más detalles

1. Sobrecarga de operadores. 2. Métodos operadores unarios Operador de incremento (prefijo)

1. Sobrecarga de operadores. 2. Métodos operadores unarios Operador de incremento (prefijo) . Sobrecarga de operadores. unarios Operador de incremento (prefijo). Devolución de objetos en los métodos. Retorno por referencia Sobrecarga de operadores Los operadores aceptan uno o varios operandos

Más detalles

(1)Factores, Múltiplos y Divisores. (2) Números compuestos y primos

(1)Factores, Múltiplos y Divisores. (2) Números compuestos y primos 4.1-4.2 (1)Factores, Múltiplos y Divisores (2) Números compuestos y primos Factorización Cuando escribimos 12 = 6 x 2 decimos que 6 x 2 corresponde a una factorización de 12. Existen otras factorizaciones

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

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

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

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

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

2.2 Nombres, Ligado y Ámbito

2.2 Nombres, Ligado y Ámbito 2.2 Nombres, Ligado y Ámbito Ligado estático y dinámico, reglas de ámbito y prueba de tipos. Conceptos Nombres e Identificadores Variables Tipos Ámbito Constantes Nombres Identificador que designa en el

Más detalles

Taller de Resolución de Problemas Computacionales

Taller de Resolución de Problemas Computacionales Taller de Resolución de Problemas Computacionales Clase1: 27/9 Presentación: Equipo de Trabajo Encuentros Certificación del Taller: Por Asistencia Por Aprobación Sitio Web. Etapas en la Resolución de Problemas

Más detalles

MODELOS DE COMPUTACION I Preguntas Tipo Test. 1. El lema de bombeo puede usarse para demostrar que un lenguaje determinado es regular.

MODELOS DE COMPUTACION I Preguntas Tipo Test. 1. El lema de bombeo puede usarse para demostrar que un lenguaje determinado es regular. MODELOS DE COMPUTACION I Preguntas Tipo Test Indicar si son verdaderas o falsas las siguientes afirmaciones: 1. El lema de bombeo puede usarse para demostrar que un lenguaje determinado es regular. 2.

Más detalles

como les va con las practicas?

como les va con las practicas? como les va con las practicas? Problemas NP-completos y Estructuras de datos básicas (representación de datos) mat-151 1 Una maquina de Turing Aceptation state Una maquina de Turing Maquina de Turing Determinística,

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

Pauta control 2 CC10B

Pauta control 2 CC10B Pauta control 2 CC10B 2007-01 Fórmula para el cálculo de la nota: Nota pts =1 pts 7 Alcance: las soluciones presentadas en esta pauta son sólo referenciales. Resumen de puntaje P1: 12.0. Jerarquía de clases

Más detalles

A l g o r i t m o y E s t r u c t u r a d e D a t o s Ing. en Sistemas de Información - 1º año -

A l g o r i t m o y E s t r u c t u r a d e D a t o s Ing. en Sistemas de Información - 1º año - Trabajo práctico Nº 7 (Resolución de problemas Estructura: pila y cola). Realiza el programa de cada situación problemática. 1- Cargar en una pila n letras del abecedario.(n debe ser menor a 30) 2- En

Más detalles

Funciones Definición de función

Funciones Definición de función Funciones Definición de función Una función es un bloque de código que realiza una tarea específica. Una función es una porción de programa, identificable mediante un nombre, que realiza determinadas tareas

Más detalles

El lenguaje C. 1. Identificadores, constantes y variables

El lenguaje C. 1. Identificadores, constantes y variables Principios de Programación El lenguaje C 1. Identificadores, constantes y variables 1.1. Conceptos de memoria Los nombres de variable como x, y, suma corresponden a localizaciones o posiciones en la memoria

Más detalles

TECNICO SUPERIOR EN INFORMÁTICA EMPRESARIAL MÓDULO INTRUCCIONAL

TECNICO SUPERIOR EN INFORMÁTICA EMPRESARIAL MÓDULO INTRUCCIONAL 1 TECNICO SUPERIOR EN INFORMÁTICA EMPRESARIAL MÓDULO INTRUCCIONAL TECNOLOGÍA DE LA COMPUTADORA FACILITADOR: PARTICIPANTE: DAVID, CHIRIQUÍ 2015 2 Qué es un programa? Un programa informático es un conjunto

Más detalles

Solución - práctico 10

Solución - práctico 10 Solución - práctico 10 Complejidad Ejercicio 1 a) Una implementación del algoritmo es la siguiente: /* Procedimiento que se encarga de realizar la unión de los dos conjuntos * ordenados der1 e izq1 son

Más detalles

#include <stdio.h> float cubica(float numero) { float cubica; cubica = numero * numero * numero; return cubica; }

#include <stdio.h> float cubica(float numero) { float cubica; cubica = numero * numero * numero; return cubica; } /*1. Crear una función que calcule el cubo de un número real (float). El resultado deberá ser otro número real. Probar esta función para calcular el cubo de 3.2 y el de 5. */ float cubica(float numero)

Más detalles

APUNTADORES. Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable.

APUNTADORES. Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. APUNTADORES Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. No hay que confundir una dirección de memoria con el contenido

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

INTRODUCCIÓN. Estructura de Datos Tipos Abstractos de Datos (TAD S) Profs. Lorna Figueroa M. Mauricio Solar F. UTFSM 1 / 2008

INTRODUCCIÓN. Estructura de Datos Tipos Abstractos de Datos (TAD S) Profs. Lorna Figueroa M. Mauricio Solar F. UTFSM 1 / 2008 INTRODUCCIÓN Estructura de Datos Tipos Abstractos de Datos (TAD S) Para poder obtener un programa que resuelva un problema dado, son necesarios varios pasos : La formulación y especificación del problema

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

UNIVERSIDAD NACIONAL DE SALTA Sede Regional Orán AÑO: 2013 Carreras: TIG - TUP

UNIVERSIDAD NACIONAL DE SALTA Sede Regional Orán AÑO: 2013 Carreras: TIG - TUP TRABAJO PRÁCTICO N 4: Modularidad Ejercicio 1: Dados los siguientes prototipos de módulos, explicar cada elemento que los conforman. a) int suma(int a, int b); b) double area(double base, double altura);

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

Clase adicional 9. Listas enlazadas. Temas. Listas enlazadas Árboles Problemas de la clase adicional Ejercicios de diseño

Clase adicional 9. Listas enlazadas. Temas. Listas enlazadas Árboles Problemas de la clase adicional Ejercicios de diseño Clase adicional 9 Temas Listas enlazadas Árboles Problemas de la clase adicional Ejercicios de diseño Listas enlazadas Previamente en este curso, ya habrá trabajado con dos de las estructuras de datos

Más detalles

Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales

Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales UNA / AREA TRANSDEPARTAMENTAL DE ARTES MULTIMEDIALES Licenciatura en Artes Multimediales Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales JavaScript Algoritmo

Más detalles

ESTIMACIÓN DE TIEMPO Y COSTO DE PRODUCTOS SOFTWARE

ESTIMACIÓN DE TIEMPO Y COSTO DE PRODUCTOS SOFTWARE Análisis y costo de algoritmos Algoritmos Un algoritmo es un conjunto de pasos claramente definidos que a partir de un cierta entrada (input) produce una determinada salida (output) Algoritmos y programas

Más detalles

Introducción Supongamos un subconjunto de n elementos X = {e 1,,e n de un conjunto referencial Y, X Y. Dentro de Y se define una relación de orden tot

Introducción Supongamos un subconjunto de n elementos X = {e 1,,e n de un conjunto referencial Y, X Y. Dentro de Y se define una relación de orden tot Algoritmos de ordenación Análisis y Diseño de Algoritmos Algoritmos de ordenación Algoritmos básicos: Θ(n 2 ) Ordenación por inserción Ordenación por selección Ordenación por intercambio directo (burbuja)

Más detalles

Profesorado de Nivel Medio y Superior en Biología Matemática - 1º Cuatrimestre Año 2013 FUNCIÓN CUADRÁTICA

Profesorado de Nivel Medio y Superior en Biología Matemática - 1º Cuatrimestre Año 2013 FUNCIÓN CUADRÁTICA Matemática - º Cuatrimestre Año 0 FUNCIÓN CUADRÁTICA Hemos definido anteriormente la función lineal como una función f: R R de la forma f()a+b con a R y b R, que se representa en el plano mediante una

Más detalles

El método main de la clase PruebaArbol, empieza creando una instancia de un objeto Árbol vacío y asigna su referencia a la variable árbol

El método main de la clase PruebaArbol, empieza creando una instancia de un objeto Árbol vacío y asigna su referencia a la variable árbol Árboles Las listas enlazadas, pilas y colas son estructuras de datos lineales (es decir, secuencias). Un árbol es una estructura de datos bidimensional no lineal, con propiedades especiales. Los nodos

Más detalles

Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 4: Ordenación. Prof. Montserrat Serrano Montero

Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 4: Ordenación. Prof. Montserrat Serrano Montero Universidad de Valladolid Departamento de informática Campus de Segovia Estructura de datos Tema 4: Ordenación Prof. Montserrat Serrano Montero ÍNDICE Conceptos básicos Elección de un método Métodos directos

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

Tema 2: Representación de problemas como espacios de estados

Tema 2: Representación de problemas como espacios de estados Tema 2: Representación de problemas como espacios de estados José Luis Ruiz Reina José Antonio Alonso Franciso J. Martín Mateos Departamento de Ciencias de la Computación e Inteligencia Artificial Universidad

Más detalles

Orden en la sala! Herman Schinca. Clase de Mayo de 2011

Orden en la sala! Herman Schinca. Clase de Mayo de 2011 Orden en la sala! Herman Schinca Clase 17 24 de Mayo de 2011 Todos los lenguajes todos Hoy veremos algoritmos. Y eso qué es? Son independientes del lenguaje en que se implementen. Son independientes de

Más detalles

VARIABLES, CONSTANTES Y EXPRESIONES ASIGNACIÓN. TIPOS ELEMENTALES. PRECEDENCIA DE LOS ESTRUCTURAS DE CONTROL. CONDICIONAL E

VARIABLES, CONSTANTES Y EXPRESIONES ASIGNACIÓN. TIPOS ELEMENTALES. PRECEDENCIA DE LOS ESTRUCTURAS DE CONTROL. CONDICIONAL E Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código independiente de la arquitectura de la computadora

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

Algoritmo de Euclides

Algoritmo de Euclides Algoritmo de Euclides Melanie Sclar Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires AED III Melanie Sclar (UBA) Algoritmo de Euclides AED III 1 / 21 Ejercicio 2.8 de la práctica Ejercicio

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

7.1 Consideraciones. Considere la búsqueda de un libro en una biblioteca. Considere la búsqueda de un nombre en el directorio telefónico.

7.1 Consideraciones. Considere la búsqueda de un libro en una biblioteca. Considere la búsqueda de un nombre en el directorio telefónico. 86 Capítulo 7. ORDENAMIENTO. 7.1 Consideraciones. Considere la búsqueda de un libro en una biblioteca. Considere la búsqueda de un nombre en el directorio telefónico. Si los elementos a ordenar son compuestos

Más detalles

Espacios Vectoriales

Espacios Vectoriales Espacios Vectoriales Espacios Vectoriales Verónica Briceño V. noviembre 2013 Verónica Briceño V. () Espacios Vectoriales noviembre 2013 1 / 47 En esta Presentación... En esta Presentación veremos: Espacios

Más detalles

Máquinas de Turing IIC3242. IIC3242 Máquinas de Turing 1 / 42

Máquinas de Turing IIC3242. IIC3242 Máquinas de Turing 1 / 42 Máquinas de Turing IIC3242 IIC3242 Máquinas de Turing 1 / 42 Complejidad Computacional Objetivo: Medir la complejidad computacional de un problema. Vale decir: Medir la cantidad de recursos computacionales

Más detalles

Universidad Autónoma del Estado de México 2016, Año del 60 Aniversario de la Universidad Autónoma del Estado de México

Universidad Autónoma del Estado de México 2016, Año del 60 Aniversario de la Universidad Autónoma del Estado de México Universidad Autónoma del Estado de México 2016, Año del 60 Aniversario de la Universidad Autónoma del Estado de México Unidad Académica Profesional Tianguistenco Ingeniería de Software Estructura de Datos

Más detalles

259. El número de combinaciones de m objetos entre un conjunto de n, denotado por n, para n 1 y 0 m n, se puede definir recursivamente por: m

259. El número de combinaciones de m objetos entre un conjunto de n, denotado por n, para n 1 y 0 m n, se puede definir recursivamente por: m 258. Aplicar el algoritmo de programación dinámica para el problema del cambio de monedas sobre el siguiente ejemplo: n = 3, P = 9, c = (1, 3, 4). Qué ocurre si multiplicamos P y c por un valor constante,

Más detalles

Estructura de Datos. Árboles Binarios de Búsqueda ABB. Primer Semestre, 2010

Estructura de Datos. Árboles Binarios de Búsqueda ABB. Primer Semestre, 2010 Estructura de Datos Árboles Binarios de Búsqueda ABB Prof.: Mauricio Solar Prof.: Lorna Figueroa Primer Semestre, 20 1 Arboles de Búsqueda Binaria El árbol binario de búsqueda (ABB) toma su nombre del

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

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

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

Sistemas lineales de ecuaciones diferenciales. Juan-Miguel Gracia

Sistemas lineales de ecuaciones diferenciales. Juan-Miguel Gracia Sistemas lineales de ecuaciones diferenciales Juan-Miguel Gracia Índice Sistemas lineales 2 Búsqueda de una solución especial 3 Aplicación a sistemas 4 Problema de condiciones iniciales 2 / 2 Sistemas

Más detalles

Abstracción de Datos y

Abstracción de Datos y Capítulo 3 Abstracción de Datos y Números El cómputo numérico ha sido tradicionalmente ignorado por la comunidad de Lisp. Hasta antes del Common Lisp nadie había ideado una estrategia detallada para ordenar

Más detalles

DOCUMENTACIÓN PARA EL TRABAJO CON LA PLATAFORMA GUADALBOT

DOCUMENTACIÓN PARA EL TRABAJO CON LA PLATAFORMA GUADALBOT DOCUMENTACIÓN PARA EL TRABAJO CON LA PLATAFORMA GUADALBOT I.E.S VIRGEN DE LAS NIEVES Programación C para microcontroladores La función printf Índice de contenidos Introducción...2 La función printf...2

Más detalles

Estructuras de Control (y su forma en Python y en C) Clase 5 Introducción a la Computación Patricia Borensztejn

Estructuras de Control (y su forma en Python y en C) Clase 5 Introducción a la Computación Patricia Borensztejn Estructuras de Control (y su forma en Python y en C) Clase 5 Introducción a la Computación Patricia Borensztejn Estructuras de Control En el modelo de ejecución secuencial que vimos, el procesador repite:

Más detalles

Fundamentos de programación

Fundamentos de programación Fundamentos de programación Estructuras de Control Estructuras de control Estructuras de control Estructura secuencial Estructura alternativa Sentencias if, if else Sentencias if else anidadas El operador

Más detalles

Máquinas de Turing IIC3242. IIC3242 Máquinas de Turing 1 / 45

Máquinas de Turing IIC3242. IIC3242 Máquinas de Turing 1 / 45 Máquinas de Turing IIC3242 IIC3242 Máquinas de Turing 1 / 45 Complejidad Computacional Objetivo: Medir la complejidad computacional de un problema. Vale decir: Medir la cantidad de recursos computacionales

Más detalles