Informática I
Hélio Marques Sobrinho
Informática I 2
Informática I - Programa
1. Introdução e Histórico
História da computação
Funcionamento básico de um computador digital
Linguagens de programação
Sistemas de numeração
Representação de dados no computador
2. Noções de Lógica e Álgebra de Boole
Noções de lógica matemática
Princípio da dualidade
Álgebra de Boole
3. Algoritmos e Programação
Representação e Tipos de dados
Estruturas de controle básicas
Noções de abstração de dados
Noções de abstração de controle
Desenvolvimento de algoriitmos
Informática I 3
Informática – definição
Ciência da informação
●ciência da computação
●teoria da informação
●processo de cálculo
●análise numérica
●
métodos teóricos de representação do conhecimento
●modedlangem dos problemas
Origem da palavra
●
1957 – Karl Steinbuch, Alemanha
“Informatik: Automatische informationsverarbeitung”
Informática: Processamento automático da informação
Informática I 4
Histórico da Computação
Necessidade de sistema de numeração
Associação de posses a pedras
Aumento das posses
=> símbolos para representar certa quantidade
Escrita cuneiforme
Babilônios e Assírios há mais de 5000 anos
Stonehenge, UK, 2600 a 1799AC
Primeiro computador ?
Ábacos : 300 AC
Informática I 5
John Napier (logaritmos)
1617 - Máquina de multiplicar através de cilindros
Blaise Pascal
1642 – Máquina de somar e subtrair usando engrenagens
Willhelm Leibniz
1673 – Projeto de máquina para multiplicar usando somas sucessivas
Construida somente em 1694
Basile Bouchon
1728 – Tear mecânico com folha giratória de papel perfurado
Joseph Jacquard
Informática I 6
Charles Babbage
1812 – Máquina de cálculos de tabelas matemáticas 1859 – Máquina diferencial
W. S. Burroughs
1890 – Máquina com teclado para somar e imprimir
Herman Holerith
1890 – Máquina tabuladora com cartões de papel perfurado Censo dos EUA
Informática I 7
Howard Aiken
1937 – Mark I: Cálculos integrais e diferenciais
Alan Turing
1943 – Colossus 1800 válvulas
Informática I 8
John von Neumann
1946 – ENIAC
Electronic Numeric Integrator and Calculator 18800 válvulas
30 ton
3 salas totalizando 72m2
1948 – EDVAC
Electronic Discrete Variable Automatic Computer
IBM – International Business Machines
1960 – IBM System/360
Marco histórico dos mainframes Padrões:
Byte de 8 bits
CPU com micro código
DEC – Digital Equipment Corporation
1970 – PDP – Programmed Data Processor Minicomputador
Influenciou a criação dos primeiros microcomputadores Origem do UNIX - PDP-7
Informática I 9 Intel 1972 – Altair – processador 8080 Microcomputadores de 8 bits CP/M-80 1979 – 8086 e 8088 Microcomputadores de 16 bits IBM PC/DOS 1983 – 80286 IBM PC/AT 1985 – 80386 Arquitetura i386 Proteção de memória Paginação e Segmentação
Sistemas multiprogramados e multiusuários Unix em microcomputadors !
1992 – Pentium 1997 – Pentium II 1999 – Pentium III 2000 – Pentium IV 2002 – Xeon 2005 – Dual core 2008– Quad core 2008/20098 – i7 2010 - i5
Informática I 10
Evolução do software
Computadores mecânicos e eletromecânicos Computadores analógicos
alteração do hardware
Computadores eletrônicos - digitais Computadores programáveis
single job
monitores / batch
sistemas operacionais monousuário/monoprogramáveis sistemas operacionais monousuário/multiprogramáveis sistemas operacionais multiusuários
sistemas multiprocessados sistemas distribuídos clusters e grids Virtualização software simulação hardware emulação
Informática I 11
Sistemas de Numeração
Motivação:
Associação de posses a pedras Aumento das posses
Números cuneiformes: Babilônia
Notação posicional base 60 3400 BC
Base 10
3200 BC
O zero – número 0 36 BC
Informática I 12
Notação Posicional
Conceitos
Quantidade : Q
Representação numérica : N em uma base β, usando símbolos para valores de 0 a β-1 Nβ = ... DCBA.abcd...β
Q = ... Dβ3 + Cβ2 +Bβ1 +Aβ0 + aβ -1 +bβ-2 +cβ-3 + dβ-4 + ...
Os símbolos { ..., D, C, B, A, a, b. c, d, ... } representam quantidades de 0 a β–1 Exemplo:
A quantidade “cento e vinte e três” é representada na base 10 por: N10 = 12310 → Q = 1*102 + 2*101 + 1*100 = 123
10 (cento e vinte e três unidades).
Se fizermos os cálculos de Q em outra base, obteremos o número N nesta base. Exemplo: N4 → Q = 1*222 + 2*221 + 3*220 = 1210 + 110 + 3 = 1323
4
Informática I 13
Simplificações
Conversão de números na base 10 para base β
Seja Q representado por N na base 10.
1. Divida N por β, o quer produz um quociente Q0 e um resto R0 2. Divida o quociente Q0 por β produzindo Q1 e R1
3. Continue o processo de divisão até que o quociente Qi seja 0. Isto é Qi-1 < β.
4. O número na base β será RiRi-1Ri-2...R1R0
Conversão de números da base β para a base βn
Cada dígito do número na base βn será representado por n dígitos na base β
Exemplos:
3548 = 0111011002 4FB916 = 103323214
Informática I 14
Simplificações
Parte fracionária: f = 0.abcd...
1. Multiplique f por β produzindo X0.yzkw...
2. Peque a parte fracionária 0.yzkw... e multiplique por β produzindo X1.mnop...
3. Repita até que o resultado seja 0 ou o número de dígitos seja satisfatório. O resultado será N β= 0.X0X1X2X3... Exemplo: 0.17510 => Y2 0.175 * 2 = 0.35 0.35 * 2 = 0.7 0.7 * 2 = 1.4 0.4 * 2 = 0.8 0.8 * 2 = 1.6 0.6 * 2 = 1.2 0.2 * 2 = 0.4 0.4 * 2 = 0.8 0.8 * 2 = 1.6 0.6 * 2 = 1.2 ... Repetição “dízima periódica” Y2 = 0.0010110011001100...
Informática I 15
Representação de dados em um computador digital
Números no mundo real
Naturais ℕ 0 + ε=1 Inteiros ℤ - + ε=1 ℝ - + Reais ε0
Computador digital: N bits
...
N-1 0
Informática I 16 Números Naturais
N bits : números de 0 a 2N-1
Números inteiros
1. Sinal magnitude
1 bit de sinal e N-1 bits para a magnitude. [ -127 ... -0, +0 ... +127 ] Exemplo com 8 bits : +1010 = 00001010
-1010 = 10001010 2. Complemento de 1
Positivos N, Negativos N [ -127 ... -0, +0 ... +127 ] Exemplo com 8 bits : +1010 = 00001010
-1010 = 11110101 3. Complemento de 2
Positivos N, Negativos N + 1 [ -128 ... 0 ... +127 ] Exemplo com 8 bits : +1010 = 00001010
Informática I 17 Números de ponto flutuante
Valor +/- A.bcdef... x 10k
Normalização: +/- 0.xyzkw... x 2E
N-1 0
S ... ...
1 bit e bits m bits
mantissa expoente
sinal
Faixa de valores
definidos pelo expoente e bits
Precisão
definida pela mantissa m bits
N = 1 + e + m
Expoente: excesso de 2e-1 - 1
Informática I 18
Formatos padrão de representação de ponto flutuante - IEEE
Números de 32 bits
1 bit para o sinal
8 bits para o expoente, excesso de 127 (-126 a +127) 23 bits para a mantissa
Números de 64 bits
1 bit para o sinal
11 bits para o expoente, excesso de 1023 (-1022 a +1023) 52 bits para a mantissa
Números de 80 bits
1 bit para o sinal
15 bits para o expoente, excesso de 16383 (-16382 a +16383) 64 bits para a mantissa
Números de 128 bits
1 bit para o sinal
15 bits para o expoente, excesso de 16383 (-16382 a +16383) 112 bits para a mantissa
: todos os bits do expoente = 1, todos os bits da mantissa = 0
Informática I 19
Caracteres
Códigos numéricos para símbolos gráficos
A B C a b c 1 2 3 4 . , $ # ( { @ } _ = | < > / \ ق ش ز җ Ể ╙ ╛ ╜ ☻ ♀ ☼ ♠ ♣ ♥ ♦ ♪ ♫ ₤ ₧
H e l i o M a r q u e s
Alguns códigos de caracteres
ASCII American Standard Code for Information Interchange (ANSI) 7 ou 8 bits
EBCDIC Extended Binary Coded Decimal Interchange Code (IBM) 8 bits
Unicode
UTF Unicode Transformation Format 8 (utf8) ou 16 (utf16) bits
ISO/IEC
ISO-8859-1 ISO Latin-1 8 bits
Strings (cadeias de caracteres)
Informática I 20
Linguagens humana
●
Complexa
●Ambígua
Linguagens de programação
●
Especializadas ou de uso geral
●Alto nível
●
Algoritmicas e não algoritmicas
●Baixo nível
●
Instruções, microinstruções
●Linguagens de montagem
ISA – Instruction Set Architecture
●
Linguagem de montagem
Linguagens de hardware
●
Nível de lógica digital
Informática I 21
Representação de dados
Mapeamento de objetos
●
Objetos do mundo real
●Entidades abstratas
●
Objetos do mundo computacional
●
Entidades numéricas
intfloat
char
Mundo computacional
●
Limitações
●
Grandeza e Precisão (limitação de número de dígitos)
●Problemas de representação (ex. 0.1
10
→ x
2)
●
Entidades abstratas
Informática I 22
Resolução de um problema em um sistema de computação
Processo de desenvolvimento
Problema: Análise → Método de resolução e estruturas de dados → Algoritmo
Codificação: Linguagem de programação → Programa
Execução do programa
●
Interpretação: Um programa interpreta o fonte na linguagem diretamente
●
Tradução: O programa é traduzido para outra linguagem que pode ser
compilada ou interpretada
●
Compilação : O programa é traduzido para padrões binários correspondentes
à linguagem de montagem da família do processador utilizado
Fonte(s) em linguagem de alto nível Fonte(s) em linguagem de montagem
Compilador / Montador Linkeditor
Módulo(s)
Informática I 23
Elementos de uma linguagem de programação - exemplo “C”
● Constantes (números, caracteres e textos) ● Representação de dados
● Números Inteiros e de ponto flutuante
x ∈ ℕ x ∈ ℤ x ∈ ℝ x ∈ ℂ ● Conjunto de caracteres
● ASCII, EBCDIC, UTF-8, ISO-8859-1, … ● Variáveis
● Identificadores
● Registradores e posições de memória ● Declareções
● Mapeamento em tipos definidos pela linguagem ● Comandos
● Sequenciais
● Atribuições, expressões, chamadas de funções/procedimentos ● Interativos - entrada e saída (read, write, scanf, printf, …) ● Condicionais (if/else)
● Seleção múltiplas (switch) ● Iterativos (while, for, do, ...)
ASCII:
'A' = 41h
EBCDIC:
Informática I 24
A linguagem C
● Tipos básicos
int, unsigned int, long int, unsigned long int, float, double, char, ...
● Macros
#define identificador texto
#define identificador( argumentos ) texto
● Inclusão de arquivos
#include “arquivo” #include <arquivo>
● Declarações
tipo lista de variáveis ;
● vetores e matrizes
identificador [ tamanho ]
identificador [ tamanho ] [ tamanho ] ...
● Estruturas heterogêneas
struct { lista de declarações }
● Definição de tipo
Informática I 25
Expressões lógicas
Operadores lógicos && ||
Operadores bit a bit
& | ^ Operadores relacionais == != < > <= >= Expressões aritméticas Operadores aritméticos * / + - % Atribuições
variável operador expressão
Informática I 27
Chamada de funções e procedimentos
Call
Utilização comum
Int
Utilizado em DOS/Windows (chamadas ao sistema)
Trap
Tratamento de erros/eventos em alguns sistemas
Passagem de parâmetros
Tipo
Valor
(exemplo: C/C++)
Referência
(exemplo: C/C++ usando &v)
Nome
(exemplo: Algol 60)
Valor de retorno
(exemplo: Fortran)
Forma
Blocos em posições absolutas
(alguns mainframes - SVC)
Registradores
(compiladores c/ alta otimização)
Informática I 28
Chamada de procedimentos e passagem de parâmetros
Função em linguagem C
int f(int a, int b, int c)
{
int m;
/* código da função */
m = a + b * c;
return(m);
} /* Funcao f */
Acesso aos argumentos
mov AX, [BP + 4] ; b
mul AX, [BP + 6] ; c
add AX, [BP + 2] ; a
; --- libera variáveis locais
mov sp, bp
ret
0000,,,0
FFFF...F
Informática I 29