Informática, perguntado por fernandahnandahrosa, 11 meses atrás

Você deve construir um algoritmo que terá uma variável COR que poderá receber valores inteiros com a seguinte codificação:

1- Vermelho

2 - Verde

3 - Amarelo

O algoritmo deverá inicializar essa variável com 1, indicando a cor vermelha. Na sequência, o algoritmo deve iniciar uma repetição que deve:

- Mostrar o nome da cor correspondente à variável COR (utilizar um procedimento que cumpra esse objetivo);

- Na sequência, chamar outra função que mude o valor da variável COR, conforme a sequência de funcionamento do semáforo.

Assim como um semáforo, o algoritmo não precisa ter condição de parada, ele pode ser repetido infinitamente!

Soluções para a tarefa

Respondido por johhmartins
2

Resposta:

No algoritmo, você poderá perceber que:

- o procedimento mostra, que recebe por passagem por valor, o conteúdo da variável cor, e conforme este mostra a cor correspondente

- o procedimento troca, que recebe por passagem por referência a variável cor e a altera, conforme a sequência de funcionamento do semáforo

- no algoritmo principal, há o laço de repetição infinito (o programa nunca terminará); dentro dele, são chamados os procedimentos mostra e troca; após, tem-se uma repetição, para que demore um pouco antes de repetir.

algoritmo "semaforo"

var

cor,i : inteiro

procedimento mostra(c:inteiro)

inicio

escolha c faca

caso 1

escreval("Vermelho")

caso 2

escreval("Verde")

caso 3

escreval("Amarelo")

fimescolha

fimprocedimento

procedimento troca(var c:inteiro)

inicio

c <- c + 1

se (c > 3) entao

c <- 1

fimse

fimprocedimento

inicio

cor <- 1

repita

mostra(cor)

troca(cor)

para i de 1 ate 50000 faca

i <- i + 1

fimpara

ate cor > 3

fimalgoritmo

Explicação:

Respondido por soualexandrerocha
1

O algoritmo a seguir, escrito em Visualg, é praticamente idêntico ao da primeira resposta, aliás muito boa. A maior diferença (marcada em negrito) está em eu ter trocado o laço repita por um laço enquanto. Fiz a mudança porque, no teste do código original, "amarelo" só imprime ao mesmo tempo que "vermelho".

Sempre teste os códigos que encontrar. Ajuda a entender como funciona e você pode evitar surpresas (eu já vi cada coisa...)

Algoritmo "Semáforo"

var

cor,i : inteiro

procedimento mostra(c:inteiro) // função de exibição de cor conforme caso

// recebe o *conteúdo* da variável "cor" mediante passagem por valor

inicio

escolha c faca

caso 1

escreval("Vermelho")

caso 2

escreval("Verde")

caso 3

escreval("Amarelo")

fimescolha

fimprocedimento

procedimento troca(var c:inteiro) // função de mudança de cor

// recebe a varíável "cor" por referência (por isso "var c:inteiro")

// e altera o valor dela

inicio

c <- c + 1  //incrementa valor de "c"

se (c > 3) entao

c <- 1

fimse

fimprocedimento

inicio

cor <- 1

//laço enquanto infinito, porque a condição sempre será verdadeira

enquanto (cor<4) faca

mostra(cor)

troca(cor)

para i de 1 ate 10000 faca  // pausa temporária antes da próxima repetição do mostra e do troca

i <- i + 1

fimpara

fimenquanto

fimalgoritmo

Perguntas interessantes