Lógica Digital e Aritmética Binária Informática Aplicada I 1 Conceitos • Computadores executam operações básicas: Somar Bits; Complementar bits; • Subtração; Comparar bits; Mover bits; • São realizadas por circuitos eletrônicos: Circuitos Lógicos ou “gates” (portas lógicas). 2 Sistemas Lógicos • Baseados na Álgebra de Boole: George Boole (1815 - 1864); • Trabalha apenas com duas grandezas: Falso (0) ausência Verdadeiro (1) presença • Implementada por: Sinais elétricos. 3 Portas Lógicas • Combinam dois ou mais sinais de entrada; produzindo um único sinal de saída; • São comumente encontradas com: 2, 3 ou 4 portas de entrada; • Exemplo: Porta Lógica And; Só haverá sinal na saída se houver sinal nas duas entradas. Tabela Verdade AND 4 Representação em circuitos elétricos CONTROLE ENTRADA SAÍDA 40´s: relés eletromecânicos 50´s: válvulas 60´s: transistores 70´s circuitos integrados Integração em escala cada vez maior Circuitos Lógicos: operam um ou mais sinais lógicos de entrada para produzir um (e somente um) sinal de saída, que depende da função implementada no circuito. 5 Origem: Álgebra Booleana (1815-1864) 6 7 Operações em Álgebra Booleana Exemplo: Operações Básicas Tabela Verdade da Expressão: X=A.B+C A AND B OR NOT C Ordem de Precedência 8 SISTEMAS NUMÉRICOS e Aritmética Binária 9 SISTEMAS NUMÉRICOS (mais utilizados na computação) • Decimal (dez algarismos) 0-1-2-3-4-5-6-7-8–9 • Binário (dois algarismos) 0–1 Dúzia: 0 a 12 Horas: 0 a 60 Graus: 0 a 360 Rad: 0 a 2π • Hexadecimal (dezesseis algarismos) 0-1-2-3-4-5-6-7-8-9-A-B-C-D-E-F • Octal (oito algarismos) 0-1-2-3-4-5-6-7 10 Sistema Decimal • É um sistema posicional: 3 2 1 0 1345 = 1x103 + 3x102 + 4*101 +5x100 1345 = 1x1000 + 3x100 + 4x10 +5x1 • É um sistema de base 10 Base: quantidade de algarismos do sistema Base 12 (dúzia), base 60 (hora, minuto, segundo) 11 Sistema Decimal • Representação geral de um sistema de numeração Nb = anbn + ... + a1b1 + a0b0 + a-1b-1 + ... + a-nb-n Onde N é uma quantidade qualquer e b é a base • n depende da dimensão do número 12 Sistema Binário • Duas grandezas: 0 e 1 • Conversão de 1011 em binário para decimal: 3 2 1 0 1x23 + 0x22 + 1x21 + 1x20 = 8 + 0 + 2 + 1 = 11 • Conversão de 12 em decimal para binário: Divide-se sucessivamente por 2 e anota-se o resto 12/2 = 6 + 0 6/2 = 3 + 0 3/2 = 1 + 1 1/2 = 0 + 1 Decimal: 12 Binário: 1100 13 Sistema Hexadecimal • Expresso por soma de potências de 16 multiplicadas por coeficientes apropriados 4 15 12 13 2 10 14 Tabela ASCII www.asciitable.com 15 Tabela ASCII www.asciitable.com 8 Bits = 1 Byte pode representar 256 caracteres 16 Definição • Método padronizado e sistematizado para fornecer instruções para um computador; • Linguagem: conjunto de regras sintáticas e semânticas que possibilita especificar precisamente quais ações devem ser tomadas pelo computador; • O conjunto de palavras (tokens), composto de acordo com essas regras, constituem o “código fonte” de um software; • Esse código é traduzido para a linguagem de máquina através de um programa chamado “Compilador”. 18 Evolução das Linguagens • Geração Zero: programação na máquina; Linguagem de máquina; • Primeira Geração: linguagem de baixo nível; Assembly; • Segunda Geração: linguagem de alto nível; Fortran, Algol, ... • Terceira Geração: linguagens estruturadas; Cobol, Pascal, C, ... • Quarta Geração: geram o código em outras linguagens; Visual, Java, C++, SQL, ... • Quinta Geração: linguagens lógicas; Associadas à inteligência artificial e linguística computacional; Prolog; 19 Linguagem de Baixo Nível • Baixo Nível: nível de abstração da linguagem; Utiliza diretamente as instruções do processador, • É necessário conhecer os registradores da máquina e as instruções disponíveis; • Estão diretamente relacionadas com a arquitetura do computador; Exemplo: Assembly; • Não é Assembler: programa que traduz a linguagem Assembly para o código da máquina (processador); • Trabalha diretamente com os registradores do processador, manipulando instruções e dados. 20 Linguagem de Alto Nível • Alto Nível: Nível de abstração maior (instruções Read, Write, ...) Mais distante da linguagem de máquina; Mais próxima da linguagem humana. • Não estão diretamente relacionadas à arquitetura do computador; Compilador: programa que traduz o “código fonte”para a “linguagem de baixo nível”; • Exemplos: Fortran, Cobol, Pascal, C, C++, C#, Java, PHP, Perl, etc. 21 Linguagens de Médio Nível • Termo não aceito universalmente; • Situação intermediária entre Baixo e Alto nível; • Exemplo: Java; Nível de linguagem segundo nível de abstração: 22 Histórico das Linguagens • 1940´s: programação em Código Binário; 0110010110011011010110011010111010110101 • 1950´s: linguagem Assembly; Instruções representando o código binário: “add EAX” Código associado à uma determinada arquitetura; • 1950´s: Fortran (Formula Translator); Muitas funções e instruções pré-definidas; Utilizada até hoje: versões constantemente atualizadas; • 1960´s: Pascal • 1970´s / 1980´s / 2000 / 2010 / ... 23 Texas Instruments Speak & Spell: Talk can be cheap (ZX-81) Machine Code – Código de Máquina 24 Assembly 25 Fortran 26 Java C++ 27 Pascal Cobol 28 Delphi PHP 29 Visual Basic Flash 30 Linguagens mais populares http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html 31 32 Programação por Algoritmos • Lógica binária utilizada em todas as linguagens; • Estruturas comuns a praticamente todas; If, else, goto, etc. • Diferenças na implementação do código; • Algoritmos: abstração das particularidades das linguagens em geral; Utilização de estruturas comuns a todas as linguagens; 33 Algoritmo 34 Algoritmo 35 Desenvolvimento de Programas • Especificação de Requisitos: Definição clara do problema; Características desejadas na solução; • Projeto Global: Desenho geral do sistema (arquitetura); Linguagem de programação a ser utilizada; • Codificação: Elaboração do programa/sistema na linguagem escolhida; • Validação: Testes e re-testes do programa/sistema; Revisão e solução de falhas encontradas; • Utilização: Uso em produção do programa/sistema; Detecção de falhas ou novos requisitos; • Evolução: Correção de falhas detectadas em produção; Implementação dos novos requisitos desejados. 36 Desenvolvimento de Programas • Ferramentas ou Ambientes de desenvolvimento: Programas para escrever programas; • Geração do código fonte (codificação): Código escrito em determinada linguagem; Interfaces gráficas e depuradores auxiliam o processo; • Tradução do código fonte (código objeto): Montadores ou compiladores + Linkers (bibliotecas); • Depuradores (debuggers): Auxiliam a encontrar os erros (bugs) do programa. 37 38 39