Sistemas Operacionais e Introdução a Programação (diário 2009-2) - Prova de Lógica de Programação

De MediaWiki do Campus São José
Revisão de 14h27min de 7 de outubro de 2009 por Etorresini (discussão | contribs) (→‎Resposta)
Ir para navegação Ir para pesquisar

Cada questão deve contemplar:

  • Pseudocódigo com entrada, processamento e saída de dados;
  • Diagrama de blocos.

Questão 1

Monte uma calculadora simples, que utiliza as quatro operações básicas:

  • +
  • -
  • /
  • *

A calculadora deve pedir indefinidamente números e operadores enquanto não for digitado o símbolo "=". A cada par de números e uma operação, deve-se mostrar o resultado intermediário dos cálculos. Exemplo:

Digite o primeiro número: 42
Digite a operação: +
Digite o segundo número: 7
Resultado intermediário: 49
Digite a próxima operação: /
Digite o próximo número: 7
Resultado intermediário: 7
Digite a próxima operação: =
Resultado final: 7

Observação: esta questão estava disponível na lista de exercícios do Prof. Sobral.

Resposta

  • Pseudocódigo
    1. Leia o primeiro número e armazene em "numeroUm".
    2. Enquanto "operador" for diferente de "=" faça
      1. Apresente a lista de operadores possíveis (+, -, / e *).
      2. Leia o operador e armazene em "operador".
      3. Se "operador" é diferente de "=" então
        1. Leia o segundo número e armazene em "numeroDois".
        2. Aplique o operador "operador" sobre "numeroUm" e "numeroDois", nesta ordem, e armazene o resultado em "numeroUm".
        3. Apresente na tela o resultado intermediário da operação - armazenado em "numeroUm".
      4. Fim Se
    3. Fim Enquanto
    4. Apresente na tela o resultado final das operações - armazenado em "numeroUm".
  • Diagrama em blocos

<graphviz> digraph Questao1 { "Início" -> "Leia numeroUm" "Leia numeroUm" [shape=invtrapezium] "Enquanto: operador != =?" [shape=diamond] "Escreva lista de operadores" [shape=record] "Leia operador" [shape=invtrapezium] "Se: operador != =?" [shape=diamond] "Leia numeroDois" [shape=record] "numeroUm = numeroUm operador numeroDois" [shape=record] "Escreva resultado int. numeroUm" [shape=record] "Escreva resultado final numeroUm" [shape=record] "Fim"

"Início" -> "Leia numeroUm" "Leia numeroUm" -> "Enquanto: operador != =?" "Enquanto: operador != =?" -> "Escreva resultado final numeroUm" [label="Não"] "Escreva resultado final numeroUm" -> "Fim" "Enquanto: operador != =?" -> "Escreva lista de operadores" [label="Sim"] "Escreva lista de operadores" -> "Leia operador" "Leia operador" -> "Se: operador != =?" "Se: operador != =?" -> "Escreva resultado final numeroUm" [label="Não"] "Escreva resultado final numeroUm" -> "Fim" "Se: operador != =?" "Leia numeroDois" -> [label="Sim"] "Leia numeroDois" -> "numeroUm = numeroUm operador numeroDois" "numeroUm = numeroUm operador numeroDois" -> "Escreva resultado int. numeroUm" "Escreva resultado int. numeroUm" -> "Enquanto: operador != =?" } </graphviz>

Questão 2

Construa um programa que gera código, automaticamente, para o programa Kturtle para desenhar estrelas de n pontas. Assuma os segmentos de reta com tamanho 100.

Para resolver o problema, bastam apenas duas instruções do Kturtle:

  • forward
  • turnleft ou turnright

Exemplo: para desenhar uma estrela de 5 pontas no Kturtle, é preciso o seguinte conjunto de instruções:

forward 100
turnleft 144
forward 100
turnleft 144
forward 100
turnleft 144
forward 100
turnleft 144
forward 100

Observação: já foi proposta em aula uma atividade parecida.

Resposta

Questão 3

Dada uma equação de 2º grau, leia os três números e aplique a fórmula de Bhaskara - para obter a(s) resposta(s).

Observação: diferente da questão 2, já foi proposta em aula esta mesma atividade.

Resposta

Questão 4

Leia um número e, a partir do mesmo conjunto de instruções, identifique se o número é primo e/ou perfeito.

Observação: é uma combinação de atividades já propostas.

Resposta

Diário da disciplina