Você está na página 1de 3

Universidade Federal do ABC


Bacharelado em Ciência e Tecnologia
Disciplina: Bases Computacionais da Ciência
Prof.: Angelica Lima
Turma: NC5 Sala: virtual
Exame: BCC-Lista06-Sequ Data: 22-10-2020

Ass.:
Estudante: ENRIQUE DA CRUZ ID/RA: 11202021819
#177 - 2020-10-26 - 16:00:07

Instruções:
(a) Note que o arquivo que deve ser usado em cada questão, para manipular os dados, pode ser diferente;
(b) Responda esta lista de exercı́cios necessariamente no moodle: https://moodle.ufabc.edu.br/mod/vpl/view.php?id=22207;
(c) Cada questão deve ser enviada com os nomes EXATOS de arquivos: Q1.py, Q2.py, Q3.py, Q4.py, e Q5.py;
(d) Esta lista deve ser entregue até 09/11/2020, às 6 horas da manhã. Não deixe para submeter na última hora, pois o servidor
poderá ficar sobrecarregado.

Questões Dissertativas: VERSÃO: #vXXX


1567 1. Considere a tabela deste link: https://www.dropbox.com/s/a2tebocfesqtbv8/pontos-plano-14.csv?dl=1
Faça um programa contendo a função calcula distancia manhattan para calcular e retornar as somas das distâncias
entre três pontos p1, p2 e p3 no plano cartesiano, obtidos através de três ı́ndices (linhas) da tabela df, referentes a esse
link. O programa deverá solicitar do teclado indice p1, indice p2 e indice p3 e passar estes valores para a função,
que calculará as distâncias e irá retornar a soma. Essa função deve ter a assinatura a seguir:
def calcula_distancia_manhattan(df, indice_p1, indice_p2, indice_p3):
Assim, esta função recebe como parâmetros df, indice p1, indice p2 e indice p3, representando a tabela do link
anterior, o ı́ndice do ponto p1, o ı́ndice do ponto p2 e o ı́ndice do ponto p3, respectivamente. Esta função deve calcular e
retornar (usando o comando return) a soma das distâncias manhattan entre estes três pontos, com duas casa decimais.
Observe que esta soma é exatamente o perı́metro de triângulo formado pelos pontos p1, p2 e p3. Equação para calcular
essa distância entre os pontos p1 e p2: dp1,p2 =| x2 − x1 | + | y2 − y1 |. Sugestão: utilizar os comandos a seguir para
obter as coordenadas (xi , yi ) da tabela df, tendo o ı́ndice indice pi:
x_1, y_1 = df[[’X’,’Y’]].loc[indice_p1]
x_2, y_2 = df[[’X’,’Y’]].loc[indice_p2]
x_3, y_3 = df[[’X’,’Y’]].loc[indice_p3]

Entradas lidas com o comando input no programa principal (e passadas para função):
28
4
25

Retorno da função (valor que a função retorna), impresso no programa principal:


22.00

Crie o gráfico a seguir, mas não imprimir na sua solução enviada na atividade do Moodle (a reta em azul ilustra a distância
euclidiana): http://mctest.ufabc.edu.br:8080/tmp/imgs180days/figBCC-seq04(pontos-plano-14)(28;4;25).png

Atenção: Na sua solução considere que o arquivo está armazenado localmente. Assim, para abri-lo utilize o nome
"pontos-plano-14.csv", ao invés de utilizar o link anterior.
1568 2. Considere a tabela deste link: https://www.dropbox.com/s/s7dcmpu9kpqjgh0/pontos-plano-30.csv?dl=1
Faça um programa contendo a função calcula esfera area para calcular e retornar o(a) area da esfera com centro no
ponto (0, 0, 0) e passando pelas coordenadas (x, y, z) da linha com indice p em três dimensões. Os valores (x, y, z) são
obtidos através do ı́ndice (linha) da tabela df, referentes a esse link. O programa deverá solicitar do teclado o indice p
e passar este valor para a função, que calculará o(a) area da esfera e irá retornar este valor. Essa função deve ter a
assinatura a seguir:
def calcula_esfera_area(df, indice_p):
Assim, esta função recebe como parâmetros df e indice p, representando a tabela do link anterior e o ı́ndice do ponto
p, respectivamente. Esta função deve calcular e retornar (usando o comando return) o(a) area da esfera com centro no
ponto (0, 0, 0) e passando pelas coordenadas
p (x, y, z) da linha com indice p, com duas casas decimais. Equação para
2
calcular area: 4 ∗ π ∗ r , onde r = x + y + z 2 . Sugestão: utilizar o comando a seguir para obter as coordenadas
2 2

(x, y, z) da tabela df, tendo o ı́ndice indice p:


† MCTest: gerador e corretor de exames disponı́vel para professores - www.ufabc.edu.br
x, y, z = df[[’X’,’Y’,’Z’]].loc[indice_p]

Entrada lida com o comando input no programa principal (e passada para função):
16

Retorno da função (valor que a função retorna), impresso no programa principal:


1256.64

Desafio: Crie o gráfico a seguir, mas não imprimir na sua solução enviada na atividade do Moodle:
http://mctest.ufabc.edu.br:8080/tmp/imgs180days/figBCC-seq05(pontos-plano-30)(16).png

Atenção: Na sua solução considere que o arquivo está armazenado localmente. Assim, para abri-lo utilize o nome
"pontos-plano-30.csv", ao invés de utilizar o link anterior.
1565 3. Considere a tabela deste link: https://www.dropbox.com/s/8tq1bxi8acps36p/latitude-longitude-bairros.csv?dl=1
Faça um programa contendo a função calcula distancia km para calcular e retornar a distância entre dois pontos city1
e city2 na terra, obtidos através de dois ı́ndices (linhas) da tabela df, referente a esse link. O programa deverá solicitar
do teclado indice city1 e indice city2 e passar estes valores para a função, que calculará a distância em quilômetros
e irá retornar este valor. Essa função deve ter a assinatura a seguir:
def calcula_distancia_km(df, indice_city1, indice_city2):
Assim, esta função recebe como parâmetros df, indice city1 e indice city2, representando a tabela do link anterior,
o ı́ndice da primeira cidade e o ı́ndice da segunda cidade, respectivamente. Esta função deve calcular e retornar a
distância em quilômetros entre estas duas cidades. Dentro desta função, chamar a função distancia terra, definida no
final desta questão, que converte as coordenadas latitude e longitude em radianos e calcula a distância em quilômetros.
Sugestão: utilizar os comandos a seguir para obter as coordenadas (latidude, longitude) da tabela df, tendo os ı́ndices
indice city1 e indice city2:
latidude1, longitude1 = df[[’latitude’,’longitude’]].loc[indice_city1]
latidude2, longitude2 = df[[’latitude’,’longitude’]].loc[indice_city2]

Entradas lidas com o comando input no programa principal (e passadas para função):
6023
9801

Retorno da função (valor que a função retorna), impresso no programa principal:


1189.25

Função para calcular a distância em km, chamada dentro da função calcula distancia km:
def distancia_terra(lat1, lon1, lat2, lon2):
from math import sin, cos, sqrt, atan2, radians
lat1, lon1, lat2, lon2 = [radians(lat1), radians(lon1), radians(lat2), radians(lon2)]
dlon, dlat = [lon2 - lon1, lat2 - lat1]
a = sin(dlat / 2) ** 2 + cos(lat1) * cos(lat2) * sin(dlon / 2) ** 2
return 6371.0 * 2 * atan2(sqrt(a), sqrt(1 - a)) # 6371.0 = raio aproximado da terra

Desafio: Crie o gráfico a seguir, mas não imprimir na sua solução enviada na atividade do Moodle:
http://mctest.ufabc.edu.br:8080/tmp/imgs180days/figBCC-seq03(latitude-longitude-bairros)(6023;9801;).png

Atenção: Na sua solução considere que o arquivo está armazenado localmente. Assim, para abri-lo utilize o nome
"latitude-longitude-bairros.csv", ao invés de utilizar o link anterior.
1563 4. Considere a tabela deste link: https://www.dropbox.com/s/zm235a2os1zexut/gapminder_full.csv?dl=1
Faça um programa contendo a função escreve correlacao para calcular e imprimir a correção de duas colunas da tabela
df, referente a esse link. O programa (principal) deverá solicitar do teclado nome pais, x col e y col, chamar a função
escreve correlacao, e neste momento passar os valores nome pais, x col e y col para a função. Função calculará a
correlação e irá imprimir este valor na própria função. Essa função deve ter a assinatura a seguir:
def escreve_correlacao(df, nome_pais, x_col, y_col):
Assim, esta função recebe como parâmetros df, nome pais, x col e y col, representando a tabela do link anterior, o
nome do paı́s, o nome da coluna no eixo X e o nome da coluna no eixo Y , respectivamente. Esta função deve calcular e
imprimir o coeficiente de correlação (do paı́s lido) entre os dados da coluna representada no eixo X e os dados da coluna
representada no eixo Y , com três casas decimais. Pense mentalmente (mas não precisa imprimir): a partir do valor obtido,
o que você pode dizer sobre a correlação de dados das duas colunas em questão? Veja um exemplo a seguir:

Entradas lidas com o comando input no programa principal (e passadas para função):
Bahrain
PIB per capita
Ano

Retorno que a função imprime (quando chamada no programa principal):


0.930

Crie o gráfico a seguir com a aproximação da reta, mas não imprimir na sua solução enviada na atividade do Moodle:
http://mctest.ufabc.edu.br:8080/tmp/imgs180days/figBCC-seq01(Bahrain)(PIBpercapita)(Ano).png

Atenção: Na sua solução considere que o arquivo está armazenado localmente. Assim, para abri-lo utilize o nome
"gapminder_full.csv", ao invés de utilizar o link anterior.
1564 5. Considere a tabela deste link: https://www.dropbox.com/s/o1dkiq8fyenx5ff/pontos-plano-03.csv?dl=1
Faça um programa contendo a função calcula distancia manhattan para calcular e retornar a distância entre dois pontos
p1 e p2 no plano cartesiano, obtidos através de dois ı́ndices (linhas) da tabela df, referente a esse link. O programa
deverá solicitar do teclado indice p1 e indice p2 e passar estes valores para a função, que calculará a distância e irá
retornar este valor. Essa função deve ter a assinatura a seguir:
def calcula_distancia_manhattan(df, indice_p1, indice_p2):

Assim, esta função recebe como parâmetros df, indice p1 e indice p2, representando a tabela do link anterior, o ı́ndice
do ponto p1 e o ı́ndice do ponto p2, respectivamente. Esta função deve calcular e retornar (usando o comando return)
a distância manhattan entre estes dois pontos. Equação para calcular essa distância: | x2 − x1 | + | y2 − y1 |. Após
esse retorno, o seu programa deverá imprimir essa distância, com duas casas decimais. Sugestão: utilizar os comandos a
seguir para obter as coordenadas (xi , yi ) da tabela df, tendo o ı́ndice indice p i:

x_1, y_1 = df[[’X’,’Y’]].loc[indice_p1]


x_2, y_2 = df[[’X’,’Y’]].loc[indice_p2]

Entradas lidas com o comando input no programa principal (e passadas para função):
27
10

Retorno da função (valor que a função retorna), impresso no programa principal:


28.00

Crie o gráfico a seguir, mas não imprimir na sua solução enviada na atividade do Moodle (a reta em azul ilustra a distância
euclidiana): http://mctest.ufabc.edu.br:8080/tmp/imgs180days/figBCC-seq02(pontos-plano-03)(27;10;).png

Atenção: Na sua solução considere que o arquivo está armazenado localmente. Assim, para abri-lo utilize o nome
"pontos-plano-03.csv", ao invés de utilizar o link anterior.

Você também pode gostar