Recursividad. Introducción a la programación

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

Download "Recursividad. Introducción a la programación"

Transcripción

1 Recursividad Introducción a la programación I semestre, 2017

2 Recursividad Las reglas fundamentales para resolver problemas recursivos: Definir el caso base (solución trivial) Cuál es la solución que no necesita procesamiento adicional? Me recursive pointing CC SA Flickr

3 Recursividad Definir llamadas recursivas (solución de problema más pequeño) Aportar una respuesta parcial (salida) y reducir el tamaño o la complejidad del problema modificando los argumentos con la intensión de que tiendan al caso base. Me recursive pointing CC SA Flickr

4 Afinando detalles Volvamos a la función num_digitos(numero) y analicemos de forma crítica e ingenieril: Qué problemas tiene en términos de eficiencia? Qué problemas hay con las validaciones (restricciones)? Ei Ingenier@! Cómo podemos afinar estos detalles? Bad Boss CC NC-SA Flickr

5 Recursividad eficiente Las reglas fundamentales para resolver problemas recursivos de forma eficiente: La validación de las restricciones generales o casos especiales pueden/deben ser trabajados en la función principal (no recursiva). Este es el punto de entrada a nuestro problema, es ahí donde nos aseguraremos que los datos son correctos.

6 Recursividad eficiente Las reglas fundamentales para resolver problemas recursivos de forma eficiente: El trabajo pesado puede/debe ser resuelto en una función auxiliar (recursiva) que será invocada por la principal. Este es el núcleo, core o corazón de la solución

7 def num_digitos2(numero): #se evalúa solo una vez if not isinstance(numero,int): return 'Error01' elif numero == 0: #caso especial... return 1 else: return num_digitos2_aux(abs(numero)) def num_digitos2_aux(numero): if(numero == 0): #caso base return 0 else: #función recursiva con argumentos 'mas pequeños' return 1 + num_digitos2_aux(numero //10)

8 Cómo se ejecuta num_digitos2? >>> num_digitos2(-4925) num_digitos2_aux(4925) # abs(-4925) = num_digitos2_aux(492) # 4925 // 10 = num_digitos2_aux(49) # 492 // 10 = num_digitos2_aux(4) # 49 // 10 = num_digitos2_aux(0) # 4 // 10 = # numero = 0 >>> 4 >>> num_digitos2(0) >>> 1 # caso especial

9 Finite staircase CC BY-SA Flickr

10 Consejos... Identifique el o los casos más sencillos a resolver. (casos base) Cual es la condición que debería llevarnos al caso base? Qué debe retornar ese caso? los resultados (return) serán resultados finales o parciales?

11 Consejos... Busque la forma de hacer el problema más pequeño Hasta ahora los problemas nos pedían reducir el número quitándole dígitos, pero no siempre será así. Identifique casos de prueba que incluyan a los casos sencillos y otros complejos y evalúe utilizando papel y lápiz qué es lo que está haciendo Python. Comente la función num_digitos siguiendo estos consejos: casos base, resultados parciales, finales y donde finaliza el programa.

12 Sucesión de Fibonacci Leonardo de Pisa Inicia con f(0) = 0 y f(1) = 1, y a partir de ahí cada elemento es la suma de los dos anteriores. De forma formal, para todo n en los Naturales. fibonacci(n) fibonacci(0), si n = 0 0 fibonacci(1), si n = 1 1 fibonacci(n), si n >= 2 fibonacci( n - 1) + fibonacci( n - 2) Encontrar: Entradas, salidas, restricciones. Caso base, soluciones parciales, finales, casos de prueba. Hagan una corrida del programa en papel, prestando especial atención a la pila de llamadas.

13 Sucesión de Fibonacci Leonardo de Pisa Inicia con f(0) = 0 y f(1) = 1, y a partir de ahí cada elemento es la suma de los dos anteriores. De forma formal, para todo n en los Naturales. fibonacci(n) fibonacci(0), si n = 0 0 fibonacci(1), si n = 1 1 fibonacci(n), si n >= 2 fibonacci( n - 1) + fibonacci( n - 2)

14 Sucesión de Fibonacci Leonardo de Pisa fibonacci(0), si n = 0 0 fibonacci(1), si n = 1 1 fibonacci(n), si n >= 2 fibonacci( n - 1) + fibonacci( n - 2) Encontrar: Entradas, salidas, restricciones. Caso base, soluciones parciales, finales, casos de prueba. Hagan una corrida del programa en papel, prestando especial atención a la pila de llamadas.

15 Recursive Road Sign CC BY-SA Flickr

16 Ejercicios 4. Hacer una función que cuente las veces que aparece un dígito en un número: >>> cuenta_digito(8486, 8) 2 >>> cuenta_digito(8486, 0) 0

17 Ejercicios 5. La función Factorial se define como: Haga una función recursiva para resolver el factorial de cualquier número entero positivo. >>> factorial(0) 1 >>>factorial(1) 1 >>>factorial(7) 5040

18 Ejercicios 6. construya un número nuevo con los dígitos pares de un número recibido como parámetro de la función: >>> pares(486) 486 >>> pares(175043) 4

19 Ejercicios Piense en el algoritmo y trate de descomponer el problema en otros pequeños Cuales serían? Recuerde hacer validaciones: en este caso el número que recibe la función debe ser entero. En caso de que no se cumpla entonces se debe retornar el mensaje 'Error'

20 Ejercicios 7. Un número es palíndromo si puede leerse igual de izquierda a derecha o de derecha a izquierda, escriba una función para determinar esta propiedad. Sintaxis: palindromo(numero) salida donde: numero es numero entero positivo y salida debe ser un valor booleano: True o False. >>> palindromo(38583) >>> palindromo( ) True False >>> palindromo(2442) >>> palindromo(101) True 'Error' >>> palindromo(4) >>> palindromo(101) True True

21 Las presentaciones para el curso IC-1800: "Introducción a la Programación" por Ing. En Computación Alajuela se distribuyen bajo una Licencia Creative Commons Atribución-Compartir Igual 3.0 Costa Rica *La licencia de la presentación no cubre las imágenes utilizadas*

22 Recursividad Introducción a la programación I semestre, 2017

23 Recursividad Las reglas fundamentales para resolver problemas recursivos: Definir el caso base (solución trivial) Cuál es la solución que no necesita procesamiento adicional? Me recursive pointing CC SA Flickr

24 Recursividad Definir llamadas recursivas (solución de problema más pequeño) Aportar una respuesta parcial (salida) y reducir el tamaño o la complejidad del problema modificando los argumentos con la intensión de que tiendan al caso base. Me recursive pointing CC SA Flickr

25 Afinando detalles Volvamos a la función num_digitos(numero) y analicemos de forma crítica e ingenieril: Qué problemas tiene en términos de eficiencia? Qué problemas hay con las validaciones (restricciones)? Ei Ingenier@! Cómo podemos afinar estos detalles? Bad Boss CC NC-SA Flickr Que problemas hay en términos de eficiencia: - siempre se validan las restricciones, (ineficiente en tiempo y consumo de recursos) pues con solo que validemos 1 vez, YA sabemos con toda certeza que los datos de entrada seguirán siendo válidos.

26 Recursividad eficiente Las reglas fundamentales para resolver problemas recursivos de forma eficiente: La validación de las restricciones generales o casos especiales pueden/deben ser trabajados en la función principal (no recursiva). Este es el punto de entrada a nuestro problema, es ahí donde nos aseguraremos que los datos son correctos.

27 Recursividad eficiente Las reglas fundamentales para resolver problemas recursivos de forma eficiente: El trabajo pesado puede/debe ser resuelto en una función auxiliar (recursiva) que será invocada por la principal. Este es el núcleo, core o corazón de la solución

28 def num_digitos2(numero): #se evalúa solo una vez if not isinstance(numero,int): return 'Error01' elif numero == 0: #caso especial... return 1 else: return num_digitos2_aux(abs(numero)) def num_digitos2_aux(numero): if(numero == 0): #caso base return 0 else: #función recursiva con argumentos 'mas pequeños' return 1 + num_digitos2_aux(numero //10)

29 Cómo se ejecuta num_digitos2? >>> num_digitos2(-4925) num_digitos2_aux(4925) # abs(-4925) = num_digitos2_aux(492) # 4925 // 10 = num_digitos2_aux(49) # 492 // 10 = num_digitos2_aux(4) # 49 // 10 = num_digitos2_aux(0) # 4 // 10 = # numero = 0 >>> 4 >>> num_digitos2(0) >>> 1 # caso especial

30 Finite staircase CC BY-SA Flickr El camino para comprender recursión es largo, inclusive puede verse empinado, con unas gradas eternas, pero habrá una caso base que sea subir una grada con el pie derecho y comenzar a caminar con el izquerdo.

31 Consejos... Identifique el o los casos más sencillos a resolver. (casos base) Cual es la condición que debería llevarnos al caso base? Qué debe retornar ese caso? los resultados (return) serán resultados finales o parciales? Potencias: X (elevado a la )3 = x * x * x - X elevado a la 1 es X -X0 Hagamos un algoritmo para entender la recursividad: - caso base: entendemos recursividad - sino seguir haciendo práctica

32 Consejos... Busque la forma de hacer el problema más pequeño Hasta ahora los problemas nos pedían reducir el número quitándole dígitos, pero no siempre será así. Identifique casos de prueba que incluyan a los casos sencillos y otros complejos y evalúe utilizando papel y lápiz qué es lo que está haciendo Python. Comente la función num_digitos siguiendo estos consejos: casos base, resultados parciales, finales y donde finaliza el programa. Potencias: X (elevado a la )3 = x * x * x - X elevado a la 1 es X -X0 Hagamos un algoritmo para entender la recursividad: - caso base: entendemos recursividad - sino seguir haciendo práctica

33 Sucesión de Fibonacci Leonardo de Pisa Inicia con f(0) = 0 y f(1) = 1, y a partir de ahí cada elemento es la suma de los dos anteriores. De forma formal, para todo n en los Naturales. fibonacci(n) fibonacci(0), si n = 0 0 fibonacci(1), si n = 1 1 fibonacci(n), si n >= 2 fibonacci( n - 1) + fibonacci( n - 2) Encontrar: Entradas, salidas, restricciones. Caso base, soluciones parciales, finales, casos de prueba. Hagan una corrida del programa en papel, prestando especial atención a la pila de llamadas. Acá el video: Nature by NumberskkGeOWYOFoA.mp4

34 Sucesión de Fibonacci Leonardo de Pisa Inicia con f(0) = 0 y f(1) = 1, y a partir de ahí cada elemento es la suma de los dos anteriores. De forma formal, para todo n en los Naturales. fibonacci(n) fibonacci(0), si n = 0 0 fibonacci(1), si n = 1 1 fibonacci(n), si n >= 2 fibonacci( n - 1) + fibonacci( n - 2) Acá el video: Nature by NumberskkGeOWYOFoA.mp4

35 Sucesión de Fibonacci Leonardo de Pisa fibonacci(0), si n = 0 0 fibonacci(1), si n = 1 1 fibonacci(n), si n >= 2 fibonacci( n - 1) + fibonacci( n - 2) Encontrar: Entradas, salidas, restricciones. Caso base, soluciones parciales, finales, casos de prueba. Hagan una corrida del programa en papel, prestando especial atención a la pila de llamadas. Acá el video: Nature by NumberskkGeOWYOFoA.mp4

36 Recursive Road Sign CC BY-SA Flickr Cuidado: camino estrecho... la recursividad tiende a ser un embudo para mucha gente al aprender a programar

37 Ejercicios 4. Hacer una función que cuente las veces que aparece un dígito en un número: >>> cuenta_digito(8486, 8) 2 >>> cuenta_digito(8486, 0) 0

38 Ejercicios 5. La función Factorial se define como: Haga una función recursiva para resolver el factorial de cualquier número entero positivo. >>> factorial(0) 1 >>>factorial(1) 1 >>>factorial(7) 5040

39 Ejercicios 6. construya un número nuevo con los dígitos pares de un número recibido como parámetro de la función: >>> pares(486) 486 >>> pares(175043) 4 Acá hay dos problemas 1. dado un dígito saber si es par o no. (que se podría generalizar para saber si un número es par o no). es_par() un dígito //2, si el residuo es cero quierec decir que es divisible exacto entre dos 2. crear el nuevo número, utilizando un factor

40 Ejercicios Piense en el algoritmo y trate de descomponer el problema en otros pequeños Cuales serían? Recuerde hacer validaciones: en este caso el número que recibe la función debe ser entero. En caso de que no se cumpla entonces se debe retornar el mensaje 'Error' Acá hay dos problemas 1. dado un dígito saber si es par o no. (que se podría generalizar para saber si un número es par o no). es_par() un dígito //2, si el residuo es cero quierec decir que es divisible exacto entre dos 2. crear el nuevo número, utilizando un factor

41 Ejercicios 7. Un número es palíndromo si puede leerse igual de izquierda a derecha o de derecha a izquierda, escriba una función para determinar esta propiedad. Sintaxis: palindromo(numero) salida donde: numero es numero entero positivo y salida debe ser un valor booleano: True o False. >>> palindromo(38583) >>> palindromo( ) True False >>> palindromo(2442) >>> palindromo(101) True 'Error' >>> palindromo(4) >>> palindromo(101) True True

42 Las presentaciones para el curso IC-1800: "Introducción a la Programación" por Ing. En Computación Alajuela se distribuyen bajo una Licencia Creative Commons Atribución-Compartir Igual 3.0 Costa Rica *La licencia de la presentación no cubre las imágenes utilizadas*

Recursividad. Introducción a la programación

Recursividad. Introducción a la programación Recursividad Introducción a la programación I semestre, 2016 Concepto general Un concepto que está definido utilizando para este propósito el propio concepto que se está definiendo. Es un proceso de repetición

Más detalles

Recursión. Capítulo 4

Recursión. Capítulo 4 Recursión Capítulo 4 Introducción La recursión o recursividad es un concepto amplio, con muchas variantes, y difícil de precisar con pocas palabras.. Actividades Cotidianas; fotografía donde se observa

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 Recursividad: La recursividad es una técnica de programación

Más detalles

Ejercicios sobre recursividad

Ejercicios sobre recursividad Ejercicios sobre recursividad 11 de febrero de 2003 1. Implementa una función recursiva que devuelva la suma de los dígitos de un número natural, que se le pasa por parámetro. 2. Implementa una función

Más detalles

Tema: Funciones, Procedimientos y Recursividad en C#.

Tema: Funciones, Procedimientos y Recursividad en C#. Tema: Funciones, Procedimientos y Recursividad en C#. Objetivos Programación I, Guía 6 1 Utilizar la sintaxis de las funciones definidas por el usuario (programador) para resolver problemas. Identificar

Más detalles

Guía práctica de estudio 03: Algoritmos

Guía práctica de estudio 03: Algoritmos Guía práctica de estudio 03: Algoritmos 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 03: Algoritmos Objetivo:

Más detalles

Tema 7: Recursividad

Tema 7: Recursividad Tema 7: Recursividad Objetivos: en este tema estudiaremos funciones recursivas; esto es, funciones que se invocan a sí mismas. Estas funciones son equivalentes a estructuras tipo bucle pero permiten especificar

Más detalles

Guía práctica de estudio 03: Algoritmos

Guía práctica de estudio 03: Algoritmos Guía práctica de estudio 03: Algoritmos 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 03: Algoritmos Objetivo:

Más detalles

Si un número es múltiplo de otro, u dicho de forma, comprobar si un número es divisor de otro.

Si un número es múltiplo de otro, u dicho de forma, comprobar si un número es divisor de otro. 1.Introducción La programación es una herramienta muy poderosa para resolver todo tipo de problemas, entre ellos los problemas matemáticos. En este artículo se muestra cómo se resuelven algoritmos básicos,

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

Recuerdas la reunión social del sexto grado del concepto anterior?

Recuerdas la reunión social del sexto grado del concepto anterior? Materia: Matemática de séptimo Tema: Reglas de divisibilidad Recuerdas la reunión social del sexto grado del concepto anterior? Recuerdas que había dos grupos de estudiantes que asisten a la reunión, uno

Más detalles

import math # Importa la libreria math, que permite utilizar operaciones y funciones matematicas

import math # Importa la libreria math, que permite utilizar operaciones y funciones matematicas UNIVERSIDAD DE COSTA RICA FACULTAD DE INGENIERÍA ESCUELA DE INGENIERÍA ELÉCTRICA PROGRAMACIÓN BAJO PLATAFORMAS ABIERTAS IE-0117 I CICLO 2012 LABORATORIO 8 FUNCIONES Y RECURSIÓN DICCIONARIOS CHRISTIAN CHAVES

Más detalles

RECURRENCIA RECURSIÓN o RECURSIVIDAD

RECURRENCIA RECURSIÓN o RECURSIVIDAD RECURRENCIA RECURSIÓN o RECURSIVIDAD 1 Definición Definición de diccionario Recursividad: Véase Recursividad 2 Definición Técnica que para resolver problemas basándose en la propia definición del mismo

Más detalles

1.- Para cada uno de los siguientes problemas escribir el diagrama de flujo y el pseudocódigo de un programa que lo resuelva:

1.- Para cada uno de los siguientes problemas escribir el diagrama de flujo y el pseudocódigo de un programa que lo resuelva: 1.- Para cada uno de los siguientes problemas escribir el diagrama de flujo y el a) Problema: pedir la base y la altura de un triángulo y escribir su superficie. b) Problema: pedir cuatro números enteros

Más detalles

Funciones Tipos de funciones y Recursividad

Funciones Tipos de funciones y Recursividad Funciones Tipos de funciones y Recursividad SESION 4 Definición Una función es una subrutina o subprograma que forman un programa que realiza tareas bien definidas. Todo programa en C consta de una o más

Más detalles

Tema I Testing Estructurado

Tema I Testing Estructurado Tema I Testing Estructurado 4ta Parte Verificación y Validación de Software UNS Contenido Testing de Unidad: Caja Negra Grafos Causa Efecto Clases de Equivalencia Valores Límite Verificación y Validación

Más detalles

Tecnología de la Programación

Tecnología de la Programación Título de Grado en Ingeniería Informática Curso 2009/10 Fernando Jiménez Barrionuevo Gracia Sánchez Carpena Mari Carmen Garrido Carrera Departamento de Ingeniería de la Información de las Comunicaciones

Más detalles

Carlos A. Rivera-Morales. Precálculo 2

Carlos A. Rivera-Morales. Precálculo 2 y Carlos A. Rivera-Morales Precálculo 2 Introducción a y Notación d Tabla de Contenido 1 Definición Sumas Parciales Introducción a y Notación d Tabla de Contenido 1 Definición Sumas Parciales 2 Introducción

Más detalles

SISTEMAS INFORMÁTICOS PROGRAMACION I - Contenidos Analíticos Ing. Alejandro Guzmán M. TEMA 2. Diseño de Algoritmos

SISTEMAS INFORMÁTICOS PROGRAMACION I - Contenidos Analíticos Ing. Alejandro Guzmán M. TEMA 2. Diseño de Algoritmos TEMA 2 Diseño de Algoritmos 7 2. DISEÑO DE ALGORITMOS 2.1. Concepto de Algoritmo En matemáticas, ciencias de la computación y disciplinas relacionadas, un algoritmo (del griego y latín, dixit algorithmus

Más detalles

Concepto de Recursión. Características de algoritmos recursivos. Ejemplos

Concepto de Recursión. Características de algoritmos recursivos. Ejemplos RECURSION Temario Concepto de Recursión Características de algoritmos recursivos Ejemplos RECURSION Metodologías para resolver problemas: 1. Diseño Top Down 2. Recursión 3. Abstracción de Datos 4. Diseño

Más detalles

RECORDAR TIPOS DE DATOS

RECORDAR TIPOS DE DATOS RECORDAR TIPOS DE DATOS VARIABLES: OBJETO CUYO valor cambia: A510 nombres NOTAS Int A=0; float B=1; CONSTANTES: OBJETO cuyo valor no cambia PI= 3.14159 LAS COMAS NO SE PERMITEN Int PI=3.1415 EXPRESIONES:

Más detalles

Tutorial MT-b1. Matemática Tutorial Nivel Básico. Elementos básicos de Aritmética

Tutorial MT-b1. Matemática Tutorial Nivel Básico. Elementos básicos de Aritmética 12345678901234567890 M ate m ática Tutorial MT-b1 Matemática 2006 Tutorial Nivel Básico Elementos básicos de Aritmética Matemática 2006 Tutorial Algunos elementos básicos de Aritmética Marco teórico: 1.

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

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

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

MATEMÁTICAS 2º DE ESO LOE

MATEMÁTICAS 2º DE ESO LOE MATEMÁTICAS 2º DE ESO LOE TEMA I: NÚMEROS ENTEROS (parte 3/3) Los divisores de un número entero. Descomposición factorial de un número entero. Máximo común divisor (m.c.d.) de dos o más números enteros.

Más detalles

Tema 01: Algoritmia y diagramas de flujo. Estructuras de datos (Prof. Edgardo A. Franco)

Tema 01: Algoritmia y diagramas de flujo. Estructuras de datos (Prof. Edgardo A. Franco) Tema 1 Estructuras de datos (Prof. Edgardo A. Franco) Contenido Algoritmia Qué es un algoritmo? Métodos algorítmicos Diagrama de flujo Símbolos utilizados en los diagramas de flujo Reglas para la construcción

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

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

DIVISIBILIDAD NÚMEROS NATURALES

DIVISIBILIDAD NÚMEROS NATURALES DIVISIBILIDAD NÚMEROS NATURALES MÚLTIPLOS Un número a es múltiplo de otro b cuando es el resultado de multiplicarlo por otro número c. a = b c Ejemplo: 12 es múltiplo de 2, ya que resulta de multiplicar

Más detalles

GUÍA BÁSICA DE SCHEME v.4

GUÍA BÁSICA DE SCHEME v.4 Esta guía básica pretende ser una introducción elemental al lenguaje de programación Scheme. Se presenta como una guía de comienzo rápido de tal forma que permita conocer de una forma muy esquemática los

Más detalles

Sentencias de Procesamiento Iterativo: while y do-while

Sentencias de Procesamiento Iterativo: while y do-while ESTRUCTURAS CÍCLICAS Se discuten en este documento las sentencias que se utilizan en el lenguaje C++ para representar la tercera de las estructuras utilizadas en la programación estructurada: La Estructura

Más detalles

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

Estatutos de Control C# Estatutos de Decisión (Selección) SELECCIÓN Estatutos de Control C# Estatutos de Decisión (Selección) IF Condición THEN Estatuto1 ELSE Estatuto2 Estatuto1 Statement Condición... Antes de ver esta presentación: Lee el Capítulo correspondiente

Más detalles

Sistemas numéricos (decimal, binario, octal, hexadecimal)

Sistemas numéricos (decimal, binario, octal, hexadecimal) Algoritmos y programación con Phyton Facultad de Ingeniería Universidad de Antioquia Sistemas numéricos (decimal, binario, octal, hexadecimal) Jaime A. Valencia V. Facultad de Ingeniería Universidad de

Más detalles

= 310 (1 + 5) : 2 2 = = = 12 ( 3) ( 5) = = 2 = ( 4) + ( 20) + 3 = = 21

= 310 (1 + 5) : 2 2 = = = 12 ( 3) ( 5) = = 2 = ( 4) + ( 20) + 3 = = 21 Unidad I, NÚMEROS NATURALES Y ENTEROS A continuación se enuncian las claves de cada pregunta hechas por mí (César Ortiz). Con esto, asumo cualquier responsabilidad, entiéndase por si alguna solución está

Más detalles

Programación en Lenguaje Java

Programación en Lenguaje Java Programación en Lenguaje Java Problema 3.1. Prac.car con strings e instrucciones condicionales Michael González Harbour Mario Aldea Rivas Departamento de Matemá.cas, Estadís.ca y Computación Este tema

Más detalles

Programación I. Ingeniería Técnica Informática. Ejercicios de los Temas 4, 5, 6 y 7

Programación I. Ingeniería Técnica Informática. Ejercicios de los Temas 4, 5, 6 y 7 Estructuras selectivas Programación I Ingeniería Técnica Informática Ejercicios de los Temas 4, 5, 6 y 7 24.- Elabore un programa para determinar si una hora leída en la forma horas, minutos y segundos

Más detalles

Programación Dinámica

Programación Dinámica Leopoldo Taravilse Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires Training Camp 2012 Leopoldo Taravilse (UBA) TC 2012 1 / 34 Contenidos 1 Recursión Principio de Optimalidad Ejemplos

Más detalles

Para las ecuaciones diferenciales ordinarias no lineales no existen métodos generales.

Para las ecuaciones diferenciales ordinarias no lineales no existen métodos generales. Unidad IV: Sistemas continuos (continuación) Objetivo específico: Entender ampliamente el fenómeno del comportamiento de los modelos matemáticos para la resolución de problemas enfocados a las ecuaciones

Más detalles

TEMA 1 NÚMEROS NATURALES

TEMA 1 NÚMEROS NATURALES TEMA 1 NÚMEROS NATURALES Criterios De Evaluación de la Unidad 1 Efectuar correctamente operaciones combinadas de números naturales, aplicando correctamente las reglas de prioridad y haciendo un uso adecuado

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

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

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

FACULTADE DE INFORMÁTICA Departamento de Computación Estructura de Datos e da Información. Ejercicios de recursividad

FACULTADE DE INFORMÁTICA Departamento de Computación Estructura de Datos e da Información. Ejercicios de recursividad H AC LUCE FACULTADE DE INFORMÁTICA Departamento de Computación Estructura de Datos e da Información Ejercicios de recursividad 1. Determinar qué operación realiza: //x>=0, y>0 function funcion_x (x,y:

Más detalles

DIVISIBILIDAD: Resultados

DIVISIBILIDAD: Resultados DIVISIBILIDAD: Resultados Página 1 de 9 Se enumeran a continuación, como referencia, ciertos resultados sobre divisibilidad. 1.1 Definición. Dados los enteros a y b, se dice que a divide a b (Notación:

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

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

Módulo 2: Algoritmos (continuación)

Módulo 2: Algoritmos (continuación) Módulo 2: Algoritmos (continuación) Tecnologías en la Educación Matemática Dr. Carlos Gonzalía DCIC - UNS Técnologías en la educación matemática Dra. Marcela Capobianco 1 de Copyright Copyright 2012 M.

Más detalles

Estructuración del programa en partes más pequeñas y sencillas

Estructuración del programa en partes más pequeñas y sencillas Introducción Estructuración del programa en partes más pequeñas y sencillas Modularización Propósito único Identificable Reusable Mayor claridad: programación, depuración, etc. Construcción de librerías

Más detalles

funciones printf scanf

funciones printf scanf FUNCIONES EN C FUNCIONES Los módulos en C se llaman funciones. Hemos estado utilizando funciones de la biblioteca estandar stdio.h como por ejemplo printf y scanf. Comenzaremos viendo algunas funciones

Más detalles

PROGRAMA DE ASIGNATURA DE PROGRAMACIÓN I

PROGRAMA DE ASIGNATURA DE PROGRAMACIÓN I PROGRAMA DE ASIGNATURA DE PROGRAMACIÓN I Contenido INFORMACIÓN GENERAL... 2 INTRODUCCIÓN... 2 OBJETIVOS GENERALES DE LA ASIGNATURA... 2 OBJETIVOS, TEMAS Y SUBTEMAS... 3 Tema1: Estructura de control....

Más detalles

Introducción a los Computadores (CNM-130) Estructuras de control repetitivas en FreeMat

Introducción a los Computadores (CNM-130) Estructuras de control repetitivas en FreeMat Introducción a los Computadores (CNM-130) Estructuras de control repetitivas en FreeMat Alejandro Piedrahita H. Instituto de Matemáticas Facultad de Ciencias Exactas y Naturales Universidad de Antioquia

Más detalles

Isabelle como un lenguaje funcional

Isabelle como un lenguaje funcional Capítulo 1 Isabelle como un lenguaje funcional 1.1 Introducción Nota 1.1.1. Esta notas son una introducción a la demostración asistida utilizando el sistema Isabelle/HOL/Isar. La versión de Isabelle utilizada

Más detalles

Ejercicios Pendientes Matemáticas 2º ESO Curso Números Enteros Los Números Enteros

Ejercicios Pendientes Matemáticas 2º ESO Curso Números Enteros Los Números Enteros Los 1) 2) 1 3) 4) 5) 9) ) 2 11) 12) 16) 3 17) 18) 19) 4 20) 21) En qué orden se realizan las operaciones con números enteros Para resolver varias operaciones combinadas con números enteros, se debe seguir

Más detalles

Trabajo Práctico N 9 Recursividad

Trabajo Práctico N 9 Recursividad Trabajo Práctico N 9 Recursividad Ejercicio. Implemente en Pascal las siguientes definiciones recursivas. a) h ( N) h( N ) h( N ), N, N 0 0 b) 0 g ( x, z) 0 g( x, z ), x 0, z 0, ( x 0) y ( z 0) c) f (

Más detalles

Programación 1 - Práctica 0, recargada.

Programación 1 - Práctica 0, recargada. v.6.2.1 Programación 1 - Práctica 0, recargada. Ahora con más ejercicios! 1 Expresiones aritméticas. 1. Considere las siguientes expresiones aritméticas: 12 * 5-7 * 6 3 * 5-7 * 4 / 14 + 3 / 1 cos(0.8)

Más detalles

UNIDAD DE APRENDIZAJE II UNIDAD DE APRENDIZAJE 2 ( 12 HORAS)

UNIDAD DE APRENDIZAJE II UNIDAD DE APRENDIZAJE 2 ( 12 HORAS) UNIDAD DE APRENDIZAJE II UNIDAD DE APRENDIZAJE HORAS) Saberes procedimentales Saberes declarativos Identifica y realiza operaciones básicas con expresiones aritméticas. Jerarquía de las operaciones aritméticas.

Más detalles

Unidad #1: DESIGUALDAD o inecuaciones COLEGIO BENIGNO TOMÁS ARGOTE UNIDAD # 1

Unidad #1: DESIGUALDAD o inecuaciones COLEGIO BENIGNO TOMÁS ARGOTE UNIDAD # 1 ÁREA: Algebra COLEGIO BENIGNO TOMÁS ARGOTE UNIDAD # 1 ASIGNATURA: Matemática. NIVEL: Duodécimo grado ( CIENCIAS ) PROFESOR: José Alexander Echeverría Ruiz TRIMESTRE: I TÍTULO DE LA UNIDAD DIDÁCTICA: 1.

Más detalles

TEMA 2: TEORÍA DE CONJUNTOS Y CONJUNTOS NUMÉRICOS.

TEMA 2: TEORÍA DE CONJUNTOS Y CONJUNTOS NUMÉRICOS. TEMA 2: TEORÍA DE CONJUNTOS Y CONJUNTOS NUMÉRICOS. TEORÍA DE CONJUNTOS. Definiciones. Se define un conjunto como una colección de objetos o cosas, se nombran con letras mayúsculas (A, B...). Cada uno de

Más detalles

La raíz n-ésima de un número, es. Y, al igual que la simplificación de las raíces cuadradas, podemos simplificar las raíces n-ésimas.

La raíz n-ésima de un número, es. Y, al igual que la simplificación de las raíces cuadradas, podemos simplificar las raíces n-ésimas. RAÍZ ENÉSIMA Hasta ahora, hemos visto exponentes con números enteros y raíz cuadrada. En esta guía, vamos a vincular las raíces y exponentes. En primer lugar, vamos a definir raíces adicionales. Al igual

Más detalles

Tarea 2 de Álgebra Superior II

Tarea 2 de Álgebra Superior II Tarea 2 de Álgebra Superior II Divisibilidad 1. Sean a, b, c, d Z. Determine si los siguientes enunciados son verdaderos o falsos. Si son verdaderos, probar el resultado, y si son falsos, dar un contraejemplo.

Más detalles

2007/ PROGRAMACIÓN. Tipo: TRO Curso: 1 Semestre: AB CREDITOS Totales TA TS AT AP PA OBJETIVOS. 1.-Introducción.

2007/ PROGRAMACIÓN. Tipo: TRO Curso: 1 Semestre: AB CREDITOS Totales TA TS AT AP PA OBJETIVOS. 1.-Introducción. 2007/2008 Tipo: TRO Curso: 1 Semestre: AB CREDITOS Totales TA TS AT AP PA OBJETIVOS 1.-Introducción. -Comprender cómo funciona un lenguaje de programación 2. Características del lenguaje C -Entender las

Más detalles

La Tabla 1 muestra los valores de los dígitos de un número binario.

La Tabla 1 muestra los valores de los dígitos de un número binario. Título: Sistema de los Números Binarios Autor: Luis R. Morera González Luego de muchos años dictando cursos de matemáticas he encontrado que muchos de los libros que he utilizado no explican de una manera

Más detalles

Materia: Matemática de Tercer Año Tema: Pendiente

Materia: Matemática de Tercer Año Tema: Pendiente Materia: Matemática de Tercer Año Tema: Pendiente Suponga que tiene un avión de juguete sobre el despegue, que se eleva 5 pies por cada 6 metros que recorre a lo largo de la horizontal. Cuál sería la pendiente

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

Unidad didáctica 1. Operaciones básicas con números enteros

Unidad didáctica 1. Operaciones básicas con números enteros Unidad didáctica 1 Operaciones básicas con números enteros 1.- Representación y ordenación de números enteros Para representar números enteros en una recta hay que seguir estos pasos: a) Se dibuja una

Más detalles

Actividad colaborativa Ejercicios de programación Programación básica C++

Actividad colaborativa Ejercicios de programación Programación básica C++ Actividad colaborativa Ejercicios de programación Programación básica C++ Entra a la página del Prof. Jorge Sánchez, autor del Manual completo de programación en C++, de donde edité estos apuntes: http://www.jorgesanchez.net/programacion/ejerciciosc/sencillos.html

Más detalles

Pauta Guía de Ejercicios N 1

Pauta Guía de Ejercicios N 1 Pauta Guía de Ejercicios N 1 1. Diseñar un Diagrama de Flujos para calcular el valor de la suma de N números enteros. Por ejemplo si N es 5 la suma es 15. (1 + 2 + 3 + 4 + 5 = 15) 2. Modelar un Diagrama

Más detalles

Tema 6. Reutilización de código. Programación 2015-2016. Programación - Tema 6: Reutilización de código

Tema 6. Reutilización de código. Programación 2015-2016. Programación - Tema 6: Reutilización de código Tema 6 Reutilización de código Programación 2015-2016 Programación - Tema 6: Reutilización de código 1 Tema 6. Reutilización de código Modularidad. Implementación de métodos. Uso de métodos. Programación

Más detalles

ARREGLOS EN. Nota: El autor.

ARREGLOS EN. Nota: El autor. ARREGLOS EN Nota: PSeInt es un software importante y muy útil para aquellos estudiantes que se inician en el aprendizaje de la programación. Pero como todo programa informático contiene errores o los famosos

Más detalles

RADIO =? R AREA = : πr 2 < CIRC = : 2 πr

RADIO =? R AREA = : πr 2 < CIRC = : 2 πr PROGRAMACION BASICA Programar la calculadora corresponde a decirle que presione teclas por sí misma automáticamente. Los programas se pueden ingresar vía RUN SHIFT PRGM (tecla VARS), o bien ingresando

Más detalles

Propiedades de números enteros (lista de problemas para examen)

Propiedades de números enteros (lista de problemas para examen) Propiedades de números enteros (lista de problemas para examen) Denotamos por Z al conjunto de los números enteros y por N al conjunto de los números enteros positivos: N = 1, 2, 3,...}. Valor absoluto

Más detalles

Clase 1: Primalidad. Matemática Discreta - CC3101 Profesor: Pablo Barceló. P. Barceló Matemática Discreta - Cap. 5: Teoría de números 1 / 32

Clase 1: Primalidad. Matemática Discreta - CC3101 Profesor: Pablo Barceló. P. Barceló Matemática Discreta - Cap. 5: Teoría de números 1 / 32 Capítulo 5: Teoría de Números Clase 1: Primalidad Matemática Discreta - CC3101 Profesor: Pablo Barceló P. Barceló Matemática Discreta - Cap. 5: Teoría de números 1 / 32 Teoría de números En esta parte

Más detalles

Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola)

Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola) Objetivos de la sesión Entender el tipo de programas que se pueden realizar con aplicaciones de consola. Conocer el concepto de variable, la forma en que se declaran y su utilización. Conocer la forma

Más detalles

Tema 11. Diseño de algoritmos recursivos 1. Tema 11. Diseño de algoritmos recursivos

Tema 11. Diseño de algoritmos recursivos 1. Tema 11. Diseño de algoritmos recursivos Tema 11. Diseño de algoritmos recursivos 1 Departamento de Lenguajes y Ciencias de la Computación UNIVERSIDAD DE MÁLAGA Apuntes para la asignatura http://www.lcc.uma.es/personal/pepeg/mates Tema 11. Diseño

Más detalles

Funciones como parámetros, funciones como resultados. Introducción a la Computación Patricia Borensztejn Clase 26

Funciones como parámetros, funciones como resultados. Introducción a la Computación Patricia Borensztejn Clase 26 Funciones como parámetros, funciones como resultados Introducción a la Computación Patricia Borensztejn Clase 26 Funciones de orden superior Se llama así a la técnica que permite pasar funciones como parámetros

Más detalles

Programación Funcional Lisp-DrScheme Primera Parte. Dr. Oldemar Rodríguez Rojas Escuela de Informática Universidad de Nacional

Programación Funcional Lisp-DrScheme Primera Parte. Dr. Oldemar Rodríguez Rojas Escuela de Informática Universidad de Nacional Programación Funcional Lisp-DrScheme Primera Parte Dr. Oldemar Rodríguez Rojas Escuela de Informática Universidad de Nacional Programación Funcional! La programación funcional es un paradigma de programación

Más detalles

Formatos para prácticas de laboratorio

Formatos para prácticas de laboratorio Fecha de efectividad: CARRERA PLAN DE ESTUDIO CLAVE DE ASIGNATURA NOMBRE DE LA ASIGNATURA IC 2009-2 METODOLOGIA DE LA PROGRAMACION PRÁCTICA No. 6 LABORATORIO DE NOMBRE DE LA PRÁCTICA COMPUTACION ALGORITMOS

Más detalles

TEMA 5: Subprogramas, programación modular

TEMA 5: Subprogramas, programación modular TEMA 5: Subprogramas, programación modular 5.1.-Definición de módulo. Programación modular La programación modular está basada en la técnica de diseño descendente, que como ya vimos consiste en dividir

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

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

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

UNIVERSIDAD NACIONAL EXPERIMENTAL DE GUAYANA VICERRECTORADO ACADÉMICO COORDINACION DE PRE-GRADO PROYECTO DE CARRERA DE INGENIERIA INDUSTRIAL VICERRECTORADO ACADÉMICO COORDINACION DE PRE-GRADO PROYECTO DE CARRERA DE INGENIERIA INDUSTRIAL PROGRAMA: PROGRAMACION I CÓDIGO ASIGNATURA: 1215-208 PRE-REQUISITO: 1215-102 SEMESTRE: II (SEGUNDO) UNIDADES

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

Dirección de Operaciones

Dirección de Operaciones Dirección de Operaciones 1 Sesión No. 9 Nombre: Problemas de transporte y asignación. Primera parte. Objetivo Al finalizar la sesión, el alumno será capaz de Contextualización Cuál es el valor de estudiar

Más detalles

Semana de las Matemáticas e Ingeniería. Desarrollo de algoritmos recursivos empleando la aplicación PseInt

Semana de las Matemáticas e Ingeniería. Desarrollo de algoritmos recursivos empleando la aplicación PseInt Semana de las Matemáticas e Ingeniería Desarrollo de algoritmos recursivos empleando la aplicación PseInt 21 de Noviembre de 2013 Agenda Desarrollo de algoritmos recursivos empleando la aplicación PSeInt

Más detalles

9 Expresiones racionales

9 Expresiones racionales Programa Inmersión, Verano 2016 Notas escritas por Dr. M Notas del cursos. Basadas en los prontuarios de MATE 3001 y MATE 3023 Clase #9: viernes, 10 de junio de 2016. 9 Epresiones racionales 9.1 Fracciones

Más detalles

CURSO CERO DE MATEMATICAS. Apuntes elaborados por Domingo Pestana Galván. y José Manuel Rodríguez García

CURSO CERO DE MATEMATICAS. Apuntes elaborados por Domingo Pestana Galván. y José Manuel Rodríguez García INGENIEROS INDUSTRIALES Y DE TELECOMUNICACIONES CURSO CERO DE MATEMATICAS Apuntes elaborados por Domingo Pestana Galván y José Manuel Rodríguez García UNIVERSIDAD CARLOS III DE MADRID Escuela Politécnica

Más detalles

Lógica Proposicional IIC1253. IIC1253 Lógica Proposicional 1/64

Lógica Proposicional IIC1253. IIC1253 Lógica Proposicional 1/64 Lógica Proposicional IIC1253 IIC1253 Lógica Proposicional 1/64 Inicio de la Lógica Originalmente, la Lógica trataba con argumentos en el lenguaje natural. Ejemplo Es el siguiente argumento válido? Todos

Más detalles