Вы находитесь на странице: 1из 122

Lgica de Programao

Liluyoud Cury de Lacerda


Jos Marcio Benite Ramos
Sara Luize Oliveira Duarte

Cuiab-MT
2014

Presidncia da Repblica Federativa do Brasil


Ministrio da Educao
Secretaria de Educao Profissional e Tecnolgica
Diretoria de Integrao das Redes de Educao Profissional e Tecnolgica
Este caderno foi elaborado pelo Instituto Federal de Educao, Cincia e Tecnologia
de Rondnia-RO, para a Rede e-Tec Brasil, do Ministrio da Educao em parceria
com a Universidade Federal de Mato Grosso.
Equipe de Reviso

Instituto Federal de Educao, Cincia e


Tecnologia de Rondnia - IFRO

Universidade Federal de Mato Grosso


UFMT


Campus Porto Velho Zona Norte

Coordenao Institucional
Carlos Rinaldi

Direo-Geral
Miguel Fabrcio Zamberlan

Coordenao de Produo de Material


Didtico Impresso
Pedro Roberto Piloni

Direo de Administrao e Planejamento


Gilberto Laske
Departamento de Produo de EaD
Aridne Joseane Felix Quintela

Designer Educacional
Neusa Blasques
Ilustrao
Tatiane Hirata

Coordenao de Design Visual e Ambientes


de Aprendizagem
Rafael Nink de Carvalho

Diagramao
Tatiane Hirata

Coordenao da Rede e-Tec


Ruth Aparecida Viana da Silva

Reviso de Lngua Portuguesa


Vernica Hirata
Reviso Final
Neusa Blasques

Projeto Grfico
Rede e-Tec Brasil / UFMT
Lgica de Programao - Informtica para Internet

L131l

Lacerda, Liluyoud Cury de.


Lgica de programao /Liluyoud Cury de Lacerda, Jos Marcio Benite Ramos, Sara Luize
Oliveira Duarte. Cuiab: Ed.UFMT, 2014.
117 p.
Curso Tcnico Rede E- Tec. (IFRO)

1. Lgica - Informtica. 2. Algoritmos Informtica. I. Ttulo.


Ficha Catalogrfica Elaborada por Almira de Arajo Medeiros CRB1 2.327)

CDU 004.42

Apresentao Rede e-Tec Brasil


Prezado(a) estudante,
Bem-vindo(a) Rede e-Tec Brasil!
Voc faz parte de uma rede nacional de ensino que, por sua vez, constitui uma das aes do
Pronatec - Programa Nacional de Acesso ao Ensino Tcnico e Emprego. O Pronatec, institudo
pela Lei n 12.513/2011, tem como objetivo principal expandir, interiorizar e democratizar
a oferta de cursos de Educao Profissional e Tecnolgica (EPT) para a populao brasileira
propiciando caminho de acesso mais rpido ao emprego.
neste mbito que as aes da Rede e-Tec Brasil promovem a parceria entre a Secretaria de
Educao Profissional e Tecnolgica (Setec) e as instncias promotoras de ensino tcnico,
como os institutos federais, as secretarias de educao dos estados, as universidades, as escolas e colgios tecnolgicos e o Sistema S.
A educao a distncia no nosso pas, de dimenses continentais e grande diversidade regional e cultural, longe de distanciar, aproxima as pessoas ao garantir acesso educao
de qualidade e ao promover o fortalecimento da formao de jovens moradores de regies
distantes, geogrfica ou economicamente, dos grandes centros.
A Rede e-Tec Brasil leva diversos cursos tcnicos a todas as regies do pas, incentivando os
estudantes a concluir o ensino mdio e a realizar uma formao e atualizao contnuas. Os
cursos so ofertados pelas instituies de educao profissional e o atendimento ao estudante realizado tanto nas sedes das instituies quanto em suas unidades remotas, os polos.
Os parceiros da Rede e-Tec Brasil acreditam em uma educao profissional qualificada integradora do ensino mdio e da educao tcnica capaz de promover o cidado com capacidades para produzir, mas tambm com autonomia diante das diferentes dimenses da
realidade: cultural, social, familiar, esportiva, poltica e tica.
Ns acreditamos em voc!
Desejamos sucesso na sua formao profissional!
Ministrio da Educao
Abril de 2014
Nosso contato
etecbrasil@mec.gov.br

Rede e-Tec Brasil

Indicao de cones
Os cones so elementos grficos utilizados para ampliar as formas de
linguagem e facilitar a organizao e a leitura hipertextual.
Ateno: indica pontos de maior relevncia no texto.

Saiba mais: oferece novas informaes que enriquecem o


assunto ou curiosidades e notcias recentes relacionadas ao
tema estudado.
Glossrio: indica a definio de um termo, palavra ou expresso
utilizada no texto.
Mdias integradas: remete o tema para outras fontes: livros,
filmes, msicas, sites, programas de TV.
Atividades de aprendizagem: apresenta atividades em
diferentes nveis de aprendizagem para que o estudante possa
realiz-las e conferir o seu domnio do tema estudado.
Reflita: momento de uma pausa na leitura para refletir/escrever
sobre pontos importantes e/ou questionamentos.

Rede e-Tec Brasil

Contents

Apresentao Rede e-Tec Brasil

Indicao de cones

Apresentao da Disciplina

11

Sumrio

13

Aula 1. Lgica

15

1.1 O que lgica?

15

1.2 Lgica no dia a dia

16

1.3 Lgica na Informtica

17

Aula 2. Algoritmos

21

2.1 O que um algoritmo?

21

2.2 Tipos de algoritmos

22

Aula 3. Ferramentas de criao de



algoritmos
27
3.1 Introduo

27

3.2 Plataforma de estudo

28

Aula 4. Estrutura bsica de um



algoritmo
33
4.1 Introduo

33

4.2 Como definir um algoritmo

34

Aula 5. Variveis e tipos de dado

43

5.1 Introduo

43

5.2 Variveis

43

5.3 Tipos de dado

45

5.4 Sintaxe e exemplos de declarao

46

Palavra dos Professores-autores


Caro(a) estudante,
Voc est prestes a entrar em um mundo fantstico onde homens e mquinas interagem para resolver problemas que antes eram difceis e at mesmo
impossveis. Ele tem evoludo de maneira alucinante e alguns o consideram
mgico: o mundo das Tecnologias de Informao e Comunicao TICs,
ou, simplesmente, TI.
Tecnologias de Informao um termo abrangente que engloba vrias reas, e neste caderno vamos abordar uma das mais importantes, que a Programao.
A importncia dessa rea justificada pelo fato de a lgica de programao
ser a base de toda a informtica. Por meio dela os circuitos lgicos so programados, so criados os sistemas operacionais e todos os aplicativos que
usamos quando estamos em frente a qualquer dispositivo eletrnico, sejam
celulares, tablets, computadores e muitos outros.
Neste caderno sero abordados os conceitos bsicos da Lgica e da Linguagem de Programao, como fazer com que o computador execute os
comandos que desejamos para executar uma tarefa especfica e, principalmente, entender como todo esse processo.
A Lgica de Programao pode ser considerada como a porta de entrada
para esse mundo fantstico que permite uma profunda interao entre o homem e a mquina, no caso, o computador. Sendo assim, fica fcil entender
por que muitos ficam apaixonados e maravilhados com essa rea especfica
da informtica.
Bons estudos.
Professores-autores.

Rede e-Tec Brasil

Apresentao da Disciplina
A disciplina de Lgica de Programao compreende o fundamento terico e
prtico necessrio para desenvolver programas, apresentando as principais
estruturas de dados e de linguagem necessrias para a resoluo de problemas computacionais.
As aulas esto estruturadas de forma a capacit-lo(a) na construo de algoritmos e programas a partir do entendimento da lgica para resoluo de
problemas de complexidade limitada.
O objetivo da disciplina faz-lo(a) compreender os mecanismos lgicos e
matemticos da programao, relacionando problemas e elaborando solues atravs do uso de metodologias e ferramentas que envolvam os elementos bsicos da construo de algoritmos e programas de computador.
Para alcanar esse objetivo, a disciplina foi estrutura em dez aulas. A primeira aborda a lgica no dia a dia e na informtica. Na segunda, trataremos dos
algoritmos e as formas de represent-lo. Na terceira aula, mostraremos as
ferramentas usadas para a criao dos algoritmos. J na quarta aula, discorreremos sobre a estrutura bsica de um algoritmo, em pseudocdigo com
VisualG, e em Java com Eclipse. Na sequncia, veremos o conceito de variveis, sua nomenclatura e os tipos primitivos de dados. Na sexta aula, estudaremos os conceitos de operadores e expresses, como empregar operadores
aritmticos, relacionais e lgicos para criar expresses complexas e, finalmente, nas quatro ltimas aulas, trataremos das estruturas de sequncia,
deciso, seleo e repetio.
Por fim, podemos dizer que um programa nada mais do que instrues para
armazenar, processar e recuperar dados em computador, e as tcnicas usadas
para escrever essas instrues influi diretamente na qualidade do programa.
essencial que voc dedique uma parcela significativa de seu tempo para
assimilar todo o contedo abordado, pois esta disciplina a base para as
prximas disciplinas relacionadas a programao, e mais ainda, a porta de
entrada do mundo das Tecnologias de Informao e Comunicao.
Bons estudos!

11

Rede e-Tec Brasil

Rede e-Tec Brasil

12

Lgica de Programao

Sumrio
Aula 1. Lgica

15

1.1 O que lgica?

15

1.2 Lgica no dia a dia

16

1.3 Lgica na Informtica

17

Aula 2. Algoritmos

21

2.1 O que um algoritmo?

21

2.2 Tipos de algoritmos

22

Aula 3. Ferramentas de criao de algoritmos

27

3.1 Introduo

27

3.2 Plataforma de estudo

28

Aula 4. Estrutura bsica de um algoritmo

33

4.1 Introduo

33

4.2 Como definir um algoritmo

34

Aula 5. Variveis e tipos de dado

43

5.1 Introduo

43

5.2 Variveis

43

5.3 Tipos de dado

45

5.4 Sintaxe e exemplos de declarao

46

Aula 6. Operadores e expresses

51

6.1 Introduo

51

6.2 Operadores e expresses

52

6.3 Ordem de precedncia

55

Aula 7. Estruturas sequenciais

61

7.1 Introduo

61

7.2 Estrutura sequencial

62

7.3 Finalmente um algoritmo completo

67

13

Rede e-Tec Brasil

Aula 8. Estruturas de deciso


8.1 Introduo

71

8.2 Tipos de estruturas de deciso

71

Aula 9. Estruturas de seleo

Rede e-Tec Brasil

71

83

9.1 Introduo

83

9.2 Sintaxe do comando escolha

83

Aula 10. Estruturas de repetio

89

10.1 Introduo

89

10.2 Tipos de estrutura de repetio

90

10.3 Comparao entre as estruturas de repetio

99

Palavras Finais

101

Guia de Solues

102

Referncias

120

Obras Consultadas

120

Bibliografia Bsica

121

Currculo dos Professores-autores

122

14

Aula 1. Lgica

Objetivos:
conceituar raciocnio lgico;
diferenciar argumentos indutivos de argumentos dedutivos; e
utilizar lgica no desenvolvimento de programas.

Caro(a)estudante,
Usamos a razo e o senso comum, mesmo que intuitivamente, na execuo
das tarefas do dia a dia, seja nas tomadas de deciso ou na resoluo de problemas. No decorrer da aula, iremos apresentar os conceitos fundamentais
por trs dessa razo, que a partir de agora chamaremos de lgica. Veremos
tambm como aplic-la na resoluo de problemas computacionais.

1.1 O que lgica?


Segundo o dicionrio da Porto Editora, a palavra lgica originria da palavra grega logik, que significa a arte de raciocinar. Disponvel em: <http://
www.infopedia.pt/lingua-portuguesa/> Acesso em: 03 set. 2013.
A lgica pode ser obtida a partir do encadeamento regular ou coerente das
ideias e das coisas.
Em outras palavras, a lgica se preocupa com a maneira que os pensamentos e as ideias so organizados e apresentados, possibilitando-se concluir
algo por meio do encadeamento de argumentos.
Segundo Puga e Rissetti (2009), os argumentos podem ser dedutivos ou
indutivos. Os argumentos indutivos so aqueles que, a partir dos dados,
conduzem a uma resposta ou concluso por meio da analogia. Por exemplo:

Aula 1 - Lgica

15

Rede e-Tec Brasil

Na ltima prova estudei apenas duas horas e me dei bem.


Logo, se estudar duas horas para a prova de hoje, certamente me darei bem tambm.
Observe que esse tipo de raciocnio no d certeza de que o resultado ser
de fato o esperado.
Os argumentos dedutivos so aqueles cuja resposta obtida a partir de uma
sequncia de premissas, dadas pela anlise de situaes e fatos. Por exemplo:
O autor do livro um professor. O professor trabalha muito.
Logo, o autor do livro trabalha muito.
Podemos perceber, agora, que, a partir de uma srie de premissas (anlise de
fatos), podemos concluir algo verdadeiro.
O exemplo anterior identifica um silogismo que representa um argumento
composto por duas premissas e uma concluso. Estabelece uma relao em
que, mesmo que haja uma aparente coerncia no encadeamento lgico,
pode ou no ser vlida.

O filsofo grego Aristteles (384


a 322 a. C.), aluno de Plato,
considerado o criador da lgica,
mas ele no a chamava assim
-- chamava-a de razo. O termo
lgica s passou a ser utilizado
bem depois.

Ento, podemos dizer que o objetivo da lgica deduzir, analisar, formalizar


argumentos e verificar sua validade com base na razo.

1.2 Lgica no dia a dia


Faz parte da natureza humana analisar e executar aes passo a passo para
a realizao de suas atividades na maioria das vezes nem percebemos que
estamos pensando logicamente.
O ordenamento natural do pensamento para a execuo de uma tarefa
chamado de raciocnio lgico. Como exemplo, podemos citar:
Tarefa: vestir-se.
O armrio est fechado.
A roupa est dentro do armrio.
Primeiro preciso abrir o armrio para pegar a roupa.
Depois de pegar a roupa, posso me vestir.

Fonte: www.ahistoria.com.br

Rede e-Tec Brasil

16

Lgica de Programao

Perceba, que mesmo inconscientemente, tomamos decises e realizamos


aes seguindo uma ordem lgica para conseguir o que queremos. A capacidade humana de raciocinar logicamente que o tornou capaz de criar tantas
maravilhas com as quais convivemos hoje, inclusive o computador. Agora,
vamos nos ater ao estudo da lgica aplicada na informtica.

1.3 Lgica na Informtica


A lgica pode ser aplicada em qualquer cincia, tal como Filosofia, Psicologia, Sociologia, Matemtica, Fsica etc., mas o nosso foco como aplic-la
na Informtica, mas especificamente na construo de programas.
Os seres humanos tm a capacidade de expressar a lgica atravs da palavra
falada ou escrita, obedecendo s regras gramaticais da linguagem usada
no nosso caso, o portugus.
Entretanto, a linguagem natural pode ser um tanto cansativa, repetitiva, ambgua e suscetvel a diversas interpretaes e argumentaes informais e, por
esse motivo, faz-se necessria a criao de uma representao mais formal
da lgica.
Na formalizao da lgica, possvel trabalharmos com variveis, o que
possibilita aplicar o mesmo raciocnio lgico a problemas diferentes. Por
exemplo:
Joo passou no vestibular.
Todos que passam no vestibular so estudiosos.
Logo, Joo estudioso.
Substituindo Joo e estudioso, pelas variveis X e Y, temos que:
X passou no vestibular.
Todos que passam no vestibular so Y.
Logo, X Y.
Perceba que X e Y, por serem termos genricos, podem ser aplicados em
outros contextos:
Para X = Jos e Y = inteligente, temos:
Jos passou no vestibular.
Todos que passam no vestibular so inteligentes.
Logo, Jos inteligente.

Aula 1 -Lgica

17

Rede e-Tec Brasil

Ou,
Para X = Pedro e Y = sortudo, temos:
Pedro passou no vestibular.
Todos que passam no vestibular so sortudos.
Logo, Pedro sortudo.

O conceito de variveis ser amplamente discutido na Aula 5.


Para a resoluo de problemas computacionais, usamos esse tipo de raciocnio, em que informaes a serem analisadas so representadas por termos
genricos (variveis), os quais posteriormente sero substitudos por valores
especficos, possibilitando a resoluo de diversos problemas com a mesma
lgica.

Resumo
Voc teve o primeiro contato com os conceitos de lgica e constatou que ela
a base para a resoluo de problemas computacionais. Vimos, tambm,
que, para realizarmos uma atividade com sucesso (resoluo de um problema), executamos vrios passos de acordo com uma ordem, seguindo um
raciocnio lgico, raciocnio esse que pode ser representado formalmente
para resolver outros problemas semelhantes.

Atividades de aprendizagem
1. A partir do que leu nesta aula, explique com suas palavras a importncia
da lgica para a Informtica.
2. D um exemplo de um argumento indutivo cujo resultado verdadeiro e
de outro que seja falso.
3. D um exemplo de um argumento dedutivo diferente do que foi mostrado nesta aula.
4. De acordo com os silogismos a seguir, assinale a afirmao que apresente
uma concluso vlida:
I Gatos so mamferos. Mamferos no botam ovo. Logo:
a) Todos os mamferos so gatos.

Rede e-Tec Brasil

18

Lgica de Programao

b) Todos os gatos no botam ovo.


c) Os gatos tm mais de um filhote.
II Hexgonos so figuras que possuem ngulos. Temos uma figura que
no tem ngulo. Logo:
a) Essa figura pode ser uma linha.
b) Essa figura no um hexgono.
c) No possvel tirar concluses.
III Voc est dirigindo sua moto. Se frear rapidamente, um carro bater
em sua traseira. Se no frear rapidamente, voc atropelar uma senhora
que est atravessando a rua. Logo:
a) As senhoras no devem andar na rua.
b) O carro ou voc esto em alta velocidade.
c) O carro bater em sua traseira ou voc atropelar a senhora.
5. Trs senhoras: Dona Branca, Dona Rosa e Dona Violeta, passeavam pelo
parque, quando Dona Rosa disse:
No curioso que estejamos usando vestidos de cores branca, rosa e violeta, embora nenhuma de ns esteja usando um vestido de cor igual ao seu
prprio nome?
Uma simples coincidncia respondeu a senhora com vestido violeta.
Qual a cor do vestido de cada senhora?
6. Analise e descreva uma maneira de mover os discos do estado inicial para
o estado final, considerando que s possvel movimentar um disco por vez,
e em hiptese alguma um disco maior poder ficar sobre um menor.

Aula 1 -Lgica

19

Rede e-Tec Brasil

Estado inicial

Estado final

Fonte: autores

Caro(a) estudante,
Finalizamos a nossa primeira aula. Nela, trabalhamos conceitos importantes
para o entendimento das prximas. Esperamos que esteja motivado(a) para
seguir em frente. Dando continuidade aos estudos, na prxima aula trataremos de um assunto muito importante para a lgica de programao: os
algoritmos. Vamos l!

Rede e-Tec Brasil

20

Lgica de Programao

Aula 2. Algoritmos
Objetivos:
conceituar algoritmos;
identificar os trs tipos de algoritmos estudados, suas vantagens e desvantagens; e
escrever algoritmo nas formas de descrio narrativa, fluxograma e pseudocdigo.

Caro(a) estudante,
A base do desenvolvimento dos programas modernos o algoritmo. Nesta
aula, voc ir conhecer os principais conceitos relacionados a ele e ter a
oportunidade de aprender a resolver os mais diversos problemas computacionais. Para tanto, dever aprender a pensar de forma algortmica, isto ,
pensar em ordem, da maneira que vimos na aula anterior.

2.1 O que um algoritmo?


De acordo com Forbellone (2005), um algoritmo pode ser definido como
uma sequncia de passos que visam atingir um objetivo bem definido. Segundo o dicionrio Porto Editora, o sentido matemtico e lgico da palavra
algoritmo um conjunto de regras bem definidas para resolver um problema com um nmero finito de passos.
Os algoritmos so amplamente utilizados em disciplinas ligadas rea de
cincias exatas, por exemplo:
possvel descrever a resoluo de uma equao de 2 grau
(Bhaskara) em uma sequncia de passos que levam ao resultado esperado.
A descrio dessa resoluo de forma genrica o que chamamos de algoritmo.

Aula 2 - Algoritmos

21

Rede e-Tec Brasil

Geralmente, utilizamos o pensamento algortmico de maneira intuitiva. Por


exemplo, quando vamos trocar uma lmpada, que uma tarefa corriqueira
e sem muita dificuldade, necessrio que sigamos uma srie de passos para
atingir o objetivo, que poderia ser:
Passo 1: pegar uma escada.
Passo 2: colocar a escada perto da lmpada.
Passo 3: buscar uma lmpada nova.
Passo 4: subir a escada.
Passo 5: retirar a lmpada velha.
Passo 6: colocar a lmpada nova.
Passo 7: descer a escada.
Passo 8: jogar a lmpada velha no lixo.
Passo 9: guardar a escada.
Voc pode estar pensando agora: eu troco a lmpada de maneira diferente,
primeiro pego a lmpada nova para depois buscar a escada. Na maioria das
vezes, existem vrias maneiras de se chegar a um mesmo objetivo, isto ,
podem existir vrios algoritmos para solucionar o mesmo problema. O importante, nesse caso, que o algoritmo descreva os passos a serem seguidos
em cada uma das maneiras possveis.
Pea para um(a) amigo(a) descrever os passos que faz para trocar o pneu do
carro. Compare com os passos que voc faria e verifique se so iguais. bem
possvel que os algoritmos sejam diferentes.

2.2 Tipos de algoritmos


Um algoritmo nada mais do que uma linha de raciocnio lgico que pode
ser descrita de vrias maneiras, seja de forma textual, grfica e at mesmo
oralmente.
Apesar das diversas maneiras de se representar um algoritmo, segundo Ascencio e Campos (2005), os trs tipos mais utilizados so:
descrio narrativa;
fluxograma;
pseudocdigo.

Rede e-Tec Brasil

22

Lgica de Programao

2.2.1 Descrio narrativa


A descrio narrativa consiste em descrever a soluo do problema utilizando uma linguagem natural, como, por exemplo, a lngua portuguesa. Esse
foi o meio que usamos at agora para descrever nossos algoritmos.
Vantagens:
Muito simples de usar j que bem conhecida pela pessoa que analisa o
problema.
Desvantagens:
A linguagem natural abre espao para vrias interpretaes e tende a se
tornar prolixa.
Exemplo:
Vamos descrever o algoritmo que some dois nmeros.
Passo 1: receber o primeiro e segundo nmero.
Passo 2: somar os dois nmeros.
Passo 3: mostrar o resultado obtido na soma.

2.2.2 Fluxograma
O fluxograma uma representao grfica de um algoritmo. Utiliza alguns
smbolos pr-definidos, mostrados na Tabela 2.1, para identificar os passos a
serem seguidos para chegar ao resultado.
TABELA 2.1 - Conjunto de smbolos utilizados no fluxograma
Indica o incio e o fim do algoritmo.

Conecta os smbolos e indica o sentido do fluxo de dados.

Indica clculos e atribuies de valores.

Aula 2 - Algoritmos

23

Rede e-Tec Brasil

Representa entrada de dados.

Representa sada de dados.

Representa uma tomada de uma deciso.

Fonte: (ASCENCIO; CAMPOS, 2005)

Vantagens:
A lgica usada mais precisa no dando margem a mltiplas interpretaes,
e consequentemente, fica mais fcil a migrao do algoritmo para uma linguagem de programao real.
Desvantagens:
muito mais trabalhoso fazer um desenho do que simplesmente escrever,
mesmo considerando o auxlio de programas especializados. Alm disso, a
representao grfica dos algoritmos tende a ficar muito extensa e, consequentemente, mais difcil de ser analisada e modificada (imagine refazer
todo o desenho por causa de uma mudana na lgica).
Exemplo:
Vamos descrever o algoritmo que some dois
nmeros na forma de fluxograma:

Fonte: Autores.

Rede e-Tec Brasil

24

Lgica de Programao

2.2.3 Pseudocdigo
O pseudocdigo descreve a soluo de um problema algortmico de maneira
textual e por meio de regras predefinidas. Ele utiliza uma linguagem estruturada que lembra o Pascal, uma linguagem de programao que j foi muito
usada.
A palavra pseudocdigo significa falso cdigo. Alguns autores chamam
o pseudocdigo de portugus estruturado ou portugol, bem sugestivo,
j que podemos consider-lo como uma linguagem intermediria entre a
linguagem natural e a de programao.
Vantagens:
Alm de a sintaxe ser bem prxima da linguagem natural, a migrao de
um pseudocdigo para uma linguagem de programao quase que imediata.
Desvantagens:
Pseudocdigos, assim como linguagens de programao, possuem algumas
regras (mesmo que sejam bem mais simples do que a de uma linguagem de
programao completa). necessrio aprend-las e aplic-las corretamente.
Exemplo:
Vamos descrever um pseudocdigo que some dois nmeros:
ALGORITMO
DECLARE N1, N2, SOMA: NUMRICO;
ESCREVA Digite dois nmeros;
LEIA N1, N2;
SOMA N1 + N2;
ESCREVA O resultado da soma igual a: , SOMA;
FIM_ALGORITMO.

Resumo
No desenvolvimento desta aula, voc teve a oportunidade de aprender o
que um algoritmo. Discorremos sobre os tipos de algoritmo. Os trs mais
utilizados so a descrio narrativa, o fluxograma e o pseudocdigo. Mostramos tambm as vantagens e as desvantagens de cada um desses algoritmos.
Esperamos que voc esteja apto a escrev-los ou desenh-los, mesmo sem

Aula 2 - Algoritmos

25

Rede e-Tec Brasil

ter conhecimento sobre todos os recursos e regras existentes.


Agora hora de praticar. Vamos l!

Atividades de aprendizagem
1. Descreva qual a principal funo dos algoritmos.
2. Faa um algoritmo na forma de descrio narrativa que descreva os
passos de uma pessoa para abrir um documento do Word armazenado no
seu e-mail.
3. Faa um algoritmo na forma de fluxograma que mostre o salrio total de
um funcionrio, dado o salrio que ele recebe, o nmero de filhos que possui
e sabendo que, para cada filho, ele recebe uma ajuda de custo de R$ 32.
4. Faa um algoritmo na forma de pseudocdigo que calcule o cubo de
um determinado nmero informado.
Caro(a) estudante,
Esperamos que tenha achado interessante o estudo dos algoritmos, pois
eles facilitam muito a soluo de alguns problemas. Vamos continuar? Ainda
temos muito assunto legal para estudar. Na prxima aula, abordaremos as
ferramentas de criao de algoritmos.

Rede e-Tec Brasil

26

Lgica de Programao

Aula 3. Ferramentas de criao de


algoritmos
Objetivos:
identificar os comandos de entrada, processamento e sada de
dados; e
desenvolver algoritmos com pseudocdigos/VisualG e Java/
Eclipse.

Caro(a) estudante,
Atualmente existem centenas, seno milhares de programas especializados
em criar outros programas. Eles so chamados de ambiente integrados de
desenvolvimento (do ingls: Integrated Development Environment IDE).
Iremos utilizar em nossas aulas uma ferramenta bem simples, o VisualG,
que no chega a ser uma IDE completa, mas o suficiente para aprender e
exercitar a criao de algoritmos.
Veremos que, para cada exemplo dado em VisualG, teremos o equivalente
em Java, que uma linguagem de programao completa e tem vrias IDEs
profissionais que do suporte a essa linguagem.

3.1 Introduo
Qualquer dispositivo eletrnico que manipula informaes, seja de pequeno
porte, como um celular; de mdio porte, como um computador desktop; ou
de grande porte, como os servidores de datacenters, todos eles executam
basicamente trs aes:
entrada de dados;
processamento de dados;
sada de dados.

Aula 3 - Ferramentas de criao de algoritmos

27

Rede e-Tec Brasil

Como esses dispositivos so controlados essencialmente por algoritmos especficos para cada cenrio ou funo, podemos dizer que um algoritmo
composto por comandos de entrada de dados, comandos de processamento
de dados e comandos de sada de dados.
Mas o que seria, na prtica, entrada, processamento e sada de dados?
Entrada de dados quando o computador recebe dados do mundo
externo, como, por exemplo, do teclado, do microfone, da webcam ou
de muitos outros. O algoritmo armazena essas informaes na memria
para posterior processamento.
Processamento de dados o momento em que o algoritmo que est
rodando em um computador recebe os dados e os transforma de acordo
com uma lgica predefinida, gerando, assim, algum tipo de informao que pode ser utilizado posteriormente, tanto pelo prprio algoritmo
quanto pelo mundo externo.
Sada de dados quando o computador envia os dados resultantes do
processamento de dados para o mundo externo. O computador pode
enviar essa informao de diversas maneiras, tais como mostrar no monitor, imprimir no papel, enviar o udio pela caixa de som, gravar no disco
rgido, entre muitos outros.
Em resumo, o algoritmo uma sequncia de passos para se chegar a um
objetivo, sendo que esses passos, quando executados em um computador,
podem ser chamados de comandos ou instrues, os quais podem ser de
entrada, processamento ou sada de dados.
Agora que sabemos o suficiente acerca de algoritmos, vem a pergunta:
como cri-los de maneira eficiente?

3.2 Plataforma de estudo


Foi visto na aula anterior que podemos representar um algoritmo de vrias
maneiras diferentes, mas, no decorrer de nossas aulas, vamos adotar duas:
pseudocdigo; e
linguagem de programao Java.

Rede e-Tec Brasil

28

Lgica de Programao

A justificativa para essas escolhas que o pseudocdigo possui a sintaxe


mais amigvel para principiantes, e o Java , hoje, um padro de programao no mercado.

3.2.1 Desenvolvendo algoritmos com



pseudocdigos e VisualG
Para desenvolver pseudocdigos, basta um papel, um lpis e muita lgica
de programao. Entretanto, no possvel executar esse pseudocdigo,
dificultando, assim, testar a lgica usada.

Alm do Java, outras


linguagens de programao
so bastante usadas. Podemos
citar o C# e Visual Basic para
desenvolvimento com produtos
Microsoft e Web, e o PHP,
especfico para desenvolvimento
para Web. Outro padro que est
em constante transformao e
hoje j capaz de desenvolver
aplicaes completas na Web o
HTML 5 + CSS 3 e Javascript.

Uma alternativa usar um programa desenvolvido no Brasil que usa a lngua


portuguesa para descrever o pseudocdigo, que o VisualG.
O VisualG roda no sistema
operacional Windows XP ou
posterior (inclusive no Windows
8). Para baix-lo, basta digitar
VisualG 2.5 no Google e baixar
as verses disponveis. Entre elas
temos:
http://www.guanabara.
info/2007/09/visualg-v25/
http://www.ifro.br/downloads/
visualgv25.exe

Esta a janela do VisualG

Figura 3.1 - Janela do VisualG


Fonte: Autores.

A interface do VisualG bem intuitiva e permite a voc criar algoritmos de


maneira bem simples e direta. Vamos descrever alguns de seus itens.
Menu de comandos tem todas as opes disponveis no programa,
desde salvar e recuperar algoritmos at execut-los e test-los.

Aula 3 - Ferramentas de criao de algoritmos

29

Rede e-Tec Brasil

Para conhecer mais sobre o


VisualG, assista ao vdeo:
http://www.youtube.com/
watch?v=sU17rbKEPUA
Ou leia o manual do VisualG do
Professor Arley Rodrigues:
http://www.facom.ufu.
br/~claudio/Cursos/PP/Docs/
Visualg2.pdf

Botes de atalho como o prprio nome j diz, so atalhos para os


principais comandos do menu.
rea de trabalho o local onde escrevemos nossos algoritmos em
pseudocdigo/portugol.
Janela de variveis mostra todas as variveis que esto sendo usadas
no algoritmo.
Janela de execuo serve para mostrar a sada do sistema.

3.2.2 Desenvolvendo algoritmos com Java e



Eclipse

Recomendamos que use o


Eclipse, uma IDE que permite
o desenvolvimento rpido
de aplicaes (RAD - Rapid
Application Development) em
Java.
O Eclipse a IDE Java mais
usada e tambm gratuita. Voc
pode baix-la em:
http://www.eclipse.org/
downloads/

Ao se criar um algoritmo para solucionar determinado problema, o objetivo


poder aplic-lo na vida real, em situaes reais. Para tanto, faz-se necessrio transcrever o algoritmo para uma linguagem de programao completa.
A linguagem escolhida para este caderno o pseudocdigo com VisualG,
mas o Java, embora mais complexo, o mais usado e apresenta muitos detalhes que, por si ss, j dariam um livro (na verdade existem inmeros livros
dedicados linguagem Java). Por isso, iremos mostrar apenas o necessrio
para que consigamos transcrever nossos algoritmos de VisualG para o Java.
Esta a janela do Eclipse

Figura 3.2 - Janela do Eclipse


Fonte: Autores.

Rede e-Tec Brasil

30

Lgica de Programao

Perceba que a interface do Eclipse bem mais complexa, com muitas opes e janelas, isso porque o Eclipse uma ferramenta de uso profissional
que permite desde a criao de programas bem simples at programas para
Web, celulares, tablets e muitos outros.
A priori, para voc conseguir trabalhar com o Eclipse, vamos descrever apenas algumas reas do mesmo:
Menu de comandos tem todas as opes disponveis no programa,
desde salvar e recuperar projetos em Java at execut-los e test-los.
Botes de atalho como o prprio nome j diz, so atalhos para os
principais comandos do menu.

Para conhecer mais sobre o


Eclipse, assista ao vdeo:
http://www.youtube.com/
watch?v=Vf1AiGlaRQQ

rea de trabalho o local onde escrevemos os programas em Java.


Explorador de arquivos permite gerenciar todos os arquivos que fazem parte do meu projeto de software (isso mesmo, um programa em
Java pode ser composto por vrios arquivos).
Janela de execuo serve para mostrar a sada do sistema. usualmente chamado de console ou output.
Para cada problema dado, a partir de agora vamos resolv-los de duas formas, com as dobradinhas VisualG/pseudocdigo e Eclipse/Java.

Resumo
No decorrer da aula, tratamos das ferramentas que iremos usar para criar
nossos algoritmos ao longo da disciplina. Desenvolvemos algoritmos com
pseudocdigos usando o visual G e em Java com o Eclipse, uma ferramenta
de uso profissional que permite desde a criao de programas bem simples
at os mais complexos.
Agora, vamos s atividades.

Atividades de aprendizagem
1. Alm das IDEs citadas na aula, pesquise mais quatro usadas para programao e identifique as linguagens que elas utilizam.
2. Instale as IDEs citadas nesta aula e escreva um algoritmo em cada uma

Aula 3 - Ferramentas de criao de algoritmos

31

Rede e-Tec Brasil

delas (pode ser uma variao dos que foram utilizados como exemplo).
3. Salve e recupere os algoritmos criados no exerccio anterior. Analise as
estruturas das pastas e dos arquivos criados por cada uma das plataformas
(pseudocdigo com VisualG e Java com Eclipse).
4. D sua opinio sobre escrever algoritmos em pseudocdigos e em uma
linguagem de programao verdadeira. Discorra sobre sua experincia nas
atividades anteriores.
Caro(a) estudante,
Ento, gostou do VisualG e do Eclipse? Com esses dois programas, voc ir
fazer coisas incrveis. Na Aula 4, mostraremos as estruturas bsicas de um
algoritmo. Continue estudando com afinco nossas aulas. At a prxima!

Rede e-Tec Brasil

32

Lgica de Programao

Aula 4. Estrutura bsica de um


algoritmo

Objetivo:
criar uma estrutura bsica para desenvolver um algoritmo em
pseudocdigo e um algoritmo em Java.

Caro(a) estudante,
A partir de agora, vamos comear a criar nossos prprios algoritmos, espao
onde acontece toda a mgica do mundo da programao. Mas precisamos
primeiramente entender como funciona a estrutura bsica do mesmo, que
muito simples e fcil, para depois test-los nos ambientes integrados de
desenvolvimentos vistos na aula passada.

4.1 Introduo
Os algoritmos so feitos para serem executados por mquinas, e sabemos
que as mquinas ainda esto muito longe de ter uma inteligncia comparada do ser humano.
Voc, ao estabelecer uma conversa com outra pessoa, usando a lngua portuguesa, pode no seguir todas as regras gramaticais que ela exige, mas,
mesmo assim, o dilogo acontece.
Veja o exemplo:

E a, Joo, tudo em riba?


Cara, tudo na boa.
Quando ns vai jogar aquela pelada?
Mano, vamu marcar nesse fim de semana agora com a turma.
Nesse exemplo de comunicao entre duas pessoas, mesmo com os inmeros erros (grias, concordncia, abreviaes etc.), o dilogo aconteceu, isto ,
os dois se entenderam.

Aula 4 - Estrutura bsica de um algoritmo

33

Rede e-Tec Brasil

O algoritmo uma maneira de se falar com o computador, mas, nessa


comunicao, um provido de inteligncia (o ser humano, no caso, o programador) e o outro... bem, vamos dizer que ainda no temos um HAL 9000
nossa disposio.
por isso que essa comunicao deve ser bem definida, sem erros, em uma
linguagem bem limitada e simples (poucas regras, pequeno vocabulrio).
Cada linguagem de programao tem suas prprias regras e seu prprio
vocabulrio, mas elas, em sua maioria, so muito semelhantes.
Na comunicao com o computador, isto , na criao do algoritmo, se voc
errar uma nica palavra, usar uma estrutura errada ou at mesmo esquecer
uma vrgula, o computador no vai entender, gerando erros na hora de compilar (traduzir do cdigo-fonte para o cdigo que a mquina entende) ou na
hora de executar.
Por essa razo, nesta aula, vamos explicar detalhadamente essa estrutura
de comunicao com o computador, que, como j dissemos antes, por ser
limitada e simples, fica fcil de aprender s no se esquecer dos detalhes.

4.2 Como definir um algoritmo


Um algoritmo mnimo tem pelo menos um nome, uma descrio, a identificao do incio e do fim do mesmo e, lgico, um comando (um passo a ser
executado), pelo menos.

4.2.1 Nomenclatura de algoritmos


Para criar um algoritmo precisamos saber o seu objetivo e, a partir deste,
damos-lhe um nome. Se vamos criar um algoritmo para calcular a mdia,
poderamos chamar o algoritmo de Calcular Mdia.
Mas existe um problema com o nome Calcular Mdia: ele no segue os
padres internacionais de nomenclatura de smbolos para linguagens de
programao. Nesse padro, recomenda-se:
No usar espao na definio dos nomes;
No usar caracteres especiais, tais como: ! ? $ # * & - / e outros;
Usar apenas letras e nmeros;

Rede e-Tec Brasil

34

Lgica de Programao

No iniciar o nome com um nmero;


Evitar uso de acentos e cedilhas.
A seguir temos alguns exemplos de nomes de algoritmos vlidos e no vlidos:
TABELA 4.1 - Exemplos de nomes de algoritmos
Objetivo do algoritmo

Nome no vlido

Nome vlido

Calcular mdia das notas

Calcular mdia

CalcularMedia

Verificar a maior nota

Verificar maior nota

VerificarMaiorNota

Verificar endereo

Verificar-Endereo

VerificarEndereco

Somar dois nmeros

2NmerosSoma

Soma2Numeros

Calcular $ da venda

Calcular$Venda

CalcularValorVenda

Mostrar Al Mundo na tela

AlMundo

AloMundo

Fonte: Autores.

A sintaxe usada pelo pseudocdigo e pelo Java para definir o nome de um


algoritmo foi visto nas figuras 3.1 e 3.2, respectivamente, mas vamos rev-los lado a lado agora:
TABELA 4.2 - Definindo o nome do algoritmo
Pseudocdigo

Java

algoritmo "AloMundo"

public class AloMundo

Fonte: Autores.

4.2.2 Escopo de um algoritmo


Todo algoritmo tem incio e fim. Para identificar essas partes, usamos palavras ou smbolos. O conceito de escopo vem justamente da necessidade de
delimitar o intervalo em que determinadas informaes processadas pelo
algoritmo so vlidas.
A seguir, temos um exemplo de definio do escopo de um algoritmo (o
incio e o fim dele) tanto em pseudocdigo quanto em Java.
TABELA 4.3 - Definindo o incio e o fim do algoritmo

Pseudocdigo
algoritmo "AloMundo"
inicio
fimalgoritmo

Fonte: Autores.

Escopo do
algoritmo

Aula 4 - Estrutura bsica de um algoritmo

Java
public class AloMundo
{
}

Escopo do
algoritmo

35

Rede e-Tec Brasil

Em algoritmos, muito comum


haver estruturas de programao
dentro de outras estruturas.
Assim como o algoritmo em
si tem um escopo (um espao
vlido), cada estrutura existente
no algoritmo tambm pode
ter seu prprio escopo. Nesse
caso, informaes tratadas
em um escopo mais interno,
a priori, no sero acessveis
pelo externo. Esse conceito
mais abrangente de escopo ser
tratado nas prximas aulas.

Perceba que no pseudocdigo est explcita a delimitao do incio e do fim


do algoritmo. J em Java foram usadas as chaves para definir o escopo.

4.2.3 Comandos ou instrues


Comandos ou instrues so mecanismos usados para dizer ao computador
o que deve ser feito. Cada instruo dada um passo sendo executado dentro do algoritmo, e os mesmos devem estar em ordem, da primeira instruo
at a ltima, quando o objetivo do algoritmo deve ser alcanado.
Os comandos devem estar dentro do escopo do algoritmo no caso do
pseudocdigo, entre as palavras inicio e fimalgoritmo, e, no caso do
Java, entre as chaves { }. A seguir, temos um exemplo de um comando de
sada:
TABELA 4.4 - Inserindo comandos no algoritmo
Pseudocdigo
Algoritmo AloMundo
inicio
Escreva(Al mundo!)
Fimalgoritmo

Java
public class AloMundo
{
public static void main(String[] args)
{
System.out.print(Al mundo!);
}
}

Fonte: Autores.

Perceba que o equivalente instruo Escreva() do pseudocdigo o


System.out.print() no Java. Alm disso, verifica-se que ambos usam os
parnteses ( ) ao final do comando: isso denota a execuo de uma funo
dentro da linguagem de programao.
No pseudocdigo, cada instruo fica em uma linha. J no Java, o final da
instruo delimitado por ponto e vrgula, sendo assim, podemos ter mais
de uma instruo em uma mesma linha, desde que separadas por esse sinal.
importantssimo destacar um detalhe na linguagem Java: observe que temos duas estruturas no cdigo apresentado:
public class AloMundo
public static void main(String[] args)

Rede e-Tec Brasil

36

Lgica de Programao

A primeira define o nome classe, mas esse conceito de classe s ser visto
na disciplina de Programao Orientada a Objetos. Neste momento, vamos
entender que seja apenas a identificao do programa, no caso AloMundo.
A segunda estrutura um mtodo cujo conceito tambm ser abordado
a fundo somente em Orientao a Objetos. Neste momento, vamos considerar como sendo um subprograma, isto , um programa dentro de outro
programa.
Ento, no programa AloMundo em Java, mostrado na Tabela 4.4, temos um
subprograma chamado main (principal, em ingls) interno a ele e dois escopos distintos, j que ambos tm um incio e fim (delimitados por { }).
considerada uma boa prtica de programao que, ao se definir um escopo interno a outro, como aconteceu no exemplo, dar um espaamento direita (3 espaos ou mais) para deixar explcito que a estrutura main pertence
ao escopo de class. Isso o que chamamos de indentao:
TABELA 4.5 - Escopos e indentao em um cdigo Java

public class AloMundo


Indentao
{
public static void main(String[] args)
{
System.out.print("Al mundo!");
}
}

Escopo do
programa
AloMundo

Escopo do
subprograma
Main

Fonte: Autores.

4.2.4 Comentrios
Imagine que voc tenha desenvolvido um algoritmo bem complexo h um
ano, e, por acaso, voc precisa us-lo para resolver outro problema. Se o algoritmo no estiver documentado, voc certamente ter um trabalho enorme em compreend-lo novamente, perdendo assim um tempo precioso.
Mas, caso voc o tenha documentado, ser possvel identificar o que ele faz,
as estruturas de programao que foram usadas e o porqu, entre muitas
outras informaes teis acerca dele, de suas alteraes (histrico) e dos
autores do mesmo.
Uma das maneiras mais simples (mas no a nica) de documentar seu c-

Aula 4 - Estrutura bsica de um algoritmo

37

Rede e-Tec Brasil

digo usando comentrios, possibilitando assim um melhor entendimento


do algoritmo implementado.
Podemos usar comentrios para:
Identificar o responsvel e data de criao daquele cdigo.
Identificar todas as alteraes feitas no cdigo, seus responsveis e datas
de alterao.
Identificar o objetivo daquele cdigo.
Explicar de maneira mais fcil a lgica de seu algoritmo.
Entre muitos outros, inclusive para a documentao profissional de seu
cdigo-fonte atravs de marcadores especficos.
Existem trs tipos de comentrios:
Comentrios de uma linha: texto antecedido por // vira comentrio de
uma nica linha.
Comentrios de muitas linhas: este tipo de comentrio no existe em
pseudocdigos, s em linguagens de programao. Em pseudocdigo
voc pode criar comentrios com muitas linhas de cdigo desde que
cada linha tenha o marcador // na frente. No Java, todo o texto delimitado por /* */ se transforma em um comentrio de muitas linhas.
Comentrios de documentao de cdigo: este tipo de comentrio
no existe em pseudocdigos, s em linguagens de programao. No
Java, todo o texto delimitado por /** */, se transforma em uma documentao de cdigo.
Os comentrios so ignorados na hora de executar o algoritmo, por isso
voc pode usar vontade. Apenas tenha cuidado em no abusar deles, o
que, em vez de ajudar, pode contaminar o seu cdigo com muitas informaes inteis.
Para mostrar a funcionalidade da documentao de seu cdigo, vamos inserir esses trs tipos de comentrio no algoritmo AloMundo:

Rede e-Tec Brasil

38

Lgica de Programao

TABELA 4.6 - Comentrios em pseudocdigo


Pseudocdigo
Algoritmo "AloMundo"
// Funo : Apresentar o VisualG
// Autor :Liluyoud Cury de Lacerda e Outros
// Data : 14/02/2013
// Seo de Declaraes
Inicio
// Essa funo escreve Al mundo na tela do computador
Escreva("Al mundo!")
Fimalgoritmo

Fonte: Autores.

TABELA 4.7 - Comentrios em Java


Pseudocdigo
/**
* Esse programa tem como funo apresentar os comentrios em Java
* @Author: Liluyoud Cury de Lacerda
* @Version: 1.0
*/
public class AloMundo
{
/* O mtodo main cria um ponto inicial de execuo
para o cdigo em java. */
public static void main(String[] args)
{
// O mtodo main cria um ponto inicial de execuo
System.out.print("Al mundo!");
}
}

Fonte: Autores.

Como foi dito antes, o pseudocdigo s usa um tipo de estrutura de comentrios, o //, mas o Java apresenta trs tipos, com finalidades distintas, o //, /*
*/e o /** */.
Em relao s cores usadas pelos comentrios, que so diferentes no VisualG
(verde) e no Eclipse (cinza), apenas a maneira como o ambiente integrado
de desenvolvimento trata determinados tipos de estruturas dentro do cdigo. Esse tipo de configurao pode ser mudado pelo programador.

Resumo
Voc acaba de adquirir novos conhecimentos, pois, nesta aula, apontamos
como definir um algoritmo. Vimos que, para criar um algoritmo, precisamos
dar um nome a ele dependendo do seu objetivo, e que esse nome deve estar
de acordo com os padres internacionais de nomenclatura de smbolos para

Aula 4 - Estrutura bsica de um algoritmo

39

Rede e-Tec Brasil

linguagens de programao. Discorremos sobre esses padres. Abordamos


o escopo, isto , o espao entre o incio e fim de um algoritmo. Mostramos,
na tabela 4.3, o escopo de um algoritmo em pseudocdigo e em Java. Na
sequncia, tratamos dos comandos, instrues dadas ao computador para
serem executadas, as quais devem estar inseridas no escopo. Apontamos
tambm como documentar o algoritmo, ou seja, inserir informaes teis,
tais como o que ele faz, as estruturas de programao que foram usadas,
suas alteraes (histrico) e o nome de seus(suas) autores(as), o que facilitar
caso venhamos a utiliz-lo para resolver outro problema. Enfim, mostramos
como criar uma estrutura para desenvolver um algoritmo bsico tanto em
pseudocdigo com VisualG, quanto em Java com Eclipse.

Atividades de aprendizagem
1. Crie um algoritmo que fornea a seguinte sada na tela do computador
(seria interessante para seu aprendizado, criar o algoritmo tanto em pseudocdigo quanto em Java):

+----------------------------------+
| Programa Al Mundo
|
+----------------------------------+
| Seja bem-vindo ao maravilhoso
|
| mundo da programao.
|
|
|
| Aproveite!!!
|
+----------------------------------+
2. Documente o cdigo criado acima usando comentrios.
3. Baseado(a) nas funes de algoritmos descritas abaixo, determine o possvel nome para cada um deles:
Funo do algoritmo

Nome

Transformar dlar em real


Calcular o ndice de massa corporal de uma pessoa
Calcular a rea de um tringulo
Efetuar um saque na conta-corrente

4. Crie um algoritmo mnimo para cada dos apresentados acima, usando os


nomes que voc sugeriu, (seria interessante, para seu aprendizado, criar o
algoritmo tanto em pseudocdigo quanto em Java).

Rede e-Tec Brasil

40

Lgica de Programao

Caro(a) estudante,
Como se sentiu criando e executando seu primeiro programa? Na prxima
aula, trataremos das variveis e dos tipos de dado. Esperamos voc l!

Aula 4 - Estrutura bsica de um algoritmo

41

Rede e-Tec Brasil

Aula 5. Variveis e tipos de dado

Objetivos:
conceituar varivel e tipos de dados;
diferenciar dado de informao;
aplicar as regras para a nomenclatura de variveis; e
identificar os tipos de dados primitivos existentes e utiliz-los
em algoritmos, seja em pseudocdigo, seja em Java.

Caro(a) estudante,
Nesta aula, veremos um conceito primordial para o processamento de dados, que o de variveis. Vamos entender os mecanismos de funcionamento
das variveis nas linguagens de programao, mostrar como dar nome a elas
e definir o tipo de dado que elas armazenam. Tambm vamos demonstrar o
uso de variveis tanto em pseudocdigo quanto em Java.

5.1 Introduo
Antes de iniciar os estudos sobre variveis, precisamos entender o conceito
de dado na computao. Segundo Puga e Rissetti (2009), dados so valores
que sero utilizados pelo algoritmo para a resoluo de um problema. Esses
valores podem ser fornecidos pelo usurio atravs de dispositivos de entrada
de dados, ou originados a partir de outros programas (inclusive ele prprio).

5.2 Variveis
Os dados de um algoritmo, para serem utilizados e processados, precisam
estar previamente armazenados na memria do computador. A varivel ento seria o nome dado a um espao da memria que contm o dado a ser
utilizado pelo algoritmo.

Aula 5 - Variveis e tipos de dado

43

Rede e-Tec Brasil

Qual a diferena entre um dado


e uma informao?
Em um contexto de programas
de computador, podemos dizer
que os dados correspondem aos
valores fornecidos ao programa,
que depois de processados,
geram informao.

Quando usamos uma varivel, na verdade, estamos buscando aquela informao da memria e passando-a para o processador do computador, para
que este realize as operaes necessrias com aquele dado.
Podemos afirmar, ento, que as variveis so utilizadas para representar valores genricos, que podero ser acessados e modificados de acordo com a
lgica do algoritmo.

5.2.1 Nomenclatura de variveis


Assim como importante saber dar nome aos nossos algoritmos, primordial saber nomear uma varivel tambm. As regras para a nomenclatura de
variveis seguem os mesmos princpios dos algoritmos. Vejamos:
No usar espao;
No usar caracteres especiais tais como: ! ? $ # * & - / e outros;
Usar apenas letras e nmeros;
No iniciar o nome com um nmero;
Evitar uso de acentos e cedilhas.
A seguir, temos alguns exemplos de nomes de variveis:
TABELA 5.1 - Exemplos de nomes de variveis
O que vai ser armazenado na varivel?

Proposta de nome

O nome de uma pessoa

Nome

Nomenclatura vlida

Nome vlido, mas inapropriado, j que no


identifica o contexto da varivel. O certo
seria: nota ou notaAluno.

Endereo de um cliente

endereo

Nome vlido, mas inapropriado, j que o


nome contm cedilha. O certo poderia ser:
endereco, enderecoCliente ou
clienteEndereco.

Saldo da conta

contaSaldo

Correto. Poderia ser tambm saldoConta.

Nome do 2 dependente

2dependente

Nome invlido, j que no pode ser iniciado


com um nmero. O certo poderia ser: segundoDependente ou dependente2.

Email do funcionrio

e-mail

Nome invlido, j que no pode ter caracteres especiais, no caso o -. O certo poderia
ser: email ou apenas mail.

A nota de um aluno

Situao

Fonte: Autores.

Rede e-Tec Brasil

44

Lgica de Programao

5.3 Tipos de dado


A linguagem nativa do computador a linguagem binria, composta apenas
por dois dgitos, ou seja, por 0 e 1. Um valor/dado armazenado na memria do computador em forma binria. Se o computador for de 8 bits, cada
frao da memria composto de oito zeros ou uns, como os exemplos:
TABELA 5.2 Raio X da memria de um computador com 1 GByte de RAM
Endereo de memria

Exemplo de dado

00000000

10010101

Varivel X

11000010

Varivel Z

00000000

11111111

...

...

1.073.741.824 bytes
ou
1 Gbyte

10101010

Exemplo de nomenclatura

Varivel Y

Fonte: Autores.

Segundo a Tabela 5.2, o endereo 2 da memria armazena a varivel cujo


nome X. Esse endereo contm apenas bits (0 e 1), mas, para ns, humanos, o que eles representam? Um conjunto de bits pode representar um nmero, um texto, um som, uma imagem, entre muitos outros tipos de dado.
por esse motivo que, quando definimos uma varivel, necessrio dizer
de que tipo ela para que o programa consiga converter esses bits no dado
que desejamos. O byte 10010101 pode tanto representar a letra A quanto
o nmero 149 ou o nmero -21 (o primeiro bit pode representar o sinal positivo ou negativo).
Isto , no exemplo acima, um nico byte pode representar trs valores diferentes, dependendo do tipo de dado.

5.3.1 Tipos de dados primitivos


A definio do tipo de dado de uma varivel primordial para garantir a
resoluo do algoritmo. As linguagens de programao tm alguns tipos j
definidos em sua estrutura eles so chamados de tipos de dados primitivos.

A menor unidade de informao


reconhecida pelo computador
o bit, que pode ser 0 (representa
o estado desligado) ou 1
(representa o estado ligado). Um
conjunto de oito bits (oito zeros
ou uns) chamado de byte. Em
um computador padro de 64
bits, significa que cada endereo
de memria contem oito bytes (8
x 8 bits).

Os tipos de dados primitivos so:


Literal: tipo de dado que pode receber letras, nmeros e smbolos. Esses
tipos de dados no podem ser usados para fazer clculos, apenas para

Aula 5 - Variveis e tipos de dado

45

Rede e-Tec Brasil

armazenar informao. Ex.: Programadores & Associados, Professor


Universitrio, 2 chamada, etc.
Inteiro: tipo de dado que pode receber nmeros inteiros positivos ou
negativos. Ex.: 10, 1000, -23, 0.
Real: tipo de dado que pode receber nmeros reais, isto , com casas
decimais, positivos ou negativos. Ex.: 3,1415; 9,8; 123,45.
Lgico: tipo de dado que pode receber apenas dois tipos de informao
verdadeiro (1) ou falso (0).

5.3.2 Tipos de dados primitivos em Java


Cada linguagem de programao pode definir seus prprios tipos de dados,
desdobramentos dos tipos primitivos citados anteriormente. No Java, os tipos primitivos so:
TABELA 5.3 - Tipos de dados primitivos em Java
Tipo de dados
Literal

Em Java
char
String

Lgico

Armazena um conjunto de caracteres

byte

Armazena nmeros de -27 a 27-1 (28 a 127)

short

Armazena nmeros de -215 a 215-1 (32.768


a 32.767)

Inteiro

Real

Capacidade
Armazena um nico caractere

int

Armazena nmeros de -231 a 231-1


(2.147.483.648 a 2.147.483.6477)

long

Armazena nmeros de -265 a 265-1

float

Armazena nmeros de -3,4E-38 a +3,4E+38

double

Armazena nmeros de -1,7E-308 a


+1,7E+308

boolean

Armazena 0 (falso) ou diferente de 0 (verdadeiro)

Fonte: http://docs.oracle.com/javase/7/docs/.

5.4 Sintaxe e exemplos de declarao


A seguir veremos a sintaxe e exemplos de declarao em pseudocdigo e
em Java.

5.4.1 Pseudocdigo
Em pseudocdigo:
A declarao de variveis deve ser feita antes de se iniciar o algoritmo;

Rede e-Tec Brasil

46

Lgica de Programao

H uma palavra reservada para identificar a declarao das variveis. Em


VisualG var;
O nome da varivel que deve seguir as regras de nomenclatura explicadas anteriormente;
O sinal de dois pontos (:) serve para separar o tipo do nome da varivel;
Temos o tipo da varivel;
Cada varivel deve estar declarada em uma linha.
Seguindo essas premissas, temos a seguinte sintaxe e alguns exemplos para
se declarar varivel em pseudocdigo:
TABELA 5.3 - Sintaxe e exemplos de declarao de variveis em pseudocdigo.
Sintaxe
var
nomeDaVarivel: tipoDaVariavel

Exemplos
var
nome: caractere
idade: inteiro
salario: real
casado: logico

Fonte: autores

5.4.2 Java
Em Java:
No existe uma palavra especfica para definir a declarao de uma varivel. Uma varivel pode ser criada em qualquer parte do cdigo, mas as
boas prticas de programao recomendam que as variveis principais
sejam criadas anteriormente e documentadas;
Ao se declarar uma varivel, o tipo de dado vem antes do nome da varivel;
O nome da varivel deve seguir as regras de nomenclatura explicadas
anteriormente;
possvel declarar diversas variveis em uma linha, desde que sejam separadas por ponto e vrgula;

Aula 5 - Variveis e tipos de dado

47

Rede e-Tec Brasil

Se diversas variveis possuem o mesmo tipo, basta defini-lo e enumerar


o nome de cada uma das variveis separado por vrgula.
Seguindo essas premissas, temos a seguinte sintaxe e alguns exemplos para
se declarar varivel em Java:
TABELA 5.4 - Sintaxe e exemplos de declarao de variveis em Java.
Sintaxe
tipoDaVariavel nomeDaVariavel;

Exemplos
String nome;
byte idade;
float salario;
boolean casado;
int populacao, rebanho;
double resultado; int dias;

Fonte: autores

Resumo
Acabamos de estudar o conceito de variveis e tipos de dado, primordiais
para a elaborao de algoritmos. Juntamente com eles, mostramos como
nomear uma varivel, distinguir os tipos de dados primitivos existentes e,
principalmente, como us-los em algoritmos, seja em pseudocdigo, seja
em Java.
Vamos praticar!

Atividades de aprendizagem
1. Assinale os nomes de variveis vlidas e invlidas. Quando invlida, informar o porqu:
a) XXX
b) a123
c) (A)
d) NOME
e) #66
f) dia/ano/ms

Rede e-Tec Brasil

48

Lgica de Programao

g) 1abc
h) Ol Pessoal
i) a.b
j) c*d
2. Baseado(a) na representao da informao do que ser armazenado em
uma varivel, sugira um nome para a mesma e para o tipo de dado. Para
cada um, use a sintaxe do pseudocdigo e do Java:
O que ser armazenado?

Sintaxe pseudocdigo
Sintaxe Java

O salrio de um funcionrio
A nota e a mdia de um aluno
Os dias de atraso de uma prestao
O CPF de uma pessoa
Se a famlia tem casa prpria
Uma carta
O endereo completo do cliente
Se o produto novo ou usado

Caro(a) estudante,
Parabns! Esta foi a quinta aula da disciplina. Esperamos ter contribudo
para seu aprendizado. Na prxima aula, abordaremos os operadores e expresses que envolvem as variveis. No perca!

Aula 5 - Variveis e tipos de dado

49

Rede e-Tec Brasil

Aula 6. Operadores e expresses

Objetivos:
reconhecer operadores aritmticos, relacionais e lgicos;
empregar corretamente esses operadores;
distinguir expresses aritmticas de expresses lgicas; e
criar e resolver expresses aritmticas e lgicas.

Caro(a) estudante,
O uso de expresses matemticas e lgicas muito importante para se resolver determinados problemas algortmicos. As expresses so formadas
por valores, variveis (operando) e operadores. Vamos explicar como criar
essas expresses, definir os operandos e os operadores em um algoritmo e,
principalmente, como analisar previamente tais expresses.

6.1 Introduo
Um processador basicamente uma mquina que processa instrues de
armazenamento e recuperao de valores, faz clculos matemticos e efetua
comparao de valores.
Mas, para dizer ao computador como executar essas instrues necessrio
utilizar operadores especficos para criar expresses que possam ser calculadas pelo processador.
A seguir, iremos apresentar todos os tipos de operadores e como us-los
para formar expresses.

Aula 6 - Operadores e expresses

51

Rede e-Tec Brasil

6.2 Operadores e expresses


As operaes e expresses podem ser:
Operao de atribuio;
Expresses aritmticas; e
Expresses lgicas.

6.2.1 Operador e expresso de atribuio


A operao de atribuio utilizada para armazenar um valor em uma varivel. Esse valor pode ser predefinido (fixo), proveniente de outra varivel ou
resultado de outra operao.
A representao algortmica de atribuio tem a seguinte notao:
variavel valor
O smbolo pode ser trocado por := no VisualG. No Java, atribuio dada
pelo caractere =. A tabela a seguir mostra ambos os casos.
TABELA 6.1 - Exemplos de operaes de atribuio
Atribuio em VisualG
var
nome: caractere
idade: inteiro
salario: real
casado: logico
inicio
nome := "Joo & Silva"
idade := 40
salario := 620.37
casado := VERDADEIRO
fimalgoritmo

Atribuio em Java
String nome;
byte idade;
float salario;
boolean casado;
int populacao, rebanho;
double resultado; int dias;
nome = "Joo & Silva";
idade = 40;
salario = 620.37;
casado = true;
populacao = 1200; rebanho = 80;
resultado = 8.5; dias = 10;

Fonte: autores

Agora, vamos fazer algumas consideraes sobre o cdigo acima:


Por que o tipo literal (caractere e String) recebe valores entre aspas duplas?

Rede e-Tec Brasil

52

Anlise de Sistemas

O uso de aspas duplas serve para delimitar um texto, que pode ter espaos
ou caracteres especiais. Usar um delimitador de texto uma prtica comum
nas linguagens de programao. No caso do Pascal so usadas as aspas
simples.
Por que no uso aspas no nmero?
Se voc usar aspas no nmero, o computador vai entender que um texto e
no um nmero, dois tipos de dado completamente diferentes.
Por que o salrio tem um ponto (.) e no uma vrgula (,) no nmero?
Geralmente as linguagens de programao usam a lngua inglesa como
base, e, l, o caractere que define o decimal o ponto e no a vrgula.
O que aconteceria se tentasse atribuir um texto a um nmero ou
vice-versa?
Variveis de um tipo de dado s devem receber valores daquele tipo. Na
maioria das linguagens de programao existem comandos que permitem
converter um tipo para outro, por exemplo, converter um texto em um nmero e vice-versa (ns iremos ver isso mais adiante).

Existem linguagens de
programao que possuem o
conceito de variveis dinmicas,
isto , podem receber valores de
diversos tipos fazendo, inclusive,
a converso automtica de um
para outro. Entretanto, via de
regra, recomendado definir
tipos nas variveis. Linguagens
que obrigam a definio de tipos
em variveis so chamadas de
fortemente tipificadas.

6.2.2 Operadores e expresses aritmticas


Os operadores e as expresses aritmticas so responsveis pelas operaes
matemticas realizadas no computador.
O conjunto de smbolos que representa as operaes bsicas de matemtica
chamado de operadores aritmticos. Veja a tabela 6.2.
TABELA 6.2 - Operadores aritmticos
Operador

Exemplo de expresso

Funo

a + b

Soma o valor de a e b

a - b

Do valor de a subtrado o valor


de b

a * b

Multiplica a por b

a / b

Divide a por b

mod

a MOD b (pseudocdigo)
a % b (Java)

Aula 6 - Operadores e expresses

Retorna o resto da diviso inteira de


a por b. Ex: 5 % 2 igual a 1

53

Rede e-Tec Brasil

++

--

a++ ou ++a (Java)

Incrementa o valor de a em 1. a++


retorna o valor de a antes de incrementar. ++a primeiro incrementa
para depois retornar o valor de a.

a-- ou --a (Java)

Subtrai 1 do valor de a. a-- retorna


o valor de a antes de subtrair. --a
primeiro subtrai para depois retornar
o valor de a.

Fonte: autores

Nem todos os operadores aritmticos podem ser representados por um smbolo em linguagens de programao. Funes como exponenciao, raiz,
seno, cosseno, tangente, entre muitos outros, so definidas por instrues
especficas em cada linguagem.

6.2.3 Operadores e expresses lgicas


Os operadores relacionais so utilizados para comparar valores ou outras
expresses. O resultado dessa comparao do tipo lgico (booleano), isto
, s pode ser verdadeiro ou falso.
Na tabela 6.3, veja os smbolos que representam os operadores relacionais3.
TABELA 6.3 - Operadores relacionais
Operador

Exemplo de expresso

Funo

>

a > b

Se o valor de a for maior que o de b,


a expresso verdadeira, seno
falsa.

>=

a >= b

Se o valor de a for maior ou igual ao


de b, a expresso verdadeira,
seno falsa.

<

a < b

Se o valor de a for menor que o de b,


a expresso verdadeira, seno
falsa.

<=

a <= b

Se o valor de a for menor ou igual ao


de b, a expresso verdadeira,
seno falsa.

a = b (pseudocdigo)
a == b (Java)

Se o valor de a for igual ao de b, a


expresso verdadeira, seno
falsa.

<>

a <> b (pseudocdigo)
a != b (Java)

Se o valor de a for diferente do valor


de b, a expresso verdadeira,
seno falsa.

Fonte: autores

possvel concatenar expresses lgicas criando outras expresses lgicas


mais complexas. Para concatenar necessrio utilizar operadores lgicos,
que podem ser:

Rede e-Tec Brasil

54

Lgica de Programao

TABELA 6.4 - Operadores lgicos


Operador

Exemplo de expresso

Funo

a E b (pseudocdigo)
a && b (Java)

A expresso a E b s ser verdadeira se a e b forem verdadeiros.

OU

a OU b (pseudocdigo)
a || b (Java)

A expresso a OU b s ser falsa se


a e b forem falsos.

NO

NAO a (pseudocdigo)
!a (Java)

Se a for verdadeiro, NAO a ser


falso.
Se a for falso, NAO a ser verdadeiro.

Para melhor conhecimento


das funes dos operadores
lgicos, acesse a pgina http://
pt.wikipedia.org/wiki/Tabela_
verdade.

Fonte: autores

6.3 Ordem de precedncia

Em uma expresso com muitos operandos e operadores, existe uma ordem


para estabelecer qual delas (a relao de dois operandos e um operador) ser
executada primeiro o que chamamos de ordem de precedncia.
Para exemplificar melhor o conceito, vamos imaginar que queremos calcular
a mdia de duas notas: n1 e n2.
media = n1 + n2 / 2
Se n1 fosse igual a 6 e n2 igual a 8, a mdia deveria ser 7, isso porque em
nossa cabea primeiro vamos calcular a expresso n1 + n2 (operandos n1
e n2 e o operador +) e, depois de obter o resultado, iramos dividi-lo por 2.
Mas na programao no bem assim que acontece: para o computador a
mdia seria 10. Como assim? Como uma pessoa tira 6 e 8 e a mdia fica 10?
que o computador analisa toda a expresso, subdivide em expresses mnimas (apenas 2 operandos e 1 operador) e verifica qual parte ele vai calcular
primeiro, como a diviso tem uma ordem de precedncia maior que a
soma, o computador primeiro vai calcular n2 / 2, que pelo exemplo seria 4,
e depois somar com a n1, fazendo assim o resultado ser 10.
Para garantir que uma determinada expresso seja executada antes da outra, basta coloc-la entre parnteses. No exemplo da mdia, para o computador calcular corretamente, a expresso deveria ser:
media = (n1 + n2) / 2

Aula 6 - Operadores e expresses

55

Rede e-Tec Brasil

A ordem de precedncia entre os operadores aritmticos e lgicos :


TABELA 6.5 - Ordem de precedncia
Prioridade

Operador aritmtico

Operador lgico

NO

MOD

OU

Fonte: autores

Como uma expresso pode conter vrios operadores aritmticos, relacionais


e lgicos, existe uma ordem geral entre eles, que :
TABELA 6.6 - Ordem de precedncia geral
Prioridade

Operadores

Parnteses

Operadores aritmticos

Operadores relacionais

Operadores lgicos

Fonte: autores

Sabendo como funciona a escolha do computador sobre a ordem em que


ele calcula as partes de uma expresso, vamos tentar simular o comportamento do mesmo analisando as seguintes expresses lgicas (cujo resultado
somente pode ser verdadeiro ou falso):
EXEMPLO 1
2 * 4 = 4 + 4
8 = 4 + 4
8 = 8
verdadeiro
EXEMPLO 2
3 + 3 * 2 <= 3 * 3 E 3 + 2 <= 15 MOD 3
3 + 6 <= 3 * 3 E 3 + 2 <= 15 MOD 3
9 <= 3 * 3 E 3 + 2 <= 15 MOD 3
9 <= 9 E 3 + 2 <= 15 MOD 3
9 <= 9 E 5 <= 15 MOD 3
9 <= 9 E 5 <= 0
verdadeiro E 5 <= 0
verdadeiro E falso
falso

Rede e-Tec Brasil

56

Lgica de Programao

EXEMPLO 3
(3 + 3) * 2 <= 9 E (3 + 2 <= 15) OU 15 MOD 3 = 0
6 * 2 <= 9 E (3 + 2 <= 15) OU 15 MOD 3 = 0
6 * 2 <= 9 E (5 <= 15) OU 15 MOD 3 = 0
6 * 2 <= 9 E falso OU 15 MOD 3 = 0
12 <= 9 E falso OU 15 MOD 3 = 0
12 <= 9 E falso OU 0 = 0
falso E falso OU 0 = 0
falso E falso OU verdadeiro
falso OU verdadeiro
verdadeiro
EXEMPLO 4

NO (5 + 3 <> 8 OU (2 + 3 * 2 <= 3 * 3 / 2 OU (5 MOD 2 = 1 E 4 MOD 2 = 0)))


NO (5 + 3 <> 8 OU (2 + 3 * 2 <= 3 * 3 / 2 OU (1 = 1 E 4 MOD 2 = 0)))
NO (5 + 3 <> 8 OU (2 + 3 * 2 <= 3 * 3 / 2 OU (1 = 1 E 0 = 0)))
NO (5 + 3 <> 8 OU (2 + 3 * 2 <= 3 * 3 / 2 OU (verdadeiro E 0 = 0)))
NO (5 + 3 <> 8 OU (2 + 3 * 2 <= 3 * 3 / 2 OU (verdadeiro E verdadeiro)))
NO (5 + 3 <> 8 OU (2 + 3 * 2 <= 3 * 3 / 2 OU (verdadeiro)))
NO (5 + 3 <> 8 OU (2 + 3 * 2 <= 3 * 3 / 2 OU verdadeiro))
NO (5 + 3 <> 8 OU (2 + 6 <= 3 * 3 / 2 OU verdadeiro))
NO (5 + 3 <> 8 OU (8 <= 3 * 3 / 2 OU verdadeiro))
NO (5 + 3 <> 8 OU (8 <= 9 / 2 OU verdadeiro))
NO (5 + 3 <> 8 OU (8 <= 4,5 OU verdadeiro))
NO (5 + 3 <> 8 OU (falso OU verdadeiro))
NO (5 + 3 <> 8 OU (verdadeiro))
NO (5 + 3 <> 8 OU verdadeiro)
NO (8 <> 8 OU verdadeiro)
NO (falso OU verdadeiro)
NO (verdadeiro)
NO verdadeiro
falso

Os conceitos de operadores, operando e expresses sero de suma importncia para a elaborao de algoritmos mais complexos, que preveem inmeras possibilidades de execuo dependendo de cada caso analisado. Vamos ao resumo.

Resumo
Nesta aula, estudamos os conceitos de operadores, operandos e expresses,
que podem ser aritmticas, relacionais e lgicas, e o mais importante: mostramos como resolv-las. Agora sua vez praticar! Vamos l!

Aula 6 - Operadores e expresses

57

Rede e-Tec Brasil

Atividades de aprendizagem
1. O que operando, operador e uma expresso? Exemplifique.
2. Quais os tipos de expresso existentes? D um exemplo de cada uma.
3. Sabendo que a = 2, b = 5 e c = 3, calcule o valor resultante das seguintes
expresses:
a) b * 2 a * c
b) b + a * 2 a + c * 3
c) (b + a) * (2 a) + c * 3
d) (b + a) * ((2 a) + c) * 3
e) (c + a * a a + 1) / (c * b * a + c a * c)
4. Sabendo v = verdadeiro e f = falso, calcule o valor resultante das seguintes
expresses:
a) v E f OU f E v
b) (v E f) OU (f E v)
c) (NO (v E f)) E (f E v)
d) NO ((v E f) OU (f E v))
e) NO ((NO(v E f)) E (NO(f E v)))
5. Sabendo que a = 1, b = 2 e c = 3, demonstre a execuo passo a passo
da seguinte expresso:
NO (b * c <> 8 OU ((a * c) - a <= c * c / a)) OU (b MOD a
= 1 E 4 MOD a = 0)

Rede e-Tec Brasil

58

Lgica de Programao

Caro(a) estudante,
Finalizamos mais uma aula da disciplina Lgica de Programao.
Na prxima, abordaremos as estruturas sequenciais.

Aula 6 - Operadores e expresses

59

Rede e-Tec Brasil

Aula 7. Estruturas sequenciais

Objetivos:
criar uma estrutura sequencial em um algoritmo; e
reconhecer e usar corretamente os comandos de entrada e de
sada.

Caro(a) estudante,
Finalmente lhe ser oportunizada a criao de um programa completo,
usando variveis, atribuindo e lendo seus respectivos valores, definindo expresses aritmticas e lgicas e, por fim, voc aprender a estruturar sequencialmente um algoritmo em VisualG e Java, a ler dados do usurio e a
mostrar o resultado do processamento para o mesmo (a informao resultante). Aproveite bem a aula e se prepare, pois teremos muitas atividades.

7.1 Introduo
A arquitetura bsica dos computadores, baseada na arquitetura de John von
Neumann, at hoje tem influncia direta nas linguagens de programao.
Entretanto, o estilo (modelo ou paradigma) de programao sofreu algumas
evolues, de um formato simples (sem muitos recursos e de difcil percepo por parte dos leigos) da dcada de 50, para um formato mais completo
(com muitos recursos e de fcil entendimento) nos dias atuais.
De acordo com Manzano e Oliveira (2009, p. 437), os paradigmas de programao passaram por cinco fases evolucionrias, sendo elas:
Programao tradicional;
Programao estruturada;
Programao modular;

Aula 7 - Estruturas sequenciais

61

Rede e-Tec Brasil

Programao com abstrao de dados; e


Programao orientada a objetos.
A programao estruturada
uma das variantes da linguagem
imperativa, que baseada na
arquitetura von Neumann, na
qual tanto os dados quanto os
programas so armazenados na
mesma memria, que, por sua
vez, separada da CPU (Unidade
de Processamento de Dados),
necessitando, assim, que tanto
os dados quanto as instrues
sejam transmitidos da memria
para a CPU e vice-versa.

Nesta disciplina, vamos abordar exclusivamente aspectos da programao


estruturada, que tem como base as estruturas de controle, que so:
Estruturas sequenciais;
Estruturas de deciso; e
Estruturas de repetio.

Segundo Sebesta (2011, p. 38):


por causa da arquitetura de
von Neumann, os recursos
centrais das linguagens
imperativas so:
As variveis, que modelam
as clulas de memria;
As sentenas de
atribuio, baseadas na
operao de envio de dados
e instrues; e
A forma iterativa de
repetio nessa arquitetura.
Os operandos em expresses
so enviados da memria
para a CPU, e o resultado
da avaliao da expresso
enviado de volta clula de
memria representada pelo
lado esquerdo da atribuio.
A iterao rpida em
computadores von Neumann
porque as instrues so
armazenadas em clulas
adjacentes de memria,
e repetir a execuo de
uma seo de cdigo
requer apenas uma simples
instruo de desvio.

Nesta aula, voc ver como funciona uma estrutura sequencial.

7.2 Estrutura sequencial


A estrutura sequencial em um algoritmo se d quando um conjunto de aes
executado em uma sequncia linear de cima para baixo, e da esquerda
para a direita, na mesma ordem em que foram escritas.
A estrutura sequencial a base do algoritmo, pois, como vimos anteriormente, so aes executadas passo a passo, em uma sequncia definida
para atender a um determinado objetivo.
Em uma estrutura sequencial, podemos definir instrues de declarao de
variveis, atribuio, operaes aritmticas e lgicas, de entrada e de sada.
Todas essas instrues j foram vistas, menos as duas ltimas, que veremos
a seguir.

7.2.1 Sada de dados


Para que serviria a capacidade de processar dados do computador se no
fosse possvel mostrar os resultados? exatamente isso que os comandos de
sada fazem, enviam informaes processadas do algoritmo.
O dispositivo mais comum para se mostrar o resultado de um processamento
o monitor de vdeo, mas existem diversos outros dispositivos de sada, tais
como o disco rgido, a impressora, a caixa de som etc. Um algoritmo tambm pode gerar uma sada que serviria de entrada para outro algoritmo, sem
precisar passar por nenhum dispositivo tradicional de sada, mas isso no

Rede e-Tec Brasil

62

Lgica de Programao

muito comum.
Nesse momento, subtende-se que o comando de sada o monitor do computador.
O nome do comando de sada padro em pseudocdigo Escreva() e
em Java System.out.print(). Existem outras variantes desse comando.
As principais so:
TABELA 7.1 - Variantes do comando Escreva
Funo

Pseusocdigo

Java

Escreve o dado

Escreva()

print().

Escreve o dado e pula uma linha

Escreval()

println().

Escreve usando parmetros

printf().

Fonte: autores

Com esses comandos possvel:


Escrever um texto;
Escrever o valor de uma varivel;
Escrever um conjunto de textos e valores de variveis concatenados. Vamos a um exemplo do comando Escreva e Escreval

Figura 7.1: Exemplo do comando Escreva e Escreval.


Fonte: Autores.

Aula 7 - Estruturas sequenciais

63

Rede e-Tec Brasil

Veja o cdigo e analise as instrues passadas na rea de trabalho e a sada


do mesmo na janela de execuo. Perceba que:
Quando usei o comando Escreval, ele escreve o texto na sada e pula
uma linha;
Quando usei o comando Escreva, ele escreve o texto na sada, mas no
pula uma linha;
Para escrever o texto, delimitei o mesmo com aspas duplas ( );
Quando no uso as aspas duplas, significa que quero escrever o valor de
uma varivel; e
Quando quero mesclar texto com variveis, fao a concatenao deles
com o sinal de adio (+).
Agora, vamos escrever esse mesmo cdigo em Java, no Eclipse.

Figura 7.2: Exemplo dos comandos print e println.


Fonte: Autores.

O exemplo usando printf voc ver na figura 7.4.

Rede e-Tec Brasil

64

Lgica de Programao

7.2.2 Entrada de dados


No exemplo anterior, perceba que no houve interao entre o(a) usurio(a)
e o programa o algoritmo simplesmente executou.
Mas, na maioria dos algoritmos, a entrada de dados de suma importncia.
assim que conseguimos interagir com o programa passando dados que
sero utilizados para a resoluo de problemas.
O dispositivo mais comum de entrada de dados o teclado, mas existem
diversos outros, tais como, a tela touchscreen (tela sensvel ao toque), o
microfone, o scanner, o disco rgido etc. Um algoritmo tambm pode receber dados diretamente de outro algoritmo, sem precisar passar por nenhum
dispositivo tradicional de sada, mas isso no muito comum.
A nome do comando de entrada padro em pseudocdigo Leia(). Em
Java, o comando leia feito em duas fases:
A definio do dispositivo de entrada usando o comando:
Scanner entrada = new Scanner(System.in);
A leitura do dado do dispositivo:
nome = entrada.next();
Com esses comandos possvel:
Ler um texto;
Ler um nmero inteiro; e
Ler um nmero real.
Vamos ao exemplo dos comandos Escreva e Escreval

Aula 7 - Estruturas sequenciais

65

Rede e-Tec Brasil

Figura 7.3: Exemplo dos comandos Escreva e Escreval.


Fonte: Autores.

Analise o cdigo e perceba que o comando Leia o mesmo para valores


literais e numricos. Entretanto, em Java, existem diferenas. Agora vamos
escrever esse mesmo cdigo em Java, no Eclipse.

Figura 7.4: Exemplo dos comandos de entrada em Java e do printf.


Fonte: Autores.

Rede e-Tec Brasil

66

Lgica de Programao

Percebeu que, para cada tipo de dado que voc for ler em Java, voc precisa
de um comando diferente? E o printf, que agora podemos definir em um
nico texto com parmetros (%s para texto, %d para inteiro, %f para real)
que sero substitudos por valores de variveis.

7.3 Finalmente um algoritmo completo


Voc se lembra de quando dissemos que um algoritmo nada mais do que
um mecanismo para entrada, processamento ou sada de dados? Agora
voc est preparado(a) para criar uma estrutura sequencial com todos eles.
Para exemplificar, vamos criar um algoritmo para descobrir o salrio lquido
de um funcionrio, sabendo que descontado do seu salrio bruto 27,5%,
referente ao imposto de renda. O algoritmo ser implementado tanto em
pseudocdigo quanto em Java. Vamos aos exemplos.
Algoritmo completo que calcula o salrio lquido de um funcionrio

Figura 7.5: Algoritmo completo que calcula o salrio lquido de um funcionrio.


Fonte: Autores.

Aula 7 - Estruturas sequenciais

67

Rede e-Tec Brasil

Algoritmo completo em Java que calcula o salrio lquido de um funcionrio

Figura 7.6: Algoritmo completo em Java que calcula o salrio lquido de um funcionrio.
Fonte: Autores.

Apenas um comentrio no cdigo da Figura 7.6: o caractere \n, no comando


de sada printf, faz com que pule uma linha.
Agora, voc poder criar os algoritmos usando a estrutura de sequncia
(instrues em uma sequncia linear) e aplicar todas as premissas necessrias
de um programa padro: a entrada, o processamento e a sada de dados.

Resumo
Voc complementou seus conhecimentos bsicos acerca da elaborao de
algoritmos. Nesta aula, tratamos da estrutura sequencial em um algoritmo,
ou seja, um conjunto de aes executadas em sequncia linear. Vimos tambm os comandos de sada e entrada de dados em pseudocdigo e em Java.
E, finalmente, mostramos um algoritmo completo que calcula o salrio lquido de um funcionrio, em pseudocdigo e em Java.
Nas atividades de aprendizagem desta aula, temos um nmero bem maior
de exerccios para que voc possa praticar. Lembre-se: aprender a progra-

Rede e-Tec Brasil

68

Lgica de Programao

mar no apenas leitura e estudo, prtica. Ento vamos s atividades.

Atividades de aprendizagem
1. Faa um algoritmo em VisualG ou em Java que receba trs nmeros inteiros e calcule a soma deles.
2. Faa um algoritmo em VisualG ou em Java que receba quatro nmeros
reais e calcule a mdia deles.
3. Faa um algoritmo em VisualG ou em Java que receba duas notas de prova, seus respectivos pesos e calcule a mdia ponderada deles.
4. Faa um algoritmo em VisualG ou em Java que receba o salrio inicial, a
porcentagem de aumento e calcule o novo salrio.
5. Faa um algoritmo em VisualG ou em Java que receba o salrio-base e a
quantidade de dependentes, e calcule o salrio lquido sabendo que, para
cada filho, o funcionrio recebe o salrio famlia de R$ 32,00 e, ao final,
paga imposto de renda de 27,5% sobre o salrio bruto.
6. Faa um algoritmo em VisualG ou em Java que receba os valores antigo
e novo de um produto, e calcule a porcentagem de aumento que o mesmo
teve.
7. Faa um algoritmo em VisualG ou em Java que receba o tamanho do
raio de um crculo e faa o clculo do dimetro, do permetro e da rea do
crculo. Calcule tambm o volume se esse crculo fosse a base para se criar
uma esfera.
8. Faa um algoritmo em VisualG ou em Java que receba a velocidade de
um veculo em Km/h (quilmetros por hora) e a transforme em m/s (metros
por segundo).
Caro(a) estudante,
Parabns por ter completado seus conhecimentos bsicos acerca da elaborao de algoritmos. Agora, poder cri-los usando a estrutura de sequncia
(instrues em uma sequncia linear) e aplicar todas as premissas necessrias
de um programa padro: a entrada, o processamento e a sada de dados. Na
prxima aula, abordaremos as estruturas de deciso. At l!

Aula 7 - Estruturas sequenciais

69

Rede e-Tec Brasil

Aula 8. Estruturas de deciso


Objetivos:
reconhecer uma estrutura de deciso;
identificar os tipos de estrutura de deciso; e
aplicar estruturas de deciso em algoritmos.

Caro(a) estudante,
Nas aulas anteriores resolvemos problemas de complexidade bem limitada,
baseadas em estruturas sequenciais simples. Nesta aula, voc ir estudar
a elaborao de algoritmos mais complexos, saindo do tradicional passo a
passo linear para fluxos de execuo que podem sofrer desvios na sequncia
baseados em expresses lgicas, isto , o computador ser capaz de tomar
uma deciso sobre o que ser executado ou no. Interessante, no? Ento
vamos estudar com bastante afinco esta aula.

8.1 Introduo
Estrutura de deciso ou estrutura condicional basicamente um mecanismo
capaz de verificar previamente determinadas condies, baseadas em expresses lgicas, para a realizao de uma ou mais instrues.
A expresso lgica em uma estrutura de deciso o mecanismo usado para
que o computador tome sua deciso. Caso ela seja verdadeira, o fluxo de
execuo do algoritmo segue um caminho; caso seja falsa, segue outro.

8.2 Tipos de estruturas de deciso


As estruturas de deciso podem ser de trs tipos:

Aula 8 - Estruturas de deciso

71

Rede e-Tec Brasil

Estruturas de deciso simples ou estrutura Se;


Estruturas de deciso composta ou estrutura Se Seno; e
Estruturas de deciso encadeada ou estrutura Se Seno Se.

8.2.1 Estrutura de deciso Se


A estrutura de deciso Se a mais simples, pois existe apenas um desvio
de fluxo na execuo do algoritmo. Esse desvio est condicionado a uma
expresso booleana: quando verdadeira, no h desvio, mas caso seja falsa,
o desvio efetuado.
Para uma melhor visualizao de como esse desvio acontece (como o computador toma decises), vamos comparar o fluxograma de execuo de um
algoritmo com estrutura sequencial com o da estrutura condicional:

Figura 8.1: Estrutura sequencial versus estrutura condicional.


Fonte: Autores.

Rede e-Tec Brasil

72

Lgica de Programao

A sintaxe da estrutura condicional Se - Seno tanto em pseudocdigo quanto em Java :


TABELA 8.1 - Sintaxe da estrutura condicional Se
Pseudocdigo
Se (expresso lgica) Ento
Comando ou Bloco de Comandos
Fimse

Java
// Um nico comando a ser controlado
if(expresso lgica)
Comando;
// Vrios comandos a serem
// controlados
if(expresso lgica) {
Bloco de Comandos;
}

Fonte: Autores.

De acordo com a sintaxe, o Comando ou Bloco de Comandos s ser


executado se a expresso lgica for verdadeira.
Em Java, quando temos apenas um comando para ser executado o uso
das chaves opcional.
Para entender melhor a estrutura de deciso Se, vamos a um exemplo prtico: dado o salrio de uma pessoa, o imposto de renda pode ser cobrado
caso ele ganhe mais de R$ 1.500,00 mensais. Se isso acontecer, a porcentagem do imposto de 15% sobre o salrio bruto, caso contrrio, o imposto
a pagar zero.

Figura 8.2: Exemplo da estrutura condicional Se em pseudocdigo.


Fonte: Autores.

Aula 8 - Estruturas de deciso

73

Rede e-Tec Brasil

Analise o cdigo e verifique que:


Caso a expresso lgica (salarioBruto > 1500) seja verdadeira,
ento o imposto de renda ser calculado (linhas 13 a 15);
Caso a expresso lgica (salarioBruto > 1500) seja falsa, ento o
imposto de renda no ser calculado, e ele continuar sendo zero (da
maneira que ele foi inicializado na linha 12).
No segundo caso, quando a expresso lgica falsa, ocorre um desvio do
fluxo do algoritmo, fazendo com que o comando da linha 14 no seja executado de acordo com a sequncia do algoritmo. Muito legal esse mecanismo
de controle de fluxo, no ? Agora vamos ver o mesmo algoritmo em Java:

Figura 8.3: Exemplo da estrutura condicional Se em Java.


Fonte: Autores.

Rede e-Tec Brasil

74

Lgica de Programao

Tanto o algoritmo em pseudocdigo quanto em Java devero ter as mesmas


sadas:
TABELA 8.2 - Exemplos de sada de um algoritmo com a estrutura condicional Se.
(salarioBruto > 1500) for:
Falso

Verdadeiro

Salrio bruto: 1000


Desconto de imposto de renda:0
Salrio lquido:1000

Salrio bruto: 1501


Desconto de imposto de renda: 225.15
Salrio lquido:1275.85

Fonte: Autores.

8.2.2 Estrutura de deciso Se Seno


A estrutura de deciso Se - Seno mais completa, pois permite dois fluxos
de execuo no algoritmo, um para quando a expresso booleana for verdadeira e outro para quando for falsa. Sendo assim, o fluxo escolhido para a
execuo est condicionado a essa expresso, que, caso seja verdadeira, um
conjunto de comandos executado, mas caso seja falsa, executa-se outro
conjunto.
Para voc ter uma melhor visualizao de como essa escolha de fluxo acontece, vamos comparar o fluxograma de execuo de um algoritmo com estrutura Se com o da estrutura Se - Seno:

Figura 8.4: Estrutura Se versus Se Seno.


Fonte: Autores.

Aula 8 - Estruturas de deciso

75

Rede e-Tec Brasil

A sintaxe da estrutura condicional Se - Seno tanto em pseudocdigo quanto em Java :


TABELA 8.3 - Sintaxe da estrutura condicional Se - Seno.
Pseudocdigo
Se (expresso lgica) Ento
Comando 1 ou Bloco de Comandos 1
Seno
Comando 1 ou Bloco de Comandos 1
Fimse

Java
if (expresso lgica)
Comando1;
else
Comando2;

if (expresso lgica) {
Bloco de Comandos 1;
} else {
Bloco de Comandos 2;
}

Fonte: Autores.

De acordo com a sintaxe, o Comando 1 ou Bloco de Comandos 1 s ser


executado se a expresso lgica for verdadeira. Caso seja falsa, ser
executado o Comando 2 ou Bloco de Comandos 2.
Para entender melhor a estrutura de deciso Se - Seno, vamos a um exemplo prtico: dado um nmero, verifique se o mesmo par ou mpar.

Figura 8.5: Exemplo da estrutura condicional Se - Seno em pseudocdigo.


Fonte: Autores.

Rede e-Tec Brasil

76

Lgica de Programao

Analise o cdigo e verifique:


Para saber se um nmero par, basta usar uma propriedade matemtica:
caso o resto da diviso desse nmero por 2 seja 0, ento ele par.
Analogicamente, se o resto da diviso de qualquer nmero por 2 for 1,
significa que ele mpar.

Figura 8.6: Exemplo da estrutura condicional Se - Seno em pseudocdigo.


Fonte: Autores.

O mesmo algoritmo em Java seria:

8.2.3 Estrutura de deciso Se Seno Se


A estrutura de deciso Se Seno - Se a mais complexa de todas, pois
permite o encadeamento de um Se logo aps o Seno de outro Se, isto
, possvel encadear um Se dentro de outro, formando assim uma nica
estrutura.
Mesmo sendo complexo, s vezes a soluo mais fcil para alguns tipos
de algoritmo, que precisam testar diversas condies e tomar uma deciso
sobre qual fluxo de comandos seguir, que s pode ser um (ou nenhum),
justamente aquele cuja condio for satisfeita, isto , cuja expresso lgica
for verdadeira.
Para voc ter uma melhor visualizao de como essa estrutura encadeada de
Se organizada, a seguir temos um exemplo de fluxograma de execuo de
um algoritmo com estrutura Se Seno - Se:

Aula 8 - Estruturas de deciso

77

Rede e-Tec Brasil

Figura 8.7: Fluxograma da Estrutura de deciso Se Seno Se.


Fonte: Autores.

Em pseudocdigo, essa estrutura encadeada nada mais do que um Se


dentro de outro Se, mas, em Java, possvel aninhar as estruturas Se como
se fossem um s comando. Veja o exemplo a seguir:
TABELA 8.4 - Sintaxe da estrutura condicional Se Seno - Se.
Pseudocdigo
Se (expresso lgica 1) Ento
Bloco de Comandos 1
Seno
Se (expresso lgica 2) Ento
Bloco de Comandos 2
Seno
...
...
Se (expresso lgica N) Ento
Bloco de Comandos N
Seno
Bloco de Comandos Seno
Fimse
Fimse
Fimse

Java
if (expresso lgica 1) {
Bloco de Comandos 1;
} else if (expresso lgica 2) {
Bloco de Comandos 2;
} else if (expresso lgica 3) {
Bloco de Comandos 3;
} else if (expresso lgica 4) {
Bloco de Comandos 4;
} else if... {
...
} else if(expresso lgica N) {
Bloco de Comandos N;
} else {
Bloco de Comandos Seno
}

Fonte: Autores.

Rede e-Tec Brasil

78

Lgica de Programao

Vejamos algumas propriedades importantes da estrutura de deciso Se


Seno Se:
O Bloco de Comandos 1 ser somente executada se a expresso lgica 1 for verdadeira. Aps a execuo do Bloco de Comandos 1,
o fluxo de execuo sai da estrutura de deciso Se Seno Se, mesmo
que haja outras expresses verdadeiras aps a expresso lgica 1.
O Bloco de Comandos 2 ser somente executado se a expresso
lgica 1 for falsa e a expresso lgica 2 for verdadeira. Aps
a execuo do Bloco de Comandos 2, o fluxo de execuo sai da estrutura de deciso Se Seno Se, mesmo que haja outras expresses
verdadeiras aps a expresso lgica 2.
O Bloco de Comandos 3 somente ser executado se as expresses
lgicas 1 e 2 forem falsas e a expresso lgica 3 for verdadeira. Aps a execuo do Bloco de Comandos 3, o fluxo de execuo sai da estrutura de deciso Se Seno Se, mesmo que haja outras
expresses verdadeiras aps essa expresso.
O bloco de comandos N ser somente executado se as expresses
lgicas 1 a N-1 forem falsas e a expresso lgica N for verdadeira. Aps a execuo do Bloco de Comandos N, o fluxo de execuo sai da estrutura de deciso Se Seno Se.
Os comandos do bloco else sero somente executados se nenhuma
expresso lgica anterior for verdadeira.
Para entender melhor a estrutura de deciso Se Seno - Se, vamos a um
exemplo prtico: dadas duas notas, caso a mdia delas seja maior que 7, o
aluno estar aprovado; caso seja menor do que 3, o aluno estar reprovado;
e se estiver entre 3 e 7, o aluno vai para a prova final.
O mesmo algoritmo em Java seria:

Aula 8 - Estruturas de deciso

79

Rede e-Tec Brasil

Figura 8.8: Exemplo da estrutura condicional Se Seno - Se em pseudocdigo.


Fonte: Autores.

Figura 8.9: Exemplo da estrutura condicional Se - Seno - Se em Java.


Fonte: Autores.

Rede e-Tec Brasil

80

Lgica de Programao

Graas s estruturas de deciso, podemos fazer o computador tomar decises e executar um conjunto de cdigos que voc quiser, de acordo com a
sua lgica. Agora vamos ao resumo da aula.

Resumo
Adicionamos nesta aula conhecimentos importantssimos para a elaborao
de algoritmos mais complexos. Tratamos das estruturas de deciso simples,
compostas e encadeadas. Vimos que a estrutura Se a mais simples, pois
h apenas um desvio de fluxo na execuo do algoritmo. Esse desvio est
condicionado a uma expresso booleana: quando verdadeira, no h desvio,
mas, caso seja falsa, o desvio efetuado. A estrutura de deciso composta
Se Ento mais completa, pois permite dois fluxos de execuo do algoritmo, um quando a expresso booleana for verdadeira e outra para quando
for falsa. J a estrutura encadeada Se - Seno - Se a mais complexa,
pois permite o encadeamento de um se logo aps o Seno de outro Se,
isto, possvel encadear um Se dentro de outro, formando, assim, uma
nica estrutura.
Assim como na aula anterior, temos um nmero maior de exerccios. Vamos
praticar!

Atividades de aprendizagem
1. Faa um algoritmo em VisualG ou em Java que, dados dois nmeros,
mostre qual o maior deles.
2. Faa um algoritmo em VisualG ou em Java que, dado um nmero, verifique se o mesmo divisvel por 3.
3. Faa um algoritmo em VisualG ou em Java que, dado o tamanho de trs
retas, seja possvel construir um tringulo com elas.
4. Faa um algoritmo em VisualG ou em Java que dado um nmero, verifique se o mesmo divisvel por 3 e 4, mas que no seja divisvel por 5.
5. Faa um algoritmo em VisualG ou em Java que, dados trs nmeros,
mostre-os -em ordem crescente.
6. Faa um algoritmo em VisualG ou em Java que, dado o salrio bruto de
uma pessoa, calcule o salrio lquido sabendo que h o desconto de dois
impostos, de acordo com a tabela abaixo:

Aula 8 - Estruturas de deciso

81

Rede e-Tec Brasil

Tabela IRPF
Salrio at R$ 1.500,00: 0% de imposto,
Salrio at R$ 3.000,00: 15% de imposto,
Salrio acima de R$ 3.000,00: 27,5% de imposto,

Tabela INSS
Imposto fixo de 11% do salrio, sendo que o total do
imposto no pode ser superior a R$ 400,00.

Ol, viu como possvel um computador tomar decises e assim executar tarefas mais complexas? Muito legal, no? Na prxima aula, voc ir complementar os seus conhecimentos de algoritmos com as estruturas de seleo,
um conceito bem parecido com o da estrutura de deciso. At a prxima!

Rede e-Tec Brasil

82

Lgica de Programao

Aula 9. Estruturas de seleo

Objetivos:
reconhecer uma estrutura de seleo; e
aplicar estruturas de seleo em algoritmos.

Caro(a) estudante,
Trataremos agora da estrutura de seleo, que uma estrutura complementar s estruturas de deciso, isso porque ela capaz de decidir qual fluxo de
comandos executar, mas usando como parmetro o valor de uma varivel,
em vez do resultado de uma expresso lgica.

9.1 Introduo
A estrutura de seleo muito utilizada em programao, pois serve para
controlar vrias aes diferentes, de acordo com o valor de um parmetro
(varivel) definido dentro dele. Diferentemente das estruturas de deciso, a
de seleo tem nmero pr-definido de escolhas possveis, e, consequentemente, de caminhos possveis.
A instruo usada para definir uma estrutura de seleo :

Toda estrutura de seleo


pode ser substituda por uma
estrutura de deciso equivalente.
Geralmente, nesse caso, usada
a estrutura de deciso Se - Seno
- Se. Entretanto, em relao ao
desempenho, a anlise de uma
estrutura de seleo consome
menos tempo de processamento
que uma de deciso.

Escolha no VisualG;
switch no Java.

9.2 Sintaxe do comando escolha


A sintaxe do comando escolha, tanto no VisualG quanto no Java, bem
parecida:

Aula 9 - Estruturas de seleo

83

Rede e-Tec Brasil

TABELA 9.1: Sintaxe da estrutura de seleo.


Pseudocdigo
Escolha(variavel)
Caso "qualquer valor
Bloco de Comandos
Caso "qualquer valor
Bloco de Comandos
Caso "qualquer valor
Bloco de Comandos
Caso ...
Caso "qualquer valor
Bloco de Comandos
OutroCaso
Bloco de Comandos
FimEscolha

1"
1
2"
2
3"
3
N"
N
OutroCaso

Java
switch (variavel) {
case valorInteiro1:
Bloco de Comandos
break;
case valorInteiro2:
Bloco de Comandos
break;
case ...:
case valorInteiroN:
Bloco de Comandos
break;
default:
Bloco de Comandos
break;
}

1;

1;

N;

default;

Fonte: Autores.

Entretanto, temos algumas consideraes a fazer:


No pseudocdigo, a varivel pode ser numrica e textual; no Java, somente numrico do tipo inteiro. Em ambos os casos ela no pode ser
uma expresso lgica.
No Java, para impedir que o cdigo continue sendo executado, necessrio usar o comando break.
Explicando melhor o funcionamento da estrutura de seleo, temos:
O comando Escolha recebe uma varivel e abre um bloco de dados;
Dentro desse bloco de dados h os cases;
Cada case recebe um valor nico, ou seja, que no pode ser repetido no
mesmo bloco de dados;
Aps o valor nico, colocamos todo cdigo que dever ser executado
(pode haver quantas linhas de cdigo forem necessrias);
Baseado no valor da varivel, ele verifica qual case tem esse valor e executa o cdigo correspondente;
Caso no ache nenhum valor correspondente nos cases, ele executa a

Rede e-Tec Brasil

84

Lgica de Programao

sada-padro (OutroCase em VisualG e default em Java).


Para entender melhor a estrutura de seleo Escolha - Caso, vamos a um
exemplo prtico:
Criar um menu de comandos que mostre trs mensagens, de acordo com a
opo escolhida: Bom dia, Boa Tarde ou Boa Noite.

Figura 9.1: Exemplo de estrutura de seleo em VisualG.


Fonte: Autores.

Aula 9 - Estruturas de seleo

85

Rede e-Tec Brasil

Exemplo de estrutura de seleo em Java

Figura 9.2: Exemplo de estrutura de seleo em Java.


Fonte: Autores.

Com essa estrutura, fica fcil manipular vrios fluxos de comandos, desde que consigamos quantificar as opes possveis de execuo sem usar
expresses lgicas, usando somente valores de variveis. Agora, vamos ao
resumo da aula.

Resumo
Nesta aula, vimos mais uma estrutura de linguagem, a de seleo. Mostramos que a estrutura de seleo permite manipular vrios fluxos de comandos, usando como parmetro o valor de uma varivel. Agora sua vez de
praticar.

Rede e-Tec Brasil

86

Lgica de Programao

Atividades de aprendizagem
1. Faa um algoritmo em VisualG ou em Java que use a estrutura de seleo
na seguinte situao: dado um nmero de 1 a 12, mostrar o nome do ms
correspondente. Caso o usurio no digite esse nmero, mostrar uma mensagem de erro.
2. Faa um algoritmo em VisualG que use a estrutura de seleo neste caso:
dado o nome de uma Unidade Federativa do Brasil UF, escreva a capital
dessa UF. Caso o usurio informe uma UF no existente, mostrar uma mensagem de erro.
3. Faa um algoritmo em VisualG ou em Java que, sabendo sua posio em
um campeonato, escreva as seguintes mensagens:
1 colocado: Parabns, voc o melhor.
2 colocado: Parabns, voc conseguiu.
3 colocado: Parabns, voc quase chegou l.
4 colocado em diante: Parabns, o importante competir.
4. Faa um algoritmo em VisualG ou em Java que dados dois nmeros,
mostre um menu de opes em que voc possa fazer as seguintes escolhas:
Somar os dois nmeros;
Multiplicar os dois nmeros;
Subtrair os dois nmeros;
Dividir os dois nmeros; e
Calcular o 1 nmero elevado ao 2 (possvel somente em Java necessrio pesquisar sobre as funes matemticas na linguagem).

Aula 9 - Estruturas de seleo

87

Rede e-Tec Brasil

Caro(a) estudante,
Estamos chegando ao final da disciplina Lgica de Programao. Agora, s
falta mais uma aula para fechar o contedo necessrio para que voc consiga desenvolver algoritmo de alta qualidade. Na prxima aula, veremos uma
estrutura muito importante na programao, que permite executar um conjunto de comandos mais de uma vez. At mais!

Rede e-Tec Brasil

88

Lgica de Programao

Aula 10. Estruturas de repetio

Objetivos:
reconhecer uma estrutura de repetio;
identificar os tipos de estruturas de repetio; e
aplicar estruturas de repetio em algoritmos.

Caro(a)estudante,
J tivemos a oportunidade de estudar algoritmos sofisticados. Vamos, neste
momento, ampliar ainda mais seus conhecimentos, apresentando algumas
tcnicas de programao que possibilitem repetir um bloco de comandos
vrias vezes. Vamos ao contedo!

10.1 Introduo
Em nosso cotidiano comum executarmos a mesma ao repetitivamente
at chegar a um objetivo, por exemplo, fixar um prego na madeira, quando
temos que bater no prego repetidas vezes at que ele esteja fixo o suficiente
para no cair.
Esse tipo de situao tambm muito comum na programao, onde se faz
necessrio executar o mesmo conjunto de comandos mais de uma vez para
chegar ao resultado desejado.
Se precisssemos calcular a mdia mais de uma vez, por exemplo, teramos
que executar (reiniciar) o programa CalcularMedia vrias vezes, uma ao
invivel ou, no mnimo, inconveniente.
Para resolver problemas como esse que as linguagens de programao
oferecem as estruturas de repetio (ou looping).

Aula 10 - Estruturas de repetio

89

Rede e-Tec Brasil

H um tempo, o programa
rodava no mesmo espao de
memria e consumia o mesmo
conjunto de recursos que o
sistema operacional. Essa
arquitetura de gerenciamento
de processos (programas)
era complicada, pois um
determinado problema no seu
programa poderia afetar todo o
computador.
Atualmente, nos sistemas
operacionais modernos, os
programas rodam em uma rea
protegida (mquinas virtuais) e,
caso haja algum problema nele,
apenas o programa em questo
afetado, deixando o resto do
ambiente computacional seguro
(pelo menos deveria ser assim
o funcionamento, mas at hoje
vemos alguns travamentos em
nossos computadores).

A quantidade de vezes a ser repetido pode ser ou no previamente conhecida, mas certamente deve ter um limite (ser finito). Se voc no garantir que
a repetio termine em algum momento, o seu algoritmo entra em loop
infinito, isto , ele para de funcionar, podendo at travar o computador, j
que consume muitos recursos do equipamento.

10.2 Tipos de estrutura de repetio


As estruturas de repetio podem ser de trs tipos:
Estrutura de repetio Para;
Estrutura de repetio Enquanto;
Estrutura de repetio Repita.

10.2.1 Para
A principal caracterstica da estrutura de repetio Para que ela executa
um lao de repetio por um nmero predefinido de vezes. Para tanto, a estrutura Para tem o auxlio da figura do contador, uma varivel inteira, que
tem um valor inicial e deve chegar a um valor final.
Para exemplificar esse conceito, imagine que seu treinador pea para que
voc faa 10 abdominais. O que mais importante para voc conseguir fazer esse exerccio? Se voc respondeu estar em forma, apesar de ter certa
relevncia, essa no a resposta correta. O mais importante nesse caso
saber contar at 10.
Outro aspecto importante do contador a forma de contar. Na estrutura
Para possvel contar em ordem crescente (1, 2, 3..., 10), em forma decrescente (10, 9, 8,..., 1), pulando alguns passos (0, 2, 4, 6), entre muitas outras
maneiras.
A sintaxe da estrutura de repetio Para em pseudocdigo :
para <contador> de <valorInicial> ate <valorFinal> [passo] faca
<bloco de comandos>
fimpara

Figura 10.1: Sintaxe do comando Para.


Fonte: Autores.

Rede e-Tec Brasil

90

Lgica de Programao

Onde:
contador: uma varivel do tipo inteiro que controla o nmero de repeties do lao.
valorInicial: identifica o valor inicial do contador.
valorFinal: identifica o valor final do contador, no momento que o lao
interrompido.
passo: opcional, mas, quando presente, precedida pela palavra passo,
uma expresso que especifica o incremento que ser acrescentado
varivel contadora em cada repetio do lao. Exemplo: passo 1 (a cada
passo incrementa 1 o valor do contador esse o padro, por isso pode
ser omitido; passo 5 (a cada passo incrementa em 5 o valor do contador); ou passo -2 (a cada passo diminui em 2 o valor do contador).
Como exemplos de sintaxe, temos:
Algoritmo "ExemplosPara"
var i: inteiro
inicio
// contar de 1 at 10
para i de 1 ate 10 faca
escreva (j:3)
fimpara
// contar de 10 at 1
para i de 10 ate 1 passo -1 faca
escreva (j:3)
fimpara
fimalgoritmo
Figura 10.2: Exemplos da estrutura Para em pseudocdigo.
Fonte: Autores.

A sintaxe da estrutura de repetio Para em Java :


for(valor inicial; condio de parada; incremento) {
<bloco de comandos>;
}
Figura 10.3: Sintaxe do comando for.
Fonte: Autores.

Aula 10 - Estruturas de repetio

91

Rede e-Tec Brasil

Onde:
valor inicial: uma varivel (contador) do tipo inteiro que controla o
nmero de repeties do lao.
condio de parada: uma expresso lgica que, enquanto for verdadeira, o lao (loop) acontece. Quando a expresso booleana for falsa, a
repetio para.
incremento: uma expresso aritmtica que indica o incremento ou
decremento da varivel contadora.
Como exemplos de sintaxe, temos:
// contar de 1 at 10
for (int i = 1; i <= 10; i = i + 1) {
System.out.println(i);
}
// contar 10 vezes
for (int i = 0; i < 9; i++) {
System.out.println(i);
}
// contar de 10 at 1
for (int i = 10; i >= 1; i = i - 1) {
System.out.println(i);
}
// mostrar os nmeros pares menores que 100
for (int i = 0; i < 100; i = i + 2) {
System.out.println(i);
}
Figura 10.4: Exemplos da estrutura Para em Java.
Fonte: Autores.

Para entender melhor a estrutura de repetio Para, vamos a um exemplo


prtico:
Criar um algoritmo que permita somar os N primeiros nmeros de uma sequncia de inteiros. Exemplo, para N = 5, calcular 1 + 2 + 3 + 4 + 5.

Rede e-Tec Brasil

92

Lgica de Programao

Figura 10.5: Exemplo prtico da estrutura Para em pseudocdigo.


Fonte: Autores.

Em Java, o programa da figura 10.5 ficaria da seguinte maneira:

Figura 10.6: Exemplo prtico da estrutura Para em Java.


Fonte: Autores.

Aula 10 - Estruturas de repetio

93

Rede e-Tec Brasil

10.2.2 Enquanto
A estrutura de repetio Enquanto comumente usada quando o nmero
de vezes que um bloco de comandos dever ser executado no conhecido,
diferentemente do Para, que predefinido.
Explicando melhor, o comando Para do tipo faa 10 abdominais e o Enquanto do tipo faa abdominais enquanto no estiver cansado. Perceba
que, no segundo tipo, no possvel precisar a quantidade de abdominais
que a pessoa ir fazer.
Esse tipo de estrutura s possvel porque existe um teste lgico no incio do
comando Enquanto: esse comando primeiro avalia uma expresso lgica
caso ela seja verdadeira, faz a repetio do cdigo; caso seja falsa, ela para
a repetio, saindo, assim, do loop.
A sintaxe da estrutura de repetio Enquanto em pseudocdigo :
Enquanto <expresso lgica> faca
<bloco de comandos>
FimEnquanto
Figura 10.7: Sintaxe do comando Enquanto.
Fonte: Autores.

Onde:
Expresso lgica: uma expresso que, enquanto for verdadeira, permite a execuo do bloco de comandos, mas, ao ficar falsa, o fluxo de
execuo do algoritmo sai da estrutura de repetio, parando essa atividade.
Como exemplos de sintaxe, temos:

Rede e-Tec Brasil

94

Lgica de Programao

Algoritmo "ExemplosEnquanto"
var a, b: inteiro
Inicio
a := 10
b := 20

// o loop ir executar enquanto a for menor ou igual a b

Enquanto (a <= b) faca


escreval (a, " ", b)
a = a + 1
b = b - 1
FimEnquanto
FimAlgoritmo

Figura 10.8: Sintaxe do comando Enquanto.


Fonte: Autores.

A sintaxe da estrutura de repetio Enquanto em Java :


while (expresso lgica) {
<bloco de comandos>;
}
Figura 10.9: Sintaxe do comando for.
Fonte: Autores.

O papel da expresso lgica no funcionamento da estrutura while segue os


mesmos princpios mostrados na verso em pseudocdigo.
Como exemplos de sintaxe, temos:
int a = 10;
int b = 20;
// o loop ir executar enquanto a for menor ou igual a b
while(a <= b) {
System.out.println(a + " " + i);
a++; // incrementa o valor de a em 1
b--; // decrementa o valor de b em 1
}

Figura 10.10: Exemplos da estrutura Enquanto em Java.


Fonte: Autores.

Para entender melhor a estrutura de repetio Enquanto, vamos a um


exemplo prtico:

Aula 10 - Estruturas de repetio

95

Rede e-Tec Brasil

Criar um algoritmo que mostre todos os elementos menores que 1000 na


sequncia de Fibonacci. Para conhecimento, a sequncia de Fibonacci
aquela cujo prximo elemento a soma dos dois anteriores. Ex.: 0, 1, 1, 2,
3, 5, 8, 13, 21, 34...

Figura 10.11: Exemplo prtico da estrutura Enquanto em pseudocdigo.


Fonte: Autores.

Em Java, o programa da figura 10.11 ficaria da seguinte maneira:

Figura 10.12: Exemplo prtico da estrutura Enquanto em Java.


Fonte: Autores.

Rede e-Tec Brasil

96

Lgica de Programao

10.2.3 Faa ou Repita


As estruturas de repetio Faa ou Repita, assim como o Enquanto, so
comumente usadas quando no conhecido o nmero de vezes que um
bloco de comandos dever ser executado.
A nica diferena entre eles que o Enquanto testa a expresso lgica antes de executar o cdigo e tanto o Faa quanto o Repita testam somente
depois de executar o cdigo. A principal consequncia dessa diferena
que o bloco de comandos em Faa ou Repita ser sempre executado pelo
menos uma vez. J no comando Enquanto pode acontecer que seu bloco
de comandos no seja executado nem uma vez.
No existe o equivalente da estrutura Faa no VisualG, apenas no Java e em
outras linguagens mais modernas, tais como o C#, C++ e Javascript. Analogicamente, nessas linguagens, no existe o equivalente estrutura Repita.
A principal diferena entre os comandos Faa e Repita que o primeiro
executa o loop enquanto a expresso lgica for verdadeira. O segundo executa o loop at que a expresso lgica seja verdadeira, isto , no Repita,
enquanto a expresso lgica for falsa, ele executa a repetio, no momento
em que ela se tornar verdadeira, ela sai do loop.
A seguir temos um exemplo da sintaxe do comando Repita no VisualG.
Repita
<bloco de comandos>
Ate <expresso logica>// repete at a expresso for verdadeira
Figura 10.13: Sintaxe do comando Repita.
Fonte: Autores.

Onde:
Expresso lgica: uma expresso que, enquanto for falsa permite a
execuo do bloco de comandos, mas, ao ficar verdadeira, o fluxo de
execuo do algoritmo sai da estrutura de repetio.
A seguir temos um exemplo da sintaxe do comando Faa no Java.

Aula 10 - Estruturas de repetio

97

Rede e-Tec Brasil

do {
<bloco de comandos>;
} while (expresso lgica); // repete enquanto a expresso for verdadeira
Figura 10.14: Sintaxe do comando do.
Fonte: Autores.

Onde:
Expresso lgica: uma expresso que, enquanto for verdadeira, permite a execuo do bloco de comandos, mas, ao ficar falsa, interrompida e o fluxo de execuo do algoritmo sai da estrutura de repetio.
Para entender melhor as estruturas de repetio Repita e Faa, vamos a
um exemplo prtico:
Baseado no exemplo mostrado no item 9.2.2, crie um menu de comandos
que mostre trs mensagens, de acordo com a opo escolhida: Bom dia, Boa
Tarde ou Boa Noite, e tenha uma 4 opo perguntando se o usurio deseja
sair do programa.

Figura 10.15: Exemplo prtico da estrutura Repita em VisualG.


Fonte: Autores.

Rede e-Tec Brasil

98

Lgica de Programao

Em Java, o programa ficaria da seguinte maneira:

Figura 10.15: Exemplo prtico da estrutura Faa em Java.


Fonte: Autores.

10.3 Comparao entre as estruturas de


repetio
Se voc ainda tem dvidas sobre qual estrutura de repetio usar, no h
problemas. Na verdade, voc pode usar qualquer uma, pois todas conseguem resolver uma situao que envolva repetio de cdigo.
A implementao de determinada soluo s vezes pode ser mais simples
em um tipo de estrutura do que em outro.
Mas, para conhecimento, a seguir ns temos uma tabela comparativa das
estruturas de repetio. Assim, fica mais fcil tomar deciso sobre qual usar
em cada caso.

Aula 10 - Estruturas de repetio

99

Rede e-Tec Brasil

TABELA 10.1 - Tabela comparativa entre as estruturas de repetio


Caracterstica

Para

Enquanto

Faa

Repita

Usa contador

Sim

Opcional

Opcional

Opcional

Tem quantidade predefinida

Sim

Depende

Depende

Depende

Primeiro verifica depois


executa

Sim

Sim

No

No

Primeiro executa depois


verifica

No

No

Sim

Sim

Executa enquanto a expresso lgica verdadeira

Sim

Sim

Sim

No

Executa enquanto a expresso lgica falsa

No

No

No

Sim

Fonte: Autores.

Resumo
Essa foi a nossa ltima aula. Voc estudou as estruturas de repetio para
aperfeioar determinados tipos de processo. Mostramos que, na estrutura
de deciso, o computador executa o mesmo bloco de comando quantas
vezes forem necessrias, baseado em controles bem definidos de repetio
para se chegar ao resultado pretendido.
No se esquea de realizar as atividades especficas desta aula para um melhor entendimento do assunto abordado.

Atividades de aprendizagem
1. Faa um algoritmo em VisualG ou em Java que calcule o saldo atual de
uma poupana, dado o total depositado, a porcentagem do rendimento
mensal e o nmero de meses que o valor est no banco.
2. Faa um algoritmo em VisualG ou em Java que calcule a soma dos N primeiros nmeros, onde N informado pelo usurio. Ex.: para N = 5, ento
calcular 1 + 2 + 3 + 4 + 5.
3. Faa um algoritmo em VisualG ou em Java que calcule o fatorial de um
nmero inteiro.
4. Faa um algoritmo em VisualG ou em Java que leia A e B, ambos nmeros
inteiros e positivos, e calcule AB.
5. Faa um algoritmo em VisualG ou em Java que leia um valor N inteiro e
positivo, calcule e mostre o valor de E, conforme a frmula a seguir:
E = 1 + 1/1! + 1/2! + 1/3! + ... + 1/N!

Rede e-Tec Brasil

100

Lgica de Programao

Palavras Finais
Caro(a) estudante,
Primeiramente, gostaramos de parabeniz-lo(la) por ter concludo esta disciplina do curso Tcnico em Informtica. Estamos felizes por ter completado
mais uma importante etapa na busca da aprendizagem e, consequentemente, do conhecimento. Chegamos ao final da disciplina e certamente no foi
um percurso fcil, entretanto, durante nossa caminhada, adquirimos informaes e pudemos realizar trocas de experincias, com isso estamos mais
preparados para seguir em frente e superar os novos desafios que viro.
A lgica de programao um ponto de partida. No podemos esquecer
que a busca pelo conhecimento contnua, portanto, vamos praticar, e,
como dica, por que no criar algoritmos para resolver problemas reais? A
prtica em programao o diferencial da sua vida profissional e ns a
adquirimos com exerccios e simulaes de problemas reais.
A voc que chegou at aqui o nosso parabns.

101

Rede e-Tec Brasil

Guia de Solues
Aula 1
1. Resposta pessoal.
2.
Resultado verdadeiro:
O ferro conduz eletricidade.
O ouro conduz eletricidade.
O chumbo conduz eletricidade.
A prata conduz eletricidade.
Logo, todo metal conduz eletricidade.

Resultado falso:
At agora, nenhuma mulher foi Presidente da Repblica
no Lbano.
Logo, nenhuma mulher ser Presidente da Repblica no
Lbano.

3. S h movimento no carro se houver combustvel.


O carro est em movimento.
Logo, h combustvel no carro.
4.
I-B
II - B
III - C
5. Dona Rosa est de branco.
Dona Branca est de violeta.
Dona Violeta est de rosa.
6. http://www.youtube.com/watch?v=UUd3cucmL2A

Aula 2
1. Descrever passo a passo a resoluo de um problema.

Rede e-Tec Brasil

102

Lgica de Programao

2. Ligar o computador.
Abrir o navegador.
Acessar o site do e-mail.
Digitar o usurio e a senha.
Procurar e-mail com o documento.
Se encontrar o documento, abri-lo.
3.

4. DECLARE numero, cubo: INTEIRO


INCIO
LEIA(numero)
cubo numero * numero * numero
ESCREVA(cubo)
FIM

103

Rede e-Tec Brasil

Aula 3
1. Visual Studio C#, VB, C++
NetBeans Java
Delphi Pascal
XCode Objective C
2. Visual Studio com C#:
using System;
namespaceMeusProjetos
{
classProgram
{
staticvoid Main(string[] args)
{
Console.Write("Digiteseunome: ");
string nome = Console.ReadLine();
Console.WriteLine("Seja bem vindo {0}", nome);
Console.ReadKey();
}
}
}
NetBeans com Java
Por ser um compilador Java, pode ser usado os mesmos algoritmos do Eclipse.
Delphi com Pascal
ProgramOla_Mundo;
begin
WriteLn('Ol, Mundo!');
end.
XCode com Objective-C
#import <stdio.h>
int main(void)
{
puts("Ol, Mundo!");
return 0;
}
Rede e-Tec Brasil

104

Lgica de Programao

Mais exemplos em: http://pt.wikipedia.org/wiki/Programa_Ol_Mundo


3.Os programas criados no VisualG e no Eclipse so simplesmente arquivos
armazenados no disco que podem ser visualizados pelo Windows Explorer.
Os arquivos em VisualG tm extenso .alg, e os arquivos em Java tm extenso .java.
No caso do Eclipse e outras IDEs mais modernas, so criados muitos outros
arquivos que tm como objetivo descrever o projeto como um todo, mas o
importante saber onde esto armazenados os arquivos com os algoritmos
criados.
4. possvel perceber que bem mais fcil escrever um algoritmo usando o
portugus (no caso do VisualG) do que em ingls (no caso do Java). Infelizmente, todas as maiores linguagens de programao foram criadas por pessoas cuja lngua ptria era o ingls, por isso a predominncia desse idioma
nas linguagens de programao.

Aula 4
1 e 2.
algoritmo "Mensagem"
// Autor: Liluyoud, Sara e Jos Marcio
var
// declarao de variveis
Inicio
// Algoritmo para mostrar uma mensagem
Escreva("+-------------------------------+")
Escreva("| Programa Al, Mundo
|")
Escreva("+-------------------------------+")
Escreva("| Seja bem-vindo ao maravilhoso |")
Escreva("| mundo da programao.
|")
Escreva("|
|")
Escreva("| Aproveite!!!
|")
Escreva("+-------------------------------+")
Fimalgoritmo
3.
Funo do Algoritmo

Nome

Transformar dlar em real

Cambio

Calcular o ndice de massa corporal de uma pessoa

CalculoIMC

Calcular a rea de um tringulo

AreaTriangulo

Efetuar um saque na conta-corrente

ContaSaque

105

Rede e-Tec Brasil

4.
algoritmo "Cambio"
var
valorReal, valorDolar, cotacao: real
Inicio
Escreva("Informe o valor em Dolar: ")
Leia(valorDolar)
Escreva("Informe a cotao do dia: ")
Leia(cotacao)
valorReal := valorDolar * cotacao
Escreva("O valor em real ", valorReal)
Fimalgoritmo
algoritmo "CalculoIMC"
var
peso, altura, imc: real
Inicio
Escreva("Informe seu Peso: ")
Leia(peso)
Escreva("Informe sua Altura: ")
Leia(altura)
imc := peso / (altura * altura)
Escreva("Seu IMC ", imc)
Fimalgoritmo
algoritmo "AreaTriangulo"
var
base, altura, area: real
Inicio
Escreva("Informe o largura da base do tringulo: ")
Leia(base)
Escreva("Informe sua Altura: ")
Leia(altura)
area := (base * altura) / 2
Escreva("A rea do tringulo ", area)
Fimalgoritmo
algoritmo "ContaSaque"
var
saldo, valorSaque: real
Inicio
Escreva("Informe o saldo atual da conta: ")
Leia(saldo)
Escreva("Informe o valor do Saque: ")
Leia(valorSaque)
saldo := saldo - valorSaque
Escreva("O novo saldo de ", saldo)
fimalgoritmo

Rede e-Tec Brasil

106

Lgica de Programao

Aula 5
1. a) XXX vlido
b) a123 vlido
c) (A) invlido
No podemos usar caracteres especiais no nome, nesse caso foram usados
os ( ).
d) NOME invlido
No podemos usar caracteres especiais no nome, nesse caso foram usadas
as .
e) #66 invlido
No podemos usar caracteres especiais no nome, nesse caso foi usado o #.
f) dia/ano/ms invlido
No podemos usar caracteres especiais no nome, nesse caso foi usada a /.
g) 1abc invlido
No podemos iniciar uma varivel com nmero.
h) Ol Pessoal invlido
No pode haver espaos em uma varivel, e recomenda-se que no sejam
usado acentos tambm.
i) a.b invlido
No podemos usar caracteres especiais no nome, nesse caso foi usado o ..
j) c*d invlido
No podemos usar caracteres especiais no nome, nesse caso foi usado o *.

107

Rede e-Tec Brasil

2.
Sintaxe Pseudocdigo
Sintaxe Java

O que ser armazenado?


O salrio de um funcionrio
A nota e a mdia de um aluno
Os dias de atraso de uma prestao
O CPF de uma pessoa
Se a famlia tem casa prpria
Uma carta
O endereo completo do cliente
Se o produto novo ou usado

salario: real
double salario;
nota, media: real
double nota, media;
diasEmAtraso: inteiro
intdiasEmAtraso;
cpf: caractere
stringcpf;
casaPropria: lgico
booleancasaPropria;
carta: caractere
string carta;
endereco: caractere
stringendereco;
novo: lgico
boolean novo;

Aula 6
1. Operando: so os argumentos de um operador, isto , as informaes
necessrias para um operador realizar sua funo.
Operador: funo com domnio especfico.
Expresso: uma combinao de operandos e operadores.
Exemplo: a * b
a e b so os operandos
* o operador
a * b a expresso
2. Expresses matemticas ou aritmticas
(a + b) / 2
Expresses lgicas

Rede e-Tec Brasil

108

Lgica de Programao

(a + b) <= (a * b)
3. Sendo a = 2, b = 5 e c = 3, temos:
a) b * 2 a * c=>5 * 2 2 * 3=>

10 6

=> 4

b) b + a * 2 a + c * 3=>5 + 2 * 2 2 + 3 * 3=> 5 + 4 2
+ 9 => 16
c) (b + a) * (2 a) + c * 3=>(5 + 2) * (2 2) + 3 * 3
7 * 0 + 9 => 9

=>

d) (b + a) * ((2 a) + c ) * 3 =>(5 + 2) * ((2 2) + 3) *


3 => 7 + (0 + 3) * 3 => 7 + 3 * 3 => 16
e) (c + a * a a + 1) / (c * b * a + c a * c)=> (3 + 2 *
2 2 + 1) / (3 * 5 * 2 + 3 2 * 3) = > (3 + 4 2 + 1) /
(30 + 3 6) => 6/27
4.
a) v E f OU f E v=>f OU f E v=>
b) (v E f) OU (f E v)=>

f E v

(f) OU (f)

=>

=> f

c) (NO (v E f)) E (f E v)=>(NO (f)) E (f) =>(v) E (f) => f


d) NO ((v E f) OU (f E v))
e) NO ((NO(v E f)) E (NO(f E v)))
5. Sabendo que a = 1, b = 2 e c = 3, demonstre a execuo passo a passo
da seguinte expresso:
NO (b * c <> 8 OU ((a * c) - a <= c * c / a)) OU (b MOD a = 1 E
4 MOD a = 0)
NO (2 * 3<> 8 OU ((1 * 3) - 1<= 3 * 3 / 1)) OU (2 MOD 1 = 1 E 4
MOD 1 = 0)

109

Rede e-Tec Brasil

NO (6<> 8 OU (3 - 1<= 9)) OU (0 = 1 E 0 = 0)


NO (6<> 8 OU (2<= 9)) OU (f E v)
NO (6<> 8 OU v) OU (f)
NO (v OU v) OU (f)
NO (v) OU (f)
f OU f
f

Aula 7
1.
Algoritmo "Prog_7_1"
Var
n1, n2, n3, soma: Inteiro
Inicio
Leia(n1)
Leia(n2)
Leia(n3)
soma:= n1 + n2 + n3
Escreva(soma)
FimAlgoritmo
2.
Algoritmo "Prog_7_2"
Var
n1, n2, n3, n4, media: Real
Inicio
Leia(n1)
Leia(n2)
Leia(n3)
Leia(n4)
media := (n1 + n2 + n3 + n4) / 4
Escreva(media)
FimAlgoritmo

Rede e-Tec Brasil

110

Lgica de Programao

3.
Algoritmo "Prog_7_3"
Var
n1, n2, p1, p2, media: Real
Inicio
Leia(n1)
Leia(n2)
Leia(p1)
Leia(p2)
media := ((n1 * p1) + (n2 * p2))/ (p1 + p2)
Escreva(media)
FimAlgoritmo
4.
Algoritmo "Prog_7_4"
Var
salario, porcentagem: Real
Inicio
Leia(salario)
Leia(porcentagem)
salario := salario + salario * porcentagem / 100
Escreva(salario)
FimAlgoritmo
5.
Algoritmo "Prog_7_5"
Var
salario, imposto: Real
dependentes: Inteiro
Inicio
Leia(salario)
Leia(dependentes)
salario := salario + dependentes * 32
imposto := salario * 0.275
salario := salario - imposto
Escreva(salario)
FimAlgoritmo

111

Rede e-Tec Brasil

6.
Algoritmo "Prog_7_6"
Var
valorAntigo, valorNovo, diferenca: Real
Inicio
Leia(valorAntigo)
Leia(valorNovo)
diferenca := (valorNovo - valorAntigo) / valorAntigo
diferenca := diferenca * 100
Escreva(diferenca, "%")
FimAlgoritmo
7.
Algoritmo "Prog_7_7"
Var
raio, diametro, perimetro, area, volume: Real
Inicio
Leia(raio)
diametro := 2 * raio
perimetro := 2 * 3.1415 * raio
area := 3.1415 * raio * raio
volume := 4 / 3 * 3.1415 * raio * raio *raio
Escreval(diametro)
Escreval(perimetro)
Escreval(area)
Escreval(volume)
FimAlgoritmo
8.
Algoritmo "Prog_7_8"
Var
valocidadeKM, velocidadeMS: Real
Inicio
Leia(valocidadeKM)
velocidadeMS := valocidadeKM * 1000 / (60 * 60)
Escreval(velocidadeMS)
FimAlgoritmo

Rede e-Tec Brasil

112

Lgica de Programao

Aula 8
1.
Algoritmo "Prog_8_1"
Var
n1, n2: inteiro
Inicio
Leia(n1)
Leia(n2)
Se (n1 > n2) Entao
Escreva("O primeiro nmero maior")
Senao
Escreva("O segundo nmero maior")
FimSe
FimAlgoritmo

2.
Algoritmo "Prog_8_2"
Var
n: inteiro
Inicio
Leia(n)
Se (n mod 3 = 0) Entao
Escreva(" divisvel por 3")
Senao
Escreva("No divisvel por 3")
FimSe
FimAlgoritmo
3.
Algoritmo "Prog_8_3"
Var
lado1, lado2, lado3: inteiro
Inicio
Leia(lado1)
Leia(lado2)
Leia(lado3)
Se ((lado1 + lado2 > lado3) E (lado2 + lado3 > lado1) E
(lado1 + lado3 > lado2)) Entao
Escreva(" possvel criar um tringulo")
Senao
Escreva("No possvel criar um tringulo")
FimSe
FimAlgoritmo

113

Rede e-Tec Brasil

4.
Algoritmo "Prog_8_1"
Var
n: inteiro
Inicio
Leia(n)
Se (n % 3 = 0) E (n % 4 = 0) E (n % 5 <> 0) Entao
Escreva(" divisvel por 3 e 4 e no por 5")
Senao
Escreva("No obedece as regras")
FimSe
FimAlgoritmo
5.
Algoritmo "Prog_8_5"
Var
n1, n2, n3, aux: inteiro
Inicio
Leia(n1)
Leia(n2)
Leia(n3)
Se (n1 > n2) Entao
aux := n1
n1 := n2
n2 := aux
FimSe
Se (n2 > n3) Entao
aux := n2
n2 := n3
n3 := aux
FimSe
Se (n1 > n2) Entao
aux := n1
n1 := n2
n2 := aux
FimSe
Escreva(n1, n2, n3)
FimAlgoritmo

Rede e-Tec Brasil

114

Lgica de Programao

6.
Algoritmo "Prog_8_6"
Var
salarioBruto, irpf, inss, salarioLiquido: Real
Inicio
Leia(salarioBruto)
irpf := 0
inss := salarioBruto * 0.11
Se (inss> 400) Entao
inss := 400
FimSe
Se (salarioBruto>= 3000) Entao
irpf := salarioBruto * 0.275
Senao
Se (salarioBruto>= 1500) Entao
irpf := salarioBruto * 0.15
FimSe
FimSe
salarioLiquido := salarioBruto - irpf - inss;
Escreval(irpf)
Escreval(inss)
Escreval(salarioLiquido)
FimAlgoritmo

Aula 9
1.
Algoritmo "Prog_9_1"
Var
numero: Inteiro
Inicio
Leia(numero)
Escolha numero
Caso 1
Escreva("Janeiro")
Caso 2
Escreva("Fevereiro")
Caso 3
Escreva("Maro")
Caso 4
Escreva("Abril")
Caso 5
Escreva("Maio")
Caso 6
Escreva("Junho")
Caso 7

115

Rede e-Tec Brasil

Escreva("Julho")
Caso 8
Escreva("Agosto")
Caso 9
Escreva("Setembro")
Caso 10
Escreva("Outubro")
Caso 11
Escreva("Novembro")
Caso 12
Escreva("Dezembro")
OutroCaso
Escreva("Ms Invlido")
FimEscolha
FimAlgoritmo
2.
Algoritmo "Prog_9_2"
Var
uf: caractere
Inicio
Leia(uf)
Escolha uf
Caso "RO"
Escreva("Porto Velho")
Caso "AC"
Escreva("Rio Branco")
Caso "AM"
Escreva("Manaus")
Caso "AP"
Escreva("Amap")
OutroCaso
Escreva("UF Inexistente")
FimEscolha
FimAlgoritmo

3.
Algoritmo "Prog_9_3"
Var
posicao: Inteiro
Inicio
Leia(posicao)
Escolha posicao
Caso 1
Escreva("Parabns, voc o melhor.")

Rede e-Tec Brasil

116

Lgica de Programao

Caso 2
Escreva("Parabns, voc conseguiu.")
Caso 3
Escreva("Parabns, voc quase chegou l.")
OutroCaso
Escreva("Parabns, o importante competir.")
FimEscolha
FimAlgoritmo
4.
Algoritmo "Prog_9_4"
Var
n1, n2, resultado: Real
opcao: Caractere
Inicio
Leia(n1)
Leia(n2)
Leia(opcao)
Escolha opcao
Caso "+"
resultado := n1 + n2
Caso "*"
resultado := n1 * n2
Caso "-"
resultado := n1 - n2
Caso "/"
resultado := n1 - n2
FimEscolha
Escreva(resultado)
FimAlgoritmo

Aula 10
1.
Algoritmo "Prog_10_1"
Var
valor, rendimento: Real
i, meses: inteiro
Inicio
Leia(valor)
Leia(rendimento)
Leia(meses)
Para i de 1 ate meses faca
valor := valor + valor * rendimento / 100
FimPara
Escreva(valor)
FimAlgoritmo

117

Rede e-Tec Brasil

2.
Algoritmo "Prog_10_2"
Var
i, n, soma: inteiro
Inicio
Leia(n)
soma := 0
Para i de 1 ate n faca
soma := soma + i
FimPara
Escreva(soma)
FimAlgoritmo
3.
Algoritmo "Prog_10_3"
Var
i, n, fatorial: inteiro
Inicio
Leia(n)
fatorial := 1
Para i de n ate 2 passo -1 faca
fatorial := fatorial * i
FimPara
Escreva(fatorial)
FimAlgoritmo
4.

Algoritmo "Prog_10_4"
Var
i, a, b, potencia: inteiro
Inicio
Leia(a)
Leia(b)
potencia := 1
Para i de 1 ate b faca
potencia := potencia * a
FimPara
Escreva(potencia)
FimAlgoritmo

Rede e-Tec Brasil

118

Lgica de Programao

5.
Algoritmo "Prog_10_5"
Var
n, fatorial, i, j: inteiro
neper: real
Inicio
Leia(n)
neper := 1
Para i de 1 ate n faca
fatorial := 1
Para j de 1 ate i faca
fatorial := fatorial * i
FimPara
neper := neper + (1 / fatorial)
FimPara
Escreva(neper)
FimAlgoritmo

119

Rede e-Tec Brasil

Referncias
ASCENCIO, Ana Fernanda Gomes; CAMPOS, Edilene Aparecida Veneruchida.
Fundamentos de programao de computadores: algoritmos, Pascal e C/C++. 2.
ed. So Paulo: Pearson Prentice Hall, 2005.
FORBELLONE, Andr Luiz Villar. Lgica de programao: a construo de algoritmos e
estrutura de dados. 3. ed. So Paulo: Brochura, 2005.
PUGA, Sandra; RISSETTI, Gerson. Lgica de programao e estruturas de dados:
com aplicaes em Java. 2. ed. So Paulo: Pearson Prentice Hall, 2009.
MANZANO, Jos Augusto N. G; OLIVEIRA, Jayr Figueiredo de. Algoritmos: lgica para
desenvolvimento de programao de computadores. 22. ed. So Paulo: Erica, 2009.
SEBESTA, Robert W. Conceitos de linguagem de programao. 9. ed. Porto Alegre:
Bookman, 2011.
INFOPEDIA. Enciclopdias e Dicionrios Porto Editora. Dicionrio de Lngua Portuguesa
da Porto Editora com acordo ortogrfico. Disponvel em <.http://www.infopedia.
pt/lingua-portuguesa/lgica> Acesso em: 03 set. 2013.

Obras Consultadas
ARAJO, Everton Coimbra. Algoritmos: fundamento e prtica. 3. ed. So Paulo: Visual
Books, 2007.
CARBONI, Irenice de Ftima. Lgica de programao. So Paulo: Thomson, 2003.
GOODRICH, Michael T; TAMASSIA, Roberto. Estruturas de dados e algoritmos em
Java. 4. ed. Porto Alegre: Bookman, 2007.
LAFORE, R. Estruturas de dados e algoritmos em Java. [S.l.]: Cincia Moderna,
2005.
LOPES, Anita; GARCIA, Guto. Introduo programao: 500 algoritmos resolvidos.
Rio de Janeiro: Campus, 2002.
SOARES, Mrcio Vieira; GOMES, Marcelo Marques; SOUZA, Marco Antnio. Algoritmos
e Lgica de Programao. 2. ed. So Paulo: Cengage Learning, 2011.
SZWARCFITER, J. L.; MARKENZON, L. Estruturas de dados e seus algoritmos. 3. ed.
[S.l.]: LTC, 2010.

Rede e-Tec Brasil

120

Lgica de Programao

Bibliografia Bsica
CORMEN, Thomas H. et al. Algoritmos: teoria e prtica. 3. ed. So Paulo: rica, 2012.
FARRELL, Joyce. Lgica e design de programao. So Paulo: Cengage Learning,
2009.

121

Rede e-Tec Brasil

Currculo dos Professores-autores



Liluyoud Cury de Lacerda
Mestre em Cincias da Computao pela Universidade Federal de Santa Catarina UFSC.
Bacharel em Cincias da Computao pela Universidade Federal de So Carlos UFSCar.
Coordenador do curso de Sistemas de Informao da Faculdade de Cincias Administrativas e
Tecnologia FATEC-RO.
Coordenador do curso de Sistemas para Internet da Faculdade de Cincias
Administrativas e Tecnologia FATEC-RO.
Coordenador do curso de Ps-Graduao em Desenvolvimento Web da Faculdade de Cincias Administrativas e Tecnologia FATEC-RO.
Professor titular responsvel pelas disciplinas de Algoritmos, Padres de Projeto e Inteligncia Artificial da Faculdade de Cincias Administrativas e Tecnologia FATEC-RO.
Professor titular responsvel pelas disciplinas de Programao Orientada a
Objetos e Projeto Integrador II da Faculdade de So Mateus FATESM-RO.
Analista Programador do Ministrio Pblico do Estado de Rondnia - MP/RO.
Jos Marcio Benite Ramos
Mestre em Cincias da Computao pela Universidade Federal de Santa Catarina - UFSC.
Bacharel em Cincias da Computao pela Universidade Federal de So Carlos - UFSCar.
Professor titular responsvel pelas disciplinas de
Estrutura de Dados, Programao Web e Siste-

Rede e-Tec Brasil

122

Lgica de Programao

mas Comerciais da Faculdade de Cincias Administrativas e Tecnologia


FATEC-RO.
Professor titular responsvel pela disciplina de Programao Web da Faculdade de So Mateus FATESM-RO.
Analista de sistemas e diretor da diviso esc. de Porto Velho do Servio Federal de Processamento de Dados SERPRO.
Sara Luize Oliveira Duarte
Mestre em Gesto e Desenvolvimento Regional
pela Universidade de Taubat (UNITAU).
Graduada em Processamento de Dados e ps-graduada em Desenvolvimento Web e Metodologia do Ensino Superior, ambas pela FATEC-RO.
Professora titular responsvel pela disciplina Informtica Bsica para Trabalhos Acadmicos, ofertada na modalidade semipresencial, na Faculdade de Tecnologia So Mateus FATESM-RO.
Supervisora de Tecnologia do Laboratrio de Educao a Distncia - LED e
Supervisora das salas virtuais da modalidade semipresencial da FATESM.
Professora titular responsvel pelas disciplinas TCC e Estgio Supervisionado
I e II da Faculdade de Cincias Administrativas e Tecnologia FATEC-RO.
Professora conteudista de alguns guias de estudo, como Informtica Bsica
para Trabalhos Acadmicos, Metodologia da Pesquisa Cientfica, Como Estudar na EAD, Informtica Bsica, entre outros.

123

Rede e-Tec Brasil

Вам также может понравиться