Procedimientos y Recursividad
|
|
|
- Natalia Escobar Navarro
- hace 7 años
- Vistas:
Transcripción
1 Capítulo 2 Procedimientos y Recursividad 2.1 Introducción Es muy fácil definir un procedimiento en Scheme. El lenguaje proporciona una forma elegante de hacerlo, basada en el cálculo lambda de Alonzo Church [4]. Supongamos que queremos definir un procedimiento que tome como argumento un valor (ya sea un símbolo o un número) y queremos que regrese una lista que contenga dicho valor como su único elemento: (lambda (val) (cons val ())) Considere los siguientes ejemplos: > ((lambda (val) (cons val ())) Carlos) (Carlos) > ((lambda (val) (cons val ())) 5) (5) Puesto que no queremos estar realizando esta misma operación una y otra vez, definiremos un procedimiento: (define haz-lista-de-uno ; el punto y coma se puede usar para los comentarios (lambda (val) (cons val ()))) 39
2 > (haz-lista-de-uno 7) (7) > (haz-lista-de-uno a) (a) Se recomienda que siempre se usen nombres apropiados para los procedimientos. Una observación importante es que el procedimiento puede ser invocado desde otro, e incluso desde sí mismo (a esto se le llama recursividad). El procedimiento list toma cualquier número de argumentos y construye una lista que contiene dichos argumentos. Considere los siguientes ejemplos: (list a b c d) = (a b c d) (list (12) (34))= ((1 2) (3 4)) (list) = () Problemas Resueltos 1. Defina un procedimiento rota, que rote una lista de tres elementos. El procedimiento rota regresa una lista que es un rearreglo de la lista que se le da de entrada, de manera que el primer elemento se vuelve el segundo, el segundo se vuelve el tercero, y el tercero se vuelve el primero. Pruebe su procedimiento con: (rota salta veloz cerca) = (cerca salta veloz) (rota perro muerde hombre) = (hombre perro muerde) Solución 1: (define rota (lambda (elem1 elem2 elem3) (cons elem3 (cons elem1 (cons elem2 ()))))) Solución 2: (define rota (lambda (elem1 elem2 elem3) (list elem3 elem1 elem2))) 40
3 2.2 Expresiones Condicionales La palabra clave cond se deriva de la palabra condicional, y se refiere a una expresión usada para emular la sentencia case (sentencia de casos) de los lenguajes imperativos. Considere el siguiente ejemplo: (define tipo-de (lambda (elem) ((pair? elem) pair) ((symbol? elem) symbol) ((number? elem) number) ((boolean? elem) boolean) ((null? elem) empty-list) (else tipo-desconocido)))) Advierta que cada clásula se evalúa secuencialmente. Si alguna de ellas regresa #t, entonces se retorna su consecuente correspondiente. De lo contrario, se evalúa la siguiente cláusula. La cláusula else es opcional. Si se omite y todas las condiciones son falsas, entonces Scheme no especificará el valor que retornarálaexpresión cond. Por ello es recomendable utilizar else, para evitar tener expresiones cond que regresen un valor no especificado. El formato general de cond es: ición 1 consecuente 1 ) ición 2 consecuente 2 ). ición n consecuente n ) (else alternativa)) También es posible usar la palabra clave if cuando tenemos solamente dos casos, como suele hacerse en la mayoría de los lenguajes de programación tradicionales. Consideremos el siguiente ejemplo en el que se re-escribirá el mismo procedimiento usando cond e if: 41
4 Usando cond: (define car-cond-pair (lambda (elem) ((pair? elem) (car elem)) (else elem)))) Usando if: (define car-if-pair (lambda (elem) (if (pair? elem) (car elem) elem))) El formato general de if es: or (if condiciǿn consecuente alternativa) (if condición consecuente) También podemos usar ifs anidados para emular expresiones cond, pero eso no se recomienda, porque nuestro código generalmente se volverá muy complejo y confuso. 2.3 Condiciones Compuestas Una condición compuesta es una condición que involucra una combinación de dos o más condiciones simples. Las condiciones compuestas se construyen usando los operadores lógicos: (and expr 1 expr 2 expr 3... expr n ) (or expr 1 expr 2 expr 3... expr n ) (not expr) 42
5 La expresión and evalúa cada subexpresión, y si cualquiera de ellas es falsa retorna #f y se detiene. Si todas son ciertas, regresa el valor de la última subexpresiǿn. La expresión or evalúa cada subexpresión en sucesión. Si cualquiera de ellas es cierta, deja de evaluar el resto de las subexpresiones y el valor de la expresión será cierta. Si todas las subexpresiones son falsas, entonces el valor de la expresión será #f. El valor de la expresión not es #f cuando expr es cierto, y #t cuando expr es falso. Scheme tiene la convención de tratar cualquier valor que no es falso como cierto. Por ejemplo: > (if gato animal mascota) = animal Puesto que la condición gato se evalúa como gato, locualnoesfalso. Aunque este mecanismo puede usarse para implementar algunos trucos con el intérprete de Scheme, su uso se recomienda únicamente cuando se manejan expresiones Boleanas en las condiciones Problemas Resueltos 1. Suponga que a, b y c son expresiones que pueden evaluarse a #t y que e y f son expresiones que se evalúan a #f. Decida si las siguientes expresiones son falsas o verdaderas. a. (and a(or be)) (and #t (or #t #f)) (and #t #t) = #t b. (or e(and (not f) a c)) (or #f (and (not #f) #t #t)) (or #f (and #t #t #t)) (or #f #t) = #t c. (not (or (not a) (not b))) (not (or (not #t) (not #t))) (not (or #f #f)) (not #f) = #t 43
6 d. (and (or af)(not (or b e))) (and (or #t #f) (not (or #t #f))) (and #t #f) = #f 2. Decida si las siguientes expresiones son ciertas o falsas si expr es alguna expresión Boleana. a. (or (symbol? expr) (not (symbol? expr))) #t b. (and (null? expr) (not (symbol? expr))) #f c. (not (and (or expr #f) (not expr))) #t d. (not (or expr #t)) #f 2.4 Recursividad Cuando un procedimiento se invoca a sí mismo dentro del cuerpo de la expresión lambda que lo define, decimos que el procedimiento es recursivo. Considere el siguiente ejemplo: (define ultimo-elemento (lambda (ls) ((null? (cdr ls)) (car ls)) (else (ultimo-elemento (cdr ls)))))) Esta función regresa el último elemento de alto nivel de una lista: > (ultimo-elemento ( )) = 5 > (ultimo-elemento (a b (c d))) = (c d) > (ultimo-elemento (gato)) = gato > (ultimo-elemento ((gato))) = (gato) 44
7 Ahora definiremos el procedimiento miembro?, que decide si su primer argumento es igual a uno de los elementos de alto nivel de la lista que se le proporciona como segundo argumento: (define miembro? (lambda (elem ls) ((null? ls) #f) (else (or (equal? (car ls) elem) (miembro? elem (cdr ls))))))) Algunos ejemplos de su uso son los siguientes: > (miembro? gato (perro gallina gato puerco)) = #t > (miembro? zorra (perro gallina gato puerco)) = #f > (miembro? 2 (1 (2 3) 4)) = #f > (miembro? (2 3) (1 (2 3) 4)) = #t > (miembro? gato ()) = #f Otro procedimiento útil es remueve-primero, el cual, como su nombre lo indica remueve la primera ocurrencia de alto nivel de un elemento en una lista dada. Su definición es la siguiente: (define remueve-primero (lambda (elem ls) ((null? ls) ()) ((equal? (car ls) elem) (cdr ls)) (else (cons (car ls) (remueve-primero elem (cdr ls))))))) Algunos ejemplos de su uso son los siguientes: > (remueve-primero zorra ()) = () > (remueve-primero zorra (gallina zorra pollo gallo)) = (gallina pollo gallo) > (remueve-primero zorra (gallina zorra pollo zorra gallo)) = (gallina pollo zorra gallo) > (remueve-primero zorra (gallina (zorra pollo) gallo)) = (gallina (zorra pollo) gallo) > (remueve-primero (1 2) (1 2 (1 2) ((1 2)))) = (1 2 ((1 2))) 45
8 2.4.1 Problemas Resueltos 1. Defina un procedimiento subst-primero que tome tres parámetros: un elemento nuevo, un elemento viejo, y una lista de elementos ls. El procedimiento subst-primero busca la primera ocurrencia de alto nivel del elemento viejo en ls y la reemplaza con el elemento nuevo. Pruebe su procedimiento con: > (subst-primero perro gato (mi gato es inteligente)) = (mi perro es inteligente) > (subst-primero b a (c a b a c)) = (c b b a c) > (subst-primero (0) (*) ((*) (1) (*) (2))) = ((0) (1) (*) (2)) > (subst-primero dos uno ()) = () El procedimiento es el siguiente: (define subst-primero (lambda (nuevo viejo ls) ) ((null? ls) ()) ((equal? (car ls) viejo) (cons nuevo (cdr ls))) (else (cons (car ls) (subst-primero nuevo viejo (cdr ls))))))) 2. Defina un procediemiento inserta-izq-primero que inserte un nuevo elemento a la izquierda de la primera ocurrencia de alto nivel del elemento viejo de la lista ls que se le indique. Pruebe su procedimiento con: > (inserta-izq-primero mucha pizza (yo como pizza)) = (yo como mucha pizza) > (inserta-izq-primero divertido juego (muy divertido)) = (muy divertido) > (inserta-izq-primero a b (a b c a b c)) = (a a b c a b c) > (inserta-izq-primero a b ()) = () 46
9 El procedimiento es el siguiente: (define inserta-izq-primero (lambda (nuevo viejo ls) ((null? ls) ()) ((equal? (car ls) viejo) (cons nuevo (cons viejo (cdr ls)))) (else (cons (car ls) (inserta-izq-primero nuevo viejo (cdr ls))))))) 3. Defina un procedimeinto reemplaza que reemplace cada elemento de alto nivel de una lista ls por un elemento dado nuevo-elem. Pruebe su procedimiento con: > (reemplaza no (me haces un favor)) = (nononono) > (reemplaza si (te gusta el helado)) = (sisisisi) > (reemplaza porque (no)) = (porque) > (reemplaza quizas ()) = () El procedimiento es el siguiente: (define reemplaza (lambda (nuevo-elem ls) ((null? ls) ()) (else (cons nuevo-elem (reemplaza nuevo-elem (cdr ls))))))) 4. Defina un procedimiento remueve-segundo que elimine la segunda ocurrencia de un elemento dado a de una lista ls. Puede usar el procedimiento remueve-primero para definir remueve-segundo. Pruebe su procedimiento con: > (remueve-segundo nueva (mi nueva vecina adora la ropa nueva)) = (mi nueva vecina adora la ropa) > (remueve-segundo nueva (mi nueva vecina adora la ropa)) 47
10 = (mi nueva vecina adora la ropa) > (remueve-segundo vecina (mi vecina y tu vecina hablan sobre la nueva vecina) = (mi vecina y tu hablan sobre la nueva vecina) > (remueve-segundo gato ()) = () El procedimiento es el siguiente: (define remueve-segundo (lambda (elem ls) ((null? ls) ()) ((equal? (car ls) elem) (cons elem (remueve-primero elem (cdr ls)))) (else (cons (car ls) (remueve-segundo elem (cdr ls))))))) 5. Defina un procedimiento sandwich-primero que tome dos elementos, a y b, y una lista ls como sus argumentos. El procedimiento debe reemplazar la primera ocurrencia de dos b s consecutivas en ls con b ab. Pruebe su procedimiento con: > (sandwich-primero carne pan (carne queso pan pan)) = (pan queso pan carne pan) > (sandwich-primero carne pan (pan jamon pan queso pan)) = (pan jamon pan queso pan) > (sandwich-primero carne pan ()) = () El procedimiento es el siguiente: (define sandwich-primero (lambda (a b ls) ((null? ls) ()) ((null? (cdr ls)) (cons (car ls) ())) ((and (equal? (car ls) b) (equal? (cadr ls) b)) (cons b(cons a(cons b(cddr ls))))) (else (cons (car ls) (sandwich-primero a b (cdr ls))))))) 48
11 6. Defina un procedimiento lista-de-simbolos? que evalúe si los elementos de alto nivel de una lista ls son símbolos. Pruebe su procedimiento con: > (lista-de-simbolos? (uno dos tres cuatro cinco)) = #t > (lista-de-simbolos? (gato perro (gallina cerdo) vaca)) = #f > (lista-de-simbolos? (a b 3 4 d)) = #f > (lista-de-simbolos? ()) = #t El procedimiento es el siguiente: (define lista-de-simbolos? (lambda (ls) ((null? ls) #t) (else (and (symbol? (car ls)) (lista-de-simbolos? (cdr ls))))))) 2.5 Ejercicios Propuestos 1. Defina un procedimiento remueve-excepto-el-ultimo que quite todas las ocurrencias del nivel superior de un elemento dado elem en una lista excepto por el último. Evalúe su procedimiento usando: (remueve-excepto-el-ultimo a (bananas))= (bnnas) (remueve-excepto-el-ultimo a (banana))= (bnna) (remueve-excepto-el-ultimo a (c a r l o s)) = (c a r l o s) (remueve-excepto-el-ultimo a (r o b e r t)) = (r o b e r t) (remueve-excepto-el-ultimo a ()) = () 2. Defina un procedimiento pluralizar que tome una lista ls y cambie los elementos anteriores según las reglas siguientes: 49
12 (a) Si el último elemento del nivel superior es f, sustituirlo por v y agregar esalacoladelalista. (b) Si los dos últimos elementos de nivel superior son fe, sustituir la f por una v, dejando la e sin alterar y agregando una s al final de la lista. (c) Si las reglas 1 y 2 no se aplican, entonces no modifique la lista. Evalúe su procedimiento usando: (pluralizar (s h e l f)) = (s h e l v e s) (pluralizar (w i f e)) = (w i v e s) (pluralizar (p e o p l e)) = (p e o p l e) (pluralizar (feel))= (feel) (pluralizar (referee))= (referee) (pluralizar (coffee))= (coffee) (pluralizar (g i f t)) = (g i f t) (pluralizar (fefefe))= (fefeves) (pluralizar ()) = () 3. El siguiente procedimiento, llamado misterio, toma como argumentos una lista que contiene al menos dos elementos de alto nivel (define misterio (lambda (ls) (if (null? (cddr ls)) (cons (car ls) ()) (cons (car ls) (misterio (cdr ls)))))) Cuál es el valor de (misterio (12345))? Describaelcomportamiento general de misterio. Sugiera un nombre apropiado para este procedimiento. 4. Defina un procedimiento lista-de-primeros quetomecomoargumento una lista compuesta de listas no vacías de elementos. Este procedimiento debe devolver una lista compuesta de los primeros elementos 50
13 de alto nivel de cada una de las sublistas. Pruebe su procedimiento con: (lista-de-primeros ((a) (b c d) (e f))) = (a b e) (lista-de-primeros ((123)(456)))= (1 4) (lista-de-primeros ((uno))) = (uno) (lista-de-primeros ()) = () 5. Defina un procedimiento remueve-ultimo que remueva la última ocurrencia de alto nivel de un elemento dado elem en una lista ls. Pruebe su procedimiento con: (remueve-ultimo a (bananas))= (banans) (remueve-ultimo a (banana))= (banan) (remueve-ultimo a ()) = () 6. Defina un procedimiento todo-igual? que tome como argumento una lista ls y pruebe si todos los elementos de alto nivel de ls son iguales. Pruebe su procedimiento con: (todo-igual? (aaaaa))= #t (todo-igual? (ababab))= #f (todo-igual? ((a b) (a b) (a b))) = #t (todo-igual? (a)) = #t (todo-igual? ()) = #t 51
14 52
Lenguajes de Programación Programación funcional
Lenguajes de Programación Programación funcional Roberto Bonvallet Departamento de Informática Universidad Técnica Federico Santa María Concepto de función En el paradigma imperativo: Una función es una
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
Tema 3. Listas Recursión sobre datos
Tema 3 Listas Recursión sobre datos José A. Alonso M. José Hidalgo Álvaro Romero Dpto. Ciencias de la Computación e Inteligencia Artificial UNIVERSIDAD DE SEVILLA Informática ListasRecursión sobre datos
4.5 Ligado de Variables en Scheme
4.5 Ligado de Variables en Scheme Referencia a variables, lambda, formas let y asignación a) Referencia a una Variable variable retorno: valor de la variable Cualquier identificador no citada en una expresión
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
CAPÍTULO IV: 4.1 Introducción a la. Programación Funcional
CAPÍTULO IV: Programación Funcional 4.1 Introducción a la Programación Funcional 1 Programación Funcional Paradigma diferente a los imperativos, que se aleja de la máquina de von Neumann Basado en funciones
Aplicación de la Inducción Matemática Programación Funcional. Julio Ariel Hurtado Alegría Departamento de Sistemas Universidad del Cauca
Aplicación de la Inducción Matemática Programación Funcional Julio Ariel Hurtado Alegría Departamento de Sistemas Universidad del Cauca Motivación Programación Imperativa Declarativa Procedimental Ejemplo:
Inducción, Recursión y Alcance. Inducción, Recursión y alcance. Inducción, Recursión y Alcance. Inducción, Recursión y Alcance
Inducción, Recursión y alcance Especificación inductiva de tipos de datos Tipo de datos: Conjunto de valores Conjunto de operaciones sobre dichos valores ejemplo: Sea S el conjunto más pequeño tal que:
4.3 Recursión en Scheme. Recursión simple y asignación
4.3 Recursión en Scheme Recursión simple y asignación Recursión Simple Un procedimiento recursivo es aquel se aplica a si mismo. Ejemplo: (define length (lambda (ls (if (null? ls 0 (+ 1 (length (cdr ls
4.3 Recursión en Scheme
4.3 Recursión en Scheme Recursión simple y asignación Recursión Simple Un procedimiento recursivo es aquel se aplica a si mismo. Ejemplo: (define length (lambda (ls (if (null? ls 0 (+ 1 (length (cdr ls
Tema 6: Estructuras de datos recursivas
Tema 6: Estructuras de datos recursivas Índice 1 Listas jerárquicas...2 2 Árboles binarios... 4 3 Árboles genéricos...7 4 Referencias...10 1. Listas jerárquicas Las listas tienen la propiedad de la clausura
Programación Funcional en LISP Lógica para Ciencias de la Computación
Programación Funcional en LISP Lógica para Ciencias de la Computación Primer Cuatrimestre de 2009 Material Adicional Introducción A lo largo de la carrera estudiaremos diversos paradigmas de programación:
Tema 4: Programación funcional avanzada en Scheme
Tema 4: Programación funcional avanzada en Scheme Índice 1 Let... 2 2 Let*... 5 3 Letrec... 5 4 Quote...6 5 Eval... 7 6 Datos compuestos: parejas...8 7 Los datos compuestos pueden ser funciones...11 8
Fundamentos de programación clase 3: Booleanos, condiciones y expresiones condicionales
Fundamentos de programación clase 3: Booleanos, condiciones y expresiones condicionales Autor: Ángela Villota Profesor: Jairo Ernesto Maldonado G. http://campusvirtual.univalle.edu.co [email protected]
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
Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta
Centro Asociado Palma de Mallorca Antonio Rivero Cuesta La Sintaxis de Java II... 6 Estructuras de control... 7 Estructuras de selección... 8 Sentencia if... 9 Sentencia if - else... 12 Operador condicional...
Tema 4.- Recursión e iteración
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
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
DISEÑO ESTRUCTURADO USANDO HERRAMIENTAS DE
DISEÑO ESTRUCTURADO USANDO HERRAMIENTAS DE REPRESENTACIÓN DE ALGORITMOS PSEUDOCÓDIGO El pseudocódigo es una herramienta de programación en la que las instrucciones se escriben en palabras similares al
PRIMER TUTORIAL DE LipsWorks Personal Edition 6.0.1
PRIMER TUTORIAL DE LipsWorks Personal Edition 6.0.1 Interprete 1. Realizar una suma Tipos de Datos Existen 2 Tipos de datos Átomos y Listas Datos Tipo Átomos: Los átomos son las expresiones LISP más elementales.
Tema 2: Introducción a Scheme. Sesión 4: Introducción a Scheme (2)
Tema 2: Introducción a Scheme Sesión 4: Introducción a Scheme (2) Referencias DrRacket (http://racket-lang.org/) A brief tour of DrScheme (http://www.plt-scheme.org/software/drscheme/ tour/) Structure
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
2º Certamen ILI-253 Lenguajes de Programación Juan Pablo Menichetti Jorge Mujica 10 de Junio del 2004
º Certamen ILI-53 Lenguajes de Programación Juan Pablo Menichetti Jorge Mujica 10 de Junio del 004 ta: Tiempo: 10 Minutos. Responda con lápiz indeleble para acceder a recorrecciones. Utilice solo las hojas
Repaso Dr Racket Febrero de Facultad de Ingeniería. Universidad del Valle
Repaso Dr Racket [email protected] Facultad de Ingeniería. Universidad del Valle Febrero de 2017 Contenido 1 2 3 4 5 6 Notas sobre Dr Racket ½Lo puedes instalar en Windows, Linux
Tema 5.- Tipos de datos compuestos
UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR DE CÓRDOBA DEPARTAMENTO DE INFORMÁTICA Y ANÁLISIS NUMÉRICO PROGRAMAC CIÓN DECLARATIVA INGENIERÍA INFORMÁTICA ESPECIALIDAD DE COMPUTACIÓN CUARTO CURSO
Fundamentos PHP. El término puntuación nos referimos a la sintaxis usada en PHP para la terminación de una línea de código (;)
Tags Fundamentos PHP La Sintaxis de PHP se deriva de muchos lenguajes de programación principalmente de C pero Perl también ha tenido mucha influencia en esta sintaxis Con las últimas incorporaciones agregadas,
ÁRBOLES DE SINTAXIS. Los nodos no terminales (nodos interiores) están rotulados por los símbolos no terminales.
ÁRBOLES DE SINTAXIS ÁRBOL grafo dirigido acíclico. Los nodos no terminales (nodos interiores) están rotulados por los símbolos no terminales. Los nodos terminales (nodos hojas) están rotulados por los
Programación Funcional Lisp-Scheme
Programación Funcional Lisp-Scheme Dr. Oldemar Rodríguez Rojas Escuela de Informática Universidad de Nacional Dónde bajar? Lisp (EdScheme): www.schemers.com com Ejemplo: => (+ (* 3(+ (* 24) (+ 35))) (+
Curso de Java Introducción a la Programación III
Curso de Java Introducción a la Programación III Jaime Fernández Martín Curso INEM 02830. Programación en Java Marzo 2010 Índice 1 Operadores relacionales e igualdad 2 Estructuras de control condicional
Para el Segundo Parcial
Para el Segundo Parcial Ejercicios Del libro Introducción a la Programación con Python realice los siguientes ejercicios en cada da una de las secciones indicadas. Tiras de Caracteres Sección 5.1.6 167,
FUNDAMENTOS DE PROGRAMACIÓN Datos recursivos II
FUNDAMENTOS DE PROGRAMACIÓN Datos recursivos II Ángela Villota Gómez Escuela de Ingeniería de Sistemas y Computación Facultad de Ingeniería Universidad del Valle Primera parte: Repaso de funciones con
Programación Orientada Objetos. Estructuras de control if, If else, switch
Programación Orientada Objetos Estructuras de control if, If else, switch Estructuras de control Las estructuras condicionales controlan si una sentencia o bloque de sentencias se ejecutan, en función
Capítulo 4. Control de flujo. Continuar
Capítulo 4 Control de flujo Continuar Introducción El control de flujo permite encausar a la computadora sobre la ruta que debe seguir al momento de la ejecución de un programa, para ello se apoya en las
4.7 Operaciones sobre Objetos en Scheme
4.7 Operaciones sobre Objetos en Scheme Equivalencias y predicados de tipos, listas, números, caracteres, strings y vectores Ejemplos de Equivalencia (eq? a a) ;=> #t (eq? 3.1 3.1) ;=> () (eq? (cons a
4.7 Operaciones sobre Objetos en Scheme. Equivalencias y predicados de tipos, listas, números, caracteres, strings y vectores
4.7 Operaciones sobre Objetos en Scheme Equivalencias y predicados de tipos, listas, números, caracteres, strings y vectores a) Equivalencias (eq? obj 1 obj 2 ) retorno: #t si son idénticos (eqv? obj 1
Programación Declarativa
Programación Declarativa Tema 2: LISP (SCHEME) 2 Tema 2: LISP (SCHEME) Introducción Representación de Datos Definición de Funciones Predicados Listas 3 Introducción (I) SCHEME es un dialecto de LISP (LISt
JavaScript Básico. Elementos Básicos: Comentarios: Literales: Valores que puede tomar una variable o una constante.
Javascript (II) 1 Elementos Básicos: Comentarios: Para una línea // Esto es un Comentario Para un bloque /*......... */ Literales: Valores que puede tomar una variable o una constante. Ejemplos: "Soy una
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
Tema 3: Características de la programación funcional
Tema 3: Características de la programación funcional Sesión 5: El paradigma funcional (1) martes 22 de febrero de 2011 Referencias Capítulo 1.1.5 SICP: [[http://mitpress.mit.edu/sicp/full-text/book/book-z-
Programación de Sistemas. Unidad 6. Macro Procesador
Programación de Sistemas Unidad 6. Macro Procesador Contenido Introducción Algoritmos y Estructuras Características Independientes de la Máquina Opciones de Diseño Introducción Introducción Una macro instrucció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
UNIDAD 2. ESTRUCTURAS DE DATOS SECUENCIALES. 1. Pilas (Stacks)
UNIDAD 2. ESTRUCTURAS DE DATOS SECUENCIALES 1. Pilas (Stacks) Una pila es una coleccion de elementos en la que sólo se pueden insertar y eliminar datos por uno de los extremos de la lista. Al igual que
Lección 3 Sentencias de control
3.1. INTRODUCCIÓN - Hasta aquí: ejecución secuencial de los programas. - Aquí vamos a ver: Lección 3 Sentencias de control Sentencias de control Sentencias condicionales: if- y switch-case Sirven para
Manual de Lisp para IACS (Curso 91 92)
Dpto. de Álgebra, Computación, Geometría y Topología Universidad de Sevilla Manual de Lisp para IACS (Curso 91 92) Sevilla, 1992 Contenido 1 Introducción 1 1.1 Introducción............................
Trata siempre de documentar tus funciones, pues es ayuda para el usuario.
Nombre: Matricula: Problema 1. TAREA 5 Fecha: Grupo: Parte 1: Tipos de funciones Para cada una de las siguientes funciones, especifique el tipo de dato de la salida. Se puede asumir que cada función es
Operaciones aritméticas
Operaciones aritméticas Operador aritmético Operación Ejemplo Resultado Potencia 4 3 64 Multiplicación 8.25 7 57.75 / División 15 / 4 3.75 Suma 125.78 62.50 188.28 Resta 65.30 32.33 32.97 mod Módulo (residuo)
Operadores. Java es un lenguaje rico en operadores, que son casi idénticos a los de C/C++.
Operadores Java es un lenguaje rico en operadores, que son casi idénticos a los de C/C++. Operadores aritméticos Son operadores binarios (requieren siempre dos operandos) que realizan las operaciones aritméticas
Función SI- Microsoft Office Excel
Función SI Devuelve un valor si la condición especificada es VERDADERO y otro valor si dicho argumento es FALSO. Utilice SI para realizar pruebas condicionales en valores y fórmulas. Sintaxis SI(prueba_lógica;valor_si_verdadero;valor_si_falso)
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
EXPRESIONES Y OPERADORES
EXPRESIONES Y OPERADORES Una expresión es un conjunto de operandos y operadores cuyo resultado puede ser evaluado. Las expresiones constituyen la base de cualquier aplicación y se construyen agrupando
Tema 3. Patrones y Definiciones de Funciones
Programación Declarativa Haskell Informática Sistemas Curso 2003-2004 Pepe Gallardo Universidad de Málaga Tema 3. Patrones y Definiciones de Funciones 3.1 Comparación de Patrones Patrones constantes Patrones
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.
Consulta Avanzado. Objetivo. Contenido. Consulta avanzado. Sesión 1. Aprender a usar las funciones consultav, consulta H, Si y es Error.
Consulta Avanzado Objetivo Aprender a usar las funciones consultav, consulta H, Si y es Error. Contenido Combinación de funciones: CONSULTAV, CONSULTAH, SI, ESERROR Búsqueda Múltiple. Consulta avanzado
Estructuras de Control. Secuencia y Selección
Estructuras de Control. Secuencia y Selección InCo - FING Programación 1 InCo - FING Estructuras de Control. Secuencia y Selección Programación 1 1 / 35 Estructuras de control InCo - FING Estructuras de
Estructuras de Control. Secuencia y Selección
Estructuras de Control. Secuencia y Selección InCo - FING Programación 1 Contents 1 Estructuras de control 2 1.1 Clasificación.............................. 2 1.2 La secuencia..............................
Tema 2.- Expresiones y funciones
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
Introducción a Python. Cecilia Manzino
Características del lenguaje Es un lenguaje de programación multiparadigma, soporta la programación orientada a objetos, imperativa y, en menor medida, funcional. Es un lenguaje multiplataforma, puede
Tipos de datos algebraicos
Tipos de datos algebraicos Taller de Álgebra I Segundo cuatrimestre de 2013 Programación funcional Recordemos que un tipo de datos es un conjunto dotado con una serie de operaciones sobre los elementos
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
Sentencias de control de flujo
Bucles Sentencias de control de flujo Departamento de Electrónica Fundación San Valero Bucles Hasta ahora los programas que hemos visto eran lineales. Comenzaban por la primera instrucción y acababan por
El pseudocódigo es una herramienta de programación en la que las instrucciones se escriben en palabras similares al inglés o español, que facilitan
El pseudocódigo es una herramienta de programación en la que las instrucciones se escriben en palabras similares al inglés o español, que facilitan tanto la escritura como la lectura de programas En esencia,
Estructura de Datos. Temario Unidad VI. Árboles Árboles Binarios
Estructura de Datos Árboles Árboles Binarios Temario Unidad VI 6.1 Definición y operaciones 6.2 Implementación 6.3 Recorrido en Árboles Binarios 6.4 Árboles AVL y su implementación 6.5 Árboles n-arios
Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos
Unidad Didáctica 3 Tipos genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Definición de tipo genérico Hablamos de un tipo genérico cuando el tipo en cuestión depende
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
Operadores aritméticos
Bloque 3.2 Operadores aritméticos Suma : x + y Resta : x y Multiplicación : x * y División : x / y Módulo : x % y (resto de la división Si los operandos son enteros tipo del resultado
Lenguaje C. República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III
República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III Lenguaje C 1 Puntos previos Los códigos fuentes generados en C requieren ser compilados
Valores Booleanos Interpretación #t Cierto #f Falso --------------------------------------------------------------------
Valores Booleanos Interpretación #t Cierto #f Falso -------------------------------------------------------------------- Números Pueden ser Complejos Reales Racionales Enteros -------------------------------
Lenguajes de Programación
Lenguajes de Programación Tipos de datos abstractos Apareamiento de patrones y gramáticas Manuel Soto Romero Universidad Nacional Autónoma de México Facultad de Ciencias 30 de agosto de 2017 Manuel Soto
Conceptos básicos sobre gramáticas
Procesamiento de Lenguajes (PL) Curso 2014/2015 Conceptos básicos sobre gramáticas Gramáticas y lenguajes Gramáticas Dado un alfabeto Σ, un lenguaje es un conjunto (finito o infinito) de cadenas de símbolos
Apunte Laboratorio ALPI - El lenguaje de programación Pascal
Apunte Laboratorio ALPI - El lenguaje de programación Pascal 1 2 ÍNDICE GENERAL Índice 1. Estructura de un Programa en Pascal 3 2. Sintaxis de Pascal 4 2.1. Uso de mayúsculas.....................................
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
Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.
LENGUAJE C CARACTERISTICAS DEL LENGUAJE 'C' El lenguaje 'C' se conoce como un lenguaje compilado. Existen dos tipos de lenguaje: interpretados y compilados. Los interpretados son aquellos que necesitan
