chapter 1 – introduction to computers and c++ programmingrafael.berti/programação/1... ·...
TRANSCRIPT
PROGRAMAÇÃO(PRG34)Prof. Rafael Berti Schmitz
2017/1
Computação
1. Contar, fazer o cômputo de, :computar votos.2. Calcular, orçar:Computou a despesa em centenas de reais.3. Comparar, confrontar, cotejar:Dispôs-se a computar a receita com as despesas.4. Incluir:Computou este delito entre os passíveis de pena de morte.
5. Processar em computador.
História da computaçãoA ciência é cumulativa.
As pesquisas normalmente evoluem com base em resultados do passado, constituindo os fundamentos
para um desenvolvimento posterior.
Pré-história
Ábaco• Mesopotâmia, 5.500 a.C.
• Cálculo de colheitas e construção civil
• Operações de adição e subtração
• Babilônia
• Egito
• Grécia
• Roma -> "Calculus"
• Índia
• China
• Japão
Pré-história
Régua de Cálculo
• William Oughtred, Inglaterra, 1630
• Grandes navegações e projeto de máquinas a vapor
• Tabela baseada na teoria de logaritmosMultiplicação -> Adição
Divisão -> Subtração
Blaise Pascal, França, 1642
“Pascalina”
• Primeira calculadora mecânica
• Adição e subtração
Pré-história
Pré-história
Charles Babbage, Inglaterra, 1821-1834
Máquina de diferenças• Projetada para calcular tabelas
trigonométricas e logarítmicas com elevada exatidão
• Fornecia os resultados perfurando um prato de cobre
• Não foi implementada completamente em função de limitações tecnológicas e financeiras (engrenagens não suportavam esforços elevados e se deformavam com o calor)
• Primeira réplica construída em 1991
Pré-história
Charles Babbage, Inglaterra, 1821-1834
Máquina analítica
• “Primeiro computador programável”
• Funcionava a vapor
• Permitia alterar a sequência de operações
• Nunca foi totalmente implementada
Pré-história
Máquina Analítica de Babbage - Anteviu os passos que são a base do funcionamento de um computador:
• Unidade de entrada (input section) – entrada de dados via cartão perfurado;
• Unidade de saída (output section) – saída de dados via cartão perfurado;
• Unidade de memória (store) – capaz de armazenar variáveis e resultados;
• Unidade de computação (mill) – recebe os operandos da memória, efetua as operações (soma, subtração, multiplicação e divisão) e envia o resultado para a memória;
Pré-história
Ada Byron King, Inglaterra, 1842-1843
• Condessa de Lovelace e companheira de Babbage
• Compreendeu o funcionamento da Máquina Analítica e escreveu os melhores relatos sobre o seu funcionamento
• Suas anotações descrevem o primeiro algoritmo especificamente criado para ser implementado em um computador (primeira programadora)
• Calcular os números de Bernoulli
• "Ele não tem pretensões de originar nada, mas pode processar qualquer coisa que nós soubermos programá-lo para realizar." - Ada, falando sobre o Engenho Analítico
Pré-história
Hermann Hollerith, EUA, 1887
Máquina de Hollerith• Entrada de dados por cartão
perfurado
• Máquina capaz de interpretar, classificar e manipular as somas aritméticas representadas pelas perfurações
• Componentes eletromecânicos
• Usada no censo dos EUA (1/3 do tempo de processamento comum)
• Fundador da IBM
Berço da computação
Alan Turing, Inglaterra, 1935• Formalizou o conceito de algoritmo
Máquina de Turing
• Modelo abstrato do computador, que descreve os aspectos lógicos do seu funcionamento (memória, estados e transições) e não sua implementação física
• Fundamental para o desenvolvimento do computador moderno
“Bombe”
• Decodificar a criptografia de mensagens nazistas
• Componentes eletromecânicos
Filme: O jogo da imitação, 2014
Computadores eletrônicos
1ª Geração (1940-1952)
• Válvulas
• Projeto para uso dedicado e específico
• Programação manual
1ª Geração
Colossus• Inglaterra, 1939
• Primeiro computador eletrônico, baseado no conceito de Turing
• Projetado para decifrar códigos nazistas
• “Programação manual”, através de chaves e conexões (configuração)
1ª Geração
ENIAC - Electronic Numerical Integrator and Computer• EUA, 1943-1946
• Entrada de dados via cartão perfurado
• Projetado para efetuar cálculos de balística
• “Programação manual”, através de chaves e conexões
• Executava desvios condicionais
1ª Geração
• Poder computacional limitado pela tecnologia da época
• Configuração tediosa (limitava a versatilidade dos primeiros computadores)
Adolescência da computação
John von Neumann, EUA, 1952Observou que programar computadores manualmente era uma tarefa mecânica e tediosa, que poderia ser representada em forma digital, junto com os dados
• Introduziu o conceito de programa armazenado
• Emprego do sistema binário para cálculos aritméticos
• Estabeleceu o paradigma de projetos de computadores - “arquitetura de von Neumann”
2ª Geração (1952-1964)
Transistores
• Não exigiam tempo de pré-aquecimento
• Menor consumo de energia
• Mais rápidos e confiáveis;
Máquinas de uso universal
• Arquitetura de von Neumann
• Linguagem de programação (Assembly)
2ª Geração
• Mémorias: Núcleos de ferrite, fitas magnéticas
• Linguagem Assembly
• Utilização de mnemônicos para representar as instruções de máquina;
• Linguagens de alto nível (Fortran e Cobol)
• Armazenamento em disco, complementando os sistemas de fita magnética e possibilitando ao usuário acesso rápido aos dados desejados.
3ª Geração (1964-1977)
Circuitos Integrados
• Integração de centenas de transistores
• Equipamentos menores e mais baratos
• Produção em massa
Computador Pessoal (PC)
4ª Geração (1977-1991)
• Microprocessadores
• Sistemas operacionais: MS-DOS, Macintosh, UNIX
• Linguagens de programação orientadas a objeto (C++ e Smalltalk)
• Internet
• Mais confiáveis, mais rápidos, menores e com maior capacidade de armazenamento.
• Filme: Piratas do Vale do Silício, 1999
Tendências• A cada ano ou dois seguintes aproximadamente o
dobro:– Quantidade de memória para executar programas
– Quantidade de armazenamento de dados secundário (tais como o armazenamento em disco)• Usado para segurar os programas e os dados a longo prazo
– Velocidades de processador• A velocidade a que os computadores executam seus
programas
Hardware
O que é um computador?• Computador
– Dispositivo capaz de executar cálculos e tomar decisões lógicas
• Hardware– Parte física do sistema de computação
– Componentes eletrônicos
– Circuitos integrados e placas, que se comunicam através de barramentos)
• Software– Parte lógica do sistema de computação.
– Conjunto de instruções, organizados em um ou mais arquivos, que ordenam o computador na execução de tarefas
Organização1. Unidade de entrada de dados
• Obtém informações de dispositivos de entrada (teclado, mouse)
2. Unidade de Saída • Informações de saída (monitor, impressora)
3. Unidade de memória• Acesso rápido, baixa capacidade, armazena informações de
entrada
4. Unidade aritmética e lógica (ALU)• Executa cálculos aritméticos e lógica de decisões
5. Unidade central de processamento (CPU) • Supervisiona e coordena as demais unidades do computador
6. Unidade de armazenamento secundário• Barato e de longo prazo e de alta capacidade de
armazenamento de dados
• Armazena os programas inativos
Arquitetura de von Neumann
Ciclo de execução• Descreve como o hardware trabalha com as instruções que serão executadas
• Ciclo de execução de Von Neumann:
1) Busca uma instrução,
2) Decodifica
3) Executa
Instrução de operação aritmética
1. A unidade de controle busca a próxima instrução do programa na memória principal;2. O contador de programa é usado pela unidade de controle para determinar onde a instrução está localizada;3. A instrução é decodificada para uma linguagem que a unidade lógica aritmética possa entender;4. Os operandos de dados requeridos para executar a instrução são carregados da memória e colocados em registradores;5. A unidade lógica aritmética executa a instrução e coloca os resultados em registradores ou na memória.
Software
Linguagens• Três tipos de linguagens de programação
Linguagem de máquina• Linguagem natural do computador
• Dependente do hardware
• Não padronizada
• Cadeia de caracteres que fornece instruções específicas para a máquina
Exemplo:+1300042774
+1400593419
+1200274027
Linguagens• Três tipos de linguagens de programação
Linguagem Assembly• Humanamente compreensível
• Abreviaturas que representam as operações elementares de computador
• Muitas instruções para realizar tarefas simples
• Para ser executada, exige uma tradução, realizada pelos assemblers
Exemplo:LOAD BASE
ADD EXTRA
STORE BRUTO
Linguagens• Três tipos de linguagens de programação
Linguagem de alto nívelUma linguagem é considerada de alto nível quando ela pode representar ideias abstratas de forma simples, diferente da linguagem de baixo nível que representa as próprias instruções de máquina.
• Códigos semelhantes ao inglês
• Permite notação matemática (traduzida pelos compiladores)
Exemplo:Bruto = Base + Extra
Linguagens de alto nível– FORTRAN (FORmula TRANslator)
• Desenvolvido pela IBM entre 1954 e 1957 • Utilizado para aplicações científicas e de engenharia• Ainda é usado
– COBOL (COmmon Business Oriented Language) • Desenvolvido em 1959 por um consórcio entre indústrias,
fabricantes de computadores e governo• Usado para manipular grandes quantidades de dados• Mais de um milhão de pessoas empregadas como programadores
de COBOL
– Pascal• Desenvolvido ao mesmo tempo que o C• Destinava-se ao ensino da programação em ambientes
acadêmicos • Carecia de recursos para torná-la útil em aplicações comerciais,
industriais e governamentais (pouco aceita)
32
Linguagem C– Evoluiu a partir de duas linguagens anteriores (BCPL e
B)– Incluiu tipos de dados (número inteiro, ponto
flutuante, etc)– Usado para a gravação de sistemas operacionais
modernos (Unix)– Independente do hardware (portátil)
– Aplicações escritas em C podem ser executadas com pouca ou nenhuma modificação em uma grande variedade de sistemas computacionais
– Padronização– Muitas pequenas variações de C existiam e eram
incompatíveis– ANSI/ISO 9899:1990– Fornecer à linguagem uma definição inequívoca e
independente de equipamento33
Labview
• Sintaxe de programação gráfica facilita a criação, a visualização e codificação de sistemas de engenharia
• Aplicações• Aquisição de dados
• Controle e monitoramento
• Automação de testes e validação
Dicas• Clareza e simplicidade
– Programas complicados são difíceis de ler, compreender e modificar
– Perda de tempo para testar e depurar erros
– Elevam a probabilidade de gerarem comportamentos imprevistos
• Software reutilizável– Método dos blocos de construção
– Evite reinventar a roda. Use os elementos existentes
– Se uma função preexistente existe, geralmente é melhor usa-lá do que escrever uma própria