/*Autor: Ernesto Maya Año: 2017 Código: Tipos de datos racket*/ #lang racket ;(begin ; (display "Hello Word") ; (newline) ;Salto de línea ; ) ;Tipos de datos simple ;Booleanos #t ; verdadero #f ;falso ;Operadores ; >,<,=,equal?,or,and,not (< 3.5 4) (> 4 7) (= 3 3.0) (equal? 3 3.0) (or (> 4 7) (< 3.5 4)) (and (> 4 7) (< 3.5 4)) (not (< 3.5 4)) ;caso de booleanos (boolean? #t) ; Es un predicado que determina si el parametro es un booleano (boolean? 3) ;Números ; Reales ejem. 3.0 ; Racionales ejem. 1/2 ; Enteros 4 ; Complejos (2+3i) ; Existen predicados para determinar el tipo de número ; numbre?, es el predicado general para todos los números (number? 8) (number? 1/2) (number? (3+4i)) ;real? determina si un número es real (real? 3.4) (real? 3/4) (real? 3) ;integer? determina si un número es entero (integer? 5) (integer? 9.0) ;rational? determina si un número es de la forma p/q (rational? 1/2) (rational? 0.5) ;complejo? determina si un número es de la forma a+bi, es un complejo (complex? 3+4i) ;<= determina que los números esten en orden (<= 2 3 4 5 6 5 7) ;---> #f (<= 2 3 4 5 6 7) ;---> #t (max 13 4 6 78 3) ;---> 78 (min 13 4 6 78 3) ;---> 3 (/ 15 8) ;---> 1 7/8 (quotient 22 4) ;---> 5, devuelve parte entera de la división (remainder 22 4) ;---> 2, devuelve el residuo de la división (equal? 1/2 0.5) ;---> #f, verifica que sean el mismo número (misma representación) (= 1/2 0.5) ;---> #t, tienen el mismo valor (equal? 0.5 (/ 1 2)) ;-> #f (abs (-4)) ;---> 4, devuelve el valor absoluto (positive? (- 3)) ;---> #f (negative? (- 4)) ;---> #t (zero? 9) ;---> #f, un número es 0 (infinite? 2.0) ;---> #f, un número infinito (even? 3) ;---> #f, determina si un número es par (odd? 3) ;---> #t, determina si un número es impar ; Carácteres ; Soporta carácteres internacionales y se codifíca en UTF-8 #\a #\A #\space #\ñ #\á #\newline #\tab ;char?, determina si algo es un caracter (char? #\a) ; Con el predicado anterior hay una familia de predicados asociados ; char>?, char<?, char=?,char <=?, char >=?, que comparar dos caracteres de acuerdo a su código (char>? #\A #\a) ; También hay una familia de rpedicados para determinar que familia de predicados son: ; char-numeric?, char-alphabetic?, char-lower-case?, char-upper-case?, char-whitespace? (char-ci=? #\a #\A) ;-----> #t, no difiere de entre mayúsculas y minusculas ; char-ci>?, char-ci<? (char-upcase #\a) ;-----> #\A, convierte un caracter a mayúscula (char->integer #\a) ;-----> 97, devuelve su código ASCII ; Cadenas ; Las cadenas son representados entre comillas(""), "hola mundo" (string #\h #\o #\l #\a) ;----> "hola" (string? "hola") ;----> #t (make-string 5 #\p) ;----> "ppppp", devuelve copias de lo que le estoy pasando (substring "hola mundo cruel" 3 7) ;--> "a mu", devuelve los elementos desde 3 hasta una antes del 7, ;el conteo tiene la posición número 6 (string-ref "hola mundo" 3) ;----> #\a (string->list "hola") ;----> ' (#\h #\o #\l #\a), covierte la cadena en una lista de caracteres (string-length "hola") ;----> 4, devuelve el número de carácteres de la cadena (string-append "hola" " " "mundo" " " "cruel") ;----> Concatena, "hola mundo cruel" ;predicados asociados con string?: string>?, string<?, string=?, string>=?, string<=? (string>? "hola" "mundo") ;----> #f (string-ci=? "hola" "HOLA") ;----> #t ; Predicados de comparación que son insensibles a mayúsculas y minúsculas ; string-ci?: string-ci>?, string-ci<?, string-ci=?, string-ci>=?, string-ci<=? (integer->char 97) ;----> #\a, convierte el entero a un código de caracter ASCII (list 1 2 3 4 5)