Laboratório de Programação - PUC-SP

Propaganda
Interação com o Usuário
1
Laboratório de
Programação
Dr. Italo Santiago Vega
Curso de Graduação
Ciência da Computação
Pontifícia Universidade de São Paulo
Copyright © 1998-2004, Italo S. Vega
c
Copyright °1998-2004,
Dr. Italo S. Vega
Abril de 2004
Interação com o Usuário
1-1
Semana
Data
1
2004-02-18
2
3
4
5
6
7
8
9
10
11
I 12
13
14
15
16
17
18
19
20
2004-02-25
2004-03-03
2004-03-10
2004-03-17
2004-03-24
2004-03-31
2004-04-07
2004-04-14
2004-04-21
2004-04-28
2004-05-05
2004-05-12
2004-05-19
2004-05-26
2004-06-02
2004-06-09
2004-06-16
2004-06-23
2004-06-30
c
Copyright °1998-2004,
Dr. Italo S. Vega
Tópico
"Apresentação: computação e programas. Bibliografia. Avaliação."
"RECESSO: Carnaval."
"Organização de informações. Ambiente Java."
"BlueJ: familiarização e computação com objetos."
"Variáveis; valores; expressões."
"Representação de computações. Seleção simples (teoria)."
"Seleção dupla."
"Seleção múltipla."
"Iteração com contador."
"RECESSO: Dia de Tiradentes."
"Iteração com sentinela."
"Comunicação com o usuário."
Abril de 2004
Interação com o Usuário
c
Copyright °1998-2004,
Dr. Italo S. Vega
1-2
Abril de 2004
Interação com o Usuário
2
Conteúdo
1 Módulo console
3
2 Serviços de Objetos Keyboard
11
3 Aplicações com o Módulo console.jar
17
Objetivos • Apresentar uma biblioteca de interação com o usuário.
• Estudar exemplos de uso da biblioteca.
c
Copyright °1998-2004,
Dr. Italo S. Vega
Abril de 2004
Interação com o Usuário
3
1 Módulo console
A interação básica entre um usuário e um sistema computacional envolve a presença de
um mecanismo para entrada de dados e comandos, e outro para apresentação dos
resultados da computação. Tais mecanismos são normalmente conhecidos pelos nomes
keyboard e screen (respectivamente). A Figura a seguir ilustra o padrão do fluxo de
informação entre usuários e sistemas computacionais que se utilizam destes
mecanismos.
Screen
Keyboard
Usuário
console
Dá-se o nome de console ao conjunto keyboard-screen.
c
Copyright °1998-2004,
Dr. Italo S. Vega
Abril de 2004
Interação com o Usuário
4
Do ponto de vista de programação, entretanto, trabalha-se com abstrações destes
mecanismos. O módulo console contém a classe Keyboard que pode ser utilizada
em um programa para acesso aos mecanismos físicos de interação de entrada do
sistema computacional.
O •m€ó‚dˆu„lo
ˆt‰r€aˆr‡
€o
€a€cesŒs€o
€e“nˆt‰r€a€d€a‡
c
Copyright °1998-2004,
Dr. Italo S. Vega
console
€a€oš
€eœx‰te‰r’n€a‡
€o†fe‰r€ece ˆr€ec‰uˆrŒs€oš Œp€aˆr€a‡ €a€d’mˆi’nˆiŒš€dˆiŒsŒp€osˆiˆt‰i’v‚oš
€co”m‡
€o
€d€e
ŒsˆiŒsˆte“m€a‡
€co”mˆu’nˆi€ca€çã€o
€d€e
€co”mŒpˆuˆta€c‰i€o”n€a„l.
Abril de 2004
Interação com o Usuário
5
Pacote console.jar Para ser utilizado no ambiente Java, este módulo foi
codificado no pacote console.jar, que disponibiliza a classe Console e duas
interfaces desta classe para interação entre um usuário e uma aplicação: Keyboard e
Screen (Figura a seguir).
Este módulo
corresponde ao pacote
"console.jar" em Java.
console
<<interface>>
Screen
<<create>>
Console
<<interface>>
Keyboard
c
Copyright °1998-2004,
Dr. Italo S. Vega
<<create>>
Abril de 2004
Interação com o Usuário
6
Comando import Em um programa, o acesso a estes elementos força a presença
do seguinte comando Java no início do arquivo:
import console.Console;
import console.Keyboard;
import console.Screen;
Estes comandos Java incorporam os nomes Console, [Keyboard e Screen no
universo de identificadores que podem ser utilizados na escrita de classes com
comunicação externa com o usuário.
c
Copyright °1998-2004,
Dr. Italo S. Vega
Abril de 2004
Interação com o Usuário
7
Pacotes Opcionais no Ambiente Java O ambiente de desenvolvimento Java admite
extensões funcionais por um mecanismo conhecido por optional packages. Com este
mecanismo, desenvolvedores podem extender a funcionalidade básica do ambiente
Java.
Pacotes opcionais são incluídos em arquivos com extensão .jar, sendo instalados nos
diretórios:
<diretório de instalação do JRE>\lib\ext
<diretório de instalação do SDK>\jre\lib\ext
com JRE sendo o Java Runtime Environment, e SDK o Sun Development Kit.
c
Copyright °1998-2004,
Dr. Italo S. Vega
Abril de 2004
Interação com o Usuário
8
Exemplo 12.1 Supondo que os diretórios JRE e SDK sejam:
• JRE 7→ c:\Arquivos de programas\Java\j2re1.4.2 02
• SDK 7→ c:\j2sdk1.4.2 02
então o pacote opcional console.jar deve ser copiado para os diretórios:
•c:\Arquivos de programas\Java\j2re1.4.2 02\lib\ext
•c:\j2sdk1.4.2 02\jre\lib\ext
A partir deste momento, aplicações que fazem uso de Console e Keyboard podem
ser desenvolvidas e compiladas normalmente.
¨
c
Copyright °1998-2004,
Dr. Italo S. Vega
Abril de 2004
Interação com o Usuário
9
Exercício 12.1 I NSTALAÇÃO DO C O N S O L E . J A R
Tarefa 12.1.1
Localize o diretório JRE no seu ambiente de trabalho.
Tarefa 12.1.2
Copie o arquivo console.jar para o diretório
• lib\ext
Tarefa 12.1.3
Localize o diretório SDK no seu ambiente de trabalho.
Tarefa 12.1.4
Copie o arquivo console.jar para o diretório
• jre\lib\ext
c
Copyright °1998-2004,
Dr. Italo S. Vega
Abril de 2004
Interação com o Usuário
Tarefa 12.1.5
10
Crie o arquivo Teste.java no diretório ex12.1:
hlab//Teste.javai≡
import console.Console;
public class Teste {
public static void main( String[] args ) {
Console.getScreen().println("Instalacao OK");
}
}
Tarefa 12.1.6
Compile o arquivo de teste com o seguinte comando:
• javac Teste.java
Tarefa 12.1.7
Execute o arquivo de teste com o seguinte comando:
• java Teste
A frase "Instalacao OK" deve aparecer na tela do computador.
c
Copyright °1998-2004,
Dr. Italo S. Vega
Abril de 2004
Interação com o Usuário
11
2 Serviços de Objetos Keyboard
Um objeto do tipo Keyboard modela o teclado do computador. As operações
oferecidas por um objeto deste tipo são listadas na Figura a seguir.
<<interface>>
Keyboard
+ readChar() : char
+ readChar(msg : String) : char
+ readInt() : int
+ readInt(msg : String) : int
+ readFloat() : float
+ readFloat(msg : String) : float
+ readDouble() : double
+ readDouble(msg : double) : double
+ readString() : String
+ readString(msg : String) : String
c
Copyright °1998-2004,
Dr. Italo S. Vega
Abril de 2004
Interação com o Usuário
12
Descrição dos Serviços Os serviços de um Keyboard são utilizados para obter um
valor digitado pelo usuário durante a execução de um passo de computação. Neste
passo, o cálculo é suspenso até que o usuário digite o valor solicitado.
Cada serviço obtém um valor com tipo específico: a obtenção de caracteres é feita com
a ativação da operação readChar():char; no caso de números, pode-se ativar a
operação readInt():int, que retorna um valor do tipo int; e assim por diante.
Estes serviços também podem ser ativados, passando-se um texto a ser apresentado
para o usuário, antes do bloqueio da computação. O texto pode conter uma pergunta
caracterizando a natureza do valor a ser digitado pelo usuário. Na maior parte dos
casos, esta será a forma preferida de serviços a serem solicitados a um Keyboard.
c
Copyright °1998-2004,
Dr. Italo S. Vega
Abril de 2004
Interação com o Usuário
13
Exemplo 12.2 Para solicitar que o usuário digite um número inteiro, a seguinte
codificação pode ser feita:
hobtenção de um número inteiroi≡
public Keyboard t;
public int x;
public void obterX() {
t = Console.getKeyboard();
x = t.readInt( "x? " );
}
c
Copyright °1998-2004,
Dr. Italo S. Vega
Abril de 2004
Interação com o Usuário
14
Este trecho de código deve ser inserido em uma classe, como mostrado a seguir:
hlab//ExemploInt.javai≡
import console.Console;
import console.Keyboard;
public class ExemploInt {
hobtenção de um número inteiroi
public static void main( String[] args ) {
ExemploInt exemplo = new ExemploInt();
exemplo.obterX();
System.out.println( "x= " + exemplo.x );
}
}
O método main() estabelece a rota principal dos passos desta computação. Em
primeiro lugar, cria-se um objeto exemplo da classe ExemploInt.
Ao receber a mensagem obterX(), este objeto solicita que o usuário digite um
número int. Para o usuario, aparece o texto "x? ", indicando que a computação está
suspensa, aguardando que ele digite um valor.
c
Copyright °1998-2004,
Dr. Italo S. Vega
Abril de 2004
Interação com o Usuário
15
Após a digitação (que se encerra quando o usuário pressiona a tecla <enter>), o
valor é armazenado na variável x, interna ao objeto exemplo. O valor digitado pelo
usuário encontra-se armazenado na variável empregado.x. Este valor é apresentado
na última linha do método main().
¨
c
Copyright °1998-2004,
Dr. Italo S. Vega
Abril de 2004
Interação com o Usuário
16
Exercício 12.2 U SO DO K EYBOARD
Tarefa 12.2.1
Crie o arquivo ExemploInt.java no diretório ex12.2:
Tarefa 12.2.2
Digite, neste arquivo, o código apresentado no exemplo 12.2.
Tarefa 12.2.3
Compile o arquivo ExemploInt.java com o seguinte comando:
• javac ExemploInt.java
Tarefa 12.2.4
comando:
Execute o programa ExemploInt.class com o seguinte
• java ExemploInt
A computação ficará suspensa até que você digite um número inteiro.
Tarefa 12.2.5 Reexecute o programa ExemploInt.class, mas digite, ao invés
de um número inteiro, uma frase (ex.: "fim"). Qual valor é armazenado na variável
exemplo.x?
c
Copyright °1998-2004,
Dr. Italo S. Vega
Abril de 2004
Interação com o Usuário
17
3 Aplicações com o Módulo console.jar
c
Copyright °1998-2004,
Dr. Italo S. Vega
Abril de 2004
Interação com o Usuário
18
Exemplo 12.3 O cálculo da área de um círculo a partir do seu raio pode ser feito
aplicando-se a fórmula (Figura a seguir):
r
area = π r 2
área
A obtenção do valor do raio do círculo pode ser codificado como:
hObtenção do raio do círculoi≡
public double raio;
public void obterRaio() {
t = Console.getKeyboard();
raio = t.readDouble( "Raio? " );
}
c
Copyright °1998-2004,
Dr. Italo S. Vega
Abril de 2004
Interação com o Usuário
19
De posse deste valor, codifica-se o cálculo da área:
hCálculo da área do círculoi≡
public double area;
public void calcularArea() {
area = Math.PI * raio * raio;
}
O programa final pode ser montado, compondo-se os trechos de código anteriores na
classe Circulo:
c
Copyright °1998-2004,
Dr. Italo S. Vega
Abril de 2004
Interação com o Usuário
hlab//Circulo.javai≡
import console.Console;
import console.Keyboard;
public class Circulo {
hObtenção do raio do círculoi
hCálculo da área do círculoi
public Keyboard t;
public static void main( String[] args
Circulo c = new Circulo();
// <c.obterRaio();
// <c.calcularArea();
// <System.out.println( c.area ); // <}
}
c
Copyright °1998-2004,
Dr. Italo S. Vega
20
) {
(1)
(2)
(3)
(4)
Abril de 2004
Interação com o Usuário
21
A operação main() define os passos da rota de execução principal:
1. Cria-se o objeto c:Circulo.
2. Envia-se a mensagem para obter o valor do raio.
3. Envia-se a mensagem para que o círculo c calcule a sua área.
4. Apresenta-se, no monitor, o valor da variável area, interna ao objeto c. Este
valor representa a área do círculo.
¨
c
Copyright °1998-2004,
Dr. Italo S. Vega
Abril de 2004
Interação com o Usuário
22
Exercício 12.3 C ÁLCULO DE Á REAS
Tarefa 12.3.1
Crie o arquivo Circulo.java no diretório ex12.3:
Tarefa 12.3.2
Digite, neste arquivo, o código apresentado no exemplo 12.3.
Tarefa 12.3.3
Execute o programa e confira os resultados na seguinte tabela:
c
Copyright °1998-2004,
Dr. Italo S. Vega
Raio
Área
1
3.141592653589793
5
78.53981633974483
85
22698.006922186254
Abril de 2004
Interação com o Usuário
23
Exemplo 12.4 A média de um aluno é calculada pela fórmula:
MF =
P1 + P2
2
A determinação do valor da nota da prova P 1 pode ser descrita pelo seguinte trecho de
código:
hDeterminação da nota da prova P1i≡
public double p1;
public void obterP1() {
t = Console.getKeyboard();
p1 = t.readDouble( "P1? " );
}
c
Copyright °1998-2004,
Dr. Italo S. Vega
Abril de 2004
Interação com o Usuário
24
A determinação do valor da nota da prova P 2 segue um padrão similar:
hDeterminação da nota da prova P2i≡
public double p2;
public void obterP2() {
t = Console.getKeyboard();
p2 = t.readDouble( "P2? " );
}
Com os valores das notas das provas armazenadas nas variáveis p1 e p2, o cálculo da
média final pode ser feito e armazenado na variável mf da seguinte forma:
hCálculo da média das notasi≡
public double mf;
public void calcularMF() {
mf = (p1 + p2) / 2.0;
}
O programa pode ser montado, compondo-se os trechos de código anteriores na classe
Aluno:
c
Copyright °1998-2004,
Dr. Italo S. Vega
Abril de 2004
Interação com o Usuário
hlab//Aluno.javai≡
import console.Console;
import console.Keyboard;
public class Aluno {
hDeterminação da nota da prova P1i
hDeterminação da nota da prova P2i
hCálculo da média das notasi
public Keyboard t;
public static void main( String[]
Aluno a = new Aluno();
//
a.obterP1();
//
a.obterP2();
//
a.calcularMF();
//
System.out.println( a.mf ); //
}
}
25
args ) {
<- (1)
<- (2)
<- (3)
<- (4)
<- (5)
A operação main() define os passos da rota de execução principal:
c
Copyright °1998-2004,
Dr. Italo S. Vega
Abril de 2004
Interação com o Usuário
26
1. Cria-se o objeto a:Aluno.
2. Envia-se a mensagem para obter a nota da P 1.
3. Envia-se a mensagem para obter a nota da P 2.
4. Envia-se a mensagem para que o aluno a calcule a média final.
5. Apresenta-se, no monitor, o valor da variável mf, interna ao objeto a. Este valor
representa a média das notas das provas.
¨
c
Copyright °1998-2004,
Dr. Italo S. Vega
Abril de 2004
Interação com o Usuário
27
Exercício 12.4 C ÁLCULO DE M ÉDIAS
Tarefa 12.4.1
Crie o arquivo Aluno.java no diretório ex12.4:
Tarefa 12.4.2
Digite, neste arquivo, o código apresentado no exemplo 12.4.
Tarefa 12.4.3
Preencha a seguinte tabela de avaliações:
c
Copyright °1998-2004,
Dr. Italo S. Vega
Aluno
P1
P2
Zé
3.7
4.8
Ana
6.3
8.5
Gil
2.4
9.9
MF
Abril de 2004
Interação com o Usuário
27-1
Semana
Data
1
2004-02-18
2
3
4
5
6
7
8
9
10
11
I 12
13
14
15
16
17
18
19
20
2004-02-25
2004-03-03
2004-03-10
2004-03-17
2004-03-24
2004-03-31
2004-04-07
2004-04-14
2004-04-21
2004-04-28
2004-05-05
2004-05-12
2004-05-19
2004-05-26
2004-06-02
2004-06-09
2004-06-16
2004-06-23
2004-06-30
c
Copyright °1998-2004,
Dr. Italo S. Vega
Tópico
"Apresentação: computação e programas. Bibliografia. Avaliação."
"RECESSO: Carnaval."
"Organização de informações. Ambiente Java."
"BlueJ: familiarização e computação com objetos."
"Variáveis; valores; expressões."
"Representação de computações. Seleção simples (teoria)."
"Seleção dupla."
"Seleção múltipla."
"Iteração com contador."
"RECESSO: Dia de Tiradentes."
"Iteração com sentinela."
"Comunicação com o usuário."
Abril de 2004
Interação com o Usuário
c
Copyright °1998-2004,
Dr. Italo S. Vega
27-2
Abril de 2004
Download