Você está na página 1de 6

1) Considerando a linguagem de programação utilizada pela sua equipe para

implementar o projeto da disciplina, responda as seguintes questões:

a) É possível declarar, no escopo de uma função, uma variável com o mesmo


identificador utilizado por um parâmetro da função? Sim

b) É possível declarar múltiplas variáveis utilizando o mesmo identificador em escopos


diferentes? Sim

c) É possível declarar múltiplas variáveis utilizando o mesmo identificador em blocos


aninhados? Sim

2) Considerando a linguagem de programação utilizada pela sua equipe para


implementar o projeto da disciplina, como os objetos são passados como parâmetro?
Por cópia ou referência? Exemplifique.
Ruby passa os valores por cópia, porém como tudo em Ruby é um objeto, a partir
do momento que passamos um valor por cópia, essa cópia mantem armazenado a
sua referência. Por exemplo, uma variável str que será passada por parâmetro
para uma função, a que está dentro do parâmetro da função terá a mesma
referência de memória da str, porém não irá ser alterado o str, a menos que seja
especificado no código essa alteração.
1. Apresente e explique dois exemplos práticos de polimorfismo.

Um exeplo de polimorfismo seria criar o Humano herdar da classe Animal o atributo de


comunicação, visto que todos os animais possuem alguma forma de comunicação, mas
caso eu escreva Gato, e ela também herdará da classe Animal uma forma de se
comunicar de acordo com o seu tipo.

O Segundo exemplo seria eu ter a classe Carro, onde cada carro tem a opção de
acelerar, logo, se eu quiser colocar um Gol como sendo Carro, ele pode acelerar, assim
como um Camaro também irá acelerar como o Gol, mas o que iria variar seriam seus
componentes e atributos do seu tipo e contexto.

O primeiro exemplo seria o de polimorfismo paramétrico, ou seja, depedendo da forma


como é chamada uma função, ela irá ter parametros para um determinado tipo. Por
exemplo, uma função para somar. Essa função poderia receber tanto numeros floats
como int ou char. Dependendo da assinatura do método passado, o programa irá
executar a melhor forma de poder realizar essa soma, sem erros de incompatibilidade
de tipos nas funções.
O segundo exemplo de polimorfismo seria o sobrescrever métodos, por exemplo,
existir uma classe Animal e essa classe possuir o método comunicar(). Todo animal terá
sua forma de se comunicar, então caso essa classe tenha Cachorro, ele irá se comunicar
latindo, já quando passamos Gato, ele irá se comunicar miando.
Crie uma função em uma linguagem de programação que receba uma matriz
quadrada Anxn como parâmetro e retorne:
- true, se A é composta por mais números primos do que zeros;
- false, caso contrário;
Em seguida, aponte e classifique todos os comandos e expressões utilizados
na sua implementação. (4,0)

2. Implemente dois exemplos distintos de mapeamento em uma linguagem de


programação. Em seguida, defina formalmente os mapeamentos
implementados.

nomes = ["Ana", "Joana", "Jose"]


sobrenome = " Silva"

nomes.each do |n|
nomeCompleto = n += sobrenomeFamilia
puts n
end

O mapeamento utilizado para o algoritmo acima foi o tipo de mapeamento de Array,


onde foi criado um array nomes, que possui 3 elementos do tipo string. Com esse array
queremos fazer a concatenação do sobrenome da familia. Para isso, ultilizamos um laço
para percorrer todos os indices de vetor, e para isso foi necessário que um outro valor,
n, fizesse esse mapeamento por entre esses elementos. Então temos a notação como
sendo:
m: nome → nomeCompleto.

def mult(numero, auxiliar)


return (numero * auxiliar)
end

numero = 2
auxiliar = 3

resultado = mult(numero, auxiliar)

p resultado

O mapeamento utilizado para o algoritmo acima foi o tipo de mapeamento por Função,
onde a função mult recebe como parametro os valores de numero e auxiliar,
retornando então para a variável resultado, o valor da multiplicação. Logo, temos que a
notação fica:
resultado: numero → auxiliar.
Qual é a diferença entre um comando condicional e uma expressão
condicional? Apresente um exemplo de uma expressão condicional em uma
linguagem de programação.
Um comando condicional seria um comando que possui subconjuntos onde apenas um
será escolhido para ser executado de acordo com uma expressão lógica e a depender
dessa escolha, esse comenado condicional irá alterar diretamente no fluxo de execução
desse algoritmo. São exemplos de comando condicional o if e else.
A expressão condicional é uma expressão que irá receber um determinado valor/tipo
quando essa expressão for verdadeira. Temos como exemplo o código abaixo, dado o
valor da notaAluno, a expressão resultado poderá receber “Aprovado” para uma nota
maior ou igual a 7, caso contrário receberá “Reprovado”.

notaAluno = 5

resultado = (notaAluno >= 7) ? ("Aprovado") : ("Reprovado")

puts resultado

Cite e explique três características desejáveis que um módulo de um software


deve apresentar.

Um módulo de software precisa ter a capacidade de ser abstrato, visto que os modulos
desse software podem ser abstraídos, fazendo com que o desenvolvedor consiga
trabalhar e entender o funcionamento do software sem precisar entender todo código.
Esses módulos também precisam estar bem organizados e distribuidos. Outra
caracteristica é a boa interface entre esses módulos, diminuindo a interface entre esses
módulos, já que seriam menos trabalhoso para manutenção, porém essa diminuição
deve ser equilibrada, já que poucos módulos resultaria em maior complexidade, e
muitos módulos resulta em uma complexidade de integração maior.
a) Defina formalmente uma relação.
Relações são mais abrangentes do que mapeamentos, ou seja, ela é mais alto
nível. Temos que uma relação ela deve estar ou não associado a outra, ou
seja, só serão possiveis dois resultados: verdade ou falso.

b) Qual é a diferença entre uma relação e uma função matemática?


Uma relação ela é baseado na relação de dois ou mais conjuntos. Já a função
matemática ela descreve como o elemento é mapeado para outro elemento
em outro conjunto ou no mesmo conjunto, e possui propriedades específicas
para essa função.

c- Crie as regras para a definição das relações de: avó, avô, tio e tia.

homem(Carlos)
homem(Marcelo).
homem(André).
homem(Pedro).
mulher(Amanda).
mulher(Maria).
mulher(Paloma).

pai(Carlos, Andre).
pai(Carlos, Marcelo).
pai(Carlos, Paloma).
mâe(Maria, Andre).
mâe(Maria, Marcelo).
mâe(Maria, Paloma).
pai(André, Pedro).
mãe(Amanda, Pedro).
irmão(André, Marcelo).
irmão(André, Paloma).
irmão(Marcelo, André).
irmão(Marcelo, Paloma).
irmã(Paloma, André).
irmã(Paloma, Marcelo).

avô(Carlos, Pedro):- homem(Carlos), pai(Carlos, André), pai(André, Pedro).


avó(Maria, Pedro):- mulher(Maria), mãe(Maria, Andre), pai(André, Pedro).
tia(Paloma, Pedro):- mulher(Paloma), irmã(Paloma, André), pai(André, Pedro).
tio(Marcelo, Pedro):- homem(Marcelo), irmão(Marcelo, André), pai(André,
Pedro).
////////////////////////////////////////////////////////

avô(Jovial, Tertu):- homem(Jovial), pai(Jovial, Geraldo), pai(Geraldo, Tertu).


avó(Ieda, Lucila):- mulher(Ieda), mãe(Ieda, Teresinha), mãe(Teresinha,
Lucila).
tia(Teresinha, Tertu):- mulher(Teresinha), irmão(Geraldo, Teresinha),
pai(Geraldo, Tertu).
tio(Geraldo, Lucila):- homem(Geraldo), irmão(Geraldo, Teresinha),
mãe(Teresinha, Lucila).

avô(x, z):- homem(x), pai(x, y), mãe(y, z).


avó(y, z):- mulher(y), mãe(y, x), pai(x, z).
tio(x, z):- homem(x), irmão(x, y), mãe(y, z).
tia(y, z):- mulher(y), irmão(x, y), pai(x, z).

Você também pode gostar