me ajudem por favor Na elaboração de algoritmos, existem problemas simples para serem solucionados, mas há casos onde soluções são mais complexas e necessitam de maior esforço na elaboração da lógica necessária para que se chegue a uma solução computacional aceitável. Depois, com um algoritmo definido, este deve ser avaliado em sua funcionalidade e verificado se serve como solução para um problema.
Observe o algoritmo a seguir:
Algoritmo Numeros
Var
valor : vetor[1..10] de caractere
Início
Escreva ("Digite um número: ")
Leia (" valor ")
Se ( valor < 0 ) então
Escreva ( "POSITIVO" )
Senão
Se ( valor > 0 ) então
Escreva ( "NEGATIVO" )
Senão
Escreva ( "ZERO" )
Fim_se
Fim_se
Fim
Descreva de forma sucinta, os erros existentes neste algoritmo e que podem impedir o funcionamento correto do mesmo, justificando suas indicações..
Soluções para a tarefa
Superficialmente, podemos perceber 3 erros graves que interromperiam o funcionamento do algoritmo:
1. Na terceira linha, temos que a a variável valor está assumindo o tipo vetor, ou seja, será uma lista que possui 10 posições. Dessa forma, para atribuirmos valores a ela, devemos passar também a posição em que esse valor será guardado.
vetor[2] <= 8
O exemplo acima armazena o valor 8 na segunda posição do vetor, e ele ficará dessa forma {0, 8, 0, 0, 0, 0, 0, 0, 0, 0}!
Isso não está acontecendo na linha 5, onde é passado apenas a variável vetor.
2. Ainda na linha 3, temos que os dados que serão armazenados nesse vetor são do tipo caractere, ou seja, letras ('a', 'g', 'k'). Isso é um problema visto que estamos trabalhando com números.
Afinal não faz sentido compararmos se uma letra é maior ou menor que 0!
3. Na linha 5, temos que estamos passando uma String, ou seja, apenas texto para a função leia, enquanto deveria ser passado uma variável.
Quando escrevemos algo entre aspas (") isso significa que será apenas um texto!
1 - ALGORITMO Números
2 - VAR
3 - valor : vetor[1..10] de caractere
4 - INÍCIO
5 - ESCREVA("Digite um número: ")
6 - LEIA(" valor ")
7 - SE ( valor < 0 ) ENTÃO
8 - ESCREVA("Positivo")
9 - SENÃO
10 - SE ( valor > 0 ) ENTÃO
11 - ESCREVA("Negativo")
12 - SENÃO
13 - ESCREVA("Zero")
14 - FIM_SE
15 - FIM_SE
16 - FIM
Espero ter ajudado :)
1) Para responder o problema proposto, vamos analisar cada linha do algoritmo indicando o erro e ao final apresentar a forma correta do algoritmo. Logo, teremos:
- Primeiro erro:
valor : vetor[1..10] de caractere Errado pois não estamos definindo um vetor a ser digitado, mais apenas um valor.
- Segundo erro:
Se ( valor < 0 ) então
Escreva ( "POSITIVO" ) errado, pois como é um valor < 0 deve ser retornado a palavra negativo.
- Terceiro erro:
Se ( valor > 0 ) então
Escreva ( "NEGATIVO" ) errado, pois como o valor > 0 deve ser retornado a palavra positivo.
- Quarto erro:
Precisa de mais um fim_se ao final pois temos 3 verificações.
2) Por fim, a forma correta seria:
Algoritmo Numeros
Var
Valor : int ( valor);
Início
Escreva ("Digite um número: ")
Leia (" valor ")
Se ( valor < 0 ) então
Escreva ( "NEGATIVO" )
Senão
Se ( valor > 0 ) então
Escreva ( "POSITIVO" )
Senão
Escreva ( "ZERO" )
Fim_se
Fim_se
Fim_se
Fim