Podria decir que Scheme es un lenguaje de programacion muy poderso que bla bla bla y asi mucho perderiamos mucho tiempo en cosas no tan interesantes pudiendolo usar en cosas mucho mas importantes como lo que vamos a ver a continuacion.
En Racket se usa la notacion prefija que es donde el operador se encuentra antes de los openrandos, cosa que se explica mejor con un ejemplo:"Antes de seguir no esta de mas aclarar que cuando me refiera a Scheme o Racket va a ser practicamente lo mismo."
1. Notacion prefija: + 5 10
2. Notacion infija: 5 + 10
3. Notacion Postfija 5 10 +
Como dije anteriormente, Racket usa la notacion prefija para realizar todo tipo de operaciones logicas, aritmeticas y algebraicas, esto no es muy complejo y se logra enteder mejor con varios ejemplos:
1. la expresion (d * π) * n en notacion prefija seria: * (* d π) n
2. la expresion para hallar el area de un circulo seria π * (r * r) en notacion prefija seria * π (* r r)
Si bien esta es notacion prefija y de esta forma se pueden ingresar los datos en scheme hay fomas un poco mas optimas, nos centraremos particularmente en el ejemplo 2.
Si bien conocemos cual es la formula para hallar el area de un circulo (pi por radio al cuadrado) en Racket lo podemos expresar de varias formas:
1. (* π (* r r))
2. (* π (sqr r))
3. (* π (expt r 2)
Ahora procedere a explicar cada una de estas variantes:
1. Esta es la forma mas sencilla de escribir la solucion a ese problema (pi por dos veces el radio)
2. Esta es una forma un poco mas compleja de entender ya aqui estamos empezando a usar las palabras reservadas (tambien conocidas como funciones reservadas) de Racket, donde "sqr" significa "elevar al cuadrado".
3. En este caso tambien se usa las palabras reservadas de Racket, donde "expt" me indica que quiero elevar una base x a una potencia n sea el numero que sea, expt es una funcion que usa de dos datos de entrada para poder operar donde el primer dato sera la base y el segundo el exponente al que se elevara, ejemplos: (expt 3 2) = 9, (expt 3 3) = 27, (expt 5 3) = 125
Vamos a ver una cosijirijillas mas complejirijillas.
Ahora tomaremos de ejemplo un "tubo industrial" de un material x, super resistente, anticorrosivo y aparte de eso tiene un formidable grosor para evitar el ruido (interferencia electromagnetica del exterior), bla bla bla, vamos a calcular el volmen que tiene este particular tubo de cual nos informan que tiene un largo de "L" centimetros, un diametro total de "D" centimetros y un grosor de "G" centimetros.
Reemplazamos las puercas letras por numeros
L = 50
D = 10
G = 4
![]() |
Okey zhy, estha echo en pogüer poin. |
La razon por la cual hasta el momento la mayoria sino es que todos son ejemplos de volumenes y areas de objetos es que son mas faciles de entender pues que se pueden imaginar las figuras.
Bueno, para determinar el volumen de este tubo hay varias formas posibles:
1. Esta es la primera forma de resover este problema, aqui lo que pretendemos hacer es una sustracion de dos volumenes ya que un tubo es esta formado basicamente por 2 cilindros, el exterior y el interior (vacio), para eso hallamos los valores de los volumenes de los cilindros y despues los le sustraemos a el volumen mayor el volumen menor y nos da el volumen del tubo o cilindro hueco.
Forma larga y tediosa pero entendible en el paso a paso. |
2. Esta es la segunda formula de resolver ese problema, aqui lo que hacemos es hallar las areas de las bases de los dos cilindros, el exterior (cilindro mayor) y el interior (el vacio o cilindro menor), le restamos el area menor al area mayor y ese resultado lo multiplicamos por el largo del tubo.
Forma izi, cualquier ratakid la puede resolver. |
Ahora vamos a pasar estas cosas a codigo. O̶y̶e̶ ̶z̶h̶y̶,̶ ̶k̶e̶ ̶z̶u̶k̶u̶l̶e̶n̶t̶h̶o̶. Con calma ire explicando paso a paso el por que de como se escribe el codigo en Scheme:
Lo que haremos a continueacion es la construcion de la primera funcion en DrRacket
(define (tubononon D L G)
(- (* L (* (/ D 2)
(expt 3.1416 2)))
(* L (* (/ (- D G) 2)
(expt 3.1416 2))))
"¡Bien! ¿Que hago?¿Copypaste al DrRacket?¿Como se lo que es lo que estoy haciendo?" esas son las preguntas mas comunes que ustedes tendran.
Vamo' a hacé esto de la forma mas sencilla que conozco:
>greentext (?).
>(define
Con este "comando" se indica que lo siguiente va ser una funcion o una variable y siempre se debe cerrar (todos los parentesis o corchetes que se abran en el Scheme se deben cerrar).
>(tubononon
Es es el nombre de nuestro programa
>D
Es la variable diametro, en esta caso se refiere al diametro del cilindro mayor
>L
Es la variable longitud, en este caso se refiere a la longitud de los dos cilindros
>G
Es la variable grosor, en este caso se refiere a la diferencia entre los radios de los cilindros
Como podemos ver las variables se posicionan despues de el nombre de la funcion, otra cosa que podemos hacer es nombrar a las variables como queramos y lo mejor es que sea con nombres relevantes para no confundirnos.
No hay comentarios.:
Publicar un comentario