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