You are on page 1of 85

Tcnicas de Programao

Jos Marcio Benite Ramos


Liluyoud Cury de Lacerda
Sara Luize Oliveira Duarte

Tcnico em Informtica
para Internet

Tcnicas de Programao
Jos Marcio Benite Ramos
Liluyoud Cury de Lacerda
Sara Luize Oliveira Duarte

Cuiab-MT
2013

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 Cincia e Tecnologia de
Rondnia-RO, para a Rede e-Tec Brasil, do Ministrio da Educao em parceria com
a Universidade Federal do Mato Grosso.
Equipe de Reviso

Instituto Federal de Educao, Cincia e


Tecnologia de Rondnia - IFRO

Universidade Federal de Mato Grosso


UFMT


Campus Porto Velho Zona Norte

Coordenao Institucional
Carlos Rinaldi

Direo-Geral
Miguel Fabrcio Zamberlan

Coordenao de Produo de Material


Didtico Impresso
Pedro Roberto Piloni

Direo de Administrao e Planejamento


Gilberto Laske
Departamento de Produo de EaD
Aridne Joseane Felix Quintela

Designer Educacional
Claudinet Antnio Coltri Jnior
Designer Master
Neure Rejane Alves da Silva

Coordenao de Design Visual e Ambientes


de Aprendizagem
Rafael Nink de Carvalho

Ilustrao
Tatiane Hirata

Coordenao da Rede E-Tec


Ruth Aparecida Viana da Silva

Diagramao
Tatiane Hirata
Reviso de Lngua Portuguesa
Ewerton Viegas Romeo Miranda
Reviso Final
Claudinet Antonio Coltri Junior
Projeto Grfico
Rede e-Tec Brasil / UFMT
Dados Internacionais de Catalogao na Publicao (CIP)

Apresentao Rede e-Tec Brasil


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

Rede e-Tec Brasil

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

Saiba mais: oferece novas informaes que enriquecem o


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

Rede e-Tec Brasil

Contents

Apresentao Rede e-Tec Brasil

Indicao de cones

Apresentao da Disciplina

11

Sumrio

13

Aula 1. Conceitos bsicos de programao

15

1.1 Criando aplicaes

17

1.2 Compilando aplicaes

17

1.3 Operaes de entrada e sada

19

Aula 2. Variveis e tipos de dados

23

2.1 Tipos de dados

25

2.2 Variveis

26

2.3 Constantes

27

2.4 Declarao de variveis

28

2.5 Atribuio de valores

28

2.6 Tipos de dados primitivos

29

Aula 3. Estruturas de controle

33

3.1 Comandos de deciso

34

3.2 Comandos de repetio

39

Aula 4. Programao modular

47

4.1 Mdulo

48

4.2 Declarando um mdulo

49

4.3 Utilizando mdulos

50

4.4 Modularizando um programa

50

Aula 5. Funes e procedimentos

53

5.1 Varivel local e global

54

Palavra dos Professores-autores


Caro(a) estudante,
Seja bem-vindo(a) disciplina de Tcnicas de Programao.
Iniciaremos nossa jornada rumo ao conhecimento das tcnicas de programao, em que veremos conceitos, boas prticas e mecanismos para criao de
programas utilizando uma linguagem de computador.
Parabenizamos sua iniciativa de realizar este curso. Somos seres humanos, e
como tais, temos um temor inicial ao adentrar em um mundo desconhecido.
Mas somos movidos pela curiosidade, pela vontade de aprender mais, e essa
fora nos permite enfrentar esse receio e conquistar novos mundos.
O esforo empreendido durante esta jornada ser recompensado com o conhecimento, o maior bem que podemos ter. O conhecimento adquirido nunca ser tirado de voc. Ele pode ser compartilhado, mas nunca subtrado, e
atravs dele que podemos abrir novas portas, aproveitar as oportunidades
que o mercado ir nos oferecer.
Vale ressaltar que este material apenas uma parte de um conjunto de acontecimentos que compem a trajetria dos estudos que voc dever realizar.
Dever ser complementado atravs da utilizao do ambiente virtual, do
apoio do professor tutor, do aprofundamento dos contedos proporcionados pelos livros indicados etc. Este material o incio para o aprendizado do
que a disciplina deve oferecer. No deixe de acompanhar o recurso saiba
mais, que far indicaes de ampliaes possveis e importantes para o
aprofundamento do aprendizado.
Muito importante tambm a realizao das atividades propostas. Nunca
deixe de execut-las, o momento indispensvel de trabalho, no qual voc
ir imergir na disciplina com suas reflexes.
Bom estudo.
Professores.

Rede e-Tec Brasil

Apresentao da Disciplina
A disciplina de Tcnicas de Programao compreende os conceitos e boas
prticas para a criao de programas de computadores, atravs de tcnicas e
recursos como: variveis, tipos de dados, modularizao, estruturas de controle, funes e procedimentos e recursividade.
Veremos que a construo de programas deve possuir caractersticas como
correo, flexibilidade, eficincia e facilidade de compreenso.
O entendimento e utilizao das variveis, tipos de dados, modularizao,
estruturas de controle, funes, procedimentos e recursividade, so essenciais formao do(a) profissional da rea de tecnologias da informao.
Ao final desta disciplina voc dever possuir habilidades para desenvolver programas de computador, seguindo as especificaes e paradigmas
da lgica de programao e das linguagens de programao. Voc ser
preparado(a) para utilizar as tcnicas de refinamento sucessivo, recursividade
e modularizao, alm dos conceitos de manipulao de dados na memria
do computador. Com isso, ser capaz de criar programas utilizando recursos
de tipos de dados, funes e procedimentos, os quais possibilitaro mais
eficincia e melhor desempenho dos programas criados.
essencial que voc relembre os conceitos utilizados em disciplinas anteriores para um melhor aproveitamento desta disciplina.
As aulas esto estruturadas de forma a conduzi-lo(a) s tcnicas de programao e dar a viso para utilizao dos recursos mais adequados para
criao de programas de computadores.

11

Rede e-Tec Brasil

Sumrio
Aula 1. Conceitos bsicos de programao

15

1.1 Criando aplicaes

17

1.2 Compilando aplicaes

17

1.3 Operaes de entrada e sada

19

Aula 2. Variveis e tipos de dados

23

2.1 Tipos de dados

25

2.2 Variveis

26

2.3 Constantes

27

2.4 Declarao de variveis

28

2.5 Atribuio de valores

28

2.6 Tipos de dados primitivos

29

Aula 3. Estruturas de controle

33

3.1 Comandos de deciso

34

3.2 Comandos de repetio

39

Aula 4. Programao modular

47

4.1 Mdulo

48

4.2 Declarando um mdulo

49

4.3 Utilizando mdulos

50

4.4 Modularizando um programa

50

Aula 5. Funes e procedimentos

53

5.1 Varivel local e global

54

5.2 Procedimentos

54

5.3 Funes

56

Aula 6. Recursividade

61

6.1 Recurso

63

6.2 Algoritmo recursivo

64

13

Rede e-Tec Brasil

Rede e-Tec Brasil

Palavras Finais

67

Guia de Solues

68

Referncias

81

Currculo dos Professores-autores

82

14

Aula 1. Conceitos bsicos de programao

Objetivos:
entender o que um algoritmo;
criar uma aplicao;
reconhecer o conceito de compilao de aplicaes; e
conceituar entrada e sada de dados.

Ol! Seja bem-vindo(a) nossa primeira aula da disciplina de Tcnicas de


Programao. Nesta aula veremos as ferramentas necessrias para criarmos
um programa de computador e execut-lo. Inicialmente sero abordados os
principais conceitos para compreendermos como um programa organizado e executado pelo computador e como podemos interagir com ele, isto ,
enviar e receber informaes.
Vamos comear?
Bem, para iniciarmos a nossa aula vamos lembrar que podemos associar a
cada tarefa que realizamos cotidianamente um conjunto de aes que devem ser executadas, muitas vezes em uma ordem predefinida, para que possamos conclu-las. Fazer um simples caf ou trocar o pneu de um veculo so
tarefas que necessitam de um planejamento de aes para que possamos,
ao final deste, cumpri-las. Em computao, damos o nome de algoritmo a
esse planejamento das aes, no qual definimos a ordem, a repetio e as
condies que cada ao dever ser executada.
Vamos ver o exemplo de uma receita de bolo:

Aula 1 - Conceitos bsicos de programao

15

Rede e-Tec Brasil

Receita de bolo
Misture os ingredientes
Unte a forma com manteiga
Despeje a mistura na forma
Se houve coco ralado ento despeje
sobre a mistura
Leve a forma ao forno
Enquanto no corar deixe a forma no
forno
Retire do forno
Deixe esfriar
Figura 01: esquema de um algoritmo em linguagem natural.
Fonte: Internet - http://www.vivaolinux.com.br/artigo/Otimizacao-de-algoritmos?pagina=2, acessado em 05/05/2013.

Agora que compreendeu o que um algoritmo, podemos entender o que


um programa.
Os programas de computadores podem ser considerados como algoritmos
escritos numa linguagem de computador (Java, C#, entre outras) e que por
este so executados.
Devem ser definidas as instrues que o programa dever executar, respeitando a ordem estabelecida, as condies necessrias e a necessidade de
repetir determinado processo.
Podemos associar um programa de computador s instrues de um manual, em que se seguirmos as especificaes, podemos montar um determinado produto ou at mesmo fazer um bolo.
Os programas de computador, escritos em uma linguagem de programao,
devem ser traduzidos para a linguagem que a mquina possa compreender (Programa Objeto).

Figura 02: Converso de Algoritmo em Programa Objeto.


Fonte: autor

Rede e-Tec Brasil

16

Tcnicas de Programao

1.1 Criando aplicaes


O cdigo fonte poder ser criado em um editor de texto ASCII puro. Por
exemplo: Bloco de Notas do Windows.
Depois de digitado, o mesmo dever ser salvo com um nome e com a extenso .java.

Um editor de texto ASCII


aquele que s gera caracteres
ASCII, isto sem qualquer tipo
de informaes de formatao.

A seguir, veja o cdigo fonte da aplicao Ol Mundo! (arquivo: OlaMundo.java):


public class OlaMundo {

public static void main (String args[]) {

System.out.println(Ol Mundo!);

}
}

Obs.: o nome do arquivo dever ter o mesmo nome do programa criado.


public class OlaMundo -> OlaMundo.Java

Aps a criao do cdigo, preciso transform-lo em uma linguagem mais


prxima ao computador. o que chamamos de compilao.

1.2 Compilando aplicaes


Compilar um programa converter o cdigo fonte, escrito na linguagem de
programao, em um cdigo objeto equivalente, o qual pode ser executado
pelo computador.
A compilao de aplicaes pode ser compreendida como a transformao
do cdigo fonte de uma linguagem de programao de alto nvel (linguagem mais prxima da linguagem do programador, por exemplo, JAVA) em
uma linguagem de programao em baixo nvel (linguagem mais prxima do
computador, por exemplo, Assembly ou Bytecode).

Aula 1 - Conceitos bsicos de programao

17

Bytecode pode ser considerado


como um estgio intermedirio
entre o cdigo fonte (escrito
numa linguagem de programao) e o programa final
executvel. Ele resultante
de um processo semelhante
compilao. O bytecode ser
interpretado por um aplicativo
que far a sua execuo.

Rede e-Tec Brasil

Figura 03: Compilao de um programa em JAVA.


Fonte: Internet - http://bug-digital.blogspot.com.br/2011/04/java-o-que-e-como-funciona.html, acessado em 05/05/2013.

Para compilar a aplicao, basta digitar o comando:


javac OlaMundo.java

Esse comando gera o arquivo OlaMundo.class, que o bytecode da aplicao.


Para execut-lo basta digitar o comando:

IDE Integrated Development


Enviroment um ambiente
integrado para desenvolvimento
de software

java HelloWorld

Podemos tambm utilizar um IDE para escrever nossos programas e execut-los.

1.2.1 Descrio dos comandos


Acesse o site para maiores
informaes sobre o IDE
Eclipse: http://www.
cin.ufpe.br/~phmb/
ip/MaterialDeEnsino/
IntroducaoAoEclipse/
IntroducaoAoEclipse.html

Para que voc compreenda melhor, a seguir faremos uma breve descrio
dos comandos utilizados no exemplo anterior.
a) comentrios:
// Comentrio de uma linha, todo o restante da linha ignorado.
/* Insira aqui o texto a ser ignorado */

Rede e-Tec Brasil

18

Tcnicas de Programao

b) class: palavra reservada que marca o incio da declarao de uma classe.


Os conceitos de classes sero apresentados na disciplina de Programao
Orientada a Objetos.
c) public: define a visibilidade. Ver item class.
d) OlaMundo: nome dado a classe.
e) static: indica que o mtodo pode ser invocado, mesmo quando no foi
criado o objeto para a classe. Ver item class.
f) void: valor de retorno do mtodo. Quando no retorna nenhum valor, ele
retorna void (espcie de valor vazio que deve ser especificado).
g) main: nome particular de mtodo que indica para o compilador o incio
do programa. Veremos como utilizar mtodos na aula referente a funes e
procedimentos.
h) (String args[ ]): argumento de main, um vetor de Strings formado quando so passados ou no argumentos atravs da invocao do programa.
Esses comandos contm conceitos, os quais sero vistos mais adiante. Sendo
assim, vamos por enquanto apenas utiliz-los.
i) { ... }: delimitam um bloco de cdigo. Definem tambm o incio e fim da
classe.
j) System.out.println("Ol Mundo!"): por hora, guardar essa linha de cdigo como o comando para imprimir mensagens na tela.
k) ;: ponto e vrgula separa operaes.

1.3 Operaes de entrada e sada


Os clculos realizados pelo computador no teriam nenhuma utilidade se
no pudssemos fornecer os dados sobre os quais esses clculos sero efetuados e, segundo, ver os seus resultados.
Os programas de computadores devem receber os dados de fontes externas
(entrada de dados, por exemplo, informados pelo usurio), efetuar os clculos e fornecer uma sada, isto , os resultados obtidos.

Aula 1 - Conceitos bsicos de programao

19

Rede e-Tec Brasil

a) Sada: fornece os resultados obtidos. A sada para a tela (console da aplicao) usa a seguinte estrutura:
System.out.println(Imprime algo na tela");

A classe scanner implementa as


operaes de entrada e sada de
dados pelo teclado no console.

b) Entrada: operao de recepo dos dados. Utilizaremos a classe Scanner para a leitura dos dados informados pelo usurio e os armazenaremos
em uma varivel.
Exemplo:

Para aprender mais sobre a


Classe Scanner, acesse o site:
http://www.devmedia.com.
br/entrada-de-dados-classescanner/21366

import java.util.Scanner;

//Declarando uma varivel (objeto) do tipo Scanner


Scanner entrada = new Scanner(System.in);
//Declarao de variveis sero vistas na aula seguinte.
Por enquanto vamos
// us-la para podermos escrever o programa.
int valor;
System.out.println("informe o valor:");
//Utilizando a varivel entrada, da classe Scanner, para
obter a informao
//digitada pelo usurio. entrada.nextInt() ir ler um
valor inteiro informado na
// console
int dado = entrada.nextInt();
System.out.println("O valor informado foi: " + dado);

A primeira linha do exemplo define que iremos utilizar os recursos disponibilizados pela classe Scanner, presente na biblioteca java.util.
A classe Scanner tem como uma das vantagens a implementao de operaes de entrada e sada de dados pelo teclado na console da aplicao.
Podemos obter outros tipos de valores da console atravs dos seguintes comandos:

Rede e-Tec Brasil

20

Tcnicas de Programao

System.out.print("digite uma linha: ");


// Ler uma linha de caracteres
String linha = s.nextLine();
System.out.print("digite um numero: ");
//Ler um nmero inteiro
int i = s.nextInt();
System.out.print("digite um numero: ");
//Ler um nmero decimal
double d = s.nextDouble();

Resumo
O sucesso da execuo de uma tarefa depende da forma como vamos execut-la. Se planejarmos previamente as aes que sero realizadas, teremos
maior chance de concluirmos a tarefa de forma mais eficiente. Vimos nessa
aula que os computadores necessitam de instrues adequadas para resolver
nossos problemas. Essas instrues devem ser escritas em uma linguagem
que possa ser convertida de maneira que os computadores passem a entender nossas instrues. Os programas devem ser escritos e posteriormente
compilados, processo necessrio para podermos execut-los. As informaes
que passamos ao programa so chamadas de Entradas e as informaes
que o programa nos fornece so chamadas de Sadas.

Atividades de aprendizagem
1. Dado o algoritmo abaixo, Calcular Valor Pedido, identifique os dados
de entrada, qual o processamento e os dados de sada:
Leia o cdigo do item.
Leia o valor do item.
Leia a quantidade do item.
Calcule o valor total do pedido (quantidade * valor do item).
Escreva o valor total do pedido.
2. Crie um programa que leia o nome do usurio e sua idade, depois escreva
os valores obtidos.
3. Faa um programa que leia dois valores inteiros e armazene cada um em
uma varivel, depois troque os valores das duas variveis entre si. Como sa-

Aula 1 - Conceitos bsicos de programao

21

Rede e-Tec Brasil

da, escreva os valores lidos.


E assim terminamos a nossa primeira aula da disciplina de Tcnicas de Programao. Espero voc na prxima aula. At l.

Rede e-Tec Brasil

22

Tcnicas de Programao

Aula 2. Variveis e tipos de dados

Objetivos:
conceituar tipos de dados;
identificar o conceito de variveis;
reconhecer o que so constantes;
atribuir valores variveis e constantes; e
definir o que so tipos de dados primitivos.

Seja bem-vindo(a) nossa segunda aula. Agora que voc j compreendeu os


conceitos iniciais da nossa disciplina, vamos aprofundar um pouquinho mais.
Pois bem, sabemos que na Matemtica uma varivel a representao simblica dos elementos de certo conjunto de valores. As variveis so utilizadas
para representar e armazenar um determinado valor em uma frmula matemtica, o qual no conhecido ou pode variar.

Figura 04: Variveis e frmulas matemticas.


Fonte: Internet - http://mauricioromao.blog.br/vagas-legislativas-e-o-emprego-da-formula-dhondt-no-brasil/, acessado em
05/05/2013.

Aula 2 - Variveis e tipos de dados

23

Rede e-Tec Brasil

Podemos fazer uma comparao com algoritmos, os quais so destinados


a resolver um problema no computador. Cada varivel corresponde a uma
posio de memria, cujo contedo pode variar ao longo do tempo durante
a execuo deste algoritmo. Embora a varivel possa assumir diferentes valores, ela s pode armazenar um valor a cada instante.

Programa de computador
pode ser considerado como
um conjunto de instrues
(comandos) que descrevem
uma tarefa a ser realizada pelo
computador.

Nesta aula voc ver que os computadores devem ser preparados para receberem as informaes que sero fornecidas, apresentadas e tratadas pelos
programas, atravs da utilizao de variveis. Os programas de computadores que sero desenvolvidos devem estabelecer um contrato com o sistema operacional do computador. As informaes que sero tratadas devem
respeitar os tipos definidos nesse contrato, isto , quando voc definir que
ir trabalhar com nmeros em um determinado momento, apenas valores
numricos (existem vrios tipos numricos) devero ser informados.
Para tanto, voc ser apresentado(a) aos tipos mais comuns de dados suportados pela linguagem de programao (ser utilizado o JAVA), como caracteres, nmeros, datas, valores booleanos, e ver tambm como as informaes so representadas em um programa e armazenadas na memria do
computador atravs de variveis.

Figura 05: Bits formando uma luz no fim do tnel.


Fonte: Internet - http://scottkantner.com/bits-bytes-and-bandwidth/, acessado em 07/03/2013.

Vamos iniciar a nossa aula compreendendo o que so tipos de dados.

Rede e-Tec Brasil

24

Tcnicas de Programao

2.1 Tipos de dados


Os tipos de dados definem uma combinao de valores que uma varivel
pode receber e o conjunto de operaes que esta pode executar.
Os valores expressos podem ser de forma genrica, numricos (1, 25,
5,3), caracteres (a, abc, Joo), datas (10/10/2012, 20 de maio
de 2010) etc.

Figura 06: Tipo de dado.


Fonte: Internet - http://www.efetividade.blog.br/2011/05/26/voce-sabe-como-funciona-as-memorias-do-seu-pc/, acessado
em: 07/03/2013.

Precisamos lembrar que as operaes realizadas entre nmeros do tipo in


teiro so diferentes dos nmeros reais (com casas decimais), os quais podem
ser divididos.
O mesmo vale para tipos como caracteres que no possuem operaes
matemticas, mas podem, por exemplo, ser concatenados (ca + sa =
casa). Como as variveis dependem do sistema operacional e da linguagem utilizada, elas podem possuir muitas variantes.

Concatenar consiste em
unir conjuntos de caracteres
transformando-os em um s.

At aqui est tudo bem? Conseguiu compreender o conceito? Vamos prosseguir?


Ento vamos l.
importante salientar que definir o tipo de dado da informao que ser
manipulada muito importante para o SO (Sistema Operacional) determinar
o espao que ser reservado, pois atravs dele que o SO solicitar uma
poro da memria para armazenar a informao tratada.
Outra questo que, a obteno da informao da memria tambm depende do tipo de dado, pois so eles que possibilitam ao compilador realizar

Aula 2 - Variveis e tipos de dados

25

Um compilador um programa
que converte um cdigo descrito
em uma linguagem de alto nvel
para um programa em linguagem simblica compreensvel
pelo processador.

Rede e-Tec Brasil

as converses dos dados em memria para obter os valores manipulados nos


programas. Lembre-se, como foi apresentado em Fundamentos da Informtica, os dados em memria so representados apenas por 0 e 1, e atravs do tipo de dado que esse conjunto de nmeros binrios so definidos
como uma letra ou um nmero.
Para pensar
Imagine que lhe peamos para buscar um recipiente para armazenar uma
coisa. Sem saber o que , voc poderia pegar uma garrafa de 2 litros ou
um pequeno saco de papel. Se pretendamos lhe entregar um litro de gua,
a garrafa atenderia, mas o saco de papel no iria servir. Agora imagine que
a quantidade poder ser imensa, ficaria impossvel idealizar o recipiente correto. Isso vale para o SO, quando um sistema vai manipular informaes.
Elas devem ser tipificadas para que no ocorra uma reserva de espao em
memria insuficiente ou extremamente grande.
Agora que j compreendemos a importncia da definio do tipo de dados,
vamos falar sobre as variveis.

2.2 Variveis
As variveis so utilizadas pelos programas para armazenarem as informaes manipuladas durante suas execues. Elas representam espaos na memria RAM e, atravs delas, os programas podem acess-las e/ou modific-las.
Hexadecimal um sistema de
numerao que representa os
nmeros em base 16 (0, 1, 2, 3,
4, 5, 6, 7, 8, 9, A, B, C, D, E, F).

A memria principal (RAM) de um computador dividida em pequenos pedaos, e cada um identificado por um endereo (valor em hexadecimal).
Todas as informaes que sero manipuladas pelo programa devem ser armazenadas na memria.
Quando os programas necessitam usar as informaes, eles devem se referenciar ao endereo onde elas esto armazenadas. Atualmente, as memrias
podem possuir bilhes de endereos, todos representados em hexadecimal.
Trabalhar com valores hexadecimais muito complexo, assim usamos um
apelido (nome) para uma posio na memria, a varivel.
Apresentaremos a seguir algumas caractersticas que devem ser observadas
ao criarmos uma varivel:

Rede e-Tec Brasil

26

Tcnicas de Programao

Nome: conjunto de caracteres que identificar a varivel. Deve ser nico


dentro de seu escopo (espao de atuao). Ex.: nome, data nascimento.
Valor: (contedo) dado contido na varivel.

O escopo de uma varivel a


parte do programa em que ela
pode ser utilizada. O escopo
pode ser tambm aplicado aos
mtodos.

Tipo: tipo de dados que ser armazenado nas variveis. Como visto anteriormente, podem ser nmeros: 12, 2,5; caracteres: ol, abcd;
datas 12/12/2012, entre outros, que sero apresentados mais a frente.

Figura 07: Estrutura de uma varivel


Fonte: Internet - http://www.criarprogramas.com/2011/06/c-tipos-de-dados-e-declaracao-de-variaveis/,
acessado em 07/03/2012.

Agora que j compreendemos as variveis, vamos entender o conceito de


constantes.

2.3 Constantes
Constantes so endereos de memria destinados a armazenar informaes
fixas, inalterveis, durante a execuo do programa.
As constantes diferem das variveis, pois estas podem ter seus valores alterados, j as constantes, como o prprio nome diz, no.
Toda constante representa um dado, portanto necessrio declarar seu tipo.
Para declararmos uma constante, utilizamos a palavra chave final. Uma
constante global (declarada no corpo da classe) deve ser precedida da palavra chave static.

Aula 2 - Variveis e tipos de dados

27

Rede e-Tec Brasil

Representao:
static final int op1;
final int op2;

2.4 Declarao de variveis


Como vimos anteriormente, variveis correspondem a uma posio de memria, cujo contedo pode variar durante a execuo do programa.
Embora possa assumir diferentes valores, ela s pode armazenar um valor a
cada instante.
Toda varivel identificada por um nome ou identificador. Vamos ver como
so as regras para a sua construo:
No usar palavras reservadas (comandos da linguagem).
Possuir como 1 caractere uma letra ou _.
Ter como demais caracteres letras, nmeros ou _.
Ter no mximo 127 caracteres.
No possuir espaos em branco.
Exemplos:
public
public
public
public

float raio
float comprimento
int nota
String nome

2.5 Atribuio de valores


A operao de atribuio consiste em fazer com que uma varivel receba
um determinado valor. Para atribuir valores a variveis, devemos usar o sinal
de =.

Rede e-Tec Brasil

28

Tcnicas de Programao

a = 2;
b = 3;
c = a + b;

Exemplos:
Como vimos anteriormente, as constantes tm valores eternamente iguais.
Para atribuio usamos o sinal de =.
Exemplos:
PI = 3.14;
Variveis podem ser atribudas em forma de expresses, como:
int x, y, z;
x = y = z = 0;

As trs variveis x, y e z recebem o valor 0;


A seguir, apresentaremos um exemplo da utilizao de variveis e constantes:
public class Teste {

static final float pi = 3.14;

public static void main (String args[]) {

float raio = 10;

float comprimento = raio * 2 * pi;

System.out.println(O comprimento : + comprimento);
}
}

2.6 Tipos de dados primitivos


Vimos que os tipos de dados so uma combinao de valores que uma varivel pode armazenar, o que pode variar conforme o sistema operacional e a
linguagem de programao. Assim, uma varivel nomeada nome utilizada
para armazenar nomes de pessoas dever estar associada a um tipo de dado
compatvel com os valores armazenados.
De acordo com a linguagem de programao utilizada, o tipo de um dado
verificado de maneira diferente, conforme a anlise do compilador. O Java
uma linguagem compilada e possui seu conjunto de tipos de dado bsico.

Aula 2 - Variveis e tipos de dados

29

Acesse o site para maiores


informaes sobre a linguagem
JAVA: http://www.java.
com/pt_BR/download/faq/
whatis_java.

Rede e-Tec Brasil

Esses tipos so conhecidos como tipos primitivos, pois so suportados diretamente pelo compilador, e so utilizados durante a codificao na definio
de variveis.
Tipo

O UNICODE uma notao que


utiliza uma tabela contendo
representao numrica dos
caracteres.
Ponto flutuante um formato
de representao dos nmeros
reais, onde temos uma parte
inteira a vrgula e a parte
fracionria.

Descrio

Tamanho

boolean

Pode assumir o valor true (verdadeiro) ou o valor false (falso)

1 bit

Char

Caractere em notao Unicode. Armazena dados alfanumricos.

16 bits

Byte

Inteiro. Pode assumir valores entre -128 e 127.

8 bits

Short

Inteiro. Valores possveis: -32.768 a 32.767

16 bits

Int

Inteiro. Valores entre -2.147.483.648 e 2.147.483.647.

32 bits

Long

Inteiro. Valores entre -9.223.372.036.854.770.000 e


9.223.372.036.854.770.000.

64 bits

Float

Real (representa nmeros em notao de ponto flutuante). Valores


entre -1,4024E-37 e 3.40282347E + 38

32 bits

double

Real (representa nmeros em notao de ponto flutuante). Valores


entre-4,94E-307 e 1.79769313486231570E + 308

64 bits

A tabela acima representa alguns dos principais tipos de dados utilizados


para manipulao de informaes em programas desenvolvidos na linguagem JAVA. A coluna Tamanho especifica o espao de memria utilizado
por cada tipo. Sendo assim, muito importante especificar adequadamente
o tipo empregado para no reservarmos espaos de memria que no sero
utilizados e, tambm, no subdimensionar o espao a ser utilizado.

Resumo
Vimos nessa aula que existem vrios tipos de dados, os quais so utilizados
para especificar que tipo de informao ser armazenado em uma varivel. A
manipulao de informaes depende das especificaes corretas dos tipos
de dados. O tipo de dado informa ao compilador que tipo de informao
est sendo tratada, isto , se os valores binrios armazenados representam
nmeros, caracteres ou outros valores e permite que uma poro correta
da memria seja reservada para o armazenamento da informao. Vimos
tambm como manipulamos as variveis, como atribumos valores a uma
varivel e como podemos recuper-los.

Atividades de aprendizagem
1. Informe qual o valor da varivel resultado, em cada linha, aps a execuo
das seguintes operaes:
a) resultado = 3 + 6; x = 2; y = 3;
b) resultado = resultado / y x;

Rede e-Tec Brasil

30

Tcnicas de Programao

c) resultado = 4; x = 2;
d) resultado = resultado * x;
2. Faa um programa que calcule a mdia de trs valores informados pelo
usurio.
3. Faa um programa que, dado uma temperatura em graus Celsius, converta-a para Fahrenheit, conforme a frmula:
F = (1.8 * C) + 32
E ento, fez todos os exerccios propostos? Consegui resolv-los? Espero que
sim. Assim terminamos o nosso segundo encontro. Espero por voc na nossa
terceira aula. At l!

Aula 2 - Variveis e tipos de dados

31

Rede e-Tec Brasil

Aula 3. Estruturas de controle


Objetivos:
identificar os comandos de deciso;
elaborar um comando de deciso;
identificar os comandos de repetio; e
elaborar um comando de repetio.

Ol! Estamos chegando metade da nossa disciplina! Nesta aula, voc ser
apresentado(a) s vrias estruturas da linguagem utilizadas para mudar o
fluxo sequencial de execuo das instrues nos programas. Sero apresentadas estruturas de desvios (condicionais) que quebraro o fluxo das instrues, permitindo que o programa siga por um caminho ou outro e estruturas
de repetio que possibilitaro que um conjunto de instrues possa ser
executado repetidas vezes.
Muitas vezes nos deparamos com situaes em que devemos escolher um
caminho, entre vrios, para podermos prosseguir. Se estivermos diante de
uma bifurcao, em nosso caminho, devemos fazer uma escolha entre seguir por um ou outro lado.
Normalmente ponderamos
os prs e contras para essa
escolha e seguimos em
frente. As execues dos
programas de computador
tambm necessitam realizar escolhas para a correta
resoluo dos problemas,
nesse caso os caminhos
seriam as sequncias de
Figura 08: Escolha de um caminho
aes que devem ser exeFonte: Internet - http://www.vivaazul.com.br/artigo_op.php, acessado
cutadas.
em 30/04/2013.

Aula 3 - Estruturas de controle

33

Rede e-Tec Brasil

Os programas de computadores so basicamente compostos por uma sequncia de comandos (instrues) organizados de tal maneira a resolver um
problema proposto.
Essa forma de execuo, em sequncia, denominada fluxo sequencial de
execuo.
Em muitos casos, so necessrias alternativas no fluxo de execuo (bifurcao-seleo) ou a repetio de instrues (comandos) para a resoluo de
um problema.

Figura 09: Fluxo de execuo de instrues


Fonte: O autor.

Para que tudo isso acontea, necessria a tomada de deciso.

3.1 Comandos de deciso


Como o prprio nome indica, so utilizados para adotar uma deciso baseada no resultado da verificao de uma condio e seleciona um caminho a
ser seguido, contendo as aes possveis para serem executadas.
Os comandos de decises fornecem desvios, possibilitando que o programa
siga um caminho ou outro, isto , proceda de uma ou outra maneira (executa aes em um caminho e outras aes no caminho alternativo). A seguir
apresentaremos as principais estruturas de deciso:
Se Ento;
Se Ento Seno;

Rede e-Tec Brasil

34

Tcnicas de Programao

Ninhos de Se; e
Caso.
Vamos aprender um pouco mais sobre cada um desses comandos.

3.1.1 Comando SE
Estrutura de deciso mais comum nos programas. Este comando realiza o
desvio da sequncia de instrues, permite a execuo de uma instruo,
ou bloco de instrues, somente se a condio de verificao, atribuda ao
comando, for verdadeira. Em caso contrrio, condio falsa, as instrues
no sero executadas.
Sintaxe:
if (<condio>) comando;

Exemplo:
if (x > 0)
System.out.println(X maior que zero.);

No exemplo acima, a sada para a console (comando System.out.println) ser


escrita apenas se o valor de x for maior que zero.

3.1.2 Comando SE - ENTO - SENO


O comando Se poder ser acompanhado da clusula SENO. Nesse caso,
criada uma bifurcao no fluxo de execuo das instrues.
Utilizado para executar uma ao caso a condio seja verdadeira ou outra
(SENO) caso seja falsa.
Sintaxe:
if (<condio>) comando;
else comando;

Exemplos:
if (x > 0)
System.out.println(X maior que zero.);
else
System.out.println(X menor que zero.);

Aula 3 - Estruturas de controle

35

Rede e-Tec Brasil

No exemplo acima, a sada para a console (X maior que zero.) ser escrita se o valor de x for maior que zero e a sada para a console (X menor
que zero.) ser escrita se o valor de x for menor que zero.
import java.util.Scanner;

public static void main(String args[]) throws IOException {


Scanner entrada = new Scanner(System.in);
String nome;
double nota1, nota2, media;
System.out.println("Entre com o nome do aluno:");
nome = entrada.nextLine ();
System.out.println("Entre com a primeira nota:");
nota1 = entrada.nextDouble();
System.out.println("Entre com a segunda nota:");
nota2 = entrada.nextDouble ();
media = (nota1 + nota2) / 2;
if (media >= 6)
System.out.println("Aprovado");
else
System.out.println("Reprovado");
System.out.println(nome + " " + Double.
toString(media));
}

No exemplo acima, ser escrito na console Aprovado, se a mdia for maior


ou igual a seis, e Reprovado, se a mdia forma menor que seis. Os valores
do nome e da mdia sempre sero escritos na console.

3.1.3 Comando ninhos de SE


Este comando utilizado em ocasies que necessitam a tomada de deciso
para mais de duas opes.
Sintaxe:
if (<condio>) comando;
else if (<condio>) comando;
...
else comando;

Rede e-Tec Brasil

36

Tcnicas de Programao

Exemplos:
if (x == 0)
System.out.println(X zero.);
else if (x == 1)
System.out.println(X um.);
else
System.out.println(X no zero nem um.);

No exemplo acima, a sada para a console (X zero.) ser escrita se o valor


de x for igual a zero, a sada para a console (X um.) ser escrita se o valor
de x for igual a um e a sada para a console (X no zero nem um.) ser
escrita para os demais valores de x.
No exemplo abaixo, sero solicitados o nome e as duas notas de um aluno.
Ser verificada a sua condio: mdia maior ou igual a sete, aprovado; mdia
entre trs e sete, recuperao e mdia menor que trs, reprovado.
import java.util.Scanner;

public static void main(String args[]) throws IOException {


Scanner entrada = new Scanner(System.in);
String nome;
double nota1, nota2, media;
System.out.println("Entre com o nome do aluno:");
nome = entrada.nextLine ();
System.out.println("Entre com a primeira nota:");
nota1 = entrada.nextDouble();
System.out.println("Entre com a segunda nota:");
nota2 = entrada.nextDouble ();
media = (nota1 + nota2) / 2;
if (media >= 7)
System.out.println("Aprovado");
else if ((media < 7) & (media >= 3))

System.out.println("Prova Final");
else
System.out.println("Reprovado");
System.out.println(nome + " " + Double.
toString(media));
}

Aula 3 - Estruturas de controle

37

Rede e-Tec Brasil

3.1.4 Comando Caso


Podemos considerar o comando Caso como uma especializao do comando Ninhos de SE, em que vrias alternativas so apresentadas, sendo
executados os comandos associados alternativa que satisfaz a condio de
verificao.
O comando Caso utilizado para testar uma expresso ou o valor de uma
varivel (condio). Compara-se o resultado obtido no teste com os valores
das clusulas Caso (opes).
Sintaxe:
Switch VAR {

case 1: comandos; break;

case 2: comandos; break;

default: comandos; break;
}

Obs.: nesse caso, VAR dever ser do tipo int;


default: ser assumido caso o valor de VAR no seja igual a nenhuma das
opes;
break: faz com que a estrutura seja interrompida aps a execuo do comando ou bloco de comandos.
Exemplo: informar um valor numrico referente a um ms e escrever o respectivo nome do ms.

Rede e-Tec Brasil

38

Tcnicas de Programao

import java.util.Scanner;

public static void main(String args[]) throws IOException {


Scanner entrada = new Scanner(System.in);
String mes;
System.out.println("Entre com o valor do ms:");
mes = entrada.nexInt();
switch(monthNow){

case 1: mes="Janeiro"; break;

case 2: mes="Fevereiro"; break;

case 3: mes="Maro"; break;

case 4: mes="Abril"; break;

case 5: mes="Maio"; break;

case 6: mes="Junho"; break;

case 7: mes="Julho"; break;

case 8: mes="Agosto"; break;

case 9: mes="Setembro"; break;

case 10: mes="Outubro"; break;

case 11: mes="Novembro"; break;

case 12: mes="Dezembro"; break;

default: mes="Invlido"; break;
}
System.out.println("O ms informado foi: + mes);
}

No exemplo acima, a sada para a console corresponder descrio do


nmero associado ao ms informado. Se nenhum dos valores informados
corresponderem a uma das opes do comando CASO, o valor atribudo
a varivel mes ser Invlido.

3.2 Comandos de repetio


Em nosso cotidiano comum nos depararmos com a repetio de procedimentos para realizao de uma tarefa. A repetio no infinita, isto ,
em algum momento ela interrompida, normalmente quando atingimos o
objetivo.
Os comandos de repetio so utilizados para repetir a execuo de um con
junto de comandos (instrues).
Sero apresentados trs tipos de estrutura de repetio:
a) ENQUANTO: com teste no incio;
while (condio) <comandos>

Aula 3 - Estruturas de controle

39

Rede e-Tec Brasil

b) REPITA: com teste no final;


do <comandos> while (condio)
c) PARA: verificao automtica.
for (c0, condio, c1) <comandos>
Como podemos observar nas estruturas dos comandos de repetio, todos
tm em comum uma caracterstica: a verificao da condio de parada.
atravs dela que determinamos um ponto de parada, o que determina o
trmino da repetio e impede que o ciclo se torne infinito. Enquanto o resultado da verificao da condio retorna verdadeiro, a repetio continua.
A condio de parada deve possuir uma varivel, para comparao, que
dever ser alterada durante os ciclos de repetio do comando e deve-se
garantir que em algum momento o seu valor deixe de satisfazer a condio
(passa a ser falsa), encerrando a repetio. Isso garante que os comandos de
repetio entrem em looping infinito, isto , fiquem repetindo indefinitivamente.

3.2.1 Comando Enquanto


Este comando tem como caracterstica principal a verificao da condio de
parada no incio, isso possibilita a sada mesmo antes de iniciar a repetio.
O comando ENQUANTO permite a execuo de um comando, ou conjunto de comandos, repetidamente, enquanto uma condio for verdadeira.
Quando a condio no for mais satisfeita, ou seja, deixar de ser verdadeira,
a repetio interrompida.
Nesse caso, no necessrio conhecer o nmero de repeties.
Funcionamento:
1. Testa a condio de parada.
2. Se a condio for verdadeira, ento executa o bloco dos comandos do
REPITA.
3. Se a condio for falsa, sai da repetio. Executa o prximo comando aps

Rede e-Tec Brasil

40

Tcnicas de Programao

o REPITA.
4. Aps executar o ltimo comando do bloco, volta ao passo 1.
Sintaxe:
while (condio) {
<comando>
}

Exemplo: realizar a somatria dos salrios informados pelo usurio. A repetio ser interrompida quando o valor informado para o salrio for menor
que zero.
import java.util.Scanner;

public static void main(String args[]) throws IOException {


Scanner entrada = new Scanner(System.in);
String nome;
double salario, total;
System.out.println("Entre com o nome:");
nome = entrada.nextLine();
salario = total = 0;
while (salario >= 0) {

total = total + salario;

System.out.println("Entre com o salario:");

salario = entrada.nextDouble();
}
System.out.println("Nome: " + nome);
System.out.println("Total: " + total);
}

Obs.: de acordo com exemplo acima, podemos verificar que a repetio termina quando um valor negativo atribudo para o salrio.

3.2.2 Comando Repita


O comando repita semelhante ao comando ENQUANTO.
Ele comporta a execuo de comandos repetidamente at que uma condio
de controle seja FALSA. Entretanto, sua validao da condio realizada no
final, fazendo com que a repetio seja executada pelo menos uma vez.

Aula 3 - Estruturas de controle

41

Rede e-Tec Brasil

Funcionamento:
1. Execuo dos comandos dentro do bloco REPITA.
2. Testa a condio de parada.
3. Se a condio for verdadeira, volta ao passo 1.
4. Se a condio for falsa, ento sai da repetio. Executa o prximo comando aps o REPITA.
Sintaxe:
do {
<comando>
}
while (condio)

Exemplo: escrever os primeiros 100 nmeros pares, considerando o nmero


zero como o primeiro par.
public static void main(String args[]) throws IOException {
int par, cont;
par = cont = 0;
do {

System.out.print(par + ", ");

par = par + 2;
cont++;
}
while (cont < 100);
}

3.2.3 Comando Para


Assim como outros comandos de repetio, o comando PARA permite que
um bloco de comando seja repetido um nmero especfico de vezes.
O comando PARA repete o bloco de comandos enquanto a condio se
mantiver verdadeira.
Este comando utiliza um contador (varivel que incrementada a cada lao
da repetio) em sua estrutura usada para testar a condio. O contador
inicializado no incio da execuo do comando. Em seguida, a condio tes-

Rede e-Tec Brasil

42

Tcnicas de Programao

tada, e caso seja verdadeira, os comandos so executados. Aps a execuo


dos comandos e antes de verificar a condio, o contador incrementado.
Funcionamento:
1. Executa o comando de inicializao (do contador).
2. Testa a condio de parada.
3. Se condio for verdadeira, ento executa o bloco de comandos do PARA.
4. Se a condio for falsa, ento sai da repetio. Executa o prximo comando aps o PARA.
5. Incrementa (ou decrementa) o contador.
6. Retorna ao passo 2.
Sintaxe:
for (c0, condio, c1) {
<comando>
}

Onde, c0 representa o comando de inicializao do contador e c1 representa


o passo, isto , o incremento ou decremento do contador. O passo pode ser
maior que um, assim podemos incrementar ou decrementar o contador de
dois, trs, quatro etc.
Exemplo: programa que escreve os 100 primeiros pares.
A varivel i utilizada como contador e o seu incremento de uma unipublic static void main(String args[]) throws IOException {
int par;
par = 0;
for (int i = 1; i<= 100; i++) {

System.out.print(par + " - ");

par = par + 2;
}
}

Aula 3 - Estruturas de controle

43

Rede e-Tec Brasil

dade (i++). A repetio interrompida quando o valor de i se torna maior


que 100 (condio se torna falsa).

Resumo
Vimos nessa aula que os programas de computador so compostos por blocos de comando, sequncia de instrues que tem como objetivo resolver
um determinado problema. Porm, o fluxo sequencial de execuo, em muitos casos, no suficiente para termos uma soluo eficiente. Nesses casos,
necessria a utilizao de estruturas que permitam a quebra desse fluxo,
permitindo caminhos alternativos e, quando algumas instrues devem ser
executadas mais de uma vez, podemos utilizar comandos de repetio. Vimos os comandos de deciso SE (e suas variantes) e CASO, que nos permite
realizar desvios no fluxo de comandos. Vimos tambm os comandos ENQUANTO, REPITA e PARA, que possibilitam uma repetio, controlada, de
blocos de comandos, tornando nosso cdigo mais limpo e eficiente.

Atividades de aprendizagem
1. O IBIS Futebol Clube deseja aumentar o salrio de seus jogadores. O reajuste deve obedecer seguinte tabela:
SALRIO ATUAL (R$)

AUMENTO

0,00 a 1.000,00

20%

1.000,01 a 5.000,00

10%

acima de 5.000,00

0%

Desenvolver um programa que leia o nome e o salrio atual de um jogador,


e exiba o nome, o salrio atual e o salrio reajustado.
2. Criar um programa que leia cinco nmeros inteiros e imprima o maior e o
menor nmero da lista.
3. Criar um programa que leia os limites inferior e superior de um intervalo
e imprima todos os nmeros desse intervalo. Deve-se supor que o valor do
limite inferior menor que o valor do limite superior.
Ex.: suponha que o usurio digite 4 e 9, os nmeros do intervalo so 4, 5,
6, 7, 8 e 9.

Rede e-Tec Brasil

44

Tcnicas de Programao

4. Faa um programa que efetue o produto de dois nmeros inteiros (A e B)


informados pelo usurio, ou seja, A * B, atravs de adies (somas).
Ex.: 3 * 5 = 3 + 3 + 3 + 3 + 3 = 15
Assim terminamos a nossa terceira aula. Chegamos metade da nossa disciplina. Ainda temos um bom caminho pela frente. Vamos seguir? At a nossa
quarta aula!

Aula 3 - Estruturas de controle

45

Rede e-Tec Brasil

Aula 4. Programao modular


Objetivos:
reconhecer o que so mdulos; e
saber modularizar um programa.

Ol! Estamos na metade da nossa disciplina. Espero que esteja gostando. E


ento, vamos iniciar a segunda metade dos nossos estudos?
Para iniciarmos, vamos pensar em uma situao: muitas vezes nos deparamos com problemas complexos e extremamente longos, os quais, a primeira
vista, parecem no ter uma soluo. Pense em como as formigas carregam
seu alimento para o ninho. Algumas formigas picotam as folhas enquanto
outras realizam o transporte. Pode-se perceber que algo que parece muito
difcil torna-se possvel com a diviso do problema. Cada pedao dessa
diviso deve ser considerado como um problema menor, e o conjunto das
solues de cada um destes pequenos problemas so subsdios para a soluo completa.

Figura 10: Diviso do trabalho entre as formigas.


Fonte: http://vtm.e15.cz/aktuality/prace-vseho-druhu-1-cast, acessado em 02/05/2013.

Aula 4 - Programao modular

47

Rede e-Tec Brasil

Na aula anterior, vimos que as estruturas de controle (sequncia, deciso e


repetio) utilizadas nos programas de computador funcionam como um
bloco lgico, com incio e fim. Conforme nos deparamos com problemas
mais complexos, torna-se necessrio quebr-los em unidades menores que
facilitam suas resolues. Essas unidades devem ser bem estruturadas para
que possamos obter resultados parciais e utiliz-los para a resoluo completa do problema.

Figura 11: Resoluo do problema em partes.


Fonte: http://www.sbcoaching.com.br/blog/motivacao/o-que-nao-me-destroi-fortalece-me/, acessado em
03/05/2013.

Nesta aula veremos a importncia da fragmentao de aes para facilitar


a resoluo de problemas complexos, alcanados atravs da programao
modular, possibilitando, ainda, a reutilizao destes fragmentos (mdulos)
na resoluo de outros problemas.

4.1 Mdulo
Os mdulos so unidades bem definidas, contendo blocos de instrues que
visam cumprir uma tarefa. Cada mdulo tem como funcionalidade retornar
uma resposta a ser utilizada como parte ou subsdio da resoluo do problema, portanto ele uma parte do conjunto soluo.

Rede e-Tec Brasil

48

Tcnicas de Programao

Atravs da utilizao dos mdulos, como ferramenta para a resoluo de


problemas menores, temos uma diminuio da complexidade do algoritmo,
o que nos facilita a compreenso de cada componente isoladamente, alm
de simplificar a relao existente entre eles.
de consenso que podemos resolver problemas complexos atravs da diviso de tarefas longas em tarefas menores, mais simples. Esse era o princpio
da revoluo industrial, em que as linhas de montagem de cada unidade
eram responsveis por uma parte do processo.

4.2 Declarando um mdulo


A modularizao de um programa necessita de algumas definies especficas para caracterizar esta estrutura.
Os blocos de instrues que representam os mdulos devem possuir um
nome especfico (identificador) para podermos identific-lo na estrutura do
programa.
Alm disso, devemos obedecer a algumas regras para a composio de cada
mdulo, pois eles devem se comportar como um pequeno programa. Essa
padronizao necessria para que possamos utiliz-los nos mais variados
algoritmos para resoluo dos problemas. Essas regras sero vistas mais a
frente, ao apresentarmos as funes e procedimentos.
A seguir, mostraremos algumas consideraes sobre a construo de um
mdulo:
a) A construo de um mdulo deve ser estruturada como a construo de
um pequeno programa, o qual possui suas variveis e produz um resultado
especfico;
b) Cada mdulo deve possuir uma identificao e uma estrutura para poder
receber informaes quando acionado;
c) Os mdulos podero acionar outros mdulos para a continuidade de suas
execues.

Aula 4 - Programao modular

49

Rede e-Tec Brasil

4.3 Utilizando mdulos


O acionamento de um mdulo acontece quando em um determinado ponto
do programa o identificador do mdulo utilizado, conhecido por chamada ou ativao do mdulo. Nesse ponto, a sequncia de execuo das
instrues do programa desviada para o mdulo, em que a execuo das
aes deste mdulo iniciada.
Aps a concluso da execuo das instrues do mdulo, retomada a execuo, no programa principal, a partir do ponto de chamada.

4.4 Modularizando um programa


Vamos apresentar a resoluo de um problema utilizando a modularizao
do algoritmo.
Considere o seguinte problema: necessitamos realizar a soma de todos os
nmeros pares entre 0 e 100. Podemos dividir esse problema em duas partes menores, uma ser responsvel por percorrer todos os nmeros entre 0
e 100, chamada Percorrer(), e a outra verificar se o nmero par, chamada Par(). Assim, temos dois pequenos problemas: Percorrer(), que
dever possuir instrues para identificar cada um dos nmeros no intervalo,
e Par(), que far a verificao se o nmero par. No mdulo Percorrer()
iremos chamar o mdulo Par() para identificar se o nmero atual par,
e sendo verdade, realizamos a soma. Dessa forma, teramos os seguintes
mdulos:
Par(){

aes para verificar se o valor par;
}
Percorrer(){

aes para percorrer cada elemento;

para cada elemento chamar Par();

somar o elemento se for par;
}

Vamos ver abaixo as vantagens da modularizao:


Vantagens
Programas mais simples de escrever: a diviso em pequenas partes torna

Rede e-Tec Brasil

50

Tcnicas de Programao

a criao do cdigo mais simples.


Cdigo mais claro: os programas escritos em mdulos tornam-se mais
fceis de serem lidos.
Correes mais fceis: os programas modulares so mais fceis de modificar.
Reutilizao: os mdulos podem ser reaproveitados para a resoluo de
outros problemas.

Resumo
medida que avanamos no curso, os problemas tornam-se cada vez mais
complexos, tornando suas resolues cada vez mais complicadas. Tratar esses problemas sem uma abordagem eficiente poder se transformar numa
tarefa impossvel de se realizar. Vimos que dividir um problema longo e complexo em tarefas menores poder facilitar a resoluo do todo. Problemas
menores tendem a ser mais simples e tambm mais fceis de ser compreendidos.
A modularizao dos programas uma das tcnicas de programao que
do maior clareza ao cdigo, possibilitam que blocos modularizados possam
ser utilizados na resoluo de outros problemas e possibilitam, ainda, uma
facilidade maior na manuteno do cdigo.

Atividades de aprendizagem
1. Utilizando o exemplo de modularizao apresentado anteriormente, descreva os mdulos necessrios para resoluo do seguinte problema: dados
dois nmeros, identificar o maior e verificar se o mesmo par ou mpar.
2. Ainda utilizando as definies acima, resolva o seguinte problema: dada
uma sequncia de nmeros, arranj-los em ordem crescente e decrescente.
3. Dado um nmero, identificar se ele primo, se par ou mpar e se um
ano bissexto.
Estamos entrando na reta final da nossa disciplina. Faltam apenas duas aulas
para chegarmos ao final. Vamos para a nossa quinta aula? At l!

Aula 4 - Programao modular

51

Rede e-Tec Brasil

Aula 5. Funes e procedimentos


Objetivos:
conceituar e utilizar funes e procedimentos;
utilizar variveis locais e globais;
utilizar parmetros em funes e procedimentos; e
diferenciar funes e procedimentos.

Vamos iniciar a nossa penltima aula. Veremos, aqui, como modularizar um


programa atravs da utilizao dos conceitos de funes e procedimentos.
Verificaremos como construir essas estruturas de modo a tornar nosso programa mais eficiente e limpo. Alm disso, como aplicar os conceitos envolvidos para passar informaes a esses mdulos e como obter seus resultados.
Em muitas situaes do nosso dia a dia nos deparamos com os conceitos de
funes e procedimentos: o funcionrio da empresa tem determinada funo; para trocar o pneu do carro realizamos certos procedimentos. Podemos
generalizar os conceitos de funo e procedimento como sendo uma atividade (aes) especfica realizada por determinado elemento (pessoa, produto,
etc.) para a concluso de um objetivo em um sistema.
Como vimos anteriormente, a diviso de tarefas uma tcnica da modularizao. Essa diviso facilita a resoluo de um problema e permite que esses
mdulos possam ser utilizados em resolues de outros problemas.

Figura 12: Utilizao de mdulos em solues diversas.


Fonte: www.redninjapress.com/2009/07/o-rpg-de-amanha/, acessado em: 07/05/2013.

Aula 5 - Funes e procedimentos

53

Rede e-Tec Brasil

Vamos conhecer como as variveis so tratadas em um programa JAVA modularizado.

5.1 Varivel local e global


As variveis so especificadas de acordo com o escopo (local onde so criadas) de sua declarao. Variveis declaradas dentro de um mtodo (funo
ou procedimento) so nomeadas variveis locais e so conhecidas (podem
ser acessadas) apenas dentro do mtodo. As variveis declaradas na classe,
que constitui o programa, so nomeadas globais e podem ser acessadas
dentro de qualquer mtodo da classe.

public class Variaveis {



//Declarao de uma varivel Global

String var_global = Ol;
public static void main(String args[]) throws IOException {

Scanner entrada = new Scanner(System.
in);

//Declarao de uma varivel Local
String var_local;
System.out.print("Digite algo:");

var_local = entrada.nextLine();

System.out.print(var_global + var_local);
}
}

5.2 Procedimentos
Os procedimentos so partes de um programa (mdulo), compostos por um
conjunto de comandos, utilizados para realizar a resoluo de uma determinada tarefa.
Os procedimentos so independentes e normalmente so utilizados para
criar um produto.
Procedimentos em JAVA so declarados pelo comando void seguido do
nome do procedimento.

Rede e-Tec Brasil

54

Tcnicas de Programao

Sintaxe:
visibilidade void NomeDoProcedimento(<parmetros>)
{
<comandos>
}

Onde:
visibilidade: ser melhor explicada na disciplina Orientao a Objeto.
Por enquanto utilizaremos a palavra reservada public;
void: especifica um procedimento;
Nome do procedimento: conjunto de caracteres que identifica o procedimento;
<parmetros>: conjunto de variveis que recebero as informaes passadas ao procedimento. Veremos de forma mais esclarecida a utilizao
de parmetros no decorrer deste captulo;
<comandos>: bloco de comandos executados pelo procedimento.

Acesse o site para maiores


informaes sobre mtodos em
JAVA: http://www.devmedia.
com.br/trabalhando-commetodos-em-java/25917

A chamada de um procedimento feita atravs da citao do seu nome


seguido opcionalmente de seu argumento inicial entre parnteses.
Em Java, funes e procedimentos so casos especiais de mtodos.

5.2.1 Parmetros
Os parmetros (argumentos) so a porta de entrada dos procedimentos e
funes. Atravs deles podemos passar uma informao a qual ser utilizada no processo (bloco de comandos). Os parmetros se comportam como
variveis no procedimento.
Sintaxe:
(TipoDeDado nomeDoParmetro1, TipoDeDado nomeDoParmetro2, ...)

Aula 5 - Funes e procedimentos

55

Rede e-Tec Brasil

Onde:
TipoDeDado: tipo de dado referente ao valor atribudo ao parmetro.
Os parmetros so opcionais e quando h a necessidade de utilizar mais
de um, cria-se uma lista separada por vrgula.
Exemplo: procedimento para escrever uma mensagem na console.
import java.util.Scanner;
public class Procedimento {
public static void main(String args[]) throws IOException {

Scanner entrada = new Scanner(System.in);

String texto;

System.out.print("Digite algo:");

texto = entrada.nextLine();
Imprime(entrada);
}
public static void Imprime (String texto) {
System.out.print(texto);
}
}

Nesse exemplo, o procedimento (mtodo) Imprime() recebe a informao


do texto a ser escrito na console atravs do argumento String texto.

5.3 Funes
O que so funes?
Funes so instrumentos que tm como objetivo retornar um valor ou uma
informao.
Uma funo definida na linguagem de programao JAVA de maneira
semelhante conhecida na Matemtica. As funes recebem valores que
so passados como argumentos (parmetros) e, aps um processamento,
retorna um valor como resultado.

Rede e-Tec Brasil

56

Tcnicas de Programao

Figura 13: Funes


Fonte: autor.

A chamada de uma funo feita atravs da citao do seu nome seguido


opcionalmente de seu argumento inicial entre parnteses.
Funes em JAVA so declaradas por um tipo de dado para retorno do valor
seguido do nome da funo.
Sintaxe:
Onde:
visibilidade TipoDeRetorno
NomeDaFuncao(<parmetros>)
{
<comandos>
return valor;
}

visibilidade: ser melhor explicada na disciplina Orientao a Objeto. Por


enquanto utilizaremos a palavra reservada public;
TipodeRetorno: especifica o tipo de dado da informao retornada pela
funo;
NomeDaFuncao: conjunto de caracteres que identifica a funo;
<parmetros>: conjunto de variveis que recebero as informaes passadas funo;
<comandos>: bloco de comandos executados pelo procedimento;
return: conclui a funo e retorna a informao obtida.

Aula 5 - Funes e procedimentos

57

Rede e-Tec Brasil

Exemplo: calcular o fatorial de um nmero


import java.util.Scanner;
public class Funcao {
public static void main(String args[]) throws IOException {

Scanner entrada = new Scanner(System.in);

int numero;

System.out.print("Digite um nmero positivo:");

numero = entrada.nextLine();

System.out.println(O factorial : +
Fatorial(numero));
}
public static int Fatorial(int num) {

int f = 1;

for (int I = 1; I <= num; i++)

f = f * i;

return f;
}
}

5.3.1 Funes X Procedimentos


A diferena bsica entre funo e procedimento que a funo retorna um
ou mais valores e o procedimento simplesmente executa uma srie de comandos, sem retornar valores.

Procedimento

Executa um conjunto de comandos para


resoluo de um problema.

Rede e-Tec Brasil

58

Funo

Executa um conjunto de comandos e retorna um valor solicitado.

Tcnicas de Programao

Resumo
A diviso de uma tarefa em tarefas menores (mdulos) facilita a resoluo de
um problema complexo e extenso. Essa diviso, em programao, conhecida como modularizao. Vimos nessa aula como realizar a modularizao de
um programa atravs da utilizao de funes e procedimentos. Identificamos as diferenas entre as funes e procedimentos. Vimos tambm como
passar informaes para serem utilizadas internamente nessas estruturas
atravs dos conceitos de parmetros.

Atividades de aprendizagem
1. Crie um procedimento que receba um valor inteiro e positivo entre 0 e
10 e escreva na console seu valor por extenso, isto , para 0 escreva zero,
para 1 escreva um e assim respectivamente para os demais.
2. Implemente uma funo que verifique se um valor perfeito. Um valor
considerado perfeito quando ele igual soma dos seus divisores excetuando ele prprio. (Ex.: 6 perfeito, 6 = 1 + 2 + 3, que so seus divisores). A
funo deve retornar um valor booleano.
3. Faa uma funo que receba a idade de um atleta e retorne sua categoria,
conforme a tabela abaixo:
Idade

Categoria

5 a 7 anos

Infantil A

8 a 10 anos

Infantil B

11-13 anos

Juvenil A

14-17 anos

Juvenil B

Maiores de 18 anos (inclusive)

Adulto

4. Faa uma funo que receba um valor inteiro e verifique se o mesmo par
ou mpar. A funo deve retornar par quando o valor for par e mpar
quando for mpar.
Assim terminamos o nosso quinto e penltimo encontro. Espero que esteja
aproveitando a nossa disciplina. At a nossa sexta e ltima aula!

Aula 5 - Funes e procedimentos

59

Rede e-Tec Brasil

Aula 6. Recursividade
Objetivos:
utilizar a tcnica da recursividade; e
identificar as vantagens e desvantagens da tcnica da recursividade.

Estamos chegando ao final da nossa disciplina. Com ela, voc j teve contato com uma srie de conceitos sobre tcnicas de programao. Agora falta
pouco. Vamos em frente?
Pois bem, voc j teve a curiosidade de colocar um espelho na frente de
outro? Vemos uma infinidade de imagens refletidas. As imagens repetidas
que aparecem quando os dois espelhos so dispostos dessa maneira so
denominadas recursivas.

Figura 14: Recurso em espelho


Fonte: Internet - http://bluehawk.monmouth.edu/rclayton/web-pages/s11-503/recursion.jpg, acessado em 20/05/2013.

Aula 6 - Recursividade

61

Rede e-Tec Brasil

A recursividade pode ser encontrada em muitos casos matemticos, em que


uma frmula aplicada repetidas vezes para resolver um problema.
Veja na imagem abaixo, o fatorial de 5 (5!) calculado aplicando-se a frmula fatorial(n) = n * fatorial(n-1), no qual fatorial(0) = 1.

Figura 15: Recursividade em funo fatorial


Fonte: Internet - http://olamundo0.files.wordpress.com/2010/04/fatorial.jpg?w=595, acessado em 20/05/2013.

Assim temos:
fatorial(5)
fatorial(4)
fatorial(3)
fatorial(2)
fatorial(1)
fatorial(0)
fatorial(1)
fatorial(2)
fatorial(3)
fatorial(4)
fatorial(5)

=
=
=
=
=
=
=
=
=
=
=

5
4
3
2
1
1
1
2
3
4
5

*
*
*
*
*

fatorial(4)
fatorial(3)
fatorial(2)
fatorial(1)
fatorial(0)

*
*
*
*
*

1 = 1
1 = 2
2 = 6
6 = 24
24 = 120

Como foi apresentado na aula de modularizao, um mdulo (funo ou


procedimento) pode ser ativado (chamado) por outro mdulo. Veremos nesta aula, um caso particular de mdulos, a recursividade, isto , quando um
mdulo ativa ou faz uma chamada a si mesmo.
Em programao, a recursividade ocorre nas situaes em que se tem uma
funo que chama (aciona) ela mesma.
Os algoritmos recursivos so funes que consistem em dividir um problema
em problemas menores, subproblemas, semelhantes, dividir para conquistar.

Rede e-Tec Brasil

62

Tcnicas de Programao

6.1 Recurso
Ento, o que recurso?
A recurso uma tcnica que consiste em dividir problemas maiores em vrios problemas menores, mais fceis de serem resolvidos, os quais fornecem
a resoluo para o problema original.
Abordagem geral:
1. Dividir um problema em pequenos problemas semelhantes, subproblemas;
2. Repetir at que os subproblemas se tornem triviais;
a) Problema "trivial" pode ser resolvido sem clculo, um clculo simples ou
por fora bruta;
3. Recombinar as solues dos subproblemas em uma soluo para o problema original.
Onde:
Encontrada a soluo do subproblema trivial no passo 2, vamos cham-lo de funo base, o processo recursivo termina.
Recursividade dos passos 1 e 3:
Simplifica um problema em pequenos subproblemas similares, funo recursiva. Garantir que a funo decresa a cada passo de repetio, permitindo que a soluo trivial seja atingida.
Recursivamente aplica-se o algoritmo para os subproblemas.
Combina as solues dos subproblemas numa soluo completa.

Exemplo: somar os nmeros inteiros menores ou igual a 5.


1. Encontrar a funo recursiva: f(n) = n + f(n-1)
2. Encontrar a funo base: f(0) = 0

Aula 6 - Recursividade

63

Rede e-Tec Brasil

Assim temos:
f(5)
f(4)
f(3)
f(2)
f(1)
f(0)

=
=
=
=
=
=

5
4
3
2
1
0

+
+
+
+
+

f(4)
f(3)
f(2)
f(1)
f(0)

Recombinar as solues dos subproblemas:


f(1)
f(2)
f(3)
f(4)
f(5)

=
=
=
=
=

1
2
3
4
5

+
+
+
+
+

0 = 1
1 = 3
3 = 6
6 = 10
10 = 15

6.2 Algoritmo recursivo


A seguir apresentaremos um algoritmo genrico para aplicao de recursividade em um programa:
se o problema em questo pequeno (funo base),

ento, resolva-o;

seno,

reduza-o a um problema menor (subproblema), semelhante (funo
recursiva),

aplique o algoritmo ao subproblema e

volte ao problema original.

Exemplo: considerando o problema do exemplo anterior, temos:


funo Soma(n) {
Se (n <= 0) //funo base

ento retorna 0;
Seno

retorna n + Soma(n-1); //recursividade
}

Rede e-Tec Brasil

64

Tcnicas de Programao

A soluo do problema acima depende de se encontrar:


funo base: f(0) = 0, ento, quando temos n igual a 0, o resultado 0.
Nesse momento devemos interromper a recurso Se (n<=0);
funo recursiva: f(n) = n + f(n-1).
Cada vez que a funo Soma() invocada, o problema torna-se menor at
atingir a soluo trivial.
Vamos ver abaixo as vantagens e desvantagens da utilizao da recursividade.
Vantagens
Um programa recursivo mais simples (menor que a verso iterativa) e
elegante.
Pode ser aplicada nas mais variadas situaes.
Exibe com maior clareza o processo empregado.
Desvantagens
Custo de clculo, na maioria dos casos mais lento que a verso iterativa.
Erros de design sutis e difceis de serem encontrados.
Dificuldade em encontrar a recurso.
Exige mais espao de memria.

Resumo
Vimos nessa aula que problemas complexos, extensos, podem ser resolvidos
atravs da diviso em problemas menores, subproblemas, com as mesmas
caractersticas. Essa tcnica denominada recursividade e aplicada atravs da utilizao de funes (funo recursiva) que so chamadas por elas
mesmas (recurso). Cada vez que a funo invocada, o problema torna-se
menor at atingir uma soluo trivial, que possui um valor conhecido ou de
fcil clculo, chamada de funo base.

Aula 6 - Recursividade

65

Rede e-Tec Brasil

Atividades de aprendizagem
1. Considere a seguinte funo recursiva e o valor de x sempre menor que
100:
Descreva o que essa funo calcula.
2. Desenvolva um programa, atravs de recursividade, para resolver o problema proposto no exemplo dessa aula. O usurio dever entrar com um
int Funcao(int x) {
if ( x > 100 )

return 0;
else

return x + Funcao(x + 1);
}

valor inteiro e o programa dever calcular a soma de todos os inteiros entre


0 e o valor informado (inclusive).
3. Implemente um algoritmo, utilizando recursividade, para calcular o fatorial de um nmero informado pelo usurio. Lembre-se de que o fatorial
calculado atravs do produto de todos os inteiros positivos menores ou
iguais a n, fatorial de 0 1.
Assim terminamos a nossa sexta e ltima aula. Espero que tenha tirado bom
proveito dela. Siga a leitura do caderno, pois tenho mais algumas palavras
para dizer a voc. Um grande abrao!

Rede e-Tec Brasil

66

Tcnicas de Programao

Palavras Finais
Caro(a) estudante,
Meus parabns por completar mais esta etapa. Chegamos ao final da disciplina. Durante nossa caminhada adquirimos conhecimento, pudemos realizar trocas de experincias e de ideias. Estamos mais preparados para seguir,
para enfrentar novos desafios. Este um ponto de partida para um aprendizado maior que vir com o tempo, com a experincia.
Sabemos que no fcil chegar at aqui, acredito que em muitas vezes voc
se desanimou, as dificuldades e a fadiga foram obstculos cruis, mas sua
determinao e persistncia fizeram com que voc vencesse.
No podemos esquecer que a busca pelo conhecimento no termina aqui,
ela cclica, portanto, devemos continuar procurando novos desafios. Como
criar um site de relacionamento? Qual estrutura mais adequada? Como
manipular tantas informaes? Esses so apenas alguns dos problemas enfrentados pelos programadores, e podemos sim encar-los e resolv-los.
Para isso, temos que manter nossa disposio em continuar.

Aula 6 - Recursividade

67

Rede e-Tec Brasil

Guia de Solues
Aula 1
1. Dado o algoritmo abaixo, Calcular Valor Pedido, identifique os dados
de entrada, qual o processamento e os dados de sada:
Leia o cdigo do item.
Leia o valor do item.
Leia a quantidade do item.
Calcule o valor total do pedido (quantidade * valor do item).
Escreva o valor total do pedido.
a) Dados de entrada: cdigo do item, valor do item e quantidade do item
b) Processamento: quantidade * valor do item
c) Dados de sada: valor total do pedido
2. Crie um programa que leia o nome do usurio e sua idade, depois escreva
os valores obtidos.
import java.util.Scanner;
public class Ex02 {

public static void main(String[] args) {
String nome;
int idade = 0;

Scanner s = new Scanner(System.in);
System.out.println("Digite o seu nome:
");

nome = s.next();
System.out.print("Digite o sua idade:
");

idade = s.nextInt();
System.out.println("Seu nome : " +
nome);
System.out.print("Sua idade : " +
idade);
}
}

Rede e-Tec Brasil

68

Tcnicas de Programao

3. Faa um programa que leia dois valores inteiros e armazene cada um em


uma varivel, depois troque os valores das duas variveis entre si. Como sada, escreva os valores lidos.
import java.util.Scanner;
public class Ex03 {

public static void main(String[] args) {
int x, y, aux;

Scanner s = new Scanner(System.in);

System.out.println("Digite o primeiro
valor: ");

x = s.nextInt();
System.out.print("Digite o segundo valor: ");

y = s.nextInt();

aux = x;

x = y;

y = aux;
System.out.println("Primeiro valor: " +
y);
System.out.print("Segundo valor: " + x);
}
}

Aula 2
1. Informe qual o valor da varivel resultado, em cada linha, aps a execuo
das seguintes operaes:
a) resultado = 3 + 6; x = 2; y = 3;
resultado = 9
b) resultado = resultado / y x;
resultado = 1
c) resultado = 4; x = 2;
resultado = 4
d) resultado = resultado * x;

Aula 6 - Recursividade

69

Rede e-Tec Brasil

resultado = 8
2. Faa um programa que calcule a mdia de trs valores informados pelo
usurio.
import java.util.Scanner;
public class Ex0202 {

public static void main(String[] args) {
int x, y, z;
double media;

Scanner s = new Scanner(System.in);

System.out.println("Digite o primeiro
valor: ");

x = s.nextInt();
System.out.print("Digite o segundo valor: ");

y = s.nextInt();
System.out.print("Digite o terceiro valor: ");

z = s.nextInt();

media = (x + y + z) / 3;
System.out.println("A mdia : " + media);
}
}

3. Faa um programa que, dada uma temperatura em graus Celsius, converta-a para Fahrenheit, conforme a frmula:
F = (1.8 * C) + 32
import java.util.Scanner;
public class Ex0203 {

public static void main(String[] args) {
double c, f;

Scanner s = new Scanner(System.in);

System.out.println("Informe a temperatura em Celcius: ");

c = s.nextDouble();

f = (1.8 * c) + 32;
System.out.println("A temperatura em
Fahrenheit : " + f);
}
}

Rede e-Tec Brasil

70

Tcnicas de Programao

Aula 3
1. O IBIS Futebol Clube deseja aumentar o salrio de seus jogadores. O reajuste deve obedecer a seguinte tabela:
SALRIO ATUAL (R$)

AUMENTO

0,00 a 1.000,00

20%

1.000,01 a 5.000,00

10%

acima de 5.000,00

0%

Desenvolver um programa que leia o nome e o salrio atual de um jogador,


e exiba o nome, o salrio atual e o salrio reajustado.
import java.util.Scanner;
public class Ex0301 {

public static void main(String[] args) {
double salario, sal_ajustado;
String nome;

Scanner s = new Scanner(System.in);

System.out.println("Informe o nome do
funcionrio: ");

nome = s.next();
System.out.println("Informe o salrio do
funcionrio: ");

salario = s.nextDouble();
if (salario <= 1000)

sal_ajustado = salario * 1.2;
else if ( salario > 1000 && salario <
5000)

sal_ajustado = salario * 1.1;
else
sal_ajustado = salario;
System.out.println("O nome do funcionrio : " + nome);
System.out.println("O salrio : " +
salario);
System.out.println("O salrio ajustado
: " + sal_ajustado);
}
}

2. Criar um programa que leia cinco nmeros inteiros e imprima o maior e o


menor nmero da lista.

Aula 6 - Recursividade

71

Rede e-Tec Brasil

Para a soluo do problema, no utilizaremos vetores, os quais sero apresentados na disciplina Estrutura de Dados.
import java.util.Scanner;
public class Ex0302 {

public static void main(String[] args) {
int x1, x2, x3, x4, x5;
int maior, menor;

Scanner s = new Scanner(System.in);

System.out.println("Informe o primeiro
nmero: ");

x1 = s.nextInt();
System.out.println("Informe o segundo
nmero: ");

x2 = s.nextInt();
System.out.println("Informe o terceiro
nmero: ");

x3 = s.nextInt();
System.out.println("Informe o quarto
nmero: ");

x4 = s.nextInt();
System.out.println("Informe o quinto
nmero: ");

x5 = s.nextInt();
//Verificar o maior

maior = x1;
if (x2 > maior)

maior = x2;
if (x3 > maior)
maior = x3;
if (x4 > maior)

maior = x4;
if (x5 > maior)
maior = x5;

//Verificar o menor

menor = x1;
if (x2 < menor)

menor = x2;
if (x3 < menor)
menor = x3;
if (x4 < menor)

menor = x4;
if (x5 < menor)
menor = x5;
System.out.println("O maior valor : " +
maior);
System.out.println("O menor valor : " +
menor);
}
}

Rede e-Tec Brasil

72

Tcnicas de Programao

3. Criar um programa que leia os limites inferior e superior de um intervalo


e imprima todos os nmeros desse intervalo. Deve-se supor que o valor do
limite inferior menor que o valor do limite superior.
Ex.: suponha que o usurio digite 4 e 9, os nmeros do intervalo so 4, 5,
6, 7, 8 e 9.
import java.util.Scanner;
public class Ex0303 {

public static void main(String[] args) {
int inferior, superior;

Scanner s = new Scanner(System.in);

System.out.println("Informe o limite inferior do intervalo: ");

inferior = s.nextInt();
System.out.println("Informe o limite superior do intervalo: ");

superior = s.nextInt();
while(inferior <= superior){
System.out.println(inferior);

inferior = inferior + 1;
}
}
}

4. Faa um programa que efetue o produto de dois nmeros inteiros (A e B)


informados pelo usurio, ou seja, A * B, atravs de adies (somas).
Ex.: 3 * 5 = 3 + 3 + 3 + 3 + 3 = 15

Aula 6 - Recursividade

73

Rede e-Tec Brasil

import java.util.Scanner;
public class Ex0304 {

public static void main(String[] args) {
int val1, val2;
int result, cont;

Scanner s = new Scanner(System.in);

System.out.println("Informe o primeiro
valor: ");

val1 = s.nextInt();
System.out.println("Informe o segundo
valor: ");

val2 = s.nextInt();

result = 0;

cont = 0;
while(cont < val2){

result = result + val1;

cont = cont + 1;
}
if (val2 == 0)

result = 1;
System.out.println("O resultado da multiplicao : " + result);
}
}

Aula 4
1. Utilizando o exemplo de modularizao apresentado anteriormente, descreva os mdulos necessrios para resoluo do seguinte problema: dados
dois nmeros, identificar o maior e verificar se o mesmo par ou mpar.
Aqui temos duas situaes: identificar o maior e verificar se o mesmo par
ou mpar
Principal(){

chama Maior();

chama Par() informando o valor de maior;

se maior for par escreve par;

caso contrrio escreve impar;
}
Maior(){

aes para verificar o maior valor;
}
Par(){

aes para verificar se par;
}

Rede e-Tec Brasil

74

Tcnicas de Programao

Podemos ter outras solues semelhantes, tambm vlidas, j que no temos uma regra especfica para escrevermos esses comandos.
2. Ainda utilizando as definies acima, resolva o seguinte problema: dada
uma sequncia de nmeros, arranj-los em ordem crescente e decrescente.
Principal(){

chama Crescente();

escreve os nmeros;

chama Decrescente();

escreve os nmeros;
}
Crescente(){

aes para arranjar os nmeros em ordem crescente;
}
Crescente(){

aes para arranjar os nmeros em ordem decrescente;
}

3. Dado um nmero, identificar se ele primo, se par ou mpar e se um


ano bissexto.
Principal(){

chama Primo();

escreve se primo;

chama Par();

escreve par se par;

caso contrrio escreve mpar;

chama Bissexto();

escreve se bissexto;
}
Primo(){

aes para verificar se o nmero primo;
}
Par(){

aes para verificar se o nmero par;
}
Bissexto(){

aes para verificar se o nmero bissexto;
}

75

Rede e-Tec Brasil

Aula 5
1. Crie um procedimento que receba um valor inteiro e positivo entre 0 e
10 e escreva na console seu valor por extenso, isto , para 0 escreva zero,
para 1 escreva um e assim respectivamente para os demais.
import java.util.Scanner;
public class Ex0501 {

public static String Extenso(int num){
String extenso;
switch(num){
case 0: extenso = "Zero"; break;
case 1: extenso = "Um"; break;
case 2: extenso = "Dois"; break;
case 3: extenso = "Trs"; break;
case 4: extenso = "Quatro"; break;
case 5: extenso = "Cinco"; break;
case 6: extenso = "Seis"; break;
case 7: extenso = "Sete"; break;
case 8: extenso = "Oito"; break;
case 9: extenso = "Nove"; break;
case 10: extenso = "Dez"; break;

default: extenso = "nmero
invlido";break;
}
return extenso;
}

public static void main(String[] args) {
int num;

Scanner s = new Scanner(System.in);

System.out.println("Informe um nmero de
0 a 10: ");

num = s.nextInt();
System.out.println("O extenso : " +
Extenso(num));
}
}

2. Implemente uma funo que verifique se um valor perfeito. Um valor


considerado perfeito quando ele igual a soma dos seus divisores excetuando ele prprio. (Ex.: 6 perfeito, 6 = 1 + 2 + 3, que so seus divisores). A
funo deve retornar um valor booleano.

Rede e-Tec Brasil

76

Tcnicas de Programao

import java.util.Scanner;
public class Ex0502 {

public static Boolean Perfeito(int num){

Boolean perfeito = false;
int soma = 0;
for(int i=1; i<num; i++){
if(num%i==0)

soma = soma + i;
}
if (soma == num)
perfeito = true;
return perfeito;
}

public static void main(String[] args) {
int num;

Scanner s = new Scanner(System.in);

System.out.println("Informe um nmero:
");

num = s.nextInt();
if(Perfeito(num))
System.out.println("O nmero
perfeito.");
else
System.out.println("O nmero no
perfeito.");
}
}

3. Faa uma funo que receba a idade de um atleta e retorne sua categoria,
conforme a tabela abaixo:
Idade

Categoria

5 a 7 anos

Infantil A

8 a 10 anos

Infantil B

11-13 anos

Juvenil A

14-17 anos

Juvenil B

Maiores de 18 anos (inclusive)

Adulto

77

Rede e-Tec Brasil

import java.util.Scanner;
public class Ex0503 {

public static String Categoria(int idade){

String categoria = "invlida";
if(idade >= 5 && idade <= 7)
categoria = "infantil A";
else if(idade >= 8 && idade <= 10)
categoria = "infantil B";
else if(idade >= 11 && idade <= 13)
categoria = "juvenil A";
else if(idade >= 14 && idade <= 17)
categoria = "juvenil B";
else if(idade >= 18)
categoria = "adulto";
return categoria;
}

public static void main(String[] args) {
int idade;

Scanner s = new Scanner(System.in);

System.out.println("Informe a idade do
atleta: ");

idade = s.nextInt();
System.out.println("Sua categoria : " +
Categoria(idade));
}
}

4. Faa uma funo que receba um valor inteiro e verifique se o mesmo par
ou mpar. A funo deve retornar par quando o valor for par e mpar
quando for mpar.

Rede e-Tec Brasil

78

Tcnicas de Programao

import java.util.Scanner;
public class Ex0504 {

public static String ParImpar(int num){
String result;
if(num%2==0)
result = "par";
else
result= "mpar";
return result;
}

public static void main(String[] args) {
int num;

Scanner s = new Scanner(System.in);

System.out.println("Informe um nmero:
");

num = s.nextInt();
System.out.println("O nmero : " +
ParImpar(num));
}
}

Aula 6
1. Considere a seguinte funo recursiva e o valor de x sempre menor que
100:
int Funcao(int x) {
if ( x > 100 )

return 0;
else

return x + Funcao(x + 1);
}

Descreva o que essa funo calcula.


Calcula o somatrio de todos os nmeros inteiros no intervalo entre x (valor
informado) e 100.
2. Desenvolva um programa, atravs de recursividade, para resolver o problema proposto no exemplo dessa aula. O usurio dever entrar com um
valor inteiro e o programa dever calcular a soma de todos os inteiros entre
0 e o valor informado (inclusive).

79

Rede e-Tec Brasil

import java.util.Scanner;
public class Ex0602 {

public static int Somatorio(int x){
if ( x <= 0 )
return 0;
else
return x + Somatorio(x - 1);
}

public static void main(String[] args) {
int num;

Scanner s = new Scanner(System.in);

System.out.println("Informe um nmero:
");

num = s.nextInt();
System.out.println("O resultado : " +
Somatorio(num));
}
}

Rede e-Tec Brasil

80

Tcnicas de Programao

Referncias
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.
FORBELLONE, Andr Luiz Villar. Lgica de programao: a construo de algoritmos e
estrutura de dados. 3 ed. So Paulo: Brochura, 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.

Bibliografia Bsica
CORMEN, Thomas H.; RIVEST, Ronald L.; STEIN, Clifford; LEISERSON, Charles E.
Algoritmos: teoria e prtica. 3.ed. So Paulo: rica, 2012.
FARRELL, Joyce. Lgica e Design de Programao. So Paulo: Cengage Learning,
2009.
MANZANO, Jos Augusto N G; OLIVEIRA, Jayr Figueiredo de. Algoritmos: Lgica para
Desenvolvimento de Programao de Computadores. 22 ed. So Paulo. Editora rica,
2009.

81

Rede e-Tec Brasil

Currculo dos Professores-autores


Jos Marcio Benite Ramos
Bacharel em Cincias da Computao pela Universidade Federal de So Carlos - UFSCar.
Mestre em Cincias da Computao pela Universidade Federal de Santa Catarina - UFSC.
Professor Titular responsvel pelas disciplinas de
Estrutura de Dados, Programao Web, Sistemas Comerciais da Faculdade de Cincias Administrativas e Tecnologia
FATEC-RO.
Professor Titular responsvel pelas disciplinas de Programao Web da Faculdade de So Mateus FSM-RO.
Analista de Sistemas e diretor da diviso Esc. de Porto Velho do Servio Federal de Processamento de Dados SERPRO.

Liluyoud Cury de Lacerda
Bacharel em Cincias da Computao pela Universidade Federal de So Carlos - UFSCar.
Mestre em Cincias da Computao pela Universidade Federal de Santa Catarina - UFSC.
Coordenador do Curso de Sistemas de Informao da Faculdade de Cincias Administrativas e Tecnologia FATEC-RO.
Coordenador do Curso de Sistemas para Internet da Faculdade de Cincias
Administrativas e Tecnologia FATEC-RO.
Coordenador do Curso de Ps-Graduao em Desenvolvimento Web da Faculdade de Cincias Administrativas e Tecnologia FATEC-RO.
Professor Titular responsvel pelas disciplinas de Algoritmos, Padres de Pro-

Rede e-Tec Brasil

82

Tcnicas de Programao

jeto e Inteligncia Artificial da Faculdade de Cincias Administrativas e Tecnologia FATEC-RO.


Professor Titular responsvel pelas disciplinas de Programao Orientada a
Objetos da Faculdade de So Mateus FATESM-RO.
Analista Programador do Ministrio Pblico do Estado de Rondnia - MP/RO.

Sara Luize Oliveira Duarte


Mestre em Gesto e Desenvolvimento Regional
pela Universidade de Taubat (UNITAU).
Ps-Graduao em Desenvolvimento Web e Metodologia do Ensino Superior. Graduada em Processamento de Dados, ambos pela FATEC-RO.
Professora das Faculdades FATESM e FATEC. Professora Titular responsvel
pela disciplina Informtica Bsica para Trabalhos Acadmicos, ofertada na
modalidade semipresencial na Faculdade de Tecnologia So Mateus FATESM.
Supervisora de Tecnologia do Laboratrio de Educao a Distncia - LED e
Supervisora das Salas Virtuais da modalidade Semipresencial da FATESM.
Professora Conteudista de alguns Guias de Estudos, como Informtica Bsica
para Trabalhos Acadmicos, Metodologia da Pesquisa Cientfica, Como estudar na EAD, Informtica Bsica e outros.

83

Rede e-Tec Brasil

You might also like