Você está na página 1de 25

Curso: Engenharia de Produo

Disciplina: Introduo Informtica


Autor: Tiago Arajo Neves
DI: Bruna Canabrava
Aula 2
Variveis e Entrada/Sada de Dados

Meta
Expor os conceitos iniciais para criao dos primeiros programas

Objetivos
Aps esta aula, voc dever ser capaz de:
1. Criar programas capazes de fazer operaes matemticas e textuais;
2. Utilizar variveis na construo de um programa;
3. Fazer com que os algoritmos interajam com o usurio.

1 Sintaxe Bsica

Para construir programas em Java (ou em qualquer outra linguagem de programao)


sempre necessrio seguir a sintaxe da linguagem (no caso a sintaxe de Java). A sintaxe
o conjunto de regras que dizem se um programa pode ou no ser executado por um
computador. Observe as seguintes frases: 1) O livro da capa dura vermelho. 2) dura
da vermelho . capa livro O. fcil perceber que a frase dois simplesmente uma
permutao dos termos da frase um, porm, a frase dois no tem nenhum sentido. Neste
caso uma simples mudana na ordem dos termos tornou a frase sem sentido sendo que
mesmo pode ocorrer nas linguagens de programao. Pequenas mudanas podem fazer
com que os programas no possam ser executados pelo computador. Por isso voc deve
sempre ficar atento com erros de sintaxe.

1
Para exemplificar, vamos comear refazendo um dos programas da aula Passada. A
Figura 2.1 mostra um programa Java que escreve na tela a seguinte Mensagem: O
Primeiro Programa foi executado com sucesso

Figura 2.1 Programa inicial para impresso.

O primeiro conceito da sintaxe que voc ir aprender o conceito de comentrio. A Figura


2.2 mostra o mesmo cdigo da Figura 2.1, porm com a insero de comentrios. Foram
inseridos ao todo cinco comentrios. Dois para marcar o incio e fim da Classe, dois para
marcar o incio e fim da funo e um para marcar a instruo a ser executada.

Figura 2.2 Programa Inicial para impresso Comentado

Os comentrios no so nada mais que texto inserido no arquivo do programa, mas que
no faz parte do programa. Isto significa que, apesar de estar dentro do cdigo fonte,
estes comentrios sero ignorados pelo compilador no momento de construir o programa.
Comentrios so uteis para inserir informaes para outras pessoas que lero o cdigo
ou para colocar informaes sobre o prprio cdigo, como por exemplo quem foi o autor,
data em que foi feita, etc.

2
Os comentrios em Java podem seguir duas sintaxes distintas. A primeira utilizada para
comentrios de linha e expressa da seguinte maneira:
//texto que servir como comentrios
Este tipo de comentrio sempre comea com duas barras e no pode ter mais do que
uma linha, logo so indicados para informaes simples. No exemplo dado na Figura 2.2,
todos os comentrios so de linha.

A segunda sintaxe utilizada para comentrios de blocos, ou seja, para mais do que uma
linha. Este tipo de comentrio pode ser expresso da seguinte maneira:

/*
texto
que
servira
como
comentrios
*/
Este tipo de comentrio sempre comea com /* e termina com */. Eles podem
compreender vrias linhas e so indicados para explicaes mais detalhadas do cdigo.

Atividade
Para verificar que os comentrios no influenciam na execuo dos programas use o
exemplo que voc criou na aula 1 (Figura 2.1) e insira nele um comentrio qualquer. Se
voc utilizar um comentrio de bloco certifique-se de que no colocou nenhuma parte
vlida do programa dentro do bloco comentado. Compile o programa utilizando o
comando javac, e execute o programa utilizando o comando java, exatamente como
feito na primeira aula. Voc vai ver que o resultado o mesmo com ou sem os
comentrios.

Fim da atividade

3
As chaves ({ e }) em Java so as marcaes de incio e fim de um bloco. Um bloco
nada mais do que um conjunto composto por zero ou mais instrues. Como pode ser
observado nas Figuras 2.1 e 2.2 exitem dois pares de chaves, indicando a existncia de
dois blocos aninhados. As chaves mais externas so as chaves da Classe e as mais
internas so as chaves da funo main. Todo bloco aberto deve ser devidamente fechado,
portanto, certifique-se de que todas as chaves abertas tem os pares correspondentes.
Como dito anteriormente, as estruturas de Classe ( public class) e de funo (public static
void main(String[] args)) sero explicadas em momentos mais oportunos. Por enquanto,
trate estas duas partes como sintaxe obrigatria para a construo dos programas Java.

Incio Verbete
Aninhar, no contexto de programao, o ato de colocar estruturas dentro de outras
estruturas. No caso das Figuras 2.1 e 2.2, a funo est aninhada dentro da classe.
Fim verbete

O nome da classe, no entanto, merece uma explicao. Voc j aprendeu que o nome da
classe tem que ser o mesmo nome do arquivo. Contudo, nem todo nome pode ser
utilizado. Dentro da computao, existe um conjunto de regras utilizado para dar nomes
para as diversas estruturas como algoritmos, variveis, funes, etc. Os nomes utilizados
so os chamados identificadores vlidos.

inicio Verbete
Identificador vlido
Conjunto de caracteres composto por letras, nmeros e o caractere sublinhado (_). Este
conjunto sempre comea com uma letra e no pode conter espaos Deitel; Deitel (2011).
Fim Verbete

Um ponto importante sobre identificadores vlidos que eles devem, na medida do


possvel, expressar claramente a finalidade para a qual sero utilizados. Por exemplo:
suponha que voc est criando um programa para calcular a raiz quadrada de um
nmero. Qualquer identificador vlido pode ser utilizado para dar nome para a classe
deste programa, como a1b2, abcd ou ainda RaizQuadrada. Contudo, considerada uma
boa prtica, principalmente na computao, escolher identificadores que expressem com

4
clareza a finalidade do algoritmo. Neste caso, o identificador RaizQuadrada seria o mais
indicado. importante ressaltar que Java sensvel as letras capitais. Assim os
identificadores RaizQuadrada e raizQuadrada so considerados diferentes. Voc deve se
certificar que, onde os nomes devem ser iguais, eles apaream com as letras maisculas
nos lugares certos.

O conceito de identificador vlido ser sempre utilizado para dar nomes s classes,
variveis e funes. Portanto, necessrio sempre ter este conceito em mente.

inicio atividade
Atividade 1 Atende ao Objetivo 1
Assinale V para verdadeiro ou F para falso, verificando se as seguintes cadeias de
caracteres so identificadores vlidos ou no.
( ) main
( ) a1b2
( ) 1a2b
( ) teste_1
( ) teste 1
incio resposta
Resposta comentada
A terceira cadeia de caracteres e a ltima no respeitam as regras de formao de
identificadores vlidos. A terceira comea com um nmero e a ltima contm espaos. As
demais opes satisfazem todas as regras, portanto so identificadores vlidos.
Fim atividade

2- Comando de impresso

Todo programa deve produzir pelo menos um resultado. Logo, necessrio um


mecanismo para que os programas possam exibir suas sadas. Um destes mecanismos
so os comandos de impresso. Este comando utilizado para enviar mensagens
simples para o usurio na forma de texto. Java dispes de muitos mecanismos para fazer
impresso. Dois dos mais comuns so os mtodos println e print. Estes dois mtodos
podem ser acessados atravs do objeto out, que se encontra dentro da classe System,
logo para acess-los necessrio utilizar o nome da classe (System), seguido de um

5
ponto(.), seguido do nome do objeto (out), seguido de outro ponto (.), seguido do nome do
mtodo (println ou print). Um exemplo do uso do println j foi dado na Figura 2.1, um
exemplo de uso do mtodo print apresentado na figura 2.3.

Figura 2.3 Usando o mtodo print

Note que os dois comandos possuem sintaxes de uso muito similares. A nica diferena
no uso o nome deles (print e println). Esta sintaxe de encadeamento atravs do
operador ponto (.) significa que estamos fazendo uma chamada ao mtodo (print) a partir
do objeto (out) que est dentro da classe (System). Isto significa que existe dentro do
programa uma classe System que possui um objeto out e, a partir deste objeto podemos
chamar o mtodo print. Esta sintaxe ficar mais clara quando voc estiver estudando
criao de objetos e classes. Por enquanto trate isso como sintaxe obrigatria sempre
que quiser imprimir algo. Os mtodos print e println imprimem a expresso que passada
entre os parntesis. No caso da linha 5 da Figura 2.3, a expresso passada foi
Impresso 1, ou seja, uma expresso de texto. Toda a expresso de texto em Java
sempre descrita entre aspas duplas, deste modo, sempre que for necessrio enviar uma
mensagem de texto para o usurio do seu programa, ela deve seguir a seguinte sintaxe:
mensagem.

6
Uma diferena entre os mtodos print e println o modo como eles expe as expresses.
Se voc compilar e executar o programa da Figura 2.3 ver que o resultado o seguinte:
Impresso 1 Impresso 2
Caso voc substitua o print por println nas linhas 5 e 6, o resultado ser o seguinte:
Impresso1
Impresso 2

Como pode ser percebido, o comando print exibe a expresso mas no muda de linha. J
o comando println sempre muda de linha ao terminar a expresso. Portanto, apesar de
terem sintaxes muito parecidas os mtodos println e print possuem usos distintos.

Outra coisa que voc deve observar na sintaxe bsica o uso do ponto e vrgula (;). Em
Java, sempre que queremos executar uma instruo, ela deve ser seguida de um ; . Note
por exemplo a Figura 2.1 . Neste caso s h uma instruo, logo no final dela deve haver
um ; . J na Figura 2.3 h duas instrues (duas chamadas do mtodo print), logo deve
haver dois ; (um para cada instruo). As instrues de um programa podem ser de vrios
tipos: criao de variveis, atribuio de valores, chamadas de mtodos (caso das figuras
mostradas at aqui), etc. Porm um dos pontos comuns entre as instrues o uso do
operador ; no final de uma instruo. No usar este operador um erro de sintaxe e o
compilador mostrar uma mensagem similar exposta na Figura 2.4 toda vez que voc
cometer este erro. Note que a mensagem indica o nome do arquivo em que o erro
ocorreu, seguido da linha onde o erro est localizado. Neste caso, o erro ocorreu na sexta
linha do arquivo TestePrint.java .

Figura 2.4 Erro exibido no terminal quando se esquece um ; no final da instruo.

7
Atividade
Faa um programa Java que escreva todas as partes do seu nome (nome, sobrenome) na
mesma linha.
Faa tambm um segundo programa que escreva cada parte do seu nome em uma linha
diferente.
Incio da Resposta
Para fazer estes programas tudo o que voc deve fazer utilizar corretamente os
mtodos print e println. Suponha que o seu nome seja Joo da Silva.

Para o primeiro exerccio uma possvel soluo seria a seguintes

Note que esta soluo utiliza duas vezes o mtodo print e uma vez o mtodo println.
Como o mtodo print no muda de linha o texto da ser escrito na mesma linha do
texto Joo, logo aps este ltimo. De modo anlogo, o texto Silva ser mostrado logo
aps o texto da , visto que o mtodo utilizado para imprimir da no muda de linha. O
ltimo texto escrito com o mtodo println, que muda de linha, mas como no h nada
mais a ser escrito, esta mudana de linha no interfere no resultado.

Existem outro modos de se fazer esta questo. Um dos mais simples utilizar somente
uma chamada do mtodo print contendo todos os elementos do seu nome na mesma
expresso de texto (System.out.print(Joo da Silva);). Ambas as maneira esto corretas,
logo, qualquer uma pode ser considerada como soluo deste problema.

8
Para o segundo exerccio, utilize a soluo do primeiro substituindo as chamadas do
mtodo print por chamadas de println.

Fim da Atividade

Um outro exemplo de uso dos mecanismos de impresso pode ser visto na Figura 2. 5.
Neste caso, o programa feito para exibir o resultado final de uma expresso aritmtica.

Figura 2.5: Imprimindo resultado de uma expresso.

No caso da Figura 2.5, o que exibido para o usurio o numero 12, que o resultado
da avaliao da expresso 5 + 7. O resultado obtido por este programa ocorre porque o
comando para imprimir (mtodo println) executado depois que todas as operaes
forem efetuadas. Normalmente, os comandos so executados da esquerda para a direita
(do mesmo modo como escrevemos e lemos uma linha na cultura ocidental), exceto
quando h precedncias diferentes envolvidas. As chamadas de mtodos tm
precedncia menor que as operaes aritmticas, logo a soma executada primeiro e, s
depois, o resultado da soma exibido para o usurio.

Inicio Verbete
Precedncia
(de operaes) - Regra que estabelece em que ordem as operaes so efetuadas. Um
exemplo clssico so as precedncias da soma e da multiplicao na Matemtica. A
expresso 2 + 3 x 5 tem a operao de multiplicao executada primeiro, apesar de a

9
referida multiplicao estar mais direita da soma. Isto ocorre porque a precedncia da
multiplicao maior que a da soma.
Fim Verbete

Um exemplo interessante do mtodo println para diferentes tipos de informao pode ser
visto na Figura 2.6. Note que na figura h duas chamadas do mtodo println. Como vimos,
algoritmos podem conter mais de uma instruo em seu corpo. Nestes casos, a execuo
feita sequencialmente de cima para baixo (exceto em casos especficos, que veremos
em outra aula).

Figura 2.6: Imprimindo tipos diferentes de informao

Na primeira linha, exibido o texto 5 + 7 e, na linha subsequente, exibido o nmero 12.


Como visto, cada chamada de println muda de linha aps exibir mensagens para o
usurio. Portanto, se temos duas chamadas, deveremos ter duas linhas exibidas. Na
primeira, exibido o texto 5+7, porque no programa esta expresso aparece entre aspas,
indicando que a expresso a ser impressa uma expresso de texto. Na segunda linha, a
ausncia das aspas indica que expresso a ser impressa o resultado de uma operao,
neste caso, aritmtica. Assim, a sada para o usurio mostrada da seguinte maneira:

5+7
12

Fim atividade

10
Diversas operaes aritmticas podem ser utilizadas no comando imprimir. A Tabela 2.1
mostra as operaes aritmticas, seus respectivos operadores, exemplos de uso,
significado e precedncia. Quanto maior a precedncia de um operador, maior a
prioridade para sua execuo. Note que vrios operadores tm a mesma precedncia. No
caso de expresses compostas somente por operadores de mesma precedncia, a
expresso avaliada da esquerda para a direita.

Tabela 2.1 Precedncia de operadores

Incio BOX explicativo


A operao Mdulo da diviso tambm chamado de resto da diviso ou Modulus.
Quando fazemos uma diviso de dois nmeros inteiros, obtemos dois resultados: um
quociente e um resto. Para acessarmos o QUOCIENTE, usamos o operador / . Para
acessarmos o RESTO, usamos o operador %. importante mencionar que o operador
modulus s pode ser usado para diviso com nmeros inteiros. A diviso entre dois
nmeros reais sempre um nmero real; portanto, esta diviso no tem resto e o
operador modulus perde o sentido. Logo, para diviso de nmeros reais, deve-se usar
somente o operador de Quociente /.
Fim BOX

Em alguns casos, necessrio mudar a ordem de avaliao das expresses aritmticas.


Para este fim, utilizam-se os parnteses. Assim, uma expresso do tipo (2+3)*5 tem a
soma avaliada primeiro. importante mencionar que em Java, diferentemente da
matemtica, no existem outros operadores para mudar a precedncia de avaliao. A
matemtica usa, alm dos parnteses, colchetes e chaves. Ex: 7 x { [ ( 2 + 3 ) * 5 ] - 1 }.
Em Java, como existe apenas o operador parnteses, a expresso anterior ficaria do
seguinte modo: 7 * ( ( ( 2 + 3 ) * 5 ) - 1 ). Neste caso, os parnteses mais internos so
resolvidos primeiro. Assim, a primeira operao a soma 2+3. O resultado desta soma

11
ento multiplicado por 5. Do resultado da multiplicao, subtrada uma unidade e, por
ltimo, feita a multiplicao por 7.

inicio BOX de ateno


Em Java, nmeros reais so expressos com um ponto (.) separando a parte inteira da
parte decimal.
fim BOX

incio atividade
Atividade 3 Atende ao Objetivo 1
a) Avalie o resultado das seguintes expresses:

1 + 2 * -1

1*2 / 3

1+4 * 5 2

1%2 -1

b) Indique o resultado das seguintes expresses. Considere que somente nmeros


inteiros so utilizados:
2+3*4
(2+3)*4
2+3/4-1
2+3/(4-1)
(4%(3-2))*1
4%3-2*1

c) Coloque parnteses na expresso a seguir, de modo que o resultado seja final seja 71:
3+6*8-3 /7-4

12
Resposta comentada
a) -1, 0, 19 e 0. Na primeira expresso, o -1 avaliado primeiro; em seguida, a
multiplicao por 2 e, por ltimo, a soma com 1. No segundo caso, a multiplicao feita
primeiro, resultando em 2. Em seguida, tomado o quociente da diviso de 2 por 3, que
resulta em zero. Na terceira expresso, a multiplicao feita primeiro; em seguida, a
soma e, por ltimo, a subtrao. No quarto caso, o mdulo da diviso resolvido primeiro.
Como o resto da diviso de 1 por 2 resulta em 1, ao subtrairmos 1, obtemos zero como
resultado final.
importante mencionar que o operador de resto da diviso s pode ser utilizado para
nmeros inteiros, de modo que 1/2 resulta em 0 e 1%2 resulta em 1. Se estes nmeros
forem reais, o resultado um nmero real. Deste modo, 1.0/2.0 resulta em 0.5.
b) 14, 20, 1, 3, 0,-1
c) ((3 + 6) * 8) - 3 / (7 - 4)
fim atividade

3- Variveis

Variveis so posies de armazenamento (memria) associadas a um identificador


(nome) que so utilizadas para guardar informaes (valores). Em linguagens fortemente
tipadas (JAVA e c++, entre elas), as variveis so tambm associadas a um tipo, que
exprime qual a natureza da informao presente naquela posio de memria (nmero
inteiro, nmero real, texto, etc.). A sintaxe de declarao de variveis em java so as
seguintes:

tipo nome;
tipo nome1, nome2, , nomen;

A primeira utilizada para declarar uma nica varivel de um determinado tipo. A segunda
declara vrias variveis de um mesmo tipo. Note que necessrio o uso do ; no final de
ambas as declaraes.

Dentre os tipos que so utilizados com maior frequncia so:


- int (para nmeros inteiros),
- double (para nmeros reais de preciso dupla),

13
- boolean (para valores lgicos/booleanos),
- String (para conjuntos de caracteres).

Incio Box explicativo


O tipo lgico, tambm chamado de booleano, pode assumir dois valores: Verdadeiro (true)
ou Falso (false). So comumente utilizados em estruturas de controle, como desvio e
repetio, para verificar a veracidade de certas sentenas. Estas estruturas sero vistas
em momentos oportunos.
Fim Box

Java possui outros tipos de dados como byte, short, long, float e char, alm de uma srie
de tipos de dados compostos, porm estes tipos no sero explicados neste momento.
Caso voc esteja interessados em saber em que casos estes outros tipos so utilizados
voc pode consultar informaes em Deitel; Deitel (2012) ou procurar na Internet.

Deste modo, uma declarao de uma varivel inteira para armazenar a idade de uma
pessoa em anos pode ser feita da seguinte forma: int idade . De modo semelhante, a
declarao de duas variveis reais para expressar o salrio de uma pessoa e sua altura
em metros pode ser feita do seguinte modo: double salario, altura .

Na computao, uma varivel uma posio de armazenamento (uma parte da memria


RAM) e o valor da informao armazenado nesta posio pode mudar ao longo da
execuo de um programa. Neste sentido, as variveis computacionais so semelhantes
s variveis utilizadas em funes na matemtica, visto que nas funes, as variveis
podem assumir diferentes valores.

Para modificar os valores das variveis, utilizada a operao de atribuio, para a qual
Java utiliza operador =. A atribuio pode ser feita no momento da criao de uma
varivel ou em qualquer outro ponto do programa. Assim, se em alguma parte de um
cdigo escrevermos
...
int idade =3;
System.out.println(idade);

14
...
ou

int idade;
idade=3;
System.out.println(idade);

o resultado ser o mesmo. O que ser exibido o valor da informao contido na varivel
idade. Neste caso, 3.

incio box ateno


Diferentes linguagens de programao possuem diferentes tipos e diferentes operadores.
preciso ficar atento com detalhes de sintaxe no momento de transcrever algoritmos em
cdigo fonte. Por exemplo, Java utiliza o operador = para atribuies. Para esta mesma
operao a linguagem Pascal utiliza o operador := .
fim box

A Figura 2.7 mostra um programa no qual o valor de uma varivel modificado. Na quinta
linha do cdigo, criada uma varivel chamada a e atribuda a esta varivel o valor 3. Em
seguida, o valor de a exibido. A stima linha modifica o valor de a para 4. Por ltimo, o
novo valor de a exibido novamente.

Figura 2.7 Programa que faz mudana no valor de uma varivel

15
Assim, o que exibido pelo programa da Figura 2.7 so as seguintes linhas:

3
4

Tambm possvel utilizar variveis em expresses aritmticas e para compor textos


mais complexos. A Figura 2.8 mostra um programa que faz uso de variveis em
expresses matemticas e em construo de textos compostos.

Figura 2.8 Expresses com variveis numricas e textuais

Na quinta linha do cdigo, so declaradas trs variveis inteiras: a, b e c. Para a e b, so


atribudos valores iniciais. Na sexta linha, criada uma varivel textual que contm a
expresso O resultado da soma : . Na stima linha, calculada a soma entre os
valores contidos nas variveis a e b, e o resultado desta soma armazenado em c. Isto
ocorre porque o operador de atribuio tem precedncia menor que o operador de soma,
logo a soma feita primeiro. Na linha oito do corpo, est o comando
System.out.println(t1+c);, que exibe a concatenao do texto contido em t1 com o valor
contido em c. Assim, o que exibido para o usurio a expresso O resultado da soma
: 6 . Note que, apesar de a operao de concatenao tambm utilizar o operador +, o
que est sendo feito no a soma entre um texto e um nmero, e sim a justaposio de
um texto com um nmero. A operao de concatenao pode ser utilizada tanto entre
nmeros e texto quanto entre textos. O fato de um mesmo operador (neste caso, o +)
poder ser utilizado para mais de uma operao se deve Sobrecarga de Operadores.

16
incio verbete

Sobrecarga de operador
Utilizar um operador para mais de uma operao. O operador , por exemplo, pode ser
utilizado para duas operaes, de acordo com a Tabela 2.1: A subtrao e a inverso de
sinal. O contexto indica a qual operao o operador se refere em um trecho de cdigo.
fim verbete

Alm da operao de concatenao, outra operao comum em textos o acesso aos


caracteres. Exemplo: suponha que temos uma varivel de texto t1 com a expresso
abcde. Para termos acesso somente letra a, utilizamos a sintaxe t1.charAt(0). Para
acessarmos a letra b, utilizamos t1.charAt(1), e assim por diante at t1.charAt(4), que
retorna letra e.

Incio Box
Na computao, existem linguagens em que a contagem de caracteres de texto comea
em 0 (c++, JAVA) e em 1 (Pascal). preciso ateno para adaptar algoritmos para as
caractersticas da linguagem utilizada.
fim box

Uma String em Java um objeto que armazena um conjunto de caracteres. Ao invocar o


mtodo charAt para um determinado objeto, passando como parmetro uma posio
desejada, recebemos como resposta o caractere contido na posio desejada que est
armazenado dentro do objeto a partir do qual o mtodo foi invocado. Neste sentido pode-
se ter mltiplas variveis do tipo String, cada uma contendo um texto diferente, e pode-se
chamar o mtodo charAt para cada um deles, sem que um interfira na execuo do outro.

A Figura 2.9 mostra um programa que faz uso do acesso a caracteres. Neste exemplo,
exibido para o usurio a primeira letra do primeiro texto a e em seguida exibido o
texto a primeira letra do segundo texto x. Note que o mtodo charAt(0) utilizado para
as duas variveis de texto (t1 e t2) e que ele retorna o primeiro caractere de cada uma
delas corretamente. Em cada uma das chamadas o mtodo charAt(0) retorna a primeira
letra do texto a partir do qual ele foi invocado. Na linha 9 da Figura 2.9 este mtodo

17
chamado a partir do objeto t1, logo ele ira retornar a primeira posio do texto contido em
t1. Como na linha 10 ele invocado a partir do objeto t2, ele retornar um dos caracteres
relativos a t2.

Figura 2.9 Programa que faz uso do acesso aos caracteres de uma varivel do tipo
String.

Outros mtodos relativas a textos que so frequentemente uteis so length que retorna o
nmero de caracteres que um texto possui e compareTo que compara dois textos. So
diversos os mtodos disponveis para uso na API Java e por isso, frequentemente ser
necessrio que voc consulte a documentao desta API. Esta documentao, que pode
ser encontrada em (Oracle 2014), se trata de um catlogo que contm as classes
disponveis, os mtodos de cada classe, suas descries e exemplos de uso.

incio atividade
Atividade 4 Atende ao Objetivo 2 e 3
1)Faa um programa para exibir o seu nome;
2)Faa um programa que imprima em uma linha o seu nome normalmente e em outra
linha imprima como feito na lngua inglesa. Use variveis de texto. Exemplo: para o
nome Joo Souza Silva, o algoritmo deve imprimir em uma linha Joo Souza Silva e na
outra Silva, Joo Souza.
Incio resposta

Resposta comentada
Como a primeira questo parte da segunda, apenas a soluo para a segunda atividade
ser apresentada.

18
Neste programa, trs variveis textuais so utilizadas: uma para guardar o nome, uma
para guardar o nome do meio e outra para guardar o ltimo nome. A linha 10 imprime a
concatenao das trs variveis. A linha 11 imprime a concatenao das trs intercaladas
por espaos. J a linha 12 imprime o nome como feito na lngua inglesa. A sada deste
programa mostrada a seguir:
JooSouzaSilva
Joo Souza Silva
Silva, Joo Souza

Note que a simples justaposio das variveis (linha 10) provoca uma sada imcompatvel
com a soluo desejada, portanto necessrio intercalar estas variveis com espaos em
branco ( linha 11).

Fim atividade

4 Comando de Leitura

Muitas vezes, necessrio interagir com os algoritmos, dando a eles dados para sua
execuo. Um exemplo comum disso o fornecimento do endereo de um site que
queremos visitar para o navegador. Para este fim, utiliza-se comandos de entrada ou de

19
leitura. Java possui vrios modos de leitura. Os primeiros que veremos so os mtodos
next da classe Scanner. Os principais mtodos que utilizaremos sero: next, que retorna
um texto (String) lido; nextInt que retorna um nmero inteiro (int), nextDouble que retorna
um nmero decimal (double); nextBoolean que retorna um valor lgico (boolean).

Para usar estes mtodos necessrio a criao de um objeto do tipo Scanner. Java
possui uma infinidade de classes prontas para o uso, sendo a classe Scanner uma delas.
Quando utilizamos classes que no estamos definindo no arquivo corrente necessrio
informar ao compilador onde encontrar estas classes. Isso feito atravs do comando
import, que deve ser usado com a seguinte sintaxe:

import endereo;

Isto faz com que o compilador procure a classe que se deseja utilizar no endereo
passado. Para a classe Scanner especificamente, o endereo java.util.Scanner. O
comando import deve ser usado no comeo do arquivo, antes da definio da classe.
Logo para utilizar a classe Scanner devemos colocar a seguinte linha antes da definio
da nossa classe.

import java.util.Scanner;

A sintaxe de criao de objetos a mesma utilizada para a criao de variveis, ou seja,


tipo nome. Neste sentido para criar um objeto do tipo Scanner chamado entrada basta
usar a o seguinte comando.

Scanner entrada = new Scanner(<fonte>);

20
A inicializao de um objeto, como pode ser observado, um pouco diferente da
inicializao de uma varivel. A inicializao de uma varivel feita atravs do operador
de atribuio (=) seguido de um valor. A inicializao de um objeto feita atravs do
operador de atribuio seguido de uma chamada de construtor. O construtor da classe
Scanner pede que seja informada uma fonte. Os dados podem ser lidos de diversas
fontes nos computadores: teclado, arquivos, Internet, etc. Para ligar o objeto entrada ao
teclado basta substituirmos a fonte na chamada do construtor por System.in, ficando
assim a criao do objeto entrada:

Scanner entrada = new Scanner(System.in);

Esta linha significa que esta sendo criado um objeto chamado entrada, do tipo Scanner,
ligado ao teclado. Logo este objeto responsvel por tratar as informaes que sero
digitadas. Questes como a criao de objetos e uso de construtores entre outras sero
exploradas em mais detalhes em momento oportuno, por enquanto trate o new Scanner
(System.in); como sintaxe obrigatria.

Agora que voc j sabe criar um objeto do tipo Scaner basta usar os mtodos associados
a ele (next (), nextInt(), nextDouble(), etc) para armazenar em variveis os valores
digitados no teclado.

Estes mtodos permitem que o usurio digite valores e que o resultado desta digitao
seja convertido para um tipo de dado da linguagem Java. O mtodo nextDouble(), por
exemplo, converte o valor digitado para um nmero do tipo double. O resultado desta
converso pode ser armazenado em uma varivel atravs do operador de atribuio.
importante mencionar que estes mtodos so bloqueantes, ou seja, enquanto o usurio
no inserir uma informao, o programa no prossegue sua execuo.

21
A Figura 2.10 mostra um exemplo de uso do mtodo nextDouble(). Neste programa, dois
valores so lidos do teclado e armazenados nas variveis a e b. Em seguida, calculada
e exibida a soma dos valores digitados.

Figura 2.10 Exemplo de uso do mtodo nextDouble()

Note que, a princpio, no possvel determinar o que vai ser exibido pelo programa da
Figura 2.10. Neste caso, a resposta exibida depende de quais informaes sero
inseridas pelo usurio. Caso sejam inseridos para a e b os valores 2 e 3 respectivamente,
o algoritmo ir exibir como sada o valor 5. Caso sejam fornecidos os valores 4.1 e 8.2,
ser exibido o valor 12.3, e assim sucessivamente.

Incio atividade
Atividade Final Atende todos os objetivos

1- Faa um algoritmo que leia um nmero inteiro x e imprima o oposto dele, ou seja, -x.

2 - A tenso em um cabo que suporta um peso dada pela equao a seguir, onde T
tenso; w, o peso; d, Lp e Lc so distncias. A figura seguinte mostra como posicionar as
distncias e o peso. Faa um algoritmo que leia todos os dados necessrios e calcule a
tenso no cabo. Suponha que os valores digitados sero sempre vlidos, ou seja,
nenhum valor negativo ser passado, nem catetos maiores que hipotenusas, etc. Obs:

Em java, a x dada pela funo Math.sqrt(x).

22
WLpLc
T=
d Lc 2 d 2

Incio resposta
Resposta Comentada
Questo 1
O modo mais simples de resolver esta questo armazenar o valor lido em uma varivel
e fazer a inverso no prprio comando de impresso. Uma possvel resposta para o
problema apresentada a seguir.

Note que h dois operadores na expresso passada para o mtodo println: o operador de
concatenao (+) e o operador de inverso de sinal(-). Neste caso, os parntesis so
utilizados apenas para explicitar a ordem das operaes. Caso voc retire os parntesis

23
em envolvem o -numero, o resultado permanece o mesmo devido ao fato de que as
expresses aritmticas terem precedncia maior do que a concatenao. Portanto, neste
caso, primeiro se faz a inverso de sinal, em seguida a concatenao e, por ltimo, o
resultado da concatenao impresso.

Questo 2
Apesar de que a informao dada na segunda questo sobre valores negativos e a
relao entre as distncias ser bvia, muitas vezes, o tratamento destas questes acaba
por roubar o foco dos programadores. De fato, um programador que trabalha em
produo de software passa mais tempo tentando impedir o usurio de fazer coisas
erradas do que programando o ncleo do software. Como o objetivo desta disciplina
introduzir voc ao mundo da programao, as tcnicas usadas para evitar estes erros no
sero abordadas. Para as atividades desta disciplina, voc pode assumir que o usurio
dos programas, que em muitos casos ser voc, no far nada que seja invlido.

No que tange resoluo do exerccio, a nica dificuldade que existe transformar a


equao da tenso da forma matemtica, como ela foi apresentada, para uma forma
computacional. Uma das possveis solues para este problema seria o seguinte
algoritmo:

24
Note que a expresso escrita linearmente, tendo o denominador e numerador
delimitados por parntesis. As potncias da expresso tambm foram substitudas por
multiplicaes simples. Mais adiante veremos exemplos onde sero utilizadas funes
para calculo de potncias de maneira mais natural.
Fim atividade

Resumo

Nesta aula, voc aprendeu a sintaxe bsica de programas Java, inserir comentrios e a
lidar com a precedncia de operaes. Tambm aprendeu o conceito de varivel, como
declarar uma varivel e como alterar seus valores. Por fim, aprendeu a utilizar os
comandos de leitura e escrita, que possibilitam escrever algoritmos que interagem com o
usurio.

Informaes sobre a prxima aula

Na prxima aula, voc ver como lidar com situaes em que devemos executar trechos
de programas dependendo de certos resultados e situaes. Para isso, sero introduzidas
as estruturas de desvio de fluxo.

Referncias

Ascencio, A. F. G.; Campos, E. A. V. Fundamentos da Programao de Computadores.


So Paulo: Pearson, 2012.
Cormen, T. H. et al. Introduction to Algorithms. 3rd Edition. Cambridge: MIT Press, 2009.
Deitel, P; Deitel, H. Java: How to Program. 9 Edio. Boston: Prentice Hall , 2012.
Farrer, H. et al. Programao Estruturada de Computadores. 2 Edio. Rio de Janeiro:
Guanabara, 1989.
Oracle Documentation, Java 7 API. Disponvel em
http://docs.oracle.com/javase/7/docs/api/, Acessado em Novembro de 2014.

25