TC T02
TC T02
TC T02
Conteúdo:
Programas:
• Um conjunto de operações e testes compostos de acordo com uma estrutura
de controle:
o Monolíticos: desvios condicionais e incondicionais
o Iterativos: estruturas de iteração
o Recursivos: sub-rotinas recursivas
Máquina:
• Interpreta Programas
• Possui uma interpretação para cada operação ou teste que constituem o
programa.
Computação:
• Histórico do funcionamento da máquina para o programa e um dado valor
inicial.
Função Computada:
• Função parcial induzida a partir da máquina e programa dados, a qual é
definida sempre que, para um dado valor de entrada, existe uma
computação finita (a máquina pára).
Referências.
Programas
Um conjunto estruturado de instruções que capacitam uma máquina a aplicar
sucessivamente certas operações básicas e testes sobre os dados iniciais
fornecidos com o objetivo de transformar esses dados numa forma desejável.
• Operações e Testes:
o Operações: F, G, H...
o Testes: T1, T2, T3...
o Operação Vazia: √
Programa Monolítico
É estruturado com somente desvios condicionais e incondicionais. Não emprega
mecanismos auxiliares como iteração, sub-divisão ou recursão, de modo que toda a
lógica do programa esta contida em um único bloco: um monólito.
Fluxograma:
test
partida parada operação
v e f
Instruções Rotuladas:
• Além da forma de um fluxograma, o programa pode ser representado como
uma seqüência de instruções rotuladas
• Exercício 2: Escrever o programa do exercício 1 como uma seqüência de
instruções rotuladas.
1: faça F vá_para 2
2: se T1 então vá_para 1 senão vá_para 3
3: faça G vá_para 4
4: se T2 então vá_para 5 senão vá_para 1
Observações:
• É trivial traduzir um programa iterativo para um fluxograma, mas a recíproca
não é verdadeira.
• O uso de identação é interessante para facilitar o entendimento.
Programa Recursivo
Raciocínio Recursivo:
• Lógica Recursiva.
Exemplos Concretos:
• Fatorial
• Fibonacci
• Lista Recursiva
Definição: Máquina.
Uma máquina é uma héptupla: M = ( V, X, Y, π X, π Y, Π F, Π T ), onde:
• V – Conjunto de Valores de Memória
• X – Conjunto de Valores de Entrada
• Y – Conjunto de Valores de Saída
• Operação:
a. Se sk é o rótulo de uma operação da forma sk: faça F vá_para r’
então (sk+1, vk+1 ) = (r’, π F(vk)) é par subseqüente de (sk, vk) na
cadeia.
b. Se sk é o rótulo de uma operação da forma sk: faça √ vá_para r’,
então (sk+1, vk+1 ) = (r’, vk) é par subseqüente de (sk, vk) na cadeia.
• Teste:
Observações:
• A computação pode ser finita ou infinita, conforme a cadeia for finita ou
infinita.
• Caso 3: Dk = Ri; C (Dk+1, vk+1) = (Ei;C, vk) é par subseqüente de (Dk, vk)
na cadeia.
Observações:
Função Computada
Noção Intuitiva (programa monolítico):
• A computação inicia na instrução identificada pelo rótulo inicial com a
memória contendo o valor inicial resultante da aplicação da função de
entrada sobre o dado fornecido.
Verifica-se que:
• Para todo iterativo, existe um monolítico equivalente fortemente.
• Para todo monolítico, há um recursivo equivalente fortemente.
Conceitos Importantes:
Teorema:
Sejam P e Q dois programas arbitrários não necessariamente do mesmo tipo. Então
P≡ Q se e somente se, para qualquer máquina de traços M, P≡ MQ.
a. Rotulação de Nós:
i. Rotula-se cada nó do fluxograma.
ii. Supõe-se, sem perda de generalidade, que existe um único
componente elementar de parada, ao qual é atribuída a
palavra vazia.
iii. O rótulo correspondente ao nó partida é o rótulo inicial do
programa P´
b. Instruções Rotuladas Compostas (IRC): A construção de uma IRC
inicia no nó partida e segue o caminho do fluxograma. Dependendo
do próximo componente elementar tem-se que
Rótul Té T é Falso
o Verdadeiro
1: (G, 2) (F, 3)
2: (G, 2) (F, 3)
3: (F, 4) (G, 5)
4: (F, 4) (G, 5)
5: (F, 6) (ciclo, ω )
6: (parada, ε ) (G, 7)
7: (G, 7) (G, 7)
ω: (ciclo, ω ) (ciclo, ω )