Professional Documents
Culture Documents
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.
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.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.
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.
lugar. A melhor forma de saber mais sobre essas aplicaes explorar o site oficial www.java.com.
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.
Neste disciplina, ser suficiente para ns utilizarmos apenas a plataforma Java SE, j que nosso objetivo principal aprender a linguagem Java.
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.
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.
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
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.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
-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
16
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.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.
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.
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.
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;
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.
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.
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.
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
Os operadores lgicos duplos, isto , definidos por dois caracteres, tambm no podem conter espaos em branco.
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;
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); } }
// 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"); } }
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."); } } }
Se executado, o exemplo acima dever exibir uma contagem de 1 at 10 onde cada valor exibido numa linha do console.
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.
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?)
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
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.
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));
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.
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]); } } }
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.
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
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
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