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

Propaganda
LP2
Laboratório de Programação 2
Ciência da Computação
Carga horária : 4 aulas semanais (laboratório)
Professores: Custódio, Daniel, Julio
foco: introdução a uma linguagem de programação
Linguagem Java
1
LP2
Laboratório de Programação 2
Ciência da Computação
Objetivo:
O aluno deverá adquirir capacidades e habilidades
para:
implementar programas de computador,
correspondentes a soluções de problemas
computacionais, utilizando um ambiente de
programação (Eclipse) .
2
LP2
Laboratório de Programação 2
Ciência da Computação
Resumo do programa:
 fluxos seqüenciais - tipos primitivos
 mecanismos de entrada/saída
 controles: fluxos alternativos, fluxos repetitivos
 tipos agregados (tipos estruturados)
 subprogramas (modularização)
 arquivos
3
LP2
Laboratório de Programação 2
Ciência da Computação
Atividades de Avaliação- Média final
Serão realizadas, durante o semestre, provas P1, P2 e PS , conforme
calendário definido pela coordenação do curso.
Nessas provas não será permitida consulta a livros, apostilas ou anotações.
A nota A será definida em função da participação e desempenho do aluno nas
atividades propostas durante as aulas do curso, essas atividades serão:
implementação, modificação, correção e testes de programas.
As notas A1 e A2 serão definidas pelas médias das notas obtidas em tarefas
que serão propostas em cada bimestre.
Constituição das notas N1, N2 e MF:
N1=(P1+A1)/2
N2=(P2+A2)/2
MF = (N1+N2)/2 x (0,8+0,04xA)
Para ser aprovado o aluno deve obter no mínimo média final 5,0 e
freqüência em pelo menos 75% das aulas
4
LP2
Laboratório de Programação 2
Ciência da Computação
Bibliografia de apoio
•
Java 2
Ensino Didático
Furgeri, S. Editora Érica 3a edição 2002
• Java – Como Programar
Deitel & Deitel Pearson Prentice Hall 6a edição, 2006.
•
Conceitos de Linguagens de Programação
Sebesta, R. W. Bookman, 4a edição, 2000.
5
LP2
Laboratório de Programação 2
Ciência da Computação
Conceitos elementares - seqüência de trabalho
problema
computacional
análise e método
de resolução
elaboração do
algoritmo
foco
construção
e implementação
do programa
6
LP2
Laboratório de Programação 2
Ciência da Computação
problema
computacional
•“problema cuja resolução envolva manipulação ou
transformação de informações”
•“uma pergunta de caráter geral a ser respondida”
exemplo:
“Uma impressora tem capacidade para imprimir 5 páginas de
texto por minuto. Conhecendo-se a quantidade de páginas de
uma lista telefônica que essa impressora deve imprimir, como
calcular o tempo necessário para realizar essa impressão? O
tempo deve ser expresso em horas, minutos e segundos
(valores inteiros).”
7
LP2
Laboratório de Programação 2
Ciência da Computação
análise e método
de resolução
•leitura/compreensão da proposta
•especificação do problema (objetivo - entradas - saídas)
•busca do método de resolução/estrutura de dados
•descrição do método de resolução
•conhecimentos
•criatividade
•raciocínio lógico
•capacidade de descrição
8
LP2
Laboratório de Programação 2
Ciência da Computação
elaboração do
algoritmo
•seqüência que descreve uma série de ações que, se
forem realizadas, conduzem à resolução de uma
instância do problema
•finalidade: permitir ou facilitar a construção do código
do programa (próxima etapa)
•a definição do algoritmo ocorre paralelamente à
definição da estrutura de dados
• algoritmo + estrutura de dados  base para construção
do programa
LP2
Laboratório de Programação 2
Ciência da Computação
construção
e implementação
do programa
•programa fonte - linguagem de alto nível (Java)
•implementação: projeto da interface usuário+sistema
e codificação (construção do texto do programa)
•testes e depuração (eliminação de erros)
10
LP2
Laboratório de Programação 2
dado :
Ciência da Computação
informação codificada
conhecimento
representação
informação
dados
11
LP2
Laboratório de Programação 2
Ciência da Computação
Tipos de dados básicos (primitivos)
em uma linguagem de programação
Numérico
Lógico
Alfanumérico
12
LP2
Laboratório de Programação 2
Ciência da Computação
computador - arquitetura
Entrada
Memória RAM
CPU
Saída
13
LP2
Laboratório de Programação 2
Ciência da Computação
Variável Abstração de um conjunto de células de memória
Finalidade: armazenar dados correspondentes às
informações tratadas pelo programa
Arquitetura do
computador de Von
Neumann
Arquitetura Von Neumann
Memória:
Armazena dados
Armazena instruções
Processador:
Realiza operações que
modificam o conteúdo da
memória
abstração
Linguagens de
programação
imperativas
Programa
(Linguagem Imperativa)
Variável
Armazena dados
Comandos - Instruções
Modificam o conteúdo de
variáveis
14
LP2
Laboratório de Programação 2
Ciência da Computação
Variável Abstração de um conjunto de células de memória
Finalidade: armazenar dados correspondentes às
informações tratadas pelo programa.
No início da história (linguagem de máquina):
tratamento direto variável – endereço;
depois (linguagens de alto nível):
compilador responsável pela associação
do nome da variável com células de memória.
Atributos de uma variável:
Nome
Endereço
Tipo
Valor
Escopo
Tempo de vida
15
LP2
Laboratório de Programação 2
Ciência da Computação
tipo inteiro
Tipo de dados inteiro
Elementos: conjunto dos números inteiros
Operações + adição - subtração * multiplicação
/ quociente inteiro
% resto da divisão
Relações
< menor > maior = igual
 diferente  menor ou igual
 maior ou igual
Constantes representação usual, com ou sem sinal
Domínio
Depende da linguagem de programação
16
LP2
Laboratório de Programação 2
Ciência da Computação
Problema
Conhecendo-se dois valores inteiros, como obter a
soma desses dois valores?
Especificação:
objetivo: obter a soma de dois inteiros
entrada : dois números inteiros
saída : um número inteiro
Esboço do algoritmo
• armazenar os dados
( ler os dados )
• calcular a soma
• enviar dados para a saída
17
LP2
Laboratório de Programação 2
Ciência da Computação
Memória RAM
5 3
• armazenar os dados
( leitura dos dados )
• Calcular a soma
• Enviar dados para a saída
18
LP2
Laboratório de Programação 2
Ciência da Computação
Memória RAM
A
3
5
B
5 3
• armazenar os dados
( leitura dos dados )
• Calcular a soma
• Enviar dados para a saída
19
LP2
Laboratório de Programação 2
Ciência da Computação
Memória RAM
A
3
8
5 3
SOMA
5
B
• armazenar os dados
( leitura dos dados )
• calcular a soma
• enviar dados para a saída
LP2
Laboratório de Programação 2
Ciência da Computação
8
Memória RAM
A
3
8
5 3
SOMA
5
B
• armazenar os dados
( leitura dos dados )
• calcular a soma
• enviar dados para a saída
21
LP2
Laboratório de Programação 2
Ciência da Computação
assinatura do algoritmo
Algoritmo Adição
Objetivo: Obter a soma de dois
números inteiros
Dados de entrada : A, B ( inteiro )
Dados de saída : SOMA ( inteiro )
corpo do algoritmo
Adição( )
leia(A); leia(B);
SOMA  A + B;
imprima( SOMA );
instruções elementares
leia(variável)
entrada
variável  expressão
atribuição
imprima(expressão)
saída
22
LP2
Laboratório de Programação 2
Ciência da Computação
simulação
Dados de entrada: 3, 5
Saída esperada: 8
Adição( )
leia(A); leia(B);
SOMA  A+ B;
imprima(SOMA);
memória
A
B
SOMA
23
LP2
Laboratório de Programação 2
Ciência da Computação
simulação
Dados de entrada: 3, 5
Saída esperada: 8
Adição( )
leia(A); leia(B);
SOMA  A+ B;
imprima(SOMA);
memória
A
entrada
B
SOMA
3
24
LP2
Laboratório de Programação 2
Ciência da Computação
simulação
Dados de entrada: 3, 5
Saída esperada: 8
Adição( )
leia(A); leia(B);
SOMA  A+ B;
imprima(SOMA);
memória
A
3
B
entrada
SOMA
5
25
LP2
Laboratório de Programação 2
Ciência da Computação
simulação
Dados de entrada: 3, 5
Saída esperada: 8
Adição( )
leia(A); leia(B);
SOMA  A+ B;
imprima(SOMA);
memória
A
B
3
5
SOMA
8
26
LP2
Laboratório de Programação 2
Ciência da Computação
simulação
Dados de entrada: 3, 5
Saída esperada: 8
Adição( )
leia(A); leia(B);
SOMA  A+ B;
imprima(SOMA);
memória
A
B
3
5
SOMA
8
saída
27
LP2
Laboratório de Programação 2
Ciência da Computação
código do programa Java
classe principal
public class Principal {
public static void main(String[] args ){
Aplicacao ap=new Aplicacao( );
ap.executar( );
}
}
Adição( )
leia(A); leia(B);
SOMA  A+ B;
imprima(SOMA);
classe de execução
import javax.swing.JOptionPane;
public class Aplicacao {
void executar( ){
int a, b, soma;
a=Integer.parseInt(JOptionPane.showInputDialog("1a. Parcela: "));
b=Integer.parseInt(JOptionPane.showInputDialog("2a. parcela: "));
soma=a+b;
JOptionPane.showMessageDialog(null," valor da soma=
" + soma);
}
}
28
LP2
Laboratório de Programação 2
Ciência da Computação
Java – modelo de compilação e execução
Java code
compiling
Java
Compiler
interpreting
Java Bytecode
SPARC
Power PC
Pentium
29
LP2
Laboratório de Programação 2
Ciência da Computação
Java – modelo de compilação e execução
• Java é uma linguagem interpretada em termos de execução final
• byte-code código gerado pelo compilador é interpretado pelos interpretadores da
linguagem, este código é gerado para ser executado pela Java Virtual Machine
• Java Virtual Machine é o programa de interpretação e execução sobre “hardware”
específico
30
LP2
Laboratório de Programação 2
Ciência da Computação
Um programa Java pode ser carregado e executado de duas formas:
Como uma aplicação tradicional (aplicativo)
A classe deve implementar o método main, que é chamado assim que
o objeto é criado a partir do sistema operacional.
Como um programa para “rodar” no browser (“applet”)
A classe deve estender a classe Applet e sobrescrever os principais
métodos que implementam o comportamento do Applet.
Neste curso, utilizaremos Java somente para geração de
aplicativos tradicionais.
31
LP2
Laboratório de Programação 2
Ciência da Computação
Problema proposto
“Uma determinada quantidade de parafusos deve ser embalada em
caixas de 40 unidades e caixas de 10 unidades, utilizando-se
preferencialmente as caixas grandes. Conhecendo-se a quantidade
de parafusos disponíveis, como obter a quantidade de caixas
grandes, a quantidade de caixas pequenas e também a quantidade
de parafusos que não serão embalados por não completarem 1
caixa pequena?”
32
LP2
Laboratório de Programação 2
Ciência da Computação
Problema proposto
“Uma determinada quantidade de parafusos deve ser embalada em caixas de 40 unidades e
caixas de 10 unidades, utilizando-se preferencialmente as caixas grandes. Conhecendo-se a
quantidade de parafusos disponíveis, como obter a quantidade de caixas grandes, a quantidade
de caixas pequenas e também a quantidade de parafusos que não serão embalados por não
completarem 1 caixa pequena?”
Esboço do método de resolução
●
●
●
●
●
realizar a “entrada e armazenamento” da quantidade de parafusos;
calcular o quociente inteiro da divisão: quant. de parafusos por 40 (quantidade de
caixas grandes);
calcular o resto da divisão: quant. parafusos por 40 (parafusos que não completam
uma caixa grande);
calcular o quociente e o resto da divisão do valor obtido na operação anterior por 10
(quociente: quantidade de caixas pequenas, resto: parafusos não embalados);
exibir os resultados (caixas grandes, caixas pequenas e sobra de parafusos).
Tarefa
Faça a implementação de um programa Java a partir do esboço de resolução descrito acima.
Escolha identificadores de variáveis adequados (que indiquem o significado da informação que
a variável representa no cenário do problema).
Considere o programa exemplo (tela 28) como modelo inicial.
33
Download