PROGRAMAÇÃO PARA ENGENHARIA I Introdução e Sistemas de Numeração Prof. Claudinei Dias email: prof.claudinei.dias@gmail.com
Histórico da Computação A união de várias áreas do conhecimento contribuiu para o desenvolvimento da tecnologia Evolução do Computador Durante séculos o ato de computar faz parte da vida de cada um A evolução da máquina de computar ocorreu de acordo com as necessidades do ser humano 2/75
Introdução SOs vem passando por um processo gradual de evolução A história dos SOs é bastante ligada à evolução da arquitetura dos computadores Veremos as sucessivas gerações de computadores para entendermos a evolução dos SOs 3/75
Introdução Primeiro computador - Charles Babbage (1792 1871) Nunca conseguiu vê-la funcionando de forma apropriada Inteiramente mecânica não existiam componentes eletrônicos Não possuía SO Aspecto histórico interessante: Babbage percebeu que precisava de um software para sua máquina 4/75
A primeira geração (1945-1955) Após Babbage, poucos progressos na construção de computadores digitais até a II Guerra Mundial Meados de 40, vários conseguiram construir máquinas de calcular Ciclos medidos em segundos relés mecânicos lentos Mais tarde substituídos por válvulas Ocupavam salas inteiras milhares de válvulas Milhões de vezes mais lentas que o PC mais barato de hoje Primeira máquina de calcular com relés Z1 5/75
A primeira geração (1945-1955) A mesma pessoa projetava, construía, programava, operava e fazia manutenção Não existia Sistema Operacional Modo normal de operação: Programador reservava tempo de máquina em uma planilha Ia para sala de máquina Inseria o painel de programação no computador Torcia para que nenhuma válvula queimasse (por algumas horas) Cálculos numéricos diretos, como seno, cosseno e logaritmo John von Neumann (1946) 6/75
A primeira geração (1945-1955) Década de 50 evolução perfuradoras de cartões 7/75
A segunda geração (1955-1965) Introdução do transistor mudou a situação computadores tornaram-se confiáveis Computadores puderam ser comercializados pois funcionariam por tempo suficiente para serem úteis 8/75
A segunda geração (1955-1965) Começa a haver separação entre projetistas, fabricantes, programadores e técnicos de manutenção Computadores de grande porte mainframes Ficavam isoladas e eram operadas por equipes profissionais Somente grandes corporações, agências governamentais e universidades podiam pagar 9/75
A segunda geração (1955-1965) Para executar um job: Programador escrevia o programa no papel Perfurava os cartões e levava o maço para a sala de entradas Entregava a um dos operadores e ia tomar um café Ao fim da execução de um job: Operador ia até a impressora e retirava a saída Levava para a sala de saídas para o programador Muito tempo de computador desperdiçado enquanto os operadores andavam pelas salas 10/75
A segunda geração (1955-1965) Era preciso reduzir o desperdício de tempo Sistema em lote (batch) Gravação de vários jobs em fita magnética usando um computador mais barato IBM1401 Bom para ler cartões, copiar fitas e imprimir saída, mas ruim em cálculos 11/75
A segunda geração (1955-1965) Máquinas mais caras IBM7094 faziam os cálculos numéricos 12/75
A segunda geração (1955-1965) Depois de acumular um lote de jobs (± 1 hora) a fita era encaminhada para a sala das máquinas O operador carregava um programa especial para ler a fila de jobs e executá-los É o antecessor do sistema operacional de hoje Terminado, retirava-se a fita e levava-se de volta ao 1401 para impressão Usados para cálculos de equações diferenciais programados em FORTRAN e em linguagem de montagem Os SOs eram o FMS (Fortran Monitor System) e o IBSYS da IBM para o 7094 13/75
A terceira geração (1965-1980) Maioria dos fabricantes oferecia duas linhas de produtos totalmente incompátiveis Demandava grande custo para o fabricante Cliente precisava expandir negócios não podiam atualizar seus computadores 14/75
A terceira geração (1965-1980) IBM lança System/360 série de máquinas com softwares compatíveis 15/75
A terceira geração (1965-1980) Primeira linha a usar CIs em pequena escala melhor custo-benefício Sucesso instantâneo outros fabricantes adotaram a ideia 1974 Intel 4004 4 bits, 2000 transistores, 1974 Intel 8080 8 bits 16/75
A terceira geração (1965-1980) O OS/360 precisava rodar tanto em sistemas pequenos 1401 quanto em sistemas muito grandes 7094 Tinha que ser eficiente com poucos periféricos e com muitos periféricos, ambientes comerciais e ambientes científicos Sistema operacional enorme e complexo milhões de linhas escritas em linguagem de montagem por milhares de programadores Cada nova versão corrigia alguns erros e inseria alguns novos 17/75
A terceira geração (1965-1980) Apesar disso, atendiam razoavelmente bem à seus clientes Evolução de várias técnicas de sistemas operacionais Multiprogramação quando o 7094 terminava um job, ficava ocioso até a gravação da fita e entrada de outra. Em sistemas comerciais, tempo de espera chegava a 80-90% do tempo total 18/75
A terceira geração (1965-1980) Divisão da memória em várias partes um job em cada parte Enquanto um job esperava, outro executava Para isso, necessário hardware especial para isolar cada job 19/75
A terceira geração (1965-1980) Spooling capazes de transferir jobs dos cartões para discos magnéticos 1401 não era mais necessário leva e traz de fita desaparece 20/75
A terceira geração (1965-1980) Intervalo de tempo entre submeter job e obter saída era de muitas horas Erro de compilação programador perdia metade do dia Timesharing compartilhamento de tempo Usuários conectavam através de terminais remotos 20 usuários conectados 17 pensando ou tomando café CPU alocada ciclicamente aos 3 jobs rodando Comandos curtos podia atender os programadores e rodar grandes lotes de job em segundo plano CTSS - Compatible Time Sharing System sistema de compartilhamento de tempo compatível 21/75
A terceira geração (1965-1980) Baseado no sucesso do CTSS MULTICS MIT, Bell Labs e GE Enorme máquina fornecendo energia computacional Não funcionou Bell Labs retirou-se, GE saiu da área MIT lançou instalado em 80 empresas e universidades Enorme influência sobre os sistemas operacionais seguintes 22/75
A terceira geração (1965-1980) Ken Thompson, da Bell Labs, escreveu uma versão monousuário do MULTICS Unix Tanenbaum desenvolve clone do Unix Minix em 1987 Linus Torvalds desenvolve versão gratuita do Minix - Linux 23/75
A quarta geração (1980 presente) Desenvolvimento de CIs em larga escala CI milhares de transistores em um cm² de silício Era dos computadores pessoais Microprocessador tornou possível que indivíduos tivessem seu próprio computador pessoal Primeiro computador pessoal - Commodore PET microprocessador 6502 24/75
A quarta geração (1980 presente) 1974 - Intel lança 8080 buscava um SO Gary Kildall consultor da Intel - desenvolveu um SO baseado em disco CP/M (Control Program for Microcomputers) Intel não acreditava em micros baseados em disco Kildall requisitou os direitos e fundou a Digital Research Dominou completamente o mercado durante 5 anos 25/75
A quarta geração (1980 presente) Anos 80 IBM projeta IBM PC e busca um SO Contata Bill Gates para licenciar o Basic e pede por um SO Gates sugere a Digital Research Kildall recusa a reunir-se com a IBM envia subordinado Advogado é contra assinar acordo de sigilo sobre o PC IBM volta a Gates Gates contata a Seattle Computer Products que possui o DOS (Disk Operating System) Compra a empresa por 50 mil dólares 26/75
A quarta geração (1980 presente) Gates vende à IBM um pacote DOS/Basic Contrata Tim Paterson, criador do DOS Sistema revisado muda para MS-DOS Domina o mercado do IBM PC Gates vendia o DOS para as fabricantes diferente de Kildall que vendia para os usuários 1983: lançado IBM PC/AT com Intel 80286 MS-DOS avançava e CP/M definhava MS-DOS amplamente usado com 80386 e 80486 27/75
A quarta geração (1980 presente) SOs baseados em digitação de comandos Anos 60, Doug Engelbart Stanford Research Institute inventou a interface GUI (Graphical User Interface) Adotadas pela Xerox PARC (Palo Alto Research Center) Steve Jobs visitou o Xerox PARC e viu uma interface GUI Percebeu seu potencial coisa que a Xerox não tinha feito Projeto Lisa muito dispendioso e falhou comercialmente 28/75
A quarta geração (1980 presente) Segunda tentativa Apple Macintosh enorme sucesso Custo menor e interface amigável Destinada a usuários que não sabiam nada sobre computadores e que não tinham intenção de saber Microsoft segue a tendência e desenvolve o Windows Interpretador de comandos em cima do MS-DOS De 85 a 95, Windows era apenas um ambiente gráfico 1995 Lançado Windows 95 incorpora aspectos de um SO e usa o DOS apenas para ser carregado 29/75
Evolução das interfaces GUI Windows 1.0 30/75
Evolução das interfaces GUI Windows 2.0 31/75
Evolução das interfaces GUI Windows 3.0 32/75
Evolução das interfaces GUI Windows 3.11 NT 33/75
Evolução das interfaces GUI Windows 95 34/75
Evolução das interfaces GUI Windows 98 35/75
Evolução das interfaces GUI Windows XP 36/75
Evolução das interfaces GUI Windows Vista 37/75
Evolução das interfaces GUI Windows 7 38/75
Evolução das interfaces GUI Apple System 1.0 (1984) 39/75
Evolução das interfaces GUI Apple System 2.0 (1985) 40/75
Evolução das interfaces GUI Apple System 3.0 (1986) 41/75
Evolução das interfaces GUI Apple System 5.0 (1987) 42/75
Evolução das interfaces GUI Apple System 6.0 (1988) 43/75
Evolução das interfaces GUI Apple System 7.0 (1991) 44/75
Evolução das interfaces GUI Apple System 8.0 (1997) 45/75
Evolução das interfaces GUI Apple System 9.0 (1999) 46/75
Evolução das interfaces GUI Apple Mac OS X 10 (2001) 47/75
Evolução das interfaces GUI Apple Mac OS X Tiger (2005) 48/75
Evolução das interfaces GUI Apple Mac OS X Leopard (2005) 49/75
Histórico da Computação Tipos de Computadores MAINFRAME Computadores de grandes empresas Realização de grandes tarefas COMPUTADORES EM REDE, SERVIDORES E CLIENTES Computadores capazes de servir diversas máquinas ao mesmo tempo Difusão de computadores entre os funcionários de diversos setores. WORKSTATION Utilizado por empresas que necessitam de alto desempenho, ou seja capaz de executar vários trabalhos simultaneamente PC Computador Pessoal, barato e acessível e realiza as principais tarefas rotineiras NOTEBOOK Computadores portáteis, importante para o trabalho de campo PALMTOP, SMARTPHONE e TABLET Tem sido o maior sucesso nas feiras de Informática e Comunicação. Dispositivos pequenos capazes de efetuar várias tarefas 50/75
Histórico da Computação Hardware e Software HARDWARE É a parte física da máquina, ou seja, seus componentes eletrônicos, peças e periféricos SOFTWARE É a parte lógica da máquina, um conjunto de procedimentos que executam alguma função programas 51/75
Histórico da Computação Classificação dos Computadores 1ª Geração 2ª Geração 3ª Geração 4ª Geração 5ª Geração 1945 UNIVAC 1 Válvulas Milisegundos Grande Pouco confiáveis Monoprogramáveis Linguagem de Máquina 1958 IBM 1401 Transistor (SSI e MSI) 100 vezes menor Consumo menor de energia Mais rápido e confiável Microsegundos Discos magnéticos Monoprogramáveis Linguagem Assembler 1965 IBM 360 Circuito integrado (LSI) Miniaturização dos componentes Baixíssimo consumo de energia Menor Tamanho Multiprogramação 1975 Circuitos integrados (LSI e VLSI Very Large Scale Integration) 0,5 nanosegundos Popularização Firmware (funções SO) 1990 Aperfeiçoamento da tecnologia (ULSI-Ultra Scale Integration) Aumento da velocidade de processamento Conectividade Mobilidade OBS: Geração criada pelos japoneses para descrever o potencial da conectividade 52/75
Modelo de Computador Representação da Informação Um dos grandes nomes da teoria da informação, Claude Shannon (autor de "The Mathematical Theory of Communication") define que informação está presente sempre que um sinal é transmitido de um ponto a outro. Processamento da Informação pelo Ser Vivo os SENTIDOS são meios de receber sinais do meio ambiente; estas impressões sensoriais são transmitidas por uma rede nervosa ao cérebro através de sinais elétricos e químicos; sons emitidos pelos seres vivos são também meios de transmitir informações a outros seres: são mensagens que exprimem vontades, impressões, ordens... 53/75
Modelo de Computador Arquitetura de um computador A arquitetura básica de um computador moderno segue ainda de forma geral os conceitos estabelecidos pelo Professor da Universidade de Princeton, John Von Neumann (1903-1957) 1. Codificassem instruções que pudessem ser armazenadas na memória e sugeriu que usassem cadeias de uns e zeros (binário) para codificá-los; 2. Armazenassem na memória as instruções e todas as informações que fossem necessárias para a execução da tarefa desejada; 3. Ao processarem o programa, as instruções fossem buscadas na diretamente na memória. 54/75
Modelo de Computador Arquitetura de um computador Unidade Central de Processamento (UCP) MEMÓRIA PRINCIPAL (MP) DISPOSITIVOS DE ENTRADA E SAÍDA (E/S) 55/75
Dispositivos Digitais x Analógicos 56/75
Unidades básicas do computador Digital Hardware Unidade de Entrada CPU Unidade de Saída Teclado, mouse, microfone, scanner, câmeras digitais, etc. Monitor de vídeo, impressora, alto falante, plotter, etc. 57/75
Unidades básicas do computador Digital 58/75
Terminologias usual em Computação Termos técnicos (terminologias) de informática/computação utilizados para referenciar funções e/ou aplicações, por exemplos: Hardware Hard Disc: Disco rígido, sigla HD Software Operation System: Sistema Operacional, sigla SO Computação em geral Host: máquina, hospedeiro Exercício Cada aluno deve apresentar 5 terminologias com seus respectivos significados 59/75
Sistemas Numéricos Sistemas de Numeração Romano I, II, III, IV... XVIII... Decimal 1, 2, 3... 12... Binário 01, 10, 11... 1001... 60/75
Sistemas Numéricos Sistema de Numeração Posicionais A posição ocupada por cada algarismo em um número altera seu valor de uma potência de 10 (na base 10) para cada casa à esquerda Por exemplo, no sistema decimal (base 10) O número 125 o algarismo 1 representa 100 (uma centena ou 10 2 ) o 2 representa 20 (duas dezenas ou 2x10 1 ) e o 5 representa 5 mesmo (5 unidades ou 5x10 0 ) Assim, em nossa notação, 125 = 1x10 2 + 2x10 1 + 5x10 0 61/75
Sistemas Numéricos Base de um Sistema de Numeração A base de um sistema é a quantidade de algarismos disponível na representação Na base 10 (0, 1, 2, 3, 4, 5, 6, 7, 8 e 9) Na base 2 (0 e 1) Na base 16 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E e F) 62/75
Sistemas Numéricos Representação Binária Os computadores modernos utilizam apenas o sistema binário bit (uma contração do inglês binary digit) Na base 2, o número "10" vale dois 63/75
Sistemas Numéricos Representação Octal Representação Hexadecimal 10 2 seria lido "um-zero" na base 2 e vale 2 10 (convertido para "dois" na base dez), 10 5 seria lido "um-zero" na base 5 e vale 5 10 (convertido para "cinco" na base dez), 10 10 pode ser lido como "um-zero" na base 10 ou então como "dez" na base dez, 10 16 seria lido "um-zero" na base 16 e vale 16 10 (convertido para "dezesseis" na base dez), 64/75
Sistemas Numéricos Conversões entre Bases regras gerais para converter números entre duas bases Conversão de números da base 2 para a base 10 N b = a n.b n +... + a 2.b 2 + a 1.b 1 + a 0.b 0 + a -1.b -1 + a -2.b -2 +... + a -n.b -n Exemplo O número 101101 2 na base 10 1x2 5 + 0x2 4 + 1x2 3 + 1x2 2 + 0x2 1 + 1x2 0 = 32 + 0 + 8 + 4 + 0 + 1 = 45 10 OBS: podemos fazer a conversão de números em qualquer base para a base 10 usando o algoritmo acima 65/75
Sistemas Numéricos Conversões entre Bases entre as bases 2, 8 e 16 Regra Geral: separa em grupos de n bits sempre começando da direita para esquerda (n representa a potência da bases que são potências entre si B=b n, exemplo 2 3 = 8) Exemplos conversão entre a base 2 e 8 (8 = 2³) 10101001 2 = 10.101.001 2 Sabemos que 010 2 = 2 8 ; 101 2 = 5 8 ; 001 2 = 1 8 portanto 10101001 2 = 251 8 conversão entre as bases 2 e 16 (16 = 2 4 ) 11010101101 2 = 110.1010.1101 2 Sabemos que: 110 2 = 6 16 ; 1010 2 = A 16 ; 1101 2 = D 16 Portanto: 11010101101 2 = 6AD 16 66/75
Sistemas Numéricos Conversões entre Bases A conversão inversa Exemplo 3F5 H em octal convertendo cada dígito hexadecimal em 4 dígitos binários 11.1111.0101 2 agrupando de três em três bits 1.111.110.101 2 convertendo cada grupo para seu valor equivalente em octal 1765 8 67/75
Sistemas Numéricos Conversões entre Bases Conversão de Números da Base 10 para uma Base b qualquer Parte Inteira O número decimal será dividido sucessivas vezes pela base resto de cada divisão ocupará sucessivamente as posições de ordem 0, 1, 2... Até o quociente resultar em zero Exemplo: 19 10 para a base 2 68/75
Sistemas Numéricos Conversões entre Bases Conversão de Números da Base 10 para uma Base b qualquer Parte Fracionária Multiplicações sucessivas do número fracionário pela base A parte inteira do resultado da primeira multiplicação será o valor da primeira casa fracionária e a parte fracionária será de novo multiplicada pela base Por exemplo, converter 15,6510 para a base 2, com 5 e com 10 algarismos fracionários 69/75
Noções de Sistemas Operacionais Conceito Conjunto de programas que tem por finalidade gerenciar os recursos do computador e facilitar a comunicação entre o homem e a máquina. Ou seja, unir : hardware, software e peopleware Funções Permitir o funcionamento básico do computador e dos seus periféricos Permitir a interação do homem e máquina, através de comandos previamente definidos Executar tarefas básicas e rotineiras dentro de um sistema de computação (classificação, edição, cópia, apagar, impressão de um arquivo, formatação de discos, alocar e liberar memória, gerenciar periféricos) Execução de programas Tornar o uso do equipamento mais simples, seguro e eficiente 70/75
Noções de Sistemas Operacionais Tipos de Supervisão e Controle Tratamento de erros Tratamento de I/O Escalonamento de processo Proteção Características Escrito em linguagem de baixo nível Eficiente e eficaz Dependente da arquitetura do hardware 71/75
Noções de Rede Local Rede é uma forma de interligar equipamentos (micros e periféricos) para que seja possível a troca de dados e o compartilhamento de recursos. Aspectos positivos das redes Comunicação e intercâmbio de dados entre usuários Processamento Distribuído Compartilhamento de recurso em geral Racionalização do uso de periféricos Acesso rápido a informações compartilhadas Flexibilidade lógica e física de expansão Custo/Desempenho baixo para soluções que exijam muitos recursos Interação entre diversos usuários e departamentos de uma empresa Redução e eliminação de redundância de armazenamento Controle da utilização e proteção no acesso de arquivos 72/75
Noções de Rede Local Topologias Estrela Anel Barramento Arquiteturas Ponto a Ponto Cliente-Servidor 73/75
Bibliografia da Disciplina BIBLIOGRAFIA BÁSICA: MANZANO, José Augusto N. G., OLIVEIRA, Jayr Figueiredo de., Algoritmos: lógica para desenvolvimento de programação de computadores. 17a. ed. São Paulo: Érica, 2005. 236p. ISBN 857194718X. FORBELLONE, André Luiz Villar; EBERSPACHER, Henri Frederico. Lógica de programação: a construção de algoritmos e estruturas de dados. 3a. edição São Paulo: Prentice Hall, 2005. 197 p. ISBN 8534611246. IBPI Instituto Brasileiro de Pesquisa em Informática. Dominando a Linguagem C, Rio de Janeiro: IBPI Press, 1993. KERNIGHAN, Brian W; RITCHIE, Dennis M. C. A Linguagem de programação padrão ANSI. 1a. ed. Rio de Janeiro/Porto Alegre: Campus, 1990. 289 p. ISBN 8570015860. SCHILDT, H. C. Completo e Total. 3a. ed. São Paulo: Makron Books Ltda, 1996. Apostila de Linguagem C da UFMG disponível na internet em http://ead1.eee.ufmg.br/cursos/c/ BIBLIOGRAFIA COMPLEMENTAR: FEDELI R. D.; POLLONI E. G. F; PERES, F. E., Introdução à Ciência da Computação, Cengage Learning, 2010. MEDINA M; FERTIG C., Algoritmos e Programação Teoria e Prática, Novatec, São Paulo, 2006. GUIMARÃES A. e LAGES N., Algoritmos e Estruturas de Dados, Ed. LTC Livros Técnicos e Científicos, Rio de Janeiro, 1985. JAMSA K., Salvo pelo C++, LTC Livros Técnicos e Científicos Editora, 1994. ALCADE E. Informática Básica e outros Ed. Makron Books São Paulo 1991. SALIBA, CARAM W. L. Técnicas de Programação: uma abordagem estruturada, Ed. Makron, McGrawHill, São Paulo, 1992. MACHADO F. M. Ed. LTC, Introdução à Arquitetura de Sistemas Operacionais Livros Técnicos e Científicos, Rio de Janeiro, 1992. DAVIS W. S. D. Sistemas Operacionais: uma visão sistemática Ed. Campus, Rio de Janeiro, 1990. 74/75
PROGRAMAÇÃO PARA ENGENHARIA I Introdução e Sistemas de Numeração Prof. Claudinei Dias email: prof.claudinei.dias@gmail.com