Escolar Documentos
Profissional Documentos
Cultura Documentos
Atividades da Semana 7
Observações:
1. A solução correta e entrega até a data de entrega resulta em 2.0
pontos para composição da nota do 1º EE (exercício escolar) do
estudante.
2. Entrega de solução da atividade fora do prazo não será pontuada
para fins da composição da média.
Atividades de avaliação
[1.0 ponto] A1 – Considere o código A1.
#include <iostream>
using namespace std;
int main() {
int i;
int a[5] = {A, B, C, D, E};
for(i = 0; i < 4; i++){
while(a[i] != a[i+1]) {
if(a[i] > a[i+1])
a[i] = a[i]- a[i+1];
else
a[i+1] = a[i+1] - a[i];
} // fim do whlle
} // fim do for
cout << a[i] << "\n";
} // fim do main()
Código A1
Assuma que o usuário pode atribuir qualquer número inteiro n, onde 20 <= n <= 9980,
a quaisquer dos elementos A, B, C, D e E do array a[]. Note que n pode ser qualquer
número no intervalo [20, 9980].
Todos os estudantes foram convidados a realizar testes com o programa, explorando
todas possíveis situações permitidas e solicitados, em seguida, a dar uma resposta
sobre código A1. Cinco estudantes apresentaram suas respostas. Sua tarefa é examinar
cada resposta e descobrir se verdadeira ou falsa. Cada resposta correta resulta em
0.2 ponto. Assinale V (verdadeiro) ou F (falso) nas seguintes alternativas:
i. ( ) O primeiro estudante constatou que, após executar o programa para
todas as possíveis combinações de valores que podem ser atribuídos aos
elementos A, B, C, D e E do array a[], o cout (última instrução antes do } da
função main() ) do programa nunca exibe valores no intervalo de 1 até 19.
iii. ( ) O terceiro estudante constatou que, após executar o programa para todas
as possíveis combinações de valores que podem ser atribuídos aos
elementos A, B, C, D e E do array a[], o cout (última instrução antes do }
da função main() ) do programa pode exibir 1 mais de 2 vezes.
iv. ( ) O quarto estudante constatou que, após executar o programa para todas
as possíveis combinações de valores que podem ser atribuídos aos
elementos A, B, C, D e E do array a[], o cout (última instrução antes do } da
função main() ) do programa exibia apenas números no intervalo de 20 até
9980.
1. #include <iostream>
2. #include <cstdlib>
3. #include <ctime>
4. using namespace std;
5. int main() {
6. srand(time(0));
7. int i = 1, n;
8. int menor = -999;
9. for(i = 2; i < 2000; i++){
10. n = -999 + rand()%1999;
11. if(n < menor)
12. menor = n;
13. } // fim do for
14. } // fim do main()
Código A2
[0.5 ponto] A3 – O professor de programação apresentou três programas (códigos
A3a, A3b e A4c) e solicitou os estudantes examinarem se eles estavam corretos, isto é,
sem erros. Vide informação sobre erros de programação nas páginas 7 a 10.
1. #include <iostream>
2. #include <cstdlib>
3. #include <ctime>
4. using namespace std;
5. int main(){
6. srand(time(0));
7. int a[10], n, soma = 0, i;
8. n = rand()%20;
9. for(i = 0; i <= n; i=i+2){
10. a[i] = rand()%11;
11. soma = soma + a[i];
12. } //fim do for
13. } //fim do main()
Código A3a
1. #include <iostream>
2. #include <cstdlib>
3. #include <ctime>
4. using namespace std;
5. int main(){
6. srand(time(0));
7. int a[10], n, soma = 0, i;
8. n = rand()%11;
9. for(i = 0; i <= n; i++){
10. a[i] = rand()%11;
11. soma = soma + a[i];
12. } //fim do for
13. } //fim do main()
Código A3b
1. #include <iostream>
2. #include <cstdlib>
3. #include <ctime>
4. using namespace std;
5. int main(){
6. srand(time(0));
7. int a[10], n, soma = 0, i;
8. n = rand()%11;
9. for(i = 0; i < n; i=i+2){
10. a[i] = rand()%11;
11. soma = soma + a[i];
12. } //fim do for
13. } //fim do main()
Código A3c
Após examinar os três códigos, observa-se que:
a) Apenas o código A3a está sem erro
b) Apenas o código A3b está sem erro
c) Apenas o código A3c está sem erro
d) Apenas os códigos A3a e A3b estão sem erro
e) Todos os códigos estão sem erro
Disciplina: Introdução a programação
Erros de programação
Definições
Inicialmente, define-se erro como a causa de uma ocorrência ou falha. Portanto,
erro é a causa, enquanto que falha é o efeito observável (após a compilação ou
execução de um programa).
x=a+b
if (a >= b
if (a >= b) {
a++;
...
// falta fecha chaves }
#include <iostream>
// falta declaração de cmath ou math.h
using namespace std;
int main() {
ii) Erro operacional – Pode ocorrer, por exemplo, quando o valor de uma
variável excede limite numérico de seu tipo de dado ou quando se tenta
realizar operação ou acesso a elemento (ou posição) inexistente ou não
inicializada de um array.
true ou false
bool 1
#include <iostream>
using namespace std;
int main() {
int a = 2e9;
int b = 2e9;
int x = 1e6;
int y = 0;
cout << a + b << endl;
cout << a + x << endl;
cout << b - x << endl;
cout << y - a - b << endl;
}
Código 1
Figura 1
iii) Erro de loop – Pode ocorrer, por exemplo, quando o programa permanece
em execução por tempo indeterminado. Esse tipo de erro decorre do uso
incorreto das estruturas de controle de fluxos ou especificação incorreta de
condições (destas estruturas de controle) usadas na solução. No exemplo do
código 2, o usuário digita o valor 11, atribuído a variável x, resultando que a
condição do while é sempre verdadeira e, consequentemente, fica em
execução permanente ou em loop, uma vez que o projetista não adicionou
uma instrução, por exemplo, para decrementar x ou outra condição de
parada para a estrutura de controle. No exemplo do código 2, uma instrução
sleep() e biblioteca unistd.h foram adicionadas para visualizar a execução de
modo lento.
#include <iostream>
#include <unistd.h>
using namespace std;
int main() {
int a = 10;
int x;
cout << "Digite x: ";
cin >> x;
while(x > a){
cout << x << endl;
sleep(1);
// falta decremento de x, por exemplo
}
cout << "Nao chega aqui!\n";
}
Código 2
Figura 2