Informática I. Hélio Marques Sobrinho hmarx@linuxtech.com.br



Documentos relacionados
MC102 Algoritmos e programação de computadores Aula 3: Variáveis

Unidade Central de Processamento Organização da UCP Execução de instruções em paralelo ("pipeline") Execução de programas

INFORMÁTICA HISTÓRIA DA INFORMÁTICA 1º PD PROFESSOR

O Computador. Evolução dos métodos de cálculo. Estrutura do Computador Digital

Parte 01. Fundamentos de Arquitetura de Computadores. Prof. Pedro Neto

O modelo do computador

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES

O COMPUTADOR. Introdução à Computação

Organização de Computadores I

Capítulo 1 Introdução

Arquitetura de Computadores. Prof. Marcelo Mikosz Gonçalves

Introdução à Computação

Introdução à Computação: História dos computadores

Capítulo I : Noções Gerais

ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM. Conceitos Básicos ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM

Programação de Computadores

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

AULA 01 CONCEITOS BÁSICOS DE PROGRAMAÇÃO. Eduardo Camargo de Siqueira INFORMÁTICA APLICADA TÉCNICO EM ELETRÔNICA

A declaração de uma variável vel define o seu tipo. O tipo do dado define como ele será: Armazenado na memória. Manipulado pela ULA.

AULA 01 INTRODUÇÃO. Eduardo Camargo de Siqueira CIRCUITOS DIGITAIS Engenharia de Computação

Organização Básica de computadores e linguagem de montagem

Variáveis e Comandos de Atribuição

Introdução à Programação

Informática, Internet e Multimídia. Profa. Késsia R. C. Marchi

Capítulo 2: Introdução à Linguagem C

Calculadoras Mecânicas

Codificação da informação. Execução do programa. Codificação binária. Representação de inteiros positivos. Representação binária

Cálculo Numérico Aula 1: Computação numérica. Tipos de Erros. Aritmética de ponto flutuante

13 Números Reais - Tipo float

Informática Instrumental Aula 1. Prof. Msc. Fernando Nakayama de Queiroz

A história da computação. Prof: Diego Medeiros

Linguagem C: variáveis, operadores, entrada/saída. Prof. Críston Algoritmos e Programação

Sistemas de Numeração

MC102 Algoritmos e Programação de Computadores 2ª Aula Programa, entrada e saída de dados

Introdução INTRODUÇÃO À COMPUTAÇÃO M. Sistema Computacional. Máquina Virtual. Solução 8/10/10. O problema de comunicação humanocomputador


Arquitetura de Computadores

Introdução a C Tipos de Dados Variáveis Operadores

Algoritmos e Estruturas de Dados I (DCC/003) 2013/2. Introdução à Programação de Computadores. Aula - Tópico 1

INF 1005 Programação I

Sistema de Numeração e Conversão entre Sistemas. Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 60h

Sistemas Operacionais

ARQUITETURA DE COMPUTADORES

Fabio Bento

Informática I. Aula 1. Aula 1-17/04/2006 1

A História do Computador. Linguagem de Programação Rone Ilídio/ Natã Goulart UFSJ - CAP

Arquitetura e Organização de Computadores

Representação de Dados e Sistemas de Numeração

Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre

Circuitos Digitais. Conteúdo. Sistema de Numeração e Códigos :: Conversões de Binário para Decimal SISTEMA DE NUMERAÇÃO E CÓDIGOS

Cursos de Computação. Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 01 - História e Funções dos Sistemas Operacionais

Resumo da Introdução de Prática de Programação com C. A Linguagem C

ENIAC. Introdução aos Computadores e à Programação (Noções Básicas)

Introdução a Linguagem C

LÓGICA DE PROGRAMAÇÃO

CAPÍTULO 1 INTRODUÇÃO À ARQUITETURA DE COMPUTADORES. Máquina programável, de propósito geral, que processa informação.

Algoritmos e Programação

Introdução. Introdução. Introdução. Organização Estruturada de Computadores. Introdução. Máquinas Multiníveis

O que é Arquitetura de Computadores?

Exemplo de Subtração Binária

Unidade 5: Sistemas de Representação

ALP Algoritmos e Programação. . Linguagens para Computadores

Conceitos Básicos de C

MC102 Algoritmos e Programação de Computadores 1ª Aula Introdução à Programação de Computadores

2. OPERADORES ALGORITMOS, FLUXOGRAMAS E PROGRAMAS FUNÇÕES... 10

Disciplina: Organização de computadores

ARQUITETURA DE COMPUTADORES

3 Sistemas de Numeração:

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES. Prof. André Dutton

Representação de Dados (inteiros não negativos)

Adriano Mauro Cansian 2

Conceitos de Linguagens de Programação

Algoritmos e Programação Estruturada

IFTO LÓGICA DE PROGRAMAÇÃO AULA 01

Introdução à Computação

Universidade Federal de Uberlândia Faculdade de Computação. A Linguagem C

Programação Básica em Arduino Aula 2

ARQUITETURA DE COMPUTADORES

ARQUITETURA DE COMPUTADORES. Rogério Spindula Rosa

Sistema de Computação

SISTEMAS DIGITAIS Prof. Ricardo Rodrigues Barcelar

Sistema de Numeração e Conversão entre Sistemas. Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 60h

Algoritmos e Programação Aula 01 Introdução a Computação

Primeiro Curso de Programação em C 3 a Edição

Figura 1 - O computador

Introdução. INF1005 Programação I 33K Prof. Gustavo Moreira gmoreira@inf.puc-rio.br

Fundamentos de Informática 1ºSemestre

Informática. A Era da Computação - Aula 1 ClevertonHentz

Conceitos Básicos de Programação

Organização e Arquitetura de Computadores I

Disciplina de Informática. Profª. Me. Valéria Espíndola Lessa

Elisa Maria Pivetta Cantarelli. PDF created with pdffactory Pro trial version

Fundamentos em Informática (Sistemas de Numeração e Representação de Dados)

Introdução. A Informação e sua Representação (Parte II) Universidade Federal de Campina Grande. Unidade Acadêmica de Sistemas e Computação

Processamento de dados - Aula I

Computadores e Programação

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES

Deste modo, por razões tecnológicas e conceituais, os números binários e a álgebra boole-ana formam a base de operação dos computadores atuais.

Algoritmos e Estruturas de Dados I 01/2013. Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo

Transcrição:

Hélio Marques Sobrinho hmarx@linuxtech.com.br

- 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 4. Linguagem de Programação de Alto Nível 2

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 3

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 Utilizados ainda hoje por chineses e japoneses 4

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 1801 Máquina de tecer com cartões perfurados 5

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 Sua empresa foi transformada na IBM em 1924 6

Howard Aiken 1937 Mark I: Cálculos integrais e diferenciais Alan Turing 1943 Colossus 1800 válvulas quebra de criptografia 7

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 8

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 2000 Pentium IV 2008 Quad core 1997 Pentium II 2002 Xeon 2008/20098 i7 1999 Pentium III 2005 Dual core 2010 - i5 9

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 10

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 11

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 = 12310 (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 = 13234 Nota: A repreasentação da quantidade β na base β é sempre 10! 12

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 4FB916 = 01001111101110012 13

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 X 1.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... 14

Representação de dados em um computador digital Números no mundo real Naturais ℕ 0 Inteiros ℤ - Reais - + ε=1 + ε=1 ℝ + ε 0 Computador digital: N bits N-1 0... N bits => 2N valores 15

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. Exemplo com 8 bits : +1010 = 00001010-1010 = 10001010 2. Complemento de 1 Positivos N, Negativos N Exemplo com 8 bits : +1010 = 00001010-1010 = 11110101 3. Complemento de 2 Positivos N, Negativos N + 1 Exemplo com 8 bits : +1010 = 00001010-1010 = 11110110 [ -127... -0, +0... +127 ] [ -127... -0, +0... +127 ] [ -128... 0... +127 ] 16

Números de ponto flutuante Valor +/- A.bcdef... x 10k Normalização: +/- 0.xyzkw... x 2E N-1 S 1 bit 0...... e bits m bits N=1+e+m mantissa expoente sinal Expoente: excesso de 2e-1-1 Faixa de valores definidos pelo expoente e bits Precisão definida pela mantissa m bits Como x é sempre 1, ele pode ser oculto. A mantissa real terá m+1 bits! 17

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 NAN : todos os bits do expoente = 1, todos os bits da mantissa = 0 : todos os bits do expoente = 1, mantissa 0 18

Caracteres Códigos numéricos para símbolos gráficos ABCabc1234.,$#({@}_= <>/\ ز ش ق җể Helio Marques 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 ISO/IEC ISO-8859-1 Unicode Transformation Format 8 (utf8) ou 16 (utf16) bits ISO Latin-1 8 bits Strings (cadeias de caracteres) Vetores de bytes ou palavras com contador de caracteres ou byte 00 no final 19

Hieraquia de linguagens 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 20

Representação de dados Mapeamento de objetos Objetos do mundo real Entidades abstratas Objetos do mundo computacional Entidades numéricas char float int Mundo computacional Limitações Grandeza e Precisão (limitação de número de dígitos) Problemas de representação (ex. 0.1 x2) 10 Entidades abstratas Sabor, cheiro, amar, gostar, detestar,... 21

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 Linkeditor Compilador / Montador Fonte(s) em linguagem de alto nível Fonte(s) em linguagem de montagem Módulo(s) objeto Executável 22

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 ℝ 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 x ℂ ASCII: 'A' = 41h EBCDIC: 'A' = C1h 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,...) 23

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 typedef definição identificador; 24

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 = -= += /= *= %= &= = 25

26

Chamada de funções e procedimentos Call Int Trap Utilização comum Utilizado em DOS/Windows (chamadas ao sistema) Tratamento de erros/eventos em alguns sistemas Passagem de parâmetros Tipo Valor Referência Nome Valor de retorno (exemplo: C/C++) (exemplo: C/C++ usando &v) (exemplo: Algol 60) (exemplo: Fortran) Forma Blocos em posições absolutas Registradores Pilha (alguns mainframes - SVC) (compiladores c/ alta otimização) (método mais comum) 27

Chamada de procedimentos e passagem de parâmetros Pilha Função em linguagem C 0000,,,0 int f(int a, int b, int c) { int m; /* código da função */ m = a + b * c; return(m); } /* Funcao f */ FFFF...F Acesso aos argumentos mov AX, mul AX, add AX, ; --- libera mov sp, ret [BP + 4] [BP + 6] [BP + 2] variáveis bp ; b ; c ; a locais 28

Chamada de procedimentos e passagem de parâmetros Chamada da função Pilha e retorno void main() { int r; int x, y, z; push push push call mov /*... z y x f r, ax */ r = f(x, y, z); /*... */ } /* main */ 29