Escolar Documentos
Profissional Documentos
Cultura Documentos
Aula 3 - Programas, Máquinas
Aula 3 - Programas, Máquinas
Aula 3 - Programas, Máquinas
Aula 3
Sumário
➢ Programas
▪ Tipos de programas (Monolíticos, Iterativos e
Recursivos)
➢ Máquinas
▪ Tipos de máquinas: Máquina de Dois registradores
Programa
➢ Conjunto de instruções que capacitam uma máquina a executar certas
operações e testes sobre dados de entrada, com o objetivo de transformar
esses dados numa forma desejável (produzindo as saídas desejadas).
Identifiadores de Testes
➢ T1,T2,T3,...
➢ Um teste só retorna dois valores possíveis: Verdadeiro ou Falso.
Programa Monolítico
Instruções rotuladas
Programa Monolítico (Instrução Rotulada)
Sendo que:
➢ Duas instruções diferentes não podem ter o mesmo rótulo.
➢ Um rótulo final é aquele referenciado mas não está associados a nenhuma
instrução.
Programas monolíticos
Exemplos
P1 = (I1,1), onde P2 = ({1: faça F vá_para 2,
I1 = { 2:se T vá_para 1 senão vá_para
1: faça F vá_para 2, 3},1)
2: se T1 então vá_para 1 senão
vá_para 3,
3: faça G vá_para 4,
Se T2 então vá_para 5 senão vá_para
1
}
➢ Dada sua composição sequencial, são usadas pela maioria das linguagens de
máquinas, como linguagem de baixo nível (assembly).
Programas interativo
Elementos de estruturação:
➢ Execução sequencial: Composição de dois programas, resultando em um terceiro,
cujo efeito é a execução do primeiro e, após, a execução do segundo programa
componente.
Composição sequencial
➢ Se V e W são programas iteractivos, então a composição seqüencial denotada por
V;W resulta em um programa iterativo, cujo efeito é a execução de V e, após, a
execução de W.
Programa iterativo
Composição condicional
➢ Se V e W são programas iterativos e se T é um identificador de teste, então a
composição condicional, denotada por “se T então V senão W”, resulta em um
programa iterativo cujo efeito é a execução de V se T é verdadeiro ou W se T é
falso.
Programa iterativo
Composição enquanto
➢ Se V é um programa iterativo e se T é um identificador de teste, então
“Enquanto T faça V”, é um programa iterativo (execução do tipo “enquanto”) cujo
efeito é a execução de V enquanto o resultado do teste de T for verdadeiro. Caso
contrário, a iteração termina.
De forma análoga funciona a “ Execução do tipo até”.
Até T faça V.
Programa iterativo
• Em relação á composição sequencial tem-se:
• P1;P2;P3;...Pn
Composição sequencial
➢ Se D1 e D2 são expressões de sub-rotinas, então a composição sequencial
denotada por D1; D2 resulta em uma expressão de sub-rotinas cujo efeito é a
execução de D1 e, após, a execução de D2.
Programa recursivo
Composição Condicional
➢ Se D1 e D2 são expressões de sub-rotinas e T é um identificador de teste, então
a composição condicional denotada por se T então D1 senão D2 resulta em
uma expressão de sub-rotinas cujo efeito é a execução de D1 se T é verdadeiro
ou D2 se T é falso.
Programa recursivo
TPC
Desenvolver um programa recursivo, sobre uma máquina genérica, que calcule o
fatorial de n utilizando a fórmula f = 1 * 2 * 3 * 4 * ... * n
➢ O valor de n será fornecido pelo usuário, devendo ser um valor inteiro e positivo.
➢ Caso o usuário forneça um valor inválido para n, o programa deverá apresentar
uma mensagem de erro.
Máquinas
Máquina
Tem por objectivo suprir todas as informações necessárias para que a computação de
um programa possa ser descrita (funções de entrada e saída):
➢ Suprir o significado aos identificadores das operações de Testes.
➢ Cada identificador de operação interpretado pela máquina deve ser associado a
uma transformação na estrutura de memória.
➢ Cada identificador de teste interpretado pela máquina deve ser associado a uma
função verdade.
Máquina
Observações
➢ Nem todo o identificador de operação ou teste é definido em uma máquina.
➢ Para cada identificador de operação ou teste definido em uma máquina, existe
somente uma função associada.
➢ A máquina deve descrever o armazenamento ou recuperação de informações na
estrutura de memória.
Máquina
Uma máquina é uma 7-upla:
𝑴 = (𝑽, 𝑿, 𝒀, 𝝅𝒙, 𝝅𝒚, 𝜫𝑭, 𝜫𝑻)
dois_reg =
𝑁 2 , 𝑁, 𝑁, 𝑎𝑟𝑚𝑎𝑧𝑒𝑛𝑎_𝑎, 𝑟𝑒𝑡𝑜𝑟𝑛𝑎_𝑏 𝑠𝑢𝑏𝑡𝑟𝑎𝑖𝑟_𝑎, 𝑎𝑑𝑖𝑐𝑖𝑜𝑛𝑎𝑟_𝑏 , 𝑎_𝑧𝑒𝑟𝑜 , 𝑜𝑛𝑑𝑒:
➢ 𝑁 2 corresponde ao conjunto de valores de memória.
➢ N corresponde, simultaneamente, aos conjuntos de valores de entrada e saída.
➢ Armazena_a: ℵ → ℵ2 é a função de entrada, tal que ∀𝑛 𝜖 ℵ :
--armazena_a(n) = (n,0)
➢ Retorna_b: ℵ → ℵ2 é a função de saída, tal que ∀ (n,m) 𝜖ℵ2 :
--- retorna_b(n,m) = m
➢ Subtrair_a: ℵ2 → ℵ2 é a interpretação, tal que ∀ (n,m) 𝜖 ℵ2 :
--subtrair_a(n,m) = (n-1, m) se n ≠ 0
-- subtrair_a(n,m) = (0,m), se n = 0
Máquina de Dois Reistradores