Escolar Documentos
Profissional Documentos
Cultura Documentos
Algoritmos
Apresentao: plano de ensino
Aula com Profa. Claudia Regina Tins Peviani Slides da Prof Janne Oeiras Lachi
Identificao
Nome da disciplina: Algoritmos rgo de lotao: Faculdade de Cincias Exatas e de Tecnologias Curso: Bacharelado em Sistemas de Informao Ano letivo: 2011 Srie: 1 Carga horria: 72 horas-aula Nome do professor: Claudia Regina Tins Peviani
Objetivos
Objetivo geral Capacitar o aluno a analisar e resolver problemas de soluo analtica; formular solues estruturadas em uma linguagem algortmica. Objetivos especficos Possibilitar ao aluno: i) conhecer elementos bsicos da lgica de programao; ii) discernir sobre sua aplicabilidade na resoluo de problemas utilizando lgica de programao; iii) raciocinar, desenvolver e aplicar lgica para resoluo de problemas computacionais por meio de uma linguagem algortmica.
Contedo
Ementa
Conceituao e construo de algoritmos. Estruturas: sequencial, condicional e repetio. Modularizao. Conceitos bsicos: algoritmos e programao (6 horas) Variveis, tipos de dados, identificadores (12 horas) Estrutura sequencial (6 horas) Estrutura condicional: se...seno, caso (12 horas) Estrutura de repetio: para, enquanto...faa, faa...enquanto (18 horas). Mdulos: procedimentos, funes (18 horas)
Programa
Procedimentos de ensino
Aulas tericas: com a professora e com distribuio de lista de exerccios ao final; Aulas de exerccios em laboratrio: para solucionar dvidas sobre as listas de exerccios.
Recursos
http://ead.ufgd.edu.br No Moodle sero postadas notas de aulas da professora (slides), listas de exerccios, agenda de atividades, comunicados gerais que se fizerem importantes ao longo do curso. Esse recurso ser de fundamental importncia para estender o ambiente de sala de aula, possibilitando outro espao para interao e compartilhamento de informaes de toda a turma. A comunicao dos alunos com a professora deve ocorrer por meio desse ambiente.
Inscrio no Moodle
Inscrio no Moodle
Inscrio no Moodle
Inscrio no Moodle
Passo 5: aguardar a liberao da sua inscrio que ser aceita pelo administrador do Moodle.
Verifique no seu email se chega alguma mensagem avisando que voc foi aceito no ambiente Moodle
Passo 6: liberado o cadastro, volte ao passo 2 e na tela do passo 3 entre com o seu nome de usurio e senha.
Avaliao
O processo de avaliao ser realizado ao longo do oferecimento da disciplina, por meio dos seguintes tipos de avaliaes:
Duas avaliaes individuais: prova sem consulta sobre os assuntos abordados at ento no curso (aulas tericas e listas de exerccios); Avaliao substitutiva: prova individual , sem consulta e sobre todo o contedo do semestre (substitui a menor nota obtida nas avaliaes individuais); Exame final: prova individual sem consulta.
Art. 151. O objetivo da Avaliao Substitutiva (AS) permitir ao aluno melhorar seu desempenho ou recuperar uma nota baixa para que possa atingir o mnimo necessrio para realizar o Exame Final, ou atingir a nota mnima para ser aprovado na disciplina.
Avaliao
Para ser aprovado na disciplina, sem a necessidade de realizar o Exame Final, o aluno dever obter frequncia igual ou superior a 75% e Mdia de Aproveitamento (MA) igual ou superior a 6,0 (seis). A mdia de aproveitamento ser determinada pela seguinte frmula:
Deve prestar o Exame Final o aluno que obtiver freqncia igual ou superior a 75% e Mdia de Aproveitamento igual ou superior a 4,0 (quatro) e inferior a 6,0 (seis). O aluno que, submetido ao Exame Final, obtiver nota igual ou superior a 6,0 (seis) considerado aprovado.
Avaliao
Datas das avaliaes: Avaliao 1: 26/09/2011 Avaliao 2: 21/11/2011 Substitutiva: 05/12/2011 Exame: 12/12/2011
Bibliografia
Bsica
MANZANO. J. A. N. G. Algoritmos. So Paulo: rica, 2006. FORBELLONE, Andr Luiz Villar; EBERSPACHER, Henri Frederico Eberspacher. Lgica de Programao de Algoritmos e Estrutura de Dados. 2 ed. So Paulo: Makron Books, 2000. WIRTH, Niklaus. Algoritmos e Estruturas de Dados. Rio de Janeiro: Prentice-Hall, 1986. SCHILDT, H. C Completo e Total. So Paulo: Makron Books, 1996. GUIMARES, A. M.; LAGES, N. A. C. L. Algoritmos e Estruturas de Dados. LTC, 1985. FARRER, Harry et all. Algoritmos Estruturados. Rio de Janeiro: Guanabara, 1989.
Complementar
Sistemas de informao
Competncias tecnolgicas
a) modelar, especificar, construir, implantar e validar sistemas de informaes; Consequentemente, o campo de atuao de um profissional de Sistemas de Informao requer que este apresente capacidades que permitam-no conduzir desde o gerenciamento da implementao de um sistema de informao, em termos de todos os seus componentes (hardware, software, dados, pessoas e procedimentos), at a capacidade de integrar as dimenses organizacional, humana e tecnolgica envolvidas nas atividades.
Perfil
Mercado de trabalho
Leia em: http://info.abril.com.br/noticias/carreira/setor-de-ti-teracarencia-de-profissionais-26112009-32.shl Leia em: http://www.ipnews.com.br/voip/pesquisas/pesquisas/relat-rio-dasoftex-aponta-2013-havera-carencia-de-140-mil-profissionais-emti-no-brasil.html A indstria brasileira de Tecnologia da Informao (TI) dever precisar de 140 mil profissionais de todos os setores e nveis, em 2013.
Um arquelogo finalmente encontrou a submersa cidade de Atlntida. Depois de uma rpida explorao no lugar, ficou muito feliz ao encontrar vrias barras de metais valiosos num dos templos. Existem quatro barras: Platina, Ouro, Prata e Bronze; e cada uma pesa 2 quilos. A sequncia est ordenada da mais valiosa (Platina) para a menos valiosa (Bronze). O arquelogo possui apenas uma bolsa para levar as barras para seu barco de pesquisas e existem algumas condies: A bolsa suporta no mximo 5 quilos. As barras ou so colocadas inteiras na bolsa ou no so levadas. Questo 1. Quantas viagens so necessrias para o arquelogo levar todas as barras ao barco?
Universidade Federal da Grande Dourados Faculdade de Cincias Exatas e de Tecnologias Curso de Bacharelado em Sistemas de Informao
Algoritmos
Introduo Lgica de Programao
Aula com Profa. Claudia Regina Tins Peviani Slides da Prof Janne Oeiras Lachi
1
Algoritmos
Mohammed Ibn Musa Abu Djefar Era conhecido como Al-Khwarizmi Escreveu um importante livro sobre lgebra Mudanas na pronncia gerando algarismo e, depois, a palavra algoritmo usada em Computao
O estudo de algoritmos
Um programa de computador ou simplesmente software representado pelas instrues e dados que algum ser humano deniu e que ao serem executados por alguma mquina cumprem algum objetivo.
3
O desenvolvimento de software
Diferentes objetivos:
Simular o funcionamento de um circuito digital; Comandar um rob em uma linha de montagem; Gerenciar informaes em uma empresa; Controle de trfego areo, metr, trem...
Essencial no contexto do processo de criao de um software. Diretamente relacionado com a etapa de projeto de um software
Sem saber qual ser a linguagem de programao a ser utilizada, se especifica completamente o software a ponto de na implementao ser possvel traduzir diretamente essas especificaes em linhas de cdigo em alguma linguagem de programao como Pascal, C, Java e outras. Estudar conceitos bsicos que viabilizem a especificao correta de softwares, uma etapa imediatamente anterior a sua implementao ou programao.
Esta disciplina:
Ao
Ao um acontecimento que, a partir de um estado inicial, aps um perodo de tempo finito, produz um estado final previsvel e bem definido.
Exemplo:
Miriam: 50
Eduardo: 13
Harry: 1
A sequncia de Fibonacci definida como tendo os dois primeiros termos iguais a 1 e cada termo seguinte igual a soma dos dois termos imediatamente anteriores.
Ao
A escolha dos valores numricos imprevisvel (no ao). Escrever a sequncia de Fibonacci uma ao:
A partir de um estado inicial (valor de L) Aps um tempo limitado (alguns segundos) Produziu um estado final (o que foi escrito), previsvel e bem definido
Mesmo padro de comportamento e mesma norma de execuo Comando: Escreva os termos de Fibonacci inferiores a L.
Ao um acontecimento que, a partir de um estado inicial, aps um perodo de tempo finito, produz um estado final previsvel e bem definido.
Algoritmo
Algoritmo a descrio de um conjunto de comandos que, obedecidos, resultam numa sucesso finita de aes. Fixa um padro de comportamento a ser seguido, uma norma de execuo a ser trilhada, para se atingir, como resultado final, a soluo de um problema.
E este?
O programa 2 recebe como entrada n e procura por solues inteiras positivas para a equao xn+yn=zn Ao encontrar uma soluo, ele imprime hello, world e termina; Se nunca encontrar inteiros x,y,z para satisfazer a equao, ele continuar a procurar para sempre e nunca imprimir Hello world!; No existem solues inteiras para a equao quando n>2 (ltimo Teorema de Fermat).
Algoritmo: exerccios
1.
2.
a) b)
Um algoritmo no pode conter um comando como Escreva todos os termos da sequncia de Fibonacci. Por qu? Escrever um algoritmo que produza a sequncia de valores:
2 4 6 8 10 12 14 1 3 5 7 9 11 13
12
Refinamentos sucessivos
Um algoritmo completo quando seus comandos forem do entendimento do seu destinatrio Quando no for, ter de ser desdobrado em novos comandos, ou seja, deve haver um refinamento do comando inicial Quando houver mais de um comando, no se considera apenas o estado inicial e o estado final, mas tambm estados intermedirios
13
Refinamentos: exemplo
Ref. Escreva os termos de Fibonacci inferiores a L Receba o valor L Processe os 2 primeiros termos Processe os termos restantes fim ref.
14
Algoritmos
Comandos: determinam as aes a serem executadas pelo seu destinatrio; Estruturas de controle: determinam a ordem de execuo dos comandos, se devem ou no ser executados e quando devem ser repetidos
Ref. Escreva os termos de Fibonacci inferiores a L Receba o valor L Processe os 2 primeiros termos Processe os termos restantes fim ref.
15
Estrutura sequencial: os comandos devem ser executados um aps o outro, na mesma ordem em que aparecem.
Refinamentos: exemplo 2
refinamento Ref. Processe os 2 primeiros termos Atribua o valor 1 ao primeiro termo Se ele for menor que L ento escreva-o fim se Atribua o valor 1 ao segundo termo Se ele for menor que L ento escreva-o fim se fim ref.
Estrutura condicional
Ref. Processe os 2 primeiros termos Atribua o valor 1 ao primeiro termo Se ele for menor que L ento escreva-o fim se Atribua o valor 1 ao segundo termo Se ele for menor que L ento escreva-o fim se fim ref.
17
Refinamentos: exemplo 3
refinamento Ref. Processe os termos restantes repita Calcule novo_termo somando os 2 anteriores Se novo_termo for maior ou igual a L ento interrompa fim se Escreva novo termo fim repita fim ref.
18
Estrutura de repetio
Os comandos e as estruturas de controle abrangidos devem ser executados repetidamente at que se verifique uma condio que interrompa a repetio
Ref. Processe os termos restantes repita Calcule novo termo somando os 2 anteriores Repete at o novo Se novo termo for maior ou igual a L termo ser maior ou ento interrompa igual a L fim se Escreva novo termo fim repita fim ref.
19
20
O exemplo completo
Algoritmo {Escrita dos termos de Fibonacci inferiores a L} Receba o valor L {Processamento dos 2 primeiros termos} Atribua o valor 1 ao primeiro termo Se ele for menor que L ento escreva-o fim se Atribua o valor 1 ao segundo termo Se ele for menor que L ento escreva-o fim se {Processamento dos termos restantes} repita Calcule novo termo somando os 2 anteriores Se novo termo for maior ou igual a L ento interrompa fim se Escreva novo termo fim repita fim algoritmo
21
Lgica de programao
necessria para pessoas que desejam trabalhar com desenvolvimento de sistemas e programas;
Lgica de programao a tcnica de encadear pensamentos para atingir determinado objetivo.
Estes pensamentos, podem ser descritos como uma sequncia de instrues, que devem ser seguidas para se cumprir uma determinada tarefa. Permite definir a sequncia lgica para o desenvolvimento.
Sequncia Lgica so passos executados at atingir um objetivo ou soluo de um problema.
22
23
Escreva a sequncia lgica para enviar uma mensagem de texto pelo seu celular.
Selecionar o Menu; Escolher o cone de Mensagens; Escolher a opo Nova mensagem; Digitar o texto da mensagem; Selecionar o menu Opes; Escolher a opo Salvar e enviar; Escolher a opo Abrir agenda; Selecionar destinatrios (repetir esta operao quantas vezes for necessrio); Selecionar o menu Enviar.
24
25
Baseada em PDL (Program Design Language) Linguagem de Projeto de Programao Notao sinttica semelhante s linguagens de programao PASCAL e STRUCTURE BASIC Criada para servir como documentao genrica de cdigos a serem executados; Normalmente no executvel em um computador; Observao: os comandos variam entre os livros da literatura. Usaremos a notao do MANZANO. J. A. N. G. Algoritmos. So Paulo: rica, 2006.
26
Palavras reservadas
Em Portugus estruturado temos palavras reservadas Cada palavra reservada tem um propsito dentro de um algoritmo e por isso deve ser usada de modo apropriado
Programa, var, inteiro, real, caractere, lgico, incio, leia, escreva, fim, se ento, seno, fim_se, enquanto, faa, fim_enquanto, repita, at_que, para, de, at, passo, fim_para, conjunto, tipo, registro, fim_registro, procedimento, caso, seja, fim_caso e funo
27
Em Portugus estruturado, todos os algoritmos comeam com a palavra Programa para denominar o algoritmo, tem a palavra incio e terminam com a palavra fim. programa CALC_APROVACAO
programa <nome> . . . incio <comando 1> <comando 2> . . . <comando n> fim var RESULTADO: caractere NI, N2, N3, N4: real SOMA, MEDIA: real incio leia NI, N2, N3, N4 SOMA NI + N2 + N3 + N4 MEDIA SOMA/4 se (MEDIA >= 7) ento RESULTADO aprovado seno RESULTADO reprovado fim_se escreva Mdia , MEDIA escreva Resultado: , RESULTADO fim
Calcular a mdia das notas de um aluno. O seu algoritmo deve receber como entrada as 4 notas do aluno e fornecer como sada: 1) a mdia das notas; e 2) se o aluno foi aprovado ou reprovado. A mdia para aprovao deve ser maior ou igual a 7,0.
29
Observe aqui a indentao dos comandos no algoritmo, assim como fazemos com programas na Linguagem C.
30
Diagrama de blocos
Figuras geomtricas e dizeres so usados para representar as diversas operaes do computador, sendo ligados por setas para indicar a sequncia da sua execuo; Ampla liberdade que pode resultar em difcil compreenso, manuteno e modificao.
31
32
33
Refinamento
Fim
Fim
34
Refinamento
NO
Media 7 ?
SIM
Media, REPROVADO
Media, APROVADO
Fim
35
Fim
Desenvolvido por Nassi e Shneiderman e ampliado por Ned Chapin Apresenta uma viso hierrquica com um nico ponto de entrada e um ponto de sada
36
no
Resultado aprovado
Escreva Media Escreva Resultado
Resultado reprovado
Fim
37
Referncias
ALGORITMOS. MANZANO Lgica para desenvolvimento de programao de computadores. Jos Augusto N. G. Manzano, Jayr Figueiredo de Oliveira. So Paulo: rica, 2006. ALGORITMOS E LGICA DE PROGRAMAO. Marco Antonio Furlan de Souza, Marcelo Marques Gomes, Marcio Vieira Soares e Ricardo Concilio. Editora Thonsom, 2004. REVISO E DISCUSSO DA NORMA ISO 5807 1985(E). Jos Augusto Navarro Garcia Manzano. THESIS, So Paulo, ano I, v. 1, p. 1-31, 1 Semestre. 2004. ALGORITMOS ESTRUTURADOS. Harry Farrer, Christiano Gonalves Becker, Eduardo Chaves Faria et al. 3 Edio. Rio de Janeiro: LTC, 2008.
38
Universidade Federal da Grande Dourados Faculdade de Cincias Exatas e de Tecnologias Curso de Bacharelado em Sistemas de Informao
Algoritmos
Entrada e sada, Tipos de dados
Aula com Profa. Claudia Regina Tins Peviani Slides da Prof Janne Oeiras Lachi
1
Entrada e sada
Um algoritmo resolve um problema; Para isso recebe dados de entrada que so processados e depois apresenta uma resposta para o usurio.
Dados de entrada
algoritmo
(processamento)
Resposta
Comandos de entrada
Tem o objetivo de permitir que o programador possa receber do usurio os dados necessrios para o processamento do programa a fim de fornecer os resultados esperados. Exemplo: busca na Web
A entrada para a busca so as palavras-chave para a informao que o usurio deseja encontrar.
Comandos de sada
Aps o processamento do programa, os resultados so apresentados para o usurio. Exemplo: resultado da busca na Web
Palavraschave
Lista de pginas
Calcular a mdia das notas de um aluno. O seu algortimo deve receber como entrada as 4 notas do aluno e fornecer como sada: 1) a mdia das notas; e 2) se o aluno foi aprovado ou reprovado. A mdia para aprovao deve ser maior ou igual a 7,0.
algoritmo
(calcula a mdia e o resultado)
7.0,
APROVADO
Comando de entrada
leia uma palavra reservada <lista-de-identificadores> so nomes de variveis, separados por vrgula
Comando de sada
escreva uma palavra reservada <lista-de-identificadores> so nomes de variveis, separados por vrgula <constantes> so nomes de constantes que tambm podem ser impressas
10
11
Exerccio
12
2, 5, 3
algoritmo
(calcula a multiplicao)
30
13
Diferentes entradas
No problema anterior, eu dei como entrada os nmeros 2, 5 e 3. Um outro usurio poderia ter fornecido outros nmeros (ex.: 4, 23, 45) como entrada.
4, 23, 45
algoritmo
(calcula a multiplicao)
540
A cada momento de uso do algoritmo, podemos ter entradas diferentes que variam de acordo com o usurio.
14
Variveis
Varivel tudo aquilo que sujeito a variaes, que incerto, instvel ou inconstante (pode mudar ao longo de um processo) Imagine a memria de um computador como um grande arquivo com vrias gavetas, e em cada gaveta possvel guardar um nico valor por vez. Como em um arquivo, as gavetas devem estar identificadas com uma etiqueta contendo um nome. Cada gaveta representa uma varivel.
15
... as gavetas devem estar identificadas com uma etiqueta contendo um nome.
16
17
18
Nomes de variveis
O nome de uma varivel usado para sua identificao e representao dentro de um algoritmo Existem regras de definio e uso de variveis:
Os nomes de identificao de uma varivel podem utilizar um ou mais caracteres. Na prtica necessrio conhecer as restries da linguagem de programao em uso. O primeiro caractere deve ser alfabtico (letra) seguido de outros alfanumricos No caso de nomes compostos, deve ser usado o caractere _ para uni-los. Exemplo: data_de_nascimento Jamais usar palavras reservadas para definir uma varivel No usar como nome de varivel algum nome que tenha sido usado para identificar o programa.
19
Declarao de variveis em PE
Sintaxe
var <varivel 1>: <tipo> <varivel 2>: <tipo>
programa CALC_APROVACAO var RESULTADO: caractere NI, N2, N3, N4: real SOMA, MEDIA: real incio leia NI, N2, N3, N4 SOMA NI + N2 + N3 + N4 MEDIA SOMA/4 se (MEDIA >= 7) ento RESULTADO aprovado seno RESULTADO reprovado fim_se escreva Mdia , MEDIA escreva Resultado: , RESULTADO fim
20
Vlidos:
NOMEUSUARIO, NOME_USUARIO, NUSUARIO, N_USUARIO, FONE2, FONE_2, F_2, X, DELTA25 NOME USUARIO, 1X, FONE#, INTEIRO, CARACTERE, REAL, PROGRAMA, INICIO, SE
Invlidos:
21
22
Ao: quando seu valor inicial modificado ao longo da execuo de um algoritmo Controle: quando seu valor vigiado e utilizado principalmente em operaes lgicas de deciso ao longo de um algoritmo
a representao de uma regio de memria utilizada para armazenar um determinado valor por um espao de tempo (tempo de execuo do programa)
23
Tipos de dados
Informaes manipuladas pelo homem Numrico: representados por valores inteiros e no reais Caracteres: representados por valores alfabticos ou alfanumricos os quais no podem ser utilizados em operaes de clculo numrico Lgicos: representados por valores do tipo falso ou verdadeiro
Trs tipos:
24
So inteiros os dados numricos positivos e negativos pertencentes ao conjunto de nmeros inteiros, excluindo qualquer valor numrico fracionrio. Exemplos:
25
26
27
<lista_var>pode ser formada por uma nica varivel ou uma lista de variveis separadas por vrgula. Ex.:
28
Escreva um algoritmo para elaborar uma lista de material escolar e o respectivo custo. Os itens que podem ser pedidos so caderno, caneta e borracha. O preo do caderno R$ 10,00, o da caneta R$ 1,00 e da borracha R$ 0,50. Solicite ao usurio quantas unidades ele vai querer de cada item para poder calcular o custo total.
Qual a entrada e qual a sada para este problema?
29
Escreva um algoritmo para elaborar uma lista de material escolar e o respectivo custo. Os itens que podem ser solicitados so caderno, caneta e borracha. O preo do caderno R$ 10,00, o da caneta R$ 0,80 e da borracha R$ 0,50. Solicite ao usurio quantas unidades ele vai querer de cada item para poder calcular o custo total.
qdt_caderno, qtd_caneta, qtd_borracha
algoritmo
(calcula o custo)
Custo total
30
Observao: A linha em vermelho poderia ser escrita tambm como: qtd_caderno: inteiro qdt_caneta: inteiro qtd_borracha: inteiro
31
Os dados reais so numricos positivos e negativos pertencentes ao conjunto de nmeros reais, incluindo todos os valores fracionrios e tambm os inteiros. Exemplos:
32
33
34
<lista_var>pode ser formada por uma nica varivel ou uma lista de variveis separadas por vrgula. Ex.:
35
Observaes: 1) Note que a varivel custo deve ser do tipo real porque os preos dos materiais so definidos por meio de nmeros reais. 2) As variveis qtd_caderno, qdt_caneta, qtd_borracha no entanto devem ser do tipo inteiro. Embora o conjunto dos inteiros esteja contido dentro do conjunto dos nmeros reais, o problema necessita que essas variveis sejam do tipo inteiro para evitar que o usurio pea, por exemplo, caneta ou borracha, um tipo de comercializao que no existe!!!
36
So as sequncias de valores delimitadas por aspas ( ) formadas por letras (de A at Z), nmeros (de 0 at 9) e smbolos (por exemplo, todos smbolos existentes no teclado) Outras denominaes: alfanumrico, string, literal ou cadeia Exemplos:
37
38
39
<lista_var> : caractere
<lista_var>pode ser formada por uma nica varivel ou uma lista de variveis separadas por vrgula. Ex.:
40
41
So lgicos os dados com valores que sugerem uma nica opo entre duas possibilidades existentes, representadas pelos valores:
Falso ou Verdadeiro 0 ou 1
Outras denominaes: booleano Sua representao ser dada por uma das formas:
42
43
44
<lista_var> : lgico
<lista_var>pode ser formada por uma nica varivel ou uma lista de variveis separadas por vrgula. Ex.:
45
Escreva um algoritmo que calcule o desconto no imposto a pagar de um contribuinte. Seu algoritmo deve receber o CPF, a renda anual, se o contribuinte tem filhos e o imposto a pagar. O desconto para quem tem filhos de 10% sobre a renda anual. A sada do seu programa deve apresentar o imposto a pagar final.
CPF, renda_anual, tem_filhos, imposto_pagar
algoritmo
(calcula o imposto)
Imposto final
46
47
Supondo-se que as variveis NOM, PROF, ID e SALRIO sero utilizadas para armazenar o nome, profisso, idade e salrio de uma pessoa, escrever o conjunto de declaraes necessrias em Portugus estruturado para criar essas variveis e associar s mesmas os respectivos tipos bsicos.
48
Referncias
ALGORITMOS. MANZANO Lgica para desenvolvimento de programao de computadores. Jos Augusto N. G. Manzano, Jayr Figueiredo de Oliveira. So Paulo: rica, 2006. ALGORITMOS ESTRUTURADOS. Harry Farrer, Christiano Gonalves Becker, Eduardo Chaves Faria et al. 3 Edio. Rio de Janeiro: LTC, 2008.
49
Universidade Federal da Grande Dourados Faculdade de Cincias Exatas e de Tecnologias Curso de Bacharelado em Sistemas de Informao
Algoritmos
Constantes, Expresses (aritmticas, relacionais, lgicas)
Aula com Profa. Claudia Regina Tins Peviani Slides da Prof Janne Oeiras Lachi
1
Plano de aula
Precedncia de operadores
Constantes
tudo que fixo, estvel, inaltervel, imutvel, invarivel, de valor fixo e que aplicado sob diversos pontos de vista. Pode ser um nmero, um valor lgico ou uma seqncia qualquer de caracteres (cadeia, string ou literal) Exemplos:
Numrica: 15, -15, 0.342, -2.726 Lgico: verdadeiro ou falso Literal: Jos da Silva, 123456, *A!B?-, 16/08/2010
Constantes: exerccios
Identificar o tipo de cada uma das constantes abaixo (numrica, caractere ou lgica):
Constantes: observaes
Usa apenas constante como nmeros em expresses matemticas como total valor * 1.5
Pascal: usa const e depois uma lista com a sintaxe <identificador> = <valor>;
const
Expresses Aritmticas
So as expresses cujos operadores so aritmticos e cujos operandos so constantes e/ou variveis do tipo numrico
Adio Multiplicao Potenciao Subtrao Diviso Radiciao
Exemplos:
Errado: AB + 2 Certo: A*B +2 Explicao: no primeiro caso, o computador entende que existe uma varivel AB cujo valor est sendo somado 2. No segundo caso, est clara a operao de multiplicao dos valores de A e B
(1/n)
Radiciao de ndice n
Atribuio
Comando a descrio de uma ao a ser executada em um dado momento O comando de atribuio permite que seja fornecido um valor a uma varivel, sendo o valor compatvel com o tipo definido para a varivel. Sintaxe:
<identificador> <expresso>
identificador o nome da varivel qual est sendo atribuda a expresso; o smbolo de atribuio expresso pode ser uma expresso aritmtica, lgica ou literal, cujo valor (obtido aps avaliao) e atribudo varivel
Atribuio: exemplos
10
Expresses relacionais
Uma expresso relacional (relao) uma comparao realizada entre dois valores do mesmo tipo O resultado obtido de uma relao sempre um valor lgico (verdadeiro ou falso)
Operador = <> > < >= <= Igual a Diferente de Maior que Menor que Maior ou igual a Menor ou igual a Operao
11
A = B, tem como resultado o valor falso A > B, tem como resultado o valor falso A < B, tem como resultado o valor verdadeiro A >= B, tem como resultado o valor falso A <= B, tem como resultado o valor verdadeiro A <> B, tem como resultado o valor verdadeiro
12
X+Y=Z
O resultado ser verdadeiro ou falso Verdadeiro se X + Y for igual a Z Falso se X + Y for diferente de Z
13
Verdadeiro Verdadeiro
JOS
Verdadeiro
Falso
Falso
1
1
1
2
Falso
Verdadeiro
Verdadeiro Falso
14
15
Expresses Lgicas
H situaes em que a execuo de uma ao est sujeita a uma certa condio Esse tipo de condio representada por uma expresso lgica Denomina-se expresso lgica aquela que cujos operadores so lgicos e cujos operandos so relaes, constantes e/ou variveis do tipo lgico
16
Operadores Lgicos
A lgebra das proposies define trs conectivos usados na formao de novas proposies a partir de outras j conhecidas:
Uma proposio pode ser uma varivel lgica, uma relao ou expresso lgica composta
17
Operador e: conjuno
L-se p e q
pq
p V V F F
q V F V F
pq V F F F
18
Operador e: conjuno
p: OK, onde OK uma varivel lgica cujo valor verdadeiro; q: A = 0, onde o valor de A=3; r: TESTE, onde TESTE, uma varivel lgica cujo valor falso;
19
Operador e: conjuno
a) b)
p s significa OK e B <>1 e, portanto, uma proposio verdadeira p r significa OK e TESTE e, portanto, uma proposio falsa, pois TESTE falso q s significa A=0 e B <>1 e, portanto, uma proposio falsa j que A <>0 q r significa A=0 e TESTE e, portanto, uma proposio falsa
c)
d)
20
L-se p ou q
pq
A disjuno de duas proposies verdadeira se e somente se pelo menos uma das proposies for verdadeira.
p V V F F q V F V F pq V V V F
21
p: OK, onde OK uma varivel lgica cujo valor verdadeiro; q: A = 0, onde o valor de A=3; r: TESTE, onde TESTE, uma varivel lgica cujo valor falso;
22
a) b)
p s significa OK e B <>1 e, portanto, uma proposio verdadeira p r significa OK e TESTE e, portanto, uma proposio verdadeira q s significa A=0 e B <>1 e, portanto, uma proposio verdadeira q r significa A=0 e TESTE e, portanto, uma proposio falsa
c)
d)
23
L-se no p
p
a negao de p
p V F p F V
Exemplos:
24
Prioridade
Operador
X+Y>Z e NOME=Maria
25
Exerccios
Dadas as variveis X, Y e Z com os valores 2, 5, 9 respectivamente; a varivel literal NOME com o valor Maria; e a varivel lgica SIM com o valor falso, avalie as expresses a seguir ( V ou F)
26
Expresses literais
So formadas por operadores literais e operandos que so constantes e/ou variveis do tipo literal Sejam A e B variveis literais e que o smbolo | um operador de concatenao de literais, a expresso
A|B
fornece como resultado um nico literal formado pelo contedo de A seguido do contedo de B. Exemplo:
Construo de algoritmos
28
Receba dois nmeros, calcule e mostre a diviso do primeiro nmero pelo segundo. Sabe-se que o segundo nmero no pode ser zero, mas no se preocupe em testar se o segundo nmero zero.
29
Receba dois nmeros, calcule e mostre a diviso do primeiro nmero pelo segundo. Sabe-se que o segundo numero no pode ser zero, mas no se preocupe em testar se o segundo nmero zero.
Identifique as entradas e sadas do algoritmo e que tipos de dados elas representam. Neste caso temos como entrada dois nmeros e seus tipos devem ser reais e como sada temos que apresentar o resultado da diviso do primeiro nmero pelo segundo, que tambm pode ser um nmero real. Vamos criar ento 3 variveis.
fim
30
Receba dois nmeros, calcule e mostre a diviso do primeiro nmero pelo segundo. Sabe-se que o segundo numero no pode ser zero, mas no se preocupe em testar se o segundo nmero zero.
Agora vamos solicitar as entradas com o comando escreva e receb-las com o comando leia.
programa DIVISAO var n1, n2, resultado: real incio escreva Entre com o primeiro numero: leia n1 escreva Entre com o segundo numero: leia n2 fim
31
Receba dois nmeros, calcule e mostre a diviso do primeiro nmero pelo segundo. Sabe-se que o segundo numero no pode ser zero, mas no se preocupe em testar se o segundo nmero zero.
O prximo passo calcular o resultado da diviso por meio de uma expresso aritmtica e atribuir o valor a varivel a ser apresentada como sada.
programa DIVISAO var n1, n2, resultado: real incio escreva Entre com o primeiro numero: leia n1 escreva Entre com o segundo numero: leia n2 resultado n1/n2 fim
32
Receba dois nmeros, calcule e mostre a diviso do primeiro nmero pelo segundo. Sabe-se que o segundo numero no pode ser zero, mas no se preocupe em testar se o segundo nmero zero.
Por fim, podemos apresentar o valor da diviso usando o comando escreva para mostrar a sada do algoritmo.
programa DIVISAO var n1, n2, resultado: real incio escreva Entre com o primeiro numero: leia n1 escreva Entre com o segundo numero: leia n2 resultado n1/n2 escreva O resultado da divisao eh: , resultado fim
33
incio
incio
fim
fim
34
incio
fim
35
incio
Entre com o primeiro numero:
programa DIVISAO var n1, n2, resultado: real incio escreva Entre com o primeiro numero: leia n1 escreva Entre com o segundo numero: leia n2 fim
n1
Entre com o segundo numero:
n2
fim
36
Calculando o resultado...
incio
Entre com o primeiro numero:
programa DIVISAO var n1, n2, resultado: real incio escreva Entre com o primeiro numero: leia n1 escreva Entre com o segundo numero: leia n2 resultado n1/n2 fim
n1
Entre com o segundo numero:
n2
resultado n1/n2
fim
37
Mostrando o resultado...
incio
Entre com o primeiro numero:
programa DIVISAO var n1, n2, resultado: real incio escreva Entre com o primeiro numero: leia n1 escreva Entre com o segundo numero: leia n2 resultado n1/n2 escreva O resultado da divisao eh: , resultado fim
n1
Entre com o segundo numero:
n2
resultado n1/n2
38
fim
programa DIVISAO
incio
fim
Incio Fim
39
40
programa DIVISAO var n1, n2, resultado: real incio escreva Entre com o primeiro numero: leia n1 escreva Entre com o segundo numero: leia n2 fim
Incio Escreva Entre com o primeiro numero: Leia n1 Escreva Entre com o segundo numero: Leia n2 Fim
41
Calculando o resultado...
programa DIVISAO var n1, n2, resultado: real incio escreva Entre com o primeiro numero: leia n1 escreva Entre com o segundo numero: leia n2 resultado n1/n2 fim
Incio Escreva Entre com o primeiro numero: Leia n1 Escreva Entre com o segundo numero: Leia n2 resultado n1/n2
42
Fim
Mostrando o resultado...
programa DIVISAO var n1, n2, resultado: real incio escreva Entre com o primeiro numero: leia n1 escreva Entre com o segundo numero: leia n2 resultado n1/n2 escreva O resultado da divisao eh: , resultado fim
Incio Escreva Entre com o primeiro numero: Leia n1 Escreva Entre com o segundo numero: Leia n2
resultado n1/n2 Escreva O resultado da divisao eh:, resultado Fim
43
Exerccio
Para o seguinte problema Receba duas notas, calcule e mostre a mdia ponderada dessas notas, considerando peso 2 para a primeira nota e peso 3 para a segunda nota.
44
Supondo
N e P variveis do tipo literal X e A variveis do tipo numrico E uma linha digitada contendo os valores
MMAA,25 Interpretar a seqncia de comandos a seguir e escrever quais valores sero impressos na unidade de sada:
45
Referncias
ALGORITMOS. MANZANO Lgica para desenvolvimento de programao de computadores. Jos Augusto N. G. Manzano, Jayr Figueiredo de Oliveira. So Paulo: rica, 2006. ALGORITMOS ESTRUTURADOS. Harry Farrer, Christiano Gonalves Becker, Eduardo Chaves Faria et al. 3 Edio. Rio de Janeiro: LTC, 2008.
46
Universidade Federal da Grande Dourados Faculdade de Cincias Exatas e de Tecnologias Curso de Bacharelado em Sistemas de Informao
Algoritmos
Teste de Mesa
Plano de aula
Introduo
Para testar as funcionalidades implementadas em um algoritmo esto corretas necessrio testar o algoritmo. necessrio verificar o contedo das variveis passo a passo. Para efetuar esta tarefa, costuma-se utilizar o chamado TESTE DE MESA ou TESTE EXAUSTIVO.
Teste de Mesa
um procedimento bastante utilizado por programadores como forma de auxlio deteco de falhas em algoritmos, melhorando a confiabilidade desses. O teste de mesa pode ser aplicado a qualquer algoritmo. Para isso apenas simulamos possveis valores para as variveis e vamos seguindo as instrues at completarmos o algoritmo.
Vamos seguir alguns passos: 1. Leia o algoritmo que foi escrito; 2. Crie uma coluna para cada uma das variveis declaradas no algoritmo e uma coluna para a sada de dados (o que vai ser impresso na tela); 3. Em seguida, acompanhe linha a linha a execuo do algoritmo, anotando nas colunas apropriadas cada mudana de valor das variveis ou do que foi escrito na tela; 4. Preste ateno nas estruturas condicionais (porque pode haver instrues que no sero executadas) e nas estruturas de repetio (porque pode haver trechos de instrues que devem ser executados mais de uma vez); 5. Siga a execuo at chegar ao final do algoritmo.
5
incio
escreva Qtde de caderno: leia qtd_caderno escreva Qtde de caneta: leia qtd_caneta escreva Qtde de borracha: leia qtd_borracha custo qtd_caderno * 10.0 + qtd_caneta * 0.80 + qtd_borracha * 0.50 escreva Custo total eh:, custo fim
Crie uma coluna para cada uma das variveis declaradas no algoritmo e uma coluna para a sada de dados (o que vai ser impresso na tela);
Variveis qtd_caderno qtd_caneta qtd_borracha custo Tela
Executando
N da linha 6 7 8 9 10 11 12
7
13
Em seguida, acompanhe linha a linha a execuo do algoritmo, anotando nas colunas apropriadas cada mudana de valor das variveis ou do que foi escrito na tela;
Variveis qtd_caderno qtd_caneta qtd_borracha custo Tela
Executando
N da linha 6 7 8 9 10 11 12
8
13
Executando
N da linha 6 7 8 9 10 11 12
9
13
Executando
N da linha 6 7 8 9 10 11 12
10
13
Executando
Variveis qtd_caderno qtd_caneta qtd_borracha custo Tela Qtde de caderno: 15 Qtde de caneta:
N da linha 6 7 8 9 10 11 12
11
13
Executando
Variveis qtd_caderno qtd_caneta qtd_borracha custo Tela Qtde de caderno: 15 Qtde de caneta: 30
N da linha 6 7 8 9 10 11 12
12
13
Executando
Variveis qtd_caderno qtd_caneta qtd_borracha custo Tela Qtde de caderno: 15 Qtde de caneta: 30 Qtde de borracha
N da linha 6 7 8 9 10 11 12
13
13
Executando
Variveis qtd_caderno qtd_caneta qtd_borracha custo Tela Qtde de caderno: 15 Qtde de caneta: 30 Qtde de borracha 10
N da linha 6 7 8 9 10 11 12
14
13
Executando
Variveis qtd_caderno qtd_caneta qtd_borracha custo Tela Qtde de caderno: 15 Qtde de caneta: 30 Qtde de borracha 10 179
N da linha 6 7 8 9 10 11 12
15
13
Executando
Variveis qtd_caderno qtd_caneta qtd_borracha custo Tela Qtde de caderno: 15 Qtde de caneta: 30 Qtde de borracha 10 179 Custo total eh: 179
N da linha 6 7 8 9 10 11 12
16
13
Final do algoritmo
Executando
Variveis qtd_caderno qtd_caneta qtd_borracha custo Tela Qtde de caderno: 15 Qtde de caneta: 30 Qtde de borracha 10 179 Custo total eh: 179
N da linha 6 7 8 9 10 11 12
17
13
9.
10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
20.
21.
programa CALC_APROVACAO var RESULTADO: caractere NI, N2, N3, N4: real SOMA, MEDIA: real incio leia NI, N2, N3, N4 SOMA NI + N2 + N3 + N4 MEDIA SOMA/4 se (MEDIA >= 7) ento RESULTADO aprovado seno RESULTADO reprovado fim_se escreva Nota 1: , N1 escreva Nota 2: , N2 escreva Nota 3: , N3 escreva Nota 4: , N4 escreva Mdia: , MEDIA escreva Resultado: , RESULTADO fim
18
Tela
17
18 19 20
19
Tela
17
18 19 20
20
Tela
17
18 19 20
21
Tela
17
18 19 20
22
Preste ateno nas estruturas condicionais (porque pode haver instrues que no sero executadas) e nas estruturas de repetio (porque pode haver trechos de instrues que devem ser executados mais de uma vez);
Variveis
NI 8.5 N2 7.5 N3 6.5 N4 7.5 30 7.5 aprovado SOMA MEDIA RESULTADO
Executando
N da linha 7 8 9 11
Tela
15
16 17 18 19 20 23
Tela
17
18 19 20
24
Tela
17
18 19 20
25
Tela
17
18 19 20
Nota 3: 6.5
26
Tela
17
18 19 20
Nota 3: 6.5
Nota 4: 7.5
27
Tela
17
18 19 20
Nota 3: 6.5
Nota 4: 7.5 Mdia: 7.5
28
Tela
17
18 19 20
Nota 3: 6.5
Nota 4: 7.5 Mdia: 7.5 Resultado: aprovado
29
Tela
17
18 19 20
30
Tela
17
18 19 20
31
Tela
17
18 19 20
32
Tela
17
18 19 20
33
Tela
17
18 19 20
34
Tela
17
18 19 20
35
Tela
17
18 19 20
36
Tela
17
18 19 20
Nota 3: 6.0
37
Tela
17
18 19 20
Nota 3: 6.0
Nota 4: 7.0
38
Tela
17
18 19 20
Nota 3: 6.0
Nota 4: 7.0 Mdia: 6.5
39
Tela
17
18 19 20
Nota 3: 6.0
Nota 4: 7.0 Mdia: 6.5 Resultado: reprovado
40
Em todos esses exerccios para desenvolver o algoritmo e fazer o teste de mesa para verificar se est correto:
1.
2.
3.
Faa um algoritmo para Calcule e mostre o estoque mdio de uma pea, sendo que ESTOQUEMDIO <- (QUANTIDADE MNIMA + QUANTIDADE MXIMA) /2 Faa um algoritmo que leia a cotao do dlar e um valor em dlares. Calcule a converso desse valor para real ($). Mostre o valor em dlar e o valor em real. Faa um algoritmo que leia 4 (quatro) nmeros inteiros. Calcule o quadrado para cada um, somem todos e mostre o quadrado de cada nmero e a soma dos quadrados.
41
42
Referncias
ALGORITMOS. MANZANO Lgica para desenvolvimento de programao de computadores. Jos Augusto N. G. Manzano, Jayr Figueiredo de Oliveira. So Paulo: rica, 2006. Acesso em 22 de agosto de 2011 ftp://ftp.unicamp.br/pub/apoio/treinamentos/logica/logica. pdf Acesso em 22 de agosto de 2011 http://pt.scribd.com/doc/50982484/Introducao-aProgramacao-Fasciculo-III
43
Universidade Federal da Grande Dourados Faculdade de Cincias Exatas e de Tecnologias Curso de Bacharelado em Sistemas de Informao
Algoritmos
Estruturas de controle se...seno
Aula com Profa. Claudia Regina Tins Peviani Slides da Prof Janne Oeiras Lachi
1
Plano de aula
Desvio condicional
Elaborar um algoritmo que leia dois valores numricos reais desconhecidos. Em seguida o algoritmo deve efetuar a adio dos dois valores lidos e apresentar o resultado se ele for maior que 10.
Para isso:
3
Devemos receber como entrada os dois nmeros (chamaremos de x e y) Somar os valores x e y (vamos colocar esse resultado em uma varivel chamada SOMA) Se o valor da adio for maior que 10, escreveremos como sada esse valor na tela.
se... ento...fim-se Se a condio estabelecida for verdadeira, sero executadas todas as instrues definidas entre se...ento e fim_se Depois sero executadas todas as instrues existentes aps fim_se Se a condio estabelecida for falsa, sero executadas as instrues definidas aps a instruo fim_se
Se a condio estabelecida for verdadeira, sero executadas todas as instrues definidas entre se...ento e fim_se Depois sero executadas todas as instrues existentes aps fim_se
Se a condio estabelecida for falsa, sero executadas as instrues definidas aps a instruo fim_se
6
fim
Condio
Sequncia de comandos
----
10
Leia x, y
SOMA x+y
V Diagrama de Chapin
SOMA >10
----
Fim
11
se... ento...seno...fim-se Se a condio estabelecida for verdadeira, sero executadas todas as instrues definidas entre se...ento e seno Se a condio estabelecida for falsa, sero executadas as instrues definidas entre seno e fim_se Somente aps uma das possibilidades anteriores que o programa executa as instrues existentes aps fim_se
12
13
14
Desvio condicional
Elaborar um algoritmo que leia o nome e a altura de duas pessoas. O seu algoritmo deve comparar as duas alturas lidas e apresentar como sada o nome da pessoa mais alta.
Para isso:
Devemos receber como entrada os nomes e as alturas das duas pessoas Comparar os valores das alturas lidas Se a primeira altura lida for maior que a segunda, escreveremos o como sada o nome da primeira pessoa. Seno, escreveremos o nome da segunda pessoa.
15
Condio
18
Condio
Sequncia de comandos A
Sequncia de comandos B
19
Exerccios
Dado o problema de determinar a pessoa mais alta, fornea o Diagrama de Blocos e o Diagrama de Chapin equivalente.
Programa COMPARACAO_ALTURA var NOME1, NOME2: caractere ALTURA1, ALTURA2: real incio escreva Informe o nome da 1a pessoa leia NOME1 escreva Informe altura da 1a pessoa leia ALTURA1 escreva Informe o nome da 2a pessoa leia NOME2 escreva Informe altura da 2a pessoa leia ALTURA2 se ALTURA1 > ALTURA2 ento escreva Pessoa mais alta:, NOME1 seno escreva Pessoa mais alta:, NOME2 fim_se fim
20
So usados quando h necessidade de estabelecer algumas verificaes lgicas de condies definidas sucessivamente Uma determinada ao de um programa s pode ser executada se um conjunto anterior de condies for verificado Pode ser usada uma condio dentro de outra condio
21
Um problema
Elaborar um algoritmo que efetue o clculo do reajuste de salrio de um funcionrio. Considere que o funcionrio deve receber um reajuste de 15% caso seu salrio seja menor ou igual a R$ 545,00. Se seu salrio for maior que R$ 545,00, mas menor ou igual a R$ 1.000,00, seu reajuste deve ser 10%. Caso seja maior que 1.000,00, o reajuste dever ser de 5%. possvel ver 3 condies no problema acima:
22
Se salrio <= R$ 545,00, reajuste de 15% Se R$ 545,00 < salrio <= R$ 1.000,00, reajuste de 10% Se salrio > R$ 1.000,00, reajuste de 5%
se (<condio1>) ento <instrues para condio1 verdadeira> seno se (<condio2>) ento <instrues para condio2 verdadeira, porm condio1 falsa> seno <instrues para condio1 e condio2 falsas> fim_se fim_se
23
Condio 2
24
V
Sequncia de comandos B
F
Sequncia de comandos C
25
Um problema: recapitulando
Elaborar um algoritmo que efetue o clculo do reajuste de salrio de um funcionrio. Considere que o funcionrio deve receber um reajuste de 15% caso seu salrio seja menor ou igual a R$ 545,00. Se seu salrio for maior que R$ 545,00, mas menor ou igual a R$ 1.000,00, seu reajuste deve ser 10%. Caso seja maior que 1.000,00, o reajuste dever ser de 5%. possvel ver 3 condies no problema acima:
26
Se salrio <= R$ 545,00, reajuste de 15% Se R$ 545,00 < salrio <= R$ 1.000,00, reajuste de 10% Se salrio > R$ 1.000,00, reajuste de 5%
Em Portugus estruturado
Pense nas condies impostas pelo problema e crie expresses que representem essas condies Se salrio <= R$ 545,00 ento reajuste de 15% Se R$ 545,00 < salrio <= R$ 1.000,00 ento reajuste de 10% Se salrio > R$ 1.000,00 ento reajuste de 5%
27
fim
28
Vamos pensar nas entradas e sadas e os tipos de dados que elas representam
29
30
Vamos estruturar nossas condies. Pensando na 1 condio: Se salrio <= R$ 545,00 ento reajuste de 15%
programa REAJUSTA_SALARIO var NOVO_SALARIO: real SALARIO: real inicio escreva Informe o salario atual: leia SALARIO se (SALARIO <= 545) ento NOVO_SALARIO SALARIO * 1.15 seno . Vamos preencher . aqui na prxima . etapa. fim_se fim
31
Pensando na 2 condio: Se R$ 545,00 < salrio <= R$ 1.000,00 ento reajuste de 10%
programa REAJUSTA_SALARIO var NOVO_SALARIO: real SALARIO: real inicio escreva Informe o salario atual: leia SALARIO se (SALARIO <= 545) ento NOVO_SALARIO SALARIO * 1.15 seno se (SALARIO > 545 e SALARIO <=1000) ento NOVO_SALARIO SALARIO * 1.10 seno Aqui est. Note . que estamos . dentro do seno. . fim_se fim_se 32 fim
Pensando na 2 condio: Se R$ 545,00 < salrio <= R$ 1.000,00 ento reajuste de 10%
programa REAJUSTA_SALARIO var NOVO_SALARIO: real SALARIO: real inicio escreva Informe o salario atual: Note o uso do leia SALARIO se (SALARIO <= 545) ento operador lgico e NOVO_SALARIO SALARIO * 1.15 seno se (SALARIO > 545 e SALARIO <=1000) ento NOVO_SALARIO SALARIO * 1.10 seno . Vamos preencher aqui na prxima . etapa. . fim_se fim_se fim
33
34
Mostrando o resultado...
programa REAJUSTA_SALARIO var NOVO_SALARIO: real SALARIO: real inicio escreva Informe o salario atual: leia SALARIO se (SALARIO <= 545) ento NOVO_SALARIO SALARIO * 1.15 seno se (SALARIO > 545 e SALARIO <=1000) ento NOVO_SALARIO SALARIO * 1.10 seno se (SALARIO > 1000) ento NOVO_SALARIO SALARIO * 1.05 fim_se fim_se fim_se escreva O novo salario eh:, NOVO_SALARIO fim
35
Exerccio
37
Referncias
ALGORITMOS. MANZANO Lgica para desenvolvimento de programao de computadores. Jos Augusto N. G. Manzano, Jayr Figueiredo de Oliveira. So Paulo: rica, 2006. ALGORITMOS ESTRUTURADOS. Harry Farrer, Christiano Gonalves Becker, Eduardo Chaves Faria et al. 3 Edio. Rio de Janeiro: LTC, 2008.
38
Universidade Federal da Grande Dourados Faculdade de Cincias Exatas e de Tecnologias Curso de Bacharelado em Sistemas de Informao
Algoritmos
Estrutura de controle com mltipla escolha
Aula com Profa. Claudia Regina Tins Peviani Slides da Prof Janne Oeiras Lachi
1
Objetivo
Mltipla escolha
Pode ser usada quando o algoritmo prev opes de escolha para o usurio Ou quando houver a necessidade de usar uma sequncia grande de instrues do tipo se uma aps a outra ou encadeadas/aninhadas
Um problema exemplo
Elaborar um algoritmo que leia o destino do passageiro, se a viagem inclui retorno (ida e volta) e informar o preo da passagem conforme a tabela a seguir.
Destino Regio Norte Regio Nordeste Regio Centro-Oeste Regio Sul Ida R$500,00 R$350,00 R$350,00 R$300,00 Ida e Volta R$900,00 R$650,00 R$600,00 R$550,00
Elaborar um algoritmo que leia o destino do passageiro, se a viagem inclui retorno (ida e volta) e informar o preo da passagem conforme a tabela a seguir.
Programa VIAGEM var DESTINO, IDA_VOLTA: caractere incio escreva Informe o destino da viagem (Norte, Nordeste, Centro-oeste, Sul): Destino Ida leia DESTINO escreva ida e volta (S ou N)? Regio Norte R$500,00 leia IDA_VOLTA Regio Nordeste R$350,00 se IDA_VOLTA = S Regio Centro-Oeste R$350,00 se DESTINO = Norte ento escreva Preo da passagem R$ 900,00 Regio Sul R$300,00 seno se DESTINO = Nordeste ento escreva Preo da passagem R$ 650,00 seno se DESTINO = Centro-oeste ento escreva Preo da passagem R$ 600,00 seno escreva Preo da passagem R$ 550,00 fim_se fim_se 5 fim_se
R$550,00
Programa VIAGEM var DESTINO, IDA_VOLTA: caractere incio escreva Informe o destino o destino do passageiro, se a viagem inclui retorno Elaborar um algoritmo que leia da viagem (Norte, Nordeste, Centro-oeste, (ida Sul): e volta) e informar o preo da passagem conforme a tabela a seguir. leia DESTINO Destino Ida escreva ida e volta (S ou N)? Regio Norte R$500,00 leia IDA_VOLTA Regio Nordeste R$350,00 se IDA_VOLTA = S <comandos> Regio Centro-Oeste R$350,00 seno Regio Sul R$300,00 se DESTINO = Norte ento escreva Preo da passagem R$ 500,00 seno se DESTINO = Nordeste ento escreva Preo da passagem R$ 350,00 seno se DESTINO = Centro-oeste ento escreva Preo da passagem R$ 350,00 seno escreva Preo da passagem R$ 300,00 fim_se fim_se fim_se fim_se fim
R$600,00
R$550,00
Elaborar um algoritmo que leia o destino do passageiro, se a viagem inclui retorno (ida e volta) e informar o preo da passagem conforme a tabela a seguir.
Programa VIAGEM var OPO: inteiro incio escreva 1- Norte (ida) escreva 2- Norte (ida e volta) Destino escreva 3- Nordeste (ida) Regio Norte escreva 4- Nordeste (ida e volta) Regio Nordeste escreva 5- Centro-oeste (ida) escreva 6- Centro-oeste (ida e volta) Regio Centro-Oeste escreva 7- Sul (ida) Regio Sul escreva 8- Sul (ida e volta) escreva Escolha uma opo (1 a 8): leia OPO caso OPO seja 1 faa escreva Preo da passagem R$ 500,00 seja 2 faa escreva Preo da passagem R$ 900,00
Ida
Ida e Volta
R$300,00 R$550,00
Destino Ida Ida e Volta Programa VIAGEM Regio Norte R$500,00 R$900,00 var OPO: inteiro Regio Nordeste R$350,00 R$650,00 incio Regio Centro-Oeste R$350,00 R$600,00 <comandos escreva> que leia o destino do passageiro, se a viagem inclui retorno Elaborar um algoritmo R$300,00 R$550,00 (ida e volta) e informar o preo da passagem conforme Regio Sul a seguir. a tabela leia OPO caso OPO seja 1 faa escreva Preo da passagem R$ 500,00 seja 2 faa escreva Preo da passagem R$ 900,00 seja 3 faa escreva Preo da passagem R$ 350,00 seja 4 faa escreva Preo da passagem R$ 650,00 seja 5 faa escreva Preo da passagem R$ 350,00 seja 6 faa escreva Preo da passagem R$ 600,00 seja 7 faa escreva Preo da passagem R$ 300,00 seja 8 faa escreva Preo da passagem R$ 550,00 fim_caso fim
Instrues 1
N
Condio 2
Instrues 2
N S
Condio n
Instrues N
N
Ao para nenhuma condio satisfeita
10
Condio 1 S N
Condio 2
S
Instrues 1
Instrues 2
S
N
Condio n
N Instrues n
11
Referncias
ALGORITMOS. MANZANO Lgica para desenvolvimento de programao de computadores. Jos Augusto N. G. Manzano, Jayr Figueiredo de Oliveira. So Paulo: rica, 2006.
12
Universidade Federal da Grande Dourados Faculdade de Cincias Exatas e de Tecnologias Curso de Bacharelado em Sistemas de Informao
Algoritmos
Usando um contador
Aula com Profa. Claudia Regina Tins Peviani Slides da Prof Janne Oeiras Lachi
1
Usando um contador
Alguns exerccios pedem para informarmos ao final do processamento quanto foi visto de um determinado tipo. Por exemplo:
Dada a altura e a base de 3 paredes, elaborar um algoritmo que escreva quantas reas so maiores que 100 m2. Faa um Algoritmo que receba a idade e o peso de quatr o pessoas, calcule e mostre a quantidade de pessoas ac ima de 80kg e a mdia de idade das quatro pessoas. Dado o sexo e altura de 5 pessoas, calcular e exibir a maior altura, a mdia das alturas femininas, o total de homens.
Problema 1
Dada a altura e a base de 3 paredes, elaborar um algoritmo que escreva quantas reas so maiores que 100 m2.
Base e altura de 3 paredes (6 informaes no total) A quantidade de paredes cujas reas so maiores que 100m2
Problema 1: resoluo
Programa AREA var BASE1, BASE2, BASE3: real ALTURA1, ALTURA2, ALTURA3: real AREA1, AREA2, AREA3: real contador: inteiro incio escreva Informe a base da 1. parede: leia BASE1 escreva Informe a altura da 1. parede: leia ALTURA1 escreva Informe a base da 2. parede: leia BASE2 escreva Informe a altura da 2. parede: leia ALTURA2 escreva Informe a base da 3. parede: leia BASE3 escreva Informe a altura da 3. parede: leia ALTURA3 AREA1 BASE1 * ALTURA1 AREA2 BASE2 * ALTURA2 AREA3 BASE3 * ALTURA3 4
fim
Problema 2
Faa um Algoritmo que receba a idade e o peso de quatr o pessoas, calcule e mostre a quantidade de pessoas a cima de 80kg e a mdia de idade das quatro pessoas. Quais so os dados de entrada do problema?
Idade de 4 pessoas Peso de 4 pessoas Quantidade de pessoas acima de 80Kg Mdia de idade das 4 pessoas
Problema 2: resoluo
Programa PESO_IDADE var IDADE1, IDADE2, IDADE3, IDADE4 : inteiro PESO1, PESO2, PESO3, PESO4 : real MEDIA_IDADE: real contador: inteiro incio escreva Informe o peso da 1. pessoa: leia PESO1 escreva Informe a idade da 1. pessoa: leia IDADE1 escreva Informe o peso da 2. pessoa: leia PESO2 escreva Informe a idade da 2. pessoa: leia IDADE2 escreva Informe o peso da 3. pessoa: leia PESO3 escreva Informe a idade da 3. pessoa: leia IDADE3 escreva Informe o peso da 4. pessoa: leia PESO4 escreva Informe a idade da 4. pessoa: leia IDADE4
+1
+1
Problema 3
Dado o sexo e altura de 5 pessoas, calcular e exibir a maior altura, a mdia das alturas femininas, o total de homens.
Problema 3: resoluo
Programa MAIORALTURA_QHOMENS_MEDIAFEM var SEXO1, SEXO2, SEXO3, SEXO4, SEXO5 : caractere ALTURA1, ALTURA2, ALTURA3, ALTURA4, ALTURA5 : real MAIOR_ALTURA, ALTURA_FEM: real contador: inteiro incio escreva Informe o sexo da 1. pessoa: leia SEXO1 escreva Informe a altura da 1. pessoa: leia ALTURA1 escreva Informe o sexo da 2. pessoa: leia SEXO2 escreva Informe a altura da 2. pessoa: leia ALTURA2 escreva Informe o sexo da 3. pessoa: leia SEXO3 escreva Informe a altura da 3. pessoa: leia ALTURA3 escreva Informe o sexo da 4. pessoa: leia SEXO4 escreva Informe a altura da 4. pessoa: leia ALTURA4 escreva Informe o sexo da 5. pessoa: leia SEXO5 escreva Informe a altura da 5. pessoa: 10 leia ALTURA5
contador 0 ALTURA_FEM 0
se SEXO1 = M ento contador contador +1 seno ALTURA_FEM ALTURA_FEM + ALTURA1 fim_se se SEXO2 = M ento contador contador +1 seno ALTURA_FEM ALTURA_FEM + ALTURA2 11 fim_se
Universidade Federal da Grande Dourados Faculdade de Cincias Exatas e de Tecnologias Curso de Bacharelado em Sistemas de Informao
Algoritmos
Estruturas de controle: repetio
Aula com Profa. Claudia Regina Tins Peviani Slides da Prof Janne Oeiras Lachi
1
Plano de aula
Estrutura de repetio:
Sintaxe do comando:
para <varivel> de <valor inicial> at <valor final> passo <incremento> faa
Elaborar um algoritmo que receba como entrada um nmero inteiro qualquer, em seguida multiplique o valor de entrada por 3 e apresente o resultado. Realizar a execuo dos passos anteriores cinco vezes.
Note que este problema pede para voc realizar uma sequncia de comandos (receber entrada, efetuar multiplicao, mostrar resultado) REPETIDAMENTE, exatamente CINCO vezes.
Elaborar um algoritmo que receba como entrada um nmero inteiro qualquer, em seguida multiplique o valor de entrada por 3 e apresente o resultado. Realizar a execuo dos passos anteriores cinco vezes.
fim
Elaborar um algoritmo que receba como entrada um nmero inteiro qualquer, em seguida multiplique o valor de entrada por 3entrada e apresente o resultado. Realizar a execuo dos passos anteriores cinco sada vezes.
fim
Elaborar um algoritmo que receba como entrada um nmero inteiro qualquer, em seguida multiplique o valor de entrada por 3 e apresente o resultado. Realizar a execuo dos passos anteriores cinco vezes.
fim
Elaborar um algoritmo que receba como entrada um nmero inteiro qualquer, em seguida multiplique o valor de entrada por 3 e apresente o resultado. Realizar a execuo dos passos anteriores cinco vezes.
programa MULT_3 var n, resultado: inteiro inicio escreva Informe um nmero inteiro: leia n fim
Elaborar um algoritmo que receba como entrada um nmero inteiro qualquer, em seguida multiplique o valor de entrada por 3 e apresente o resultado. Realizar a execuo dos passos anteriores cinco vezes.
programa MULT_3 var n, resultado: inteiro inicio escreva Informe um nmero inteiro: leia n resultado n * 3 escreva resultado
fim
Vamos calcular a multiplicao e escrever o resultado. Pronto! Resolvemos o problema para 1 vez.
Com os conceitos que voc aprendeu at ento, voc poderia prover a seguinte soluo:
programa MULT_3 var n, resultado: inteiro inicio escreva Informe um nmero inteiro: leia n resultado n * 3 escreva resultado escreva Informe um nmero inteiro: leia n resultado n * 3 escreva resultado escreva Informe um nmero inteiro: leia n resultado n * 3 escreva resultado escreva Informe um nmero inteiro: leia n resultado n * 3 escreva resultado escreva Informe um nmero inteiro: leia n resultado n * 3 escreva resultado
Note que os comandos se REPETEM cinco vezes. Mas e se o problema pedisse que fossem lidos 1.000.000 de valores de entrada? O algoritmo resultando seria muito grande. Vejamos uma soluo mais ENXUTA.
fim
Elaborar um algoritmo que receba como entrada um nmero inteiro qualquer, em seguida multiplique o valor de entrada por 3 e apresente o resultado. Realizar a execuo dos passos anteriores cinco vezes.
programa MULT_3 var n, resultado: inteiro inicio escreva Informe um nmero inteiro: leia n resultado n * 3 escreva resultado
fim
Uma dica voc pensar em resolver o problema para apenas 1 vez e depois incluir a repetio.
Elaborar um algoritmo que receba como entrada um nmero inteiro qualquer, em seguida multiplique o valor de entrada por 3 e apresente o resultado. Realizar a execuo dos passos anteriores cinco vezes. programa MULT_3 var n, resultado, I : inteiro inicio para I de 1 at 5 passo 1 faa escreva Informe um nmero inteiro: leia n resultado n * 3 escreva resultado fim_para fim
Elaborar um algoritmo que receba como entrada um nmero inteiro qualquer, em seguida multiplique o valor de entrada por 3 e apresente o resultado. Realizar a execuo dos passos anteriores cinco vezes. programa MULT_3 var n, resultado, I : inteiro inicio para I de 1 at 5 passo 1 faa escreva Informe um nmero inteiro: leia n resultado n * 3 escreva resultado fim_para fim
Neste tipo de repetio, sempre teremos uma varivel contadora de apoio (I), para nos ajudar a controlar quantas vezes os comandos dentro do lao devem ser repetidos.
Elaborar um algoritmo que receba como entrada um nmero inteiro qualquer, em seguida multiplique o valor de entrada por 3 e apresente o resultado. Realizar a execuo dos passos anteriores cinco vezes. programa MULT_3 var n, resultado, I : inteiro inicio para I de 1 at 5 passo 1 faa escreva Informe um nmero inteiro: leia n resultado n * 3 escreva resultado fim_para fim
Como queremos que o lao seja efetuado 5 vezes, definimos o intervalo de repetio entre 1 e 5
Elaborar um algoritmo que receba como entrada um nmero inteiro qualquer, em seguida multiplique o valor de entrada por 3 e apresente o resultado. Realizar a execuo dos passos anteriores cinco vezes. programa MULT_3 var n, resultado, I : inteiro inicio para I de 1 at 5 passo 1 faa escreva Informe um nmero inteiro: leia n resultado n * 3 escreva resultado fim_para fim
Este tipo de lao sempre ter um incremento na varivel contadora que pode variar a cada problema. Neste caso, precisamos que a varivel seja incrementada de 1 unidade a cada execuo do lao
Elaborar um algoritmo que receba como entrada um nmero inteiro qualquer, em seguida multiplique o valor de entrada por 3 e apresente o resultado. Realizar a execuo dos passos anteriores cinco vezes. programa MULT_3 var n, resultado, I : inteiro inicio para I de 1 at 5 faa escreva Informe um nmero inteiro: leia n resultado n * 3 escreva resultado fim_para fim
Elaborar um algoritmo que receba como entrada um nmero inteiro qualquer, em seguida multiplique o valor de entrada por 3 e apresente o resultado. Realizar a execuo dos passos anteriores cinco vezes. programa MULT_3 var n, resultado, I : inteiro inicio para I de 1 at 5 faa escreva Informe um nmero inteiro: leia n resultado n * 3 escreva resultado I I + 1; fim_para fim
Observao: h outros livros que fazem o incremento explicitamente antes do final do lao
Note o recuo nas linhas 6,7,8 e 9 porque esto dentro do bloco do para...fim_para
Variveis
n resultado I 1 Tela
N da linha 5 6 7 8
5. para I de 1 at 5 passo 1 faa Neste momento, a varivel I recebe o valor 1 (o primeiro valor da faixa de valores estabelecido para o lao)
Variveis
n resultado I 1 1
Informe um nmero inteiro:
N da linha 5 6 7 8
Tela
Variveis
n resultado I 1 1 2 1
Informe um nmero inteiro:
N da linha 5 6 7 8
Tela
7. leia n
Variveis
n resultado I 1 1 2 2 6 1 1
Informe um nmero inteiro:
N da linha 5 6 7 8
Tela
8. resultado n * 3
Variveis
n resultado I 1 1 2 2 6 1 1
Informe um nmero inteiro:
N da linha 5 6 7 8
Tela
9. escreva resultado
Variveis
n 2 resultado 6 I 1 2 Tela
N da linha 5 6 7 8
Variveis
n 2 2 resultado 6 6 I 2 2
Informe um nmero inteiro:
N da linha 5 6 7 8
Tela
Variveis
n 2 2 2 4 resultado 6 6 6 I 2 2 2
Informe um nmero inteiro:
N da linha 5 6 7 8
Tela
7. leia n
Variveis
n 2 2 4 4 resultado 6 6 6 6 12 I 2 2 2 2
Informe um nmero inteiro:
N da linha 5 6 7 8
Tela
8. resultado n * 3
Variveis
n 2 2 4 4 resultado 6 6 6 12 I 2 2 2 2
Informe um nmero inteiro:
N da linha 5 6 7 8
Tela
12
12
9. escreva resultado
A sequncia de comandos de 5 a 9 vai se repetir por mais 3 vezes, com I assumindo os valores 3, 4 e 5. O usurio vai poder entrar com mais 3 novos valores para a varivel n e o triplo desse valor vai ser calculado e apresentado na tela.
Exemplo 2
Considere o mesmo problema e suponha que seja solicitada a repetio por 20 vezes. Considerando o algoritmo abaixo, qual a mudana que voc faria nele?
programa MULT_3 var n, resultado, I : inteiro inicio para I de 1 at 5 passo 1 faa escreva Informe um nmero inteiro: leia n resultado n * 3 escreva resultado fim_para fim
Exemplo 2
Em Diagrama de Blocos:
Varivel incio, fim, incremento
Incio
I 1, 5, 1 Informe um nmero inteiro:
RNx3
R fim
Incio
I 1, 20, 1 Informe um nmero inteiro:
RNx3
R fim
Exemplo 3
Vimos na semana retrasada Dada a altura e a base de 3 paredes, elaborar um algoritmo que escreva quantas reas so maiores que 100 m2.
Base e altura de 3 paredes (6 informaes no total) A quantidade de paredes cujas reas so maiores que 100m2
35
(cont.)
fim
37
Vamos modificar a soluo anterior para minimizar a quantidade de variveis usadas Vamos pensar na soluo prevendo que precisamos calcular a rea de APENAS 1 parede.
38
fim
39
Temos aqui a soluo para verificar se a rea de 1 parede maior que 100 m2. Agora vamos incluir repetio para REAPROVEITAR este cdigo para calcular a rea de 3 paredes.
fim
40
Note que precisamos declarar a varivel I do tipo inteiro quando usamos o comando para...fim_para
Precisamos repetir o trecho 3 vezes (de acordo com o que o problema pediu) e por isso a faixa de valores deve ir de 1 at 3
41
fim
42
Note aqui que aproveitamos o valor dentro de I para pedir corretamente a entrada para o usurio: - Quando I for 1, aparecer Informe a base da 1 parede: - Quando I for 2, aparecer Informe a base da 2 parede:
43
Note que o contador fica FORA do bloco. Por qu? O que ocorre se ele ficar dentro do bloco do para..fim_para?
Exemplo 4
Nos problemas anteriores, estava explcita a quantidade de vezes que os comandos deveriam ser repetidos (cinco vezes, trs vezes...) Vejamos outro tipo de problema:
Escreva um algoritmo que receba como entrada um nmero inteiro n (n > 0) do usurio e imprima os nmeros de 1 a n na tela.
Nos problemas anteriores, tnhamos um nmero definido de repeties (cinco, trs) e, portanto, podamos usar fora bruta e incluir no algoritmo o mesmo trecho de programa repetidamente.
Exemplo 4
Escreva um algoritmo que receba como entrada um nmero inteiro n (n > 0) do usurio e imprima os nmeros de 1 a n na tela.
Neste problema, no sabemos qual o valor de n porque o usurio ainda vai fornec-lo. Como ento podemos saber quantos trechos de comandos repetidos vamos ter que incluir no nosso algoritmo? No possvel usar fora bruta. Lembre que se a nossa varivel for do tipo inteiro, os valores podem ir at o nmero 2.147.483.647
Exemplo 4
Escreva um algoritmo que receba como entrada um nmero inteiro n (n > 0) do usurio e imprima os nmeros de 1 a n na tela.
Ainda que o nmero n seja desconhecido porque o usurio quem vai inform-lo, uma vez que ele seja dado como entrada, a quantidade de repeties ser finita, limitada a esse nmero n.
Escreva um algoritmo que receba como entrada um nmero inteiro n (n > 0) do usurio e imprima os nmeros de 1 a n na tela.
programa IMPRESSAO var N, I : inteiro inicio escreva Informe um nmero inteiro maior que zero: leia N para I de 1 at N passo 1 faa escreva I fim_para fim
Note que o valor lido de N agora o limitante da faixa de valores dentro do comando para..fim_para
Escreva um algoritmo que receba como entrada um nmero inteiro n (n > 0) do usurio e imprima os nmeros de 1 a n na tela.
programa IMPRESSAO var N, I : inteiro inicio escreva Informe um nmero inteiro maior que zero: leia N para I de 1 at N passo 1 faa escreva I fim_para fim
Note que aproveitamos o valor guardado na varivel I para poder imprimir os nmeros de 1 at N.
H outros problemas que pedem para imprimir ou calcular valores em ordem descrescente
No h entrada! O problema no pede para ler ou receber nada do usurio. Sada: todos os nmero pares entre 600 e 1
fim
Incluindo repetio
programa IMPRESSAO_PARES var I : inteiro inicio para I de 600 at 2 passo 2 faa escreva I fim_para fim
Incluindo repetio
programa IMPRESSAO_PARES var I : inteiro inicio para I de 600 at 2 passo 2 faa escreva I fim_para fim
Neste caso, como a nossa faixa de valores comea em um nmero maior que o final da faixa (600 at 2), o comando sabe que para decrementar a quantidade estipulada no passo
Note que podemos ter qualquer comando dentro do para...fim_para, inclusive OUTRO para...fim_para
Trs voltas na Lagoa Rodrigo de Freitas A cada volta, ele deve parar e fazer cinco abdominais antes de prosseguir para a prxima volta.
Observao
importante ressaltar que em todos os exemplos anteriores, a quantidade de repeties a serem efetuadas estavam:
Ou explcitas no enunciado do problema (trs, cinco, vinte) Ou seriam informadas pelo usurio Elaborar um algoritmo que receba como entrada um nmero inteiro qualquer, em seguida multiplique o valor de entrada por 3 e apresente o resultado. Ao final da apresentao do resultado o programa deve perguntar ao usurio se ele deseja novo clculo.
Observao
Elaborar um algoritmo que receba como entrada um nmero inteiro qualquer, em seguida multiplique o valor de entrada por 3 e apresente o resultado. Ao final da apresentao do resultado o programa deve perguntar ao usurio se ele deseja novo clculo.
Neste problema no est definida a quantidade de repeties; No ser definido pelo usurio ANTECIPADAMENTE quantas vezes para repetir Somente conseguiremos resolver este problema com outra estrutura de repetio chamada ENQUANTO.
Referncias
Algoritmos Fundamento e Prtica. Everton Coimbra de Arajo. Florianpolis: Visual Book, 2007. Algoritmos - Lgica para desenvolvimento de programao de computadores. Jos Augusto N. G. Manzano, Jayr Figueiredo de Oliveira. So Paulo: rica, 2006.
63