modelagem
Escreva um programa que leia um valor inteiro entre 0 e 999 e some seus dígitos. Por exemplo, o resultado da operação sobre o inteiro 521 é 8.
Modelo
Codificação
Teste
Análise
Modelo
Extrair cada dígito => resto da divisão inteira por 10.
Novo inteiro => resultado da divisão inteira por 10.
Encerra => novo inteiro for 0.
INÍCIO num, resto, soma
num = prompt do usuário num \= 0
resto = num % 10;
soma = soma + resto
num = num / 10
imprima soma
FIM
Codificação import java.util.Scanner; public class SomaDigito
{
public static void main(String[] args)
{
int num = 0, resto = 0, soma = 0;
Scanner prompt = new Scanner(System.in);
System.out.print(“Inteiro entre 0 e 999: "); num = prompt.nextInt(); while(num != 0)
{
resto = num % 10; soma = soma + resto; num = num / 10;
}
System.out.print(“\nSoma = "+soma);
}
}
Teste
Testar com inteiro 0;
!
Testar com inteiro negativo;
!
Testar com inteiro maior que 999;
!
Tipos: byte vs. short vs. int vs. long
8bits
16bits
32bits
64bits
!
Chamadas de métodos: bottom-up vs. top-down.
?
Análise
Image courtesy of Victor Habbick
/ FreeDigitalPhotos.net
Estrutura de Dados
Entrada
Validar o modelo, repetindo o processo até que hipótese e observações sejam concordantes Saída
Observar característica
Algoritmo
Formular hipótese consistente com a observação Prever eventos usando a hipótese Verificar as previsões, realizando novas observações Análise
Métricas: tempo de execução, espaço ocupado Prof. Hendrik Macedo, DCOMP/UFS
Análise
Métricas: tempo de execução, espaço ocupado
Qual é o algoritmo de menor custo possível (mcp)?
Toda uma família de algoritmos é investigada.
Estabele-se limites para a complexidade computacional
Qual o custo de um dado algoritmo? análise do #vezes que cada parte do algoritmo deve ser executada
Se custo(alg1) = mcp então alg1 é ótimo medida da dificuldade