Baixe o app para aproveitar ainda mais
Prévia do material em texto
Bases Computacionais da Ciência Universidade Federal do ABC Esta obra foi licenciada com a Licenc¸a Crea- tive Commons Attribution-NonCommercial-NoDerivs 3.0 Unported. Para ver uma co´pia desta licenc¸a, visite http://creativecommons.org/ licenses/by-nc-nd/3.0/ ou envie um pedido por carta para Creative Commons, 444 Castro Street, Suite 900, Mountain View, California, 94041, USA. Lista de Figuras 2.1 Uma maquina de Computaca˜o de propo´sito u´nico . . . . . . . 9 2.2 Um computador baseado no modelo de Turing . . . . . . . . . 10 2.3 Mesmo programa, diferentes dados de entrada - (FOROUZAN; MOSHARRAF, 2011) . . . . . . . . . . . . . . . . . . . . . . . . 11 2.4 Mesmos dados de entrada, diferentes programas- (FOROUZAN; MOSHARRAF, 2011) . . . . . . . . . . . . . . . . . . . . . . . . 11 2.5 O modelo de von Neumann - (FOROUZAN; MOSHARRAF, 2011) 12 2.6 Computador Pessoal - Desktop . . . . . . . . . . . . . . . . . 17 2.7 Computador Pessoal - Laptop . . . . . . . . . . . . . . . . . . 17 2.8 Computador Pessoal - Tablet . . . . . . . . . . . . . . . . . . 17 2.9 Sistema Computacional Embutido - Celular . . . . . . . . . . 18 2.10 Sistema Computacional Embutido - GPS . . . . . . . . . . . . 18 2.11 Sistema Computaciolna Embutido - Smart Card . . . . . . . . 18 2.12 Sistema Computaciolna Embutido - Smart Label . . . . . . . . 19 2.13 Unidade Central de Processamento ou CPU dos computadores pessoais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.14 Microship dos Smart Cardl . . . . . . . . . . . . . . . . . . . . 20 2.15 Dispositivo de armazenamento Principal - Memo´ria RAM . . . 20 2.16 Dispositivo de armazenamento Secunda´rio - HD ou Disco R´ıgido 21 2.17 Dispositivo de armazenamento Secunda´rio - HD Externo . . . 21 2.18 Dispositivo de armazenamento Secunda´rio - Pen Drive . . . . 21 2.19 Dispositivo de armazenamento Secunda´rio - Carta˜o de Celuar 22 2.20 Dispositivo de armazenamento Secunda´rio - Placa Ma˜e . . . . 22 2.21 Gabinete dos computadores de mesa onde e´ localizado Placa ma˜e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.22 Localizac¸a˜o da placa ma˜e em um computador porta´til . . . . . 23 2.23 Abrir Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.24 Processar Texto . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.25 Salvar Texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.26 Divisa˜o das a´reas em Cieˆncia da Computac¸a˜o . . . . . . . . . 26 2.27 Divisa˜o das a´reas em Cieˆncia da Computac¸a˜o . . . . . . . . . 27 3.1 Exemplo de extrapolac¸a˜o: os pontos cheios sa˜o os dados da pesquisa realizada entre os anos de 2000 e 2009; a curva cheia e´ uma func¸a˜o matema´tica que descreve os dados obtidos nes- tes anos; a curva tracejada e´ a func¸a˜o extrapolada em datas futuras; os pontos vazios sa˜o os dados futuros (desconhecidos). 32 ii 3.2 Espac¸o em func¸a˜o do tempo para um movimento uniforme- mente variado. Em (a) e (c) temos os pontos onde o corpo esta´ em s = 0, enquanto que (b) ilustra o valor ma´ximo de s . 33 3.3 Gra´fico de f(x) dada por (3.2) . . . . . . . . . . . . . . . . . . 33 3.4 Regia˜o em torno das ra´ızes de (3.2) . . . . . . . . . . . . . . . 33 3.5 Resposta de treˆs elevadores a um comando. . . . . . . . . . . . 34 3.6 Exemplo de laˆmpada ligada a um gerador. . . . . . . . . . . . 35 3.7 Nu´mero de moles de C em func¸a˜o do valor de K . . . . . . . . 36 3.8 Gra´fico da func¸a˜o seno . . . . . . . . . . . . . . . . . . . . . . 41 3.9 Gra´fico da func¸a˜o seno . . . . . . . . . . . . . . . . . . . . . . 42 3.10 Gra´fico obtido no item (2) da Atividade 1. . . . . . . . . . . 45 3.11 Gra´fico da BER em func¸a˜o da SNR usando escala linear nos dois eixos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 3.12 Gra´fico do logar´ıtmo da BER em func¸a˜o da SNR. . . . . . . . 49 3.13 Gra´fico usado no exerc´ıcio 2. . . . . . . . . . . . . . . . . . . . 50 3.14 Gra´ficos usados no Exerc´ıcio 3. . . . . . . . . . . . . . . . . . 53 4.1 Localizac¸a˜o de me´dia, mediana e moda em uma distribuic¸a˜o assime´trica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 4.2 Gra´fico de frequeˆncia relativa . . . . . . . . . . . . . . . . . . 71 4.3 Histograma mostrando distribuic¸a˜o da idade (em anos) em uma amostra de 50 pessoas. . . . . . . . . . . . . . . . . . . . 71 4.4 Gra´fico de dispersa˜o . . . . . . . . . . . . . . . . . . . . . . . 72 4.5 Gra´fico de dispersa˜o, nu´mero de acidentes em func¸a˜o de tempo de treinamento. . . . . . . . . . . . . . . . . . . . . . . . . . . 74 4.6 Gra´fico de dispersa˜o, consumo de bens em func¸a˜o do aumento da renda me´dia. . . . . . . . . . . . . . . . . . . . . . . . . . . 74 4.7 Gra´fico de dispersa˜o, QI em func¸a˜o do peso da pessoa. . . . . 75 4.8 Exemplo de correlac¸a˜o na˜o-linear. . . . . . . . . . . . . . . . . 75 4.9 Outro exemplo de correlac¸a˜o na˜o-linear. . . . . . . . . . . . . 75 4.10 Diversos exemplos de relac¸o˜es entre varia´veis e respectivos co- eficientes de correlac¸a˜o. Fonte: http://en.wikipedia.org/ wiki/File:Correlation_examples . . . . . . . . . . . . . . . 76 4.11 Representac¸a˜o gra´fica do intervalo poss´ıvel para o coeficiente de correlac¸a˜o. . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 4.12 Gra´fico de dispersa˜o para os dados da Tabela 4.10. . . . . . . 77 4.13 Gra´fico de dispersa˜o, nu´mero de cegonhas versus populac¸a˜o da cidade de Oldemberg. . . . . . . . . . . . . . . . . . . . . . 78 4.14 Reta de regressa˜o, exprimindo relac¸a˜o entre faltas e nota final. 80 4.15 Curva de regressa˜o exponencial . . . . . . . . . . . . . . . . . 81 4.16 Curva de regressa˜o logar´ıtmica . . . . . . . . . . . . . . . . . . 81 iii 4.17 Curva de regressa˜o polinomial . . . . . . . . . . . . . . . . . . 82 4.18 Curva de regressa˜o de poteˆncia . . . . . . . . . . . . . . . . . 82 4.19 Dados para construc¸a˜o do gra´fico de correlac¸a˜o. . . . . . . . . 83 4.20 Escolhendo gra´fico de dispersa˜o . . . . . . . . . . . . . . . . . 83 4.21 Definic¸a˜o do intervalo de dados . . . . . . . . . . . . . . . . . 84 4.22 Selec¸a˜o das colunas de dados . . . . . . . . . . . . . . . . . . . 84 4.23 Inserindo nome . . . . . . . . . . . . . . . . . . . . . . . . . . 85 4.24 Inserindo coluna X . . . . . . . . . . . . . . . . . . . . . . . . 85 4.25 Inserindo coluna Y . . . . . . . . . . . . . . . . . . . . . . . . 86 4.26 Escolha de t´ıtulo e nome das varia´veis. . . . . . . . . . . . . . 86 4.27 Gra´fico de dispersa˜o . . . . . . . . . . . . . . . . . . . . . . . 87 4.28 Tela de selec¸a˜o do tipo de regressa˜o . . . . . . . . . . . . . . . 87 4.29 Resultado da regressa˜o . . . . . . . . . . . . . . . . . . . . . . 88 4.30 Selecionando func¸a˜o correlac¸a˜o. . . . . . . . . . . . . . . . . . 88 4.31 Selecionando as colunas de dados. . . . . . . . . . . . . . . . 89 4.32 Resultado final com o valor do coeficiente de correlac¸a˜o. . . . 89 4.33 Entrada de dados na planilha . . . . . . . . . . . . . . . . . . 90 4.34 Inserindo func¸a˜o . . . . . . . . . . . . . . . . . . . . . . . . . . 91 4.35 Selecionando func¸o˜es estat´ısticas . . . . . . . . . . . . . . . . . 91 4.36 Selecionando a func¸a˜o me´dia . . . . . . . . . . . . . . . . . . . 92 4.37 Selecionando coluna de dados . . . . . . . . . . . . . . . . . . 92 4.38 Resultado da me´dia . . . . . . . . . . . . . . . . . . . . . . . . 93 4.39 Escolhendo func¸a˜o mediana . . . . . . . . . . . . . . . . . . . 94 4.40 Escolhendo a func¸a˜o moda . . . . . . . . . . . . . . . . . . . . 94 4.41 Resultados das medidas de tendeˆncia central . . . . . . . . . . 95 4.42 Apareˆncia da planilha de dados logo apo´s ser carregada. . . . 96 4.43 Atribuindo ro´tulos a linhas onde as medidas sera˜o inseridas. . 96 4.44 Selecionando a faixa de valores. . . . . . . . . . . . . . . . . . 97 4.45 Selecionando a colunaonde os valores de frequeˆncia sera˜o in- seridos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 4.46 Selecionando a func¸a˜o frequeˆncia. . . . . . . . . . . . . . . . . 98 4.47 Selecionando dados para a construc¸a˜o do histograma. . . . . . 99 4.48 Selecionando limites dos intervalos (classes) do histograma. . . 99 4.49 Inserindo coluna de ro´tulos. . . . . . . . . . . . . . . . . . . . 100 4.50 Selecionando tipo de gra´fico. . . . . . . . . . . . . . . . . . . . 100 4.51 Selecionando coluna de ro´tulos. . . . . . . . . . . . . . . . . . 100 4.52 Inserindo t´ıtulo. . . . . . . . . . . . . . . . . . . . . . . . . . . 101 4.53 Histograma final. . . . . . . . . . . . . . . . . . . . . . . . . . 101 5.1 Exemplo de co´digo de barras (extra´ıdo da livraria virtual Ama- zon.com (AMAZON. . . , 2011)) . . . . . . . . . . . . . . . . . . . 108 iv 5.2 Livro relacionado ao co´digo de barras (extra´ıdo da livraria virtual Amazon.com (AMAZON. . . , 2011)) . . . . . . . . . . . . 109 5.3 Lista de supermercado. . . . . . . . . . . . . . . . . . . . . . . 110 5.4 Atividade 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 5.5 Atividade 1: janela para importar arquivo “.csv”. . . . . . . . 122 5.6 Atividade 1: janela para formatar ce´lulas. . . . . . . . . . . . 122 5.7 Atividade 1: janela para definir valores va´lidos para os dados. 123 5.8 Atividade 1: janela para definir alerta de erro caso seja digi- tado um dado inva´lido. . . . . . . . . . . . . . . . . . . . . . . 123 5.9 Atividade 1: janela Classificar. . . . . . . . . . . . . . . . . 124 5.10 Atividade 1: janela para calcular subtotais. . . . . . . . . . . . 125 5.11 Janela para definic¸a˜o do filtro. (Atividade 5.) . . . . . . . . . 126 5.12 Sistema de Amortizac¸a˜o Constante. . . . . . . . . . . . . . . . 127 6.1 Janela do RoboMind com o controle remoto aberto. . . . . . 134 6.2 Janela do RoboMind com comandos para o roboˆ percorrer um quadrado. . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 6.3 Criac¸a˜o do cena´rio para o RoboMind . . . . . . . . . . . . . . 138 6.4 Visualizac¸a˜o do mapa criado dentro do RoboMind . . . . . . . 138 6.5 Representac¸a˜o de um plano cartesiano . . . . . . . . . . . . . 139 6.6 Uma poss´ıvel resposta para o exerc´ıcio de percorrer os treˆs pontos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 6.7 Controle de execuc¸a˜o do programa . . . . . . . . . . . . . . . 140 6.8 Um poss´ıvel caminho para o exerc´ıcio de percorrer os treˆs pontos140 6.9 Console do Scilab: I´cone para abrir o SciNotes (Figura 6.10). 143 6.10 Janela do SciNotes para editar o co´digo-fonte. . . . . . . . . . 143 7.1 Descric¸a˜o do mapa com uma caixa . . . . . . . . . . . . . . . 151 7.2 Cena´rio com uma caixa . . . . . . . . . . . . . . . . . . . . . . 151 7.3 Descric¸a˜o do mapa com duas caixas . . . . . . . . . . . . . . . 153 7.4 Cena´rio com duas caixas . . . . . . . . . . . . . . . . . . . . . 153 8.1 Algoritmo de Euclides do Ma´ximo Divisor Comum de dois nu´meros inteiros positivos: MDC(320,250) = 10. . . . . . . . . 164 9.1 Experimento Real de Crash-Test. . . . . . . . . . . . . . . . . 171 9.2 Proto´tipo do Roboˆ PEOPLER-II. . . . . . . . . . . . . . . . . 171 9.3 Resultado Experimental no Chaveamento de Roda para Perna. 172 9.4 Exemplos de Modelos F´ısicos Representados por um Mapa do Brasil e uma Maquete de Avia˜o em (a) e (b), respectivamente. 173 9.5 Modelo e suas Varia´veis. . . . . . . . . . . . . . . . . . . . . . 176 v 9.6 Ambiente Exemplo com a identificac¸a˜o dos Roboˆs, Paredes e a Sa´ıda. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 9.7 (a) Mapa na Memo´ria no In´ıcio da Simulac¸a˜o. (b) O Mesmo Mapa ao Te´rmino da Simulac¸a˜o. . . . . . . . . . . . . . . . . . 179 9.8 Roboˆ “da Vinci” Utilizado em Cirurgias (VINCI, 2011). . . . . 183 9.9 Simulador de Pec¸as. . . . . . . . . . . . . . . . . . . . . . . . . 183 9.10 Projeto RobCup Rescue e seus Ambiente de Simulac¸a˜o para Resgate em Situac¸o˜es de Desastre. Fonte: (RESCUE, 2011). . . 184 9.11 Movimentac¸a˜o dos Agentes em Direc¸a˜o a` Sa´ıda Formando um Arco (FRANc¸A, 2010). . . . . . . . . . . . . . . . . . . . . . . . 186 9.12 Ciclo de Vida de uma Simulac¸a˜o Computacional. . . . . . . . 187 9.13 Circunfereˆncia Circunscrita em um Quadrado. . . . . . . . . . 191 9.14 Circunfereˆncia circunscrita em um quadrado e com uma se´rie de pontos aleatoriamente distribu´ıdos sobre a area do quadrado.193 9.15 A Distaˆncia d entre qualquer ponto A e o centro da circunfe- reˆncia pode ser calculada atrave´s de um ca´lculo de uma hipo- tenusa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 9.16 Ambiente Scilab® e SciNotes. . . . . . . . . . . . . . . . . . . 195 9.17 Ambiente de Resgate no RoboMind. . . . . . . . . . . . . . . . 198 9.18 Mapa Utilizado para a Criac¸a˜o do Cena´rio no RoboMind. . . . 199 9.19 Fluxograma do Cena´rio de Resgate. . . . . . . . . . . . . . . 200 9.20 Nova Posic¸a˜o da Vı´tima Apo´s ser Resgatada. . . . . . . . . . . 204 9.21 Comandos para se Implementar o Me´todo de Newton no Am- biente SciNotes. . . . . . . . . . . . . . . . . . . . . . . . . . . 205 9.22 Ana´lise Gra´fica do Polinoˆmio. . . . . . . . . . . . . . . . . . . 208 10.1 Lanc¸amento de um proje´til. . . . . . . . . . . . . . . . . . . . 215 10.2 Lanc¸amento de proje´teis em diferentes condic¸o˜es iniciais. . . . 215 10.3 Estrutura atoˆmica de uma mole´cula de a´gua. Os a´tomos esta˜o mostrados como esferas e coloridos por tipo atoˆmico, enquanto as ligac¸o˜es covalentes esta˜o mostradas como varetas. . . . . . . 219 10.4 Energia potencial relativa ao estiramento de uma ligac¸a˜o cova- lente O-H. Para o gra´fico, foram empregados k1 = 553kcal.mol−1.A˚−2, k2 = 276,5kcal.mol−1.A˚−2, k3 = 1106kcal.mol−1.A˚−2 e x0 = 0.9572A˚. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 10.5 Mole´cula de a´gua. Qual deve ser a energia potencial desta mole´cula? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 vi Lista de Tabelas 2.1 Exemplos de Sistemas Operacionais . . . . . . . . . . . . . . . 23 2.2 Exemplos de Aplicativos . . . . . . . . . . . . . . . . . . . . . 24 4.1 Prefereˆncias dos estudantes por cursos . . . . . . . . . . . . . 62 4.2 Distribuic¸a˜o de alunos . . . . . . . . . . . . . . . . . . . . . . 62 4.3 Prefereˆncias dos alunos, em porcentagem . . . . . . . . . . . . 63 4.4 Um exemplo de ca´lculo de frequeˆncia acumulada. . . . . . . . 65 4.5 Tabela de notas de uma classe. . . . . . . . . . . . . . . . . . 66 4.6 Tabela para ca´lculo de mediana . . . . . . . . . . . . . . . . . 67 4.7 Exemplo de distribuic¸a˜o unimodal . . . . . . . . . . . . . . . . 67 4.8 Exemplo de distribuic¸a˜o bimodal. . . . . . . . . . . . . . . . . 68 4.9 Exemplos de pares de varia´veis cujas relac¸o˜es podem ser estu- dadas usando correlac¸a˜o e/ou regressa˜o . . . . . . . . . . . . . 73 4.10 Tabela de notas e faltas para cada aluno. . . . . . . . . . . . . 77 4.11 Valores intermedia´rios usados no ca´lculo do coeficiente de cor- relac¸a˜o. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 4.12 Distribuic¸a˜o de escolaridade segundo tipo de resideˆncia. . . . . 102 4.13 Distribuic¸a˜o dos sobreviventes de acordo com o sexo. . . . . . 103 4.14 Distaˆncias obtidas pelos vencedores do salto triplo masculino em Olimp´ıadas. . . . . . . . . . . . . . . . . . . . . . . . . . . 103 4.15 Taxa de crescimento ma´xima em func¸a˜o de intensidade de luz. 104 4.16 Dados para ana´lise de regressa˜o . . . . . . . . . . . . . . . . . 105 5.1 Diciona´rio de dados do arquivo idh.csv. . . . . . . . . . . . . . 128 7.1 Comandos de observac¸a˜o do ambiente. . . . . . . . . . . . . . 148 7.2 Conectores lo´gicos e a sua interpretac¸a˜o . . . . . . . . . . . . 150 7.3 Sintaxe paraas operac¸o˜es de comparac¸a˜o entre nu´meros no SciLab. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 vii Suma´rio 1 Prefa´cio 2 1.1 Estrutura do Livro . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2 O Conteu´do da Disciplina . . . . . . . . . . . . . . . . . . . . 3 1.3 Demais Recursos da Disciplina . . . . . . . . . . . . . . . . . . 4 1.4 Agradecimentos . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2 Fundamentos da Computac¸a˜o 6 2.1 Introduc¸a˜o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.2 O Computador . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.2.1 Modelo de Turing . . . . . . . . . . . . . . . . . . . . . 9 2.2.2 Modelo de Von Newman . . . . . . . . . . . . . . . . . 12 2.2.3 Histo´rico . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.3 Sistemas Computacionais e Seus Componentes . . . . . . . . . 16 2.3.1 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.3.2 Software . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.3.3 Exemplo de Funcionamento de um Sistema Computa- cional e Seus Componentes . . . . . . . . . . . . . . . . 23 2.4 Organzac¸a˜o da Cieˆncia da Computac¸a˜o . . . . . . . . . . . . . 24 2.4.1 A´reas de Software . . . . . . . . . . . . . . . . . . . . . 26 2.4.2 A´reas de Hardware . . . . . . . . . . . . . . . . . . . . 29 2.5 Considerac¸o˜es Finais . . . . . . . . . . . . . . . . . . . . . . . 29 2.6 Conjunto de Pra´ticas . . . . . . . . . . . . . . . . . . . . . . . 30 3 Representac¸a˜o Gra´fica de Func¸o˜es 31 3.1 Introduc¸a˜o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.2 Emprego do Scilab® para fazer gra´ficos . . . . . . . . . . . . . 36 3.2.1 Operadores Ba´sicos . . . . . . . . . . . . . . . . . . . . 37 3.2.2 Fazendo o gra´fico de uma func¸a˜o simples . . . . . . . . 39 3.2.3 Cuidados com outros tipos de func¸o˜es . . . . . . . . . . 42 3.3 Atividades em Aula . . . . . . . . . . . . . . . . . . . . . . . . 43 3.4 Exerc´ıcios Ba´sicos . . . . . . . . . . . . . . . . . . . . . . . . . 48 3.5 Exerc´ıcios Avanc¸ados . . . . . . . . . . . . . . . . . . . . . . . 52 3.6 Considerac¸o˜es Finais . . . . . . . . . . . . . . . . . . . . . . . 54 4 Noc¸o˜es de Estat´ıstica, Correlac¸a˜o e Regressa˜o 56 4.1 Introduc¸a˜o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 4.2 Conceitos Ba´sicos . . . . . . . . . . . . . . . . . . . . . . . . . 58 4.2.1 Tipos de Dados . . . . . . . . . . . . . . . . . . . . . . 60 viii 4.2.2 Distribuic¸a˜o de Frequeˆncias . . . . . . . . . . . . . . . 61 4.2.3 Medidas de Tendeˆncia Central . . . . . . . . . . . . . . 65 4.2.4 Medidas de Dispersa˜o . . . . . . . . . . . . . . . . . . 69 4.2.5 Visualizac¸a˜o de Dados Amostrais . . . . . . . . . . . . 70 4.3 Correlac¸a˜o e Regressa˜o . . . . . . . . . . . . . . . . . . . . . . 72 4.3.1 Gra´ficos de dispersa˜o e tipos de correlac¸a˜o . . . . . . . 73 4.3.2 Coeficiente de Correlac¸a˜o . . . . . . . . . . . . . . . . . 74 4.3.3 Causalidade versus Correlac¸a˜o . . . . . . . . . . . . . . 77 4.3.4 A Reta da Regressa˜o Linear Estimada . . . . . . . . . 79 4.3.5 O Coeficiente de Determinac¸a˜o . . . . . . . . . . . . . 80 4.3.6 Outros tipos de correlac¸a˜o . . . . . . . . . . . . . . . . 81 4.3.7 Criando um gra´fico de correlac¸a˜o com o BrOffice Calc 81 4.4 Exerc´ıcio da Aula Pra´tica . . . . . . . . . . . . . . . . . . . . 90 4.5 Exerc´ıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 4.6 Considerac¸o˜es Finais . . . . . . . . . . . . . . . . . . . . . . . 104 5 Base de Dados 106 5.1 Introduc¸a˜o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 5.2 Entendendo a Base de Dados . . . . . . . . . . . . . . . . . . 108 5.2.1 Dados e Informac¸o˜es . . . . . . . . . . . . . . . . . . . 108 5.2.2 O que e´ uma Base de Dados? . . . . . . . . . . . . . . 109 5.3 Organizac¸a˜o de Dados . . . . . . . . . . . . . . . . . . . . . . 112 5.3.1 Tipos de Dados e Domı´nios . . . . . . . . . . . . . . . 114 5.4 Arquivos Estruturados . . . . . . . . . . . . . . . . . . . . . . 118 5.5 Consultas em Bases de Dados . . . . . . . . . . . . . . . . . . 119 5.6 Exerc´ıcios da Aula Pra´tica . . . . . . . . . . . . . . . . . . . . 120 5.7 Exerc´ıcios Complementares . . . . . . . . . . . . . . . . . . . 126 5.8 Considerac¸o˜es Finais . . . . . . . . . . . . . . . . . . . . . . . 128 6 Lo´gica de Programac¸a˜o: Varia´veis e Estruturas Sequ¨enciais 130 6.1 Introduc¸a˜o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 6.2 Delegando tarefas - O Conceito de Instruc¸a˜o . . . . . . . . . . 131 6.3 Sequeˆncia de Instruc¸o˜es - Estruturas Sequenciais . . . . . . . . 132 6.4 Exerc´ıcios para Sala de Aula . . . . . . . . . . . . . . . . . . . 137 6.5 Exerc´ıcios com o Robomind . . . . . . . . . . . . . . . . . . . 141 6.6 Ilustrando os conceitos aprendidos com o Scilab . . . . . . . 142 6.6.1 Entrada e sa´ıda . . . . . . . . . . . . . . . . . . . . . . 144 6.7 Exerc´ıcios com o Scilab . . . . . . . . . . . . . . . . . . . . . . 145 ix 7 Lo´gica de Programac¸a˜o: Estruturas Condicionais 147 7.1 Introduc¸a˜o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 7.2 Tomando deciso˜es - Estruturas Condicionais . . . . . . . . . . 147 7.3 Exerc´ıcios para Sala de Aula . . . . . . . . . . . . . . . . . . . 150 7.4 Exerc´ıcios com o Robomind . . . . . . . . . . . . . . . . . . . 153 7.5 Ilustrando os Conceitos Aprendidos usando Scilab . . . . . . 155 7.5.1 Exerc´ıcios com o Scilab . . . . . . . . . . . . . . . . . . 157 8 Lo´gica de Programac¸a˜o: Estruturas de Repetic¸a˜o 159 8.1 Introduc¸a˜o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 8.2 Repetindo as mesmas instruc¸o˜es . . . . . . . . . . . . . . . . . 159 8.3 Criando programas complexos . . . . . . . . . . . . . . . . . . 161 8.4 Exerc´ıcios para Sala de Aula . . . . . . . . . . . . . . . . . . . 161 8.5 Exerc´ıcios com o Robomind . . . . . . . . . . . . . . . . . . . 162 8.6 Ilustrando os Conceitos Aprendidos usando Scilab . . . . . . 163 8.7 Exerc´ıcios com o Scilab . . . . . . . . . . . . . . . . . . . . . . 166 9 Modelagem e Simulac¸a˜o Computacional: Conceitos Fun- damentais 168 9.1 Introduc¸a˜o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 9.2 Definic¸a˜o de Sistema . . . . . . . . . . . . . . . . . . . . . . . 169 9.2.1 Formas de se Estudar um Sistema . . . . . . . . . . . . 170 9.3 Definic¸a˜o de Modelo . . . . . . . . . . . . . . . . . . . . . . . 176 9.3.1 Construc¸a˜o de Modelos . . . . . . . . . . . . . . . . . . 176 9.3.2 Modelos de Simulac¸a˜o . . . . . . . . . . . . . . . . . . 180 9.4 Simulac¸a˜o Computacional . . . . . . . . . . . . . . . . . . . . 182 9.4.1 Sistemas Computacionais para Simulac¸a˜o . . . . . . . . 182 9.4.2 Verificac¸a˜o e Validac¸a˜o . . . . . . . . . . . . . . . . . . 185 9.4.3 Metodologia para o Desenvolvimento de Simulac¸o˜es Com- putacionais . . . . . . . . . . . . . . . . . . . . . . . . 187 9.5 Exerc´ıcios da Aula Pra´tica . . . . . . . . . . . . . . . . . . . . 189 9.5.1 Estimando o Valor de pi no Scilab® com o Me´todo de Monte Carlo . . . . . . . . . . . . . . . . . . . . . . . . 189 9.5.2 O Domı´nio de Resgate no RoboMind . . . . . . . . . . 197 9.6 Conjunto de Pra´ticas . . . . . . . . . . . . . . . . . . . . . . . 203 9.6.1 RoboMind e o Controle de Enchentes . . . . . . . . . . 204 9.6.2 ?? Me´todo de Newton-Raphson . . . . . . . . . . . . . 204 10 Modelagem e Simulac¸a˜o Computacional: A Ci- eˆncia na Pra´tica 210 10.1 Introduc¸a˜o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 x 10.2 Simulac¸a˜o como um Laborato´rio: Integrando os Me´todos de Deduc¸a˜o e Induc¸a˜o . . . . . . . . . . . . . . . . . . . . . . . . 210 10.3 Exerc´ıcios da Aula Pra´tica . . . . . . . . . . .. . . . . . . . . 212 10.3.1 Simulac¸a˜o da Trajeto´ria de um Proje´til . . . . . . . . . 212 10.4 Conjunto de Pra´ticas . . . . . . . . . . . . . . . . . . . . . . . 218 10.4.1 ?? Ca´lculo de Energias em um Sistema Atoˆmico Atra- ve´s de Modelagem Molecular . . . . . . . . . . . . . . . 218 1 1 Prefa´cio Hoje em dia, encontramos a tecnologia da informac¸a˜o em (quase) todos os domı´nios da vida. Especialmente no ambiente acadeˆmico, o trabalho com computadores se faz necessa´rio em todas as a´reas, das Cieˆncias Naturais, Matema´tica, Computac¸a˜o, Biologia, Qu´ımica, F´ısica, Engenharias, Licenci- aturas, ate´ as Cieˆncias Sociais e as Artes. Por isto, o uso de computadores e ferramentas computacionais deveria fazer parte do conhecimento de alunos de qualquer mate´ria universita´ria desde o in´ıcio dos estudos. A UFABC criou para este fim a disciplina Bases Computacionais da Cieˆncia. A disciplina faz parte de um conjunto de seis disciplinas “de base” do curr´ıculo da UFABC. As outras disciplinas deste conjunto sa˜o Bases Mate- ma´ticas, Base Experimental das Cieˆncias Naturais, Estrutura da Mate´ria, Origem da Vida e Diversidade dos Seres Vivos e Bases Epistemolo´gicas da Cieˆncia Moderna. Este conjunto de mate´rias e´ cursado no primeiro ano tanto do Bacharelado em Cieˆncia e Tecnologia (BC&T) como do Bacha- relado em Cieˆncias e Humanidades (BC&H). O propo´sito e´ criar um base homegeˆnea de conhecimento para os alunos de todas as a´reas de graduac¸a˜o oferecidas pela UFABC. Ale´m de serem importantes para o andamento dos estudos seguintes, as disciplinas de base representam o primeiro contato do aluno com a interdisciplinaridade, ponto central do projeto pedago´gico da UFABC. A interdisciplinaridade visa a` percepc¸a˜o do aluno, de que as a´reas da cieˆncia sa˜o interligadas, e de que para o bom entendimento de uma ma- te´ria o conhecimento das a´reas relacionadas e´ indispensa´vel. Para enfatizar a sua importaˆncia, parte dos exerc´ıcios apresentados neste livro tratam de assuntos das outras disciplinas deste conjunto, assim de- monstrando como as bases computacionais sa˜o aplicadas em outras a´reas da cieˆncia. O objetivo deste livro e´ auxiliar o aluno a estudar a disciplina Bases Com- putacionais da Cieˆncia, apresentando as bases teo´ricas e um grande nu´mero de exerc´ıcios, ja´ que o uso do computador se aprende principalmente atrave´s da pra´tica. Esperamos que este livro seja uma importante ferramenta dida´- tica para os alunos da disciplina e outras pessoas que gostariam de aprender os conceitos ba´sicos da Computac¸a˜o. Desejamos um aprendizado frut´ıfero e prazeroso. 2 1.1 Estrutura do Livro A disciplina consiste, ale´m das provas e do projeto final, de nove aulas, cada uma representada nos cap´ıtulos deste livro. Em cada cap´ıtulo ha´ uma intro- duc¸a˜o sobre o conteu´do da aula, enunciando-se seus objetivos. Na sequ¨eˆncia sec¸o˜es apresentam a parte teo´rica da aula, ilustrada por exemplos pra´ticos. Em seguida ha´ duas sec¸o˜es de exerc´ıcios pra´ticos, uma contendo os exerc´ıcios a serem feitos em sala de aula apo´s a apresentac¸a˜o do conteu´do pelo pro- fessor, e outra sec¸a˜o com os exerc´ıcios de casa. Cada cap´ıtulo e´ finalizado com as considerac¸o˜es finais e as refereˆncias bibliogra´ficas citadas no texto, ou recomendadas para o estudo mais aprofundado do assunto da aula. 1.2 O Conteu´do da Disciplina A disciplina Bases Computacionais da Cieˆncia pode ser dividida em quatro grandes a´reas: Fundamentos da Computac¸a˜o, cujos conceitos sa˜o apresentados no Ca- p´ıtulo 2; Representac¸a˜o e Ana´lise de Dados, com os conteu´dos apresentado nos cap´ıtulos 3 a 5; Lo´gica de Programac¸a˜o, com os conceitos apresentados nos cap´ıtulos 6 a 8. Modelagem e Simulac¸a˜o Computacional, apresentadas nos cap´ıtulos 9 e 10. Na aula Fundamentos da Computac¸a˜o sa˜o apresentados o pro´prio compu- tador, seu histo´rico, seus componentes, os conceitos de hardware e software e a organizac¸a˜o da Cieˆncia da Computac¸a˜o. Na aula seguinte, aprende-se a empregar o software Scilab® para a repre- sentac¸a˜o gra´fica e algumas operac¸o˜es de func¸o˜es. O software BrOffice Calc® e´ usado na aula seguinte, Noc¸o˜es de Estat´ıstica, Correlac¸a˜o e Regressa˜o, onde sa˜o apresentados os conceitos ba´sicos de va´rias medidas de tendeˆncia central e dispersa˜o, e da visualizac¸a˜o de dados amostrais. Em Base de Dados sa˜o explicados os termos dado, informac¸a˜o e base de dados. Tambe´m, tem-se a apresentac¸a˜o de como usar o software BrOffice Calc® para a organizac¸a˜o de dados, o trabalho com arquivos estruturados e para fazer consultas em bases de dados. 3 Nas treˆs aulas sobre Lo´gica de Programac¸a˜o, e´ usado o programa RoboMind® para familiarizar-se com a lo´gica de programac¸a˜o, e com estruturas condici- onais e de repetic¸a˜o, que sa˜o frequ¨entemente usadas na programac¸a˜o. Nas u´ltimas duas aulas aprende-se a representar sistemas simples por modelos computacionais e fazer simulac¸o˜es. 1.3 Demais Recursos da Disciplina A principal ferramenta para esta disciplina ale´m deste livro e´, logicamente, um computador, idealmente conectado a` Internet. Na Internet encontra-se a ambiente virtual de aprendizagem Tidia1, que sera´ utilizado nesta disciplina para atividades tais como: disponibilizac¸a˜o do material dida´tico, transfereˆn- cia de arquivos e a comunicac¸a˜o entre os alunos e entre aluno e professor, para a entrega de exerc´ıcios e fo´runs interativos. Dentre os materiais dida´- ticos dispon´ıveis no Tidia cita-se a versa˜o em PDF deste livro, bem como tutoriais dos softwares usados nos exerc´ıcios pra´ticos. O acesso e o uso do Tidia sa˜o ensinados na primeira aula. Para fazer os exerc´ıcios pra´ticos e´ necessa´rio instalar no computador os seguintes softwares : Um navegador de Internet (por exemplo o Mozilla Firefox®) para aces- sar o Tidia e fazer pesquisas online; Scilab®, um software para computac¸a˜o nume´rica e a vizualizac¸a˜o de func¸o˜es matema´ticas; BrOffice Calc®, um programa de ca´lculos de planilha, que faz parte do pacote OpenOffice® (ou BrOffice®); RoboMind®, um programa para o ensino de Lo´gica de Programac¸a˜o. Todos estes softwares sa˜o gratuitos e podem ser baixados, instalados e utilizados para fins na˜o-comerciais sem pagamento de licenc¸as de uso. 1.4 Agradecimentos A elaborac¸a˜o deste livro so´ foi poss´ıvel grac¸as ao apoio, confianc¸a, dedicac¸a˜o e colaborac¸a˜o de muitas pessoas que ajudaram a torna´-lo uma realidade. Por isso, fazemos questa˜o de registrar aqui nossos agradecimentos. 1Dispon´ıvel em http://tidia.ufabc.edu.br:8080 4 Em primeiro lugar, agradecemos quem acreditou no projeto quando este era apenas uma ide´ia. Agradecemos a` Pro´-Reitoria de Graduac¸a˜o, em es- pecial a` Professora Denise Consonni, ao Professor Da´cio Roberto Matheus e ao Professor Derval dos Santos Rosa, pela iniciativa em estruturar uma discussa˜o integrada em toda a UFABC sobre as seis disciplinas iniciais dos bacharelados interdisciplinares, quais sejam: Base Experimental das Cieˆncias Naturais, Bases Computacionais da Cieˆncia, Bases Epistemolo´gicas da Cieˆn- cia Moderna, Bases Matema´ticas, Estrutura da Mate´ria, Origem da Vida e Diversidade dos Seres Vivos. De maneira especial, gostariamos de agradecer nominalmente aos profes- sores que elaboraram este livro, sempre de maneira cooperativa e interativa. Sa˜o eles: Alessandro Nascimento, Aline Neves, Carlos da Silva dos San- tos, Cristiane Otero Reis Salum, Delmo Alves de Moura, Edson Pinheiro Pimentel, Harlen Costa Batagelo, Humberto Luiz Razente, Irineu Antunes Junior, Joa˜o Paulo Gois, Juliana Cristina Braga, Let´ıcia Rodrigues Bueno, Luiz Carlos da Silva Rozante, Maria Camila Nardini Barioni, Maria das Gra- c¸as Bruno Marietto, Ma´rcio Eisencraft, Ma´rcio K. Oikawa, Peter Claessens, RicardoSuyama, Ronaldo Cristiano Prati e Wagner Tanaka Botelho. A contribuic¸a˜o de cada um destes professores demonstra o domı´nio cient´ı- fico e te´cnico nos temas abordados em cada cap´ıtulo. Entretanto, a preocupa- c¸a˜o de todos foi muito ale´m da transmissa˜o pura e direta dos conhecimentos. O processo de formac¸a˜o acadeˆmica dos alunos que utilizara˜o este material dida´tico sempre foi o norte de nossas as discusso˜es. Sendo assim, as deciso˜es de como seria a transmissa˜o dos conhecimentos foram direcionadas por per- guntas tais como: (i) como apresentar conhecimentos amplos e complexos, de maneira que os alunos iniciantes entendam seus significados e abrangeˆn- cia? (ii) como apresentar os conhecimento de Computac¸a˜o na˜o como um fim em si mesmo, mas como uma importante e indispensa´vel ferramentas para todos os profissionais do se´culo XXI? (iii) como expor os alunos, de maneira gradativa e coerente, a va´rias situac¸o˜es de estudo e pesquisa que envolvem a vida acadeˆmica? Agradecemos, tambe´m, a Robson dos Santos Franc¸a, que nos auxiliou de maneira efetiva na parte te´cnica de editorac¸a˜o deste livro. Maria das Grac¸as Bruno Marietto Ma´rio Minami Pieter Willem Westera —– Santo Andre´, Sa˜o Paulo, Maio de 2012. 5 2 Fundamentos da Computac¸a˜o Edson Pinheiro Pimentel Juliana Cristina Braga —– Universidade Federal do ABC 2.1 Introduc¸a˜o Atualmente, e´ praticamente impensa´vel fazer pesquisa cient´ıfica sem o uso de computac¸a˜o. A presenc¸a de instrumentos computadorizados coletando da- dos o tempo todo e em todo lugar gera dados cient´ıficos em volumes que na˜o podem mais ser entendidos sem ca´lculos simples e muitas vezes computac¸o˜es complexas. Por exemplo, a Sloan Digital Sky Survey esta´ mapeando o ce´u com um telesco´pio dedicado e nos primeiros cinco anos de operac¸a˜o, gerou cerca de 6 TB de dados. Da mesma forma, simulac¸o˜es em grande escala de modelos clima´ticos a reatores de fusa˜o geram enormes conjuntos de dados em semanas ou dias devido a disponibilidade de computadores cada vez mais ra´pidos. Tal volume de dados tem de ser analisado por te´cnicas de com- putac¸a˜o. A` luz desta evoluc¸a˜o da cieˆncia, as futuras gerac¸o˜es de cientistas devem compreender que precisara˜o envolver cada vez mais computac¸a˜o em seu trabalho (HAMBRUSCH et al., 2009). De fato, diversas a´reas de pesquisa esta˜o se tornando cada vez mais de- pendentes da computac¸a˜o. Segundo George Johnson, no artigo ”All Science is Computer Science” publicado no New York Times on the Web em 2001, toda cieˆncia, ao que parece, esta´ se tornando cieˆncia da computac¸a˜o. Eis alguns depoimentos que embasam esta afirmac¸a˜o (JOHNSON, 06/05/2011): ”F´ısica e´ quase inteiramente computacional agora”, disse Thomas B. Kepler, vice-presidente para assuntos acadeˆmicos do Santa Fe Institute, um centro de pesquisa multidisciplinar, no Novo Me´xico. ”Ningue´m sonharia em fazer esses grandes experimentos do acelerador sem uma tremenda quantidade de poder computacional para analisar os dados.” Mas a maior mudanc¸a, segundo ele, foi em biologia. ”Dez anos atra´s, os bio´logos desconsideravam a necessidade de computac¸a˜o”, disse o Dr. 6 Kepler. ”Agora eles esta˜o cientes de que na˜o podem realmente fazer biologia sem ele.” Ha´ qu´ımica computacional, neurocieˆncia computacional, gene´tica com- putacional, imunologia computacional e biologia molecular computaci- onal. Mesmo a´reas como a sociologia e a antropologia esta˜o lentamente sucumbindo a` mudanc¸a. No Instituto Santa Fe´, modelos de computa- dor sa˜o usados para estudar os fatores que podem ter levado a` ascensa˜o e queda de culturas complexas, - uma espe´cie de arqueologia artificial. Segundo (HENDERSON et al., 2007) o Racioc´ınio Computacional (Com- putational Thinking) e´ o nu´cleo de toda as disciplinas modernas nas a´reas de Cieˆncias, Tecnologia, Engenharia e Matema´tica e e´ intr´ınseco a todas as outras disciplinas, de A a Z. E´ utilizado na vida cotidiana desde ao fazer um bolo, trocar um pneu ou escovar nossos dentes. O ce´rebro humano esta´ preparado para pensar computacionalmente, como esta˜o os modernos dispo- sitivos de computac¸a˜o moderna. De certo modo, precisamos apenas despertar o racioc´ınio computacional para melhor aplica´-los quando e onde precisarmos. Racioc´ınio Computacional e´ um processo de resoluc¸a˜o de problemas que inclui (mas na˜o se limita) a`s seguintes caracter´ısticas (WING, 2006): Formulac¸a˜o de problemas de modo que permita fazer uso do computa- dor e outras ferramentas para ajudar a resolveˆ-los; item Representac¸a˜o de dados atrave´s da abstrac¸a˜o, tais como, modelagem e simulac¸a˜o Automatizac¸a˜o de soluc¸o˜es atrave´s do pensamento algor´ıtmico (uma sequeˆncia de instruc¸o˜es) Generalizac¸a˜o e transfereˆncia do processo de soluc¸a˜o de um problema para uma grande variedade de problemas. Assim, seja qual for o campo de atuac¸a˜o escolhido, sera´ inevita´vel estudar e entender um pouco de Computac¸a˜o ou Informa´tica. A informa´tica e´ a te´cnica propulsora do processo de transformac¸a˜o tecno- lo´gica e cultural que hoje muda, e continuara´ mudando a realidade subjetiva e social, mas ela e´ apenas a parte imersa do ı´ceberg. Isso se deve ao fato de que, enquanto o uso de palavras como software, hardware, CPU, micropro- cessador, CD-ROM e´ apresentado como meta a ser alcanc¸ada na corrida a` ”alfabetizac¸a˜o”, as caracter´ısticas e os efeitos da introduc¸a˜o das novas tecno- logias parecem estar cada vez mais reservados ao conhecimento de poucos. O processo em questa˜o requer uma visa˜o global, unita´ria, uma observac¸a˜o 7 que, ao contra´rio do que vem ocorrendo, seja fruto de diversas abordagens disciplinares e cient´ıficas. Ao longo da histo´ria o homem tem precisado constantemente tratar e trans- mitir informac¸a˜o, por isso nunca parou de criar ma´quinas e me´todos para processa´-la. Com esta finalidade, surge a informa´tica como uma cieˆncia en- carregada do estudo e desenvolvimento dessas ma´quinas e me´todos. A informa´tica nasceu da ide´ia de auxiliar o homem nos trabalhos rotineiros e repetitivos, em geral de ca´lculo e gerenciamento. O termo Informa´tica foi criado na Franc¸a em 1962, e prove´m da contrac¸a˜o das palavras: Information automatique (Informac¸a˜o automa´tica). Uma das definic¸o˜es mais comumente aceitas: Informa´tica e´ a cieˆncia que estuda o tratamento automa´tico e racional da informac¸a˜o. Entre as principais func¸o˜es da informa´tica destacam-se: desenvolvimento de novas ma´quinas; desenvolvimento de novos me´todos de trabalho; construc¸a˜o de aplicac¸o˜es automa´ticas; melhoria de me´todos e aplicac¸o˜es existentes 2.2 O Computador Do ponto de vista informa´tico, o elemento f´ısico utilizado para o tratamento de dados e a obtenc¸a˜o de informac¸a˜o e´ o computador. O computador e´ uma ma´quina composta de elementos f´ısicos do tipo eletroˆnico, capaz de realizar uma grande variedade de trabalhos com alta velocidade e precisa˜o, desde que receba as instruc¸o˜es adequadas. Ao conjunto de ordens dadas a um computador para a realizac¸a˜o de um determinado processo da´-se o nome de programa. Ao conjunto de um ou va´rios programas que realizam determinado trabalho completo da´-se o nome de aplicac¸a˜o informa´tica. A informac¸a˜o e´ o elemento a ser tratado e e´ defi- nida como tudo aquilo que permite adquirir qualquer tipo de conhecimento e portanto, existira´ informac¸a˜o sempre que se der a conhecer algo que ate´ enta˜o se desconhecia (FOROUZAN; MOSHARRAF, 2011). 8 2.2.1 Modelo de Turing A ideia de um dispositivo de computac¸a˜o universal foi descrita, pela primeira vez, por Alan Turing, em 1937, propondo que toda a computac¸a˜o poderia ser realizada por um tipo especial de ma´quina, enta˜o chamada Ma´quina de Turing. Embora Turing tenha apresentado sua descric¸a˜omatema´tica, estava mais interessado na definic¸a˜o filoso´fica de computac¸a˜o do que em construir a ma´quina propriamente dita. O modelo por ele descrito tinha como base as ac¸o˜es que as pessoas realizam quando envolvidas na computac¸a˜o. En- ta˜o, abstraindo essas ac¸o˜es, Turing criou um proto´tipo para uma ma´quina computacional que realmente transformou o mundo. Processadores de dados Antes de discutirmos o modelo de Turing, vamos definir um computador como um processador de dados. Utilizando essa definic¸a˜o, um computador age como uma caixa-preta que aceita a inserc¸a˜o de dados, processa-os e cria informac¸o˜es referentes aos resultados (Figura 2.1). Embora esse modelo possa definir a funcionalidade de um computador, na atualidade tornou-se muito gene´rico, porque, a partir dessa definic¸a˜o, uma calculadora de bolso tambe´m e´ um computador (o que realmente e´ verdade, em um sentido literal). Figura 2.1: Uma maquina de Computaca˜o de propo´sito u´nico Outro problema desse modelo e´ que ele na˜o especifica o tipo de proces- samento nem se e´ poss´ıvel mais de um tipo. Em outras palavras, na˜o esta´ claro quantos tipos ou conjuntos de operac¸o˜es podem ser realizados por uma ma´quina que tem como base esse modelo. E´ uma ma´quina de propo´sito espec´ıfico ou de propo´sito geral? Esse modelo poderia representar um com- putador de propo´sito espec´ıfico (ou processador) que foi projetado para fazer um trabalho simples, como o controle da temperatura de um edif´ıcio ou o uso de combust´ıvel em um carro. No entanto, computadores, do modo como o termo e´ utilizado hoje em dia, sa˜o ma´quinas de propo´sito geral. Eles podem desempenhar muitos tipos de tarefas diferentes, o que implica que precisa- mos transforma´-los no modelo de Turing para que seja poss´ıvel refletir os reais computadores da atualidade. 9 Processadores de dados programa´veis O modelo de Turing e´ melhor para um computador de propo´sito geral, porque acrescenta um elemento extra de computac¸a˜o espec´ıfica: o programa. Um programa e´ um conjunto de instruc¸o˜es que diz ao computador o que fazer com os dados. A Figura 2.2 mostra o modelo de Turing. Nesse modelo, os dados de sa´ıda dependem da combinac¸a˜o de dois fatores: os dados de entrada e o programa. Com os mesmos dados de entrada podemos gerar diferentes resultados, se modificarmos o programa. De modo similar, com o mesmo programa, podemos gerar diferentes resultados, se modificarmos os dados de entrada. Por fim, se esses dados e o programa permanecerem os mesmos, o resultado tambe´m sera´ o mesmo. Vamos observar esses treˆs casos. Figura 2.2: Um computador baseado no modelo de Turing Mesmo programa, diferentes dados de entrada A Figura 2.3 mostra o mesmo programa de ordenac¸a˜o com diferentes dados de entrada. Embora o programa seja o mesmo, os resultados sa˜o diferentes, porque diferentes dados de entrada sa˜o processados. Mesmos dados de entrada, programas diferentes A Figura 2.4 mostra os mesmos dados de entrada com diferentes programas. Cada programa faz que o computador realize diferentes operac¸o˜es sobre esses dados. O primeiro programa ordena os dados, o segundo os adiciona e o terceiro encontra o menor nu´mero. Naturalmente, espera-se o mesmo resultado a cada vez se os dados de en- trada e o programa forem os mesmos. Em outras palavras, quando o mesmo programa e´ executado com os mesmos dados de entrada, espera-se os mesmos resultados. A Maquina Universal de Turing A Ma´quina Universal de Turing pode realizar qualquer ca´lculo se o programa apropriado for fornecido; essa foi a primeira descric¸a˜o de um computador mo- derno. Pode-se provar que um computador muito poderoso e uma Ma´quina Universal de Turing podem fazer as mesmas coisas. Precisamos apenas forne- 10 Figura 2.3: Mesmo programa, diferentes dados de entrada - (FOROUZAN; MOSHARRAF, 2011) Figura 2.4: Mesmos dados de entrada, diferentes programas- (FOROUZAN; MOSHARRAF, 2011) cer os dados de entrada e o programa - a descric¸a˜o de como realizar o ca´lculo - para qualquer uma das ma´quinas. Na verdade, a Ma´quina Universal de Turing e´ capaz de calcular qualquer coisa que seja calcula´vel. 11 2.2.2 Modelo de Von Newman Os computadores constru´ıdos com base na Ma´quina Universal de Turing armazenam dados em sua memo´ria. Por volta de 1944-1945, John von Neu- mann propoˆs que, se o programa e os dados sa˜o logicamente os mesmos, os programas tambe´m devem ser armazenados na memo´ria de um computador. Quatro subsistemas Os computadores constru´ıdos com base no modelo de von Neumann dividem o hardware do computador em quatro subsistemas: memo´ria, unidade de lo´gica e aritme´tica, unidade de controle entrada/sa´ıda (Figura 2.5). Figura 2.5: O modelo de von Neumann - (FOROUZAN; MOSHARRAF, 2011) Memo´ria A memo´ria e´ a a´rea de armazenamento; e´ onde os programas e os dados sa˜o armazenados durante o processamento. Mais adiante discutiremos, neste cap´ıtulo, as razo˜es para o armazenamento de programas e dados. Unidade de lo´gica e aritme´tica A unidade de lo´gica e aritme´tica (ULA) e´ onde ocorrem as operac¸o˜es de lo´gica e de ca´lculos. Para um computador agir como um processador de dados, ele deve ser capaz de realizar operac¸o˜es aritme´ticas sobre dados (como adiciona´- los em uma lista de nu´meros) e tambe´m operac¸o˜es lo´gicas sobre dados. Unidade de controle A unidade de controle controla as operac¸o˜es da memo´ria, a ULA e o subsis- tema de entrada/sa´ıda. Entrada/Sa´ıda O subsistema de entrada aceita a entrada de dados e programas vindos de fora do computador, ao passo que o de sa´ıda envia os resultados do pro- cessamento para o mundo externo. A definic¸a˜o do sistema de entrada/sa´ıda e´ muito ampla: tambe´m inclui dispositivos de armazenamento secunda´rios, como discos ou fitas, que armazenam dados e programas para processamento. Quando um disco armazena dados que resultam de processamento, e´ consi- derado um dispositivo de sa´ıda; quando os dados sa˜o lidos a partir do disco, 12 ele e´ considerado um dispositivo de entrada. O conceito de programa armazenado O modelo de von Neumann determina que o programa deve ser armaze- nado na memo´ria. Isso e´ totalmente diferente da arquitetura dos primeiros computadores, nos quais somente os dados eram armazenados na memo´ria: os programas para as respectivas tarefas eram implementados pela manipu- lac¸a˜o de um conjunto de comutadores ou modificac¸a˜o do sistema de fios. A memo´ria dos computadores modernos mante´m um programa e seus dados correspondentes. Isso implica que os dados e programas devem ter o mesmo formato, uma vez que sa˜o armazenados na memo´ria. Na verdade, sa˜o arma- zenados como padro˜es bina´rios na memo´ria - uma sequeˆncia de 0s e 1s. Execuc¸a˜o sequencial de instruc¸o˜es Um programa no modelo de von Neumann e´ composto de um nu´mero finito de instruc¸o˜es. Nele, a unidade de controle busca uma instruc¸a˜o da memo´ria, decodifica-a e, enta˜o, a executa. Em outras palavras, as instruc¸o˜es sa˜o executadas uma depois da outra. Naturalmente, uma instruc¸a˜o pode requerer que a unidade de controle salte para alguma instruc¸a˜o anterior ou posterior, o que na˜o significa que as instruc¸o˜es na˜o sejam executadas sequen- cialmente. Esse tipo de execuc¸a˜o de um programa foi a exigeˆncia inicial de um computador com base no modelo de von Neumann. Os computadores da atualidade executam programas na ordem que for mais eficiente. 2.2.3 Histo´rico A Informa´tica e´ uma cieˆncia que passou a ser tratada como tal ha´ poucos anos, sendo que a ela esta´ associada uma se´rie de fatos e descobertas anterio- res, que serviram para que atualmente seja uma das cieˆncias a` qual o homem esta´ dedicando maior atenc¸a˜o e atribuindo cada vez mais importaˆncia. Nesta sec¸a˜o, analisa-se brevemente a histo´ria da computac¸a˜o e dos computadores, dividida em treˆsper´ıodos. Maquinas mecaˆnicas (antes de 1930) Durante esse per´ıodo, foram inventadas diversas ma´quinas de computac¸a˜o que teˆm pouca semelhanc¸a com o moderno conceito de um computador. No se´culo XVII, Blaise Pascal, um matema´tico e filo´sofo franceˆs, in- ventou Pascaline, uma calculadora mecaˆnica para fazer operac¸o˜es de adic¸a˜o e subtrac¸a˜o. No se´culo XX, quando Niklaus Wirth inventou uma linguagem de programac¸a˜o estruturada, deu-lhe o nome Pascal, em homenagem ao inventor da primeira calculadora mecaˆnica. 13 No final do se´culo XVII, o matema´tico alema˜o Gottfried Leibnitz inven- tou uma calculadora mecaˆnica mais sofisticada, que podia fazer multi- plicac¸o˜es e diviso˜es, ale´m de adic¸o˜es e subtrac¸o˜es. Essa calculadora foi chamada Roda de Leibnitz. A primeira ma´quina que utilizou a ideia de armazenamento e progra- mac¸a˜o foi o tear de Jacquard, inventado por Joseph-Marie Jacquard, no in´ıcio do se´culo XIX. O tear utilizava carto˜es perfurados (como um programa armazenado) para controlar o aumento dos fios da urdidura na fabricac¸a˜o de tecidos. Em 1823, Charles Babbage inventou a Ma´quina Diferencial, que po- dia fazer mais do que simples operac¸o˜es aritme´ticas - tambe´m resolvia equac¸o˜es polinomiais. Posteriormente, ele inventou a chamada Ma´- quina Anal´ıtica, que, ate´ certo ponto, compara-se a` ide´ia dos compu- tadores modernos. Ela tinha quatro componentes: uma engrenagem (correspondente a uma moderna ULA), um local de armazenamento (memo´ria), um operador (unidade de controle) e sa´ıda (entrada/sa´ıda). Em 1890, Herman Hollerith, trabalhando no Ministe´rio de Recense- amento dos Estados Unidos, projetou e construiu uma ma´quina pro- grama´vel que podia, automaticamente, ler, registrar e ordenar dados armazenados em carto˜es perfurados. O nascimento dos computado- res eletronicos (1930 - 1950) Entre 1930 e 1950, va´rios computadores foram inventados por cientistas, que podem ser considerados os pio- neiros da indu´stria dos computadores. Os primeiros computadores ele- troˆnicos Os primeiros computadores desse per´ıodo na˜o armazenavam o programa na memo´ria - todos eram programados externamente. Cinco computadores tornaram-se proeminentes durante esses anos: O primeiro computador de propo´sito espec´ıfico, que codificava as in- formac¸o˜es eletricamente, foi inventado por John V. Atanasoff e seu assistente, Clifford Berry, em 1939. Chamado ABC (Atanasoff Berry Computer), foi projetado especificamente para resolver um sistema de equac¸o˜es lineares. Ao mesmo tempo, um matema´tico alema˜o chamado Konrad Zuse pro- jetou uma ma´quina de propo´sito geral, chamada Z1. Na de´cada de 1930, a Marinha dos Estados Unidos e a IBM patro- cinaram um projeto na Harvard University, sob a direc¸a˜o de Howard Aiken, para construir um computador chamado Mark I, que utilizava componentes ele´tricos e mecaˆnicos. 14 Na Inglaterra, Alan Turing inventou um computador chamado Colos- sus, que foi projetado para decifrar o co´digo conhecido como German Enigma (Enigma Alema˜o). O primeiro computador de propo´sito geral, totalmente eletroˆnico, foi fabricado por John Mauchly e J. Presper Eckert, chamado ENIAC (Electronic Numerical Integrator and Calculator, ou calculadora e in- tegradora nume´rica eletroˆnica). Ele foi conclu´ıdo em 1946, utilizava 18 mil tubos de va´cuo, media 30 metros de comprimento por 3 metros de altura e pesava 30 toneladas. Computadores baseados no modelo de von Neumann Os cinco computadores precedentes utilizavam memo´ria somente para ar- mazenamento de dados e eram programados externamente, utilizando fios ou comutadores. John von Neumann propoˆs que o programa e os dados deveriam ser armazenados na memo´ria. Dessa maneira, todas as vezes que utilizamos um computador para realizar uma nova tarefa, precisamos somente modifi- car o programa, em vez de religar a ma´quina ou ligar e desligar centenas de comutadores. O primeiro computador com base nas ide´ias de von Neumann, chamado EDVAC, foi fabricado em 1950, na University of Pennsylvania. Ao mesmo tempo, um computador similar, EDSAC, foi constru´ıdo por Maurice Wilkes, na Cambridge University, na Inglaterra. Gerac¸o˜es de computadores (1950 - e´poca atual) Os computadores constru´ıdos depois de 1950 seguiram, aproximadamente, o modelo de Von Neumann. Apesar de se tornarem mais ra´pidos, meno- res e mais baratos, o princ´ıpio era quase o mesmo. Historiadores dividem esse per´ıodo em gerac¸o˜es, sendo que cada uma delas testemunhou alguma importante transformac¸a˜o em hardware ou software (mas na˜o no modelo). Primeira gerac¸a˜o - A primeira gerac¸a˜o (aproximadamente de 1950 a 1959) foi caracterizada pelo surgimento de computadores comerciais. Durante essa e´poca, eles eram utilizados somente por profissionais. Ficavam trancados em salas com acesso limitado somente ao operador ou especialista. Tais com- putadores eram muito volumosos e utilizavam tubos de va´cuo como chaves eletroˆnicas. Naquele tempo, eram acess´ıveis somente a`s grandes organizac¸o˜es. Segunda gerac¸a˜o - Os computadores da segunda gerac¸a˜o (aproximada- mente de 1959 a 1965) utilizavam transistores, em vez de tubos de va´cuo. Isso reduziu seu tamanho, assim como seu custo, e os tornou mais acess´ıveis para as companhias de pequeno e me´dio portes. As duas linguagens de pro- gramac¸a˜o de alto n´ıvel, Fortran e Cobol (veja o Cap´ıtulo 9), foram inventadas 15 e tornaram a programac¸a˜o mais fa´cil; separavam a tarefa de programac¸a˜o da de operac¸a˜o dos computadores. Um engenheiro civil, por exemplo, pode- ria escrever um programa em Fortran para resolver um problema, sem se envolver com os detalhes eletroˆnicos da arquitetura do computador. Terceira gerac¸a˜o - A invenc¸a˜o dos circuitos integrados (transistores, fia- c¸a˜o e outros componentes em um u´nico chip) reduziu ainda mais o custo e o tamanho dos computadores. Os minicomputadores, enta˜o, surgiram no mer- cado. Programas ”enlatados”,1 popularmente conhecidos como pacotes de software, tornaram-se dispon´ıveis. Uma pequena corporac¸a˜o podia comprar um pacote, por exemplo, para contabilidade, em vez de precisar escrever seu pro´prio programa. Surgiu, enta˜o, uma nova indu´stria, a de software. Esta gerac¸a˜o durou, aproximadamente, de 1965 a 1975. Quarta gerac¸a˜o - A quarta gerac¸a˜o (aproximadamente de 1975 a 1985) viu o surgimento dos microcomputadores. A primeira calculadora desktop, o Altair 8800, tornou-se dispon´ıvel em 1975. Avanc¸os na indu´stria eletroˆnica permitiram que completos subsistemas de computadores se adequassem a uma u´nica placa de circuito. Esta gerac¸a˜o tambe´m viu o aparecimento das redes de computadores. Quinta gerac¸a˜o - Esta e´ a atual, comec¸ou em 1985 e ainda na˜o terminou. Ela tem testemunhado o surgimento dos computadores laptop e palmtop, o desenvolvimento de aperfeic¸oamentos nos meios de armazenamento secunda´- rio (CD-ROM, DVD e assim por diante), o uso da multimı´dia e o fenoˆmeno da realidade virtual. 2.3 Sistemas Computacionais e Seus Componentes Um sistema computacional e´ um conjunto de componentes que realizam pro- cessamentos automa´ticos sobre dados de entrada, e fornecem uma sa´ıda con- tendo esses dados transformados. Existem va´rios tipos de sistemas computa- cionais, os mais comuns sa˜o os computadores pessoais dentre eles: computa- dores de mesa (Desktops - Fig. 2.6 ) e os computadores porta´teis (Laptops- Fig. 2.7 e Tablet PC - Fig. 2.8 ). Outro tipo de sistema computacional que tem se tornado cada dia mais comum sa˜o os sistemas computacionais embarcados. Esses conteˆm um sis- tema computacional embutido (HANSMANN et al., 2003). Diferentemente dos computadores pessoais, que possuem propo´sito geral, os sistemas embarca- dos realizam tarefas espec´ıficas como, por exemplo: falar ao telefone, emitir rotas, autenticar usua´rios,rastrear objetos, etc. Exemplos: Celulares (Fig. 16 2.9), GPS (Global Position System - Fig. 2.10), Smart Cards (Fig. 2.11), Smart Labels (Fig. 2.12). Figura 2.6: Computador Pessoal - Desktop Figura 2.7: Computador Pessoal - Laptop Figura 2.8: Computador Pessoal - Tablet O conjunto de componentes dos sistemas computacionais pode ser divi- dido em duas grandes categorias: Hardware; e Software. A seguir uma descric¸a˜o mais detalhada de cada uma dessas categorias. 2.3.1 Hardware Hardware sa˜o os componentes mecaˆnicos e eletromecaˆnicos dos sistemas com- putacionais, que podem ser classificados em 4 subcategorias: 17 Figura 2.9: Sistema Computacional Embutido - Celular Figura 2.10: Sistema Computacional Embutido - GPS Dispositivos de entrada; Dispositivos de sa´ıda; Unidade de processamento; e Dispositivos de armazenamento. Os dispositivos de entrada sa˜o os hardwares responsa´veis por capturar os dados de entrada do sistema. Exemplos: teclado, mouse, caˆmera de v´ıdeo, tela de toque. Os dispositivos de sa´ıda sa˜o os hardwares responsa´veis por apresentar os dados transformados. Exemplos: monitores, impressoras, dispositivos de emissa˜o de voz, etc. Figura 2.11: Sistema Computaciolna Embutido - Smart Card 18 Figura 2.12: Sistema Computaciolna Embutido - Smart Label A unidade central de processamento e´ o hardware responsa´vel por pro- cessar os dados de entrada e transforma´-los nos dados de sa´ıda. Exemplos: unidade central de processamento (CPU) ou processadores dos computadores pessoais (Fig. 2.13), processadores dos celulares e microships do smart cards (Fig. 2.14), etc. Os dispositivos de armazenamento sa˜o os responsa´veis por armazenar dados de entrada e/ou sa´ıda. Existem 2 tipos principais de dispositivos de armazenamento: armazenamento principal e armazenamento secunda´rio. Os dispositivos de armazenamento principal fornecem aos dispositivos de processamento as informac¸o˜es necessa´rias para a transformac¸a˜o dos dados de entrada em sa´ıda. Nessa categoria encontra-se, por exemplo, a memo´ria RAM (Random Access Memory- Fig. 2.15). A memo´ria RAM e´ vola´til, pois seus dados sa˜o perdidos depois que o sistema e´ desligado. Os dispositivos de armazenamento secunda´rio guardam dados que podem ser recuperados apo´s o desligamento do sistema computacional. Exemplos desses dispositivos: disco r´ıgido (Hard Disk - HD - Fig. 2.16),disco r´ıgido externo (HD externo - Fig. 2.17), pen drive (Fig. 2.18), carta˜o de memo´ria dos celulares (Fig. 2.19). No caso dos computadores de mesa ou porta´teis, todos os 4 componentes sa˜o integrados atrave´s de um hardware chamado de placa ma˜e (Fig. 2.20). Os dispositivos de armazenamento principal e de processamento sa˜o ge- ralmente embutidos na placa ma˜e, ja´ os dispositivos de entrada, sa´ıda e armazenamento secunda´rio sa˜o conectados na placa ma˜e atrave´s de cabos. A placa ma˜e e´, em geral, localizada dentro do gabinete dos computadores de mesa (Fig. 2.21) ou abaixo do teclado nos Laptops (Fig. 2.22). Ja´ para os sistemas embarcados a integrac¸a˜o entre os componentes variam de acordo com o sistema computacional. 19 Figura 2.13: Unidade Central de Processamento ou CPU dos computadores pessoais Figura 2.14: Microship dos Smart Cardl 2.3.2 Software Softwares sa˜o programas de computadores que permitem explorar os recursos dos hardwares, executar determinadas tarefas e resolver problemas de forma automa´tica. E´ atrave´s do software que interagimos com a ma´quina e tornamos o sis- tema computacional operacional. Os treˆs principais tipos de softwares sa˜o: softwares de sistema, softwares de aplicac¸a˜o e softwares de servic¸o. Os softwares de sistema permite interagir com os componentes de hard- ware do computador, exemplos desses softwares: BIOS, Drivers, Sistema Operacional. O mais importante software de sistema e´ o Sistema Operacional (SO). O SO e´ responsa´vel por gerenciar os recursos computacionais e fazer a co- Figura 2.15: Dispositivo de armazenamento Principal - Memo´ria RAM 20 Figura 2.16: Dispositivo de armazenamento Secunda´rio - HD ou Disco R´ıgido Figura 2.17: Dispositivo de armazenamento Secunda´rio - HD Externo municac¸a˜o (ou interface) entre os componentes de hardware e os aplicativos. Sem um sistema operacional, na˜o e´ poss´ıvel utilizar os softwares de aplica- c¸a˜o instalados em um computador. No mercado, existem va´rios sistemas operacionais, a Tabela2.1 mostra os mais comuns. Os softwares de aplicac¸a˜o ou aplicativos sa˜o programas criados para resol- ver tarefas espec´ıficas como: acessar a internet, enviar e receber mensagens, navegar pelo computador, editar um texto, desenhar uma imagem, etc. A Tabela2.2 mostra exemplos de alguns aplicativos e suas funcionalidades. Existem tambe´m os aplicativos embarcados, que sa˜o aqueles destinados a funcionar dentro de um sistema computacional embarcado (celulares, gps, eletrodome´sticos, etc). Exemplos desses softwares: aplicativo para envio de Figura 2.18: Dispositivo de armazenamento Secunda´rio - Pen Drive 21 Figura 2.19: Dispositivo de armazenamento Secunda´rio - Carta˜o de Celuar Figura 2.20: Dispositivo de armazenamento Secunda´rio - Placa Ma˜e mensagens de um celular para outro, aplicativo para emitir rotas em um GPS, aplicativos de autenticac¸a˜o dos smart cards. Os softwares de servic¸o, tambe´m chamados de aplicativos web, sa˜o aqueles que na˜o precisam ser instalados em um sistema computacional e sim utiliza- dos diretamente na Internet atrave´s de um navegador. Exemplos: Google, Google Maps, Tidia. Figura 2.21: Gabinete dos computadores de mesa onde e´ localizado Placa ma˜e 22 Figura 2.22: Localizac¸a˜o da placa ma˜e em um computador porta´til Sistema Operacional Sistema Computacional Windows Computadores de mesa e porta´teis Linux Computadores de mesa e porta´teis Mac OS Computadores de mesa e porta´teis Windows Tablet Edition Tablets Google Andorid Tablets, celulares iOS Tablets, celulares Windows Embedded Sistemas embarcados (GPS, eletrodome´sticos, celulares, etc) Tabela 2.1: Exemplos de Sistemas Operacionais 2.3.3 Exemplo de Funcionamento de um Sistema Computacional e Seus Componentes Essa sec¸a˜o apresenta um exemplo do funcionamento de um sistema compu- tacional inserido em um contexto real. O objetivo principal do exemplo e´ mostrar a integrac¸a˜o dos componentes de hardware e de software. Para esse exemplo considere: O sistema computacional como sendo um computador pessoal. O contexto como sendo o uso de um software aplicativo para editar textos (editor de texto). Normalmente, para utilizar um editor de texto em um computador pessoal e´ necessa´rio executar os 4 passos descritos abaixo. Passo 1 - Ligar o Computador Ao ligar o computador, o sistema operacional e´ carregado na memo´ria RAM (memo´ria principal) passando assim a ser poss´ıvel interagir com outros componentes computacionais. Passo 2 - Abrir o Editor de Texto O editor de texto e´ um software de aplicac¸a˜o que ao ser aberto (Fig. 2.23) tambe´m passa a ser armazenado na memo´ria RAM. Nesse momento, 23 Aplicativo Funcionalidade Exemplos Navegadores Acessar sites na Internet Internet Explorer, FireFox, Google Crome, Opera Editores de Texto Editar documentos Br Office Writer, Word Pad, Bloco de Notas, Microsoft Word Planilhas eletroˆnicas Realizar ca´lculos, plotar gra´ficos, Br Office Calc, analisar dados Microsoft Excel Processadores de imagens Criar e editar imagens Microsoft Paint, Adob Photoshop Tabela 2.2: Exemplos de Aplicativos suas informac¸o˜es podem ser compartilhadas com os outros componentes. A escrita de um texto nada mais e´ do que a entrada de dados em um sistema computacional. Neste caso, essa entrada e´ feita atrave´s do teclado (disposi- tivo deentrada). Ja´ a sa´ıda de dados e´ realizada atrave´s de um monitor de v´ıdeo (dispositivo de sa´ıda). A comunicac¸a˜o entre os dispositivos de entrada e dispositivo de sa´ıda e´ realizada pelo sistema operacional (neste exemplo o Windows) e pela placa ma˜e no caso dos computadores pessoais. Passo 3 - Processar texto O processamento do texto e´ realizado atrave´s das func¸o˜es de formatac¸a˜o do editor de texto. Neste exemplo, essas func¸o˜es sa˜o: aumentar o tamanho da fonte para 18 e mudar cor da fonte para vermelho (Fig. 2.24). Esse processamento e´ realizado pela unidade de processamento (CPU). Passo 4 - Salvar o texto Ate´ o passo 3, tudo que foi realizado com o editor de texto esta´ arma- zenado somente na memo´ria RAM. Essa memo´ria e´ vola´til, ou seja, o texto formatado sera´ perdido caso o computador seja desligado. Para que o sis- tema seja desligado sem existir perda de informac¸o˜es, e´ necessa´rio armazenar o texto na memo´ria secunda´ria (neste exemplo HD) . Para isso, basta execu- tar o procedimento de salvar o texto (Fig. 2.25). 2.4 Organzac¸a˜o da Cieˆncia da Computac¸a˜o De acordo com o curr´ıculo de refereˆncia da ACM (Association for Computer Machinery), a computac¸a˜o pode ser dividida em 14 a´reas: 1-Estruturas Dis- cretas (ED), 2-Fundamentos da programac¸a˜o (FP), 3-Algoritmos e Complexi- dade (AC), 4-Organizac¸a˜o e Arquitetura dos Computadores (OA), 5-Sistemas Operacionais (SO), 6-Computac¸a˜o Centrada em Redes (CR), 7-Linguagem de Programac¸a˜o (LP), 8-Interface Humano Computador (IH), 9-Computac¸a˜o Gra´fica e Visual (GV), 10- Sistemas Inteligentes (SI), 11-Gesta˜o e Admi- 24 Figura 2.23: Abrir Editor Figura 2.24: Processar Texto nistrac¸a˜o da Informac¸a˜o (GI), 12-Questo˜es Sociais e Profissionais (SP), 13- Engenharia de Software (ES) e 14-Cieˆncia Computacional (CC). Neste livro, essas 14 a´reas foram agrupadas em dois grupos: Grupo das a´reas de Softwares e Grupo das a´reas de Hardware. A Fig. 2.26 demonstra claramente essa divisa˜o. Observa-se que pela Fig. 2.26, que a cieˆncia da computac¸a˜o enfatiza as a´reas pertencentes ao grupo de software. Esse grupo preocupa-se basicamente com a produc¸a˜o de diferentes tipos de softwares como, por exemplo: sistemas operacionais, aplicativos convencionais, aplicativos para sistemas embarcados e aplicac¸o˜es web. Veja Tabela2.2 para recordar exemplos desses aplicativos. Por possuir muitas a´reas, o grupo de software foi agrupado nesse docu- mento em 6 suba´reas: Computac¸a˜o Cient´ıfica, Interface Gra´fica, Desenvol- 25 Figura 2.25: Salvar Texto Figura 2.26: Divisa˜o das a´reas em Cieˆncia da Computac¸a˜o vimento de Sistemas, Teoria da Computac¸a˜o, Sistemas Inteligentes, Gesta˜o e Administrac¸a˜o da Informac¸a˜o e Questo˜es Sociais e Profissionais . A Fig. 2.27 mostra a subdivisa˜o do grupo de a´reas de softwares. 2.4.1 A´reas de Software Computac¸a˜o Cient´ıfica A a´rea de computac¸a˜o cient´ıfica reu´ne conceitos fundamentais da cieˆncia da computac¸a˜o e possui forte conexa˜o com a matema´tica discreta. Alguns conceitos dessa a´rea de conhecimento sa˜o: func¸o˜es, teoria dos conjuntos, lo´gica, teoria dos grafos e probabilidade discreta, ana´lise de algoritmos, crip- tografia, algoritmos paralelos, modelagem e simulac¸a˜o e pesquisa operacional. Exemplo de aplicac¸o˜es: 26 Figura 2.27: Divisa˜o das a´reas em Cieˆncia da Computac¸a˜o Simulac¸a˜o de reproduc¸a˜o de uma cultura de bacte´ria baseado no jogo da vida: http://code.google.com/p/lazbacterias/ Simulador neuromuscular: http://remoto.leb.usp.br/remoto/index.html Desenvolvimento de Sistemas O desenvolvimento de sistemas reu´ne conceitos relacionados a algoritmos, implementac¸a˜o de sistemas computacionais e processos de desenvolvimento. Alguns conceitos dessa a´rea de conhecimento sa˜o: algoritmos, estruturas de dados, recursividade, programac¸a˜o orientada a objetos, fundamentos e segu- ranc¸a da informac¸a˜o, paradigmas de programac¸a˜o e engenharia de software. Exemplo de aplicac¸o˜es: JMOL - Qu´ımica (estruturas moleculares): http://jmol.sourceforge.net/ Aplicac¸o˜es de Cognic¸a˜o (neuroimagens, neurofisiologia) Aplicac¸o˜es em F´ısica (dinaˆmica de flu´ıdos) Aplicac¸o˜es para celulares Aplicac¸o˜es para GPS Aplicac¸o˜es para TV Digital Aplicac¸o˜es Internet Gesta˜o e Administrac¸a˜o da Informac¸a˜o Essa a´rea fornece o entendimento de como armazenar, organizar e buscar os dados em sistemas computacionais. Alguns conceitos abordados nessa a´rea 27 de conhecimento: sistema de banco de dados, modelagem de dados, minera- c¸a˜o de dados, hipermı´dia, arquitetura da informac¸a˜o, bibliotecas digitais. Exemplo de aplicac¸o˜es: Um supermercado pode analisar os dados de consumo de seus clientes para identificar quais novos produtos devem oferecer a cada um deles. Interface Gra´fica A a´rea de Interface gra´fica reu´ne conceitos para o desenvolvimento de sistemas gra´ficos, realidade virtual, processamento de imagens, design, avali- ac¸a˜o de usabilidade e acessibilidade. Alguns conceitos abordados nessa a´rea de conhecimento: interface-humano computador, processamento de imagens, animac¸a˜o por computador, realidade virtual, computac¸a˜o gra´fica. Exemplos de aplicac¸o˜es: Software para leituras em voz de sites web: http://webanywhere.cs.washington.edu/ Visualizac¸a˜o das arte´rias corona´rias epica´rdicas em contraste de micro- bolhas 3D imagens ecogra´ficas para auxiliar no diagno´stico. Sistemas Inteligentes Essa a´rea apresenta te´cnicas para desenvolver sistemas que reproduzem a capacidade racional do ser humano para resolver problemas. Alguns concei- tos abordados nessa a´rea de conhecimento: representac¸a˜o do conhecimento, aprendizagem de ma´quina, robo´tica, agentes Inteligentes. Exemplos de aplicac¸o˜es: Software que joga xadrez Futebol de roboˆs Busca inteligente na Web (Google) Questo˜es Sociais e Profissionais (SP) Essa a´rea fornece conhecimento de como um profissional de cieˆncia da computac¸a˜o devera´ comportar-se eticamente no mercado, aborda questo˜es relacionadas com crimes virtuais e questo˜es sociais. Alguns conceitos abor- dados nessa a´rea de conhecimento: histo´rica da computac¸a˜o, e´tica, crimina- lidade na computac¸a˜o. Exemplos de aplicac¸o˜es: Compuac¸a˜o Verde Direito de propriedade de softwares e materiais dispon´ıveis na Internet Computac¸a˜o Forense 28 2.4.2 A´reas de Hardware As a´reas pertencentes ao grupo de hardware preocupam-se com o entendi- mento dos componentes dos sistemas computacionais, suas caracter´ısticas, desempenho e interac¸o˜es. Tambe´m possui eˆnfase na infraestrutura, conexa˜o e seguranc¸a de redes (Internet, redes sem fio, conexo˜es, etc). Alguns concei- tos abordados nessa a´rea de conhecimento: lo´gica e representac¸a˜o dos dados, arquitetura e organizac¸a˜o de computadores, multiprocessamento, gerencia- mento de memo´ria, sistemas de arquivos, toleraˆncia a falhas, forense digital, redes de comunicac¸a˜o, seguranc¸a de redes, administrac¸a˜o de redes, computa- c¸a˜o mo´vel e sem fio, sistemas paralelos e distribu´ıdos, compreender o modelo de programa armazenado de von Neumann e sua relac¸a˜o com as arquitetura e organizac¸a˜o de computadores de uso geral. Exemplos de aplicac¸o˜es: Suporte de equipamentos Redes de computadores (sem fio, internet, etc) 2.5 Considerac¸o˜es Finais A sec¸a˜o 2 desse cap´ıtulo relatou os fundamentos da computac¸a˜o como Modelo de Turing, Von Newman e o Histo´rico da Computac¸a˜o. Esses fundamentos sa˜o antigos, mas apesar da evoluc¸a˜o tecnolo´gica, ainda sa˜o utilizados como referencial teo´rico nos dias de hoje. Na sec¸a˜o 3 foram apresentados diversos sistemas computacionais como desktops, laptops, tablets e alguns dispositivos embarcados (celular, smart label).Tambe´m foi descrito sobre os componentes de hardwares e softwares de um sistema computacional e a interac¸a˜o entre eles. A sec¸a˜o 4 apresentou a divisa˜o da cieˆncia da computac¸a˜o em 14 a´reas do conhecimento. Essa sec¸a˜o demostrou, atrave´s de exemplos, o potencial de aplicac¸a˜o da a´rea da Cieˆncia da Computac¸a˜o em outras a´reas do conheci- mento. Em suma, este cap´ıtulo demonstra que a computac¸a˜o e´ uma cieˆncia que possui fortes fundamentos, esta´ evoluindo rapidamente e ficando cada dia mais ub´ıqua. No pro´ximo cap´ıtulo sera´ estudado representac¸a˜o gra´fica de func¸o˜es. Esse assunto pode ser considerado como uma abordagem da computac¸a˜o cient´ıfica mostrada na sec¸a˜o 4 do Cap´ıtulo 1. O Cap´ıtulo 2 tambe´m mostrara´ como aplicar os conceitos de gra´ficos e func¸o˜es utilizando um software pra desktop chamado de Scilab. 29 2.6 Conjunto de Pra´ticas 1. Descreva um exemplo de funcionamento de um sistema computacional e seus componentes considerando como sistema computacional um celular e como processamento o envio de mensagens de texto (SMS). Utilize o to´pico 3.3 como modelo. 2. Descreva mais 2 outros exemplos de funcionamento de um sistema computacional e seus componentes. Procure ser original e criativo. 3. Assista o v´ıdeo sobre a histo´ria dos computadores e responda a questa˜o: Como voceˆ imagina o futuro dos sistemas computacionais? Vı´deo dispon´ıvel em: http://www.youtube.com/watch?v=F3qWg1JBPZg 4. O Google sites e´ um exemplo de software de servic¸o. Utilize esse softwares para criar uma pa´gina Web com seu curr´ıculo. Siga o tutorial dispon´ıvel no link: http://www.youtube.com/watch?v=B4WmVeBxGqM 5- Responda: o que e´ computac¸a˜o ub´ıqua? 6- Procure na Internet exemplos de sistemas computacionais que sa˜o utili- zados nas seguintes a´reas do conhecimento: Base Experimental das Cieˆncias Naturais, Bases Epistemolo´gicas da Cieˆncia Moderna, Bases Matema´ticas, Estrutura da Mate´ria e Origem da Vida e Diversidade dos Seres Vivos. E´ necessa´rio pelo menos um exemplo de cada a´rea. 7- Classifique os sistemas encontrados no exerc´ıcio 6 em uma das 6 suba´- reas de software estudadas na sec¸a˜o 4 deste cap´ıtulo. 30 3 Representac¸a˜o Gra´fica de Func¸o˜es Aline Neves Irineu Antunes Junior Marcio Eisencraft —– Universidade Federal do ABC Neste cap´ıtulo, discutimos questo˜es envolvidas na representac¸a˜o gra´fica de func¸o˜es e mostramos alguns casos onde tais gra´ficos podem ser u´teis no aux´ılio do entendimento de um problema. E´ apresentada uma ferramenta computacional que permite realizar ca´lculos cient´ıficos e gra´ficos de maneira ra´pida e pra´tica. 3.1 Introduc¸a˜o A Cieˆncia e a Engenharia sempre buscam modelar fenoˆmenos naturais e f´ısicos por func¸o˜es matema´ticas que possam, pelo menos de maneira simplifi- cada, reproduzir os comportamentos observados na Natureza. Neste sentido, podemos citar como exemplos leis que regem o comportamento de gases, escoamento de fluidos, propagac¸a˜o de ondas, movimento de corpos, cresci- mento de populac¸o˜es, ale´m de muitos outros. Muitas vezes, dado o modelo matema´tico de um sistema, encontramos a necessidade de visualizar o com- portamento do mesmo, ou enta˜o precisamos encontrar uma soluc¸a˜o mas na˜o sabemos ao certo por onde comec¸ar a procura´-la. Nestes casos, gra´ficos das func¸o˜es em questa˜o podem auxiliar no entendimento e podem, inclusive, for- necer uma primeira aproximac¸a˜o para a soluc¸a˜o procurada. Suponha, por exemplo, que deseja-se prever a taxa de crescimento de uma faixa so´cio econoˆmica da populac¸a˜o num per´ıodo de anos na˜o abordado numa pesquisa. Seria necessa´rio fazer um modelo matema´tico em cima do gra´fico obtido com os dados dispon´ıveis para se conseguir a informac¸a˜o desejada atrave´s de uma extrapolac¸a˜o. A figura 3.1 ilustra tal processo. Exemplo 1 Para iniciar este estudo, considere um caso bastante simples de um movimento uniformemente variado definido pela equac¸a˜o: s = s0 + v0t + at2 2 (3.1) onde s e´ a posic¸a˜o atual do corpo em movimento, s0 e´ a posic¸a˜o na qual ele comec¸ou o movimento, v0 e´ a sua velocidade inicial, a e´ sua acelerac¸a˜o e t 31 Figura 3.1: Exemplo de extrapolac¸a˜o: os pontos cheios sa˜o os dados da pesquisa realizada entre os anos de 2000 e 2009; a curva cheia e´ uma func¸a˜o matema´tica que descreve os dados obtidos nestes anos; a curva tracejada e´ a func¸a˜o extrapolada em datas futuras; os pontos vazios sa˜o os dados futuros (desconhecidos). e´ o tempo decorrido desde o in´ıcio do movimento. Como exemplo, vamos supor s0 = 0, v0 = 20 m/s e a = −5 m/s2, ou seja, o corpo esta´ freando. Se quisermos visualizar como a posic¸a˜o s ira´ variar em func¸a˜o do tempo t, podemos fazer um gra´fico relacionando estas duas grandezas. A figura 3.2 ilustra o movimento em questa˜o. Observando o gra´fico, podemos facilmente obter algumas caracter´ısticas do movimento: como o corpo esta´ freando, a posic¸a˜o ma´xima que ele ira´ atingir e´ s = 40 m e ele levara´ 4 segundos para atingi-la, como mostrado pelo ponto (b) na figura 3.2. Neste ponto a sua velocidade sera´ nula. A partir da´ı, a acelerac¸a˜o negativa pode ser vista como uma acelerac¸a˜o em sentido contra´rio e, portanto, o corpo comec¸ara´ a voltar e atingira´ a posic¸a˜o s = 0 novamente em t = 8 s (ilustrado pelo ponto (c) na figura). Os dados observados graficamente podem ser facilmente conferidos atrave´s da substituic¸a˜o dos valores citados na equac¸a˜o (3.1). Em particular, os instantes em que s = 0 sa˜o facilmente encontrados calculando-se as ra´ızes da equac¸a˜o. Em alguns casos, no entanto, a resoluc¸a˜o anal´ıtica do problema pode ser bastante complicada, sena˜o imposs´ıvel. Exemplo 2 Considere, por exemplo, a obtenc¸a˜o das ra´ızes, ou seja, dos pontos nos quais a seguinte func¸a˜o se anula: f (x) = sen(x) + cos(1 + x2)− 1 (3.2) 32 0 1 2 3 4 5 6 7 8 0 5 10 15 20 25 30 35 40 Tempo (s) s (m ) (a) (b) (c) Figura 3.2: Espac¸o em func¸a˜o do tempo para um movimento uniformemente variado. Em (a) e (c) temos os pontos onde o corpo esta´ em s = 0, enquanto que (b) ilustra o valor ma´ximo de s Neste caso, o gra´fico da func¸a˜o pode ser u´til para auxiliar a soluc¸a˜o do pro- blema. Observando o gra´fico de f (x) para x ∈ [0,4], ilustrado na figura 3.3, veˆ-se que f (x) sera´ nula para dois valores de x neste intervalo: x1 e x2. Alte- rando a escala do gra´fico (figura 3.4), vemos que a primeira raiz se encontra em x1 ≈ 1.9 e a segunda em x2 ≈ 2.5. 0 0.5 1 1.5 2 2.5 3 3.5 4 −3 −2.5 −2 −1.5 −1 −0.5 0 0.5 1 x f(x ) x2 x1 Figura 3.3: Gra´fico de f(x) dada por (3.2) 1.8 2 2.2 2.4 2.6 −0.4 −0.2 0 0.2 0.4 0.6 0.8 x f(x ) x1 x2 Figura 3.4: Regia˜o em torno das ra´ı- zes de (3.2) Por outro lado, nem sempre esta abordagem e´ poss´ıvel. Te´cnicas mais 33 sofisticadas de busca de ra´ızes de func¸o˜es sa˜o estudadas na disciplina de Ca´lculo Nume´rico. Um gra´fico tambe´m pode auxiliar na visualizac¸a˜o de um problema mesmo que na˜o se conhec¸a seu modelo em detalhes. Atrave´s do gra´fico, tem-se uma ide´ia do comportamento geral de sistemas empregados na pra´tica. Este e´ o caso dos exemplos abaixo. Exemplo3 Suponha que um elevador sera´ usado para levar uma carga ao 4◦ andar de um edif´ıcio. Na Figura 3.5 e´ mostrado o comportamento de treˆs elevadores diferentes apo´s receberem um comando que solicita que o elevador se desloque para o 4◦ andar. 0 5 10 15 0 1 2 3 4 5 6 tempo (segundos) A nd ar comando Elevador 1 Elevador 2 Elevador 3 Figura 3.5: Resposta de treˆs elevadores a um comando. Pense em voceˆ dentro de um destes elevadores. Qual proporcionaria a viagem mais eficiente e conforta´vel? Claramente, o Elevador
Compartilhar