Universidade da Beira Interior
Departamento de Informática
Programação / Programação I
1º semestre, 2010/11
1º Teste: 04-11-2010
Duração: 00h45m
Tolerância: 5m
Grupo I (4 x 0.5 = 2.0 valores)
1. Enuncie as três componentes lógicas fundamentais dum computador, ou seja, a
arquitectura básica dum computador? Qual é a funcionalidade principal de cada uma delas?
Explique.
RESOLUÇÃO:
As três componentes são: CPU, memória e entrada/saída.
Função principal da CPU: executar instruções;
Função principal da memória: armazenar dados;
Função principal da unidade de entrada/saída: interactividade/comunicação com o utilizador
ou com outros dispositivos.
2. Qual é o mecanismo básico que nos permite reservar memória num programa em C?
Explique e exemplifique.
RESOLUÇÃO:
Esse mecanismo é a declaração de variáveis. Por exemplo, a instrução "int x = 34;" permite
armazenar o valor inteiro 34 na zona de memória reservada para a variável x.
3. Qual é a diferença entre um algoritmo e um programa em C? Explique e exemplifique.
RESOLUÇÃO:
Um algoritmo é uma sequência de passos que nos permite chegar à solução dum problema,
ao passo que um programa é uma sequência de instruções que nos permite chegar à
solução dum problema. Um algoritmo é escrito em pseudo-código, ao passo que um
programa é escrito segundo as regras duma linguagem de programação.
4. Para que serve a estrutura lógica de selecção na construção de programas? Explique e
exemplifique.
RESOLUÇÃO:
Para tomar uma decisão dentro dum programa. Há 3 tipos de selecções: 1 via, 2 vias e n
vias. Em linguagem C, a selecção de 1 via é codificada com a instrução if, a selecção de 2
vias é codificada com a instrução if-else, e a selecção de n vias é codificada com a instrução
switch.
Grupo II (1.5 valores)
5. Assumindo que o utilizador introduz uma sequência de números inteiros via teclado,
escreva um algoritmo, assim como o respectivo programa em C, que calcule o produto dos
números positivos da referida sequência que deve terminar com o número 0.
RESOLUÇÃO:
Façamos, então, a ANÁLISE PRÉVIA DO PROBLEMA em questão. A análise consiste em
identificar quais são os dados do problema, bem como o resultado.
a) DADOS: sequência de números inteiros que termina com zero.
b) RESULTADO ou solução do problema: produto dos números inteiros da sequência que
são maiores do que zero.A sequência de números é lida do teclado da seguinte forma
repetida. Lê-se o primeiro número, depois o segundo, depois o terceiro, etc., até que se
escreva o número 0 que é o número terminador da sequência.
Vamos supor que cada um destes números é temporariamente armazenado na variável com
o nome NUM.
Outro aspecto importante é que não sabemos qual é o comprimento da sequência, mas
sabemos quando devemos parar de ler números. A condição de paragem é quando o
número lido é zero.
Claro que o resultado do PRODUTO tem de ser inicializado com o valor 1 (que é o elemento
neutro da multiplicação).
Assim, o ALGORITMO é o seguinte:
1. Início
2. PRODUTO = 1
3. FAZ
lê número do teclado e armazena em NUM
SE NUM > 0
PRODUTO = PRODUTO * NUM
ENQUANTO NUM!=0
4. Escreve o valor de PRODUTO no écrã
5. Fim
O programa em C é então o seguinte:
#include<stdio.h>
int main()
{
int NUM, PRODUTO;
printf("Escreva sequencia de inteiros que termine com 0
(zero):\n");
PRODUTO = 1;
do {
scanf("%i",&NUM); if (NUM > 0)
PRODUTO = PRODUTO * NUM;
} while (NUM != 0);
printf("Produto=%d\n",PRODUTO);
return 0;
}
Grupo III (1.5 valores)
6. Elabore um programa em C que escreva no ecrã um triângulo isósceles de altura e largura
N. Por exemplo, a saída para o ecrã no caso de N=5 é a seguinte:
*
**
***
****
*****
NOTA: A escrita do carácter ‘*’ é obrigatoriamente feita com a instrução putchar(‘*’);,
pelo que não poderá usar a função printf. A mudança de linha é feita com a instrução
putchar(‘\n’);
RESOLUÇÃO:
Façamos, então, a ANÁLISE PRÉVIA DO PROBLEMA em questão. A análise consiste em
identificar quais são os dados do problema, bem como o resultado.
a) DADOS: só há um dado do problema que é o valor de N;
b) RESULTADO: a produção do triângulo isósceles com asteriscos.
Se repararmos na figura acima do triângulo temos o seguinte:
1) um asterisco na primeira linha;
2) dois asteriscos na segunda linha;
3) três asteriscos na terceira linha;
...
N) N asteriscos na N-ésima linha;
Portanto, para a linha i vamos escrever i asteriscos. Ou seja, variando o valor de i de 1 até
N, vamos escrever 1, 2,..., i asteriscos na linha i. No final de cada linha, muda-se de linha.
ALGORITMO:
1. Início
2. Ler N
3. para i=1 até N
para j=1 até i
escreve asterisco
mudar de linha
4. Fim
O programa em C é então o seguinte:
#include<stdio.h>
int main()
{
int i,j,N;
printf("Insira o valor de N\n"); scanf("%d",&N);
for (i=1;i<=N;i++)
{
for (j=1;j<=i;j++)
putchar('*');
putchar('\n');
}
return 0;
}
Download

Universidade da Beira Interior Departamento de Informática