• Like
01 programação - introdução computação
Upcoming SlideShare
Loading in...5
×

01 programação - introdução computação

  • 3,066 views
Uploaded on

Introdução a computação.

Introdução a computação.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
3,066
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
71
Comments
0
Likes
2

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Luiz Arthur Fundamentos de Programação I 1Universidade Tecnológica Federal do Paraná – UTFPR Campus: Campo Mourão Professor: Luiz Arthur Feitosa dos Santos E-mail: luiz_arthur@fornet.com.brSumário: ● Conceitos sobre computação; ● Evolução dos computadores; ● Hardware; ● Software; ● Sistema Operacional;
  • 2. Luiz Arthur Fundamentos de Programação I 2Definições básicas: ● Computação - Pode ser definida como a busca pela solução de um problema, considerando as entradas e algoritmos para resolver o problema. Entrada Processamento Solução ● Ciência da Computação - É o estudo dos algoritmos e suas aplicações, bem como das estruturas matemáticas indispensáveis à formulação precisa dos conceitos fundamentais da teoria da computabilidade e da computação aplicada. ● Informática - O termo informática, vem de “informação automática”. É a ciência do tratamento da informação. Informática é mais abrangente que Ciência da Computação. Hoje aparecem profissionais da área de TI (Tecnologia da Informação) e TIC (Tecnologias da Informação e da Comunicação).
  • 3. Luiz Arthur Fundamentos de Programação I 3 ● Programa - De acordo com o artigo 1° da Lei 9.609/98 (Lei de Software), Programa de Computador “é a expressão de um conjunto organizado de instruções em linguagem natural ou codificada, contida em suporte físico de qualquer natureza, de emprego necessário em máquinas automáticas de tratamento da informação, dispositivos, instrumentos ou equipamentos periféricos, baseados em técnica digital ou análoga, para fazê-los funcionar de modo e para fins determinados.” (Instituto Nacional da Propriedade Industrial, 2010). ● Algoritmo - Um algoritmo é uma sequência não ambígua de instruções que é executada até que determinada condição se verifique. Mais especificamente, em matemática, constitui o conjunto de processos (e símbolos que os representam) para efetuar um cálculo.Qual é a relação sociedade, informática, computação e programação? Tente responder isto!
  • 4. Luiz Arthur Fundamentos de Programação I 4Evolução dos Computadores:Inicialmente para se computar e para a evolução da computação havia duaspossibilidades: analógica e digital.Máquinas analógicas: são baseadas em dispositivos físicos que medemquantidades contínuas. Este computadores baseavam-se em engrenagens,peças mecânicas e eletromecânicas, o que acarreta uma certa imprecisãonos cálculos. Ábaco Data: 500AC Calculadora Mecânica Blase Pascal ~1642 Máquina Analítica Charles Babage – 1834 Projetado para ser programável.
  • 5. Luiz Arthur Fundamentos de Programação I 5Início da tenologia digital: ● Álgebra de Boole: Em 1854, George Boole publica trabalhos em que tenta descobrir leis algébricas para o pensamento. Seu trabalho será a base lógica dos cálculos nos futuros dos computadores ele inventa a Álgebra de Boole.Primeira geração – válvulas (1945 – 1955)O estímulo para o computador eletrônico foi a Segunda Gerra Mundial.Um dos motivos foi tentar quebrar a criptografia das mensagens de guerra.Era necessário fazer cálculos mais rápidos para entender as mensagens atempo de fazer alguma coisa.Em 1943 é construído um computador eletrônico chamado de ENIAC(Eletronic Numeral Integrator And Compute) que consistia de 18 milválvulas e 1.500 relés, pesava 30 toneladas e consumia 140 quilowatts deenergia.
  • 6. Luiz Arthur Fundamentos de Programação I 6IAS construído por John von Neumann, que observou que programarcomputadores com quantidades imensas de interruptores e cabos era umatarefa lenta, tediosa, mecânica e isto podia/devia ser representada emforma digital na memória do computador, junto com os dados. Também foique ao invés aritmética decimal usada no ENIAC, com cada dígitorepresentado por 10 válvulas, podia ser substituída usando aritméticabinária. O projeto conhecido como máquina de Von Neumann é ainda hoje abase para quase todos os computadores digitais. Memória Entrada Unidade Lógica e Aritmética Unidade de controle Acumulador Saída
  • 7. Luiz Arthur Fundamentos de Programação I 7Segunda geração – transistores (1955-1965)O transistor foi inventado no Bell Labsem 1948 e revolucionou ocomputador, o primeiro a utilizar foi o TX-0 (Transistorized eXperimentalComputer 0). Em 1961 apareceu o PDP-1, tinha 4.096 palavras de 18 bits epodia executar 200 mil instruções por segundo, custava 120 mil dólares etrouxe o conceito de minicomputador.
  • 8. Luiz Arthur Fundamentos de Programação I 8Terceira geração – circuitos integrados (1965-1980)A invenção de circuito integrado de silício em 1958 permitiu que dezenasde transistores fossem colocados em um único chip, possibilitandocomputadores menores, mais rápidos e mais baratos. Um computador destaépoca é o System/360 da IBM que trás o conceito de família decomputadores, que trazia também o conceito de multiprogramação.
  • 9. Luiz Arthur Fundamentos de Programação I 9Quarta geração – integração em escala muito grande (1980-?)Na década de 1980, a VLSI (Very Large Scale Integration) possibilitacolocar dezenas, milhares, milhões de transistores em um único chip.Isto reduziu tanto o preço de um computador que em 1980 um únicoindivíduo poderia ter o seu próprio computador. Computadores Pessoais(PCs) eram usados para processar textos, montar planilhas, jogos, etc.Surge o Intel 8080, o Apple II, MS-DOS, interfaces gráficas, Macintosh,Windows. Surge arquiteturas RISC. O futuro são os computadoresembutidos. Intel 8080 MacBookAir Apple II
  • 10. Luiz Arthur Fundamentos de Programação I 10Histórico de alguns computadores:Ano Nome Comentário1834 Máquina analítica Primeira tentativa de construir um computador digital.1936 ZI Primeira máquina de calcular com relés.1943 COLOSSUS Primeiro computador eletrônico.1944 Marki Primeiro computador dos USA, de uso geral.1946 ENIAC A história moderna dos computadores inicia neste.1949 EDSAC Primeiro computador com programa armazenado.1951 Whirlwind Primeiro computador de tempo real.1952 IAS/VonNeumann A maioria das máquinas atuais usam esse projeto.1960 PDP1/DEC Primeiro minicomputador (50 vendidos).1961 1401/IBM Máquina para pequenos negócios (bem popular).1962 7094/IBM Dominou a computação científica (1950).1963 B5000 Linguagem de alto nível.1964 360/IBM Cria o conceito de família.1964 6600 Primeiro supercomputador.1965 PDP-8 Minicomputador (50 mil vendidos).1970 PDP-11 Dominou os minicomputadores (1970).1974 8080/Intel Primeiro computador de uso geral (8bits).1974 CRAY-1 Primeiro computador vetorial.1978 VAX Primeiro supercomputador de 32 bits.1981 IBM PC Inicio dos computadores pessoais.1981 Osborne Primeiro computador portátil.1983 Lisa/Apple Primeiro computador com interface gráfica.1985 386/Intel Primeiro 32 bits da linha Pentium.1985 MIPS Primeiro RISC.1987 SPARC/Sun Primeira estação de trabalho RISC.1990 RS6000/IBM Primeira superescalar.1992 Alpha/DEC Computador pessoal de 64 bits.1993 Newton/Apple Primeiro palmtop.
  • 11. Luiz Arthur Fundamentos de Programação I 11Evolução Intel: 1989 – 486 Pipeline 1993 – Pentiun Superescalar 1997 – Pentium II
  • 12. Luiz Arthur Fundamentos de Programação I 12 2000 – Pentium IV 2006 – Core 2 Duo1999 – Pentium III 2008 – Core 2 Quad 2008 - i7
  • 13. Luiz Arthur Fundamentos de Programação I 13Qual é o impacto da evolução dos computadores em nossa sociedade? Pense sobre isto! ● Como os computadores afetaram as guerras? ● Como os computadores afetaram os governos? ● Como os computadores aferaram a industria? ● Como os computadores influenciaram as pequenas e médias empresas? ● Como os computadores afetam a vida das pessoas hoje? ● Onde estão os computadores hoje? ● Qual deve ser o futuro dos computadores?
  • 14. Luiz Arthur Fundamentos de Programação I 14Hardware:Um sistema computacional é um conjunto de circuitos eletrônicosinterligados, formando por processadores, memórias, registradores,barramentos, monitores de vídeo, impressoras, mouse, discos magnéticos,além de outros dispositivos físicos (ou seja, hardware). Todos essesdispositivos manipulam dados na forma digital (0s e 1s), o que proporcionauma maneira confiável de representação e transmissão de dados.De uma forma bem rudimentar todos os componentes de um sistemacomputacional são agrupados em três subsistemas básicos, chamadosunidades funcionais:➢Processador ou Unidade Central de Processamento (UCP ou CPU); ➢ Registradores, unidade de controle e unidade lógica aritmética;➢Memória (cache, principal, secundária);➢Dispositivos de entrada/saída;➢Barramento;Estes subsistemas estão presentes em qualquer tipo de computador digital,independente da arquitetura ou fabricante.
  • 15. Luiz Arthur Fundamentos de Programação I 15Software:Para que o hardware tenha utilidade prática, deve existir um conjunto deprogramas, utilizado como interface entre as necessidades do usuário e ascapacidades do hardware. A utilização de software adequados às diversastarefas e aplicações torna o trabalho dos usuários muito mais simples eeficiente.O software de computador pode ser dividido, a grosso modo, em duasespécies: programas de sistema, que gerenciam a operação docomputador em si, e programas aplicativos, que executam o trabalho queos usuários realmente deseja.Sistema Operacional:Um SISTEMA OPERACIONAL, é um conjunto de rotinas executado peloprocessador, de forma semelhante aos programas dos usuários. Suaprincipal função é controlar o funcionamento de um computador,gerenciando a utilização e o compartilhamento dos seus diversos recursos,como processadores, memórias e dispositivos de entrada e saída.
  • 16. Luiz Arthur Fundamentos de Programação I 16Sem o Sistema Operacional, um usuário para interagir com ocomputador deveria conhecer profundamente diversos detalhes sobreo hardware do equipamento, o que tornaria seu trabalho lento e comgrandes possibilidades de erros.O Sistema Operacional desta forma tem por objetivo funcionar como umainterface entre o usuário e o computador, tornando sua utilização maissimples, rápida e segura.
  • 17. Luiz Arthur Fundamentos de Programação I 17Tipos de Sistemas OperacionaisOs tipos de Sistemas Operacionais e a sua evolução estão relacionadosdiretamente com a evolução do hardware e das aplicações por elesuportadas. Os principais são: ● Sistema Monoprogramável/Monotarefa; ● Sistema Multiprogramáveis/Multitarefa; ● Sistema de tempo compartilhando; ● Sistema com Múltiplos Processadores;Há muitos anos tornou-se bastante evidente a necessidade de encontrar umamaneira de isolar os programadores da complexidade do hardware. Amaneira com que isso se desenvolveu gradualmente foi colocar uma camadade software por cima do hardware básico para gerenciar todas as partes dosistema e oferecer ao usuário uma interface ou máquina virtual que é maisfácil de entender e de programar. Essa camada de software é o SistemaOperacional.Nos primeiros sistemas computacionais, o ato de programar era bastantecomplicado, já que o programador deveria possuir conhecimento daarquitetura da máquina e programar em painéis através de fios. Essesprogramas eram desenvolvidos em linguagem de máquina e carregadosdiretamente na memória principal para execução
  • 18. Luiz Arthur Fundamentos de Programação I 18Inicio das linguagens de programação:Com o surgimento das primeiras linguagens de montagem ouassembly e das linguagens de alto nível, o programador deixou de sepreocupar com muitos aspectos pertinentes ao hardware, como em qualregião da memória o programa deveria ser carregado ou quais endereços dememória seriam reservados para as variáveis. A utilização dessas linguagensfacilitou a construção de programas, a documentação e a manutenção.Tradutor:Apesar das inúmeras vantagens proporcionadas pelas linguagens demontagem e de alto nível, os programas escritos nessas linguagens nãoestão prontos para ser diretamente executados pelo processador (programa-fonte). Para isso, eles têm de passar por uma etapa de conversão, ondetoda representação simbólica das instruções é traduzida para código demáquina. Esta conversão é realizada por um utilitário denominado tradutor.O módulo gerado pelo tradutor é denominado módulo-objeto, que apesarde estar em código de máquina, na maioria das vezes não pode ser aindaexecutado. Isso ocorre em função de um programa poder chamar sub-rotinasexternas, e, neste caso, o tradutor não tem como associar o programaprincipal às sub-rotinas chamadas. Esta função é realizada por outroutilitário denominado linker.
  • 19. Luiz Arthur Fundamentos de Programação I 19LinkerO linker, ou editor de ligação, é o utilitário responsável por gerar, a partir deum ou mais módulos-objetos, um único programa executável. Suas funçõesbásicas são resolver todas as referências simbólicas existentes entre osmódulos e reservar memória para a execução do programa.Para resolver todas as referências a símbolos, o linker também podepesquisar em bibliotecas do sistema ou do próprio usuário.Bibliotecas são arquivos que contém diversos módulos-objetos e/oudefinições de símbolos.LoaderO loader, ou carregador, é o utilitário responsável por carregar na memóriaprincipal um programa para ser executado. O procedimento de carga variacom o código gerado pelo linker.
  • 20. Luiz Arthur Fundamentos de Programação I 20Compilador:O compilador é o utilitário responsável por gerar, a partir de um programaescrito em linguagem de alto nível, um programa em linguagem de máquinanão executável. As linguagens de alto nível, como Pascal, FORTRAN eCOBOL, não têm nenhuma relação direta com a máquina, ficando essapreocupação exclusivamente com o compilador.Os programadores de alto nível devem se preocupar apenas com odesenvolvimento de suas aplicações, não tendo que se envolver comdetalhes sobre a arquitetura do processador. Assim, os programas-fontes pode ser portados entre computadores de diversos fabricantes, desdeque existam padrões para a sintaxe da linguagem. Isso permite odesenvolvimento de aplicações independentes de equipamento.Um compilador é um utilitário que opera de modo integrado aoscomponentes do sistema de programação disponíveis, sob a supervisão dosistema operacional. Podemos visualizar, então, o compilador como umainterface entre o sistema operacional e o usuário, de maneira que épossível acessar diversos serviços do sistema.
  • 21. Luiz Arthur Fundamentos de Programação I 21InterpretadorO interpretador é considerado um tradutor que não gera módulo-objeto. Apartir de um programa-fonte escrito em linguagem de alto nível, ointerpretador, durante a execução do programa, traduz cada instrução e aexecuta imediatamente. Algumas linguagens tipicamente interpretadassão o Basic e o Perl.A maior desvantagem na utilização de interpretadores é o tempo gasto natradução das instruções de um programa toda vez que este for executado, jáque não existe a geração de um código executável. A vantagem é permitir aimplementação de tipos de dados dinâmicos, ou seja, que podem mudar detipo durante a execução do programa, aumentando assim, sua flexibilidade.Tente responder:Quais são as vantagens e desvantagens da linguagem de alto nível?Quais são as semelhanças e diferenças entre interpretador ecompilador?
  • 22. Luiz Arthur Fundamentos de Programação I 22DepuradorO desenvolvimento de programas está sujeito a erros de lógica,independente de metodologias utilizadas pelo programador. A depuração éum dos estágios desse desenvolvimento e a utilização de ferramentasadequadas é essencial para acelerar o processo de correção dosprogramas. O depurador (debugger) é o utilitário que permite ao usuárioacompanhar toda a execução de um programa a fim de detectar errosna sua lógica.O depurador oferece ao usuário recursos como:➢Acompanhar a execução de um programa instrução por instrução;➢Possibilitar a alteração e visualização do conteúdo de variáveis;➢Implementar pontos de paradas dentro do programa, de forma que,durante a execução, o programa pare nesses pontos;➢Especificar que, toda vez que o conteúdo de uma variável formodificado, o programa envie uma mensagem (watchpoint).
  • 23. Luiz Arthur Fundamentos de Programação I 23Interpretador de Comandos e Linguagem de ControleO interpretador de comandos, ou shell, permite que o usuário se comuniquecom o sistema operacional. Através de comandos simples, o usuário pode teracesso a diversas funções e rotinas específicas do sistema. Quando digitadospelos usuários, os comandos são interpretados pelo shell, que, ao reconhecera linha de comando, verifica sua sintaxe, envia mensagens de aviso ou erro efaz chamadas a rotinas do sistema. Desta forma, o usuário dispõe de umainterface direta com o sistema operacional para realizar tarefas comocriar, ler ou eliminar arquivos, consultar diretórios ou verificar a data e horaarmazenada no sistema.O conjunto de comandos disponíveis pelo interpretador é conhecido comolinguagem de controle ou linguagem de comando. Algumas linguagens sãopoderosas a ponto de oferecer a possibilidade de criar programas comestruturas de decisão e iteração. Esses programas nada mais são do queuma sequência de comandos armazenados em um arquivo texto,denominados arquivos de comandos ou shell scripts, que podem serexecutados sempre que necessário.Em geral, o interpretador de comandos não faz parte do sistemaoperacional. Isto possibilita uma maior flexibilidade na criação de diferenteslinguagens de controle para um mesmo sistema operacional.
  • 24. Luiz Arthur Fundamentos de Programação I 24Referência:TANENBAUM, Andrew S. Organização Estruturada de Computadores.5ed. Editora Prentice-Hall. 2006.GONÇALVES, Rogério A. Fundamentos de Programação I. UTFPR. 2010.MACHADO, Francis B. Arquitetura de Sistemas Operacionais. 4 ed.Editora LTC. 2007.Instituto Nacional da Propriedade Industrial. O que é programa deComputador. Disponível em:http://www.inpi.gov.br/menu-esquerdo/programa/pasta_oque Acessado em:agosto de 2010.
  • 25. Luiz Arthur Fundamentos de Programação I 25Fim!