• Nenhum resultado encontrado

Laboratório de Programação

N/A
N/A
Protected

Academic year: 2021

Share "Laboratório de Programação"

Copied!
42
0
0

Texto

(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

(2)

Semana Data Tópico

1 2004-02-18 Apresentação: algoritmo e computação. Bibliografia básica. Critérios de Avaliação.

2 2004-02-25 Recesso: Carnaval

3 2004-03-03 Organização de programas. Ambiente de programação (Java). 4 2004-03-10 BlueJ: apresentação e computação com objetos.

(3)

Conteúdo

1 Variáveis: Fundamentos 2

1.1 Declaração de uma Variável . . . 4

1.2 Tipo de uma Variável . . . 7

1.3 Comando de Atribuição . . . 13

1.4 Modelo de uma Variável . . . 17

2 Operações Aritméticas 26

(4)

1

Variáveis: Fundamentos

Uma variável é um elemento de codificação capaz de arma-zenar um valor de um determinado tipo.

Variáveis são normalmente utilizadas para comunicar valores entre computações. Por exemplo, uma computação de entrada pode enviar valores para a computação de

processamento utilizando-se de variáveis.

Atribuição A armazenagem de valores em variáveis faz uso do comando de

atribuição. O comando de atribuição altera o valor armazenado em uma variável. O valor atribuído torna-se o novo valor da variável, substituindo o anterior.

(5)

1.1

Declaração de uma Variável

Para existir em uma aplicação, a variável precisa ser declarada e definida (criada). A declaração consiste de um tipo seguido por uma lista de variáveis. Cada variável

declarada na lista pode ser iniciada com o valor especificado por uma expressão ou, no caso de variáveis estruturadas, por um iniciador de arraya. Na presença do

modificador final, os identificadores de variáveis serão declarados como constantes,

ou seja, os valores associados aos identificadores não poderão ser alterados. Por uma questão de estilo, cada variável será declarada individualmente.

(6)

As seguintes regras são utilizadas para a declaração de variáveis: DecVariavel ¯ ±²final ± ¯ ° ² ° Tipo ²Variavel ± ², ± ¯ ° ¯ ° ; ² ± ¯ ° Variavel Ident ¯ ±²= ± ¯ °¯Expressao ±IniciadorDeArray ² ° ² °

(7)

Exemplo 5.1 São exemplos de declarações de variáveis:

int total;

double sala = 15; char codigo = ’X’; final int MAX = 100;

(8)

1.2

Tipo de uma Variável

Na declaração de uma variável deve-se informar qual o tipo dos valores que ela poderá armazenar. Normalmente serão encontradas duas categorias de tipos:

Tipo TipoConcreto ¯ ±TipoAbstrato ² °

(9)

Tipos Concretos Os tipos concretos (também conhecidos como básicos ou ainda primitivos) estabelecem conjuntos de valores diretamente armazenáveis nas variáveis. É comum a existência dos seguintes tipos:

• Tipo lógico: boolean

• Tipo numérico: byte, short, int, long, float, double.

(10)

Em termos de diagramas sintáticos: TipoConcreto Logico ¯ ±Numerico ±Texto ² ° ° Logico boolean ² ± ¯ ° Numerico byte ² ± ¯ ° ¯ ±²short ± ¯ ° ±²int ± ¯ ° ±²long ± ¯ ° ±²float ± ¯ ° ±²double ± ¯ ° ² ° ° ° ° ° Texto char ² ± ¯ ° ¯ ±²String ¯ ² °

(11)

Tipos Abstratos Os tipos abstratos (também conhecidos por tipos definidos pelo usuário) são definidos combinando-se tipos concretos e, eventualmente, outros tipos abstratos. No nível de programação, tipos abstratos podem ser codificados

utilizando-se o mecanismo classea .

(12)

Exemplo 5.2 O texto em Java a seguir, descreve como um objeto-piano deve mostrar a sua quantidade de teclas.

hPiano.javai≡

public class Piano {

public int teclas = 88; // <- declaração da variável "teclas" public void mostrar() {

System.out.println( "Um piano tem " + teclas + " teclas." ); }

}

A declaração da variável teclas indica que pode armazenar valores do tipo

(concreto) int. Isto é, tal variável armazena apenas valores do tipo int. A declaração

também inicia a variável com o valor 88.

A classe Piano é uma codificação de um tipo abstrato. Esta classe pode ser utilizada para criar variáveis do tipo Piano. ¨

(13)

Exercício 5.1

VARIÁVEIS E VALORES

Tarefa 5.1.1 Crie um novo projeto denominado “ex5.1”. Digite e salve a seguinte classe em um arquivo denominado Piano.java:

hPiano.javai≡

public class Piano {

public int teclas = 88; // <- declaração da variável "teclas" public void mostrar() {

System.out.println( "Um piano tem " + teclas + " teclas." ); }

}

Compile esta classe, crie o objeto p da classe Piano e solicite a realização da computação mostrar().

(14)

1.3

Comando de Atribuição

O comando de atribuição substitui o atual valor de uma variável por outro valor. A estrutura de um comando de atribuição é descrita como:

CmdAtribuicao Ident = ² ± ¯ °Expressao ; ² ± ¯ °

O identificador fica à esquerda do operador de atribuição, representado pelo sinal “=” no seu lado direito encontra-se uma expressão que, ao ser avaliada, produz o novo valor a ser armazenado na variável.

(15)

Exemplo 5.3 O seguinte texto ilustra o efeito do comando de atribuição.

hFiguras.javai≡

public class Figuras {

public int lados; // <- declaração da variável "lados" public void mostrar() {

lados = 7; // <- valor inicial da variável "lados"

System.out.println( "Um heptágono tem " + lados + " lados." ); lados = 10; // <- alteração do valor da variável

System.out.println( "Um decágono tem " + lados + " lados." ); lados = 12; // <- nova alteração do valor da variável

System.out.println( "Um dodecágono tem " + lados + " lados." ); }

}

(16)

Exercício 5.2

Tarefa 5.2.1 Crie um novo projeto denominado “ex5.2”. Digite e salve a seguinte classe em um arquivo denominado Figuras.java:

hFiguras.javai≡

public class Figuras {

public int lados; // <- declaração da variável "lados" public void mostrar() {

lados = 7; // <- valor inicial da variável "lados"

System.out.println( "Um heptágono tem " + lados + " lados." ); lados = 10; // <- alteração do valor da variável

System.out.println( "Um decágono tem " + lados + " lados." ); lados = 12; // <- nova alteração do valor da variável

System.out.println( "Um dodecágono tem " + lados + " lados." ); }

(17)

Compile esta classe, crie o objeto f da classe Figuras e solicite a realização da computação mostrar().

(18)

1.4

Modelo de uma Variável

Toda variável tem um nome, um tipo e um valor. O nome está associado a uma posição de memória do computador, enquanto que o tipo restringe os valores que podem ser armazenados.

Modelo com Tipo Concreto Uma variável com tipo concreto pode ser visualizada como mostrado na Figura a seguir.

nome : TipoConcreto = valor

A representação destaca o nome da variável, seu tipo e o particular valor armazenado em um determinado instante.

(19)

Exemplo 5.4 Seja uma variável com tipo concreto int, chamada salas e valor igual

a 5. A Figura a seguir ilustra duas vistas do seu modelo.

(a)

salas : int = 5

(b)

salas = 5

A representação com omissão de tipo pressupõe que a simples observação do valor é suficiente para determinar o tipo da variável. ¨

(20)

Exercício 5.3

Tarefa 5.3.1 Crie um novo projeto denominado “ex5.3”. Digite e salve a seguinte classe em um arquivo denominado Predio.java:

hPredio.javai≡

public class Predio {

public int salas = 30; public void mostrar() {

System.out.println( "Total de salas = " + salas ); }

}

Compile esta classe, crie o objeto k da classe Predio e solicite a realização da computação mostrar().

Tarefa 5.3.2 Qual o resultado desta computação?

(21)

Modelo com Tipo Abstrato Uma variável com tipo abstratoa pode ser visualizada como mostrado na Figura a seguir.

valorRef : TipoAbstrato

nome1 : Tipo1 = valor1

nome2 : Tipo2 = valor2

...

valorRef : TipoAbstrato

(b)

(a)

nome =

nome =

A representação (a) destaca o nome da variável, seu tipo e o objeto referenciado. A representação (b) destaca as variáveis internas do objeto referenciado.

(22)

Exemplo 5.5 Seja uma variável com tipo abstrato Aluno, chamada x, com

valor-referência igual a a. Este valor identifica o objeto referenciado pela variável x. A

Figura a seguir ilustra as vistas simples e detalhada do seu modelo.

a : Aluno

p1 : double = 7.8

t : Turma =

t11 : Turma

sala : String = “S 55”

x =

Neste caso, o objeto a contém duas variáveis internas: p1 e t. Partindo-se da variável

x, o valor destas variáveis internas pode ser alcançado escrevendo-se: x.p1 e x.t, respectivamente.

O valor de x é igual a a. O valor de x.p1 é igual a 7.8. Entretanto, o valor de x.t é

igual ao valor-referência t11. Este objeto (identificado por t11), por sua vez, possui

(23)

Exercício 5.4

MODELO COM TIPOS ABSTRATOS

Tarefa 5.4.1 Crie um novo projeto denominado “ex5.4”. Digite e salve a seguinte classe em um arquivo denominado Pessoa.java:

hPessoa.javai≡

public class Pessoa { public String nome;

public void mudarNome( String novo ) { nome = novo;

}

public int idade;

public void mudarIdade( int nova ) { nome = nova;

}

(24)

Compile esta classe e crie o objeto p da classe Pessoa e solicite a realização das computações mudarNome() e mudarIdade(). Para cada uma destas

computações, informe o seu nome e a sua idade.

Tarefa 5.4.2 Qual o resultado da computação p.mostrar()?

Tarefa 5.4.3 Faça uma representação gráfica do objeto p e das suas variáveis internas (bem como dos seus valores).

Tarefa 5.4.4 Altere o tipo da variável idade para String e recompile a classe Pessoa. O que acontece? Porquê?

(25)

Exercício 5.5

ALUNOS E TURMAS

Tarefa 5.5.1 Crie um novo projeto denominado “ex5.5”. Digite e salve a seguinte classe em um arquivo denominado Aluno.java:

hAluno.javai≡

public class Aluno {

public double p1 = 7.8; public Turma t;

public void mudarTurma( Turma nova ) { t = nova;

}

public void mostrar() {

System.out.println( " p1= " + p1 ); System.out.println( " t= " + t ); }

(26)

Faça o mesmo para a classe Turma:

hTurma.javai≡

public class Turma {

public String sala = "S 55"; }

Compile estas classes e crie os objetos a da classe Aluno e t11 da classe Turma.

Tarefa 5.5.2 Qual o resultado da computação a.mostrar()?

Tarefa 5.5.3 Faça uma representação gráfica dos objetos a e t11, bem como das suas variáveis internas (e dos seus respectivos valores).

(27)

2

Operações Aritméticas

Uma expressão aritmética representa um valor. Este valor é obtido quando se avalia a expressão.

Do ponto de vista de estrutura, expressões aritméticas são compostas por operandos e operadores. É comum a existência dos seguintes operadores aritméticos:

OPERADOR SÍMBOLO EXPRESSÃO

SOMA + total + 2 SUBTRAÇÃO - saldo – total MULTIPLICAÇÃO * 2 * n

DIVISÃO / 7/ 4 MÓDULO % 7 % 4

(28)

Exemplo 5.6 Considere as expressões aritméticas da seguinte aplicação:

hlab/aritmetica/Expressao.javai≡

public class Expressao { public void avaliar() {

int total = 10;

System.out.println( "ADIÇÃO: " + (total + 2) ); System.out.println( "SUBTRAÇÃO: " + (total - 2) );

System.out.println( "MULTIPLICAÇÃO: " + (total * 2) ); System.out.println( "DIVISÃO: " + (7 / 4) ); System.out.println( "DIVISÃO: " + (17 / 5) ); System.out.println( "MÓDULO: " + (7 % 4) ); System.out.println( "MÓDULO: " + (17 % 5) ); } }

(29)

A execução desta aplicação produz os seguintes resultados: ADIÇÃO: 12 SUBTRAÇÃO: 8 MULTIPLICAÇÃO: 20 DIVISÃO: 1 DIVISÃO: 3 MÓDULO: 3 MÓDULO: 2

Observa-se que o operador de divisão provoca um truncamento do resultado, quanto este não é um número inteiro. Também, o operador módulo produz o resto da divisão dos seus operandos. ¨

(30)

3

Avaliação de Expressões

Regra de Avaliação Para a avaliação de uma expressão contendo diversos operadores, uma ordem de avaliação deve ser definida:

OPERADOR ORDEM DE AVALIAÇÃO

( ) ordem 1

aninhadas: de dentro para fora

*/% ordem 2

da esquerda para a direita

+- ordem 3

(31)

Exemplo 5.7 Considere a seguinte expressão aritmética:

z = p ∗ r %q + w /x − y

A ordem de aplicação dos operadores, segundo a regra de avaliação é:

z = p r % q + w / x y

(32)

A ordem de avaliação desta expressão pode ser alterada com o uso dos parênteses. Por exemplo:

z = p ∗ r %(q + w )/x − y

Os parênteses forçam a avaliação da adição em primeiro lugar:

z = p r % ( q + w ) / x y

6 2 3 1 4 5

(33)

Exercício 5.6

REGRA DE AVALIAÇÃO DE EXPRESSÕES

a) Crie o projeto “ex5.6” e a classe Expressao:

hExpressao.javai≡

public class Expressao { public int x;

public void mudarX( int novo ) { x = novo;

}

public double avaliar() {

return x % x + x * x - x / x; }

(34)

Esta classe codifica a seguinte expressão aritmética:

x %x + x ∗ x − x /x

b) Quando x = 2, qual o resultado da computação avaliar()? c) Quando x = 10, qual o resultado da computação avaliar()?

d) Como estas computações se alteram, quando o tipo da variável x é alterado para

(35)

Exercício 5.7

OPERADORES DE MÓDULO E DE DIVISÃO

a) Descreva uma computação que obtenha dois números inteiros do usuário e mostre a sua divisão e o seu módulo. (Sugestão: crie o projeto “ex5.7” e a classe

Expressao com as variáveis a e b, e os métodos obterInt(int novoA, int novoB):void e int avaliar(). Este último método contendo a expressão solicitada.)

b) Preencha a seguinte tabela:

a b a / b a % b

13 4

768 22

67000 1

(36)

Exercício 5.8

POLINÔMIO DO SEGUNDO GRAU Considere o seguinte

polinômio do segundo grau:

y = ax2 + bx + c

A computação descrita pela classe a seguir calcula o valor de y para cada valor de x digitado pelo usuário:

public class Polinomio {

public int a = 2;

public int b = 3;

public int c = 7;

public int x;

public int y;

public void mudarX( int novo ) {

x = novo; }

public int avaliarY() {

y = a * x * x + b * x + c;

return y;

} }

(37)

b) Mostre a ordem de avaliação de cada operador, passo-a-passo.

c) Altere a ordem de avaliação (reeditando o método avaliarY()) com o uso de

parênteses:

y = (ax2) + (bx ) + c

Compile e execute a computação avaliarY() para x = 5. Este resultado é o mesmo da avaliação anterior?

(38)

Exercício 5.9

MODELO DE UM CÍRCULO Um círculo exibe diversas

propriedades, as quais podem ser definidas em termos do seu raio (Figura a seguir).

diâmetro

raio

Dentre estas propriedades, destacam-se:

circunferencia = 2π · raio diametro = 2 · raio

area = π · raio2

(39)

Exercício 5.10

DISTÂNCIA ENTRE 2 PONTOS Escreva uma aplicação que leia

as coordenadas (x , y) de dois pontos e calcule a distância entre eles usando a seguinte fórumula:

distancia = p(x2 − x1)2 + (y2 − y1)2

(Procure ajuda na biblioteca Java para calcular potências e raízes quadradas.)

Exercício 5.11

SEPARAÇÃO DE DÍGITOS Descreva uma computação que leia

um número com cinco dígitos, separe-o em seus dígitos constituintes, e mostre-os separados por ‘:”. Por exemplo, se o número digitado for 45331, a aplicação deverá mostrar 4 : 5 : 3 : 3 : 1. (Dica: use uma combinação dos operadores de divisão e módulo.)

(40)

Exercício 5.12

CÁLCULO DE FUNÇÕES Descreva uma computação que

calcule o quadrado e o cubo dos números de 0 a 10, mostrando os valores em uma tabela:

NÚMERO QUADRADO CUBO

0 0 0

1 1 1

2 4 8

(41)

Exercício 5.13

CRIPTOGRAFIA (Adaptado de Deitel & Deitel, ex. 4.31, p.

155.) Uma empresa deseja transmitir dados via telefone, mas está preocupada com a possibilidade de existirem grampos telefônicos. Todos os seus dados são transmitidos como inteiros de quatro dígitos. Escreva uma aplicação que faça a seguinte criptografia de dados. Para cada grupo de quatro dígitos fornecidos pelo usuário, substitua cada dígito poela (soma deste dígito com 7) módulo 10. Em seguida, troque o primeiro

dígito com o terceiro, e troque o segundo dígito com o quarto. Este resultado deve ser mostrado para o usuário.

(Escreva outra aplicação que receba uma entrada criptografada e recupere o número original.)

(42)

Semana Data Tópico

1 2004-02-18 Apresentação: algoritmo e computação. Bibliografia básica. Critérios de Avaliação.

2 2004-02-25 Recesso: Carnaval

3 2004-03-03 Organização de programas. Ambiente de programação (Java). 4 2004-03-10 BlueJ: apresentação e computação com objetos.

Referências

Documentos relacionados

Analisar os Relatórios de Frequência Escolar de crianças beneficiárias do Bolsa Família permitiu a identificação dos motivos registrados que levaram muitas crianças e

Os protocolos PENDENTES deverão ter seu parecer retirado em 7 (sete) dias. Os protocolos APROVADOS deverão ter seu parecer retirado em 15

UNIÃO CIVIL ENTRE PESSOAS DO MESMO SEXO - ALTA RELEVÂNCIA SOCIAL E JURÍDICO-CONSTITUCIONAL DA QUESTÃO PERTINENTE ÀS UNIÕES HOMOAFETIVAS LEGITIMIDADE CONSTITUCIONAL DO RECONHECIMENTO

Este estudo apresenta como tema central a análise sobre os processos de inclusão social de jovens e adultos com deficiência, alunos da APAE , assim, percorrendo

No entanto, para aperfeiçoar uma equipe de trabalho comprometida com a qualidade e produtividade é necessário motivação, e, satisfação, através de incentivos e política de

No entanto, maiores lucros com publicidade e um crescimento no uso da plataforma em smartphones e tablets não serão suficientes para o mercado se a maior rede social do mundo

Entre as atividades, parte dos alunos é também conduzida a concertos entoados pela Orquestra Sinfônica de Santo André e OSESP (Orquestra Sinfônica do Estado de São

Foi evidenciado que o posto mantém uma sistemática preventiva para não contaminar o solo e as águas subterrâneas, por meio da avaliação trimestral do solo e do