Baixe o app para aproveitar ainda mais
Prévia do material em texto
PCS 3216 Sistemas de Programação João José Neto Aula 4 – Programação em linguagem simbólica Código binário Codificação simbólica Códigos não binários melhoram a legibilidade e a documentação • Notação numérica, não binária • Uso de notação não numérica • Utilização de notação simbólica mnemônica • Tendem a facilitar a codificação • Melhora a legibilidade dos programas Código hexadecimal Mnemônicos • Dispensam o programador de conhecer a codificação numérica dos programas • Até um certo ponto, pode-se dizer que a notação fica rudimentarmente auto- documentada Linguagens simbólica e numérica Legibilidade • Facilita a leitura do programa • Simplifica o desenvolvimento do programa • Simplifica a depuração do programa • Facilita a compreensão do programa por terceiros • Simplifica a manutenção posterior do programa Tradução de programas simbólicos • Para que um programa codificado em linguagem simbólica possa ser executado, é preciso antes traduzi-lo para linguagem de máquina. Conversão de programas simbólicos em numéricos • Transcrição manual dos mnemônicos dos códigos de operação com a ajuda de tabelas • Tabelas de símbolos memorizam os endereços numéricos associados aos endereços simbólicos • São consultadas para se efetuar a conversão dos endereços simbólicos em numéricos • Isso é feito compondo o código numérico da instrução com o endereço numérico associado aos nomes simbólicos das posições de memória referenciadas. Montagem (assembly) • O termo “montagem” designa a atividade de tradução de programas em código simbólico para a forma de código de máquina binário. • Para a execução de programas em notação simbólica, é preciso portanto executar sua montagem Tabela de Mnemônicos Tabela de Símbolos Montagem de uma instrução (da tabela de mnemônicos) (da tabela de símbolos) Montagem de outra instrução Montagem manual é tarefa cansativa • Tarefa tediosa e mecânica • Pode ser facilmente automatizada • Os programas que fazem este trabalho são os Montadores (assemblers) • Montadores traduzem programas-fonte simbólicos nos correspondentes códigos numéricos executáveis. Linguagens de montagem • Montadores não apenas traduzem programas simbólicos em programas numéricos • Incluem recursos adicionais de programação • Complementam a linguagem de máquina com outros recursos de programação que facilitam a produção e permitem melhorar a documentação dos programas • Programação em linguagem de máquina –Autor = Programador = Operador • Programação em linguagem simbólica –Programadores/Codificadores e Analistas Nos sistemas antigos • O responsável pelo programa encarregava-se – Da eficiência da atividade de programação – Da quantidade de memória ocupada – Do tempo de resposta do programa Nos sistemas recentes • Barateamento do hardware • Software determinante do custo do sistema • Mudaram os objetivos: – Boa estruturação dos programas – Fácil entendimento do programa – Bons recursos para testes e implementação – Maior facilidade de manutenção Deficiências da linguagem simbólica • Excesso de proximidade com a máquina • Cada computador é diferente dos demais • Isso exige treinamento profundo e específico • Dificulta o intercâmbio de programas • Dificulta a portabilidade dos programas • Os programas e as máquinas ficam vinculados • Isto sugere que se busque um desacoplamento entre máquinas e programas. Linguagens de alto nível • Exprimem algoritmos de forma independente de máquina • Uso de diagramas e de pseudo-código • Uso de notações mais próximas da linguagem humana • Criação de linguagens artificiais próprias para a programação (linguagens de alto nível) Linguagens mais populares (2016) A escalada do nível de abstração Fórmulas • As primeiras linguagens de alto nível colocavam seu foco na codificação de fórmulas matemáticas • A uma das primeiras linguagens de alto nível foi dado o nome de FORTRAN = FORmula TRANslation Aspecto de um antigo programa FORTRAN Outros comandos • Simplificações de certas construções sintáticas das linguagens naturais: – Comandos condicionais – if – Comandos iterativos – while, for – Comandos de múltipla escolha – case – Comandos de entrada e saída – read, print – Comandos de chamada de subrotina – call Tradução dos programas escritos em linguagem de alto nível • A obtenção de códigos executáveis a partir das linguagens de alto nível é complexa. • Apesar de toda a simplificação • Apesar do pequeno número de variações permitidas • Isso exige processos automáticos para a sua tradução • Compiladores são os programas que executam essa tarefa Esquema (simplificadíssimo) do processo de Compilação Compiladores • Traduzem para código executável programas expressos em linguagem de alto nível (processo conceitualmente similar ao de montagem, embora muito mais complexo) • Recebem como entrada o programa-fonte, em linguagem de alto nível • Geram como saída um programa equivalente em linguagem de máquina (em geral relocável) Interpretadores • Uma alternativa para o processamento de programas em linguagem de alto nível é a utilização de interpretadores • Esses programas de sistema percorrem o programa a executar, analisando-o e decidindo o que fazer passo a passo. • Não geram código de máquina, mas simulam a execução direta dos comandos do programa.
Compartilhar