Campus Cachoeiro de Itapemirim Curso Técnico em Informática Disciplina: Programação 1 Professor: Rafael Vargas Mesquita Revisão 04 Capítulo 08 da Apostila - Modularização 1. EXERCÍCIO SOBRE ROCHAS ORNAMENTAIS 1. Pesquisadores do setor de rochas criaram um novo índice chamado índice de nobreza rochosa ou INR. Faça uma função calcula_inr que dados a porosidade da rocha ( pr ), a densidade transitória ( dt ) calcula o INR da rocha da seguinte forma: Se pr < 5, o INR é dado por INR = pr * dt + 25 * dt Se pr >= 5 e pr < 10, o INR é dado por INR = pr * pr + dt * dt Caso contrário, o INR é dado por INR = 80 * pr + 27 * dt 2. Os pesquisadores do setor de rochas não param. Logo após criar o INR, descobriram que um outro índice seria bastante interessante no setor, o índice de biparidade normal ou IBN. Faça uma função calcula_ibn que recebe a porosidade da rocha ( pr ), a densidade transitória ( dt ) como parâmetros e lê via teclado uma série de 4 paridades ( PARIDADES[4] ). Ao final da leitura a função calcula_ibn determina o valor de IBN da seguinte forma: IBN = INR * qpar Obs.: INR é calculado usando a função calcula_inr da questão anterior ( OBRIGATORIAMENTE ). qpar é a quantidade de paridades acima da média das 4 paridades fornecidas via teclado. 3. A partir do IBN é possível determinar duas classificações da rocha: Tipo Visual ( tv ) e Tipo Resistência ( tr ). Faça um procedimento determina_classificacoes que recebe a porosidade da rocha ( pr ), a densidade transitória ( dt ) como parâmetros passados por valor e tipo visual ( tv ) e tipo resistência ( tr ) como parâmetros passados por referência. Esse procedimento altera tv e tr da seguinte forma: Se IBN < 10, tv = Filásia e tr = Anotética Se IBN >= 10 e IBN < 80, tv = Tropitica e tr = Blocada Senão, tv = Diamantada e tr = Concretada Obs.: Esse procedimento terá de utilizar a função calcula_ibn para determinar que valores serão ATRIBUÍDOS a tv e tr. 4. Faça um algoritmo que leia a porosidade de uma rocha ( poro_rocha ) e a densidade transitória ( dens_trans ). Ao final da leitura mostre a classificação da rocha quanto ao tipo visual (tip_visual) e tipo resistência ( tip_resistencia ). É importante ressaltar que serão necessários ler as paridades da rocha, mas essas paridades serão lidas na função calcula_ibn chamada pelo procedimento determina_classificacoes.
2. EXERCÍCIO SOBRE CLIENTES DE VIDEOLOCADORA Elabore um programa para um sistema de videolocadora. Este sistema deve tratar de adicionar clientes, procurar o bairro de um determinado cliente, e por fim calcular a média dos clientes. Para tal você deverá seguir os seguintes passos: O sistema deve ter no máximo 100 clientes. De cada cliente devem ser recebidos os seguintes dados: nome, bairro e idade. A forma de armazenamento escolhida para estes dados deve utilizar vetores (vet_nomes, vet_bairros e vet_idades) ambos de 100 posições. Estes vetores devem ser declarados como variáveis globais. Observe a figura: Considere o seguinte algoritmo: Agora você deverá elaborar 1 procedimento (adicionar_cliente) e 2 funções (selecionar_bairro_por_cliente e calcular_media_idades). adicionar_cliente: Este procedimento não deve receber nada como parâmetro. O propósito deste procedimento é ler o nome, bairro e idade do novo cliente e armazená-los respectivamente nos vetores (vet_nomes, vet_bairros e vet_idades). selecionar_bairro_por_cliente: Esta função deve receber como parâmetro o nome do cliente, e retornar o nome do bairro do cliente passado como parâmetro. calcular_media_idades: Esta função não receber nada como parâmetro, porém retorna a média das idades dos clientes armazenadas até o presente momento.
3. EXERCÍCIO SOBRE DETERMINAÇÃO DE CLASSE SOCIAL A modularização é uma técnica de programação utilizada para dividir um programa maior em programas menores, ou seja, em módulos. Para entendermos melhor, vamos imaginar um programa para calcular a folha de pagamento de uma empresa qualquer. Para elaborar este algoritmo vamos seguir os seguintes passos: 1. Elabore uma função calcular_inss que dado o salário bruto (sb) calcula o INSS a ser pago da seguinte forma: Se sb <= 1000, o INSS é dado por INSS = 0 Se sb > 1000 e sb < 2000, o INSS é dado por INSS = sb * 0.05 Caso contrário, o INSS é dado por INSS = sb * 0.10 2. Elaborar função calcular_salario_liquido que recebe o salário bruto (sb) como parâmetro e determina o salário líquido (sl) do funcionário da seguinte forma: sl = sb INSS Obs.: INSS é calculado utilizando a função calcular_inss da questão anterior. 3. A partir do sl é possível determinar a classificação do funcionário com relação a sua classe social (cs). Faça um procedimento determinar_classe que recebe o salário bruto (sb) como parâmetro passado por valor e a classe social (cs) do funcionário como parâmetros passados por referência. Este procedimento considera o salário líquido (sl) para alterar cs da seguinte forma: Se sl <= 415, cs = C Se sl > 415 e sl <= 2000, cs = B Caso contrário, cs = A Obs.: Este procedimento terá de utilizar a função calcular_salario_liquido da questão anterior para determinar que valor será atribuído a cs. 4. Faça um algoritmo que leia o nome (nome_funcionario) e o salário bruto (salario_bruto) de um determinado funcionário. Ao final da leitura mostre a classe social do funcionário (classe_social). Seu algoritmo deve receber salários brutos de funcionários até que seja digitado o valor x para o nome do funcionário. Todos os valores correspondentes a classe social (classe_social) dos funcionários devem ser armazenados em um vetor de 100 posições (vet_classes). Por fim, depois de receber os nomes e salários brutos dos funcionários, ainda no algoritmo, deve ser informado, considerando os dados do vetor (vet_classes), quantos são os funcionários existentes em cada uma das classes sociais (A, B ou C).
4. EXERCÍCIO SOBRE CAMPEONATO BRASILEIRO DE FUTEBOL Elabore um programa para o campeonato brasileiro de futebol. Este sistema deve tratar de adicionar times, calcular número de pontos de um time, e por fim, encontrar o melhor time dentre todos. Para tal, considere as informações iniciais: O sistema deve ter no máximo 22 times. De cada time devem ser recebidos os seguintes dados: nome, número de vitórias, número de empates e número de derrotas. A forma de armazenamento escolhida para estes dados deve utilizar vetores (vet_nomes, vet_vitorias, vet_empates e vet_derrotas) ambos de 22 posições. Estes vetores devem ser declarados como variáveis globais. Observe a figura que exemplifica tal armazenamento: Para elaborar este sistema vamos precisar fazer: dois procedimentos (adicionar_time e achar_melhor_time) e uma função (calcular_pontos_time) Siga os passos abaixo para programar: 1. Elabore o procedimento adicionar_time. Este procedimento não recebe nada como parâmetro. O propósito deste procedimento é ler o nome, o número de vitórias, o número de empates e o número de derrotas de um determinado time e armazená-los respectivamente nos vetores (vet_nomes, vet_vitorias, vet_empates e vet_derrotas). 2. Elabore a função calcular_pontos_time. Esta função deve receber como parâmetro passado por valor o nome do time para o qual se deseja calcular o número de pontos, e retornar o número de pontos do respectivo time. Obs.1: Para calcular o número de pontos de um time você deve considerar as seguintes regras: Cada vitória vale três (3) pontos Cada empate vale um (1) ponto Cada derrota vale zero (0) ponto Obs.2: Você não precisa tratar o caso em que o usuário do sistema digite um nome de time não existente 3. Elabore o procedimento achar_melhor_time. Este procedimento deve receber como parâmetro passado por referência o melhor time (mt). O valor de mt deve ser alterado para o nome do time que tem mais pontos até o presente momento. Obs.1: Para calcular o número de pontos de cada time utilize a função da questão 2 (calcular_pontos_time) Obs.2: Você não precisa tratar o caso em que existam dois times com o mesmo nome. Vamos assumir que o usuário nunca digitará dois times com o mesmo nome. Obs.3: O melhor time é dado pelo time que possui o maior número de pontos. Não importa a quantidade de jogos. 4. Faça um algoritmo para iniciar seu programa sobre o campeonato brasileiro. A tela inicial do seu programa deve ser semelhante à seguinte: Utilize o comando escolha-caso para entrar em cada uma das opções mostradas anteriormente. Esta tela inicial deve se repetir até que o usuário digite a opção 4 para sair do sistema.
De acordo com cada opção escolhida pelo usuário seu algoritmo deverá chamar o procedimento ou a função designada para tal opção. Utilize nomes de variáveis globais diferentes de nome de variáveis locais. Exemplo: melhor_time (variável global) e mt (variável local). A seguir alguns exemplos da utilização do algoritmo: Escolhendo a opção 1: Escolhendo a opção 2: Escolhendo a opção 3: