Sistemas Operacionais e Introdução a Programação - atividades extraclasse 2010-1

De MediaWiki do Campus São José
Revisão de 01h49min de 16 de abril de 2010 por Etorresini (discussão | contribs) (→‎Semana 3)
Ir para navegação Ir para pesquisar

Lógica de Programação

Semana 1

São vistos os conceitos básicos de lógica de programação: instrução, algoritmo, sintaxe.

Para fins didáticos, pode-se usar a linguagem Logo através do programa Kturtle.

Para desenhos simples, bastam apenas as seguintes instruções:

  • reset
  • forward NÚMERO
  • turnright NÚMERO
  • turnleft NÚMERO

Baseado nesse conjunto de instruções, desenhe:

  • Um triângulo equilátero.
  • Um triângulo isósceles.
  • Um triângulo escaleno.
  • Um hexágono.
  • Um octógono.
  • 7 hexágonos interligados (um central e seis periféricos).
  • Uma espiral

Agora, o processo reverso: que desenho será gerado a partir do algoritmo abaixo?

reset
repeat 6
{
   forward 70
   turnleft 60
}
repeat 6
{
   forward 70
   turnright 60
}
turnleft 120
repeat 6
{
   forward 70
   turnleft 60
}
forward 70
turnright 60
repeat 6
{
   forward 70
   turnleft 60
}
forward 70
turnright 60
repeat 6
{
   forward 70
   turnleft 60
}
forward 70
turnright 60
repeat 6
{
   forward 70
   turnleft 60
}
forward 70
turnright 60
repeat 6
{
   forward 70
   turnleft 60
}

Jogo: Light Bot

Neste jogo, Light Bot, deve-se programar os movimentos do personagem para avançar à próxima fase.

Semana 2

  • A partir dessa semana, seré usado o Portugol IDE como ferramenta didática.

Portugol

  • Construa um programa que mostre, em sequência: 9, 9^2 (ao quadrado), 9^3 (ao cubo) e a soma desses 3 números.
inicio

   inteiro VAR1
   VAR1 <- 9
   escrever VAR1

   escrever "\n"

   inteiro VAR2
   VAR2 <- 9 * 9
   escrever VAR2
    
   escrever "\n"
    
   inteiro VAR3
   VAR3 <- 9 * 9 * 9
   escrever VAR3

   escrever "\n"
    
   inteiro SOMA
   SOMA <- VAR1 + VAR2 + VAR3
   escrever SOMA
fim
  • Construa um programa que escreverá, na tela, os 10 primeiros números da sequência de Fibonacci. Utilize, para tal, 10 variáveis.
    • Variante: utilize apenas 3 variáveis para resolver o problema.
    • Variante: utilize apenas 2 variáveis para resolver o problema.
  • Crie um conversor de decimal para binário (limite: 4 bits). Ex.: tendo o número 10 (decimal) de entrada, deve-se obter o número 1010 (binário) de saída.
  • Um equipamento conta o tempo desde que foi ligado. No entanto, essa contagem é feita em segundos. Faça um algoritmo que converta o valor desse contador para horas, minutos e segundos. Ex: se o contador tiver o valor 43397, o seu programa deve mostrar: 12:03:17.
  • Crie um gerador automático de código Logo para desenhar polígonos:
    • Ler um número do usuário.
    • Calcular o ângulo interno.
    • Apresentar como resultado o código Logo a ser inserido no programa Kturtle. Ex.: se o usuário digitar o número 3, o código será de um triângulo equilátero, cuja soma dos ângulos internos é 180 - logo, cada ângulo será de 60 graus (no Logo, lembre-se que o ângulo a ser usado é o complemento de 180, conforme visto em aula). Se o usuário digitar 5 ao invés de 3, teremos um pentágono. Abaixo temos soluções para triângulo e pentágono:
reset
repeat 3
[
  forward 100
  turnright 120
]
reset
repeat 5
[
  forward 100
  turnright 72
]

Semana 3

  • Construa o mesmo programa anterior, o gerador automática de código Logo, baseado na seguinte fórmula:

Porém, dessa vez, algumas restrições:

  • Se o usuário informar o número 0 (zero), o prograam deve alertá-lo de que não será possível prosseguir com o cálculo, uma vez que não é possível divisão por zero.
  • Se o usuário informar os números 1 ou 2, o programa deve alertá-lo de que não será possível desenhar um polígono regular com tal quantidades de lados.
  • O tamanho da passada (forward) dependerá da quantidade de lados:
    • Entre 3 e 6 lados: passada com tamanho 100 (forward 100).
    • Entre 7 e 10 lados: passada com tamanho 50.
    • Mais que 10 lados: passada com tamanho 25.
  • Se a quantidade de lados for par, o desenho deverá deslocar-se para a esquerda (turnleft); ímpar, para a direita (turnright).

Semana 4

Linguagem de Programação C

Semana 1

Semana 2

Semana 3

Semana 4

Semana 5

Semana 6

Semana 7

Semana 8