You are on page 1of 51

Apostila da Disciplina de Programao I

Prof. Me. Fbio Magalhes


Professor do Curso de Sistemas de Informao / Administrao Centro Universitrio Paulistano - Unipaulistana

2 Semestre / 2008 11/08/2008

1 - Introduo disciplina de Programao I


Esta pequena apostila resultado da agregao de diversos materiais pesquisados, e rene o contedo bsico para o desenvolvimento da disciplina de Programao I do curso de Sistemas de Informao do Centro Universitrio Paulistano - Unipaulistana - 2 semestre 2008. Programao da disciplina, materiais auxiliares, listas de exerccios, exerccios para o laboratrio, correo das mesmas estaro disponveis no blog do professor.

2 - Linguagem de programao
Uma linguagem de programao um mtodo padronizado para expressar instrues para um computador. um conjunto de regras sintticas e semnticas usadas para definir um programa de computador. Uma linguagem permite que um programador especifique precisamente sobre quais dados um computador vai atuar, como estes dados sero armazenados ou transmitidos e quais aes devem ser tomadas sob vrias circunstncias. O conjunto de palavras (tokens), compostos de acordo com essas regras, constituem o cdigo fonte de um software. Esse cdigo fonte depois traduzido para cdigo de mquina, que executado pelo processador. Um dos principais objetivos das linguagens de programao permitir que programadores tenham uma maior produtividade, podendo expressar suas intenes mais facilmente do que quando comparado com a linguagem que um computador entende nativamente (cdigo de mquina). Assim, linguagens de programao so projetadas para adotar uma sintaxe de nvel mais alto, que pode ser mais facilmente entendida por programadores humanos. Linguagens de programao so ferramentas importantes para que programadores e engenheiros de software possam escrever programas mais organizados e com maior rapidez. Linguagens de programao tambm tornam os programas menos dependentes de computadores ou ambientes computacionais especficos (propriedade chamada de portabilidade). Isto acontece porque programas escritos em linguagens de programao so traduzidos para o cdigo de mquina do computador no qual ser executado em vez de ser diretamente executado. Uma meta ambiciosa do Fortran, uma das primeiras linguagens de programao, era esta independncia da mquina onde seria executada.

2.1 - Tipos de traduo: Interpretao e Compilao


Uma linguagem de programao pode ser convertida, ou traduzida, em cdigo de mquina por compilao ou interpretao, que juntas so chamadas de traduo. Se o mtodo utilizado traduz todo o texto do programa (tambm chamado de cdigo), para s depois executar (ou rodar, como se diz no jargo da computao) o programa, ento diz-se que o programa foi compilado e que o mecanismo utilizado para a traduo um compilador (que por sua vez nada mais do que um programa). A verso compilada do programa tipicamente armazenada, de forma que o programa pode ser executado um nmero indefinido de vezes sem que seja necessria nova compilao, o que compensa o tempo gasto na compilao. Isso acontece com linguagens como Pascal e C (linguagem de programao). Se o texto do programa traduzido medida em que vai sendo executado, como em Javascript, Python ou Perl, num processo de traduo de trechos seguidos de sua execuo imediata, ento diz-se que o programa foi interpretado e que o mecanismo utilizado para a 2

traduo um interpretador. Programas interpretados so geralmente mais lentos do que os compilados, mas so tambm geralmente mais flexveis, j que podem interagir com o ambiente mais facilmente (freqentemente linguagens interpretadas so chamadas tambm de script).

2.2 - Programador
Em computao, programador ou desenvolvedor de software refere-se a algum que faz programao de computadores e desenvolve software. Um programador pode ser algum que desenvolve ou faz manuteno de software em um grande sistema mainframe ou algum que desenvolve software primariamente para uso em computadores pessoais. Neste sentido, um programador pode ser considerado um engenheiro de software ou desenvolvedor de software. Ada Lovelace historicamente considerada a primeira programadora. Ela foi a primeira a desenvolver um algoritmo para implantao em um computador, a mquina de anlise de Charles Babbage, em Outubro de 1842. Os que possuem excelentes habilidades em programao de computadores podem se tornar famosos, apesar disto ser normalmente limitado aos crculos da engenharia de software. Muitos dos mais notveis programadores so chamados algumas vezes de "hackers". Existem programadores de todos os tamanhos e formatos. Programadores profissionais trabalham em departamentos de TI corporativos, grandes empresas ou pequenas empresas de servios.

2.3 - Organizao e Classificao das Linguagens de Programao


As Linguagens de programao podem ser classificadas e sub-classificadas de vrias formas: - Quanto ao paradigma de programao; - Quanto a estrutura da tipos; - Pelo grau de abstrao; - Pela gerao; e outras classificao como por exemplo da ACM Computing Review.

2.3.1 - Quanto ao paradigma de programao


- Imperativas ou procedurais ou estruturada, como C e Pascal - Orientadas a objeto, como Smalltalk e Java - Funcionais, como ML e Haskell - Declarativas e Lgicas, como [SQL] e Prolog

2.3.2 - Quanto a estrutura da tipos


- Fracamente tipada, como Smalltalk e PHP - Fortemente tipada, como Java - Dinamicamente tipada, como Python

2.3.3 - Pelo grau de abstrao


- Linguagem de baixo nvel, prximas a mquina, como Assembly - Linguagem de alto nvel, no nvel da especificao de algoritimos, como Pascal, Fortran e Java 3

- Linguagem de muito alto nvel, no nivel da especificao declarativa, como SQL

2.3.4 - Pela gerao


- Primeira gerao, as linguagens de baixo nvel (Assembly) - Segunda gerao, as primeiras linguagens (Fortran, ALGOL) - Terceira gerao, as procedurais e estruturadas (Pascal, C). - Quarta gerao, Linguagens para a gerao de aplicaes ou linguagens artificiais (SQL). - Quinta gerao, linguagens lgicas (Prolog). - Gerao Orientada a Objetos: Linguagens voltadas para o reuso e manuteno (Java, Smalltalk)

2.4 - Programao estruturada


Programao estruturada uma forma de programao de computadores que preconiza que todos os programas possveis podem ser reduzidos a apenas trs estruturas: seqncia, deciso e iterao (repetio). Tendo, na prtica, sido transformada na Programao modular, a Programao estruturada orienta os programadores para a criao de estruturas simples em seus programas, usando as subrotinas e as funes. Foi a forma dominante na criao de software entre a programao linear e a programao orientada por objetos. Apesar de ter sido sucedida pela programao orientada por objetos, pode-se dizer que a programao estruturada ainda marcantemente influente, uma vez que grande parte das pessoas, ainda aprendem programao se fazem atravs dela. Alm disso, por exigir formas de pensar relativamente complexas, a programao orientada ao objeto at hoje ainda no bem compreendida ou usada.

2.5 - Orientao a objeto


A Orientao a Objeto um paradigma de anlise, projeto e programao de sistemas de software baseado na composio e interao entre diversas unidades de software chamados objetos. A anlise e projeto orientados a objetos tm como meta identificar o melhor conjunto de objetos para descrever um sistema de software. O funcionamento deste sistema se d atravs do relacionamento e troca de mensagens entre estes objetos. Na programao orientada a objetos, implementa-se um conjunto de classes que definem os objetos presentes no sistema de software. Cada classe determina o comportamento (definidos nos mtodos) e estados possveis (atributos) de seus objetos, assim como o relacionamento com outros objetos. Smalltalk, Perl, Python, Ruby, PHP, C++, Java e C# so as linguagens de programao mais importantes com suporte a orientao a objetos.

2.6 - Conhecendo algumas linguagens de programao


A primeira linguagem de programao para computadores foi provavelmente Plankalkl, criada por Konrad Zuse na Alemanha Nazista nos anos 1942 a 1946, mas que teve pouco ou nenhum impacto no futuro das linguagens de programao, porque durantes anos esse trabalho permaneceu esquecido. Somente em 1972 foi publicada completamente. 4

2.6.1 - Assembly
O Assembly foi tambm uma das primeiras linguagens de programao da histria, surgida na dcada de 50, poca em que os computadores ainda usavam vlvulas. A idia do Assembly usar um comando em substituio a cada instruo de mquina. No Assembly, cada uma destas instrues equivale a uma instruo do processador. Ao invs de usar instrues como 10101011, voc pode usar outras bem mais fceis de entender e de memorizar, como add, div, mul, and, or, not, etc. Voc tambm pode criar variveis, que so pequenos espaos na memria RAM reservados para guardar algum tipo de informao, que o programa precisar mais tarde. Por exemplo, a instruo "add" faz com que o processador some duas variveis; "add x, y" por exemplo, soma os valores de x e y. Por causa desta caracterstica de permitir trabalhar diretamente com as instrues do processador, o Assembly uma linguagem de baixo nvel. Existem tambm linguagens de alto nvel, como C++ ou Pascal, onde possvel usar vrias funes j prontas ou mesmo ferramentas visuais, como o Kdeveloper ou o Kylix, que so ainda mais fceis. Em se tratando de programao, o fato de uma linguagem ser "de baixo nvel", no significa que ela ruim, mas apenas que ela manipula diretamente as instrues e endereos de memria e, por isso, mais trabalhosa e voltada para o desenvolvimento de aplicativos otimizados.

2.6.2 - Fortran
O Fortran foi uma das primeiras linguagens de alto nvel da histria. Enquanto o Assembly chamado de linguagem de baixo nvel, por nele utilizarmos diretamente as instrues e endereos do processador e memria, numa linguagem de alto nvel temos vrias funes prontas, o que facilita muito a programao, mas em compensao torna em muitos casos o programa maior e mais pesado, j que o compilador jamais conseguir gerar um cdigo to otimizado quanto um programador experiente conseguiria. A primeira verso do Fortran foi criada no final da dcada de 50, mas a linguagem comeou a ser usada em larga escala a partir da metade da dcada de 60, quando surgiram vrias verses diferentes. Atualmente o Fortran pouco usado.

2.6.3 - Pascal
O Pascal outra linguagem de alto nvel, criada durante a dcada de 60. O Pascal uma linguagem bastante estruturada, com regras bastante rgidas, o que a torna difcil de usar. Hoje em dia o Pascal original pouco usado, mas seus descendentes diretos como o Free Pascal evoluram muito. O prprio Kylix (junto com o Delphi) uma evoluo do Pascal.

2.6.4 - Cobol
Cobol significa "Common Business Oriented Language". Esta linguagem foi desenvolvida no final da dcada de 50, com o objetivo de ser uma plataforma de desenvolvimento para aplicaes bancrias e financeiras em geral. Comparado com o Pascal e o Assembly, comuns na poca, o Cobol uma linguagem relativamente amigvel, o que garantiu uma grande aceitao. At hoje esta linguagem usada em muitos sistemas bancrios, o que explica a grande procura por programadores experientes nesta linguagem na poca do bug do ano 2000.

2.6.5 - C
O C foi desenvolvido durante a dcada de 70, mas ainda largamente utilizado. A grande vantagem do C permitir escrever tanto programas extremamente otimizados para a mquina, como seria possvel apenas em Assembly, e ao mesmo tempo vir com vrias funes prontas, como uma linguagem de alto nvel, que podem ser utilizadas quando no for necessrio gerar um cdigo to otimizado. A maior parte dos programas Linux e quase todo o Kernel foram escritos em C, o que explica o porqu do sistema ser to rpido em algumas tarefas.

2.6.6 - C++
O C++ mantm os recursos do C original, mas traz muitos recursos novos, como recursos orientados a objetos, sendo tambm bem mais fcil de utilizar. O C++ bastante usado atualmente para desenvolver muitos programas para vrias plataformas. Suporta vrios paradigmas de programao como: programao procedural e orientao a objeto.

2.7 - Sistema de implementao Hbrido (ou tipo de traduo: Hbrido)


H linguagens compiladas para um cdigo de mquina de uma mquina virtual (sendo esta mquina virtual apenas mais um software, que emula a mquina virtual sendo executado em uma mquina real), como o Java e o Parrot. E tambm h outras formas de interpretar em que os cdigos-fontes, ao invs de serem interpretados linha-a-linha, tm blocos "compilados" para a memria, de acordo com as necessidades, o que aumenta a performance dos programas quando os mesmos mdulos so chamados vrias vezes. A Java Virtual Machine (JVM) um programa que converte o cdigo Java em comandos que o sistema operacional possa executar. Existem mquinas virtuais para vrios sistemas operacionais: o problema que, devido ao processamento executado pela mquina virtual, o programa torna-se mais pesado do que seria caso escrito diretamente para a plataforma. Explicando de forma mais elaborada, linguagens de programao "tradicionais", como o C e o C++, utilizam um compilador diferente para cada plataforma ou sistema operacional em que o programa ir rodar. O cdigo fonte em si pode ser escrito de forma a ser facilmente portvel, ou seja, rodar em diferentes verses do Unix ou em vrias famlias de processadores diferentes sem muitas alteraes, mas ainda assim ser necessrio recompilar o cdigo fonte, gerando um binrio diferente para cada caso. Embora o trabalho inicial seja maior, a vantagem desta abordagem que o desempenho o melhor possvel, j que sempre teremos um programa binrio otimizado para a plataforma. O Java utiliza um conceito diferente. Ao invs de gerar um binrio diferente para cada plataforma, gerado um binrio que pode ser executado em qualquer plataforma, dentro de uma mquina virtual. Este binrio "universal" chamado de bytecode. A idia criar aplicativos que possam ser escritos uma vez e a partir da serem executados em qualquer plataforma, reduzindo os custos de desenvolvimento. Apenas o software da mquina virtual que precisa ser reescrito para cada plataforma, mas isso problema dos desenvolvedores da linguagem, no do programador.

3 - A Linguagem Java
A linguagem Java foi desenvolvida pela Sun Microsystems em 1995. Apesar de relativamente nova, a linguagem obteve uma espetacular aceitao por programadores do mundo inteiro, tendo se difundido como nunca antes ocorreu com uma linguagem de programao. Um fator que colaborou com isso, o fato da linguagem possuir vantagens agregadas tais como: orientao a objetos, independncia de plataforma, multitarefa, robusta, segura e distribuda. Com o advento da Internet, que tornou ainda mais necessrio a comunicao entre plataformas heterogneas, estes fatores fizeram com que o Java fosse a tecnologia perfeita para este novo cenrio. O Java uma linguagem de programao multiplataforma, com uma sintaxe at certo ponto parecida com o C++, porm com bibliotecas diferentes. Os programas em Java podem ser executados em qualquer sistema operacional, desde que o interpretador esteja instalado.

3.1 - Histrico
Tudo comeou em 1991, com um pequeno grupo de projeto da Sun Microsystems denominado Green que pretendia criar uma nova gerao de computadores portteis inteligentes, capazes de se comunicar de muitas formas, ampliando suas potencialidades de uso. Para tanto decidiuse criar tambm uma nova plataforma para o desenvolvimento destes equipamentos de forma que seu software pudesse ser portado para os mais diferentes tipos de equipamentos. A primeira escolha de um linguagem de programao para tal desenvolvimento foi C++, aproveitando suas caractersticas e a experincia do integrantes do grupo no desenvolvimento de produtos. Mas mesmo o C++ no permitia realizar com facilidade tudo aquilo que o grupo visionava. James Gosling, coordenador do projeto, decidiu ento pela criao de uma nova linguagem de programao que pudesse conter tudo aquilo que era considerado importante e que ainda assim fosse simples, porttil e fcil de programar. Surgiu assim a linguagem interpretada Oak (carvalho em ingls) batizada assim dada a existncia de uma destas rvores em frente ao escritrio de Gosling. Para dar suporte a linguagem tambm surgiu o Green OS e uma interface grfica padronizada. Aps dois anos de trabalho o grupo finaliza o Star7 (ou *7), um avanado PDA (Personal Digital Assistant) e em 1993 surge a primeira grande oportunidade de aplicao desta soluo da Sun numa concorrncia pblica da Time-Warner para desenvolvimento de uma tecnologia para TV a cabo interativa, injustamente vencida pela SGI (Silicon Graphics Inc.). O Oak, ento rebatizado Java devido a problemas de copyright continua sem uso definido at 1994, quando estimulados pelo grande crescimento da Internet, Jonathan Payne e Patrick Naughton desenvolveram o programa navegador WebRunner, capaz de efetuar o download e a execuo de cdigo Java via Internet. Apresentado formalmente pela Sun como o navegador HotJava e a linguagem Java no SunWorld'95, o interesse pela soluo se mostrou explosivo. Poucos meses depois a Netscape Corp. lana uma nova verso de seu navegador Navigator tambm capaz de efetuar o download e a execuo de pequenas aplicaes Java ento chamadas applets. Assim se inicia a histria de sucesso do Java. Numa iniciativa tambm indita a Sun decide disponibilizar o Java gratuitamente para a comunidade de desenvolvimento de software, embora detenha todos os direitos relativos linguagem e as ferramentas de sua autoria. Surge assim o Java Developers Kit 1.0 (JDK 1.0). As plataformas inicialmente atendidas foram: Sun Solaris e Microsoft Windows 95/NT. 7

Progressivamente foram disponibilizados kits para outras plataformas tais como IBM OS/2, Linux e Applet Macintosh. Em 1997, surge o JDK 1.1 que incorpora grandes melhorias para o desenvolvimento de aplicaes grficas e distribudas e no incio de 1999 lanado o JDK 1.2, contendo muitas outras melhorias, de forma que tambm seja conhecido como Java 2. Atualmente a Sun vem liberando novas verses ou correes a cada nove meses bem como novas API (Application Program Interface) para desenvolvimento de aplicaes especficas.

3.2 - Verses do Java


Existe uma quantidade assombrosa de siglas e nmeros ao redor do Java. No comeo isso pode ser bastante confuso, ainda mais porque cada biblioteca do Java mantm seu prprio versionamento. Talvez, o que seja mais estranho o termo Java 2. Sempre que voc for ler alguma coisa sobre Java, vai ouvir falar em Java2 ou J2 como prefixo de alguma sigla. Na verdade no existe Java 2.0, acontece que quando a Sun lanou a verso 1.2 do Java fizeram uma jogada de marketing e decidiram cham-la de Java 2. A Sun abandonou recentemente o "2" no nome da plataforma, e a nomenclatura oficial passou a ser Java SE, Java EE e Java ME. A razo por detrs desta mudana a necessidade de simplificar as convenes de nomes e colocar o foco no "Java" das edies. As releases futuras das plataformas sero chamadas "updates", ao contrrio do que acontecia anteriormente. Por exemplo, uma release futura do Java EE 5 ser chamada Java EE 5 update 2, ao invs de Java EE 5.1. Em junho/2006, foi liberado a verso Java Standard Edition 6 (Java SE 6) para avaliao e em dezembro/2006 para utilizao. Alm de atender nova conveno de nomenclaturas para todas as plataformas Java (os "2" foram eliminados), foi melhorada com muitas novas caractersticas. O Java SE 6 tem potencial para ser revolucionrio para o desktop como o Java 2 o foi para o servidor. A ltima verso disponvel at incio de agosto/2008 o JDK 6 Update 7.

3.3 - O Java hoje


A plataforma Java j atraiu mais de 4 milhes de desenvolvedores de software, usada em todos os principais setores no mundo inteiro e est presente em uma ampla gama de dispositivos, computadores e redes de todas as tecnologias de programao. Sua versatilidade, eficincia, portabilidade de plataforma e segurana fazem dela a tecnologia ideal para a computao em rede, de modo que, hoje, a tecnologia Java est presente em mais de dois bilhes e meio de dispositivos: - mais de 700 milhes de PCs; - 708 milhes de telefones celulares e outros dispositivos portteis (fonte: Ovum); - 1 bilho de smart cards; - alm de impressoras, webcams, jogos, sistemas de navegao para automveis, terminais lotricos, dispositivos mdicos, estaes de pagamento de estacionamento etc. Atualmente, pode-se encontrar a tecnologia Java em redes e dispositivos que vo desde a Internet e supercomputadores cientficos a laptops e telefones celulares, de simuladores de mercado da Wall Street a dispositivos para jogos e cartes de crdito, simplesmente em todo 8

lugar. A melhor forma de saber mais sobre essas aplicaes explorar o site oficial www.java.com.

3.4 - Plataforma Java


A plataforma Java foi dividida em trs software development toolkits distintos, cada um voltado para o desenvolvimento de solues para segmentos diferentes do mercado: Java EE: Java Platform Enterprise Edition Toolkit Java SE: Java Platform Standard Edition Toolkit Java ME: Java Platform Micro Edition Wireless Toolkit

Figura 1 - Escalabilidade das Plataformas Java Em cada toolkit temos uma combinao particular de mquina virtual, APIs e ferramentas. A linguagem de programao Java, os mecanismos de carregamento, verificao e uso de classes, alm de uma API nuclear, constituem o fator aglutinador que garante a escalabilidade da plataforma.

Figura 2 - Arquitetura das Plataformas Java 9

Neste disciplina, ser suficiente para ns utilizarmos apenas a plataforma Java SE, j que nosso objetivo principal aprender a linguagem Java.

3.5 - Kit de Desenvolvimento Java - Java Developers Kit


O JDK composto basicamente por: - Um compilador (javac) - Uma mquina virtual Java (java) - Um visualizador de applets (appletviewer) - Bibliotecas de desenvolvimento (os packages java) - Um programa para composio de documentao (javadoc) - Um depurador bsico de programas (jdb) - Verso run-time do ambiente de execuo (jre) Deve ser observado que o JDK no um ambiente visual de desenvolvimento, embora mesmo assim seja possvel o desenvolvimento de aplicaes grficas complexas apenas com o uso do JDK que , de fato, o padro em termos da tecnologia Java. Outros fabricantes de software tais como Microsoft, Borland, Symantec e IBM oferecem comercialmente ambientes visuais de desenvolvimento Java, respectivamente, Visual J++, JBuilder, VisualCafe, VisualAge for Java. Nos laboratrios da UniPaulistana normalmente esto disponveis o JCreator, Netbeans e o Eclipse como plataformas de desenvolvimento para a Linguagem Java.

3.6 - O Ambiente Java


O compilador Java exige que os arquivos de programa tenham a extenso .java e que o arquivo esteja presente no diretrio corrente, assim, numa linha de comando, dentro do diretrio onde foi salvo o arquivo. Isto aciona o compilador Java transformando o cdigo digitado no seu correspondente em bytecodes, produzindo um arquivo AloMundo.class. No existindo erros o javac no exibe qualquer mensagem, caso contrrio sero exibidas na tela uma mensagem para cada erro encontrado, indicando em que linha e que posio desta foi detectado o erro. Tendo compilado o programa, ou seja, dispondo-se de um arquivo .class podemos invocar uma mquina virtual Java (JVM), isto , o interpretador Java. Esta aplicao nos mostra como proceder a compilao e execuo de programas escritos em Java utilizando o JDK.

Figura 3 - Ambiente de Desenvolvimento Java 10

O exemplo dado na prxima seo, alm de ilustrar aspectos relacionados a programao de aplicaes Java, serve tambm para caracterizar uma parte do ambiente de desenvolvimento da linguagem Java: a criao de programas, sua compilao e execuo, como mostra a figura 3 acima. Como visto, devemos utilizar um editor de textos ASCII simples para produzirmos o cdigo fonte de um programa que, obrigatoriamente deve ser salvo como arquivos de extenso .java. Utilizando o compilador javac o arquivo fonte transformado em bytecodes Java que podem ser executados em qualquer plataforma computacional que disponha de uma mquina virtual Java como ilustrado na figura 4. Quando solicitamos a execuo do programa, tanto atravs do interpretador java como de sua verso run-time jre, o arquivo .class primeiramente carregado, verificado para garantir-se os requisitos de segurana do sistema e s ento propriamente interpretado. No caso especfico das applets o navegador (browser) efetua o download de um arquivo .class interpretando-o ou acionando algum interpretador associado (plug-in). O resultado deste ambiente que o Java, embora interpretado inicialmente, torna-se independente de plataforma, simplificando o projeto de aplicaes de rede ou distribudas que tenham que operar em ambientes heterogneos, alm de permitir a incorporao de vrios mecanismos de segurana.

Figura 4 - Ambiente Java e os Bytecodes

3.7 - Caractersticas da linguagem


Write once, run anywhere

Esse um slogan que a Sun usa para o Java, j que voc no precisa reescrever parte da sua aplicao toda vez que quiser mudar de sistema operacional. Muitas pessoas criticam ou criam piadas em cima desse slogan, por acreditarem que nem sempre uma aplicao Java pode rodar em duas plataformas diferentes sem problemas. A linguagem Java exibe importantes caractersticas que, em conjunto, diferenciam na de outras linguagens de programao: - Independente de Plataforma (Portabilidade): Java uma linguagem independente de plataforma pois os programas Java so compilados para uma forma intermediria de cdigo denominada bytecodes que utiliza instrues e tipos primitivos de tamanho fixo, ordenao bigendian e um biblioteca de classes padronizada. Os bytecodes so como uma linguagem de mquina destinada a uma nica plataforma, a Mquina Virtual Java (JVM - Java Virtual Machine), um interpretador de bytecodes. Pode-se implementar uma JVM para qualquer 11

plataforma assim temos que um mesmo programa Java pode ser executado em qualquer arquitetura que disponha de uma JVM. - Orientada Objetos: Java uma linguagem puramente orientada objetos pois, com exceo de seus tipos primitivos de dados, tudo em Java so classes ou instncia de uma classe. Java atende todos os requisitos necessrios para uma linguagem ser considerada orientada objetos que oferecerem mecanismos de abstrao, encapsulamento e hereditariedade. - Sem Ponteiros: Java no possui ponteiros, isto , Java no permite a manipulao direta de endereos de memria nem exige que o objetos criados seja destrudos livrando os programadores de uma tarefa complexa. Alm disso a JVM possui um mecanismo automtico de gerenciamento de memria conhecido como garbage collector, que recupera a memria alocada para objetos no mais referenciados pelo programa. - Performance: Java foi projetada para ser compacta, independente de plataforma e para utilizao em rede o que levou a deciso de ser interpretada atravs dos esquema de bytecodes. Como uma linguagem interpretada a performance razovel, no podendo ser comparada a velocidade de execuo de cdigo nativo. Para superar esta limitao vrias JVM dispe de compiladores just in time (JIT) que compilam os bytecodes para cdigo nativo durante a execuo otimizando a execuo, que nestes casos melhora significativamente a performance de programas Java. - Segurana: Considerando a possibilidade de aplicaes obtidas atravs de uma rede, a linguagem Java possui mecanismos de segurana que podem, no caso de applets, evitar qualquer operao no sistema de arquivos da mquina-alvo, minimizando problemas de segurana. Tal mecanismo flexvel o suficiente para determinar se uma applet considerada segura especificando nesta situao diferentes nveis de acesso ao sistema-alvo. - Permite Multithreading: Java oferece recursos para o desenvolvimento de aplicaes capazes de executar mltiplas rotinas concorrentemente bem dispe de elementos para a sincronizao destas vrias rotinas. Cada um destes fluxos de execuo o que se denomina thread, um importante recurso de programao de aplicaes mais sofisticadas.

3.8 - Produtos e Terminologias da Tecnologia Java


Produto
Application Program Interface (API) Java Virtual Machine (JVM) Java Runtime Environment (JRE) Java Developer`s Kit (JDK) Java 2 Java Standard Edition (Java SE) Java Enterprise Edition (Java EE) Java Micro (JME) Javadoc Edition

Descrio
Biblioteca de classes e interfaces que auxiliam no desenvolvimento das aplicaes. Interpreta arquivos .class (bytecode) para instrues especficas de plataforma. Somente o JVM no suficiente para uma aplicao Java ser executada. O JRE consiste do JVM mais ncleo de classes da plataforma Java e arquivos de suporte. O JRE o que deve estar instalado para a execuo de uma aplicao Java. Corresponde ao nome da tecnologia Java at Novembro de 1999. composto por: JVM, JRE, compilador, ferramentas e APIs. o nome da tecnologia a partir de Novembro de 1999. Corresponde ao JDK 1.2 na antiga terminologia. composto por: JVM, JRE, compilador, ferramentas e APIs. Nomenclatura alterada em 2006 para a tecnologia. Foi retirado o 2 do J2SE 5 e passou a ser chamado com esta nova sigla. Ferramentas e APIs para o desenvolvimento de aplicaes no-distribudas. Nomenclatura alterada em 2006 para a tecnologia. Foi retirado o 2 do J2EE 5 e passou a ser chamado com esta nova sigla. Ferramentas e APIs para o desenvolvimento de aplicaes distribudas. Engloba tecnologias tais como RMI, EJB, CORBA, JMS, etc. Ferramentas e APIs para o desenvolvimento de aplicaes para aparelhos portteis (palms, celulares, eletrodomsticos). Corresponde a documentao das APIs. A ferramenta Javadoc auxilia na criao da documentao das classes.

12

3.9 - Primeiro Exemplo


//Comentario de uma linha public class AloMundo { public static void main (String args[]) { System.out.println("Alo Mundo!"); } } Exemplo 1 - Primeiro Exemplo de Aplicao Java Este exemplo visa apresentar um programa simples para imprimir uma mensagem na tela, este provavelmente ser seu primeiro programa em Java. Crie o arquivo ao lado em seu diretrio e salve com o nome: AloMundo.java Chame o compilador Java para este arquivo: javac AloMundo.java Seu diretrio deve ter recebido um novo arquivo aps essa compilao: AloMundo.class Chame o interpretador Java para este arquivo (omita a extenso .class de arquivo): java AloMundo Observe o resultado na tela: Alo Mundo!

3.10 - Explicao passo a passo do programa exemplo


//Comentario de uma linha Comentrios em Java seguem a mesma sintaxe de C++, // inicia uma linha de comentrio, todo o restante da linha ignorado. Existe tambm um outro tipo de comentrio formado por /* Insira aqui o texto a ser ignorado */ , este tipo de comentrio pode ser intercalado em uma linha de cdigo. Comentrios so tratados como espaos em branco. public class AloMundo { class a palavra reservada que marca o inicio da declarao de uma classe. Public um especificador, por enquanto guarde public class como o incio da declarao de uma classe. A declarao de classes ser padro neste semestre. No prximo semestre sero declaradas novas classes, quando ser estudado os tpicos Encapsulamento de Atributos e Mtodos. AloMundo o nome dado a esta classe. O abre chaves marca o incio das declaraes da classe que so os atributos e mtodos. Esta classe s possui uma declarao, a do mtodo main. Desta forma, todo pedao de cdigo em Java deve pertencer ao abre chaves, fecha chaves da definio de uma classe. public static void main (String args[]) { System.out.println("Alo Mundo!"); }

13

public um qualificador do mtodo que indica que este acessvel externamente a esta classe (para outras classes que eventualmente seriam criadas), no se preocupe com ele agora, apenas declare todos os mtodos como public. Este assunto ser tratado em Encapsulando Mtodos e Atributos no prximo semestre. static um outro qualificador, que indica que o mtodo deve ser compartilhado por todos os objetos que so criados a partir desta classe. Os mtodos static podem ser invocados, mesmo quando no foi criado nenhum objeto para a classe, para tal deve-se seguir a sintaxe: <NomeClasse>.<NomemetodoStatic>(argumentos). Esta explicao ser apresentada no prximo semestre, por hora voc precisa saber que particularmente o mtodo main precisa ter essa qualificao porque ele chamado sem que se crie nenhum objeto de sua classe (a classe AloMundo). void o valor de retorno da funo, quando a funo no retorna nenhum valor ela retorna void, uma espcie de valor vazio que tem que ser especificado. Tambm no se preocupe com isto neste semestre. main Todo programa Java dever conter mtodos. Um programa executvel aquele que contm o mtodo principal (main). Este um nome particular de mtodo que indica para o compilador o incio do programa, dentro deste mtodo principal e, atravs das iteraes entre os atributos, variveis e argumentos visveis nele que o programa se desenvolve. (String args[]) o argumento de main e por consequncia do programa todo, ele um vetor (array) de Strings que formado quando so passados ou no argumentos atravs da invocao do nome do programa na linha de comando do sistema operacional, exemplo: java AloMundo argumentotexto1 argumentotexto2 { ... }

Abre chaves e fecha chaves. Para quem no conhece C ou C++, eles podem ser entendidos como algo semelhante ao BEGIN END de Pascal ou Modula-3, ou seja: delimitam um bloco de cdigo. System.out.println("Alo Mundo!"); Chamada do mtodo println para o atributo out da classe ou objeto System, o argumento uma constante do tipo String. println assim como writeln de Pascal, imprime a String e posiciona o cursor na linha abaixo , analogamente print no avana linha. Por hora voc pode guardar esta linha de cdigo como o comando para imprimir mensagens na tela, onde o argumento que vem entre aspas a String a ser impressa. O ; ponto e vrgula separa os comandos. } Finalmente o fecha chaves termina com a declarao da classe AloMundo. 14

3.11 - Sintaxe da linguagem Java


Algumas convenes para codificar na linguagem:

3.11.1 - Nomes de arquivos


- Nome sempre iniciado por maisculas, inclusive nomes compostos. No pode ter espao, caracteres especiais e sem aspas. - O cdigo fonte de programas Java armazenado em arquivos com extenso .java. - Um arquivo fonte poder armazenar a definio de mais de uma classe, mas uma boa prtica armazenar apenas uma classe por arquivo fonte. - Use o nome da classe principal do arquivo como sendo o nome do arquivo. - Quando compilamos um arquivo fonte, ser gerado um arquivo com extenso .class para cada classe definida e com o mesmo nome da classe. O arquivo .class contm o bytecode gerado com a compilao. Exemplos: Calculadora.java , Soma2Numeros.java

3.11.2 - Outras regras de sintaxe


class - Nomes de classes podem ser maisculas ou minsculas ou misturado (maisculas e minsculas), mas por conveno o nome das classes comeam por letra maisculas seguido de minsculas. Sendo um nome composto, as iniciais so letras maisculas; Mtodos - Nomes de mtodos podem ser verbos, podendo misturar entre maisculas e minsculas. Por conveno o nome dos mtodos, no sendo um nome composto, so todas em letras minsculas. Do contrrio (se for um nome composto), os nomes seguintes comeam por letra maisculas seguido de minsculas; Blocos ou controles de estruturas - Convencionou-se o uso de { } (chaves); Espaos - Convencionou-se o uso de quatro espaos para identaes; Encerramento de comando - No Java, os comandos so terminados com o sinal de ponto e vrgula (;) Variveis - Recomenda-se que a declarao de variveis utilize nomes iniciados com letras minsculas. Caso o nome seja composto de mais de uma palavra, as demais deveriam ser iniciadas com letras maisculas. Segue a mesma regra dos Mtodos. Constantes - Utilizar o modificador final antes do tipo de dados e declarar os nomes todo em maisculas.

3.11.3 - Comentrios
Comentrios so trechos de texto, usualmente explicativos, inseridos dentro do programa de forma que no sejam considerados como parte do cdigo, ou seja, so informaes deixadas juntamente com o cdigo para informao de quem construiu o programa. O Java aceita trs tipos de comentrios: // comentrio de uma linha /* comentrio de uma ou mais linhas */ /** comentrio de documentao */ (Arquivos de documentao)

15

4 - Tipos de Dados primitivos, variveis e constantes


Uma varivel em Java pode ser de um dos quatro tipos de dados: classes, interfaces, arrays e tipos primitivos. Os tipos primitivos so diretamente armazenados e seu tamanho fixo. O tamanho e as caractersticas de cada tipo primitivo so consistentes entre as plataformas, no h variaes dependentes de mquina como em C e C++, um benefcio da portabilidade do Java. Java possui 8 tipos primitivos onde 6 so tipos numricos, um tipo char para caracteres e um tipo booleano, podendo ser agrupados da seguinte forma:
Tipo e nomes Inteiros (byte, short, int e long) Ponto Flutuante (float e double) Caractere (char) Lgico (boolean) Descrio Apenas nmeros inteiros, positivos ou negativos Nmeros inteiros e fracionrios, positivos ou negativos Representao de caracteres individuais Tipo que s tem 2 estados: verdadeiro ou falso

4.1.1 - Tipos de Dados Inteiros (byte, short, int e long)


Existem quatro diferentes tipos de dados inteiros, isto , nmeros sem casas decimais: byte (8 bits), short (inteiro curto - 16 bits), int (inteiro - 32 bits) e long (inteiro longo - 64 bits) e que podem armazenar valores dentro dos seguintes intervalos numricos:
Nome ou Tamanho Tipo da Integral byte 8 bits short int long 16 bits 32 bits 64 bits Espao Comentrios

-128 at 127 ou -27 . . . . 27 - 1 -32768 at 32767 ou -215 . . . . 215 - 1 -2147483648 at 2147483647 ou O mais comum. -231 . . . . 231 - 1 -9223372036854775808 at Obrigatoriamente acrescentar a letra l 9223372036854775807 ou no final do nmero -263 . . . . 263 - 1

Por default os valores literais so tratados como inteiros simples (int) ou seja valores de 32 bits. possvel tambm definir literais inteiros do tipo long, ou seja, com 64 bits. Para isso, basta acrescentar um L no final do nmero. Exemplos de literais do tipo Inteiro:
byte short int long 0 0 0 365l 8 666 1998 1998l -128 -3 -23456 -9223372036854775805l

4.1.2 - Tipo de Dados em Ponto Flutuante


Os tipos de dados de ponto flutuante armazenam nmeros que possuem uma parte decimal, isto , representam nmeros reais. No Java existem duas representaes para nmeros em ponto flutuante que se diferenciam pela preciso oferecida: o tipo float permite representar valores reais com preciso simples (representao interna de 32 bits) enquanto o tipo double oferece dupla preciso (representao interna de 64 bits).

16

Nome ou Tamanho Tipo Integral float 32 bits

da Espao a+2 ou -2 +/- 3.40282347E+38f (aproximadamente 7 dgitos significativos) 1024 1024 a+2 ou -2 +/1.79769313486231570E+308 (15 dgitos significativos)
128 128

Comentrios Obrigatoriamente acrescentar a letra f no final do nmero Opcionalmente acrescentar a letra d no final do nmero

double

64 bits

Exemplos de representao:
Valores 3.1415926f 6.02E23f 2.718f 123.4E+306d Tipo Um valor de ponto flutuante Um valor de ponto flutuante Um valor de ponto flutuante Um valor de ponto flutuante usando o tipo double

Deve ser utilizado o ponto como separador de casas decimais. Quando necessrio, expoentes podem ser escritos usando o caractere e ou E, como nos seguintes valores: 1.44e6 (= 1.44 x 106 = 1,440,000) ou 3.4254e-2 (= 3.4254 x 10-2 = 0.034254).

4.1.3 - Tipo de Dados Caractere


O nico tipo dessa categoria o tipo char. Uma varivel do tipo char permite armazenar apenas um caracter. Caso seja necessrio armazenar palavras ou textos dever ser utilizado o classe (tipo) String, que no um tipo primitivo. necessrio utilizar aspas simples para atribuir um literal para uma varivel do tipo char, por exemplo: char letra = a. Java utiliza o padro UNICODE para armazenar as variveis do tipo char. Nesse padro, cada caracter ocupa 16 bits, podendo representar at 32.768 caracteres diferentes. Os literais dessa categoria podem representar caracteres imprimveis ou no. Abaixo segue uma relao de alguns deles: a-z - Uma letra de a - z A-Z - Uma letra de A- Z \n - Nova linha \ - Aspas duplas \ - Aspas simples \r - Retorno de carro \b - Retrocesso do cursor \u006F - Valores Unicode \t - Tabulao

4.1.4 - Tipo de Dados Lgico


Em Java dispe-se do tipo lgico boolean capaz de assumir os valores false (falso) ou true (verdadeiro) que equivalem aos estados off (desligado) e on (ligado) ou no (no) e yes (sim). O Java no associa valores numricos para true e false como ocorre em outras linguagens de programao.

4.2 - Variveis
Uma varivel um nome definido pelo programador ao qual pode ser associado um valor pertencente a um certo tipo de dados. Em outras palavras, uma varivel como uma memria, capaz de armazenar um valor de um certo tipo, para a qual se d um nome que usualmente descreve seu significado ou propsito. 17

Toda varivel tem as seguintes caractersticas: - Deve ser declarada antes de ser utilizada; - Possui um tipo, um identificador (nome) e um escopo; - Podem ser locais, quando declaradas dentro de mtodos, ou atributos, quando declaradas no corpo da classe; - Podem ser inicializadas; Como Java uma linguagem fortemente tipada, todas as variveis devem ser declaradas antes de serem usadas. O tipo de uma varivel determina o tipo de informao que pode ser armazenada nela. Variveis em Java podem ser declaradas como atributos, no corpo da classe, ou podem ser declaradas localmente em qualquer parte da implementao de um mtodo. Variveis tambm possuem um escopo, o qual determina onde no programa ela estar visvel e poder ser acessada.

4.2.1 - Denominao de Variveis


recomendado que se escolha nomes significativos e que representem a real inteno de uso para a varivel ou constante. Recomenda-se, no entanto, que a declarao de variveis utilize nomes iniciados com letras minsculas. Caso o nome seja composto de mais de uma palavra, as demais deveriam ser iniciadas com letras maisculas. Os nomes no podem conter outros smbolos grficos, operadores ou espaos em branco. importante ressaltar que as letras minsculas so consideradas diferentes das letras maisculas, ou seja, a linguagem Java sensvel ao tipo de caixa empregado (maiscula ou minscula), assim temos como exemplos vlidos: a1 bairro3 cont contador i mediaGrupoTarefa2 posicaoAbsoluta religiao sinal total valorMinimoDesejado x

Segundo as mesmas regras temos abaixo exemplos invlidos de nomes de variveis: 1x Total geral numero-minimo void

A razo destes nomes serem invlidos simples: o primeiro comea com um algarismo numrico, o segundo possui um espao em branco, o terceiro contm o operador menos e o quarto nome invlido por ser uma Palavra Reservada - veja item 4.5.

4.2.2 - Declarao de variveis


Uma varivel deve seguir a seguinte sintaxe: Tipo nome1 [, nome2 [, nome3 [..., nomeN]]]; Ou seja, primeiro indicamos um tipo, depois declaramos uma lista contendo um ou mais nomes de variveis desejadas deste tipo, onde nesta lista os nomes so separados por vrgulas e a declarao terminada por ; (ponto e vrgula). Exemplos: 18

int i; float total, preco; byte mascara; double valorMedio; As variveis podem ser declaradas individualmente ou em conjunto: char opcao1, opcao2; A declarao anterior equivale as duas declaraes abaixo: char opcao1; char opcao2; Variveis podem ser declaradas em qualquer ponto de um programa Java, sendo vlidas em todos no escopo onde foram declaradas e nos escopos internos estes. Por escopo entendese o bloco (conjunto de comandos da linguagem) onde ocorreu a declarao da varivel.

4.2.3 - Inicializao de variveis


Variveis que so definidas dentro do mtodo so chamadas de variveis automticas, locais, temporrias ou estticas e devem ser inicializadas antes do uso. Acumuladores e contadores devem ser inicializados obrigatoriamente. Quando um objeto criado, as variveis membro so inicializadas com os seguintes valores em tempo de alocao: Tipo de varivel byte short int long float double char boolean Tamanho 8 bits 16 bits 32 bits 64 bits 32 bits 64 bits 64 bits Valor inicial 0 0 0 0L 0.0f 0.0d \u0000 (Null) false

possvel definirmos um valor inicial para uma varivel diretamente em sua declarao como indicado a seguir: int quantidade = 0; float angulo = 1.57f; boolean ok = false; char letra = c;

4.3 - Constantes
Uma constante ter sempre um nico valor. Uma constante pode tanto ser definida como um atributo de classe como uma varivel local. Uma constante uma vez que foi declarada e atribudo um valor para a mesma, no permitido que outra atribuio seja efetuada, ocasionando um erro de compilao caso isso ocorra. A atribuio do valor inicial pode ser feita no momento da declarao, ou posteriormente em outra parte do programa. 19

Para declarar uma varivel do tipo constante, devemos utilizar o modificador final dessa forma: final <tipo> <identificador> [= valor]; Declare constante com nomes descritivos, escritos com todas as letras em maisculo. Exemplos: final double MINIMO = 100.0; final long VALORREAJUSTE; final float PI = 3.141592f;

4.4 - Converses entre tipos primitivos de dados


A converso entre tipos primitivos de dados uma prtica bastante comum e necessria, porm, deve-se ter cuidado ao efetu-la para no perder informaes e obter um resultado no esperado. Java automaticamente converte um valor de um tipo numrico para outro tipo de maior capacidade de armazenamento. Por exemplo, se tentarmos atribuir um byte para um short, o compilador automaticamente converte o byte em short antes de realizar a atribuio. O esquema abaixo simboliza as converses automticas:

O contrrio no verdadeiro. Para efetuarmos uma converso de um tipo maior para outro de menor capacidade necessrio usar um mecanismo chamado type cast, caso contrrio um erro ser lanado. Isso feito colocando-se o tipo pretendido para converso entre parnteses em frente da expresso ou varivel. Quando fazemos isso, foramos o compilador a realizar a converso. importante estar ciente que isto pode resultar em perda de dados e em resultados imprevisveis. Exemplo: byte b1 = 127, b2 = 127, b3; b3 = b1+ b2; b3 = (byte) (b1 + b2);

// Erro, pois b1 + b2 resulta em 254. Acima do valor permitido // Est correto, mas ir ocorrer perda de informao!

Alguns valores so incompatveis se voc tentar fazer uma atribuio direta. Enquanto um nmero real costuma ser representado em uma varivel do tipo double, tentar atribuir ele a uma varivel int no funciona, pois um cdigo que diz: i deve valer d, mas no se sabe se d realmente um nmero inteiro ou no. Exemplo: double d = 3.1415; int i = d; // no compila O mesmo ocorre no seguinte trecho: int i = 3.14; O mais interessante, que nem mesmo o seguinte cdigo compila: double d = 5; // ok, o double pode conter um nmero inteiro int i = d; // no compila 20

Apesar de 5 ser um bom valor para um int, o compilador no tem como saber que valor estar dentro desse double no momento da execuo. Esse valor pode ter sido digitado pelo usurio, e ningum vai garantir que essa converso ocorra sem perda de valores. J no caso a seguir o contrrio: int i = 5; double d2 = i; O cdigo acima compila sem problemas, j que um double pode guardar um nmero com ou sem ponto flutuante. Todos os inteiros representados por uma varivel do tipo int podem ser guardados em uma varivel double, ento no existem problemas no cdigo acima.

4.4.1 - Casos no to comuns de casting e atribuio


Alguns castings aparecem tambm: float x = 0.0; // erro - ausncia da letra f aps 0.0, considerado double, por padro. O cdigo acima no compila pois todos os literais com ponto flutuante so considerados double pelo Java. E float no pode receber um double sem perda de informao, para fazer isso funcionar podemos escrever o seguinte: float x = 0.0f; A letra f indica que aquele literal deve ser tratado como float. Outro caso, que mais comum: double d = 5; float e = 3f; float x = (float) d + e; // exemplo de type cast double z = z + f; // sem type cast Voc precisa do casting porque o Java faz as contas e vai armazenando sempre no maior tipo que apareceu durante as operaes, no caso o double. E no mnimo, o Java armazena em um int. At casting com variveis do tipo char podem ocorrer. O nico tipo primitivo que no pode ser atribudo a nenhum outro tipo o boolean.

4.5 - Palavras reservadas


So os comandos ou instrues de uma Linguagem. As palavras reservadas da linguagem Java e que, portanto no podem ser utilizadas como nome de variveis ou outros elementos, so: abstract boolean break byte case catch char class continue default do double else extends false final finally float for if implements import instanceof int interface long native new null package private protected public return short static super switch synchronized this throw throws transient true try void while 21

Alm destas existem outras que embora reservadas no so utilizadas pela linguagem: const future generic goto inner operator outer rest var volatile

Algumas destas, tal como o goto, faziam parte da especificao preliminar do Oak, antes de sua formalizao como Java. Recomenda-se no utiliz-las qualquer que seja o propsito.

5 - Operadores
A linguagem Java oferece um conjunto bastante amplo de operadores, destinados a realizao de operaes de atribuio, aritmticas, lgicas e relacionais.

5.1 - Operador de Atribuio


Atribuio a operao que permite definir o valor de uma varivel atravs de uma constante ou atravs do resultado de uma expresso envolvendo operaes diversas ou uma inicializao. Ser sempre utilizado o sinal =. boolean result = false; int i = 0; long y = a*x + b; Em Java vlido o encadeamento de atribuies, tal como abaixo, onde todas as variveis so inicializadas com o mesmo valor: byte m, n, p, q; m = n = p = q = 0; // equivale a m = (n = (p = (q = 0)));

5.2 - Operadores Aritmticos


Como na maioria das linguagens de programao, o Java possui vrios operadores aritmticos:

Estes operadores aritmticos podem ser combinados para formar expresses onde deve ser observada a precedncia (ordem convencional) de avaliao dos operadores. Parntesis podem ser utilizados para determinar uma forma especfica de avaliao de uma expresso. A seguir um exemplo de aplicao que declara algumas variveis, atribui valores iniciais e efetua algumas operaes imprimindo os resultados obtidos.

22

// Operadores aritmticos em Java public class Aritmetica { static public void main (String args[]) { // Declaracao e inicializacao de duas variaveis int a = 5; int b = 2; // Varios exemplos de operacoes sobre variaveis System.out.println("a = " + a); System.out.println("b = " + b); System.out.println("-b = " + (-b)); System.out.println("a + b = " + (a + b)); System.out.println("a - b = " + (a - b)); System.out.println("a * b = " + (a * b)); System.out.println("a / b = " + (a / b)); System.out.println("(float) a / b = " + ((float)a / b)); System.out.println("a % b = " + (a % b)); System.out.println("a++ = " + (a++)); System.out.println("--b = " + (--b)); System.out.println("a = " + a); System.out.println("b = " + b); } } Embora o exemplo s tenha utilizado variveis e valores inteiros, o mesmo pode ser realizado com variveis do tipo ponto flutuante (float ou double).

5.2.1 - Pr-incremento
x = 10; x = x + 1; O valor da varivel x 11 x = 10; ++x; O valor da varivel x 11.

5.2.2 - Ps-Incremento
x = 10; x = x + 1; O valor da varivel x 11 x = 10; x++ O valor da varivel x 11.

5.2.3 - Diferena entre o Pr-Incremento e o Ps-Incremento:


x = 10 ++x => neste exato momento a varivel a vale 11 x =10 x++ => neste exato momento a varivel x vale 10 e em seguida valer 11 Outro exemplo: int m = 7; int n = 7; int a = 2 * ++m; // a vale 16, m vale 8 int b = 2 * n++; // b vale 14, n vale 8 23

5.3 - Operadores Relacionais


Alm dos operadores aritmticos o Java possui operadores relacionais, isto , operadores que permitem comparar valores literais, variveis ou o resultado de expresses retornando um resultado do tipo lgico, isto , um resultado falso ou verdadeiro. Os operadores relacionais disponveis so:

Note que o operador igualdade definido como sendo um duplo sinal de igual (==) que no deve ser confundido com o operador de atribuio, um sinal simples de igual (=). Como possvel realizar-se uma atribuio como parte de uma expresso condicional, o compilador no faz nenhuma meno sobre seu uso, permitindo que uma atribuio seja escrita no lugar de uma comparao por igualdade, constituindo um erro comum mesmo para programadores mais experientes. importante ressaltar tambm que os operadores relacionais duplos, isto , aqueles definidos atravs de dois caracteres, no podem conter espaos em branco. A seguir um outro exemplo simples de aplicao envolvendo os operadores relacionais. Como para os exemplos anteriores, sugere-se que esta aplicao seja testada como forma de se observar seu comportamento e os resultados obtidos. Exemplo utilizando operadores relacionais: // Operadores relacionais em Java import java.io.*; public class Relacional { static public void main (String args[]) { int a = 15; int b = 12; System.out.println("a = " + a); System.out.println("b = " + b); System.out.println("a == b -> " + (a == b)); System.out.println("a != b -> " + (a != b)); System.out.println("a < b -> " + (a < b)); System.out.println("a > b -> " + (a > b)); System.out.println("a <= b -> " + (a <= b)); System.out.println("a >= b -> " + (a >= b)); } }

24

5.4 - Operadores Lgicos


Como seria esperado o Java tambm possui operadores lgicos, isto , operadores que permitem conectar logicamente o resultado de diferentes expresses aritmticas ou relacionais construindo assim uma expresso resultante composta de vrias partes e, portanto mais complexa.

Os operadores lgicos duplos, isto , definidos por dois caracteres, tambm no podem conter espaos em branco.

5.5 - Precedncia de Avaliao de Operadores


Numa expresso onde existam diversos operadores necessrio um critrio para determinar qual destes operadores ser primeiramente processado, tal como ocorre em expresses matemticas comuns. A precedncia este critrio que especifica a ordem de avaliao dos operadores de um expresso qualquer. Na tabela abaixo esto relacionados os nveis de precedncia organizados do maior para o menor. Existem outros operadores, esto sendo citados apenas alguns mais importantes.
Nvel 1 2 3 4 5 6 7 8 9 Operadores ++ -- * / % + < > >= <= == != && || ! = Significado dos operadores (na ordem) Incremento, decremento e operador unrio (negativo ou positivo) Multiplicao, diviso e resto da diviso inteira Soma e subtrao Maior, menor, maior igual, menor igual Teste igualdade e teste diferena E lgico Ou lgico Negao Atribuio

Para modificarmos a ordem natural de avaliao dos operadores necessrio utilizarmos os parntesis, cujo nvel de avaliao o mais alto, para especificar-se a ordem de avaliao desejada.

6 - Estruturas de Controle
Um programa de computador uma sequncia de instrues organizadas de forma tal a produzir a soluo de um determinado problema. Naturalmente tais instrues so executadas em sequncia, o que se denomina fluxo sequencial de execuo. Em inmeras circunstncias necessrio executar as instrues de um programa em uma ordem diferente da estritamente sequencial. Tais situaes so caracterizadas pela necessidade da repetio de instrues individuais ou de grupos de instrues e tambm pelo desvio do fluxo de execuo. 25

As linguagens de programao tipicamente possuem diversas estruturas de programao destinadas ao controle do fluxo de execuo, isto , estruturas que permitem a repetio e o desvio do fluxo de execuo. Geralmente as estruturas de controle de execuo so divididas em: - Estruturas de desvio de fluxo Destinadas a desviar a execuo do programa para uma outra parte, quebrando o fluxo sequencial de execuo. O desvio do fluxo pode ocorrer condicionalmente, quando associado a avaliao de uma expresso, ou incondicionalmente. No Java dispe-se das diretivas if e switch. - Estruturas de repetio simples Destinadas a repetio de um ou mais comandos, criando o que se denomina laos. Geralmente o nmero de repeties pr-definido ou pode ser determinado pelo programa durante a execuo. No Java dispe-se da diretiva for. - Estruturas de repetio condicionais Semelhantes as estruturas de repetio simples, mas cuja repetio est associada a avaliao de uma condio sendo geralmente utilizadas quando no se conhece de antemo o nmero necessrio de repeties. No Java dispe-se das diretivas while e do while. - Estruturas de controle de erros As estruturas de controle de erros constituem uma importante contribuio a programao, pois simplifica bastante a incluso e construo de rotinas de tratamento de erros dentro do cdigo. Antes de tratarmos especificamente das estruturas de controle da linguagem necessrio colocarmos algumas definies. Formalmente as instrues de um programa so chamadas diretivas (statements). Tradicionalmente as diretivas so escritas uma aps a outra num programa e so separadas de alguma forma, por exemplo com uma quebra de linha ou um caractere de pontuao. Em Java, tal como na linguagem C/C++, as diretivas so separadas uma das outras atravs do smbolo de pontuao ; (ponto e vrgula), sendo possvel existir vrias diretivas numa mesma linha desde que separadas por um ponto e vrgula. Abaixo temos um exemplo hipottico de vrias diretivas colocadas sequenciamente: Exemplo para uma linguagem de programao qualquer: diretiva1; diretiva2; diretiva3; ... diretivaN; Como nas outras linguagens de programao, as estruturas de controle podem operar sobre diretivas isoladas (individuais) ou sobre vrias diretivas tratadas como um conjunto que denominado bloco. Um bloco em Java um grupo de diretivas delimitadas por 26

chaves ({diretivas}). Por sua vez um bloco de diretivas recebe um tratamento equivalente ao de uma nica diretiva individual. Veja abaixo estrutura para a Linguagem Java: { diretiva1; diretiva2; diretiva3; ... diretivaN; }

diretivaUnica;

6.1 - Estruturas de desvio de fluxo - if - else


Existem vrias estruturas de desvio de fluxo que podem provocar a modificao da maneira com que as diretivas de um programa so executadas conforme a avaliao de uma condio. O Java dispe de duas destas estruturas: if e switch. O if uma estrutura simples de desvio de fluxo de execuo, isto , uma diretiva que permite a seleo entre dois caminhos distintos para execuo dependendo do resultado falso ou verdadeiro resultante de uma expresso lgica. if (expresso_lgica) diretiva1; else diretiva2; // expresso cujo retorno um valor do tipo boolean // caso a condio anterior no seja satisfeita

A diretiva if permite duas construes possveis: a primeira, utilizando a parte obrigatria, condiciona a execuo da diretiva1 a um resultado verdadeiro oriundo da avaliao da expresso lgica associada; a segunda, usando opcionalmente o else, permite que seja executada a diretiva1 caso o resultado da expresso seja verdadeiro ou que seja executada a diretiva2 caso tal resultado seja falso. A seguir um exemplo de uso da diretiva if. // ExemploIfElse.java import java.io.*; public class ExemploIfElse { public static void main (String args[]) { int x=0, y=1; if ( x <= y) System.out.println(x e menor ou igual a y); else System.out.println(x e maior que y); } }

6.1.1 - O operador Condicional


Uma alternativa para o uso do if e else um operador ternrio condicional. Este operador ternrio (?:) , chamado assim porque tem trs termos como parmetro. Exemplo: 27

// ExemploIfElse2.java import java.io.*; public class ExemploIfElse2 { public static void main (String args[]) { int x=1500; System.out.println ((x>=0) ? "Numero positivo" : "Numero negativo"); } }

6.2 - Estruturas de desvio de fluxo - switch


J o switch uma diretiva de desvio mltiplo de fluxo, isto , baseado na avaliao de uma expresso ordinal escolhido um caminho de execuo dentre vrios possveis. Um resultado ordinal aquele pertencente a um conjunto onde se conhecem precisamente o elemento anterior e o posterior, por exemplo o conjunto dos nmeros inteiros ou dos caracteres, ou seja, um valor dentro de um conjunto cujos valores podem ser claramente ordenados (0, 1, 2 .... no caso dos inteiros e A, B, C... no caso dos caracteres). O switch equivale logicamente a um conjunto de diretivas if encadeadas, embora seja usualmente mais eficiente durante a execuo. A sintaxe desta diretiva a seguinte: switch (expresso_ordinal) { case ordinal1: diretiva3; break; case ordinal2: diretiva2; break; default: diretiva_default; } A expresso utilizada pelo switch deve necessariamente retornar um resultado ordinal. Conforme o resultado selecionado um dos casos indicados pela construo case ordinal. As diretivas encontradas a partir do caso escolhido so executadas at o final da diretiva switch ou at uma diretiva break que encerra o switch. Se o valor resultante no possuir um caso especfico so executadas as diretivas default colocadas, opcionalmente, ao final da diretiva switch. Note que o ponto de incio de execuo um caso (case) cujo valor ordinal aquele resultante da expresso avaliada. Aps iniciada a execuo do conjunto de diretivas identificadas por um certo caso, tais aes s so interrompidas com a execuo de uma diretiva break ou com o final da diretiva switch. A seguir temos uma aplicao simples que exemplifica a utilizao das diretivas switch e break. // exemploSwitch.java import java.util.Scanner; // Esta expresso deve ser do tipo int ou char

// usado para sair do case

28

public class ExemploSwitch { public static void main (String args[ ]) { Scanner teclado = new Scanner( System.in ); int mes; System.out.print("Informe um numero (1, 2 ou 3)"); mes = teclado.nextInt(); switch(mes) { case 1: System.out.println("Janeiro"); break; case 2: System.out.println("Fevereiro"); break; case 3: System.out.println("Marco"); break; default: System.out.println("Mes invalido."); } } }

6.3 - Estruturas de repetio simples


Como repetio simples consideramos um trecho de cdigo, isto , um conjunto de diretivas que deve ser repetido um nmero conhecido e fixo de vezes. A repetio uma das tarefas mais comuns da programao utilizada para efetuarmos contagens, para obteno de dados, para impresso etc. Em Java dispomos da diretiva for cuja sintaxe dada a seguir: for (inicializao; condio de execuo; incremento/decremento) diretiva; O for possui trs campos ou sees, todas opcionais, delimitados por um par de parntesis que efetuam o controle de repetio de uma diretiva individual ou de um bloco de diretivas. Cada campo separado do outro por um ponto e vrgula. O primeiro campo usado para dar valor inicial a uma varivel de controle (um contador). O segundo campo uma expresso lgica que determina a execuo da diretiva associada ao for, geralmente utilizando a varivel de controle e outros valores. Aps a execuo da seo de inicializao ocorre a avaliao da expresso lgica. Se a expresso avaliada como verdadeira, a diretiva associada executada, caso contrrio o comando for encerrado e a execuo do programa prossegue com o prximo comando aps o for. O terceiro campo determina como a varivel de controle ser modificada a cada iterao do for. Considera-se como iterao a execuo completa da diretiva associada, fazendo que ocorra o incremento ou decremento da varivel de controle. A seguir um exemplo de utilizao da diretiva for: import java.io.*; public class ExemploFor { public static void main (String args[ ]) { int j; for (j=1; j<=10; j++) { System.out.println(j + ); } } } 29

Se executado, o exemplo acima dever exibir uma contagem de 1 at 10 onde cada valor exibido numa linha do console.

6.4 - Estruturas de repetio condicionais - while


As estruturas de repetio condicionais so estruturas de repetio cujo controle de execuo feito pela avaliao de expresses condicionais. Estas estruturas so adequadas para permitir a execuo repetida de um conjunto de diretivas por um nmero indeterminado de vezes, isto , um nmero que no conhecido durante a fase de programao, mas que pode ser determinado durante a execuo do programa tal como um valor a ser fornecido pelo usurio, obtido de um arquivo ou ainda de clculos realizados com dados alimentados pelo usurio ou lido de arquivos. Existem duas estruturas de repetio condicionais: while e do while. O while o que chamamos de lao condicional, isto , um conjunto de instrues que repetido enquanto o resultado de uma expresso lgica (uma condio) avaliado como verdadeiro. Abaixo segue a sintaxe desta diretiva enquanto seu o comportamento ilustrado a seguir. while (expresso_lgica) diretiva; Note que a diretiva while avalia o resultado da expresso antes de executar a diretiva associada, assim possvel que diretiva nunca seja executada caso a condio seja inicialmente falsa. Um problema tpico relacionado a avaliao da condio da diretiva while o seguinte: se a condio nunca se tornar falsa o lao ser repetido indefinidamente. Um exemplo o a seguir: import java.io.*; public class ExemploFor2 { public static void main (String args[ ]) { for (int i = 0; i < 10; i = i + 1) { System.out.println(ola!); } System.out.println(acabou o for.); } } Repare que esse for poderia ser trocado por: import java.io.*; public class ExemploWhile { public static void main (String args[ ]) { int i = 0; while (i < 10) { i = i + 1; System.out.println(ola!); } System.out.println(acabou o while.); } } 30

Porm, o cdigo do for indica claramente que a varivel i serve em especial para controlar a quantidade de laos executados. Quando usar o for? Quando usar o while? Depende do gosto e da ocasio.

6.5 - Estruturas de repetio condicionais - do while


O do while tambm um lao condicional, isto , tal como o while um conjunto de instrues repetido enquanto o resultado da condio avaliada como verdadeira mas, diferentemente do while, a diretiva associada executada antes da avaliao da expresso lgica e assim temos que esta diretiva executada pelo menos uma vez. Seguem a sintaxe da diretiva do while e uma ilustrao do seu comportamento. do diretiva while (expresso_lgica); A seguir um exemplo da diretiva do while. // exemploDoWhile.java import java.io.*; public class ExemploDoWhile { public static void main (String args[ ]) { int numero=10; System.out.println(Contagem regressiva:); do { System.out.println(numero); numero--; } while (numero>0); System.out.println ("Boooooom!!!"); } }

6.6 - Controlando loops


Apesar de termos condies booleanas nos nossos laos, em algum momento podemos decidir parar o loop por algum motivo especial, sem que o resto do lao seja executado. // exemploDoWhile.java // exemploLoop1.java import java.io.*; public class ExemploLoop1 { public static void main (String args[ ]) { int x=1, y=100; for (int i = x; i < y; i++) { if (i % 19 == 0) {
System.out.println("Achei um numero divisivel por 19 entre x e y"+ i);

break; } } } } 31

O cdigo acima vai percorrer os nmeros de x a y e parar quando encontrar um nmero divisvel por 19, uma vez que foi utilizada a palavra chave break. Da mesma maneira, possvel obrigar o loop a executar o prximo lao. Para isso usamos a palavra chave continue. // exemploLoop2.java import java.io.*; public class ExemploLoop2 { public static void main (String args[ ]) { for (int i = 0; i < 20; i++) { if(i > 10 && i < 15) { continue; } System.out.println(i); } } } O cdigo acima no vai imprimir alguns nmeros. (Quais exatamente?)

6.7 - Tratamento de Excees


Uma exceo um evento que ocorre durante a execuo de um programa e que desfaz o fluxo normal de instrues. Por exemplo, tentar acessar um elemento fora dos limites de um array, tentar dividir um nmero por zero, so exemplos de excees. Um erro em Java uma condio anormal irrecupervel. Por exemplo, uma condio de erro ocorre se existe algum erro interno na JVM ou se a JVM fica sem memria. A diferena entre um erro e uma exceo que uma exceo pode ser capturada e o programa pode seguir em frente a partir dali, j quando um erro ocorre o programa necessariamente ir terminar. Quando uma exceo ocorre no interior de um mtodo Java, o mtodo cria um objeto do tipo Exception e o retorna para o sistema. Este processo chamado de disparar uma exceo. O objeto Exception contm informaes sobre a exceo, incluindo seu tipo e o estado do programa quando a exceo ocorreu. Quando uma exceo disparada, o sistema busca em seqncia na pilha todos os mtodos para tentar encontrar um capaz de tratar este tipo de exceo. Na terminologia Java o mtodo captura a exceo. Se o sistema no encontra nenhum mtodo apto a capturar a exceo, o programa inteiro termina.

6.7.1 - Manipulao de Exceptions


Uma maneira de manipular possveis erros usando as declaraes try e catch. A declarao try indica a parte do cdigo aonde poder ocorrer uma exception, sendo que para isso voc dever delimitar esta parte do cdigo com o uso de chaves. Na declarao catch voc coloca o cdigo a ser executado caso venha a ocorre uma exception. A sintaxe do try catch a seguinte: try { diretiva_normal; } 32

catch (exception1) { diretiva_de_tratamento_de erro1; } catch (exception2) { diretiva_de_tratamento_de erro2; } Para evitar esse erro o programador poderia testar de forma convencional se foram fornecidos argumentos aplicao, como no exemplo abaixo. // ExemploDividirZero.java import java.util.Scanner; public class ExemploDividirZero { public static void main (String args[]) { Scanner teclado = new Scanner (System.in); System.out.println("Digite o primeiro numero - dividendo."); int a = teclado.nextInt(); System.out.println("Digite o segundo numero - divisor."); int b = teclado.nextInt(); if (b==0) System.out.println("Voc no pode dividir um nmero por zero."); else { int c= a/b; System.out.println("A diviso do numero " + a + por + b + = + c); } } } A seguir temos uma nova verso do mesmo exemplo utilizando os comandos para tratar estas excees, utilizando de uma diretiva try - catch como abaixo:
// ExemploDividirZeroTry.java // Utilizando a classe BufferedReader import java.io.*; public class ExemploDividirZeroTry2 { public static void main (String args[]) throws java.io.IOException {
BufferedReader entr = new BufferedReader (new InputStreamReader(System.in));

try { System.out.println("Digite o primeiro numero - dividendo."); String aux = entr.readLine(); int a = Integer.parseInt(aux); System.out.println("Digite o segundo numero - divisor."); aux = entr.readLine(); int b = Integer.parseInt(aux); double c= a/b; System.out.println("A diviso do numero" + a + "por " + b + "=" + c); } catch (ArithmeticException e) { System.out.println("Voc no pode dividir um nmero por zero."); } catch (NumberFormatException e) { System.out.println("Voce digitou outros algarismos."); } } }

33

6.7.2 - Exceptions mais comuns


ArithmeticException - int i = 12 / 0 NumberFormatException - quando digitado outros algarismos ao invs de nmeros. Exception - captura todas as excees. NullPointerException - ocorre quando utilizo um objeto que no foi instanciado. NegativeArraySizeException - ocorre quando atribuido um valor nulo para um array. ArrayIndexOutOfBoundsException - ocorre quando tento acessar um elemento do array que no existe.

7 - Pacotes do Java
Um pacote (package) em Java nada mais do que um diretrio onde residem uma ou mais classes ou seja, um conjunto de classes. Existem muitos objetos prontos que a linguagem Java nos proporciona. Como todos os objetos, eles podem conter dados e tem vrios mtodos para que possamos us-los. importante para um programador Java conhecer o mximo desses objetos que puder; eles facilitam o trabalho na medida que evitam que nos tenhamos o trabalho de inventar algo que j est pronto. Em Java, quando voc quer usar algum de pacotes do Java, voc usa a declarao de importao para contar para o compilador onde achar as classe que voc vai usar. A declarao de importao (import) deve preceder a declarao de todas as classes. Assim, um import java.util.*; quer dizer: "eu vou utilizar alguns objetos do pacote java.util". Um programa pode ter tantos import quanto necessrio.

7.1 - Classe String


Como em muitas linguagens de programao, Strings so usadas extensivamente em programas Java o que fez com que a API do Java disponibiliza-se a classe String para ajudar na manipulao deste tipo de dado. Ela faz parte do pacote java.lang, o qual automaticamente importado em todas as classes java.

7.1.1 - Operaes com a Classe String


A classe String disponibiliza inmeros mtodos para realizarmos operaes sobre ela. Todas as operaes no modificam a String original. Alguns delas so: length() - Informa o tamanho de uma String, ou seja, quantos caracteres ela possui. Exemplo: O trecho de cdigo abaixo vai imprimir o nmero 7 na tela. String S = ABACAXI; System.out.println(S.length()); charAt() - Informa qual o caractere est numa determinada posio. Exemplo: O trecho de cdigo abaixo vai imprimir a letra R na tela. String S = ACEROLA; System.out.println(S.charAt(3)); equals() - Compara duas Strings pela igualdade. Exemplo: O trecho de cdigo abaixo vai imprimir false na tela. String S = ACEROLA; System.out.println(S.equals(ABACAXI)); 34

contains() - Informa se uma String contm determinada sequncia de caracteres. Exemplo: o trecho de cdigo abaixo vai imprimir true na tela. String S = ABACAXI; System.out.println(S.contains(ABA)); concat() - Concatena duas Strings. Exemplo: O trecho de cdigo abaixo vai imprimir ABACAXIACEROLA na tela. String S = ABACAXI; System.out.println(S.concat(ACEROLA)); equalsIgnoreCase() - Compara duas Strings pela igualdade ignorando se foi digitado maiscula ou minscula. Exemplo: O trecho de cdigo abaixo vai imprimir true na tela. String S = ACEROLA; System.out.println(S.equalsIgnoreCase (acerola));

7.1.2 - Converso de String para nmeros


Com exceo da classe Scanner, todas as entradas so consideradas como da Classe String. Portanto, havendo necessidade de realizar clculos numricos, necessrio converter para algum dos tipos primitivos numricos, como abaixo: int valor1 = Integer.parseInt (10); float valor2 = Float.parseFloat (10.00); float valor3 = valor1+ valor2;

7.2 - Classe Math


A classe Math prove mtodos de classe que executam vrias funes matemticas, como funes trigonomtricas e logaritmos. Essa biblioteca tem dezenas de operaes especficas. Para utiliz-la no necessrio dar a instruo de import, pois ela tambm faz parte do pacote java.lang, o qual automaticamente importado em todas as classes java. Exemplos: Math.sqrt(); // retorna a raiz quadrada do numero passado. Math.pow (x, b); // retorna a potncia de Xb Math.PI (); // retorna o valor constante do nmero Pi. Math.max(a,b); // retorna o maior valor entre a e b Math.random(); // retorna um numero aleatrio que vai de 0 at 1 (0 incluido, 1 nunca ser gerado)

8 - Arrays
Dentro de um bloco, podemos declarar variveis e us-las. int idade1; int idade2; int idade3; ... int idade9; int idade10; 35

Quando so criadas mais de uma varivel, para armazenar um mesmo tipo de informao com um mesmo tipo de dados, poderia ser substitudo por um array. O Exemplo acima poderia ser substitudo por: int [ ] idades; O int [ ] um tipo. Um array sempre um objeto, portanto, a varivel idades uma referncia. Vamos precisar criar um objeto para poder usar o array. Como criamos o objeto-array? idades = new int[10]; Aqui o que fizemos foi criar uma array de int de 10 posies, e atribuir o endereo o qual ela foi criada. Agora podemos acessar e atribuir valores dentro de cada posio do array. idades[5] = 10; O cdigo acima altera a sexta posio do array. No Java, os ndices do array vo de 0 a n-1, onde n o tamanho dado no momento que voc criou a array. Se voc tentar acessar uma posio fora desse alcance, um erro ocorrer durante a execuo.

8.1 - Caractersticas de um array


Um array til quando queremos agrupar objetos do mesmo tipo. Possui as seguintes caractersticas: - Todos os elementos devem ser do mesmo tipo - Cada elemento pode armazenar um nico item - Os itens podem ser primitivos ou referncias a objetos - O tamanho do array fixado quando de sua criao Arrays em Java so objetos que podem ser passados e acoplados a outros objetos. Arrays podem conter qualquer tipo de elemento valorado (tipos primitivos ou objetos), mas voc no pode armazenar diferentes tipos em um simples array. Ou seja, voc pode ter um array de inteiros, ou um array de Strings, ou um array de array, mas voc no pode ter um array que contenha ambos os objetos Strings e inteiros. A restrio acima descrita significa que os arrays implementados em Java so genricos homogneos, ou seja, um nico array pode armazenar qualquer tipo de objeto com a restrio que todos sejam da mesma categoria.

8.2 - Arrays de Primitivos


Para criar um array de primitivos, necessrio:

8.2.1 - Declarar o array


Exemplo: int [ ] idades; 36

8.2.2 - Criar efetivamente o array


Um array deve ser criado com o uso do operador new e seu tamanho deve ser fixado dentro dos colchetes. O tamanho deve ser um inteiro, mas no precisa ser uma constante, pode ser tambm uma expresso que retorna um inteiro. Exemplo: idades = new int[10]; Quando um array de primitivos criado, seus automaticamente com valores padro da seguinte forma: char: \u0000 (Valor Unicode para 0000) byte, short, int e long: 0 boolean: false float e double: 0.0 elementos so inicializados

8.2.3 - Inicializar os elementos do array


Duas formas:

8.2.3.1 - Atribuindo valores para cada elemento do array


Exemplo: idades [0] = 15; Sintaxe: tipodados [ ] nomearray; ou tipodados nomearray [ ]; idades aponta para null at que seja inicializado com operador new. int [ ] idades; idades = new int[4]; Sintaxe: nomearray [indice] = valor; O ndice de um array inicia em 0. Cada elemento inicializado com o valor 0.

8.2.3.2 - Usando inicializadores:


Exemplo: int [ ]idades = {2, 2, 3, 5, 7, 15, 22, 35, 80, 81};

8.4 - Percorrendo uma array


Percorrer uma array muito simples quando fomos ns que a criamos: 37

Declarar um vetor com 10 posies j inicializadas com valores de 1 a 10 e apresente em tela este mesmo vetor: public class Array1 { public static void main (String args [ ]) { int[ ] numeros1a10 = {1,2,3,4,5,6,7,8,9,10}; for (int i =0; i < numeros1a10.length; i++) { System.out.println( " Conteudo do Array " + numeros1a10 [i]); } } } Um outro exemplo, o que este faz ? public class Array2 { public static void main(String args[]) { int[] idades = new int[10]; for (int i = 0; i < 10; i++) { idades[i] = i * 10; } for (int i = 0; i < 10; i++) { System.out.println (idades[i]); } } }

8.5 - Arrays no podem mudar de tamanho


A partir do momento que uma array foi criada, ela no pode mudar de tamanho. Se voc precisar de mais espao, ser necessrio criar uma nova array, e antes de se referenciar para ela, copie os elementos da array velha.

8.6 - Arrays e Excees


Um dos motivos de dizermos que Java uma linguagem robusta e segura devido a forma de como ela trata de acessos ilegais em arrays. Iremos estudar excees com mais detalhes no prximo captulo, porm vamos aproveitar para dar uma olhada em duas excees relacionadas a arrays. A primeira trata-se da ArrayIndexOutOfBoundsException, que ocorre quando tenta-se acessar uma posio invlida do array. A segunda, NullPointerException, ocorre quando tenta-se acessar um elemento que ainda no foi inicializado.

8.7 - Um pouco mais...


1-) Arrays podem ter mais de uma dimenso. Isto , em vez de termos uma array de 10 contas, podemos ter uma array de 10 por 10 contas, e voc pode acessar a conta na posio da coluna x e linha y. Na verdade, uma array bidimensional em Java uma array de arrays. 2-) Uma array bidimensional no precisa ser retangular, isto , cada linha pode ter um nmero diferente de colunas. 38

9 - Concluso
Este semestre teve como principal objetivo treinar o conhecimento de Lgica de Programao utilizando a linguagem Java, nos tpicos que abrangem a parte estruturada da linguagem, seqncia, deciso e iterao. No prximo semestre, ser abordado os grandes conceitos da linguagem Java, a partir da Programao Orientada Objeto - POO. O estudo sobre Arrays ser superaprofundando, com o conceito de matrizes, e posteriormente ser estudado mecanismos para classificar e pesquisar os dados nos arrays... Conhea a ementa das prximas disciplinas do eixo.

9.1 - Ementa da Paulistana - Eixo Programao


Semestre Nome da Ementa disciplina 3 Programao Uso de uma linguagem de programao, aprofundando os II conhecimentos de dados estruturados (vetores, matrizes, registros), variveis dinmicas, ponteiros, subprogramas. Parmetros. Variveis locais e globais. Conceito de abstrao. Programao Estruturada e Modular. Refinamentos Sucessivos. Manipulao de arquivos. 3 Estrutura de Tipos de dados abstratos. Dados estruturados. Dados Representao e manipulao de listas lineares, rvores e grafos. Aplicaes de Estruturas de dados. 4 Programao Modelos de linguagens de programao. Conceitos e prtica III de programao funcional e baseada em lgica. Programao orientada a objetos: implementao de classe-objetos, herana, polimorfismo, comunicao e associao. Implementao de interface humana e de armazenamento de dados orientados a objetos. Uso de linguagem de programao orientada a objetos 4 Classificao Mtodos de ordenao: seleo, troca, distribuio, insero, e Pesquisa intercalao e clculo de endereos. Pesquisa de dados: de Dados seqencial, binria, hashing, rvores de pesquisa, rvores binrias de pesquisa, rvores AVL, rvores Patricia, B-tres. Organizao de arquivos. Estudo da complexidade dos mtodos apresentados. importante lembrar que a melhor maneira de aprender uma linguagem treinando, por isso os laboratrios que foram desenvolvidos auxiliaram a que todos para que pudessem utilizar os conceitos transmitidos nesta apostila. Deseja-se boa sorte a todos os colegas, futuros profissionais da rea de Sistemas de Informao !!! Contato - Prof. Me. Fbio Magalhes E-mail: f.magalhaes@unifesp.br

39

Sumrio
1 - Introduo disciplina de Programao I ................................................................2 2 - Linguagem de programao ......................................................................................2 2.1 - Tipos de traduo: Interpretao e Compilao.........................................................2 2.2 - Programador ..............................................................................................................3 2.3 - Organizao e Classificao das Linguagens de Programao ................................3 2.3.1 - Quanto ao paradigma de programao...................................................................3 2.3.2 - Quanto a estrutura da tipos .....................................................................................3 2.3.3 - Pelo grau de abstrao ...........................................................................................3 2.3.4 - Pela gerao ...........................................................................................................4 2.4 - Programao estruturada...........................................................................................4 2.5 - Orientao a objeto ....................................................................................................4 2.6 - Conhecendo algumas linguagens de programao ...................................................4 2.6.1 - Assembly.................................................................................................................5 2.6.2 - Fortran.....................................................................................................................5 2.6.3 - Pascal......................................................................................................................5 2.6.4 - Cobol .......................................................................................................................5 2.6.5 - C..............................................................................................................................6 2.6.6 - C++..........................................................................................................................6 2.7 - Sistema de implementao Hbrido (ou tipo de traduo: Hbrido) ............................6 3 - A Linguagem Java.......................................................................................................7 3.1 - Histrico .....................................................................................................................7 3.2 - Verses do Java.........................................................................................................8 3.3 - O Java hoje ................................................................................................................8 3.4 - Plataforma Java .........................................................................................................9 3.5 - Kit de Desenvolvimento Java - Java Developers Kit ...............................................10 3.6 - O Ambiente Java ......................................................................................................10 3.7 - Caractersticas da linguagem ...................................................................................11 3.8 - Produtos e Terminologias da Tecnologia Java.........................................................12 3.9 - Primeiro Exemplo .....................................................................................................13 3.10 - Explicao passo a passo do programa exemplo ..................................................13 3.11 - Sintaxe da linguagem Java ....................................................................................15 3.11.1 - Nomes de arquivos..............................................................................................15 3.11.2 - Outras regras de sintaxe .....................................................................................15 3.11.3 - Comentrios ........................................................................................................15 4 - Tipos de Dados primitivos, variveis e constantes ...............................................16 4.1.1 - Tipos de Dados Inteiros (byte, short, int e long) ....................................................16 4.1.2 - Tipo de Dados em Ponto Flutuante .......................................................................16 4.1.3 - Tipo de Dados Caractere ......................................................................................17 4.1.4 - Tipo de Dados Lgico............................................................................................17 4.2 - Variveis...................................................................................................................17 4.2.1 - Denominao de Variveis....................................................................................18 4.2.2 - Declarao de variveis ........................................................................................18 4.2.3 - Inicializao de variveis.......................................................................................19 4.3 - Constantes ...............................................................................................................19 4.4 - Converses entre tipos primitivos de dados.............................................................20 4.4.1 - Casos no to comuns de casting e atribuio .....................................................21 4.5 - Palavras reservadas.................................................................................................21 5 - Operadores ................................................................................................................22 5.1 - Operador de Atribuio ............................................................................................22 5.2 - Operadores Aritmticos............................................................................................22 40

5.2.1 - Pr-incremento ......................................................................................................23 5.2.2 - Ps-Incremento .....................................................................................................23 5.2.3 - Diferena entre o Pr-Incremento e o Ps-Incremento: ........................................23 5.3 - Operadores Relacionais ...........................................................................................24 5.4 - Operadores Lgicos .................................................................................................25 5.5 - Precedncia de Avaliao de Operadores ...............................................................25 6 - Estruturas de Controle..............................................................................................25 6.1 - Estruturas de desvio de fluxo - if - else.....................................................................27 6.1.1 - O operador Condicional.........................................................................................27 6.2 - Estruturas de desvio de fluxo - switch ......................................................................28 6.3 - Estruturas de repetio simples ...............................................................................29 6.4 - Estruturas de repetio condicionais - while ............................................................30 6.5 - Estruturas de repetio condicionais - do while .......................................................31 6.6 - Controlando loops ....................................................................................................31 6.7 - Tratamento de Excees..........................................................................................32 6.7.1 - Manipulao de Exceptions...................................................................................32 6.7.2 - Exceptions mais comuns.......................................................................................34 7 - Pacotes do Java ........................................................................................................34 7.1 - Classe String ............................................................................................................34 7.1.1 - Operaes com a Classe String............................................................................34 7.1.2 - Converso de String para nmeros.......................................................................35 7.2 - Classe Math .............................................................................................................35 8 - Arrays .........................................................................................................................35 8.1 - Caractersticas de um array .....................................................................................36 8.2 - Arrays de Primitivos..................................................................................................36 8.2.1 - Declarar o array.....................................................................................................36 8.2.2 - Criar efetivamente o array .....................................................................................37 8.2.3 - Inicializar os elementos do array ...........................................................................37 8.2.3.1 - Atribuindo valores para cada elemento do array ................................................37 8.2.3.2 - Usando inicializadores:.......................................................................................37 8.4 - Percorrendo uma array.............................................................................................37 8.5 - Arrays no podem mudar de tamanho .....................................................................38 8.6 - Arrays e Excees ...................................................................................................38 8.7 - Um pouco mais... .....................................................................................................38 9 - Concluso ..................................................................................................................39 9.1 - Ementa da Paulistana - Eixo Programao..............................................................39 Sumrio ...........................................................................................................................40 Anexo - Bibliografia........................................................................................................42 Anexo - Listas de Exerccios .........................................................................................43 1 Lista de Exerccios..................................................................................................... 43 2 Lista de Exerccios..................................................................................................... 44 3 Lista de Exerccios..................................................................................................... 45 4 Lista de Exerccios..................................................................................................... 46 5 Lista de Exerccios..................................................................................................... 46 6 Lista de Exerccios..................................................................................................... 47 7 Lista de Exerccios..................................................................................................... 47 8 Lista de Exerccios..................................................................................................... 48 9 Lista de Exerccios..................................................................................................... 48 10 Lista de Exerccios................................................................................................... 49 11 Lista de Exerccios................................................................................................... 49 Trabalho de Prticas Investigativas..............................................................................50

41

Anexo - Bibliografia
Bibliografia bsica recomendada: Puga, S., Rissetti, G. Lgica de programao e estruturas de dados - com aplicaes em Java. So Paulo: Prentice Hall, 2004. Rodrigues Filho, R. Desenvolva Aplicativos com Java 2. So Paulo: rica, 2005. Bibliografia complementar: Deitel, H.M.; Deitel P. J. Java como Programar. So Paulo: Pearson Education, 2005. Furgeri, S.; Java 2 Ensino Didtico. So Paulo: rica, 2002. Lopes, A., Garcia, G.: Introduo Programao - 500 Algoritmos resolvidos. Rio de Janeiro: Campus, 2002. Apostilas consultadas para confeco desta apostila: Braz, C. C. M. Introduo Linguagem Java. Disponvel em http://www.apostilando.com Cesta, A. A. Tutorial: A Linguagem de Programao Java. Instituto de Computao UNICAMP - disponvel em http://www.apostilando.com Costa, H. F. D.; Mesquita, I. J, A Linguagem JAVA - Universidade Federal do Maranho Centro de Cincias Exatas e Tecnologia - CCET - Curso de Cincia da Computao Disciplina de Compiladores I, 2001 - disponvel em http://www.apostilando.com GrupoPET - Informtica. Apostila http://www.geekbrasil.com.br de JAVA Geek Brasil disponvel em

JANDL, P. Jr. Introduo ao Java. So Paulo, SP: Universidade So Francisco - Ncleo de Educao a Distncia, 1999 - disponvel em http://www.apostilando.com Mengue, F. Curso de Java Bsico. Centro de Computao - UNICAMP - disponvel em http://www.apostilando.com Silveira, G, Silveira, P; Lopes S. Java e Orientao a Objetos - Caelum - disponvel em http://www.caelum.com.br Outros sites: Coleo completa do Alo Mundo em 278 linguagens de programao: http://www.roesler-ac.de/wolfram/hello.htm Mapa colorido da Genealogia das principais linguagens de programao: http://www.digibarn.com/collections/posters/tongues Mapa mais completo da Genealogia das http://www.levenez.com/lang/history.html Revistas e foruns em portugus: http://www.guj.com.br www.portaljava.com.br http://www.mundojava.com.br principais linguagens de programao:

42

Anexo - Listas de Exerccios


As Listas de Exerccios comporo 30% da Nota de Eficincia. O prazo de entrega dever ser cuidadosamente respeitado. Aps uma semana de atraso no ser contabilizada nota. A entrega ser sempre individual. Cada exerccio dever conter comentrios, conforme abaixo: // Programao I - Prof. Fbio // Turma 2A // Joozinho da Silva // Laboratrio 1 // Exerccio 1

1 Lista de Exerccios
EXEMPLOS Abaixo temos um programa em Java que imprime a mensagem ALO MUNDO na Tela do computador: public class AloMundo { public static void main(String args[ ]) { System.out.println("Alo Mundo"); } } Abaixo temos um programa em Java que calcula a rea de um tringulo de base = 4 e altura = 3, sendo area = base * altura / 2 public class AreaTri { public static void main(String args[ ]) { float base = 4, altura= 3; float area = base * altura / 2; System.out.print("A Area do triangulo e igual a "); System.out.println(area); } } EXERCCIOS 1 - Modifique o programa AloMundo para imprimir o seu nome em uma linha e o sobrenome na linha de baixo. 2 - Faa um programa em Java que cria um varivel inteira a = 9. Calcule e imprima o seu dobro. 3 - Dadas as variveis a = 3 e b = 4, faa um programa em Java que calcule e imprima a Soma, Subtrao, Multiplicao e Diviso dessas variveis

43

2 Lista de Exerccios
EXEMPLOS // Operadores aritmticos em Java public class Aritmetica { static public void main (String args[]) { // Declaracao e inicializacao de duas variaveis int a = 5; int b = 2; // Varios exemplos de operacoes sobre variaveis System.out.println("a = " + a); System.out.println("b = " + b); System.out.println("-b = " + (-b)); System.out.println("a + b = " + (a + b)); System.out.println("a - b = " + (a - b)); System.out.println("a * b = " + (a * b)); System.out.println("a / b = " + (a / b)); System.out.println("(float) a / b = " + ((float)a / b)); System.out.println("a % b = " + (a % b)); System.out.println("a++ = " + (a++)); System.out.println("--b = " + (--b)); System.out.println("a = " + a); System.out.println("b = " + b); } } // Operadores relacionais em Java import java.io.*; public class Relacional { static public void main (String args[]) { int a = 15; int b = 12; System.out.println("a = " + a); System.out.println("b = " + b); System.out.println("a == b -> " + (a == b)); System.out.println("a != b -> " + (a != b)); System.out.println("a < b -> " + (a < b)); System.out.println("a > b -> " + (a > b)); System.out.println("a <= b -> " + (a <= b)); System.out.println("a >= b -> " + (a >= b)); } } EXERCCIOS 1 - Crie um programa que gere a sua idade daqui h um ano. Voc dever inicializar uma varivel com sua idade atual. (No haver entrada de dados). 2 - Faa um programa em Java que cria um varivel a = 10 e b = 3. Calcule a diviso de a/b. Faa o teste com todos os tipos de variveis numricas para verificar a diferena entre as mesmas. O programa dever apresentar estas diversas possibilidades.

44

3 - Dado o raio = 10, calcule a rea da circunferncia. Usar uma constante com o valor de Pi.

3 Lista de Exerccios
EXEMPLOS // Alternativas para entrada de dados em Java modo texto utilizando a classe Scanner import java.util.Scanner; public class Leitura { public static void main( String args [ ]) { Scanner teclado = new Scanner( System.in ); String nome; int idade; System.out.print("Informe seu nome: "); nome = teclado.nextLine(); System.out.print("Informe sua idade: "); idade = teclado.nextInt( ); System.out.println("\nOi " + nome + "!"); System.out.println("Voce tem " + idade + " anos"); } } // Alternativas para entrada de dados em Java modo texto utilizando a classe Streams import java.io.*; public class testaentrada { public static void main( String args [ ]) throws java.io.IOException {
BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in));

String nome,aux; int idade; System.out.print("Informe seu nome: "); nome = teclado.readLine(); System.out.print("Informe sua idade: "); aux = teclado.readLine(); idade = Integer.parseInt(aux); System.out.println("\nOi " + nome + "!"); System.out.println("Voce tem " + idade + " anos"); } } EXERCCIOS 1 - Faa um programa em Java que calcule e imprima a Soma, Subtrao, Multiplicao e Diviso de 2 variveis numero1 e numero2. 2 - Calcular e apresentar o valor do volume de uma lata de leo, utilizando a frmula: volume = PI * raio * raio * altura. O valor do PI uma constante e o raio e a altura devem ser digitados pelo usurio.

45

3 - Faa um algoritmo que leia a idade de uma pessoa em anos, meses e dias e mostre-a expressa em dias. (Nota: considere todos os anos com 365 dias e todos os meses com 30 dias).

4 Lista de Exerccios
1 - Programa mdulo de um nmero Efetuar a leitura de um valor positivo ou negativo e apresentar o nmero lido como sendo um valor positivo, ou seja, o programa dever apresentar o mdulo de um nmero fornecido. Lembre-se de verificar se o nmero fornecido menor que zero, sendo multiplique-o por -1. ___________________________________________ Digite um nmero: ______________ O mdulo deste nmero : ______________ ___________________________________________ 2 - Tendo como dados de entrada a altura e o sexo (M ou F) de uma pessoa, construa um algoritmo para calcular seu peso ideal, utilizando as seguintes frmulas: - Para Homens: ( 72.7 * altura ) - 58 - Para Mulheres: ( 62.1 * altura) - 44.7. 3 - Ler 2 valores referentes a notas escolares de um aluno. Imprimir uma mensagem dizendo que o aluno foi aprovado, se o valor da mdia for maior ou igual a 7. Solicitar a nota do exame final caso o contrrio, e somar com o valor da mdia anterior e obter a nova mdia. Se a nova mdia for maior ou igual a 5, apresentar uma mensagem que o aluno foi aprovado em exame. Se o aluno no foi aprovado, indicar uma mensagem informando esta condio. Apresentar com as mensagens de tela, o valor da mdia do aluno, para qualquer condio.

5 Lista de Exerccios
1 - Programa Brasileiro ou Argentino ou de outro pas ? Voc pede para a pessoa digitar 1 (se for brasileiro) ou 2 (se for argentino) ou 3 (se for de outro pas). Caso a pessoa tenha digitado 1 - o programa exibir uma mensagem dizendo: Sim, voc Brasileiro. Caso a pessoa tenha digitado 2 - o programa exibir uma mensagem dizendo: Sim, voc argentino. Caso a pessoa tenha digitado 3 - o programa exibir uma mensagem dizendo: Sim, voc Estrangeiro. Caso a pessoa no digite nenhuma das duas opes, voc fornece a seguinte mensagem: Voc digitou uma opo errada. 3 - Efetue o clculo do reajuste de salrio de um funcionrio. Considere que o funcionrio dever receber um reajuste de 15% caso seu salrio seja menor que R$ 500,00. Se o salrio for maior ou igual a R$ 500,00 mas menor ou igual a R$ 1000,00, seu reajuste ser de 10%. Caso seja ainda maior que R$ 1000,00, o reajuste dever ser de 5%. 3 - Elaborar um programa que pergunte ao usurio a sua idade. 46

De acordo com a idade do usurio, o programa deve imprimir se criana, adolescente, jovem, adulto ou idoso. Idade 0 - 11 12 - 16 17 - 25 26 - 55 55 em diante Classificao Criana Adolescente Jovem Adulto Idoso

6 Lista de Exerccios
1 - Apresentar os quadrados dos nmeros inteiros de 15 a 200. 2 - Apresentar todos os nmeros divisveis por 4 que sejam menores que 200. Para verificar se o nmero divisvel por 4, efetuar dentro da malha a verificao lgica desta condio com a instruo se, perguntando se o nmero divisvel, sendo, mostre-o, no sendo, passe para o prximo passo. A varivel que controlar o contador dever ser iniciada com valor 1. 3 - Apresentar os resultados de uma tabuada de um nmero qualquer. Esta dever ser impressa no seguinte formato: Considerando como exemplo o fornecimento do nmero 2 2x1= 2 2x2= 4 2x3= 6 (...) 2x10=20 4 - Calcule o valor aproximado de PI usando a seguinte seqncia: PI = 4 - 4/3 + 4/5 - 4/7 + 4/9 - 4/11 + ... (O nmero de termos ser informado pelo usurio)

7 Lista de Exerccios
1 - Ler um certo nmero de idades at ser digitada a idade 0 (zero). No final informar a quantidade de entradas, a quantidade de idades menores que 18 e a mdia das idades. 2 - Elaborar um programa que apresente no final o somatrio dos valores pares existentes na faixa de 1 at 500, com exceo dos nmeros 5, 10, 100, 200 e 250. 3 - Em uma eleio presidencial, existem dois candidatos. Os votos so informados atravs de cdigos, de acordo com a seguinte conveno: 1, 2 = voto para os respectivos candidatos; 3 = voto nulo; 4 = voto em branco; 0 = finalizador do conjunto de votos. Elabore um programa Java que leia os dados, calcule e escreva: - Total de votos; - Total de votos para cada candidato; - Total de votos nulos; - Total de votos em branco; - Percentual dos votos em branco e nulos sobre o total; - Candidato vencedor, se houver. 47

8 Lista de Exerccios
1 - Escreva um programa que apresente a srie de Fibonacci at a quantidade de termos escolhidos pelo usurio. A srie de Fibonacci formada pela seqncia: 1,1, 2, 3, 5, 8, 13, 21, 34,... etc. Esta srie se caracteriza pela soma de um termo posterior com o seu anterior subseqente. 2 Para este exerccio: a Usar tratamento de Excees e a Classe BufferedReader para entrada de dados. Dever ser tratada pelo menos uma exceo. b Dever ser criado um nico programa com todas as caractersticas abaixo citadas. c - Montar algoritmo que pea ao usurio escolha uma senha. A senha poder conter letras e nmeros. Pea que ele digite novamente para confirmar. Avise o usurio que ele vai precisar repetir de novo a senha e confirmar novamente. d Permitir ao usurio que a confirmao da senha possa ser digitado maiscula do que minscula ou vice-versa. Exemplo: Se digitar elefante, e ao confirmar tiver digitado ELEFANTE, a senha dever ser aceita. e Verificar agora, que a senha tem no mnimo 4 posies at 6 posies. Neste caso, alerte o usurio do problema, e pea para digitar novamente. f Ao final apresentar o 1 caractere da senha digitada pelo usurio. g Verificar se existe o caractere a, e informar que foi encontrado esse caractere.

9 Lista de Exerccios
EXEMPLOS // UsandoClasseString.java import java.io.*; public class UsandoClasseString { public static void main (String args[]){ String S = ABACAXI; System.out.println(Numero de caracteres: + S.length()); System.out.println(Qual a letra na posio 4? + S.charAt(3));
System.out.println(A palavra + S + igual a palavra abacaxi ? + S.equals(ABACAXI));

System.out.println(A palavra + S + contm aba ? + S.contains(ABA)); System.out.println(Concatenando a palavra + S + com a palavra ACEROLA fica sendo + S.concat(ACEROLA)); System.out.println(A palavra + S + em maisculas, igual a palavra abacaxi em minsculas ? + S.equalsIgnoreCase (abacaxi)); } } Escreva um programa que gere um nmero aleatrio entre 0 e 99 // Aleatorio.java public class Aleatorio { static public void main (String args[]) { double a; a=(Math.random()*100); int b=(int) a; System.out.println(Um numero aleatorio entre 0 e 99 = + b); } } 48

EXERCCIOS 1 - Ler uma String e imprimir suas letras uma a uma. 2 - Ler uma String e informar quantas vogais ela possui. 3 - Ler uma String A, criar uma String B que o inverso de A e Informar se A palndroma. (Uma palavra palndroma aquela que apresenta a mesma grafia quando lida a partir do incio ou de trs para diante; exemplo: RIR, SOLOS, ASA, RALAR, AMA. O programa deve utilizar uma funo booleana para verificar se uma palavra identificada no texto palndroma. A sada do programa deve ser uma tabela listando as palavras identificadas e, para cada uma, a mensagem dizendo se ou no palndroma.) 4 - Elaborar um programa que apresente o valor de uma potncia de uma base qualquer elevada a um expoente qualquer, ou seja, de NM. 5 - Escreva um programa que gere um nmero aleatrio entre 1 e 100, o apresente e classifique como par ou mpar, alm de apresentar sua raiz quadrada.

10 Lista de Exerccios
1 - Criar um vetor do tipo inteiro com 10 elementos, inicializar cada elementos com o valor de seu prprio ndice e, logo aps, imprimi-lo 2 - Criar um vetor de 100 posies e inicializar os elementos de ndices pares com o valor 0 (zero) e os de ndices mpares com o valor 1(um) 3 - Criar um vetor de 15 elementos do tipo inteiro e inicializar os elementos com o valor do dobro de seu ndice. Imprimir. 4 - Criar um vetor de 20 elementos do tipo inteiro e inicializar os elementos de ndices pares com o valor 0(zero) e os de ndices mpares com o valor 1(um). Dica: uma das maneiras de fazer isso usando o operador de resto da diviso (%). Imprimir.

11 Lista de Exerccios
Para estudo no precisa entregar 1 - Leia o valor do salrio mnimo e o valor do salrio de uma pessoa. Calcular e imprimir quantos salrios mnimos ela ganha. 2 - Leia uma quantidade de chuva dada em polegadas e imprima o equivalente em milmetros (25,4 mm = 1 polegada). 3 - Ler doze nmeros inteiros. Calcule e apresente a mdia entre eles. Utilizar Estrutura de Repetio. 4 - Criar um vetor de 5 elementos do tipo char. Solicitar ao usurio para informar os elementos e depois criar um segundo vetor de mesmo tipo e dimenso, mas com a ordem inversa dos elementos. Imprimir. 5 - Criar 2 vetores inteiros de 3 posies com valores que o usurio digitar. Somar os seus elementos e armazenar o resultado em um terceiro vetor. Imprimir.

49

Trabalho de Prticas Investigativas


Tema: Mercado de trabalho em programao Java e outras reas de Tecnologia da Informao O que a Prtica Investigativa? De forma a consolidar o aprendizado de mtodos e procedimentos cientficos, bem como desenvolver o esprito de pesquisa junto aos discentes, pelo menos uma disciplina por semestre letivo destacada a partir de discusso colegiada para a execuo de prticas investigativas. Tais prticas referem-se construo de pequeno trabalho de pesquisa, apoiado em procedimentos consagrados de pesquisa, sobre tema relacionado ao contedo trabalhado durante o semestre letivo. Tal poltica articula-se ao Trabalho de Concluso de Curso, contribuindo para o desenvolvimento de habilidades e competncias necessrias para sua execuo, alm de enriquecer o processo de formao de identidade profissional, posto que permite ao discente, opes quanto a objetos de estudo e de referncias tericas. Como ser realizado este trabalho neste 2 semestre? O trabalho ser realizado em grupos de 5 a 6 alunos da mesma turma, utilizando o tema: Mercado de trabalho em programao Java e outras reas de Tecnologia da Informao. Dever conter os elementos necessrios para a elaborao de projetos de pesquisa discutidas na disciplina de Metodologia Cientfica, como capa, ndice, introduo, objetivos, bibliografia consultada. O contedo deste trabalho dever conter em sua parte terica o material pesquisado a fim de atingir o tema proposto, e ao final do trabalho dever conter as concluses do grupo sobre o tema. Este trabalho compor 30% da Nota de Eficincia - NE. Estrutura do trabalho sobre Prticas Investigativas: A - Capa: Dever constar: Trabalho sobre Prticas Investigativas X semestre - ano letivo 200X Disciplina de Programao I Logotipo da Faculdade Paulistana Tema: Mercado de trabalho em programao Java e outras reas de Tecnologia da Informao Turma 2A Nomes completos de cada componente do grupo B - Pginas preliminares: ndice Lista de figuras / tabelas (opcional) Lista de abreviaturas (opcional) 50

C - Introduo: Apresentao do problema a ser investigado, a fim de justificar a pesquisa (o tema: Mercado de trabalho em programao Java e outras reas de Tecnologia da Informao). Deve incluir os objetivos propostos, alm de uma pequena Introduo a fim de situar o leitor sobre a temtica do trabalho. Mnimo: 1 pgina. Mximo: 3 pginas. D - Referencial terico: O grupo dever responder e / ou justificar as seguintes questes abaixo, citando o(s) autor(es) de onde pesquisou. Seguem alguns questionamentos a serem respondidas neste trabalho, porm no adotar o formato pergunta e resposta, e sim, montar tpicos para cada um dos assuntos abordados, na ordem e da forma que o grupo quiser: 1 - Quais so reas de Tecnologia da Informao que tem tido maior procura pelo mercado? Quais so as perspectivas do mercado de trabalho para os prximos anos? 2 - Qual o perfil dos profissionais que o mercado de trabalho atualmente procura? Qual a importncia dos idiomas? 3 - O mercado procura profissionais de TI com viso de negcios / administrao? Qual a importncia de conhecer seu segmento? 4 - Qual a importncia dos cursos de reciclagem / aperfeioamento para o profissional desta rea? Descrever as diversas opes para quem est concluindo uma faculdade, quem se formou recentemente, para quem j est atuando h mais tempo, e para quem est desatualizado. 5 - Qual a importncia do ambiente Java neste cenrio nacional? Por que o Java tem sido to procurado pelo mercado? 6 - Por que um desafio encontrar mo-de-obra qualificada (Sniors) para trabalhar com Java? 7 - Como se faz para se tornar um profissional qualificado em Java? 8 - Quais so as aplicaes do Java? Quais outras reas promissoras para a linguagem Java? 9 - Quais so as expectativas salariais para o profissional Java? E em outras reas da TI? 10 - Quais so os maiores desafios para continuar sempre sendo um bom profissional da rea de TI? Mnimo: 5 pginas. Mximo: 10 pginas. E - Discusses e concluses: Concluses do grupo sobre o assunto em questo. Alm dos alunos do grupo estarem se preparando para o mercado de trabalho, cursando o curso de Sistemas de Informao, atravs desta pesquisa se conclui que muitas outras exigncias so necessrias para se tornar um bom profissional. Cite quais so estas principais exigncias, o que o grupo j est fazendo, e pretende fazer para que, alm do diploma de bacharel em Sistemas de Informao, se torne este bom profissional ? O que cada um pretender fazer aps concluir o curso ? Mnimo: 2 pginas. Mximo: 3 pginas. F - Bibliografia: Aps a concluso, devero constar os livros / artigos / materiais didticos consultados e citados no trabalho, sendo que pelo menos cinco ttulos devem ter sido citados no trabalho (parte terica).

51

You might also like