Enunciado laboratorio 1 de racket
Exercícios de Laboratório 1
1. Entre com as seguintes expressões no DrRacket e, para cada uma delas, responda às questões abaixo:
(a) Qual é a mensagem de erro gerada?
(b) Qual é o tipo de erro identificado?
(c) Como ficaria a expressão corrigida?
(define (f 1)
(+ x 10))
(define h(x)
(+ x 10))
(+ 5 (/ 1 (- (sqrt 64) (expt 2 3))))
(sin 10 20)
(somef 10)
(+ a 2))
(* ’x 4)
(string=? "aluno" ’aluno)
2. Complete os códigos abaixo, fornecendo a documentação necessária (contrato, objetivo e testes/exemplos) para cada um deles. DICA: Use testes/exemplos para tentar entender o quê cada função faz e determine os tipos dos parâmetros e saídas a partir das operações envolvidas.
(define (f1 x1 x2 x3)
(+ (+ (* x3 100) (* x2 10)) x1))
(define (f2 x1 x2 x3 x4)
(cond
[(and (symbol=? x1 x2) (char=? x3 x4)) ‘‘Bom’’]
[(or (symbol=? x1 x2) (char=? x3 x4)) ‘‘Meio bom’’]
[else ‘‘Ruim’’]))
3. Crie um programa que simule um sistema de saque de um banco. Para isto, crie definições (usando
(define Nome valor), onde Nome é o nome da definição e valor é o valor associado) para representar dados de uma conta bancária (agência, número da conta, nome do cliente e saldo disponível). O programa deve receber, como parâmetros, as informações de uma conta (agência, número da conta e nome do cliente) e um valor a ser sacado e, caso as informações fornecidas sejam iguais às das definições criadas, realizar a operação, apresentando o novo valor de saldo. Note que o saque só pode ser realizado se o saldo disponível cobrir o valor a ser retirado.
4. Imagine um robô que se move sobre uma reta com 50 posições (1 a 50). Construa um programa que, dados a posição atual, o sentido da movimentação (que pode ser ’D para direita ou ’E para esquerda) e o número de posições a serem percorridas, calcula a nova posição do robô. Note que o robô não pode ultrapassar as posições de início e fim, devendo permanecer nestas posições caso o número de posições