Lógica para Computação (IF61B) Lógica para Computação: Especificação de Programas Prof. Celso Antônio Alves Kaestner, Dr. Eng. Alterado e complementado por Prof. Adolfo Neto, D.Sc.
Lógica para Computação (IF61B) 25/05/09Prof. Celso A A Kaestner 2 Especificação de programas Uma tarefa típica em Computação: Especificações em linguagem natural exigem que se assuma o significado de diversos termos, e por isto são “imprecisas / vagas / inconsistentes” permitindo diversas interpretações; Este é um problema amplamente estudado em Engenharia de Software, que busca métodos e formalismos tenta eliminar / reduzir este problema. Modelagem problema computacional problema real
Lógica para Computação (IF61B) 25/05/09Prof. Celso A A Kaestner 3 Especificação de programas Visão operacional de um programa: Programas como transformadores de estados:... programa 1 = {v 1 1,v v 1 m } = {v 2 1,v v 2 m } = {v n 1,v n 2...v n m } dados de entrada dados de saída...
Lógica para Computação (IF61B) 25/05/09Prof. Celso A A Kaestner 4 Especificação de programas Especificação de propriedades de programas: Exemplo: dados dois valores (x e y) inteiros maiores ou iguais a 10 calcular sua soma (z); Especificação 1: –sobre o estado inicial: x 10 y 10 –sobre o estado final: z = x + y Especificação 2 (superespecificação): –sobre o estado inicial: x 10 y 10 (x + y) 0 –sobre o estado final: z = x + y z 20
Lógica para Computação (IF61B) 25/05/09Prof. Celso A A Kaestner 5 Especificação de programas Especificação 3 (especificação pouco clara): –sobre o estado inicial: x 10 (x + y) (10 + x) –sobre o estado final: z = x + y Especificação 4 (especificação incompleta): –sobre o estado inicial: x 10 –sobre o estado final: z = x + y “Especificação” 5 (não é especificação...): –sobre o estado inicial: x 10 y 10 –sobre o estado final: z = x + y z < 10
Lógica para Computação (IF61B) 25/05/09Prof. Celso A A Kaestner 6 Especificação de programas Vantagens de se ter uma especificação definida por formalismo matemático: 1.Precisão; 2.Verificação de consistência; 3.Simulação; 4.Verificação de programas. Pode-se usar a Lógica Matemática como linguagem de especificação (SILVA; FINGER; MELO, 2006, p. 165);
Lógica para Computação (IF61B) 25/05/09Prof. Celso A A Kaestner 7 Especificação de programas Sistematização das propriedades de programas: 1.Pré-condições: válidas sobre os dados de entrada; 2.Pós-condições: válidas sobre os dados de saída; 3.Invariantes: válidas sempre, durante toda a execução do programa.
Lógica para Computação (IF61B) Especificação de programas Exemplo: fatorial. 1 se n=0 n! =1se n=1 n*(n-1)! se n>1 PRE: n 0 POS: fat = n! INV: fat > 0 25/05/09Prof. Celso A A Kaestner 8
Lógica para Computação (IF61B) Referências SILVA, Flávio S. C. da; FINGER, M.; MELO, Ana C. V. de. Lógica para Computação. São Paulo: Thomson Learning, 2006.