Você está na página 1de 162

Andrs Igncio Martnez Menndez

Introduo Programao

Jouberto Ucha de Mendona Reitor Amlia Maria Cerqueira Ucha Vice-Reitora Jouberto Ucha de Mendona Junior Pr-Reitoria Administrativa - PROAD Ihanmarck Damasceno dos Santos Pr-Reitoria Acadmica - PROAC Domingos Svio Alcntara Machado Pr-Reitoria Adjunta de Graduao - PAGR Temisson Jos dos Santos Pr-Reitoria Adjunta de Ps-Graduao e Pesquisa - PAPGP Gilton Kennedy Sousa Fraga Pr-Reitoria Adjunta de Assuntos Comunitrios e Extenso - PAACE Jane Luci Ornelas Freire Gerente do Ncleo de Educao a Distncia - Nead Andrea Karla Ferreira Nunes Coordenadora Pedaggica de Projetos - Nead Lucas Cerqueira do Vale Coordenador de Tecnologias Educacionais - Nead

Equipe de Elaborao e Produo de Contedos Miditicos:


Alexandre Meneses Chagas - Supervisor Ancjo Santana Resende - Corretor Claudivan da Silva Santana - Diagramador Edivan Santos Guimares - Diagramador Geov da Silva Borges Junior - Ilustrador Mrcia Maria da Silva Santos - Corretora Matheus Oliveira dos Santos - Ilustrador Monique Lara Farias Alves - Webdesign Pedro Antonio Dantas P . Nou - Webdesign Rebecca Wanderley N. Agra Silva - Design Rodrigo Sangiovanni Lima - Assessor Walmir Oliveira Santos Jnior - Ilustrador

Redao: Ncleo de Educao a Distncia - Nead Av. Murilo Dantas, 300 - Farolndia Prdio da Reitoria - Sala 40 CEP: 49.032-490 - Aracaju / SE Tel.: (79) 3218-2186 E-mail: infonead@unit.br Site: www.ead.unit.br Impresso: Grfica Gutemberg Telefone: (79) 3218-2154 E-mail: grafica@unit.br Site: www.unit.br

M542i

Menndez, Andrs Igncio Martnez. Introduo a programao. / Andrs Igncio Martnez Menndez. Aracaju : Gutemberg, 2010. 160 p. : il. Inclui bibliografia 1. Informtica. 2. Programao de computadores. I. Universidade Tiradentes (UNIT). Ncleo de Educao Distncia - NEAD. II. Ttulo. CDU: 004.42 Copyright Universidade Tiradentes

Apresentao
Prezado(a) estudante, A modernidade anda cada vez mais atrelada ao tempo, e educao no pode ficar para trs. Prova disso so as nossas disciplinas on-line, que possibilitam a voc estudar com o maior conforto e comodidade possveis, sem perder a qualidade do contedo. Por meio do nosso programa de disciplinas on-line voc pode ter acesso ao conhecimento de forma rpida, prtica e eficiente, como deve ser a sua forma de comunicao e interao com o mundo na modernidade. Fruns on-line, chats, podcasts, livespace, vdeos, MSN, tudo vlido para o seu aprendizado. Mesmo com tantas opes, a Universidade Tiradentes optou por criar a coleo de livros Srie ie Bibliogrfica Unit como mais uma opo de acesso so ao conhecimento. Escrita por nossos professores, a obra contm todo o contedo da disciplina que voc est cursando na modalidade EAD e representa, sobretudo, a nossa preocupao em garantir o seu acesso ao conhecimento, onde quer que voc esteja.

Desejo a voc bom aprendizado e muito sucesso!

Professor Jouberto Ucha de Mendona Reitor da Universidade Tiradentes

Sumrio
Parte I: Resoluo de problemas com Algoritmos ................. 11 Tema 1: Resoluo de problemas atravs da Lgica ........... 13
1.1 Introduo resoluo de problemas......................... 13 1.2 Conceitos bsicos de algoritmos estruturados........... 22 1.3 Resoluo de problemas com fluxogramas ............... 29 1.4 Portugol - Elementos bsicos de Algoritmos .............. 38 Resumo ............................................................................... 46

Tema 2: Algoritmos com Pseudocdigo ............................... 47


2.1 Estruturas de controle .................................................. 47 2.2 Resoluo de problemas com Algoritmos .................. 56 2.3 Implementao de algoritmos em simuladores ......... 65 2.4 Estruturas de Dados Homogneas Vetores ............. 75 Exerccios sobre vetores .................................................... 78 Resumo ............................................................................... 83

Parte II: Linguagem de programao Java............................. 85 Tema 3: A linguagem Java e seu Ambiente ......................... 87
3.1 Histrico da linguagem Java ....................................... 87 3.2 Estrutura de um programa Java .................................. 96 3.3 Ambiente de programao Eclipse ........................... 104 3.4 Elementos da linguagem .......................................... 114 Resumo ............................................................................. 122

Tema: 4 A programao Java .............................................. 123


4.1Comandos de entrada e sada .................................... 123 4.2 Estruturas de controle ................................................ 133 4.4 Vetores em Java ......................................................... 149 Resumo ............................................................................. 158

Referncias ............................................................................ 159

Concepo da Disciplina
Ementa
Resoluo de problemas atravs da Lgica: Introduo resoluo de problemas; Conceitos bsicos de algoritmos estruturados; Resoluo de problemas com fluxogramas; Portugol - Elementos bsicos de Algoritmos. Algoritmos com pseudocdigo: Estruturas de controle; Resoluo de problemas com Algoritmos; Implementao de algoritmos em simuladores; Estruturas de Dados Homogneas Vetores. A linguagem Java e seu ambiente: Histrico da Linguagem Java; Estrutura de um programa Java; O ambiente de programao Eclipse; Elementos da linguagem. A programao Java: Comandos de entrada e sada; Estruturas de controle; Construo de programas complexos; Vetores em Java.

Objetivos
Geral O objetivo geral da disciplina Introduo Programao fazer com o aluno domine tcnicas de desenvolvimento de algoritmos para que possam ser aplicados na resoluo de problemas j com a linguagem de programao Java. Especficos Ensinar o aluno a desenvolver raciocnio lgico para desenvolver solues de problemas computacionais; Ensinar ao aluno tcnicas de construo de algoritmos; Mostrar para o aluno simuladores, onde ele poder executar os algoritmos desenvolvidos;

Introduzir o aluno no mundo da programao Java; Mostrar o ambiente de programao Eclipse para que o aluno possa criar seus primeiros programas Java.

Orientao para Estudo


A disciplina prope orient-lo em seus procedimentos de estudo e na produo de trabalhos cientficos, possibilitando que voc desenvolva em seus trabalhos pesquisas, o rigor metodolgico e o esprito crtico necessrios ao estudo. Tendo em vista que a experincia de estudar a distncia algo novo, importante que voc observe algumas orientaes: Cuide do seu tempo de estudo! Defina um horrio regular para acessar todo o contedo da sua disciplina disponvel neste material impresso e no Ambiente Virtual de Aprendizagem (AVA). Organize-se de tal forma para que voc possa dedicar tempo suficiente para leitura e reflexo; Esforce-se para alcanar os objetivos propostos na disciplina; Utilize-se dos recursos tcnicos e humanos que esto ao seu dispor para buscar esclarecimentos e para aprofundar as suas reflexes. Estamos nos referindo ao contato permanente com o professor e com os colegas a partir dos fruns, chats e encontros presencias. Alm dos recursos disponveis no Ambiente Virtual de Aprendizagem AVA.

Para que sua trajetria no curso ocorra de forma tranquila, voc deve realizar as atividades propostas e estar sempre em contato com o professor, alm de acessar o AVA. Para se estudar num curso a distncia deve-se ter a clareza que a rea da Educao a Distncia pauta-se na autonomia, responsabilidade, cooperao e colaborao por parte dos envolvidos, o que requer uma nova postura do aluno e uma nova forma de concepo de educao. Por isso, voc contar com o apoio das equipes pedaggica e tcnica envolvidas na operacionalizao do curso, alm dos recursos tecnolgicos que contribuiro na mediao entre voc e o professor.

RESOLUO DE PROBLEMAS COM ALGORITMOS


Parte I

Resoluo de problemas atravs da Lgica

O tema que vamos comear a aprender agora muito interessante, pois com ele vamos poder resolver problemas usando conceitos lgicos. Depois nos aprofundaremos na soluo de problemas por meio de instrues bem definidas e ao fim do curso estaremos aptos a construir programas de computador numa linguagem de programao. Desejo a voc uma tima leitura!

1.1 INTRODUO

RESOLUO DE PROBLEMAS

Todos ns resolvemos pequenos problemas do nosso cotidiano mesmo sem que a gente perceba. A maioria desses problemas foi resolvido antes e somente alguns deles que so problemas realmente novos.

14

Introduo Programao

Os problemas a que estou me referindo no so de carter pessoal, eles so problemas operacionais. Quer ver alguns exemplos? Preciso fazer uma ligao para meu primo para avisar que hoje a noite tem uma festa na cidade. Tenho que preparar o bolo para o aniversrio de minha sobrinha. Vou ter que ir ao posto abastecer o carro, pois ele est quase sem combustvel. So problemas que j sabemos como resolver, uma vez que no primeira vez que, por exemplo, fazemos uma ligao telefnica ou abastecemos o carro. A minha pergunta : como que estes problemas so resolvidos? Isto o que vamos descobrir! Instrues Podemos pensar uma instruo como sendo uma ao que devemos realizar. Existem milhares, talvez milhes, de instrues possveis. A seguir temos algumas: Clique com o mouse sobre a figura Passe a marcha do carro Adicione uma xcara de leite condensado Segure o boto desligar do celular Espere abrir o sinal de trnsito Conecte o cabo da TV na tomada

Tema I

| Resoluo de problemas atravs da Lgica

15

Uma instruo diz o que tem que ser feito, mas uma instruo, isoladamente, provavelmente no vai conseguir resolver um problema. Veja que somente com a instruo passe a marcha do carro voc no vai conseguir abastecer o carro. Pense em mais aes que podem ser tomadas e escute o podcast Contedo 1.

Conjunto de Instrues Quando nos deparamos com um problema usamos, de forma instintiva, um conjunto de instrues para resolv-lo. Contudo, a maioria das vezes, nem pensamos muito nas aes que estamos fazendo. Vamos pegar o exemplo da ligao do telefone. As seguintes instrues poderiam ser usadas para resolver o problema: 1. Tire o telefone do gancho 2. Espere o telefone dar linha 3. Disque o nmero desejado 4. Converse com a pessoa 5. Coloque o telefone de volta ao gancho Duas coisas so importantes: as aes que sero realizadas e a ordem em que sero executadas Se a gente no coloca uma ou mais instrues, certamente no conseguiremos resolver o problema. Imagine que no nosso exemplo a gente esquece de discar o nmero do telefone. Neste caso no iremos conseguir falar com a pessoa que estamos ligando.

16

Introduo Programao

O sequenciamento tambm importante. O que aconteceria se a gente trocasse de lugar as instrues 1 e 3? Novamente no iramos conseguir conversar com a pessoa j que a discagem do nmero no seria realizada com o telefone ainda no gancho. Em vrias situaes podemos encontrar um conjunto de instrues. Um manual de instrues para ligar um DVD ou uma receita para fazer camaro empanado so exemplos de conjuntos de instrues com o objetivo de resolver problemas. Pense em outras situaes em que podemos encontrar conjuntos de instrues e comente com seus colegas de turma. Problemas encontrados no conjunto de instrues Uma preocupao que a gente tem que ter quando escrevemos um conjunto de instrues ser claro e preciso. No podemos deixar dvidas sobre o que fazer em determinada instruo seno, corre-se o risco de a pessoa que vai executar as aes no conseguir resolver o problema. Vamos voltar ao exemplo do telefone. Uma das aes discar o nmero desejado. A prxima instruo j falar com a pessoa. Porm, o que acontece se o telefone der sinal de ocupado? Ou ento o que fazemos se discou o nmero e ningum atendeu? E se ligarmos para o nmero errado? Em qualquer uma das situaes ns sabemos como nos comportar ao telefone, j que passamos por isso em outras ocasies. Entretanto, imaginando que uma pessoa nunca fez uma ligao na vida, ela no vai conseguir falar com a pessoa que deseja caso algum problema ocorra.

Figura 1 - Ligao de telefone

Tema I

| Resoluo de problemas atravs da Lgica

17

Sendo assim, temos que detalhar um pouco mais o conjunto de instrues para no causar nenhuma dvida. Vamos ver como ficaria a soluo do problema do telefone: 1. Tire o telefone do gancho 2. Espere o telefone dar linha 3. Disque o nmero desejado 4. SE o telefone der sinal de ocupado 4.1 Coloque o telefone de volta ao gancho 4.2 Volte ao passo 1 5. SE ficar chamando sem atender 5.1 Coloque o telefone de volta ao gancho 5.2 Volte ao passo 1 6. SE for engano 61. Coloque o telefone de volta ao gancho 6.2 Volte ao passo 1 7. Converse com a pessoa 8. Coloque o telefone de volta ao gancho

Olhando com mais detalhes para este conjunto de instrues, bem provvel que voc encontre outros problemas que precisam ser mais bem explicados. Caso voc encontre, discuta com seus colegas e escreva uma soluo melhor.

18

Introduo Programao

Vamos praticar um pouco mais? Que tal informar um conjunto de instrues para as seguintes situaes do nosso dia a dia: Sacar dinheiro de um caixa eletrnico Fazer o pedido de uma pizza por telefone de casa Comprar um ingresso para o cinema Verificar se um amigo passou no vestibular Fazer pipoca que no seja de micro-ondas Uso da lgica para resoluo de problemas Sempre que desejamos resolver problemas usamos o que chamamos de raciocnio lgico. Este tipo de raciocnio o que vamos procurar maximizar na parte 1 deste livro, pois ele a base para resoluo de problemas computacionais. Muitos cursos que envolvem o aprendizado de programao de computadores usam o raciocnio lgico como base. Ns tambm seguiremos esta linha educacional e 1 Matemtico francs (nasvamos propor a voc vrios procido em 4 de abril de 1842 blemas para aprimorar o seu pensa falecido em 3 de outubro mento lgico. Est preparado? Melhor de 1891) dar uma parada e tomar um caf. Na Fonte: http://pt.wikipedia.org/ volta quero botar sua cabea para wiki/Edouard_Lucas ferver! Franois douard Anatole Lucas1 teve inspirao de uma lenda para construir o jogo das Torres de Hani. Segundo a lenda, o Deus hindu Brahma criou uma plataforma com uma torre com 64 discos de ouro e duas torres auxiliares. Brahma ordenou que o povo transferisse os discos de ouro de uma torre para outra, mas

Tema I

| Resoluo de problemas atravs da Lgica

19

tinham que respeitar as seguintes regras: apenas um disco poderia ser movido por vez e nunca um disco maior deveria ficar por cima de um disco menor. Brahma disse ainda que assim que eles terminassem esse trabalho o mundo seria destrudo. Lendas parte, gostaria que voc descrevesse os passos necessrios para transferir trs discos da torre A para a torre B, usando a torre C como auxiliar, de acordo com a figura 2. Escute o podcast contedo 2 caso necessite de ajuda para resolver o jogo da Torre de Hani.

Figura 2 - O Jogo da Torre de Hani

Voc quer aprender brincando? Ns preparamos para voc, no AVA, dois jogos envolvendo raciocnio lgico. So jogos clssicos que exigiro de voc concentrao para poder resolv-los. O primeiro jogo o jogo dos baldes. Neste jogo, voc desafiado a soltar a bela princesa que est presa no calabouo. Para conseguir solt-la ter que colocar na balana exatamente 4 litros de gua. Voc tem disposio um balde de 5 litros, outro balde de 3 litros e uma fonte de gua com a qual poder encher os baldes.

20

Introduo Programao

As aes possveis do jogo so: Encha o balde X Jogue fora a gua do balde X Despeje a gua do balde X no balde Y A ideia do jogo no soltar a princesa no mtodo da tentativa e erro, voc ter que achar qual a lgica do jogo. Anote os passos necessrios para encher o balde maior com 4 litros de gua e discuta com seus colegas de turma como faz-lo no menor nmero possvel de passos. O outro jogo que preparamos para voc dos canibais e os padres. Neste jogo voc precisa atravessar os 3 padres e os 3 canibais para o outro lado do rio. Existe um barco que poder levar at duas pessoas de cada vez de um lado para o outro do rio. O problema que se os canibais ficarem em maior nmero eles iro devorar os padres. Este jogo vai requerer um nmero maior de instrues para ser resolvido do que o jogo dos baldes. Jogue no AVA, anote a soluo e novamente discuta com seus colegas como voc conseguiu atravessar os padres em segurana. Dizendo ao computador o que deve ser feito Ao longo deste primeiro contedo estivemos estudando a resoluo de problemas atravs de instrues. Vimos que possvel escrever a soluo de uma forma estruturada para que outra pessoa possa resolv-lo. Entretanto, o grande objetivo nesta disciplina ensinar a criar programas de computador. Para desenvolver programas vamos precisar usar uma linguagem muito mais disciplinada. Uma linguagem que no deixe margem de dvida quanto ao que precisa ser feito.

Tema I

| Resoluo de problemas atravs da Lgica

21

Imagine que estamos seguindo os passos de uma receita para poder fazer um bolo. Se a gente encontra uma instruo como deixe no forno at ficar bom, com certeza vamos ficar na dvida do que fazer. Veja que se trocarmos a instruo anterior por deixe no forno por 25 minutos na temperatura de 200 graus vai facilitar bastante a vida de quem est fazendo o bolo. Com o objetivo de disciplinar a escrita do conjunto de instrues, foi criada uma linguagem resumida, que no deixasse dvidas na sua interpretao. Esta nova linguagem foi chamada de pseudo-cdigo ou Portugol e ser o assunto do nosso prximo tema. Tome flego e vamos ao contedo 2.

Para Refletir
At aqui falamos de como resolver problemas de nosso cotidiano. Voc percebeu como que eles so resolvidos? Quando ns falamos que existem problemas mais e menos complexos, do que estamos falando? Como que a lgica nos ajuda a resolver problemas? Voc percebeu que no podemos deixar margem de dvidas nas instrues? Discuta com seus colegas no frum do AVA todas estas respostas e em caso de dvidas consulte seu tutor.

22

Introduo Programao

1.2 CONCEITOS

BSICOS DE ALGORITMOS ESTRUTURADOS

Vimos no contedo 1 uma introduo resoluo de problemas. A partir de agora veremos alguns conceitos que serviro de base para a construo de programas de computador. O primeiro conceito que vamos falar o de algoritmo. Na cincia da computao d-se o nome de algoritmo ao conjunto de instrues para resolver um problema. Dessa forma, quando voc ler ou escutar a palavra algoritmo saiba que estamos nos referindo sequncia de passos necessrios para atingir um objetivo. A definio da Wikipdia para algoritmo a seguinte Um algoritmo uma sequncia finita de instrues bem definidas e no ambguas, cada uma das quais pode ser executada mecanicamente num perodo de tempo finito e com uma quantidade de esforo finita. Veja que essa a idia que estamos tratando desde o incio. Pseudo-cdigo ou Portugol Para escrever os algoritmos foi definida uma linguagem padronizada que separou um conjunto de palavras vlidas para a linguagem. Dessa forma, voc poder escrever um algoritmo, e seu colega em outro polo poder entender perfeitamente o que voc quis dizer. A esse conjunto de palavras se deu o nome de palavras reservadas e elas sero a base da construo de algoritmos. Algumas palavras reservadas so: ESCREVA ENQUANTO SE LEIA

Tema I

| Resoluo de problemas atravs da Lgica

23

Embora o Portugol no seja uma linguagem de programao, existem programas que conseguem interpretar e executar algoritmos escritos em Portugol, facilitando a vida do aluno que est aprendendo. Este assunto ser abordado no contedo 8. Sintaxe e semntica As palavras reservadas do Portugol seguem uma sintaxe e uma semntica. Luiz Fernando Verssimo tem uma frase que diz assim A sintaxe uma questo de uso, no de princpios. Escrever bem escrever claro, no necessariamente certo. Por exemplo: dizer escrever claro no certo mas claro, certo? A sintaxe se refere forma como as palavras reservadas so escritas. Se a palavra reservada ESCREVA no vamos poder usar ESCREVER pois a instruo estar sintaticamente incorreta. Quando falamos em semntica nos referimos ao significado do que estamos querendo fazer. Se, por exemplo, voc usar a palavra DESLIGUE para ligar o DVD vai cometer um erro semntico. Sintaticamente a instruo pode at estar correta, mas a semntica usada est errada, pois voc est querendo ligar o DVD e o que a palavra DESLIGUE faz (a semntica) deslig-lo. Variveis Vamos analisar o seguinte problema: voc tem que ir padaria comprar queijo, presunto e ovos para fazer uma omelete. Voc tem R$ 20,00 e antes de comprar os produtos tem que saber se o dinheiro vai dar. Voc guarda na memria os valores de cada produto. O queijo custa R$ 4,00, o presunto custa R$ 5,00 e a dzia de ovos R$ 4,00. Depois voc soma os valores de cada um e o total encontrado (R$ 13,00) tambm guardado na sua memria. Por ltimo voc subtrai os R$ 20,00 do valor encontrado e verifica que ainda vai sobrar R$ 7,00. Ento voc decide comprar os produtos para fazer a omelete.

24

Introduo Programao

Imaginando que este problema tivesse que ser resolvido com a ajuda de um computador, da mesma forma que voc guardou os valores dos produtos na sua memria, voc teria que guard-los na memria do computador.

Figura 3 - Memria do computador

Para armazenar valores na memria do computador so usados o que chamamos de variveis. Olhando o problema da padaria, quantas variveis teramos que definir para voc poder decidir se iria comprar os produtos? Inicialmente voc poderia dizer que seriam trs variveis. Entretanto, alm de uma varivel para cada produto, veja que voc precisa guardar quanto dinheiro voc tem para gastar, quanto foi o total dos produtos e tambm o valor da diferena. Portanto, teramos 6 variveis ao total. As variveis so usadas nos algoritmos para poder armazenar dados relevantes para solucionar o problema. Existem duas informaes importantes sobre variveis: As variveis podem mudar de valor ao longo do algoritmo As variveis somente podem conter um valor de cada vez Analisando o nosso problema, certamente o valor do queijo pode mudar, porm ele no poder ter dois preos ao mesmo tempo.

Tema I

| Resoluo de problemas atravs da Lgica

25

Vamos exercitar um pouco os conceitos de variveis que acabamos de aprender. Quais variveis poderamos definir para os seguintes problemas: Encontrar a casa de um amigo Enviar um email Copiar um arquivo de uma pasta para outra Discuta com seus colegas as variveis que voc definiu para os problemas e veja o que eles colocaram. Escute o podcast contedo 3 e obtenha mais informaes sobre variveis. Atribuies Quando falamos em atribuio estamos nos referindo unicamente ao de colocar valores dentro das variveis. Analisando novamente o problema da padaria poderamos escrever as seguintes instrues: Queijo R$ 4,00 Presunto R$ 5,00 Ovos R$ 4,00 Estamos atribuindo o valor que est no lado direito varivel que est no lado esquerdo. O sinal de usado para fazer a atribuio.

Figura 4 - Valores dos produtos

26

Introduo Programao

Vejamos agora uma pequena mudana no conjunto de instrues: Queijo R$ 4,00 Presunto R$ 5,00 Ovos Queijo O que acontece com a ltima instruo? O valor da varivel Queijo atribudo varivel Ovos. Sendo assim, estamos dizendo que os ovos tambm custam R$ 4,00! Imagine agora que se no problema da padaria fosse definido que o valor dos ovos duas vezes o valor do queijo, como poderamos fazer a atribuio da varivel Ovos? Queijo R$ 4,00 Presunto R$ 5,00 Ovos Queijo x 2 Podemos perceber que do lado direito temos uma expresso matemtica. Falaremos disso um pouco mais frente. Instrues bsicas de entrada e sada A maioria dos problemas computacionais nos fornece valores de entrada para que eles sejam processados e para que a gente devolva os resultados encontrados. Vamos colocar novamente aqui o problema da padaria: Voc tem que ir padaria comprar queijo, presunto e ovos para fazer uma omelete. Voc tem R$ 20,00 e antes de comprar os produtos tem que saber se o dinheiro vai dar. O queijo custa R$ 4,00, o presunto custa R$ 5,00 e a dzia de ovos custa R$ 4,00.

Tema I

| Resoluo de problemas atravs da Lgica

27

O que est sublinhado so os dados de entrada. Veja que neste caso eles foram encontrados facilmente. A grande pergunta : qual o dado de sada? Acredito que voc poderia pensar nas seguintes respostas: Soma dos produtos Valor do troco A omelete que voc vai saborear Entretanto, o dado de sada uma resposta SIM ou NO. Sutilmente, o texto diz assim: [...] antes de comprar os produtos tem que saber se o dinheiro vai dar. Esta a frase que nos guia em todo o algoritmo. a partir desta frase que seguimos um raciocnio que nos levar resposta. Veja qual seria este raciocnio: Eu preciso saber se o dinheiro vai dar O dinheiro vai dar se precisar ter troco ou for igual ao valor total dos produtos Para ter troco a soma dos produtos tem que ser menor que o valor que tenho no bolso Seguindo esta lgica voc consegue resolver o problema. Pense um pouco mais sobre esta lgica e veja se ela est 100% correta. Discuta com seu tutor se voc encontrou algum problema. Acabamos analisando todo o problema da padaria, mas isto importante para poder saber se os dados de entrada e sada esto bem claros. Alm disso, imagine que um dos produtos no tem um preo definido. Voc conseguiria resolver o problema? A resposta no! Portanto, temos que identificar os dados de entrada e o que o problema espera como resposta (os dados de sada) para somente depois comear a solucion-lo.

28

Introduo Programao

Analisando o problema Quando tivermos que construir um algoritmo sempre devemos levar em considerao os seguintes aspectos: Leia atentamente o enunciado do problema, compreenda o que est sendo solicitado, destacando os pontos mais importantes Defina quais so os dados de entrada, ou seja, aqueles dados que sero fornecidos Defina quais so os dados de sada, ou seja, aqueles dados que sero processados no algoritmo Defina como ser o processamento, isto , como os dados de entrada sero transformados nos dados de sada Defina as variveis que sero necessrias para efetuar o processamento Aps definir o algoritmo faa simulaes para verificar se ele est processando de forma correta De todos estes itens apenas o ltimo que ainda no aprendemos a fazer. Entretanto, vamos exercitar o que voc aprendeu at aqui. A seguir temos dois problemas para voc definir os dados de entrada, os dados de sada e a lgica para conseguir chegar ao resultado.

Tema I

| Resoluo de problemas atravs da Lgica

29

1. Dona Judite e Seu Ronaldo so casados h 12 anos. Eles tiveram trs filhos, um a cada dois anos. O primeiro nasceu no 2 ano de casamento qual a idade do filho mais novo? 2. Fazer uma ligao para um celular da mesma operadora custa R$ 0,70 por minuto. A ligao para celular de outra operadora custa R$ 1,50. Quanto terei que pagar sabendo que liguei 8 minutos para celulares da mesma operadora e 15 minutos para celulares de outras operadoras? Pense num problema e envie por email para um colega de turma para que ele(a) possa definir quais so os dados de entrada e os dados de sada.

Para Refletir
Fizemos uma introduo ao conceito de algoritmo e mostramos o que so variveis e atribuies. Porm, um ponto importante conseguir entender como os problemas so resolvidos usando os dados de entrada e os dados de sada. Voc j tinha percebido que os problemas eram resolvidos dessa forma? Pense nisso e encare a vida de outra forma!

30

Introduo Programao

1.3 RESOLUO

DE PROBLEMAS COM FLUXOGRAMAS

O fluxograma o recurso grfico usado para apresentar a soluo de problemas. Ele muito utilizado no aprendizado inicial de algoritmos, por ser de fcil entendimento. Entretanto, pouco usado em problemas complexos devido ao tamanho que ficaria o diagrama. Operadores Antes de iniciar o estudo de fluxogramas vamos falar um pouco sobre operadores. Existem trs tipos de operadores: aritmticos, relacionais e lgicos. Os operadores aritmticos servem para montar expresses matemticas e eles so: + soma - subtrao * multiplicao / diviso % resto da diviso Os operadores relacionais tm como objetivo fazer comparaes entre elementos. Eles so: > maior < menor >= maior ou igual <= menor ou igual = igual <> diferente Os operadores aritmticos esto mais ligados ao processamento dos dados num algoritmo. Enquanto que os operadores relacionais esto ligados a estruturas e controle, que veremos no tema 2.

Tema I

| Resoluo de problemas atravs da Lgica

31

Formas bsicas dos fluxogramas Os fluxogramas possuem um conjunto bsico de formas, as quais podemos ver a seguir:

Figura 5 - Elementos do fluxograma

Na literatura poderemos encontrar outras formas para os fluxogramas, como conector, armazenamento em fita, documento, atraso, entre outros, mas com os elementos da Figura 5 voc vai conseguir resolver os problemas que sero apresentados. Entrada de dados manual Se voc notou, uma das figuras bsicas do fluxograma chamada de entrada de dados manual. Vamos explicar um pouco mais este elemento. Muitos programas s conseguem obter os dados de entrada quando esto sendo executados, ou seja, os dados de entrada esto definidos, mas no tm valores. Vamos ver alguns exemplos: Ao fazer o saque num caixa eletrnico teremos que informar a agncia, o nmero da conta, a senha e o valor a ser retirado. Estes valores devem ser dinmicos, ou seja, s podem ser obtidos na hora de fazer o saque.

32

Introduo Programao

Para dar o valor que ter que ser pago por abastecer um carro, o posto precisa do valor do combustvel por litro e a quantidade de litros que foi colocada no tanque. O valor do combustvel vai estar definido antes, mas a quantidade de combustvel s poder ser medida na hora do abastecimento. Veja que nestes dois casos temos que fazer uma entrada manual de dados, ou seja, os dados sero obtidos somente quando o programa estiver sendo executado. Pense agora em outros exemplos onde temos entrada de dados manual e discuta com seus colegas de turma. Escute o podcast contedo 4 para ver mais exemplos.

Sequenciamento Um dos pontos importantes que j foram discutidos que a ordem das instrues deveria ser coerente para que o problema possa ser resolvido. Por exemplo, se voc quer dar uma volta de carro, antes de lig-lo ser preciso abrir a porta. Para dar sequenciamento s instrues do fluxograma, usamos uma seta para poder indicar o caminho que deve ser seguido. O nome fluxograma vem de fluxo + diagrama, ou seja, um diagrama que mostra o fluxo das aes.

Tema I

| Resoluo de problemas atravs da Lgica

33

Resoluo de problemas com fluxogramas A seguir veremos um conjunto de problemas e uma possvel soluo com o uso de fluxogramas. Vamos resolver o problema de calcular qual o valor a ser pago no abastecimento de um carro num posto de combustvel.

Figura 6 - Fluxograma para calcular o valor a ser pago no abastecimento

34

Introduo Programao

Veja que na figura temos um sequenciamento das atividades. O algoritmo comea na figura Incio e pela seta podemos seguir o fluxo para acompanhar qual ser o prximo passo. Note que o terceiro passo uma entrada manual de dados, ou seja, o usurio dever entrar com a quantidade de litros que foram usados no abastecimento.

Sua vez de treinar: Faa um fluxograma que leia o salrio da Sra. Chiquinha e calcule quanto ela vai ter que dar de mesada para seu filho Tlio. Sabendo que ela sempre d 10% do salrio que ela recebe.

Em vrias situaes temos que tomar decises para executar ou no algumas instrues. Imagine que voc quer tomar um sorvete que custa R$ 5,00. O que voc vai fazer verificar quanto dinheiro tem na sua carteira. Dependendo desse valor voc vai ou no comprar o sorvete. Este um exemplo de uso de uma condio. Vamos ver como ficaria este exemplo usando um fluxograma na prxima pgina.

Tema I

| Resoluo de problemas atravs da Lgica

35

Figura 7 - Fluxograma com um comando de deciso

Suponha agora que voc vai comprar um ingresso no cinema e se sobrar dinheiro vai comprar um saco de pipoca tambm. Na prxima pgina podemos ver como ficaria o fluxograma para este algoritmo.

36

Introduo Programao

Figura 8 - Fluxograma para comprar ingresso de cinema e pipoca

Neste fluxograma quis mostrar que possvel ter decises dentro de outras decises, veja que s vai decidir comprar pipoca caso tenha conseguido comprar o ingresso. Agora vamos propor para voc que encontre a soluo de alguns algoritmos com o uso de fluxogramas. 1. O Sr. Fernando est querendo saber se o peso dele est de acordo com sua altura. Pesquisando na internet ele encontrou a seguinte frmula: peso = (72.7 * h) 58, onde h a altura da pessoa. Faa um algoritmo que vai ler o peso e a altura do Sr. Fernando e dizer se ele est acima do peso ou no.

Tema I

| Resoluo de problemas atravs da Lgica

37

2. Ao chegar ao caixa da loja para poder fazer o pagamento, a moa pergunta ao Dr. Pedro a forma de pagamento, que pode ser: vista (10% de desconto) ou parcelado em duas vezes. Faa um programa que seja informado o valor total da compra e a escolha de Dr. Pedro e o programa mostre qual vai ser o valor pago e as parcelas caso o pagamento seja dividido. 3. Faa um algoritmo que leia quatro valores numricos inteiros e some todos os nmeros que forem pares. Ao final imprima o valor da soma encontrada. Revise os fluxogramas que foram resolvidos neste contedo, depois faa os algoritmos que foram propostos aqui e no AVA. Finalmente, se prepare para o prximo contedo, no qual vamos ver outra maneira de resolver algoritmos. Bom estudo!

Para Refletir

O que voc acha mais fcil de entender: uma soluo escrita (como uma receita de bolo) ou um fluxograma? Voc acha que possvel transformar uma receita de bolo em um fluxograma? Se for possvel, quais sero as diferenas entre eles? Coloque suas reflexes no frum do AVA.

38

Introduo Programao

1.4 PORTUGOL - ELEMENTOS

BSICOS DE

ALGORITMOS

Os fluxogramas so elementos muito bons para representao da soluo de problemas. Porm, quando temos problemas que exigem muitos passos, os fluxogramas acabam ficando com tamanho muito grande. Dessa forma, foi criada uma linguagem prxima das linguagens de programao para facilitar a escrita de algoritmos. Esta linguagem, chamada de Portugol, possui um conjunto de palavras que sero usadas pelos algoritmos para poder definir as instrues. Estrutura do algoritmo em Portugol Os algoritmos escritos em Portugol precisam seguir uma sintaxe bem definida. A seguir podemos ver a estrutura de um algoritmo:
1. algoritmo nome do algoritmo 2. var 3. <declarao de variveis>

4. inicio 5. <lista de comandos>

6. mAlgoritmo

As palavras reservadas foram colocadas em negrito. Na linha 1 temos a definio do nome do algoritmo. Nas linhas 2 e 3 temos a declarao das variveis, que veremos logo a seguir. A linha 4 marca o incio do algoritmo, o qual ser finalizado como aparece na linha 6, com a palavra fimAlgoritmo. Toda a lgica do algoritmo ser colocada no que foi chamado de <lista de comandos>.

Tema I

| Resoluo de problemas atravs da Lgica

39

Declarao de variveis Todas as variveis que sero usadas pelo algoritmo devero ser declaradas. A declarao de variveis em Portugol segue a seguinte forma:
Var <identicador 1>, <identicador 2>, ... <identicador N> : <tipo da varivel>

Onde identificador o nome que vai ser dado para a varivel e tipo da varivel o tipo de dado que a varivel vai poder receber. Os tipos possveis para declarao de variveis so os seguintes: Tipo INTEIRO REAL LITERAL LGICO Descrio Representa valores inteiros Ex.: 15, 2, -89 Representa valores reais Ex.: 10, 54.65, -68.35 Representa valores texto, sempre colocados entre aspas Ex.: Joo Santos, S, 123 Representa valores lgicos Ex.: VERDADEIRO e FALSO

Para dar o nome a uma varivel devemos seguir quatro regras bsicas: No podem ser iguais a palavras reservadas Devem possuir como primeiro caractere uma letra Devem ter no mximo 127 caracteres No podem ter espaos em branco

40

Introduo Programao

Vejamos o seguinte exemplo de definio de variveis em Portugol:


Var Nota1, nota2, nota3 : real; NomeFuncionario IdadeFuncionario : literal; : inteiro;

Atribuio de valores Em algoritmo podemos atribuir valores s variveis. Para fazer a atribuio de um valor usamos a seguinte sintaxe:
varivel <- expresso ou varivel := expresso

Fazendo isto estamos colocando valor da expresso dentro da varivel. Como no exemplo abaixo:
nota1 <- 10,0 nota2 <- 8,0 nota3 := 9,5

Comandos de entrada e sada A sintaxe para o comando de sada de Portugol a seguinte:


Escreva(<expresso, <expresso, identicador ou constante>, <expresso,

identicador ou constante>, ...

identicador ou constante>);

Tema I

| Resoluo de problemas atravs da Lgica

41

Na verdade, existe uma variao do comando de sada. Podemos ter tanto Escreva quando EscrevaL. Vamos ver um exemplo de uso desses dois comandos de sada.
algoritmo soma var x, y, z : inteiro inicio x <- 10 y <- 30 z <- x + y Escreva(x = ,x) Escreva( y = ,y) EscrevaL( soma = ,z) EscrevaL(x = ,x) EscrevaL(y = ,y) EscrevaL(soma = ,z) mAlgoritmo

A sada deste algoritmo pode ser vista logo abaixo:


x = x = y = 10 y = 10 30 40 30 soma = 40

soma =

Dessa forma, podemos perceber que quando usamos Escreva a sada vai continuar na mesma linha. Se utilizarmos EscrevaL a sada vai pular para a linha de baixo. Para o comando de entrada usamos a palavra reservada Leia. Isto vai permitir que seja feita uma entrada manual de dados. A sintaxe do comando de leitura da seguinte forma:
Leia(identicador);

42

Introduo Programao

A seguir voc pode ver um algoritmo que usa o comando de leitura.


algoritmo leitura var Salario : real Nome : literal inicio Escreva(Digite o nome: ) Leia(nome) Escreva(Digite o salrio: ) Leia(salario) Escreva(O salrio de ,nome) Escreva( de R$ , salario) mAlgoritmo

Uma observao importante que o identificador ser sempre uma varivel declarada no algoritmo. Dessa forma, incorreto colocar leituras de dados assim:
Leia(salrio + 100) Leia(456) Leia(nome + sobrenome)

Como este contedo o mais complicado at agora neste livro, caso tenha alguma dvida importante que faa uma releitura do contedo antes de ver e fazer os exerccios que estamos propondo a seguir na prxima pgina.

Tema I

| Resoluo de problemas atravs da Lgica

43

Exemplos de algoritmos A seguir temos ver um conjunto de problemas para que a gente possa resolver com algoritmos. Faa um algoritmo que leia o nome e as trs notas que ele tirou na disciplina Algoritmo. Calcule e mostre a mdia aritmtica do mesmo.
algoritmo MediaAluno var nota1, nota2, nota3, media : real nome : literal inicio Escreva(Digite o nome) Leia(nome) Escreva(Digite a nota1) Leia(nota1) Escreva(Digite a nota2) Leia(nota2) Escreva(Digite a nota3) Leia(nota3) Media := (nota1 + nota2 + nota3)/3 EscrevaL(Nome do aluno ,nome) EscrevaL(Mdia em algoritmo= ,media) mAlgoritmo

Seu Maneco gostaria de saber quantos dias ele j viveu. Para isso ele vai informar quantos anos, meses e dias ele tem.

44

Introduo Programao

Faa um algoritmo que calcule a idade do Seu Maneco em dias.


algoritmo Idade var ano, mes, dia, total : inteiro inicio Escreva(Digite a quant. de anos) Leia(ano) Escreva(Digite a quant. de meses) Leia(mes) Escreva(Digite a quant. de dias) Leia(dia) total := ano * 365 total := total + (mes * 30) total := total + dia EscrevaL(N de dias de Seu Maneco= ,total) malgoritmo

Neste algoritmo estamos considerando que todos os anos tm 365 dias e que todos os meses tm 30 dias. Outro ponto importante neste algoritmo a instruo da total = total + (ms * 30). Suponha que os dados lidos para ano, ms e dia so os seguintes: ano = 10, ms = 5 e dias = 6. Total := 10 * 365 total fica com o valor de 3650 Total := 3650 + (5 * 30) total ficar com o valor de 3800 Quando temos uma instruo como a que est a seguir, o que estamos fazendo somando 1 varivel cont. Voc tem que lembrar que sempre temos que encarar o lado direito da atribuio como uma expresso independente, que ser calculada e atribuda varivel do lado esquerdo da atribuio.
cont := cont + 1

Tema I

| Resoluo de problemas atravs da Lgica

45

Vamos fazer outro algoritmo. O custo de um carro novo calculado somando o custo de fbrica com a percentagem do distribuidor e dos impostos (aplicados ao custo de fbrica). Supondo que a percentagem do distribuidor seja de 10% e os impostos de 25%, escreva um algoritmo que leia o custo de fbrica de um carro e escreva o custo total do carro.
algoritmo CustoCarro var custoTotal, custo : real imposto, distribuidor : real inicio Escreva(Digite o custo de fbrica) Leia(custo) distribuidor <- custo * 0.1 imposto <- custo * 0.25 custoTotal := custo + imposto + distribuidor EscrevaL(Custo do imposto = , imposto) EscrevaL(Custo do distr. EscrevaL(Custo total mAlgoritmo = , distribuidor) = , custoTotal)

Analise novamente cada um dos algoritmos que foram resolvidos e v ao AVA para resolver um conjunto de algoritmos que esto propostos para voc. Discuta cada um deles com seus colegas atravs do frum ou nos encontros presenciais e caso tenha alguma dvida procure seu tutor para resolv-la. No deixe de fazer nenhum! Mos obra.

46

Introduo Programao

Para Refletir
Percebeu que acabamos de resolver vrios problemas de uma forma bem estruturada? Voc consegue perceber que possvel discutir com seus colegas de turma usando uma mesma linguagem? Esse exatamente o objetivo do Portugol. Voc poder escrever um algoritmo e seu colega de outro polo conseguir interpretar sem ambiguidade o que voc est querendo dizer. J pensou se cada pessoa resolvesse escrever de uma forma diferente? por isso que precisamos de uma padronizao.

RESUMO
Ao longo deste primeiro tema falamos sobre a resoluo de problemas. Inicialmente vimos que necessrio seguir um raciocnio lgico para encontrar as solues. Depois vimos como resolver problemas atravs de diagramas de fluxo, chamados de fluxogramas. Finalmente discutimos uma linguagem para a resoluo de algoritmos. Com esta linguagem podemos estruturar melhor a soluo e nos aproximamos das linguagens de programao

Algoritmos com Pseudocdigo

Neste tema veremos o conjunto completo de comandos do pseudocdigo para poder resolver todo tipo de problema computacional. Vamos ver as estruturas de controle do algoritmo, veremos tambm como testar os programas em simuladores e vamos finalizar a Parte 1 com estruturas de dados homogneas.

2.1 ESTRUTURAS

DE CONTROLE

As estruturas de controle servem para poder controlar o fluxo do algoritmo. Existem duas formas de controle para os algoritmos. Os comandos de deciso e os comandos de repetio. Os comandos de deciso j foram abordados de forma introdutria quando falamos de fluxograma. Veremos, a partir de agora, como so essas duas estruturas de controle para os algoritmos escritos em Portugol.

48

Introduo Programao

Comandos de deciso Com os comandos de deciso voc pode especificar diferentes caminhos para o algoritmo. O primeiro comando de deciso que veremos o comando SE. A sintaxe do comando a seguinte:
SE condio ENTAO <lista de comandos> FIMSE

Alternativamente, voc pode usar o comando SE da seguinte forma:


SE condio ENTAO <lista de comandos> SENAO <lista de comandos> FIMSE

Voc pode notar que nas duas sintaxes usamos uma condio. A condio , na verdade, uma expresso lgica, cujo resultado sempre ser VERDADEIRO ou FALSO. Veja o seguinte exemplo:
Leia(horaAtual) SE horaAtual < 5 ENTO Escreva(Est muito cedo para acordar) FIMSE

Imagine que o valor lido na varivel horaAtual seja 10. A expresso lgica 10 < 5 vai dar FALSO e, portanto, o comando dentro do SE no ser executado. Entretanto, caso a varivel lida seja 4, o valor da expresso lgica ser VERDADEIRO e o comando Escreva ser executado.

Tema II

| Algoritmos com pseudocdigo

49

Vamos analisar outro exemplo. Imagine que seu carro bi-combustvel. Na hora de abastecer voc pode escolher se quer colocar lcool ou gasolina. Dessa forma, para calcular quanto temos que pagar vamos precisar saber qual dos dois combustveis foi escolhido. Veja uma possvel soluo:
Algoritmo combustivel Var Combustivel : literal Litros, valorLitro, valorPagar : real Inicio Escreva(qual o combustvel?) Leia(combustivel) se combustivel = gasolina entao valorLitro := 2.5 senao valorLitro := 1.8 mse Escreva(quantos litros abasteceu?) Leia(litros) valorPagar := valorLitro * litros EscrevaL(Valor a pagar: , valorPagar) malgoritmo

Note que se o valor lido na varivel combustvel for gasolina ento o valor do litro do combustvel R$ 2.50. Em caso contrrio, ou seja, se for lcool o valor do litro utilizado ser de R$ 1.80. Discuta com seus colegas caso voc ache que este algoritmo est com algum problema.

50

Introduo Programao

Vamos fazer um algoritmo para nos aconselhar o que fazer no final de semana.
Algoritmo FinalSemana Var dinheiro : real Inicio Escreva(quanto dinheiro voc tem?) Leia(dinheiro) SE dinheiro > 100 ENTAO EscrevaL(V ao shopping e faa compras) SENAO SE dinheiro > 30 ENTAO EscrevaL(V ao cinema e compre pipoca) SENAO EscrevaL(Fique em casa e veja TV) FIMSE FIMSE EscrevaL(Obrigado e volte sempre) malgoritmo

Analise o algoritmo anterior e faa a simulao do resultado impresso caso voc tenha 10, 50 e 150 reais. Discuta os resultados que voc encontrou com seus colegas de turma e pergunte ao seu tutor sobre indentao de SEs.

Tema II

| Algoritmos com pseudocdigo

51

O segundo comando de deciso o ESCOLHA. Este comando uma variao bastante interessante do comando SE. A sintaxe a seguinte:
ESCOLHA <expresso de seleo> CASO <exp1>, <exp2>, ..., <expN> <lista de comandos> CASO <exp1>, <exp2>, ..., <expN> <lista de comandos> OUTROCASO <lista de comandos> FIMESCOLHA

Vamos ver um exemplo que envolve o comando escolha. Suponha que dependendo do nome do time do futebol voc tenha que dizer de qual estado ele . O algoritmo para resolver este problema seria mais ou menos assim:
algoritmo times var time : literal inicio escreva(Digite o nome do time:) leia(time) escolha time caso Flamengo, Fluminense, Vasco escrevaL(O time do Rio de Janeiro) caso So Paulo, Santos, Palmeiras escrevaL(O time de So Paulo) caso Sergipe, Conana, escrevaL(O time de Sergipe) mescolha malgoritmo

52

Introduo Programao

V at o AVA e resolva o conjunto de algoritmos propostos para os comandos de deciso. Discuta com seus colegas de turma e caso surjam dvidas entre em contato com seu tutor. Agora tome flego para o prximo tpico. Nele vamos ver como criar algoritmos que conseguem repetir instrues um nmero definido de vezes. Comandos de repetio A estrutura de controle que mais causa dvidas quando estamos iniciando na resoluo de algoritmos a estrutura de repetio. Entretanto, ela bastante simples de ser entendida. Vamos analisar os seguintes problemas: 1. Fique correndo enquanto no cansar 2. Conte de 1 a 20 3. Suba os degraus da escada at chegar ao 3 andar Voc poderia me dizer o que esses problemas tm em comum? Se voc falou que existe uma repetio acertou! Estes trs problemas representam diretamente as estruturas de controle existentes em algoritmos. No primeiro problema temos uma repetio do tipo enquanto, ou seja, enquanto a condio (ficar cansado) no acontece existe uma repetio (correr). No segundo problema samos de um ponto inicial (1) e vamos at um ponto final (20), sendo uma repetio de contagem. No terceiro e ltimo problema temos uma repetio do tipo at, onde fazemos a repetio (subir os degraus) at que a condio seja satisfeita (chegar ao 3 andar). Os algoritmos possuem trs tipos de repetio. A seguir veremos a primeira, que o comando PARA.

Tema II

| Algoritmos com pseudocdigo

53

O comando PARA tem como objetivo levar uma varivel de ponto inicial at um ponto final. Sua sintaxe da seguinte forma:
para <varivel> de <inicio> ate <m> faca <lista de comandos> mpara

A seguir temos um exemplo de uso do comando para.


Algoritmo Contando var i, n : inteiro Inicio Escreva(At qual nmero quer contar?) Leia(n) para i de 1 ate n faca Escreva(i,, ) mpara malgoritmo

Este algoritmo vai imprimir os nmeros de 1 at o nmero que foi digitado pelo usurio. Imaginando que o nmero lido para N for igual a 5 ento o programa vai imprimir: 1, 2, 3, 4, 5, Com isso voc pode deduzir que a varivel i foi incrementada de 1 em 1 at atingir o valor N. Note que saiu uma vrgula final e se voc for detalhista no vai gostar muito disso. Altere o programa para que esta vrgula no seja impressa e discuta com os colegas da sua turma a soluo que voc encontrou.

54

Introduo Programao

O segundo comando de repetio o ENQUANTO. Ele possui a seguinte sintaxe:


enquanto <expresso lgica> faca <lista de comandos> menquanto

A expresso lgica ser testada e caso seja verdadeira ser executada a lista de comandos que esto dentro do ENQUANTO. A repetio ser interrompida quando a expresso lgica for falsa. Vejamos o seguinte exemplo:
Algoritmo Nomes var cont : inteiro nome : literal Inicio Cont := 1 Escreva(Digite o nome) Leia(nome) Enquanto nome <> m faca Cont := cont + 1 Escreva(Digite o nome) Leia(nome) menquanto EscrevaL(Foram lidos , cont, nomes) malgoritmo

Neste exemplo, o programa ficar solicitando a leitura de vrios nomes e ele ser encerrado quando o nome lido foi igual a fim. Ao final ele mostrar quantos nomes foram digitados.

Tema II

| Algoritmos com pseudocdigo

55

A ltima estrutura de repetio o REPITA, que tem a sintaxe mostrada abaixo:


repita <lista de comandos> ate <expresso lgica>

A lista de comandos ser executada e caso a expresso lgica seja falsa. Quando a expresso lgica se tornar verdadeira a repetio ser encerrada. Vejamos o seguinte exemplo:
Algoritmo Contagem var cont : inteiro Inicio Cont <- 1 repita Escreva(cont) Cont <- cont + 1 ate cont >= 10 malgoritmo

Este exemplo escreve os nmeros inteiros menores do que 10. O lao interrompido quando cont atinge o valor 10. Note que a varivel cont foi incrementada dentro do lao para que ela mude de valor, tornando o nmero de repeties finito. O que aconteceria se a gente no incrementasse o valor de cont dentro do lao?

56

Introduo Programao

Para Refletir
Acabamos de ver as estruturas bsicas de resoluo de problemas com Portugol. Voc conseguir resolver a grande maioria dos algoritmos que encontrar. Entretanto, agora preciso treinar. Ningum aprende a andar de bicicleta lendo um livro... preciso praticar. O mesmo vale para a construo de algoritmos. Voc s vai aprender se resolver os problemas. Foi pensando nisso que colocamos o prximo contedo. Voc acredita que realmente necessria a prtica?

2.2 RESOLUO

DE PROBLEMAS COM

ALGORITMOS

Neste tema vou desafiar voc a fazer todos os algoritmos propostos. Antes disso, porm, iremos resolver vrios exerccios para que voc possa ir ganhando confiana em escrever sozinho. Embora os algoritmos sejam de complexidade simples, bem provvel que voc sinta muitas dvidas no incio. Isto normal, pois no estamos acostumados a pensar to detalhadamente. Caso voc tenha dificuldades em resolver os problemas propostos procure ajuda com seus colegas e seu tutor. Um conselho: no deixe de fazer os exerccios propostos. Preparado? Ento vamos l!

Tema II

| Algoritmos com pseudocdigo

57

Exerccio 1: Voc esta fazendo uma pesquisa entre os habitantes da sua cidade a pedido do IBGE. Escreva um algoritmo que colete os dados de idade, sexo (M/F) e salrio de todas as pessoas que desejam participar da pesquisa (para encerrar a entrada de dados entre a idade menor ou igual a zero). Aps coletar todos os dados informe: A mdia de salrio do grupo Maior e menor idade do grupo A percentagem do total de mulheres com salrio at R$ 300,00 A quantidade de homens
Algoritmo Pesquisa var idade, cont, maior, menor : inteiro homens, mulheres, mulherGanhaPouco : inteiro sexo : literal salario, total, MediaSalario, perc : real Inicio cont := 0 Escreva(Entre com a idade: ) Leia(idade) maior := idade menor := idade homens := 0 mulheres := 0 total := 0 enquanto idade > 0 faca Escreva(Entre com a sexo: )

58

Introduo Programao

Leia(sexo) Escreva(Entre com o salrio: ) Leia(salario) total := total + salario se sexo = M entao mulheres := mulheres + 1 se salario < 300 entao mulherGanhaPouco := mulherGanhaPouco + 1 mse senao homens := homens + 1 mse cont := cont + 1 se idade > maior entao maior := idade mse se idade < menor entao menor := idade mse Escreva(Entre com a idade: ) Leia(idade) menquanto mediaSalario := total / cont Escreval(Media dos salrios: , mediaSalario) Escreval(Menor idade do grupo: , menor) Escreval(Maior idade do grupo: , maior) perc := (mulherGanhaPouco / mulheres) * 100 Escreval(Percentual de mulheres que ganham , at R$ 300,00 :, perc) Escreval(Quantidade de homens: , homens) malgoritmo

Tema II

| Algoritmos com pseudocdigo

59

Exerccio 2: Faa um algoritmo para ler o saldo de 10 (dez) clientes de um banco. Calcular e mostrar: o saldo mdio dos clientes a porcentagem de clientes com saldo devedor. o nmero de clientes com saldo credor.
Algoritmo SaldoBanco var i, credor, devedor : inteiro saldo, total, media, perc : real Inicio total := 0 para i := 1 ate 10 faca Leia(saldo) se saldo > 0 entao credor := credor + 1 senao devedor := devedor + 1 mse total := total + saldo mpara media := total / 10 Escreval(Mdia de saldo dos clientes:,media) perc := (devedor / 10) * 100 Escreval(Perc. de clientes devedores: , perc) Escreval(N de clientes credores, credor) malgoritmo

60

Introduo Programao

Exerccio 3: A srie de Fibonacci formada pela seguinte sequncia: 1,1,2,3,5,8,13,21,34,55.... Construa um algoritmo que gere a srie de Fibonacci at o vigsimo termo.
Algoritmo Fibonacci var i, ant, atual, prox : inteiro Inicio ant := 1 atual := 1 Escreva(ant) Escreva(atual) para i := 1 ate 18 faca prox := ant + atual Escreva(prox) ant := atual atual := prox mpara malgoritmo

Tema II

| Algoritmos com pseudocdigo

61

Exerccio 4: Um nmero dito primo se ele somente divisvel por 1 e por ele mesmo. Por exemplo: 13, 17, 23 so nmeros primos, enquanto que 8, 15, 27 no so. Faa um algoritmo que o usurio digite um nmero e ele calcule se ele primo ou no.
algoritmo Primo var primo : logico i, numero : inteiro inicio primo := verdadeiro Escreva(Digite o numero) Leia(numero) para i := 2 ate numero-1 faca se numero % i = 0 entao primo := falso mse mpara se primo entao Escreval(O numero, numero, primo) senao Escreval(O numero, numero, no primo) mse malgoritmo

A seguir temos um conjunto de algoritmos propostos para voc resolver. Proposto 1: Construa um algoritmo que imprima a tabela de equivalncia de graus Fahrenheit para centgrados. Os limites so de 50 a 70 graus Fahrenheit com intervalo de 1 grau. Frmula: C = 5 (F -32) 9

62

Introduo Programao

Proposto 2: Uma rainha requisitou os servios de um monge, o qual exigiu o pagamento em gros de trigo da seguinte maneira: os gros de trigo seriam dispostos em um tabuleiro de xadrez, de tal forma que a primeira casa do tabuleiro tivesse um gro, e as casas seguintes o dobro da anterior. Construa um algoritmo que calcule quantos gros de trigo a Rainha dever pagar ao monge. Proposto 3: Jos tem 1,50 m e cresce 2 centmetros por ano. Pedro tem 1,10 m e cresce 3 centmetros por ano. Construa um algoritmo que calcule em quantos anos Pedro ser maior que Jos. Proposto 4: Elabore um algoritmo para ler a altura e o sexo (masculino ou feminino) de 10 (dez) pessoas. Calcular e mostrar: a maior e a menor altura do grupo a mdia de altura das mulheres o nmero de homens (quantos homens) a porcentagem de mulheres (em relao ao n total de pessoas) Proposto 5: Sem utilizar a operao de multiplicao, escreva um algoritmo que multiplique dois nmeros inteiros (positivos). Ler os dois nmeros e imprimir o resultado na forma: Exemplo: 5 * 3 = 15 Proposto 6: Elabore um programa que faa 5 perguntas para uma pessoa sobre um crime. As perguntas so: Telefonou para a vtima? Esteve no local do crime? Mora perto da vtima? Devia vtima? J trabalhou com a vtima?

Tema II

| Algoritmos com pseudocdigo

63

O programa deve no final emitir uma classificao sobre a participao da pessoa no crime. Se a pessoa responder positivamente a 2 questes ela deve ser classificada como Suspeita, entre 3 e 4 como Cmplice e 5 como Assassino. Caso contrrio, ele ser classificado como Inocente. Proposto 7: O Sr. Manoel Joaquim expandiu suas finanas para alm dos negcios de 1,99 e agora possui uma loja de convenincias. Faa um programa que implemente uma caixa registradora rudimentar. O programa dever receber um nmero desconhecido de valores referentes aos preos das mercadorias. Um valor zero deve ser informado pelo operador para indicar o final da compra. O programa deve ento mostrar o total da compra e perguntar o valor em dinheiro que o cliente forneceu, para ento calcular e mostrar o valor do troco. Aps esta operao, o programa dever voltar ao ponto inicial, para registrar a prxima compra. A sada deve ser conforme o exemplo abaixo: Lojas Tabajara Produto 1: R$ 2.20 Produto 2: R$ 5.80 Produto 3: R$ 0 Total: R$ 9.00 Dinheiro: R$ 20.00 Troco: R$ 11.00 Proposto 8: Escrever um algoritmo que leia a velocidade mxima permitida em uma avenida e a velocidade com que o motorista estava dirigindo nela e calcule a multa que uma pessoa vai receber, sabendo que so pagos: 50 reais se o motorista estiver ultrapassar em at 10km/h a velocidade permitida (ex.: velocidade mxima: 50km/h; motorista a 60km/h ou a 56km/h)

64

Introduo Programao

100 reais, se o motorista ultrapassar de 11 a 30 km/h a velocidade permitida 200 reais, se estiver acima de 31km/h da velocidade permitida Proposto 9: Uma academia deseja fazer um senso entre seus clientes para descobrir o mais alto, o mais baixo, a mais gordo e o mais magro, para isto voc deve fazer um programa que pergunte a cada um dos clientes da academia seu cdigo, sua altura e seu peso. O final da digitao de dados deve ser dada quando o usurio digitar 0 (zero) no campo cdigo. Ao encerrar o programa tambm devem ser informados os cdigos e valores do cliente mais alto, do mais baixo, do mais gordo e do mais magro, alm da mdia das alturas e dos pesos dos clientes Proposto 10: Desenvolver um programa para verificar a nota do aluno em uma prova com 10 questes, o programa deve perguntar ao aluno a resposta de cada questo e ao final comparar com o gabarito da prova e assim calcular o total de acertos e a nota (atribuir 1 ponto por resposta certa). Aps cada aluno utilizar o sistema deve ser feita uma pergunta se outro aluno vai utilizar o sistema. Aps todos os alunos terem respondido, informar: Maior e Menor Acerto; Total de Alunos que utilizaram o sistema; A Mdia das Notas da Turma; Gabarito da Prova. 01 A 02 B 03 C 04 D 05 - E - 06 E 07 D 08 C 09 B 10 - A

Tema II

| Algoritmos com pseudocdigo

65

No AVA voc poder encontrar mais algoritmos para praticar e as respostas dos algoritmos propostos. Porm, recomendo fortemente que voc s pegue a resposta dos exerccios propostos aps voc encontrar a sua soluo.

Para Refletir
Como se sentiu ao resolver os problemas propostos? Note que seu raciocnio ficou muito mais aguado e de agora em diante voc vai resolver seus problemas de uma forma mais lgica. Identificando os passos necessrios e a ordem dos mesmos. Ainda temos muita coisa pela frente, mas o passo mais importante j foi dado.

2.3 IMPLEMENTAO

DE ALGORITMOS EM SIMULADORES

Voc deve estar se perguntando se existe uma maneira melhor de testar os algoritmos do que acompanhar passo a passo o andamento do mesmo. Veja que at agora fizemos um conjunto bem grande de algoritmos, mas no vimos nenhum resultado prtico. Muitos estudiosos falam que no relevante ver um algoritmo funcionando j que temos as linguagens de programao para poder ver a execuo de programas. Entretanto, as linguagens de programao tm vrias particularidades, algumas bem chatas de entender neste nvel de abstrao, o que dificulta o aprendizado de programao nos nveis iniciais. A nossa percepo que antes de introduzir toda a estrutura de uma linguagem de programao o aluno possa ver a execuo dos algoritmos. Para isto usaremos simuladores para permitir ver a parte prtica do nosso curso.

66

Introduo Programao

Visualg Veremos inicialmente como usar o programa Visualg. No AVA voc poder encontrar o arquivo e fazer o download para a sua mquina. um arquivo executvel e no precisa fazer nenhuma instalao.

Figura 9 - Tela inicial do visualg

Veja que a tela divida em trs partes. Na parte superior temos o algoritmo que estamos testando. Na parte inferior esquerda temos as variveis que esto sendo usadas pelo algoritmo e os valores que esto atribudas para elas. Na parte inferior direita temos o resultado da execuo do programa, ou seja, os dados de sada. Embora parea um programa complexo, o Visualg simples de ser utilizado. Vamos pegar um dos nossos problemas resolvidos para poder testar o funcionamento do mesmo.

Tema II

| Algoritmos com pseudocdigo

67

Na figura 10 podemos ver o algoritmo que usamos como exemplo do comando PARA logo aps a sua execuo.

Figura 10 - Visualg depois da execuo de um algoritmo

Um ponto importante quando o Visualg encontra uma linha com erro de sintaxe. Na figura 11 podemos ver a janela que o Visualg mostra quando encontra algum problema. Neste caso colocamos:
Enquanto nome <> m facas E deveria ser

Enquanto nome <> m faca

Neste caso precisamos encontrar a sintaxe correta, fazer a correo e executar novamente o programa.

68

Introduo Programao

Figura 11 - Erro de sintaxe encontrado pelo Visualg

O menu mais usado do Visualg Algoritmo. nele que temos as principais opes de execuo do algoritmo que vamos testar. Na figura 12 podemos ver o menu Algoritmo.

Figura 12 - Menu Algoritmo do programa Visualg

Tema II

| Algoritmos com pseudocdigo

69

A primeira opo do menu Executar (F9), que vai fazer o programa ser executado e ver os resultados alcanados. Esta a opo mais comum quando queremos testar o programa. Existem duas formas de executar os programas. Pode ser em modo DOS ou em modo grfico. Voc pode alternar entre estas duas formas apertando o boto localizado na barra de ferramentas. Quando colocamos o modo grfico temos a execuo do programa como mostrado na figura 13. Veja que para a leitura dos valores das variveis abre-se uma janela para fazer a entrada de dados.

Figura 13 - Execuo do programa em modo grfico

Na figura 14 podemos ver a execuo em modo DOS. A grande diferena que no modo DOS podemos mostrar uma mensagem para o valor da varivel que est sendo lida. No modo grfico mostrada uma mensagem padro com o nome da varivel que foi declarada.

70

Introduo Programao

Imagine que voc vai perguntar ao usurio qual o sexo do mesmo. Normalmente voc colocaria assim:
Escreva(Entre com o sexo (M / F)) Leia(sexo)

No modo DOS aparece a mensagem correta, mas no modo grfico vai aparecer a mensagem padro (Entre com o valor do sexo) na janela.

Figura 14 - Execuo do programa em modo DOS

Execuo passo a passo Infelizmente, em vrias situaes no conseguimos fazer o algoritmo corretamente na primeira tentativa e encontramos erros na sua execuo. Quando so erros simples possvel identificar o problema, consert-lo e executar novamente o algoritmo. Entretanto, quando o erro no to aparente o melhor a fazer acompanhar passo a passo a sua execuo.

Tema II

| Algoritmos com pseudocdigo

71

Para executar passo a passo um algoritmo temos que ir ao menu Algoritmo Passo a passo (F8). Isto vai fazer com que o programa seja executado instruo por instruo, apertando sucessivamente a tecla F8. A cada passo voc poder ver com qual valor est numa determinada varivel, ou ento por que entrou ou no entrou numa determinada condio. Este o melhor mtodo de rastreamento do algoritmo. Na figura 15 podemos ver a execuo de um algoritmo passo a passo. Note que a linha marcada indica onde est a execuo do programa.

Figura 15 Algoritmo sendo executado no modo passo a passo

Outra forma de executar o algoritmo passo a passo com a opo Executar com timer. muito parecido com o uso do passo a passo, s que neste caso a execuo feita automaticamente a cada intervalo de segundos definidos pelo boto da barra de ferramentas . Caso a execuo passo a passo seja demorada, mesmo com a opo timer, possvel voc marcar pontos de parada (breakpoints) no seu algoritmo. Estes breakpoints param a execuo do algoritmo mesmo que sejam executados com F9. Quando o

72

Introduo Programao

programa chega no breakpoint a execuo interrompida e podemos seguir a partir desde ponto com F8. No esquea que alm destes elementos que vimos importante salvar os algoritmos que voc fizer. Como conselho, crie uma ou mais pastas para colocar os programas para posterior consulta. Para salvar use o cone da barra de ferramentas e para abrir o arquivo clique no cone . Estes so os principais pontos do programa Visualg. Caso tenha ficado com alguma dvida, entre em contato com seu tutor que ele vai te ajudar no aprendizado do mesmo. Scratch Outro programa para simular a execuo de algoritmos o Scratch. muito mais sofisticado que o visualg e oferece muito mais opes. Neste curso vamos abordar apenas alguns de seus aspectos. A tela inicial dele pode ser vista na figura 16.

Figura 16 - Tela inicial do Scratch

Com o Scratch possvel montar o algoritmo com peas predefinidas. Por exemplo, existem peas para o SE, para o REPITA, para a leitura de dados, entre outros.

Tema II

| Algoritmos com pseudocdigo

73

A tela do Scratch dividida em trs partes, a parte do lado esquerdo contm os comandos que podem ser usados para resolver o algoritmo. Na parte central onde juntamos as peas para montar o algoritmo. Na parte do lado direito temos o que o Scratch chama de Sprite, que para ns seria a execuo do algoritmo. Na figura 17 podemos ver o algoritmo nomes, que usamos para exemplificar o comando ENQUANTO, feito no Scratch.

Figura 17 - Algoritmo feito no Scratch

Note que a soluo bastante simples de entender e os comandos esto muito prximos da linguagem natural. Algumas coisas so um pouco mais complicadas, mas questo de praticar tambm. Vamos analisar os passos que foram feitos para este algoritmo: Mude cont para zero isto uma atribuio normal a uma varivel; neste caso colocamos zero na varivel cont.

74

Introduo Programao

Pergunte digite um nome e espere o comando de leitura. O valor lido fica em varivel nome. Repita at nome = fim o comando de repetio; o detalhe que temos que adicionar o operador . Diga junte o nome digitado foi: nome por 2 segundos aqui temos o comando de sada; tem que ficar atento ao uso do para poder concatenar os literais. Mude cont por 1 incremento da varivel cont Diga junte foram lidos junte cont nomes por 5 segundos mostrar quantos nomes foram digitados, sendo que foi utilizada a pea junte duas vezes No AVA voc vai encontrar mais exemplos resolvidos usando Scratch. Inclusive voc vai poder ver alguns algoritmos interessantes. Colocamos tambm alguns problemas para voc resolver. . Mude nome para resposta atribuio do valor lido para a

Escute o podcast contedo 5 para ouvir maiores informaes sobre programas que simulam a execuo de algoritmos. No prximo tpico vamos abordar um dos temas que mais vai exigir a sua ateno: estruturas de dados homogneas. Voc est quase na metade do curso. hora de continuar pisando no acelerador.

Tema II

| Algoritmos com pseudocdigo

75

Para Refletir

Executar os algoritmos nos simulares tem vantagens e desvantagens (como tudo na vida). A grande vantagem poder ver se a soluo proposta resolve o problema. A desvantagem que voc pode tentar resolver o problema no mtodo da tentativa e erro, o que ruim, pois voc pode ficar mal-acostumado com este tipo de abordagem. Qual seria a melhor forma de utilizar os simulares?

2.4 ESTRUTURAS

DE

DADOS HOMOGNEAS VETORES

Introduo Se voc chegou at aqui porque j percorreu um longo caminho de resoluo de algoritmos. Entretanto, ainda existe um conjunto de problemas que no podemos resolver sem o uso de estruturas de dados homogneas. Os vetores tm exatamente o mesmo objetivo de variveis, s que com eles podemos armazenar mais de um valor para a mesma varivel. Esta a diferena de variveis comuns e vetores. Mas voc deve estar se perguntando como que os vetores conseguem fazer isso. Vamos entender isso. Na realidade, um vetor um conjunto de variveis que possuem o mesmo nome. Veja na figura 18 que uma varivel representada por apenas um espao de memria, j o vetor est representado com vrios espaos que ficam lado, a lado veja na prxima pgina.

76

Introduo Programao

Figura 18 - Diferena entre variveis e vetores

Dessa forma podemos perceber que um vetor pode acessar vrios espaos de memria e foi por este motivo que falamos que o vetor poder ter ao mesmo tempo valores diferentes. Isto acontece porque cada regio de memria tratada de forma independente. Voc deve estar se perguntando como que se acessa individualmente cada posio. Para fazer isso usamos o que chamamos de ndice do vetor. Ele serve para dizer qual das posies vamos querer usar. Veremos a seguir como declarar e como usar vetores. Antes disso escute o poscast contedo 6 que contm mais informaes explicativas sobre vetores.

Declarao de vetores Os vetores so variveis e, portanto, necessitam ser declarados para poder usar. Para declarar um vetor precisamos definir seu tamanho e seu tipo, e sua sintaxe pode ser vista a seguir:
<identicador>: vetor [faixa] de <tipo>

Tema II

| Algoritmos com pseudocdigo

77

Sendo que faixa composta de um valor inicial e de um valor final, que vai definir o tamanho do vetor e os ndices que podero ser usados. Vamos ver exemplos de declarao de vetores:
var carros: vetor[1..10] de literal numeros: vetor[1..50] de inteiro

Foi declarado um vetor carros que tem 10 posies do tipo literal e foi declarado tambm outro vetor com 50 posies o tipo numrico. Acesso aos elementos do vetor Como falamos antes, para acessar o vetor usaremos os ndices, que iro representar cada uma das posies do vetor. Na sintaxe abaixo podemos ver o uso dos ndices:
<Identicador>[ndice]

Note que usamos como referncia o nome dado ao vetor e colocamos entre [ ] o ndice que desejamos acessar. Veja nos exemplos abaixo:
carros[1] := Fiesta carros[3] := Astra Leia(carros[2]) i := 4 Carros[i] := Corsa

78

Introduo Programao

Podemos notar algumas coisas com este exemplo: As posies do vetor podem ser acessdas em qualquer ordem Podemos ler uma posio do vetor Podemos usar variveis como ndice

EXERCCIOS

SOBRE VETORES

A seguir vamos resolver uma srie de problemas envolvendo vetores. Exerccio 1: Escreva um algoritmo que leia e mostre um vetor de 20 elementos inteiros. A seguir, conte quantos valores pares existem no vetor.
algoritmo Exercicio1 var v: vetor[1..20] de inteiro i, cont: inteiro inicio para i := 1 ate 20 faca escreva(Digite o ,i, valor:) leia(v[i]) mpara cont := 0 para i := 1 ate 20 faca se v[i] % 2 = 0 entao cont <- cont + 1 mse mpara escreva(A qtd. de nmeros pares foi:) escreval(cont) malgoritmo

Tema II

| Algoritmos com pseudocdigo

79

Exerccio2: Elaborar um algoritmo que leia um conjunto de 30 valores e os coloque em 2 vetores conforme os valores forem maiores, menores ou iguais a N, sendo N um valor lido. Terminada a leitura escrever o contedo dos dois vetores.
algoritmo Exercicio2 var v1, v2: vetor[1..30] de inteiro n, i, valor, cont1, cont2: inteiro inicio cont1 := 0 cont2 := 0 escreva(Digite o valor de N:) leia(n) para i := 1 ate 30 faca escreva(Digite o ,i, valor:) leia(valor) se valor < n entao cont1 := cont1 + 1 v1[cont1] := valor senao cont2 := cont2 + 1 v2[cont2] := valor mse mpara escreval(vetor com valores menores que ,n) para i := 1 ate cont1 faca escreva(v1[i]) mpara escreval() escreval(vetor com valores maiores que ,n) para i := 1 ate cont2 faca escreva(v2[i]) mpara malgoritmo

80

Introduo Programao

Exerccio 3: Faa um algoritmo que leia um vetor de 10 elementos inteiros. Encontre e mostre o menor elemento e sua posio no vetor.
algoritmo Exercicio3 var v: vetor[1..10] de inteiro i, menor, indiceMenor: inteiro inicio para i := 1 ate 10 faca escreva(Digite o ,i, valor:) leia(v[i]) mpara menor := v[1] indiceMenor <- 1 para i := 2 ate 10 faca se v[i] < menor entao indiceMenor := i menor := v[i] mse mpara Escreval(O menor valor : , menor) Escreval(Esta na posio , indiceMenor) Escreva( do vetor) malgoritmo

Tema II

| Algoritmos com pseudocdigo

81

Exerccio 4: Faa um algoritmo que leia um vetor de 20 elementos e o escreve. Troque, a seguir, o 1 elemento com o ltimo, o 2 com o penltimo e assim por diante, at trocar o 10 com o 11. Escreva o vetor N depois da alterao.
algoritmo Exercicio4 var v: vetor[1..20] de inteiro i, cont, temp: inteiro inicio para i := 1 ate 20 faca escreva(Digite o ,i, valor:) leia(v[i]) mpara Escreval(Vetor original) para i := 1 ate 20 faca escreva(v[i]) mpara escreval() cont <- 20; para i := 1 ate 10 faca temp := v[i] v[i] := v[cont] v[cont] := temp cont := cont - 1 mpara Escreval(Vetor modicado) para i := 1 ate 20 faca escreva(v[i]) mpara malgoritmo

82

Introduo Programao

Caso tenha alguma dvida sobre a resoluo de algum desses exerccios entre em contato com seu tutor. A seguir voc ter um conjunto de exerccios propostos. Proposto 1: Dados 2 vetores de 20 nmeros, utilize um terceiro vetor para intercalar os nmeros dos dois. Armazene os nmeros do primeiro nas posies mpares do terceiro, e os do segundo nas posies pares. Proposto 2: Construa um algoritmo que leia dois vetores de 20 posies e apresente a unio entre eles. Lembrando que o conjunto unio so todos os elementos repetidos que existem em ambos os vetores, mas sem repetio Proposto 3: Escreva um algoritmo que leia um vetor de 13 elementos inteiros, que o Gabarito de um teste da loteria esportiva, contendo os valores 1 (coluna 1), 2 (coluna 2) e 3 (coluna do meio). Leia, a seguir, para cada apostador, o nmero do seu carto e um vetor de Respostas de 13 posies. Verifique para cada apostador o nmero de acertos, comparando o vetor de Gabarito com o vetor de Respostas. Escreva o nmero do apostador e o nmero de acertos. Se o apostador tiver 13 acertos, mostrar a mensagem Ganhador. Proposto 4: Faa um algoritmo que leia trs vetores, sendo que os dois primeiros contero nmeros e o terceiro ser um vetor de caracteres preenchido com as quatro operaes aritmticas bsicas (+,-, *, / ). O algoritmo vai realizar as operaes contidas no terceiro vetor com o primeiro vetor como operando1 e o segundo vetor como operando2. O resultado deve ser armazenado em um quarto vetor.

Tema II

| Algoritmos com pseudocdigo

83

Proposto 5: Faa um algoritmo que leia um vetor A ordenado com 12 elementos, depois leia um vetor B ordenado de 10 elementos. Depois de lidos, eles devem ser combinados em um novo vetor C de 22 elementos de modo que o vetor C fique ordenado sem a utilizao de um mtodo de ordenao. Colocamos para voc mais exerccios de vetores no AVA. No deixe de ir l para se exercitar.

Para Refletir
Agora voc est pronto para resolver qualquer tipo de algoritmo. Vetores era o tpico que faltava para que voc chegasse a essa condio. O caminho at aqui foi longo, mas ainda estamos na metade. Se voc deixou algum exerccio sem fazer, minha recomendao que voc volte e o faa. No deixe nada para trs. Pronto para conhecer Java? Ento vamos!

RESUMO
Neste tema nos aprofundamos na resoluo de algoritmos dos mais simples aos mais complexos usando programas que podem simular a execuo dos mesmos. Isto um grande passo em relao ao nosso objetivo maior que o aprendizado da linguagem Java. Que ser exatamente o contedo do nosso prximo tema.

LINGUAGEM DE PROGRAMAO JAVA


Parte II

A linguagem Java e seu Ambiente

Nesta segunda parte do curso veremos a linguagem de programao Java aplicada na resoluo de algoritmos. A linguagem Java tem algumas particularidades que no so encontradas em outras linguagens de programao. Uma dessas particularidades sobre seus vrios ambientes de desenvolvimento. Aqui veremos o ambiente Eclipse, mas existem vrios outros como Netbeans, JDeveloper, entre outros. Alm disso, o Java introduziu vrios conceitos que acabaram sendo adotados por outras linguagens, como a coleta automtica de objetos.

3.1 HISTRICO

DA LINGUAGEM

JAVA

No comeo da dcada de 90, um grupo de pesquisadores da Sun Microsystems, liderado por Patrick Naughton, Mike Sheridan, e James Gosling, iniciou um projeto que chamaram de Green Project, que inicialmente tinha como objetivo se antecipar

88

Introduo Programao

a prxima onda do mundo digital. O grupo imaginava que haveria uma convergncia entre os computadores e os eletrodomsticos usados no dia a dia e que deveria haver algum ambiente que pudesse controlar tudo isso. O grupo de 13 pessoas mudou-se para a San Hill Road, uma empresa filial, e depois de 18 meses de trabalho conseguiu criar um prottipo da ideia. Eles chamaram o prottipo de *7 (leia-se star seven), que era um controle remoto com uma interface grfica touchscreen (como os iPhones de hoje). Para o *7 foi criado um mascote, amplamente conhecido hoje no mundo Java, chamado de Duke. O trabalho dele era ser um assistente virtual mostrando como usar o equipamento. Ao longo do trabalho, James Gosling percebeu que teria que criar uma linguagem de programao para poder usar no *7. Ele fez a especificao da linguagem e a chamou de Oak. O prximo passo do grupo era encontrar mercado para o *7. A equipe tinha certeza que era uma boa ideia controlar televises e vdeo por demanda com o equipamento. Essa ideia, exatamente como a TV Digital de hoje, iria permitir ao telespectador interagir com a emissora e com a programao, era algo muito visionrio e estava muito longe do que as empresas de TV a cabo tinham capacidade de entender e comprar. Uma ideia e tanto, s que na poca errada. Entretanto, com a chegada da Internet tudo mudou e o *7 se adaptava bem a esta nova infraestrutura de rede. Neste meio tempo, a Sun passou a responsabilidade para Gosling fazer as adaptaes necessrias ao Oak. Estas adaptaes foram concludas em 1995 e a linguagem foi rebatizada para Java e a xcara de caf foi uma homenagens s interminveis horas de trabalho da equipe que consumiu dezenas de cafezinhos Figura 19 - Os smbolos do Java

Tema III

A linguagem Java e seu ambiente

89

durante todos os meses de trabalho dirios e, principalmente, noturnos. Desde a sua criao, em 1995, a plataforma Java foi rapidamente adotada e seu crescimento foi maior que qualquer outra linguagem de programao na histria da computao. Caractersticas da linguagem A linguagem Java foi projetada para ter as seguintes caractersticas: Ser orientada a objetos; Ser portvel e independente de plataforma, sendo seu lema write once, run anywhere (Escreva uma vez, execute em qualquer lugar); Possuir uma extensa biblioteca de recursos de rede; Executar programas em rede, mas com segurana; Ter uma especificao simples; Possuir um ambiente de execuo (mquina virtual Java); Ter uma coleta automtica de lixo (garbage collector);

Escute no AVA o podcast contedo 7 para mais informaes sobre as caractersticas da linguagem.

90

Introduo Programao

Mercado Muitas vezes durante a nossa vida ficamos na dvida se estamos indo pelo caminho certo. Quando se trata de mercado de trabalho a nossa dvida se agrava, j que a nossa escolha influencia na sua totalidade a vida profissional. A UNIT escolheu adotar Java por vrios motivos, dos quais: linguagem orientada a objetos, regras mais simples, forte adoo da comunidade acadmica, entre outros. Entretanto, o mercado de trabalho um dos fatores pelo qual Java est sendo vista neste curso. Em 2009, Java teve uma movimentao de aproximadamente US$ 100 bilhes em produtos e servios no mundo inteiro. Desse montante, US$ 3 bilhes foram gastos em jogos de celular, uma indicao clara de que podemos ter boa rentabilidade em qualquer segmento. Outro dado importante que das 500 maiores empresas em nvel mundial, 100% delas utilizam a plataforma Java na sua estrutura de TI (tecnologia da informao), este outro indicador da adoo de Java no mercado mundial. Em 2004 (menos de 10 anos depois da criao do Java) foi atingida a marca de 3 milhes de desenvolvedores da plataforma Java. Atualmente temos mais de 4,5 milhes de programadores, sendo pouco mais de 50 mil aqui no Brasil. Na prxima figura podemos ver o ranking de utilizao das linguagens de programao no mundo.

Tema III

A linguagem Java e seu ambiente

91

Figura 20 - Ranking de utilizao das linguagens de programao

No AVA voc encontrar o podcast 8, que traz mais informaes sobre o mercado Java no Brasil e no mundo.

A plataforma Java O programa que escrevemos na linguagem de programao, chamado tambm de cdigo-fonte, no consegue ser executado diretamente pelo computador. O cdigo-fonte precisa ser traduzido para uma linguagem que o computador possa executar (cdigo-objeto). O processo de passar do cdigo-fonte para o cdigo-objeto chamado de compilao. Este processo dominou durante muito tempo a forma como os programas eram gerados. O grande problema dessa abordagem que o processo de compilao

92

Introduo Programao

gera cdigo-objeto para um determinado Sistema Operacional. Dessa forma, um programa feito para o Windows no vai conseguir ser executado no Linux e vice-versa. Isso mudou com a chegada do Java! O que mais chamou a ateno do Java quando foi lanado foi o conceito de mquina virtual Java (JVM). At ento, tnhamos unicamente os processos de compilao e interpretao para poder traduzir os programas para a linguagem de mquina. Escute o podcast contedo 9 no AVA para saber mais detalhes.

Quando o conceito de JVM foi introduzido, o mundo se perguntou por que no pensamos nisso antes?. Quando o programa Java compilado, ele gera o que chamamos de bytecode . Estes bytecodes podem ser executados dentro da JVM ao invs de numa mquina real. O que a gente ganha com isso? A portabilidade, ou seja, o mesmo programa poderia ser executado tanto no Linux quanto no Windows sem problema. Veja na figura 21, na prxima pgina, como o funcionamento do ambiente Java para a execuo dos programas. Veja que os bytecodes so executados dentro da JVM, ou seja, basta ter uma JVM para cada Sistema Operacional e a portabilidade estar garantida.

Tema III

A linguagem Java e seu ambiente

93

Figura 21 A JVM e a execuo de programas Java

Na linguagem de programao Java todos os programas so escritos em arquivos texto com extenso .java. Os programas so compilados e geram arquivos .class (bytecodes), que a linguagem de mquina da JVM. O processo inteiro pode ser visto na figura 22.

Figura 22 O processo de desenvolvimento na plataforma Java

94

Introduo Programao

A plataforma Java tem dois componentes: A mquina virtual Java A API (Application Programming Interface) Java A API Java um conjunto de componentes de software, prontos para uso, que aumentam muito a capacidade dos programas. Por exemplo, podemos fazer programas que se comunicam via rede ou fazer programas com interface grfica ou ainda conectar com bancos de dados, entre vrias outras coisas. Na figura 23 podemos ver os componentes da plataforma Java.

Figura 23 A plataforma Java

JDK (Java Development Kit) O JDK um kit de desenvolvimento Java fornecido livremente pela Sun (agora comprada pela Oracle). Ele composto de um conjunto de programas que engloba compilador, interpretador e utilitrios, fornecendo um pacote de ferramentas bsicas para o desenvolvimento de aplicaes Java.

Tema III

A linguagem Java e seu ambiente

95

Veja agora alguns comandos disponveis no JDK, o kit bsico com ferramentas para programao em Java: javac ( compilador ); java ( interpretador ); appletviewer ( visualizador de applets ); javadoc ( gerador de documentao ); jar ( programa de compactao ). Com o JDK possvel, manualmente, compilar e executar um programa Java. Entretanto, fazer isto atravs de linha de comando no Sistema Operacional no muito amigvel. O melhor seria ter ambientes de programao, ao estilo do Visualg, que permitam desenvolver mais facilmente os programas. Colocamos no AVA o link para baixar o JDK mais recente. Reserve alguns minutos do seu tempo para fazer o download e a instalao do JDK na sua mquina.

A seguir, vamos ver alguns ambientes que podem ser usados para construir programas Java. Ambientes de desenvolvimento No incio da programao Java tudo era baseado em linhas de comando, o que tornava a programao lenta e complicada. Logo, percebeu-se a necessidade de se ter ambientes de desenvolvimento que pudessem ajudar os desenvolvedores a criar seus programas. A comunidade Java queria IDEs (Integrated Development Environment) ao estilo do Delphi e do Visual Studio de forma a tornar o desenvolvimento mais produtivo. Seguindo essa linha, vrios grandes fabricantes construram produtos para Java, entre eles temos o Eclipse feito pela IBM, o NetBeans feito pela prpria Sun Microsystems e o JDeveloper da Oracle.

96

Introduo Programao

Todos esses ambientes tem como objetivo facilitar o desenvolvimento de criao de seus programas. Neste curso adotaremos o ambiente Eclipse, o qual ser explicado no contedo 3.3.

Para Refletir
A plataforma Java introduziu uma srie de conceitos interessantes no desenvolvimento de programas. Pesquise um pouco mais sobre o tema coleta automtica de lixo (garbage collector) e discuta com seus colegas no frum do AVA. Pesquise tambm o motivo de Java ter explodido depois da popularizao de internet.

3.2 ESTRUTURA

DE UM PROGRAMA

JAVA

A linguagem de programao Java foi feita pensando sempre no paradigma de Orientao a Objetos. Sendo assim, quase 100% de tudo o que se faz em Java segue os conceitos definidos na orientao a objetos. Classes O conceito de classes na orientao a objetos para modelar objetos do mundo real. Entretanto, neste curso introdutrio no entraremos em detalhes sobre este assunto, mas teremos que lidar com classes, j que todo programa Java composto de pelo menos uma.

Tema III

A linguagem Java e seu ambiente

97

Estrutura do programa O programa mais simples da linguagem Java pode ser visto abaixo.
public class OlaMundo { public static void main(String[] args) { System.out.println(Ol mundo.); } }

Vamos analisar os elementos contidos neste programa:


public class OlaMundo {

Aqui temos a definio da classe. O nome dado para a classe foi OlaMundo. No sistema operacional deveremos ter um arquivo chamado OlaMundo.java.
public static void main(String[] args) {

Aqui foi feita a definio de um mtodo. Os mtodos so outros elementos bsicos da orientao a objetos, sobre os quais no entraremos em detalhes. Porm, o que voc precisa entender o seguinte: deve existir o mtodo main para que a JVM saiba que a classe pode ser executada, ou seja, se voc esquecer de colocar o mtodo main, a JVM no poder executar seu programa.
public static void main(String[] args) { <logica do programa> }

98

Introduo Programao

A lgica do programa Java ser colocada entre as chaves { } do mtodo main. Cada instruo deve ser separada pelo smbolo de ponto e vrgula (;), a no ser quando a sintaxe do comando crie um bloco de comandos. Blocos de comandos Os blocos de comandos servem para indicar para o compilador onde comea e onde termina um conjunto de instrues do programa. Vejamos o seguinte algoritmo:
Enquanto cont < 10 faca cont := cont + 1 Escreva(cont) Fimenquanto

Os nomes em negrito (faca e fimenquanto) servem para delimitar as instrues que compem o lao. Em Java o algoritmo ficaria da seguinte forma:
while (cont < 10) { cont++; System.out.println(cont); }

Note que foram usadas as chaves { } para poder delimitar onde comea e onde termina a repetio. Um detalhe importante que como os blocos servem tambm como delimitadores, variveis que tenham sido declaradas dentro de blocos no so visveis fora dele. Portanto, tenha cuidado! Lembre-se que quando fizemos algoritmos em portugol a varivel era vlida em todo o programa. Em Java diferente. Veremos mais detalhes no contedo 3.4

Tema III

A linguagem Java e seu ambiente

99

Identificadores Os identificadores em linguagem Java so utilizados para a nomeao de elementos como variveis, classes ou mtodos. Note que no programa exemplo h dois identificadores. Um o nome da classe e outro o nome do mtodo.
public class OlaMundo { public static void main(String[] args) { System.out.println(Ol mundo.); } }

Os identificadores devem comear com letras, underscore (_) ou cifro ($) e os caracteres seguintes podem ser letras ou dgitos. Sendo assim, podemos ver a seguir alguns exemplos de identificadores vlidos: _nome $AumentoSalario Nota1 MediaAluno Os identificadores so case-sensitives, isto , so sensveis a variaes de letras maisculas e minsculas. Por exemplo, se voc declarar uma varivel Nome ela ser diferente de outra varivel que voc declarar como nome. saldoConta Saldoconta saldoconta SaldoConta O Java sugere que sejam seguidas algumas regras na criao de identificadores:

100

Introduo Programao

Nome de classe: primeira letra maiscula ou minscula e o resto minsculo, mas caso seja composta de mais de uma palavra, colocar em maiscula a primeira letra da segunda palavra. Exemplos: Primos OlaMundo ProgramaExemplo Nome de variveis: primeira letra minscula e o resto tambm em minscula, mas caso seja composta de mais de uma palavra, colocar em maiscula a primeira letra da segunda palavra. Exemplos: senha cont nomeFuncionario salarioBruto Constantes: tudo em maisculo. Exemplos: MEDIADEAPROVACAO SALARIOMINIMO Pacotes Por mais desorganizados que sejamos sempre existir um mnimo de organizao. Veja, por exemplo, seu armrio. Existem gavetas onde voc vai separar suas roupas por tipo, como camisetas, calas, etc. No mundo de informtica no diferente. Os arquivos que esto no seu HD devem estar separados por grupos: arquivos das aulas do curso, documentos, fotos, filmes, msicas, enfim, tudo est separado para facilitar a busca.
Figura 24 - Organizao de um armrio

Tema III

A linguagem Java e seu ambiente

101

A linguagem Java seguiu essa filosofia e criou o conceito de pacotes (package). Um pacote nada mais do que o diretrio (pasta) onde o arquivo .java ser criado. Dentro do programa temos que colocar o pacote na primeira linha do arquivo, caso contrrio vai gerar um erro de compilao. Note que no exemplo abaixo foi declarada qual seria a package utilizada pelo programa (repeticao). Sendo assim, o arquivo TesteRepeticao dever estar dentro de uma pasta com o nome da package, se isto no acontecer vai dar erro de compilao.
package repeticao;

public class TesteRepeticao { public static void main(String[] args) { for (int i = 1; i <= 10; i++) { System.out.println(i); } } }

Um ponto importante do Java que o nome da classe composto da package + identificador. Sendo assim, para o exemplo acima teramos o nome da classe repeticao.TesteRepeticao. Esta caracterstica permite que classes tenham o mesmo identificador, desde que seja colocado em pacotes diferentes. Por conveno, as empresas adotaram o uso de suas URLs da web na criao de suas classes. Por exemplo, caso o Google do Brasil (URL: www.google.com.br) criasse uma classe chamada Busca, a package que ela usaria seria br.com.google. Vejamos um exemplo: br.com.google.Busca

102

Introduo Programao

Imagine agora classes criadas pela UNIT. Poderamos ter todos os exemplos abaixo: br.unit.academico.Aluno br.unit.ead.Material br.unit.ead.estancia.Professor Comentrios Quando escrevemos programas de computador, to importante quanto fazer o algoritmo fazer com que ele seja claro e fcil de ser entendido. Contudo, nem sempre isso possvel e alguns programas ficam com uma lgica complexa de ser entendida. Neste tipo de situao, o melhor a fazer colocar comentrios para facilitar o entendimento. Uma das grandes falhas dos programadores achar que um programa no precisar ser revisto. Programas grandes quase sempre apresentam erros que precisam ser corrigidos. Se a lgica est confusa perde-se um tempo razovel somente para entender o que o programa est fazendo. J escutei dezenas de vezes programadores dizendo que melhor fazer outro programa do que consertar erros de outra pessoa. O pior que muitas vezes verdade! J peguei programas que eram verdadeiros enigmas e foi muito difcil decifr-los. Para tentar facilitar o entendimento da lgica de um programa que so usados os comentrios dentro do cdigo. O compilador ignora tudo que for comentrio e para ele como se o comentrio no existisse. Veja ento que os comentrios so feitos para ns (os programadores).

Tema III

A linguagem Java e seu ambiente

103

Em Java existem trs tipos de comentrios, como podemos ver a seguir: // comentrio at o final da linha /* comentrio em mltiplas linhas */ /** comentrio de documentao */ O primeiro tipo de comentrio simples de entender. Basta colocar duas barras juntas (//) e a linha toda vira um comentrio. O segundo tipo serve para deixar um trecho do programa como comentrio. Normalmente fazemos isso quando no queremos que um trecho seja executado pelo compilador. As duas primeiras formas de comentrios esto em praticamente todas as linguagens de programao. A plataforma Java introduziu o terceiro tipo, no qual podemos criar comentrios que iro virar documentao da classe. Esta documentao inclui vrias tags que informam o que est sendo documentado. As tags mais comuns para o comentrios de documentao so: @author @trhows @param @return O utilitrio Javadoc que est incluso no JDK permite ler estes comentrios e gerar documentos HTML de forma simples. Veja a seguir um exemplo de comentrios para documentao:
/** Classe que calcula os nmeros primos * menores que 100 * @author Joo da Silva * @version 1.0 */

104

Introduo Programao

Para Refletir
Estamos iniciando a criao de programas Java. Poderamos aqui complicar e mostrar como construir programas com linha de comando, mas acho que pouco produtivo quando temos IDEs que facilitam nosso trabalho. Mas qual a importncia dos comentrios para o programador? Coloque suas reflexes no frum do AVA sobre os comentrios e lembre-se de ver as de seus colegas. Prepare-se, pois, a seguir, vamos realmente iniciar a criao de programas na linguagem Java. Boa Sorte!

3.3 AMBIENTE

DE PROGRAMAO

ECLIPSE

Eclipse uma IDE desenvolvida com a prpria linguagem Java e com cdigo aberto, com o objetivo de facilitar a construo de projetos em Java. O projeto Eclipse foi iniciado pela IBM, que desenvolveu a primeira verso do produto e depois o entregou como software livre para a comunidade. Estimativas indicam que foram gastos cerca de 40 milhes de dlares para construir o Eclipse. Atualmente, o Eclipse a IDE Java mais utilizada mundialmente e possui como caractersticas marcantes o uso do AWT ao invs do swing como interface grfica, uma forte orientao utilizao de plug-ins e uma diversidade bem ampla de componentes para os mais diversos usos.

Escute no AVA o podcast Contedo 10 para obter mais detalhes do Eclipse.

Tema III

A linguagem Java e seu ambiente

105

Instalao O Eclipse no precisa de instalao. Quando fazemos o download do Eclipse, normalmente, ele est compactado e necessrio somente descompactar a pasta no local desejado. Se j estiver descompactado basta copiar a pasta para o local de destino. Uma vez instalado basta abrir o arquivo eclipse.exe, localizado na raiz da pasta do Eclipse.

bom lembrar que o JDK precisa ser instalado antes de abrir o Eclipse, j que ele usa todos os utilitrios que esto no JDK.

Workspace A primeira coisa que o Eclipse faz ao ser aberto perguntar ao usurio qual o workspace que ele vai usar. O workspace o local de trabalho do Eclipse, ou seja, onde sero armazenados os programas (e outros elementos) do usurio. Na figura 25 podemos ver a janela mostrada pelo Eclipse.

Figura 25 - Solicitao do workspace pelo Eclipse

106

Introduo Programao

possvel, mas no muito comum, usar vrios workspaces no mesmo computador. Isto geralmente ocorre quando vrios usurios compartilham uma mesma mquina. Para poder trocar o workspace usamos o menu File Switch workspace Other. Perspectivas At antes do surgimento do Eclipse tnhamos IDEs com cada vez mais opes, complicando muito a vida dos programadores, uma vez que ficvamos perdidos no emaranhado de menus, barras e botes. Quando o Eclipse foi apresentado, um dos pontos que mais chamou a ateno da comunidade foram as perspectivas. como se tivssemos vrias IDEs diferentes, pois a perspectiva nos mostra apenas as opes que precisamos para poder trabalhar. Pode parecer estranho o que acabamos de colocar, pois o que queremos fazer com o Eclipse construir programas em Java. Entretanto, o Eclipse faz muito mais coisas do que criar programas Java. Ele pode, por exemplo, permitir uma conexo com bancos de dados ou trabalhar em projetos web ou ainda fazer modelagem de aplicaes. Note que cada uma dessas opes precisa mostrar elementos diferentes e justamente por isso que foram criadas as perspectivas. Na figura 26 podemos ver algumas perspectivas que j esto presentes no Eclipse. A perspectiva que mais vamos usar ser a de Java . Para abrir a perspectiva usamos o menu Window Open perspective. Sempre preste ateno em qual perspectiva voc est. um erro muito comum tentar criar programas em outras perspectivas e no conseguir os resultados desejados.

Tema III

A linguagem Java e seu ambiente

107

Figura 26 Perspectivas do Eclipse

As perspectivas so compostas de views. Que nada mais so do que janelas que mostram alguns elementos. Por exemplo, a perspectiva Java mostra as views Console, package Explorer, javadoc, entre outras. Algumas vezes, sem querer, a gente fecha uma view e no sabe como fazer para traz-la de volta. No menu Window Show view, mostrado na figura 27, podemos escolher qual view deve ser adicionada perspectiva.

Figura 27 Adicionando views s perspectivas

108

Introduo Programao

Projeto Java Antes de criar nossa primeira classe Java necessrio criar um projeto Java. Os projetos servem para agrupar conjuntos de classes. um conceito mais amplo do que pacotes, que vimos no contedo 3.2. Um projeto Java permite adicionar bibliotecas de classes externas para que elas possam ser usadas em programas que voc est criando. Um erro bastante comum pensar que temos que criar um projeto para cada classe que vamos desenvolver. possvel criar um nico projeto e adicionar todas as classes nele e a separao das classes pode ser feita com as packages. Para criar um projeto Java, certifique-se que est na perspectiva Java e v ao menu File New Java Project. Na figura 28 podemos ver a janela para criao de um projeto Java.

Figura 28 Janela para criao de um projeto Java

Tema III

A linguagem Java e seu ambiente

109

A criao do projeto Java adiciona uma pasta no wokspace com o nome que foi dado ao projeto. Dentro dessa pasta so criadas no mnimo outras duas: scr e bin. A pasta scr contm os cdigos-fonte dos programas (.java) e a pasta bin armazena os bytecodes (.class). As packages criadas viram pastas tanto dentro de scr quanto de bin. Criao de classes O que mais voc deve estar querendo criar sua primeira classe e colocar para execut-la. Vamos ver como fcil fazer as classes com o Eclipse. Para criar uma classe usamos o menu File New class. Vai ser exibida uma janela igual a que est sendo mostrada na figura 29. Nesta janela precisamos preencher duas coisas: a package e o nome da classe. Voc pode escolher uma package que j existe ou criar uma nova. Alm dessas duas coisas interessante marcar para ele criar o mtodo main de forma automtica. Marque essa opo e deixe o Eclipse gerar o mtodo para voc.

Figura 29 Janela para criao de classes

110

Introduo Programao

Se voc criar uma classe com o nome Teste na package geral e marcar a opo de gerar o mtodo main voc vai ter o seguinte cdigo:
package geral; public class Teste { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub }
}

A classe est pronta para que voc possa comear a escrever a lgica. Alm disso, o prprio Eclipse criou a pasta geral e colocou o arquivo Teste.java dentro dela. Isso tudo realmente facilita o trabalho do programador. Antes do Eclipse estas atividades tinham que ser feitas manualmente. Execuo de classes Para que a gente possa executar os programas em Java podemos ir ao menu Run Run ou ento clicar no boto do play . Em algumas situaes, na primeira vez que o programa executado, ser exibida uma janela parecida com a figura 30, na prxima pgina. Nesta janela devemos escolher Java Application, pois os programas sero executados na prpria mquina do usurio.

Tema III

A linguagem Java e seu ambiente

111

Figura 30 - Janela de escolha da execuo do programa

Outra janela que pode aparecer antes de executar o programa pode ser vista na figura 31. Esta janela vai aparecer quando o programa for modificado e ainda no foi salvo. Ento o Eclipse pergunta se quer salvar o programa antes de executar, que , na maioria das vezes, o que a gente quer. possvel marcar a opo Always save resources before launching, que permite que o Eclipse salve automaticamente as alteraes no programa antes de ser executado.

Figura 31 - Janela para salvar o programa antes de executar

112

Introduo Programao

Os resultados do programa so exibidos na view Console, como mostrado na figura 32.

Figura 32 View Console mostrando os resultados

Se o programa no mostrou os resultados que voc estava esperando vai ser necessrio alterar o cdigo-fonte e executar novamente o processo de execuo. Execuo passo a passo Da mesma forma que fizemos execuo passo a passo do algoritmo com o Visulg, possvel fazer isso com o Eclipse. Porm, um pouco mais complicado. Isto acontece porque o Visualg foi desenvolvido com o objetivo de ensinar lgica de programao bsica, j o Eclipse foi criado com objetivos profissionais. Inicialmente, a perspectiva que vamos usar no ser mais Java e sim Debug. A execuo tambm muda para Run Debug, ou clicando no boto .

Figura 33 - Cdigo-fonte com um breakpoint

Tema III

A linguagem Java e seu ambiente

113

Na figura 33 podemos ver o cdigo-fonte de um programa Java com um breakpoint. Para criar breakpoints necessrio dar um duplo clique na parte azul que est mostrada na figura. Note que a linha do System.out que est marcada com o breakpoint. Quando executamos o programa em modo Debug, o prprio Eclipse pergunta se queremos trocar para o view Debug e possvel marcar para que ele se lembre disso. Na figura 34 podemos ver a execuo do programa em modo Debug. Para continuar a execuo do programa depois de um breakpoint usamos F6 ou o no menu Run- Step Over. Com a tecla F8 (Run Resume) podemos ir de um brekpoint a outro, ou seja, no precisa ir de instruo em instruo.

Figura 34 - Execuo do programa em modo Debug

Note que na perspectiva Debug tem as views do cdigo-fonte, dos valores das variveis e tambm da Console.

114

Introduo Programao

Para Refletir
As duas primeiras partes deste tema deram uma introduo linguagem Java. O ltimo contedo est destinado a ver mais elementos da linguagem, o que nos dar a possibilidade de escrever nossos primeiros programas. S que sem saber como usar o Eclipse seria muito difcil conseguir ver o funcionamento e execuo dos programas, por isso importante entender todos os conceitos que foram mostrados sobre o Eclipse. Reflita qual a vantagem que o surgimento do Eclipse trouxe para os programadores. Lembre-se de colocar suas reflexes no frum do AVA.

3.4 ELEMENTOS

DA LINGUAGEM

A seguir, sero mostrados vrios elementos da linguagem Java para que voc possa dar seus primeiros passos na linguagem. Tipos de dados Diferente do algoritmo, onde praticamente usamos trs tipos de dados, em Java tem-se um conjunto bem maior de tipos. Os tipos usados para armazenar nmeros inteiros podem ser vistos na tabela a seguir: Tipo byte short int long Tamanho 8 bits 16 bits 32 bits 64 bits Faixa -128 at +127 -32768 at +32767 -2147483648 at +2147483647 -263 at 263-1

Tema III

A linguagem Java e seu ambiente

115

Note que h diferena entre os tipos inteiros o tamanho de bits reservado para a varivel. Numa varivel de 8 bits (byte) podemos armazenar nmeros que vo de -128 a 127. Vejamos os seguintes exemplos: 123 representao do nmero 123 077 o zero esquerda indica que o valor est na base 8 0xA123 - os caracteres 0x indicam um valor na base hexadecimal 123l quando usamos a letra (L) aps o nmero queremos que ele seja visto como um tipo long Os nmeros reais so representados pelos tipos float e double. Vejamos os seguintes exemplos, todos eles representando o valor de PI: 3.14 o nmero ser double por default 0.031415e02 0.031415 x 102 3.14f quando colocamos a letra (F) aps o nmero queremos que ele seja visto como float Para armazenar um nico caractere usamos o tipo char, sendo que o valor deve ser colocado entre apstrofos. Exemplos: a 1 *

116

Introduo Programao

O tipo lgico em Java boolean e permite armazenar os valores true e false. Em Java no existe um tipo que consiga guardar cadeias de caracteres, mas foi criada uma classe com esse objetivo. A classe que permite guardar vrios caracteres chamada de String. As strings devem ser colocadas entre aspas, como nos exemplos a seguir: Introduo Programao 123456 a Bem, agora que voc conhece os tipos bsicos vamos ver como declarar variveis. Declarao de variveis A declarao de variveis em Java feita de uma forma um pouco diferente de como fizemos em Portugol. A sintaxe para declarao de variveis em Java da seguinte forma:
Tipo <lista de variveis>

Alguns exemplos de declarao de variveis:


String nome; oat nota1, nota2; boolean achou; int cont;

Tema III

A linguagem Java e seu ambiente

117

Voc deve estar pensando que no h muita diferena do que fizemos em Portugol. Entretanto, as variveis em Java so declaradas em qualquer parte do programa, ou seja, no existe uma rea reservada para colocar todas as variveis. Outra diferena que as variveis podem ser declaradas e atribudas na mesma linha. A ltima diferena que normalmente as variveis no so visveis em todos os pontos do programa. Vejamos o seguinte exemplo:
String nome; oat nota1, nota2; { boolean achou; } int cont;

Veja que colocamos a varivel achou dentro de um bloco, isto vai fazer com que a varivel no possa ser vista fora dele. Neste caso, at no faz sentido, j que temos somente a declarao da varivel dentro do bloco. Entretanto, necessrio saber como o funcionamento, pois quanto usarmos estruturas de controle vamos precisar fazer blocos e variveis declaradas dentro dessas estruturas, e que no sero visveis fora delas. Operadores Os operadores em Java, da mesma forma que nos algoritmos, servem para montar expresses. Existem trs tipos de operadores em Java: lgicos, matemticos e relacionais. Os operadores matemticos permitem montar expresses matemticas. A seguir temos os operadores matemticos no Java: + soma - subtrao * multiplicao

118

Introduo Programao

/ diviso % resto da diviso ++ auto-incremento -- auto-decremento Os operadores relacionais do Java podem ser vistos a seguir: > maior < menor >= maior ou igual <= menor ou igual == igual != diferente Dessa forma, podemos fazer comparaes como as que se seguem: nota > 5 idade != maisVelho salario1 == salario2 Os operadores lgicos mais usados em Java so os seguintes: ! negao || ou && e Comando de atribuio O comando de atribuio simples e tem como objetivo dar valor a uma varivel. A sintaxe do comando de atribuio pode ser vista a seguir:
Varivel = <valor, expresso ou varivel>

Tema III

A linguagem Java e seu ambiente

119

O valor, expresso ou varivel atribudo varivel que est do lado esquerdo do sinal de igualdade, que, na realidade, o comando de atribuio no Java. Sendo assim, podemos ter a seguinte atribuio:
Salrio = 1000,00

A atribuio acima se l: salrio recebe mil. Vamos ver outras atribuies possveis:
nome = Francisco de Assis; nota1 = 9.5; oat salrio = 5000.0f; char sexo = M;

Todas as atribuies foram de valores, mas podemos ter tambm atribuies de expresses ou variveis:
nota2 = nota1; cont = cont + 1; salario = salario * 1.1; media = (nota1 + nota2)/2; cont = cont + 1;

Existem alguns operadores que so usados em conjunto com os comandos de atribuio: += atribuio com soma -= atribuio com subtrao *= atribuio com multiplicao /= atribuio com diviso

120

Introduo Programao

Qual ser o valor de soma ao final do seguinte trecho de cdigo?


cont = 10; soma = 5 soma += cont;

A instruo soma += cont pode ser traduzida como soma = soma + cont, sendo assim, o valor de soma vai ser 15. Exemplos Vamos consolidar atravs de exemplos os conceitos vistos at agora. O exemplo abaixo tem um problema. Saberia dizer qual ?
double nota1 = 8.0; double nota2 = 7.0; { double nota3 = 8.0; } double media = (nota1 + nota2 + nota3)/3;

Vamos ver outro exemplo:


String nome = Danielle ; String sobrenome = Amaral; String nomeCompleto = nome + sobrenome;

Veja que na situao acima usamos o operador + para poder concatenar as duas Strings. A varivel nomeCompleto vai ficar com o valor Danielle Amaral.

Tema III

A linguagem Java e seu ambiente

121

Analise o exemplo abaixo e indique qual vai ser o valor das variveis x e y:
int a = 5; boolean x; x = a != 10; boolean y = ! (a > 10);

Neste exemplo temos duas variveis do tipo boolean. A varivel x vai receber true uma vez que x diferente de 10. A varivel y tambm vai ser true pois o valor a > 10 falso, mas como tem a negao (!) teremos que trocar a expresso para true.

Para Refletir
Os elementos so o que existe de mais bsico nas linguagens de programas. Mas conhecendo esses elementos que estamos aptos a aprender estruturas mais complexas. Acabamos de ver declarao de variveis, operadores e atribuies. Qual a importncia destes elementos? Das declaraes de variveis, operadores e atribuies?

122

Introduo Programao

RESUMO
Neste tema aprendemos desde o histrico da linguagem Java at como usar o Eclipse para criar projetos e classes simples em Java, j que vimos tambm os principais elementos da linguagem. No prximo tema nos aprofundaremos mais na linguagem e faremos programas complexos. Sem entender esses conceitos, no conseguiremos fazer os exerccios propostos do prximo tema. Caso tenha ficado com alguma dvida, converse com seus colegas e com seu tutor para poder esclarec-las. Prepare-se! Vamos entrar na parte final da disciplina!

A programao Java

O estudo da programao Java comea realmente agora. Iniciaremos com os comandos de entrada e sada e com as estruturas de controle e finalizaremos com as estruturas de dados homogneas. Com estes elementos poderemos resolver algoritmos complexos em Java e, ao final, teremos condies de resolver praticamente qualquer algoritmo. Vamos l!

4.1COMANDOS

DE ENTRADA E SADA

Da mesma forma que os algoritmos, os programas Java tero comandos de entrada e de sada para permitir fazer a leitura de variveis e para poder mostrar os resultados encontrados. Comandos de sada Os comandos de sada no Java so print e println. Eles seguem exatamente a mesma lgica de funcionamento do Escreva e EscrevaL do algoritmo.

124

Introduo Programao

Entretanto, os comandos de sada no Java so precedidos de duas palavras (System e out). Elas indicam que para usar uma classe de sistema (System) e o que se deseja fazer de sada (out). Assim, o comando completo ficar da seguinte forma:
System.out.print(<conjunto de caracteres>); Ou System.out.println(<conjunto de caracteres>);

Onde <conjunto de caracteres> ser composta de uma ou mais strings. Veja que os parmetros passados diferem dos usados no algoritmo, nos quais usamos um conjunto de elementos separados por vrgulas. No se confunda! Vamos ver um exemplo:
package entradaSaida; public class Saida { public static void main(String[] args) { System.out.println(Disciplina:); System.out.print(Introducao ); System.out.print(a programao); } }

A sada deste programa :


Disciplina: Introducao a programao

Tema IV | A programao Java

125

Vejamos este outro exemplo de comando de sada:


package entradaSaida; public class Idade { public static void main(String[] args) { String nome = D. Francisca; int idade = 49; System.out.print(A idade de +nome); System.out.println( de +idade+ anos.); } }

Veja que, neste exemplo, os comandos de sada usaram o sinal de + (concatenao) para poder montar a String de sada. No primeiro comando at mais simples de perceber que houve uma concatenao de Strings, porm, no segundo comando de sada voc pode ter ficado na dvida de como isso foi feito, j que a varivel idade um nmero inteiro. Neste caso, o compilador Java faz uma converso implcita e transforma tudo em string para poder fazer a concatenao. Vejamos mais um exemplo:
package entradaSaida; public class Mesada { public static void main(String[] args) { String pai = Carlos; String nome1 = Danielle; int mesada1 = 40; String nome2 = Monique; int mesada2 = 30; System.out.print(A mesada de +nome1+ ); System.out.println(mesada1+ reais.); System.out.print(A mesada de +nome2+ ); System.out.println(mesada2+ reais.); System.out.println(pai+ gasta com as lhas + mesada1 + mesada2 + reais ao todo.); } }

126

Introduo Programao

Isto produz a seguinte sada:


A mesada de Danielle 40 reais. A mesada de Monique 30 reais. Carlos gasta com as lhas 4030 reais ao todo.

Por este exemplo podemos notar que os valores de mesada1 e mesada2 no foram somados, eles foram concatenados como se fossem strings. Fique atento a esse detalhe para no se atrapalhar. Para resolver este caso teramos que criar outra varivel para poder receber o valor da soma e mandar imprimir o resultado. Existe uma terceira forma de mostrar os resultados de sada. O comando printf e ele segue a seguinte sintaxe:
System.out.printf(<String formatada>, <parmetros>);

Veja o exemplo abaixo:


package entradaSaida; public class SaidaFormatada { public static void main(String args []){ double x = 123.45; int y = 30; String z = Joo; System.out.printf(O funcionrio %s tem %d + anos e ganha %.2f reais, z, y, x); } }

Tema IV | A programao Java

127

Veja que a string O funcionrio %s tem %d anos e ganha %.2f reais possui trs parmetros, representados pelo smbolo de %. Cada um desses parmetros seguido de um identificador para definir que tipo de dado dever ser formatado. Os identificadores possveis para o comando de sada formatado so: %s --> tipo String %c --> tipo char %f --> tipos de nmeros reais %d --> tipos de nmeros inteiros Os nmeros reais podem, opcionalmente, informar quantas casas decimais devem ser exibidas. Veja que no nosso exemplo colocamos %.2f, indicando que duas casas devem ser mostradas. Segue um exerccio para voc praticar os comandos de sada: Faa um app em Java que mostre as seguintes frases usando tanto printf quanto println, sendo variveis o que est em vermelho: Estamos no ano 2010 na aula de Introduo Programao cuja mdia geral ser de 8.5. Meu computador HP tem 2.5 Gb de memria e 350 Mb de disco. O valor de PI 3.1416 e o dobro dele 6.28. Faa uma pequena parada e a seguir venha ver como so os comandos de entrada (leitura de dados) em Java.

128

Introduo Programao

Comandos de entrada No tema 1 falamos sobre a necessidade de leitura de valores para os programas e vimos tambm que nos algoritmos usamos o comando Leia para poder fazer essa leitura. No Java existem duas formas de fazer isso, que so possveis com a utilizao de classes feitas com este objetivo. A primeira classe de leitura do Java a Scanner. Ela faz parte do pacote java.util e deve ser importada para poder ser utilizada. Alm disso, precisamos criar uma varivel do tipo Scanner para, com ela, poder fazer a leitura dos valores. Veja o seguinte exemplo:
package entradaSaida; import java.util.Scanner; public class TesteScanner { public static void main(String[] args) { Scanner scan = new Scanner (System.in); System.out.print (Nome da pessoa: ); String nome = scan.nextLine(); System.out.print (Peso em kg: ); int peso = scan.nextInt(); System.out.println(nome+ pesa + peso+ kilos); } }

Conforme falamos, h dois pontos de destaque neste programa. O primeiro deles a criao de uma varivel scan que do tipo Scanner, no qual tivemos que passar como parmetro System.in.
Scanner scan = new Scanner (System.in);

Tema IV | A programao Java

129

O outro ponto a forma de fazer a leitura propriamente dita, como podemos ver abaixo:
String nome = scan.nextLine(); int peso = scan.nextInt();

Voc pode notar que foi utilizada a varivel scan para poder usar um dos seus elementos. Estes elementos so, na verdade, chamados de mtodos. Neste curso inicial de programao no vamos abordar este tema, j que pertence somente Orientao a Objetos, que ser visto em outra disciplina. Por enquanto, voc deve entender que os elementos so chamados com a notao: varivel.elemento(). Quando voc executar este exemplo, na console do Eclipse, vai aparecer Nome da pessoa e o programa vai esperar que voc digite o nome. Depois aparece Peso em kg e quando voc colocar o peso vai executar o comando de sada. Na figura abaixo podemos ver o programa sendo executado.

Figura 35 - Console ao inserir valores com Scanner

Um detalhe para o qual voc deve estar atento que para cada tipo de dados usamos um nextXXX(), onde xxx o tipo que vamos ler. Voc pode olhar novamente o exemplo e notar que foram usados: o nextLine e o nextInt. Outros elementos mais utilizados so: nextDouble para valores double; nextFloat para valores float;

130

Introduo Programao

nextBoolean para valores boolean; nextLong para valores long; next e nextLine para valores String; nextInt para valores int. A outra forma de fazer leitura de valores com o pacote grfico do Java, que chamado de swing. A classe que usamos para poder fazer leitura de dados a JOptionPane. Esta classe faz parte do pacote javax.swing e seu uso pode ser visto no exemplo seguinte.
package entradaSaida; import javax.swing.JOptionPane; public class TesteJOptionPane { public static void main(String[] args) { String nome = JOptionPane.showInputDialog(Nome); String idadeLida = JOptionPane.showInputDialog(Idade); int idade = Integer.parseInt(idadeLida); System.out.println(nome+ tem + idade+ anos); } }

Voc perceber que h diferena no uso de Scanner com JOptionPane, pois usando sua parte grfica os dados no sero inseridos na console. Assim que voc executar este programa vai aparecer uma janela como a mostrada na figura 36, na prxima pgina:

Tema IV | A programao Java

131

Figura 36 - Janela de entrada de dados do JOptionPane

Outra diferena que com JOptionPane no necessrio criar uma varivel para poder chamar o elemento showInputDialog. A chamada do elemento pode ser feita diretamente e a String passada como parmetro ser mostrada na janela exibida. A outra grande diferena que no temos um elemento para cada tipo, ser sempre showInputDialog. O detalhe que o valor lido ser sempre do tipo String. Teremos que fazer uma transformao da String para o tipo que desejamos. As principais transformaes podem ser vistas a seguir:
String idadeLida = JOptionPane.showInputDialog(Idade); int idade = Integer.parseInt(idadeLida);

String pesoLido = JOptionPane.showInputDialog(Peso); oat peso = Float.parseFloat(pesoLido);

String salarioLido = JOptionPane.showInputDialog(Salrio); double salario = Double parseDouble(salarioLido);

132

Introduo Programao

Vou deixar agora alguns exerccios para que voc possa treinar o conhecimento que adquiriu neste contedo. 1) A Profa. Cndida recebe pelas aulas da escola um salrio que baseado no nmero de aulas que ela d. Faa um programa em Java que leia o salrio da professora e calcule quanto ela ganharia caso ela trabalhasse o dobro de horas e quanto ganharia se trabalhasse a metade das horas. Ao final, mostre todos os valores usando printf. Use JOptionPane para fazer a leitura do valor. 2) Faa um programa em Java que leia separadamente o nome e o sobrenome de uma pessoa e, ao final, imprima o nome completo usando println. Use a classe Scanner para fazer a leitura do valor. 3) Faa um programa em Java que leia a idade de dois irmos e encontre qual a diferena de idade entre eles. Ao final, imprima o resultado encontrado com println. Use Scanner para fazer a leitura do valor. Considere que a segunda leitura o irmo mais velho. 4) Faa um programa em Java que leia um valor entre 1 e 9 e mostre a tabuada daquele nmero. Use JOptionPane para fazer a leitura do valor.

Para Refletir
Neste contedo conseguimos entender a forma como o Java executa comandos de entrada e sada. Comparando com os algoritmos bem mais complicado. Por qual motivo voc acha que isso acontece? Faa uma pesquisa e depois discuta com seus colegas no frum do AVA.

Tema IV | A programao Java

133

4.2 ESTRUTURAS

DE CONTROLE

Comandos de deciso Os comandos de deciso no Java so dois: o IF e o SWITCH. Veremos inicialmente o comando IF. O comando IF equivale exatamente ao comando SE do algoritmo. Ele usado quando precisamos decidir se vamos ou no executar um conjunto de comandos. A sintaxe do IF pode ser vista abaixo:
if (expresso-lgica) { <conjunto de comandos> }

Caso necessitemos do SENO, usaremos esta outra sintaxe:


if (expresso-lgica) { <conjunto de comandos> } else { <conjunto de comandos> }

Dois pontos merecem destaque nesta sintaxe: Os smbolos { e } so os delimitadores do comando, ou seja, no teremos fimSE como no algoritmo. Tanto if quanto else devem ser escritos em minsculo. Vamos fazer o seguinte exerccio: temos que pedir para o usurio digitar um valor inteiro e mostramos se o valor lido par ou mpar. Uma possvel soluo pode ser vista logo a seguir:

134

Introduo Programao

package decisao; import javax.swing.JOptionPane; public class ParImpar { public static void main(String[] args) { String valorLido = JOptionPane.showInputDialog(Valor); int valor = Integer.parseInt(valorLido); int resto = valor % 2; if (resto == 0) { System.out.println(valor+ par); } else { System.out.println(valor+ mpar); } } }

O outro comando de deciso que pode ser usado no Java o switch, que o equivalente ao comando ESCOLHA do algoritmo. A sintaxe do switch a seguinte:
switch (expresso) { case <constante1> : //bloco de comandos break; case <constante2> : //bloco de comandos break; ... default : //bloco de comandos }

Tema IV | A programao Java

135

A expresso que ser avaliada deve ser do tipo byte, short, int ou char. O valor da expresso ser testado com cada case e caso a expresso seja igual constante, o bloco de comandos ser executado. Cada bloco case precisa obrigatoriamente ter um comando break.
package decisao; import javax.swing.JOptionPane; public class TesteSwitch { public static void main(String[] args) { System.out.println(Simulador de Netbankink); System.out.println(1 - Saque); System.out.println(2 - Saldo); System.out.println(3 - Pagamento); String valorLido = JOptionPane.showInputDialog(Qual a opo?); int idade = Integer.parseInt(valorLido); switch (idade) { case 1: System.out.println(Opo saque); break; case 2: System.out.println(Opo saldo); break; case 3: System.out.println(Opo pagamento); break; default: System.out.println(Escolha invlida); break; } } }

136

Introduo Programao

Comandos de repetio Os comandos de repetio do Java seguem a mesma linha de raciocnio do que vimos em algoritmo. So trs os comandos de repetio do Java: for, while e do-while. Inicialmente veremos como funciona o comando de repetio for. A sintaxe utilizada a seguinte:
for (<valorInicio>; <teste>; <alterao>) { // bloco de comandos }

O comando for equivalente ao comando PARA do algoritmo e, s para lembrar, ele leva uma varivel de um ponto inicial at um ponto final. Olhando somente a sintaxe do comando, provavelmente voc no vai conseguir perceber como isto acontece. Veja no prximo exemplo para poder entender o funcionamento do for.
package repeticao; import javax.swing.JOptionPane; public class TesteFor { public static void main(String[] args) { String valorLido = JOptionPane.showInputDialog(Valor); int valor = Integer.parseInt(valorLido); for (int i = 1; i <= 9; i++) { int total = valor * i; System.out.println(valor + x + i + = + total); } }
}

Tema IV | A programao Java

137

Este exemplo exibe a tabuada de 1 a 9 do valor digitado pelo usurio. Vamos analisar o comando for:
for (int i = 1; i <= 9; i++)

Valor incio: int i = 1 Teste: i <= 9 Alterao: i++ O valor de incio da varivel i ser 1. O teste se i menor ou igual a 9 e a expresso de alterao i++, ou seja, um autoincremento. Sendo assim, podemos perceber que a varivel i ser levada do valor 1 ao valor 9, incrementando de um em um. O segundo comando de repetio que iremos ver o while. A sintaxe para o comando while pode ser vista logo abaixo:
while (expresso lgica) { // bloco de comandos }

Note que uma sintaxe muito prxima ao comando ENQUANTO do algoritmo. A semntica do while igual do algoritmo. Enquanto a expresso lgica for verdadeira os comandos do bloco sero executados. Caso a expresso se torne falsa o lao ser interrompido e o fluxo do programa ser desviado para o comando seguinte ao lao. O fatorial de um nmero dado pela seguinte forma: 5! = 1 x 2 x 3 x 4 x 5

138

Introduo Programao

O programa a seguir calcula o fatorial de um valor digitado pelo usurio.


package repeticao; import javax.swing.JOptionPane; public class TesteWhile { public static void main(String[] args) { String valorLido = JOptionPane.showInputDialog(Valor); int valor = Integer.parseInt(valorLido); int cont = 1; int total = 1; while (cont <= valor) { total = total * cont; cont++; } System.out.print(O fatorial de +valor); System.out.println( igual a +total); } }

Note que existe uma varivel chamada cont que quem controla a permanncia (e sada) do lao. Essa varivel foi declarada fora do lao e inicializada com 1. Veja que dentro do lao ela foi autoincrementada. O que aconteceria se este incremento no tivesse sido feito? Discuta esse ponto com seus colegas no frum do AVA ou no encontro presencial. O ltimo comando de repetio do Java o do-while. Neste caso, o teste de condio de permanncia feito somente no final do lao, como podemos ver na sintaxe abaixo:
do { // bloco de comandos } while (expresso lgica);

Tema IV | A programao Java

139

Sendo dessa forma, o bloco de comandos ser executado pelo menos uma vez. Esta a diferena bsica do while para o do-while. No while, caso a expresso seja falsa j na primeira vez o lao no ser executado. O exemplo a seguir imprime os N primeiros nmeros da srie: 1, 2, 4, 7, 11, 16, 22, 29, ...
package repeticao; import javax.swing.JOptionPane; public class TesteDoWhile { public static void main(String[] args) { String valorLido = JOptionPane.showInputDialog(Valor); int n = Integer.parseInt(valorLido); int i = 1; int diferenca = 1; int numero = 1; do { System.out.print(numero+, ); numero = numero + diferenca; diferenca++; i++; } while (i < n); } }

Voc vai poder notar que o papel do contador feito pela varivel i. Note que o valor das variveis i e diferenca ser o mesmo ao longo do programa. Ser que poderamos alterar o programa para economizar uma varivel?

140

Introduo Programao

Este problema contm um erro proposital. Voc capaz de descobrir qual ? Caso no consiga descobrir tire a dvida com seu tutor. Agora seria a hora de exercitar seu conhecimento. Porm, fizemos questo de colocar um tema exclusivo para a resoluo de exerccios, pois sabemos que para aprender a programar preciso praticar muito. O tema seguinte construo de programas complexos. Nele voc vai encontrar muitos exerccios resolvidos e propostos para que possa exercitar toda a sua capacidade. Embora todos os temas de que tratamos at aqui sejam super importantes, agora que voc tem que concentrar todo o seu esforo. Relaxe! Respire fundo e vamos ao que interessa.

Para Refletir
As estruturas de controle o que temos de mais importante para a resoluo de algoritmos e com Java no seria diferente. Pesquise em outras linguagens (Pascal, C++ e Visual Basic) se existem estruturas de controle parecidas com as do Java. Lembre-se de colocar no frum do AVA suas pesquisas.

4.3 CONSTRUO

DE PROGRAMAS COMPLEXOS

Neste tema vamos propor uma srie de exerccios para que voc possa praticar tudo o que aprendeu at aqui. Todos os seus conhecimentos da linguagem Java sero exigidos e, alm disso, sero vistos alguns elementos novos para resolver problemas especficos.

Tema IV | A programao Java

141

Exerccio 1: O IBGE est realizando uma pesquisa para saber qual a mdia de idade na sua cidade. Para isto criou uma lista que contm a idade de cada um dos habitantes, sendo que o ltimo valor da lista contm uma idade igual a -1. Faa um programa que leia o nome da cidade e cada uma das idades da lista. Ao final, imprima a mdia de idade dos habitantes.
package complexos; import javax.swing.JOptionPane; public class Idades { public static void main(String[] args) { String cidade = JOptionPane.showInputDialog(Cidade); String idadeLida = JOptionPane.showInputDialog(Idade); int idade = Integer.parseInt(idadeLida); int soma = 0; int populacao = 0; while (idade != -1) { soma = soma + idade; populacao++; idadeLida = JOptionPane.showInputDialog(Idade); idade = Integer.parseInt(idadeLida); } double media = (double) soma / populacao; System.out.println(Foram digitados + populacao + habitantes para a + cidade de + cidade); System.out.printf(A mdia da idade + foi de %.1f,media); } }

142

Introduo Programao

O elemento novo pode ser visto abaixo. Isto teve que ser feito porque uma diviso normal traria somente o quociente da diviso. Por exemplo, se o valor de soma fosse 9 e o valor de populao fosse 2 o valor de mdia ficaria 4,0 ao invs de ser 4,5.
double media = (double) soma / populacao;

Exerccio 2: Voc est querendo descobrir quem a pessoa mais velha da sua turma. Para isso voc preparou um programa que permite que cada aluno possa digitar seu nome e sua idade. Assim que todos tiverem digitado seus dados, voc digita fim para o nome da pessoa e o programa mostra o nome e a idade do mais velho. Em caso de empate, considere que o mais velho foi quem digitou primeiro.
package complexos; import javax.swing.JOptionPane; public class maisVelho { public static void main(String[] args) { String nome = JOptionPane.showInputDialog(Nome); int idadeMaior = -1; String nomeMaior = ; while (! nome.equalsIgnoreCase(m)) { String idadeLida = JOptionPane.showInputDialog(Idade); int idade = Integer.parseInt(idadeLida); if (idade > idadeMaior) { idadeMaior = idade; nomeMaior = nome; } nome = JOptionPane.showInputDialog(Nome);

}
System.out.print(O aluno(a) mais velho + nomeMaior); System.out.println( e sua idade de + idadeMaior+ anos); } }

Tema IV | A programao Java

143

Neste exemplo podemos destacar a forma como comparamos duas Strings (veja a condio do while). Sempre devemos comparar Strings com equals ou com equalsIgnoreCase. O equals testa a igualdade de Strings, mas fim e FIM so consideradas diferentes. Com o equalsIgnoreCase o teste feito desconsiderando letras maisculas e minsculas. Exerccio 3: O Cirque de Soleil acaba de chegar na sua cidade e encomendou a voc um programa para controlar a de bilheteria. Os ingressos variam de acordo com a idade, seguindo esta lgica: criana at 2 anos no paga nada, de 3 a 12 anos paga R$ 10,00 e acima de 12 paga R$ 20,00. Quando uma pessoa chega na bilheteria ela informa a sua idade e de cada um dos que o acompanham. Faa um programa em Java que leia a idade de cada pessoa e calcule o valor total a ser pago. Considere como flag a leitura de uma idade igual a -1.
package complexos; import javax.swing.JOptionPane; public class Ingressos { public static void main(String[] args) { String idadeLida = JOptionPane.showInputDialog(Idade); int idade = Integer.parseInt(idadeLida); int total=0; while (idade != -1) { if (idade < 3) { total = total + 0; } else if (idade <= 12) {

144

Introduo Programao

total = total + 10; } else { total = total + 20; } idadeLida = JOptionPane.showInputDialog(Idade); idade = Integer.parseInt(idadeLida); } System.out.println(O valor total a ser pago+ de: R$ +total+ reais); } }

Neste exerccio no temos nenhum elemento novo. Entretanto temos um desafio para voc. H uma parte deste programa que no faz diferena para o qual ele foi proposto. Voc saberia dizer o que ? Assim que voc encontrar, refaa o programa deixando somente o que for necessrio. Exerccio 4: Fazer um programa que mostre todos os nmeros de quatro dgitos que possuem a seguinte caracterstica: 3025 -> 30 + 25 = 55 -> 55*55 = 3025

Tema IV | A programao Java

145

package complexos; import javax.swing.JOptionPane; public class Numeros { public static void main(String[] args) { System.out.println(Os numeros encontrados + foram:); for (int i = 1000; i < 9999; i++) { int parte1 = i / 100; int parte2 = i % 100; int soma = parte1 + parte2; int quadrado = soma * soma; if (i == quadrado) { System.out.println(i); } } } }

Este exerccio foi colocado com o propsito de mostrar que mesmo aqueles problemas que inicialmente parecem complicados podem ser resolvidos facilmente. Muitas vezes os alunos que esto aprendendo programao no gostam de resolver problemas que envolvem matemtica, mas eles normalmente so simples e s preciso entender como o problema resolvido na mo. A seguir colocaremos um conjunto de 10 exerccios propostos para que voc possa exercitar a criao de programas Java. Se estiver cansado melhor dar uma parada e voltar quando estiver pronto para a maratona de problemas.

146

Introduo Programao

Escute o podcast contedo 11 e obtenha mais informaes sobre este tpico.

Proposto 1: Construa um programa em Java que apresente o peso total que ser carregado por um caminho. Sabe-se que esse caminho carrega 25 caixas com pesos diferentes. Os pesos de cada caixa sero lidos. Proposto 2: Escreva um programa em Java que l um valor n inteiro e positivo e que calcula a seguinte soma: S = 1 + 1/2 + 1/3 + 1/4 + ... + 1/n O programa deve escrever cada termo gerado e o valor final de S. Proposto 3: Faa um programa em Java que leia o nmero de andares de um prdio e, a seguir, para cada andar do prdio, leia o nmero de pessoas que entraram e saram do elevador. Considere que o elevador est vazio e est subindo, os dados se referem a apenas uma subida do elevador e que o nmero de pessoas dentro do elevador sempre ser maior ou igual a 0. Se o nmero de pessoas aps a entrada e sada for maior que 15, deve ser mostrada a mensagem EXCESSO DE PASSAGEIROS. DEVEM SAIR X PESSOAS onde X o nmero de pessoas que devem sair do elevador, de modo que seja obedecido o limite de 15 passageiros. Aps a entrada de pessoas no ltimo andar o algoritmo deve mostrar quantas pessoas iro descer.

Tema IV | A programao Java

147

Proposto 4: Uma loja utiliza o cdigo V para transao Vista e P para transao a prazo. Faa um programa que receba o cdigo e o valor de um conjunto de transaes e mostre: o valor total das vendas vista o valor total das vendas a prazo o valor total das vendas efetuadas Proposto 5: Desenvolva um programa que realize o sorteio de um nmero inteiro pertencente ao intervalo de 1 a 100, e que solicite ao usurio qual o valor que foi sorteado. O programa deve informar se o valor que o usurio digitou maior, menor ou igual ao valor sorteado. O programa vai parar quando o usurio acertar o valor sorteado e deve informar ao final a quantidade de tentativas que o usurio utilizou para acertar o nmero. Utilize o comando Math.Random()*100 para sortear o valor. Proposto 6: Dado um pas A, com 5.000.000 de habitantes e uma taxa de natalidade de 3% ao ano, e um pas B com 7.000.000 de habitantes e uma taxa de natalidade de 2% ao ano, calcular e imprimir o tempo necessrio para que a populao do pas A ultrapasse a populao do pas B. Proposto 7: A prefeitura da sua cidade fez uma pesquisa entre seus habitantes, coletando dados sobre o salrio e nmero de filhos. A prefeitura deseja saber: mdia do salrio da populao mdia do nmero de filhos maior salrio percentual de pessoas com salrio at R$100,00

148

Introduo Programao

O final da leitura de dados se dar com a entrada de um salrio negativo. Proposto 8 : Foi realizada uma pesquisa de algumas caractersticas fsicas da populao de uma certa regio, a qual coletou os seguintes dados referentes a cada habitante para serem analisados: sexo (masculino e feminino) cor dos olhos (azuis, verdes ou castanhos) cor dos cabelos ( louros, castanhos, pretos) idade Faa um programa que determine e escreva: a maior idade dos habitantes a quantidade de indivduos do sexo feminino cuja idade est entre 18 e 35 anos, inclusive que tenham olhos verdes e cabelos louros. Proposto 9: Escrever um programa que gera e escreve os 5 primeiros nmeros perfeitos. Um nmero perfeito aquele que igual soma dos seus divisores. Ex.: 6 = 1+2+3; 28= 1+2+4+7+14 Proposto 10: Faa um programa que leia as trs notas de 50 alunos de uma turma. Para cada aluno, calcule a mdia ponderada como segue: MP = ( n1*2 + n2*3 + n3*4 ) / 10 Alm disso, calcule a mdia geral da turma. Mostre a mdia de cada aluno e uma mensagem Aprovado, caso a mdia seja maior ou igual a sete, e uma mensagem Reprovado, caso contrrio. Ao final, mostre a mdia geral.

Tema IV | A programao Java

149

No AVA tem mais alguns programas para que voc possa treinar. Lembre-se que quanto mais programas voc resolver mais habilidade voc ganha na linguagem. Discuta as solues que voc encontrou com os seus colegas e, caso tenha dvidas, procure seu tutor para te ajudar.

Para Refletir
Voc est preparado para resolver um conjunto bem grande de problemas com solues computacionais. Entretanto, ainda existem vrios problemas que no podem ser resolvidos com o conhecimento que voc adquiriu at aqui. Sabe quais so? Ns j falamos deles em algoritmo e vamos retomar no prximo contedo.

4.4 VETORES

EM

JAVA

Quando falamos de algoritmos tratamos tambm das estruturas de dados homogneas e l falamos que sem o uso de vetores vrios problemas no poderiam ser resolvidos. Agora vamos ver como que tratamos os vetores na linguagem Java. A declarao de vetores em Java feita da seguinte forma:
tipo[] <lista de variveis> ou

tipo varivel[]

150

Introduo Programao

Vejamos alguns exemplos de declarao de vetores:


int[] x, y; oat notas[]; String nome[];

Os vetores para o Java no so tipos primitivos e, sendo assim, somente a sua declarao no basta para poder us-los, ou seja, vamos precisar criar o vetor propriamente dito. Isto pode ser feito da seguinte forma:
x = new int[10]; notas = new oat[3]; nome = new String[100];

Em algumas situaes possvel declarar um vetor e j fazer a atribuio dos elementos que o iro compor, como nos exemplos abaixo:
int numeros[] = {1,2,3}; String diasUteis[] = {seg, ter, qua,qui, sex};

Nestes casos o tamanho do vetor equivalente quantidade de valores que foram declarados. No exemplo anterior, o vetor numeros vai ter 3 elementos e diasUteis ter tamanho 5. O acesso aos elementos do vetor feito da mesma forma que o algoritmo, como podemos ver abaixo:
nota[1] = 10;

Tema IV | A programao Java

151

O grande detalhe e que nunca voc vai poder esquecer que os vetores em Java comeam sempre com o ndice zero, ou seja, se a gente declara um vetor com trs elementos os ndices possveis sero 0, 1 e 2, como no exemplo abaixo:
int valores[] = new int[3]; valores[0] = 100; valores[1] = 55; valores[2] = 879;

Se voc tentar acessar valores[3] vai receber o seguinte erro na hora de execuo do programa: Exception in thread main
java.lang.ArrayIndexOtOfBoundsException: 3

Embora o erro esteja em ingls, ele bastante claro: voc acessou um elemento fora da faixa vlida do vetor. Vamos ver um exemplo completo. O programa vai ler um vetor com 10 elementos e vai imprimir os valores que foram lidos.
package vetores; import javax.swing.JOptionPane; public class TrocaElementos { public static void main(String[] args) { int[] vetor = new int[10]; for (int i = 0; i < vetor.length; i++) { String valorLido = JOptionPane.showInputDialog(Valor); vetor[i] = Integer.parseInt(valorLido); } System.out.println(Os valores do vetor so:); for (int i = 0; i < vetor.length; i++) { System.out.print(vetor[i]+ ); } } }

152

Introduo Programao

Temos um elemento novo da linguagem: vetor.length. O atributo length do vetor retorna quantidade de elementos que o vetor foi declarado. Voc j imaginou o que aconteceria caso o vetor fosse recriado? Vamos ver outro exemplo:
package vetores; import javax.swing.JOptionPane; public class Redimensionar { public static void main(String[] args) { int[] vetor = new int[5]; for (int i = 0; i < vetor.length; i++) { String valorLido = JOptionPane.showInputDialog(Valor); vetor[i] = Integer.parseInt(valorLido); } System.out.println(Os valores do vetor sao:); for (int i = 0; i < vetor.length; i++) { System.out.print(vetor[i]+ ); } vetor = new int[10]; System.out.println(); System.out.println(Os valores aps o +redimensionamento do vetor sao:); for (int i = 0; i < vetor.length; i++) { System.out.print(vetor[i]+ ); } } }

Tema IV | A programao Java

153

Uma possvel sada para a execuo deste programa pode ser vista abaixo: Os valores do vetor so: 12345 Os valores aps o redimensionamento do vetor so:
0 0 0 0 0 0 0 0 0 0

Veja que nenhum dos valores lidos inicialmente foi levado em considerao quando redimensionamos o vetor. Isto significa que ao recriarmos o vetor com outro tamanho vamos perder todos os valores contidos no mesmo. Vamos agora resolver alguns problemas com vetores e colocar uma possvel soluo em Java. Exerccio 1: Faa um programa que leia o nome e a nota dos alunos da disciplina Introduo Programao. Calcule a mdia da turma e mostre os alunos que ficaram acima da mdia. Use o nome fim como flag de parada.
package vetores; import javax.swing.JOptionPane; public class Medias { public static void main(String[] args) { int cont = 0; double soma = 0; double[] notas = new double[30]; String[] nomes = new String[30]; String nome = JOptionPane.showInputDialog(Nome);

154

Introduo Programao

while (! nome.equalsIgnoreCase(m)) { nomes[cont] = nome; String nota = JOptionPane.showInputDialog(Nota); notas[cont] = Integer.parseInt(nota); soma = soma + notas[cont]; cont++; nome = JOptionPane.showInputDialog(Nome); } double media = soma / cont; System.out.printf(A mdia da turma + foi de %.2f, media); System.out.println(); System.out.println(Alunos acima da mdia:); for (int i = 0; i < cont; i++) { if (notas[i] > media) { System.out.print(Nome:+nomes[i]); System.out.println( } } }
}

Nota:+notas[i]);

Vamos analisar alguns pontos deste programa: O vetor tem 30 posies, mas quantos nomes foram lidos? A gente no sabe at o programa estar sendo executado. A varivel cont foi declarada para saber quantos nomes foram realmente colocados dentro do vetor. Uma pergunta: o que acontece se o usurio digitar mais do que 30 alunos? Foram declarados dois vetores: um para armazenar os nomes e outro as notas. Veja que fizemos coincidir propositalmente o ndice de um com o ndice do outro para que a gente pudesse associar o nome do aluno nota do mesmo.

Tema IV | A programao Java

155

Este um problema que s pode ser resolvido com vetores, uma vez que a mdia s pode ser calculada quando todas as notas foram lidas. Exerccio 2: Faa um programa que leia dois vetores A e B, de 5 elementos cada um. A seguir crie o vetor C, com 10 elementos, que a intercalao dos vetores A e B.
package vetores; import javax.swing.JOptionPane; public class Intercalacao { public static void main(String[] args) { int[] a = new int[5]; int[] b = new int[5]; for (int i = 0; i < a.length; i++) { String numero = JOptionPane.showInputDialog(Vetor A); a[i] = Integer.parseInt(numero); } for (int i = 0; i < b.length; i++) { String numero = JOptionPane.showInputDialog(Vetor B); b[i] = Integer.parseInt(numero); } int[] c = new int[10]; int cont = 0; for (int i = 0; i < 5; i++) { c[cont] = a[i]; cont++; c[cont] = b[i]; cont++;

}
System.out.println(Vetor A);

156

Introduo Programao

for (int i = 0; i < a.length; i++) { System.out.print(a[i]+ ); } System.out.println(); System.out.println(Vetor B); for (int i = 0; i < b.length; i++) { System.out.print(b[i]+ ); } System.out.println(); System.out.println(Vetor C); for (int i = 0; i < c.length; i++) { System.out.print(c[i]+ ); } } }

Proposto 1: Faa um programa que leia o nome e o salrio dos funcionrios da fbrica de software Programa Sem Erro e depois leia o valor do reajuste salarial. Ao final imprima os novos salrios dos funcionrios e mostre quanto o dono da fbrica vai ter que gastar com o reajuste. Proposto 2: Faa um programa que vai simular uma agenda de telefones. Inicialmente deve ser lido o nome e o telefone das pessoas de contato. Aps a leitura deve ser solicitado ao usurio para digitar o nome de uma pessoa da qual se deseja saber o nmero de telefone. Se o nome da pessoa for encontrado o telefone deve ser exibido. Se a pessoa no for encontrada, informe ao usurio que ela no foi localizada.

Tema IV | A programao Java

157

Proposto 3: Faa um programa que vai ler um conjunto de anos em que as pessoas da sua cidade nasceram. O valor zero lido indica o final da leitura dos anos. Depois disso deve ser lido o ano atual e ao final mostrar qual o percentual de jovens da sua cidade. Considere jovem as pessoas entre 15 e 25 anos. Proposto 4: Todos os habitantes da sua cidade foram pesados. Voc foi convocado pelo Secretrio de Sade do municpio para calcular o percentual de pessoas que esto acima do peso. O Secretrio definiu que uma pessoa obesa aquela que est 20% acima do peso mdio da populao. Faa um programa que permita ler os pesos das pessoas e os armazene num vetor. Use a leitura do valor zero como flag. Ao final imprima o percentual de obesos da cidade. Questo desafio: Leia um vetor de 10 nmeros inteiros e aps a leitura faa a ordenao crescente dos elementos lidos.

Para Refletir
Vetores em Java lembrou bastante o que vimos em algoritmo. Os conceitos abordados foram os mesmos, mas a sintaxe da linguagem Java mostrou algumas particularidades que no foram abordadas quando vimos vetores nos algoritmos. Gostaria que voc pensasse num problema que no pode ser resolvido sem utilizao de vetores. Como atividade final, discuta esse problema com seus colegas no frum do AVA. Alm disso, pegue um desses problemas e resolva na linguagem Java.

158

Introduo Programao

RESUMO
Chegamos ao fim da disciplina. O que voc aprendeu? No incio fizemos toda uma comparao com atividades do cotidiano para que voc pudesse chegar na resoluo de algoritmos computacionais na linguagem de programao Java. Alm disso, mostramos o ambiente Eclipse para que voc pudesse executar os seus programas mais facilmente. Se voc deixou pelo caminho algum algoritmo hora de retornar e resolv-lo. Esperamos que voc tenha gostado desta introduo programao e da linguagem Java.

Introduo Programao

159

Referncias
ARAUJO, EVERTON C. DE. Algoritmos fundamento e prtica. So Paulo: Visual Books, 2007. BORATTI, ISAIAS, Introduo programao de algoritmos. So Paulo: Visual Books, 2007. DASGUPTA, SANJOY. Algoritmos. Rio de Janeiro: McGraw Hill, 2009 DEITEL, HARVEY M. Java como programar. So Paulo: Prentice Hall, 2007. POLLICE, Gary. Algoritmos o guia essencial. So Paulo: Alta Books, 2009. GOSLING, JAMES. Linguagem de Programao Java. So Paulo: Bookman, 2007. MANZANO, JOSE AUGUSTO N. G. Algoritmos lgica para desenvolvimento. Rio de Janeiro: rica, 2009 VELLOSO, Fernando Castro. Informtica: Conceitos Bsicos. Rio de Janeiro: Campus, 2006.

160

Introduo Programao

A notaes