263
Bases Computacionais da Ciência Universidade Federal do ABC

Bases Computacionais da Ciência

Embed Size (px)

DESCRIPTION

O objetivo deste livro é auxiliar o aluno a estudar esta disciplina, apresentandoas bases teóricas e um grande número de exercícios, ja que o usodo computador se aprende principalmente atraves da pratica. Esperamosque este livro seja uma importante ferramenta didatica para os alunos dadisciplina e outras pessoas que gostariam de aprender os conceitos basicos daComputação.

Citation preview

Page 1: Bases Computacionais da Ciência

BasesComputacionais

da Ciência

Universidade Federal do ABC

Page 2: Bases Computacionais da Ciência

Esta obra foi licenciada com a Licenca Crea-tive Commons Attribution-NonCommercial-NoDerivs 3.0 Unported.Para ver uma copia desta licenca, visite http://creativecommons.org/licenses/by-nc-nd/3.0/ ou envie umpedido por carta para Creative Commons, 444 Castro Street, Suite 900,Mountain View, California, 94041, USA.

Page 3: Bases Computacionais da Ciência

Lista de Figuras

2.1 Uma maquina de Computacao de proposito unico . . . . . . . 92.2 Um computador baseado no modelo de Turing . . . . . . . . . 102.3 Mesmo programa, diferentes dados de entrada - (FOROUZAN;

MOSHARRAF, 2011) . . . . . . . . . . . . . . . . . . . . . . . . 112.4 Mesmos dados de entrada, diferentes programas- (FOROUZAN;

MOSHARRAF, 2011) . . . . . . . . . . . . . . . . . . . . . . . . 112.5 O modelo de von Neumann - (FOROUZAN; MOSHARRAF, 2011) 122.6 Computador Pessoal - Desktop . . . . . . . . . . . . . . . . . 172.7 Computador Pessoal - Laptop . . . . . . . . . . . . . . . . . . 172.8 Computador Pessoal - Tablet . . . . . . . . . . . . . . . . . . 172.9 Sistema Computacional Embutido - Celular . . . . . . . . . . 182.10 Sistema Computacional Embutido - GPS . . . . . . . . . . . . 182.11 Sistema Computaciolna Embutido - Smart Card . . . . . . . . 182.12 Sistema Computaciolna Embutido - Smart Label . . . . . . . . 192.13 Unidade Central de Processamento ou CPU dos computadores

pessoais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.14 Microship dos Smart Cardl . . . . . . . . . . . . . . . . . . . . 202.15 Dispositivo de armazenamento Principal - Memoria RAM . . . 202.16 Dispositivo de armazenamento Secundario - HD ou Disco Rıgido 212.17 Dispositivo de armazenamento Secundario - HD Externo . . . 212.18 Dispositivo de armazenamento Secundario - Pen Drive . . . . 212.19 Dispositivo de armazenamento Secundario - Cartao de Celuar 222.20 Dispositivo de armazenamento Secundario - Placa Mae . . . . 222.21 Gabinete dos computadores de mesa onde e localizado Placa

mae . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.22 Localizacao da placa mae em um computador portatil . . . . . 232.23 Abrir Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252.24 Processar Texto . . . . . . . . . . . . . . . . . . . . . . . . . . 252.25 Salvar Texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262.26 Divisao das areas em Ciencia da Computacao . . . . . . . . . 262.27 Divisao das areas em Ciencia da Computacao . . . . . . . . . 272.28 Tela Inicial do Ambiente TIDIA-AE da UFABC . . . . . . . . 302.29 Tela de Cadastramento de Usuario - TIDIA-AE . . . . . . . . 312.30 Tela de Login (conexao) - TIDIA-AE . . . . . . . . . . . . . . 312.31 Tela de Configuracao do Ambiente (Preferencias) - TIDIA-AE 322.32 Tela de Configuracao do Idioma - TIDIA-AE . . . . . . . . . . 322.33 Tela de Configuracao do Perfil - TIDIA-AE . . . . . . . . . . . 33

ii

Page 4: Bases Computacionais da Ciência

2.34 Tela de Inscricao em Disciplina (site) - TIDIA-AE . . . . . . . 332.35 Aba da Nova Disciplina (inscricao) - TIDIA-AE . . . . . . . . 342.36 TIDIA-AE - Menu Lateral . . . . . . . . . . . . . . . . . . . . 342.37 Tela de Forum - TIDIA-AE . . . . . . . . . . . . . . . . . . . 352.38 Tela do Forum ”Porque Escolhi a UFABC . . . . . . . . . . . 352.39 Tela de Exercıcios - TIDIA-AE . . . . . . . . . . . . . . . . . 372.40 Tela de Exercıcios (Iniciar Avaliacao) -TIDIA-AE . . . . . . . 372.41 Tela de Exercıcios (Responder e Avancar) - TIDIA-AE . . . . 382.42 Tela da ferramenta Repositorio - TIDIA-AE . . . . . . . . . . 382.43 Tela da ferramenta Escaninho - TIDIA-AE . . . . . . . . . . . 392.44 Tela da ferramenta Atividades - TIDIA-AE . . . . . . . . . . . 402.45 Tela da ferramenta Mensagem - TIDIA-AE . . . . . . . . . . . 402.46 Tela de Avisos - TIDIA-AE . . . . . . . . . . . . . . . . . . . 41

3.1 Exemplo de extrapolacao: os pontos cheios sao os dados dapesquisa realizada entre os anos de 2000 e 2009; a curva cheiae uma funcao matematica que descreve os dados obtidos nes-tes anos; a curva tracejada e a funcao extrapolada em datasfuturas; os pontos vazios sao os dados futuros (desconhecidos). 44

3.2 Espaco em funcao do tempo para um movimento uniforme-mente variado. Em (a) e (c) temos os pontos onde o corpoesta em s = 0, enquanto que (b) ilustra o valor maximo de s . 45

3.3 Grafico de f(x) dada por (3.2) . . . . . . . . . . . . . . . . . . 453.4 Regiao em torno das raızes de (3.2) . . . . . . . . . . . . . . . 453.5 Resposta de tres elevadores a um comando. . . . . . . . . . . . 463.6 Exemplo de lampada ligada a um gerador. . . . . . . . . . . . 473.7 Numero de moles de C em funcao do valor de K . . . . . . . . 483.8 Grafico da funcao seno . . . . . . . . . . . . . . . . . . . . . . 533.9 Grafico da funcao seno . . . . . . . . . . . . . . . . . . . . . . 543.10 Grafico obtido no item (2) da Atividade 1. . . . . . . . . . . 573.11 Grafico obtido no item (4) da Atividade 2. . . . . . . . . . . 603.12 Grafico obtido no item (6) da Atividade 2. . . . . . . . . . . 613.13 Graficos usados no Exercıcio 4. . . . . . . . . . . . . . . . . . 623.14 Polinomios de Chebyshev. . . . . . . . . . . . . . . . . . . . . 64

4.1 Localizacao de media, mediana e moda em uma distribuicaoassimetrica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

4.2 Grafico de frequencia relativa . . . . . . . . . . . . . . . . . . 824.3 Histograma mostrando distribuicao da idade (em anos) em

uma amostra de 50 pessoas. . . . . . . . . . . . . . . . . . . . 824.4 Grafico de dispersao . . . . . . . . . . . . . . . . . . . . . . . 83

iii

Page 5: Bases Computacionais da Ciência

4.5 Grafico de dispersao, numero de acidentes em funcao de tempode treinamento. . . . . . . . . . . . . . . . . . . . . . . . . . . 85

4.6 Grafico de dispersao, consumo de bens em funcao do aumentoda renda media. . . . . . . . . . . . . . . . . . . . . . . . . . . 85

4.7 Grafico de dispersao, QI em funcao do peso da pessoa. . . . . 854.8 Exemplo de correlacao nao-linear. . . . . . . . . . . . . . . . . 864.9 Outro exemplo de correlacao nao-linear. . . . . . . . . . . . . 864.10 Diversos exemplos de relacoes entre variaveis e respectivos co-

eficientes de correlacao. Fonte: http://en.wikipedia.org/

wiki/File:Correlation_examples . . . . . . . . . . . . . . . 874.11 Representacao grafica do intervalo possıvel para o coeficiente

de correlacao. . . . . . . . . . . . . . . . . . . . . . . . . . . . 874.12 Grafico de dispersao para os dados da Tabela 4.10. . . . . . . 884.13 Grafico de dispersao, numero de cegonhas versus populacao

da cidade de Oldemberg. . . . . . . . . . . . . . . . . . . . . . 894.14 Reta de regressao, exprimindo relacao entre faltas e nota final. 914.15 Curva de regressao exponencial . . . . . . . . . . . . . . . . . 924.16 Curva de regressao logarıtmica . . . . . . . . . . . . . . . . . . 924.17 Curva de regressao polinomial . . . . . . . . . . . . . . . . . . 934.18 Curva de regressao de potencia . . . . . . . . . . . . . . . . . 934.19 Dados para construcao do grafico de correlacao. . . . . . . . . 944.20 Escolhendo grafico de dispersao . . . . . . . . . . . . . . . . . 944.21 Definicao do intervalo de dados . . . . . . . . . . . . . . . . . 954.22 Selecao das colunas de dados . . . . . . . . . . . . . . . . . . . 954.23 Inserindo nome . . . . . . . . . . . . . . . . . . . . . . . . . . 964.24 Inserindo coluna X . . . . . . . . . . . . . . . . . . . . . . . . 964.25 Inserindo coluna Y . . . . . . . . . . . . . . . . . . . . . . . . 974.26 Escolha de tıtulo e nome das variaveis. . . . . . . . . . . . . . 974.27 Grafico de dispersao . . . . . . . . . . . . . . . . . . . . . . . 984.28 Tela de selecao do tipo de regressao . . . . . . . . . . . . . . . 984.29 Resultado da regressao . . . . . . . . . . . . . . . . . . . . . . 994.30 Selecionando funcao correlacao. . . . . . . . . . . . . . . . . . 994.31 Selecionando as colunas de dados. . . . . . . . . . . . . . . . 1004.32 Resultado final com o valor do coeficiente de correlacao. . . . 1004.33 Entrada de dados na planilha . . . . . . . . . . . . . . . . . . 1014.34 Inserindo funcao . . . . . . . . . . . . . . . . . . . . . . . . . . 1024.35 Selecionando funcoes estatısticas . . . . . . . . . . . . . . . . . 1024.36 Selecionando a funcao media . . . . . . . . . . . . . . . . . . . 1034.37 Selecionando coluna de dados . . . . . . . . . . . . . . . . . . 1034.38 Resultado da media . . . . . . . . . . . . . . . . . . . . . . . . 1044.39 Escolhendo funcao mediana . . . . . . . . . . . . . . . . . . . 105

iv

Page 6: Bases Computacionais da Ciência

4.40 Escolhendo a funcao moda . . . . . . . . . . . . . . . . . . . . 1054.41 Resultados das medidas de tendencia central . . . . . . . . . . 1064.42 Aparencia da planilha de dados logo apos ser carregada. . . . 1074.43 Atribuindo rotulos a linhas onde as medidas serao inseridas. . 1074.44 Selecionando a faixa de valores. . . . . . . . . . . . . . . . . . 1084.45 Selecionando a coluna onde os valores de frequencia serao in-

seridos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1094.46 Selecionando a funcao frequencia. . . . . . . . . . . . . . . . . 1094.47 Selecionando dados para a construcao do histograma. . . . . . 1104.48 Selecionando limites dos intervalos (classes) do histograma. . . 1104.49 Inserindo coluna de rotulos. . . . . . . . . . . . . . . . . . . . 1114.50 Selecionando tipo de grafico. . . . . . . . . . . . . . . . . . . . 1114.51 Selecionando coluna de rotulos. . . . . . . . . . . . . . . . . . 1114.52 Inserindo tıtulo. . . . . . . . . . . . . . . . . . . . . . . . . . . 1124.53 Histograma final. . . . . . . . . . . . . . . . . . . . . . . . . . 112

5.1 Exemplo de codigo de barras (extraıdo da livraria virtual Ama-zon.com (AMAZON. . . , 2011)) . . . . . . . . . . . . . . . . . . . 118

5.2 Livro relacionado ao codigo de barras (extraıdo da livrariavirtual Amazon.com (AMAZON. . . , 2011)) . . . . . . . . . . . . 119

5.3 Lista de supermercado. . . . . . . . . . . . . . . . . . . . . . . 1205.4 Atividade 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1315.5 Atividade 1: janela para importar arquivo “.csv”. . . . . . . . 1325.6 Atividade 1: janela para formatar celulas. . . . . . . . . . . . 1325.7 Atividade 1: janela para definir valores validos para os dados. 1335.8 Atividade 1: janela para definir alerta de erro caso seja digi-

tado um dado invalido. . . . . . . . . . . . . . . . . . . . . . . 1335.9 Atividade 1: janela Classificar. . . . . . . . . . . . . . . . . 1345.10 Atividade 1: janela para calcular subtotais. . . . . . . . . . . . 1355.11 Janela para definicao do filtro. (Atividade 5.) . . . . . . . . . 1365.12 Sistema de Amortizacao Constante. . . . . . . . . . . . . . . . 137

6.1 Janela do RoboMind com o controle remoto aberto. . . . . . 1446.2 Janela do RoboMind com comandos para o robo percorrer

um quadrado. . . . . . . . . . . . . . . . . . . . . . . . . . . . 1456.3 Criacao do cenario para o RoboMind . . . . . . . . . . . . . . 1486.4 Visualizacao do mapa criado dentro do RoboMind . . . . . . . 1486.5 Representacao de um plano cartesiano . . . . . . . . . . . . . 1496.6 Uma possıvel resposta para o exercıcio de percorrer os tres

pontos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1506.7 Controle de execucao do programa . . . . . . . . . . . . . . . 150

v

Page 7: Bases Computacionais da Ciência

6.8 Um possıvel caminho para o exercıcio de percorrer os tres pontos1516.9 Console do Scilab: Icone para abrir o SciNotes (Figura 6.10). 1536.10 Janela do SciNotes para editar o codigo-fonte. . . . . . . . . . 153

7.1 Descricao do mapa com uma caixa . . . . . . . . . . . . . . . 1617.2 Cenario com uma caixa . . . . . . . . . . . . . . . . . . . . . . 1627.3 Descricao do mapa com duas caixas . . . . . . . . . . . . . . . 1637.4 Cenario com duas caixas . . . . . . . . . . . . . . . . . . . . . 163

9.1 O Prototipo do Robo PEOPLER-II. . . . . . . . . . . . . . . . 1789.2 Resultado Experimental no Chaveamento de Roda para Perna. 1789.3 Exemplos de Modelos Fısicos Representados por um Mapa do

Brasil e uma Maquete de Aviao em (a) e (b), respectivamente. 1809.4 Modelo e suas Variaveis. . . . . . . . . . . . . . . . . . . . . . 1829.5 Robo “da Vinci” Utilizado em Cirurgias (VINCI, 2011). . . . . 1859.6 Experimento Real de Crash-Test. . . . . . . . . . . . . . . . . 1869.7 Simulador de Pecas. . . . . . . . . . . . . . . . . . . . . . . . . 1869.8 Projeto RobCup Rescue e seus Ambiente de Simulacao para

Resgate em Situacoes de Desastre. Fonte: (RESCUE, 2011). . . 1879.9 Ciclo de Vida de uma Simulacao Computacional. . . . . . . . 1899.10 Circunferencia Circunscrita em um Quadrado. . . . . . . . . . 1929.11 Circunferencia Circunscrita em um Quadrado e com uma Se-

rie de Pontos Aleatoriamente Distribuıdos sobre a Area doQuadrado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194

9.12 A Distancia d entre qualquer Ponto A e o Centro da Circun-ferencia pode ser Calculada atraves de um Calculo de umaHipotenusa. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194

9.13 Ambiente Scilab® e SciNotes. . . . . . . . . . . . . . . . . . . 1969.14 Posicionamento dos Sensores de Distancia no Carro. . . . . . . 1999.15 Interface Grafica da Simulacao da Navegacao Autonoma de

Veıculos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2009.16 Configurando a Simulacao da Navegacao Autonoma de Veıculos.2029.17 Interface Grafica com a Pista. . . . . . . . . . . . . . . . . . . 2039.18 Escolhendo a Posicao do Carro na Pista. . . . . . . . . . . . . 2039.19 Configurando Variaveis do Carro e Inserindo-o na Pista. . . . 2049.20 Carro Inserido na Interface da Simulacao. . . . . . . . . . . . . 2049.21 Configurando Parametros Gerais da Simulacao. . . . . . . . . 2059.22 Visualizando Variaveis de um Carro, em cada Passo da Simu-

lacao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2059.23 Configuracao do Cenario da Atividade 1 da Navegacao Auto-

noma de Veıculos. . . . . . . . . . . . . . . . . . . . . . . . . . 206

vi

Page 8: Bases Computacionais da Ciência

9.24 Comandos para se implementar o metodo de Newton no am-biente SciNotes. . . . . . . . . . . . . . . . . . . . . . . . . . . 209

9.25 Analise grafica do polinomio. . . . . . . . . . . . . . . . . . . . 211

10.1 Ambiente Exemplo com a identificacao dos Robos, Paredes ea Saıda. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215

10.2 (a) Mapa na Memoria no Inıcio da Simulacao. (b) O MesmoMapa ao Termino da Simulacao. . . . . . . . . . . . . . . . . . 216

10.3 Execucao de um Passo da Simulacao Anasazi. . . . . . . . . . 21810.4 Execucao do Jogo da Vida em Dois Passos Consecutivos. . . . 21910.5 I.Exemplos de Objetos do Jogo da Vida Gerados pelo Padrao

Estavel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22010.6 II.Exemplos de Objetos do Jogo da Vida Gerados pelo Padrao

Estavel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22010.7 III. Exemplos de Objetos do Jogo da Vida Gerados pelo Pa-

drao Estavel. . . . . . . . . . . . . . . . . . . . . . . . . . . . 22110.8 Exemplos de Objetos do Jogo da Vida Gerados pelo Padrao

Oscilatorio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22110.9 Exemplo de Objeto Glider, Gerado pelo Padrao Spaceship. . . 22210.10Imagens Lado a Lado. . . . . . . . . . . . . . . . . . . . . . . 22210.11Definicao da Vizinhanca para os Elementos da Matriz GRID. . 22310.12Chamando o Editor SciNote do Scilab®. . . . . . . . . . . . . 23010.13Editor SciNote do Scilab®. . . . . . . . . . . . . . . . . . . . 23010.14Codigo do Jogo da Vida e a Janela Grafica com uma Populacao

Inicial Aleatoria. . . . . . . . . . . . . . . . . . . . . . . . . . 23110.15Ambiente de Resgate no RoboMind. . . . . . . . . . . . . . . . 23510.16Mapa Utilizado para a Criacao do Cenario no RoboMind. . . . 23610.17Fluxograma do Cenario de Resgate. . . . . . . . . . . . . . . 23710.18Nova Posicao da Vıtima Apos ser Resgatada. . . . . . . . . . . 24110.19Estrutura atomica de uma molecula de agua. Os atomos estao

mostrados como esferas e coloridos por tipo atomico, enquantoas ligacoes covalentes estao mostradas como varetas. . . . . . . 243

10.20Energia potencial relativa ao estiramento de uma ligacao cova-lente O-H. Para o grafico, 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. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244

10.21Molecula de agua. Qual deve ser a energia potencial destamolecula? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245

vii

Page 9: Bases Computacionais da Ciência

Lista de Tabelas

2.1 Exemplos de Sistemas Operacionais . . . . . . . . . . . . . . . 232.2 Exemplos de Aplicativos . . . . . . . . . . . . . . . . . . . . . 24

3.1 Dados para verificacao da Lei de Stefan. . . . . . . . . . . . . 643.2 Dados para verificacao da Lei de Boyle. . . . . . . . . . . . . 65

4.1 Preferencias dos estudantes por cursos . . . . . . . . . . . . . 734.2 Distribuicao de alunos . . . . . . . . . . . . . . . . . . . . . . 734.3 Preferencias dos alunos, em porcentagem . . . . . . . . . . . . 744.4 Um exemplo de calculo de frequencia acumulada. . . . . . . . 764.5 Tabela de notas de uma classe. . . . . . . . . . . . . . . . . . 774.6 Tabela para calculo de mediana . . . . . . . . . . . . . . . . . 784.7 Exemplo de distribuicao unimodal . . . . . . . . . . . . . . . . 784.8 Exemplo de distribuicao bimodal. . . . . . . . . . . . . . . . . 794.9 Exemplos de pares de variaveis cujas relacoes podem ser estu-

dadas usando correlacao e/ou regressao . . . . . . . . . . . . . 844.10 Tabela de notas e faltas para cada aluno. . . . . . . . . . . . . 884.11 Valores intermediarios usados no calculo do coeficiente de cor-

relacao. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 894.12 Distribuicao de escolaridade segundo tipo de residencia. . . . . 1134.13 Distribuicao dos sobreviventes de acordo com o sexo. . . . . . 1134.14 Distancias obtidas pelos vencendores do salto triplo masculino

em Olimpıadas. . . . . . . . . . . . . . . . . . . . . . . . . . . 114

5.1 Dicionario de dados do arquivo idh.csv. . . . . . . . . . . . . . 138

7.1 Comandos de observacao do ambiente. . . . . . . . . . . . . . 1587.2 Conectores logicos e a sua interpretacao . . . . . . . . . . . . 1607.3 Sintaxe para as operacoes de comparacao entre numeros no

SciLab. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167

viii

Page 10: Bases Computacionais da Ciência

Sumario

1 Prefacio 21.1 Estrutura do Livro . . . . . . . . . . . . . . . . . . . . . . . . 21.2 O Conteudo da Disciplina . . . . . . . . . . . . . . . . . . . . 21.3 Demais Recursos da Disciplina . . . . . . . . . . . . . . . . . . 31.4 Agradecimentos . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2 Fundamentos da Computacao 62.1 Introducao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.2 O Computador . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.2.1 Modelo de Turing . . . . . . . . . . . . . . . . . . . . . 92.2.2 Modelo de Von Newman . . . . . . . . . . . . . . . . . 122.2.3 Historico . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.3 Sistemas Computacionais e Seus Componentes . . . . . . . . . 162.3.1 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . 172.3.2 Software . . . . . . . . . . . . . . . . . . . . . . . . . . 202.3.3 Exemplo de Funcionamento de um Sistema Computa-

cional e Seus Componentes . . . . . . . . . . . . . . . . 232.4 Organzacao da Ciencia da Computacao . . . . . . . . . . . . . 24

2.4.1 Areas de Software . . . . . . . . . . . . . . . . . . . . . 262.4.2 Areas de Hardware . . . . . . . . . . . . . . . . . . . . 29

2.5 Exercıcios da Aula Pratica . . . . . . . . . . . . . . . . . . . . 292.5.1 Cadastro e Configuracao de Perfil no TIDIA-AE . . . 302.5.2 Inscricao em Disciplinas . . . . . . . . . . . . . . . . . 322.5.3 Atividades no TIDIA-AE . . . . . . . . . . . . . . . . . 342.5.4 Explorando outras Ferramentas do TIDIA-AE . . . . . 36

2.6 Consideracoes Finais . . . . . . . . . . . . . . . . . . . . . . . 412.7 Conjunto de Praticas . . . . . . . . . . . . . . . . . . . . . . . 42

3 Representacao Grafica de Funcoes 433.1 Introducao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433.2 Emprego do Scilab® para fazer graficos . . . . . . . . . . . . . 48

3.2.1 Operadores Basicos . . . . . . . . . . . . . . . . . . . . 493.2.2 Fazendo o grafico de uma funcao simples . . . . . . . . 513.2.3 Cuidados com outros tipos de funcoes . . . . . . . . . . 54

3.3 Atividades em Aula . . . . . . . . . . . . . . . . . . . . . . . . 553.4 Exercıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603.5 Consideracoes Finais . . . . . . . . . . . . . . . . . . . . . . . 66

ix

Page 11: Bases Computacionais da Ciência

4 Nocoes de Estatıstica, Correlacao e Regressao 674.1 Introducao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674.2 Conceitos Basicos . . . . . . . . . . . . . . . . . . . . . . . . . 69

4.2.1 Tipos de Dados . . . . . . . . . . . . . . . . . . . . . . 714.2.2 Distribuicao de Frequencias . . . . . . . . . . . . . . . 724.2.3 Medidas de Tendencia Central . . . . . . . . . . . . . . 764.2.4 Medidas de Dispersao . . . . . . . . . . . . . . . . . . 804.2.5 Visualizacao de Dados Amostrais . . . . . . . . . . . . 81

4.3 Correlacao e Regressao . . . . . . . . . . . . . . . . . . . . . . 834.3.1 Graficos de dispersao e tipos de correlacao . . . . . . . 844.3.2 Coeficiente de Correlacao . . . . . . . . . . . . . . . . . 864.3.3 Causalidade versus Correlacao . . . . . . . . . . . . . . 884.3.4 A Reta da Regressao Linear Estimada . . . . . . . . . 904.3.5 O Coeficiente de Determinacao . . . . . . . . . . . . . 914.3.6 Outros tipos de correlacao . . . . . . . . . . . . . . . . 924.3.7 Criando um grafico de correlacao com o BrOffice Calc 92

4.4 Exercıcio da Aula Pratica . . . . . . . . . . . . . . . . . . . . 1014.5 Exercıcios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1134.6 Consideracoes Finais . . . . . . . . . . . . . . . . . . . . . . . 114

5 Base de Dados 1165.1 Introducao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1165.2 Entendendo a Base de Dados . . . . . . . . . . . . . . . . . . 118

5.2.1 Dados e Informacoes . . . . . . . . . . . . . . . . . . . 1185.2.2 O que e uma Base de Dados? . . . . . . . . . . . . . . 119

5.3 Organizacao de Dados . . . . . . . . . . . . . . . . . . . . . . 1225.3.1 Tipos de Dados e Domınios . . . . . . . . . . . . . . . 124

5.4 Arquivos Estruturados . . . . . . . . . . . . . . . . . . . . . . 1285.5 Consultas em Bases de Dados . . . . . . . . . . . . . . . . . . 1295.6 Exercıcios da Aula Pratica . . . . . . . . . . . . . . . . . . . . 1305.7 Exercıcios Complementares . . . . . . . . . . . . . . . . . . . 1365.8 Consideracoes Finais . . . . . . . . . . . . . . . . . . . . . . . 138

6 Logica de Programacao: Variaveis e EstruturasSequenciais 1406.1 Introducao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1406.2 Delegando tarefas - O Conceito de Instrucao . . . . . . . . . . 1416.3 Sequencia de Instrucoes - Estruturas Sequenciais . . . . . . . . 1426.4 Exercıcios para Sala de Aula . . . . . . . . . . . . . . . . . . . 1476.5 Exercıcios para Casa . . . . . . . . . . . . . . . . . . . . . . . 1516.6 Apendice: ilustrando os conceitos aprendidos usando Scilab . 152

x

Page 12: Bases Computacionais da Ciência

6.6.1 Entrada e saıda . . . . . . . . . . . . . . . . . . . . . . 154

6.6.2 Exercıcios Adicionais . . . . . . . . . . . . . . . . . . . 155

7 Logica de Programacao: Estruturas Condicionais 157

7.1 Introducao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157

7.2 Tomando decisoes - Estruturas Condicionais . . . . . . . . . . 157

7.3 Exercıcios para Sala de Aula . . . . . . . . . . . . . . . . . . . 161

7.4 Exercıcios para Casa . . . . . . . . . . . . . . . . . . . . . . . 164

7.5 Apendice: Ilustrando os Conceitos Aprendidos usando Scilab 166

7.5.1 Exercıcios Adicionais . . . . . . . . . . . . . . . . . . . 167

8 Logica de Programacao: Estruturas de Repeticao 169

8.1 Introducao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

8.2 Repetindo as mesmas instrucoes . . . . . . . . . . . . . . . . . 169

8.3 Criando programas complexos . . . . . . . . . . . . . . . . . . 171

8.4 Exercıcios para Sala de Aula . . . . . . . . . . . . . . . . . . . 172

8.5 Exercıcios para Casa . . . . . . . . . . . . . . . . . . . . . . . 172

8.6 Apendice: Ilustrando os Conceitos Aprendidos usando Scilab 173

8.6.1 Exercıcios Adicionais . . . . . . . . . . . . . . . . . . . 173

9 Modelagem e Simulacao Computacional: Conceitos Fun-damentais 175

9.1 Introducao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

9.2 Definicao de Sistema . . . . . . . . . . . . . . . . . . . . . . . 176

9.2.1 Formas de se Estudar um Sistema . . . . . . . . . . . . 177

9.3 Definicao de Modelo . . . . . . . . . . . . . . . . . . . . . . . 182

9.3.1 Construcao de Modelos . . . . . . . . . . . . . . . . . . 183

9.3.2 Modelos de Simulacao . . . . . . . . . . . . . . . . . . 183

9.4 Simulacao Computacional . . . . . . . . . . . . . . . . . . . . 184

9.4.1 Sistemas Computacionais para Simulacao . . . . . . . . 186

9.4.2 Verificacao e Validacao . . . . . . . . . . . . . . . . . . 188

9.4.3 Metodologia para o Desenvolvimento de Simulacoes Com-putacionais . . . . . . . . . . . . . . . . . . . . . . . . 189

9.5 Exercıcios da Aula Pratica . . . . . . . . . . . . . . . . . . . . 191

9.5.1 Estimando o Valor de π no Scilab® com o Metodo deMonte Carlo . . . . . . . . . . . . . . . . . . . . . . . . 191

9.5.2 Navegacao Autonoma de Veıculos . . . . . . . . . . . . 197

9.6 Conjunto de Praticas . . . . . . . . . . . . . . . . . . . . . . . 206

9.6.1 Bases Computacionais da Ciencia . . . . . . . . . . . . 207

9.6.2 Bases Matematicas . . . . . . . . . . . . . . . . . . . . 208

xi

Page 13: Bases Computacionais da Ciência

10 Modelagem e Simulacao Computacional: A Ci-encia na Pratica 21310.1 Introducao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21310.2 Exemplos de Simulacoes . . . . . . . . . . . . . . . . . . . . . 213

10.2.1 Robos Exploradores . . . . . . . . . . . . . . . . . . . . 21310.2.2 Simulacao Cyber-Anasazi . . . . . . . . . . . . . . . . 216

10.3 Exercıcios da Aula Pratica . . . . . . . . . . . . . . . . . . . . 21810.3.1 Jogo da Vida . . . . . . . . . . . . . . . . . . . . . . . 21810.3.2 O Domınio de Resgate no RoboMind . . . . . . . . . . 234

10.4 Conjunto de Praticas . . . . . . . . . . . . . . . . . . . . . . . 24010.4.1 Bases Computacionais da Ciencia . . . . . . . . . . . . 24110.4.2 Base Experimental das Ciencias Naturais . . . . . . . . 242

1

Page 14: Bases Computacionais da Ciência

1 Prefacio

Hoje em dia, encontramos a tecnologia da informacao em (quase) todos osdomınios da vida. Especialmente no ambiente academico, o trabalho comcomputadores se faz necessario em todas as areas, das Ciencias Naturais,Matematica, Computacao, Biologia, Quımica, Fısica, Engenharias, Licenci-aturas, ate as Ciencias Sociais e as Artes. Por isto, o uso de computadorese ferramentas computacionais deveria fazer parte do conhecimento de alunosde qualquer materia universitaria desde o inıcio dos estudos. A UFABC crioupara este fim a disciplina Bases Computacionais da Ciencia.

O objetivo deste livro e auxiliar o aluno a estudar esta disciplina, apre-sentando as bases teoricas e um grande numero de exercıcios, ja que o usodo computador se aprende principalmente atraves da pratica. Esperamosque este livro seja uma importante ferramenta didatica para os alunos dadisciplina e outras pessoas que gostariam de aprender os conceitos basicos daComputacao. Desejamos um aprendizado frutıfero e prazeroso.

1.1 Estrutura do Livro

A disciplina consiste, alem das provas e do projeto final, de nove aulas, cadauma representada nos capıtulos deste livro. Em cada capıtulo ha uma intro-ducao sobre o conteudo da aula, enunciando-se seus objetivos. Na sequenciasecoes apresentam a parte teorica da aula, ilustrada por exemplos praticos.Em seguida ha duas secoes de exercıcios praticos, uma contendo os exercıciosa serem feitos em sala de aula apos a apresentacao do conteudo pelo pro-fessor, e outra secao com os exercıcios de casa. Cada capıtulo e finalizadocom as consideracoes finais e as referencias bibliograficas citadas no texto,ou recomendadas para o estudo mais aprofundado do assunto da aula.

1.2 O Conteudo da Disciplina

A disciplina Bases Computacionais da Ciencia pode ser dividida em quatrograndes areas:

� Fundamentos da Computacao, cujos conceitos sao apresentados no Ca-pıtulo 2;

� Representacao e Analise de Dados, com os conteudos apresentado noscapıtulos 3 a 5;

2

Page 15: Bases Computacionais da Ciência

� Logica de Programacao, com os conceitos apresentados nos capıtulos 6a 8.

Na aula Fundamentos da Computacao sao apresentados o proprio compu-tador, seu historico, seus componentes, os conceitos de hardware e softwaree a organizacao da Ciencia da Computacao.

Na aula seguinte, aprende-se a empregar o software Scilab® para a repre-sentacao grafica e algumas operacoes de funcoes. O software BrOffice Calc®

e usado na aula seguinte, Nocoes de Estatıstica, Correlacao e Regressao, ondesao apresentados os conceitos basicos de varias medidas de tendencia centrale dispersao, e da visualizacao de dados amostrais.

Em Base de Dados sao explicados os termos dado, informacao e base dedados. Tambem, tem-se a apresentacao de como usar o software BrOfficeCalc® para a organizacao de dados, o trabalho com arquivos estruturados epara fazer consultas em bases de dados.

Nas tres aulas sobre Logica de Programacao, e usado o programa RoboMind®

para familiarizar-se com a logica de programacao, e com estruturas condici-onais e de repeticao, que sao frequentemente usadas na programacao.

Nas ultimas duas aulas aprende-se a representar sistemas simples pormodelos computacionais e fazer simulacoes.

1.3 Demais Recursos da Disciplina

A principal ferramenta para esta disciplina alem deste livro e, logicamente,um computador, idealmente conectado a Internet. Na Internet encontra-se aambiente virtual de aprendizagem Tidia1, que sera utilizado nesta disciplinapara atividades tais como: disponibilizacao do material didatico, transferen-cia de arquivos e a comunicacao entre os alunos e entre aluno e professor,para a entrega de exercıcios e foruns interativos. Dentre os materiais dida-ticos disponıveis no Tidia cita-se a versao em PDF deste livro, bem comotutoriais dos softwares usados nos exercıcios praticos. O acesso e o uso doTidia sao ensinados na primeira aula.

Para fazer os exercıcios praticos e necessario instalar no computador osseguintes softwares :

� Um navegador de Internet (por exemplo o Mozilla Firefox®) paraacessa o Tidia e fazer pesquisas online;

� Scilab®, um software para computacao numerica e a vizualizacao defuncoes matematicas;

1Disponıvel em http://tidia.ufabc.edu.br:8080

3

Page 16: Bases Computacionais da Ciência

� BrOffice Calc®, um programa de calculos de planilha, que faz parte dopacote OpenOffice® (ou BrOffice®);

� RoboMind®, um programa para o ensino de Logica de Programacao.

Todos estes softwares sao gratuitos e podem ser baixados, instalados eutilizados para fins nao-comerciais sem pagamento de licencas de uso.

1.4 Agradecimentos

A elaboracao deste livro so foi possıvel gracas ao apoio, confianca, dedicacaoe colaboracao de muitas pessoas que ajudaram a torna-lo uma realidade. Porisso, fazemos questao de registrar aqui nossos agradecimentos.

Em primeiro lugar, agradecemos quem acreditou no projeto quando esteera apenas uma ideia. Agradecemos a Pro-Reitoria de Graduacao, em es-pecial a Professora Denise Consonni, ao Professor Dacio Roberto Matheuse ao Professor Derval dos Santos Rosa, pela iniciativa em estruturar umadiscussao integrada em toda a UFABC sobre as seis disciplinas iniciais dosbacharelados interdisciplinares, quais sejam: Base Experimental das CienciasNaturais, Bases Computacionais da Ciencia, Bases Epistemologicas da Cien-cia Moderna, Bases Matematicas, Estrutura da Materia, Origem da Vida eDiversidade dos Seres Vivos.

De maneira especial, gostariamos de agradecer nominalmente aos profes-sores que elaboraram este livro, sempre de maneira cooperativa e interativa.Sao eles: Alessandro Nascimento, Aline Neves, Carlos da Silva dos San-tos, Cristiane Otero Reis Salum, Delmo Alves de Moura, Edson PinheiroPimentel, Harlen Costa Batagelo, Humberto Luiz Razente, Irineu AntunesJunior, Joao Paulo Gois, Juliana Cristina Braga, Letıcia Rodrigues Bueno,Luiz Carlos da Silva Rozante, Maria Camila Nardini Barioni, Maria das Gra-cas Bruno Marietto, Marcio Eisencraft, Marcio K. Oikawa, Peter Claessens,Ricardo Suyama, Ronaldo Cristiano Prati e Wagner Tanaka Botelho.

A contribuicao de cada um destes professores demonstra o domınio cientı-fico e tecnico nos temas abordados em cada capıtulo. Entretanto, a preocupa-cao de todos foi muito alem da transmissao pura e direta dos conhecimentos.O processo de formacao academica dos alunos que utilizarao este materialdidatico sempre foi o norte de nossas as discussoes. Sendo assim, as decisoesde como seria a transmissao 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 abrangen-cia? (ii) como apresentar os conhecimento de Computacao nao como um fimem si mesmo, mas como uma importante e indispensavel ferramentas para

4

Page 17: Bases Computacionais da Ciência

todos os profissionais do seculo XXI? (iii) como expor os alunos, de maneiragradativa e coerente, a varias situacoes de estudo e pesquisa que envolvem avida academica?

Agradecemos, tambem, a Robson dos Santos Franca, que nos auxiliou demaneira efetiva na parte tecnica de editoracao deste livro.

Maria das Gracas Bruno MariettoMario Minami

Pieter Willem Westera

—– Santo Andre, Sao Paulo, 25 de Marco de 2011

5

Page 18: Bases Computacionais da Ciência

2 Fundamentos da Computacao

Edson Pinheiro PimentelJuliana Cristina Braga

—– Universidade Federal do ABC

2.1 Introducao

Atualmente, e praticamente impensavel fazer pesquisa cientıfica sem o uso decomputacao. A presenca de instrumentos computadorizados coletando da-dos o tempo todo e em todo lugar gera dados cientıficos em volumes que naopodem mais ser entendidos sem calculos simples e muitas vezes computacoescomplexas. Por exemplo, a Sloan Digital Sky Survey esta mapeando o ceucom um telescopio dedicado e nos primeiros cinco anos de operacao, geroucerca de 6 TB de dados. Da mesma forma, simulacoes em grande escala demodelos climaticos a reatores de fusao geram enormes conjuntos de dadosem semanas ou dias devido a disponibilidade de computadores cada vez maisrapidos. Tal volume de dados tem de ser analisado por tecnicas de com-putacao. A luz desta evolucao da ciencia, as futuras geracoes de cientistasdevem compreender que precisarao envolver cada vez mais computacao emseu trabalho (HAMBRUSCH et al., 2009).

De fato, diversas areas de pesquisa estao se tornando cada vez mais de-pendentes da computacao. Segundo George Johnson, no artigo ”All Scienceis Computer Science” publicado no New York Times on the Web em 2001,toda ciencia, ao que parece, esta se tornando ciencia da computacao. Eisalguns depoimentos que embasam esta afirmacao (JOHNSON, 06/05/2011):

� ”Fısica e quase inteiramente computacional agora”, disse Thomas B.Kepler, vice-presidente para assuntos academicos do Santa Fe Institute,um centro de pesquisa multidisciplinar, no Novo Mexico. ”Ninguemsonharia em fazer esses grandes experimentos do acelerador sem umatremenda quantidade de poder computacional para analisar os dados.”

� Mas a maior mudanca, segundo ele, foi em biologia. ”Dez anos atras,os biologos desconsideravam a necessidade de computacao”, disse o Dr.

6

Page 19: Bases Computacionais da Ciência

Kepler. ”Agora eles estao cientes de que nao podem realmente fazerbiologia sem ele.”

� Ha quımica computacional, neurociencia computacional, genetica com-putacional, imunologia computacional e biologia molecular computaci-onal. Mesmo areas como a sociologia e a antropologia estao lentamentesucumbindo a mudanca. No Instituto Santa Fe, modelos de computa-dor sao usados para estudar os fatores que podem ter levado a ascensaoe queda de culturas complexas, - uma especie de arqueologia artificial.

Segundo (HENDERSON et al., 2007) o Raciocınio Computacional (Com-putational Thinking) e o nucleo de toda as disciplinas modernas nas areasde Ciencias, Tecnologia, Engenharia e Matematica e e intrınseco a todas asoutras disciplinas, de A a Z. E utilizado na vida cotidiana desde ao fazerum bolo, trocar um pneu ou escovar nossos dentes. O cerebro humano estapreparado para pensar computacionalmente, como estao os modernos dispo-sitivos de computacao moderna. De certo modo, precisamos apenas despertaro raciocınio computacional para melhor aplica-los quando e onde precisarmos.

Raciocınio Computacional e um processo de resolucao de problemas queinclui (mas nao se limita) as seguintes caracterısticas (WING, 2006):

� Formulacao de problemas de modo que permita fazer uso do computa-dor e outras ferramentas para ajudar a resolve-los; item Representacaode dados atraves da abstracao, tais como, modelagem e simulacao

� Automatizacao de solucoes atraves do pensamento algorıtmico (umasequencia de instrucoes)

� Generalizacao e transferencia do processo de solucao de um problemapara uma grande variedade de problemas.

Assim, seja qual for o campo de atuacao escolhido, sera inevitavel estudare entender um pouco de Computacao ou Informatica.

A informatica e a tecnica propulsora do processo de transformacao tecno-logica e cultural que hoje muda, e continuara mudando a realidade subjetivae social, mas ela e apenas a parte imersa do ıceberg. Isso se deve ao fato deque, enquanto o uso de palavras como software, hardware, CPU, micropro-cessador, CD-ROM e apresentado como meta a ser alcancada na corrida a”alfabetizacao”, as caracterısticas e os efeitos da introducao das novas tecno-logias parecem estar cada vez mais reservados ao conhecimento de poucos.O processo em questao requer uma visao global, unitaria, uma observacao

7

Page 20: Bases Computacionais da Ciência

que, ao contrario do que vem ocorrendo, seja fruto de diversas abordagensdisciplinares e cientıficas.Ao longo da historia o homem tem precisado constantemente tratar e trans-mitir informacao, por isso nunca parou de criar maquinas e metodos paraprocessa-la. Com esta finalidade, surge a informatica como uma ciencia en-carregada do estudo e desenvolvimento dessas maquinas e metodos.A informatica nasceu da ideia de auxiliar o homem nos trabalhos rotineirose repetitivos, em geral de calculo e gerenciamento. O termo Informatica foicriado na Franca em 1962, e provem da contracao das palavras:Information automatique (Informacao automatica).

Uma das definicoes mais comumente aceitas: Informatica e a ciencia queestuda o tratamento automatico e racional da informacao.

Entre as principais funcoes da informatica destacam-se:

� desenvolvimento de novas maquinas;

� desenvolvimento de novos metodos de trabalho;

� construcao de aplicacoes automaticas;

� melhoria de metodos e aplicacoes existentes

2.2 O Computador

Do ponto de vista informatico, o elemento fısico utilizado para o tratamentode dados e a obtencao de informacao e o computador. O computador e umamaquina composta de elementos fısicos do tipo eletronico, capaz de realizaruma grande variedade de trabalhos com alta velocidade e precisao, desde quereceba as instrucoes adequadas.Ao conjunto de ordens dadas a um computador para a realizacao de umdeterminado processo da-se o nome de programa. Ao conjunto de um ouvarios programas que realizam determinado trabalho completo da-se o nomede aplicacao informatica. A informacao e o elemento a ser tratado e e defi-nida como tudo aquilo que permite adquirir qualquer tipo de conhecimentoe portanto, existira informacao sempre que se der a conhecer algo que ateentao se desconhecia (FOROUZAN; MOSHARRAF, 2011).

8

Page 21: Bases Computacionais da Ciência

2.2.1 Modelo de Turing

A ideia de um dispositivo de computacao universal foi descrita, pela primeiravez, por Alan Turing, em 1937, propondo que toda a computacao poderiaser realizada por um tipo especial de maquina, entao chamada Maquina deTuring. Embora Turing tenha apresentado sua descricao matematica, estavamais interessado na definicao filosofica de computacao do que em construira maquina propriamente dita. O modelo por ele descrito tinha como baseas acoes que as pessoas realizam quando envolvidas na computacao. En-tao, abstraindo essas acoes, Turing criou um prototipo para uma maquinacomputacional que realmente transformou o mundo.

Processadores de dados

Antes de discutirmos o modelo de Turing, vamos definir um computadorcomo um processador de dados. Utilizando essa definicao, um computadorage como uma caixa-preta que aceita a insercao de dados, processa-os e criainformacoes referentes aos resultados (Figura 2.1). Embora esse modelo possadefinir a funcionalidade de um computador, na atualidade tornou-se muitogenerico, porque, a partir dessa definicao, uma calculadora de bolso tambeme um computador (o que realmente e verdade, em um sentido literal).

Figura 2.1: Uma maquina de Computacao de proposito unico

Outro problema desse modelo e que ele nao especifica o tipo de proces-samento nem se e possıvel mais de um tipo. Em outras palavras, nao estaclaro quantos tipos ou conjuntos de operacoes podem ser realizados por umamaquina que tem como base esse modelo. E uma maquina de propositoespecıfico ou de proposito geral? Esse modelo poderia representar um com-putador de proposito especıfico (ou processador) que foi projetado para fazerum trabalho simples, como o controle da temperatura de um edifıcio ou o usode combustıvel em um carro. No entanto, computadores, do modo como otermo e utilizado hoje em dia, sao maquinas de proposito geral. Eles podemdesempenhar muitos tipos de tarefas diferentes, o que implica que precisa-mos transforma-los no modelo de Turing para que seja possıvel refletir osreais computadores da atualidade.

9

Page 22: Bases Computacionais da Ciência

Processadores de dados programaveis

O modelo de Turing e melhor para um computador de proposito geral, porqueacrescenta um elemento extra de computacao especıfica: o programa. Umprograma e um conjunto de instrucoes que diz ao computador o que fazercom os dados. A Figura 2.2 mostra o modelo de Turing. Nesse modelo, osdados de saıda dependem da combinacao de dois fatores: os dados de entradae o programa. Com os mesmos dados de entrada podemos gerar diferentesresultados, se modificarmos o programa. De modo similar, com o mesmoprograma, podemos gerar diferentes resultados, se modificarmos os dados deentrada. Por fim, se esses dados e o programa permanecerem os mesmos, oresultado tambem sera o mesmo. Vamos observar esses tres casos.

Figura 2.2: Um computador baseado no modelo de Turing

Mesmo programa, diferentes dados de entradaA Figura 2.3 mostra o mesmo programa de ordenacao com diferentes dadosde entrada. Embora o programa seja o mesmo, os resultados sao diferentes,porque diferentes dados de entrada sao processados.

Mesmos dados de entrada, programas diferentesA Figura 2.4 mostra os mesmos dados de entrada com diferentes programas.Cada programa faz que o computador realize diferentes operacoes sobre essesdados. O primeiro programa ordena os dados, o segundo os adiciona e oterceiro encontra o menor numero.

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 mesmoprograma e executado com os mesmos dados de entrada, espera-se os mesmosresultados.A Maquina Universal de TuringA Maquina Universal de Turing pode realizar qualquer calculo se o programaapropriado for fornecido; essa foi a primeira descricao de um computador mo-derno. Pode-se provar que um computador muito poderoso e uma MaquinaUniversal de Turing podem fazer as mesmas coisas. Precisamos apenas forne-

10

Page 23: Bases Computacionais da Ciência

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 descricao de como realizar o calculo- para qualquer uma das maquinas. Na verdade, a Maquina Universal deTuring e capaz de calcular qualquer coisa que seja calculavel.

11

Page 24: Bases Computacionais da Ciência

2.2.2 Modelo de Von Newman

Os computadores construıdos com base na Maquina Universal de Turingarmazenam dados em sua memoria. Por volta de 1944-1945, John von Neu-mann propos que, se o programa e os dados sao logicamente os mesmos, osprogramas tambem devem ser armazenados na memoria de um computador.Quatro subsistemasOs computadores construıdos com base no modelo de von Neumann dividemo hardware do computador em quatro subsistemas: memoria, unidade delogica e aritmetica, unidade de controle entrada/saıda (Figura 2.5).

Figura 2.5: O modelo de von Neumann - (FOROUZAN; MOSHARRAF, 2011)

MemoriaA memoria e a area de armazenamento; e onde os programas e os dadossao armazenados durante o processamento. Mais adiante discutiremos, nestecapıtulo, as razoes para o armazenamento de programas e dados.Unidade de logica e aritmeticaA unidade de logica e aritmetica (ULA) e onde ocorrem as operacoes de logicae de calculos. Para um computador agir como um processador de dados, eledeve ser capaz de realizar operacoes aritmeticas sobre dados (como adiciona-los em uma lista de numeros) e tambem operacoes logicas sobre dados.Unidade de controleA unidade de controle controla as operacoes da memoria, a ULA e o subsis-tema de entrada/saıda.

Entrada/SaıdaO 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 definicao do sistema de entrada/saıdae muito ampla: tambem inclui dispositivos de armazenamento secundarios,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 sao lidos a partir do disco,

12

Page 25: Bases Computacionais da Ciência

ele e considerado um dispositivo de entrada.O conceito de programa armazenadoO modelo de von Neumann determina que o programa deve ser armaze-

nado na memoria. Isso e totalmente diferente da arquitetura dos primeiroscomputadores, nos quais somente os dados eram armazenados na memoria:os programas para as respectivas tarefas eram implementados pela manipu-lacao de um conjunto de comutadores ou modificacao do sistema de fios. Amemoria dos computadores modernos mantem um programa e seus dadoscorrespondentes. Isso implica que os dados e programas devem ter o mesmoformato, uma vez que sao armazenados na memoria. Na verdade, sao arma-zenados como padroes binarios na memoria - uma sequencia de 0s e 1s.

Execucao sequencial de instrucoesUm programa no modelo de von Neumann e composto de um numero

finito de instrucoes. Nele, a unidade de controle busca uma instrucao damemoria, decodifica-a e, entao, a executa. Em outras palavras, as instrucoessao executadas uma depois da outra. Naturalmente, uma instrucao poderequerer que a unidade de controle salte para alguma instrucao anterior ouposterior, o que nao significa que as instrucoes nao sejam executadas sequen-cialmente. Esse tipo de execucao de um programa foi a exigencia inicial deum computador com base no modelo de von Neumann. Os computadores daatualidade executam programas na ordem que for mais eficiente.

2.2.3 Historico

A Informatica e uma ciencia que passou a ser tratada como tal ha poucosanos, sendo que a ela esta associada uma serie de fatos e descobertas anterio-res, que serviram para que atualmente seja uma das ciencias a qual o homemesta dedicando maior atencao e atribuindo cada vez mais importancia. Nestasecao, analisa-se brevemente a historia da computacao e dos computadores,dividida em tres perıodos.

Maquinas mecanicas (antes de 1930)

Durante esse perıodo, foram inventadas diversas maquinas de computacaoque tem pouca semelhanca com o moderno conceito de um computador.

� No seculo XVII, Blaise Pascal, um matematico e filosofo frances, in-ventou Pascaline, uma calculadora mecanica para fazer operacoes deadicao e subtracao. No seculo XX, quando Niklaus Wirth inventouuma linguagem de programacao estruturada, deu-lhe o nome Pascal,em homenagem ao inventor da primeira calculadora mecanica.

13

Page 26: Bases Computacionais da Ciência

� No final do seculo XVII, o matematico alemao Gottfried Leibnitz inven-tou uma calculadora mecanica mais sofisticada, que podia fazer multi-plicacoes e divisoes, alem de adicoes e subtracoes. Essa calculadora foichamada Roda de Leibnitz.

� A primeira maquina que utilizou a ideia de armazenamento e progra-macao foi o tear de Jacquard, inventado por Joseph-Marie Jacquard,no inıcio do seculo XIX. O tear utilizava cartoes perfurados (como umprograma armazenado) para controlar o aumento dos fios da urdidurana fabricacao de tecidos.

� Em 1823, Charles Babbage inventou a Maquina Diferencial, que po-dia fazer mais do que simples operacoes aritmeticas - tambem resolviaequacoes polinomiais. Posteriormente, ele inventou a chamada Ma-quina Analıtica, que, ate certo ponto, compara-se a ideia dos compu-tadores modernos. Ela tinha quatro componentes: uma engrenagem(correspondente a uma moderna ULA), um local de armazenamento(memoria), um operador (unidade de controle) e saıda (entrada/saıda).

� Em 1890, Herman Hollerith, trabalhando no Ministerio de Recense-amento dos Estados Unidos, projetou e construiu uma maquina pro-gramavel que podia, automaticamente, ler, registrar e ordenar dadosarmazenados em cartoes perfurados. O nascimento dos computado-res eletronicos (1930 - 1950) Entre 1930 e 1950, varios computadoresforam inventados por cientistas, que podem ser considerados os pio-neiros da industria dos computadores. Os primeiros computadores ele-tronicos Os primeiros computadores desse perıodo nao armazenavam oprograma na memoria - todos eram programados externamente. Cincocomputadores tornaram-se proeminentes durante esses anos:

� O primeiro computador de proposito especıfico, que codificava as in-formacoes eletricamente, foi inventado por John V. Atanasoff e seuassistente, Clifford Berry, em 1939. Chamado ABC (Atanasoff BerryComputer), foi projetado especificamente para resolver um sistema deequacoes lineares.

� Ao mesmo tempo, um matematico alemao chamado Konrad Zuse pro-jetou uma maquina de proposito geral, chamada Z1.

� Na decada de 1930, a Marinha dos Estados Unidos e a IBM patro-cinaram um projeto na Harvard University, sob a direcao de HowardAiken, para construir um computador chamado Mark I, que utilizavacomponentes eletricos e mecanicos.

14

Page 27: Bases Computacionais da Ciência

� Na Inglaterra, Alan Turing inventou um computador chamado Colos-sus, que foi projetado para decifrar o codigo conhecido como GermanEnigma (Enigma Alemao).

� O primeiro computador de proposito geral, totalmente eletronico, foifabricado por John Mauchly e J. Presper Eckert, chamado ENIAC(Electronic Numerical Integrator and Calculator, ou calculadora e in-tegradora numerica eletronica). Ele foi concluıdo em 1946, utilizava 18mil tubos de vacuo, media 30 metros de comprimento por 3 metros dealtura e pesava 30 toneladas.

Computadores baseados no modelo de von Neumann

Os cinco computadores precedentes utilizavam memoria somente para ar-mazenamento de dados e eram programados externamente, utilizando fios oucomutadores. John von Neumann propos que o programa e os dados deveriamser armazenados na memoria. Dessa maneira, todas as vezes que utilizamosum computador para realizar uma nova tarefa, precisamos somente modifi-car o programa, em vez de religar a maquina ou ligar e desligar centenas decomutadores. O primeiro computador com base nas ideias de von Neumann,chamado EDVAC, foi fabricado em 1950, na University of Pennsylvania. Aomesmo tempo, um computador similar, EDSAC, foi construıdo por MauriceWilkes, na Cambridge University, na Inglaterra.

Geracoes de computadores (1950 - epoca atual)

Os computadores construıdos depois de 1950 seguiram, aproximadamente,o modelo de Von Neumann. Apesar de se tornarem mais rapidos, meno-res e mais baratos, o princıpio era quase o mesmo. Historiadores dividemesse perıodo em geracoes, sendo que cada uma delas testemunhou algumaimportante transformacao em hardware ou software (mas nao no modelo).

Primeira geracao - A primeira geracao (aproximadamente de 1950 a 1959)foi caracterizada pelo surgimento de computadores comerciais. Durante essaepoca, eles eram utilizados somente por profissionais. Ficavam trancados emsalas com acesso limitado somente ao operador ou especialista. Tais com-putadores eram muito volumosos e utilizavam tubos de vacuo como chaveseletronicas. Naquele tempo, eram acessıveis somente as grandes organizacoes.

Segunda geracao - Os computadores da segunda geracao (aproximada-mente de 1959 a 1965) utilizavam transistores, em vez de tubos de vacuo.Isso reduziu seu tamanho, assim como seu custo, e os tornou mais acessıveispara as companhias de pequeno e medio portes. As duas linguagens de pro-gramacao de alto nıvel, Fortran e Cobol (veja o Capıtulo 9), foram inventadas

15

Page 28: Bases Computacionais da Ciência

e tornaram a programacao mais facil; separavam a tarefa de programacao dade operacao dos computadores. Um engenheiro civil, por exemplo, pode-ria escrever um programa em Fortran para resolver um problema, sem seenvolver com os detalhes eletronicos da arquitetura do computador.

Terceira geracao - A invencao dos circuitos integrados (transistores, fia-cao e outros componentes em um unico chip) reduziu ainda mais o custo e otamanho dos computadores. Os minicomputadores, entao, surgiram no mer-cado. Programas ”enlatados”,1 popularmente conhecidos como pacotes desoftware, tornaram-se disponıveis. Uma pequena corporacao podia comprarum pacote, por exemplo, para contabilidade, em vez de precisar escrever seuproprio programa. Surgiu, entao, uma nova industria, a de software. Estageracao durou, aproximadamente, de 1965 a 1975.

Quarta geracao - A quarta geracao (aproximadamente de 1975 a 1985)viu o surgimento dos microcomputadores. A primeira calculadora desktop, oAltair 8800, tornou-se disponıvel em 1975. Avancos na industria eletronicapermitiram que completos subsistemas de computadores se adequassem auma unica placa de circuito. Esta geracao tambem viu o aparecimento dasredes de computadores.

Quinta geracao - Esta e a atual, comecou em 1985 e ainda nao terminou.Ela tem testemunhado o surgimento dos computadores laptop e palmtop, odesenvolvimento de aperfeicoamentos nos meios de armazenamento secunda-rio (CD-ROM, DVD e assim por diante), o uso da multimıdia e o fenomenoda realidade virtual.

2.3 Sistemas Computacionais e Seus

Componentes

Um sistema computacional e um conjunto de componentes que realizam pro-cessamentos automaticos sobre dados de entrada, e fornecem uma saıda con-tendo esses dados transformados. Existem varios tipos de sistemas computa-cionais, os mais comuns sao os computadores pessoais dentre eles: computa-dores de mesa (Desktops - Fig. 2.6 ) e os computadores portateis (Laptops-Fig. 2.7 e Tablet PC - Fig. 2.8 ).

Outro tipo de sistema computacional que tem se tornado cada dia maiscomum sao os sistemas computacionais embarcados. Esses contem um sis-tema computacional embutido (HANSMANN et al., 2003). Diferentemente doscomputadores pessoais, que possuem proposito geral, os sistemas embarca-dos realizam tarefas especıficas como, por exemplo: falar ao telefone, emitirrotas, autenticar usuarios, rastrear objetos, etc. Exemplos: Celulares (Fig.

16

Page 29: Bases Computacionais da Ciência

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 descricao mais detalhada de cada uma dessas categorias.

2.3.1 Hardware

Hardware sao os componentes mecanicos e eletromecanicos dos sistemas com-putacionais, que podem ser classificados em 4 subcategorias:

17

Page 30: Bases Computacionais da Ciência

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 sao os hardwares responsaveis por capturar osdados de entrada do sistema. Exemplos: teclado, mouse, camera de vıdeo,tela de toque.

Os dispositivos de saıda sao os hardwares responsaveis por apresentaros dados transformados. Exemplos: monitores, impressoras, dispositivos deemissao de voz, etc.

Figura 2.11: Sistema Computaciolna Embutido - Smart Card

18

Page 31: Bases Computacionais da Ciência

Figura 2.12: Sistema Computaciolna Embutido - Smart Label

A unidade central de processamento e o hardware responsavel por pro-cessar os dados de entrada e transforma-los nos dados de saıda. Exemplos:unidade central de processamento (CPU) ou processadores dos computadorespessoais (Fig. 2.13), processadores dos celulares e microships do smart cards(Fig. 2.14), etc.

Os dispositivos de armazenamento sao os responsaveis por armazenardados de entrada e/ou saıda. Existem 2 tipos principais de dispositivos dearmazenamento: armazenamento principal e armazenamento secundario.

Os dispositivos de armazenamento principal fornecem aos dispositivos deprocessamento as informacoes necessarias para a transformacao dos dadosde entrada em saıda. Nessa categoria encontra-se, por exemplo, a memoriaRAM (Random Access Memory- Fig. 2.15).

A memoria RAM e volatil, pois seus dados sao perdidos depois que osistema e desligado.

Os dispositivos de armazenamento secundario guardam dados que podemser recuperados apos o desligamento do sistema computacional. Exemplosdesses dispositivos: disco rıgido (Hard Disk - HD - Fig. 2.16),disco rıgidoexterno (HD externo - Fig. 2.17), pen drive (Fig. 2.18), cartao de memoriados celulares (Fig. 2.19).

No caso dos computadores de mesa ou portateis, todos os 4 componentessao integrados atraves de um hardware chamado de placa mae (Fig. 2.20).

Os dispositivos de armazenamento principal e de processamento sao ge-ralmente embutidos na placa mae, ja os dispositivos de entrada, saıda earmazenamento secundario sao conectados na placa mae atraves de cabos.

A placa mae e, em geral, localizada dentro do gabinete dos computadoresde mesa (Fig. 2.21) ou abaixo do teclado nos Laptops (Fig. 2.22).

Ja para os sistemas embarcados a integracao entre os componentes variamde acordo com o sistema computacional.

19

Page 32: Bases Computacionais da Ciência

Figura 2.13: Unidade Central de Processamento ou CPU dos computadorespessoais

Figura 2.14: Microship dos Smart Cardl

2.3.2 Software

Softwares sao programas de computadores que permitem explorar os recursosdos hardwares, executar determinadas tarefas e resolver problemas de formaautomatica.

E atraves do software que interagimos com a maquina e tornamos o sis-tema computacional operacional.

Os tres principais tipos de softwares sao: softwares de sistema, softwaresde aplicacao e softwares de servico.

Os softwares de sistema permite interagir com os componentes de hard-ware do computador, exemplos desses softwares: BIOS, Drivers, SistemaOperacional.

O mais importante software de sistema e o Sistema Operacional (SO).O SO e responsavel por gerenciar os recursos computacionais e fazer a co-

Figura 2.15: Dispositivo de armazenamento Principal - Memoria RAM

20

Page 33: Bases Computacionais da Ciência

Figura 2.16: Dispositivo de armazenamento Secundario - HD ou Disco Rıgido

Figura 2.17: Dispositivo de armazenamento Secundario - HD Externo

municacao (ou interface) entre os componentes de hardware e os aplicativos.Sem um sistema operacional, nao e possıvel utilizar os softwares de aplica-cao instalados em um computador. No mercado, existem varios sistemasoperacionais, a Tabela2.1 mostra os mais comuns.

Os softwares de aplicacao ou aplicativos sao 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. ATabela2.2 mostra exemplos de alguns aplicativos e suas funcionalidades.

Existem tambem os aplicativos embarcados, que sao aqueles destinadosa funcionar dentro de um sistema computacional embarcado (celulares, gps,eletrodomesticos, etc). Exemplos desses softwares: aplicativo para envio de

Figura 2.18: Dispositivo de armazenamento Secundario - Pen Drive

21

Page 34: Bases Computacionais da Ciência

Figura 2.19: Dispositivo de armazenamento Secundario - Cartao de Celuar

Figura 2.20: Dispositivo de armazenamento Secundario - Placa Mae

mensagens de um celular para outro, aplicativo para emitir rotas em umGPS, aplicativos de autenticacao dos smart cards.

Os softwares de servico, tambem chamados de aplicativos web, sao aquelesque nao precisam ser instalados em um sistema computacional e sim utiliza-dos diretamente na Internet atraves de um navegador. Exemplos: Google,Google Maps, Tidia.

Figura 2.21: Gabinete dos computadores de mesa onde e localizado Placamae

22

Page 35: Bases Computacionais da Ciência

Figura 2.22: Localizacao da placa mae em um computador portatil

Sistema Operacional Sistema ComputacionalWindows Computadores de mesa e portateis

Linux Computadores de mesa e portateisMac OS Computadores de mesa e portateis

Windows Tablet Edition TabletsGoogle Andorid Tablets, celulares

iOS Tablets, celularesWindows Embedded Sistemas embarcados (GPS, eletrodomesticos, celulares, etc)

Tabela 2.1: Exemplos de Sistemas Operacionais

2.3.3 Exemplo de Funcionamento de um Sistema

Computacional e Seus Componentes

Essa secao apresenta um exemplo do funcionamento de um sistema compu-tacional inserido em um contexto real. O objetivo principal do exemplo emostrar a integracao dos componentes de hardware e de software. Para esseexemplo considere:

� O sistema computacional como sendo um computador pessoal.

� O contexto como sendo o uso de um software aplicativo para editartextos (editor de texto).

Normalmente, para utilizar um editor de texto em um computador pessoale necessario executar os 4 passos descritos abaixo.

Passo 1 - Ligar o ComputadorAo ligar o computador, o sistema operacional e carregado na memoria

RAM (memoria principal) passando assim a ser possıvel interagir com outroscomponentes computacionais.

Passo 2 - Abrir o Editor de TextoO editor de texto e um software de aplicacao que ao ser aberto (Fig.

2.23) tambem passa a ser armazenado na memoria RAM. Nesse momento,

23

Page 36: Bases Computacionais da Ciência

Aplicativo Funcionalidade ExemplosNavegadores Acessar sites na Internet Internet Explorer,

FireFox, Google Crome, OperaEditores de Texto Editar documentos Br Office Writer, Word Pad,

Bloco de Notas, Microsoft WordPlanilhas eletronicas Realizar calculos, plotar graficos, Br Office Calc,

analisar dados Microsoft ExcelProcessadores de imagens Criar e editar imagens Microsoft Paint, Adob Photoshop

Tabela 2.2: Exemplos de Aplicativos

suas informacoes podem ser compartilhadas com os outros componentes. Aescrita de um texto nada mais e do que a entrada de dados em um sistemacomputacional. Neste caso, essa entrada e feita atraves do teclado (disposi-tivo de entrada). Ja a saıda de dados e realizada atraves de um monitor devıdeo (dispositivo de saıda). A comunicacao entre os dispositivos de entradae dispositivo de saıda e realizada pelo sistema operacional (neste exemplo oWindows) e pela placa mae no caso dos computadores pessoais.

Passo 3 - Processar textoO processamento do texto e realizado atraves das funcoes de formatacao

do editor de texto. Neste exemplo, essas funcoes sao: aumentar o tamanhoda fonte para 18 e mudar cor da fonte para vermelho (Fig. 2.24). Esseprocessamento e realizado pela unidade de processamento (CPU).

Passo 4 - Salvar o textoAte o passo 3, tudo que foi realizado com o editor de texto esta arma-

zenado somente na memoria RAM. Essa memoria e volatil, ou seja, o textoformatado sera perdido caso o computador seja desligado. Para que o sis-tema seja desligado sem existir perda de informacoes, e necessario armazenaro texto na memoria secundaria (neste exemplo HD) . Para isso, basta execu-tar o procedimento de salvar o texto (Fig. 2.25).

2.4 Organzacao da Ciencia da Computacao

De acordo com o currıculo de referencia da ACM (Association for ComputerMachinery) (??), a computacao pode ser dividida em 14 areas: 1-EstruturasDiscretas (ED), 2-Fundamentos da programacao (FP), 3-Algoritmos e Com-plexidade (AC), 4-Organizacao e Arquitetura dos Computadores (OA), 5-Sistemas Operacionais (SO), 6-Computacao Centrada em Redes (CR), 7-Linguagem de Programacao (LP), 8-Interface Humano Computador (IH),9-Computacao Grafica e Visual (GV), 10- Sistemas Inteligentes (SI), 11-

24

Page 37: Bases Computacionais da Ciência

Figura 2.23: Abrir Editor

Figura 2.24: Processar Texto

Gestao e Administracao da Informacao (GI), 12-Questoes Sociais e Profis-sionais (SP), 13-Engenharia de Software (ES) e 14-Ciencia Computacional(CC).

Neste livro, essas 14 areas foram agrupadas em dois grupos: Grupo dasareas de Softwares e Grupo das areas de Hardware. A Fig. 2.26 demonstraclaramente essa divisao.

Observa-se que pela Fig. 2.26, que a ciencia da computacao enfatiza asareas pertencentes ao grupo de software. Esse grupo preocupa-se basicamentecom a producao de diferentes tipos de softwares como, por exemplo: sistemasoperacionais, aplicativos convencionais, aplicativos para sistemas embarcadose aplicacoes web. Veja Tabela2.2 para recordar exemplos desses aplicativos.

Por possuir muitas areas, o grupo de software foi agrupado nesse docu-

25

Page 38: Bases Computacionais da Ciência

Figura 2.25: Salvar Texto

Figura 2.26: Divisao das areas em Ciencia da Computacao

mento em 6 subareas: Computacao Cientıfica, Interface Grafica, Desenvol-vimento de Sistemas, Teoria da Computacao, Sistemas Inteligentes, Gestaoe Administracao da Informacao e Questoes Sociais e Profissionais . A Fig.2.27 mostra a subdivisao do grupo de areas de softwares.

2.4.1 Areas de Software

Computacao CientıficaA area de computacao cientıfica reune conceitos fundamentais da ciencia

da computacao e possui forte conexao com a matematica discreta. Algunsconceitos dessa area de conhecimento sao: funcoes, teoria dos conjuntos,logica, teoria dos grafos e probabilidade discreta, analise de algoritmos, crip-tografia, algoritmos paralelos, modelagem e simulacao e pesquisa operacional.

Exemplo de aplicacoes:

26

Page 39: Bases Computacionais da Ciência

Figura 2.27: Divisao das areas em Ciencia da Computacao

� Simulacao de reproducao de uma cultura de bacteria baseado no jogoda vida: http://code.google.com/p/lazbacterias/

� Simulador neuromuscular: http://remoto.leb.usp.br/remoto/index.html

Desenvolvimento de SistemasO desenvolvimento de sistemas reune conceitos relacionados a algoritmos,

implementacao de sistemas computacionais e processos de desenvolvimento.Alguns conceitos dessa area de conhecimento sao: algoritmos, estruturas dedados, recursividade, programacao orientada a objetos, fundamentos e segu-ranca da informacao, paradigmas de programacao e engenharia de software.

Exemplo de aplicacoes:

� JMOL - Quımica (estruturas moleculares): http://jmol.sourceforge.net/

� Aplicacoes de Cognicao (neuroimagens, neurofisiologia)

� Aplicacoes em Fısica (dinamica de fluıdos):

� Aplicacoes para celulares

� Aplicacoes para GPS

� Aplicacoes para TV Digital

� Aplicacoes Internet

Gestao e Administracao da InformacaoEssa area fornece o entendimento de como armazenar, organizar e buscar

os dados em sistemas computacionais. Alguns conceitos abordados nessa area

27

Page 40: Bases Computacionais da Ciência

de conhecimento: sistema de banco de dados, modelagem de dados, minera-cao de dados, hipermıdia, arquitetura da informacao, bibliotecas digitais.

Exemplo de aplicacoes:

� Um supermercado pode analisar os dados de consumo de seus clientespara identificar quais novos produtos devem oferecer a cada um deles.

Interface GraficaA area de Interface grafica reune conceitos para o desenvolvimento de

sistemas graficos, realidade virtual, processamento de imagens, design, avali-acao de usabilidade e acessibilidade. Alguns conceitos abordados nessa areade conhecimento: interface-humano computador, processamento de imagens,animacao por computador, realidade virtual, computacao grafica.

Exemplos de aplicacoes:

� Software para leituras em voz de sites web: http://webanywhere.cs.washington.edu/

� Visualizacao das arterias coronarias epicardicas em contraste de micro-bolhas 3D imagens ecograficas para auxiliar no diagnostico.

Sistemas InteligentesEssa area apresenta tecnicas para desenvolver sistemas que reproduzem a

capacidade racional do ser humano para resolver problemas. Alguns concei-tos abordados nessa area de conhecimento: representacao do conhecimento,aprendizagem de maquina, robotica, agentes Inteligentes.

Exemplos de aplicacoes:

� Software que joga xadrez

� Futebol de robos

� Busca inteligente na Web (Google)

Questoes Sociais e Profissionais (SP)Essa area fornece conhecimento de como um profissional de ciencia da

computacao devera comportar-se eticamente no mercado, aborda questoesrelacionadas com crimes virtuais e questoes sociais. Alguns conceitos abor-dados nessa area de conhecimento: historica da computacao, etica, crimina-lidade na computacao.

Exemplos de aplicacoes:

� Compuacao Verde

� Direito de propriedade de softwares e materiais disponıveis na Internet

� Computacao Forense

28

Page 41: Bases Computacionais da Ciência

2.4.2 Areas de Hardware

As areas pertencentes ao grupo de hardware preocupam-se com o entendi-mento dos componentes dos sistemas computacionais, suas caracterısticas,desempenho e interacoes. Tambem possui enfase na infraestrutura, conexaoe seguranca de redes (Internet, redes sem fio, conexoes, etc). Alguns concei-tos abordados nessa area de conhecimento: logica e representacao dos dados,arquitetura e organizacao de computadores, multiprocessamento, gerencia-mento de memoria, sistemas de arquivos, tolerancia a falhas, forense digital,redes de comunicacao, seguranca de redes, administracao de redes, computa-cao movel e sem fio, sistemas paralelos e distribuıdos, compreender o modelode programa armazenado de von Neumann e sua relacao com as arquiteturae organizacao de computadores de uso geral.

Exemplos de aplicacoes:

� Suporte de equipamentos

� Redes de computadores (sem fio, internet, etc)

2.5 Exercıcios da Aula Pratica

Esta atividade tem por objetivo possibilitar ao aluno interagir com um tipo deSofware classificado como Ambiente Virtual de Aprendizagem (AVA). AVAssao sistemas computacionais que possuem diversos recursos para apoiar aeducacao, tais como:

� Repositorios - Locais onde o professor pode depositar arquivos commateriais instrucionais utilizados nas aulas, material de apoio, etc;

� Escaninhos - Pastas individuais onde o estudante pode guardar mate-riais que podem ser visualizados pelo professor;

� Exercıcios - Nessa ferramenta o estudante realizar exercıcios que pode-rao ser corrigidos automaticamente com feedback imediato;

� Forum - Nessa ferramenta os estudantes poderao debater sobre diversosassuntos propostos pelo professor ou pelos proprios colegas.

� Mensagens - Nessa ferramenta os estudantes poderao trocar mensagenscom o professor e tambem com os colegas. As mensagens enviadas erecebidas ficam no ambiente e podem, opcionalmente, ser enviadas parao e-mail dos destinatarios.

29

Page 42: Bases Computacionais da Ciência

Nessa atividade o aprendiz sera guiado na exploracao de algumas ferra-mentas do AVA utilizado pela UFABC, denominado TIDIA-AE. Durante aatividade o aluno devera utilizar os diversos conceitos estudados nesse capı-tulo.

Para realizar essa atividade siga as instrucoes que seguem:

2.5.1 Cadastro e Configuracao de Perfil no TIDIA-AE

Para acessar o ambiente TIDIA-AE da UFABC, carregue um navegador deinternet e acesse o seguinte endereco: http://tidia.ufabc.edu.br

Cadastrando-se no TIDIA-AE

A tela da Figura 2.28 devera aparecer. Selecione a opcao ”New Account”(destacadona figura 2.28).

Figura 2.28: Tela Inicial do Ambiente TIDIA-AE da UFABC

Preencha os campos obrigatorios: Identificacao do Usuario e Senha (logine password) conforme figura 2.29.

Apos criar a conta, o novo usuario sera automaticamente conectado aoambiente. Caso nao seja conectado, siga as instrucoes do item 2.5.1.1 Conectando-se ao TIDIA-AE.

2.5.1.1 Conectando-se ao TIDIA-AE

Para conectar-se ao ambiente apenas digite o seu usuario e senha nos camposadequados conforme figura 2.30.

30

Page 43: Bases Computacionais da Ciência

Figura 2.29: Tela de Cadastramento de Usuario - TIDIA-AE

Figura 2.30: Tela de Login (conexao) - TIDIA-AE

2.5.1.2 Configurando o TIDIA-AE - Idioma

E possıvel fazer algumas configuracoes de preferencias em relacao ao ambienteTIDIA-AE conforme figura 2.31. Por exemplo, pode-se configurar qual oidioma que se deseja utilizar no ambiente.

A figura 2.32 exibe os passos para configurar o idioma para Portugues doBrasil.

2.5.1.3 Configurando o Perfil do Usuario

Recomenda-se preencher os dados do perfil do Usuario, principalmente o e-mail, de forma que os outros participantes e especialmente o professor, pos-sam ter mais informacoes a respeito do usuario e possam enviar mensagens,etc. A figura 2.33 apresenta a tela e os passos necessarios para acessar operfil.

31

Page 44: Bases Computacionais da Ciência

Figura 2.31: Tela de Configuracao do Ambiente (Preferencias) - TIDIA-AE

Figura 2.32: Tela de Configuracao do Idioma - TIDIA-AE

2.5.2 Inscricao em Disciplinas

Para ter acesso as atividades e materiais instrucionais de cada disciplina enecessario estar inscrito como participante da mesma. O usuario pode serinscrito pelo professor ou pode inscrever-se caso a disciplina esta aberta aopublico para inscricao.

Para inscrever-se em uma disciplina aberta ao publico siga os seguintespassos conforme figura 2.34 :

a) No menu lateral selecione a opcao ”Onde Participo”(My Worksites) -Passo 1 na figura

b) Selecione a opcao ”Sites que Aceitam inscricao- Passo 2 na figura

32

Page 45: Bases Computacionais da Ciência

Figura 2.33: Tela de Configuracao do Perfil - TIDIA-AE

c) Localize a disciplina (site) em que deseja inscrever-se

ATENCAO:Verifique com o professor qual o NOME da disciplina em que voce devese inscrever.

d)Selecione a opcao ”Inscrever-se- Passo 3 na figura.

Figura 2.34: Tela de Inscricao em Disciplina (site) - TIDIA-AE

Apos concluir a incricao, a nova aba da disciplina na qual se inscreveudeve aparecer conforme mostra a figura 2.35.

Observe o menu lateral que existe relacionado a aba da disciplina con-forme exibido na figura 2.36. As diversas opcoes desse menu serao exploradasa seguir.

33

Page 46: Bases Computacionais da Ciência

Figura 2.35: Aba da Nova Disciplina (inscricao) - TIDIA-AE

Figura 2.36: TIDIA-AE - Menu Lateral

2.5.3 Atividades no TIDIA-AE

Estando inscrito corretamente na disciplina voce estara apto para realizar asatividades propostas para essa aula. Siga as instrucoes.

2.5.3.1 Forum

Forum e uma ferramenta de interacao entre os participantes. Nela, temas dediscussao podem ser propostos de forma que os participantes possam colocarsuas opinioes e tambem comentar as respostas dos outros. E considerada uma

34

Page 47: Bases Computacionais da Ciência

ferramenta colaborativa de aprendizagem, uma vez que possibilita aprendercom o outro.

A figura 2.37 apresenta a tela de acesso ao forum.

Figura 2.37: Tela de Forum - TIDIA-AE

No forum proposto para essa aula, cada participante devera fazer umabreve apresentacao pessoal alem de compartilhar com seus colegas as razoesque o levaram a escolher estudar na UFABC.

Para acessar o forum veja os passos indicados na figura 2.38.

Figura 2.38: Tela do Forum ”Porque Escolhi a UFABC

35

Page 48: Bases Computacionais da Ciência

Eis alguns exemplos de assuntos que voce pode usar na sua apresentacao.

a) Nome que gosta de ser tratado (chamado)

b) Cidade Natal e ou Cidade de Origem (residencia)

c) Formacao Secundaria (colegial, tecnico em tal especialidade, etc).

d) Time de Futebol e/ou Lazer Preferido (estilo de filme, cantor preferido,etc).

Lembre-se de fechar a sua participacao respondendo a pergunta: Porqueescolhi a UFABC?Durante a semana, lembre-se de ler as apresentacoes de seus colegas aquino FORUM e fique a vontade para fazer comentarios sobre as respostas doscolegas.Algumas questoes guias para seus comentarios sao:

a) O que voce achou do motivo pelo qual seu colega escolheu a UFABC?

b) O que ha de comum entre sua resposta e a do seu colega?

c) Voce possui gostos comuns com seus colegas.

2.5.3.2 Exercıcios

A ferramenta de Exercıcios propicia ao estudante responde a questoes dispo-nibilizadas pelo professor. Para acessar os Exercıcios siga os passos exibidosna figura 2.39.

Nessa atividade estao disponıveis 10 questoes sobre o tema estudado naaula de hoje. Essa avaliacao tem finalidade formativa, ou seja, orientar osseus estudos. Faca o seu melhor para tentar acertar cada resposta, mas fiqueatento ao feedback.

A pos selecionar a avaliacao a responder, de um clique no botao ”IniciarAvaliacao”conforme mostrado na figura 2.40.

Apos responder, pode-se ”Enviar para Atribuicao de Nota”ou ”Salvar paravoltar depois”(save for later) conforme figura 2.41. Note, no entanto, que cadaavaliacao pode ter um tempo limite para sua conclusao.

2.5.4 Explorando outras Ferramentas do TIDIA-AE

O TIDIA-AE possui diversas outras ferramentas que serao utilizadas no de-correr do curso. Algumas delas sao apresentadas a seguir e voce poderaexplora-las a seu tempo.

36

Page 49: Bases Computacionais da Ciência

Figura 2.39: Tela de Exercıcios - TIDIA-AE

Figura 2.40: Tela de Exercıcios (Iniciar Avaliacao) -TIDIA-AE

2.5.4.1 Repositorio

A ferramenta de Repositorio permite que o professor disponibilize recursos(apostilas, slides, arquivos em geral) que podem ser acessados por todos osparticipantes do curso. O TIDIA-AE permite aos participantes apenas ”ler”(efazer download) desses arquivos. Mas nao permitem que possam ”gravar”nadano repositorio.A figura 2.43 exibe como acessar o repositorio.

37

Page 50: Bases Computacionais da Ciência

Figura 2.41: Tela de Exercıcios (Responder e Avancar) - TIDIA-AE

Figura 2.42: Tela da ferramenta Repositorio - TIDIA-AE

2.5.4.2 Escaninho

A ferramenta de Escaninho permite que o estudante disponibilize recursos(trabalhos, respostas de exercıcios, arquivos em geral) para o professor. Noescaninho, o estudante pode tambem guardar (em arquivos) suas ”anota-coes”sobre a disciplina, etc. O TIDIA-AE nao permite que outros partici-pantes (a nao ser o professor) tenham acesso a esses arquivos.A figura 2.43 exibe como acessar o escaninho.ATENCAO: Ao disponibilizar recursos no escaninho, caso voce necessite que

38

Page 51: Bases Computacionais da Ciência

o professor veja o material, voce deve avisa-lo atraves de uma mensagem.Nao e usual que o professor verifique os escaninhos de todos os alunos, a naoser que seja avisado para faze-lo ou que o proprio tenha solicitado ao alunopara depositar os arquivos no repositorio.

Figura 2.43: Tela da ferramenta Escaninho - TIDIA-AE

2.5.4.3 Atividades

Na ferramenta Atividades normalmente o professor disponibilizar ”tarefas”quedevem ser realizadas pelos alunos e submetidas para que o professor avalie.Acesse a ferramenta conforme ilustrado na figura 2.44 e note que ha umaatividade disponıvel para que voce realize no decorrer da semana.

Nessa atividade voce devera realizar uma pesquisa sobre uma area daCiencia da Computacao de sua escolha. Mais detalhes estao disponıveis napropria atividade no TIDIA-AE. Fique atento ao prazo para submissao.

2.5.4.4 Mensagens

Na ferramenta Mensagens e possıvel ler as mensagens recebidas do professore dos colegas, bem como enviar mensagens para um ou mais participantes.Ao escrever uma mensagem pode-se indicar para a ferramenta que uma copiada mesma seja enviada para o e-mail do(s) destinatario(s).A figura 2.45 mostra como acessar a ferramenta Mensagens.

39

Page 52: Bases Computacionais da Ciência

Figura 2.44: Tela da ferramenta Atividades - TIDIA-AE

Figura 2.45: Tela da ferramenta Mensagem - TIDIA-AE

2.5.4.5 Avisos

Nessa ferramenta o participante podera visualizar os Avisos deixados peloprofessor. Normalmente, esses avisos poderao ser acessados diretamente apartir da tela inicial. Outra maneira e atraves do menu lateral, conformemostra a figura 2.46.ATENCAO:Note o sımbolo de ”reciclagem”que existe acima do numero (1). Esse sımbolo

40

Page 53: Bases Computacionais da Ciência

funciona como se fosse uma opcao para recarregar (reload) as opcoes (menu,listas, etc) da ferramenta atual. Isso vale para qualquer ferramenta.

Figura 2.46: Tela de Avisos - TIDIA-AE

2.5.4.6 Participantes

Na ferramenta Participantes e possıvel visualizar quem sao os outros par-ticipantes (colegas de turma) do curso, bem como ter acesso ao seu e-mail,etc.

2.6 Consideracoes Finais

A secao 2 desse capıtulo relatou os fundamentos da computacao como Modelode Turing, Von Newman e o Historico da Computacao. Esses fundamentossao antigos, mas apesar da evolucao tecnologica, ainda sao utilizados comoreferencial teorico nos dias de hoje.

Na secao 3 foram apresentados diversos sistemas computacionais comodesktops, laptops, tablets e alguns dispositivos embarcados (celular, smartlabel). Tambem foi descrito sobre os componentes de hardwares e softwaresde um sistema computacional e a interacao entre eles.

A secao 4 apresentou a divisao da ciencia da computacao em 14 areas doconhecimento. Essa secao demostrou, atraves de exemplos, o potencial deaplicacao da area da Ciencia da Computacao em outras areas do conheci-mento.

Em suma, este capıtulo demonstra que a computacao e uma ciencia quepossui fortes fundamentos, esta evoluindo rapidamente e ficando cada diamais ubıqua.

No proximo capıtulo sera estudado representacao grafica de funcoes. Esseassunto pode ser considerado como uma abordagem da computacao cientıfica

41

Page 54: Bases Computacionais da Ciência

mostrada na secao 4 do Capıtulo 1. O Capıtulo 2 tambem mostrara comoaplicar os conceitos de graficos e funcoes utilizando um software pra desktopchamado de Scilab.

2.7 Conjunto de Praticas

1. Descreva um exemplo de funcionamento de um sistema computacionale seus componentes considerando como sistema computacional um celular ecomo processamento o envio de mensagens de texto (SMS). Utilize o topico3.3 como modelo.

2. Descreva mais 2 outros exemplos de funcionamento de um sistemacomputacional e seus componentes. Procure ser original e criativo.

3. Assista o vıdeo sobre a historia dos computadores e responda a questao:Como voce imagina o futuro dos sistemas computacionais? Vıdeo disponıvelem: http://www.youtube.com/watch?v=F3qWg1JBPZg

4. O Google sites e um exemplo de software de servico. Utilize essesoftwares para criar uma pagina Web com seu currıculo. Siga o tutorialdisponıvel no link: http://www.youtube.com/watch?v=B4WmVeBxGqM

5- Responda: o que e computacao ubıqua?6- Procure na Internet exemplos de sistemas computacionais que sao utili-

zados nas seguintes areas do conhecimento: Base Experimental das CienciasNaturais, Bases Epistemologicas da Ciencia Moderna, Bases Matematicas,Estrutura da Materia e Origem da Vida e Diversidade dos Seres Vivos. Enecessario pelo menos um exemplo de cada area.

7- Classifique os sistemas encontrados no exercıcio 6 em uma das 6 suba-reas de software estudadas na secao 4 deste capıtulo.

42

Page 55: Bases Computacionais da Ciência

3 Representacao Grafica de Funcoes

Aline NevesIrineu Antunes Junior

Marcio Eisencraft

—– Universidade Federal do ABC

Neste capıtulo, discutimos questoes envolvidas na representacao graficade funcoes e mostramos alguns casos onde tais graficos podem ser uteis noauxılio do entendimento de um problema. E apresentada uma ferramentacomputacional que permite realizar calculos cientıficos e graficos de maneirarapida e pratica.

3.1 Introducao

A Ciencia e a Engenharia sempre buscam modelar fenomenos naturais efısicos por funcoes matematicas 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, propagacao de ondas, movimento de corpos, cresci-mento de populacoes, alem de muitos outros. Muitas vezes, dado o modelomatematico de um sistema, encontramos a necessidade de visualizar o com-portamento do mesmo, ou entao precisamos encontrar uma solucao mas naosabemos ao certo por onde comecar a procura-la. Nestes casos, graficos dasfuncoes em questao podem auxiliar no entendimento e podem, inclusive, for-necer uma primeira aproximacao para a solucao procurada.

Suponha, por exemplo, que deseja-se prever a taxa de crescimento de umafaixa socio economica da populacao num perıodo de anos nao abordado numapesquisa. Seria necessario fazer um modelo matematico em cima do graficoobtido com os dados disponıveis para se conseguir a informacao desejadaatraves de uma extrapolacao. A figura 3.1 ilustra tal processo.

Exemplo 1 Para iniciar este estudo, considere um caso bastante simplesde um movimento uniformemente variado definido pela equacao:

s = s0 + v0t +at2

2(3.1)

onde s e a posicao atual do corpo em movimento, s0 e a posicao na qual elecomecou o movimento, v0 e a sua velocidade inicial, a e sua aceleracao e t

43

Page 56: Bases Computacionais da Ciência

Figura 3.1: Exemplo de extrapolacao: os pontos cheios sao os dados dapesquisa realizada entre os anos de 2000 e 2009; a curva cheia e uma funcaomatematica que descreve os dados obtidos nestes anos; a curva tracejada e afuncao extrapolada em datas futuras; os pontos vazios sao os dados futuros(desconhecidos).

e o tempo decorrido desde o inıcio do movimento. Como exemplo, vamossupor s0 = 0, v0 = 20 m/s e a = −5 m/s2, ou seja, o corpo esta freando.Se quisermos visualizar como a posicao s ira variar em funcao do tempo t,podemos fazer um grafico relacionando estas duas grandezas. A figura 3.2ilustra o movimento em questao. Observando o grafico, podemos facilmenteobter algumas caracterısticas do movimento: como o corpo esta freando, aposicao maxima que ele ira atingir e s = 40 m e ele levara 4 segundos paraatingi-la, como mostrado pelo ponto (b) na figura 3.2. Neste ponto a suavelocidade sera nula. A partir daı, a aceleracao negativa pode ser vista comouma aceleracao em sentido contrario e, portanto, o corpo comecara a voltare atingira a posicao s = 0 novamente em t = 8 s (ilustrado pelo ponto (c) nafigura). Os dados observados graficamente podem ser facilmente conferidosatraves da substituicao dos valores citados na equacao (3.1). Em particular,os instantes em que s = 0 sao facilmente encontrados calculando-se as raızesda equacao.

Em alguns casos, no entanto, a resolucao analıtica do problema pode serbastante complicada, senao impossıvel.

Exemplo 2 Considere, por exemplo, a obtencao das raızes, ou seja, dospontos nos quais a seguinte funcao se anula:

f (x) = sen(x) + cos(1 + x2)− 1 (3.2)

44

Page 57: Bases Computacionais da Ciência

0 1 2 3 4 5 6 7 80

5

10

15

20

25

30

35

40

Tempo (s)

s (m

)

(a)

(b)

(c)

Figura 3.2: Espaco em funcao do tempo para um movimento uniformementevariado. Em (a) e (c) temos os pontos onde o corpo esta em s = 0, enquantoque (b) ilustra o valor maximo de s

Neste caso, o grafico da funcao pode ser util para auxiliar a solucao do pro-blema. Observando o grafico 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 grafico (figura 3.4), vemos que a primeira raiz se encontraem 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: Grafico 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 x

2

Figura 3.4: Regiao em torno das raı-zes de (3.2)

Por outro lado, nem sempre esta abordagem e possıvel. Tecnicas mais

45

Page 58: Bases Computacionais da Ciência

sofisticadas de busca de raızes de funcoes sao estudadas na disciplina deCalculo Numerico.

Um grafico tambem pode auxiliar na visualizacao de um problema mesmoque nao se conheca seu modelo em detalhes. Atraves do grafico, tem-se umaideia do comportamento geral de sistemas empregados na pratica. Este e ocaso dos exemplos abaixo.

Exemplo3 Suponha que um elevador sera usado para levar uma carga ao4◦ andar de um edifıcio.

Na Figura 3.5 e mostrado o comportamento de tres elevadores diferentesapos receberem um comando que solicita que o elevador se desloque para o4◦ andar.

0 5 10 150

1

2

3

4

5

6

tempo (segundos)

An

dar

comandoElevador 1Elevador 2Elevador 3

Figura 3.5: Resposta de tres elevadores a um comando.

Pense em voce dentro de um destes elevadores. Qual proporcionaria aviagem mais eficiente e confortavel? Claramente, o Elevador 2 nao e la umaboa escolha. Veja que ele passa muito do 4◦, volta e ainda fica chacoalhandoantes de parar. O Elevador 3 vai exigir do seu ocupante uma larga dose de

46

Page 59: Bases Computacionais da Ciência

paciencia ja que ele demora muito para atingir o andar desejado. Dentre osapresentados, o Elevador 1 e a melhor opcao ja que ele alcanca o 4◦ andarnum tempo razoavelmente curto e sem oscilacoes. Veja que todas estas in-formacoes foram obtidas do grafico da Figura 3.5. Em cursos posteriores,voce vai aprender que estas tres respostas chamam-se criticamente amorte-cida (Elevador 1), subamortecida (Elevador 2) e superamortecida (Elevador3).

Exemplo 4 - Dispositivos eletricos podem ser caracterizados pelos valoresde tensao e corrente medidos nos seus terminais. Por exemplo,

1. Na figura 3.6.a, apresentamos os valores medidos de tensao (VL) ecorrente (IL) nos terminais de uma lampada incandescente. Deve-se comentarque uma lampada incandescente possui valores nominais de operacao quesao impressos no seu bulbo. No entanto, na pratica, o valor da correnteconsumida depende da tensao que e efetivamente aplicada.

2. A figura 3.6.b representa os valores de tensao (VG) e corrente (IG)medidos nos terminais de um gerador.

Deseja-se ligar o gerador na lampada. Neste caso, durante a operacao docircuito, deve-se ter VL = VG e IL = IG. Como encontrar o valor de correntee tensao a que sera submetida a lampada?

Este problema pode ser resolvido graficamente conforme mostrado nafigura 3.6.c na qual sao desenhadas as curvas caracterısticas dos dois dispo-sitivos. O cruzamento das curvas fornece o ponto de operacao (a) indicadoneste grafico. Lendo os valores nos eixos, obtemos que a corrente sera, apro-ximadamente, de 1,2A e a tensao de 98V.

Figura 3.6: Exemplo de lampada ligada a um gerador.

47

Page 60: Bases Computacionais da Ciência

Exemplo 5 Considere a seguinte reacao quımica reversıvel:

2A+B C (3.3)

caracterizada pela relacao de equilıbrio

K =cCc2AcB

(3.4)

onde ci representa a concentracao do componente i (CHAPRA; CANALE, 2008).Na figura 3.7 sao mostrados quantos moles de C sao produzidos dependendodo valor de K. Mesmo nao conhecendo o modelo em detalhes, o grafico per-mite visualizar que a quantidade de C aumenta rapidamente para K entre0.1 e 0.6, diminuindo a taxa de crescimento apos este valor.

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6

x 10−3

0

1

2

3

4

5

6

7

8

9

10

K

mol

es d

e C

Figura 3.7: Numero de moles de C em funcao do valor de K

Existem diversas ferramentas computacionais que podem ser usadas paraproduzir graficos de funcoes, desde planilhas ate programas de simulacao nu-merica bastante avancados como o Matlab®, o Octave® e o Scilab®. Nestecurso, utilizamos o Scilab® para estudar alguns problemas simples para osquais uma primeira aproximacao da resposta pode ser obtida facilmente pormeio de graficos. Antes, no entanto, vejamos como utilizar o Scilab®.

3.2 Emprego do Scilab® para fazer graficos

O Scilab®, assim como o Matlab® e o Octave®, e um software para calculosmatematicos avancados usado em computacao cientıfica e Engenharia. Conta

48

Page 61: Bases Computacionais da Ciência

com bibliotecas de funcoes matematicas prontas, facilidade de programacaoe recursos graficos avancados, facilitando o projeto e analise de sistemas decontrole, processamento de sinais, analise estatıstica de dados e otimizacaode funcoes.

Ao se abrir o programa, logo visualizamos o ambiente de trabalho. Oprompt, representado por uma seta, indica que o programa esta pronto parareceber uma linha de comando como se fosse uma calculadora cientıfica. Aseguir, veremos alguns comandos basicos.

3.2.1 Operadores Basicos

Abaixo, temos alguns exemplos de operacoes matematicas basicas:

� Se digitarmos um comando simples como por exemplo:

--> x=2;

estaremos criando uma variavel real chamada x cujo valor e igual a 2.Uma variavel e sempre composta por dois elementos: um identificador,ou seja, o seu nome, e um conteudo que representa o seu valor. Nocaso mostrado, o identificador da variavel e x e seu valor e igual a 2.Isto significa que foi alocado um endereco na memoria RAM com oconteudo igual a 2, o qual sera referenciado pelo nome x. Podemoscriar variaveis de varios tipos:

– Inteiro: o conteudo da variavel sera dado por um numero perten-cente ao conjunto dos numeros inteiros Z, como por exemplo -2,0, 34.

– Real: o conteudo da variavel sera dado por um numero pertencenteao conjunto dos numeros reais, como, por exemplo, -234.45, 76,2.7

– Caracter: o conteudo da variavel sera dado por um unico caracter,podendo este ser um caracter numerico (de 0 a 9), alfanumerico(de A a Z, maiusculo ou minusculo) ou especial (como por exemplo%, @, !,etc)

– String: o conteudo da variavel sera dado por um conjunto de ca-racteres numericos, alfanumericos ou especiais como, por exemplo,Nao pise na grama, grafico.

– Logico: o conteudo da variavel so pode assumir os valores ver-dadeiro, representado pelo numero 1, ou falso, representado por0.

49

Page 62: Bases Computacionais da Ciência

No caso do software Scilab®, tambem e possıvel se criar variaveis dotipo String ou caracter, mas como o objetivo e se executar calculosmatematicos, as variaveis em geral serao reais.

O ponto-e-vırgula ao final da instrucao nao e obrigatorio. Caso ele naoseja colocado, a variavel sera apresentada na tela:

-->x=2

x =

2

Em seguida veremos como, cada vez que mencionarmos o nome davariavel x, estaremos na verdade utilizando o seu conteudo.

� -->y=x+5

y =

7

Esta operacao define y como sendo uma variavel com valor igual aovalor de x mais cinco, ou seja, y tera um valor igual a 7.

� -->z=x*y

z =

14

Neste caso, z sera igual a multiplicacao dos valores guardados em x ey, ou seja, z sera igual a 14.

� -->w=z/x;

w =

7

Aqui, w sera igual a divisao dos valores guardados em z e x, ou seja, wsera igual a 7.

Alem dos operadores acima, o Scilab® possui varias funcoes matematicasque podem ser facilmente utilizadas como:

� logaritmo; Por exemplo: log(16), log10(16)

� exponencial; Por exemplo: exp(-2)

� raız quadrada; Por exemplo: sqrt(4);

� funcoes senoidais; Por exemplo: sin(x), cos(x), tan(x), cotg(x)

50

Page 63: Bases Computacionais da Ciência

3.2.2 Fazendo o grafico de uma funcao simples

Vamos considerar a funcao

f (x) = sen(x) (3.5)

no intervalo x ∈ [0,2π]. Sempre que desejamos produzir um grafico de umafuncao, precisamos, primeiramente, definir em quais pontos gostarıamos devisualizar a funcao, ou seja, para quais valores de x. No Scilab®, existemduas formas para se definir estes valores:

1. Definindo diretamente os pontos x nos quais queremos plotar a funcao.Neste caso basta digitarmos, na linha de comando do Scilab®, direta-mente os valores de x que temos interesse, separados por um espaco eentre colchetes:

--> x=[0 0.5*%pi %pi 1.5*%pi 2*%pi];

No comando acima, escolhemos cinco valores de x para os quais gosta-rıamos de calcular f (x) e, em seguida, construir o grafico. Neste caso, xe chamado de vetor ja que possui mais de um elemento. E interessantenotar que o valor de π, no Scilab®, e obtido precedendo-se a palavrapi do sımbolo %.

2. Definindo um intervalo de valores de x no qual queremos plotar a funcaof (x). Neste caso, podemos usar diretamente o intervalo [0,2π]. Assim,para definir x, podemos usar o seguinte comando em Scilab®:

--> x=primeiro valor do intervalo:passo:ultimo valor do intervalo

Tal instrucao criara um vetor x cujo primeiro valor sera igual ao pri-meiro valor do intervalo. O segundo valor sera dado pelo valor anteriorsomado ao valor do passo. Isto ira se repetir ate que o valor da somaseja igual ou menor do que o ultimo valor do intervalo. Por exemplo,se digitarmos o seguinte comando:

--> x=0:0.5*%pi:2*%pi;

produziremos um vetor exatamente igual ao que foi digitado no exemploanterior. Ja a instrucao:

51

Page 64: Bases Computacionais da Ciência

--> x=0.5:0.25:1.5;

ira fornecer um vetor com os seguintes valores: x = [0.5 0.75 1 1.25 1.5].Outro exemplo interessante seria:

--> x=0:0.2:0.7;

que ira resultar em um vetor x = [0 0.2 0.4 0.6], ou seja, o ultimoelemento sera menor do que o ultimo valor especificado para o intervalo.Isto acontece pois se somarmos o valor do passo mais uma vez, o valorresultante excederia o intervalo especificado.

Note que quanto menor for o valor do passo, mais valores teremos novetor x.

Quando o passo desejado for igual a um, ele nao precisa ser digitado.Por exemplo, a instrucao:

--> x=1:5;

ira gerar um vetor com os seguintes valores: x = [1 2 3 4 5].

Tendo criado um vetor x, precisamos agora encontrar os valores de f (x)nestes pontos. E neste momento que softwares para calculos matematicoscomo o Scilab® facilitam bastante a tarefa: eles sao otimizados para traba-lhar com vetores e matrizes. Assim, a simples instrucao:

--> f=sin(x);

ira gerar um vetor f cujos elementos sao dados pelo seno dos elementosdefinidos em x. Finalmente, podemos fazer o grafico desejado utilizando ocomando:

--> plot(x,f);

em que o primeiro parametro se refere ao eixo das abscissas e o segundo aoeixo das ordenadas.

Resumindo o que foi visto ate aqui, poderıamos produzir o grafico dese-jado utilizando a seguinte sequencia de instrucoes:

52

Page 65: Bases Computacionais da Ciência

Figura 3.8: Grafico da funcao seno

--> x=0:0.01:2*%pi;

--> f=sin(x);

--> plot(x,f);

O grafico resultante e mostrado na figura 3.8.

Para colocar nomes nos eixos dos graficos podemos usar os comandos:

--> xlabel(’nome do eixo x’);

--> ylabel(’nome do eixo y’);

--> title(’nome da janela do grafico’);

Para colocar as linhas de grade no grafico, podemos usar o comando:

--> set(gca(),"grid",[1 1]);

Neste caso, o grafico ficara como apresentado na figura 3.9. O comando set

e utilizado para ajustar o valor de alguma propriedade de um grafico tendo,como parametros, o que se deseja ajustar, a propriedade em questao e o valorque esta deve assumir. Neste caso, o que se deseja ajustar sao os eixos dografico o que e referenciado por gca, a propriedade sao as linhas de grade,ou seja, "grid" e o valor que este parametro deve assumir e [1 1] tornandoas linhas visıveis. Para retirar a grade colocada, basta se usar o comando

--> set(gca(),"auto_clear",[-1 -1]);

53

Page 66: Bases Computacionais da Ciência

Figura 3.9: Grafico da funcao seno

Para alterar a cor da curva no grafico, podemos adicionar um ultimoparametro ao comando plot, dado pela primeira letra da cor desejada emingles. Por exemplo,

-->plot(x,f,’r’);

desenhara a curva em vermelho (red em ingles). Uma excecao acontece paraa curva em preto, ja que, em ingles, azul e preto comecam com a letra b(blue e black). Somente neste caso, portanto, a ultima letra deve ser usada,i.e., para se fazer a curva em preto devemos usar o comando plot(x,f,’k’).Para maiores informacoes sobre o comando plot, digite help plot.

3.2.3 Cuidados com outros tipos de funcoes

Um certo cuidado precisa ser tomado quando precisamos plotar graficos defuncoes que envolvam multiplicacao ou divisao de vetores. Vamos considerar,por exemplo, a funcao f (x) = xex, no intervalo x ∈ [0,1]. Seguindo os passosdiscutidos na secao anterior, temos:

� Criacao de um vetor de valores para x:

--> x=0:0.01:1;

� Calculo de f(x): se digitarmos a instrucao exp(x), teremos um vetorcom os resultados do calculo da exponencial de cada valor existente no

54

Page 67: Bases Computacionais da Ciência

vetor x. Este vetor precisara ser multiplicado por x e, portanto, temosuma multiplicacao de dois vetores: x e exp(x). Neste momento preci-samos tomar um certo cuidado. Se digitarmos a instrucao x ∗ exp(x),o Scilab®, sabendo que sao dois vetores, entendera que desejamos re-alizar uma multiplicacao vetorial entre os dois, o que nao e o caso. Oque queremos e multiplicar os dois termo a termo, i.e., queremos mul-tiplicar o primeiro elemento de x pelo primeiro elemento de exp(x), osegundo elemento de x pelo segundo de exp(x) e assim por diante. Paraconseguir tal resultado corretamente, precisamos utilizar a seguinte ins-trucao:

--> f=x.*exp(x);

Ou seja, o operador multiplicacao ∗ precisa ser precedido de um ponto.O mesmo acontecera se tivermos que calcular a divisao entre dois ve-tores como no caso da funcao f (x) = x/(1+ x2). Assim, um ponto deveser colocado antes do operador /.

Basicamente, toda vez que temos vetores envolvidos e gostarıamos derealizar as operacoes a cada elemento do vetor, precisamos usar o pontoantes do operador em questao. O mesmo vale, por exemplo, quandoqueremos elevar os elementos de um vetor a uma certa potencia. Paracalcular x2, por exemplo, precisamos digitar a instrucao x. 2.

� Por fim, o grafico pode ser realizado usando-se o comando: plot(x,f);

3.3 Atividades em Aula

Vamos usar agora a ferramenta Scilab® para ajudar a resolver alguns pro-blemas interessantes:

Atividade 1 A empresa COLKS e a uma industria automobilıstica do pe-queno paıs chamado Govers em que a moeda oficial e o dubila. O lucromensal da COLKS e funcao do numero de carros produzidos no mes. Elatem um custo fixo de 50 dubilas e um custo variavel funcao do numero decarros produzidos no mes. Usando NC para definir o numero de carros pro-duzidos em um mes, o custo variavel e dado por 48(NC)

0.9. Vamos dizer queela venda cada carro por 50 dubilas. Assim, o seu lucro L mensal e dado por

L = 50NC − 48(NC)0.9 − 50; (3.6)

55

Page 68: Bases Computacionais da Ciência

1. Usando uma calculadora ou o computador, determine o lucro L daCOLKS ao produzir NC = 1, NC = 4 e NC = 10 carros. Interpreteos resultados que voce obteve.

2. Agora faca um grafico de L em funcao de NC para 0 ≤ NC ≤ 20. Apartir de quantos carros mensalmente vendidos a COLKS comeca a terlucro?

3. Analisando o grafico, quantos carros a COLKS tem que produzir nomes para ter um lucro de cerca de 100 dubilas?

Vamos comecar com o item (1). Para obter o valor de L para NC = 1,podemos digitar no Scilab®

-->N_C = 1;

-->L = 50*N_C - 48*(N_C)^(0.9)-50

L =

- 48.

Assim, quando produz apenas 1 carro, a Colks tem “lucro negativo”, ouseja, um prejuızo, de 48 dubilas.

Para NC = 4 e NC = 10,

-->N_C = 4;

-->L = 50*N_C - 48*(N_C)^(0.9)-50

L =

- 17.145708

-->N_C = 10;

-->L = 50*N_C - 48*(N_C)^(0.9)-50

L =

68.722447

Vemos que para 4 carros vendidos a Colks ainda tem prejuızo. Porem, paraNC = 10, ela ja tem lucro de cerca de 68 dubilas.

A seguir, o item (2) pede para fazermos um grafico de L×NC e obtermos apartir de quantos carros a Colks comeca a ter lucro. Pelo item (1) ja sabemosque este numero de carros deve estar entre 4 e 10. Bom, vamos entao fazer ografico no Scilab®. Como o numero de carros vendidos NC deve ser inteiro(afinal, ninguem vende 1/2 carro), vamos usar um passo unitario.

-->N_C = 0:1:20;

-->L = 50*N_C - 48*(N_C).^(0.9)-50;

--> plot(N_C,L);

56

Page 69: Bases Computacionais da Ciência

-->set(gca(),"grid",[1 1])

-->xlabel(’N_C’);

-->ylabel(’L’);

Digitando-se estas linhas, deve-se obter o grafico da Figura 3.10.

Figura 3.10: Grafico obtido no item (2) da Atividade 1.

Nesta figura, vemos que realmente o ponto em que L = 0 (raiz da funcaoL(NC)) esta entre 4 e 10, mais precisamente, um pouco acima de NC = 5.Assim, concluımos que a COLKS comeca a ter lucro quando vende pelo menos6 carros. Caso necessario, use as ferramentas de ampliacao (clique na lupano canto esquerdo da tela).

O item (3) fica facil de ser resolvido com o grafico da Figura 3.10. Paraque L ≈ 100, precisamos de NC = 12 carros.

Encerramos assim esta primeira atividade.

Atividade 2 Um sistema de comunicacao digital binario consiste em umtransmissor e um receptor ligados por um meio fısico (ar, cabo coaxial, fibraotica, etc.) chamado de canal. O transmissor manda informacao na forma

57

Page 70: Bases Computacionais da Ciência

de uma sequencia de 0s e 1s, chamados de bits para o receptor. Devido asdistorcoes e ao ruıdo inserido pelo canal, nem todo bit transmitido e recebidocorretamente: na sequencia de bits, alguns 0s viram 1s e alguns 1s viram 0sno receptor (HAYKIN, 2000).

Uma das formas de avaliar um sistema de comunicacao digital e por meioda taxa de erro de bit, abreviada como BER (do ingles Bit Error Rate). Umataxa de erro de 20%, por exemplo, quer dizer que a cada 100 bits transmitidos20 chegam errados por causa de problemas na comunicacao.

E muito comum quando se estudam sistemas de comunicacao digital,como por exemplo, telefonia celular, TV digital, enlaces de microondas usa-dos em comunicacao bancaria, etc., avaliar como a BER varia em funcaodo ruıdo no canal. Esta quantidade de ruıdo e medida por uma grandezachamada Relacao Sinal-Ruıdo, abreviada por SNR (do ingles Signal-to-NoiseRatio). Quanto menor a SNR mais ruıdo o ambiente adiciona ao sinal trans-mitido.

1. Pelo descrito acima, espera-se que a BER seja uma funcao crescenteou decrescente da SNR?

2. Vamos supor que seja transmitida a seguinte sequencia de bits: [0,0,1,1,1,0,1,1,0,0]. Mas, devido aos problemas descritos acima, receba-se a seguintesequencia: [0,0,1,0,1,0,1,1,1,0]. Quantos bits foram recebidos erro-neamente? Levando em conta estas sequencias, qual a taxa de erro debit (BER)?

Um particular sistema de comunicacao binario apresenta uma BERdada por (HAYKIN, 2000)

BER =12e−SNR/2 (3.7)

3. Quanto a vale a BER para SNR = 0. Interprete este valor.

4. Faca um grafico da BER em funcao da SNR para valores de SNR entre0 e 100. Comente sobre este grafico. E possıvel visualizar bem osvalores da BER?

5. Utilizando o grafico que voce fez no item anterior, responda: qual aSNR necessaria para se chegar a uma taxa de erro de 10−5?

6. Faca agora um grafico de log10(BER) em funcao da SNR. Comente.

7. Repita o item 5usando este ultimo grafico. Comente!

58

Page 71: Bases Computacionais da Ciência

Vamos comecar com o item (1). Pelo descrito no texto, conforme aumen-tamos a SNR, melhora as condicoes do canal. Assim, e de se esperar que osistema tenha menos erros (BER) nesta situacao. Assim, esperamos que aBER seja uma funcao decrescente da SNR.

No item (2) temos duas sequencias de bits. Veja que elas diferem naquarta e na penultima posicao. Assim, temos dois bits recebidos erronea-mente entre os 10 transmitidos e a BER sera 20%.

O item (3) tambem e possıvel fazer diretamente. Veja que para SNR = 0,temos BER = 1

2e0/2 = 1

2 . Assim, quando SNR = 0 a taxa de erros no receptore 50%. Ou seja, ele acerta metade dos bits transmitidos, que e o pior quepode acontecer. Veja que a chance do receptor “adivinhar” qual foi o bittransmitido e acertar e exatamente 50%.

No item (4) pede-se um grafico da BER em funcao da SNR. Vamos aoscomandos no Scilab®:

SNR = 0:0.01:100;

BER = .5*exp(-SNR/2);

plot(SNR,BER);

set(gca(),"grid",[1 1])

xlabel(’SNR’);

ylabel(’BER’);

Voce deve obter um grafico como o da Figura 3.11.Fica difıcil de visualizar os valores de BER para uma SNR ≥ 10. Eles

ficam muito pequenos. Mesmo usando a ferramenta lupa fica difıcil analisaras taxas de erro para SNR elevadas. Assim, fica impossıvel responder o item5.

Uma forma mais pratica de colocar em grafico os valores de BER e dequalquer grandeza fısica que assume valores muito pequenos ou muito gran-des e usar a funcao log. Veja que log10(10n) = n. Assim, se BER = 10−5,log10BER = −5. Vamos entao fazer o grafico de log10(BER) em funcao daSNR.

SNR = 0:0.01:100;

BER = .5*exp(-SNR/2);

plot(SNR,log10(BER));

set(gca(),"grid",[1 1])

xlabel(’SNR’);

ylabel(’log(BER)’);

Obtemos o grafico da Figura 3.12.

59

Page 72: Bases Computacionais da Ciência

Figura 3.11: Grafico obtido no item (4) da Atividade 2.

Agora fica bem mais facil observar os valores da BER. Esta e uma tecnicamuito usada em todas as areas da Ciencia!!

Entao, para responder o item (7), basta observar no grafico qual valor daSNR leva a log10BER = −5. Este valor esta em torno de SNR = 22.

Seguem na proxima sessao varios outros exercıcios para voce treinar aproducao computacional de graficos e a sua interpretacao.

3.4 Exercıcios

1. Usando um grafico, localize as raızes das seguintes funcoes:

(a)

f (x) = e−x − x (3.8)

(b)

f (x) = sen(10x)− cos(3x) (3.9)

60

Page 73: Bases Computacionais da Ciência

Figura 3.12: Grafico obtido no item (6) da Atividade 2.

(c)f (x) = x − cos(x) (3.10)

2. Seja um sistema de coordenadas cartezianas (x, y). Um cırculo C podeser definido analiticamente como o conjunto de pontos que obedecem aequacao

(x − a)2 + (y − b)2 = r2, (3.11)

em que r e igual ao raio e (a, b) sao as coordenadas do centro.

Usando grafico de funcoes, um cırculo pode ser desenhado em duasetapas:

1o fazer o grafico da parte positiva: y+ =√r2 − (x − a)2;

2o fazer o grafico da parte negativa: y− = −√r2 − (x − a)2.

Nas duas etapas, a rigor, deve-se considerar x num intervalo que pro-duza y real, ou seja, x ∈ [a− r, a+ r]. Contudo, na resolucao desteexercıcio, voce pode tomar x ∈R num intervalo suficientemente grande

61

Page 74: Bases Computacionais da Ciência

e considerar apenas a parte real de y. Empregando este metodo, pede-se:

a) Desenhe, num mesmo grafico, o cırculo C1 definido pela equacaox2 + y2 = 1 e o cırculo C2 definido por (x − 1)2 + y2 = 2.

b) Encontre as coordenadas dos pontos de interseccao dos cırculos.(Opcional: o resultado pode ser verificado manualmente usando reguae compasso.)

c) Repita os itens anteriores para C1 : x2 + y2 = 1 e C2 : (x − 1)2 +(y − 2.1973)2 = 2.

3. a) Usando metodo grafico, determine o valor de x que anula o determi-nante da matriz

A =

1 2 34 x 56 x x

. (3.12)

b) Verifique o resultado calculando a resposta por metodo algebrico.

4. As raızes de x2−sin(0.784x2

)−1 podem ser encontradas graficamente.

Com esta finalidade, pede-se: a) reproduza o grafico da Fig. 3.13 e b)usando o seu grafico, encontre as duas raızes da equacao.

Figura 3.13: Graficos usados no Exercıcio 4.

62

Page 75: Bases Computacionais da Ciência

5. Num exercıcio anterior, voce viu como desenhar um cırculo usando duasfuncoes, sendo empregada uma funcao para cada metade do cırculo.Uma maneira alternativa de definir o conjunto de pontos que desenhamo cırculo consiste em empregar o par de senoides

x = r sin(t −π/2) (3.13)

y = r sin(t) , (3.14)

nas quais r e igual ao raio e t e um parametro. Para se obter os pontos(x, y) do cırculo, o parametro t deve ser variado no intervalo [0; 2π].

De maneira mais geral, outras figuras podem ser desenhadas usando opar de senoides

x = Ax sin(ωxt +θx) (3.15)

y = Ay sin(ωyt +θy

), (3.16)

nas quais Ax, Ay , ωx, ωy , θx e θy sao constantes fixadas e t e o para-metro que deve ser variado a fim de desenhar a figura. Pede-se:

a) Usando este procedimento, desenhar um cırculo de raio unitario;

b) No item alterior, use um angulo θ no lugar de π/2. Experimentemodificar θ e verifique o que ocorre com a figura. A partir desta figurae possıvel determinar a defasagem entre as senoides? Como?

c) Empregar Ax = Ay = 1, ωx = 1, ωy = 2, θ1 = θ2 = 0 e reproduzir afigura

d) No item anterior, experimentar ωy = 1 e, em seguida, ωy = 4. Apartir da figura e possıvel determinar a relacao harmonica entre o parde senoides?

6. Os polinomios de Chebyshev podem ser obtidos de maneira recursivapela equacao

Tn+1(x) = 2xTn(x)− Tn−1(x), (3.17)

63

Page 76: Bases Computacionais da Ciência

sendo os polinomios iniciais T0(x) = 1 e T1(x) = x. Pede-se:

a) Para n de 0 a 4, crie uma tabela ou vetor contendo valores de Tn(x)para x entre −1,0 e 1,0 com passo 0,1.

b) Reproduza um grafico o semelhante da Fig. 3.14. Empregue uma cordiferente para cada polinomio.

Figura 3.14: Polinomios de Chebyshev.

7. Para um corpo negro ideal, a Lei de Stefan estabelece a relacao entre aintensidade de radiacao emitida (I) e a temperatura absoluta do corpo(T ): I = σT 4, sendo σ a constante de Boltzman. Para uma dada lam-pada incandescente, com propriedades semelhantes a um corpo negro,fizeram-se medidas de intensidade de radiacao luminosa e temperatura,sendo os valores apresentados na Tab. 3.1.

T (K): 700 1000 1100 1300 1400 1500 1600

I (W/m2): 13500 60000 80000 174000 200000 292000 380000

Tabela 3.1: Dados para verificacao da Lei de Stefan.

a) Faca o grafico de I em funcao de T para os pontos experimentais.Qual tipo de curva descreve o comportamento dessas grandezas?

b) Faca o grafico de Y = log(I) em funcao de X = log(T ). Qual o tipode funcao matematica que pode ser empregada para relacionar Y comX. De a sua expressao generica.

c) A partir do grafico anterior, obtenha uma estimativa para o valorda constante σ , em W/(m2T 4). Pesquise na internet qual o valor daconstante de Boltzman e compare com aquele obtido neste experimento.

64

Page 77: Bases Computacionais da Ciência

8. Quando tentamos determinar a acidez de uma solucao de hidroxido demagnesio em acido clorıdrico, obtemos a seguinte equacao:

A(x) = x3 +3.5x2 − 40 (3.18)

onde x e a concentracao do ıon hidronio. Encontre a concentracao doıon hidronio para uma solucao saturada (acidez nula).

9. A Lei dos Gases Ideais e dada por:

pV = nRT (3.19)

onde p e pressao absoluta, V e o volume, n e o numero de moles,R e a constante universal dos gases e T e a temperatura absoluta.Como tal equacao so e acurada em um intervalo limitado de pressao etemperatura, uma equacao de estado alternativa para os gases e dadapor: (

p+a

ν2

)(ν − b) = RT (3.20)

conhecida como equacao de van der Waals onde ν = V /n e o volumemolar e a e b sao constantes empıricas que dependem do gas em ques-tao. Sabendo que R = 0.082054 L atm/(mol K), e, para o dioxido decarbono, a = 3.592 e b = 0.04267, obtenha o volume molar para umatemperatura de 300K e pressao de 10 atm.

10. Para uma massa de gas ideal mantida a temperatura constante, a Leide Boyle diz que o produto da pressao (p) pelo volume (v) e igual auma constante (k): p.v = k. Para um dado gas, praticamente ideal,fizeram-se medidas de pressao e volume, sendo os valores exibidos naTab. 3.2.

p (N/m2): 470 340 200 130 70 70 50

v (m3): 0,10 0,15 0,25 0,40 0,60 0,80 1,00

Tabela 3.2: Dados para verificacao da Lei de Boyle.

a) Faca o grafico da pressao em funcao do volume para os pontos ex-perimentais. Qual o tipo de curva que descreve o comportamento dapressao em funcao do volume?

b) Faca o grafico da pressao em funcao do inverso do volume. Qual otipo de funcao matematica que pode ser empregada para relacionar apressao com o inverso do volume? De a sua expressao generica.

c) A partir do grafico anterior, obtenha uma estimativa para o valor daconstante k deste experimento.

65

Page 78: Bases Computacionais da Ciência

3.5 Consideracoes Finais

Neste capıtulo, estudou-se como funcoes podem ser usadas para representarfenomenos da natureza. Em especial, o uso de ferramentais computacionaisvoltados a calculos cientıficos permitiu fazer a representacao grafica de fun-coes. Tal representacao, por sua vez, mostrou-se como uma forma valiosade se visualizar o comportamento de fenomenos, permitindo compreende-losmelhor e extrair informacoes. Por exemplo, na Atividade 1, o grafico possibi-litou responder varias perguntas: a partir de quantos carros se comeca a terlucro? Quantos carros deve-se produzir para se ter um dado lucro?, etc. Alemdisto, o grafico tambem permitiu compreender como e o comportamento dasvariaveis envolvidas. Por exemplo, ainda na Atividade 1, observando-se aexpressao (3.6), a princıpio, nao e possıvel saber como e o comportamentodo lucro (L) em funcao do numero de carros produzidos (NC). Por outrolado, a curva L ×NC evidencia que o lucro e sempre crescente, tornando-sepositivo a partir de um certo numero de carros. Ou seja, em alguns casos, umgrafico e uma boa maneira de representar um dado fenomeno, especialmentequando se quer enfatizar o comportamento das variaveis envolvidas.

Na pratica, certos fenomenos naturais e fısicos nao sao representados porfuncoes. Isto pode ocorrer porque:

1. O fenomeno e muito complexo. Por exemplo, o movimento das mole-culas de um gas dentro de um recipiente fechado. Seria extremamente com-plicado equacionar a posicao e velocidade de cada molecula para descrever ocomportamento do gas.

2. A variavel observada e produzida por outro agente, ignorando-se a acaodele sobre a variavel. Por exemplo, numa comunicacao entre duas partes, amensagem recebida e sempre desconhecida por quem a recebe. Neste caso, seo receptor contasse com uma funcao que descrevesse exatamente a mensagem,nao haveria razao para fosse comunicada. Ou seja, mensagens de interessenunca podem ser representadas por uma funcao determinada.

3. O fenomeno e aleatorio por natureza. Por exemplo, o princıpio daincerteza de Heisenberg ensina que e impossıvel se achar uma funcao exataque relacione a posicao e o momento (velocidade) de um eletron.

Em qualquer um destes casos, conforme sera visto no proximo capıtulo, ouso da Estatıstica mostra-se como uma maneira bastante util de se descreveresses fenomenos.

66

Page 79: Bases Computacionais da Ciência

4 Nocoes de Estatıstica, Correlacao e Regressao

Carlos da Silva dos SantosCristiane Otero Reis Salum

Delmo Alves de MouraPeter Claessens

—– Universidade Federal do ABC

4.1 Introducao

Em diversos campos do conhecimento, sao comuns as situacoes em que umadecisao deve ser tomada com base em informacoes parciais. Dados obtidosa partir de um numero relativamente pequeno de exemplos sao usados paraprever comportamento em cenarios ainda nao observados, como ilustradopelos seguintes exemplos:

� Uma montadora prepara um novo modelo de automovel. Para deter-minar se o modelo e seguro, sao realizados ensaios de impacto (crashtests) com prototipos, em que sao medidos parametros de deformacao,aceleracao, forca de impacto sobre passageiros, etc. Esse procedimentosupoe que os prototipos iniciais sao representativos do comportamentodos automoveis fabricados futuramente e, portanto, as consequenciasde um acidente podem ser corretamente avaliadas.

� Um paciente e internado apos um ataque cardıaco; os procedimentosde cuidado envolvem estimar o risco de um novo ataque, considerandodados do prontuario do paciente como: medidas clınicas, historico fa-miliar de doencas cardıacas, dieta, etc. O risco e avaliado a partir deuma serie historica de internacoes de pacientes semelhantes.

� O objetivo de uma pesquisa eleitoral e fornecer um retrato momentaneoda intencao de voto em cada candidato. Em uma pesquisa, apenas umpequeno contigente do eleitorado e entrevistado. Por isso, e impossıveldizer que a verdadeira intencao de voto em um candidato e igual aopercentual obtido por ele na pesquisa. Os numeros de intencao saodivulgados juntamente com a margem de erro da pesquisa, indicandoum intervalo que provavelmente contem a intencao real de voto em cadacandidato.

67

Page 80: Bases Computacionais da Ciência

� Estudos do efeito de novos medicamentos usualmente empregam doisgrupos de pacientes: um grupo recebe o medicamento em questao, en-quanto o segundo (denominado grupo de controle) recebe um compostosem acao nenhuma (placebo). O objetivo de cada estudo e determinarse o medicamento tem um efeito significativo na melhora dos pacientes,em comparacao com o placebo.

O ponto comum a todos os exemplos acima e a incerteza resultante de tra-balharmos com um subconjunto dos dados de interesse. Esse subconjuntoe chamado de amostra, enquanto o conjunto total e chamado de populacao.Em geral, o processo de gerar uma amostra e aleatorio, entao se gerarmosduas amostras distintas para estudar um mesmo processo, provavelmente va-mos obter dois resultados diferentes. Em princıpio, nao podemos dizer queum desses resultados e “mais verdadeiro” que o outro. Para cumprir nossoobjetivo de estudar a populacao por meio da amostra, precisamos reconheceressa variabilidade e incluir um grau de incerteza em nossas conclusoes, poisnao e possıvel verificar se o resultado obtido com a amostra e igual aqueleque obterıamos com a populacao inteira. A estatıstica e um ramo da mate-matica que estuda esse tipo de problema, como podemos usar uma amostrapara tirar conclusoes sobre um universo maior de objetos, levando em contaque sempre ha variacao e incerteza nas nossas medidas.

A estatıstica esta presente na base de toda a ciencia experimental, pois elafornece diretrizes para a coleta de dados, nos permite comparar diferentes hi-poteses e avaliar a precisao dos resultados que obtemos experimentalmente. Aestatıstica moderna emprega amplamente ferramentas computacionais. Hojeem dia, ferramentas de software de baixo custo ou mesmo gratuitas disponi-bilizam metodos sofisticados de analise estatıstica a qualquer um que tenhaum computador pessoal. Ao mesmo tempo, avancos recentes da Computacaotornaram viaveis a analise estatıstica de volumes gigantescos de dados, comoaqueles produzidos por experimentos de bioinformatica, fısica de alta energiaou por sıtios da internet com grande numero de usuarios (como Google, Face-book, Twitter). A compreensao dos metodos estatısticos, de seus cenarios deaplicacao e limitacoes, bem como o domınio de ferramentas computacionaisde analise, sao fundamentais para a pratica da ciencia.

O objetivo deste capıtulo e introduzir, de maneira informal, algumas ferra-mentas basicas de analise estatıstica, que permitem visualizar e compreendercaracterısticas de dados experimentais e realizar formas simples de inferencia.O capıtulo contem uma serie de exercıcios realizados com uma ferramentacomputacional (BrOffice Calc) que familiarizam o leitor com uso de tal tipode ferramenta para automatizar tarefas de analise estatıstica que seriam pordemais tediosas ou mesmo impossıveis de se realizar manualmente. Este capı-

68

Page 81: Bases Computacionais da Ciência

tulo nao pretende esgotar o assunto da analise estatıstica de dados. Aspectosmais tecnicos dos metodos apresentados, suas limitacoes e aplicabilidade de-vem ser vistos em um curso posterior de estatıstica.

4.2 Conceitos Basicos

Para entender melhor como a estatıstica influencia um estudo cientıfico, va-mos examinar os estagios que constituem esse processo. O termo PesquisaCientıfica refere-se a um processo de aprendizagem onde o cientista deter-mina o objetivo de uma investigacao, coleta as informacoes relevantes, analisaos dados, tira as conclusoes e decide sobre os proximos planos com base nes-tas conclusoes. Didaticamente, podemos dividir o processo de pesquisa nasseguintes etapas:

� Planejamento: nesta etapa, levanta-se uma hipotese testavel sobre oproblema que se deseja estudar;

� Delineamento: consiste em determinar a metodologia (instrumentos)mais adequada para se obter os dados requeridos;

� Execucao: trata da coleta sistematica dos dados para que se tenhacontrole do maior numero de variaveis que influenciam o problema emquestao;

� Processamento e Analise: consiste em analisar os dados com base nashipoteses iniciais;

� Interpretacao: os resultados sao interpretados, dando origem as con-clusoes do estudo.

� Publicacao: em que sao divulgados os resultados e conclusoes.

Anteriormente, nos usamos os termos populacao e amostra para ilustrar anecessidade de metodos estatısticos. Agora serao fornecidas definicoes maisprecisas desses dois termos.

� Populacao: e o grupo de medidas correspondentes a uma colecao com-pleta de unidades para as quais serao feitas inferencias. Representa oalvo da investigacao.

� Amostra: e definida como subconjunto do universo ou da populacao,por meio do qual se estabelecem ou se estimam as caracterısticas destapopulacao.

69

Page 82: Bases Computacionais da Ciência

Uma amostra pode ser constituıda, por exemplo, por 100 funcionarios quefazem parte da populacao de 1.700 que trabalham em uma empresa. Outroexemplo de amostra pode ser dado por um determinado numero de centrosde saude que compoe a rede de saude basica estadual. O processo de ge-rar uma amostra para entender um processo pode ser comparado a olhar omundo atraves de uma janela, que limita nosso campo de visao e pode in-troduzir uma distorcao. Para que possamos fazer inferencias validas sobreuma populacao, e necessario que a amostra seja representativa, ou seja, esco-lhida de maneira aleatoria e contenha um numero adequado de sujeitos. Umprocesso descuidado de escolha pode resultar em uma amostra tendenciosa(“enviesada”). Isso aconteceria, por exemplo, caso selecionassemos os 100funcionarios de maior salario da empresa, ou escolhessemos todos os centrosde saude em um mesmo bairro. Em cada um desses dois casos, certamenteterıamos um retrato que nao reflete as condicoes da populacao.

Uma vez determinada uma amostra, o passo seguinte de um estudo e amedicao de certas caracterısticas de interesse para cada um dos casos pre-sentes na amostra. Essas caracterısticas medidas sao chamadas de variaveis.Por exemplo, em um estudo sobre habitantes de uma cidade, as variaveis po-dem ser: altura, sexo, cor do cabelo, cor dos olhos, idade, peso, expectativade vida, preferencia por um partido polıtico, etc. Nos dividimos as variaveisem dois tipos, em funcao do papel que desempenham no estudo. Chama-mos de variavel dependente a medida de interesse da pesquisa; deve variarem resposta a alguma outra variavel manipulada(intervencao). Do mesmomodo, chamamos de variavel independente aquela que sofre uma intervencao,que esta sendo manipulada. Por exemplo, em um estudo sobre incidencia dedepressao em adolescentes de diversos paıses, a medida do estado de depres-sao e a variavel dependente. Outras medidas como paıs de origem, idade,situacao familiar sao possıveis variaveis independentes para este caso.

Apos a coleta dos dados, quando as variaveis de interesse ja foram medidaspara todos os casos da amostra, inicia-se a etapa de analise estatıstica. Estase caracteriza pelo calculo de parametros a partir das variaveis medidas,que nos permitem entender o comportamento dos dados e fazer previsoessobre casos futuros. As vezes, esses parametros sao tambem chamados deestatısticas.

Podemos dividir o trabalho de analise em duas areas, de acordo com suafinalidade. A estatıstica descritiva e a area da estatıstica que preocupa-se coma apresentacao, organizacao e resumo dos dados. Ja a estatıstica inferencial(ou inferencia estatıstica) e a area que estuda metodos para generalizar umresultado obtido de uma amostra de dados para um grande numero de sujeitos(populacao).

70

Page 83: Bases Computacionais da Ciência

Em estudos baseados em dados amostrais, um dos papeis dos metodos es-tatısticos e delinear o tamanho da amostra e orientar o mecanismo de escolhados casos, para que as observacoes oferecam uma base para gerar conclusoesvalidas. Adicionalmente, a estatıstica fornece a metodologia para se fazerinferencias sobre uma populacao atraves de uma amostra de dados coletadae analisada. Por fim, os metodos estatısticos estabelecem as condicoes emque os resultados de um estudo com numero diminuto de casos podem sergeneralizados para o restante da populacao.

4.2.1 Tipos de Dados

A identificacao da natureza dos dados e de extrema importancia para umaescolha correta do metodo estatıstico de analise. Para efeito de classifica-cao, podemos dividir os dados em dois tipos: Categoricos (ou qualitativos)ou Numericos (ou quantitativos). Os dados categoricos podem ainda sersubdivididos em mais tipos:

� Nominal: constituıdo pelas variaveis com categorias nomeadas, entreas quais nao ha implicacao de ordem. Os dados sao simplesmente ro-tulados por nomes ou numeros com o proposito de agrupar os sujeitosque possuam caracterısticas semelhantes em determinadas categorias.Ex.: sexo; estado civil; grupo sanguıneo, cor dos olhos, nacionalidade.

� Ordinal: formado por variaveis cujos valores fornecem informacoes so-bre a ordenacao das categorias, mas sem indicar a magnitude das di-ferencas entre os valores. Em outras palavras, usando uma variavelordinal, podemos verificar para cada caso se tem valor maior, igual oumenor quando comparado a outro caso; e possıvel determinar a ordemdos casos. No entanto, nao podemos dizer o quanto um caso e maiorou menor que outro. Exemplos: nıvel socio-economico (baixa, media ealta); avaliacao de um estudante (insuficiente, suficiente, excelente).

� Intervalar: neste caso, os dados podem ser classificados em categoriasordenadas e a distancia (ou diferenca) entre elas e constante (igual).Portanto, as posicoes estao dispostas atraves de maior, igual ou menor,como tambem os intervalos entre os valores tem valor igual. Exemplo:Teste de inteligencia (avaliacao do QI). Intervalo entre QI 100 e 110 eo mesmo que entre QI 120 e 130. Porem, nao se pode dizer que umapessoa com QI 100 tem o dobro do QI de um indivıduo com QI 50.Tanto a classificacao de variavel ordinal como intervalar adotam umponto zero que e convencional e arbitrario. Portanto, a multiplicacao ea divisao nao tem sentido.

71

Page 84: Bases Computacionais da Ciência

� Razao: neste caso, tambem temos intervalos iguais entre as categorias.No entanto, diferentemente dos casos anteriores, o ponto zero e sig-nificativo. Somente quando trabalhamos com uma variavel de razaoque podemos afirmar: “O corpo A e duas vezes mais pesado do queB”. Exemplos: comparacao de peso corporal, variacao de temperatura,notas de zero a 10.

Ja os dados numericos se dividem em dois casos:

� Contınuo: as variaveis podem assumir qualquer valor dentro de um in-tervalo. Uma variavel e contınua se nao houver lacunas entre as obser-vacoes, isto e, entre quaisquer dois valores potencialmente observaveis,ha sempre outro valor potencialmente observavel. Exemplo: A alturade um indivıduo pode corresponder a qualquer numero entre 1,65 m e1,78 m; 1,65009 m ou 1,65699 m.

� Discreto: neste caso os dados podem assumir apenas determinadosvalores numericos. A variavel sera discreta se houver lacunas entreas observacoes. Por exemplo, o numero de criancas que apresentaramTOC (Transtorno Obsessivo Compulsivo) entre os cinco e os dez anoscorresponde a um numero N que pode assumir valores tais como 0,1, 2, 3, 4... mas nao pode ser 2,5 ou 4,876. Exemplos: numero denascimentos ou mortes; numero de carros; etc.

Em geral, as medicoes dao origem a dados contınuos enquanto as contagensou enumeracoes resultam em dados discretos.

4.2.2 Distribuicao de Frequencias

Apos o levantamento de dados, torna-se necessaria a descricao e a organizacaodestes dados. Este processo determina o numero de constituintes em cadauma das categorias que se originam ao se classificar uma populacao de acordocom os itens requeridos no levantamento. Para que seja mais facil de seentender os dados brutos (da forma como sao coletados) pode-se construiruma Distribuicao de Frequencias. A Frequencia e definida como o numerode indivıduos pertencentes a cada categoria.

Exemplo 1: Em um estudo feito com 100 estudantes americanos foi per-guntado qual o curso que eles menos gostaram durante o colegio. A distri-buicao de frequencias desse estudo e mostrada na Tabela 4.1.

Exemplo 2: A distribuicao dos alunos do curso de Estatıstica Aplicada aPsicologia e mostrada na Tabela 4.2

A partir dos exemplos acima, poderıamos perguntar: qual das materiasfoi menos apreciada pelos alunos? O curso de Economia foi realmente menos

72

Page 85: Bases Computacionais da Ciência

Curso Numero de estudantesEconomia 42Sociologia 25Historia 8Psicologia 13Calculo 12

Tabela 4.1: Numero de estudantes que apontaram cada curso como aqueledo qual gostaram menos.

Sexo FrequenciaMasculino 1Feminino 30Total 31

Tabela 4.2: Distribuicao dos alunos do curso de Estatıstica Aplicada aPsicologia

apreciado pelos alunos ou a diferenca foi apenas casual? Para que os resul-tados se tornem mais claros e responder essas perguntas, podemos utilizaralguns metodos para padronizar tamanhos e possibilitar a comparacao dedistribuicoes.

No metodo da proporcao comparamos o numero de sujeitos de uma dadacategoria com o total de sujeitos que compoem a distribuicao. Portanto,para obtermos a proporcao P , dividimos a frequencia de sujeitos de umadada categoria f pelo numero total de sujeitos N :

P =f

N

Desta forma, para o exemplo 2, obtemos as seguintes proporcoes de alunosdesta classe em relacao ao sexo:

� sexo masculino: Pf = 1/31 = 0,03

� sexo feminino: Pf = 30/31 = 0,97

No metodo da porcentagem, multiplicamos uma dada proporcao por 100.Para o mesmo exemplo 2 anterior, obtemos:

� sexo masculino: 3%

73

Page 86: Bases Computacionais da Ciência

� sexo feminino: 97%

Da mesma forma, podemos repetir o processo para a Tabela 4.1, obtendoa distribuicao mostrada na Tabela 4.3.

Economia 42%Sociologia 25%Historia 8%Psicologia 13%Calculo 12%

Tabela 4.3: Porcentagem de alunos que apontou cada curso como seu menospreferido.

No metodo da razao, comparamos diretamente o numero de sujeitos quese enquadra em uma categoria com o numero de sujeitos de outra categoria.

R =f1f2

(4.1)

onde f1 e a frequencia de sujeitos da primeira categoria e f2 e a frequenciade sujeitos da segunda categoria.

Portanto, a razao entre os alunos que responderam Economia e os alunosque responderam Historia e:

R =428

=214

(4.2)

Simplificando, podemos dizer que para cada 21 alunos que responderam Eco-nomia, 4 responderam Historia.

O metodo de taxas indica comparacoes entre o numero efetivo de sujeitos eo numero potencial de sujeitos. Exemplo: Taxa de criminalidade envolvendoadolescentes entre 10 e 17 anos. Considerando fe o numero efetivo de crimesde uma cidade e fp o numero potencial de crimes que envolveram adolescentes,teremos:

� fe = 300 crimes envolvendo adolescentes

� fp = 1500 crimes ocorridos

Geralmente, as taxas sao dadas em termos de uma base de 1000 casos po-tenciais:

Taxa = 10003001500

= 200 (4.3)

74

Page 87: Bases Computacionais da Ciência

Desta forma, podemos dizer que em cada 1000 crimes ocorridos na cidade,200 envolvem adolescentes. Alem disso pode ser feita a comparacao entre astaxas de duas de cidades.

4.2.2.1 Frequencias com Dados Agrupados

Em alguns casos, a formacao de categorias nao e imediata, por exemplo,para variaveis como idade, peso, altura. Nesse caso, nos criamos categoriasdividindo a faixa numerica ocupada pela variavel, observando-se os seguintesaspectos:

� Valores reunidos em uma mesma classe passam a assumir o valor mediodo intervalo de classe.

� As classes devem ser mutuamente exclusivas.

� E conveniente que as classes tenham a mesma amplitude.

Exemplo: A distribuicao das idades dos alunos em uma sala de aula.Deveremos prosseguir da seguinte maneira:

1. Colocar a lista em ordem crescente ou decrescente;

2. Verificar a amplitude da lista (o valor maior menos o valor menor);

3. Determinar uma dimensao de intervalo adequada para o problema (estadeve gerar de 10 a 20 intervalos);

4. Redefinir a lista consistindo destes intervalos, da frequencia relativa edo ponto medio;

Vamos introduzir a seguinte notacao para intervalos:

� 18| − 22 inclui os alunos com 18, 19, 20 e 21 anos;

� 18| − |22 (ou 18− 22) inclui os alunos com 18 ate 22 anos.

O Ponto Medio de um intervalo e definido como a media dos dois extremos.Portanto, o ponto medio do ultimo intervalo e (18+ 22)/2 = 20.

Um conceito util e o de Frequencia Cumulativa, definida como o numerototal de sujeitos pertencentes a uma determinada categoria ou numero totalde sujeitos pertencentes a categorias inferiores a categoria que se esta anali-sando. A frequencia cumulativa ou acumulada e obtida atraves da soma dafrequencia daquela categoria com a frequencia total de todas as categorias

75

Page 88: Bases Computacionais da Ciência

que estao abaixo dela. Para se obter a Porcentagem de Frequencia Acumuladaou Frequencia Cumulativa Relativa, calcula-se:

c(%) = 100faN

(4.4)

onde fa e a frequencia acumulada e N e o numero total de sujeitos.A Tabela 4.4 mostra um exemplo de calculo de frequencia acumulada,

dividindo-se os casos do estudo em faixas de acordo com a idade.

Intervalos Frequencia Ponto Frequencia Frequencia Freq. Acum.Simples Medio Relativa Acumulada Relativa

16| − |20 12 18 39% 12 39%21| − |25 10 23 32% 22 71%26| − |30 7 28 23% 29 94%31| − |35 2 33 6% 31 100%

Total 31

Tabela 4.4: Um exemplo de calculo de frequencia acumulada.

4.2.3 Medidas de Tendencia Central

E conveniente dispor de medidas que informem sobre a amostra de maneiramais resumida do que os dados brutos sao capazes de fazer. As medidas detendencia central cumprem este papel, dando o valor do ponto em torno doqual os dados se distribuem. Sao medidas de tendencia central, por exemplo,a media, a mediana e a moda. O objetivo destas medidas e representar umvalor tıpico de um conjunto de dados.

A media aritmetica ou simplesmente media e uma medida de tendenciacentral utilizada para dados numericos, dados categoricos intervalares ou dotipo razao. A media e definida como a soma de todos valores de uma variavelem um conjunto, dividida pelo numero de elementos do conjunto. O calculada media e expressado pela equacao 4.5:

X =∑Ni=1XiN

(4.5)

onde X e a variavel cuja media esta sendo calculada. O sımbolo X refere-se a media de X. O sımbolo

∑significa somatoria. Denotamos por Xi o

i-esimo valor de X encontrado no conjunto de dados. E N e o numero totalde sujeitos do conjunto.

76

Page 89: Bases Computacionais da Ciência

Exemplo: Calcular a media da classe cujas notas sao dadas pela tabela 4.5.Nesse caso, a somatoria das notas e 60 e o numero total de sujeitos e 11.Logo,

X = 60/11 = 5,45

Sujeito Nota1 3,02 5,03 6,04 4,05 5,06 8,07 9,08 6,09 2,010 5,011 7,0

Total 60

Tabela 4.5: Tabela de notas de uma classe.

A mediana e o valor central de um conjunto, que divide a distribuicao emduas partes iguais (mesmo numero de exemplos abaixo e acima do valor damediana). E uma medida de tendencia central utilizada para dados dadosnumericos e dados ordinais. Para calcular a mediana, devemos ordenar osdados. A mediana e definida entao como o elemento Xi , em que o ındice i edado por i = (N +1)/2 para N ımpar. No caso de um numero par de sujeitos,a mediana sera a media entre os dois valores centrais.

Exemplo: Calcular a mediana dos valores da tabela 4.6. Nesse caso,i = (11+1)/2 = 6. Devemos entao tomar como mediana o sexto elemento doconjunto, em ordem. Logo mediana(X) = 5.

Exemplo: calcular a mediana para a sequencia de valores 62,54,82,49,75,64.Primeiro, precisamos ordenar os valores:

49,54,62,64,75,82

Como a quantidade de valores e par, a mediana sera dada pela media dosdois valores centrais. Neste caso,

mediana(X) = (62+64)/2 = 63

77

Page 90: Bases Computacionais da Ciência

Categorias Frequencia Simples Frequencia Acumulada2 1 13 1 24 1 35 3 66 2 87 1 98 1 109 1 11

Tabela 4.6: Tabela de dados para exemplo de calculo da mediana.

A moda e uma medida de tendencia central utilizada com dados catego-ricos e dados numericos discretos. A moda e definida como a categoria queocorre com maior frequencia em um conjunto de dados. Caso um conjuntode dados tenha apenas uma categoria de maior frequencia, dizemos que osdados tem distribuicao unimodal. Caso existam duas categorias empatadasno posto de maior frequencia, dizemos que a distribuicao e bimodal. A ta-bela 4.7 mostra um exemplo de distribuicao unimodal, enquanto a tabela 4.8traz um exemplo de distribuicao bimodal.

Categoria Frequencia2 13 14 15 36 27 18 1

Tabela 4.7: Exemplo de distribuicao unimodal. A moda e a categoria 5,que tem a maior frequencia.

Os dois principais fatores que influenciam a escolha de uma medida detendencia central sao o tipo do dado e a forma da distribuicao. Para dadosnominais, nao e possıvel calcular media ou mediana, entao a unica opcao ea moda. Para dados ordinais, e possıvel calcular mediana e moda, mas naoa media. Para dados numericos, a media representa o centro de gravidadedos dados; todos os elementos da amostra sao considerados no calculo da

78

Page 91: Bases Computacionais da Ciência

Categoria Frequencia2 13 34 15 17 38 19 1

Tabela 4.8: Exemplo de distribuicao bimodal. As duas modas sao as cate-gorias 3 e 7.

Figura 4.1: Localizacao de media, mediana e moda em uma distribuicaoassimetrica.

media e o resultado e mais afetado por valores extremos. Por exemplo, apresenca de um unico valor muito maior do que todos os outros vai aumentarartificialmente a media, afastando-a da regiao de elementos mais tıpicos.Quando uma distribuicao e unimodal e simetrica, as tres medidas, Media,Mediana e Moda serao iguais, pois o ponto de Frequencia Maxima (moda) etambem o mais central (mediana) e o centro de gravidade (media). Em geral,em uma distribuicao assimetrica, a moda esta sempre proxima ao “pico”. Amedia esta mais proxima da “cauda” (sofre influencia dos valores extremos)e a mediana esta entre a moda e media. Para distribuicoes assimetricas, emgeral a mediana e a medida preferida (Figura 4.1). Ja para distribuicoesbimodais, a moda representa melhor os valores tıpicos da distribuicao.

79

Page 92: Bases Computacionais da Ciência

4.2.4 Medidas de Dispersao

O processo de trabalhar com amostras introduz uma variabilidade dos resul-tados obtidos, pois cada amostra vai ter caracterısticas ligeiramente diferen-tes. Essa variabilidade afeta nosso grau de confianca nos resultados. Por isso,as medidas de variabilidade (ou dispersao) tem papel central na estatıstica,sao elas que permitem avaliar a precisao das conclusoes que obtemos a partirdos dados experimentais.

Quando estamos interessados em uma variavel contınua qualquer X, umindicador de variabilidade que surge naturalmente e a diferenca entre cadaponto da amostra e a media: X−X, chamada de desvio ou resıduo. A primeiravista, nos poderıamos somar todas essas diferencas e obter uma estimativada variacao dos dados em torno da media. O problema e que alguns pontosestao acima da media enquanto outros estao abaixo, logo algumas diferencassao positivas enquanto outras sao negativas. Quando somadas, diferencas desinais diferentes compensam umas as outras e o resultado final e nulo. Issosugere a ideia de elevar as diferencas ao quadrado antes de somar. Definimosentao a somatoria dos quadrados dos desvios de X como

N∑i=1

(Xi −X)2

A quantidade acima representa papel importante em varios tipos de analiseestatıstica.

Uma limitacao da somatoria dos quadrados dos desvios e que o resultadodepende do tamanho da amostra. Quanto maior a amostra, maior o valor dasomatoria. Isso representa um problema quando queremos comparar amos-tras de tamanhos diferentes. Para resolver essa questao, podemos calcular amedia do quadrado dos desvios. A princıpio, pensarıamos em dividir a somados quadrados dos desvios pelo numero N de casos na amostra. Isso gera umproblema, pois a soma dos quadrados usa o valor da media, um parametroja estimado a partir da amostra. Uma discussao da natureza do problemaesta alem do escopo do presente texto, mas cada parametro que estimamosa partir de uma amostra diminui o grau de liberdade daquela amostra. Parao proposito do calculo da media dos desvios, o grau de liberdade funcionacomo se fosse o tamanho efetivo da amostra. Portanto, devemos dividir asoma dos quadrados por N −1, sinalizando a perda de um grau de liberdade,em vez de por N . A medida resultante e chamada de variancia, simbolizadapor s2:

s2 =∑Ni=1(Xi −X)2

N − 1(4.6)

80

Page 93: Bases Computacionais da Ciência

A variancia e uma medida da nossa desconfianca com relacao aos resul-tados. Quanto maior a variancia, maior a variabilidade dos dados e menora nossa confianca no resultado obtido. A variancia tem a desvantagem, porcausa do efeito de elevar ao quadrado, de nao estar na mesma escala de uni-dades que a variavel medida. Por exemplo, se estudamos variabilidade daaltura em uma amostra, a variavel e avaliada em m (metro) enquanto a va-riancia e avaliada em m2 (metro ao quadrado). Para facilitar a analise davariabilidade da medida, usamos a raiz quadrada da variancia, denominadade desvio padrao e representada pela letra s.

4.2.5 Visualizacao de Dados Amostrais

Depois de coletar uma amostra, um passo inicial importante da analise eobter uma representacao resumida dos dados, para identificar tendencias,comportamentos ou mesmo erros cometidos na aquisicao dos dados. Umamaneira intuitiva de fazer isso e por meio de graficos. Vamos examinar aquiapenas algumas alternativas simples para visualizacao de amostras, muitasoutras podem ser encontradas em referencias especializadas (TUFTE, 1983;STEELE; ILIINSKY, 2010).

Quando lidamos com dados categoricos, um dos parametros mais impor-tantes e a frequencia relativa de cada categoria, isto e, a proporcao em quecada categoria se encontra presente na amostra. A frequencia relativa podeser prontamente visualizada em um grafico de barras, em que cada categoriae representada por uma barra, cuja altura e proporcional a frequencia respec-tiva. Um exemplo desse tipo de grafico pode ser visto na Figura 4.2. Nesteexemplo, foi medida a pressao sanguınea (sistolica e diastolica) de pessoaspertencentes a uma amostra de tamanho 50. As pessoas foram classificadasem tres grupos, de acordo com o valor obtido: pressao normal, pressao baixaou pressao alta. O grafico permite ver rapidamente algumas caracterısticasdos dados, por exemplo, que a ocorrencia de pressao baixa e muito menorque a de pressao alta.

Para dados numericos, o histograma e um tipo de grafico que permitevisualizar a forma da distribuicao de uma variavel. Para construir um histo-grama, nos dividimos a faixa numerica da variavel em intervalos. Em seguida,nos contamos quantos exemplos da amostra “caem” em cada intervalo. O his-tograma e simplesmente um grafico de barras da contagem de exemplos emcada intervalo. A Figura 4.3 mostra um histograma de idade, para a mesmaamostra de 50 pessoas da Figura 4.2. Pode-se ver que a maior concentracaoencontra-se na faixa de 30 a 35 anos (com mais de 20 pessoas), enquanto acategoria 25 a 30 anos contem menos de 10 pessoas.

Quando precisamos visualizar relacoes entre duas variaveis numericas, a

81

Page 94: Bases Computacionais da Ciência

Figura 4.2: Grafico de barras mostrando frequencia relativa de grupos emuma amostra, de acordo com pressao sanguınea.

Figura 4.3: Histograma mostrando distribuicao da idade (em anos) em umaamostra de 50 pessoas.

opcao e usar um grafico de dispersao. Nesse tipo de grafico, simplesmenterepresentamos os valores das duas variaveis como pares de coordenadas noplano X−Y , para todos os exemplos da amostra. A Figura 4.4 traz um exem-plo de grafico de dispersao, em que a distancia percorrida durante frenageme relacionada com a velocidade inicial, para um conjunto de diferentes carros.O grafico torna possıvel visualizar a relacao crescente entre as duas variaveis.

82

Page 95: Bases Computacionais da Ciência

Figura 4.4: Grafico de dispersao, mostrando relacao entre distancia percor-rida na frenagem e velocidade inicial para um grupo de carros.

4.3 Correlacao e Regressao

Correlacao e regressao sao duas tecnicas do campo do estudo da Estatısticaque possuem um grau de relacionamento bem estreito e que envolvem aspec-tos da estimacao. O foco das tecnicas de correlacao e regressao e a analise dedados amostrais visando como duas ou mais variaveis estao relacionadas umacom a outra numa determinada populacao. O cerne sera o estudo de apenasduas variaveis. A analise de correlacao tem como resultado um numero queexpressa o grau de relacionamento entre duas variaveis, enquanto a analisede regressao expressa o resultado numa equacao matematica descrevendo orelacionamento. Desta forma, a equacao pode ser utilizada para estimar,ou predizer, valores futuros de uma variavel quando se possuem ou quandoimagina-se conhecidos os valores da outra variavel (LARSON; FARBER, 2007).Este tipo de estudo e bastante utilizado quando o trabalho/pesquisa/relatorioetc. e caracterizado pela pesquisa exploratoria, isto e, um analista/pesquisa-dor busca determinar quais variaveis sao relevantes e o foco esta no grau dorelacionamento. A correlacao e uma relacao entre duas variaveis. Os dadospodem ser representados por pares ordenados, sendo X a variavel indepen-dente ou exploratoria e Y a variavel dependente ou resposta. A correlacaomede a forca, ou grau, de relacionamento entre duas variaveis; a regressaoda uma equacao que descreve o relacionamento em termos matematicos.

A Tabela 4.9 mostra alguns exemplos de relacoes que poderiam ser estudasusando algumas dessas ferramentas. Qual sera o tipo de relacao que existeentre as variaveis da Tabela 4.9? A correlacao entre elas e significante?

83

Page 96: Bases Computacionais da Ciência

Variavel Independente Variavel DependenteHoras de treinamento Numero de acidentesNumero do sapato Altura da pessoaCigarros por dia Capacidade pulmonarMeses do ano Volume de vendasPeso da pessoa QI

Tabela 4.9: Exemplos de pares de variaveis cujas relacoes podem ser estu-dadas usando correlacao e/ou regressao

4.3.1 Graficos de dispersao e tipos de correlacao

Construir o grafico de dispersao da variavel dependente versus variavel in-dependente e, usualmente, o primeiro passo em uma analise de correlacao.Devemos tomar cuidado com os termos dependente e independente neste con-texto, pois mesmo encontrando relacao entre as variaveis isto, nao necessari-amente, significa relacao causal entre elas. A analise de correlacao parte deuma hipotese, isto e, um enunciado formal das relacoes esperadas entre pelomenos uma variavel independente e uma variavel dependente. Nas pesqui-sas exploratorias, as hipoteses podem se tornar questoes de pesquisa. Estasquestoes pela sua especificidade devem dar testemunho do trabalho concei-tual efetuado pelo pesquisador e, pela sua clareza, permitir uma respostainterpretavel.

A Figura 4.5 traz um exemplo de grafico de dispersao em que o eixo X(Variavel independente) representa horas de treinamento numa linha de pro-ducao de automoveis e o eixo Y (Variavel dependente) representa o numerode acidentes na fabrica. A analise grafica do comportamento entre as varia-veis mostra existencia de correlacao negativa, pois a medida que X cresce Ydecresce. O grafico mostra que a empresa, ao investir em treinamento, reduzo numero de acidentes na fabrica.

Um outro exemplo e mostrado pela Figura 4.6, em que o eixo X representaaumento da renda media da populacao e o eixo Y representa consumo bensduraveis em milhoes/ano. A analise mostra que ha correlacao positiva, pois amedida que X cresce Y tambem cresce. O grafico mostra que, com o aumentomedio da renda da populacao (maior poder aquisitivo), o consumo de bensduraveis aumenta.

O proximo exemplo e mostrado pela Figura 4.7, em que o peso de umapessoa e representado no eixo X enquanto seu Q.I. (Quociente de Inteligencia)e representado no eixo Y . Nao ha correlacao linear, o grafico mostra que naoexiste evidencia de alguma relacao entre o peso de uma pessoa com seu Q.I.

84

Page 97: Bases Computacionais da Ciência

Figura 4.5: Grafico de dispersao, numero de acidentes em funcao de tempode treinamento.

Figura 4.6: Grafico de dispersao, consumo de bens em funcao do aumentoda renda media.

Figura 4.7: Grafico de dispersao, QI em funcao do peso da pessoa.

85

Page 98: Bases Computacionais da Ciência

Alem da correlacao linear, em que a relacao entre as duas variaveis eexpressa adequadamente por uma reta, podemos encotrar tambem correlacaonao-linear entre as variaveis. Nesse caso, apesar de existir uma relacao claraentre as variaveis, esta nao pode ser modelada por uma reta. As Figuras 4.8e 4.9 ilustram dois casos de correlacao nao-linear.

Figura 4.8: Exemplo de correlacao nao-linear.

Figura 4.9: Outro exemplo de correlacao nao-linear.

4.3.2 Coeficiente de Correlacao

Utilizar apenas o mapa de dispersao para interpretar a existencia de umacorrelacao pode ser uma tarefa considerada bastante subjetiva. Para isto,utiliza-se medir o grau e o tipo de uma correlacao linear entre duas variaveispor meio do calculo do coeficiente de correlacao. O intervalo de variacaodo coeficiente de correlacao r vai de -1 a 1. Sendo assim, se as variaveis Xe Y tiverem forte correlacao linear positiva, o valor de r esta proximo de

86

Page 99: Bases Computacionais da Ciência

1. Se as variaveis X e Y tiverem forte correlacao linear negativa, r estaraproximo de -1 (menos um). Contudo, se nao existir correlacao linear ou se acorrelacao linear for fraca, o valor de r estara proximo de zero. A Figura 4.10ilustra varios graficos de dispersao, com diferentes tipos de relacoes entre asvariaveis, e os respectivos coeficientes de correlacao.

Figura 4.10: Diversos exemplos de relacoes entre variaveis e respectivoscoeficientes de correlacao. Fonte: http://en.wikipedia.org/wiki/File:

Correlation_examples

O Coeficiente de Correlacao pode ser calculado pela formula 4.7:

r =N

∑Ni=1XY −

∑Ni=1X

∑Ni=1Y√

N∑Ni=1X

2 − (∑Ni=1X)2

√N

∑Ni=1X

2 − (∑Ni=1X)2

(4.7)

O intervalo de r e de -1 ate 1 (ver Figura 4.11).

Figura 4.11: Representacao grafica do intervalo possıvel para o coeficientede correlacao.

Como exemplo, vamos analisar o coeficiente de correlacao entre o numerode faltas dos alunos por semestre, em relacao a suas respectivas notas finaisnuma determinada disciplina. Os dados estao expressos na Tabela 4.10, orespectivo grafico de dispersao esta na Figura 4.12. A Tabela 4.11 mostraos valores intermediarios (XY , X2, Y 2) usados no calculo de r. Usando osdados dessa tabela, lembrando que N = 7 e aplicando a formula 4.7, temosque:

r =7(3.751)− (57)(516)√

7(579)− (57)2√7(39.898)− (516)2

(4.8)

r = −0.975 (4.9)

87

Page 100: Bases Computacionais da Ciência

Faltas por semestre (X) Nota Final (Y)8 782 925 9012 5815 439 746 81

Tabela 4.10: Tabela de notas e faltas para cada aluno.

Figura 4.12: Grafico de dispersao para os dados da Tabela 4.10.

4.3.3 Causalidade versus Correlacao

Correlacao nao necessariamente implica em causalidade. Pesquisadores fre-quentemente sao tentados a inferir uma relacao de causa e efeito entre X eY quando eles ajustam um modelo de regressao ou realizam uma analise decorrelacao. Uma associacao significativa entre X e Y em ambas as situacaonao necessariamente implica numa relacao de causa e efeito. Um exemplopode ser visto no grafico de dispersao da Figura 4.13, que mostra a populacaode Oldemberg, Alemanha, no fim de cada um dos 7 anos (Y) contra o numerode cegonhas (passaros) naquele ano (X). O exame do grafico pode induzir ainterpretacao de que existe associacao entre X e Y. Frequentemente, quandoduas variaveis X e Y parecem estar fortemente associadas, pode ser porque Xe Y estao, de fato, associadas com uma terceira variavel, W. Neste exemplo,X e Y aumentam com W que e a variavel tempo.

Portanto, o fato de duas variaveis estarem correlacionadas por si so naoimplica em uma relacao de causa e efeito entre as variaveis. Um estudomais profundo e com mais detalhes e essencial para determinar se ha relacao

88

Page 101: Bases Computacionais da Ciência

i X Y XY X2 Y 2

1 8 78 624 64 6.0842 2 92 184 4 8.4643 5 90 450 25 8.1004 12 58 696 144 3.3645 15 43 645 225 1.8496 9 74 666 81 5.4767 6 81 486 36 6.561∑

57 516 3.751 579 39.898

Tabela 4.11: Valores intermediarios usados no calculo do coeficiente decorrelacao.

Figura 4.13: Grafico de dispersao, numero de cegonhas versus populacao dacidade de Oldemberg.

causal entre as variaveis. E possıvel que a relacao das variaveis tenha sidocausada por uma terceira variavel ou ainda por uma combinacao de muitasoutras variaveis ou e possıvel que a relacao entre duas variaveis seja umacoincidencia. Segundo Stevenson (2001) (STEVENSON, 2007), pag. 389:

“E que, para estabelecer relacoes validas, e preciso mais que simples-mente emparelhar qualquer tipo de dados ate achar alguma correlacao. Emvez disso, usam-se estudos correlacionados como pesquisas exploratorias ini-ciais a fim de identificar futuras areas de pesquisa. Resultados que parecempromissores com base na logica ou na teoria devem ser submetidos a maioranalise (tal como experimentos controlados) para determinar se existe umarelacao de causa e efeito.”

89

Page 102: Bases Computacionais da Ciência

4.3.4 A Reta da Regressao Linear Estimada

Depois de constatar que existe uma correlacao linear significante, voce podeescrever uma equacao que descreva a relacao entre as variaveis x e y. Essaequacao chama-se reta de regressao ou reta do ajuste otimo. Pode-se escrevera equacao de uma reta como y =mx + b, onde m e a inclinacao da reta e b,o intercepto y.

Assim, a reta de regressao e:

Y =mX + b (4.10)

A inclinacao m e dada por:

m =N

∑Ni=1XY −

∑Ni=1X

∑Ni=1Y

N∑Ni=1X

2 − (∑Ni=1X)2

(4.11)

E o intercepto y e:b = Y −mX (4.12)

Retornando ao exemplo acima, vamos escrever a equacao da reta de re-gressao entre o numero de faltas dos alunos por semestre, em relacao a suasrespectivas notas finais numa determinada disciplina. Novamente, usaremosos valores da Tabela 4.11 para nos auxiliar.

Primeiro, calculamos m e b:

m =7(3.751)− (57)(516)

7(579)− (57)2= −3.924

Y = 516/7 = 73.714

X = 57/7 = 8.143

b = 73.714− (−3.924)(8.143) = 105.667

A reta de regressao e:

Y = −3.924X +105.667

Com a reta de regressao, e possıvel prever valores de y correspondentesaos valores de x que caiam em determinado intervalo de dados.

Exemplo: Use a equacao acima para prever a nota esperada de um alunocom:

a) 3 faltas

b) 12 faltas

90

Page 103: Bases Computacionais da Ciência

Item (a): Y = −3.924(3) + 105.667 = 93.895Item (b): Y = −3.924(12) + 105.667 = 58.579Portanto, apos ter obtido a equacao de uma reta de regressao, voce pode

usar essa equacao para prever valores Y sob o intervalo dos dados se a cor-relacao entre X e Y for significante. Para prever valores Y , basta substituiro valor dado de X na equacao de regressao, calculando entao , o valor Yprevisto.

A reta de regressao calculada acima esta representada graficamente naFigura 4.14.

Figura 4.14: Reta de regressao, exprimindo relacao entre faltas e nota final.

4.3.5 O Coeficiente de Determinacao

O coeficiente de determinacao, r2, e a razao entre a variacao explicada em ye a variacao total em y.

r2 =Variacao Explicada

Variacao total

O coeficiente de determinacao e o quadrado do coeficiente de correlacao.Para o exemplo anterior, temos que o coeficiente de correlacao entre as

faltas e a nota final e de r = - 0,975. Logo, o coeficiente de determinacao edado por:

r2 = (−0,975)2 = 0,9506

Interpretacao: Cerca de 95% da variacao nas notas finais pode ser explicadapelo numero de vezes que o aluno falta. Os outros 5% sao inexplicados epodem estar relacionados com um erro amostral ou outras variaveis, comointeligencia, tempo dedicado ao estudo etc.

91

Page 104: Bases Computacionais da Ciência

4.3.6 Outros tipos de correlacao

Existem outros tipos de graficos que podem ser gerados e nao necessaria-mente a regressao linear e sempre a mais indicada. A seguir apresentamosalguns graficos de curvas de regressao usando diferentes funcoes: exponen-cial (Figura 4.15), logarıtimica (Figura 4.16), polinomial (Figura 4.17) e depotencia (Figura 4.18) para os mesmos dados do exemplo anterior.

Figura 4.15: Curva de regressao exponencial

Figura 4.16: Curva de regressao logarıtmica

4.3.7 Criando um grafico de correlacao com o BrOfficeCalc

A seguir detalhamos os passos necessarios para a criacao de um grafico decorrelacao usando o programa BrOffice Calc:

92

Page 105: Bases Computacionais da Ciência

Figura 4.17: Curva de regressao polinomial

Figura 4.18: Curva de regressao de potencia

1) Insercao das informacoes. Os valores das variaveis independente (X)e dependente (Y ). No exemplo a seguir sao as Horas de Treinamento versusNumero de Acidentes (Figura 4.19).

2) Podemos usar diretamente o ıcone Grafico da barra de ferramentasou a opcao Inserir � Grafico, em seguida devemos escolher o grafico dedispersao (Figura 4.20).

3) Entao definimos o intervalo de dados (Figura 4.21), selecionando todasas colunas de dados (Figura 4.22).

4) Na sequencia de Figuras 4.23, 4.24 e 4.25, vemos como inserir cadauma das colunas (X e Y ).

5) No proximo passo, podemos escolher tıtulo do grafico, subtıtulo, nomesdas variaveis X e Y (Figura 4.26).

6) Apos a insercao de todas as informacoes podemos clicar em “Concluir”e o grafico sera gerado, conforme a Figura 4.27.

7) Clicando-se duas vezes sobre o grafico e possıvel criar a reta de re-

93

Page 106: Bases Computacionais da Ciência

Figura 4.19: Dados para construcao do grafico de correlacao.

Figura 4.20: Escolhendo grafico de dispersao

gressao, a equacao da reta e o coeficiente de determinacao. Apos clicar duasvezes sobre o grafico, va ate o campo “Inserir” e clique em “Linha de Ten-dencia”. Aparecera a janela denominada: “Linhas de tendencia”. Clique em

94

Page 107: Bases Computacionais da Ciência

Figura 4.21: Definicao do intervalo de dados

Figura 4.22: Selecao das colunas de dados

“linear”. Pode-se optar tambem pela exibicao da equacao da reta e do coe-ficiente de determinacao (R2), conforme o quadro situado ao lado do grafico(Figura 4.28).

95

Page 108: Bases Computacionais da Ciência

Figura 4.23: Inserindo nome

Figura 4.24: Inserindo coluna X

8) Concluindo esta etapa, a linha de tendencia sera gerada, com a equacaoda reta e o valor do coeficiente de determinacao (Figura 4.29). Neste caso,ha forte correlacao negativa, como mostram o grafico e o valor de R2.

96

Page 109: Bases Computacionais da Ciência

Figura 4.25: Inserindo coluna Y

Figura 4.26: Escolha de tıtulo e nome das variaveis.

9) O valor do coeficiente de correlacao (r) pode ser calculado no BROfficeCalc seguindo o mesmo procedimento para calcular outras funcoes. Clique noıcone do assistente de funcoes ou use o menu Inserir � Func~ao. Selecione

97

Page 110: Bases Computacionais da Ciência

Figura 4.27: Grafico de dispersao

Figura 4.28: Tela de selecao do tipo de regressao

o grupo de funcoes estatısticas e escolha a funcao CORREL (Figura 4.30).O proximo passo e selecionar as colunas de dados. Neste exemplo, parao campo “Dados 1” e selecionada a coluna “Horas Treinamento”, e para o

98

Page 111: Bases Computacionais da Ciência

Figura 4.29: Resultado da regressao

campo “Dados 2” e selecionada a coluna “Acidentes” (Figura 4.31).

Figura 4.30: Selecionando funcao correlacao.

10) Finalmente, o valor calculado e inserido na planilha (Figura 4.32). No

99

Page 112: Bases Computacionais da Ciência

Figura 4.31: Selecionando as colunas de dados.

presente caso, o valor de r e negativo, pois ha uma forte correlacao negativa!

Figura 4.32: Resultado final com o valor do coeficiente de correlacao.

100

Page 113: Bases Computacionais da Ciência

4.4 Exercıcio da Aula Pratica

Atividade 11) Os tempos de reacao de um indivıduo a determinados estımulos foram

medidos por um psicologo como sendo 0,53; 0,46; 0,50; 0,49; 0,52; 0,53; 0,44e 0,55 segundos, respectivamente. Determine o tempo medio de reacao doindivıduo a esses estımulos.

a) Iniciar o programa BrOffice Calc. Entrar com os dados em uma novaplanilha tendo a primeira linha como tıtulo e cada valor em uma linha. Deixaruma coluna livre antes dos dados para poder colocar os nomes das medidascalculadas (ver Figura 4.33).

Figura 4.33: Entrada de dados na planilha

b) Clicar na celula onde se deseja colocar a medida calculada (vide Fi-gura 4.33) Clicar em fx ou em Inserir (no menu Principal) e em seguida emFuncao (ver Figura 4.34).

c) Clicar na barra de rolamento de Categoria e clicar em Estatısticas.Figura 4.35. Em funcoes estao todas as funcoes estatısticas disponıveis nesteprograma. Basta clicar na desejada.

d) Clicar em MEDIA. Observe que existem varios tipos de media! Fi-gura 4.36. Nestas linhas deverao ser inseridos os valores para se calcular amedia ou entao as celulas onde se encontram os valores.

f) Para inserir as celulas contendo os valores basta clicar na flecha verde(Figura 4.36) em frente ao numero 1 e depois selecionar os valores com o

101

Page 114: Bases Computacionais da Ciência

Figura 4.34: Inserindo funcao

Figura 4.35: Selecionando funcoes estatısticas

102

Page 115: Bases Computacionais da Ciência

Figura 4.36: Selecionando a funcao media

mouse. Figura 4.37. Observe que as referencias dos dados aparecerao nabarra do Assistente de Funcoes, no exemplo, B2:B9

Figura 4.37: Selecionando coluna de dados

g) Voltar a clicar na flecha verde (Figura 4.37) e clicar em OK. O resultadoda funcao escolhida, no caso a media aritmetica, sera colocado na celula inicial

103

Page 116: Bases Computacionais da Ciência

do procedimento. Figura 4.38. Observe que estando clicado na celula ondeha uma funcao, na barra de funcoes estara com o nome da funcao e as celulasutilizadas para o calculo. Voce pode alterar estas celulas nesta barra, casonecessario.

Figura 4.38: Resultado da media

2) Calcule a mediana para os dados acima.a) Posicione o cursor na celula onde se deseja colocar e mediana, execute

os mesmos passos acima descritos porem escolha a funcao MED. Figura 4.39.3) Calcule a moda para os dados acima.Posicione o cursor na celula onde se deseja colocar e mediana, execute os

mesmos passos acima descritos porem escolha a funcao MODO. Figura 4.40. Aofim desse processo, todas as celulas das medidas de tendencia central devemestar preenchidas (Figura 4.41).

Atividade 2Ao longo dos proximos exercıcios nos trabalharemos com uma planilha

de dados a ser fornecida durante a aula. A planilha contem dados de umestudo sobre fatores de risco para o desenvolvimento de doenca arterial co-ronariana (uma condicao em que o fornecimento de sangue para o musculocardıaco e prejudicado pelo estreitamento dos vasos sanguıneos). Nesse es-tudo, pacientes do sexo masculino foram diagnosticados quanto a presenca dedoenca coronariana, sendo registrados tambem alguns parametros clınicos. Aplanilha com a qual trabalharemos contem os seguintes parametros:

� id: identificador numerico do paciente

104

Page 117: Bases Computacionais da Ciência

Figura 4.39: Escolhendo funcao mediana

Figura 4.40: Escolhendo a funcao moda

105

Page 118: Bases Computacionais da Ciência

Figura 4.41: Resultados das medidas de tendencia central

� idade em anos

� pressao sistolica

� tabaco: medida acumulada do uso

� historico familiar de doenca coronariana

� alcool: consumo do paciente a epoca do estudo

� doenca coronariana: diagnostico (0: nao apresenta doenca, 1: apre-senta doenca)

Abra o arquivo da planilha usando o aplicativo BrOffice Calc. O aspectodos dados carregados deve ser semelhante ao visto na Figura 4.42. Agora nosvamos calcular medidas de tendencia central e de espalhamento para algunsdos parametros contınuos presentes na planilha. Essas medidas serao inse-ridas na propria planilha, abaixo da coluna do parametro respectivo.Antesde calcular, vamos rotular algumas linhas da planilha para identificar cadamedida. Na primeira coluna da planilha, a partir de alguma linha abaixodos dados amostrais, insira os seguintes rotulos, um em cada linha (ver Fi-gura 4.43 para ilustracao): media, variancia, desvio padrao e mediana.

Agora nos calcularemos as medidas estatısticas para o parametro pres-sao sistolica, comecando com a media, seguindo os mesmos procedimentos

106

Page 119: Bases Computacionais da Ciência

Figura 4.42: Aparencia da planilha de dados logo apos ser carregada.

Figura 4.43: Atribuindo rotulos a linhas onde as medidas serao inseridas.

da Atividade 1. Selecione a celula da tabela no cruzamento da linha rotu-lada “media” e da coluna “pressao sistolica”. Agora clique sobre o botao doassistente de funcoes, localizado na barra acima dos dados da planilha (re-presentado por f (x)). Um outro meio de acionar o assistente de funcoes epelo menu Inserir � Func~ao. A tela do assistente sera exibida, selecionea categoria de funcoes estatısticas e, em seguida, selecione a funcao MEDIA

dentro da lista de funcoes; pressione entao o botao “Proximo”. Na proximatela (Figura 4.44), nos vamos selecionar a faixa de valores usados para o cal-culo da media. Clique sobre a planilha e selecione todos os dados numericosda coluna “pressao sistolica”, a faixa de valores selecionada aparece no campodenominado “numero 1” na tela do assistente. Note que em vez de selecio-nar a faixa de valores com o mouse, poderıamos digitar diretamente a faixapretendida, dando o nome da primeira e da ultima celula, separado por doispontos. Por exemplo, D2:D41. Para finalizar, pressione o botao “Ok” na telado assistente e observe que o valor da media e inserido na celula desejada.Voce pode agora seguir o mesmo procedimento para calcular as outras medi-das do parametro“pressao sistolica” , alterando o nome da funcao usada. Aseguir, associamos cada medida com a funcao correspondente do BrOffice:

� media: funcao MEDIA

� variancia: funcao VAR

� desvio padrao: funcao DESVPAD

107

Page 120: Bases Computacionais da Ciência

� mediana: funcao MED

Compare o valor da media obtida com o valor da mediana, eles sao seme-lhantes?

Repita o calculo das medidas media, desvio padrao e mediana para o pa-rametro “alcool”. Compare os resultados da media e da mediana. E possıveldeduzir algo sobre a distribuicao deste parametro a partir da comparacaodestes valores?

Figura 4.44: Selecionando a faixa de valores.

Atividade 3 Para entender melhor a distribuicao do parametro “alcool”,nos vamos construir um histograma. Para isso, e preciso dividir a faixa devalores exibida pelo parametro em um numero discreto de intervalos. Comoo menor valor exibido e 0 e o maior e 97,2, vamos adotar, como primeiratentativa, a divisao em 10 intervalos de largura 10. Ou seja, nosso inter-valos serao: < 10, 10| − 20, 20| − 30, 30| − 40, 40| − 50, 50| − 60, 60| − 70,70| − 80, 80| − 90 e ≥ 90. No BrOffice, antes de se construir o histogramae preciso determinar quantos pontos pertencem a cada intervalo usando afuncao FREQUENCIA. Essa funcao precisa de dois argumentos: uma colunade dados a ser analisados e uma coluna contendo os valores que delimitamos intervalos. Antes de prosseguir, vamos inserir uma nova folha em nossaplanilha de trabalho, evitando que os dados do histograma interfiram com osdados do estudo. Para isso, use a opcao de menu Inserir � Planilha. Nanova folha de planilha, vamos criar uma coluna composta pelos valores su-periores de cada intervalo, em ordem: 10,20,30,40,50,60,70,80,90. Agora,devemos selecionar a coluna (ainda vazia) a direita da coluna dos interva-los (Figura 4.45). Devemos agora abrir o assistente de funcoes, selecionar ogrupo de funcoes Matriciais e escolher a funcao FREQUENCIA (Figura 4.46),pressionado o botao “Proximo” a seguir. Na tela seguinte, vamos selecionaros dados. Clique sobre o campo “dados” e em seguida retorne para a pla-nilha 1, onde estao os dados do estudo. Selecione a coluna do parametro“alcool”(Figura 4.47). Ainda na mesma tela, agora clique sobre o campo

108

Page 121: Bases Computacionais da Ciência

“classes”, selecionando-o. Volte para a folha da planilha que contem os limi-tes dos intervalos e selecione os valores de 10 ate 90 (Figura 4.48). O Calcautomaticamente cria uma contagem para a faixa de valores > N , em queN e o ultimo valor de “classe” selecionado neste passo. Agora finalizamoso calculo das frequencias, clicando o botao “Ok”. O programa deve entaopreencher a coluna de frequencias selecionada no inıcio.

Figura 4.45: Selecionando a coluna onde os valores de frequencia seraoinseridos.

Figura 4.46: Selecionando a funcao frequencia.

Finalmente, vamos construir um grafico de barras das frequencias, repre-sentando o histograma. Para tanto, o Calc precisa de uma serie de rotulospara atribuir a cada barra. Nos poderıamos usar os proprios limitantes dosintervalos, mas isso nao expressaria com clareza que estamos tratando degrandezas intervalares. Em vez disso, vamos usar uma coluna extra de rotu-los, usando a notacao de intervalos introduzida anteriormente (Figura 4.49).Agora selecione a coluna das frequencias e clique em Inserir � Grafico;selecione o grafico do tipo coluna (Figura 4.50). Clique em“Proximo”, na telado segundo passo (“Intervalo de dados”) nao ha nada a ser alterado. Clique

109

Page 122: Bases Computacionais da Ciência

Figura 4.47: Selecionando dados para a construcao do histograma.

Figura 4.48: Selecionando limites dos intervalos (classes) do histograma.

em “Proximo” novamente. Na tela de “Serie de dados”, clique sobre o campo“Categorias” e selecione a coluna de rotulos (Figura 4.51). Finalmente, cli-que em “Proximo”, insira um tıtulo adequado para o histograme e clique em“Concluir” (Figura 4.52). Deve ser inserido na planilha um grafico como o daFigura 4.53. Note que o programa Calc desenha as barras com um espacovazio entre elas mas, conceitualmente, tal espaco nao existe, os intervalos queformam o histograma sao contıguos.

110

Page 123: Bases Computacionais da Ciência

Figura 4.49: Inserindo coluna de rotulos.

Figura 4.50: Selecionando tipo de grafico.

Figura 4.51: Selecionando coluna de rotulos.

111

Page 124: Bases Computacionais da Ciência

Figura 4.52: Inserindo tıtulo.

Figura 4.53: Histograma final.

112

Page 125: Bases Computacionais da Ciência

4.5 Exercıcios

Exercıcio 1: Para uma determinada localidade, a Tabela 4.12 mostra a distri-buicao dos indivıduos segundo o grau de escolaridade e o local de residencia,em uma amostra adquirida.

Grau de Escolaridade Local de ResidenciaUrbano Rural

Primario 5025 2580Secundario 3155 285Superior 1720 20

Tabela 4.12: Distribuicao de escolaridade segundo tipo de residencia.

Para cada um dos tipos de residencia, calcule:

(a) Proporcao de indivıduos em cada grau de escolaridade.

(b) Porcentagem de indivıduos em cada grau de escolaridade.

(c) Taxas do numero de indivıduos: Primario/Secundario, Primario/Supe-rior e Secundario/Superior.

Com base nos valores calculados, voce diria que o tipo de residencia e umfator que afeta o grau de escolaridade?

Exercıcio 2: A Tabela 4.13 mostra a distribuicao dos passageiros da via-gem inaugural do navio Titanic, divididos de acordo com sexo (masculino oufeminino) e se conseguiram sobreviver ao naufragio (sim ou nao). Calcule ecompare as taxas de sobrevivencia entre homens e mulheres.

SobrevivenciaSexo Nao SimMasculino 1364 367Feminino 126 344

Tabela 4.13: Distribuicao dos sobreviventes de acordo com o sexo.

Exercıcio 3: A tabela 4.14 traz as distancias (em metros) obtidas pelosvencedores da prova de salto triplo masculino das Olimpıadas entre os anosde 1936 e 2004 (nao houve Jogos Olımpicos em 1940 e 1944 devido a II GuerraMundial). Para esses dados:

113

Page 126: Bases Computacionais da Ciência

(a) Faca o grafico de dispersao da distancia do salto em funcao do ano. Voceacha que a relacao entre as duas grandezas e aproximadamente linear?

(b) Calcule o coeficiente de correlacao entre distancia e ano.

(c) Ajuste uma reta de regressao para os dados apresentados e calcule ocoeficiente de determinacao.

(d) Em 1932, o vencedor do salto triplo atingiu a marca de 15,72m. Em2008, o vencedor obteve 17,67m. Use a reta ajustada anteriormentepara estimar a distancia para cada um desses anos. Compare os valoresestimados e os realmente obtidos.

Ano Distancia Ano Distancia1936 16,00 1976 17,291948 15,40 1980 17,351952 16,22 1984 17,251956 16,35 1988 17,611960 16,81 1992 17,171964 16,85 1996 17,581968 17,39 2000 17,711972 17,35 2004 17,79

Tabela 4.14: Distancias obtidas pelos vencendores do salto triplo masculinoem Olimpıadas.

4.6 Consideracoes Finais

Neste capıtulo, conceitos basicos de estatıstica foram apresentados, mos-trando como a variabilidade dos dados com os quais trabalhamos gera umaincerteza sobre os resultados obtidos. Os metodos estatısticos nos permitemtirar conclusoes e fazer inferencias uteis, apesar da variabilidade e da incer-teza. O uso desses metodos envolve muitas outras questoes que nao foramabordadas neste capıtulo. Por exemplo, a estatıstica nos fornece metodospara dimensionar amostras a fim de obter resultados com determinada pre-cisao, para quantificar a incerteza dos resultados, para comparar resultadosobtidos com diferentes amostras, etc. Essas questoes devem ser abordadasem um curso especıfico de estatıstica. Um dos pontos cruciais para um bomtrabalho de analise estatıstica e a qualidade dos dados utilizados. Nenhum

114

Page 127: Bases Computacionais da Ciência

truque de manipulacao matematica e capaz de corrigir uma coleta ruim dedados e, por isso, devemos assegurar que os dados medidos sejam relevantespara o problema a ser estudado, que existam em quantidade suficiente paratirarmos conclusoes significativas e que estejam bem organizados. No pro-ximo capıtulo, trataremos da estruturacao e organizacao de dados em basesde dados, apresentando ferramentas gerais para gerenciar os dados coletadose facilitar o trabalho de raciocinar sobre eles.

115

Page 128: Bases Computacionais da Ciência

5 Base de Dados

Humberto Luiz RazenteIrineu Antunes Jr.Marcio K. Oikawa

Maria Camila Nardini Barioni

—– Universidade Federal do ABC

5.1 Introducao

Nos tempos atuais, convivemos com a necessidade constante de interacao emanipulacao de dados. Muitas atividades rotineiras estao invariavelmente li-gadas a operacoes diversas de gerenciamento de dados, tais como tratamento,armazenamento, apresentacao, interpretacao, geracao ou recuperacao. Aposa revolucao causada pela internet e pelos recursos de rede, o acesso a in-formacao tornou-se mais facil, amplo e democratico. Isso tambem provocouum serio e crescente problema de organizacao de dados, evidenciando umanecessidade de prover melhores maneiras de trata-los e potencializar o seuaproveitamento por usuarios comuns, grupos ou mesmo grandes instituicoes.

A utilizacao correta e eficiente de dados nem sempre e tarefa simples. Emmuitas situacoes, constitui-se numa operacao mais delicada e difıcil do queinicialmente aparenta. Esse raciocınio se aplica tanto a grandes quanto apequenos conjuntos de dados. A falta de planejamento e organizacao podeexpor a base de dados a varios problemas, entre os quais a ausencia da coletade dados que se mostrarao futuramente importantes, a coleta de dados semimportancia e a presenca de inconsistencias sobre os dados armazenados. Taisproblemas normalmente sao causados quando nao ha uma seria preocupacaocom o detalhamento dos dados que serao usados para algum fim posterior.Sendo assim, normalmente nao e uma boa polıtica guardar dados de formadesorganizada sem saber exatamente como serao usados.

Outro aspecto diz respeito ao tratamento propriamente dito dos dados.Uma vez definidos os detalhes dos dados que serao usados, como construiruma estrutura organizada desses dados? Como usar tal estrutura para me-lhorar o aproveitamento desses dados? De que modo podemos usar os dadosarmazenados em operacoes futuras? De que forma podemos controlar a qua-lidade desses dados?

116

Page 129: Bases Computacionais da Ciência

Neste capıtulo, procuraremos entender melhor a relacao existente entredados e informacoes, e apresentaremos conceitos importantes para a cons-trucao de bases de dados simples. Durante o capıtulo, serao apresentadascaracterısticas importantes de bases de dados que as tornam muito uteis doponto de vista computacional: organizacao, armazenamento, recuperacao evisualizacao. O objetivo deste capıtulo e, assim, introduzir a ideia de basesde dados, associando-a com o ambiente de uso de computadores e sistemasde software. Muitos dos conceitos abordados neste capıtulo permitirao com-preender a importancia da escolha das formas de representacao de dados,do controle de qualidade da base de dados, da organizacao dos dados e doplanejamento voltado para uma correta utilizacao futura.

E importante ressaltar que o tratamento eficiente de grandes conjuntos dedados nao se restringe aos assuntos abordados neste capıtulo. Para grandesbases de dados comerciais ou governamentais, existe uma decisiva preocupa-cao com outras caracterısticas, que vao alem da simples organizacao de dados.Nesses casos, tambem busca-se modelos de dados mais eficientes, linguagensde integracao de bases de dados com sistemas computacionais, compartilha-mento de dados por varios grupos de usuarios, controle de usuarios, segurancade acesso, ferramentas de recuperacao de falhas, etc. O objetivo deste capı-tulo NAO e discutir formas mais avancadas de modelagem de dados (comoa modelagem relacional, por exemplo), ou entrar em detalhes sobre qualquerdos temas citados no inıcio deste paragrafo, diretamente ligados a operacoesde Sistemas de Gerenciamento de Bancos de Dados (SGBD). Esses temas,embora muito importantes, so serao tratados em disciplinas especıficas, emestagios mais avancados dos cursos da area de Computacao. O desenvolvi-mento desses temas depende de uma experiencia com assuntos especıficos daarea, que fogem aos objetivos desta disciplina. Para os interessados, entre-tanto, ha uma vasta colecao de livros que aborda o assunto com alto nıvelde detalhes, entre os quais podemos destacar (ELMASRI; NAVATHE, 2006;SILBERSCHATZ; KORTH; SUDARSHAN, 2006; GILLENSON et al., 2009).

O restante deste capıtulo esta distribuıdo conforme a seguinte organizacaoA Secao 2 aborda uma introducao aos conceitos basicos de bases de dados, quesao reforcados na Secao 3, por meio de um exemplo de organizacao dos dadosem uma base de dados. A Secao 4 apresenta nocoes de arquivos estruturados,muito usados para trocar dados entre diferentes bases de dados. Na Secao5 sao discutidos conceitos relacionados a consultas em bases de dados. Osexercıcios da aula pratica sao apresentados na Secao 6 e a Secao 7 propoeexercıcios complementares. Por fim, a secao 8 apresenta as consideracoesfinais do capıtulo.

117

Page 130: Bases Computacionais da Ciência

5.2 Entendendo a Base de Dados

5.2.1 Dados e Informacoes

Embora rotineiramente tratados como sinonimos, dados e informacoes pos-suem significados diferentes do ponto de vista de processamento computaci-onal. Em linhas gerais, chamamos de dado (ou dado bruto) qualquer ele-mento que possa ser processado por um computador, tais como um conjuntode numeros, cadeias de caracteres, imagens, codigos de barras, senhas cripto-grafadas, etc. Chamamos de informacao a intepretacao dada a um conjuntode dados, tornando-os significativos para algum contexto do mundo real. Acompreensao dessa diferenca, embora simples, permitira que possamos poten-cializar o uso dos dados, pensando-os de forma um pouco mais organizada.

Para tornar essa definicao mais clara, vamos imaginar o seguinte cenario.Em muitas livrarias, o processo de cobranca dos caixas e automatizado, re-alizado por meio de codigos de barras. O codigo de barras e uma sequenciade barras verticais claras e escuras de largura (possivelmente) variada. Aleitura do codigo de barras e realizada por um tipo especial de scanner que ointerpreta e mapeia para numeros ou letras, que serao tratados pelo sistemade computador (veja a Figura 5.1). Como os codigos de barras podem sermanipulados computacionalmente, podemos chama-los de dados.

Figura 5.1: Exemplo de codigo de barras (extraıdo da livraria virtual Ama-zon.com (AMAZON. . . , 2011))

Apesar da forma valida de representacao, um codigo de barras, isolada-mente, tem pouco (ou nenhum) significado quando dissociado do objeto fısicoque representa. O codigo da Figura 5.1 pertence a um livro especıfico dasprateleiras da livraria. Dessa forma, a informacao representada pelo codigoe, nesse caso, o livro na Figura 5.2. Todas as vezes que o computador pro-cessar alguma operacao relacionada ao codigo de barras da Figura 5.1, estarana realidade, processando a operacao para o livro da Figura 5.2!

Com esse simples exemplo, podemos verificar que a informacao e o ele-mento essencial e significativo que desejamos utilizar e manipular dentro de

118

Page 131: Bases Computacionais da Ciência

algum contexto. O dado e a representacao computacional de alguma infor-macao. Sendo assim, grosseiramente falando, o computador so e capaz demanipular dados, que se transformam em informacoes quando interpretadospor seus usuarios. Usaremos o termo base de dados 1 para indicar um aglo-merado, ou conjunto, de dados que deve ser manipulado pelo computador.

Figura 5.2: Livro relacionado ao codigo de barras (extraıdo da livraria virtualAmazon.com (AMAZON. . . , 2011))

5.2.2 O que e uma Base de Dados?

Uma base de dados pode ser definida como qualquer conjunto de dados parao qual se deseja armazenar, recuperar e visualizar conteudo. Entende-se porarmazenamento uma forma de preservar confiavelmente o dado em local co-nhecido para alguma futura utilizacao. Essa definicao e valida nao apenaspara o contexto de sistemas computacionais, mas para qualquer ambiente domundo real. Baseado nisso, vamos construir um exemplo de facil analogiapara fixar esses conceitos. Vamos explorar a ideia de uma lista de supermer-cado, ilustrada na Figura 5.3.

Primeiro, vamos responder a seguinte pergunta:

1Em muitas referencias, voce encontrara o termo Banco de Dados como definicao paraos conjuntos de dados que discutimos em sala de aula. Evitaremos utilizar esse termo porentender que, apesar de amplamente difundido, esta informalmente associado com Bancosde Dados Relacionais, que nao serao discutidos neste documento. Para maiores detalhessobre bancos de dados relacionais, consulte a bibliografia especıfica indicada no final dasecao Introducao.

119

Page 132: Bases Computacionais da Ciência

Figura 5.3: Lista de supermercado.

Por que as pessoas fazem listas de supermercado?

A resposta mais natural seria algo como:

Para lembrar todos os itens que devem ser comprados.

Apesar da simplicidade do exemplo, ele nos permite identificar as princi-pais caracterısticas que toda base de dados deve possuir. Vamos a elas:

� Armazenamento (Persistente): As listas de supermercado podem serarmazenadas tanto em mıdias simples (como papel) quanto em mıdiasdigitais gerenciadas por dispositivos como palms, tablets, telefones ce-lulares, entre outros. O objetivo de todas essas mıdias e arquivar asinformacoes em um local confiavel para futura utilizacao. Em outraspalavras, dados armazenados nao devem ser perdidos! Dados so de-saparecem da base quando propositalmente excluıdos. Dizemos que,nessa situacao, o armazenamento e persistente, indicando que os dadosarmazenados nao sao volateis e sua guarda e controlada pelo usuarioda base de dados.

� Recuperacao: No supermercado, a lista cumpre a sua principal funcao:lembrar os itens que devem ser comprados. Um dos principais obje-tivos de qualquer base de dados e recuperar informacoes previamentecadastradas de forma rapida e precisa, de modo que o usuario tenhacompleta seguranca de que tudo o que fora cadastrado nao foi perdidoe esta a disposicao para consulta a qualquer momento.

� Visualizacao: A visualizacao trabalha a forma como os dados recupe-rados sao exibidos. Imagine, por exemplo, que a lista seja mostradaem ordem alfabetica. Se os itens da lista forem procurados nessa or-dem, o usuario provavelmente andara em cırculos pelo supermercado.

120

Page 133: Bases Computacionais da Ciência

Isso ocorre porque a lista ignora a organizacao dos itens em setoresdentro do supermercado (setores de alimentos congelados, vestuario,bebidas, doces, etc.). Uma lista que exibe os itens agrupados nos seto-res do supermercado poderia melhorar sensivelmente a sua busca nasprateleiras. Esse exemplo ilustra como a visualizacao pode facilitar oudificultar o trabalho de quem usa a informacao, de forma que sempredeve ser considerado no planejamento da base de dados.

Normalmente, as bases de dados sao usadas para problemas muito maiorese mais complexos do que o armazenamento de listas de supermercado. Naoe difıcil imaginar alguns deles, como controlar a lista de clientes de umaempresa, de correntistas de um banco, de alunos de uma universidade, delivros de uma biblioteca, de contribuintes de uma unidade governamental, etc.Para todos esses exemplos, a base de dados exerce um papel fundamental naconducao e planejamento das atividades, pois e ela quem informa o estadoatual da informacao, acompanha o desenvolvimento das tarefas e forneceembasamento para a tomada de decisoes.

Para complexos conjuntos de dados, que envolvem um grande volume dedados e uma grande quantidade de usuarios, tambem e desejavel que a basepossa apresentar outras importantes caracterısticas:

� Compartilhamento: Capacidade de troca de informacoes com outrosusuarios ou outros sistemas computacionais. E comum o uso de basesde dados com informacoes relevantes a diferentes grupos de usuarios,que podem trocar informacoes direta ou indiretamente por meio dos da-dos presentes na base. Voltando ao exemplo da lista de supermercado,considere que para agilizar a compra do mes, cada membro da famı-lia sera responsavel por comprar parte dos itens da lista, atualizando(removendo) da lista os itens ja comprados;

� Seguranca: Capacidade de prover um ambiente seguro para o funciona-mento da base de dados. A seguranca de dados pode ser interpretadade duas formas distintas: seguranca de infra-estrutura e seguranca deacesso. A seguranca de infra-estrutura indica procedimentos relevantesque procuram garantir o funcionamento do hardware que hospeda abase de dados. A seguranca de acesso procura controlar as permissoesde acesso de usuarios ou grupos de usuarios a base de dados (completaou parcialmente). No exemplo, considere que apenas os adultos dafamılia podem autorizar a inclusao de guloseimas na lista;

� Regras de Consistencia: Capacidade de incorporar regras de validacaode dados que auxiliem na garantia de qualidade e coerencia da informa-cao armazenada. As regras, em geral, procuram verificar se a correlacao

121

Page 134: Bases Computacionais da Ciência

de dados e feita de forma correta e prevenir a inclusao de valores in-validos na base. Por exemplo, nao permitir a inclusao de itens que jaestao na lista (garantia de valores unicos).

Nem sempre e trivial administrar funcoes de compartilhamento, segu-ranca e consistencia em uma base de dados. Em alguns casos, e precisoutilizar sistemas de software especıficos, ou construir (por meio de programa-cao) regras proprias para cada caso. A necessidade e a viabilidade de cadaum desses itens, bem como sua relacao de custo e benefıcio, deve ser avaliadapor uma equipe especıfica, que podera ou nao indicar sua aplicacao. Porconstituırem conceitos avancados de administracao de bases de dados, ape-nas apresentamos a sua definicao por sua relevancia, mas nao discutiremosdetalhes neste texto. Para o gerenciamento e compartilhamento de gran-des volumes de dados, muitas organizacoes utilizam softwares especiais queimplementam essas caracterısticas, chamados Sistemas de Gerenciamento deBases de Dados (SGBDs).

5.3 Organizacao de Dados

Existem varios modos de organizar uma bases de dados. Quando represen-tada em uma planilha, a base de dados pode ser vista como uma matriz dedados. O formato matricial possui duas grandes vantagens:

� Oferece uma forma facil de visualizacao global dos dados;

� Permite identificar precisamente a posicao de cada valor armazenadona base.

E muito comum chamar essa matriz de tabela. Essa terminologia e am-plamente difundida e aceita no contexto de bases de dados, de modo quetambem a adotaremos neste texto. Por convencao, as linhas da tabela arma-zenam itens de dados, enquanto colunas armazenam atributos (propriedadesou caracterısticas) vinculados a cada item de dado armazenado nas linhas.

Aproveitando o exemplo anterior, imagine que numa lista de supermer-cado maior e mais elaborada, deseja-se anotar mais informacoes sobre osprodutos a fim de permitir comparacoes de precos entre varios supermer-cados diferentes. O usuario dessa lista poderia ter interesse em anotar asseguintes informacoes:

� Nome do produto: Nome usado para identificar o produto pesquisado;

� Fabricante: Nome do fabricante do produto pesquisado;

122

Page 135: Bases Computacionais da Ciência

� Quantidade: Valor numerico para quantificar o produto pesquisado;

� Medida: Unidade de medida usada para classificar o produto, normal-mente indicado em sua embalagem. Neste exemplo, assuma as seguin-tes unidades: kg (quilogramas), l (litros), g (gramas), u (unidades) e p(pacotes);

� Preco: Valor de compra do produto;

� Supermercado pesquisado: Nome do supermercado onde foi realizadaa pesquisa;

� Data da pesquisa: Data de realizacao da pesquisa.

Dessa maneira, a base de dados poderia ser organizada com as seguintescolunas (atributos):

Produto Fabricante Qtd. Med. Preco Supermercado Data

Apos uma hipotetica visita a varios supermercados, considere que a basede dados foi preenchida com os seguintes valores:

Produto Fabricante Qtd. Med. Preco Supermercado Data

Suco ValeSuco 1 l 3.00 Arpoador 12/05/2011Suco Flash 1 l 4,50 Arpoador 12/05/2011

Tomate - 1 kg 3,50 Noite 14/05/2011Arroz Tio Jose 5 kg 8,64 Noite 14/05/2011Arroz Sem Broto 5 kg 9,99 Arpoador 12/05/2011Arroz Da TV 1 kg 1,99 Noite 14/05/2011Feijao Sem Broto 1 kg 4,00 Arpoador 12/05/2011

Tomate - 1 kg 2,99 Noite 14/05/2011Ovo A Granja 12 u 3,19 Arpoador 12/05/2011Ovo Caseiro 6 u 1,45 Noite 14/05/2011Suco Flash 1 l 3,99 Noite 12/05/2011...

......

......

......

O exemplo nos permite perceber caracterısticas que conferem a base dedados uma boa e desejavel organizacao:

1. Linhas contem dados relacionados aos produto (instancias ou itens dedados);

123

Page 136: Bases Computacionais da Ciência

2. Colunas contem os principais atributos dos produtos que se deseja ar-mazenar;

3. Na mesma coluna, so estao presentes dados relacionados ao mesmoatributo, sem excecao!

4. Na mesma linha, so estao presentes dados relacionados ao mesmo pro-duto, sem excecao!

5. Cada atributo de uma linha contem apenas um valor ao inves de poderconter uma colecao de valores (atributo monovalorado);

6. A base de dados pode crescer em seu numero de linhas indefinidamente;

7. Para cada produto pesquisado, o usuario da base de dados tem con-sigo uma referencia de quais informacoes sao relevantes e devem serarmazenadas na base, minimizando problemas de coleta de dados.

5.3.1 Tipos de Dados e Domınios

Toda base de dados deve reservar uma especial atencao para a escolha dostipos dos valores armazenados (tipos de dados). A escolha correta dos tiposde dados permite elevar o nıvel de qualidade da base, na medida em que tornaviavel controlar possıveis erros de cadastramento de valores. Esse controlebusca prevenir inconsistencias, tais como o armazenamento de letras em locaisdestinados exclusivamente a valores numericos ou datas escritas de formaincorreta.

Apesar de nao ter uma rıgida exigencia sobre o tipo dos dados que arma-zena, ainda assim a planilha fornece ferramentas para especificacao de tiposde dados simples. Entre os mais comuns, podemos destacar:

� Numero: Representa valores numericos de forma geral. Em muitosaplicativos, e possıvel configurar seus parametros a fim de restringir osvalores a conjuntos mais especıficos, como numeros inteiros ou fracio-narios. Ex.: -12,3; 4; +345,1234; ...

� Texto: Representa cadeias de caracteres (sequencias contınuas de carac-teres). Normalmente apresentadas entre aspas duplas (“”), as cadeiasde caracteres permitem representar informacoes textuais dentro da basede dados. Ex.: “Joaquim Jose da Silva Xavier”, “Avenida dos Estados,5001”, “7 de setembro”, ...

124

Page 137: Bases Computacionais da Ciência

� Moeda: Uma variacao do tipo que representa valores numericos, na qualexiste uma parte inteira e uma fracionaria com, no maximo, dois dıgitosdecimais. E bastante util para trabalhar com operacoes financeiras.Ex.: -12,34; 56,99; 0,00; ...

� Data: Representacao de uma data no calendario Gregoriano (adotadocomo referencia em muitos paıses do Ocidente, inclusive o Brasil), cominformacoes sobre dia, mes e ano. Apesar de padronizada em termos demedida de tempo, datas nao apresentam padrao de formato especıfico,possuindo muitas formas de apresentacao em diferentes paıses. Nor-malmente, o software usado para construir a base de dados possui fle-xibilidade na escolha desses formatos. No Brasil, e comum representardatas no formato DD/MM/AAAA, com dois dıgitos para o dia (DD),dois dıgitos para o mes (MM) e quatro dıgitos para o ano (AAAA).Ex.: 12/12/2012; 29/02/2000; ...

� Hora: Representa a divisao de tempo no perıodo de 1 (um) dia. Nor-malmente, adota-se o formato hh:mm:ss, com dois dıgitos para horas(hh), dois para minutos (mm) e dois para segundos (ss). Muitas ferra-mentas tambem oferecem alguma flexibilidade adicional, considerandomilissegundos, e indicacao de intervalos de 12h ou 24h. Ex.: 12:45:00;00:00:01; ...

� Logico: Representa os valores logicos VERDADEIRO e FALSO, osunicos valores validos para esse tipo. Muito usado quando se desejaprojetar alguma operacao condicional sobre os dados.

Os tipos de dados basicos impoem um controle inicial sobre o comporta-mento dos valores na base de dados, auxiliando na garantia de sua qualidade.No exemplo da lista de supermercado, a correta indicacao dos tipos de dadospoderia prevenir a inclusao de valores nao-numericos para o atributo Qtd.(claramente numerica por sua definicao), ou valores invalidos de datas (forade formato ou inexistentes) para o atributo Data.

Alem do tipo de dados, normalmente e possıvel personalizar regras aindamais rıgidas sobre o comportamento dos valores da base. Essas regras saorepresentadas pela definicao de um domınio. O domınio e um conjunto devalores considerados validos para um determinado atributo da tabela. Vamosusar novamente o exemplo e indicar os domınios dos atributos Qtd., Med. ePreco.

Para o atributo Qtd, construımos o seguinte domınio:

dom(Qtd) = {x ∈Qtd : x ∈Z e x > 0}

125

Page 138: Bases Computacionais da Ciência

Pela definicao, so sao considerados validos para o atributo Qtd valoresinteiros positivos. Perceba que a garantia de que a coluna armazenara valoresinteiros ja e dada pelo tipo de dado, mas o domınio restringe um pouco mais aregra, exigindo que, alem de inteiros, sejam positivos. No exemplo, a definicaodesse domınio procede, uma vez que no contexto da lista de supermercado,nao parece razoavel que um produto tenha quantidades negativas ou nulas.

Para o atributo Med:

dom(Med) = {“kg”,“l”,“g”,“u”,“p”}

O atributo Med possui somente cinco valores validos: kg (quilograma),l(litro), g(grama), u(unidade) e p(pacote). O objetivo deste atributo e indi-car a unidade de medida referencia do produto pesquisado. Note que, apesarde configurado como uma coluna de texto, so serao considerados validos essesvalores, de modo que qualquer outra medida sera invalida. Este exemplo eparticularmente interessante porque permite ilustrar uma forte relacao en-tre diferentes atributos da tabela. As colunas Qtd, Med e Preco devem serusadas juntas para representar o valor de um produto (empacotado em umaembalagem padronizada por alguma unidade de medida). Um valor erradocadastrado em Med torna inviavel calcular a relacao de preco obtida por Qtde Preco e provavelmente inutilizara a linha inteira para futuras consultas,justificando mais ainda o zelo pela qualidade dos dados.

Quanto ao Preco:

dom(P reo) = {x ∈ P reo : x ∈R e x ≥ 0}

O atributo Preco reconhece somente valores reais maiores ou iguais azero (ou valores nao-negativos). Os possıveis valores do tipo de dado Moedapodem ser vistos como subconjuntos de numeros reais, sempre representadoscom duas casas decimais. Embora valores negativos possam ser validos emalgumas aplicacoes (como planilhas contabeis, por exemplo), nao e esperadoque aparecam precos negativos em um supermercado.

Como vimos, a definicao de tipos e domınios presta um importante servicopara a manutencao da qualidade e confiabilidade dos dados contidos em umabase de dados. Tipos de dados e domınios sao conceitos correlatos e atuamde forma complementar. De alguma maneira, o tipo de dados define umdomınio inicial, que pode ser refinado de acordo com a contextualizacao dainformacao que sera guardada.

Nem sempre e vantajoso criar domınios. Analisemos, por exemplo, a co-luna Produto. Claramente, parece um exagero aceitar qualquer possibilidadede texto. Por outro lado, tambem nao e trivial catalogar todas as possibili-dades possıveis de produtos em um supermercado que poderiam entrar nessa

126

Page 139: Bases Computacionais da Ciência

lista. Nessa situacao, cabe ao responsavel pela base analisar as vantagens edesvantagens envolvidas na definicao dos domınios. Para algumas situacoes,apesar de mais abrangente, pode ser mais adequado aceitar qualquer possi-bilidade de construcao de texto do que restringı-las a um conjunto grande dedados e de difıcil manutencao.

5.3.1.1 Por que e importante definir tipos?

A discussao sobre a importancia da escolha correta dos tipos pode ser aindajustificada, alem de todos os aspectos ja citados, pela interpretacao dadapelo computador aos valores guardados na base. Para ilustrar essa situacao,vamos acompanhar a comparacao de duas datas, respondendo a seguintepergunta:

Qual desses valores e menor: 12/12/2010 ou 22/12/2009?

A melhor resposta seria:

Nao sei. Preciso saber o tipo de dados para poder responder!

Neste exemplo, a interpretacao do tipo de dados faz toda a diferenca!A interpretacao natural de qualquer pessoa ao ver os valores 12/12/2010 e22/12/2009 seria trata-los como datas. Dessa forma, considerando a menordata aquela que ocorreria primeiro na escala crescente de tempo, 22/12/2009e menor que 12/12/2010. Decisao tomada sem maiores problemas.

Para o computador, entretanto, prevalece o tipo de dado da posicao naqual foram armazenados esses valores. Se armazenados como cadeias de ca-racteres (texto), a comparacao de ambos ocorrera levando em conta o criteriode comparacao de texto, ou seja, a classificacao lexicografica (a mesma usadapelo dicionario). Sendo assim, a cadeia de caracteres “12/12/2010” seria me-nor que “22/12/2009”, pois o primeiro caractere de ambas indicaria que otexto iniciado em ’1’ e menor que o texto iniciado em ’2’.

Neste caso, nota-se como e importante indicar claramente os tipos de da-dos para ter sucesso em determinadas operacoes, principalmente operacoesde comparacao e, consequentemente, classificacao (ordenacao), que explora-remos nas proximas secoes.

5.3.1.2 Algumas observacoes sobre planilhas

Planilhas eletronicas sao sistemas de software que servem para organizar da-dos, proporcionando visualizacao e tratamento matricial, e integrando com

127

Page 140: Bases Computacionais da Ciência

um numero razoavel de funcoes matematicas e sistemas geradores de grafi-cos. E possıvel organizar dados no formato de tabelas de bases de dados,mas muitas funcionalidades, principalmente as relacionadas ao controle deconsistencia sao menos rıgidas e flexıveis do que o necessario para muitasaplicacoes.

Embora permita a definicao de tipos de dados para um conjunto de posi-coes de linha e coluna, planilhas eletronicas usualmente permitem a inclusaode dados fora de seu domınio e, por vezes, incompatıveis com os tipos de cadaposicao da tabela. Dados incorretos, embora possıveis, causam muito trans-torno e problemas quando utilizados em operacoes matematicas, de modoque e sempre importante verificar se atendem plenamente a especificacao deseus tipo e domınio.

Em sistemas de software especıficos para o tratamento de bases de da-dos, o controle de tipos e domınios e extremamente rigoroso, obrigando aadequacao dos valores a seus respectivos tipos e domınios.

5.4 Arquivos Estruturados

Arquivos estruturados (ou flat files) sao arquivos de dados organizados sobuma estrutura rıgida e pre-definida. Os arquivos estruturados sao muito usa-dos para a troca de dados entre sistemas computacionais diferentes que naomantem, entre si, um canal direto de comunicacao. Informalmente, dizemosque o arquivo estruturado e um “espelho” da tabela, pois sua disposicao fısicafacilita a organizacao dos valores na estrutura de linhas e colunas, tal qual atabela.

Esses arquivos tambem sao muito difundidos na comunidade cientıfica,para distribuicao de bases de dados, preservando a sua estrutura e seu con-teudo. Ha muitos exemplos de bases abertas distribuıdas gratuitamente queutilizam arquivos estruturados para facilitar a importacao de dados por partede pesquisadores.

Em um arquivo estruturado, e facil identificar todos os elementos presen-tes na base de dados. Definem-se caracteres (ou sequencias de caracteres)que exercerao o papel de delimitadores de linha e de coluna. Os separadoresde coluna servem para indicar a separacao entre diferentes colunas na mesmalinha. Enquanto isso, os separadores de linha servem para separar as linhasda tabela entre si. Considerando os dados de nosso exemplo, e assumindo ocaractere ‘;’ como separador de colunas e o caractere quebra de linha comoseparador de linhas, terıamos o seguinte arquivo estruturado:

128

Page 141: Bases Computacionais da Ciência

”Suco”;”ValeSuco”;1;l;3.00;”Arpoador”;12/05/2011”Suco”;”Flash”;1;l;4,50;”Arpoador”;12/05/2011”Tomate”;- ”;1;kg;3,50;”Noite”;14/05/2011”Arroz”;”Tio Jose”;5;kg;8,64;”Noite”;14/05/2011”Arroz”;”Sem Broto”;5;kg;9,99;”Arpoador”;12/05/2011”Arroz”;”Da TV”;1;kg;1,99;”Noite”;14/05/2011”Feijao”;”Sem Broto”;1;kg;4,00;”Arpoador”;12/05/2011”Tomate”;- ”;1;kg;2,99;”Noite”;14/05/2011”Ovo”;”A Granja”;12;u;3,19;”Arpoador”;12/05/2011”Ovo”;”Caseiro”;6;u;1,45;”Noite”;14/05/2011”Suco”;”Flash”;1;l;3,99;”Noite”;12/05/2011

Esse formato e uma variacao do conhecido CSV (Comma-Separated Va-lues), em que as vırgulas (‘,’) sao usadas como separadores de colunas. Comonosso exemplo usa vırgulas na coluna Preco para compor o valor (fraciona-rio), nao podemos usa-las diretamente como separador. Veja que o separadordeve ser sempre um caractere (ou uma sequencia deles) que nao se confundecom nenhum outro valor presente na tabela, a fim de evitar ambiguidadesde interpretacao de valores. Nesse exemplo, o separador escolhido foi o ca-ractere ponto-e-vırgula (‘;’). Note que, obrigatoriamente, todas as linhaspossuem cinco(5) separadores de coluna, evidenciando que a tabela possuiseis(6) colunas.

A maioria das ferramentas de bases de dados (e tambem de planilhaseletronicas) possuem funcionalidades de importacao (leitura) e exportacao(gravacao) de arquivos em formato estruturado.

5.5 Consultas em Bases de Dados

Em se tratando de bases de dados dispostas em tabelas ou planilhas, umusuario pode desejar a selecao de linhas utilizando diversos criterios. Umaselecao de linhas e denominada uma consulta. Para se fazer uma consulta, oselementos de um conjunto de dados podem ser comparados usando qualquerpropriedade definida sobre seu domınio. Uma consulta e expressa por meiode um ou mais predicados, no(s) qual(is) cada predicado envolve um atributo,um operador e um valor. Um predicado resulta em uma expressao logica quedeterminara se uma linha da planilha fara parte do resultado da consulta.Entre os operadores mais utilizados estao os relacionais >, ≥, <, ≤, = e ,.Considere o exemplo no qual deseja-se todos os produtos produzidos pelofabricante ’Tio Jose’:

fabricante = ’Tio Jose’

129

Page 142: Bases Computacionais da Ciência

Consultas mais elaboradas podem ser realizadas por meio da combinacaode predicados com operadores logicos como AND e OR. Voltando ao exemploda lista de compras, para expressar a consulta na qual desejam-se todos osprodutos produzidos pelo fabricante ’Tio Jose’ com preco menor ou igual aR$ 30:

fabricante = ’Tio Jose’ AND preco ≤ 30

Os operadores logicos AND e OR tem sua interpretacao conforme segue:

� predicado1 AND predicado2: e verdadeiro somente se ambos predicado1e predicado2 forem verdadeiros. Caso contrario, e falso;

� predicado1 OR predicado2: e verdadeiro se predicado1 ou predicado2(algum dos dois) forem verdadeiros. Caso contrario, e falso.

Consultas tambem podem envolver operacoes de agregacao. Uma agre-gacao calcula um valor resultante de uma colecao de valores, como media,soma, mınimo, maximo e contagem. Essas operacoes podem ser utilizadaspara responder consultas como: qual a media de precos dos produtos de umdeterminado fabricante? Alem disso, as operacoes de agregacao podem seragrupadas com base em um ou mais atributos de uma tabela, por exemplo,para se calcular a media de precos dos produtos de cada fabricante.

As operacoes de conjunto, como a uniao, interseccao, subtracao e divisao,tambem oferecem um recurso interessante na definicao de consultas envol-vendo mais de uma tabela ou planilha. E importante notar que a utilizacaodesses operadores deve obedecer as restricoes definidas na teoria de conjun-tos, como a compatibilidade dos seus conjuntos de atributos. Assim, parasua utilizacao, as tabelas devem possuir o mesmo numero de atributos e seusatributos devem possuir os mesmos domınios, ou seja, os domınios dos i-esimos atributos de cada tabela sao os mesmos. Por exemplo, pode-se obtera uniao dos produtos comprados por dois membros da famılia em supermer-cados diferentes.

5.6 Exercıcios da Aula Pratica

Atividade 1 - (Definicao de tipos e domınio) Vamos criar uma planilha noCalc contendo a tabela com a lista de supermercado exemplificada no texto.

Abra o “Calc”. Ira aparecer a area de trabalho do Calc com uma planilhaem branco.

130

Page 143: Bases Computacionais da Ciência

Antes de mais nada, salve esta planilha usando as teclas de atalho Ctrl+Shift+sou o menu Arquivo � Salvar como. Digite em Nome do arquivo: ativi-dade1. (Dica: crie uma pasta separada para guardar os seus arquivos, porexemplo, em Meus documentos\SeuNomeSobrenome.)

Agora, voce poderia digitar uma tabela como a apresentada na Figura5.4. Contudo, ha um metodo mais pratico para importar os dados e quepode poupar o trabalho de digitacao.

Figura 5.4: Atividade 1.

Clique no menu Inserir � Planilha do arquivo e escolha o arquivoatividade1.csv. Trata-se do arquivo texto com os dados separados por vırgula.Na janela que aparece, Figura 5.5, em Opc~oes de separadores selecionarOutros e preencher o tipo de separador usado: “;”(ponto-e-vırgula). Observeque na parte inferior dessa caixa, aparece como os dados devem ser exibidosna planilha.2 Se estiver tudo certo, clique em OK.

Os dados aparecem sem formatacao e sem os nomes das colunas (rotulosda tabela). Com o mouse, selecione todo o bloco de dados, recorte e cole emuma celula de sua preferencia (por exemplo, a celula B3). Agora, voce podedigitar os rotulos de cada coluna (cf. Figura 5.4), acertando a largura dasmesmas caso necessario.

Selecione simultaneamente os dados das colunas Produto, Fabricante, Me-dida e Supermercado. Para isto use o mouse e mantenha pressionada a teclaCtrl para selecionar colunas nao adjacentes. Clique com o botao direitodo mouse sobre a area selecionada e escolha Formatar celulas (ou, no menuFormatar� Formatar celular). Em Categoria especifique o tipo de dadocomo Texto (cf. Figura 5.6), em seguida, confirme no botao OK.

2E importante desmarcar a caixa Vırgula uma vez que estamos usando a vırgula para

131

Page 144: Bases Computacionais da Ciência

Figura 5.5: Atividade 1: janela para importar arquivo “.csv”.

Figura 5.6: Atividade 1: janela para formatar celulas.

Repita para as colunas Qtd., Preco e Data, atribuindo, respectivamente,os tipos Numero (Geral), Moeda (Portugues Brasil) e Data.

Para evitar que sejam introduzidos dados invalidos, ainda e possıvel de-finir um domınio para os dados. Por exemplo, selecione os dados da colunaQtd. e clique no menu Dados � Validade. Ira aparecer a janela da Fi-gura 5.6 na qual se escolheu: Permitir Numeros Inteiros, Permitir Celulas emBranco, Dados entre, no Mınimo 0 e, no Maximo, 100. Faca o mesmo e, emseguida, clique na aba Alerta de Erro.

Na mesma janela, na aba Alerta de Erro, marcar Mostrar mensagem,definir como Ac~ao a emissao de um Aviso e digite uma Mensagem de erro

como na Figura 5.8. Agora, experimente digitar algum valor invalido e vejao que ocorre.3

denotar o ponto decimal.3Para fins didaticos, restrigiu-se a quantidade a numeros inteiros. Na pratica, isto pode

ser inconveniente caso se queira especificar 0,5 kg de algum produto.

132

Page 145: Bases Computacionais da Ciência

Figura 5.7: Atividade 1: janela para definir valores validos para os dados.

Figura 5.8: Atividade 1: janela para definir alerta de erro caso seja digitadoum dado invalido.

Opcional - (Formatacao da tabela) Uma tabela e uma maneira organi-zada de se armazenar e apresentar os dados, sendo a sua aparencia muitoimportante. Para formatar uma ou mais celulas, basta seleciona-las, clicarcom o botao direito do mouse e escolher Formatar celulas, ou na barra demenus, clicar em Formatar e, em seguida, escolher o item Celulas.

Selecione toda a sua tabela e abra a janela Formatar celulas. Cliquena aba Bordas e faca os seguintes ajustes: Padr~ao (Definir a borda externa etodas as linhas internas); Estilo (0,50pt); Cor (Preto). Confirme os ajustesno botao OK.

E conveniente destacar os rotulos da tabela. Para fazer isto, selecionea primeira linha e clique no botao Negrito (N) na barra de ferramentas.Este e muitos outros ajustes tambem estao disponıveis na caixa de dialogoFormatar celulas. Experimente formatar a sua tabela para que fique comoa apresentada na Figura 5.4.

Atividade 2 - (Classificacao de dados usando criterios) Para facilitar alocalizacao de dados na sua tabela, pode-se organiza-la usando criterios esta-

133

Page 146: Bases Computacionais da Ciência

belecidos pelo usuario. Este processo e chamado de classificacao dos dados.Como exemplo, considere a sua planilha que, no momento, encontra-se comoa da Figura 5.4 e que poderia ser usada pelo caixa do supermercado paraconferir o preco dos produtos. Neste caso, a consulta e muito facil pois digi-tamos apenas 11 itens de dados, contudo, imagine procurar um dado numatabela com milhares de itens. E conveniente que o operador de caixa dispo-nha de uma lista impressa com os itens do campo Nome ordenados em ordemalfabetica. E, como um mesmo produto (Nome) pode ter varios fabritantes,a lista impressa pode se tornar ainda mais organizada se tambem tiver ositens do campo Fabricante ordenados. Vejamos como isto pode ser feito.

Selecione toda a tabela e clique no menu Dados � Classificar. Abre-se a janela da Figura 5.9. Como primeiro criterio escolha Classificar por

Produto. E, Em seguida por Fabricante. Ambos em ordem Crescente. Cliqueno botao OK e veja o resultado.4

Figura 5.9: Atividade 1: janela Classificar.

Atividade 3 - (Classificacao de dados usando “AutoFiltro”) Existe outrorecurso que facilita bastante a consulta de informacoes numa tabela commuitos itens de dados.

Para exibir este recurso, selecione uma das celulas da tabela e clique nomenu Dados � Filtro � AutoFiltro. Irao aparecer setas ao lado dosrotulos. Clique na seta do rotulo Produto e escolha Suco. Serao exibidasapenas as entradas referentes a Suco. Observe que a seta desta coluna mudade cor, indicando que esta sendo usada como filtro.

Agora, voce pode refinar um pouco mais a busca. Clique na seta de Fa-bricante e escolha Flash. Serao apresentadas apenas as linha deste fabricante.

4Na barra de ferramentas, ha um botao (AZ ↓) que permite fazer classificacoes simples.O uso deste botao nao e recomendado quando se quer classificar segundo varios rotulos ecriterios mais gerais.

134

Page 147: Bases Computacionais da Ciência

Uma dada classificacao pode ser desfeita clicando-se na seta (no momentocom a cor azul) e escolhendo-se Todas. E todo o recurso de AutoFiltro podeser desabilitado em Dados � Filtro � Ocultar autofilto.

Atividade 4 - (Criando subtotais) O levantamento de informacoes a partirde uma grande quantidade de dados tabelados pode ser facilitado por meiode ferramentas que automatizam varias operacoes e produzem um relato-rio. Mais especificamente, no Calc isto pode ser feito empregando o recursoSubtotais que organiza os dados (classificando segundo algum criterio) e,em seguida, calcula subtotais de algum campo utilizando uma dada funcao.Vejamos como isto pode ser feito por meio do exemplo da Figura 5.4.

Figura 5.10: Atividade 1: janela para calcular subtotais.

Selecione toda a sua tabela e clique no menu Dados � Subtotais. Eapresentada a janela Subtotais da Figura 5.10. Nesta janela, escolha Ajustarpor Produto, Calcular subtotais de Preco e Utilizar func~ao Soma. Cli-que no botao OK. Agora, voce tem um relatorio com o subtotal gasto em cadaproduto e, no final, total geral.

Os subtotais podem ser removidos abrindo novamente a janela Subtotais

e acionando o botao Excluir. De maneira alternativa, tambem pode-seempregar o atalho Ctrl-z para desfazer a operacao.

Atividade 5 - (Consultas usando criterios) Em uma tabela com umagrande quantidade de dados, a consulta de informacoes tambem pode serfeita por um recuso chamado “padrao” e que permite definir padroes (crite-rios) para a busca de informacoes. Por exemplo, na lista de supermercado,imagine que voce queira saber quais sao os produtos com precos maiores doque R$4,00. Vejamos como isto pode ser feito no Calc:

1. Selecione toda a tabela e acione o AutoFiltro por meio do menu Dados

� Filtro � AutoFiltro.

2. Clique na seta que aparece ao lado do rotulo “Preco” e escolha Filtro

padr~ao.

135

Page 148: Bases Computacionais da Ciência

3. Aparece a janela “Filtro padr~ao”. Faca os ajustes indicados na Fig.5.11 e clique em OK.

Para desfazer a consulta, basta desativar o AutoFiltro.

Figura 5.11: Janela para definicao do filtro. (Atividade 5.)

5.7 Exercıcios Complementares

Exercıcio 1. Um cidadao pretende fazer um financiamento para compra dacasa propria pelo Sistema de Amortizacao Constante (SAC). Nesse sistema,cada prestacao e resultado da soma da amortizacao com os juros mensais.A amortizacao mensal e dada pelo valor do financiamento dividido pelo nu-mero de parcelas do financiamento. Os juros que compoem cada prestacaopodem ser calculados com aplicacao direta do percentual contratado em re-lacao ao saldo devedor no mes anterior. Crie uma planilha que simule umfinanciamento de R$ 50.000,00 e taxa de juros de 0,5% ao mes com prazode 100 meses. A planilha deve apresentar o numero da prestacao, os juros,a amortizacao, o valor da prestacao e o saldo devedor. No final, devem sercomputados somatorios das colunas de juros, de amortizacao e do valor daprestacao. Considere o exemplo da Figura 5.12, onde foram criadas funcoespara calculo dos valores das colunas, de modo que seja possıvel copiar as ce-lulas desta linha para as proximas 99 linhas que correspondem as prestacoesrestantes.

Exercıcio 2. Altere a planilha do exercıcio 1 de modo que a taxa de jurosmensal seja informada na celula A2 e que as funcoes da coluna B referenciemessa celula. Dica: na funcao, utilize o caracter $ antes do numero da linhareferenciada para determinar que esse numero nao deve ser atualizado aocopiar o conteudo dessa celula para as proximas linhas. Crie totalizacoespara as colunas de juros, amortizacao e prestacao a cada 12 meses.

Exercıcio 3. Considere o arquivo idh.csv com dados obtidos do sıtio do

136

Page 149: Bases Computacionais da Ciência

Figura 5.12: Sistema de Amortizacao Constante.

IPEA5, cujo dicionario de dados encontra-se na Tabela 5.1. Abra o arquivono Calc, altere as opcoes de importacao, atribuindo ponto e virgula comoseparador e desmarcando a opcao virgula. Salve o arquivo no formato nativodo Calc denominado Planilha ODF (.ods) e responda as seguintes questoescriando uma nova planilha para cada uma delas:

1. Crie um autofiltro para a planilha. Selecione as linhas referentes aoEstado do Acre em 1991 e que tenham IDH-M Longevidade maior quezero.

2. Classificar por Estado em seguida por Municıpio e calcular subtotais(media dos atributos IDH-M Longevidade, IDH-M Educacao, IDH-MRenda, ..., Renda familiar per capita media) agrupando por codigo domunicıpio.

3. Classificar por Regiao e Estado, apenas para a pesquisa realizada em1991, com valores de IDH-M Longevidade diferentes de zero, calcu-lando subtotais agrupados primeiramente por Regiao e em seguida porEstado, calculando as medias dos atributos IDH-M Longevidade, IDH-M Educacao, IDH-M Renda, ..., Renda familiar per capita media.

5http://www.ipeadata.gov.br/

137

Page 150: Bases Computacionais da Ciência

Tabela 5.1: Dicionario de dados do arquivo idh.csv.Atributo DescricaoREALIZACAO ano de realizacao da pesquisaCODIGO codigo do municıpioUF unidade federativaREGIAO sigla da regiaoMUNICIPIO nome do municıpioLONGVD IDH-M LongevidadeEDUC IDH-M EducacaoRENDA IDH-M RendaESP VD NC Esperanca de vida ao nascerPOP URB % Populacao que vive em area urbanaIDHM Indice Desenvolvimento Humano IDH-MPOP 25AN Populacao de 25 ou + anos de idadePOP 15AN Populacao de 15 ou + anos de idadePOP 10AN Populacao de 10 a 14 anosPOP 7AN Populacao de 7 a 14 anosTX MRT Taxa mortalidade infantil, por mil nascidos vivosRD FM Renda familiar per capita media

5.8 Consideracoes Finais

Este capıtulo introduziu alguns conceitos basicos de organizacao de informa-cao, apresentando algumas das principais caracterısticas de bases de dados.Como indicado no inıcio deste capıtulo, nao e objetivo deste capıtulo intro-duzir processos de modelagem avancada de dados ou detalhes de sistemasde software especıficos para o tratamento e gerenciamento de dados, masapresentar conceitos importantes sobre organizacao de dados. Os conceitosapresentados neste capıtulo se aplicam a qualquer base de dados e auxiliamna compreensao de mecanismos que garantem maior qualidade a criacao e aotratamento de dados em qualquer contexto de manipulacao de informacao.

A compreensao dos principais conceitos de bases de dados permite apro-veitar melhor o potencial de calculo das planilhas eletronicas vistas nas ulti-mas semanas. Uma boa organizacao dos dados facilita a aplicacao de funcoesmatematicas e oferece uma boa compreensao visual da informacao armaze-nada. A importancia dos tipos de dados e domınios e particularmente sentidaquando a base de dados trabalha com outras ferramentas computacionais.Nos proximos capıtulos, quando serao apresentadas as primeiras nocoes deprogramacao, conceitos como tipos de dados, valores e domınios serao direta

138

Page 151: Bases Computacionais da Ciência

ou indiretamente importantes para realizar muitas operacoes.Bases de Dados representam uma area fundamental da Computacao, com

ampla insercao no mercado de trabalho empresarial e na universidades. Paraos interessados, o conteudo deste capıtulo sera novamente explorado e esten-dido em disciplinas mais avancadas da area de Computacao, nas quais serapossıvel explorar temas mais complexos da area, tais como Modelagem deDados, Otimizacao de Bases de Dados, Linguagens de Recuperacao e Segu-ranca de Dados, entre muitos outros.

139

Page 152: Bases Computacionais da Ciência

6 Logica de Programacao: Variaveis e Estruturas Sequenciais

Harlen Costa BatageloJoao Paulo Gois

Letıcia Rodrigues BuenoLuiz Carlos da Silva Rozante

Ronaldo Cristiano Prati

—– Universidade Federal do ABC

”O medico perguntou a mamae-matematica se era menino ou me-nina, e ela respondeu SIM!”

6.1 Introducao

Nesta etapa do curso, apresentamos conceitos basicos de desenvolvimentode programas para serem executados em dispositivos computacionais, comoo computador. O desenvolvimento desses programas envolve uma maneiraespecıfica de pensar e planejar estrategias para que esses dispositivos possamser usados para resolver problemas. Resolucao de problemas e a habilidadede formular problemas, pensar criativamente em solucoes e expressa-las demaneira clara e precisa, a fim de que, se e quando nos depararmos novamentecom o mesmo problema, podemos seguir a descricao da solucao como umareceita ou, neste caso, delegar a sua execucao a um dispositivo (normalmenteo computador) que ira executar as instrucoes.

Essa maneira de pensar e resolver problemas computacionalmente com-bina e integra algumas caracterısticas de diferentes areas como matematica,engenharia e ciencias naturais. Da matematica, usamos um formalismo pararepresentar ideias (particularmente quando envolvendo computacao). Da en-genharia, a maneira de projetar coisas, juntar componentes em sistemas mai-ores e avaliar e decidir quando temos que ponderar diferentes alternativas.Das ciencias naturais, a habilidade de observar o comportamento de sistemascomplexos, formular modelos e hipoteses e testar predicoes.

Aprender a desenvolver programas e uma excelente oportunidade parapraticar habilidades de resolucao de problemas. Mostramos aqui como atri-buir instrucoes a um computador, de maneira que ele possa nos auxiliar

140

Page 153: Bases Computacionais da Ciência

a resolver problemas. Para isto precisamos de dois ingredientes: lingua-gem e logica. Neste capıtulo, apresentamos tambem, atraves de situacoesdo dia-a-dia, como intuitivamente delegamos tarefas prescrevendo instrucoesou realizamos tarefas seguindo instrucoes em uma ordem logica de modo aresolver problemas. Utilizamos estes exemplos como motivacao para intro-duzir os conceitos basicos de logica de programacao. No objetivo de auxiliarna ilustracao dos conceitos apresentados, utilizamos ao longo dos Capıtulos5, 6 e 7 uma ferramenta chamada RoboMind1. Neste aplicativo, o obje-tivo e controlar um robo virtual atraves da prescricao de instrucoes, usandouma linguagem que contem varios elementos de logica de programacao. Aofinal do capıtulo, exemplificamos os mesmos conceitos em uma linguagemde programacao de proposito mais geral chamado Scilab. O estudo e odesenvolvimento de programas mais elaborados e deixado para o curso deProcessamento na Informacao.

6.2 Delegando tarefas - O Conceito de Instrucao

Em nosso cotidiano, a todo momento, costumamos delegar tarefas em formade instrucoes:

(i) Voce chega faminto a uma lanchonete e faz um pedido de uma refei-cao: um lanche, um suco e uma sobremesa. Tambem solicita que sejapreparada “com urgencia”, pois esta faminto. Se a refeicao for prepa-rada como voce gostaria, a instrucao foi bem dada e a lanchonete (aexecutora da instrucao) foi eficiente.

(ii) Para voce nao perder o horario, voce ja instruiu algum equipamentoque possui a funcao de despertador (relogio cuco, telefone celular, radio-relogio). Se voce ajustou corretamente o horario e o volume sonoro altoo suficiente para voce acordar, voce despertara.

Estes sao exemplos de como costumamos delegar tarefas por prescreverinstrucoes. No primeiro caso, as instrucoes foram dadas atraves de comu-nicacao oral na Lıngua Portuguesa, enquanto no segundo foram instrucoesespecıficas para o equipamento adotado.

As instrucoes diferem de acordo com as funcionalidades que o equipa-mento e capaz de oferecer. Por exemplo, uma campainha tem a unica funcaode ser tocada. Em uma calculadora simples, as instrucoes correspondem asoperacoes aritmeticas de soma, subtracao, multiplicacao e divisao. Ja em

1disponıvel em http://www.robomind.net/

141

Page 154: Bases Computacionais da Ciência

um aparelho de televisao, dentre as diversas instrucoes que podem haver,normalmente, estao os comandos de avancar/retroceder o canal, aumentar/-diminuir o volume e a funcao liga/desliga. Em todos os casos, temos umconjunto de instrucoes especıficas basicas que sao as acoes fundamentais queo equipamento e capaz de realizar.

6.3 Sequencia de Instrucoes - Estruturas

Sequenciais

Nem sempre as instrucoes basicas sao capazes de resolver um problema. Nessecaso, instrucoes podem ser compostas de modo a produzir resultados quenao poderiam ser obtidos com apenas uma unica instrucao. Por exemplo,voce pode combinar com algum morador da sua casa que se a campainhafor tocada tres vezes seguidas, com um intervalo de aproximadamente doissegundos entre cada toque, e voce que esta na porta e ela pode ser abertapor quem estiver dentro da casa.

Vamos agora ver um exemplo um pouco mais “computacional”. Suponhaque desejamos calcular o resto da divisao de 9 por 2 usando uma calculadoraque possui as operacoes de soma, subtracao, multiplicacao e divisao, mas naopossui a operacao de resto da divisao. Voce, sendo um aluno astuto, pensouna seguinte solucao:

1. Dividir 9, o dividendo, por 2, o divisor, obtendo o resultado 4,5;

2. Considerar apenas a parte inteira do resultado, ou seja, 4;

3. Multiplicar a parte inteira do resultado pelo divisor, obtendo 4×2 = 8;

4. Subtrair o dividendo pelo resultado da multiplicacao anterior, isto e,9− 8 = 1, que e o resultado esperado.

Assim, conseguimos obter o resto da divisao entre dois numeros usandouma composicao das operacoes de multiplicacao, subtracao e divisao. De fato,nao apenas a operacao de resto da divisao, mas uma infinidade de operacoesmais complexas pode ser obtida atraves da composicao de operacoes simples.

A sequencia de instrucoes importa?

A ordem em que uma sequencia de instrucoes e executada pode alterar oresultado obtido. Por exemplo, quando voce pede a refeicao na lanchonete,voce nao espera que o garcom traga a sobremesa antes do lanche. Outro

142

Page 155: Bases Computacionais da Ciência

exemplo em que a ordem e importante e no caso de, antes de executar a acaode vestir seu calcado, primeiro voce executa a acao de vestir a meia.

Mas nem sempre a ordem das instrucoes importa. Por exemplo, usandoainda o exemplo da calculadora, se desejamos calcular o resultado da expres-sao 1 + 1 − 2, podemos calcular primeiramente 1 + 1 e entao subtrair 2 doresultado. Mas tambem podemos calcular 1−2 em primeiro lugar e so entaosomar 1 ao resultado. O resultado sera o mesmo neste caso, nao importa aordem das operacoes. Entretanto, as expressoes (1 + 1) × 2 e 1 + (1 × 2), naqual apenas os parenteses foram modificados, nao sao equivalentes, ja que(1 + 1)× 2 = 4 e 1+ (1× 2) = 3. Assim, em geral, alem de saber quais instru-coes devemos utilizar, devemos saber exatamente qual a ordem em que essasinstrucoes serao executadas.

Ilustrando instrucao e sequencia de instrucoes com RoboMind

Vamos exemplificar o conceito de instrucao e sequencia de instrucoes usandoRoboMind. O objetivo do RoboMind e criar um programa para que o roboexecute alguma tarefa. O robo tem algumas instrucoes basicas tais como:

� se mover;

� marcar (pintar) o chao;

� observar o ambiente; e

� pegar um objeto.

As instrucoes para o robo podem ser dadas via controle remoto ou es-crevendo um programa com comandos. Vamos primeiro experimentar comocontrolar o robo usando o controle remoto. No programa RoboMind, abra ocontrole remoto (Executar→Controle Remoto) e experimente movimentar orobo. Na Figura 6.1 e apresentada uma janela do RoboMind com o controleremoto aberto.

Observe que na parte de cima do controle remoto tem alguns botoes comsetas para fazer o robo se mover para cima, baixo, direita e esquerda. Odesenho simbolizando um alvo faz o robo voltar para a posisao inicial nocenario. Experimente usar os botoes direcionais para movimentar o robo noambiente. Observe que logo abaixo dos botoes, a medida que voce moveo robo, vao aparecendo os comandos associados aos movimentos que vocemandou o robo executar atraves do controle remoto.

143

Page 156: Bases Computacionais da Ciência

Figura 6.1: Janela do RoboMind com o controle remoto aberto.

Observe bem os comandos que sao gerados a medida que o robo se mo-vimenta. Quando se pressiona seta para cima (↑), aparece o comando2

andarFrente(1), o que faz com que o robo ande um passo para frente. Domesmo modo, quando se pressiona seta para baixo (↓), aparece o comandoandarTras(1), que faz o robo andar um passo para tras. As setas para adireita (�) e para a esquerda (�) fazem com que o robo vire 90°para a direitaou esquerda, exibindo os comandos virarEsquerda() e virarDireita(),respectivamente.

Usando o controle remoto, tente fazer com que o robo percorra um qua-drado andando um passo a frente e virando a esquerda, ate voltar para suaposicao inicial. Para fazer isso, voce provavelmente deve ter usado a sequen-cia de comandos ↑,�,↑,�,↑,�,↑,�, o que gerou o seguinte programa:

1 andarFrente (1)

2 virarEsquerda ()

3 andarFrente (1)

4 virarEsquerda ()

5 andarFrente (1)

6 virarEsquerda ()

7 andarFrente (1)

8 virarEsquerda ()

2Se a interface do RoboMind nao estiver em portugues, voce pode trocar a lıngua emFile→Settings e selecionar o portugues como idioma.

144

Page 157: Bases Computacionais da Ciência

Ao inves de usar o controle remoto, vamos agora instruir o robo a per-correr o mesmo quadrado usando comandos. Para fazer isso, voce pode usara mesma sequencia de comandos que foi gerada quando voce usou o con-trole remoto. Feche o controle remoto e coloque essa sequencia de comandosna janela de comandos, do lado esquerdo do cenario, como mostrado na Fi-gura 6.2, e execute o programa clicando em executar, na parte inferior dajanela. Se tudo estiver certo, o robo deve percorrer um quadrado e voltara posicao inicial, como aconteceu anteriormente quando usamos o controleremoto.

Figura 6.2: Janela do RoboMind com comandos para o robo percorrer umquadrado.

Agora, imagine que ao inves de percorrer o quadrado andando um unicopasso para a frente, voce quer que o robo de dois passos antes de cada viradaa esquerda. Utilizando o controle remoto, isso pode ser feito clicando em↑,↑,�,↑,↑,�,↑,↑,�,↑,↑,�, o que levaria ao seguinte programa:

1 andarFrente (1)

2 andarFrente (1)

3 virarEsquerda ()

4 andarFrente (1)

5 andarFrente (1)

6 virarEsquerda ()

7 andarFrente (1)

8 andarFrente (1)

9 virarEsquerda ()

10 andarFrente (1)

145

Page 158: Bases Computacionais da Ciência

11 andarFrente (1)

12 virarEsquerda ()

Voce ja deve ter notado que existe uma diferenca entre as instrucoes deandar e virar. Nos comandos andarFrente e andarTras, entre os paren-teses existe o numero 1, o que nao ocorre nos comandos virarEsquerda evirarDireita. Se voce intuiu que esse numero esta relacionado ao tama-nho do passo que o robo anda, voce esta certo! Para fazer o robo andarum quadrado no qual ele da dois passos antes de virar a esquerda, ao in-ves de repetir duas vezes o comando andarFrente(1), voce pode substituirpor andarFrente(2). O numero entre parenteses e chamado argumento ouparametro da instrucao andarFrente(n), no qual n e uma variavel que re-presenta o valor que deve ser atribuıdo ao parametro da instrucao. Dessamaneira, para fazer com que o robo percorra um quadrado de lado dois, vocepode usar o seguinte programa:

1 andarFrente (2)

2 virarEsquerda ()

3 andarFrente (2)

4 virarEsquerda ()

5 andarFrente (2)

6 virarEsquerda ()

7 andarFrente (2)

8 virarEsquerda ()

Veja que, em termos praticos, esse programa tem o mesmo funcionamentodo programa anterior, mas usa menos instrucoes. Escrever instrucoes parece,a princıpio, mais trabalhoso do que usar o controle remoto. Entretanto, uti-lizando o controle remoto, voce esta limitado aos comandos embutidos nosbotoes exibidos na interface do programa RoboMind, enquanto a linguagempor tras proporciona muito mais flexibilidade! Alem disso, voce pode arma-zenar o programa em um arquivo, e executa-lo quantas vezes voce quiser,ao passo que com o controle remoto, se quiser percorrer um novo quadrado,voce teria que repetir toda a sequencia de botoes. Alem desses comandosde movimento, o RoboMind tem tambem os comandos andarNorte(n),andarSul(n), andarLeste(n) e andarOeste(n), nos quais n e um parametroque pode ser usado da mesma maneira que andarFrente(n). Experimenteusa-los para percorrer o ambiente.

Alem dos comandos para movimentar o robo no ambiente, o RoboMindprove comandos para o robo interagir com o ambiente com acoes como pintaro chao de branco ou preto e pegar a baliza do chao. Apos executar a instru-cao pintarBranco() (ou pintarPreto()), para cada movimento do robo,o caminho que o robo passou e pintado de branco (preto, respectivamente).Para parar de pintar, e preciso dar a instrucao pararPintar(). A seguir, o

146

Page 159: Bases Computacionais da Ciência

programa desenha um quadrado branco (preto, respectivamente) no chao:

1 pintarBranco ()

2 andarFrente (1)

3 virarEsquerda ()

4 andarFrente (1)

5 virarEsquerda ()

6 andarFrente (1)

7 virarEsquerda ()

8 andarFrente (1)

9 virarEsquerda ()

10 pararPintar ()

Os comandos pegar() e soltar() servem para pegar e soltar a baliza,respectivamente. O comando pegar() so funciona se a baliza estiver na celulaimediatamente a frente e o robo nao estiver carregando nenhuma baliza. Ocomando soltar() coloca a baliza na celula imediatamente a frente, casonao tenha nenhum obstaculo nessa celula.

6.4 Exercıcios para Sala de Aula

Exercıcio resolvido

Vamos agora realizar um exercıcio completo passo-a-passo, para que vocepossa praticar depois resolvendo outros problemas e treinar logica de progra-macao. Para realizacao deste exercıcio, considere que:

� O sentido norte–sul equivale ao eixo Y e o sentido leste–oeste equivaleao eixo X.

� O ponto (0,0) e a origem.

Vamos primeiro criar um mapa, que sera o cenario para o nosso robo.Abra um programa de edicao de texto, como o Notepad, e inserir as linhasapresentadas na Figura 6.3. Observe que as linhas que comecam com ”#”saoos comentarios, e nao precisam ser inseridas; logo a seguir, a partir da linhade comando map, estao representadas os caracteres para desenhar o mapa.

Quando voce terminou de definir o seu mapa voce deve salva-lo com umnome que voce escolher, mas com a extensao ”.map”ao inves da extensao”.txt”. Agora, inicie o RoboMind para testar o seu mapa. E so clicar emArquivo → Abrir mapa. Na Figura 6.4 e mostrada a visualizacao do mapadentro do RoboMind.

O objetivo desse exercısio e programar o robo para ir ate as coordenadas:(3,-2), (2, 3), (-3, 1), considerando que cada uma das coordenadas acima que

147

Page 160: Bases Computacionais da Ciência

Figura 6.3: Criacao do cenario para o RoboMind

Figura 6.4: Visualizacao do mapa criado dentro do RoboMind

o robo parar, sera a nova origem. Antes do programar o robo, vamos tentarentender melhor o problema para planejar como iremos resolve-lo, analisandoas seguintes perguntas:

a) Represente as coordenadas em um plano cartesiano, como mostrado naFigura 6.5.

148

Page 161: Bases Computacionais da Ciência

Figura 6.5: Representacao de um plano cartesiano

b) Qual a coordenada final em relacao a origem?

c) Que rota o robo realizou?

Primeiro passo Fazer o mapa: um tabuleiro de 11 por 7 casas, conformeilustrado a seguir; onde o posicao inicial do Robo e a posicao P0, e o Robodevera percorrer os seguintes pontos P1, P2 e P3.

P3P2

P0

P1

Segundo passo Inserir os comandos no Robomind, utilizando os comandosdisponıveis, para que o robo percorre os pontos solicitados. Como nao epossıvel andar na diagonal, voce deve passar por pontos intermediarios antesde chegar as coordenadas solicitadas no problema. Trace um possıvel caminhoque passe por esses pontos e tente imaginar os comandos para percorrer essecaminho. Uma possıvel resposta e mostrada na Figura 6.6.

Terceiro passo Executar o programa. Para executar o programa, voce deveclicar no botao executar, mostrado na Figura 6.7. O robo deve percorrer o

149

Page 162: Bases Computacionais da Ciência

Figura 6.6: Uma possıvel resposta para o exercıcio de percorrer os tres pontos

caminho indicado na Figura 6.8, e parar na posicao final.

Figura 6.7: Controle de execucao do programa

Exercıcios propostos

Caro aluno, para que voce possa desenvolver a logica de programacao e im-portante que voce tente primeiro construir os programas sem o auxılio daferramenta Controle Remoto do RoboMind.

1. Acesse o RoboMind e teste os programas vistos na secao anterior.

150

Page 163: Bases Computacionais da Ciência

Figura 6.8: Um possıvel caminho para o exercıcio de percorrer os tres pontos

2. Escreva um programa para que o robo pinte a letra “E” no chao.

3. E possıvel construir um programa diferente daquele que voce fez noexercıcio anterior e que faz a mesma coisa? Se sim, entao faca-o; senao, entao justifique. Obs.: vamos assumir que dois programas saodiferentes se suas sequencias de instrucoes nao sao identicas.

4. Escreva um programa para que o robo desenhe um “alvo”, isto e, pinte“cırculos” (aqui na verdade quadrados) concentricos em preto e brancoalternadamente. Faca de tal modo que a “mosca” (centro) seja umponto preto e que haja seis quadrados a sua volta.

5. Escreva um programa que faca com que o robo escreva o seu primeironome no chao.

6. Similarmente ao exercıcio anterior, escreva um programa para que orobo escreva o seu primeiro nome no chao, mas agora alternando ascores das letras com preto e branco. Comece com a primeira letrasendo branca.

7. No ambiente dado pelo mapa padrao (default.map), observe o ambi-ente em que o robo esta e escreva um programa em que o robo busca abaliza mais proxima e a coloca no ponto de partida.

8. Faca um programa para que o robo, no ambiente dado pelo mapa pa-drao (default.map), pegue a baliza mais proxima e a coloque junto damais distante. Seu programa deve ter no maximo 7 instrucoes.

6.5 Exercıcios para Casa

1. Faca um programa para que o robo, no ambiente dado pelo mapacopyLine1.map, agrupe todas as balizas junto aquela que esta mais

151

Page 164: Bases Computacionais da Ciência

distante da posicao inicial do robo.

2. Escreva um programa para que o robo escreva o seu nome inteiro nochao.

3. Similarmente ao exercıcio anterior, escreva um programa para que orobo escreva o seu nome inteiro no chao, mas agora alternando as coresdas letras com preto e branco. Comece com a primeira letra sendopreta.

4. Faca um programa para que o robo, no ambiente dado pelo mapapassBeacons.map, saia da posicao inicial (salao a esquerda) e va para oponto marcado em branco no salao a direita. Ao final as balizas devemestar na mesma posicao inicial.

5. Usando os recursos que voce ja apreendeu do RoboMind, e possıvelconstruir um programa que faca com que o robo pinte de preto a ce-lula a sua esquerda, caso ela esteja pintada de branco? Se sim, facaesse programa; se nao, justifique porque nao e possıvel: quais recursosseriam necessarios para isso?

6. Faca os exercıcios indicados na secao 6.6.2.

6.6 Apendice: ilustrando os conceitos aprendidos

usando Scilab

Neste capıtulo, vimos varios exemplos de como prescrevemos instrucoes paraexecutar determinadas tarefas. Nesta secao, veremos como o computadorpode nos auxiliar na resolucao de problemas usando o Scilab.

O primeiro problema a resolver e o calculo da area A, do perımetro Pe diagonal D de um quadrado de lado x = 3 unidades de medida (u.m.).Como sabemos, a area A = x2, o perımetro P = 4x e a diagonal D =

√2x.

Agora ja temos todas as informacoes matematicas necessarias para resolver oproblema no computador. Resta conhecer a linguagem que o Scilab utilizapara resolver este problema para nos. A esta “conversa” escrita, daremos onome de codigo-fonte. A seguir, apresentamos nosso primeiro codigo-fonteem Scilab para resolver o problema descrito.

1 x = 3;

2 A = x*x

3 P = 4*x

4 D = sqrt (2)*x

152

Page 165: Bases Computacionais da Ciência

SciNotes

Figura 6.9: Console do Scilab: Icone para abrir o SciNotes (Figura 6.10).

Este codigo-fonte deve ser digitado em um arquivo em formato textousando um editor tal como o Bloco de Notas do Microsoft Windows, gEditdo Gnome-Linux ou o proprio editor presente no Scilab (SciNotes), quepode ser acessado pelo primeiro ıcone da janela do Scilab (Figura 6.9). Ocodigo anterior, por exemplo, foi digitado no SciNotes (Figura 6.10) e salvocom o nome quadrado.sce, em que sce e a extensao padrao do Scilab.

Figura 6.10: Janela do SciNotes para editar o codigo-fonte.

Para executarmos as instrucoes contidas no nosso codigo-fonte, devemosusar o comando exec no console do Scilab, do seguinte modo:

exec("quadrado.sce");

Outra forma de executar o programa e atraves do menu Arquivo/Executar,selecionando o arquivo quadrado.sce. A execucao do programa anterior geracomo resposta

A =

153

Page 166: Bases Computacionais da Ciência

4.

P =

8.

D =

2.8284271

Em cada uma das linhas do codigo que acabamos de executar, existe aomenos uma das letras x,A,P e D, que sao as variaveis do nosso problema. Porexemplo, na Linha 1 (x=3;), “atribuımos”o valor 3 a variavel x ou, em outraspalavras, armazenamos o valor 3 na variavel x. Isto e, estamos considerandoque o lado de nosso quadrado e de comprimento de 3 u.m. Podemos ler aLinha 1 por “o valor 3 e atribuıdo a x”, ou “x recebe 3”.

Na Linha 2 (A=x*x), realizamos a operacao x2 para, em seguida, atribuireste resultado a variavel A. A Linha 3 e executada de forma analoga. Observeque na Linha 4 aparece a instrucao sqrt(2), que significa

√2. Na verdade,

poderıamos calcular a raız quadrada de qualquer numero n no lugar de 2.

6.6.1 Entrada e saıda

Agora queremos executar novamente o programa anterior, so que para umquadrado de lado x = 5. A forma mais imediata de se fazer esta tarefa emodificando a Linha 1, substituindo o 3 por 5. E que tal deixar que ousuario do seu programa decida o comprimento a ser inserido? Experimentesubstituir a Linha 1 pela seguinte instrucao:

x = input("Entre com o comprimento do lado do quadrado: ");

Salve o programa e execute-o. O programa aguardara que o usuario entrecom o tamanho do lado. Experimente entrar com o valor 5, seguido da teclaenter. Voce tera algo como:

Entre com o comprimento do lado do quadrado: 5

A =

25.

P =

20.

D =

7.0710678

154

Page 167: Bases Computacionais da Ciência

Dizemos entao que seu programa tem como entrada, via teclado, o valorda variavel x e, como saıda no monitor, as variaveis A,P e D. Vamos tornara saıda mais amigavel. As variaveis A,P e D estao sendo mostradas porqueomitimos o ponto-e-vırgula no final das Linhas 2, 3 e 4. Vamos inserir ponto-e-vırgula no final de cada uma destas linhas e acrescentar uma nova instrucao:

1 x = input("Entre com o comprimento do lado do quadrado: ");

2 A = x*x;

3 P = 4*x;

4 D = sqrt (2)*x;

5 printf("A area e %f\nO perımetro e %f\nA diagonal e %f",A,P,D

);

A saıda deste programa, para a entrada x = 5, sera:

Entre com o comprimento do lado do quadrado: 5

A area e 25.000000

O perımetro e 20.000000

A diagonal e 7.071068

O comando printf e uma instrucao de saıda formatada. Por exemplo,os caracteres \n formatam a saıda de modo que ela “pule” para a proximalinha. Experimente tirar os \n e confira o que acontece. Ja os caracteres %f

formatam a saıda de variaveis para representacao em ponto flutuante (umsubconjunto dos numeros reais). Observe que existem tres ocorrencias doscaracteres %f, uma para cada uma das variaveis A,P e D, respectivamente.Substituindo o %f por %d, a saıda das variaveis sera formatada para os nu-meros inteiros:

Entre com o comprimento do lado do quadrado: 5

A area e 25

O perımetro e 20

A diagonal e 7

6.6.2 Exercıcios Adicionais

1. Acesse o Scilab e teste os exemplos vistos na secoes anteriores desseApendice.

2. Fazer um programa que:

� Leia do teclado 5 numeros inteiros representando cada um a idadede um indivıduo.

155

Page 168: Bases Computacionais da Ciência

� Em relacao a estas idades, calcule e escreva: media, mediana,moda, desvio padrao e variancia.

3. A conversao de graus Farenheit para Celsius e dada pela expressao

C = (F − 32)× 1.8

e a conversao de graus Kelvin para graus Celsius e dada por

C = K − 273.15.

Fazer um programa que calcule e escreva duas tabelas: uma de grauscentıgrados em funcao de graus Farenheit e outra de Celsius em funcaode graus Kelvin. Ambos graus Farenheit e Celsius variam de 50 a 60de 1 em 1. Seu programa deve tambem plotar um grafico de linha quemostra a relacao entre graus centıgrados, Farenheit e Kelvin.

4. Agora voce quer construir um programa que leia do teclado o seu por-centual x de aproveitamento na disciplina de Bases Computacionais daCiencia e calcule seu conceito final, segundo a seguinte tabela:

� Se x < 45%, seu conceito e F;

� Caso contrario, se x ≥ 45% e x < 50%, seu conceito e D;

� Caso contrario, se x ≥ 50% e x < 70%, seu conceito e C;

� Caso contrario, se x ≥ 70% e x < 85%, seu conceito e B;

� Caso contrario, seu conceito e A.

Isso e possıvel com os recursos que voce ja viu do Scilab? Se sim, facaesse programa; se nao, justifique porque nao e possıvel: quais recursosseriam necessarios para isso?

156

Page 169: Bases Computacionais da Ciência

7 Logica de Programacao: Estruturas Condicionais

Harlen Costa BatageloJoao Paulo Gois

Letıcia Rodrigues BuenoLuiz Carlos da Silva Rozante

Ronaldo Cristiano Prati

—– Universidade Federal do ABC

”Pensamentos elevados devem ter uma linguagem elevada.” Aris-tofanes

7.1 Introducao

Em um computador, o conjunto de instrucoes pode compreender desde asoperacoes aritmeticas que encontramos em uma calculadora simples, ate ins-trucoes utilizadas para tomar decisoes, repetir a execucao de sequencias deoutras instrucoes, ler dados a partir do teclado, gravar esses dados no disco,envia-los pela rede ou exibi-los no monitor, produzir sons, entre muitas ou-tras. Aprender a programar nao e uma tarefa trivial, pois envolve manipularuma representacao abstrata do mundo real, criada dentro do computador;aprender as questoes relativas a linguagem que esta sendo usada para criaros programas e a logica de programacao em si. No capıtulo anterior, vimosos primeiros conceitos de logica de programacao: instrucao e sequencia deinstrucoes. Neste capıtulo, apresentamos um conceito mais elaborado: asestruturas condicionais.

7.2 Tomando decisoes - Estruturas Condicionais

O nosso cotidiano e repleto de tomadas de decisoes. Voce deve dedicir entreir a universidade de carro ou de bicicleta, ou entre estudar para a disciplinade Bases ou ir a festa. Para cada decisao, ha consequencias especıficas.

Voce pode estabelecer as tomadas de decisoes com base em regras. Porexemplo, voce esta jogando “par-ou-ımpar” com seu amigo. Se a soma dos

157

Page 170: Bases Computacionais da Ciência

dedos apresentados por voce e seu amigo for par, voce ganha, caso contra-rio, seu amigo ganha. Um outro exemplo de tomada de decisoes baseadaem regras pode ser aplicado na definicao do seu conceito final da disciplinade Bases Computacionais da Ciencia. Seja x a porcentagem final que voceconseguiu no curso:

� Se x < 45%, seu conceito e F;

� Caso contrario, se x ≥ 45% e x < 50%, seu conceito e D;

� Caso contrario, se x ≥ 50% e x < 70%, seu conceito e C;

� Caso contrario, se x ≥ 70% e x < 85%, seu conceito e B;

� Caso contrario, seu conceito e A.

Ilustrando estruturas condicionais com RoboMind

O RoboMind tambem tem comandos para observar o ambiente, para que oseus programas possam tomar decisoes baseando-se no estado do ambiente.O robo pode observar as celulas da esquerda, direita e a frente. Essas obser-vacoes podem ser de cinco tipos diferentes: existe um obstaculo na celula?; acelula esta vazia?; tem um objeto na celula?; a celula esta pintada de branco?;e a celula esta pintada de preto? Um resumo dos comandos para testar essasobservacoes esta na Tabela 7.1.

esquerda frente direitatemObstaculoEsquerda() temObstaculoFrente() temObstaculoDireita()

vazioEsquerda() vazioFrente() vazioDireita()

temObjetoEsquerda() temObjetoFrente() temObjetoDireita()

brancoEsquerda() brancoFrente() brancoDireita()

pretoEsquerda() pretoFrente() pretoDireita()

Tabela 7.1: Comandos de observacao do ambiente.

Esses comandos de observacao do ambiente podem ser usadas em com-binacao com estruturas de decisao para que o robo tome decisoes baseando-seno estado do mundo. Uma dessas estrutures e o se (condic~ao) {comandos},que executa a sequencia de comandos somente se a condicao for verdadeira.O programa a seguir, por exemplo, observa a celula da esquerda e, se elaestiver pintada de branco, repinta a celula de preto, voltando a sua posicao.

158

Page 171: Bases Computacionais da Ciência

1 se(brancoEsquerda ()){

2 virarEsquerda ()

3 andarFrente (1)

4 pintarPreto ()

5 pararPintar ()

6 andarTras (1)

7 virarDireita ()

8 }

Se voce tentar executar esse programa e a celula da esquerda nao estiverpintada de branco, nada acontece pois o bloco de codigo sera executado ape-nas se aquela celula estiver pintada de branco. Voce pode usar uma variacaodessa estrutura de controle para instruir o robo a realizar uma atividade al-ternativa, caso a condicao nao seja verdadeira: se (condic~ao) {comandos}

sen~ao {comandos}. Compare o programa anterior com o programa a seguir.

1 se(brancoEsquerda ()){

2 virarEsquerda ()

3 andarFrente (1)

4 pintarPreto ()

5 pararPintar ()

6 andarTras (1)

7 virarDireita ()

8 }

9 sen~ao{

10 andarFrente (3)

11 }

Nesse caso, caso a celula esteja pintada de branco, o robo ira pinta-lade preto e voltar a sua posicao anterior. Caso contrario, o robo ira andartres posicoes para a frente e parar. Observe que apenas um dos blocos decomandos e executado. Se a celula da direita estiver pintada de branco, orobo pinta de preto e nao ira avancar as tres casas. Caso contrario, ele iraavancar as tres casas, mas nao ira pintar a celula da esquerda de preto.

Expressoes logicas

A condicao no comando se e, na verdade, uma expressao logica que podeassumir os valores verdadeiro ou falso, dependendo do estado do cenario.Uma expressao logica pode ser uma acao de percepcao, como aquelas listadasna Tabela 7.1, ou a instrucao sortear(), que retorna um valor verdadeiroou falso, de maneira aleatoria.

Expressoes logicas tambem podem envolver combinacao de expressoessimples atraves do uso de conectivos logicos. No RoboMind dispomos de tesconectivos logicos: n~ao (~), e (&) e ou (|). O conectivo n~ao modifica o valor

159

Page 172: Bases Computacionais da Ciência

verdade da expressao logica posterior a ele. Por exemplo, se brancoFrente()e verdadeiro, n~ao brancoFrente() sera falso, e vice-versa. O conectivo e

compara duas expressoes logicas e o resultado e verdadeiro apenas se as duasforem verdadeiras. Para qualquer outra combinacao, o resultado da expres-sao e falso. Ja o conectivo ou compara duas expressoes e o resultado daexpressao e verdadeiro se qualquer uma das duas, ou ambas, forem verdadei-ras. Somente a combinacao falso ou falso tem valor verdade falso. Parareferencia, um resumo das conectivos logicos e seu significado e mostrado naTabela 7.2.

conector funcionamenton~ao n~ao verdadeiro = falso

n~ao falso = verdadeiro

e verdadeiro e verdadeiro = verdadeiro

verdadeiro e falso = falso

falso e verdadeiro = falso

falso e falso = falso

ou verdadeiro ou verdadeiro = verdadeiro

verdadeiro ou falso = verdadeiro

falso ou verdadeiro = verdadeiro

falso ou falso = falso

Tabela 7.2: Conectores logicos e a sua interpretacao

E possıvel combinar as expressoes logicas usando varios conectivos, masa ordem em que os conectivos aparecem e importante. O conectivo n~ao eo que tem maior prioridade, seguindo e e ou. Parenteses podem ser usadospara mudar a prioridade, caso necessario. O programa a seguir tem algumexemplos de expressoes logicas.

1 se(sortear () e n~ao brancoDireita ())

2 {

3 virarDireita ()

4 andarTras (1)

5 }

67 se(verdadeiro e falso){

8 # essa instruc~ao nunca e executada

9 andarFrente (1)

10 }

160

Page 173: Bases Computacionais da Ciência

7.3 Exercıcios para Sala de Aula

Exercıcio Resolvido

Neste exercıcio iremos fazer com que o robo tome decisoes para contornar osobstaculos a sua frente. Vamos criar um cenario em que o robo deve se moverem linha reta da esquerda para direita, mas com um obstaculo a frente. Oarquivo para a criacao do mapa para esse cenario pode ser visto na Figura 7.1.

Figura 7.1: Descricao do mapa com uma caixa

O caminho a ser percorrido pelo robo para esse mapa pode ser visto naFigura 7.2. A princıpio poderıamos usar uma estrategia parecida com a docapıtulo anterior, e programar o caminho ”na mao”, e passando pelos pontosque contornam a caixa. Entretanto, essa abordagem nao e muito flexıvel,pois se mudar-mos a caixa de posicao, o programa perde a utilidade.

O programa a seguir faz com que o robo atravesse o cenario da esquerdapara a direita. Nao se preocupe por enquanto com o comando repetir(11).Ele sera explicado e explorado melhor na proxima aula, mas o seu proposito erepetir o comando andarLeste(1) catorze vezes. Esse programa funcionariase nao houvesse a caixa no cenario, mas se voce executar esse programa nessecenario, o seu programa ficara parado em frente a caixa.

1 repetir (11){

2 andarLeste (1)

161

Page 174: Bases Computacionais da Ciência

Figura 7.2: Cenario com uma caixa

3 }

Vamos altera-lo para contornar a caixa:

1 repetir (10){

2 se(temObstaculeFrente (){

3 andarNorte (1)

4 andarLeste (2)

5 andarSul (1)

6 }sen~ao{

7 andarLeste (1)

8 }

9 }

Esse da um passo de cada vez, e se houver um obstaculo a frente, elecontorna a caixa dando um passo para o norte, dois para o leste, e um parao sul. Observe que o numero de vezes em que a sequencia e repetida foidiminuıda para 12 pois o robo da dois passos para a frente quando estacontornando a caixa. Esse programa funciona para qualquer lugar que vocecolocar a caixa no caminho do robo (experimente mudar a posicao da caixano cenario para se certificar disso), uma vez que a posicao do caixa nao estacodificada diretamente no codigo, mas ela e ”encontrada”testando-se se haum obstaculo a frete.

A mesma estrutura do programa funciona mesmo que existam duas caixasseparadas no cenario. Vamos testa-lo agora num cenario com duas caixas,que pode ser construıdo usando a descricao do mapa mostrada na Figura .

Para percorrer esse cenario voce pode usar o programa a seguir

1 repetir (9){

2 se(temObstaculeFrente (){

3 andarNorte (1)

4 andarLeste (2)

5 andarSul (1)

162

Page 175: Bases Computacionais da Ciência

Figura 7.3: Descricao do mapa com duas caixas

6 }sen~ao{

7 andarLeste (1)

8 }

9 }

Observe que a estrutura e a mesma, a unica diferenca e que, como temosduas caixas, o numero de repeticoes da sequencia de comandos deve ser ape-nas dez e nao doze. Ao executar esse programa, o robo percorrera o percursomostrado na Figura 7.4. Novamente, nao importa a posicao das caixa no ca-minho do robo (desde que elas nao estejam juntas), pois o robo ira verificara posicao delas testando se ha um obstaculo a frente.

Figura 7.4: Cenario com duas caixas

163

Page 176: Bases Computacionais da Ciência

Exercıcios propostos

Agora tente resolver os exercıcios a seguir

1. Acesse o RoboMind e teste os programas vistos na secao anterior.

2. Faca um programa para que o robo, no ambiente dado pelo mapaopenArea.map, escreva de preto seu nome ou sobrenome. A escolhase sera o nome ou sobrenome deve ser aleatoria.

3. Faca um programa para que o robo, no ambiente dado pelo mapaopenArea.map, pinte de branco um quadrado do seguinte modo: o roboanda para frente tres posicoes e escolhe aleatoriamente uma direcao (es-querda ou direita), depois conclui a pintura segundo esta escolha.

4. Faca um programa para que o robo pinte um quadrado de modo similarao exercıcio anterior, mas agora escolhendo as cores dos lados de modoaleatorio. Use o mesmo ambiente dado pelo mapa openArea.map.

5. Faca um programa para que o robo, no ambiente dado pelo mapacopyLine1.map, escolha aleatoriamente uma de duas direcoes (parafrente ou para tras) e:

� se escolheu ir para frente, pinte de preto o restante da linha jaexistente no mapa ate o limite definido pelo “muro” ao norte.

� se escolheu ir para tras, pinte de preto o restante da linha jaexistente no mapa ate o limite definido pelo “muro” ao sul.

6. Faca um programa que permita o robo escolher aleatoriamente umadas quatro direcoes possıveis: direita, esquerda, frente e tras.

7. Faca um programa para que o robo, no ambiente dado pelo mapafindSpot1.map, encontre o vaso com planta ou vaso com agua.

7.4 Exercıcios para Casa

1. Escreva um programa para que o robo desenhe um “alvo”, isto e, pinte“cırculos” (aqui na verdade quadrados) concentricos em preto e brancoalternadamente. Faca de tal modo que a cor da “mosca” (centro) sejaescolhida aleatoriamente e que haja seis quadrados a sua volta.

164

Page 177: Bases Computacionais da Ciência

2. Escreva um programa para que o robo pinte o seu primeiro nome nochao, sendo que as cores de cada letra devem ser escolhidas aleatoria-mente.

3. Similarmente ao exercıcio anterior, escreva um programa para que orobo pinte o seu primeiro nome no chao, sendo que as cores de cadaletra devem ser escolhidas aleatoriamente; entretanto, agora com umatarefa adicional: se a ultima letra for preta, o robo deve pintar tambemo sobrenome (com qualquer cor).

4. Faca um programa para que o robo, no ambiente dado pelo mapacopyLine1.map faca uma das seguintes tarefas:

� pinte de branco a faixa ja pintada de preto presente mapa;

� pegue o objeto (baliza) que esta mais distante do robo;

� pegue o objeto que esta mais proximo do robo.

� pegue o objeto que nao e o mais distante nem o mais proximo dorobo.

5. Faca um programa para que o robo, no ambiente dado pelo mapacopyLine1.map, escolha aleatoriamente um dos tres objetos presentesno mapa e o coloque na posicao inicial do robo.

6. De forma parecida com o exercıcio anterior, faca um programa para queo robo, tambem no ambiente dado pelo mapa copyLine1.map, escolhaaleatoriamente um dos tres objetos presentes no mapa e o coloque naposicao inicial do robo. Adicionalmente o robo devera fazer:

� se o objeto escolhido foi o mais proximo, a faixa preta no mapadevera ser pintada de branco;

� se o objeto escolhido foi o mais distante, a faixa preta no mapadevera ser duplicada (pintar outra faixa preta paralela a ja exis-tente);

� se o objeto escolhido nao foi nem o mais distante nem o maisproximo, entao nada sera feito.

7. Faca um programa para que o robo, no ambiente dado pelo mapacopyLine1.map, escolha aleatoriamente um dos tres objetos presentesno mapa e agrupe os demais objetos em torno dele.

8. Faca os exercıcios indicados na secao 7.5.1.

165

Page 178: Bases Computacionais da Ciência

7.5 Apendice: Ilustrando os Conceitos

Aprendidos usando Scilab

Retomando o problema exemplificado em Scilab no capıtulo anterior, lem-bre que o problema consiste em calcular a area A, o perımetro P e a diagonalD de um quadrado de lado x unidades de medida (u.m.), onde x e um valorde entrada fornecido pelo usuario. E se o usuario entrar com um numeronegativo? O programa funcionara normalmente mas os resultados nao faraosentido para este problema. O modo de resolver isso e fazendo um testeantes de realizar os calculos, ou seja, verificamos se o comprimento e positivo(se x > 0) utilizando uma estrutura condicional. Alteramos nosso programaobtendo:

1 x = input("Entre com o comprimento do lado do quadrado: ");

2 if x > 0

3 A = x*x;

4 P = 4*x;

5 D = sqrt (2)*x;

6 printf("A area e %f\nO perımetro e %f\nA diagonal e %f",A,P

,D);

7 end

Se, por exemplo, x = 5, entao teremos a solucao ja conhecida do capıtuloanterior. Porem, se entrarmos com 0, −1 ou qualquer outro numero negativo,nenhuma saıda e apresentada. As novas instrucoes utilizadas neste ultimocodigo-fonte estao nas Linhas 2 e 7. Na Linha 2 (if x > 0), a instrucao if

(do ingles, “se”) e utilizada para que o programa tome uma decisao sobre acondicao x > 0. Isto e, se x > 0 for verdadeiro, o programa executara todosos comandos seguintes ate encontrar a instrucao end (Linha 7). Observe queacrescentamos espacos no inıcio das Linhas 3 a 6. Fizemos isto para facilitara leitura do codigo-fonte, uma vez que estas instrucoes serao executadasapenas quando x > 0. Para esta boa pratica de programacao damos o nomede identacao. Estes espacos nao interferem no resultado final do programae facilitam a identificacao do bloco de comandos que serao executados casoa condicao seja verdadeira. Experimente acrescentar a seguinte instrucaoabaixo da Linha 7:

printf("\nFim do programa");

Execute novamente com os valores x = 5 e x = −1 e veja o que acontece.Seria desejavel que o programa informasse ao usuario que uma entrada x ≤ 0nao e valida, em vez de simplesmente nao apresentar nenhuma saıda:

166

Page 179: Bases Computacionais da Ciência

1 x = input("Entre com o comprimento do lado do quadrado: ");

2 if x > 0

3 A = x*x;

4 P = 4*x;

5 D = sqrt (2)*x;

6 printf("A area e %f\nO perımetro e %f\nA diagonal e %f",A,P

,D);

7 else

8 printf("Entrada invalida\n");

9 end

Na Linha 7 do programa acima, acrescentamos a instrucao else (do in-gles, “senao”). Se x > 0, todas as instrucoes contidas entre as instrucoesif–else serao executadas. Senao (x ≤ 0), todas as instrucoes contidas entreelse–end serao executadas. Agora, para qualquer valor de x, o programaapresentara algum tipo de mensagem ao usuario.

No exemplo anterior, a comparacao foi realizada com o sımbolo de maior.De fato, podemos realizar comparacoes com quaisquer um dos sımbolos Ma-tematicos. Na Tabela 7.3 apresentamos as sintaxes para as operacoes decomparacao entre numeros no SciLab.

igual ==diferente ∼=menor <maior >

menor-ou-igual <=maior-ou-igual >=

Tabela 7.3: Sintaxe para as operacoes de comparacao entre numeros no Sci-Lab.

7.5.1 Exercıcios Adicionais

1. Acesse o Scilab e teste os exemplos vistos na secao anterior desseApendice.

2. Faca um programa que leia do teclado dois numeros inteiros x e ye coloca o menor desses valores em x e o maior em y, mostrando oresultado na saıda.

3. Escreva um programa que le do teclado um numero inteiro x e verifiquese x e par ou ımpar.

167

Page 180: Bases Computacionais da Ciência

4. Escreva umprograma que receba tres valores, armazenando-os nas va-riaveis x, y e z, e ordene esses valores de modo que, ao final, o menorvalor esteja armazenado na variavel x, o valor intermediario esteja ar-mazenado na variavel y e o maior valor esteja armazenado na variavelz.

5. Escreva um programa que leia do teclado o seu porcentual x de apro-veitamento na disciplina de Bases Computacionais da Ciencia e calculeseu conceito final, segundo a seguinte tabela:

� Se x < 45%, seu conceito e F;

� Caso contrario, se x ≥ 45% e x < 50%, seu conceito e D;

� Caso contrario, se x ≥ 50% e x < 70%, seu conceito e C;

� Caso contrario, se x ≥ 70% e x < 85%, seu conceito e B;

� Caso contrario, seu conceito e A.

O programa deve escrever na saıda se voce foi aprovado ou nao e comque conceito.

6. Faca um algoritmo que receba tres valores que representarao os lados deum triangulo (fornecidos pelo usuario) e verifique se os valores formamum triangulo, classificando-o em:

� equilatero: tres lados iguais;

� isosceles: dois lados iguais;

� escaleno: tres lados diferentes.

Lembre-se de que , para formar um triangulo, nenhum dos lados podeser igual a zero e um lado nao pode ser maior do que a soma dos outrosdois.

168

Page 181: Bases Computacionais da Ciência

8 Logica de Programacao: Estruturas de Repeticao

Harlen Costa BatageloJoao Paulo Gois

Letıcia Rodrigues BuenoLuiz Carlos da Silva Rozante

Ronaldo Cristiano Prati

—– Universidade Federal do ABC

”Nossa vida e desperdicada em detalhes...Simplifique, simplifi-que.” Henry Thoureau

8.1 Introducao

No Capıtulo 5, estudamos os primeiros conceitos de logica de programacao:instrucao e sequencia de instrucoes. No capıtulo anterior, vimos estrutu-ras condicionais. No contexto de logica de programacao, veremos agora umimportante e muito utilizado conceito: estruturas de repeticao.

8.2 Repetindo as mesmas instrucoes

Em diversas situacoes, desejamos realizar uma determinada sequencia deacoes um numero repetido de vezes. Por exemplo, voce pode querer usaro despertador para acordar todo o dia no mesmo horario. Se voce usa odespertador do celular, ja deve ter notado que ele tem a opcao de tocaruma unica vez ou repetir o toque diariamente. A opcao de repetir o toquediariamente foi adicionada para que voce nao precise ficar programando tododia o despertador do celular.

Suponha que desejamos calcular a expressao 210. Sabemos que

210 = 2× 2× 2× 2× 2× 2× 2× 2× 2× 2 = 1024.

A expressao acima contem nove vezes a instrucao de multiplicacao. Usandouma calculadora, voce teria que repetir a multiplicacao nove vezes. Agora,se quisermos calcular 2100? Por favor, nao faca isto usando a tecnica acima.

169

Page 182: Bases Computacionais da Ciência

Assim como celulares tem a opcao de repetir o toque diariamente, linguagensde programacao fornecem mecanismos para facilitar a execucao de tarefasrepetidas. Mostramos agora como um computador pode nos auxiliar a reali-zar facilmente este calculo atraves de instrucoes especıficas para repetir outrasinstrucoes. Em particular, podemos passar ao computador a instrucao 2× 2e instrui-lo a usar o resultado desta operacao para novamente multiplicar pordois, e assim sucessivamente ate que esta operacao seja repetida 99 vezes.

Ilustrando estruturas condicionais com RoboMind

Vamos ilustrar a ideia usando RoboMind. No programa que desenha umquadrado no Capıtulo 5, as instrucoes andarFrente(n) e virarEsquerda()

sao repetidas quatro vezes seguidas. A linguagem utilizada para criar progra-mas para o RoboMind prove uma estrutura de controle que pode ser usadapara situacoes desse tipo, de maneira que voce nao precisa repetir as instru-coes para executar acoes repetidas que seguem um padrao. Essa estruturade controle e o repetir(n) {comandos} e e usada para repetir os comandosentre parenteses n vezes, no qual n e um parametro que controla o numerode vezes que a sequencia de comandos deve ser repetida. Por exemplo, parapercorrer o quadrado, voce poderia usar o seguinte programa:

1 repetir (4){

2 andarFrente (1)

3 virarEsquerda ()

4 }

Ao executar esse programa, os comandos que estao entre chaves seraoexecutados quatro vezes, o que e equivalente aos programas para se percorrerum quadrado que fizemos anteriormente nos Capıtulos 5 e 6. Voce podecolocar qualquer sequencia de comandos entre as chaves, incluindo uma outraestrutura de repeticao. O programa a seguir percorre o quadrado duas vezes,usando duas estruturas de repeticao, uma dentro da outra:

1 repetir (2){

2 repetir (4){

3 andarFrente (1)

4 virarEsquerda ()

5 }

6 }

A primeira estrutura de repeticao controla o numero de vezes que o per-curso do quadrado sera feito, e a segunda estrutura controla a repeticao decomandos necessaria para percorrer o quadrado. Observe que a sequenciaandarFrente(1) e virarEsquerda() sera executada oito vezes. Se voce qui-ser deixar o robo percorrendo esse quadrado indefinidamente, voce pode usar

170

Page 183: Bases Computacionais da Ciência

o comando repetir() sem argumentos. O programa a seguir, por exemplo,faz com que o robo fique percorrendo o quadrado ate que a execucao doprograma seja abortado.

1 repetir (){

2 repetir (4){

3 andarFrente (1)

4 virarEsquerda ()

5 }

6 }

O RoboMind tambem tem uma estrutura condicional que envolve a re-peticao dos comandos enquanto a condicao for verdadeira. Essa estrutura erepetirEnquanto(condic~ao) {comandos}. Observe a diferenca entre as es-truturas repetirEnquanto e repetir. Na estrutura repetir, a sequencia decomandos e repetida um numero de vezes n pre-definido, independentementedo estado do ambiente. Na estrutura repetirEnquanto, o robo executa aacao enquanto sua percepcao do ambiente avaliada pela condicao for verda-deira. O programa a seguir faz com que o robo siga uma linha em brancopintada no chao.

1 repetirEnquanto(brancoFrente ()){

2 andarFrente (1)

3 }

8.3 Criando programas complexos

Computadores sao usados para resolver diferentes problemas, muitos deles ex-tremamente complexos como manter atualizado o saldo bancario de centenasde milhares de correntistas de grandes bancos, que envolve o processamentode milhoes de transacoes diarias; controlar equipamentos complexos comoos diversos componentes eletronicos de um aviao, que contem centenas desensores e atuadores para que o aviao funcione corretamente; e realizar simu-lacoes computacionais de modelos matematicos do universo, que pode gerarquantidades enormes de dados a respeito dessas simulacoes, dentre muitosoutros.

Apesar da complexidade, na grande maioria dos casos, esses sistemas saocriados usando sequencias de comandos, repeticoes e desvios de fluxo devidoa tomada de decisao, combinados de maneira apropriada.

171

Page 184: Bases Computacionais da Ciência

8.4 Exercıcios para Sala de Aula

1. Acesse o RoboMind e teste os programas vistos na secao anterior.

2. Faca um programa para que o robo, no ambiente dado pelo mapadefault.map, se desloque, a partir da posicao inicial, indo para leste,ate encontrar a primeira posicao pintada de branco. A partir daı orobo devera rastrear a linha branca pintada no chao, isto e, seguı-la ateencontrar o muro ao norte.

3. Faca um programa para que o robo, no ambiente dado pelo mapadefault.map, a partir da posicao inicial faca: escolhe uma direcaoaleatoria, segue na direcao escolhida e para somente quando encontraralgum obstaculo.

4. Faca um programa para que o robo, no ambiente dado pelo mapaopenArea.map, pinte linhas aleatorias no chao e pare somente quandohouver um cruzamento de linhas.

5. Faca um programa para que o robo, no ambiente dado pelo mapapassBeacons.map, saia da posicao inicial (salao a esquerda) e va parao ponto marcado em branco no salao a direita.

8.5 Exercıcios para Casa

1. Faca um programa para que o robo, no ambiente dado pelo mapaopenArea.map, pinte quadrados (de lado tamanho 3) em posicoes ale-atorias do mapa e em cores aleatorias. Ele deve fazer isso ate que oprograma seja abortado pelo usuario.

2. Faca um programa para que o robo, no ambiente dado pelo mapamaze1.map, encontre sozinho o objeto no labirinto. A palavra “sozi-nho” aqui significa que voce nao pode programa-lo de modo a explorara visao global que voce tem desse labirinto especıfico. Voce deveraprograma-lo de modo que ele possa encontrar o objeto mesmo que aconfiguracao do labirinto seja trocada.

3. Faca um programa para que o robo, no ambiente dado pelo mapafindSpot1.map, se encaixe na “garagem” definida pela posicao pintadade branco. Aqui tambem o robo devera fazer a tarefa sozinho.

172

Page 185: Bases Computacionais da Ciência

4. Faca um programa para que o robo, no ambiente dado pelo mapacopyLine1.map, coloque os tres objetos existentes em alguma das po-sicoes pintadas de preto do mapa. Mais uma vez aqui tambem o robodevera fazer a tarefa sozinho.

5. Faca os exercıcios indicados na Secao 8.6.1.

8.6 Apendice: Ilustrando os Conceitos

Aprendidos usando Scilab

Retomando o problema exemplificado em Scilab no Capıtulo 5 e 6 queconsiste em calcular a area A, o perımetro P e a diagonal D de um quadradode lado x unidades de medida (u.m.), onde x e um valor de entrada fornecidopelo usuario. Suponha, agora, que queiramos realizar o calculo anterior paraquadrados com lados de diferentes comprimentos. Utilizamos o conceito deestruturas de repeticao para modificar nosso programa obtendo:

1 x = 0;

2 while x ~= -1

3 x = input("Entre com o comprimento do lado do quadrado: ");

4 if x > 0

5 A = x*x;

6 P = 4*x;

7 D = sqrt (2)*x;

8 printf("A area e %f\nO perımetro e %f\nA diagonal e %f",A

,P,D);

9 else

10 printf("Entrada invalida\n");

11 printf("N~ao foi possıvel realizar os calculos\n");

12 end

13 end

14 printf("\nFim do programa");

8.6.1 Exercıcios Adicionais

1. Acesse o Scilab e teste o exemplo acima.

2. Sem usar funcoes matematicas prontas do Scilab, isto e, empregandoapenas estruturas de repeticao e as operacoes basicas (+ - * /) , facaprogramas que:

173

Page 186: Bases Computacionais da Ciência

(a) Escreva a seguinte sequencia de numeros inteiros:

1,2,3, . . . ,100

(b) Leia do teclado um inteiro positivo n e imprima os n primeirosnaturais ımpares. Exemplo: Para n = 4 a saıda devera ser 1,3,5,7.

(c) Leia do teclado um inteiro positivo n e calcula n!.

(d) Leia do teclado um inteiro positivo n e imprima as n primeiras po-tencias de 2. Exemplo: para n = 5 a saıda devera ser 1,2,4,8,16.

(e) Leia do teclado um inteiro x e um natural n e calcule xn.

(f) Leia do teclado um inteiro positivo n e uma sequencia de n inteirose depois some esses n numeros.

(g) Leia do teclado um inteiro positivo n e uma sequencia de n nu-meros inteiros e depois determina a soma dos numeros inteirospositivos da sequencia. Exemplo: se n = 7 e a sequencia de nume-ros inteiros e 6,−2,7,0,−5,8,4 a saıda deve ser 25.

(h) Leia do teclado um inteiro positivo n e uma sequencia de n inteirose depois some os numeros pares e os numeros ımpares.

(i) Leia do teclado um inteiro positivo n e uma sequencia de n inteirose depois determine quantos numeros da sequencia sao positivos equantos sao nao-positivos. Um numero e nao-positivo se e negativoou se e igual a 0 (zero).

(j) Leia do teclado um inteiro positivo n e uma sequencia de n intei-ros e depois determine quantos numeros da sequencia sao pares equantos sao ımpares.

3. Faca programas que calculem e imprimam o valor de S, para as seguin-tes casos (nao e permitido utilizar condicional (if) nestes exercıcios):

� S = 11 +

32 +

53 + . . .+

9950

� S = 11 −

24 +

39 −

416 +

525 −

636 +

749 −

864 +

981 −

10100

4. Fazer um programa que calcule e escreva a soma dos 50 primeiros ter-mos da seguinte serie (nao e permitido utilizar condicional (if) nestesexercıcios):

10001− 997

2+9943− 991

4+ . . .

174

Page 187: Bases Computacionais da Ciência

9 Modelagem e Simulacao Computacional: Conceitos Fundamentais

Alessandro NascimentoMaria das Gracas Bruno Marietto

Ricardo SuyamaWagner Tanaka Botelho

—– Universidade Federal do ABC

”Nos somos aquilo que fazemos repetidamente. Excelencia, entao,nao e um modo de agir, mas um habito.” Aristoteles

9.1 Introducao

A area de Modelagem e Simulacao Computacional, com sua infraestruturateorico-tecnica, esta cada vez mais sendo utilizada nos diferentes campos dosaber. Isto deve-se a possibilidade de estudar sistemas reais de maneira apro-ximada, criando-se modelos matematicos que os representem. Tais modelossao, posteriormente, implementados em simulacoes computacionais que saoexecutadas visando obter um melhor entendimento do sistema real. Destaforma, a simulacao computacional configura-se como uma poderosa ferra-menta para testar teorias e hipoteses, predizer comportamentos e acoes fu-turas, etc.

Objetivos

Depois de estudar este capıtulo, o aluno sera capaz de:

� Definir o que e um sistema e suas formas de estudo;

� Definir um modelo, bem como os passos principais para sua construcao;

� Diferenciar modelos gerais dos modelos de simulacao;

� Identificar os quatro tipos principais de sistemas computacionais, aserem utilizados em simulacao;

� Definir os conceitos de validacao e verificacao, no contexto de simulacaocomputacional;

175

Page 188: Bases Computacionais da Ciência

� Diferenciar os dois tipos de validacao;

� Diferenciar os dois tipos de verificacao;

� Enumerar e descrever os passos para o desenvolvimento de simulacoescomputacionais (metodologia);

� Trabalhar com simulacoes simples no software Scilab®;

� Testar hipoteses e analisar os resultados, em simulacoes computacio-nais.

9.2 Definicao de Sistema

O termo sistema vem do grego snistanai e significa “fazer ficar junto”. Umsistema e um conjunto de elementos interconectados e que interagem entre sivisando alcancar um objetivo em comum, procurando formar um todo organi-zado. Um sistema e seus elementos estao inseridos em um ambiente, havendouma fronteira entre ambos: o que nao pertencer ao sistema ira pertencer aoseu ambiente. Sistemas sao classificados como abertos ou fechados. Sistemasabertos sao aqueles que interagem com seu ambiente e, consequentemente, osistema e o ambiente influenciam-se mutuamente. Nos sistemas fechados naoha interacao dos elementos do sistema com ambiente, e por isto tais sistemassao considerados auto-suficientes.

Como exemplos de sistemas cita-se:

� Sistema computacional;

� Sistema economico;

� Sistema solar;

� Sistema nervoso;

� Uma Universidade;

� Uma colonia de formigas.

De forma mais especıfica, uma empresa e um sistema pois (i) e formadapor um conjunto de elementos (funcionarios e proprietarios), (ii) seus elemen-tos possuem um objetivo em comum, que e manter a empresa no mercado,(iii) ha relacionamentos entre os funcionarios e proprietarios, (iv) os elemen-tos procuram estabelecer um sistema organizado e (v) a empresa esta em

176

Page 189: Bases Computacionais da Ciência

um ambiente, que neste caso e o mercado economico. Este exemplo podegerar a seguinte pergunta: os clientes da empresa fazem parte do sistemaou do ambiente da empresa? Para responder a esta questao e preciso verifi-car se a empresa (o sistema em questao) tem o poder de controlar o cliente,obrigando-o a realizar determinadas acoes. Caso um sistema tenha este podersobre um elemento, entao este elemento faz parte do sistema. Caso contra-rio, ele faz parte do ambiente do sistema. No caso do cliente, ele faz partedo ambiente da empresa pois a empresa pode tentar induzi-lo a um tipo decomportamento, mas a decisao final de como utilizar os servicos da empresae do cliente.

9.2.1 Formas de se Estudar um Sistema

O estudo de sistemas envolve teorias e tecnicas adequadas. Nas proximassubsecoes tem-se algumas formas de se estudar sistemas, apresentadas em(AVERILL; KELTON, 1991).

9.2.1.1 Experimentos com o Sistema Real

Caso seja possıvel trabalhar diretamente com o sistema real, atuando emseus elementos e/ou alterando sua configuracao para faze-lo operar sob es-tas novas condicoes propostas, entao este e um experimento possıvel de serrealizado. Por exemplo, um dos temas tratados na area de Robotica Movele a navegabilidade de robos por ambientes desconhecidos, exigindo assim oreconhecimento dos objetos e dos limites de tais ambientes. Nesta situacaoos robos podem interagir diretamente com o ambiente fısico real, ate mesmoalterando algumas de suas estruturas.

Como exemplo, na Figura 9.6 tem-se um experimento real de crash-testrealizado em um veıculo da General Motors (CRASH-TEST, 2011).

Em outro exemplo, o trabalho de (OKADA; BOTELHO; SHIMIZU, 2009)tem como objetivo principal descrever a mudanca no modo de locomocaoentre pernas e rodas do robo hıbrido PEOPLER-II (Perpendicularly OrientedPlanetary Legged Robot) ilustrado na Figura 9.1. O robo pode realizar cincotarefas: o caminhar, a locomocao por rodas, o chaveamento entre os modosde locomocao com pernas e rodas, o movimento de virar para esquerda oudireita e a rotacao no sentido horario ou anti-horario. Considere a situacaoonde o robo esta andando utilizando rodas, e depara-se com uma rampa,conforme ilustrado na Figura 9.2. Neste caso, a tarefa do robo e realizar ochaveamento de roda para perna em 1O- 12O. Apos a configuracao 10O o robopassa a utilizar a perna como meio de locomocao. E nas configuracoes 12O- 1Oilustra o chaveamento de perna para roda na descida.

177

Page 190: Bases Computacionais da Ciência

Figura 9.1: Experimento Real de Crash-Test.

Figura 9.2: O Prototipo do Robo PEOPLER-II.

Entretanto, tratar diretamente com o sistema real muitas vezes nao erecomendado pois:

� O experimento pode ser muito caro ou perigoso, ate mesmo desestabi-lizando o sistema real. Por exemplo, analisar pessoas em uma situacaode incendio visando estudar seus comportamentos nao e viavel, tantopela seguranca fısica dos indivıduos, por questoes eticas bem como poruma possıvel inviabilidade economica e logıstica;

� Em algumas situacoes e impossıvel tratar diretamente com sistemasreais, como por exemplo no caso da analise dos buracos negros descritospela Astrofısica;

178

Page 191: Bases Computacionais da Ciência

Figura 9.3: Resultado Experimental no Chaveamento de Roda para Perna.

� Ha tambem situacoes onde nao ha evidencias da existencia do sistema.Este tipo de estudo permite ao pesquisador abstrair a priori quais-quer relacoes fısicas, sociais, psicologicas, economicas, etc. usualmenteconhecidas e adotadas.

Sendo assim, pode-se perceber que em muitas situacoes e necessario cons-truir um modelo que represente parcialmente o sistema, e realizar experi-mento com este modelo. Desta forma, e possıvel estudar o sistema real demaneira indireta, deixando-o inalterado.

Para este momento e importante saber que um modelo e uma represen-tacao parcial de um sistema. Na Secao 9.3 tem-se um detalhamento maiordeste conceito.

De acordo com (AVERILL; KELTON, 1991) ha duas formas de se construiro modelo de um sistema: ou se faz um modelo fısico ou se faz um modelomatematico.

9.2.1.2 Experimentos com Modelos Fısicos

Os modelos fısicos consideram experimentos com objetos reais, e tais objetosatuam como representacoes parciais do sistema que se deseja estudar. Comoexemplo de modelos fısicos cita-se mapas e maquetes de avioes (veja as figuras9.3(a) e 9.3(b), respectivamente).

179

Page 192: Bases Computacionais da Ciência

(a) Mapa do Brasil.

(b) Maquete de um Aviao.

Figura 9.4: Exemplos de Modelos Fısicos Representados por um Mapa doBrasil e uma Maquete de Aviao em (a) e (b), respectivamente.

9.2.1.3 Experimento com Modelos Matematicos

Modelos matematicos usam sımbolos em lugar de dispositivos fısicos, procu-rando representar as principais caracterısticas e comportamentos do sistemaalvo que se deseja analisar. A estrutura de um modelo matematico e formadapor um conjunto de equacoes, que representam variaveis e relacionamentoslogicos e quantitativos do referido sistema.

As equacoes sao tratadas e resolvidas visando analisar como o modeloreage sob determinadas condicoes, definidas pela atribuicao de valores aosparametros do modelo. Os resultados obtidos da execucao do modelo podem,posteriormente, ser comparados com dados obtidos no proprio sistema alvo(BERENDS; ROMME, 1999).

180

Page 193: Bases Computacionais da Ciência

De acordo com (AVERILL; KELTON, 1991) ha duas formas de solucao demodelos matematicos: a solucao analıtica e a solucao numerica, via simula-cao.

Na solucao analıtica o problema matematico e resolvido encontrando-se a solucao exata para a(s) equacao(coes) que descreve(m) o modelo. Emcasos como estes as teorias geralmente utilizadas sao de Pesquisa Operacional,Teoria das Filas, equacoes diferenciais, dentre outras. Por exemplo, imagineque queremos achar a solucao de um sistema que pode ser dada por umaequacao do segundo grau, do tipo ax2 + bx + c e que a solucao do nossoproblema consista em encontrar quais sao as raızes deste polinomio. Nestecenario, podemos empregar a solucao analıtica para encontrar as raızes daequacao ou ainda uma solucao numerica, via simulacao.

Vamos comecar encontrando uma solucao analıtica utilizando a formulade Bhaskara. Tomemos o polinomio da Equacao 9.1.

2x2 − 8x+2 (9.1)

Utilizando a formula de Bhaskara, nas equacoes 9.2 e 9.3, teremos comosolucoes as raızes 3,732 e 0,2679.

x =−b ±

√b2 − 4ac2a

(9.2)

x =8±√64− 164

=8±√48

4(9.3)

Entretanto, ha sistemas complexos cujos modelos nao apresentam respos-tas precisas e definitivas, sendo necessario uma abordagem mais holıstica esistemica. Em tais casos uma solucao exata nao e possıvel. Nestes casos, sim-plificacoes podem ser feitas para viabilizar a construcao de um modelo atravesde metodos empregados em simulacoes. Por exemplo, em (RACZYNSKI, 2004)tem-se um estudo sobre como se organizam e interagem estruturas terroristase anti-terroristas. Para tanto o autor modelou elementos tais como: terro-ristas, agentes anti-terror, pessoas neutras, agentes anti-terror infiltrados emambientes terroristas, etc. Neste caso a execucao do modelo deve atuar comoum laboratorio para o teste de hipoteses e melhor entendimento do sistemaalvo. Sendo assim a possibilidade de executar o modelo varias vezes, simulardiversas situacoes, elaborar e explorar hipoteses, etc, sera o foco do uso domodelo matematico (nao apenas uma solucao analıtica exata). Os modelosque apresentam este objetivo sao denominados modelos de simulacao, quesao o foco de estudo deste capıtulo.

Vamos retomar ao problema do calculo das raızes de um polinomio. Casouma solucao analıtica nao fosse possıvel, poderıamos ainda estimar os valores

181

Page 194: Bases Computacionais da Ciência

das raızes de um modo relativamente preciso utilizando um metodo numericovia simulacao. Neste exemplo, empregaremos o metodo de Newton-Rhapsonpara estimar estas raızes. O metodo consiste em “chutar” um valor inicialpara a raiz e melhorar a estimativa deste valor inicial atraves da seguinterelacao:

xn+1 = xn −f (xn)f ′(xn)

(9.4)

Aqui, f (xn) e f ′(xn) representam o valor do polinomio para os valores dex calculados e o valor da derivada do polinomio, respectivamente. A relacaode Newton mostra que para uma solucao inicial xn, uma nova solucao, xn+1,mais precisa, pode ser calculada, refinando a estimativa inicial da raiz dopolinomio. Apos alguns ciclos de refinamento, uma solucao precisa pode seratingida atraves deste metodo. Uma vantagem do metodo de Newton e queele funciona para qualquer polinomio com ordem maior ou igual a dois (02).

A implementacao do metodo de Newton-Raphson e assunto de uma dasatividades do proximo capıtulo deste livro.

9.3 Definicao de Modelo

De acordo com (SHANNON, 1975), um modelo e uma representacao parcialde um objeto, sistema ou ideia. A construcao de um modelo e util quandoum sistema pode ser simplificado/reduzido em um nıvel tratavel, tornandoclara a estrutura essencial do sistema e como seus componentes interagementre si.

Um ponto importante na construcao de um modelo e a definicao de quaise como simplificacoes sao introduzidas. Tais simplificacoes envolvem, porexemplo, a escolha dos elementos do sistema alvo a serem considerados, quaisrelacionamentos serao modelados, como delimitar o ambiente do sistema,etc. Esta escolha deve levar em consideracao um ponto de equilıbrio pois,muito embora a exatidao do modelo aumente em uma relacao direta comas informacoes consideradas, sabe-se que uma parcela destas informacoesconsegue explicar o sistema de estudo. Assim, o ponto chave do processo demodelagem e descobrir as variaveis principais e a relacao entre elas.

Dentre as variaveis a serem inseridas em um modelo tem-se as variaveisde entrada e de saıda, conforme ilustra a Figura 9.4.

Espera-se que o modelo consiga estabelecer relacoes entre estas variaveis.Para tanto, e necessario entender quais aspectos do sistema alvo o modeloprocura descrever, e quais sao as limitacoes do modelo decorrentes das sim-plificacoes. A modelagem deve manter, com o maior grau de aderencia e

182

Page 195: Bases Computacionais da Ciência

Figura 9.5: Modelo e suas Variaveis.

fidedignidade possıvel, o relacionamento entre o sistema alvo e o sistemaresultante da modelagem e posterior simulacao.

9.3.1 Construcao de Modelos

Os passos principais para a construcao de um modelo estao descritos a seguir.

Detectar o problema de interesse: Uma das principais etapas consiste emdetectar o problema a ser modelado, para que se possa observar oseu comportamento sob determinadas condicoes, de forma a, cienti-ficamente, estuda-los e entende-los.

Definicao dos objetivos de estudo do sistema: Os objetivos indicam qual afinalidade do trabalho, para o que ele sera utilizado. Os objetivos dire-cionarao a construcao do modelo, e geralmente sao elaborados na formade hipoteses a serem testadas, efeitos a serem analisados, etc.

Delimitacao do escopo do modelo: O escopo limita a abrangencia do estudo.Como exemplo de delimitacao do escopo tem-se: estudar o tema (i)criminalidade, (ii) a criminalidade em termos de homicıdio, (iii) os ho-micıdios no Estado de Sao Paulo, (iv) qual a relacao que existe entreo perfil dos assassinos e as condicoes socio-economicas do Estado, noperıodo de 1980 a 2011.

Configuracoes do sistema a ser modelado: Tais configuracoes estabelecempara o modelo seus limites, restricoes, etc.

Metricas de desempenho: Estas metricas sao utilizadas para medir a eficaciade diferentes configuracoes do sistema.

Levantamento da infra-estrutura necessaria: Nesta etapa tem-se o levanta-mento dos equipamentos, ferramentas e programas computacionais aserem utilizados na construcao do modelo.

183

Page 196: Bases Computacionais da Ciência

9.3.2 Modelos de Simulacao

Um modelo de simulacao e um tipo particular de modelo que tambem procurarepresentar um determinado sistema, real ou abstrato. Entretanto, difere dosdemais na medida em que permite:

� Estudar como o sistema modelado se comporta sob determinadas con-dicoes;

� Examinar, em variados graus de detalhamento, as consequencias dealteracoes internas no comportamento geral do sistema.

Um dos primeiros modelos de simulacao, desenvolvido em 1940 por JohnVon Neumann e Stanislaw Ulam durante a Segunda Guerra Mundial, foiutilizado para o estudo da blindagem de reatores nucleares. Este estudo seriamuito caro em uma solucao experimental real, e ate mesmo muito perigoso emtermos de seguranca as pessoas envolvidas. Von Neumann e Ulam utilizaramferramentas estatısticas com amostragens aleatorias como metodo para obteruma aproximacao numerica de problemas complexos. Assim, conseguiramsimular um comportamento complexo atraves de um modelo estatıstico. Taltecnica foi denominada de Metodo de Monte Carlo, e sera utilizada em umasimulacao na Secao 9.5.1 para a estimativa do valor de PI.

Em (GILBERT; TROITZSCH, 1999; FERBER, 1996) sao apresentados algunsobjetivos de uma simulacao:

� Elaborar e formalizar novas teorias, bem como tambem auxiliar em ummelhor entendimento de teorias ja existentes;

� Testar hipoteses do sistema modelado;

� Obter um melhor entendimento de algumas caracterısticas do sistemareal;

� Predizer comportamentos e acoes futuras;

� Analisar e detectar elementos crıticos.

A infraestrutura tecnico-teorica da area de simulacao permite capturarelementos essenciais de um sistema alvo, sem trabalhar diretamente com omesmo. Esta caracterıstica e importante em situacoes onde, por exemplo:

� E proibitivo, por ser arriscado ou caro realizar experiencias em situacoesreais;

� Deseja-se saber os limites de um sistema, sem o risco de destruı-lo.

184

Page 197: Bases Computacionais da Ciência

9.4 Simulacao Computacional

A area de Simulacao Computacional propicia uma infraestrutura teorico-tecnica adequada para a manipulacao e geracao de conhecimento de formasistemica e integrada. Isto porque propicia a criacao e execucao de modelos,em ambientes computacionais, que funcionam como laboratorios que podemser usados para analisar e testar teorias, hipoteses, limites, previsoes, etc.Assim, ambientes computacionais de simulacao podem ser vistos como labo-ratorios, e uma simulacao como um experimento realizado a partir de ummodelo.

As tecnicas e ferramentas computacionais de simulacao tem sido usadasem diversas areas, como por exemplo:

� Pesquisadores da area medica usam ambientes simulados para treinartecnicas de cirurgia, antes de testar em pacientes reais. Como exemplo,a Figura 9.5 ilustra um robo cirurgiao conhecido como “da Vinci” quetem a habilidade de reproduzir remotamente os movimentos das maosde um medico;

� Na industria projetos de maquinas, processos e produtos podem ser ini-cialmente desenvolvidos em ambientes controlados de simulacao. Comoexemplo, na Figura 9.8(c) tem-se um ambiente para a construcao depecas;

� Simular situacoes de catastofres e posterior trabalho de resgate, comopor exemplo em queimadas, terremotos, situacoes de panico coletivo,etc. A Figura 9.8 ilustra um ambiente de simulacao para situacoesde resgate, dentro do contexto do projeto RoboCup Rescue (RESCUE,2011).

9.4.1 Sistemas Computacionais para Simulacao

Sistemas computacionais para simulacao auxiliam os desenvolvedores e pes-quisadores na medida em que permitem estudar o modelo em ambientescontrolados, possibilitando a analise de itens tais como: a dinamica do mo-delo, detalhes de sua estrutura, execucao variada da simulacao alterandoparametros de entrada para verificar os resultados obtidos, etc. Com estasfuncionalidades tais sistemas contribuiram para o uso cada vez mais intensode tecnicas de simulacao.

Os primeiros sistemas de simulacao foram implementados usando lingua-gens de programacao gerais, como por exemplo C e Fortran. Ha vantagens

185

Page 198: Bases Computacionais da Ciência

Figura 9.6: Robo “da Vinci” Utilizado em Cirurgias (VINCI, 2011).

Figura 9.7: Simulador de Pecas.

na implementacao de simulacoes utilizando linguagens de programacao ge-rais: elas tendem a ser mais rapidas e existe poucas limitacoes com relacaoao que pode ser feito. Uma das desvantagens desta abordagem e que o temponecessario para modelar, codificar e verificar tais sistemas pode ser proibitivo.

O proximo passo no desenvolvimento dos sistemas computacionais de si-mulacao foi a criacao de linguagens de programacao especıficas para simu-lacao. Como exemplo cita-se as linguagens GPSS, SIMAN, SLAM, GASP,

186

Page 199: Bases Computacionais da Ciência

(a) Simulador de Cenarios de Situacoes deDesastres.

(b) Mapa do LocalSimulado da Ocor-rencia do Desastre.

(c) Robo para Realizar o Res-gate de Vıtimas.

Figura 9.8: Projeto RobCup Rescue e seus Ambiente de Simulacao paraResgate em Situacoes de Desastre. Fonte: (RESCUE, 2011).

DYNAMO e SIMSCRIPT.

O uso de linguagens de simulacao tende a reduzir o tempo de implemen-tacao de um modelo (HARRELL; TUMAY, 1995).

Na decada de 80 a simulacao computacional comecou a ser utilizada naoapenas em universidades e centros de pesquisa, mas tambem no setor indus-trial. Sendo assim, sistemas computacionais voltados para a area industrialforam desenvolvidos.

Tais sistemas foram concebidos para serem utilizados por equipes inter-disciplinares, com profissionais de diversas areas e com diferentes nıveis deconhecimento em simulacao. Como exemplo tem-se Xcell e Simfactory (HAR-

RELL; TUMAY, 1995).

Na decada de 90 foram desenvolvidos sistemas computacionais de simu-lacao mais flexıveis, com melhores tecnicas de modelagem, integracao doscomponentes do sistema e visualizacao. Como exemplo destes pacotes tem-

187

Page 200: Bases Computacionais da Ciência

se Swarm, Arena e Stella.

9.4.2 Verificacao e Validacao

A credibilidade e consequente aceitacao de uma simulacao e atestada atravesde duas metodologias: a verificacao e a validacao.

Validar um modelo significa comprovar que as consideracoes feitas parasimplificar o comportamento do sistema real sao aceitaveis. A questao a serrespondida no processo de validacao e: o modelo conceitual foi construıdo deforma correta? Ou seja, como determinar que uma simulacao e um modelocorreto da realidade? A validacao e um processo iterativo de comparacaoentre os comportamentos do modelo conceitual e do sistema alvo. Correcoessao feitas ate que se atinja a precisao desejada, obtendo-se confianca de quea analise dos resultados da simulacao leva a inferencias validas (SARGENT,1999).

Por sua vez, o processo de verificacao objetiva comprovar se o modelocomputacional foi implementado corretamente em um sistema computacio-nal. A comprovacao se da atraves da comparacao entre o modelo conceituale o modelo computacional (SARGENT, 1999). Aqui, a pergunta a ser respon-dida e: o modelo esta implementado corretamente no computador?

Para verificar a implementacao pode-se utilizar tecnicas tradicionais deEngenharia de Software, bem como tecnicas mais especıficas para programasde simulacao. O crescente numero de variaveis presentes nas simulacoespode representar um obstaculo no processo de verificacao, aumentando oesforco necessario nesta fase de desenvolvimento. Neste caso, uma abordagemcomum e a escolha de variaveis-chave no processo de verificacao.

9.4.3 Metodologia para o Desenvolvimento de Simulacoes

Computacionais

A Figura 9.9 ilustra um ciclo completo para o desenvolvimento de uma si-mulacao computacional.

Passo 1. Analise do Sistema Alvo: O processo de desenvolvimento de umasimulacao comeca na analise do sistema alvo, objeto de estudo. Nestaetapa os modeladores formulam o problema, incluindo a definicao deum objetivo. O objetivo da simulacao guiara a escolha das partes dosistema alvo a serem modeladas. Como exemplo de objetivos tem-se a estimativa do tempo medio de espera de clientes em uma fila, aestimativa da quantidade de colisoes de pacotes em uma rede, analisedo comportamento coletivo em situacoes de panico, analise da evolucao

188

Page 201: Bases Computacionais da Ciência

Figura 9.9: Ciclo de Vida de uma Simulacao Computacional.

de normas sociais, etc. Neste passo tambem ocorre a coleta de dadospara auxiliar na construcao do modelo conceitual.

Passo 2. Construcao do Modelo Conceitual: Tendo como base o sistema alvoe o objetivo da simulacao, os modeladores constroem o modelo concei-tual.

Passo 3. Validacao Estatica/Estrutural: As acoes de modelagem devem serrevisadas na medida em que o desenvolvimento do modelo avanca. An-tes de ser codificado em um sistema computacional, o modelo conceitualprecisa ser analisado para determinar se sua estrutura e funcionamentocorrespondem ao sistema alvo. Esta etapa e denominada de validacaoestatica/estrutural. A validacao estatica procura analisar se a repre-sentacao logica, matematica e as relacoes de causa e efeito retratam deforma adequada as caracterısticas do sistema alvo.

Passo 4. Construcao do Modelo Computacional: Apos a validacao estrutu-ral do modelo conceitual, passa-se a modelagem computacional e suaposterior implementacao. Ao final desta etapa tem-se um programaimplementado, baseado no modelo computacional.

Passo 5. Verificacao Estatica: Nesta etapa o modelo computacional e a exe-cucao do programa sao analisados procurando assegurar que, primei-ramente, as tecnicas computacionais utilizadas estao corretas. Em um

189

Page 202: Bases Computacionais da Ciência

segundo momento procura-se analisar se as tecnicas computacionaistranscrevem corretamente o modelo conceitual para o ambiente com-putacional. Para tanto, inumeros testes devem ser realizados, como porexemplo colocar comprovacoes no programa para detectar certos tiposde erros. Uma comprovacao usual e verificar se uma variavel supera umvalor impossıvel (eg, uma probabilidade maior que 1), ou se a diferencaentre indivıduos criados e destruıdos e incoerente.

Passo 6. Execucao do Modelo Computacional em Testes Piloto: Uma vez ve-rificado o correto funcionamento tecnico do modelo computacional, ex-perimentos piloto sao projetados tendo como base situacoes reais dosistema alvo. Apos isto, os experimentos sao executados no simulador.Estes experimentos piloto sao simplificados, por exemplo analisando osresultados da execucao do programa tendo como dados de entrada umaquantidade reduzida de clientes, diminuindo o numero de servidores deuma rede, etc.

Passo 7. Verificacao Dinamica: Na etapa da verificacao dinamica o modelocomputacional e executado com os dados dos experimentos piloto, procurando-se encontrar respostas previsıveis e comprovar se coincidem, ou nao,com os resultados esperados da simulacao. Isto nao assegura que asimulacao funcione de forma adequada para o caso geral, mas mui-tos erros podem ser encontrados/identificados em simulacoes simples(BERLANGA, 2003; SARGENT, 1999).

Passo 8. Validacao Dinamica/Comportamental: Nesta etapa o programa querepresenta o modelo computacional e executado diversas vezes, visandoconstruir uma serie de experimentos que permitirao extrair resultadose conclusoes. Nesta etapa o comportamento do programa e conhecidocomo simulacao computacional.

9.5 Exercıcios da Aula Pratica

9.5.1 Estimando o Valor de π no Scilab® com o Metodo deMonte Carlo

Durante o colegio, todos aprendemos a usar a constante π em Geometriapara, por exemplo, calcular a area de figuras geometricas. Aprendemos,tambem, que o valor da constante e de 3,1415926535... Contudo, nem sempre

190

Page 203: Bases Computacionais da Ciência

nos ensinam como este valor pode ser calculado a partir de relacoes maissimples.

Ha diversos metodos que nos permitem calcular o valor de π de maneirarelativamente simples. Um destes metodos e o Metodo de Monte Carlo, que sebaseia nas propriedades dos numeros aleatorios (METROPOLIS; ULAM, 1949;METROPOLIS et al., 1953). O metodo de Monte Carlo foi desenvolvido porNicholas Metropolis, John von Neumann e Stanislaw Ulam na decada de 40durante o Projeto Manhattan no laboratorio americano de Los Alamos , ondese desenvolvia o projeto da bomba atomica. Como o projeto era secreto, osnomes dos projetos tinham nomes nao alusivos a bomba. Neste caso, MonteCarlo foi o nome dado em homenagem ao bairro do principado de Monacofamoso pelos cassinos. Conta-se que Stanislaw tinha um tio que era viciadonos jogos daquela cidade!

O metodo de Monte Carlo usa as propriedades dos numeros aleatoriospara calcular propriedades de interesse. Uma distribuicao de numeros alea-torios pode ser definida de maneira simples como um conjunto de numerosno qual nenhum numero tem maior chance de aparecer do que outro. Por in-crıvel que pareca, e algo bem difıcil sortear numeros aleatorios (mesmo comum computador!). Alguns pesquisadores ja notaram, por exemplo, que sepedirmos a um conjunto de pessoas que digam um numero qualquer “alea-torio”, os numeros que obteremos dificilmente passarao num teste estatısticoque comprove que o conjunto realmente trata-se de um conjunto de numerosaleatorios!!! Contudo, existem rotinas computacionais bastante eficientes eja estabelecidas para gerar sequencias de numeros aleatorias.

As aplicacoes do Metodo sao vastıssimas. Alguns exemplos incluem:

� Ciencias fısicas: simulacoes de difusao de calor, simulacoes de dina-mica molecular, problemas de muitos corpos (many-body) em sistemasquanticos, etc;

� Engenharia: Engenharia microeletronica (analise variacoes correlacio-nadas e nao-correlacionadas em circuitos digitais e analogicos), locali-zacao de robos autonomos, etc;

� Biologia Computacional: Dinamica de proteınas e membranas, Inferen-cias Baesianas na construcao de arvores filogeneticas, etc;

� Matematica: Metodos de integracao, otimizacao, etc.

Para compreender o uso do metodo, vamos primeiro derivar umas rela-coes geometricas que nos levarao facilmente a uma equacao para o valor da

191

Page 204: Bases Computacionais da Ciência

constante π. Sabemos que a area de uma circunferencia de raio r e dadapela Equacao 9.5.

Acirc = πr2 (9.5)

Sabemos ainda que a area de um quadrado de lado l e dada pela Equacao9.6.

Aquad = l2 (9.6)

Agora considere uma situacao na qual temos um quadrado com uma cir-cunferencia inscrita no quadrado, como mostrado na Figura 9.10.

Figura 9.10: Circunferencia Circunscrita em um Quadrado.

Se a circunferencia tem um diametro de 2r, sabemos que a area do qua-drado sera dada por:

Aquad = l2 = (2r)2 = 4r2 (9.7)

Neste ponto, se calcularmos a razao entre a area da circunferencia e aarea do quadrado, teremos a Equacao 9.8.

AcircAquad

=πr2

4r2(9.8)

Rearranjando os termos e isolando π do lado esquerdo da equacao te-remos, finalmente, a Equacao 9.9 que usaremos para calcular o valor daconstante.

π = 4AcircAquad

(9.9)

192

Page 205: Bases Computacionais da Ciência

A Equacao 9.9 nos mostra que e possıvel saber precisamente o valor deπ, bastando para isso calcular a razao entre a area da circunferencia e a areado quadrado, e multiplicar esta razao por 4. Contudo, para sabermos a areada circunferencia, precisamos da constante π, como nos mostrou a Equacao9.5. Como resolver, entao, este paradoxo?

A resposta para a solucao do problema esta no Metodo de Monte Carlo,que tem como fundamento o uso de numeros aleatorios para a estimativade parametros de interesse. As aplicacoes do metodo sao variadas, desdesimulacoes atomısticas ate o calculo numerico de integrais. Aqui usaremoso metodo e as propriedades dos numeros aleatorios para estimar a relacaoentre as areas da circunferencia e do quadrado.

Para tornar os calculos mais simples, vamos assumir que o quadrado tenhaum lado de tamanho l = 2r = 1. Logo, teremos que o raio da circunferenciasera r = 1

2 . Utilizando um computador, nos sortearemos agora alguns paresde numeros aleatorios no intervalo [0,1]. Cada par de numeros representaraas coordenadas x e y de um ponto que pertence a area do quadrado, comomostra a Figura 9.11.

Figura 9.11: Circunferencia Circunscrita em um Quadrado e com uma Seriede Pontos Aleatoriamente Distribuıdos sobre a Area do Quadrado.

Se os numeros sorteados forem realmente aleatorios, a chance de umponto cair no quadrado ou no cırculo serao basicamente proporcionais asareas do quadrado e do cırculo. Desta forma, podemos estimar as areasdo quadrado e do cırculo simplesmente contando quantos pontos caem so-bre cada umas das figuras! Ainda melhor, podemos calcular a razao Acirc

Aquadsimplesmente atraves da razao entre o numero de pontos que cai na circun-ferencia em relacao ao numero total de pontos. Lembre-se que, uma vez queos pontos estao no intervalo [0,1], todos os pontos cairao no quadrado!

Dadas as coordenadas (x,y) de um ponto A qualquer, oriundas de um

193

Page 206: Bases Computacionais da Ciência

sorteio aleatorio, podemos facilmente saber se o ponto esta dentro ou forada circunferencia calculando a distancia entre A e o ponto central da cir-cunferencia C, com coordenadas x=0,5 e y=0,5, como mostrado na Figura9.12.

Figura 9.12: A Distancia d entre qualquer Ponto A e o Centro da Circunfe-rencia pode ser Calculada atraves de um Calculo de uma Hipotenusa.

Assim:

∆x = xA − xC (9.10)

∆y = yA − yC (9.11)

d =√(∆x)2 + (∆y)2 (9.12)

Desta forma, se sortearmos as coordenadas x=0,8 e y=0,75, por exemplo,teremos ∆x = 0,8−0,5 = 0,3 e ∆y = 0,75−0,5 = 0,25 e d =

√0,32 +0,252 =

0.3905. Como o valor obtido e menor do que o valor do raio da circunfe-rencia, e possıvel dizer, mesmo sem a necessidade de uma analise grafica, queo ponto esta dentro da circunferencia (e dentro do quadrado, claro). Casoo valor da distancia d obtida seja maior que o raio, o ponto estara fora dacircunferencia, porem dentro do quadrado.

Se cumprirmos as duas tarefas: i) sortear muitos numeros aleatorios deforma a gerar uma amostragem suficiente de pontos dispersos randomica-mente no quadrado; e ii) decidir se cada ponto se encontra dentro ou fora dacircunferencia; podemos contar o numero N de pontos sorteados e o numerode pontos que estao dentro da circunferencia. Com estas duas informacoes,finalmente calculamos π atraves da Equacao 9.9.

194

Page 207: Bases Computacionais da Ciência

O script da Listagem 9.5.1 traz uma serie de comandos que pode serutilizada no Scilab® a fim de se realizar o calculo do valor de π numerica-mente atraves do metodo de Monte Carlo. Um script nada mais e do queum conjunto de comandos em uma ordem logica, e que podem ser interpreta-dos por uma linguagem de programacao ou por um ambiente computacional.Para usar este script, digite o texto da listagem 9.5.1 no ambiente Scinotes,como mostrado na Figura 9.13. Em seguida, execute os comandos do scriptselecionando Executar -> Arquivo com Eco, ou simplesmente pressionandoCtrl+L.

Figura 9.13: Ambiente Scilab® e SciNotes.

Observe que o nosso script nao faz nenhuma checagem quanto ao sorteiorepetido de variaveis aleatorias. Isto quer dizer que, eventualmente, o mesmoponto pode, em princıpio, ser sorteado mais que uma vez! Como baseamosnossos calculos em numeros que sao aleatoriamente sorteados pelo computa-dor, os resultados obtidos em diferentes simulacoes no mesmo computadorserao ligeiramente diferentes. Alem disso, o seu resultado e o resultado dosseus colegas podera ser tambem diferente! Vale a pena comparar e conferir!Coloque os comandos da Listagem 9.5.1 no seu SCILAB® e observe o queacontece.

195

Page 208: Bases Computacionais da Ciência

�1 circ =0;

2 pi_calc =0;

3 N = 1000000;

4 for i=1:N

5 x=rand();

6 y=rand();

7 d=sqrt (((x-0.5)*(x-0.5))+((y -0.5)*(y-0.5)));

8 if d < 0.5 then

9 circ = circ +1;

10 end

11 end

12 pi_calc = 4*( circ/N);

13 difer = (pi_calc - %pi);

14 difer

15 pi_calc� �Listing 9.1: Script para o Calculo de PI.

Neste script, definimos as variaveis circ e pi calc nas linhas 1 e 2. Estasvariaveis guardarao os valores do numero de pontos que caem dentro do cır-culo e o valor de pi que esta sendo calculado pelo metodo de Monte Carlo,respectivamente. Na linha de numero 3 definimos o numero de pontos queserao aleatoriamente distribuıdos na nossa simulacao de Monte Carlo. Al-tere este numero para observar o efeito da amostragem sobre o metodo, porexemplo. A linha 4 introduz uma estrutura de repeticao denominada laco ouloop. Ela permite que o Scilab® execute um determinado numero de vezesum comando, ou uma sequencia de comandos. No nosso caso a estrutura:

for i=1:N

...

end

diz ao Scilab® que todos os comandos compreendidos entre as linhas 5 e10 deverao ser repetidos N vezes, ou seja, um milhao de vezes (linha 3). Parasabermos em que passo da repeticao o Scilab® esta, uma variavel interna aolaco e definida tambem na linha 4, como uma variavel i. Por exemplo, oscomandos:

N=10;

for i=1:N

disp("Estou no passo", i);

end

196

Page 209: Bases Computacionais da Ciência

mostram a mensagem “estou no passo” seguida do numero do passo emque o laco esta. Em outras palavras, a variavel i e atualizada a cada repeticaodo laco.

Os comandos rand(), usados nas linhas 5 e 6 sao empregados para sortearnumeros aleatorios. Por padrao, o Scilab® sorteia numeros entre 0 e 1,embora este padrao possa ser alterado para se trabalhar com universos outrosde numeros aleatorios. A linha 7 faz o calculo da distancia entre o pontoaleatorio sorteado, com coordenadas x e y e o centro do cırculo (coordenadasx=0,5 e y=0,5).

A linha 8 emprega um comando de selecao do tipo if, ou se, em Portugues.Se a distancia d calculada na linha 7 for menor que 0,5 (raio da circunferen-cia), o ponto esta dentro da circunferencia e uma unidade e somada a variavelcirc. Do contrario, nada e feito.

A linha 12 calcula, finalmente, o valor de π como 4 vezes o circ divididopor N . A linha 13 compara o valor do nosso π, calculado pelo metodo deMonte Carlo, e o valor da constante guardada pelo Scilab®. As linhas 14 e15 mostram estes valores.

Atividade 1

Qual foi o valor de π calculado? O que acontece se voce repetir a si-mulacao 5 vezes? Experimente agora aumentar a amostragem de dados,aumentando o valor de N para 1.000.000.000, por exemplo. Qual foi o valorde π calculado com a amostragem maior?

9.5.2 Navegacao Autonoma de Veıculos

A navegacao autonoma e um dos grandes desafios da Computacao. Suaabrangencia vai desde a criacao de movimentacao automatica de maquinasate a criacao de robos total ou parcialmente autonomos para exploracaode outros planetas. Esta imensa gama de aplicacoes passa pela navegacaoautonoma de veıculos em uma estrada, sendo este o tema central de muitosprojetos de pesquisa em desenvolvimento.

Para a modelagem e simulacao de sistemas de navegacao autonoma enecessario levar em consideracao itens tais como:

� Como sera o ambiente onde o veıculo ira navegar?

� Quais variaveis estao envolvidas?

� Como representar tais variaveis, e como elas influenciarao o movimentodos veıculos?

197

Page 210: Bases Computacionais da Ciência

Figura 9.14: Posicionamento dos Sensores de Distancia no Carro.

9.5.2.1 Objetivo da Simulacao

O modelo desenvolvido em (RUAS et al., 2011) tem como objetivo principalsimular o comportamento de carros equipados de navegacao autonoma emdiferentes situacoes, como por exemplo, diversos carros em uma mesma pistano mesmo sentido, carros em sentido contrario, trajetos com muitas curvas,etc. Assim, dado um caminho desconhecido, cada carro presente na simulacaodeve ser capaz de percorrer uma pista evitando colisoes com paredes e outroscarros.

9.5.2.2 Modelo Conceitual

Diversos estudos apresentam diferentes modelagens para o problema da na-vegacao autonoma. Entretanto, de forma comum geralmente sao levadas emconsideracao como entrada do problema as medicoes referentes as distanciasobtidas por sensores no exterior dos carros. Em alguns estudos, onde e per-mitido variacao da velocidade do robo, esta e tambem utilizada como entradado sistema. A navegacao autonoma tem como problemas fundamentais man-ter o robo em um tracado desejado otimizando o angulo da roda em relacaoao carro, bem como manter o robo em uma velocidade adequada com relacaoa pista.

No modelo proposto nesta secao tem-se como entrada do sistema de in-ferencia seis variaveis, sendo cinco delas obtidas por sensores de distancia nocarro e a ultima sendo a velocidade atual do carro. A Figura 9.14 apresenta aposicao dos sensores nos carros utilizados na simulacao. Sao enviados comosaıda do sistema de inferencia dois resultados: o angulo que o carro devevirar e sua aceleracao.

198

Page 211: Bases Computacionais da Ciência

O veıculo autonomo proposto em (RUAS et al., 2011) utiliza a teoria daLogica Fuzzy para a sua tomada de decisao com relacao a navegacao. Deforma resumida, a Logica Fuzzy permite modelar raciocınio aproximado comafirmacoes imprecisas, como por exemplo “Vire a carro um pouco mais paraa direita”, “O carro esta perto da parede”, “Eu estou com muito frio”. Estascaracterısticas trazem uma vantagem com relacao a Logica Classica, que per-mite a modelagem do conhecimento utilizando apenas duas possiiblidades:verdadeiro ou falso. Foge do escopo deste capıtulo abordar com mais pro-fundidade os conceitos das Logicas Classica e Fuzzy. Para os interessados,na Universidade Federal do ABC as disciplinas Logica Basica (BC 1426) eLogicas Nao Classicas (MC 5002) abordam estes temas, respectivamente.

9.5.2.3 Simulacao da Navegacao Autonoma de Veıculos

Com a simulacao computacional da navegacao autonoma de veıculos e possı-vel simular o comportamento de diversos carros com sistemas de navegacaoautonoma semelhantes, em diferentes pistas. Para executar a simulacao exe-cute os passos a seguir:

1. Fazer o download do arquivo CarroFuzzy.zip, disponıvel no ambienteTidia;

2. Descompacta-lo em um diretorio, por exemplo C:\Temp\CarroAutonomo;

3. Verificar no diretorio se os seguintes arquivos foram descompactados:CarroAmarelo.png, CarroAzul.png, CarroFuzzy.jar, Car-roRoxo.png, CarroVerde.png, fundo1.jpg, fundo2.bmp, fundo2.jpg,fundo3.jpg, fundo5.jpg, fundo.bmp, fundo.jpg e transito.log;

4. Clicar duas vezes no arquivo CarroFuzzy.jar, com o botao do ladoesquerdo do mouse.

Apos a execucao destes passos a interface grafica da simulacao ira apare-cer, conforme ilustra a Figura 9.15, permitindo a visualizacao da simulacaoe o controle de seus parametros.

Nesta interface e possıvel ao usuario escolher:

� Qual sera a pista onde ocorrera a simulacao;

� Para cada carro e possıvel definir:

– Sua posicao (x,y) na pista;

– Suas velocidades inicial, mınima e maxima;

199

Page 212: Bases Computacionais da Ciência

Figura 9.15: Interface Grafica da Simulacao da Navegacao Autonoma deVeıculos.

– A direcao de movimento do carro.

� A velocidade geral da simulacao, permitindo visualizar mais devagarou mais rapido o comportamento dos carros.

Ao iniciar o sistema, a pista padrao deve ser carregada na tela e exibidado lado esquerdo da janela. E possıvel carregar qualquer modelo de pista,desde que seja uma figura no formato JPEG com dimensoes 665 por 710 pi-xels. O sistema de sensores do carro ira sempre tentar localizar pixels brancoscomo espaco de navegacao, desta forma a pista deve ser branca. Para esco-lher a pista onde ocorrera a simulacao, verifique no canto superior direito dainterface a opcao Fundo, conforme ilustrado na Figura 9.16(a). Clique nobotao Procurar e selecione o diretorio onde esta a simulacao, neste exem-plo em C:\Temp\CarroAutonomo. Escolha a pista definida no arquivofundo2.jpg, e a interface sera atualizada com esta pista, conforme ilustradona Figura 9.17.

Apos a selecao da pista, e necessario inserir os carros no ambiente desimulacao. Para isto verifique no canto superior direito da interface a op-cao Carros, conforme ilustrado na Figura 9.16(b). Clique no botao Pro-curar e selecione o diretorio onde esta a simulacao, neste exemplo emC:\Temp\CarroAutonomo. Escolha um carro com a cor amarela, se-

200

Page 213: Bases Computacionais da Ciência

(a) Configurando a Pista da Si-mulacao.

(b) Inserindo Carros na Simula-cao.

Figura 9.16: Configurando a Simulacao da Navegacao Autonoma de Veıculos.

lecionando o arquivo CarroAmarelo.png. Agora, para inserir um carrona pista escolha uma posicao (x,y) na pista. Por exemplo, suponha que sedeseja inserir um carro proximo a posicao indicada pelo quadrado vermelhoda Figura 9.18. Clique com o botao do lado esquerdo do mouse em qualquerponto dentro do quadrado vermelho. Perceba que no lado direito da interfacegrafica, as caixas de texto dos valores de X e Y foram atualizados para asposicoes definidas.

201

Page 214: Bases Computacionais da Ciência

Figura 9.17: Interface Grafica com a Pista.

Figura 9.18: Escolhendo a Posicao do Carro na Pista.

Agora, configure para este carro suas velocidades inicial, mınima e ma-xima com os valores 6, 5 e 15, respectivamente. Tambem e possıvel definir oangulo inicial do carro no campo Rot. Em seguida, clique no botao Inserir,conforme indicado na Figura 9.19.

Apos o comando de Inserir, perceba que o carro aparece na interfacegrafica da simulacao, conforme apresenta a Figura 9.20.

202

Page 215: Bases Computacionais da Ciência

Figura 9.19: Configurando Variaveis do Carro e Inserindo-o na Pista.

Figura 9.20: Carro Inserido na Interface da Simulacao.

Para inserir novos carros na pista, basta seguir os comandos apresentadosanteriormente.

Com relacao a simulacao, e possıvel executa-la passo a passo, utilizandoo botao Passo, ou permitir que ela execute sem interrupcoes, utilizando obotao Iniciar. O botao Parar interrompe a simulacao em execucao. Avelocidade com que a simulacao ocorre pode ser controlada pelo controle

203

Page 216: Bases Computacionais da Ciência

denominado Velocidade da simulacao. E possıvel ainda exibir, ou nao,o tracado realizado pelos carros na pista durante a simulacao, comparandoos diferentes comportamentos entre eles. Para isto basta ativar ou desativara opcao Mostrar tracado. Veja a Figura 9.21.

Figura 9.21: Configurando Parametros Gerais da Simulacao.

Durante a execucao da simulacao, selecionando um item na lista locali-zada na parte inferior direita, e possıvel verificar informacoes em tempo realsobre os carros presentes na simulacao. Finalmente, todas as posicoes dapista em que os carros passam sao armazenadas em um arquivo texto, paraconsulta futura. Veja Figura 9.22.

Atividade 1

Configure o cenario de movimentacao dos veıculos, ilustrado na Figura9.23, com as seguintes caracterısticas:

� Utilize a pista definida no arquivo fundo2.jpg

� Crie quatro carros com as mesmas velocidades, quais sejam: velocidadeinicial = 6, velocidade mınima = 5, velocidade maxima = 15. Agora, oscarros devem ser inseridos inicialmente em locais diferentes. Sao eles:

204

Page 217: Bases Computacionais da Ciência

Figura 9.22: Visualizando Variaveis de um Carro, em cada Passo da Simula-cao.

– Carro 1: X=84, Y=110, Rot=0

– Carro 2: X=510, Y=224, Rot=0

– Carro 3: X=363, Y=443, Rot=180

– Carro 4: X=316, Y=664, Rot=180

– OBS: OS valores que voce ira indicar para as coordenadas X e Yserao aproximados

� Defina a velocidade maxima da simulacao, na opcao Velocidade daSimulacao

Agora, clique no botao Iniciar para observar o comportamento de nave-gacao dos carros. Analisando a simulacao, responda as seguintes questoes:

� Em que locais da pista os carros tendem a dimunuir a velocidade?Porque?

� Peca para mostrar o tracado dos carros, e verifique como o compor-tamento da navegacao pode ser melhor observado com as marcas napista;

� Execute a simulacao novamente, agora alterando as pistas. Identifiquecaracterısticas de cada pista, e analise os comportamentos dos carrosinfluenciados por cada um destes locais.

205

Page 218: Bases Computacionais da Ciência

Figura 9.23: Configuracao do Cenario da Atividade 1 da Navegacao Auto-noma de Veıculos.

9.6 Conjunto de Praticas

Considerando a caracterıstica interdisciplinar do projeto pedagogico da Uni-versidade Federal do ABC, nesta secao os exercıcios propostos visam integraros conteudos da disciplina Bases Computacionais da Ciencia com as demaisdisciplinas iniciais dos bacharelados interdisciplinares. Sao elas:

1. Base Experimental das Ciencias Naturais;

2. Bases Epistemologicas da Ciencia Moderna;

3. Bases Matematicas;

4. Estrutura da Materia;

5. Origem da Vida e Diversidade dos Seres Vivos.

A interdisciplinariedade entre estas disciplinas sera de fato observada eentendida em situacoes praticas, onde o aluno perceba que todos os conteudosestao conectados. Para auxiliar nesta percepcao, nas proximas subsecoessao propostos exercıcios que apresentam a aplicacao dos conteudos de BasesComputacionais da Ciencia em cada uma das disciplinas iniciais.

206

Page 219: Bases Computacionais da Ciência

9.6.1 Bases Computacionais da Ciencia

1. Identifique as principais caracterısticas dos seguintes sistemas: um com-putador e uma Universidade. As caracterısticas sao as seguintes: (i)os elementos que constituem o sistema, (ii) os relacionamentos entre oselementos, (iii) o objetivo em comum e (iv) o ambiente onde o sistemaesta inserido.

2. De forma equivalente ao exercıcio anterior, escolha um sistema de seuinteresse e identifique suas principais caracterısticas.

3. Considerando a simulacao para o calculo do valor do π pelo Metodo deMonte Carlo, modifique o script dado na Listagem 9.5.1 para, ao finalde cada iteracao calcular a diferenca entre o valor de π calculado e ovalor de π real. Ao final, plote os dados, tendo o numero da iteracaocomo abcissa e o valor da diferenca como ordenada.

4. Considerando a simulacao de navegacao autonoma de veıculos:

� Elabore um cenario onde, depois de um certo tempo de execucaoda simulacao, ocorrerao acidentes. Explique as hipoteses em quevoce se baseou para criar este cenario.

� Para este cenario varie as pistas, e determine qual a pista maisperigosa. Identifique caracterısticas das pistas que levam a umamaior, ou menor seguranca, no movimentos dos carros. Justifiquesua resposta.

9.6.2 Bases Matematicas

9.6.2.1 Metodo de Newton-Raphson

O metodo de Newton ou Newton-Raphson e um dos metodos mais empre-gados para se resolver equacoes algebricas nao lineares. O metodo evoluiu apartir de proposicoes de Isaac Newton, Joseph Raphson e Thomas Simpson(YPMA, 1995). Neste exemplo, usaremos o metodo de Newton para calcular,numericamente (via simulacao), as raızes de polinomios de qualquer ordemmaior ou igual a 2.

No metodo de Newton-Raphson, a raiz de um polinomio e inicialmenteestimada a partir de um “chute” inicial. A partir daı, este valor inicial erefinado em iteracoes sucessivas a partir da seguinte relacao:

xn+1 = xn −f (xn)f ′(xn)

(9.13)

207

Page 220: Bases Computacionais da Ciência

Aqui, f (xn) e o valor do proprio polinomio calculado com o valor de xestimado e f ′(xn) e o valor da derivada do polinomio. A cada passo, umnovo valor de x e obtido e usado no passo posterior em uma nova iteracaode refinamento do valor de x como raiz do polinomio. O processo pode serrepetido por um numero determinado de vezes ou ainda pode ser repetidoate que haja uma convergencia entre os valores de xn e xn+1, por exemplo.

Neste exemplo, tomaremos como parametros o numero maximo de cicloscomo 500 e um criterio de convergencia de 1E−5, ou seja, 0.00001. Isto querdizer que o programa vai repetir a iteracao mostrada na equacao 9.13 500vezes ou ate que:

|xn+1 − xn| < 0.00001 (9.14)

Quando um dos criterios e atingido, o programa finaliza sua execucao emostra o valor final da raiz obtida (xn+1), bem como o numero de ciclos queforam necessarios para se atingir aquela raiz.

Figura 9.24: Comandos para se implementar o metodo de Newton no ambi-ente SciNotes.

A Listagem 9.6.2.1 abaixo mostra os comandos necessarios para imple-mentar o metodo de Newton-Raphson no SCILAB®. Para esta finalidade,abra o ambiente SciNotes no SCILAB® e digite os comandos da Listagem9.6.2.1, como mostrado na Figura 9.24.

�1 f unc t i on y=fx ( c o e f f s , x )2 y=0;

208

Page 221: Bases Computacionais da Ciência

3 maior termo=l ength ( c o e f f s ) −1;4 f o r i =1: l ength ( c o e f f s )5 y= y + ( c o e f f s ( i ) ) *( xˆ maior termo ) ;6 maior termo = maior termo − 1 ;7 end8 endfunct ion9

10 f unc t i on y=dfdx ( c o e f f s , x )11 y=0;12 maior termo=l ength ( c o e f f s ) −1;13 f o r i =1: l ength ( c o e f f s )14 y = y + ( maior termo ) * ( c o e f f s ( i ) ) * ( x ˆ( maior termo −1)

) ;15 maior termo = maior termo − 1 ;16 end17 endfunct ion1819 count =0;20 termos = input ( ”Entre com a ordem do pol inomio >= 2) : ”) ;21 termos = termos +1;22 c o e f f s = [ ]23 f o r i =1: termos24 p r i n t f ( ”Entre com o termo %d: ” , i ) ;25 t = input ( ””) ;26 c o e f f s = [ c o e f f s t ] ;27 end2829 f o r i =1: termos −130 p r i n t f ( ”%+dxˆ%d ” , c o e f f s ( i ) , termos− i ) ;31 end32 p r i n t f ( ”%+d\n” , c o e f f s ( termos ) ) ;3334 o ld x = input ( ”Entre com um va lo r estimado da r a i z : ”) ;35 func = fx ( c o e f f s , o ld x ) ;36 de r i v = dfdx ( c o e f f s , o ld x ) ;3738 i f de r i v ˜= 0.0039 new x = ( double ( o ld x ) − double ( func / de r i v ) ) ;40 end41 d e l t a = abs ( new x−o ld x ) ;4243 whi le ( count < 500) & ( d e l t a > 1E−5)44 func = fx ( c o e f f s , o ld x ) ;45 de r i v = dfdx ( c o e f f s , o ld x ) ;46 i f de r i v ˜= 0.0047 new x = ( double ( o ld x ) − double ( func / de r i v ) ) ;48 d e l t a = abs ( new x−o ld x ) ;49 o ld x=new x ;50 count = count + 1 ;

209

Page 222: Bases Computacionais da Ciência

51 e l s e52 p r i n t f ( ”A der ivada ca l cu l ada f o i ze ro .\n53 Por favor , t ente novamente com outro va lo r i n i c i a l de x\n”) ;54 count =501;55 end56 end5758 p r i n t f ( ”Raiz : %. 5 f \n” , new x ) ;59 p r i n t f ( ”Convergencia em %d c i c l o s \n” , count ) ;� �

Listing 9.2: Calculo de raızes utilizando o metodo de Newton-Raphson.

Finalmente, vamos empregar o metodo de Newton para calcular qual sejaa raiz real do polinomio 2x2 +5x2 − 3x +25 utilizando o metodo de Newtonque acabamos de implementar. A entrada dos dados e realizada de formainterativa e o resultado obtido deve ser similar ao mostrado abaixo.

-->exec(’C:\Users\UFABC\Desktop\newton.sci’, -1)

Entre com a ordem do polinomio >= 2): 3

Entre com o termo 1:

2

Entre com o termo 2:

5

Entre com o termo 3:

-3

Entre com o termo 4:

25

+2x^3 +5x^2 -3x^1 +25

Entre com um valor estimado da raiz: 100

Raiz: -3.77469

Convergencia em 24 ciclos

E possıvel verificar que o metodo de Newton funcionou corretamente deduas formas:

� Calculando as raızes com o SCILAB®:

-->p = poly([25, -3, 5, 2], "x", "coeff");

-->roots(p)

ans =

- 3.774685

0.6373425 + 1.7045026i

0.6373425 - 1.7045026i

210

Page 223: Bases Computacionais da Ciência

O resultado mostrado pelo SCILAB® revela uma raiz real (−3.774685)e duas raızes imaginarias.

� Ou analisando de forma grafica, como fizemos anteriormente no graficoda Figura 9.25.

Figura 9.25: Analise grafica do polinomio.

O script usa muitos conceitos ja trabalhados nesta disciplina. Mas vale apena destacar alguns itens:

Funcoes: As linhas 1 e 10 mostram que e possıvel, no Scilab®, definir funcoes.No caso da linha 1, definimos uma funcao que chamamos de fx e quetem como argumentos um vetor coeffs e um numero real x. A partirdaı, o valor do polinomio e calculado como um valor y. O uso destafuncao facilita a implementacao do algoritmo, uma vez que permiteseparar partes do codigo com objetivos diferentes em regioes (ou atearquivos) diferentes.

Entrada de dados: Em algumas porcoes do codigo o comando input e usado para fazer aentrada de dados. Este comando permite que o usuario, ao executar ocodigo, possa entrar com dados de maneira interativa.

211

Page 224: Bases Computacionais da Ciência

Atividade 1

Experimente alterar os parametros de convergencia e executar novamenteo script. O que acontece?

Atividade 2

Altere o scrip utilizado para o calculo da raiz real de um polinomio em9.6.2.1 modificando os criterios de parada. Utilize 1E−10 ao inves de 1E−5e numero maximo de ciclos como 5000 ao inves de 500. O que acontece?Como estes parametros alteram a execucao do programa?

Qual a finalidade do comando abs no comando delta = abs(new x−old x);? Faca uma pesquisa este comando.

212

Page 225: Bases Computacionais da Ciência

10 Modelagem e Simulacao Computacional: A Ciencia na Pratica

Alessandro NascimentoMaria das Gracas Bruno Marietto

Ricardo SuyamaWagner Tanaka Botelho

—– Universidade Federal do ABC

”Se queres conhecer o passado, examina o presente que e o re-sultado; se queres conhecer o futuro, examina o presente que e acausa.” Confucio

10.1 Introducao

No Capıtulo 9 foi apresentado um panorama geral do que e modelagem esimulacao computacional. Neste capıtulo serao apresentados alguns exemplosde simulacoes, como os robos exploradores em um ambiente desconhecido e asimulacao Cyber-Anasazi. Alem disso, alguns exemplos praticos nos softwareScilab® e RoboMind® serao apresentados.

Objetivos

Depois de estudar este capıtulo, o aluno sera capaz de:

� Associar os conceitos de modelagem e simulacao nos exemplos apresen-tados;

� Analisar os resultados dos sistemas implementados no Scilab® e RoboMind®;

� Trabalhar com simulacoes simples no Scilab® e RoboMind®.

10.2 Exemplos de Simulacoes

10.2.1 Robos Exploradores

A resolucao de problemas de busca representa um vasto campo de pesquisaem Inteligencia Artificial (IA). Segundo (RUSSELL; NORVIG, 2004), o processo

213

Page 226: Bases Computacionais da Ciência

de procurar por diferentes sequencias de acoes possıveis, e depois escolher amelhor sequencia e conhecido como busca. Um algoritmo de busca recebe umproblema como entrada e retorna uma solucao sob a forma de uma sequenciade acoes. Depois que uma solucao e encontrada, as acoes que ela recomendapodem ser executadas.

O deslocamento, reconhecimento e planejamento dos movimentos em umambiente desconhecido permitem que dispositivos autonomos possam realizarsuas funcoes em ambientes dinamicos, como por exemplo os robos moveis.

10.2.1.1 Objetivo da Simulacao

Em um ambiente desconhecido, um labirinto ou uma sala com algumas pa-redes divisorias e um grupo de robos que compartilham suas informacoescriando uma memoria coletiva, busca-se mapear o ambiente na intencao deencontrar a saıda. Alem de detectar e mapear as paredes, os robos devemevitar trafegar em locais ja conhecidos, evitar choques, bem como determinaro melhor trajeto ate a saıda.

10.2.1.2 Modelo Conceitual

As premissas para a criacao do modelo conceitual sao as seguintes:

� A modelagem do robo deve considerar suas caracterısticas e limitacoes;

� O robo possui quatro sensores que podem identificar obstaculos: frente,traz, direita e esquerda;

� As paredes sao detectadas por estes sensores e imediatamente adicio-nadas ao mapa;

� O mapa e compartilhado por todos os robos, ou seja, todos contribuempara a formacao do mesmo;

� O mapa e confiavel, ou seja, a informacao fornecida por todos os robose real;

� Caminhos ja percorridos devem ser evitados. Caminhos desconhecidossao priorizados;

� Quando ha informacao suficiente para encontrar a saıda, algoritmosmais eficientes devem ser utilizados.

214

Page 227: Bases Computacionais da Ciência

Figura 10.1: Ambiente Exemplo com a identificacao dos Robos, Paredes e aSaıda.

O Ambiente e o Mapa

A Figura 10.1 mostra um exemplo de ambiente utilizado na simulacaoproposta. No inıcio da simulacao este ambiente e carregado pelo programa eexibido e os robos sao distribuıdos aleatoriamente.

A Figura 10.2(a) mostra o mapa no inıcio da simulacao. A Figura 10.2(b)mostra o mapa apos a conclusao da simulacao onde os robos encontraram asaıda.

O Agente Robo Virtual

Seguindo as especificacoes do modelo conceitual, o robo e capaz de movimentar-se nas quatro direcoes e detectar os obstaculos nestas direcoes. A cada movi-mento, o mesmo avalia a informacao de seus sensores e seu ultimo movimentopara determinar o seu proximo passo. Em primeiro lugar o agente verifica emquais direcoes e possıvel movimentar-se, detectando paredes e outros agen-tes. Estas informacoes sao incluıdas no mapa, informando onde ha paredese onde ha espacos livres. Com estas informacoes, o agente faz as seguintesinferencias:

215

Page 228: Bases Computacionais da Ciência

(a) (b)

Figura 10.2: (a) Mapa na Memoria no Inıcio da Simulacao. (b) O MesmoMapa ao Termino da Simulacao.

� A posicao que possui uma parede e descartada imediatamente da listade possıveis movimentos;

� Se ha um outro agente em alguma posicao da lista, esta tambem edescartada.

A escolha da nova posicao entre as disponıveis considera, nesta ordem:

� Saıda do ambiente;

� Continuidade do movimento, ou seja, se o agente esta indo para direcaosul, ele prefere continuar nesta direcao, considerando custoso o processode mudanca da mesma;

� Locais nunca visitados;

� Locais menos visitados.

No momento que o agente robo ocupa uma nova posicao, este ponto nomapa e incrementado para identificar que uma nova visita foi feita nesteponto. Na proxima inferencia, por este ou outro agente, esta posicao serapreterida.

10.2.2 Simulacao Cyber-Anasazi

Anasazi foi uma sociedade indıgena norte americana que habitou o que hojee o Four Corners, no Estado do Arizona (EUA), entre 1200 a.C. ate o finaldo seculo XIII. Tem-se muitos dados sobre esta civilizacao, porem os mo-tivos que levaram sua extincao e muito discutido. Hipotetiza-se que esta

216

Page 229: Bases Computacionais da Ciência

sociedade foi extinta devido a sua cultura e guerras. Ha aqueles que acredi-tam em epidemias ou saqueadores, outros defendem uma possıvel migracao.Entretanto, ate hoje nao ha uma explicacao efetiva para a extincao dessacivilizacao (RAUCH, 2007; JANSSEN, 2009).

O modelo computacional de simulacao Cyber-Anasazi foi desenvolvidoinicialmente por pesquisadores do Santa Fe Institute (INSTITUTE, 2011). Estemodelo visa reproduzir o comportamento da cultura e o declınio da sociedadeAnasazi ate o seu desaparecimento, objetivando encontrar os motivos de suaextincao. Ha uma grande quantidade de dados levantados em estudos epesquisas sobre a sociedade, que permitem definir tanto o comportamentode seus indivıduos como regras para a agricultura, movimento, crescimentopopulacional, quanto numeros ligados a producao agrıcola, dados meteoro-logicos daquela regiao no perıodo em questao, padroes de assentamento, etc(AXTELL et al., 2002).

A simulacao consiste em criar uma replica computadorizada do Long Val-ley House e simular o perıodo 800 d.C. a 1350 d.C. Um agente neste modelorepresenta uma famılia e possui informacoes como idade, tempo de vida, vi-sao, habilidade para locomocao, necessidade nutricional, consumo, etc. Oconjunto de regras que regem o comportamento dos agentes permitem queinterajam tanto com outros agentes, quanto com o ambiente que estao inse-ridos (AXTELL et al., 2002).

Resumidamente, o comportamento de um agente famılia se da da seguinteforma. Todos os anos cada famılia realiza colheitas de milho em suas ter-ras para se alimentar, e armazena o que excede para que possa consumir egarantir sua existencia no inverno. Se a producao e suficiente para a alimen-tacao neste ciclo, entao a famılia permanece nas terras para o plantio do anoseguinte. Se o rendimento for insuficiente, a famılia se muda para o proximolote disponıvel que pareca promissor, para entao realizar o mesmo ciclo. Semesmo assim a famılia ainda nao puder se sustentar, entao ela e retiradada simulacao, como se tivesse morrido. Ha regras que permitem a formacaode novas famılias, o nascimento de filhos, etc (AXTELL et al., 2002; RAUCH,2007).

Na Figura 10.3 esta ilustrado um passo da execucao do modelo de simu-lacao Cyber-Anasazi. A area em azul representa as regioes ferteis, os cırculosem vermelho representam os assentamentos.

As simulacoes realizadas baseadas no modelo Anasazi auxiliaram em ummelhor entendimento da evolucao desta civilizacao, mas nao conseguiramexplicar por que os Anasazi desapareceram. Mesmo com esta limitacao dosexperimentos, tais simulacoes tem demonstrado que as sociedades artificiaissao uma ferramenta importante na reproducao da genese, evolucao e extincaode sociedades reais, podendo tambem predizer algumas tendencias.

217

Page 230: Bases Computacionais da Ciência

Figura 10.3: Execucao de um Passo da Simulacao Anasazi.

10.3 Exercıcios da Aula Pratica

10.3.1 Jogo da Vida

O Jogo da Vida foi desenvolvido pelo matematico John Conway em 1970.Conway explorava a ideia do construtor universal, de forma que uma maquinahipotetica pudesse construir copias de si mesma. O Jogo da Vida e umautomato celular que se desenvolve em um espaco de duas dimensoes, divididoem celulas quadrangulares. E governado por regras simples que definemnascimentos, mortes e sobrevivencias de celulas. Cada uma das celulas douniverso bidimensional pode estar em dois estados possıveis: viva ou morta.Se uma celula sobrevive, morre ou nasce sera determinado pelo numero devizinhos vivos ao redor de uma celula.

As figuras 10.4(a) e 10.4(b) apresentam dois passos consecutivos do Jogoda Vida, executado no software Scilab®. A cor preta indica que a celula estamorta, e a cor branca indica que a celula esta viva.

E importante compreender que todos os nascimentos e mortes ocorremsimultaneamente. Juntos constituem uma unica geracao ou um“movimento”,na “hipotese de vida” a partir da configuracao inicial do Jogo da Vida.

218

Page 231: Bases Computacionais da Ciência

(a) Jogo da Vida no Passo N. (b) Jogo da Vida no Passo N+1.

Figura 10.4: Execucao do Jogo da Vida em Dois Passos Consecutivos.

10.3.1.1 Modelagem do Jogo da Vida

Segundo Conway, a ideia basica do Jogo da Vida e iniciar com uma configu-racao simples dos organismos. Em seguida, observar como ocorre a mudancaquando se aplicam as leis que determinam nascimentos, mortes e sobreviven-cias. Embora as regras de Conway pudessem, inicialmente, parecer um tantoarbitrarias, estas nao vieram por acaso. Conway seguiu uma serie de criteriosobjetivando direcionar seu estudo em busca de regras que nao conduzissema qualquer comportamento caotico, ou de crescimento infinito, ou de rapidaestabilidade. Em seguida, procurou acertar as regras que permitissem aosobjetos crescerem e mudarem por muito tempo antes de se estabilizarem.

10.3.1.1.1 Regras de Conway

Inicialmente, cada celula da grade pode ter oito celulas vizinhas. As regrasdefinidas para o Jogo Vida envolvem tres topicos: sobrevivencia, nascimentose mortes:

� Sobrevivencia: Se a quantidade de vizinhos vivos e igual a dois (02) outres (03), a celula sobrevive;

� Nascimento: Se a celula atual esta morta, mas tem tres (03) vizinhosvivos, entao ela se torna viva. Assim nesta regra cada celula, comexatamente tres vizinhos, nasce na proxima fase;

� Morte: Se a quantidade de vizinhos vivos e menor que dois (solidao)ou maior que tres (superpopulacao), a celula morre. Esta regra pode

219

Page 232: Bases Computacionais da Ciência

ser descrita como: cada celula com quatro ou mais vizinhos morre porsuperpopulacao. Cada celula com zero ou um vizinho tambem morrepor isolamento.

10.3.1.1.2 Padroes de Comportamento

Durante a execucao do Jogo da Vida as celulas organizam-se seguindo algunspadroes, formando objetos visuais. Existem varios tipos de padroes detec-tados, com seus respectivos objetos. A seguir tem-se o exemplo de algunsdeles.

Objetos do Tipo I. Estaveis: Os padroes estaveis levam a formacao de obje-tos que, uma vez formados durante a simulacao, tendem a nao mudar.Os objetos estaveis ocorrem quando nenhuma celula viva tende a mor-rer, e nenhuma celula tende a nascer. Como exemplo tem-se o block,beehive, ship, boat, loaf, spiral, ilustrados nas figuras 10.5(a), 10.5(b),10.6(a), 10.6(b), 10.7(a), 10.7(b), respectivamente.

(a) Objetos Block. (b) Objetos Beehive.

Figura 10.5: I.Exemplos de Objetos do Jogo da Vida Gerados pelo PadraoEstavel.

(a) Objetos Ship. (b) Objetos Boat.

Figura 10.6: II.Exemplos de Objetos do Jogo da Vida Gerados pelo PadraoEstavel.

Objetos do Tipo II. Oscilatorios Os objetos oscilatorios sao formas que mu-dam de etapa em etapa, ate atingir um ciclo constante. O tipo mais

220

Page 233: Bases Computacionais da Ciência

(a) Objetos Loaf. (b) ObjetosSpiral.

Figura 10.7: III. Exemplos de Objetos do Jogo da Vida Gerados pelo PadraoEstavel.

simples sao os osciladores de dois perıodos, ou aqueles que se repetemapos duas etapas. Como exemplo tem-se o blinker (Figura 10.8(a)) etoad (Figura 10.8(b)).

(a) Objetos Blinker. (b) Objetos Toad.

Figura 10.8: Exemplos de Objetos do Jogo da Vida Gerados pelo PadraoOscilatorio.

Objetos do Tipo III. Spaceships: Os objetos do tipo spaceships sao for-mados por padroes que se repetem depois de uma determinada sequen-cia, e retornam a seu estado original. Tal padrao leva a que os obje-tos se transformem em uma sequencia de interacoes do Jogo da Vida,deslocando-se ao longo da simulacao. Como exemplo tem-se o objetoglider, ilustrado na Figura 10.9.

10.3.1.2 Simulacao do Jogo da Vida

A fim de implementar o modelo definido por Conway, consideremos que apopulacao e definida por uma matriz N×N , onde cada elemento pode assumirvalores 0 (indivıduo morto) ou 1 (indivıduo vivo). Por exemplo, considereque a populacao inicial corresponde ao padrao observado na Figura 10.10.

Podemos entao representar a populacao por meio de uma matriz 5 × 5,que, em nosso exemplo, sera armazenada em uma variavel denominada GRID,e pode ser criada com a seguinte linha de comando:

221

Page 234: Bases Computacionais da Ciência

Figura 10.9: Exemplo de Objeto Glider, Gerado pelo Padrao Spaceship.

1

2

3

1 2 3 4 5

4

5

Figura 10.10: Imagens Lado a Lado.

-->GRID = [0 0 0 0 0; 0 0 0 0 0; 0 1 1 1 0; 0 0 0 0 0; 0 0 0 0 0]

GRID =

0. 0. 0. 0. 0.

0. 0. 0. 0. 0.

0. 1. 1. 1. 0.

0. 0. 0. 0. 0.

0. 0. 0. 0. 0.

Note que, nesse caso, o ponto-e-vırgula esta sendo utilizado para delimitaras linhas da matriz.

A fim de se determinar qual a configuracao da populacao na iteracaoseguinte do jogo, devemos aplicar as regras citadas anteriormente a todoselementos da matriz GRID. Para isso, consideremos que as celulas vizinhassao definidas conforme ilustrado na Figura 10.11, ou seja, sao todas as celulasque circundam uma dada posicao, incluindo as celulas na diagonal.

Assim, para a condicao inicial apresentada, obtem-se facilmente, por ins-pecao, o numero de vizinhos de cada uma das celulas presentes na populacaoinicial. Dessa forma, aplicando as regras definidas anteriormente, conclui-se

222

Page 235: Bases Computacionais da Ciência

que a populacao na iteracao seguinte sera dada pela matriz

GRID =

0. 0. 0. 0. 0.

0. 0. 1. 0. 0.

0. 0. 1. 0. 0.

0. 0. 1. 0. 0.

0. 0. 0. 0. 0.

e, se continuarmos o processo iterativo, descobriremos que a populacao se-guinte sera igual ao padrao observado na populacao inicial, estabelecendoassim um padrao repetitivo.

1

2

3

1 2 3 4 5

4

5

1

2

3

1 2 3 4 5

4

5

1

2

3

1 2 3 4 5

4

5

1

2

3

1 2 3 4 5

4

5

1

2

3

1 2 3 4 5

4

5

1

2

3

1 2 3 4 5

4

5

1

2

3

1 2 3 4 5

4

5

1

2

3

1 2 3 4 5

4

5

1

2

3

1 2 3 4 5

4

5

Figura 10.11: Definicao da Vizinhanca para os Elementos da Matriz GRID.

223

Page 236: Bases Computacionais da Ciência

O exemplo, embora simples, ja indica que o processo para se determi-nar a evolucao da populacao sera uma tarefa ardua se considerarmos outrasconfiguracoes da populacao inicial, ou ainda uma populacao com um nu-mero maior de indivıduos. Felizmente, e possıvel implementar de maneirarelativamente simples o Jogo da Vida por meio de um script no Scilab®.

10.3.1.3 Determinando o Numero de Vizinhos das Celulas

A Figura 10.11 ilustra como sao definidos os vizinhos, considerando diferentescelulas da matriz GRID. A partir do diagrama, podemos observar que

� Vizinhos que se encontram a direita de celulas da coluna 5 (corres-ponderiam a coluna 6) sao representados por GRID(p,1), para p =1,2, . . . ,5;

� Vizinhos que se encontram a esquerda de celulas da coluna 1 (cor-responderiam a coluna 0) sao representados por GRID(p,5), para p =1,2, . . . ,5;

� Vizinhos que se encontram acima de celulas da linha 1 (corresponde-riam a linha 0) sao representados por GRID(5,q), para q = 1,2, . . . ,5;

� Vizinhos que se encontram abaixo de celulas da linha 5 (corresponde-riam a linha 6) sao representados por GRID(1,q), para q = 1,2, . . . ,5;

Suponha agora que estejamos interessados apenas em determinar qualsera a condicao da celula GRID(3,3). Como cada celula pode apenas assu-mir dois valores - 0 ≡ morta e 1 ≡ viva - podemos determinar o numero devizinhos vivos simplesmente somando o conteudo de todas as celulas vizinhasa GRID(3,3). Por conveniencia, podemos armazenar esse valor em uma ma-triz chamada, por exemplo, de Nvizinhos, cujo elemento Nvizinhos(p,q)

contem o numero de vizinhos de GRID(p,q). Dessa forma, podemos concluirque

Nvizinhos(3,3) = GRID(3,4) + GRID(4,4)+ GRID(4,3)

+ GRID(4,2) + GRID(3,2) + GRID(2,2)+ GRID(2,3) + GRID(2,4)

(10.1)

ou, de maneira geral,

Nvizinhos(p,q) = GRID(p,q+1) + GRID(p+1,q+1) + GRID(p+1,q)

+ GRID(p+1,q-1) + GRID(p,q-1) + GRID(p-1,q-1) + GRID(p-1,q)

+ GRID(p-1,q+1) (10.2)

224

Page 237: Bases Computacionais da Ciência

para p,q = 1,2, . . . ,5, observando que, se algum dos ındices resultar em umvalor maior do que 5, ele devera ser substituıdo por 1, e caso algum dosındices resultar em um valor menor do que 1, ele devera ser substituıdo por5.

O procedimento acima deve ser realizado para cada uma das celulas deGRID, e o Scilab® possui as funcionalidades que facilitam esse processo. Porexemplo, sabemos que para acessar um elemento em particular da matrizGRID basta utilizar, por exemplo,

-->GRID(3,2)

ans =

1.

No entanto, e possıvel tambem acessar um subconjunto da matriz, utilizandovetores como ındices. No exemplo abaixo

-->GRID([1 2 3],2)

ans =

0.

0.

1.

acessamos diretamente os elementos GRID(1,2), GRID(2,2) e GRID(3,2),conforme observado na resposta obtida. De maneira similar, se executarmos

-->GRID([1 2 3],[2 3])

ans =

0. 0.

0. 0.

1. 1.

obteremos uma matriz cujos componentes seraoGRID(1,2) GRID(1,3)

GRID(2,2) GRID(2,3)

GRID(3,2) GRID(3,3)

(10.3)

Finalmente, uma ultima funcionalidade implementada pelo Scilab® eexemplificada no seguinte comando:

225

Page 238: Bases Computacionais da Ciência

-->GRID([1 2 3],:)

ans =

0. 0. 0. 0. 0.

0. 0. 0. 0. 0.

0. 1. 1. 1. 0.

que equivale a execucao de GRID([1 2 3],[1 2 3 4 5]). Em outras pala-vras, o operador “:” indica ao Scilab® para acessar todos os possıveis valorespara o ındice que ele substitui.

Levando-se em consideracao as funcionalidade para se acessar diferenteselementos de matrizes, podemos observar que a seguinte linha de comando:

-->GRID(:,[2 3 4 5 1])

ans =

0. 0. 0. 0. 0.

0. 0. 0. 0. 0.

1. 1. 1. 0. 0.

0. 0. 0. 0. 0.

0. 0. 0. 0. 0.

retorna uma matriz que indica justamente se os vizinhos a direita dos ele-mentos de GRID estao vivos ou mortos. De maneira equivalente, podemosaveriguar os vizinhos abaixo de cada celula da matriz utilizando o comandoGRID([2 3 4 5 1],:). Para acessar os vizinhos a esquerda, podemos em-pregar a linha de comando

-->GRID(:,[5 1 2 3 4])

ans =

0. 0. 0. 0. 0.

0. 0. 0. 0. 0.

0. 0. 1. 1. 1.

0. 0. 0. 0. 0.

0. 0. 0. 0. 0.

e a mesma ideia pode ser explorada para se definir matrizes que contenham osvizinhos acima e nas diagonais (Como ficariam as linhas de comando nessescasos?).

Dessa forma, se definirmos dois vetores auxiliares

226

Page 239: Bases Computacionais da Ciência

-->up = [2 3 4 5 1]

up =

2. 3. 4. 5. 1.

e

-->down = [5 1 2 3 4]

down =

5. 1. 2. 3. 4.

podemos calcular o numero de vizinhos de cada uma das celulas da seguinteforma:

-->Nvizinhos = GRID(up,:)+GRID(down,:)+GRID(:,up)+GRID(:,down)+

GRID(up,up) + GRID(up,down) + GRID(down,up)+GRID(down,down)

Nvizinhos =

0. 0. 0. 0. 0.

1. 2. 3. 2. 1.

1. 1. 2. 1. 1.

1. 2. 3. 2. 1.

0. 0. 0. 0. 0.

10.3.1.4 Aplicando as Regras do Jogo da Vida

Se observarmos as regras para se determinar a condicao das celulas na pro-xima iteracao do jogo, podemos concluir que:

� Independentemente do estado atual da celula, se o numero de vizinhosfor igual a 3, ela aparecera viva na iteracao seguinte;

� Se a celula estiver viva na iteracao atual e o numero de vizinhos for 2,entao ela continuara viva na iteracao seguinte;

� Em todos os demais casos, a celula aparecera morta na iteracao se-guinte.

Note que determinar se o numero de vizinhos de GRID(p,q) e igual a 3equivale a verificar se Nvizinhos(p,q) e igual a 3. No Scilab®, podemosfazer essa verificacao facilmente para todos os elementos, determinando deuma so vez quais sao os elementos de Nvizinhos que sao iguais a 3 por meiodo seguinte comando:

227

Page 240: Bases Computacionais da Ciência

-->Nvizinhos == 3

ans =

F F F F F

F F T F F

F F F F F

F F T F F

F F F F F

A resposta e dada na forma de uma matriz composta por variaveis logicasdo tipo “F” - falso - e “V” - verdadeiro. O mesmo tipo de verificacao pode serfeita para ver quais celulas estao vivas, utilizando o comando

-->GRID == 1

ans =

F F F F F

F F F F F

F T T T F

F F F F F

F F F F F

Conforme comentado anteriormente, a celula aparecera viva na iteracaoseguinte se a celula tiver exatamente 3 vizinhos vivos OU se ela estiver vivaatualmente e tiver exatamente 2 vizinhos vivos. A primeira condicao e veri-ficada pelo comando Nvizinhos == 3, que retorna a matriz com “V” e “F”indicando quais elementos possuem, de fato, 3 vizinhos vivos. A segundacondicao requer uma operacao logica entre duas verificacoes, ou seja:

-->(GRID == 1) & (Nvizinhos == 2)

ans =

F F F F F

F F F F F

F F T F F

F F F F F

F F F F F

que realiza a operacao logica E (indicada pelo operador &) entre os elementosdas respostas de GRID == 1 e Nvizinhos == 2 - que indica quais celulaspossuem exatamente 2 vizinhos vivos. Lembrando que a tabela verdade paraa operacao logica “E” e dada por & podemos concluir que os elementos da

228

Page 241: Bases Computacionais da Ciência

A B A E BV V VV F FF V FF F F

A B A OU BV V VV F VF V VF F F

resposta somente sera “V” caso a celula na iteracao atual estiver viva e onumero de vizinhos for igual a 2.

Resta, portanto, combinar as duas regras discutidas anteriormente, uti-lizando o operador logico OU, cuja tabela verdade e apresentada abaixo ouseja, caso uma das premissas seja verdadeira, a conclusao sera verdadeira.Dessa forma, a condicao para que uma celula esteja viva na iteracao subse-quente pode ser verificada pela linha de comando

-->((Nvizinhos == 3)|((GRID == 1) & (Nvizinhos == 2)))

ans =

F F F F F

F F T F F

F F T F F

F F T F F

F F F F F

onde | representa o operador logico OU.

10.3.1.5 Implementando o Script no Scilab®

Na tela inicial do Scilab®, clique no ıcone indicado na Figura 10.12. Issoabrira uma nova janela, que corresponde ao editor de script do Scilab®,chamado SciNotes, cuja tela inicial e mostrada na Figura 10.13.

Voce pode utilizar o editor para criar sequencias de comandos a seremexecutados pelo Scilab® de maneira sequencial, de forma semelhante a vistanas aulas sobre programacao utilizando o software RoboMind®. Uma vezque o script esteja completo, voce pode executa-lo clicando no ıcone “play”indicado na Figura 10.14. Se o arquivo ainda nao foi salvo, o Scilab® infor-mara que o arquivo sendo editado precisa ser salvo antes de ser executado.

229

Page 242: Bases Computacionais da Ciência

Figura 10.12: Chamando o Editor SciNote do Scilab®.

Figura 10.13: Editor SciNote do Scilab®.

O script completo que implementa o Jogo da Vida no Scilab® e mostradona Listagem 10.3.2.2.

�1 c l o s e ;2 c l e a r ;3 f i g u r e (1 ) ;4 i s ov i ew ( 0 , 0 , 1 , 1 ) ;5 f = s c f (1 ) ;6 f . color map = [ 1 1 1 ] ;78 N = 50 ;9 N i t e racoe s = 100 ;

1011 GRID = zeros (N,N) ;12 GRID = ( round ( rand (N,N) ) ) ;1314 Matplot (GRID) ;

230

Page 243: Bases Computacionais da Ciência

15 h = gce ( ) ;1617 up = [ 2 :N 1 ] ;18 down = [N 1 :N−1 ] ;1920 f o r contador = 1 : N i t e racoe s21 Nviz inhos = GRID(up , : )+GRID(down , : )+GRID( : , up )+22 GRID( : , down)+GRID(up , up) + GRID(up , down) +23 GRID(down , up)+GRID(down , down) ;2425 GRID = boo l2s ( ( Nviz inhos == 3) |26 ( (GRID==1) & ( Nviz inhos==2)) ) ;2728 h . data = double (GRID) ;29 s l e e p (20) ;30 end� �

Listing 10.1: Script para o Jogo da Vida.

Para executa-lo, basta inserir o codigo no editor e pressionar o botaoexecutar, destacado na Figura 10.14.

Figura 10.14: Codigo do Jogo da Vida e a Janela Grafica com uma PopulacaoInicial Aleatoria.

Vejamos, em linhas gerais, o que esta sendo executado no script proposto:

1. Linha 1 - close: Fecha a ultima janela grafica aberta;

231

Page 244: Bases Computacionais da Ciência

2. Linha 2 - clear: Apaga todas as variaveis previamente definidas noambiente do Scilab®;

3. Linha 3 - figure(1): Abre uma nova janela grafica, e a nomeia comojanela 1;

4. Linha 4 - isoview(0,0,1,1): Formata a janela grafica para que aproporcao entre os dois eixos, x e y, seja igual a 1. Caso contrario ografico apareceria em uma janela retangular;

5. Linha 5 - f = scf(1): Comando especıfico para manipulacao dos ele-mentos da janela grafica. O argumento indica qual janela tera suaspropriedades alterada (no caso, a janela 1);

6. Linha 6 - f.color_map = [1 1 1]: Define qual deve ser a cor associ-ada a uma celula viva. Sao especificados tres numeros entre 0 e 1, quecorrespondem aos componentes de vermelho (R), verde (G) e azul (B)da cor. No caso, a cor branca corresponde a R=G=B=1;

7. Linha 8 - N = 50: Define o tamanho da matriz a ser usada na simulacao;

8. Linha 9 - Niteracoes = 100: Define o numero de iteracoes a seremexecutadas;

9. Linha 11 - GRID = zeros(N,N): Cria a matriz GRID como sendo umamatriz N ×N composta por zeros;

10. Linha 12 - GRID = (round(rand(N,N))): Atribui valores aleatoriospara os elementos da matriz GRID. O comando rand(N,N) gera umamatriz N × N contendo numeros aleatorios entre 0 e 1. Como, emnossa aplicacao, as celulas apresentam apenas valores 0 ou 1, utiliza-seo comando round para arredondar os valores para 0 ou 1;

11. Linha 14 - Matplot(GRID): Comando que converte a informacao deuma matriz em um grafico 2D. O valor de cada elemento representao ındice de cor a ser utilizado no grafico, e cada uma das cores a serutilizada foi previamente definida com o comando f.colormap. Nessecaso, como so foram definidos dois estados possıveis, o valor 0 estaassociada a cor preta, enquanto o valor 1 - celula viva - esta associadaa cor definida em f.colormap;

12. Linha 15 - h = gce(): Comando especıfico que sera utilizado para aatualizacao do grafico. Ele retorna um handle para o grafico inicial-mente criado, e atraves dele sera possıvel atualizar os dados apresenta-dos no grafico;

232

Page 245: Bases Computacionais da Ciência

13. Linha 17 - up = [2:N 1]: Cria um vetor com elementos [2,3, . . . ,N ,1],que e utilizado para acessar as colunas a direita e as linhas abaixo dascelulas;

14. Linha 18 - down = [N 1:N-1]: Cria um vetor com elementos [N,1,2, . . . ,N − 1],que e utilizado para acessar as colunas a esquerda e as linhas acima dascelulas;

15. Linha 20 - for contador = 1:Niteracoes}: Marca o inıcio do lacode repeticao, onde a variavel contador e utilizada para controlar o nu-mero de vezes que o laco sera executado. A variavel contador possuiinicialmente o valor 1, e a cada execucao do bloco ela e incrementada,ate que atinja o valor definido pela variavel Niteracoes, definida pre-viamente.

16. Linha 21 - neighbors = GRID(up,:)+GRID(down,:)...: Linha de co-mando responsavel por determinar o numero de vizinhos de cada umadas celulas ma matriz GRID. Para isso sao utilizados os dois vetoresauxiliares up e down;

17. Linha 25 - GRID = bool2s((neighbors == 3)|((GRID==1)&(neighbors==2))):Conforme comentado anteriormente, essa linha de comando e respon-savel por averiguar quais serao as celulas que estarao vivas na proximaiteracao. O comando bool2s simplesmente converte a matriz de va-lores booleanos (“V” ou “F”) para uma matriz composta por 0’s e 1’s,como inicialmente era previsto. Note que o resultado da operacao earmazenado novamente na mesma variavel GRID;

18. Linha 28 - h.data = double(GRID): Linha de comando que altera oconteudo dos dados sendo apresentados na figura. Dessa forma, a novaconfiguracao da matriz GRID e atualizada e as mudancas corresponden-tes sao atualizadas no grafico;

19. Linha 29 - sleep(20): Comando de espera, que indica ao Scilab®

para aguardar 20 milisegundos antes de prosseguir;

20. Linha 30 - end: Indica o final do laco de repeticao. Todo o bloco entrefor ... e end e executado um certo numero de vezes, controlado, nessecaso, pela variavel contador.

Atividade 1

Insira o codigo referente ao Jogo da Vida no editor do Scilab® e veja o

233

Page 246: Bases Computacionais da Ciência

que ocorre na simulacao. Veja o que ocorre quando voce altera o valor dasvaraveis N e Niteracoes no script.

Substitua a linha de comando GRID = (round(rand(N,N))); pela se-guinte instrucao

GRID(5,4:6)=1;

e veja o que ocorre na simulacao. Note que essa linha de comando altera aconfiguracao inicial da populacao.

Atividade 2

Tendo como base a modificacao da Atividade 1, altere o codigo do Jogoda Vida para observar os padroes descritos na Secao 10.3.1.1.2.

10.3.2 O Domınio de Resgate no RoboMind

Em 1999 foi proposto um novo domınio para o estudo de agentes autonomosconhecido como RoboCup Rescue (RESCUE, 2011), que tem como intencaopromover apoio de decisoes emergenciais pela integracao das informacoes dedesastres, previsoes, planejamento e interface humana, utilizando robos. Edividido em duas categorias, a Rescue Simulation League e a Rescue RobotLeague.

A Rescue Simulation League tem como objetivo o resgate de pessoas aposum desastre ambiental em larga escala, como um terremoto ou uma inunda-cao. Alem disso, o objetivo e localizar e resgatar vıtimas em um ambientepos catastrofe, mobilizar as equipes de resgate atraves da comunicacao entrediversos agentes, para minimizar os danos causados pela catastrofe e limparescombros e apagar incendios, atraves de uma simulacao.

A Rescue Robot League tem como objetivo gerar um mapa do ambienteonde o robo sera executado, localizar vıtimas, identificando suas condicoes desaude, evitar causar danos ao ambiente e as vıtimas e trabalhar com sistemasmultiagentes, atraves de uma simulacao.

10.3.2.1 Objetivo do Ambiente de Resgate

Em um ambiente de resgate ilustrado na Figura 10.15, um robo que repre-senta o Bombeiro devera encontrar a vıtima, mas antes sera necessario apagartodo o fogo que encontrar pelo caminho e desviar dos obstaculos.

234

Page 247: Bases Computacionais da Ciência

Figura 10.15: Ambiente de Resgate no RoboMind.

Os robos de resgates sao projetados com o objetivo de ajudar na buscae salvamento de pessoas em atentados como o que ocorreu no World TraceCenter, em Nova Iorque, alem de ser utilizado em desastres naturais comoterremotos e tsunamis que atingiram o Japao em 2011.

10.3.2.2 Modelagem de um Ambiente de Resgate

Para a criacao do cenario de um resgate da Figura 10.15 no RoboMind seranecessario criar um mapa. Para que isso seja possıvel voce pode abrir o blocode notas ou qualquer editor e salvar o arquivo com extensao “.map” com oscomandos definidos na Figura 10.16. O mapa criado pode ser aberto no menuArquivo->Abrir Mapa no RoboMind.

Para implementar uma simulacao utilizando o RoboMind e necessariomodelar o sistema definindo as funcionalidades de cada “objeto” disponıvelpara definir o cenario. O Obstaculo 1 na Figura 10.15 e representado pelaletra (Q) na Figura 10.16, o Obstaculo 2 pelas letras (B, C, D, E, F, G, H, I, J,K, L, M), o Obstaculo 3 e a letra (O), a Vıtima e a Baliza sendo representadapelo (*) e a posicao inicial do Bombeiro e indicado pelo (@). Alem disso,o Fogo em chamas e representado pela linha Preta e o Fogo apagado peloponto Branco. Por exemplo, se o Bombeiro encontrar uma linha preta o ponto

235

Page 248: Bases Computacionais da Ciência

Figura 10.16: Mapa Utilizado para a Criacao do Cenario no RoboMind.

branco deve ser inserido em cima da linha representando que as chamas foramcontroladas. A Baliza e o objeto que o robo pode “capturar”. O Bombeiroso consegue salvar a Vıtima se ela estiver na celula imediatamente a frente.Da mesma forma, a Vıtima so sera solta em algum lugar seguro na celulaimediatamente a frente, caso nao tenha nenhum obstaculo nessa celula.

O Bombeiro: anda aleatoriamente em busca de foco de incendio e da Vıtima.Quando percebe um Fogo em qualquer ponto do ambiente, deve ir ateele e apagar. Alem disso, deve desviar dos Obstaculos e resgatar aVıtima.

A Vıtima: tem um comportamento estatico e deve ser resgatado pelo Bom-beiro, ou seja, sera necessario retira-la do local onde esta e leva-la

236

Page 249: Bases Computacionais da Ciência

Figura 10.17: Fluxograma do Cenario de Resgate.

237

Page 250: Bases Computacionais da Ciência

para um lugar seguro. No codigo que sera apresentado o Bombeirotem o comportamento de chegar ate a vıtima. Entretanto no exercıcioproposto o objetivo sera carregar a vıtima ate uma posicao que serapre-definida.

O Fogo: e representado pelas linhas pretas e deve ser controlado pelo Bom-beiro;

Os Obstaculos: representam as construcoes que foram ou nao destruıdas poralgum acidente natural. Em cada destroco pode estar escondendo umaVıtima.

O comportamento do robo (Bombeiro) que implementa o resgate podeser observado no codigo abaixo. Esse arquivo deve ser salvo no RoboMindcom extensao “.irobo”. O fluxograma do algoritmo implementado por servisualizado na Figura 10.17.�

1 v i r a r D i r e i t a ( )23 r e p e t i r ( )4 {5 se ( nao temObstaculoFrente ( ) e nao pretoFrente ( ) e nao

p r e t o D i r e i t a ( ) e nao pretoEsquerda ( ) )6 {7 se ( nao temObjetoEsquerda ( ) )8 {9 andarFrente (1 )

10 }11 senao12 {13 v irarEsquerda ( )14 pegar ( )15 fim16 }17 }18 senao se ( temObstaculoFrente ( ) e nao pretoEsquerda ( ) e nao

p r e t o D i r e i t a ( ) )19 {20 v i r a r D i r e i t a ( )21 andarFrente (1 )22 }23 senao24 {25 se ( pretoFrente ( ) )26 {27 se ( p r e t o D i r e i t a ( ) )28 {

238

Page 251: Bases Computacionais da Ciência

29 v i r a r D i r e i t a ( )3031 repet i rEnquanto ( pretoFrente ( ) )32 {33 andarFrente (1 )34 pintarBranco ( )35 pararPintar ( )36 }37 }38 senao39 {40 andarFrente (1 )41 pintarBranco ( )42 pararPintar ( )43 }44 }45 senao se ( pretoEsquerda ( ) )46 {47 v irarEsquerda ( )48 }49 senao se ( p r e t o D i r e i t a ( ) )50 {51 v i r a r D i r e i t a ( )52 }53 }54 }� �

Na Linha 3 as instrucoes serao repetidas continuamente ate o Bombeiroencontrar a Vıtima. Essas instrucoes podem ser representadas pelos losangosde numeros 1, 3, 4, 7 e 8 da Figura 10.17.

Se na frente do Bombeiro nao tiver obstaculos e nem fogo em qualquerdirecao, o movimento sera andar para a frente ou o Bombeiro devera girar 90graus para a esquerda e salvar a vıtima quando a mesma estiver na posicaoa sua esquerda. Apos o resgate o programa e finalizado na Linha 15. Essecomportamento foi implementado entre as Linhas 3-15. Essas instrucoessao representadas pelo losango 2 na Figura 10.17. No Capıtulo 6 pode-seencontrar uma explicacao mais detalhada sobre a estrutura sequencial.

Nas Linhas 18-21 o Bombeiro deve virar para a direita e andar para frentese tiver um obstaculo na sua frente e se nao tiver fogo no seu lado esquerdoe direito, conforme o losango 3 na Figura 10.17.

Nas Linhas 25-37, caso o Bombeiro encontre um Fogo na sua frente e naotem nenhum Fogo do lado direito, significa que sera necessario o movimentopara frente com a acao de apaga-lo (losango 5). Caso contrario, o Bombeirodevera se posicionar na frente do Fogo e repetir o seguinte comportamentode andar para frente e apaga-lo (Linhas 31-35 e losango 6).

239

Page 252: Bases Computacionais da Ciência

Se tiver Fogo do lado esquerdo ou direito do Bombeiro, o mesmo devegirar 90 graus para a esquerda (Linha 47 e losango 7) e direita (Linha 51 elosango 8), respectivamente.

Atividade 1

Com base no comportamento do robo implementado no codigo mostradonesta secao, voce deve entende-lo para:

(a) Mudar o comportamento do Bombeiro para que a Vıtima seja resgatadapara a posicao no canto superior esquerdo conforme ilustrado na Figura 10.18.

(b) Definir novos focos de incendio e analisar a necessidade de implementarnovos comportamentos para o Bombeiro. Lembrando que antes do Bombeirocapturar a Vıtima e necessario apagar todo o Fogo.

(c) Definir mais de uma Vıtima em outras posicoes e verificar o compor-tamento do Bombeiro. Lembrando que o Bombeiro so podera resgatar umaVıtima por vez.

(d) Elabore o fluxograma para o novo algoritmo gerado.

10.4 Conjunto de Praticas

Considerando a caracterıstica interdisciplinar do projeto pedagogico da Uni-versidade Federal do ABC, nesta secao os exercıcios propostos visam integraros conteudos da disciplina Bases Computacionais da Ciencia com as demaisdisciplinas iniciais dos bacharelados interdisciplinares. Sao elas:

1. Base Experimental das Ciencias Naturais;

2. Bases Epistemologicas da Ciencia Moderna;

3. Bases Matematicas;

4. Estrutura da Materia;

5. Origem da Vida e Diversidade dos Seres Vivos.

A interdisciplinariedade entre estas disciplinas sera de fato observada eentendida em situacoes praticas, onde o aluno perceba que todos os conteudos

240

Page 253: Bases Computacionais da Ciência

Figura 10.18: Nova Posicao da Vıtima Apos ser Resgatada.

estao conectados. Para auxiliar nesta percepcao, nas proximas subsecoessao propostos exercıcios que apresentam a aplicacao dos conteudos de BasesComputacionais da Ciencia em cada uma das disciplinas iniciais.

10.4.1 Bases Computacionais da Ciencia

1. Proponha outras inicializacoes para o Jogo da Vida, e comente o resul-tado de cada simulacao executada;

2. Altere o programa para gerar um outro Jogo da Vida com as seguintesregras:

� Uma celula morta torna-se viva toda vez que ela possuir exata-mente dois vizinhos vivos;

� Toda celula viva torna-se morta na iteracao seguinte.

3. Veja o comportamento gerado para esse novo conjunto de regras pro-posto no item anterior. Dica: inicialize a populacao com apenas algunselementos vivos no meio da matriz. Utilize uma matriz grande.

241

Page 254: Bases Computacionais da Ciência

10.4.2 Base Experimental das Ciencias Naturais

10.4.2.1 Calculo de Energias em um Sistema Atomico Atraves deModelagem Molecular

A modelagem molecular pode ser definida como um ramo da ciencia queocupa-se da compreensao do comportamento de moleculas, usualmente emescala atomica, atraves de sistemas computacionais. De acordo com (CAR-

VALHO et al., 2003), a modelagem molecular e definida pela IUPAC (Inter-national Union of Pure and Applied Chemistry) como a investigacao dasestruturas e das propriedades moleculares pelo uso da quımica computaci-onal e tecnicas de visualizacao grafica, visando fornecer uma representacaotridimensional, sob um dado conjunto de circunstancias.

Na realidade, a modelagem molecular tem aplicacoes que extrapolam oslimites da quımica, extendendo-se pelas ciencias fısicas, biologicas, cienciasde materiais e ciencias farmaceuticas, dentre outras(LEACH, 2001).

Neste exemplo, demonstraremos como podemos empregar um modelosimples, baseado nos princıpios fısicos do potencial harmonico para mode-lar o comportamento atomico de uma molecula de agua.

10.4.2.1.1 A Agua

Todos conhecemos bem a composicao da agua: H2O. Tambem sabemos que,em uma molecula de agua, os dois atomos de hidrogenio estao covalente-mente ligados ao atomo de oxigenio com uma geometria que nao e linear(180 graus), mas proxima de tetraedrica, com um angulo de aproximada-mente 104 graus formado entre os tres atomos. A razao para esta aparentedistorcao e a presenca dos dois pares de eletrons do oxigenio, alem dos doispares compartilhados com os hidrogenios, que tendem a se afastar o ma-ximo possıvel, evitando uma repulsao eletronica. Os pares de eletrons livrescausam uma repulsa maior sobre os pares de eletrons compartilhados, o queresulta em uma geometria que nao e tambem perfeitamente tetraedrica (com109,5 graus), mas forma uma especie de tetraedro distorcido, com anguloobservado de 104,5 graus.

Sabemos que existe um comprimento otimo para a distancia das ligacoescovalentes. Se uma ligacao for demasiadamente curta, as nuvens eletronicasdos dois atomos envolvidos na ligacao comecarao a se sobrepor e havera umaforca repulsiva no sentido do afastamento dos atomos. Se, por outro lado aligacao for longa demais, o sistema vai experimentar um aumento da energiaque, quando vencido (i.e., quando esta energia e fornecida ao sistema) leva aquebra da ligacao covalente.

242

Page 255: Bases Computacionais da Ciência

Figura 10.19: Estrutura atomica de uma molecula de agua. Os atomos estaomostrados como esferas e coloridos por tipo atomico, enquanto as ligacoescovalentes estao mostradas como varetas.

O comportamento do angulo dos atomos que compoem uma moleculade agua e a distancia entre os atomos em uma ligacao covalente podem serresumidos no seguinte princıpio: ha um ponto otimo para o parametro emavaliacao (comprimento de ligacao ou angulo). Quando este parametro ereduzido demais ou aumentado demais, a energia do sistema deve ser elevada.No ponto otimo, a energia deve ser mınima (ponto mais favoravel para osistema).

Um modelo fısico que representa bem este comportamento e o modelo dooscilador harmonico simples, ou o sistema massa-mola. A energia em umsistema harmonico simples e dada por:

Eharm =12k(x − x0)2 (10.4)

onde k e a constante elastica da mola e tem valor positivo (veremos aseguir como isto afeta o nosso modelo), x e o parametro em avaliacao (com-primento da ligacao ou angulo de ligacao) e x0 e o valor otimo para esteparametro. Desta forma, podemos deduzir que uma ligacao cavalente comcomprimento igual ao comprimento otimo, tera energia igual a 0 kcal/mol.O mesmo vale para angulos. Qualquer distorcao do valor de x em relacao aovalor otimo, seja para mais ou para menos, levara a um aumento de energia.Observe que o aumento e quadratico. Isto implica que, dado um valor otimode x0 = 1,0 A, por exemplo, os valores de x = 0,8A e x = 1,2A representamo mesmo peso energetico de distorcao em relacao ao valor otimo.

A Figura 10.20 mostra a energia potencial calculada de acordo com aEquacao 10.4 para o estiramento de uma ligacao covalente entre um oxigenioe um hidrogenio em uma molecula de agua. As tres curvas mostram diferen-tes valores da constante elastica (553kcal.mol−1.A−2, 276,5kcal.mol−1.A−2 e1106kcal.mol−1.A−2) para o mesmo sistema. Como pode ser observado nafigura, a constante elastica determina quanta energia e gasta para o mesmo

243

Page 256: Bases Computacionais da Ciência

deslocamento. Ou, em termos de um sistema massa-mola, quao resistentea mola e a deformacao. Esta constante permite que, alterando o valor dek, possamos modelar uma dupla ligacao, por exemplo, que deve ser maisresistente ao estiramento do que uma ligacao simples.

Figura 10.20: Energia potencial relativa ao estiramento de uma ligacao co-valente O-H. Para o grafico, 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.

10.4.2.1.2 Atividade

Utilizando o modelo do potencial harmonico colocado na Equacao 10.5 abaixo,vamos calcular a energia potencial da molecula de agua mostrada na Figura10.21 e cujas coordenadas sao dadas abaixo em Angstrons (A).

Epotencial = Eestiramento +Eangulo (10.5)

EOHestiramento =12553kcal.mol−1A−2(d − 0,9572A)2 (10.6)

EHOHangulo =12100kcal.mol−1.°−2(θ − 104,52°)2 (10.7)

244

Page 257: Bases Computacionais da Ciência

Figura 10.21: Molecula de agua. Qual deve ser a energia potencial destamolecula?

ATOM X Y Z

H1 14.756 12.858 12.885

O 13.756 12.858 12.885

H2 13.430 13.804 12.885

Para esta finalidade, dada uma molecula de agua com tres atomos (H1,O e H2) sera necessario avaliar i) a distancia d1 entre H1 e O e a distancia d2entre O e H2 e ii) o angulo θ formando entre os tres atomos. As distanciasentre dois atomos podem ser calculadas como:

dAB =√(xA − xB)2 + (yA − yB)2 + (zA − zB)2 (10.8)

Ja o angulo entre tres atomos pode ser calculado como:

θabc = acos((d2ab + d

2bc − d

2ac)

2dabdbc) (10.9)

onde acos e a funcao arco cosseno.

10.4.2.1.3 Solucao em Scilab®

Utilizaremos o Scilab® para executar a nossa tarefa. O Scilab® nos per-mitira calcular todos os parametros que precisamos. Nesta atividade usa-

remos kOHestiramento = 553kcal.mol−1.A−2

, kHOHangulo = 100kcal.mol−1.°−2, dOH0 =

0.9572A e θHOH0 = 104.52°. Estes parametros foram retirados do campo deforca AMBER (PONDER; CASE, 2003) de mecanica molecular. Este campode e empregado em pesquisas cientıficas nas areas de quımica, fısica e bio-logia estrutural visando compreender, a partir de modelos simples como o

245

Page 258: Bases Computacionais da Ciência

que vimos neste capıtulo, o comportamento de macromoleculas de interessebiologico. Segue na Listagem 10.4.2.1.3 do Scilab®.

�1 H1 = [ 1 4 . 7 5 6 12 .858 1 2 . 8 8 5 ] ;2 O = [ 1 3 . 7 5 6 12 .858 1 2 . 8 8 5 ] ;3 H2 = [ 1 3 . 4 3 0 13 .804 1 2 . 8 8 5 ] ;45 dH1 O=sqr t ( ( ( H1(1 )−O(1) ) ˆ2) +((H1(2 )−O(2) ) ˆ2) +((H1(3 )−O(3) ) ˆ2) ) ;6 dH2 O=sqr t ( ( ( H2(1 )−O(1) ) ˆ2) +((H2(2 )−O(2) ) ˆ2) +((H2(3 )−O(3) ) ˆ2) ) ;7 dH1 H2=sqr t ( ( ( H1(1 )−H2(1) ) ˆ2) +((H1(2 )−H2(2) ) ˆ2) +((H1(3 )−H2(3) )

ˆ2) ) ;89 t e ta = acosd ( ( ( dH1 O) ˆ2+(dH2 O) ˆ2−(dH1 H2) ˆ2) /(2*dH1 O*dH2 O) ) ;

1011 E e s t i r = 0 .5*553* ( d1 −0.9572) ˆ2 ;12 E e s t i r = E e s t i r + 0 .5*553* ( d2 −0.9572) ˆ2 ;13 Eang = 0.5*100* ( teta −104.52) ˆ2 ;14 Epot = E e s t i r+Eang ;1516 p r i n t f ( ”\n\nEnergia Potenc i a l : %. 3 f kca l /mol\n” , Epot ) ;17 p r i n t f ( ”Eest iramento : %. 3 f kca l /mol\n” , E e s t i r ) ;18 p r i n t f ( ”Eangulo : %. 3 f kca l /mol\n” , Eang ) ;19 p r i n t f ( ”d1 = %. 4 f Ang\n” , dH1 O) ;20 p r i n t f ( ”d2 = %. 4 f Ang\n” , dH2 O) ;21 p r i n t f ( ”d3 = %. 4 f Ang\n” , dH1 H2) ;22 p r i n t f ( ”t e ta = %. 4 f graus \n\n\n” , t e ta ) ;2324 p r i n t f ( ”ATOM 1 O WAT 1 %6. 3 f %6. 3 f %6. 3 f \n” ,25 O(1) , O(2) , O(3) ) ;26 p r i n t f ( ”ATOM 2 1H WAT 1 %6. 3 f %6. 3 f %6. 3 f \n” ,27 H1(1) , H1(2 ) , H1(3 ) ) ;28 p r i n t f ( ”ATOM 3 2H WAT 1 %6. 3 f %6. 3 f %6. 3 f \n” ,29 H2(1) , H2(2 ) , H2(3 ) ) ;30 p r i n t f ( ”CONECT 1 2\n”) ;31 p r i n t f ( ”CONECT 1 3\n”) ;32 p r i n t f ( ”TER”) ;� �

Listing 10.2: Script para a avaliacao da energia potencial de uma moleculade agua.

Atividade 1

Utilizando o mesmo modelo, voce e capaz de avaliar energeticamente asmoleculas de agua com as coordenadas abaixo? Qual a molecula mais estavel?A que se deve esta maior estabilidade?

246

Page 259: Bases Computacionais da Ciência

ATOM X Y Z

O 7.098 12.940 18.789

H1 6.654 13.309 17.986

H2 6.522 13.237 19.512

O 8.616 19.554 14.957

H1 9.513 19.837 14.701

H2 8.767 18.690 15.375

O 7.216 19.176 4.195

H1 7.211 18.246 4.081

H2 7.958 19.438 3.666

Atividade 2

Utilizando a definicao de forca em um sistema harmonico, altere o scriptdado em 10.4.2.1.3 para que a forca aplicada pelo atomo de oxigenio sobrecada um dos atomos de hidrogenio seja calculada e mostrada. Para faciliar,defina tres componentes da forca, um em cada eixo cartesiano (Fx, Fy e Fz).

247

Page 260: Bases Computacionais da Ciência

Referencias Bibliograficas

AMAZON.COM. 2011. http://www.amazon.com. Ultima visita em16/04/2011.

AVERILL, M. L.; KELTON, W. D. Simulation Modelling and Analysis. 2.ed. [S.l.]: McGraw-Hill, 1991.

AXTELL, R. L. et al. Population growth and collapse in a multi-agentmodel of the kayenta anasazi in long house valley. In: Proceedings of theNational Academy of Sciences. [S.l.: s.n.], 2002. p. 7275–7279.

BERENDS, P.; ROMME, G. Simulation as a research tool in managementstudies. European Management Journal, v. 17, p. 576–583, 1999.

BERLANGA, R. Simulacion Informatica. 2003. http://nuvol.uji.es/~berlanga/Docencia/E68/. Ultima visita em 27/03/2011.

CARVALHO, I. et al. Introducao a modelagem molecular de farmacos nocurso experimental de quımica farmaceutica. Quim. Nova, v. 26, p. 428–438,2003.

CHAPRA s.; CANALE, R. Metodos Numericos para Engenharia. 5th. ed.[S.l.]: McGraw Hill, 2008.

CRASH-TEST. Navy News Service. 2011. http://www.navy.mil/view_single.asp?id=25589. Ultima visita em 07/07/2011.

ELMASRI, R.; NAVATHE, S. Sistemas de Banco de Dados. Sao Paulo,Brasil: Pearson-Addison Wesley, 2006.

FERBER, J. Reactive distributed artificial intelligence: Principles andapplications. In: OHARE, G. M. P.; JENNINGS, N. R. (Ed.). Foundationsof Distributed Artificial Intelligence. [S.l.]: John Wiley & Sons, 1996. p.287–314.

FORBELLONE ANDRe LUIZ VILLAR; EBERSPACHER, H. F. Logica deprogramacao: a construcao de algoritmos e estruturas de dados. Sao Paulo:Prentice Hall, 2005.

FOROUZAN, B.; MOSHARRAF, F. Fundamentos da Ciencia daComputacao. [S.l.]: Editora Cengage, 2011.

248

Page 261: Bases Computacionais da Ciência

GILBERT, N.; TROITZSCH, K. G. Simulation for the Social Scientist.[S.l.]: Open University Press, 1999.

GILLENSON, M. et al. Introducao a Gerencia de Banco de Dados. Rio deJaneiro, Brasil: LTC, 2009.

HAMBRUSCH, S. et al. A multidisciplinary approach towards computationalthinking for science majors. In: Proceedings of SIGCSE’09. Chattanooga,Tennessee, USA: [s.n.], 2009.

HANSMANN, U. et al. Pervasive computing Handbook. [S.l.]: Springer,2003. ISBN 3540002189.

HARRELL, C.; TUMAY, K. Simulation Made Easy: A Manager´s Guide.1. ed. [S.l.]: Norcross, 1995.

HAYKIN, S. S. Communication systems. 4th. ed. [S.l.]: Wiley, 2000.

HENDERSON, P. B. et al. Computational thinking. In: Proceedings ofSIGCSE’07. Covington, Kentucky, USA: [s.n.], 2007.

INSTITUTE, S. F. Santa Fe Institute Home Page. 2011. http:

//www.santafe.edu/. Ultima visita em 23/06/2011.

JANSSEN, M. A. Understanding artificial anasazi. Journal of ArtificialSocieties and Social Simulation, v. 12, n. 4, p. 13, 2009. ISSN 1460-7425.Disponıvel em: <http://jasss.soc.surrey.ac.uk/12/4/13.html>.

JOHNSON, G. All Science is Computer Science. 06/05/2011. New YorkTimes on the Web.

LARSON, R.; FARBER, B. Estatıstica Aplicada. 2. ed. [S.l.]: PearsonPrentice Hall, 2007.

LEACH, A. Molecular Modelling: Principles and Applications. UnitedStates: Prentice Hall, 2001.

METROPOLIS, N. et al. Equation of State Calculations by Fast ComputingMachines. J. Chem. Phys., 21, n. 6, p. 1087–1092, 1953. ISSN 0021-9606.

METROPOLIS, N.; ULAM, S. The Monte Carlo Method. J. Am. Stat.Assoc., 44, n. 247, p. 335–341, 1949. ISSN 0162-1459.

249

Page 262: Bases Computacionais da Ciência

OKADA, T.; BOTELHO, W. T.; SHIMIZU, T. Motion analysis withexperimental verification of the hybrid robot peopler-ii for reversible switchbetween walk and roll on demand. The International Journal of RoboticsResearch, 2009.

PONDER, J.; CASE, D. Force fields for protein simulations. Adv. Prot.Chem., v. 66, p. 27–85, 2003.

PUGA SANDRA; RISSETTI, G. Logica de programacao e estruturas dedados, com aplicacao em Java. Sao Paulo: Pearson Prentice, 2009.

RACZYNSKI, S. Simulation of the dynamic interactions between terrorand anti-terror organizational structures. Journal of Artificial Societiesand Social Simulation, v. 7, n. 2, 2004. ISSN 1460-7425. Disponıvel em:<http://jasss.soc.surrey.ac.uk/7/2/8.html>.

RAUCH, J. Seeing around corners. Atlantic, v. 9, p. 05, 2007.

RESCUE, R. RoboCup Rescue Home Page. 2011. http://www.

robocuprescue.org/. Ultima visita em 23/06/2011.

ROBOMIND. 2011. RoboMind.net - Documentation Overview –http://www.robomind.net/en/docOverview.htm.

RUAS, T. L. et al. Multi-agent systems - modeling, control, programming,simulations and applications. In: . [S.l.]: InTech, 2011. v. 3, cap.Modeling Artificial Life Through Multi-Agent Based Simulation, p. 41–66.

RUSSELL, S.; NORVIG, P. InteligIncia Artificial. Sao Paulo - SP: EditoraCampus, 2004.

SARGENT, R. G. Validation and verification of simulation models. In:Proc. of the 1999 Winter Simulation Conference. [S.l.: s.n.], 1999. p. 39–48.

SCILAB. 2011. Scilab Tutorials –http://www.scilab.org/support/documentation/tutorials.

SHANNON, R. E. Systems Simulation: The Art and Science. [S.l.]:Prentice-Hall, Inc., 1975.

SILBERSCHATZ, A.; KORTH, H.; SUDARSHAN, S. Sistema de Banco deDados. Rio de Janeiro: Campus, 2006.

STEELE, J.; ILIINSKY, N. (Ed.). Beautiful Visualization. 1. ed. [S.l.]:O’Reilly, 2010.

250

Page 263: Bases Computacionais da Ciência

STEVENSON, W. J. Estatıstica Aplicada a administracao. [S.l.]: Habra,2007.

TUFTE, E. R. The Visual Display of Quantitative Information. [S.l.]:Graphics Press, 1983.

VINCI da. Intuitive Surgical. 2011. http://www.intuitivesurgical.com/.Ultima visita em 07/07/2011.

WING, J. Computational thinking. Communications of the ACM, v. 49,n. 3, 2006.

YPMA, T. Historical development of the Newton-Raphson method. SIAMReview, 37, n. 4, p. 531–551, 1995. ISSN 0036-1445.

251