Mestrado Integrado em Engenharia Electrotécnica e de Computadores
Programação 2
2008/2009
Folha de Exercícios 2
Esta Folha de Exercícios destina-se a:
• facilitar o início da programação na linguagem C++.
Os exercícios aqui propostos deverão ser realizados no mais simples ambiente de desenvolvimento possível para
as linguagens C e C++: editor de texto de programação e ferramentas da GCC (GNU Compiler Collection) e afins.
No entanto, se quiser e tiver oportunidade pode começar a usar o ambiente de desenvolvimento integrado Eclipse
(semelhante a KDevelop ou Dev-C++).
1.
Pretende-se que sejam escritas algumas variantes do famoso “1º programa” de qualquer linguagem de
programação: “Hello, World!”. O aspecto comum a todas as alíneas é que cada programa escreva no ecrã a
famosa frase um certo, e específico, número de vezes. Os programas serão escritos em C++ e um exemplo do
programa clássico está disponível na área web da disciplina (hello-cpp.zip).
a) Escreva o programa pedido, de forma a que o número de vezes que a frase deve surgir no ecrã seja indicado
na linha de comando.
b) Escreva o programa pedido, mas agora de forma a que o número de vezes que a frase deve surgir no ecrã
seja recolhido da consola.
c) Escreva o programa pedido mas, desta vez, uma frase qualquer, recolhida da consola, é que é mostrada no
ecrã tantas vezes quantas o número indicado na linha de comando.
d) Prepare um ficheiro compactado que contenha tudo o que é necessário para que os executáveis dos
programas desenvolvidos possam ser construídos por quem receber o ficheiro, desde que tenha um
ambiente de desenvolvimento idêntico ao que foi aqui usado. (Dica: use uma "makefile".)
2.
Pretende-se escrever um programa em C++ que calcule a hipotenusa de um triângulo rectângulo. Para tal
efeito, os valores das dimensões dos catetos deverão ser obtidos do utilizador de diferentes maneiras.
a) Obtenha as dimensões dos catetos da linha de comando, e apresente na consola, o valor da hipotenusa (note
que as medidas de qualquer um dos lados do triângulo poderão ser valores em vírgula flutuante).
b) Continuamente, obtenha da consola as dimensões dos catetos (sempre positivos) e produza o valor da
hipotenusa até que o utilizador escreva CTRL+D.
c) Repita a alínea b), mas agora prepare o programa para erros de introdução de números negativos para
dimensão dos catetos.
d) Prepare um ficheiro compactado que contenha tudo o que é necessário para que os executáveis dos
programas desenvolvidos possam ser construídos por quem receber o ficheiro, desde que tenha um
ambiente de desenvolvimento idêntico ao que foi aqui usado. (Dica: use uma "makefile".)
3.
Relativamente a números primos:
a) Escreva uma função que identifique números primos (e insira-a num programa de teste em C++). O
protótipo da função é:
bool primo(int n);
e retorna true se n é primo e false no caso contrário.
(Sugestão: para verificar se n é primo, basta dividir n pelos números de 2 a sqrt(n).)
b) Recorrendo à função anterior, escreva um programa que imprima os números primos compreendidos
entre 1 e N, em que N é um valor indicado pelo utilizador na linha de comando.
c) Escreva um programa em que na linha de comando é especificado como argumento o nome de um ficheiro
onde se encontram os números que se quer determinar se são primos ou não. O programa deve
imprimir na consola para cada número lido uma linha com (o parenteses recto denota a alternativa):
<número>: primo [ou: não primo]
d) Escreva um programa idêntico ao da alínea anterior, mas em que na linha de comando é especificado
como 2º argumento o nome de um ficheiro onde se deve colocar as linhas antes impressas na consola.
4.
Identifique e corrija os erros de sintaxe em cada uma das alíneas seguintes. (Notas: pode existir mais do que
um erro por alínea; as variáveis não declaradas são inteiras.)
a)if (x = y)
cout << x << " é igual a " << y << '\n';
b) if (idade >= 65);
cout << "A idade é maior ou igual que 65\n";
else
cout << "A idade é menor que 65\n";
c) O código seguinte deve imprimir se um dado inteiro (n) é par ou ímpar:
switch (n % 2) {
case 0: cout << "Inteiro par\n";
case 1: cout << "Inteiro ímpar\n";
}
d)O código seguinte deve imprimir os inteiros ímpares de 999 até 1:
for (int x = 999, x >= 1, x += 2)
cout << x << '\n';
5.
Pretende-se que seja escrito um programa denominado statop para cálculo de operações estatísticas
simples.
a) O programa deve aceitar um número variável de valores inteiros como argumentos e apresentar a
média desses valores. Escreva-o.
b) Escreva uma nova versão do programa que deve aceitar um argumento adicional (necessariamente, o
primeiro) que indica a operação a efectuar (de entre um conjunto pré-definido). Por exemplo:
statop max 2 5 8 32 14
significa que o programa deve escrever na saída normalizada (standard output) o valor máximo da
sequência de valores lidos.
As operações a implementar são:
• max (determina o máximo)
• min (determina o mínimo)
• gam (calcula a gama de valores = máximo-mínimo)
• med (calcula a média).
O programa deve também fazer um controlo de erros simples mas amigável para um utilizador
inexperiente.
Download

Programação 2