Baixe o app para aproveitar ainda mais
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");
Compartilhar