You are on page 1of 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 Direo-Geral


Carlos Rinaldi Miguel Fabrcio Zamberlan

Coordenao de Produo de Material Direo de Administrao e Planejamento


Didtico Impresso Gilberto Laske
Pedro Roberto Piloni
Departamento de Produo de EaD
Designer Educacional Aridne Joseane Felix Quintela
Neusa Blasques
Coordenao de Design Visual e Ambientes
Ilustrao de Aprendizagem
Tatiane Hirata Rafael Nink de Carvalho

Diagramao Coordenao da Rede e-Tec


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

CDU 004.42

Ficha Catalogrfica Elaborada por Almira de Arajo Medeiros CRB1 2.327)


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 es-
colas e colgios tecnolgicos e o Sistema S.

A educao a distncia no nosso pas, de dimenses continentais e grande diversidade re-


gional 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 estudan-
te 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 in-
tegradora do ensino mdio e da educao tcnica capaz de promover o cidado com ca-
pacidades 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

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

7 Rede e-Tec Brasil


Contents

Apresentao Rede e-Tec Brasil 5

Indicao de cones 7

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


nas 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 re-


as, e neste caderno vamos abordar uma das mais importantes, que a Pro-
gramao.

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 pro-
gramados, 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 Lin-


guagem de Programao, como fazer com que o computador execute os
comandos que desejamos para executar uma tarefa especfica e, principal-
mente, 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 ho-
mem 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.

9 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 proble-
mas computacionais.

As aulas esto estruturadas de forma a capacit-lo(a) na construo de al-


goritmos 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 solu-
es atravs do uso de metodologias e ferramentas que envolvam os ele-
mentos bsicos da construo de algoritmos e programas de computador.

Para alcanar esse objetivo, a disciplina foi estrutura em dez aulas. A primei-
ra 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, discor-
reremos sobre a estrutura bsica de um algoritmo, em pseudocdigo com
VisualG, e em Java com Eclipse. Na sequncia, veremos o conceito de vari-
veis, sua nomenclatura e os tipos primitivos de dados. Na sexta aula, estuda-
remos os conceitos de operadores e expresses, como empregar operadores
aritmticos, relacionais e lgicos para criar expresses complexas e, final-
mente, 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 71
8.1 Introduo 71
8.2 Tipos de estruturas de deciso 71

Aula 9. Estruturas de seleo 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

Rede e-Tec Brasil 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 pro-
blemas. 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 pala-
vra 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 pensamen-


tos 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, certa-
mente 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 exem-
plo:

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.

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


O filsofo grego Aristteles (384
a 322 a. C.), aluno de Plato, argumentos e verificar sua validade com base na razo.
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. 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:

Fonte: www.ahistoria.com.br
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.

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 capaci-
dade 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, Psicolo-
gia, 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, am-


bgua 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 racio-


cnio, 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 proble-
ma), 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 mostra-


do 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 vio-


leta, 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 trata-
remos 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 vanta-


gens e desvantagens; e

escrever algoritmo nas formas de descrio narrativa, fluxogra-


ma 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 computa-
cionais. 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. Se-
gundo o dicionrio Porto Editora, o sentido matemtico e lgico da palavra
algoritmo um conjunto de regras bem definidas para resolver um proble-
ma 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 resul-
tado esperado.

A descrio dessa resoluo de forma genrica o que chamamos de algo-


ritmo.

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 im-
portante, 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 As-


cencio 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 utilizan-
do 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 lin-
guagem 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, con-
sequentemente, 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 estrutu-
rada 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 ime-
diata.

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. Mostra-
mos 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 es-
pecficos 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 informa-
o 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 moni-
tor, 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 programa-
Alm do Java, outras
o no mercado. linguagens de programao
so bastante usadas. Podemos
citar o C# e Visual Basic para
3.2.1 Desenvolvendo algoritmos com desenvolvimento com produtos
Microsoft e Web, e o PHP,
pseudocdigos e VisualG especfico para desenvolvimento
Para desenvolver pseudocdigos, basta um papel, um lpis e muita lgica para Web. Outro padro que est
em constante transformao e
de programao. Entretanto, no possvel executar esse pseudocdigo, hoje j capaz de desenvolver
dificultando, assim, testar a lgica usada. 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


Esta a janela do VisualG 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

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


Botes de atalho como o prprio nome j diz, so atalhos para os
principais comandos do menu.
Para conhecer mais sobre o
VisualG, assista ao vdeo:
http://www.youtube.com/
watch?v=sU17rbKEPUA
rea de trabalho o local onde escrevemos nossos algoritmos em
pseudocdigo/portugol.
Ou leia o manual do VisualG do
Professor Arley Rodrigues:
http://www.facom.ufu. Janela de variveis mostra todas as variveis que esto sendo usadas
br/~claudio/Cursos/PP/Docs/
Visualg2.pdf no algoritmo.

Janela de execuo serve para mostrar a sada do sistema.

3.2.2 Desenvolvendo algoritmos com Java e


Eclipse
Ao se criar um algoritmo para solucionar determinado problema, o objetivo
poder aplic-lo na vida real, em situaes reais. Para tanto, faz-se necess-
Recomendamos que use o rio transcrever o algoritmo para uma linguagem de programao completa.
Eclipse, uma IDE que permite
o desenvolvimento rpido
de aplicaes (RAD - Rapid A linguagem escolhida para este caderno o pseudocdigo com VisualG,
Application Development) em
Java. mas o Java, embora mais complexo, o mais usado e apresenta muitos de-
talhes que, por si ss, j dariam um livro (na verdade existem inmeros livros
O Eclipse a IDE Java mais
usada e tambm gratuita. Voc dedicados linguagem Java). Por isso, iremos mostrar apenas o necessrio
pode baix-la em:
http://www.eclipse.org/
para que consigamos transcrever nossos algoritmos de VisualG para o Java.
downloads/
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 op-
es 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 ape-
nas algumas reas do mesmo:

Menu de comandos tem todas as opes disponveis no programa,


Para conhecer mais sobre o
desde salvar e recuperar projetos em Java at execut-los e test-los. Eclipse, assista ao vdeo:
http://www.youtube.com/
watch?v=Vf1AiGlaRQQ
Botes de atalho como o prprio nome j diz, so atalhos para os
principais comandos do menu.

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

Explorador de arquivos permite gerenciar todos os arquivos que fa-


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


mente chamado de console ou output.

Para cada problema dado, a partir de agora vamos resolv-los de duas for-
mas, 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 progra-
mao 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 compa-
rada do ser humano.

Voc, ao estabelecer uma conversa com outra pessoa, usando a lngua por-
tuguesa, 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 inme-


ros 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 pro-
gramador) 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 com-
pilar (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 identifi-
cao 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 v-


lidos:

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 pala-
vras 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 Java
algoritmo "AloMundo" public class AloMundo
inicio Escopo do { Escopo do
fimalgoritmo algoritmo } algoritmo

Fonte: Autores.

Aula 4 - Estrutura bsica de um algoritmo 35 Rede e-Tec Brasil


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.
Em algoritmos, muito comum
haver estruturas de programao
dentro de outras estruturas.
Assim como o algoritmo em
4.2.3 Comandos ou instrues
si tem um escopo (um espao Comandos ou instrues so mecanismos usados para dizer ao computador
vlido), cada estrutura existente
no algoritmo tambm pode o que deve ser feito. Cada instruo dada um passo sendo executado den-
ter seu prprio escopo. Nesse tro do algoritmo, e os mesmos devem estar em ordem, da primeira instruo
caso, informaes tratadas
em um escopo mais interno, at a ltima, quando o objetivo do algoritmo deve ser alcanado.
a priori, no sero acessveis
pelo externo. Esse conceito
mais abrangente de escopo ser Os comandos devem estar dentro do escopo do algoritmo no caso do
tratado nas prximas aulas.
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 Java
Algoritmo AloMundo public class AloMundo
inicio {
Escreva(Al mundo!) public static void main(String[] args)
Fimalgoritmo {
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 te-


mos 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 consi-
derar 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 esco-
pos distintos, j que ambos tm um incio e fim (delimitados por { }).

considerada uma boa prtica de programao que, ao se definir um esco-


po interno a outro, como aconteceu no exemplo, dar um espaamento di-
reita (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)
{ Escopo do
Escopo do programa
System.out.print("Al mundo!"); subprograma AloMundo
} 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 al-
goritmo no estiver documentado, voc certamente ter um trabalho enor-
me 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 delimita-
do 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 docu-
mentao 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 infor-
maes inteis.

Para mostrar a funcionalidade da documentao de seu cdigo, vamos inse-


rir 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 comen-


trios, 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 cdi-
go. 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 pseudo-
cdigo 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 pos-


svel 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 da-


dos, 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 en-
to 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


Quando usamos uma varivel, na verdade, estamos buscando aquela infor-
mao da memria e passando-a para o processador do computador, para
Qual a diferena entre um dado
e uma informao? que este realize as operaes necessrias com aquele dado.
Em um contexto de programas
de computador, podemos dizer
que os dados correspondem aos Podemos afirmar, ento, que as variveis so utilizadas para representar va-
valores fornecidos ao programa,
que depois de processados, lores genricos, que podero ser acessados e modificados de acordo com a
geram informao. lgica do algoritmo.

5.2.1 Nomenclatura de variveis


Assim como importante saber dar nome aos nossos algoritmos, primor-
dial 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 Situao
O nome de uma pessoa Nome Nomenclatura vlida
Nome vlido, mas inapropriado, j que no
A nota de um aluno n identifica o contexto da varivel. O certo
seria: nota ou notaAluno.
Nome vlido, mas inapropriado, j que o
nome contm cedilha. O certo poderia ser:
Endereo de um cliente endereo
endereco, enderecoCliente ou
clienteEndereco.
Correto. Poderia ser tambm saldoCon-
Saldo da conta contaSaldo
ta.
Nome invlido, j que no pode ser iniciado
Nome do 2 dependente 2dependente com um nmero. O certo poderia ser: se-
gundoDependente ou dependente2.
Nome invlido, j que no pode ter caracte-
Email do funcionrio e-mail res especiais, no caso o -. O certo poderia
ser: email ou apenas mail.

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 mem-
ria 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 Exemplo de nomenclatura
1 00000000
2 10010101 Varivel X
3 11000010 Varivel Z
4 00000000
5 11111111 Varivel Y
... ...
1.073.741.824 bytes 10101010
ou
1 Gbyte
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, huma-
nos, o que eles representam? Um conjunto de bits pode representar um n-
mero, 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 po- A menor unidade de informao
reconhecida pelo computador
sitivo ou negativo). o bit, que pode ser 0 (representa
o estado desligado) ou 1
(representa o estado ligado). Um
Isto , no exemplo acima, um nico byte pode representar trs valores dife- conjunto de oito bits (oito zeros
rentes, dependendo do tipo de dado. ou uns) chamado de byte. Em
um computador padro de 64
bits, significa que cada endereo
de memria contem oito bytes (8
5.3.1 Tipos de dados primitivos x 8 bits).
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.

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 ti-
pos primitivos so:

TABELA 5.3 - Tipos de dados primitivos em Java


Tipo de dados Em Java Capacidade
char Armazena um nico caractere
Literal
String Armazena um conjunto de caracteres
byte Armazena nmeros de -27 a 27-1 (28 a 127)
Armazena nmeros de -215 a 215-1 (32.768
short
a 32.767)
Inteiro
Armazena nmeros de -231 a 231-1
int
(2.147.483.648 a 2.147.483.6477)
long Armazena nmeros de -265 a 265-1
Real float Armazena nmeros de -3,4E-38 a +3,4E+38
Armazena nmeros de -1,7E-308 a
double
+1,7E+308
Armazena 0 (falso) ou diferente de 0 (ver-
Lgico boolean
dadeiro)
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 explica-


das 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 pseudoc-


digo.
Sintaxe Exemplos
var var
nomeDaVarivel: tipoDaVariavel 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 vari-


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


rivel;

O nome da varivel deve seguir as regras de nomenclatura explicadas


anteriormente;

possvel declarar diversas variveis em uma linha, desde que sejam se-
paradas 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 Exemplos
tipoDaVariavel nomeDaVariavel; 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, infor-
mar 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 ex-
presses 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 re-


solver 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 calcula-
das 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 vari-
vel. 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 Atribuio em Java
var String nome;
nome: caractere byte idade;
idade: inteiro float salario;
salario: real boolean casado;
casado: logico int populacao, rebanho;
inicio double resultado; int dias;
nome := "Joo & Silva"
idade := 40 nome = "Joo & Silva";
salario := 620.37 idade = 40;
casado := VERDADEIRO salario = 620.37;
fimalgoritmo 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 as-
pas 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 nme-
ro?

Geralmente as linguagens de programao usam a lngua inglesa como Existem linguagens de


programao que possuem o
base, e, l, o caractere que define o decimal o ponto e no a vrgula. conceito de variveis dinmicas,
isto , podem receber valores de
diversos tipos fazendo, inclusive,
O que aconteceria se tentasse atribuir um texto a um nmero ou a converso automtica de um
vice-versa? para outro. Entretanto, via de
regra, recomendado definir
tipos nas variveis. Linguagens
que obrigam a definio de tipos
Variveis de um tipo de dado s devem receber valores daquele tipo. Na em variveis so chamadas de
maioria das linguagens de programao existem comandos que permitem fortemente tipificadas.
converter um tipo para outro, por exemplo, converter um texto em um n-
mero e vice-versa (ns iremos ver isso mais adiante).

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
Do valor de a subtrado o valor
- a - b
de b
* a * b Multiplica a por b
/ a / b Divide a por b
a MOD b (pseudocdigo)
Retorna o resto da diviso inteira de
mod a % b (Java)
a por b. Ex: 5 % 2 igual a 1

Aula 6 - Operadores e expresses 53 Rede e-Tec Brasil


Incrementa o valor de a em 1. a++
retorna o valor de a antes de incre-
++ a++ ou ++a (Java)
mentar. ++a primeiro incrementa
para depois retornar o valor de a.
Subtrai 1 do valor de a. a-- retorna
o valor de a antes de subtrair. --a
-- a-- ou --a (Java)
primeiro subtrai para depois retornar
o valor de a.

Fonte: autores

Nem todos os operadores aritmticos podem ser representados por um sm-


bolo 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
Se o valor de a for maior que o de b,
> a > b a expresso verdadeira, seno
falsa.
Se o valor de a for maior ou igual ao
>= a >= b de b, a expresso verdadeira,
seno falsa.
Se o valor de a for menor que o de b,
< a < b a expresso verdadeira, seno
falsa.
Se o valor de a for menor ou igual ao
<= a <= b de b, a expresso verdadeira,
seno falsa.
a = b (pseudocdigo) Se o valor de a for igual ao de b, a
= a == b (Java) expresso verdadeira, seno
falsa.
a <> b (pseudocdigo) Se o valor de a for diferente do valor
<> a != b (Java) 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 expresso a E b s ser verda-
E Para melhor conhecimento
a && b (Java) deira se a e b forem verdadeiros.
das funes dos operadores
a OU b (pseudocdigo) A expresso a OU b s ser falsa se lgicos, acesse a pgina http://
OU pt.wikipedia.org/wiki/Tabela_
a || b (Java) a e b forem falsos.
verdade.
Se a for verdadeiro, NAO a ser
NAO a (pseudocdigo) falso.
NO
!a (Java) Se a for falso, NAO a ser verda-
deiro.
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 mni-


mas (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 ou-
tra, basta coloc-la entre parnteses. No exemplo da mdia, para o compu-
tador 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
1 * NO
2 / E
3 MOD OU
4 +
5 -

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
1 Parnteses
2 Operadores aritmticos
3 Operadores relacionais
4 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 comporta-
mento 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 impor-


tncia para a elaborao de algoritmos mais complexos, que preveem in-
meras possibilidades de execuo dependendo de cada caso analisado. Va-
mos ao resumo.

Resumo
Nesta aula, estudamos os conceitos de operadores, operandos e expresses,
que podem ser aritmticas, relacionais e lgicas, e o mais importante: mos-
tramos 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 ex-
presses aritmticas e lgicas e, por fim, voc aprender a estruturar se-
quencialmente um algoritmo em VisualG e Java, a ler dados do usurio e a
mostrar o resultado do processamento para o mesmo (a informao resul-
tante). 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 percep-
o 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 pro-


gramao 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 Nesta disciplina, vamos abordar exclusivamente aspectos da programao
imperativa, que baseada na
arquitetura von Neumann, na
estruturada, que tem como base as estruturas de controle, que so:
qual tanto os dados quanto os
programas so armazenados na
mesma memria, que, por sua Estruturas sequenciais;
vez, separada da CPU (Unidade
de Processamento de Dados),
necessitando, assim, que tanto Estruturas de deciso; e
os dados quanto as instrues
sejam transmitidos da memria
para a CPU e vice-versa. Estruturas de repetio.
Segundo Sebesta (2011, p. 38):
Nesta aula, voc ver como funciona uma estrutura sequencial.
por causa da arquitetura de
von Neumann, os recursos
centrais das linguagens
imperativas so:
As variveis, que modelam 7.2 Estrutura sequencial
as clulas de memria;
As sentenas de A estrutura sequencial em um algoritmo se d quando um conjunto de aes
atribuio, baseadas na executado em uma sequncia linear de cima para baixo, e da esquerda
operao de envio de dados
e instrues; e para a direita, na mesma ordem em que foram escritas.
A forma iterativa de
repetio nessa arquitetura.
A estrutura sequencial a base do algoritmo, pois, como vimos anterior-
Os operandos em expresses
so enviados da memria mente, so aes executadas passo a passo, em uma sequncia definida
para a CPU, e o resultado para atender a um determinado objetivo.
da avaliao da expresso
enviado de volta clula de
memria representada pelo
lado esquerdo da atribuio.
Em uma estrutura sequencial, podemos definir instrues de declarao de
variveis, atribuio, operaes aritmticas e lgicas, de entrada e de sada.
A iterao rpida em
computadores von Neumann Todas essas instrues j foram vistas, menos as duas ltimas, que veremos
porque as instrues so a seguir.
armazenadas em clulas
adjacentes de memria,
e repetir a execuo de
uma seo de cdigo
7.2.1 Sada de dados
requer apenas uma simples Para que serviria a capacidade de processar dados do computador se no
instruo de desvio.
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 tam-
bm 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 com-


putador.

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


mos 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 rece-
ber 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 tam-
bm os comandos de sada e entrada de dados em pseudocdigo e em Java.
E, finalmente, mostramos um algoritmo completo que calcula o salrio lqui-
do 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 intei-
ros 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 pro-


va, 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 elabo-


rao 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 ex-
presses 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 com-
putador 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 quan-
to em Java :

TABELA 8.1 - Sintaxe da estrutura condicional Se


Pseudocdigo Java
Se (expresso lgica) Ento // Um nico comando a ser controlado
Comando ou Bloco de Comandos if(expresso lgica)
Fimse 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 pr-


tico: 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 porcenta-
gem 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 execu-
tado 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 condicio-


nal Se.

(salarioBruto > 1500) for:


Falso Verdadeiro
Salrio bruto: 1000 Salrio bruto: 1501
Desconto de imposto de renda:0 Desconto de imposto de renda: 225.15
Salrio lquido:1000 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 ver-
dadeira 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 acon-
tece, vamos comparar o fluxograma de execuo de um algoritmo com es-
trutura 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 quan-
to em Java :

TABELA 8.3 - Sintaxe da estrutura condicional Se - Seno.


Pseudocdigo Java
Se (expresso lgica) Ento if (expresso lgica)
Comando 1 ou Bloco de Comandos 1 Comando1;
Seno else
Comando 1 ou Bloco de Comandos 1 Comando2;
Fimse

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


plo 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 Java
Se (expresso lgica 1) Ento if (expresso lgica 1) {
Bloco de Comandos 1 Bloco de Comandos 1;
Seno } else if (expresso lgica 2) {
Se (expresso lgica 2) Ento Bloco de Comandos 2;
Bloco de Comandos 2 } else if (expresso lgica 3) {
Seno Bloco de Comandos 3;
... } else if (expresso lgica 4) {
... Bloco de Comandos 4;
Se (expresso lgica N) Ento } else if... {
Bloco de Comandos N ...
Seno } else if(expresso lgica N) {
Bloco de Comandos Seno Bloco de Comandos N;
Fimse } else {
Fimse Bloco de Comandos Seno
Fimse }

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


gica 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 es-
trutura 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 verda-
deira. Aps a execuo do Bloco de Comandos 3, o fluxo de execu-
o 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 ver-
dadeira. Aps a execuo do Bloco de Comandos N, o fluxo de exe-
cuo 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 deci-
ses 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 algo-
ritmo, 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, verifi-


que 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, verifi-


que 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 Tabela INSS
Salrio at R$ 1.500,00: 0% de imposto, Imposto fixo de 11% do salrio, sendo que o total do
Salrio at R$ 3.000,00: 15% de imposto, imposto no pode ser superior a R$ 400,00.
Salrio acima de R$ 3.000,00: 27,5% de imposto,

Ol, viu como possvel um computador tomar decises e assim executar ta-
refas mais complexas? Muito legal, no? Na prxima aula, voc ir comple-
mentar 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 complemen-


tar 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, consequente-
mente, de caminhos possveis.

A instruo usada para definir uma estrutura de seleo :


Toda estrutura de seleo
pode ser substituda por uma
Escolha no VisualG; estrutura de deciso equivalente.
Geralmente, nesse caso, usada
a estrutura de deciso Se - Seno
- Se. Entretanto, em relao ao
switch no Java. desempenho, a anlise de uma
estrutura de seleo consome
menos tempo de processamento
que uma de deciso.
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 Java
Escolha(variavel) switch (variavel) {
Caso "qualquer valor 1" case valorInteiro1:
Bloco de Comandos 1 Bloco de Comandos 1;
Caso "qualquer valor 2" break;
Bloco de Comandos 2 case valorInteiro2:
Caso "qualquer valor 3" Bloco de Comandos 1;
Bloco de Comandos 3 break;
Caso ... case ...:
Caso "qualquer valor N" case valorInteiroN:
Bloco de Comandos N Bloco de Comandos N;
OutroCaso break;
Bloco de Comandos OutroCaso default:
FimEscolha Bloco de Comandos default;
break;
}

Fonte: Autores.

Entretanto, temos algumas consideraes a fazer:

No pseudocdigo, a varivel pode ser numrica e textual; no Java, so-


mente 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, neces-


srio 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 exe-
cuta 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, des-
de 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. Mostra-
mos que a estrutura de seleo permite manipular vrios fluxos de coman-
dos, 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 men-
sagem 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 men-
sagem 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 neces-


srio 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 consi-
ga desenvolver algoritmo de alta qualidade. Na prxima aula, veremos uma
estrutura muito importante na programao, que permite executar um con-
junto 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


A quantidade de vezes a ser repetido pode ser ou no previamente conheci-
da, mas certamente deve ter um limite (ser finito). Se voc no garantir que
H um tempo, o programa
rodava no mesmo espao de a repetio termine em algum momento, o seu algoritmo entra em loop
memria e consumia o mesmo infinito, isto , ele para de funcionar, podendo at travar o computador, j
conjunto de recursos que o
sistema operacional. Essa que consume muitos recursos do equipamento.
arquitetura de gerenciamento
de processos (programas)
era complicada, pois um
determinado problema no seu
programa poderia afetar todo o 10.2 Tipos de estrutura de repetio
computador. As estruturas de repetio podem ser de trs tipos:
Atualmente, nos sistemas
operacionais modernos, os
programas rodam em uma rea
protegida (mquinas virtuais) e, Estrutura de repetio Para;
caso haja algum problema nele,
apenas o programa em questo
afetado, deixando o resto do Estrutura de repetio Enquanto;
ambiente computacional seguro
(pelo menos deveria ser assim
o funcionamento, mas at hoje Estrutura de repetio Repita.
vemos alguns travamentos em
nossos computadores).
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 es-
trutura 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 fa-
zer 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 decres-
cente (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 re-


peties 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 conta-
dor); 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 verda-


deira, 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 se-


quncia 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 En-


quanto 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, per-


mite a execuo do bloco de comandos, mas, ao ficar falsa, o fluxo de
execuo do algoritmo sai da estrutura de repetio, parando essa ativi-
dade.

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 an-
tes 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. Analo-
gicamente, 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 exe-
cuta 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 ver-
dadeira

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 ex-
presso for verdadeira

Figura 10.14: Sintaxe do comando do.


Fonte: Autores.

Onde:

Expresso lgica: uma expresso que, enquanto for verdadeira, per-


mite a execuo do bloco de comandos, mas, ao ficar falsa, interrom-
pida 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 conse-
guem 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
Sim Sim No No
executa
Primeiro executa depois
No No Sim Sim
verifica
Executa enquanto a expres-
Sim Sim Sim No
so lgica verdadeira
Executa enquanto a expres-
No No No Sim
so lgica falsa

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 me-
lhor 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 pri-


meiros 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 dis-


ciplina do curso Tcnico em Informtica. Estamos felizes por ter completado
mais uma importante etapa na busca da aprendizagem e, consequentemen-
te, do conhecimento. Chegamos ao final da disciplina e certamente no foi
um percurso fcil, entretanto, durante nossa caminhada, adquirimos infor-
maes 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: Resultado falso:


O ferro conduz eletricidade. At agora, nenhuma mulher foi Presidente da Repblica
O ouro conduz eletricidade. no Lbano.
O chumbo conduz eletricidade. Logo, nenhuma mulher ser Presidente da Repblica no
A prata conduz eletricidade. Lbano.
Logo, todo metal conduz eletricidade.

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

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 exten-
so .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). Infeliz-
mente, todas as maiores linguagens de programao foram criadas por pes-
soas 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
O que ser armazenado?
Sintaxe Java
O salrio de um funcionrio salario: real
double salario;
A nota e a mdia de um aluno nota, media: real
double nota, media;
Os dias de atraso de uma prestao diasEmAtraso: inteiro
intdiasEmAtraso;
O CPF de uma pessoa cpf: caractere
stringcpf;
Se a famlia tem casa prpria casaPropria: lgico
booleancasaPropria;
Uma carta carta: caractere
string carta;
O endereo completo do cliente endereco: caractere
stringendereco;
Se o produto novo ou usado 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=> f E v => f

b) (v E f) OU (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

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


versidade Federal de Santa Catarina UFSC.

Bacharel em Cincias da Computao pela Uni-


versidade Federal de So Carlos UFSCar.

Coordenador do curso de Sistemas de Informa-


o 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 Fa-


culdade de Cincias Administrativas e Tecnologia FATEC-RO.

Professor titular responsvel pelas disciplinas de Algoritmos, Padres de Pro-


jeto e Inteligncia Artificial da Faculdade de Cincias Administrativas e Tec-
nologia 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 Uni-


versidade Federal de Santa Catarina - UFSC.

Bacharel em Cincias da Computao pela Uni-


versidade 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 Faculda-


de de So Mateus FATESM-RO.

Analista de sistemas e diretor da diviso esc. de Porto Velho do Servio Fede-


ral 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 Metodo-
logia do Ensino Superior, ambas pela FATEC-RO.

Professora titular responsvel pela disciplina In-


formtica Bsica para Trabalhos Acadmicos, ofertada na modalidade semi-
presencial, 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 Es-
tudar na EAD, Informtica Bsica, entre outros.

123 Rede e-Tec Brasil

You might also like