You are on page 1of 318

Universidade Federal da Grande Dourados Faculdade de Cincias Exatas e de Tecnologias Curso de Bacharelado em Sistemas de Informao

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

Ao longo do curso, a professora abordar os contedos por meio de:


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

Quadro Datashow Moodle


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

Passo 1: acessar o site http://ead.ufgd.edu.br Passo 2: clicar no link Acesso

Inscrio no Moodle

Passo 3: fazer o cadastro de usurio

Inscrio no Moodle

Passo 4: preencher formulrio

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:

MA = (Avaliao individual 1 + Avaliao individual 2) / 2

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

Setor de TI ter carncia de profissionais


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.

Lista de exerccios n 0 (Lgica)

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?

(A) 1 (B) 2 (C) 3 (D) 4 (E) 5

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

Origem no nome de um matemtico persa do sculo IX:


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

Fundamental para o desenvolvimento de sistemas computacionais


Um programa de computador um produto resultante da atividade intelectual de um programador. Essa atividade, por sua vez, depende de um treinamento prvio em abstrao e modelagem de problemas, bem como o uso da lgica na vericao das solues. Souza, M. A. F. et al., 2004

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...

Figura 1: Simplificao do processo de construo de um software (Souza, M. A. F. et al., 2004)


4

Algoritmos e lgica de programao


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

Conceito de ao (Farrer et al., 2008):

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:

Escolher um nmero L, sendo L > 0 Escrever a sequncia de Fibonacci inferior a L

Miriam: 50

Sequncia escrita: 1 1 2 3 5 8 13 21 34 Sequncia escrita: 1 1 2 3 5 8 No escreveu nada.

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

Parte do que as trs pessoas executaram uma 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

Trs pessoas diferentes, valores iniciais diferentes, resultados diferentes


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

Definio (Farrer et al., 2008):

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.

Se destina a resolver um problema

Programa que imprime Hello world! (1)


int main() { printf(Hello world!\n); return 0; }

Este programa imprime Hello world!?

fcil descobrir que esse programa imprime Hello world! e termina.

Programa que imprime Hello world! (2)


int exp(int i, n) /*calcula i elevado a potncia n */ { int ans, j; ans = 1; for (j=1; j<=n; j++) ans*=i; return(ans); } int main() { int n, total, x, y, z; scanf(%d,&n); total = 3; while (1) { for (x=1; x <= total-2; x++) for(y=1;y <= total-x-1; y++) { z= total x y; if (exp(x,n) + exp(y,n)== exp(z,n)) printf(hello, world\n); } total++; } }

E este?

Programa que imprime Hello world! (2)


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

Algoritmo para escrever termos de Fibonacci


Algoritmo Escreva os termos de Fibonacci inferiores a L. fim algoritmo. refinamento

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

Um algoritmo e seus refinamentos so formados por:


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

Algoritmo para escrever termos de Fibonacci


Ref. Escreva os termos de Fibonacci inferiores a L Receba o valor L Processe os 2 primeiros termos Processe os termos restantes fim ref.

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

Provoca ou no a realizao de uma ao


se condio ento comandos fim se

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

Algoritmo para escrever termos de Fibonacci


Ref. Escreva os termos de Fibonacci inferiores a L Receba o valor L Processe os 2 primeiros termos Processe os termos restantes fim ref.

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

Estrutura de repetio: execuo

Para L = 13, so executadas as seguintes aes:


Calcula novo termo, como sendo 1 + 1 = 2 Como 2 < 13, escreve o valor 2 Calcula novo termo, como sendo 1 + 2 = 3 Como 3 < 13, escreve o valor 3 Calcula novo termo, como sendo 2 + 3 = 5 Como 5 < 13, escreve o valor 5 Calcula novo termo, como sendo 3 + 5 = 8 Como 8 < 13, escreve o valor 8 Calcula novo termo, como sendo 5 + 8 = 13 Como 13 no menor que 13, interrompe e no escreve nada.

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

Sequncia Lgica: exemplo

23

Sequncia Lgica: exerccio

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

Formas de representao de algoritmos


Portugus estruturado Diagrama de Blocos Diagrama de Chapin ou Nassi-Shneider

25

Portugus estruturado (PE)


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

Corpo mnimo de um algoritmo em PE

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

Note que em negrito esto destacadas outras palavras reservadas.

Portugus estruturado: exemplo

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

Portugus estruturado: exemplo


programa CALC_APROVACAO var RESULTADO: caractere NI, N2, N3, N4: real SOMA, MDIA: 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

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

Diagrama de blocos: elementos bsicos

32

Fonte: Manzano, 2004

Diagrama de blocos: elementos bsicos

33

Fonte: Manzano, 2004

Diagrama de blocos: exemplo


Calcular a mdia de um aluno e determinar aprovao
Incio Incio Entrada com 4 notas Calcular a mdia e determinar a aprovao

Refinamento

Calcular a mdia e determinar a aprovao

Fim

Apresentar se houver ou no aprovao

Fim

34

Diagrama de blocos: exemplo


Calcular a mdia de um aluno e determinar aprovao
Incio
Incio Entrada com 4 notas Entrada com 4 notas

Calcular a mdia e determinar a aprovao

Refinamento
NO

Calcular a mdia e determinar a aprovao

Media 7 ?

SIM

Apresentar se houver ou no aprovao

Media, REPROVADO

Media, APROVADO

Fim

35

Fim

Diagrama de Chapin ou Nassi-Shneider

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

Diagrama de Chapin: exemplo


Calcular a mdia de um aluno e determinar aprovao
Incio Leia N1, N2, N3, N4 Soma N1 + N2 + N3 + N4 Media Soma/4
sim
Media 7 ?

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

Tipos de dados e instrues primitivas


O objetivo da aula abordar a manipulao de dados pelo computador Veremos:


Entrada de dados Tipos de dados Tipos de instrues

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

Entrada e sada: exemplo de busca

Dadas palavras-chave, o algoritmo da busca retorna os resultados encontrados.

Palavraschave

Algoritmo (Google) (busca pginas)

Lista de pginas

Entrada e sada: exemplo 2

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.

6.8, 6.0, 8.1, 7.1

algoritmo
(calcula a mdia e o resultado)

7.0,
APROVADO

Comando de entrada

Sintaxe em Portugus estruturado


leia <lista-de-identificadores>

leia uma palavra reservada <lista-de-identificadores> so nomes de variveis, separados por vrgula

Exemplo de entrada de dados


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
9

Comando de sada

Sintaxe em Portugus estruturado


escreva <lista-de-identificadores> e/ou <constantes>

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

Exemplo de sada de dados


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

11

Exerccio

Dados os problemas abaixo, identifique quais so as suas respectivas entradas e sadas.


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. Receba o preo de um produto, aplique um desconto de 10% nesse preo e mostre o novo preo. Um funcionrio recebe todo ms um salrio fixo mais 4% de comisso sobre as suas vendas. Faa um algoritmo que receba o salrio fixo de um funcionrio e o valor de suas vendas, calcule e mostre a comisso e o salrio final do funcionrio.

12

Entrada e sada: exemplo 3

Dados trs nmeros, calcule e mostre a multiplicao desses nmeros.

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

Variveis e o problema anterior

Dados trs nmeros, calcule e mostre a multiplicao desses nmeros.


... em cada gaveta possvel guardar um nico valor por vez.

Quantos valores seu algoritmo deve receber como entrada?

... as gavetas devem estar identificadas com uma etiqueta contendo um nome.

Quais nomes voc dar s suas variveis?


Ex.: n1, n2, n3

16

Variveis: quantas voc identifica abaixo?

17

Variveis: quantas voc identifica abaixo?

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

Exemplos de nomes de variveis

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

Exerccio: nome de variveis

Assinalar com um x as variveis vlidas


( ) VALOR ( ) X2 ( )3 X 4 ( )XYZ ( )NOTA ( ) SALARIO-LIQ ( )NOTA*DO*ALUNO ( )MARIA ( )NOMEDAEMPRESA ( )AH! ( )B248 ( )A1B2C3 ( )KM/H ( )SALA215 ( )M{A}

22

Papel de uma varivel

Uma varivel pode exercer dois papis:


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

Os dados so representados por elementos advindos do mundo externo

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

Conhecidos por Tipos de dados primitivos ou Tipos de dados bsicos

Tipos de dados inteiros

So inteiros os dados numricos positivos e negativos pertencentes ao conjunto de nmeros inteiros, excluindo qualquer valor numrico fracionrio. Exemplos:

Positivos: 35, 0, 234 Negativos: -56, -9

25

Tipos de dados inteiros: exerccio

Indique com um X os dados do tipo Inteiro.


( ) 1000 ( ) 0 ( ) -900 ( ) .Verdadeiro. ( ) -456 ( ) 34 ( ) Casa 8 ( )0 ( ) .Falso. ( ) -1.56

26

Tipos de dados inteiros: exerccio

Indique com um X os dados do tipo Inteiro.


( x ) 1000 ( ) 0 ( ) -900 ( ) .Verdadeiro. ( x ) -456 ( x ) 34 ( ) Casa 8 (x)0 ( ) .Falso. ( ) -1.56

27

Sintaxe de tipos de dados inteiros

Em portugus estruturado usado o comando inteiro


<lista_var> : inteiro

<lista_var>pode ser formada por uma nica varivel ou uma lista de variveis separadas por vrgula. Ex.:

<variavel> <variavel>, <variavel>

28

Sintaxe de tipos de dados inteiros: exemplo

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

Sintaxe de tipos de dados inteiros: exemplo

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

Exemplo de variveis do tipo inteiro


programa CALC_CUSTO var qtd_caderno, qdt_caneta, qtd_borracha: inteiro custo: real incio leia qtd_caderno, qdt_caneta, qtd_borracha custo qtd_caderno * 10.0 + qdt_caneta * 0.80 + qtd_borracha * 0.50 escreva Custo total eh:, custo fim

Observao: A linha em vermelho poderia ser escrita tambm como: qtd_caderno: inteiro qdt_caneta: inteiro qtd_borracha: inteiro
31

Tipos de dados reais

Os dados reais so numricos positivos e negativos pertencentes ao conjunto de nmeros reais, incluindo todos os valores fracionrios e tambm os inteiros. Exemplos:

Inteiros: 35, 0, -56, -9 Fracionrios: -45.999, 4.5

Ateno: utilize o ponto . em nmeros reais e NO use vrgula ,

32

Tipos de dados reais: exerccio

Indique com um X os dados do tipo Real.


( ) -678 ( ) 0.87 ( ) -9.12 ( ) .Verdadeiro. ( ) -456 ( ) -99.8 ( ) Cinco ( ) 45.8976 ( ) .Falso. ( ) -1.56

33

Tipos de dados reais: exerccio

Indique com um X os dados do tipo Real.


( x ) -678 ( ) 0.87 ( ) -9.12 ( ) .Verdadeiro. ( x ) -456 ( x ) -99.8 ( ) Cinco ( x ) 45.8976 ( ) .Falso. ( x ) -1.56

34

Sintaxe de variveis do tipo real

Em Portugus estruturado usado o comando real


<lista_var> : real

<lista_var>pode ser formada por uma nica varivel ou uma lista de variveis separadas por vrgula. Ex.:

<variavel> <variavel>, <variavel>

35

Exemplo de variveis do tipo real


programa CALC_CUSTO var qtd_caderno, qdt_caneta, qtd_borracha: inteiro custo: real incio leia qtd_caderno, qdt_caneta, qtd_borracha custo qtd_caderno * 10.0 + qdt_caneta * 0.80 + qtd_borracha * 0.50 escreva Custo total eh:, custo fim

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

Tipos de dados caracteres ou literal

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:

Programao Rua Alfa, 52 Apto. 1, Fone: (0xx99) 5544-3322, 7, -90, 45.989

37

Tipos de dados caractere: exerccio

Indique com um X os dados do tipo caractere.


( ) 678 ( ) 0.87 ( ) -9.12 ( ) Verdadeiro ( ) -456 ( ) -99.8 ( ) Cinco ( ) 45.8976 ( ) .Falso. ( ) #CABEC ( ) 1.56

38

Tipos de dados caractere: exerccio

Indique com um X os dados do tipo caractere.


( ) 678 ( ) 0.87 ( ) -9.12 ( ) Verdadeiro ( ) -456 ( ) -99.8 ( ) Cinco ( ) 45.8976 ( ) .Falso. ( ) #CABEC ( ) 1.56

39

Sintaxe de tipos de dados caractere

Em portugus estruturado usado o comando caractere

<lista_var> : caractere

<lista_var>pode ser formada por uma nica varivel ou uma lista de variveis separadas por vrgula. Ex.:

<variavel> <variavel>, <variavel>

40

Exemplo de varivel do tipo caractere


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

41

Tipos de dados lgicos

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:

.Falso. e .Verdadeiro. .F. e .V. .Sim. e .No. .S. e .N.

42

Tipos de dados lgicos: exerccio

Indique com um X os dados do tipo Lgico:


( ) -678 ( ) 0.87 ( ) -9.12 ( ) .Verdadeiro. ( ) -456 ( ) .V. ( ) Cinco ( ) .Falso. ( ) .F. ( ) -1.56

43

Tipos de dados lgicos: exerccio

Indique com um X os dados do tipo Lgico:


( ) -678 ( ) 0.87 ( ) -9.12 ( x ) .Verdadeiro. ( ) -456 ( x ) .V. ( ) Cinco ( x ) .Falso. ( x ) .F. ( ) -1.56

44

Sintaxe de tipos de dados lgico

Em portugus estruturado usado o comando lgico

<lista_var> : lgico

<lista_var>pode ser formada por uma nica varivel ou uma lista de variveis separadas por vrgula. Ex.:

<variavel> <variavel>, <variavel>

45

Sintaxe de tipos de dados lgicos: exemplo

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

Exemplo de varivel do tipo lgico


programa CALC_IMPOSTO var CPF: inteiro renda_anual: real imposto_pagar: real tem_filhos: logico incio escreva Informe o seu CPF: leia CPF escreva Informe a sua renda anual: leia renda_anual escreva Tem filhos (.V./.F.)? leia tem_filhos se (tem_filhos = .V.) ento imposto_pagar imposto_pagar - renda_anual*0.10 fim_se escreva O imposto a pagar eh, imposto_pagar fim

47

Exerccio: tipo de variveis

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

Constantes Expresses aritmticas Expresses relacionais Expresses Lgicas

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):

21 BOLA VERDADEIRO; 0.21 * 102 falso

Constantes: observaes

No livro do Manzano, no h definio de constante para o Portugus estruturado

Usa apenas constante como nmeros em expresses matemticas como total valor * 1.5

A depender da linguagem de programao a ser usada, necessrio declarar a constante

Pascal: usa const e depois uma lista com a sintaxe <identificador> = <valor>;
const

nome = Janne Oeiras Lachi; ano = 2011;

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:

X+Y 2 * nota A*B+C P

X-Y total/n soma2 F1 + G2 - H

Expresses Aritmticas: observaes

Deve-se observar as seguintes restries:

O operador de multiplicao no pode ser omitido


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

H prioridade entre as operaes:


Prioridade 1 2 3 Operao Potenciao, radiciao Multiplicao, diviso Adio, subtrao

Use parnteses para dar prioridade diferente das definidas acima.

Operadores: smbolos usados


Operador + / Div * Operao Atribuio Adio Subtrao Diviso Diviso (sem parte fracionria) Multiplicao Exponenciao

(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

K 1; COR VERDE; TESTE falso; A B; MEDIA SOMA/N; TOTAL (P + X2 + Y) (1/2 )

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

Expresses relacionais: exemplos

Seja o 2 valor de A e 5 o valor de B, temos que:


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

Expresses relacionais: exemplos

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

A <> B Nome = Joo B24*A*C<0 X=1


Ateno: aqui temos expresses escritas em Portugus estruturado e por essa razo o smbolo = significa igualdade. No confundir com a linguagem C, na qual o = significa atribuio.

13

Expresses relacionais: exemplos


X 1 4 2 3 Y VARIVEIS Z COR 5 AZUL 1 VERDE NOME RELAES COR = X 2+Y >Z
AZUL PAULO Falso NOME <> JOS

Verdadeiro Verdadeiro

JOS

Verdadeiro

Falso

Falso

1
1

1
2

2 BRANCO PEDRO Falso


1 AZUL
JOS Verdadeiro

Falso

Verdadeiro

Verdadeiro Falso

14

Expresses relacionais: exerccio


VARIVEIS A 3 5 2,5 B 16 64 9 Nome MIRIAM PEDRO ANA Profisso ADVOGADO MDICO PROFESSOR A+1 >= B RELAES NOME <> ANA PROFISSO = MDICO

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:

e: para a conjuno ou: para a disjuno no: para a negao

Uma proposio pode ser uma varivel lgica, uma relao ou expresso lgica composta

17

Operador e: conjuno

L-se p e q
pq

A conjuno de duas proposies verdadeira se e somente se ambas proposies so verdadeiras.

p V V F F

q V F V F

pq V F F F

18

Operador e: conjuno

Sejam as seguintes proposies:


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;

s: B <> 1, onde o contedo de B=2.

Qual ser o valor lgico (V ou F) das seguintes conjunes?


a) b) c) d) ps pr qs qr

19

Operador e: conjuno

Qual ser o valor lgico ( V ou F) das seguintes conjunes? a) p s


b) p r c) q s d) q r

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

Operador ou: disjuno

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

Operador ou: disjuno

Sejam as seguintes proposies:


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;

s: B <> 1, onde o contedo de B=2.

Qual ser o valor lgico ( V ou F) das seguintes conjunes?


a) b) c) d) ps pr qs qr

22

Operador ou: disjuno

Qual ser o valor lgico ( V ou F) das seguintes conjunes?


a) b) c) d) ps pr qs qr

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

Operador no: negao

L-se no p
p

a negao de p
p V F p F V

Exemplos:

p significa OK, que falso; r significa TESTE, que verdadeiro.

24

Prioridade

Prioridade 1 2 3 4 5 Aritmtico Relacional No E Ou

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)

X+Y>Z e NOME=Maria SIM ou Y>=X NOME= Jorge e SIM ou X 2 < Z+10

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:

A contm Bola e B contm Preta A|B o literal BolaPreta

Outras operaes: comprimento do literal, n primeiros e n ltimos caracteres do literal


27

Construo de algoritmos

Vejamos a construo de algoritmos para os dois problemas abaixo.


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. 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.

28

Construo de algoritmos: exemplo 1

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.

Escreva o corpo mnimo e d um nome para o seu algoritmo


programa DIVISAO incio fim

Note que foi dado o nome DIVISAO ao algoritmo.

29

Construo de algoritmos: exemplo 1

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.

programa DIVISAO var n1, n2, resultado: real incio

fim
30

Construo de algoritmos: exemplo 1

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

Construo de algoritmos: exemplo 1

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

Construo de algoritmos: exemplo 1

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

Diagrama de blocos: exemplo 1

Vamos usar os elementos geomtricos a cada passo.


programa DIVISAO

incio

incio
fim

fim

Corpo mnimo. Note que o diagrama no tem nome.

34

Diagrama de blocos: exemplo 1

No so declaradas variveis como no Portugus estruturado

programa DIVISAO var n1, n2, resultado: real incio fim

incio

fim

Continua com o corpo mnimo

35

Diagrama de blocos: exemplo 1

Vamos receber as entradas.

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

Diagrama de blocos: exemplo 1

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

Diagrama de blocos: exemplo 1

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

O resultado da divisao eh: , resultado

38

fim

Diagrama de Chapin: exemplo 1

Faamos uma tabela com 2 linhas

programa DIVISAO

incio
fim

Incio Fim

39

Diagrama de Chapin: exemplo 1

No so declaradas variveis como no Portugus estruturado


Incio Fim

programa DIVISAO var n1, n2, resultado: real incio fim

40

Diagrama de Chapin: exemplo 1

Vamos receber as entradas.

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

Diagrama de Chapin: exemplo 1

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

Diagrama de Chapin: exemplo 1

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

Escreva um algoritmo em:


Portugus estruturado Diagrama de Blocos Diagrama de Chapin

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

Comandos de entrada e sada: exerccio

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:

X0 leia N,A XX+A PN escreva P,X X X + A escreva X AX escreva N,X,A

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

Prof Claudia Tins Peviani


1

Plano de aula

O objetivo da aula entender e aplicar o teste de mesa a seus algoritmos em geral

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.

Como se faz o teste de mesa?

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

Exemplo de teste de mesa


1.
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.

Leia o algoritmo que foi escrito


programa CALC_CUSTO var qtd_caderno, qtd_caneta, qtd_borracha: inteiro custo: real

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

Exemplo de teste de mesa


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);
Variveis qtd_caderno qtd_caneta qtd_borracha custo Tela

Executando

N da linha 6 7 8 9 10 11 12
7

13

Exemplo de teste de mesa


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;
Variveis qtd_caderno qtd_caneta qtd_borracha custo Tela

Executando

N da linha 6 7 8 9 10 11 12
8

13

Exemplo de teste de mesa


Executando linha n 6

Executando

Variveis qtd_caderno qtd_caneta qtd_borracha custo Tela Qtde de caderno:

N da linha 6 7 8 9 10 11 12
9

13

Exemplo de teste de mesa


Executando linha n 7

Executando

Variveis qtd_caderno qtd_caneta qtd_borracha custo Tela Qtde de caderno: 15

N da linha 6 7 8 9 10 11 12
10

13

Exemplo de teste de mesa


Executando linha n 8

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

Exemplo de teste de mesa


Executando linha n 9

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

Exemplo de teste de mesa


Executando linha n 10

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

Exemplo de teste de mesa


Executando linha n 11

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

Exemplo de teste de mesa


Executando linha n 12

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

Exemplo de teste de mesa


Executando linha n 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

Exemplo de teste de mesa


5.

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

Outro exemplo de teste de mesa estrutura condicional


1. 2. 3. 4. 5. 6. 7. 8.

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

Outro exemplo de teste de mesa estrutura condicional mdia >= 7.0


Executando N da linha 7 8 9 11 15 16 NI N2 N3 Variveis N4 SOMA MEDIA RESULTADO

Tela

17
18 19 20

19

Outro exemplo de teste de mesa estrutura condicional mdia >= 7.0


Executando N da linha 7 8 9 11 15 16 NI 8.5 N2 7.5 N3 6.5 Variveis N4 7.5 SOMA MEDIA RESULTADO

Tela

17
18 19 20

20

Outro exemplo de teste de mesa estrutura condicional mdia >= 7.0


Executando N da linha 7 8 9 11 15 16 NI 8.5 N2 7.5 N3 6.5 Variveis N4 7.5 30 SOMA MEDIA RESULTADO

Tela

17
18 19 20

21

Outro exemplo de teste de mesa estrutura condicional mdia >= 7.0


Executando N da linha 7 8 9 11 15 16 NI 8.5 N2 7.5 N3 6.5 Variveis N4 7.5 30 7.5 SOMA MEDIA RESULTADO

Tela

17
18 19 20

22

Outro exemplo de teste de mesa estrutura condicional mdia >= 7.0


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);
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

Outro exemplo de teste de mesa estrutura condicional mdia >= 7.0


Executando N da linha 7 8 9 11 15 16 NI 8.5 N2 7.5 N3 6.5 Variveis N4 7.5 30 7.5 aprovado Nota 1: 8.5 SOMA MEDIA RESULTADO

Tela

17
18 19 20

24

Outro exemplo de teste de mesa estrutura condicional mdia >= 7.0


Executando N da linha 7 8 9 11 15 16 NI 8.5 N2 7.5 N3 6.5 Variveis N4 7.5 30 7.5 aprovado Nota 1: 8.5 Nota 2: 7.5 SOMA MEDIA RESULTADO

Tela

17
18 19 20

25

Outro exemplo de teste de mesa estrutura condicional mdia >= 7.0


Executando N da linha 7 8 9 11 15 16 NI 8.5 N2 7.5 N3 6.5 Variveis N4 7.5 30 7.5 aprovado Nota 1: 8.5 Nota 2: 7.5 SOMA MEDIA RESULTADO

Tela

17
18 19 20

Nota 3: 6.5

26

Outro exemplo de teste de mesa estrutura condicional mdia >= 7.0


Executando N da linha 7 8 9 11 15 16 NI 8.5 N2 7.5 N3 6.5 Variveis N4 7.5 30 7.5 aprovado Nota 1: 8.5 Nota 2: 7.5 SOMA MEDIA RESULTADO

Tela

17
18 19 20

Nota 3: 6.5
Nota 4: 7.5

27

Outro exemplo de teste de mesa estrutura condicional mdia >= 7.0


Executando N da linha 7 8 9 11 15 16 NI 8.5 N2 7.5 N3 6.5 Variveis N4 7.5 30 7.5 aprovado Nota 1: 8.5 Nota 2: 7.5 SOMA MEDIA RESULTADO

Tela

17
18 19 20

Nota 3: 6.5
Nota 4: 7.5 Mdia: 7.5

28

Outro exemplo de teste de mesa estrutura condicional mdia >= 7.0


Executando N da linha 7 8 9 11 15 16 NI 8.5 N2 7.5 N3 6.5 Variveis N4 7.5 30 7.5 aprovado Nota 1: 8.5 Nota 2: 7.5 SOMA MEDIA RESULTADO

Tela

17
18 19 20

Nota 3: 6.5
Nota 4: 7.5 Mdia: 7.5 Resultado: aprovado

29

Outro exemplo de teste de mesa estrutura condicional mdia < 7.0


Executando N da linha 7 8 9 13 15 16 NI N2 N3 Variveis N4 SOMA MEDIA RESULTADO

Tela

17
18 19 20

30

Outro exemplo de teste de mesa estrutura condicional mdia < 7.0


Executando N da linha 7 8 9 13 15 16 NI 6.0 N2 7.0 N3 6.0 Variveis N4 7.0 SOMA MEDIA RESULTADO

Tela

17
18 19 20

31

Outro exemplo de teste de mesa estrutura condicional mdia < 7.0


Executando N da linha 7 8 9 13 15 16 NI 6.0 N2 7.0 N3 6.0 Variveis N4 7.0 26 SOMA MEDIA RESULTADO

Tela

17
18 19 20

32

Outro exemplo de teste de mesa estrutura condicional mdia < 7.0


Executando N da linha 7 8 9 13 15 16 NI 6.0 N2 7.0 N3 6.0 Variveis N4 7.0 26 6.5 SOMA MEDIA RESULTADO

Tela

17
18 19 20

33

Outro exemplo de teste de mesa estrutura condicional mdia < 7.0


Executando N da linha 7 8 9 13 15 16 NI 6.0 N2 7.0 N3 6.0 Variveis N4 7.0 26 6.5 reprovado SOMA MEDIA RESULTADO

Tela

17
18 19 20

34

Outro exemplo de teste de mesa estrutura condicional mdia < 7.0


Executando N da linha 7 8 9 13 15 16 NI 6.0 N2 7.0 N3 6.0 Variveis N4 7.0 26 6.5 reprovado Nota 1: 6.0 SOMA MEDIA RESULTADO

Tela

17
18 19 20

35

Outro exemplo de teste de mesa estrutura condicional mdia < 7.0


Executando N da linha 7 8 9 13 15 16 NI 6.0 N2 7.0 N3 6.0 Variveis N4 7.0 26 6.5 reprovado Nota 1: 6.0 Nota 2: 7.0 SOMA MEDIA RESULTADO

Tela

17
18 19 20

36

Outro exemplo de teste de mesa estrutura condicional mdia < 7.0


Executando N da linha 7 8 9 13 15 16 NI 6.0 N2 7.0 N3 6.0 Variveis N4 7.0 26 6.5 reprovado Nota 1: 6.0 Nota 2: 7.0 SOMA MEDIA RESULTADO

Tela

17
18 19 20

Nota 3: 6.0

37

Outro exemplo de teste de mesa estrutura condicional mdia < 7.0


Executando N da linha 7 8 9 13 15 16 NI 6.0 N2 7.0 N3 6.0 Variveis N4 7.0 26 6.5 reprovado Nota 1: 6.0 Nota 2: 7.0 SOMA MEDIA RESULTADO

Tela

17
18 19 20

Nota 3: 6.0
Nota 4: 7.0

38

Outro exemplo de teste de mesa estrutura condicional mdia < 7.0


Executando N da linha 7 8 9 13 15 16 NI 6.0 N2 7.0 N3 6.0 Variveis N4 7.0 26 6.5 reprovado Nota 1: 6.0 Nota 2: 7.0 SOMA MEDIA RESULTADO

Tela

17
18 19 20

Nota 3: 6.0
Nota 4: 7.0 Mdia: 6.5

39

Outro exemplo de teste de mesa estrutura condicional mdia < 7.0


Executando N da linha 7 8 9 13 15 16 NI 6.0 N2 7.0 N3 6.0 Variveis N4 7.0 26 6.5 reprovado Nota 1: 6.0 Nota 2: 7.0 SOMA MEDIA RESULTADO

Tela

17
18 19 20

Nota 3: 6.0
Nota 4: 7.0 Mdia: 6.5 Resultado: reprovado

40

Vamos exercitar o conhecimento adquirido

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

Vamos exercitar o conhecimento adquirido

Faa um teste de mesa do diagrama de bloco abaixo:

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

O objetivo da aula estudar a tomada de deciso Veremos:


Desvio condicional simples Desvio condicional composto Desvio condicional encadeado

Desvio condicional

Usado quando devemos tomar uma deciso Por exemplo:

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.

Desvio condicional simples

Portugus estruturado utiliza a instruo:


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

Desvio condicional simples


Programa <nome> incio se <condio> ento . . . fim_se . . . fim

Comandos dentro do bloco se so executados caso a condio seja VERDADEIRA

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

Desvio condicional simples


Programa <nome> incio se <condio> ento . . . fim_se . . . fim

Comandos dentro do bloco se NO so executados caso a condio seja FALSA

Se a condio estabelecida for falsa, sero executadas as instrues definidas aps a instruo fim_se
6

Desvio condicional simples: exemplo


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.
programa SOMA_MAIOR_10 var x, y, SOMA: real incio escreva Informe dois nmeros reais: leia x,y SOMA x+y se (SOMA>10) ento escreva O valor da adio dos dois numeros eh:, SOMA fim_se fim

Se SOMA <=10, o algoritmo no produz nenhuma sada.


7

Desvio condicional simples

Estrutura em Diagrama de blocos:


N
Condio

Instrues executadas quando condio for verdadeira

Instrues executadas quando condio for falsa,ou aps ser verdadeira

Desvio condicional simples: exemplo


incio
Informe dois nmeros reais:

x,y SOMA x+y N Diagrama de blocos


SOMA>1 0

valor da adio dos dois numeros eh:, SOMA

fim

Desvio condicional simples

Estrutura em Diagrama de Chapin:

Condio

Sequncia de comandos

----

10

Desvio condicional simples: exemplo


Incio Escreva Informe dois nmeros reais:

Leia x, y
SOMA x+y

V Diagrama de Chapin

SOMA >10

Escreva O valor da adio dos dois numeros eh:, SOMA

----

Fim

11

Desvio condicional composto

Portugus estruturado utiliza a instruo:


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

Desvio condicional composto


Programa <nome> incio se <condio> ento . . . seno . . . fim_se . . . fim

Comandos dentro do bloco se so executados caso a condio seja VERDADEIRA

13

Desvio condicional composto


Programa <nome> incio se <condio> ento . . . seno . Comandos dentro do bloco seno so executados . . caso a condio seja FALSA fim_se . . . fim

14

Desvio condicional

Usado quando devemos tomar uma deciso Por exemplo:

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

Desvio condicional composto: exemplo


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
16

Desvio condicional composto: exemplo


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 (ALTURA1 < ALTURA2) escreva Pessoa mais alta:, NOME2 fim_se fim
17

Errado! No precisa incluir comparao aqui de novo.

Desvio condicional composto

Estrutura em Diagrama de blocos:

Condio

Instrues executadas quando condio for falsa

Instrues executadas quando condio for verdadeira

18

Desvio condicional composto

Estrutura em Diagrama de Chapin:

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

Desvios condicionais encadeados

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%

Desvio condicional encadeado

Sintaxe em Portugus estruturado

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

Desvio condicional encadeado

Estrutura em Diagrama de blocos:


N
Condio 1

Condio 2

Instrues executadas quando condio 1 for verdadeira

Instrues executadas quando condio 1 e condio 2 so falsas

Instrues executadas quando condio 1 falsa, mas condio 2 verdadeira

24

Desvio condicional encadeado

Estrutura em Diagrama de Chapin:


Condio 1 V F
Condio 2 Sequncia de comandos A

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%

Desvio condicional encadeado: exemplo

Em Portugus estruturado

Pense nas entradas e sadas:


Entrada: salrio Sada: novo salrio

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

Desvio condicional encadeado: exemplo

Vamos criar o corpo do algoritmo e dar um nome


programa REAJUSTA_SALARIO inicio

fim

28

Desvio condicional encadeado: exemplo

Vamos pensar nas entradas e sadas e os tipos de dados que elas representam

Entrada: salrio (real) Sada: novo salrio (real)


programa REAJUSTA_SALARIO var NOVO_SALARIO: real SALARIO: real inicio fim

29

Desvio condicional encadeado: exemplo

Vamos solicitar a entrada


programa REAJUSTA_SALARIO var NOVO_SALARIO: real SALARIO: real inicio escreva Informe o salario atual: leia SALARIO fim

30

Desvio condicional encadeado: exemplo

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

Desvio condicional encadeado: exemplo

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

Desvio condicional encadeado: exemplo

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

Desvio condicional encadeado: exemplo

Pensando na 3 condio: Se salrio > R$ 1.000,00 ento reajuste de 5%


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 fim

34

Desvio condicional encadeado: exemplo

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

Desvio condicional: exemplo

Uma resoluo que funciona, mas que no est adequada


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 fim_se se (SALARIO > 545 e SALARIO <=1000) ento NOVO_SALARIO SALARIO * 1.10 fim_se se (SALARIO > 1000) ento NOVO_SALARIO SALARIO * 1.05 fim_se escreva O novo salario eh:, NOVO_SALARIO fim
36

Qual a diferena desta soluo para a anterior?

Exerccio

Elabore o diagrama de blocos e o diagrama de Chapin para o algoritmo abaixo.


programa REAJUSTA_SALARIO var NOVO_SALARIO: real SALARIO: real inicio 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

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

Estudar estruturas de controle com mltipla escolha Veremos o comando caso...fim_caso

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

Exemplo: resolvendo com se

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

Ida e Volta R$900,00 R$650,00 R$600,00

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

Exemplo: resolvendo com se

Ida e Volta R$900,00 R$650,00

R$600,00
R$550,00

Sintaxe: Portugus estruturado


caso <varivel> seja <valor 1> faa <operao 1> seja <valor 2> faa <operao 2> . . . seja <valor n> faa <operao n> seno <operao> fim_caso

Exemplo: resolvendo com caso

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$500,00 R$900,00 R$350,00 R$650,00 R$350,00 R$600,00

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

Exemplo: resolvendo com se

Estrutura em Diagrama de blocos


S
Condio 1

Instrues 1

N
Condio 2

Instrues 2

N S
Condio n

Instrues N

N
Ao para nenhuma condio satisfeita

10

Estrutura em Diagrama de Chapin:

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.

Quais so os dados de entrada do problema?

Base e altura de 3 paredes (6 informaes no total) A quantidade de paredes cujas reas so maiores que 100m2

Quais so os dados de sada do problema?

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

Problema 1: resoluo (cont.)


contador 0 se AREA1 > 100 ento contador contador +1 fim_se se AREA2 > 100 ento contador contador +1 fim_se se AREA3 > 100 ento contador contador +1 fim_se escreva A quantidade de paredes com rea maior que 100 m2 : , contador

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

Quais so os dados de sada do problema?


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

Problema 2: resoluo (cont.)


contador 0 se PESO1 > 80 ento contador contador fim_se se PESO2 > 80 ento contador contador fim_se se PESO3 > 80 ento contador contador fim_se se PESO4 > 80 ento contador contador fim_se escreva A quantidade de +1

+1

+1

+1 pessoas com peso acima de 80Kg : , contador

MEDIA_IDADE (IDADE1 + IDADE2 + IDADE3 + IDADE4) / 4 escreva A mdia de idade : , MEDIA_IDADE


fim

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.

Quais so os dados de entrada do problema?

Sexo de 5 pessoas Altura de 5 pessoas

Quais so os dados de sada do problema?


Maior altura Mdia das alturas femininas 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

Problema 3: resoluo (cont.)


MAIOR_ALTURA ALTURA1 se MAIOR_ALTURA < ALTURA2 ento MAIOR_ALTURA ALTURA2 fim_se se MAIOR_ALTURA < ALTURA3 ento MAIOR_ALTURA ALTURA3 fim_se se MAIOR_ALTURA < ALTURA4 ento MAIOR_ALTURA ALTURA4 fim_se se MAIOR_ALTURA < ALTURA5 ento MAIOR_ALTURA ALTURA5 fim_se escreva A maior altura : , MAIOR_ALTURA

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

Problema 3: resoluo (cont.)


se SEXO3 = M ento contador contador +1 seno ALTURA_FEM ALTURA_FEM + ALTURA3 fim_se se SEXO4 = M ento contador contador +1 seno ALTURA_FEM ALTURA_FEM + ALTURA4 fim_se se SEXO5 = M ento contador contador +1 seno ALTURA_FEM ALTURA_FEM + ALTURA5 fim_se escreva A quantidade de homens : , contador se (5 contador) <> 0 ento escreva A mdia das alturas femininas : , ALTURA_FEM / (5 contador) seno escreva No h mulheres! fim_se fim 12

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:

Com um nmero definido de repeties; Com um nmero indefinido de repeties.

Com um nmero definido de repeties

Em Portugus estruturado usa os comandos:

para, de, at, passo, faa e fim_para

Sintaxe do comando:
para <varivel> de <valor inicial> at <valor final> passo <incremento> faa

<comando 1> <comando 2> ... <comando n>


fim_para

Exemplo 1: portugus estruturado

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.

Exemplo 1: soluo passo-a-passo

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 inicio

fim

Corpo mnimo do algoritmo

Exemplo 1: soluo passo-a-passo

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.

programa MULT_3 inicio

fim

Qual a entrada e qual a sada para este problema?

Exemplo 1: soluo passo-a-passo

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

fim

Vamos definir as variveis para entrada e sada do problema

Exemplo 1: soluo passo-a-passo

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

Vamos ler os dados do problema

Exemplo 1: soluo passo-a-passo

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.

Exemplo 1: soluo passo-a-passo

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

Exemplo 1: soluo passo-a-passo

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.

Exemplo 1: soluo passo-a-passo

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

Incluindo a repetio por 5 vezes

Exemplo 1: soluo passo-a-passo

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.

Exemplo 1: soluo passo-a-passo

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

Exemplo 1: soluo passo-a-passo

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

Exemplo 1: soluo passo-a-passo

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

Observao: h livros que omitem o passo quando ele tem valor 1.

Exemplo 1: soluo passo-a-passo

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

Exemplo 1: executando a soluo


1. programa MULT_3 2. var 3. n, resultado, I : inteiro 4. inicio 5. para I de 1 at 5 passo 1 faa 6. escreva Informe um nmero inteiro: 7. leia n 8. resultado n * 3 9. escreva resultado 10. fim_para 11.fim

Note o recuo nas linhas 6,7,8 e 9 porque esto dentro do bloco do para...fim_para

Exemplo 1: executando a soluo


Executando

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)

Exemplo 1: executando a soluo


Executando

Variveis
n resultado I 1 1
Informe um nmero inteiro:

N da linha 5 6 7 8

Tela

6. escreva Informe um nmero inteiro:

Exemplo 1: executando a soluo


Executando

Variveis
n resultado I 1 1 2 1
Informe um nmero inteiro:

N da linha 5 6 7 8

Tela

7. leia n

Exemplo 1: executando a soluo


Executando

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

Exemplo 1: executando a soluo


Executando

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

Exemplo 1: executando a soluo


Executando

Variveis
n 2 resultado 6 I 1 2 Tela

N da linha 5 6 7 8

5. para I de 1 at 5 passo 1 faa


Agora, a varivel I recebe o valor 2 (o segundo valor da faixa de valores estabelecido para o lao). Note que n continua com o ltimo valor lido na memria (2) e resultado com o ltimo resultado calculado at ento (6).

Exemplo 1: executando a soluo


Executando

Variveis
n 2 2 resultado 6 6 I 2 2
Informe um nmero inteiro:

N da linha 5 6 7 8

Tela

6. escreva Informe um nmero inteiro:

Exemplo 1: executando a soluo


Executando

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

Exemplo 1: executando a soluo


Executando

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

Exemplo 1: executando a soluo


Executando

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

Exemplo 1: portugus estruturado


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

Resposta: no comando para, basta trocar o nmero 5 por 20


programa MULT_3 var n, resultado, I : inteiro inicio para I de 1 at 20 passo 1 faa escreva Informe um nmero inteiro: leia n resultado n * 3 escreva resultado fim_para fim

Lao de repetio incondicional

Em Diagrama de Blocos:
Varivel incio, fim, incremento

Comandos executados durante o ciclo de contagem da varivel de controle

Exemplo 1: diagrama de blocos


programa MULT_3 var N, R, I : inteiro inicio para I de 1 at 5 passo 1 faa escreva Informe um nmero inteiro: leia N R N * 3 escreva R fim_para fim

Incio
I 1, 5, 1 Informe um nmero inteiro:

RNx3

Diagrama de Chapin, veja Araujo (2007)

R fim

Exemplo 2: diagrama de blocos


programa MULT_3 var N, R, I : inteiro inicio para I de 1 at 20 passo 1 faa escreva Informe um nmero inteiro: leia N R N * 3 escreva R fim_para fim

Incio
I 1, 20, 1 Informe um nmero inteiro:

RNx3

Diagrama de Chapin, veja Araujo (2007)

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.

Quais so os dados de entrada do problema?

Base e altura de 3 paredes (6 informaes no total) A quantidade de paredes cujas reas so maiores que 100m2

Quais so os dados de sada do problema?

35

Exemplo 3: resoluo SEM repetio


programa AREA var BASE1, BASE2, BASE3: real ALTURA1, ALTURA2, ALTURA3: real AREA1, AREA2, AREA3: real contador: inteiro inicio 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 36

Trecho que se repete

Trecho que se repete

Exemplo 3: resoluo SEM repetio


contador 0 se (AREA1 > 100) ento contador contador + 1 fim_se se (AREA2 > 100) ento contador contador + 1 fim_se se (AREA3 > 100) ento contador contador + 1 fim_se

(cont.)

Trecho que se repete

escreva A quantidade de paredes com rea maior que 100 m2 : , contador

fim

37

Exemplo 3: resoluo COM repetio


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

Exemplo 3: resoluo COM repetio


programa AREA var BASE, ALTURA, AREA: real contador: inteiro inicio contador 0
escreva Informe a base da 1. parede: leia BASE escreva Informe a altura da 1. parede: leia ALTURA AREA BASE * ALTURA se (AREA > 100) ento contador contador + 1 fim_se escreva A quantidade de paredes com rea maior que 100 m2 : , contador

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.

Exemplo 3: resoluo COM repetio


programa AREA var BASE, ALTURA, AREA: real contador, I: inteiro inicio contador 0 para I de 1 at 3 passo 1 faa escreva Informe a base da, I, parede: leia BASE escreva Informe a altura da , I, parede: leia ALTURA AREA BASE * ALTURA se (AREA > 100) ento contador contador + 1 fim_se fim_para escreva A quantidade de paredes com rea maior que 100 m2 : , contador

fim

40

Note que precisamos declarar a varivel I do tipo inteiro quando usamos o comando para...fim_para

Exemplo 3: resoluo COM repetio


programa AREA var BASE, ALTURA, AREA: real contador, I: inteiro inicio contador 0 para I de 1 at 3 passo 1 faa escreva Informe a base da, I, parede: leia BASE escreva Informe a altura da , I, parede: leia ALTURA AREA BASE * ALTURA
se (AREA > 100) ento contador contador + 1 fim_se fim_para escreva A quantidade de paredes com rea maior que 100 m2 : , contador fim

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

Exemplo 3: resoluo COM repetio


programa AREA var BASE, ALTURA, AREA: real contador, I: inteiro inicio contador 0 para I de 1 at 3 passo 1 faa escreva Informe a base da , I, parede: leia BASE escreva Informe a altura da , I, parede: leia ALTURA AREA BASE * ALTURA se (AREA > 100) ento contador contador + 1 fim_se fim_para escreva A quantidade de paredes com rea maior que 100 m2 : , contador

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:

Exemplo 3: resoluo COM repetio


programa AREA var BASE, ALTURA, AREA: real contador, I: inteiro inicio contador 0 para I de 1 at 3 passo 1 faa escreva Informe a base da , I, parede: leia BASE escreva Informe a altura da , I, parede: leia ALTURA AREA BASE * ALTURA
se (AREA > 100) ento contador contador + 1 fim_se fim_para escreva A quantidade de paredes com rea maior que 100 m2 : , contador fim

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.

Exemplo 4: uma soluo...

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

Exemplo 4: uma soluo...

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.

Exemplo 5: em ordem descrescente

H outros problemas que pedem para imprimir ou calcular valores em ordem descrescente

Apresente todos os nmeros pares no intervalo de 600 a 1.

Qual a entrada e qual a sada para este problema?

Exemplo 5: em ordem descrescente


Apresente todos os nmeros pares no intervalo de 600 a 1.

Qual a entrada e qual a sada para este problema?


No h entrada! O problema no pede para ler ou receber nada do usurio. Sada: todos os nmero pares entre 600 e 1

Exemplo 5: resolvendo o problema


Apresente todos os nmeros pares no intervalo de 600 a 1.

Pense na soluo para imprimir o 1 nmero par


programa IMPRESSAO_PARES inicio escreva 600

fim

Exemplo 5: resolvendo o problema


Apresente todos os nmeros pares no intervalo de 600 a 1.

Pense na soluo para imprimir o 2 nmero par


programa IMPRESSAO_PARES inicio escreva 600 escreva 558 fim

Exemplo 5: resolvendo o problema


Apresente todos os nmeros pares no intervalo de 600 a 1.

Pense na soluo para imprimir o 3 nmero par


programa IMPRESSAO_PARES inicio escreva 600 escreva 558 escreva 556 fim

Exemplo 5: resolvendo o problema


Apresente todos os nmeros pares no intervalo de 600 a 1.

Pense na soluo para imprimir o LTIMO nmero par


programa IMPRESSAO_PARES inicio escreva escreva escreva . . . escreva fim 600 558 556

Note que estamos decrementando de 2 unidades a cada impresso de nmero.

Sabemos que o ltimo nmero que deve ser impresso o 2.

Exemplo 5: resolvendo o problema


Apresente todos os nmeros pares no intervalo de 600 a 1.

Incluindo repetio
programa IMPRESSAO_PARES var I : inteiro inicio para I de 600 at 2 passo 2 faa escreva I fim_para fim

Nossa faixa de valores ento deve ir de 600 at 2

Exemplo 5: resolvendo o problema


Apresente todos os nmeros pares no intervalo de 600 a 1.

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

Repetio dentro de repetio

Considerando a sintaxe do comando:


para <varivel> de <valor inicial> at <valor final> passo <incremento> faa

<comando 1> <comando 2> ... <comando n>


fim_para

Note que podemos ter qualquer comando dentro do para...fim_para, inclusive OUTRO para...fim_para

para dentro de para

Considere o seguinte problema:

Um atleta est fazendo um treino e precisa fazer a seguinte sequncia de exerccios:


Trs voltas na Lagoa Rodrigo de Freitas A cada volta, ele deve parar e fazer cinco abdominais antes de prosseguir para a prxima volta.

para dentro de para

A sequncia de treino que o tcnico quer escrever para o atleta realizar :


1 volta 1 abdominal 2 abdominal 3 abdominal 4 abdominal 5 abdominal 2 volta 1 abdominal 2 abdominal 3 abdominal 4 abdominal 5 abdominal 3 volta 1 abdominal 2 abdominal 3 abdominal 4 abdominal 5 abdominal

Exemplo 6: para dentro de para

Podemos escrever o seguinte algoritmo para imprimir a sequncia de treino


programa TREINO var volta,abdominal : inteiro inicio para volta de 1 at 3 passo 1 faa escreva volta, volta para abdominal de 1 at 5 passo 1 faa escreva abdominal, abdominal fim_para fim_para fim

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.

Veja este outro problema:

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