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

Documentos relacionados
GUÍA BÁSICA DE SCHEME v.4

API LENGUAJE DE PROGRAMACIÓN. Algoritmia y Programación

Programación Declarativa

Programación Declarativa. Ingeniería Informática Cuarto curso. Primer cuatrimestre. Escuela Politécnica Superior de Córdoba Universidad de Córdoba

Secuencias en Python. Introducción a la Computación Clase 11 Patricia Borensztejn

Informática de 1 o de Matemáticas. Ejercicios de Introducción a Haskell. Ejercicio 1 Consideremos la siguiente definición:

Programación Declarativa. Ingeniería Informática Cuarto curso. Primer cuatrimestre. Escuela Politécnica Superior de Córdoba Universidad de Córdoba

Tema 2. Tipos predefinidos

Lenguajes de Programación Programación funcional

Números enteros (cortos, largos y sin signo) Números reales (precisión simple y doble) Carácter y cadenas de caracteres. Lógicos.

Contenidos Antecedentes Sintaxis XPath Localizaciones en XPath Funciones predefinidas en XPath XPath 2.0. XPath. Jose Emilio Labra Gayo

Utilizar la cláusula RETURNS es obligatorio al momento de definir una función y sirve para especificar el tipo de dato que será devuelto.

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

Guía 1: Funciones, precedencia y tipado

Lenguajes de Inteligencia Artificial Segundo curso. Primer cuatrimestre

Guía de Trabajos Prácticos Nº 4

Tema: Estructuras de Selección en C#.

Abstracción de Datos y

Tema 3.- Predicados y sentencias condicionales

4.7 Operaciones sobre Objetos en Scheme

ESCUELA POLITÉCNICA SUPERIOR PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF

4.7 Operaciones sobre Objetos en Scheme. Equivalencias y predicados de tipos, listas, números, caracteres, strings y vectores

CAPÍTULO IV: 4.1 Introducción a la. Programación Funcional

Introducción a la programación. Oscar Alejandro González Bustamante. José Víctor Martínez Ramos.

Tema: Estructuras de Selección en C#.

Apunte Laboratorio ALPI - El lenguaje de programación Pascal

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

Plano tangente a una superficie y a una superficie de nivel, derivada direccional y regla de la cadena

Primeros pasos programando en Python

Fundamentos Conceptuales de la Informática. Funciones. Prof. Manuel Rivas

CALCULO GRADO EN INGEN. INFORM. DEL SOFTWARE PRACTICA 1. INTRODUCCIÓN A MATLAB

Un calculadora avanzada... y algo más!

El lenguaje C. 1. Identificadores, constantes y variables

Arreglos numéricos. Programación Clase 23

Tema 8: Funciones de orden superior

Tema 4.- Recursión e iteración

Trata siempre de documentar tus funciones, pues es ayuda para el usuario.

Capítulo 7 OPERADORES Y EXPRESIONES. Presentación resumen del libro: "EMPEZAR DE CERO A PROGRAMAR EN lenguaje C"

Tema 2: Introducción a Scheme. Sesión 4: Introducción a Scheme (2)

Una clasificación de los tipos de datos existentes en los diferentes lenguajes de programación se presenta a continuación:

Manual rápido para evaluación de series en Python

Fundamentos de programación clase 3: Booleanos, condiciones y expresiones condicionales

Tema 8: Funciones de orden superior

Este método de diseño de algoritmos en etapas, yendo de los conceptos generales a los de detalle, se conoce como método descendente (top-down).

Comprender las diferencias entre tipos de datos primitivos similares, y aprender a elegir el tipo más conveniente en cada caso.

Prof.Juan Cabral - UTU Maldonado. Tablas de pertenencia

JavaScript Básico. Elementos Básicos: Comentarios: Literales: Valores que puede tomar una variable o una constante.

DISEÑO ESTRUCTURADO USANDO HERRAMIENTAS DE

1.1 Define un operador ( ) que devuelva True si y solo si tan solo uno de sus argumentos es True. Por ejemplo:? (3 > 2) (2 > 5)

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

Introducción a SCILAB

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

JavaScript Básico. Ejemplo. Arreglos en JavaScript Creación de Arreglos. Asignación de valores. var miarray = new Array() var miarray = new Array(10)

Tema 3: Tipos y clases

Curso de PHP. Tema 2: Lenguaje PHP básico

Informática Haskell Matemáticas Curso Pepe Gallardo Universidad de Málaga. Tema 8. Listas

Ejercicio 1 Qué responde Smalltalk cuando se le pide evaluar las siguientes expresiones?

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

Tema: Estructuras de Selección en C#.

Componentes Básicos. InCo. InCo Componentes Básicos 1 / 28

Listas y Recursión. Taller de Álgebra I. Primer Cuatrimestre de 2015

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

PRÁCTICA No. 2 FORMA POLAR Y EXPONENCIAL DE UN NÚMERO COMPLEJO. Otra forma de expresar un número complejo es la forma polar o forma módulo-argumento,

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

EL MÉTODO EQUALS EN JAVA. DIFERENCIA ENTRE IGUALDAD E IDENTIDAD. COMPARAR OBJETOS. EJEMPLOS. (CU00662B)

Tema 3: Tipos y clases

FUNDAMENTOS DE INFORMÁTICA

Tipos de datos en Haskell

GLOSARIO 1. Qué es bit y byte? Bit: Es la unidad mínima de información. Puede ser 0 o 1. Byte: Es el conjunto de 8 bits. Ejemplo:

Ejercicios Scheme. Para cada función escriba su contrato, descripción, ejemplos y los tests necesarios, antes de su implementación.

Introducción a Haskell. Cecilia Manzino

Tema 2: EL TIPO DE DATOS ENTERO. INSTRUCCIÓN DE ASIGNACIÓN Y DE COMPOSICIÓN SECUENCIAL

Breve introducción al OCTAVE

11/02/2009 IEC de febrero de 2009 Antonio Cambronero, Product Engineer OMRON Electronics Iberia S.A.U. IEC ( Programación en ST )

COLEGIO PABLO DE TARSO IED CONSTRUCCION DE PROYECTOS DE VIDA PRODUCTIVOS VISUAL BASIC PRÁCTICAS DOC RAUL MONROY PAMPLONA

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

PRÁCTICA #5 Acciones, Funciones, Pase de Parámetros y Alcance de Identificadores

Transcripción:

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) + 1/5 + sen(0.5) * 3.5 a. Exprese cada una de ellas con la sintaxis de racket. b. Sin usar DrRacket evalúe cada una de ellas. Aquí un ejemplo de cómo hacerlo para la expresión (* (+ 2 3) 4): (* (+ 2 3) 4) == (* 5 4) == 20 c. Usando DrRacket, verifique los resultados obtenidos. d. Para algunas de las expresiones, realice la evaluación paso a paso. 2. Usando DrRacket, evalúe las siguientes expresiones: Quizás algunas de estas expresiones no denoten valores y resulten en error. Es bueno entender qué mensaje recibimos en esos casos! a. (/ 1 (sin (sqrt 3))) b. (* (sqrt 2) (sin pi)) c. (+ 3 (sqrt (- 4))) d. (* (sqrt 5) (sqrt (/ 3 (cos pi)))) http://www.fceia.unr.edu.ar/~iilcc/material/practicas/practica0/p0.html 1/6

e. (/ (sqrt 5) (sin (* 3 0))) f. (/ (+ 3) (* 2 4)) g. (* 1 2 3 4 5 6 7 8) h. (/ 120 2 3 2 2 5) 3. En los ejercicios anteriores aparecen algunas funciones como cos, sin, sqrt. Si la mayoría de estos nombres no le dicen nada, no se preocupe, no es necesario conocerlas por ahora. Muchas funciones que quizás le resulten conocidas ya se encuentran predefinidas en DrRacket, tales como log, tan, expt, random, max, min, floor, ceiling, abs. Escriba expresiones que combinen algunas de estas funciones. Si no conoce su comportamiento, consulte la documentación o a los docentes. 2 Strings 1. Evalúe en DrRacket las siguientes expresiones: a. (string-append "Hola" "mundo") b. (string-append "Pro" "gra" "ma.") c. (number->string 1357) d. (string-append "La respuesta es " (number->string (+ 21 21))) e. (* (string-length "Hola") (string-length "Chau")) Recuerde que en Ciencias de la Computación contamos desde 0. Explore la función string-ith, que, dados un string s y un número natural n, devuelve el caracter que ocupa la n-ésima posición en s. Más interesante es la función substring. Aquí un ejemplo de cómo funciona: (substring "Programar" 2 5) == "ogr" Escriba expresiones que utilicen esta función Qué sucede si el último argumento es menor que el penúltimo? Y si son iguales? http://www.fceia.unr.edu.ar/~iilcc/material/practicas/practica0/p0.html 2/6

3 Valores de verdad Los valores de verdad, o valores booleanos son fundamentales para la programación, y se encuentran presentes en cualquier lenguaje. En general, cuando un programa debe tomar una decisión, lo hace en función de un valor booleano. Hay sólo dos valores de verdad, verdadero y falso, que en DrRacket escribimos de la siguiente forma, respectivamente: #true (o #t) y #false (o #f). 3.1 Algunas operaciones Así como uno puede utilizar operadores aritméticos para crear expresiones complejas, DrRacket nos provee operadores booleanos, que permiten formar nuevas expresiones a partir de otras más simples. En esta prácticas comenzaremos viendo tres operadores: and, or y not. Aprovechando que sólo hay dos valores booleanos, es fácil definir las operaciones indicando cuál es el resultado de la operación para cada caso posible. El operador and es verdadero exactamente cuando sus argumentos son todos verdaderos. Es decir, la expresión (and p q) es verdadera si y sólo si tanto p como q evaluan a #true. Esta operación puede definirse mediante la siguiente tabla: p q (and p q) #true #true #true #true #false #false #false #true #false #false #false #false Del mismo modo, el operador or se define a través de la siguiente tabla: p q (or p q) #true #true #true #true #false #true #false #true #true #false #false #false Observe que (or p q) es verdadero si al menos uno entre p y q es verdadero. Finalmente, el operador not recibe un sólo argumento, y nos devuelve el valor opuesto: p (not p) #true #false #false #true http://www.fceia.unr.edu.ar/~iilcc/material/practicas/practica0/p0.html 3/6

A partir de estas definiciones, ya tenemos todo lo necesario para calcular con valores de verdad. Consideremos la expresión (and #true (or #false (not #false))) Podemos proceder de la siguiente forma: (and #true (or #false (not #false))) == definición de not (and #true (or #false #true)) == definición de or (and #true #true) == definición de and #true 3.2 Mezclando booleanos y números Muchas expresiones que involucran números evalúan a números. Por ejemplo, (+ 1 4) reduce a 5. Sin embargo, hay otras expresiones que utlizamos en matemática, tales como 3 < 2 + 2 que no representan un número, sino un valor de verdad. En DrRacket escribimos (< 3 (+ 2 2)), y si evaluamos esta expresión obtenemos #true. Pues todos sabemos que 3 es menor que 4. Otras relaciones que ya vienen definidas en DrRacket son > (mayor), = (igual), <= (menor o igual), >= (mayor o igual). 1. Evalúe en DrRacket las siguientes expresiones: a. (not #t) b. (or #t #f) c. (and #t #f) d. (and #t (or #f (not #f)) (not #t)) e. (not (= 2 (* 1 3))) http://www.fceia.unr.edu.ar/~iilcc/material/practicas/practica0/p0.html 4/6

f. (or (= 2 (* 1 3)) (< 4 (+ 3 2))) 2. Considere la siguiente frase: "pi es un número mayor que 3, y 2 + 2 es igual a 5". Si quisiéramos representarla en racket, escribimos: (and (> pi 3) (= (+ 2 2) 5)) Evaluando esta expresión en podemos concluir que la frase es falsa. Se pide, para cada frase, escribir una expresión que la represente y calcular su valor de verdad: a. El coseno de 0 es positivo b. La longitud de la cadena "Hola, mundo" es 14 c. "pi" es un número entre 3 y 4 d. El área de un cuadrado de lado 5 es igual a la raíz cudrada de 625 4 Imágenes 1. Este ejercicios presenta algunas expresiones con la intención de familiarizarse con imágenes. Modifique estas expresiones para observar el comportamiento de las funciones aquí presentadas. a. (circle 10 "solid" "red") b. (rectangle 10 20 "solid" "blue") c. (rectangle 20 12 "outline" "magenta") d. (overlay (rectangle 20 20 "solid" "blue") (circle 7 "solid" "green")) e. (empty-scene 100 100) f. (place-image (circle 10 "solid" "blue") 40 80 (empty-scene 100 100)) g. (+ (image-width (circle 10 "solid" "red")) (image-height (rectangle 10 20 "solid" "blue"))) 5 Funciones 1. Defina una función que recibe dos números x e y, devolviendo la distancia al origen del punto (x,y) 2. Defina una función que recibe cuatro números x1, y1, x2 e y2; devolviendo la distancia entre los puntos (x1, y1) y (x2, y2) http://www.fceia.unr.edu.ar/~iilcc/material/practicas/practica0/p0.html 5/6

3. Defina la función vol-cubo que recibe la longitud de la arista de un cubo y calcula su volumen. 4. Defina la función area-cubo que recibe la longitud de la arista de un cubo y calcula su área. 5. Defina la función area-imagen que recibe una imagen y calcula su área. Intente aplicar esta función a valores que no son imágenes 6. Defina la función string-insert, que consume un string y un número i e inserta "- " en la posición i-ésima del string. http://www.fceia.unr.edu.ar/~iilcc/material/practicas/practica0/p0.html 6/6