Universidade da Beira Interior
Exame (2ª Chamada)
(8537, 10343, 10874) Programação,
Duração: 01:45 h
Tolerância: 15 minutos
Número:
Nome:
(10272) Introdução à Programação
Data: 06 de Fevereiro de 2013, 09:30 h
Curso:
Notas:
a) Teste individual e sem consulta. Não é permitido o uso de calculadoras, telemóveis ou outros
dispositivos electrónicos.
b) A Parte I é para resolver na própria folha de enunciado (portanto, esta folha deve ser entregue
juntamente com as restantes folhas de resposta).
Parte I
1. Considere que ANO e N são números inteiros e R é um número real. Escreva uma instrução de
atribuição para cada uma das seguintes acções:
a) A variável PAR toma o valor 0 se N for impar e -10 se N for par.
b) A variável D toma o valor do algarismo das centenas de R.
c) A variável Bissexto é verdadeira se ANO é divisível por 4 mas não por 100 ou então se ANO
é divisível por 400.
2. Considere o seguinte programa:
#include <stdio.h>
int v1=10; int v2=20;
int AddValues(void){
int v1=1;
v1++;
return (v1 + v2);
}
void main(void){
int v2 = 30;
v2 = AddValues();
printf(″%d \t %d\n″,v1, v2);
v2 = AddValues();
printf(″%d \t %d\n″,v1, v2);
v2 = AddValues();
printf(″%d \t %d\n″,v1, v2);
}
Indique o que aparece no ecrã quando o programa é
executado, apresentando todos os cálculos que teve
que efectuar.
Parte II
3. Use pseudo-código para desenvolver um algoritmo que após ler os comprimentos dos três lados de um
triângulo (a, b e c), calcule e escreva a área do mesmo, dada pela fórmula de Heron:
√
onde
é o semi-perímetro do triângulo
4. A fórmula de Leibniz para aproximar
é:
∑
Desenvolva um algoritmo, representado através de um fluxograma, para determinar uma aproximação
de a partir da soma dos k primeiros termos desta série. k é um número positivo dado pelo utilizador.
5. Como sabe, a luz propaga-se no ar com maior velocidade do que o som. Este facto pode ser usado para
determinar a distância a que se encontra uma trovoada (contando o tempo que separa o momento em
que se visualiza o relâmpago e o momento em que se escuta o trovão).
Pretende-se que escreva um programa, em linguagem C, para auxiliar a determinar a distância a que
está uma trovoada. O utilizador deve fornecer o número de segundos que separam os dois momentos
(relâmpago e trovão) e o programa deve indicar a distância em metros.
Nota: o som propaga-se no ar à velocidade de 340 m/s.
6. Em Matemática, um número perfeito é um número inteiro positivo que é igual à soma dos seus
divisores próprios (ou seja, dos seus divisores positivos diferentes de si mesmo). Por exemplo, 6 (= 1
+ 2 +3) é um número perfeito. Pretende-se um programa que indique todos os números perfeitos
entre dois inteiros positivos, a e b, com a < b. Para isso, usando linguagem C, escreva:
a) A função int SomaDivisores(int N) para calcular a soma dos divisores próprios de um
inteiro N.
b) A função int NumeroPerfeito(int N) que devolve 1 se N for um número perfeito e 0
caso contrário. Esta função deve fazer uso da função definida na alínea anterior.
c) O programa que lê dois inteiros a e b e mostra todos os números perfeitos entre a e b. O
programa deverá invocar a função definida na alínea anterior. Não precisa de reescrever as
funções mas precisa de declará-las no local apropriado.
7. Considere uma matriz quadrada com DIM × DIM elementos inteiros, onde DIM representa o número
de linhas (ou colunas). Usando linguagem C, escreva:
a) A função int SomaDiagSec(int A[DIM][DIM]) para calcular a soma dos elementos da
diagonal secundária da matriz A (de modo simplificado, a diagonal secundária, de uma matriz
quadrada, une o canto inferior esquerdo ao canto superior direito).
b) A função int LinhaMaior(int A[DIM][DIM]) para indicar o índice da linha que
contém o maior elemento da (sub)matriz triangular inferior (elementos situados abaixo da
diagonal principal de A).
Download

Universidade da Beira Interior - Departamento de Informática da