Escolar Documentos
Profissional Documentos
Cultura Documentos
DE SISTEMAS I
GRADUAÇÃO
Unicesumar
Reitor
Wilson de Matos Silva
Vice-Reitor
Wilson de Matos Silva Filho
Pró-Reitor de Administração
Wilson de Matos Silva Filho
Pró-Reitor Executivo de EAD
William Victor Kendrick de Matos Silva
Pró-Reitor de Ensino de EAD
Janes Fidélis Tomelin
Presidente da Mantenedora
Cláudio Ferdinandi
Impresso por:
Viver e trabalhar em uma sociedade global é um
grande desafio para todos os cidadãos. A busca
por tecnologia, informação, conhecimento de
qualidade, novas habilidades para liderança e so-
lução de problemas com eficiência tornou-se uma
questão de sobrevivência no mundo do trabalho.
Cada um de nós tem uma grande responsabilida-
de: as escolhas que fizermos por nós e pelos nos-
sos farão grande diferença no futuro.
Com essa visão, o Centro Universitário Cesumar
assume o compromisso de democratizar o conhe-
cimento por meio de alta tecnologia e contribuir
para o futuro dos brasileiros.
No cumprimento de sua missão – “promover a
educação de qualidade nas diferentes áreas do
conhecimento, formando profissionais cidadãos
que contribuam para o desenvolvimento de uma
sociedade justa e solidária” –, o Centro Universi-
tário Cesumar busca a integração do ensino-pes-
quisa-extensão com as demandas institucionais
e sociais; a realização de uma prática acadêmica
que contribua para o desenvolvimento da consci-
ência social e política e, por fim, a democratização
do conhecimento acadêmico com a articulação e
a integração com a sociedade.
Diante disso, o Centro Universitário Cesumar al-
meja ser reconhecido como uma instituição uni-
versitária de referência regional e nacional pela
qualidade e compromisso do corpo docente;
aquisição de competências institucionais para
o desenvolvimento de linhas de pesquisa; con-
solidação da extensão universitária; qualidade
da oferta dos ensinos presencial e a distância;
bem-estar e satisfação da comunidade interna;
qualidade da gestão acadêmica e administrati-
va; compromisso social de inclusão; processos de
cooperação e parceria com o mundo do trabalho,
como também pelo compromisso e relaciona-
mento permanente com os egressos, incentivan-
do a educação continuada.
Seja bem-vindo(a), caro(a) acadêmico(a)! Você está
iniciando um processo de transformação, pois quando
investimos em nossa formação, seja ela pessoal ou
profissional, nos transformamos e, consequentemente,
Pró-Reitor de
Ensino de EAD
transformamos também a sociedade na qual estamos
inseridos. De que forma o fazemos? Criando oportu-
nidades e/ou estabelecendo mudanças capazes de
alcançar um nível de desenvolvimento compatível com
os desafios que surgem no mundo contemporâneo.
O Centro Universitário Cesumar mediante o Núcleo de
Educação a Distância, o(a) acompanhará durante todo
Diretoria de Graduação
e Pós-graduação este processo, pois conforme Freire (1996): “Os homens
se educam juntos, na transformação do mundo”.
Os materiais produzidos oferecem linguagem dialógica
e encontram-se integrados à proposta pedagógica, con-
tribuindo no processo educacional, complementando
sua formação profissional, desenvolvendo competên-
cias e habilidades, e aplicando conceitos teóricos em
situação de realidade, de maneira a inseri-lo no mercado
de trabalho. Ou seja, estes materiais têm como principal
objetivo “provocar uma aproximação entre você e o
conteúdo”, desta forma possibilita o desenvolvimento
da autonomia em busca dos conhecimentos necessá-
rios para a sua formação pessoal e profissional.
Portanto, nossa distância nesse processo de cresci-
mento e construção do conhecimento deve ser apenas
geográfica. Utilize os diversos recursos pedagógicos
que o Centro Universitário Cesumar lhe possibilita. Ou
seja, acesse regularmente o AVA – Ambiente Virtual de
Aprendizagem, interaja nos fóruns e enquetes, assista
às aulas ao vivo e participe das discussões. Além dis-
so, lembre-se que existe uma equipe de professores
e tutores que se encontra disponível para sanar suas
dúvidas e auxiliá-lo(a) em seu processo de aprendiza-
gem, possibilitando-lhe trilhar com tranquilidade e
segurança sua trajetória acadêmica.
AUTOR
http://lattes.cnpq.br/2653232632701400
APRESENTAÇÃO
PROGRAMAÇÃO DE SISTEMAS I
SEJA BEM-VINDO(A)!
Caro(a) aluno(a), este material visa permitir que os conceitos fundamentais do desenvol-
vimento de sistemas utilizando a linguagem de programação Java sejam conhecidos e
compreendidos de forma simples e objetiva.
O mercado de trabalho para desenvolvedores Java está aquecido, dando sinais de que
tende a crescer ou, pelo menos, de se manter forte por um bom tempo, devido à evo-
lução da TI (Tecnologia da Informação) e das características favoráveis que a linguagem
oferece.
A primeira unidade trata dos conteúdos básicos referentes à própria linguagem, como
um resumo de sua história, características que a linguagem possui e oferece aos seus
desenvolvedores, versões disponíveis de aplicações possíveis e de que forma são orga-
nizados os chamados pacotes disponibilizados pela Oracle, atual proprietária da própria
linguagem em si, criada pela Sun, a qual foi adquirida pela referida empresa há algum
tempo.
Na segunda unidade, são tratados conceitos relativos à linguagem em si, como as cer-
tificações oficiais sobre o desenvolvimento em linguagem Java, oferecidas pela Oracle,
assim como os conceitos básicos sobre o processo de desenvolvimento de aplicações
em Java, seu ambiente de desenvolvimento, plataforma de execução e formas de pro-
gramação na linguagem. Também são tratados os conceitos do processo de compilação
e execução de códigos em linguagem Java usando os utilitários do pacote JDK de de-
senvolvimento.
Na terceira unidade, são vistos os conceitos de programação em linguagem Java, junta-
mente com os princípios da programação envolvendo os conceitos de tipos de dados,
variáveis, constantes e operadores. Também são vistos detalhes complementares ini-
ciais como o uso de comentários e do utilitário de documentação do pacote JDK. O uso
da identação para um correto alinhamento de instruções também é tratado.
Já na quarta unidade, são vistos os conceitos de fluxo de dados, juntamente com o uso
de sua entrada e saída por meio de bibliotecas padrão Java. Também são vistos os con-
ceitos de vetores e matrizes que representam importantes estruturas de dados.
Na última unidade, temos conteúdos relacionados ao tratamento de exceções que
possam ocorrer em tempo de execução e que sejam previsíveis, além de um pequeno
exemplo de aplicação para auxiliar na compreensão do conteúdo geral da disciplina e
no entendimento da fase de testes.
Assim, por meio de todo esse conteúdo, aliado à disciplina complementar de Programa-
ção de Sistemas II, será possível oferecer um material de aprendizado para uso futuro na
carreira profissional.
09
SUMÁRIO
UNIDADE I
15 Introdução
20 Segurança
27 Considerações Finais
31 Referência
32 Gabarito
UNIDADE II
35 Introdução
38 Plataformas Java
42 Tipos de Aplicativos
44 Pacotes de Desenvolvimento
45 Compilação e Execução
10
SUMÁRIO
50 Considerações Finais
54 Referências
55 Gabarito
UNIDADE III
59 Introdução
61 Instruções Básicas
72 Expressões
74 Identação e Espaçamento
77 Considerações Finais
83 Referências
84 Gabarito
UNIDADE IV
MANIPULAÇÃO DE DADOS
87 Introdução
88 Fluxo de Dados
89 Entrada de Dados
91 Saída de Dados
95 Vetores e Matrizes
11
SUMÁRIO
104 Referências
105 Gabarito
UNIDADE V
109 Introdução
133 Referências
134 Gabarito
135 Conclusão
Professor Esp. Ronie Cesar Tokumoto
FUNDAMENTOS DA
I
UNIDADE
LINGUAGEM JAVA
Objetivos de Aprendizagem
■■ Conhecer a história e conceitos básicos da linguagem Java.
■■ Compreender os aspectos que tornam a linguagem segura.
■■ Compreender as possibilidades de desenvolvimento de software em
linguagem Java.
■■ Compreender os conceitos de versão e extensão em Java.
■■ Compreender como ocorre uma das formas de desenvolvimento de
software.
Plano de Estudo
A seguir, apresentam-se os tópicos que você estudará nesta unidade:
■■ Histórico resumido da linguagem Java
■■ Características da linguagem Java
■■ Segurança
■■ Versões e extensões em Java
■■ Desenvolvimento de software em Java
15
INTRODUÇÃO
Introdução
16 UNIDADE I
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
HISTÓRICO RESUMIDO DA LINGUAGEM JAVA
Olá caro(a) aluno(a), neste primeiro tópico, é importante citar que a linguagem
foi concebida durante a década de 1990, na Sun Microsystems. Seus idealizadores
foram James Gosling, Patrick Naughton, Chris Warth, Ed Frank e Mike Sheridan.
Inicialmente com o nome de Oak, o qual, posteriormente, foi alterado para Java
em 1995 (MANZANO, 2011), seu propósito inicial não era a Internet, mas apa-
relhos domésticos como linguagem para programação embarcada.
Com a popularização da World Wide Web, o propósito da linguagem ser
independente de plataforma ou hardware impulsionou a evolução da linguagem
para que pudesse se adequar às necessidades da programação web. Sua forma
singular de programação e a forma como permitia que o uso da Internet fosse
muito mais interativo e repleto de novas possibilidades garantiram essa onda
de profissionais interessados em desenvolver aplicações com a nova linguagem.
Assim como a tecnologia e a Internet, a linguagem teve atualizações em ver-
sões que foram sendo criadas para atender novas demandas e oferecer melhorias
para o desenvolvimento web. A Sun desenvolvia novos pacotes para as novas
versões, denominadas como J2SE, acrescidas de números indicativos da versão
a partir 2, versões como J2SE 1.3, 1.4 e 5 foram surgindo e agregando funções
ao desenvolvimento de programas. Conforme citado por Manzano (2011), a
versão J2SE 5 representou uma segunda revolução na linguagem e, por isso,
mudou o padrão de numeração definido pelas duas versões anteriores, pois além
de melhorias no ambiente de desenvolvimento e alguns recursos importantes,
a quinta versão reformulou certos aspectos da linguagem. Ela agregou recursos
como os tipos genéricos, uma evolução no uso do laço de repetição for, uso de
anotações, enumerações, uso de importação estática e argumentos em quanti-
dades variáveis, por exemplo.
A versão seguinte, Java SE 6 (forma reduzida de Java Plataform, Standard
Edition 6), gerou aprimoramentos nas bibliotecas APIs, novos pacotes e otimi-
zações para a execução dos softwares desenvolvidos.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Em 2016, foi lançada a versão 8, que promete grandes mudanças, as quais incluem
a transformação na ideia da programação embarcada para a tendência da “Internet
das Coisas”, programação em nuvem, possibilidade do uso de objetos genéricos,
melhoria no tratamento de exceções, lambdas e anotações. Parte das novas fun-
cionalidades fará parte do escopo do livro por serem relevantes aos conteúdos do
material, e os demais conteúdos podem ser buscados em outras fontes de pesquisa
complementares sugeridas ao longo das unidades (ORACLE, [2017], on-line)2.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Conhecer bem sua ferramenta de trabalho é fundamental e o mesmo vale
na programação. Como se preparar para um mercado tão competitivo?
SEGURANÇA
Segurança
22 UNIDADE I
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Figura 2 - Tela de download do plugin Java para navegadores, versão 8
Fonte: Java ([2017], on-line)2.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Pacote mais completo que o J2SE, pois além dos componentes citados neste
pacote, são incluídas as funcionalidades para a produção de aplicações corpo-
rativas (ORACLE, [2017], on-line)2.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
da programação em si.
A forma com que se desenvolvem os códigos não influencia a qualidade dos
softwares criados, mas pode influenciar o tempo de desenvolvimento e o modo
de trabalho durante a codificação.
Para focar o estudo na linguagem em si, serão desconsiderados o uso de quais-
quer ferramentas simplificadoras como IDEs (conforme citado) ou Frameworks, os
quais trazem muita facilidade, pois eliminam etapas importantes do aprendizado.
Paralelamente ao estudo da disciplina, é normal que você busque outras
fontes ou alternativas de desenvolvimento de códigos. Porém, para a disciplina
em si, deve ser focado o desenvolvimento baseado no que é visto na mesma,
desconsiderando alternativas pesquisadas, pois isto prejudica a avaliação dos
conhecimentos.
CONSIDERAÇÕES FINAIS
Nesta unidade, foi possível observar que uma série de detalhes indica os moti-
vos da grande popularidade da linguagem Java e servem de parâmetro para o
início dos estudos da linguagem.
Tendo sua história inicialmente indicando uma finalidade distinta do atual
uso da linguagem, seu uso para desenvolvimento de aplicações para diferentes
sistemas operacionais e tendo forte ligação com a Internet, temos que a lin-
guagem Java evolui de forma a acompanhar as mudanças que ocorrem com a
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Considerações Finais
28
CERTIFICAÇÕES
Existem certificações diversas que podem ser feitas para comprovar conhecimentos
avançados em programação Java, além de proporcionar um incremento no currículo
pessoal. Essas certificações são importantes para o mercado de trabalho, pois são com-
provações que mostram o preparo do profissional dentro de uma especialidade e ser-
vem de parâmetro para contratações.
Alguns tipos de certificações da Oracle para Java podem ser Oracle Certified Enterprise
Architect (OCEA), Oracle Certified Mobile Application Developer (OCMAD), Oracle Certi-
fied Developer For Java Web Services (OCDJWS), Oracle Certified Business Component
Developer (OCBCD), Oracle Certified Web Component Developer (OCWCD), Oracle Cer-
tified Java Developer (OCJD), Oracle Certified Java Programmer (OCJP), Oracle Certified
Java Associate (OCJA) (ORACLE, [2017], on-line)2.
Cada certificação se presta a uma habilidade específica de uma plataforma e linguagem
Java. Todos os testes são realizados por uma empresa chamada Person VUE, sendo acei-
tos internacionalmente (ORACLE, [2017], on-line)2.
Observando as opções existentes de certificações, vemos que existe uma sequência ló-
gica que pode ser seguida de forma que a construção do conhecimento seja gradativa
e mais eficiente.
Ter diferencial no mercado de trabalho por meio de certificações diversas é muito im-
portante, mas não adianta ter certificações e não ser capaz de aplicar o que é visto na
teoria em prática com eficiência.
É preciso praticar muito os conceitos vistos para que sejam realmente úteis para o mer-
cado de trabalho, pois na área de tecnologia, o saber notório é muito comum e por
vezes suficiente para muitas empresas.
Mas os melhores empregos demandam exigências e responsabilidades maiores que jus-
tificam maiores salários e cargos em empresas que tendem a crescer rapidamente, da
mesma forma que podem também desaparecer, pois a área de tecnologia se modifica
rapidamente.
Para o mercado, tanto a graduação quanto a certificação são diferenciais curriculares,
assim como a experiência de trabalho. Para se destacar, é interessante acumular todos
esses diferenciais.
Fonte: o autor.
29
REFERÊNCIAS ON-LINE
1
Em: <https://www.java.com/pt_BR/download/win10.jsp> Acesso em: 29 mai. 2017
2
Em: <http://www.oracle.com/technetwork/articles/javaee/javaee6overview-
-part2-136353.html> Acesso em: 08 jun. 2017
GABARITO
1) Ponteiros e Registros.
2) Orientado a Objetos e Funcional.
3) Capacidade de um mesmo código poder ser executado em diferentes platafor-
mas e sistemas operacionais sem a necessidade de alterações no código, tendo
apenas que utilizar para cada plataforma a JVM compatível e adequada.
4) Bytecode gerado pelo compilador Javac.
5) É relativo às aplicações para dispositivos móveis com menor capacidade de
hardware, normalmente como telas menores ou hardware menos potente em
termos de processamento ou armazenamento temporário e permanente.
Professor Esp. Ronie Cesar Tokumoto
PARTICULARIDADES DA
II
UNIDADE
LINGUAGEM JAVA
Objetivos de Aprendizagem
■■ Complementar os conceitos iniciais vistos na unidade anterior.
■■ Conhecer como se pode desenvolver software em Java tendo acesso
a exemplos de plataformas e ambientes de desenvolvimento.
■■ Saber como pode ocorrer o processo de programação em Java.
■■ Conhecer quais são os tipos de aplicativos criáveis em Java.
■■ Entender conceitos de pacotes de desenvolvimento e como ocorre a
compilação e execução em Java.
■■ Compreender como ocorre o processo de uso de uma aplicação
desenvolvida.
Plano de Estudo
A seguir, apresentam-se os tópicos que você estudará nesta unidade:
■■ Ambiente de desenvolvimento Java
■■ Plataformas Java
■■ Formas de programação em Java
■■ Tipos de aplicativos
■■ Pacotes de desenvolvimento
■■ Compilação e execução
35
INTRODUÇÃO
Introdução
36 UNIDADE II
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
AMBIENTE DE DESENVOLVIMENTO JAVA
Olá, caro(a) aluno(a). É importante citar que neste primeiro tópico, indepen-
dentemente da opção de editor ou ambiente de desenvolvimento utilizado para
criar programas em Java, um arquivo contendo código na linguagem Java com
extensão “java” é convertido para criar arquivos bytecode com extensão “class”
através de um compilador Javac, por exemplo.
Em um ambiente de desenvolvimento, o compilador Javac é componente pré-
-instalado ou que pode ser adicionado no caso de ambientes que podem aceitar
mais de uma linguagem de programação diferentes. Este ambiente é capaz de
compilar o código Java para geração do arquivo bytecode e interpretar o código
em tempo real para testes de execução de dentro do próprio ambiente de desen-
volvimento (MANZANO, 2011).
Bytecodes são interpretados e executados por meio de máquinas virtu-
ais chamadas de Java Virtual Machine (JVM), que funcionam como um tipo
de software que emula um ambiente padrão para execução de código bytecode
próprio para cada plataforma na qual seja executado. Esse arquivo intermediá-
rio bytecode elimina incompatibilidades entre um programa Java codificado e
as diversas plataformas em que pode ser executado, pois a máquina virtual Java
tem versão própria para cada plataforma (MANZANO, 2011).
A JVM carrega o arquivo bytecode para memória principal do hardware,
verifica o arquivo na busca de possíveis ameaças ao próprio sistema operacio-
nal em que será executado, e, por fim, o programa é executado de forma híbrida
entre interpretação e compilação Just-in-Time (JIT) (MANZANO, 2011).
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
PLATAFORMAS JAVA
Plataformas Java
40 UNIDADE II
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Conhecer mais de uma linguagem de programação amplia a oferta de op-
ções de trabalho, mas é bom sempre ter uma linguagem principal, sobre a
qual o desenvolvedor possua um maior domínio e seja capaz de produzir
aplicações mais complexas.
A dúvida persiste em relação a qual linguagem focar e qual a primeira a
aprender. É interessante buscar as linguagens líderes em popularidade e
com maior volume de desenvolvedores que a utilizam, pois a chance de a
linguagem durar um tempo maior é grande. Mas é preciso levar em conside-
ração a forma como o desenvolvedor queira trabalhar e o tipo de software
que desejo programar.
Fonte: o autor.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
TIPOS DE APLICATIVOS
Tipos de Aplicativos
44 UNIDADE II
PACOTES DE DESENVOLVIMENTO
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
material (ORACLE, [2017], on-line)1.
Complementarmente, temos diversas alternativas
úteis para o desenvolvimento de aplicações, sabendo
que a combinação de diferentes softwares pode ofere-
cer recursos para programação mais abrangente em
termos de tipos de aplicações possíveis.
O ambiente Netbeans criado pela Sun é um dos mais utilizados, assim como
o JDeveloper da Oracle, que atualmente é a plataforma de desenvolvimento ofi-
cial para a linguagem Java. Para uso de serviços agregados a Bancos de Dados
há a instalação de softwares como o HypersonicSQL, que é totalmente voltado
para uso de aplicações Java, Apache Derby que faz parte do pacote de distribui-
ção Java sob o nome de JavaDB, e PostGreeSQL, que concorre diretamente com
outro servidor MySQL (ORACLE, [2017], on-line) 1.
Para a criação de servidores web para Java, duas opções populares são o Jetty,
concorrente do Apache Tomcat, que possui uma versão customizada chamada
JBossWeb, disponibilizado pela JBoss.
COMPILAÇÃO E EXECUÇÃO
Compilação e Execução
46 UNIDADE II
C:\WINDOWS\System32\WindowsPowerShell\v1.0\;
C:\Program Files (x86)\Skype\Phone\;
C:\Program Files\Java\jdk1.8.0_77\bin.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Figura 6 - Exemplo de janela para buscar o caminho do compilador JAVAC
Fonte: o autor.
Depois de digitar o código, grave-o em local adequado para seus estudos como uma
pasta exclusiva para os códigos do livro e outros para exercício da linguagem, lem-
brando que todo arquivo Java será gravado com o nome da classe principal (seguindo
as regras de nomenclatura do sistema operacional), e a extensão java como na figura 9.
Observe que, no caso do Bloco de Notas, é interessante indicar o tipo como
Todos os arquivos para que a gravação não corra o risco e crie um arquivo do
tipo TXT ao invés de java. Sem esta opção, poderia ser criado um arquivo seme-
lhante a Ex1.java.txt, o que não seria compreendido pelo compilador javac.
A Figura 9 mostra a tela de gravação de arquivos, na qual podemos escolher
o local para gravação, em que é indicado respeitar uma organização de locais
de gravação para as diferentes aplicações desenvolvidas, e a indicação do nome
para o arquivo fonte, respeitando a regra de este nome ser igual ao da classe con-
tida no código.
Compilação e Execução
48 UNIDADE II
Esta é mais uma precaução do que uma ação obrigatória, pois para outras
situações ou sistemas operacionais, pode acontecer do editor usar todo o nome
digitado “Nome.java” como nome do arquivo.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Figura 9 - Exemplo de gravação no aplicativo Bloco de Notas
Fonte: o autor.
Compilação e Execução
50 UNIDADE II
CONSIDERAÇÕES FINAIS
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
utilizadas em diferentes meios de execução de aplicações, como computadores
e dispositivos móveis.
Complementando o ambiente de desenvolvimento, são citados os diferen-
tes sistemas operacionais que oferecem diversas plataformas de execução para
as aplicações criadas e que, independentemente dessas diferenças, permitem
que um mesmo código em Java possa ser executado em diferentes plataformas,
devido a sua portabilidade.
Seguindo os conceitos tratados na unidade, há comentários sobre as formas
de programação que destacam tipos diferentes de soluções com os quais um
determinado desenvolvedor pode se especializar indicando se inclusive, áreas
já ultrapassadas no mercado, mas que ainda apresentam situações de uso que já
garantiram o trabalho de muitos profissionais.
Assim, as diferentes formas de criar software em linguagem Java são descritas
oferecendo possibilidades diversas e indicando soluções mais simples para fins
específicos, como software para máquinas sem necessidade de interface gráfica,
sendo mais leve e eficiente, ou soluções mais complexas com interface gráfica
para equipamentos como dispositivos móveis.
Finalizando a unidade, são tratados os pacotes utilizados para o desenvol-
vimento de software e o processo de compilação e execução de aplicações em
diferentes plataformas.
Com esse preparo, já é possível ingressar em uma nova unidade, contem-
plando os primeiros pontos a serem vistos em relação à linguagem Java e seus
conceitos iniciais de desenvolvimento de aplicações.
Em Linux, para preparar o ambiente para programação em Java é preciso instalar o pa-
cote Java JDK, seguindo os passos indicados a seguir. Vale lembrar que tais passos po-
dem ser alterados devido às novas versões e à descontinuidade do pacote indicado no
conteúdo a seguir.
Abrir uma janela terminal para, em seguida, usar o comando “su” para entrar em modo
super usuário inserindo a senha necessária para tal.
Em seguida, entrar na pasta Downloads, com o comando “cd downloads”, e finalmente,
o comando de instalação “rpm –jvh jdk-7-linux-i586.rpm”.
Depois de baixado o pacote, usar “mkdir/usr/java/jdk1.7.0/jre/classes” para criar uma
pasta Classes para trabalho e remover o arquivo de instalação com o comando “rm jdk-
-7-linux-i586.rpm”.
Após instalado, é preciso que o Java seja visível em toda extensão do ambiente Linux e,
para isso, é preciso manipular variáveis de ambiente do sistema operacional.
Siga a sequência de comandos a seguir para servir de guia para o processo, iniciando
com “cd /etc/profile.d” para acessar a pasta indicada, digitando em seguida, “touch /etc/
profile.d/java.sh”.
Depois, use novamente “cd /etc/profile.d”, seguido do comando “joe” para poder editar
as variáveis de ambiente, como indicado a seguir:
#!/bin/sh
JAVA_HOME=”usr/java/jdk1.7.0”
CLASSPATH=”.:$CLASSPATH:$JAVA_HOME/jre/classes”
PATH=”$JAVA_HOME/bin:$PATH”
export JAVA_HOME CLASSPATH PATH
Finalmente, utilize [CTRL+K] seguido de [X] para gravar o arquivo como “java.sh”.
Assim, temos uma das possíveis formas de se instalar e preparar o ambiente Java em
Linux, lembrando que, em caso de falha no processo, a Internet oferece diversas varia-
ções em que é possível encontrar atualizações regulares do ambiente Java.
Fonte: o autor.
52
Material Complementar
54
REFERÊNCIAS
INTRODUÇÃO À
III
UNIDADE
PROGRAMAÇÃO JAVA
Objetivos de Aprendizagem
■■ Conhecer os conceitos básicos da programação Java.
■■ Compreender como elaborar instruções comuns.
■■ Saber identificar operadores e suas regras de uso.
■■ Compreender a elaboração de expressões na linguagem.
Plano de Estudo
A seguir, apresentam-se os tópicos que você estudará nesta unidade:
■■ Fundamentos de um programa Java
■■ Instruções básicas
■■ Expressões
■■ Identação e espaçamento
59
INTRODUÇÃO
Introdução
60 UNIDADE III
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
FUNDAMENTOS DE UM PROGRAMA JAVA
Daremos início a mais uma unidade, caro(a) aluno(a). Neste primeiro tópico, é
importante citar que toda a construção de código Java segue regras, as quais pre-
cisam ser respeitadas de forma que, além da sintaxe, a semântica de um código
possa ser validado pelo compilador da linguagem para que um arquivo byte-
code válido possa ser gerado.
O uso do paradigma de orientação a objetos é uma destas regras essenciais
e, sem ela, não é possível criar programas em Java válidos para um compilador
(ORACLE, [2017], on-line)1. Temos basicamente dois tipos de arquivos usa-
dos na programação Java: um corresponde ao código escrito em si, gravado em
arquivo do tipo JAVA, e outro que é gerado pelo compilador em formato byte-
code do tipo CLASS, como citado anteriormente.
Como o arquivo JAVA é um arquivo texto comum, não é preciso utilizar
recurso especial além de um editor de textos simples para codificar programas
em Java, assim como em outras linguagens compiláveis.
Existem diferentes formas de programação em Java, nas quais é possível criar
softwares aplicativos no modo console, em que não existe interface gráfica e a
programação não é fundamentada na web.
Pode-se criar software para o modo gráfico utilizando pacotes próprios para
uso de recursos, como janelas e desenho de forma geral, amplamente voltado
para plataformas com interface gráfica como Windows e Linux, além de amplo
uso em plataformas web como Android.
INSTRUÇÕES BÁSICAS
COMENTÁRIOS
Instruções Básicas
62 UNIDADE III
É preciso ter em mente que um software pode ter um ciclo de vida mais longo
que o responsável pela sua criação dentro da empresa responsável pelo desen-
volvimento e/ou manutenção do mesmo por tempo indeterminado.
Importa observar que os comentários não são obrigatórios em programas;
seu uso não influencia a lógica do código, até porque qualquer comentário colo-
cado dentro de um código é descartado já no processo de compilação e geração
do arquivo bytecode por não ter função na execução do software.
Podemos utilizar // ou /** e */ para delimitar comentários, sendo a primeira
forma para comentários de linha única, e a outra forma para delimitar blocos de
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
comentários como indicado nos exemplos a seguir:
//código1
// Comentário de linha única.
/* Início de bloco de comentário
Que pode seguir por linhas abaixo até que seja encontrado
O símbolo de fim do bloco de comentários */
Uma instrução pode ser colocada na mesma linha, desde que antes do símbolo
indicador de comentário para não perder sua função por transformar-se em
parte do texto do comentário. Já no bloco de comentários, quaisquer instruções
colocadas entre o espaço delimitador de início e fim do comentário perde sua
função, pois estando dentro de um comentário, qualquer conteúdo é descartado
pelo compilador (DEITEL, 2010).
JAVADOC
Existem outras tags mais capazes de oferecer demais funcionalidades a essa fer-
ramenta de documentação. Algumas das principais tags utilizadas pelo utilitário
Javadoc na confecção de documentação estão listadas na Tabela 1.
Instruções Básicas
64 UNIDADE III
TAG SIGNIFICADO
@author Indica o autor de uma classe ou do método.
@deprecated Identifica classes ou métodos já ultrapassados. É interessante
informar nessa tag os métodos ou classes que podem ser usa-
das como alternativas mais recentes.
@link Indica um link para outro documento através de um URL.
@param Mostra parâmetros passados a um método.
@return Mostra o tipo de retorno de um método.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
@see Indicação das referências de classes ou métodos para auxiliar a
compreensão.
@since Indica quando classes ou métodos foram incluídos no projeto
da aplicação.
@throws Indica tipos de exceções que podem ser tratados por métodos
na aplicação.
@version Informa a versão de uma classe em um projeto.
Fonte: SCHILDT (2013, p. 594).
//código2
Import java.io.*;
/**
* Classe genérica para soma
* @author Tokumoto
* @version 1.0
*/
public class calcula {
public double soma (double valor1, double valor2) {
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
/**
* Soma dois valores recebidos como argumentos
* @param valor1 e valor2 representam valores do tipo double
* @return a soma dos parâmetros é o resultado retornado
*/
return (valor1 + valor2);
}
}
VARIÁVEIS E CONSTANTES
Instruções Básicas
66 UNIDADE III
Tendo como sintaxe básica a forma [final] <tipo> nome [<= valor>]; podemos
ilustrar a declaração de algumas variáveis de tipos diferentes através do código 3.
//código3
import java.lang.String;
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
int b, c;
int d = 0;
double e;
char f;
char g = ‘ ‘;
String h;
}
}
TIPOS DE DADOS
Tipos de dados são fundamentais na linguagem Java por ela ser fortemente
tipada e exigir que toda estrutura de dados criada tenha tipos para os dados
aceitos pelas mesmas, definido para a devida alocação de memória durante o
processo de execução.
A Figura 1 mostra os tipos básicos mais utilizados no desenvolvimento, indi-
cando também a quantidade de bits ocupados em memória, delimitando valores
limite para armazenamento nessas estruturas de dados.
Fonte: o autor.
Todos os tipos têm usos indicados de acordo com a maneira como serão utiliza-
dos os dados coletados durante a execução de um programa em variáveis usadas
para armazenar idade, peso ou altura, por exemplo. Cada variável é declarada
com o tipo de dado que seja adequado ao seu propósito no programa como, por
exemplo, a idade que utiliza números inteiros, ou em peso e altura, que necessi-
tam de números do tipo ponto flutuante (MANZANO, 2011).
Além dos tipos básicos, algumas bibliotecas (APIs), oferecem tipos adicionais
de dados para facilitar o desenvolvimento de novos programas que necessitem
de dados mais específicos. Um tipo bem conhecido se chama string, contido na
Classe String de uma API bastante utilizada no desenvolvimento, em que cadeias
de caracteres podem ser armazenadas nesse tipo de dado.
Toda variável tem a função de armazenar dados, assim como constantes que
também utilizam espaços de memória para tal finalidade. No entanto, uma dife-
rença fundamental é que as constantes têm, como princípio básico, a ideia de que
um valor atribuído a ela não será alterado em tempo de execução. No caso das vari-
áveis, sendo elas fortemente tipadas ou não, a função se mantém, variando a forma
como ocorre esse armazenamento de dados, pois, para cada dado a ser alocado em
uma variável, existe uma quantidade adequada de memória necessária a ser alocada.
No caso de linguagens fortemente tipadas, essa quantidade de memória é
determinada pela escolha do tipo de dado que será aceita pela variável. Porém,
em linguagens fracamente tipadas, a alocação é feita de forma diferente, pois não
há como garantir sempre, antes da execução, qual tipo de valor será alocado à
variável, alterando em tempo de execução a quantidade de memória que seria
necessária para esse dado (MANZANO, 2011).
Instruções Básicas
68 UNIDADE III
OPERADORES ARITMÉTICOS
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
unário de sinal, indicando a positividade de um valor numérico, e como
operador de soma, o qual realiza o cálculo a partir de dois valores para
gerar um terceiro valor de resultado.
■■ O mesmo ocorre com o operador subtração (-), que também serve como
operador unário de indicação de sinal para números negativos e como
operador para subtração de dois valores, gerando também um terceiro
valor resultante da operação.
■■ A multiplicação representada pelo asterisco (*) é um operador apenas
para a realização do cálculo entre dois valores numéricos, resultando um
terceiro valor, assim como o operador para divisão aritmética indicada
pela barra (/), que também se utiliza de dois valores para gerar um ter-
ceiro valor de resultado.
■■ O operador de resto indicado pelo símbolo de porcentagem (%), realiza
um cálculo não convencional da matemática. O chamado resto da divisão
é o valor que sobra após a divisão entre dois valores numéricos, podendo
valer zero, em caso de divisões perfeitas, ou valores maiores, quando o
primeiro valor não é múltiplo do primeiro.
■■ Os operadores unários de incremento (++) e decremento (--), são utili-
zados para alterar valores de variáveis realizando um cálculo simples em
que é acrescentada ou reduzida uma unidade do valor da variável a qual
se aplica algum desses operadores.
Outro tipo de operador é o relacional, o qual não realiza cálculos, sendo utilizado
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Instruções Básicas
70 UNIDADE III
Operadores lógicos podem servir como operadores bit a bit para realizar
deslocamento de bits como & e |, e isso pode ser confundido com operado-
res lógicos. Cuidado.
OPERADOR DE ATRIBUIÇÃO
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
O símbolo de igualdade (=) usado na matemática (e que foi substituído na lin-
guagem Java por uma dupla igualdade ==), tem uma função muito importante,
chamada atribuição.
A atribuição é a forma pelo qual é possível atribuir dores diretamente a uma
variável, alocando o valor na posição de memória previamente reservada a ela,
de acordo com o tipo de dado atribuído no momento de sua declaração. Durante
esse processo, pode ocorrer uma conversão automática de tipos quando o tipo
a ser atribuído for compatível com o tipo receptor esse que seja superior àquele
do valor a ser atribuído (MANZANO, 2011).
Pode-se usar o sistema de coerção “cast” para forçar tipos incompatíveis a acei-
tarem uma atribuição forçada, independentemente do tipo que automaticamente
seria usado ou se for uma conversão permitida pelo compilador naturalmente.
Por exemplo, a coerção pode ser utilizada seguindo a sintaxe (tipo) <expres-
são>, na qual é indicado o tipo para forçar a mudança de tipo, lembrando que
funciona apenas se o valor contido na variável for compatível com o tipo dese-
jado (DEITEL, 2010).
Um exemplo poderia ser escrito como y= (int) x; no qual, caso estivesse toda
a instrução dentro do esperado em termos de valores e tipos, seria y uma vari-
ável que deveria aceitar valores inteiros convertidos de x.
Instruções Básicas
72 UNIDADE III
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
menor ou igual, operador de instância de objetos
==, != Igualdade e diferença lógica
& Operador E lógico
| Operador | lógico
&& Operador E lógico de curto-circuito
|| Operador | lógico de curto-circuito
?: Operador condicional
=, op= Atribuição ou atribuição com cálculo (+, -, *, /, &)
Fonte: o autor.
EXPRESSÕES
//código4
import java.lang.Math;
class Expressoes
{
public static void main(String[] args)
{
int porcentagem = 100;
System.out.println(“0,5 equivale a “ + 0.5*porcentagem + “%”);
System.out.println(“O valor de PI é “, Math.PI);
System.out.println(“Para calcular a área de um círculo, usa-se a fórmula
PI x (RAIO x RAIO)”);
System.out.println(“Um círculo de raio 10 tem área igual a “ + Math.PI *
(10*10));
}
}
* 0.5 ao invés de 0,5 na fórmula
** concatenação de strings com sinal + ao invés de vírgula
*** O mesmo nas linhas abaixo
Expressões
74 UNIDADE III
IDENTAÇÃO E ESPAÇAMENTO
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
A identação serve para organizar um código em níveis e auxilia a leitura e compre-
ensão de um código, sem influenciar sua lógica ou funcionamento na linguagem
Java, diferentemente do que pode ocorrer em outras linguagens. O espaçamento
também não prejudica a codificação em Java, ajudando apenas a leitura e com-
preensão de códigos, principalmente, em expressões longas e instruções com
muitos parâmetros.
Algumas linguagens podem inclusive se basear na identação para indicar o
aninhamento de instruções contidas em outras, como ocorre em blocos de ins-
truções pertencentes a estruturas condicionais e laços de repetição. Sem uma
correta identação, padrões de codificação em empresas são perdidos e a manu-
tenção em códigos já criados se torna mais custosa pela dificuldade de se ler,
compreender e procurar pontos específicos a serem alterados em um código
sem o espaçamento.
No exemplo do código5, podemos observar bem a importância da identação
já em exemplos pequenos de código, em que quanto mais à esquerda, mais o ele-
mento deve representar uma estrutura primária como uma classe, por exemplo.
Já elementos mais à direita representam elementos que fazem parte de elemen-
tos como classes e métodos, assim como estruturas de desvios e laços, os quais
podem conter entre os símbolos de { e }, blocos de instruções e estruturas iden-
tadas mais à direita para indicar que estejam dentro do escopo da estrutura ao
qual estejam associados (MANZANO, 2011).
No código5, podemos observar um exemplo do mesmo código, visto ante-
riormente, sem a identação, mostrando como sua leitura e compreensão podem
ser prejudicados, lembrando que sua lógica e funcionamento não são alterados
em função de falta de espaçamento na linguagem Java.
//código5
import java.lang.Math;
class Expressoes
{
public static void main(String[] args)
{
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Identação e Espaçamento
76 UNIDADE III
Ao final desta unidade, é possível perceber quais são os elementos essenciais para
se iniciar os estudos da linguagem, como tipos e operadores, sem os quais pou-
quíssimos códigos podem ser produzidos.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
CONSIDERAÇÕES FINAIS
Considerações Finais
78
JAR
A extensão JAR se refere a compactação de classes Java, de forma a criar um pacote de
classes representando ou não uma aplicação completa, por meio de um utilitário que
faz parte do pacote JDK de desenvolvimento Java.
Com a popularização da linguagem, outras ferramentas de compactação acrescentaram
em seus algoritmos de compactação o padrão JAR e também são capazes de gerar estes
arquivos.
Todo arquivo jar possui um arquivo manifesto na pasta META-INF/MANIFEST.MF. Este
arquivo manifesto contém as definições de uso do conteúdo compactado e funcionam
como arquivos executáveis, tendo uma de suas classes determinadas como a responsá-
vel por iniciar a execução da aplicação.
Main-Class:Aplicacoes.Classe é uma entrada possível para este arquivo manifesto cria-
do na compactação. Usando o comando java -jar exemplo.jar, podemos executar a
aplicação direto do arquivo JAR. Isto permite maior segurança do conteúdo do arquivo
compactado.
Como exemplo, podemos imaginar que temos uma aplicação que contenha os seguin-
tes componentes: Teste.class, audio/som1.au, audio/som2.au, images/foto1.gif, e
images/foto2.gif.
Com o comando jar cvf Teste.jar Teste.class audio images, podemos adicionar a classe
Teste e as pastas audio e imagem no arquivo JAR compactado.
A execução do utilitário irá mostrar o progresso de sua compactação indicando todos
os arquivos adicionados e compactados, mostrando o grau de compactação atingida
naquele arquivo em porcentagem sobre o tamanho do conteúdo original como aparece
a seguir.
//código6
adding: Teste.class (in=9999) (out=9999) (deflated 50%)
adding: audio/ (in=0) (out=0) (stored 0%)
adding: audio/som1.au (in=4032) (out=3572) (deflated 11%)
adding: audio/som2.au (in=2566) (out=2055) (deflated 19%)
adding: images/ (in=0) (out=0) (stored 0%)
adding: images/foto1.gif (in=157) (out=160) (deflated -1%)
adding: images/foto2.gif (in=158) (out=161) (deflated -1%)
79
O arquivo JAR, como citado anteriormente, contém, além das classes e arquivos comple-
mentares, a indicação do conteúdo compactado em arquivo manifesto.
//código7
META-INF/MANIFEST.MF
foto1.gif
foto2.gif
som1.au
som2.au
Para executar uma classe em forma de plugin em um navegador, por exemplo, basta
utilizar a tag <applet> para acionar o arquivo que contém a classe desejada, além de
outros parâmetros como tamanho da janela, etc.
A seguir, podemos ver um exemplo de como poderia ser implementado o código HTML
para chamar esta applet criado anteriormente em uma página html.
//código8
<applet code=Teste.class
width=”100” height=”100”>
</applet>
Um ponto importante é que como a classe está dentro de um arquivo JAR, é preciso in-
dicar este detalhe dentro da tag de chamada da classe, assim como mostrado no código
9.
//código9
<applet code=Teste.class
archive=”Teste.jar”
width=”100” height=”100”>
</applet>
É possível indicar a localização do arquivo, exibindo dentro da tag, o caminho completo
para acesso ao arquivo compactado como indicado no código a seguir.
80
//código10
<applet code=Teste.class
archive=”applets/Teste.jar”
width=”100” height=”100”>
</applet>
1. O chamado Javadoc foi tratado dentro da unidade e se refere a algo muito inte-
ressante ofertado pela linguagem Java. Descreva o que seria Javadoc.
2. Dentre os diversos tipos de dados disponíveis, existem dois tipos chamados de
int e double. Explique a diferença entre ambos.
3. Temos duas simbologias para indicar comentários dentro da linguagem Java
que podem ser utilizadas livremente sem afetar a lógica de um código. Quais
são?
4. Operadores são divididos em categorias para melhor organização e compre-
ensão de suas funções. Cite quais são os operadores relacionais usados em
Java.
5. Existem diversos operadores na linguagem Java. Qual a diferença entre os
operadores = e ==?
MATERIAL COMPLEMENTAR
DEITEL, P. J. Java: como programar. 8. ed. São Paulo: Pearson Prentice Hall, 2010.
FLANAGAN, D. Java: o guia essencial. 5. ed. Porto Alegre: Bookman, 2006.
MANZANO, J. A. N. G. Java 7 programação de computadores: guia prático de in-
trodução, orientação e desenvolvimento. São Paulo: Érica, 2011.
SCHILDT, H. Programação com Java. Sáo Paulo: Mcgraw Hill Education, 2014.
GABARITO
IV
UNIDADE
MANIPULAÇÃO DE DADOS
Objetivos de Aprendizagem
■■ Compreender a teoria relacionada ao fluxo de dados.
■■ Conhecer alguns dos recursos existentes para entrada de dados em
Java.
■■ Conhecer alguns dos recursos existentes para saída de dados em
Java.
■■ Compreender como são estruturas de dados do tipo vetor e matriz
para dados.
Plano de Estudo
A seguir, apresentam-se os tópicos que você estudará nesta unidade:
■■ Fluxo de dados
■■ Entrada de dados
■■ Saída de dados
■■ Vetores e matrizes
87
INTRODUÇÃO
Introdução
88 UNIDADE IV
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
FLUXO DE DADOS
MANIPULAÇÃO DE DADOS
89
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
ENTRADA DE DADOS
Entrada de Dados
90 UNIDADE IV
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
tação de dados. Depois de o sistema ter sido alimentado com dados em volume
suficiente para que possa acionar seus mecanismos de gerenciamento destes dados,
a aplicação já pode usar estes próprios dados como entrada sem a necessidade
de interação de um usuário em diversos processos, como ocorre em processos
automáticos como backups e geração de relatórios pré-programados em siste-
mas de banco de dados.
Outro tipo de entrada pode vir de arquivos de dados gravados em disco
que podem alimentar processos de uma aplicação, como no caso de consultas
a bases de dados.
Também existe o acesso a dados remotos por meio de redes corporativas ou
pela nuvem da Internet, em que é possível que um sistema possa colher dados
diversos da rede mundial para através de buscas refinadas, gerar novos dados que
tragam diferentes tipos de dados não antes obtidos diretamente através de entradas
de dados por usuários ou consultas a bases de dados locais (MANZANO, 2011).
Um processo que utiliza ideia semelhante é o chamado Big Data, o qual tra-
balha dados já existentes de consultas a produtos de interesse na Internet para
formular publicidades mais otimizadas de acordo com ofertas que sejam dentro
daquilo que o usuário costuma procurar, e assim, tendo maior chance de êxito
em sua função de gerar vendas onl-ine.
MANIPULAÇÃO DE DADOS
91
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
SAÍDA DE DADOS
Saída de Dados
92 UNIDADE IV
//código1
Exemplo de Entrada e Saída de Dados
import java.io.*;
...
try {
System.out.println(“Exemplo de Entrada e Saída de Dados”);
BufferedReader br = new BufferedReader (new
InputStreamReader(System.in));
varTexto = br.readLine();
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
BufferedReader br = new BufferedReader (new
InputStreamReader(System.in));
varNumero = Integer.parseInt (br.readLine ());
System.out.println (“Texto: “ + varTexto);
System.out.println (“Número: “ + varNumero);
}
catch (Exception e) {
varTexto = “”;
varNumero = 0;
} ...
A seguir, um exemplo de uso da classe Scanner para receber dados pelo teclado,
assim como feito no exemplo anterior para receber texto e depois valor numérico.
//código2
import java.util.Scanner;
...
Scanner s = new Scanner (System.in);
System.out.print (“Nome: “);
varTexto = s.nextLine();
...
MANIPULAÇÃO DE DADOS
93
//código3
import java.text.DecimalFormat;
...
DecimalFormat df = new DecimalFormat ();
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
df.applyPattern (“0.00”);
System.out.println (“Valor formatado: “ + df.format (varNumero));
...
//código4
import java.util.Scanner;
public class Teste {
public static void main(String[] args) {
Scanner input = new Scanner (System.in);
int x,y;
x = input.nextInt();
y = x * x;
System.out.printf(“Quadrado de %d é %d\n”, x,y);
}
}
* 0.5 ao invés de 0,5 na fórmula
** concatenação de strings com sinal + ao invés de vírgula
*** O mesmo nas linhas abaixo
Saída de Dados
94 UNIDADE IV
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
inicial de estudos, pois, pela grande quantidade de opções, é algo inviável.
É interessante conhecer opções e, de acordo com a necessidade, aumentar a
gama de bibliotecas que se utiliza na confecção de novos projetos, por meio de
pesquisas sobre alternativas que possam atender cada demanda que um novo
projeto possa gerar.
MANIPULAÇÃO DE DADOS
95
VETORES E MATRIZES
Vetores e Matrizes
96 UNIDADE IV
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
entre os dois tipos de estrutura.
Vetores são listas de valores com apenas uma dimensão, ou seja, seus valo-
res contêm apenas um índice para referência e busca dentro da estrutura. Mas
matrizes podem conter mais dimensões, sendo que cada uma necessita do uso
de um índice diferente para apontar a posição de valores dentro da estrutura
(MANZANO, 2011).
Assim, podemos declarar um vetor por meio de uma sintaxe semelhante à
indicada no exemplo a seguir:
//código5
tipo[] vetor = new int[quantidade];
Um exemplo para essa declaração de vetores pode ser dado por meio da
declaração indicada no código a seguir, no qual é declarado um vetor chamado
lista para depois ser instanciado como um vetor de 10 posições.
//código6
int[] lista = new int[10];
MANIPULAÇÃO DE DADOS
97
//código7
lista[5] = 50;
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Outra forma é por meio da atribuição de uma lista de valores a diversas posi-
ções do vetor diretamente, sem a necessidade da indicação de cada posição a ser
preenchida com estes valores indicados, como mostra o código 8, no qual são
passados dez valores para completar todo o vetor.
//código8
lista = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
Caso fosse informada uma lista com menor quantidade de valores, seriam
preenchidas apenas as posições necessárias do vetor, para acomodar todos os
valores pedidos e, caso a lista de valores informada seja maior que a capacidade
do vetor, os valores restantes são descartados.
No caso de uma matriz, muda-se apenas a parte sintática da instrução de
declaração desta estrutura, incluindo uma quantidade adequada de índices para
comportar todos os elementos desejados de forma organizada.
Um ponto interessante de imaginar é que podemos criar matrizes com duas,
três ou mais dimensões, gerando um pouco de dúvida em relação a como imagi-
nar a estrutura fisicamente. Por ser algo lógico e não físico, a linguagem suporta
tranquilamente diversas dimensões, bastando apenas que a forma de organização
dos dados dentro dela seja compreendida pelo programa durante a codificação.
A sintaxe básica para a declaração de uma matriz segue o modelo ilustrado
na Figura 9, na qual são utilizados, como de costume, termos genéricos para ele-
mentos que possam assumir diferentes nomes ou valores.
Vetores e Matrizes
98 UNIDADE IV
//código9
tipo[]...[] matriz = new tipo[quantidade]...[quantidade];
O uso das reticências foi adequado pelo fato de podermos criar matrizes
com duas ou mais dimensões, sendo que cada uma é representada por um par
[]. Um exemplo de matriz de duas dimensões é ilustrado no exemplo do código
a seguir, em que é declarada uma matriz de caracteres.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
//código10
char[][] = new char[3][3];
//código11
public class Vetor
{
MANIPULAÇÃO DE DADOS
99
Assim, por meio destes vários exemplos, foi possível compreender um pouco
mais desta linguagem de programação cheia de recursos, moderna e capaz de ser
utilizada juntamente com muitas das tecnologias de ponta dentro da área de TI.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Vetores e Matrizes
100 UNIDADE IV
CONSIDERAÇÕES FINAIS
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Na sequência de conteúdos, foi vista a parte que cita o mecanismo de entrada
de dados dentro da aplicação por usuários, sabendo que podem ocorrer entradas
por meios, como a leitura de dados em um arquivo, e via rede local ou Internet.
O mais importante é saber o conteúdo base para depois encaminhar os estu-
dos sobre os demais conceitos da linguagem e compreender, também, além do
método de entrada, o de saída, que é semelhante àquele, mas em caminho inverso.
Foram apresentados exemplos de saída de dados, mostrando a versatilidade
da biblioteca, a qual permite que sejam realizadas tarefas de diferentes manei-
ras na linguagem Java. Também foram tratados os detalhes de como estruturas
de dados mais complexas que variáveis são utilizadas na linguagem Java, com
exemplos para melhor aprendizado e conceitos diversos.
Exemplos demonstram variações no uso destas estruturas e servem para
introduzir todos ao conteúdo, mas não a dizer que é programador e já sabe tudo,
precisando, inclusive, de computadores para estas atividades. Vetores que repre-
sentam linhas de dados, enquanto que matrizes são consideradas de agrupamentos
de vetores, só que estas duas estruturas de dados devem ser consideradas como
estruturas semelhantes dentro de seus conceitos e aplicações.
Finalmente, na quinta unidade, serão tratados temas complementares ao
que é trabalhado nesta disciplina e na disciplina referente à segunda parte das
disciplinas do curso.
MANIPULAÇÃO DE DADOS
101
Vetores e matrizes são estruturas de dados muito úteis que permitem a solução de di-
versos problemas de armazenamento temporário de dados em memória de forma or-
ganizada e prática.
Imaginando seu uso em uma aplicação prática de programação, é possível usar matrizes
em jogos diversos, como no caso de caça-palavras, jogo da velha, damas, xadrez, batalha
naval e outros que necessitem de elementos dispostos em linhas e colunas.
Utilizando a ideia de alguns desses exemplos, podemos ter que, um tabuleiro de damas
ou xadrez possui 8 linhas e 8 colunas. Assim, teríamos que criar uma matriz 8x8 para
comportar elementos de um jogo de xadrez.
No caso de um jogo da velha, temos 3 linhas e 3 colunas para a inclusão dos símbolos
“X” e “O” para cada jogador na partida, tendo, então, que utilizar uma matriz 3x3 como
base para o jogo.
Jogos como caça-palavras e batalha naval podem ter tamanhos variados e necessitam
de matrizes com dimensões MxN, sendo M a quantidade de linhas e N a de colunas para
formar o tabuleiro para esses jogos.
Poderíamos, então, declarar matrizes diversas para servir como base para os jogos cita-
dos, utilizando instruções como as dos exemplos a seguir:
//código11
int tabuleiro [8][8];
char jogoDaVelha [3][3];
int batalhaNaval [M][N];
Material Complementar
104
REFERÊNCIAS
DEITEL, P.J. Java: como programar. 8. ed. São Paulo: Pearson Prentice Hall, 2010.
MANZANO, J. A. N. G. Java 7 - programação de computadores: guia prático de
introdução, orientação e desenvolvimento. São Paulo: Érica, 2011.
105
REFERÊNCIAS
GABARITO
COMPLEMENTOS E ESTUDO
V
UNIDADE
DE CASO
Objetivos de Aprendizagem
■■ Conhecer métodos de detectar e criar mecanismos para prevenir
erros.
■■ Compreender aspectos teóricos por meio da visualização de um
exemplo.
■■ Compreender algumas etapas da codificação de software em testes.
■■ Compreender algumas etapas da codificação de software como
manutenção, atualizações e liberação de novas versões.
Plano de Estudo
A seguir, apresentam-se os tópicos que você estudará nesta unidade:
■■ Tratamento de exceções
■■ Exemplo de aplicação
■■ Fase de testes
■■ Atualizações e novas versões
109
INTRODUÇÃO
Na unidade anterior, vimos que recursos de entrada e saída de dados muito bons
são disponibilizados por classes diversas para uso na linguagem Java, e estas
diversas alternativas mostram um pouco da variedade de opções tanto internas
à linguagem quanto externas, por meio de bibliotecas que podem ser importa-
das durante a codificação em linguagem Java.
Inicialmente, para complementar a ideia do uso de métodos para entrada e
saída de dados, é introduzido o conceito do tratamento de exceções que se refe-
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Introdução
110 UNIDADE V
TRATAMENTO DE EXCEÇÕES
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
comandos são próprios para
lidar com situações desse tipo,
capturando valores de retorno
referentes a diferentes erros, e
permitindo que o programador
possa lidar com esses valores no
próprio código.
Caso a exceção não possa
ser tratada por algum motivo
pelo próprio software, o sistema operacional também possui recursos para o tra-
tamento de diversos tipos de erros. Sabendo-se que podem ocorrer casos em que
nem o próprio sistema operacional possa lidar com estes e tenha problemas em man-
ter sua estabilidade, podendo chegar ao ponto de ocorrer travamento do mesmo.
O comando try é capaz criar uma situação controlada de funcionamento do
código de forma que seja possível a captura de erros com o comando catch, e seu
devido tratamento quando possível. Complementando o tratamento de erros,
temos o comando finally que é responsável por realizar o bloco de comandos
em caso de erros não ocorrerem e a execução do programa poder seguir nor-
malmente seu fluxo (DEITEL, 2010).
//código1
try {
<instrucoes>
}
catch (Erro1 <valor) {
<Instrucoes de tratamento>
}
catch (Erro2 <valor) {
<Instrucoes de tratamento>
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
}
finally {
<Instrucoes normais>
}
//código2
System.out.println (“X: “);
try {
BufferedReader br = new BufferedReader (new InputStreamReader(System.
in));
Altura = float.parseFloat (br.readline());
}
catch (Exception e) {
altura= 0;
}
Tratamento de Exceções
112 UNIDADE V
//código3
public void BuscaVetor(int i)
{
try
{
// Tentativa de busca de elemento em vetor
System.out.println(lista[i]);
}
// Comando que captura o erro retornado pela busca no vetor
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
catch(ArrayIndexOutOfBoundsException erro)
{
System.out.println(“Busca falhou”);
}
// Captura erro não ligado a busca no vetor
catch(Excecao erro)
{
System.out.println(“Erro inesperado”);
}
// Comando que encerra o tratamento de erros
finally
{
System.out.println(“executou finally”);
}
}
É possível implementar tratamentos de exceções de acordo com a necessidade
do software por meio do comando extend, que amplia a flexibilidade do tra-
tamento de exceções e permite maior personalização de feedbacks ao usuário
(DEITEL, 2010).
//código4
public class BuscaSemSucesso extends Excecao
{
// Sobrecarga de método Excecao para ampliação das exceções tratadas
public String getMessage()
{
return “Índice indicado não encontrado na lista”;
}
}
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
//código5
public void OutraBusca(int i)
{
try
{
System.out.println(lista[i]);
}
catch(BuscaSemSucesso erro)
{
System.out.println(erro.getMessage());
}
}
Tratamento de Exceções
114 UNIDADE V
valores fora da faixa aceita para o índice de busca podem ser verificados antes
mesmo da tentativa de busca no vetor.
//código6
public void OutraBusca (int i) throws BuscaSemSucesso
{
if(i>-1 && i<50)
{
throw new BuscaSemSucesso ();
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
}
else
{
System.out.println(lista[i]);
}
}
Existem métodos diversos para uso com o tratamento de exceções, podendo ser
encontrados na biblioteca classe java.lang.Throwable, na qual métodos como
printStackTrace() e getMessage() podem ser úteis e largamente usados.
O método printStackTrace() mostra informações de depuração da exceção,
como tipo de exceção, linha, método e classe na qual foi gerada.
Já o método getMessage() traz apenas uma mensagem padrão da exceção
gerada. Na codificação de novas exceções é possível personalizar textos a serem
retornados ao usuário.
//código7
public class BuscaEmLista
{
static public void main(String[] args)
{
new BuscaEmLista ();
}
BuscaEmLista ()
{
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Tratamento de Exceções
116 UNIDADE V
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
//código8
valor = -1;
Image[] imagens = new Image[10];
System.out.println(imagens[valor]); // Tentativa de índice negativo
System.out.println(imagens[10]); // Vetor conta de 0 a 9 neste caso
EXEMPLO DE APLICAÇÃO
Exemplo de Aplicação
118 UNIDADE V
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Veja como seria a aparência desejada para essa calculadora e como seria seu uso
por meio das imagens exemplo nas Figuras 2 e 3. Na Figura 3, um teste de exe-
cução é realizado para verificar se a funcionalidade da aplicação ocorre como
desejada.
Agora veja como ficaria o código em linguagem Java para desenvolver essa apli-
cação no código a seguir, lembrando que poderia ser feita de outras maneiras,
e em outras linguagens diferentes de programação, como C, C++, C#, PHP, etc.
Exemplo de Aplicação
120 UNIDADE V
//código9
public class Menu {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double n1, n2, resp;
char opcao;
System.out.println (“+-----------------+”);
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
System.out.println (“| Calculadora |”);
System.out.println (“+-----------------+”);
System.out.println (“| 7 8 9 |”);
System.out.println (“| 4 5 6 |”);
System.out.println (“| 1 2 3 |”);
System.out.println (“+-----------------+”);
System.out.println (“| + - * / |”);
System.out.println (“+-----------------+”);
n1= sc.nextDouble();
opcao = sc.next().charAt(0);
n2= sc.nextDouble();
System.out.println (“+-----------------+”);
switch (opcao) {
case ‘+’ : resp = n1+n2;
System.out.println (“Soma: “ + resp);
break;
case ‘-’ : resp = n1-n2;
System.out.println (“Subtração: “ + resp);
break;
case ‘*’ : resp = n1*n2;
System.out.println (“Multiplicação: “ + resp);
break;
case ‘/’ : resp = n1/n2;
Observe que nessa primeira versão do código temos uma calculadora bem
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
FASE DE TESTES
Fase de Testes
122 UNIDADE V
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Além disso, um erro que poderia ter ocorrido seria se, ao invés do uso do
tipo double para as variáveis, fosse utilizado o tipo int, por exemplo. Na ope-
ração de divisão, erros ocorreriam frequentemente. Por meio desses testes, é
possível verificar que um tipo de tratamento de erros deve ser realizado para
evitar o que ocorre na Figura 4, em que uma mensagem de erro é exibida em
função da divisão por zero.
//código10
case ‘/’ : if (n2 == 0)
System.out.println (“Operação inválida. Divisão por
zero”);
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
else
{
resp = n1/n2;
System.out.println (“Divisão: “ + resp);
}
break;
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Figura 5 - Ilustração da execução com tratamento de erro
Fonte: o autor.
//código11
import java.util.Scanner;
public class Calculadora {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double n1, n2, resp;
char opcao;
System.out.println (“+-----------------+”);
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
switch (opcao) {
case ‘+’ : resp = n1+n2;
System.out.println (“Soma: “ + resp);
break;
case ‘-’ : resp = n1-n2;
System.out.println (“Subtração: “ + resp);
break;
case ‘*’ : resp = n1*n2;
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
break;
default : System.out.println (“Operação Inválida”);
}
if (n2 != 0)
System.out.println (“+-----------------+”);
else
System.out.println (“+-----------------------------------+”);
}
}
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
quarta posição. Além de Javascript, que também surge com grande fatia de
mercado na sétima posição, com cerca de 3%.
Interessante analisar que Visual Basic.NET ocupa a sexta posição, com cer-
ca de 3,4%, e Assembly com aproximadamente mais 2,8%, observando que
antes estava na décima segunda posição, mostrando seu crescimento em
virtude da demanda por programação de hardware.
Aparecem também na lista, as linguagens PHP, que cairem muito nos últi-
mos tempos, Ruby e Perl. Somando essas três, temos cerca de 6,5%.
Fonte: adaptado de Tiobe ([2017], on-line).1
CONSIDERAÇÕES FINAIS
aplicação. Esse tratamento pode ser preventivo, para verificar erros na entrada
de dados com valores inválidos ou escolhas de opções inválidas em menus de
opções, por exemplo.
Nas saídas de dados podem ser verificados formatos e a aparência de dados
gerados, além de resultados indesejados por meio da criação de mecanismos que
verifiquem os resultados antes de retorná-los ao usuário.
Depois, um exemplo completo de aplicação simples ajuda na compreensão
do conteúdo visto, reunindo diversos aspectos tratados durante o transcorrer
das unidades do livro. Em um primeiro momento, é apresentada a ideia do sof-
tware e seu código base para atender às necessidades e funcionalidades previstas
na definição do problema a ser resolvido.
Em seguida, foram sugeridos testes na aplicação para verificar a existên-
cia de inconsistências e problemas diversos que possam afetar seu uso durante
a manipulação por usuários em geral. Verificadas as inconsistências, é possível
pensar em meios de contornar esses problemas para melhorar a qualidade do
software e atender de melhor forma as demandas do projeto para gerar atuali-
zações de código.
Finalizando o material, é deixada a sugestão de que você tente implementar
novas alterações funcionais ou de aparência na aplicação, para gerar uma nova
versão mais completa da aplicação.
Considerações Finais
130
1. Dentro dos conteúdos tratados no material, existem testes citados no livro que
contemplam a verificação de erros em uma aplicação. Quais foram os testes
citados?
2. Uma das palavras reservadas da linguagem Java utilizada para o tratamento de
exceções é responsável por iniciar um ambiente controlado de execução do tre-
cho de código para permitir o tratamento de exceções. Como se chama esse
comando?
3. Erros e exceções podem ocorrer a todo momento em um programa, mas esses
podem ser previamente observados. O que seria criar um mecanismo de tra-
tamento preventivo de exceções?
4. Viu-se um exemplo de código para a geração de uma aplicação completa nesta
unidade. Foi utilizada alguma biblioteca na criação do código? Qual?
5. Um código criado não pode ser considerado definitivo. No caso de haver modi-
ficações no código utilizado neste livro para gerar uma nova versão da mesma
aplicação, qual poderia ser esse motivo?
MATERIAL COMPLEMENTAR
DEITEL, P.J. Java: como programar. 8. ed. São Paulo: Pearson Prentice Hall, 2010.
MANZANO, J. A. N. G. Java 7: programação de computadores - guia prático de intro-
dução, orientação e desenvolvimento. São Paulo: Érica, 2011.
REFERÊNCIAS ON-LINE
1
Em: <https://www.tiobe.com/tiobe-index/>. Acesso em: 31 mai. 2017.
GABARITO