Prévia do material em texto
Fundação CECIERJ - Vice Presidência de Educação Superior a Distância Curso de Tecnologia em Sistemas de Computação – UFF Disciplina: Projeto e Desenvolvimento de Algoritmos AP1 1° semestre de 2005. Data 21/05/2005 Nome – Assinatura – Observações: 1. Prova sem consulta. 2. Coloque seu nome e assinatura na folha das questões e na folha de respostas. 3. Ao final da prova devolva as folhas de questões e as de respostas. 4. Todas as respostas devem ser transcritas na folha de respostas. As respostas na folha de questões não serão corrigidas. 1a questão (1.0 ponto) Determine se são válidos ou inválidos os nomes de variáveis a seguir. No caso de nomes inválidos, justifique sua resposta. i. amigo1 válido. ii. 1amigo inválido. Nomes de variáveis não podem começar por números. iii. meuAmigo válido iv. meu amigo inválido. Nomes de variáveis não podem conter espaços em branco. v. meuAmigoehv@$!* inválido. Nomes de variáveis não podem conter caracteres alfanuméricos diferentes de letras, números ou sublinhas. 2a questão (1.0 ponto) O maior inteiro com sinal representável em um computador é 4095. Quantos bits são usados para representar um número inteiro nesta máquina? Justifique sua resposta. 13 bits Justificativa: 4095 = 212-1. Como o bit de ordem mais alta é reservado para o sinal, são necessários então 13 bits. 1 3a questão (1.0 ponto) Escreva as expressões a seguir em pseudo-código a) B A YX CA Y B X A + + * * 22 ((A*A)/X+(B*B)/Y)/((A*C)/(X*Y))+A/B b) CAB ⋅⋅−42 B*B – 4*A*C 4a questão (1.0 ponto) Qual é o resultado da expressão abaixo para J=5, K=3 e L=6? Justifique sua resposta. J - K / L - L / K Resposta: 3 Justificativa: Substituindo os valores na expressão vem: 5 – 3/6 – 6/3 = 5 – 0 – 2 = 3 5a questão (1.0 ponto) O que há de errado com o seguinte algoritmo? inicio y ← 10 enquanto y > 0 faça imprima y y ← y + 1 fim enquanto fim Resposta: O laço enquanto é um laço eterno. A variável de controle do laço é inicializada com um valor positivo e é incrementada de uma unidade a cada iteração. Por este motivo, a condição de parada do laço (y <= 0) nunca será verdadeira. 6a questão (1.0 ponto) O que será impresso pelo programa a seguir? inicio x ← 1 total ← 0 enquanto x <= 10 faça y ← x * x imprima y total ← total + y x ← x + 1 fim enquanto imprima 'O total é ', total fim O programa imprime os quadrados dos números inteiros entre 1 e 10 (inclusive) bem como a soma desses quadrados. 2 Saída: 1 2 4 9 16 25 36 49 64 81 100 O total é 385 7a questão (2.0 pontos) Um motorista monitorou o consumo de seu carro anotando, em cada abastecimento, a distância em quilômetros percorrida desde o último abastecimento e a quantidade em litros de combustível necessária para encher o tanque. Escreva um algoritmo que receba como entrada esses dados (distância em quilômetros e quantidade de litros) e determine o consumo do carro em quilômetros/litro. O programa termina quando o usuário entrar com uma quilometragem igual a zero. Exemplo de execução do algoritmo quilometros? 500 litros? 50 consumo = 10 Km/l quilometros? 700 litros? 50 consumo = 14 Km/l quilometros? 0 Tchau! inicio acabou ← falso enquanto não acabou faça imprima 'quilometros?' leia km se km = 0 entao acabou ← verdadeiro imprima 'Tchau!' senao imprima 'litros?' leia litros imprima 'consumo = ', km/litros, ' km/l' fim se fim enquanto fim 8a questão (2.0 pontos) 3 Cinco amigos costumam freqüentemente viajar juntos pelo Brasil. Eles combinaram que todas as despesas de viagem seriam rateadas por igual. Durante a viagem cada um deles anota suas despesas e o acerto é feito no regresso para casa. Escreva um algoritmo que receba como entrada as despesas efetuadas por cada um dos cinco amigos e determine quais deles receberão dinheiro e quais terão de pagar aos demais. Exemplo: Despesas amigo1? 100 amigo2? 120 amigo3? 80 amigo4? 150 amigo1? 50 Rateio amigo1: isento amigo2: recebe amigo3: paga amigo4: recebe amigo5: paga inicio imprima 'Despesas' imprima 'amigo1?' leia d1 imprima 'amigo2?' leia d2 imprima 'amigo3?' leia d3 imprima 'amigo4?' leia d4 imprima 'amigo5?' leia d5 imprima 'Rateio' media ← (d1 + d2 + d3 + d4 + d5) / 5 se d1 = media entao imprima 'amigo1: isento' senao se d1 > media entao imprima 'amigo1: recebe' senao imprima 'amigo1: paga' fim se fim se se d2 = media entao imprima 'amigo2: isento' senao se d2 > media entao imprima 'amigo2: recebe' senao 4 imprima 'amigo2: paga' fim se fim se se d3 = media entao imprima 'amigo3: isento' senao se d3 > media entao imprima 'amigo3: recebe' senao imprima 'amigo3: paga' fim se fim se se d4 = media entao imprima 'amigo4: isento' senao se d4 > media entao imprima 'amigo4: recebe' senao imprima 'amigo4: paga' fim se fim se se d5 = media entao imprima 'amigo5: isento' senao se d5 > media entao imprima 'amigo5: recebe' senao imprima 'amigo5: paga' fim se fim se fim 5