Mudanças entre as edições de "Sistemas Operacionais e Introdução a Programação - atividades extraclasse 2010-1"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 205: Linha 205:
  
 
Faça um algoritmo para a verificação de uma jogada. Ele deve ler as cores dos quatro pinos do jogador, comparar com a senha, e então mostrar quantas cores há em posições certas e quantas em posições erradas.
 
Faça um algoritmo para a verificação de uma jogada. Ele deve ler as cores dos quatro pinos do jogador, comparar com a senha, e então mostrar quantas cores há em posições certas e quantas em posições erradas.
 +
 +
== Semana 5 ==
  
 
=Linguagem de Programação C=
 
=Linguagem de Programação C=

Edição das 13h49min de 7 de maio de 2010

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:, onde é o ângulo interno do polígono regular (obs: essa fórmula pode ser simplificada para 360/numeroDeLados). Porém, dessa vez, algumas restrições:
    • Se o usuário informar o número 0 (zero), o programa 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.
    • Nos demais casos, 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). Exemplo: um polígono regular de 18 lados terá o seguinte código Logo:
reset
repeat 18
{
  forward 25
  turnleft 20
}

pois 18 é um número par maior que 10.

  • Escreva um algoritmo para mostrar quantos dias há em um determinado mês de um ano. Note que em anos bissextos, que têm 366 dias, o mês de fevereiro possui 29 dias. Seu algoritmo portanto precisa de dois dados de entrada: o mês e o ano. A regra para determinação de ano bissexto segue abaixo:
    1. De 4 em 4 anos é ano bissexto.
    2. De 100 em 100 anos não é ano bissexto.
    3. De 400 em 400 anos é ano bissexto.
    4. Prevalecem as últimas regras sobre as primeiras.
  • Faça um jogo de par ou ímpar, em que o jogador aposta contra o computador. O jogador deve digitar um número entre 0 e 5 e optar entre par ou ímpar. O computador deve sortear um número também entre 0 e 5. Se a paridade da soma dos números do jogador e do computador for a mesma que o jogador optou, então ele ganha a partida, senão o computador vence.
  • Escreva um algoritmo para identificar se há, dentre três palavras lidas do teclado, ao menos duas palavras distintas que pertençam ao conjunto {azul, preto, vermelho}. Exemplos:
    • Se o usuário digitar verde, preto, vermelho, o programa deve mostrar na tela verdadeiro
    • Se o usuário digitar verde, preto, preto, o programa deve mostrar na tela falso
    • Se o usuário digitar azul, preto, azul, o programa deve mostrar na tela verdadeiro
  • Escreva uma calculadora para as quatro operações aritméticas básicas (+, -, *, /). Essa calculadora deve ler (nesta ordem) um número real, o símbolo da operação aritmética, e um segundo número real. Em seguida deve mostrar o resultado da operação solicitada.

Semana 4

  1. Escreva um algoritmo para fatorar um número. Quer dizer, ele deve mostrar todos os fatores primos que dividem esse número, e com as respectivas multiplicidades. Ex:
    • 15 tem fatores 3, 5
    • 18 tem fatores 2, 3, 3
    • 150 tem fatores 2, 3, 5, 5
  2. Escreva um algoritmo para calcular o MMC (Mínimo Múltiplo Comum) de dois números. O MMC de dois números é um número que pode ser dividido por qualquer um deles sem deixar resto. Ex:
    • MMC de 8 e 6 = 24
    • MMC de 3 e 5 = 15
    • MMC de 3 e 27 = 27
  3. Escreva um algoritmo para calcular o MDC (Máximo Divisor Comum) de dois números. O MDC de dois números é um número capaz de dividi-los sem deixar resto. Ex:
    • MDC de 24 e 16 = 8
    • MDC de 5 e 3 = 1
    • MDC de 60 e 150 = 30
  4. Faça um algoritmo para descobrir os dois maiores números dentre 6 números lidos do teclado.
  5. Faça um algoritmo para converter um número entre 0 e 16777215 para sua representação em hexadecimal.
  6. Escreva o algoritmo para uma calculadora aritmética (operações +, -, * e /) que lê continuamente do teclado números e operadores. A calculadora deve ler continuamente uma sequência do tipo número operador_aritmético, até que o operador informado seja =, quando então o resultado da conta deve ser mostrado na tela. Ex:
    • 1 + 2 * 5 / 3 = 5
    • 2 * 5 - 1 / 3 = 3
  7. Em uma máquina de contar moedas, o dispositivo que identifica as moedas as classifica segundo esses códigos:

Moeda Código
1 Real 10
50 centavos 8
25 centavos 7
10 centavos 5
5 centavos 3
1 centavo 1


Assim, um algoritmo dentro da máquina recebe do dispositivo de classificação um código para cada moeda, e faz a totalização dos valores em reais. O dispositivo de classificação informa o código -1 quando não houver mais moedas para serem classificadas.
Escreva o algoritmo que faz a contagem e totalização de moedas dessa máquina. Ele deve ao final mostrar as seguintes informações:

  • Valor total em reais
  • Quantidade total de moedas
  • Quantidade total de moedas de cada tipo
  • DESAFIOZINHO: faça um algoritmo que conta quantos elementos de um vetor são encontrados também em outro vetor. Valores repetidos devem ser contados apenas uma vez.
  • DESAFIOZÃO: no jogo "Senha", a senha é composta de quatro pinos que podem ter essas cores: verde, amarelo, azul, vermelho, roxo, rosa, laranja. O jogador deve tentar descobrir a senha, e para isto ele escolhe quatro pinos. A cada tentativa, o dono da senha deve informar quantos pinos correspondem a cores certas nas posições corretas, e quantos são cores certas mas em posições erradas. fazendo comparações entre suas tentativas, e usando lógica, o jogador deve ser capaz de descobrir a senha após um certo número de jogadas. Uma das versões desse jogo pode ser vista abaixo:

Supersenha2.jpg

Faça um algoritmo para a verificação de uma jogada. Ele deve ler as cores dos quatro pinos do jogador, comparar com a senha, e então mostrar quantas cores há em posições certas e quantas em posições erradas.

Semana 5

Linguagem de Programação C

Semana 1

Semana 2

Semana 3

Semana 4

Semana 5

Semana 6

Semana 7

Semana 8