Linguagem de Montagem Visão geral Introdução Para executar uma tarefa qualquer, um computador precisa receber instruções precisas sobre o que fazer Esse conjunto de instruções chamamos de algoritmo Isso constitui num PROGRAMA de computador? Algoritmo vs. Programa Def-1: Um algoritmo é uma seqüência não ambígua de instruções que é executada até que determinada condição se verifique. Def-2: Um programa de computador é uma coleção de instruções que descrevem uma tarefa a ser realizada por um computador. Algoritmo vs. Programa Um algoritmo não representa, necessariamente, um programa de computador, Ele representa os passos necessários para realizar uma tarefa Sua implementação pode ser feita por um computador, por outro tipo de autômato ou mesmo por um ser humano. Algoritmo vs. Programa Programa é a formalização de um algoritmo em qualquer linguagem capaz de ser transformada em instruções que serão executadas por um computador gerando os resultados esperados O Programa é uma referência ao código fonte, escrito em alguma linguagem de programação Linguagem de Programação Método padronizado para expressar instruções para um computador Conjunto de regras sintáticas e semânticas usadas para definir um programa de computador Uma linguagem permite que um programador especifique precisamente sobre quais dados um computador vai atuar Linguagem de Programação A primeira e mais primitiva linguagem de computador é a própria linguagem de máquina Aquela que o computador entende diretamente e pode ser diretamente executada pelos circuitos do processador (pelo hardware) Formada por 0 e 1 Imagine então um programa extenso escrito apenas usando 1's e 0's Linguagem de Programação Cada família de computadores possui sua própria linguagem de máquina. Um programa em linguagem de máquina é dependente do computador Somente poderá ser executado em computadores da mesma família Ou seja para cada computador o programa devia mudar Linguagem de Montagem A primeira tentativa bem-sucedida para resolver o problema acima descrito foi a criação de uma linguagem em que os códigos numéricos foram substituídos por mnemônicos – – – LOAD = carregar ADD = somar MOVE = mover dados entre os registradores Linguagem de Montagem Essa linguagem simbólica recebeu o nome de Assembly Language (Linguagem de Montagem) O programador não precisava decorar os códigos numéricos que representavam as diferentes instruções e os endereços reais de armazenamento Ele deveria decorar mnemônicos para as instruções e definir nomes para as referências dos endereços Linguagem de Montagem O processo de tradução da linguagem de montagem para a linguagem de máquina (chamado de montagem) é realizado por um programa chamado Assembler (Montador) O programa Assembler lê cada instrução escrita em linguagem Assembly e a converte em uma instrução equivalente em linguagem de máquina FIM Teoria da Computação Computação pode ser definida como: – – A solução de um problema formalmente O cálculo de uma função, através de um algoritmo Teoria da Computação – Área da computação que busca determinar quais problemas podem ser computados em um dado modelo de computação Autômato É definido como sendo um modelo matemático de uma máquina de estados finitos. Um autômato funciona como um reconhecedor de uma determinada linguagem Serve para modelar uma máquina – – Um Computador Simples Uma Televisão Autômato Exemplos Autômato Tipos: – Finitos – A pilha – Reconhecedores de Linguagens regulares Reconhecedores de Linguagens Livres de Contexto Maquina de Turig Reconhecedores de Linguagens recursivas Maquina de Estados Finitos É uma modelagem de um comportamento, composto por estados, transições e ações Linguagens Formais São mecanismos formais para representação e especificação de linguagens, baseados na chamada "Teoria da Computação". As representações podem ser feitas por reconhecedores e geradores. Os reconhecedores são dispositivos que verificam se uma sentença pertence ou não à determinada linguagemos autômatos