• Nenhum resultado encontrado

A04 verificacao.manual.algoritmos modularizacao

N/A
N/A
Protected

Academic year: 2019

Share "A04 verificacao.manual.algoritmos modularizacao"

Copied!
26
0
0

Texto

(1)

Verificação Manual de

Algoritmos e Modularização

Bruno Cartaxo

http://sites.google.com/site/brunocartaxo

[email protected]

(2)

Tópicos a serem discutidos na disciplina

Introdução a computadores e algoritmos

Tipos de dados, operadores, variáveis, E/S

Verificação manual de algoritmos e modularização

Estruturas de decisão: comandos SE e CASO

Estruturas de repetição: comandos ENQUANTO e PARA

Vetores

Introdução à Java

Trabalhando com strings em Java

Estruturas de decisão em Java

Estruturas de repetição em Java

(3)

Roteiro para construção de algoritmos

1. ENTENDA O PROBLEMA

• Etapa mais importante. Erros nesta fase podem levar a construção de soluções erradas ou soluções corretas para o problema errado.

2. Identifique no problema as saídas do algoritmo

• Atente o que deve ser calculado, impresso e processado.

3. Identifique no problema as entradas do algoritmo

• Atente para o que deve ser lido, obtido do usuário.

4. Identifique qual o processamento necessário

• Atente para os cálculos necessários, sempre a partir dos valores de entrada, para chegar aos de saída.

5. Separe as etapas de entrada de dados, processamento e saída de dados dentro do algoritmo.

(4)
(5)

Verificação manual de algoritmos

Após a construção de um algoritmo

pode-se verificar se o mesmo

realmente é uma solução

para o problema.

Forma

“braçal” denominada “

teste de mesa

” ou “

método chinês

”.

Consiste na

simulação manual da execução do algoritmo

,

comando após

comando

, atentando para as entradas e saídas de dados e verificando o

comportamento das variáveis.

Equivale a colocar-se no papel do computador

, anotando o que a máquina

(6)

Exemplo 1

Calcular a

média de dois números

reais

Solução

Entradas: dois números reais

Saída: a média dos números

Cálculo necessário: somar os números e dividir o resultado por dois.

Variáveis

num1, num2, soma, media : real;

Início

ler num1; ler num2;

(7)

Exemplo 1

Verificando se o algoritmo está correto

• Inicialmente anotamos as variáveis do algoritmo, e, ao lado, o valor nela armazenado.

Supondo que, na primeira leitura, o usuário forneça o valor 8.

Supondo que, na segunda leitura, o usuário forneça o valor 7.

• Em seguida o computador calcula a soma.

• Por último o computador calcula a média na atribuição seguinte.

• O valor 7.5 será impresso, indicando a média dos números 8 e 7 corretamente.

(8)

Exemplo 2

Indique os valores impressos pelo algoritmo a seguir

Variáveis

A, B, C, D : inteiro;

Início

A <- 10; B <- 20; D <- A + A; C <- A + B; A <- B + C; D <- D + 1; escrever A; escrever B; escrever C; escrever D;

(9)

Exemplo 2

A ? B ? C ? D ? A 10 B ? C ? D ? A 10 B 20 C ? D ? A 10 B 20 C ? D 20 A 10 B 20 C 30 D 20 A 50 B 20 C 30 D 20 A 50 B 20 C 30 D 21 Variáveis

A, B, C, D : inteiro;

Início

A <- 10; B <- 20; D <- A + A; C <- A + B; A <- B + C; D <- D + 1; escrever A; escrever B; escrever C; escrever D;

(10)

Exemplo 3

Ler o preço de um par de sapatos numa loja e escrevê-lo com um

desconto de X%

Variáveis

preco, desconto, valor_a_descontar, preco_final : real;

Início

ler preco; ler desconto;

valor_a_descontar <- ( preco * desconto ) / 100; preco_final <- preco –valor_a_descontar;

escrever preco_final;

(11)

Exemplo 3

Supondo que o usuário informe o preço de R$50,00 e o desconto de

20%, como fica o teste de mesa?

preco 50

desconto ? v_desconto ? preco_final ?

preco 50 desconto 20

v_desconto ? preco_final ? preco 50

desconto 20 v_desconto 10

preco_final ?

preco 50 desconto 20 v_desconto 10 preco_final 40

Variáveis

preco, desconto, valor_a_descontar, preco_final : real;

Início

ler preco; ler desconto;

valor_a_descontar <- ( preco * desconto ) / 100; preco_final <- preco –valor_a_descontar;

escrever preco_final;

(12)

Exemplo 4

Ler o nome e a qualidade de uma pessoa, e exibir a mensagem

“<Nome> é uma pessoa que tem <qualidade>”.

Solução

• Exemplo simples de composição de frases em algoritmos.

• Para as entradas Maria e coragem, a saída seria “Maria é uma pessoa de coragem”.

(13)

Exemplo 4

• O algoritmo fica assim...

Variáveis

nome, qualidade : cadeia;

Início

ler nome; ler qualidade;

escrever nome, “ é uma pessoa que tem “, qualidade;

Fim

nome ? qualidade ?

nome “Maria” qualidade ?

nome “Maria”

(14)
(15)

Modularização de algoritmos

A medida que abordamos

problemas mais complexos

, os algoritmos também

apresentarão uma maior complexidade.

A complexidade não está relacionada a quantidade de comandos existentes, e

sim às diversas combinações possíveis dos comandos existentes

.

• Os comandos que possuímos são poucos, mas podemos realizar diversas combinações com os mesmos.

A complexidade de um problema pode dificultar a construção do algoritmo

de

sua solução

(16)

Modularização de algoritmos

Modularização

consiste em

dividir um algoritmo em etapas

, fazendo com que

cada etapa seja parte da solução de um problema maior.

Se um subproblema ainda parecer muito complexo, podemos tentar dividi-lo em partes ainda menores, para facilitar sua solução, e assim sucessivamente.

• “Dividir para conquistar”

Nós temos dificuldade de resolver problemas quando os mesmos possuem uma

grande quantidade de elementos inseridos.

(17)

Modularização de algoritmos

A

sintaxe

de criação de módulos é:

Para utilizar um módulo

dentro de nosso algoritmo, basta inserirmos em algum

ponto do algoritmo uma chamada ao módulo:

• <nome_módulo>;

Módulo <nome_módulo>;

[[

<comando1>; <comando2>; <comando3>; ...

<comandoN>;

(18)

Exemplo 1

Numa loja de materiais de construção, um azulejo estampado custa

R$2,50. Faça um algoritmo para ler o comprimento e altura de uma

parede (em metros), e depois escrever o valor gasto com a compra de

azulejos. Considere que um metro quadrado é formado por 9

azulejos.

Solução

• A saída é o valor total gasto com azulejos.

• O computador precisa saber o comprimento e a altura da parede.

(19)

Exemplo 1

Multiplicando a altura pelo comprimento, teremos a área da parede

(considerando uma parede retangular);

Multiplicando a área pelo número 9, teremos a quantidade de

azulejos necessários para preencher esta área;

Uma vez que um azulejo custa R$2,50 (um valor constante), podemos

multiplicar a quantidade de azulejos por 2,5 para chegar ao total

(20)

Exemplo 1

• Pensando em termos de algoritmo, podemos imaginar três etapas:

Variáveis

? ? ?; Início

(21)

Exemplo 1

• Detalhando a última etapa, criamos um módulo para escrever o gasto.

Variáveis

gasto_azulejos: real; Início

“Obter as dimensões da parede”; “Calcular o valor gasto com azulejos”; ESCREVER_GASTO;

Fim.

Módulo ESCREVER_GASTO; [[

(22)

Exemplo 1

• Detalhando a primeira etapa, criamos um módulo para ler as dimensões da parede.

Variáveis

gasto_azulejos, comprimento, altura: real; Início

LER_DIMENSOES;

“Calcular o valor gasto com azulejos”; ESCREVER_GASTO;

Fim.

Módulo LER_DIMENSOES; [[

escrever “Entre com o comprimento da parede”; ler comprimento;

escrever “Entre com a altura da parede”; ler altura;

]];

(23)

Exemplo 1

• Detalhando o cálculo do valor gasto. Variáveis

gasto_azulejos, comprimento, altura, area, azulejos: real; Início

LER_DIMENSOES;

CALCULAR_VALOR_GASTO; ESCREVER_GASTO;

Fim.

Módulo CALCULAR_VALOR_GASTO; [[

area <- comprimento * altura; azulejos <- area * 9;

gasto_azulejos <- azulejos * 2.5; ]];

Módulo LER_DIMENSOES; [[...]];

(24)

Relembrando alguns conceitos

Nomes de variáveis e módulos seguem as regras de um identificador.

Início e fim de cada módulo ficam delimitados pelos colchetes duplos.

As definições de módulos só são executadas se chamadas de dentro do

corpo do algoritmo

• A execução do algoritmo fica restrita ao que está contido entre as palavras-chave início e fim.

(25)

Referências da aula

Adaptado da aula

Introdução à Programação

do Prof. Ricardo Araújo

do curso de Ciência da Computação da FBV.

(26)

Verificação Manual de

Algoritmos e Modularização

Bruno Cartaxo

http://sites.google.com/site/brunocartaxo

[email protected]

Referências

Documentos relacionados

Neste contexto o presente estudo teve como objetivo analisar a percepção dos estudantes de uma escola pública rural e uma escoa urbana do Cariri Ocidental da

Cartografia cultural: sistema de informações geográficas para o mapeamento do patrimônio cultural em Rondônia. Maria Fernanda Mota Biblioteconomia X

Brazilian hip-hop is part of a global hip-hop culture and a transnational black diasporic expressive culture as Brazili- an hip-hop constantly references the African diaspora and at

Conforme Prado (2011) ainda pode-se elencar como desvantagens o fato de possuir diversos níveis hierárquicos, o que aumenta o risco inerente à qualidade e agilidade

Ao buscar compreender programas, discursos e intervenções torna-se central conhecer tanto as “tomadas de posição propostas em concorrência no interior do campo

São discutidos os conhecimentos disponíveis em termos de imagem funcional pelo método na esquizofrenia, transtornos ansiosos e do humor, nas demências e nos transtornos de

Importantes pesquisadores que estudaram sobre o processo de urbanização baiano classificaram, esse desenvolvimento desigual como “macrocefalia baiana”, a exemplo de

O pastor Felipe Silva de Oliveira da Terceira Igreja Batista em Jardim Bom Retiro (São Gonçalo/RJ), é convidado para apresentar uma reflexão bíblica baseada na