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
Disciplina: Projeto e Desenvolvimento de Algoritmos
AD1 2° semestre de 2019
Nome –
Assinatura –
Neste gabarito estamos acrescentando alguns comentários e também traduzimos alguns
dos algoritmos da AD para o programa Visualg 3.0. O Visualg é um programa que
permite criar, editar, interpretar e que também executa os algoritmos em português
estruturado (portugol) como se fosse um “programa” normal de computador.
O Visualg é parecido com o PETEQS e a tradução de uma linguagem para outra pode
ser feita com relativa facilidade. É um programa de livre uso e distribuição gratuita e é
de domínio público.
Os algoritmos em Visualg são informações extras e os alunos não serão cobrados sobre
este programa. Não incluiremos informações sobre o programa.
O programa e a documentação do Visualg estão disponíveis no site
https://visualg3.com.br/
1a questão (valor 1.0)
Complete o algoritmo abaixo de modo que os valores das variáveis A e B sejam trocados
entre si. No final da execução do algoritmo a variável A deve conter o valor 5 e a
variável B o valor 10. Se achar necessário inclua novas variáveis.
Início
A ← 10
B ← 5
temp ← A
A ← B
B ← temp
imprima A
imprima B
fim
Os dois algoritmos a seguir mostram implementações em visualg do algoritmo
apresentado na questão.
Algoritmo "AD1-Q1-v1"
// Disciplina : Projeto e Desenvolvimento de Algoritmos
// Professores : Adriano Cruz e Jonas Knopman
Var
// Seção de Declarações das variáveis
// Em Visualg é necessário declarar as variáveis que são usadas
// no algoritmo e seus tipos.
//
A, B, temp: inteiro
Inicio
a <- 10
b <- 5
temp <- a
a <- b
b <- temp
// Os comandos de leitura e escrita são diferentes.
escreval(a)
escreval(b)
Fimalgoritmo
Algoritmo "AD1-Q1-v2"
// Disciplina : Projeto e Desenvolvimento de Algoritmos
// Professores : Adriano Cruz e Jonas Knopman
Var
// Seção de Declarações das variáveis
// Em Visualg é necessário declarar as variáveis que são usadas
// no algoritmo e seus tipos.
A, B, temp: inteiro
Inicio
// Nesta versão o valor das variáveis é definido pelos usuários
// deste algoritmo e pode ser qualquer inteiro.
// A implementação é diferente da apresentada na questão.
// O objetivo é mostrar um algoritmo mais flexível.
// Os comandos de leitura e escrita são diferentes.
escreva("a? ")
leia(a)
escreva("b? ")
leia(b)
temp <- a
a <- b
b <- temp
escreval("a = ", a)
escreval("b = ", b)
Fimalgoritmo
2a questão (valor 1.5)
Indique a ordem em que serão executadas as seguintes expressões aritméticas:
(a) A mod 3 * B + C / 2
(b) A mod (3 * B) + D + 2
Para indicar a ordem pedida use, como exemplo, a notação indicada abaixo que foi
aplicada na expressão A / 2.0 + B * 2. Nesta resposta os resultados intermediários
são indicados como R1, R2 e R3.
1) R1 ← A / 2.0
2) R2 ← B * 2
3) R3 ← R1 + R2
(a) Resposta:
(a) R1 ← A mod 3
(b) R2 ← R1 * B
(c) R3 ← C / 2
(d) R4 ← R2 + R3
(b) Resposta:
(a) R1 ← 3 * B
(b) R2 ← A mod R1
(c) R3 ← R2 + D
(d) R4 ← R3 + 2
3a questão (valor 1.5)
Considerando que as variáveis das expressões da 2a questão acima armazenam os
valores indicados abaixo, calcule os resultados das duas expressões. Use a solução da 2a
questão para indicar também os resultados intermediários.
A ← 13
B ← 3
C ← 9
D ← 10
Nesta questão alguns pontos importantes a serem observados. Primeiro prestar atenção à
ordem de execução das operações. Outro ponto é que em PETEQS operações entre
inteiros dão resultado inteiros. Isto é importante, notadamente, em operações de divisão.
Por exemplo, uma das operações executadas pelo algoritmo é 9 / 2 que dá como
resultado 4 e não 4.5.
(a) Resposta:
(e) R1 ← A mod 3 = 13 mod 3 = 1
(f) R2 ← R1 * B = 1 * 3 = 3
(g) R3 ← C / 2 = 9 / 2 = 4
(h) R4 ← R2 + R3 = 3 + 4 = 7
(b) Resposta:
(a) R1 ← 3 * B = 9
(b) R2 ← A mod R1 = 13 mod 9 = 4
(c) R3 ← R2 + D = 4 + 10 = 14
(d) R4 ← R3 + 2 = 14 + 2 = 16
4a questão (valor 1.5)
Os alunos de uma determinada disciplina devem fazer 4 avaliações chamadas: AD1,
AD2, AP1 e AP2. A primeira nota (N1) é a soma de 80% da AP1 e 20% da AD1. A
segunda nota (N2) usa o mesmo método: 80% da AP2 e 20% da AD2. A nota final é a
média aritmética da primeira e da segunda nota. Escreva um algoritmo em PETEQS que
leia as quatro avaliações de um aluno calcule e imprima sua nota final.
Início
ler AD1, AD2, AP1, AP2
N1 ← 0.8 * AP1 + 0.2 * AD1
N2 ← 0.8 * AP2 + 0.2 * AD2
NF ← (N1 + N2)/2.0
imprima NF
fim
O algoritmo a seguir mostra uma implementação para o visualg do algoritmo acima.
Algoritmo "AD1-Q4"
// Disciplina : Projeto e Desenvolvimento de Algoritmos
// Professores : Adriano Cruz e Jonas Knopman
// Data atual : 02/04/2020
Var
// Seção de Declarações das variáveis
// Em Visualg é necessário declarar as variáveis e seus tipos.
//
AD1, AD2, AP1, AP2, N1, N2, NF: real
Inicio
// Seção de Comandos, procedimento, funções, operadores, etc...
escreval("Digite as quatro notas, uma por linha")
leia (AD1, AD2, AP1, AP2)
N1 <- 0.8 * AP1 + 0.2 * AD1
N2 <- 0.8 * AP2 + 0.2 * AD2
NF <- (N1 + N2)/2.0
escreval(NF)
Fimalgoritmo
5a questão (valor 1.5)
Indique as constantes válidas e as inválidas em PETEQS. Justifique suas respostas.
(a) 3,14 inválida, usa vírgula
(b) 3.14 válida
(c) 0.333… inválida, não há dízimas
(d) -0.545 válida
6a questão (valor 1.5)
Considere que as variáveis a seguir contém os valores: X ← 95 e Y ← 110. Determine o
valor booleano (VERDADEIRO ou FALSO) de cada uma das expressões relacionais
PETEQS a seguir:
(a) (1 / 3) = (1.0 / 3) falso
(b) (X > 100) OU NÃO (X > 100) verdadeiro
(c) (X < Y) E (X > Y) falso
Note na letra (a) que uma das operações é entre inteiros (1 / 3) é dá como resultado o
valor 0. A outra operação é entre inteiro e real (1.0 / 3) e portanto, fornece um resultado
real (0.3333).
Na letra (c) o resultado é falso independente do valor de X, já que X não pode ser menor
que Y e ao mesmo tempo ser maior que Y
7a questão (valor 1.5)
Indique os nomes de variáveis válidos e os inválidos em PETEQS. Justifique suas
respostas.
(a) raio_circulo válido
(b) 1Nota inválido, começa com algarismo
(c) NotaFinal válido
(d) Nota-Final inválido, usa sinal de menos.