sexta-feira, 25 de novembro de 2011

Aula 31 - 25.11.2011

algoritmo "Imóveis"

var
descricao: vetor [1..100] de caracter
rua: vetor [1..100] de caracter
bairro: vetor [1..100] de caracter
cidade: vetor [1..100] de caracter
uf: vetor [1..100] de caracter
aluguel: vetor [1..100] de logico
valor: vetor [1..100] de real
proxCod: inteiro

procedimento tituloSistema()
inicio
limpatela
escreval("================================")
escreval("Sistema de Comparação de Imóveis")
escreval("================================")
escreval("                __    ")
escreval("       _________||___ ")
escreval("      /____________\  ")
escreval("     /|   _     _  |\ ")
escreval("      |  | |   |_| |  ")
escreval("      |  | |       |  ")
escreval("--------------------------------")
fimprocedimento

procedimento menuPrincipal()
var op: caracter
inicio
enquanto (op <> "9") faca
   tituloSistema()
   escreval(".: MENU PRINCIPAL :. ")
   escreval("    1 - Incluir novo imóvel")
   escreval("    2 - Alterar imóvel")
   escreval("    3 - Remover imóvel")
   escreval("    4 - Listar imóveis")
   escreval("    5 - Escolher melhor imóvel")
   escreval("    9 - Sair")
   escreval("--------------------------------")
   op <- lerCaracter("Opção: ")
   se (op = "1") entao
      incluirNovoImovel()
   fimse
   se (op = "2") entao
      alterarImovel()
   fimse
   se (op = "3") entao
      excluirImovel()
   fimse
   se (op = "4") entao
      listarImoveis()
   fimse
fimenquanto
fimprocedimento

procedimento incluirNovoImovel()
var op: caracter
inicio
tituloSistema()
escreval("Inclusão de Imóvel")
escreval("------------------")
proxCod <- proxCod + 1
descricao[proxCod] <- lerCaracter("Digite a Descrição: ")
rua[proxCod] <- lerCaracter("Digite a Rua: ")
bairro[proxCod] <- lerCaracter("Digite o Bairro: ")
cidade[proxCod] <- lerCaracter("Digite a Cidade: ")
uf[proxCod] <- lerCaracter("Digite a UF: ")
aluguel[proxCod] <- lerLogico("É imóvel de aluguel (S/N): ")
valor[proxCod] <- lerReal("Valor: ")
escreval("------------------")
escreval("Imóvel cadastrado com sucesso!")
escreval("------------------")
escreval("Pressione ENTER para voltar ao menu.")
leia(op)
fimprocedimento

procedimento alterarImovel()
var op: caracter
cod: inteiro
inicio
tituloSistema()
escreval("Alteração de Imóvel")
escreval("-------------------")
cod <- lerInteiro("Digite o código a ser alterado: ")
se (cod < 1) ou (cod > proxCod) entao
   escreval("Código inválido! Pressione ENTER para voltar ao menu.")
   leia(op)
senao
   mostrarImovel(cod)
   escreval("------------------")
   descricao[cod] <- lerCaracter("Nova Descrição: ")
   rua[cod] <- lerCaracter("Nova Rua: ")
   bairro[cod] <- lerCaracter("Novo Bairro: ")
   cidade[cod] <- lerCaracter("Nova Cidade: ")
   uf[cod] <- lerCaracter("Nova UF: ")
   aluguel[cod] <- lerLogico("É imóvel de aluguel (S/N): ")
   valor[cod] <- lerReal("Novo Valor: ")
   escreval("------------------")
   escreval("Imóvel alterado com sucesso!")
   escreval("------------------")
   escreval("Pressione ENTER para voltar ao menu.")
   leia(op)
fimse
fimprocedimento

procedimento excluirImovel()
var op: caracter
confirmacao: logico
cod: inteiro
inicio
tituloSistema()
escreval("Exclusão de Imóvel")
escreval("------------------")
cod <- lerInteiro("Digite o código a ser excluído: ")
se (cod < 1) ou (cod > proxCod) entao
   escreval("Código inválido! Pressione ENTER para voltar ao menu.")
   leia(op)
senao
   mostrarImovel(cod)
   escreval("------------------")
   confirmacao <- lerLogico("Realmente excluir este imóvel? (S/N) ")
   se (confirmacao = VERDADEIRO) entao
      descricao[cod] <- ""
      escreval("------------------")
      escreval("Imóvel excluído com sucesso!")
      escreval("------------------")
      escreval("Pressione ENTER para voltar ao menu.")
      leia(op)
   fimse
fimse
fimprocedimento

procedimento listarImoveis()
var i: inteiro
op: caracter
inicio
tituloSistema()
escreval("Lista de Imóveis")
para i de 1 ate proxCod faca
   se (descricao[i] <> "") entao
      mostrarImovel(i)
   fimse
fimpara
escreval("----------------")
escreval("Pressione ENTER para voltar ao menu.")
leia(op)
fimprocedimento

procedimento mostrarImovel(cod: inteiro)
inicio
escreval("----------------")
escreval("Código ", cod)
escreval("   Descrição: ", descricao[cod])
escreval("   Rua: ", rua[cod], ", ", bairro[cod])
escreval("   Cidade: ", cidade[cod], "/", uf[cod])
escreval("   Aluguel: ", aluguel[cod])
escreval("   Valor: R$ ", valor[cod])
fimprocedimento

funcao lerCaracter(m: caracter): caracter
var v: caracter
inicio
escreva(m)
leia(v)
retorne v
fimfuncao

funcao lerInteiro(m: caracter): inteiro
var v: inteiro
inicio
escreva(m)
leia(v)
retorne v
fimfuncao

funcao lerReal(m: caracter): real
var v: real
inicio
escreva(m)
leia(v)
retorne v
fimfuncao

funcao lerLogico(m: caracter): logico
var v: caracter
inicio
escreva(m)
leia(v)
se (v = "S") ou (v = "s") entao
   retorne verdadeiro
senao
   retorne falso
fimse
fimfuncao

procedimento carregarValoresParaTeste()
inicio
proxCod <- proxCod + 1
descricao[proxCod] <- "apto 2q"
rua[proxCod] <- "ipiranga"
bairro[proxCod] <- "azenha"
cidade[proxCod] <- "poa"
uf[proxCod] <- "rs"
aluguel[proxCod] <- VERDADEIRO
valor[proxCod] <- 1000.0

proxCod <- proxCod + 1
descricao[proxCod] <- "apto 3q"
rua[proxCod] <- "azenha"
bairro[proxCod] <- "azenha"
cidade[proxCod] <- "poa"
uf[proxCod] <- "rs"
aluguel[proxCod] <- FALSO
valor[proxCod] <- 120000.0

proxCod <- proxCod + 1
descricao[proxCod] <- "casa"
rua[proxCod] <- "borges"
bairro[proxCod] <- "centro"
cidade[proxCod] <- "poa"
uf[proxCod] <- "rs"
aluguel[proxCod] <- VERDADEIRO
valor[proxCod] <- 1500.0

fimprocedimento

inicio
carregarValoresParaTeste()
menuPrincipal()
fimalgoritmo

quarta-feira, 23 de novembro de 2011

sexta-feira, 18 de novembro de 2011

Aula 29 - 18.11.2011

Projeto "Sistema de Comparação de Imóveis"

algoritmo "Imóveis"

var
descricao: vetor [1..100] de caracter
rua: vetor [1..100] de caracter
bairro: vetor [1..100] de caracter
cidade: vetor [1..100] de caracter
uf: vetor [1..100] de caracter
aluguel: vetor [1..100] de logico
valor: vetor [1..100] de real
proxCod: inteiro

procedimento tituloSistema()
inicio
limpatela
escreval("================================")
escreval("Sistema de Comparação de Imóveis")
escreval("================================")
escreval("            __    ")
escreval("   _________||___ ")
escreval("  /____________\  ")
escreval(" /|   _     _  |\ ")
escreval("  |  | |   |_| |  ")
escreval("  |  | |       |  ")
escreval("================================")
fimprocedimento

procedimento menuPrincipal()
var op: caracter
inicio
enquanto (op <> "9") faca
   tituloSistema()
   escreval("1 - Incluir novo imóvel")
   escreval("2 - Alterar imóvel")
   escreval("3 - Remover imóvel")
   escreval("4 - Listar imóveis")
   escreval("5 - Comparar imóveis")
   escreval("6 - Escolher imóvel")
   escreval("9 - Sair")
   escreval("================================")
   op <- lerCaracter("Opção: ")
   se (op = "1") entao
      incluirNovoImovel()
   fimse
   se (op = "4") entao
      listarImoveis()
   fimse
fimenquanto
fimprocedimento

procedimento incluirNovoImovel()
var op: caracter
inicio
tituloSistema()
escreval("Inclusão de Imóvel")
escreval("------------------")
proxCod <- proxCod + 1
descricao[proxCod] <- lerCaracter("Digite a Descrição: ")
rua[proxCod] <- lerCaracter("Digite a Rua: ")
bairro[proxCod] <- lerCaracter("Digite o Bairro: ")
cidade[proxCod] <- lerCaracter("Digite a Cidade: ")
uf[proxCod] <- lerCaracter("Digite a UF: ")
aluguel[proxCod] <- lerLogico("É imóvel de aluguel (S/N): ")
valor[proxCod] <- lerReal("Valor: ")
escreval("------------------")
escreval("Imóvel cadastrado com sucesso!")
escreva("Deseja cadastrar outro? (S/N) ")
leia(op)
se (op = "S") ou (op = "s") entao
   incluirNovoImovel()
fimse
fimprocedimento

procedimento listarImoveis()
var i: inteiro
op: caracter
inicio
tituloSistema()
escreval("Lista de Imóveis")
para i de 1 ate proxCod faca
   escreval("----------------")
   escreval("Código ", i)
   escreval("   Descrição: ", descricao[i])
   escreval("   Rua: ", rua[i], ", ", bairro[i])
   escreval("   Cidade: ", cidade[i], "/", uf[i])
   escreval("   Aluguel: ", aluguel[i])
   escreval("   Valor: R$ ", valor[i])
   escreval("----------------")
fimpara
escreval("Digite  para voltar ao menu principal.")
leia(op)
fimprocedimento

funcao lerCaracter(m: caracter): caracter
var v: caracter
inicio
escreva(m)
leia(v)
retorne v
fimfuncao

funcao lerInteiro(m: caracter): inteiro
var v: inteiro
inicio
escreva(m)
leia(v)
retorne v
fimfuncao

funcao lerReal(m: caracter): real
var v: real
inicio
escreva(m)
leia(v)
retorne v
fimfuncao

funcao lerLogico(m: caracter): logico
var v: caracter
inicio
escreva(m)
leia(v)
se (v = "S") ou (v = "s") entao
   retorne verdadeiro
senao
   retorne falso
fimse
fimfuncao

inicio
menuPrincipal()
fimalgoritmo


quarta-feira, 16 de novembro de 2011

Aula 28 - 16.11.2011

Início do trabalho final
  • Biblioteca pessoal
    • Código do livro, Título, Autor, Ano de publicação, Já lido, Páginas e Preço
  • Cadastro de filmes
    • Código, Título, Rating, Ano, Gênero, Já visto e Tempo total.
  • Cadastro de veículos
    • Código, Marca, Modelo, Ano, Cor, Portas, Opcionais e Preço.
  • Cadastro de pessoas
    • CPF, Nome, Sexo, Fone, Email, Dia e Mês de nascimento, Altura e Peso.
  • Cadastro de endereços
    • CEP, Rua, Bairro, Cidade, Estado, País, 
  • Cadastro de cidades
    • Código, Nome, Estado, Qtde habitantes, Já fui, É capital e PIB anual
  • Cadastro de objetos pessoais
    • Código, Nome, Tipo, Comprado em (mm/aaaa), Preço, Onde está e Perdido.
  • Cadastro de computadores
    • Código, Marca, Processador, Qtde RAM, Qtde HD, É notebook e Preço.
  • Registro de Atendimento em Clínica Médica
    • Dia, mês e ano do atendimento, CPF ou RG, Nome, Sexo, Idade, Convênio e Valor.
  • Controle de pet-shop
    • Dia e mês, hora e minuto, nome do pet, raça, peso e descrição do serviço.
  • Controle de alimentação
    • Dia e mês, turno, alimento, quantidade, calorias e peso.
  • Controle de Treino de Academia
    • Dia, mês e ano, aparelho, exige peso, peso, séries e repetições.
  • Sistema de avaliações
    • Nome do aluno, Pergunta, Resposta 1, Resposta 2, Resposta 3, Resposta 4, Resposta 5, Resposta, Resposta certa. Ao final, calcular a nota do aluno. 
  • Cadastro de músicas
    • Nome, Artista, Gênero, Ano, Tempo e se É ao vivo. 

sexta-feira, 11 de novembro de 2011

Aula 27 - 11.11.2011

[Lista de Exercícios]

1) Faça um procedimento que receba um valor inteiro e escreva, dentro do procedimento, se o número é positivo ou negativo.

2) Faça uma função que receba um valor inteiro e retorne se o valor é positivo ou negativo.

3) Faça um procedimento que receba um parâmetro por referência do tipo inteiro e o altere internamente para um valor 3 vezes maior caso seja ímpar e 2 vezes menor cada seja par. Mostrar o número ao final do algoritmo.

4) Faça uma função que receba um número inteiro positivo N como parâmetro e retorne a soma dos N números inteiros existentes entre o número 1 e esse número.

5) Faça um procedimento que substitua todos os valores negativos de um vetor de 25 números inteiros por zero sempre que a posição i do vetor for menor que zero. Faça outro procedimento que liste os 25 novos valores do vetor. Utilize os dois procedimentos no algoritmo.

quarta-feira, 9 de novembro de 2011

Aula 26 - 09.11.2011

Procedimentos e Funções
Forma de organizar o código que permite reutilizar operações repetitivas.

Procedimentos
Não retorna valores, apenas executa algo.
Pode receber parâmetros de entrada ou não.
Estes parâmetros podem ser por valor ou por referência.
---------------------------------------------
Passagem de parâmetros por valor:
---------------------------------------------
algoritmo "semnome"
var
 salario: real
procedimento darAumento(s: real)
inicio
  s <- s + (s * 0.1)
fimprocedimento
inicio
 leia(salario)
 darAumento(salario)
 escreval("Infelizmente seu salário não foi aumentado: ", salario)
fimalgoritmo
---------------------------------------------
Passagem de parâmetros por referência:
---------------------------------------------
algoritmo "semnome"
var
 salario: real
procedimento darAumento(var s: real)
inicio
  s <- s + (s * 0.1)
fimprocedimento
inicio
 leia(salario)
 darAumento(salario)
 escreval("Parabéns! Seu salário foi aumentado: ", salario)
fimalgoritmo
---------------------------------------------

Funções 
Além de executar algo, retorna valor. Pode receber parâmetro de entrada ou não. Estes parâmetros podem ser por valor ou por referência.
---------------------------------------------
Exemplo:
---------------------------------------------
algoritmo "semnome"
var
 salario: real
funcao darAumento(s: real): real
inicio
  retorne s + (s * 0.1)
fimfuncao
inicio
 leia(salario)
 escreval("Parabéns! Seu salário foi aumentado: ", darAumento(salario))
fimalgoritmo
---------------------------------------------
[Lista de Exercícios]

1) Faça um procedimento que receba um valor inteiro e escreva, dentro do procedimento, se o número é positivo ou negativo.

2) Faça uma função que receba um valor inteiro e retorne se o valor é positivo ou negativo.

3) Faça um procedimento que receba um parâmetro por referência do tipo inteiro e o altere internamente para um valor 3 vezes maior caso seja ímpar e 2 vezes menor cada seja par. Mostrar o número ao final do algoritmo.

4) Faça uma função que receba um número inteiro positivo N como parâmetro e retorne a soma dos N números inteiros existentes entre o número 1 e esse número.

5) Faça um procedimento que substitua todos os valores negativos de um vetor de 25 números inteiros por zero sempre que a posição i do vetor for menor que zero. Faça outro procedimento que liste os 25 novos valores do vetor. Utilize os dois prccedimentos no algoritmo.

Aula 26 - 09.11.2011 - Extra

Segue abaixo um algoritmo feito no VisualG para servir de base para o estudo.

Para quem quiser fazer um "a mais" neste algoritmo, eu gostaria de vê-lo tendo a possibilidade de executar o jogo no formato "jogador x computador".

algoritmo "Jogo da Velha"
var
   matriz: vetor[1..3,1..3] de caracter
   coluna, linha: inteiro
   jogador1, jogador2, jogando, ganhador, letra, m: caracter
   fim_do_jogo: logico
   
inicio
escreval(" ==== JOGO DA VELHA ==== ")
// Lendo o nome dos jogadores...
escreva("Informe nome do jogador 1: ")
leia(jogador1)
escreva("Informe nome do jogador 2: ")
leia(jogador2)
// Mostrando matriz vazia...
para linha de 1 ate 3 faca
   m <- ""
   para coluna de 1 ate 3 faca
      m <- m + "   "
      se (coluna < 3) entao
         m <- m + "|"
      fimse
   fimpara
   escreval(m)
   escreval("---|---|---")
fimpara
escreval(" ")
// Enquanto a variável 'fim_do_jogo' não for verdadeira, continue jogando...
enquanto (fim_do_jogo = falso) faca
   // Verifica qual é o jogador da jogada...
   se (jogando = jogador2) entao
      jogando <- jogador1
      letra <- "X"
   senao
      jogando <- jogador2
      letra <- "O"
   fimse
   // Solicita a coluna/linha da jogada...
   escreva(jogando, ", digite a coluna da jogada: ")
   leia(coluna)
   escreva(jogando, ", digite linha da jogada: ")
   leia(linha)
   // Verifica se a posição já não foi usada...
   enquanto (matriz[coluna, linha] <> "") faca
      escreval("Posição já utilizada. Tente novamente!")
      escreva(jogando, ", digite a coluna da jogada: ")
      leia(coluna)
      escreva(jogando, ", digite linha da jogada: ")
      leia(linha)
   fimenquanto
   // Atribui a letra na coluna/linha que foi informada
   matriz[coluna, linha] <- letra
   
   // Mostra a matriz na tela.
   para linha de 1 ate 3 faca
      m <- ""
      para coluna de 1 ate 3 faca
         letra <- matriz[coluna, linha]
         se (letra = "") entao
            letra <- " "
         fimse
         m <- m + " " + letra + " "
         se (coluna < 3) entao
            m <- m + "|"
         fimse
      fimpara
      escreval(m)
      escreval("---|---|---")
   fimpara
   // Verifica se jogo já não acabou...
   fim_do_jogo <- verdadeiro
   para linha de 1 ate 3 faca
      para coluna de 1 ate 3 faca
         se (matriz[coluna, linha] = "") entao
            fim_do_jogo <- falso
         fimse
      fimpara
   fimpara
   // Verifica se houve ganhador na jogada
   se (matriz[1,1] <> "") entao
      // Testando a 1a. coluna...
      se (matriz[1,1] = matriz[1,2]) e (matriz[1,1] = matriz[1,3]) entao
         ganhador <- jogando
      fimse
      // Testando na diagonal...
      se (matriz[1,1] = matriz[2,2]) e (matriz[1,1] = matriz[3,3]) entao
         ganhador <- jogando
      fimse
      // Testando a 1a. linha...
      se (matriz[1,1] = matriz[2,1]) e (matriz[1,1] = matriz[3,1]) entao
         ganhador <- jogando
      fimse
   fimse
   se (matriz[2,1] <> "") entao
      // Testando a 2a. coluna...
      se (matriz[2,1] = matriz[2,2]) e (matriz[2,1] = matriz[2,3]) entao
         ganhador <- jogando
      fimse
   fimse
   se (matriz[3,1] <> "") entao
      // Testando a diagonal invertida..
      se (matriz[3,1] = matriz[2,2]) e (matriz[3,1] = matriz[1,3]) entao
         ganhador <- jogando
      fimse
      // Testando a 3a. coluna...
      se (matriz[3,1] = matriz[3,2]) e (matriz[3,1] = matriz[3,3]) entao
         ganhador <- jogando
      fimse
   fimse
   se (matriz[1,2] <> "") entao
      // Testando a 2a. linha...
      se (matriz[1,2] = matriz[2,2]) e (matriz[1,2] = matriz[3,2]) entao
         ganhador <- jogando
      fimse
   fimse
   se (matriz[1,3] <> "") entao
      // Testando a 3a. linha...
      se (matriz[1,3] = matriz[2,3]) e (matriz[1,3] = matriz[3,3]) entao
         ganhador <- jogando
      fimse
   fimse
   // Verifica se houve ganhador e termina o jogo
   se (ganhador <> "") entao
      fim_do_jogo <- verdadeiro
   fimse
fimenquanto
// Testando para ver se tem um ganhador...
se (ganhador = "") entao
   escreval("Não houve ganhar!!")
senao
   escreval("Parabéns ", ganhador, ". Você foi o vencedor!!")
fimse
fimalgoritmo