Lógica

Propaganda
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
Download