- Entrega dos Trabalhos no SIGA.
Programação Estruturada - IPA 2011
quarta-feira, 29 de junho de 2011
sexta-feira, 17 de junho de 2011
Aula 17 - 18.06.2011
Revisão da prova e entrega das notas.
Trabalho valendo nota:
1) Desenvolva um algoritmo que apresente um menu ao usuário com as seguintes opções:
=== Sistema de Cadastro de Músicas ====
I - Incluir nova Música
A - Alterar Música
E - Excluir Música
L - Listar todas as Músicas
F - Filtrar
Funções/Procedimentos esperados:
incluir() - Deve permitir ao usuário incluir uma música com os seguintes dados: nome da música, nome da banda, tamanho da música, nota (de 0 a 10)
alterar() - Deve permitir ao usuário alterar os dados de uma música.
excluir() - Deve permitir ao usuário excluir uma música.
listar() - Deve mostrar na tela todas as músicas cadastradas, porém, deve dar a opção ao usuário poder escolher qual ordenação crescente ou decrescente por nome da música, nome da banca, tamanho ou nota, sendo o padrão por nota decrecente
filtrar() - Deve apresentar uma tela de filtragem para que se encontre as músicas desejadas: por nome, por banda, maior que tantos minutos, por nota, etc.
Trabalho valendo nota:
1) Desenvolva um algoritmo que apresente um menu ao usuário com as seguintes opções:
=== Sistema de Cadastro de Músicas ====
I - Incluir nova Música
A - Alterar Música
E - Excluir Música
L - Listar todas as Músicas
F - Filtrar
Funções/Procedimentos esperados:
incluir() - Deve permitir ao usuário incluir uma música com os seguintes dados: nome da música, nome da banda, tamanho da música, nota (de 0 a 10)
alterar() - Deve permitir ao usuário alterar os dados de uma música.
excluir() - Deve permitir ao usuário excluir uma música.
listar() - Deve mostrar na tela todas as músicas cadastradas, porém, deve dar a opção ao usuário poder escolher qual ordenação crescente ou decrescente por nome da música, nome da banca, tamanho ou nota, sendo o padrão por nota decrecente
filtrar() - Deve apresentar uma tela de filtragem para que se encontre as músicas desejadas: por nome, por banda, maior que tantos minutos, por nota, etc.
quarta-feira, 15 de junho de 2011
sábado, 11 de junho de 2011
Aula 15 - 11.06.2011
Continuação da lista de exercícios
----------------------------------------------------
Exemplos de funções vista em aula:
----------------------------------------------------
algoritmo "Gerar Números da Mega-sena"
var
i,j,x: inteiro
valores: vetor[1..6] de inteiro
funcao gerarNumeroAleatorio(intervalo: inteiro; consideraNegativos: logico; comecaDoUm: logico): inteiro
var r: inteiro
inicio
r <- int(rand*intervalo)
se (comecaDoUm) entao
r <- r + 1
fimse
se (consideraNegativos) entao
r <- (r - int(intervalo/2))
fimse
retorne r
fimfuncao
inicio
para j de 1 ate 10 faca
escreva("Palpite ", j, " [")
para i de 1 ate 6 faca
valores[i] <- gerarNumeroAleatorio(60, falso, verdadeiro), ",")
x <- i-1
enquanto (x > 0) faca
se (valores[i] = valores[x]) entao
escreva("(Repitiu: ", valores[x], " na posição ", x, ")")
valores[i] <- gerarNumeroAleatorio(60, falso, verdadeiro), ",")
x <- i
fimse
x <- x-1
fimenquanto
escreva(valores[i], ",")
fimpara
escreval("]")
fimpara
fimalgoritmo
----------------------------------------------------
algoritmo "GerarNumeroAleatorio"
var
i: inteiro
funcao gerarNumeroAleatorio(intervalo: inteiro; consideraNegativos: logico; comecaDoUm: logico): inteiro
var r: inteiro
inicio
r <- int(rand*intervalo)
se (comecaDoUm) entao
r <- r + 1
fimse
se (consideraNegativos) entao
r <- r - int(intervalo/2)
fimse
retorne r
fimfuncao
inicio
para i de 1 ate 20 faca
escreval(gerarNumeroAleatorio(10, falso, falso))
fimpara
fimalgoritmo
----------------------------------------------------
Exemplos de funções vista em aula:
----------------------------------------------------
algoritmo "Gerar Números da Mega-sena"
var
i,j,x: inteiro
valores: vetor[1..6] de inteiro
funcao gerarNumeroAleatorio(intervalo: inteiro; consideraNegativos: logico; comecaDoUm: logico): inteiro
var r: inteiro
inicio
r <- int(rand*intervalo)
se (comecaDoUm) entao
r <- r + 1
fimse
se (consideraNegativos) entao
r <- (r - int(intervalo/2))
fimse
retorne r
fimfuncao
inicio
para j de 1 ate 10 faca
escreva("Palpite ", j, " [")
para i de 1 ate 6 faca
valores[i] <- gerarNumeroAleatorio(60, falso, verdadeiro), ",")
x <- i-1
enquanto (x > 0) faca
se (valores[i] = valores[x]) entao
escreva("(Repitiu: ", valores[x], " na posição ", x, ")")
valores[i] <- gerarNumeroAleatorio(60, falso, verdadeiro), ",")
x <- i
fimse
x <- x-1
fimenquanto
escreva(valores[i], ",")
fimpara
escreval("]")
fimpara
fimalgoritmo
----------------------------------------------------
algoritmo "GerarNumeroAleatorio"
var
i: inteiro
funcao gerarNumeroAleatorio(intervalo: inteiro; consideraNegativos: logico; comecaDoUm: logico): inteiro
var r: inteiro
inicio
r <- int(rand*intervalo)
se (comecaDoUm) entao
r <- r + 1
fimse
se (consideraNegativos) entao
r <- r - int(intervalo/2)
fimse
retorne r
fimfuncao
inicio
para i de 1 ate 20 faca
escreval(gerarNumeroAleatorio(10, falso, falso))
fimpara
fimalgoritmo
quinta-feira, 9 de junho de 2011
CURSO 'THE BOOK IS ON THE TABLE'
O Brasil sediará a Copa de 2014. Como muitos turistas de todo mundo estarão por aqui, é imprescindível o aprendizado de outros idiomas (em particular o inglês) para a melhor comunicação com eles.
Pensando em auxiliar no aprendizado, foi formulada uma solução prática e rápida!!
Chegou o sensacional e insuperável curso 'The Book is on the Table', com muitas palavras que você usará durante a Copa do Mundo de 2014.
Veja como é fácil!
a.) Is we in the tape!= É nóis na fita.
b.) Tea with me that I book your face= Chá comigo que eu livro sua cara.(essa é SEN-SA-CI-O-NAL !!!!! )
c.) I am more I= Eu sou mais eu.
d.) Do you want a good-good?= Você quer um bom-bom?
e.) Not even come that it doesn't have!= Nem vem que não tem!
f.) She is full of nine o'clock= Ela é cheia de nove horas.
g.) I am completely bald of knowing it= To careca de saber.
h.) Ooh! I burned my movie!= Oh! Queimei meu filme!
i.) I will wash the mare.= Vou lavar a égua.
j.) Go catch little coconuts!= Vai catar coquinho!
k..) If you run, the beast catches, if you stay the beast eats!= Se correr, o bicho pega, se ficar o bicho come!
l.) Before afternoon than never.= Antes tarde do que nunca.
m.) Take out the little horse from the rain= Tire o cavalinho da chuva.
n.) The cow went to the swamp.= A vaca foi pro brejo!
o.) To give one of John the Armless= Dar uma de João-sem-Braço.
p.) Look the bird= Olha o passarinho (essa faltou)
Pensando em auxiliar no aprendizado, foi formulada uma solução prática e rápida!!
Chegou o sensacional e insuperável curso 'The Book is on the Table', com muitas palavras que você usará durante a Copa do Mundo de 2014.
Veja como é fácil!
a.) Is we in the tape!= É nóis na fita.
b.) Tea with me that I book your face= Chá comigo que eu livro sua cara.(essa é SEN-SA-CI-O-NAL !!!!! )
c.) I am more I= Eu sou mais eu.
d.) Do you want a good-good?= Você quer um bom-bom?
e.) Not even come that it doesn't have!= Nem vem que não tem!
f.) She is full of nine o'clock= Ela é cheia de nove horas.
g.) I am completely bald of knowing it= To careca de saber.
h.) Ooh! I burned my movie!= Oh! Queimei meu filme!
i.) I will wash the mare.= Vou lavar a égua.
j.) Go catch little coconuts!= Vai catar coquinho!
k..) If you run, the beast catches, if you stay the beast eats!= Se correr, o bicho pega, se ficar o bicho come!
l.) Before afternoon than never.= Antes tarde do que nunca.
m.) Take out the little horse from the rain= Tire o cavalinho da chuva.
n.) The cow went to the swamp.= A vaca foi pro brejo!
o.) To give one of John the Armless= Dar uma de João-sem-Braço.
p.) Look the bird= Olha o passarinho (essa faltou)
quarta-feira, 8 de junho de 2011
Aula 14 - 09.06.2011
Procedimentos e Funções
Forma de organizar o código-fonte que permite reutilizar operações repetitivas.
1) Procedimentos
Não retorna valores, apenas executa algo.
Pode receber parâmetro de entrada ou não.
Estes parâmetros podem ser por valor ou por referência.
Passagem de parâmetros por valor:
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
2) 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]
Forma de organizar o código-fonte que permite reutilizar operações repetitivas.
1) Procedimentos
Não retorna valores, apenas executa algo.
Pode receber parâmetro 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
salario: real
procedimento darAumento(s: real)
inicio
s <- s + (s * 0.1)
fimprocedimento
inicio
s <- s + (s * 0.1)
fimprocedimento
inicio
leia(salario)
darAumento(salario)
escreval("Infelizmente seu salário não foi aumentado: ", salario)
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
2) 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]
FÁCEIS
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.
MÉDIOS
6) Faça uma função que receba, por parâmetro, a altura e o sexo de uma pessoa e retorne o seu peso ideal. Calcular o peso ideal usando as fórmulas a seguir:
a) Homens: Peso Ideal = 72,7 * altura − 58
b) Mulheres: Peso Ideal = 62,1 * altura − 44,7
7) Faça uma função que, baseado em um vetor X de 15 elementos inteiros, retorne a quantidade de valores pares.
8) Faça uma função que receba como parâmetro o raio de uma esfera, calcule e mostre no programa principal o seu volume, dado pela seguinte fórmula:
DIFÍCEIS
10) A prefeitura de uma cidade fez uma pesquisa entre seus habitantes, coletando dados sobre o salário e número de filhos. Faça uma função que leia esses dados para um número não determinado de pessoas e retorne a média de salário da população, a média do número de filhos, o maior salário e o percentual de pessoas com salário até R$ 350,00. Cada cálculo deve ser feito em uma função ou procedimento próprio.
11) Foi realizada uma pesquisa entre 15 habitantes de certa região. De cada habitante foram coletados os dados “nome, idade, sexo, salário e número de filhos”. Faça um programa que leia esses dados em um vetor para cada informação (vetNome, vetIdade, vetSexo, vetSalario, vetNumeroFilhos). Faça funções que retornem a média de salário entre os habitantes, a menor e maior idade do grupo, informando o nome da pessoa, e a quantidade de mulheres com três filhos que recebe até R$ 500,00. Utilize uma função ou procedimento para cada cálculo em separado.
12) Faça uma função que receba um valor inteiro e positivo e calcule e mostre o seu fatorial (http://pt.wikipedia.org/wiki/Fatorial)
sábado, 4 de junho de 2011
Aula 13 - 04.06.2011
Continuação da lista de exercícios - FINALIZAÇÃO!!!
Extra:
Segue abaixo um algoritmo feito no VisualG para servir de base para o estudo de vocês.
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
jogo_velha: 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 (jogo_velha[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
jogo_velha[coluna, linha] <- letra
// Mostra a matriz na tela.
para linha de 1 ate 3 faca
m <- ""
para coluna de 1 ate 3 faca
letra <- jogo_velha[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 (jogo_velha[coluna, linha] = "") entao
fim_do_jogo <- falso
fimse
fimpara
fimpara
// Verifica se houve ganhador na jogada
se (jogo_velha[1,1] <> "") entao
// Testando a 1a. coluna...
se (jogo_velha[1,1] = jogo_velha[1,2]) e (jogo_velha[1,1] = jogo_velha[1,3]) entao
ganhador <- jogando
fimse
// Testando na diagonal...
se (jogo_velha[1,1] = jogo_velha[2,2]) e (jogo_velha[1,1] = jogo_velha[3,3]) entao
ganhador <- jogando
fimse
// Testando a 1a. linha...
se (jogo_velha[1,1] = jogo_velha[2,1]) e (jogo_velha[1,1] = jogo_velha[3,1]) entao
ganhador <- jogando
fimse
fimse
se (jogo_velha[2,1] <> "") entao
// Testando a 2a. coluna...
se (jogo_velha[2,1] = jogo_velha[2,2]) e (jogo_velha[2,1] = jogo_velha[2,3]) entao
ganhador <- jogando
fimse
fimse
se (jogo_velha[3,1] <> "") entao
// Testando a diagonal invertida..
se (jogo_velha[3,1] = jogo_velha[2,2]) e (jogo_velha[3,1] = jogo_velha[1,3]) entao
ganhador <- jogando
fimse
// Testando a 3a. coluna...
se (jogo_velha[3,1] = jogo_velha[3,2]) e (jogo_velha[3,1] = jogo_velha[3,3]) entao
ganhador <- jogando
fimse
fimse
se (jogo_velha[1,2] <> "") entao
// Testando a 2a. linha...
se (jogo_velha[1,2] = jogo_velha[2,2]) e (jogo_velha[1,2] = jogo_velha[3,2]) entao
ganhador <- jogando
fimse
fimse
se (jogo_velha[1,3] <> "") entao
// Testando a 3a. linha...
se (jogo_velha[1,3] = jogo_velha[2,3]) e (jogo_velha[1,3] = jogo_velha[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
Extra:
Segue abaixo um algoritmo feito no VisualG para servir de base para o estudo de vocês.
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
jogo_velha: 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 (jogo_velha[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
jogo_velha[coluna, linha] <- letra
// Mostra a matriz na tela.
para linha de 1 ate 3 faca
m <- ""
para coluna de 1 ate 3 faca
letra <- jogo_velha[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 (jogo_velha[coluna, linha] = "") entao
fim_do_jogo <- falso
fimse
fimpara
fimpara
// Verifica se houve ganhador na jogada
se (jogo_velha[1,1] <> "") entao
// Testando a 1a. coluna...
se (jogo_velha[1,1] = jogo_velha[1,2]) e (jogo_velha[1,1] = jogo_velha[1,3]) entao
ganhador <- jogando
fimse
// Testando na diagonal...
se (jogo_velha[1,1] = jogo_velha[2,2]) e (jogo_velha[1,1] = jogo_velha[3,3]) entao
ganhador <- jogando
fimse
// Testando a 1a. linha...
se (jogo_velha[1,1] = jogo_velha[2,1]) e (jogo_velha[1,1] = jogo_velha[3,1]) entao
ganhador <- jogando
fimse
fimse
se (jogo_velha[2,1] <> "") entao
// Testando a 2a. coluna...
se (jogo_velha[2,1] = jogo_velha[2,2]) e (jogo_velha[2,1] = jogo_velha[2,3]) entao
ganhador <- jogando
fimse
fimse
se (jogo_velha[3,1] <> "") entao
// Testando a diagonal invertida..
se (jogo_velha[3,1] = jogo_velha[2,2]) e (jogo_velha[3,1] = jogo_velha[1,3]) entao
ganhador <- jogando
fimse
// Testando a 3a. coluna...
se (jogo_velha[3,1] = jogo_velha[3,2]) e (jogo_velha[3,1] = jogo_velha[3,3]) entao
ganhador <- jogando
fimse
fimse
se (jogo_velha[1,2] <> "") entao
// Testando a 2a. linha...
se (jogo_velha[1,2] = jogo_velha[2,2]) e (jogo_velha[1,2] = jogo_velha[3,2]) entao
ganhador <- jogando
fimse
fimse
se (jogo_velha[1,3] <> "") entao
// Testando a 3a. linha...
se (jogo_velha[1,3] = jogo_velha[2,3]) e (jogo_velha[1,3] = jogo_velha[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
Assinar:
Postagens (Atom)