Programação II Licenciatura de Ciências da Computação Padoca Calado

Slides:



Advertisements
Apresentações semelhantes
Algoritmo e Programação
Advertisements

Programação em Java Prof. Maurício Braga
Programação em Java Prof. Maurício Braga
Construção de Algoritmos 2
Programação em Java Prof. Maurício Braga
Introdução à Ciência da Computação Linguagens de Programação.
Estruturas de Repetição
Algoritmo Exemplo: faça um algoritmo para tocar todas as músicas de um cd. Após o usuário apertar o play Algoritmo Para as músicas de 1 até última música.
Métodos, Parâmetros, Argumentos e Contratos
Capítulo 1 Introdução.
Tratamento de Exceções
Paradigmas de Linguagens Conceitos Básicos
Paradigmas de Programação
Aula 4 – Sumário Linguagem assembly do MAC-1 A pilha
O Essencial sobre Linguagens de Programação Luís Caires Maio 2005.
Introdução a Algoritmos Seqüenciais
Software Básico Silvio Fernandes
Algoritmos e Programação Linguagens de Programação Teoria Aula (09/06)
Introdução a Programação Renata Freire
Programação Básica em Java
Recursividade Inhaúma Neves Ferraz
INTRODUÇÃO À PROGRAMAÇÃO
Curso Sistemas de Informação Disciplina: Arquitetura de Software
Linguagem PHP Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Membros estáticos.
Treinamento no GRADEp HelloWorld Args. Slide 2 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - julho 2005 HelloWorld e Args Autoria Autora.
ALGORITMO E ESTRUTURA DE DADOS
JAVA ENUMS © 2009 by Jorge L. de Souza Leão março de 2009 PEE - COPPE/UFRJ.
Programação e Sistemas de Informação
Introdução à Programação
Classes e objetos Arrays e Sobrecarga
Introdução a Programação JAVA
INTRODUÇÃO À PROGRAMAÇÃO
Algoritmos Prof. Kelly E. Medeiros.
JAVA: Conceitos Iniciais
Introdução à Programação
Unidade I: “Dê um mergulho rápido”
PROGRAMAÇÃO I UNIDADE 1.
Comunicação Inclusiva Acessibilidade e Programação Web
JAVA Linguagem Ambiente de Desenvolvimento
INTRODUÇÃO – LOGICA E ALGORITMOS
PCI- Introdução à Computação
Introdução a Programação
Tarefa 02 Visual Studio 2005 Visual C# Programa Hello World.
Laboratório I Mateus Raeder Material baseado nos originais da
Introdução a aplicativos Java
Programação em C++ Compiladores
Organização e Arquitetura de Computadores
Orientação a Objetos Parte I
Programação e Sistemas de Informação
Como Programar? Dicas para começar a programar bem
ALGORITMOS Intensivo Janeiro e Fevereiro de 2011
Execução de programas Cap. VIII.
Paradigmas da Programação – Semestre 1 – Aula 9 Professor: Eduardo Mantovani )
Tratamento de Exceções
Programação Orientada a Objetos - Java
Algoritmos e Estrutura de Dados I
JAVA Sintaxe.
Aula Prática 1 Monitoria IP/CC (~if669) (A partir do slide elaborado por Luís Gabriel)
Fundamentos de linguagens de programação
Algoritmos e Programação MC102
Igor Steinmacher, MSc. Java!!!!
Linguagens de Programação
Algoritmos e Programação I
ALGORITMOS.
Introdução a linguagem de Programação Java. Linguagens de Programação Linguagens de máquina(muito difíceis de usar e compreender) – Comanda ações do computador.
Introdução à lógica de programação
LÓGICA DE PROGRAMAÇÃO Curso: Técnico em Informática Professor: Ronaldo Disciplina: Lógica de Programação.
COMPILADORES 02 Prof. Marcos. COMPILADORES Do Programa à Execução Computadores das mais variadas arquiteturas têm funcionamento:
Transcrição da apresentação:

Programação II Licenciatura de Ciências da Computação Padoca Calado Original: Docentes ISCTE Padoca Calado

Introdução à linguagem Java Aula 2 Introdução à linguagem Java

da Aula 1... Programar: resolver problemas de modo a obter soluções finitas, bem definidas e eficazes Tipos de linguagens: naturais, de programação de alto nível, máquina, etc. Necessidade de um meio de tradução: LPAN  LPBN Tradução realizada através de programas: compiladores 2008

O que é a linguagem Java? Vai uma chávena? 2008

Linguagem de programação Java cód-fonte: Ling. Java (p.e. Ola.java) byte-codes: Linguagem para a máquina virtual Java (JVM) (p.e. Ola.class) Compilador de Java (javac) Máquina Virtual Java Processador Interpretador de linguagem máquina para a JVM 2008

Criar, compilar e executar um programa em JAVA Nota: esquema retirado do livro Fundamentos de Programação em Java 2 (Mendes e Marcelino, 2005, p. 21) 2008

Exemplo de programa simples em Java // Benvindo.java: Este programa mostra no ecrã // a mensagem Benvindo ao JAVA! public class Benvindo { public static void main(String[] argumentos) { System.out.println(“Benvindo ao JAVA!"); } Nota: a classe deve sempre ter o mesmo nome do ficheiro com o cód. fonte! 2008

Arte de Resolver Problemas Diz-se que só se compreende realmente um assunto depois de o ter ensinado a alguém. Na realidade, só se compreende realmente um assunto depois de o ter ensinado a um computador. Donald E. Knuth 2008

Resolução de um Problema/Tarefa (exemplo de algoritmo para fazer um bolo) Misturar os ingredientes Cozinhar o bolo Nota: esquema adaptado de Fundamentos de Programação em Java 2 (Mendes e Marcelino, 2005, p. 7) 2008

Programação de computadores Início da aprendizagem da programação Fundamental: Desenvolver aptidões para criar soluções e para traduzir essas soluções em programas Aptidões para escrita de programas contendo: mecanismos de escolha de instruções mecanismos de repetição de instruções agregados (grupos) de dados relacionados 2008

Algoritmo Descreve como um dado problema é resolvido Apresenta-se essencialmente como: Conjunto de acções a ser executado A ordem pela qual essas acções são executadas Ajudam o programador: Planificação do programa antes de o escrever (codificar) numa dada linguagem de programação Para o programador noviço, codificar directamente não é fantasticamente natural. 2008

Algoritmo Método de resolução de um problema Características: Finitude: tem de terminar Definitude: cada passo bem definido Entradas: zero ou mais, de conjunto bem definido Saídas: uma ou mais, dependem das entradas Eficácia: operações todas executáveis (em tempo útil) 2008

Problema Cálculo do máximo divisor comum de dois inteiros positivos (m e n) 2008

Problema Cálculo do máximo divisor comum de dois inteiros positivos (m e n) Entradas: m e n Saídas: k, tal que k = mdc(m, n), i.e: m e n são divisíveis por k (o resto da divisão por k é zero), e não há nenhum número maior que k que divida m e n 2008

Propriedades conhecidas 0 < mdc(m, n), ou seja, 1 <= mdc(m, n) mdc(m, n) <= min(m, n) 2008

Descrever a solução usando apenas … (pseudo-código) Se … então …senão … Enquanto … fazer: … Fazer ... até que: ... Números e variáveis Operações lógicas: e, ou 2008

Descrever a solução usando apenas … Operações lógico-aritméticas: x < y (x menor que y?), x + y (soma de x e y) x – y (subtracção de x e y) x / y (resultado da divisão de x por y) x * y (resultado da multiplicação de x por y) x % y (resto da divisão de x por y) x = y (x passa a ter o valor de y) x == y (x é igual a y?), x != y (x é diferente de y?) 2008

Algoritmo do MDC 1 ( no quadro ) 2 3 4 5 6 7 8 2008

Algoritmo do MDC se m < n então k = m senão k = n 1 ler m, n // ler 2 inteiros a partir do teclado se m < n então 2 k = m 3 senão 4 k = n 5 enquanto m % k != 0 ou n % k != 0 fazer: 6 k = k – 1 7 fim do enquanto 8 escrever k // enviar resultado para o monitor 2008

Programa MDC em Java public class CalculadorDoMDC { import java.util.Scanner; public class CalculadorDoMDC { public static void main(String[] args) { Scanner teclado = new Scanner (System.in); System.out.print ("Introduza um inteiro positivo: "); int m = teclado.nextInt(); System.out.print("Introduza outro inteiro positivo: "); int n = teclado.nextInt(); int k = 0; if(m < n) k = m; else k = n; while(m % k != 0 || n % k != 0) --k; System.out.println("O mdc entre " + m + “ e " + n + " é " + k + "."); } 2008

Comentários ao programa 1 ( no quadro ) 2 3 4 5 6 7 8 2008

Traçado do programa em execução ( no projector ) 2008

Traçado do programa em execução (exemplo) Introdução à Programação, Aula2 2007/2008

Problema Cálculo do mínimo múltiplo comum de dois inteiros positivos (m e n) 2008

Problema Cálculo do mínimo múltiplo comum de dois inteiros positivos (m e n) Entradas: m e n Saídas: mmc, tal que mmc = mmc(m, n), i.e: mmc é múltiplo de m e de n (o resto da divisão de mmc pelo menor entre m e n é zero) não há nenhum número menor que mmc que seja simultaneamente múltiplo de m e n 2008

Propriedades conhecidas mmc (m, n) >= m e mmc (m, n) > 0 mmc (m, n) >= n e mmc (m, n) > 0 mmc (m, n) >= max (m, n) 2008

Algoritmo do MMC 1 ( no quadro ) 2 3 4 5 6 7 8 2007/2008

Algoritmo do MMC ler m, n // ler 2 inteiros a partir do teclado se m > n então   maior = m menor = n  senão    maior = n menor = m fim do se inicializar mmc = maior enquanto mmc % menor != 0 fazer:   mmc = mmc + maior fim do enquanto escrever mmc // enviar resultado para o monitor 2008

Programa MMC em Java (1) public class CalcMMC1 { import java.util.Scanner; public class CalcMMC1 { public static void main (String args[]) Scanner teclado = new Scanner (System.in); System.out.print ("Introduza um inteiro positivo: "); int n = teclado.nextInt(); System.out.print ("Introduza outro inteiro positivo: "); int m = teclado.nextInt(); int maior, menor, mmc; if (n < m) { // Calcular o maior e o menor entre m e n maior = m; menor = n; } else { maior = n; menor = m; mmc = maior; // Inicializar mmc while (mmc % menor != 0) // Calcular mmc mmc = mmc + maior; System.out.println("O m.m.c. entre " + m + " e " + n + " é " + mmc + "."); 2008

Programa MMC em Java (2) import java.util.Scanner; public class CalcMMC2 { public static void main (String args[]) (...) int mmc; /* Calcular o maior e o menor entre m e n * atribuir a m o maior valor e a n o menor * Inicializar mmc com o maior dos valores */ if (n < m) mmc = m; else { mmc = n; n = m; m = mmc; } // Calcular mmc while (mmc % n != 0) mmc = mmc + m; System.out.println("O m.m.c. entre " + m + " e " + n + " é " + mmc + "."); 2008

Programa MMC em Java (3) import java.util.Scanner; public class CalcMMC2 { public static void main (String args[]) (...) int mmc; /* Calcular o maior e o menor entre m e n * atribuir a m o maior valor e a n o menor * Inicializar mmc com o maior dos valores */ if (m < n) { mmc = n; n = m; m = mmc; } mmc = m; // Calcular mmc while (mmc % n != 0) mmc = mmc + m; System.out.println("O m.m.c. entre " + m + " e " + n + " é " + mmc + "."); 2008

Algoritmos - optimização Não existe uma única forma de resolver um problema Não existe um algoritmo perfeito... mas Alguns algoritmos são mais perfeitos do que outros  Importa tentar encontrar a solução mais simples, clara, estruturada, eficaz e eficiente para um dado problema 2008

Fases da resolução de problemas Especificação [humano] Desenvolvimento do algoritmo [humano] Concretização do algoritmo na linguagem de progra-mação [humano] Tradução do programa para linguagem máquina [computador/compilador] Execução do programa para problema particular (e.g., mdc(131, 47)) [computador/JVM] 2008

A reter... Java como linguagem de programação de alto nível Algoritmo: receita finita, definida, com entradas, com saídas e eficaz Programa: concretização de algoritmo numa linguagem de programação Compilador: traduz programa de linguagem de programação para linguagem máquina 2008

A ler... Capítulos 1 e 2 e secções 3.1 e 3.2 do livro: Y. Daniel Liang, "Introduction to Java Programming", 5ª Edição, Prentice-Hall, 2005. ISBN: 0-13-185721 - 5 2008

Aula 2: Sumário Noções de algoritmo e de programa Programa: concretização de um algoritmo Descrição de um algoritmo: resolução através de pseudo-código Programação: arte de resolver problemas Fases da resolução dum problema usando um computador 2008