programação ii licenciatura de ciências da computação original: docentes iscte padoca calado

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

Upload: internet

Post on 16-Apr-2015

107 views

Category:

Documents


2 download

TRANSCRIPT

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

Programação II

Licenciatura de Ciências da Computação

Original: Docentes ISCTE Padoca Calado

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

Aula 2

Introdução à linguagem Java

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

20083

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 LPBNTradução realizada através de programas:

compiladores

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

20084

O que é a linguagem Java?

Vai uma chávena?

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

20085

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)

Compiladorde Java (javac)

Interpretador de linguagemmáquina para a JVM

Processador

Máquina Virtual Java

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

20086

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)

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

20087

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!

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

20088

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

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

20089

Resolução de um Problema/Tarefa (exemplo de algoritmo para fazer um bolo)

Bolo

Misturar os ingredientes

Cozinhar o bolo

Nota: esquema adaptado de Fundamentos de Programação em Java 2 (Mendes e Marcelino, 2005, p. 7)

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

200810

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

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

200811

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.

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

200812

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)

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

200813

Problema

Cálculo do máximo divisor comum de dois

inteiros positivos (m e n)

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

200814

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

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

200815

Propriedades conhecidas

0 < mdc(m, n), ou seja, 1 <= mdc(m, n)

mdc(m, n) <= min(m, n)

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

200816

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

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

200817

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?)

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

200818

Algoritmo do MDC

1( no quadro )

2

3

4

5

6

7

8

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

200819

Algoritmo do MDC

1 ler m, n // ler 2 inteiros a partir do teclado

se m < n então2

k = m3

senão4

k = n5

enquanto m % k != 0 ou n % k != 0 fazer:6

k = k – 17

fim do enquanto

8 escrever k // enviar resultado para o monitor

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

200820

Programa MDC em Java

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 + "."); }}

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

200821

Comentários ao programa

1( no quadro )

2

3

4

5

6

7

8

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

200822

Traçado do programa em execução

( no projector )

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

2007/2008Introdução à Programação, Aula223

Traçado do programa em execução (exemplo)

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

200824

Problema

Cálculo do mínimo múltiplo comum de dois

inteiros positivos (m e n)

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

200825

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

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

200826

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)

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

2007/200827

Algoritmo do MMC

1( no quadro )

2

3

4

5

6

7

8

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

200828

Algoritmo do MMC

ler m, n // ler 2 inteiros a partir do tecladoteclado

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 monitormonitor

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

200829

Programa MMC em Java (1)

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 mmcwhile (mmc % menor != 0) // Calcular mmc

mmc = mmc + maior;System.out.println("O m.m.c. entre " + m + " e " + n + " é " + mmc + ".");

}}

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

200830

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 + ".");}

}

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

200831

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 + ".");

}}

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

200832

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

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

200833

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]

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

200834

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

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

200835

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

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

200836

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