Buscar

PROVA 2 - PROGRAMAÇÃO 1 - SCILAB - 2014/1 - DECOM - UFOP

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 8 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 8 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Universidade Federal de Ouro Preto – UFOP 
Instituto de Ciências Exatas e Biológicas – ICEB 
Departamento de Computação – DECOM 
 
 
 
 
1 
Programação de Computadores I – BCC 701 – 2014-1 
Segunda Avaliação – 31/05/2014 – Valor (10,0) 
 
ATENÇÃO: Leia com atenção as questões da prova. A interpretação do enunciado faz 
parte da avaliação. Todos os programas devem ser escritos em SciLab. 
B O A P R O V A ! 
Aluno: ________________________________________________________________ 
 
Matrícula: ____________________________________ Turma: __________________ 
 
Questão 1 (2.5) 
 Considere o somatório com n termos definido a seguir: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 Escreva um programa Scilab que solicite ao usuário o valor de n , calcule e imprima 
o valor desse somatório, considerando que x = 50 e y = -80. Seu programa deve verificar se 
o valor de n digitado pelo usuário é um número positivo, n > 0, solicitando repetidamente um 
novo valor, caso o valor digitado não seja válido. Você pode supor que o valor digitado pelo 
usuário será sempre um número inteiro (você apenas precisa testar se esse valor é positivo). 
 A seguir, dois exemplos de execução do programa. 
 
Execução 1 
INFORME O NÚMERO DE PARCELAS: 0 
VALOR INVÁLIDO PARA n ! 
INFORME O NÚMERO DE PARCELAS: -6 
VALOR INVÁLIDO PARA n ! 
INFORME O NÚMERO DE PARCELAS: 1 
 
VALOR DO SOMATÓRIO COM 1 PARCELAS: -30 
 
Execução 2 
INFORME O NÚMERO DE PARCELAS: 4 
 
VALOR DO SOMATÓRIO COM 4 PARCELAS: 271.25 
 
 
Universidade Federal de Ouro Preto – UFOP 
Instituto de Ciências Exatas e Biológicas – ICEB 
Departamento de Computação – DECOM 
 
 
 
 
2 
Proposta de Código para a Solução 
 
clc; clear; 
x = 50; y = -80; 
n = input("INFORME O NÚMERO DE PARCELAS: "); 
while n <= 0 
 printf("VALOR INVÁLIDO PARA n !"); 
 n = input("INFORME O NÚMERO DE PARCELAS: "); 
end 
fat = 1; c = -5; sinal = -1; soma = 0; 
for i = 1:n 
 fat = fat * i; 
 sinal = sinal * -1; 
 c = c + 6; 
 soma = soma + ( ((2*i)-1)*x + sinal*c*y ) / fat; 
end 
printf("\nVALOR DO SOMATÓRIO COM %g PARCELAS: %g", n, soma); 
 
 
 
 
 
 
 
 
Universidade Federal de Ouro Preto – UFOP 
Instituto de Ciências Exatas e Biológicas – ICEB 
Departamento de Computação – DECOM 
 
 
 
 
3 
Questão 2 (2.5) 
 A distância entre dois pontos, A e B, no plano cartesiano pode ser dada pela 
fórmula: 
 
 
 
 Escreva um programa principal e uma função definida pelo usuário, DIST, onde: 
1. o programa principal faz a leitura das coordenadas dos pontos A e B, ou seja, os valores 
de XA , YA , XB e YB , conforme o exemplo de execução abaixo; 
2. o programa principal faz a chamada a uma função DIST, com os valores das 
coordenadas lidas. A função retorna para o programa principal o valor numérico da 
distância entre os pontos A e B. 
3. o programa principal faz a impressão da distância calculada. 
 
OBS.: não é necessária a validação dos dados de entrada, as coordenadas serão sempre 
números reais. 
 A seguir, um exemplo de execução do programa. 
 
Execução 
CÁLCULO DA DISTÂNCIA ENTRE DOIS PONTOS 
INFORME XA: 1 
INFORME YA: 1 
INFORME XB: 4 
INFORME YB: 5 
 
DISTÂNCIA ENTRE (1, 1) e (4, 5) : 5 
 
 
 
 
Universidade Federal de Ouro Preto – UFOP 
Instituto de Ciências Exatas e Biológicas – ICEB 
Departamento de Computação – DECOM 
 
 
 
 
4 
Proposta de Código para a Solução 
 
clc; clear; 
//---------------------------------------------------- 
function resposta = DIST(xa, ya, xb, yb) 
 resposta = sqrt( (xb - xa)^2 + (yb - ya)^2 ); 
endfunction 
//---------------------------------------------------- 
printf("\nCÁLCULO DA DISTÂNCIA ENTRE DOIS PONTOS") 
XA = input("INFORME XA: "); 
YA = input("INFORME YA: "); 
XB = input("INFORME XB: "); 
YB = input("INFORME YB: "); 
distancia = DIST(XA, YA, XB, YB); 
printf("\nDISTÂNCIA ENTRE (%g, %g) e (%g, %g) : %g",... 
 XA, YA, XB, YB, distancia); 
 
 
 
 
 
 
Universidade Federal de Ouro Preto – UFOP 
Instituto de Ciências Exatas e Biológicas – ICEB 
Departamento de Computação – DECOM 
 
 
 
 
5 
Questão 3 (2.5) 
 Em uma tubulação projetada para escoamento de água, deve-se avaliar uma 
grandeza denominada “perda de carga”, a qual depende da vazão de líquido, do diâmetro e da 
rugosidade do tubo. Utiliza-se para isso a fórmula de Hazen-Williams: 
 
 
 
onde: 
 J = perda de carga (m/m); 
 Q = vazão (m3/s); 
 D = diâmetro do tubo (m); 
 C = coeficiente de rugosidade. 
 
 Escreva um programa que leia a vazão desejada em um projeto de tubulação e a 
perda de carga máxima permitida. A seguir, o programa deve ler o diâmetro e o coeficiente de 
rugosidade de vários tubos, até encontrar um que proporcione perda de carga abaixo do limite 
permitido. 
 Não é necessário verificar a validade dos dados fornecidos pelo usuário. 
 
 A seguir, um exemplo de execução do programa. 
 
Execução 1 
Informe a vazão desejada (m3/s): 0.1 
Informe a perda de carga máxima permitida (m/m): 0.4 
 
Informe o diâmetro do tubo (m): 1 
Informe o coeficiente de rugosidade do tubo: 0.1 
O tubo não atende as especificações! Tente novamente. 
 
Informe o diâmetro do tubo (m): 1.05 
Informe o coeficiente de rugosidade do tubo: 0.05 
O tubo não atende as especificações! Tente novamente. 
 
Informe o diâmetro do tubo (m): 2 
Informe o coeficiente de rugosidade do tubo: 0.1 
 
O tubo com diâmetro 2 m e coeficiente de rugosidade 0.1 
atende as especificações com perda de carga de 0.363853 m/m 
 
 
 
 
Universidade Federal de Ouro Preto – UFOP 
Instituto de Ciências Exatas e Biológicas – ICEB 
Departamento de Computação – DECOM 
 
 
 
 
6 
Proposta de Código para a Solução 
 
Q=input("Informe a vazão desejada (m3/s): ") 
Jmax=input("Informe a perda de carga máxima permitida (m/1000m): ") 
J=%inf 
while J>=Jmax 
 printf("\n") 
 D=input("Informe o diâmetro do tubo (m): ") 
 C=input("Informe o coeficiente de rugosidade do tubo: ") 
 J = Q^1.85 * 10.64 * D^4.87 * C^-1.85 
 if J>Jmax then 
 printf("O tubo não atende as especificações! Tente novamente.") 
 end 
end 
printf("O tubo com diâmetro %g m2 e coeficiente de rugosidade %g\n",D,C) 
printf("atende as especificações com perda de carga de %fm/1000m.", J) 
 
 
 
 
 
Universidade Federal de Ouro Preto – UFOP 
Instituto de Ciências Exatas e Biológicas – ICEB 
Departamento de Computação – DECOM 
 
 
 
 
7 
Questão 4 (2.5) 
 Escreva um programa para ler diversos números inteiros positivos e, para cada um 
deles, determinar e imprimir seus divisores. O processamento deverá terminar imprimindo a 
frase “FIM DO PROGRAMA”, quando o número inteiro digitado for o número -1. Não é 
necessário verificar se o número digitado é inteiro e positivo. 
 A seguir, um exemplo de execução do programa. 
 
Exemplo de execução 
 
Digite um número inteiro positivo (-1 para terminar): 15 
Divisores de 15: 1 3 5 15 
 
Digite um número inteiro positivo (-1 para terminar): 36 
Divisores de 36: 1 2 3 4 6 9 12 18 36 
 
Digite um número inteiro positivo (-1 para terminar): -1 
 
FIM DO PROGRAMA 
 
 
 
 
 
Universidade Federal de Ouro Preto – UFOP 
Instituto de Ciências Exatas e Biológicas – ICEB 
Departamento de Computação – DECOM 
 
 
 
 
8Proposta de Código para a Solução 
 
clear; clc; 
nro = input("Digite um número inteiro positivo (-1 para terminar): 
"); 
while nro <> -1 
 printf("Divisores de %g: ", nro); 
 for i = 1:nro 
 if modulo(nro, i) == 0 then 
 printf(" %g", i); 
 end 
 end 
 printf("\n\n"); 
 nro = input("Digite um número inteiro positivo (-1 para 
terminar): "); 
end 
printf("\nFIM DO PROGRAMA");

Outros materiais