Tarea 7

Scheme

Scheme es un lenguaje de programación que surgió en los laboratorios del MIT en 1975, cuando Guy L. Steele y Gerarld J. Sussman buscaban un lenguaje con una semántica muy clara y sencilla. Scheme es un dialecto de Lisp, es un lenguaje interpretado, muy expresivo y soporta varios paradigmas. Estuvo influenciado por el cálculo lambda. El desarrollo de Scheme ha sido lento, ya que la gente que estandarizó Scheme es muy conservadora en cuanto a añadirle nuevas características,porque la calidad ha sido siempre más importante que la utilidad empresarial. Por eso Scheme es considerado como uno de los lenguajes mejor diseñados de propósito general.

Sintaxis

Scheme, como todos los dialectos de Lisp, tiene una sintaxis muy reducida, comparado con muchos otros lenguajes. No necesita reglas de precedencia, ya que, en esencia, carece de operadores: usa notación prefija para todas las llamadas a función. Las macros de Scheme permiten adaptarlo a cualquier dominio.

TIPO SYNTAXIS EJEMPLO
Comentarios Para realizar comentarios dentro del código, se utiliza el ";", así se marca que toda la línea será de comentario ; -Esta línea es un comentario
----- Scheme posee una sintaxis reducida comparada a otros lenguajes. Utiliza la notación prefija. Por ejemplo, si se desea realizar la suma 1+1, se debe programar la siguiente instrucción:

(+ 1 1)
Parentesis Los paréntesis son obligatorios, ya que separan las instrucciones que serán evaluadas por el intérpretes ( + 1 1 )
Imprimir Para mostarar en pantalla algo se utiliza display (display '(A B))
Variables locales y globales Las variables son dinámicamente tipadas. Dicho de otra forma, no se debe especificar lo que se va a guardar dentro de la misma. Las variables globales se nombran con la instrucción (define nombre valor)


Las variables locales se definen con la instrucción ( let variables función).
(define variable 5)

(let
;variables de la operación
((numero1 5)
(numero2 7)))
Estructuras de control En Scheme existe la instrucción cond, con la cual se pueden revisar si se cumplen o no con requerimientos para realizar dicha funcion.


(cond
((condición) (función-salida)
....
....
....
(else (función-salida))

                    (define suma num1 num2) 
                    ;;manejo de las condiciones 
                    (cond 
                    ((and (> num1 0) (>num2 0)) 
                    (+ num1 num2)) 
                    (else 
                    "error al recibir parámetros" )))
                

Simbolos

Aritmeticos

+Suma
-resta
*Multiplicación
/División
absValor absoluto del argumento
expExponencial
exptdados dos argumentos : x e y, calcula x^y
maxMaximo de sus argumentos
minMinimos de sus argumentos
sqrtraiz cuadrada del argumento no negativo

Relacionales

=Igual que
> Mayor que
>= Mayor igual que
< Menor que
<= Menor igual que
even?¿es numero par?
odd?¿es numero impar?
zero?¿Número cero? devuelve #t verdadero #f falso

Manipular listas

carDevuelve el primer elemento de la lista
cdrDevuelve la lista eliminando su primer elemento
consLista formada con el primer argumento más los elementos del segundo
listLista con los parámetros pasados en orden

Funciones booleanas

andDevuelve #f tan pronto uno de sus argumentos es falso
orDevuelve #t tan pronto uno de sus argumentos es verdadero
notNegación de un valo booleano

Esqueleto de un programa en scheme

        (define (x) ;definir una variable x 
        (+ x 1) ; operaciónes o instrucciones
        (display x)) ;mostrar la variable x 
       

Aplicación para ejecutar y editar codigo Scheme

Antes de comenzar a programar en Scheme

Se necesita descargar los archivos necesarios desde la pagina GNU Operating System

--Racket---

Racket es un IDE para los lenguajes de programación funcionales como Scheme antes de junio de 2010 este programa se llamaba DrScheme, al instalarse el programa esta en ingles pero se puede cambiar a español mediante Help > Interactua con DrRacket en Español

OTROS

Paradigma al que pertenece

Scheme es un lenguaje Multiparadigma: orientado a objetos, imperativo, funcional

Programa en Scheme

Este programa lo que hace es imprimir un triangulo formado por *

(define (T) ;lo que hacemos con esta función es la figura con la que se ;llenara el triángulo
(display "*"))

(define (dibuje cant) ;esta funcion me dibuja los "*" pasando un espacio :entre ellos
   (do ((i 0 (+ i 1)))
       ((= i cant) )
     (t)
     (display " ")))

(define (triangulo) ;y esta es la que me dibuja el triangulo aquí defino ;que el tamaño sea de 10 *'s
   (do ((i 1 (+ i 1)));observa como se hace el ciclo :D
         ((= i 10) )
     (dibuje i);llamada a la funcion
     (newline)));pasa renglon