·

Cursos Gerais ·

Lógica Matemática

Send your question to AI and receive an answer instantly

Ask Question

Preview text

MATEMÁTICA COMPUTACIONAL AULA 2 Prof Luis Gonzaga de Paulo 2 CONVERSA INICIAL Como já é de nosso conhecimento a matemática é essencial à computação Podemos até afirmar que computação e matemática são uma coisa só E é por isso que nessa aula abordaremos questões que certamente despertam seu interesse tais como a possibilidade de o computador cometer erros ou apresentar cálculos com resultados incorretos Ou a possibilidade de validar os resultados obtidos pelos programas de computador e também a capacidade de o computador manter em ordem e localizar as informações necessárias às nossas atividades Vamos lá Para responder a essas questões trataremos de temas que são elementares à aplicação da matemática na computação como os erros a teoria dos conjuntos os vetores e as matrizes suas características principais e as operações que podemos realizar com eles Também veremos elementos e estruturas matemáticas de grande importância para a computação no que se refere ao tratamento de dados e ao estabelecimento de processos e fluxo de atividades para a solução de problemas Saiba mais Para ampliar seus conhecimentos leia MACEDO L R D CASTANHEIRA N P ROCHA A Tópicos de matemática aplicada Curitiba InterSaberes 2013 cap 2 TANEMBAUM A S Organização estruturada de computadores São Paulo Pearson Prentice Hal 2014 cap 3 TEMA 1 ESTRUTURAS DE DADOS Nesse tema vamos apresentar elementos matemáticos que têm vasto uso na computação em especial na construção de estruturas de dados e em armazenamento busca e recuperação de informações 11 Vetores Os elementos que denominamos vetores são listas de valores conjuntos ou arranjos cujos elementos apresentam caraterísticas em comum Os vetores têm seus elementos posicionados em sequência e esses elementos são acessados usandose uma chave o índice do vetor Os vetores integram os elementos de dados que são fundamentais para a resolução de problemas 3 por meio da organização dos dados em programas de computador Vetores também representam segmentos de reta na geometria uma sequência de pontos que forma a reta sendo dessa forma um elemento gráfico Em ambientes de computação os vetores fazem parte das estruturas de dados homogêneas por conter somente dados de um único tipo Uma sequência de caracteres cadeia ou string é exemplo típico de um vetor que na linguagem de programação C por exemplo é um tipo de dado uma lista de caracteres Nesses ambientes os vetores são classificados como estruturas de dados lineares e estáticas São compostos por um determinado número de elementos de um mesmo tipo ou com as mesmas características sendo similares a outras estruturas de dados como listas filas pilhas ou árvores Nas linguagens de programação em geral os vetores são tratados como variáveis múltiplas de uma única dimensão as quais possibilitam acesso aos seus elementos de modo muito fácil e rápido Entretanto a inclusão ou exclusão de elementos intermediários é uma operação mais complexa devendo ser bastante criteriosa para reduzir as operações de processamento e evitar a perda de dados A Figura 1 a seguir apresenta dois vetores um denominado Nome com conteúdo alfanumérico e outro denominado Idade contendo apenas valores numéricos Figura 1 Vetores Em vetores como os da Figura 1 os elementos podem ser tratados individualmente sendo referenciados pelo índice ou seja pela posição que ocupam no vetor Nome 1 João Idade 1 35 Nome 2 Maria Idade 2 46 Nome 5 Antônio Idade 5 81 Vetores são bastante utilizados em programas de computadores nos quais operações de ordenação e busca de informação são recorrentes 4 12 Matrizes Em computação as matrizes são um tipo de arranjo de vetores com duas ou mais dimensões cujos dados contêm características comuns Esses dados são organizados sequencialmente e tal como os vetores acessados por meio da chave ou índice da matriz As matrizes também fazem parte das estruturas de dados essenciais para o tratamento de problemas matemáticos em ambientes computacionais especialmente os de computação gráfica As matrizes também são um tipo de estrutura de dados homogêneas ou como já dissemos um tipo de arranjo de vetores em que cada vetor corresponde à uma dimensão da matriz A Figura 2 mostra uma matriz bidimensional enquanto a Figura 3 apresenta uma matriz de três dimensões Figura 2 Uma matriz de duas dimensões Os elementos dessa matriz podem ser referenciados da seguinte maneira Pessoa 11 João Pessoa 12 35 Pessoa 21 Maria Pessoa 22 46 Pessoa 23 Professora Pessoa 33 Arquiteto Pessoa 51 Antônio Pessoa 52 81 Figura 3 Matriz de três dimensões 5 Tal qual os vetores as matrizes compõem as chamadas estruturas de dados lineares e estáticas podendo conter um número finito de elementos de determinado tipo sejam letras números ou sinais Na maioria das linguagens de programação as matrizes são consideradas variáveis de múltiplas dimensões e o acesso aos elementos é feito por meio de índices as chaves de acesso havendo um índice para cada dimensão da matriz As aplicações de planilhas de dados como o Microsoft Excel por exemplo são a representação mais típica das matrizes Também os elementos de imagens tais como os desenhos as fotografias e os filmes são compostos por matrizes multidimensionais A tela do computador que você está usando neste momento é uma matriz visível na qual cada minúsculo ponto ou pixel representa um elemento com várias dimensões tais como cor posição e intensidade luminosa brilhocontraste 13 Conjuntos Os conjuntos são agrupamentos ou coleções de objetos denominados elementos ou membros do conjunto cujas características são comuns entre si Os conjuntos são geralmente representados por uma letra maiúscula e os seus elementos são expressos entre chaves tais como As vogais V A E I O U a e i o u Os estados da região sudeste S SP RJ MG ES Os dígitos do sistema binário de numeração D 0 1 Podemos também representar os conjuntos em sua forma gráfica com o diagrama de Venn como mostrado na Figura 4 O diagrama de Venn contempla o conjunto dos números e seus subconjuntos Reais R Irracionais I Racionais Q Inteiros Z Naturais N No caderno de exercícios da disciplina são apresentadas as diversas operações com os conjuntos além de problemas e soluções com o uso desses elementos 6 Figura 4 Diagrama de Venn TEMA 2 ARITMÉTICA DE PONTO FLUTUANTE Como já vimos os computadores são máquinas que trabalham com números Nesse aspecto os computadores superam a capacidade humana tanto na quantidade quanto na velocidade Isto porque podem manipular valores em grande escala e o fazem com altíssimas velocidades Entretanto há um fator limitador o tamanho isto é a quantidade de dígitos necessária para a representação desses valores A maioria dos sistemas computacionais linguagens de programação e softwares delimitam a quantidade de dígitos que podem ser empregados para a representação desses valores Tal como o número de dígitos de um display de calculadora os sistemas computacionais empregam formatos definidos com um número específico de dígitos para a representação dos números reais Isso se deve ao fato de que a quantidade de bits utilizada pelo hardware é fixa e deve haver uma compatibilização entre a quantidade e a representação numérica de modo a evitar problemas com os cálculos ou o aumento expressivo no tempo necessário para a realização dos cálculos Para essa compatibilização utilizamos o Sistema de Ponto Flutuante ou de virgula flutuante Leia o capítulo 10 Stallings 2017 e use o caderno de exercícios para auxiliar seu aprendizado 7 21 Sistema de ponto flutuante Os computadores representam os números reais com a Aritmética de Ponto Flutuante formulada por Fβ t p p representando o sistema F do sistema de numeração de base β com a quantidade t de dígitos na mantissa ou dígitos significativos e limites de expoente de p até p Os números desse sistema são então expressos no seguinte formato 0𝒅𝟏𝒅𝟐 𝒅𝒕β𝒆 No qual β é a base do sistema de numeração com o qual o computador opera geralmente 2 ou binária para a computação digital d é um dos dígitos da mantissa cuja quantidade máxima é definida por t e representa o expoente cujo intervalo é definido por p variando de p até p Por exemplo Dado o sistema de representação F10 3 5 5 que significa β 10 t 3 e e 55 temos então O menor número em valores absolutos m é 0001 x 105 ou seja 108 O maior número em valores absolutos M é 0999 x 105 ou seja 99900 Se usarmos esse sistema para representar um dado número como por exemplo N 22768 ou seja N 022768 x 103 será representado como 0227 x 103 caso a opção seja o truncamento ou corte ou 0228 x 103 caso a opção seja o arredondamento 22 Representação de Números Reais Um número real é representado como vimos em um determinado sistema de numeração com o formato específico desse sistema A norma técnica IEEE 754 define os padrões que regem essa representação o armazenamento e a realização de operações O intuito é manter a compatibilidade entre os diversos ambientes computacionais garantindo a portabilidade dos valores e evitando que diferentes formatos possam resultar em erros ou mesmo na impossibilidade da realização dos cálculos Isto significa que temos dois conjuntos distintos de valores denominados números de precisão 8 simples com um tamanho de 32 bits e precisão dupla com um tamanho de 64 bits Tabela 1 A precisão numérica definida pela norma IEEE 754 A representação dos números reais em precisão simples fica como mostrado na figura 5 o que significa que podemos representar números no intervalo de 118 x 1038 até 34 x 1038 aproximadamente usando para isso sete casas decimais Figura 5 Representação dos números de precisão simples 32 bits Já a representação dos números reais em precisão dupla fica como mostra a Figura 6 Isso significa que podemos representar números no intervalo de 223 x 10308 até 18 x 10308 aproximadamente com dezesseis casas decimais Figura 6 Representação dos números de precisão dupla 64 bits 9 23 Adição e subtração A adição e a subtração de números expressos em ponto flutuante repetem o processo para inteiros com expoente porém é preciso atenção como com qualquer operação cujos operadores utilizem expoentes O processo pode ser descrito em três etapas 1 Comparamos a magnitude dos expoentes dos operadores e nivelamos esses expoentes ajustando o do número de menor valor alinhamento 2 Realizamos a operação adição ou subtração 3 Ajustamos a mantissa e o expoente do número resultante normalização Para fixar esses passos queremos realizar a soma de dois números binários expressos em aritmética de ponto flutuante 11100 x 24 11000 x 22 Seguindo os passos descritos teremos 1 Alinhamos os expoentes e a mantissa ajustando os do menor valor 11000 x 22 00110 x 24 2 Realizamos a soma dos dois números 11100 x 24 00110 x 24 100010 x 24 3 Normalizamos o resultado ajustando a mantissa e o expoente 100010 x 24 01000 x 26 assumindo que temos quatro casas decimais 24 Multiplicação O processo de multiplicação de números expressos em ponto flutuante é o mesmo utilizado para a multiplicação de números com expoentes multiplicam se as bases e somamse os expoentes Nesse caso a base é a mantissa Então se temos dois valores binários a e b sendo a ma x 2x e b mb x 2y teremos a x b ma x mb x 2xy Vejamos a seguinte operação como exemplo 1000 x 22 x 1010 x 21 10 1 Somamos os expoentes 2 1 3 2 Multiplicamos as mantissas 1000 x 1010 1010000 3 Normalizamos o resultado ajustando a mantissa e o expoente 101000 x 23 1010 x 23 assumindo que temos três casas decimais 25 Divisão Assim como na multiplicação o processo de divisão de números expressos em ponto flutuante é o mesmo utilizado para os demais números com expoentes dividemse as bases e subtraemse os expoentes lembrado que a base é a mantissa Então se tivermos que dividir dois valores binários a e b sendo a ma x 2x e b mb x 2y teremos a b ma mb x 2xy Vejamos a seguinte operação como exemplo 10000 x 22 10100 x 21 1 Subtraímos os expoentes 2 1 2 1 1 2 Dividimos as mantissas 10000 10100 011001100110011 dízima 3 Normalizamos o resultado ajustando a mantissa e o expoente 0110011 x 21 assumindo seis casas decimais pois o resultado exigiria uma precisão muito maior TEMA 3 ERROS Como já vimos operações aritméticas de ponto flutuante ou as de conversão entre sistemas podem resultar em erros Estes erros são classificados em dois tipos básicos Temos erros de precisão decorrentes da limitação de dígitos usados para representar os valores o número de dígitos é geralmente prédefinido em decorrência da utilização do sistema binário e da constituição do hardware Este tipo de erro é comum em programação no caso das variáveis utilizadas nos programas de computador Por outro lado a aproximação o 11 arredondamento ou a ocorrência de dízimas periódicas geram os erros de exatidão devido à interrupção abrupta ou forçada da representação Existem grandes diferenças entre esses dois tipos de erros e as implicações de ambos geram consequências distintas em se tratando do ambiente computacional mesmo que haja semelhanças Por exemplo os erros de truncamento decorrentes do limite de precisão prejudicam diretamente os números irracionais tais como o número π Pi que expressamos normalmente com duas casas decimais como 314 O valor 31415926 de Pi é usado na maioria dos cálculos e é o padrão das calculadoras em geral pois isso é satisfatório para a maioria dos cálculos Já cálculos mais complexos que requerem maior precisão podem requerer a representação do Pi com até cinquenta e duas casas decimais Precisões maiores são obtidas com algoritmos computacionais específicos e já se tem realizado o cálculo de Pi com dezenas de trilhões de dígitos Esses erros podem ser expressos de duas maneiras na forma absoluta ou na forma relativa em percentual como veremos a seguir 31 Erro absoluto O erro absoluto é a diferença entre o valor real e a forma na qual foi expresso Calculamos o erro absoluto pela seguinte fórmula 𝑬𝑨𝒙 x 𝐱 Tomando o exemplo dado do valor de Pi sendo x o valor de Pì com oito casas decimais e 𝐱 o valor de Pi com dois decimais então temos 31415926 314 00015926 É claro que isso é apenas um exemplo pois o valor real de Pi é algo ainda desconhecido 12 32 Erro relativo O erro relativo é a razão entre o erro absoluto EA e o valor real x isto é 𝑬𝑹𝒙 𝑬𝑨𝒙 𝒙 Ou também 𝑬𝑹𝒙 𝐱 𝐱 𝐱 Com os valores do exemplo dado 𝑬𝑹𝒙 31415926 314 31415926 𝑬𝑹𝒙 5 x 104 ou 005 33 Exceções Nos ambientes computacionais as operações com ponto flutuante podem resultar em interrupção do processamento o que não é algo esperado Essas operações são decorrentes basicamente de cinco tipos de operações ou exceções 1 O overflow é um resultado apresentado quando é gerado um resultado infinito ou muito além da capacidade de representação do sistema 2 O underflow ocorre quando é obtido um resultado zero após um arredondamento de um valor diferente de zero ou seja um valor muito menor do que a capacidade de representação do sistema 3 A divisão por zero geralmente é o resultado de um cálculo com um underflow ou valor pouco significativo para o sistema Uma divisão por zero não possibilita qualquer solução matemática 4 Um resultado inexato apesar de ser algo que pode acontecer com relativa frequência pode resultar tanto de um cálculo que gere overflow quanto de arredondamentos Geralmente essas ocorrências não geram uma interrupção do processo porém podem caso façam parte de um processo recorrente ou recursivo se transformar em algo mais crítico e por isso pode ser tratado como uma exceção 5 Um número inválido é o resultado de uma operação que não pode ser considerado um número conhecido pela sigla em inglês NaN Not a 13 Number como por exemplo a raiz quadrada de um número negativo uma divisão de zero por zero ou de infinito por infinito 34 Cancelamento catastrófico Figura 7 Cancelamento catastrófico O cancelamento catastrófico é o nome que se dá ao efeito que ocorre quando um cálculo atinge o épsilon ε do sistema computacional O épsilon do sistema é o menor número que somado a 1 resulta em um número diferente de 1 ou seja não é arredondado O épsilon representa a precisão aritmética relativa da máquina e é consequência da precisão finita da aritmética de ponto flutuante TEMA 4 ELEMENTOS MATEMÁTICOS COMPUTACIONAIS Alguns elementos matemáticos são de grande importância para determinadas tarefas seja a resolução de problemas ou a implementação de funcionalidades específicas por meio de programas de computador Os grafos e as árvores são dois desses elementos dos quais trataremos neste tema 41 Grafos A estrutura gráfica utilizada em matemática para apresentar as relações entre os elementos ou objetos de um conjunto é denominada grafo Grafos são expressos na forma de equação como G VA na qual são representados seus dois elementos os vértices e as arestas Os elementos do conjunto ou componentes objetos são representados por círculos ou pontos e denominados vértices Já as relações ligações dependências ou caminhos entre os vértices são representados por segmentos de reta ou linhas as arestas como nos mostra a Figura 8 14 Figura 8 A representação de um Grafo Os grafos que têm suas arestas direcionadas são denominados grafos orientados ou ainda grafos dirigidos direcionados ou dígrafos Um vértice pode ser ligado a ele próprio formando um laço ou loop As arestas podem conter rótulos de identificação de peso ou valor numérico Um grafo G é um grafo dirigido G V A tal que V A B C D E F G e A AB BC BD BE CE DE EF GD como mostrado na Figura 9 Neste exemplo é possível identificar rotas ou fluxos entre os vértices traçando caminhos entre eles Figura 9 Um grafo dirigido Em um outro caso temos um grafo não dirigido G V A representando as fronteiras entre alguns países da América do Sul em que V Argentina Bolívia Brasil Chile Paraguai Uruguai e A Argentina Bolívia Argentina Brasil Argentina Chile Argentina Paraguai Argentina Uruguai Bolívia Brasil Bolívia Chile Bolívia Paraguai Brasil Paraguai Brasil Uruguai o que nos mostra a Figura 10 E nesse outro caso mostrado na Figura 11 um grafo dirigido rotulado G V N A tal que V a b c d e f e A a9b a4b b3b b6e d7a d7e e8d e5f Note que foram acrescentados valores que 15 identificam as arestas e que há um vértice c para o qual não há nenhuma ligação além de um loop no vértice b Figura 101 Um grafo não dirigido A representação de um grafo finito com n vértices pode ser feita por uma matriz de adjacência Essa matriz tem as dimensões definidas pelo número de vértices nporn e o valor na linha i e coluna j fornece o número de arestas que conectam o iésimo ao jésimo vértices Figura 11 Um Grafo dirigido rotulado A Figura 12 abaixo apresenta uma matriz de adjacência e o respectivo grafo Figura 12 Uma matriz de adjacência com o respectivo grafo 16 Importante Em um dígrafo contemplamos os graus de saída o número de arestas saindo de um vértice e de entrada o número de arestas entrando em um vértice O grau de um vértice de um dígrafo é igual à soma dos graus de saída e de entrada 42 Árvores Uma árvore é um grafo conexo aquele no qual sempre existe uma aresta entre dois quaisquer de seus vértices e que é também acíclico isto é não existem ciclos ou loops As árvores correspondem a uma das mais importantes estruturas de dados não lineares da computação Com relação à definição de árvores podemos afirmar que nem todo grafo é uma árvore mas que toda árvore é um grafo Além disso é um grafo bipartido isto é apresenta pelo menos dois níveis Toda árvore também é um grafo planar que é representado em um plano em apenas duas dimensões Por outro lado todo grafo conexo inclui ao menos uma árvore de extensão associada a si composta de todos os seus vértices e de algumas de suas arestas Para considerarmos um grafo G com n vértices como uma árvore devemos verificar se esse grafo É conexo e há um único caminho entre dois vértices quaisquer deixará de ser conexo se qualquer aresta for removida É acíclico tem n 1 arestas e ao se incluir uma nova aresta fechase um novo ciclo Se um determinado vértice da árvore é escolhido como especial a árvore é denominada enraizada e o vértice escolhido é denominado raiz Uma árvore livre é aquela que não tem raiz O número máximo de arestas ou ramos em um vértice ou elemento é chamado de ordem ou grau e a máxima sequência de vértices de grau um ou maior define a quantidade de níveis de uma árvore 17 43 Árvore binária A árvore binária é o tipo de árvore que a computação mais utiliza e é definida como um grafo acíclico conexo dirigido Cada nó tem grau ou ordem menos ou igual a Cada ramo da árvore é um vértice dirigido sem peso que chega ao próximo sucessor ou filho a partir do seu anterior antecessor ou pai formando uma hierarquia e fazendo com que só exista um único caminho entre dois nós distintos Figura 13 Uma árvore binária A implementação de uma árvore binária na programação de computadores geralmente usa uma função recursiva tanto para a construção da árvore quanto para o acesso e a modificação dos elementos A recursão é utilizada frequentemente nas operações com árvores binárias a construção e ordenação de listas para a busca binária é uma das principais aplicações das árvores binárias Figura 14 Árvore binária com acesso EDR 18 Os percursos possíveis em uma árvore binária são a leitura em préordem em ordem e em pósordem Em préOrdem ou RED raiz esquerda direita é acessado um nó raiz depois seu sucessor da esquerda e em seguida o da direita No acesso em ordem InOrder ou ERD esquerda raiz direita é acessada uma folhada esquerda sua raiz ou predecessor e depois o nó da direita Já no acesso em pósordem ou EDR esquerda direita raiz o acesso iniciase pelo nó da esquerda deslocase para o da direita e então segue à raiz deles A Figura 14 apresenta uma árvore binária com o acesso em préordem RED FBADCEGIH Nessa mesma árvore podemos ter o acesso em pós ordem EDR ACEDBHIGF ou em ordem ERD ABCDEFGHI TEMA 5 CONTAGEM O processo de contar coisas e eventos é muito importante A maioria dos problemas que tratamos na matemática na computação e em outras áreas implica contar objetos de conjuntos Entretanto esse processo nem sempre é fácil e por isso vamos abordar métodos de contagem para determinados conjuntos de modo a aprender a pensar os problemas do ponto de vista quantitativo Neste tema vamos ver como o pensamento quantitativo é útil para analisarmos problemas discretos especialmente na área da computação Uma pesquisa sobre análise combinatória ajudará você a entender e aprofundar seus conhecimentos sobre técnicas específicas de contagem e entender por que essas técnicas são importantes no estudo de processos discretos Existe um princípio denominado princípio fundamental da contagem ou também princípio multiplicativo que estabelece o seguinte quando um evento é composto por n etapas sucessivas e independentes de tal modo que as possibilidades da primeira etapa é x e as possibilidades da segunda etapa é y resulta no número total de possibilidades de o evento ocorrer dado pelo produto x y Gouveia 2019 Podemos então resumir esse princípio como sendo a multiplicação das possíveis opções pela quantidade de elementos possíveis Para auxiliar no processo de contagem podemos lançar mão de arranjos permutações e combinações 19 51 Arranjo Os arranjos são subconjuntos nos quais a ordem e a natureza fazem a diferença Considerando um conjunto de n elementos organizados em subconjuntos de p elementos sendo p n utilizamos a seguinte fórmula para o arranjo Anp 𝒏 𝒏𝒑 Para uma melhor compreensão considere uma associação de escritores com 40 membros cuja diretoria é composta por quatro deles que ocupam os cargos de presidente vicepresidente secretário e vicesecretário De quantas formas é possível organizar a composição dessa diretoria Para responder vejamos n 40 p 4 A404 40 404 4039383736 36 40x39x38x37 2193360 Portanto podemos ter 2193360 diferentes composições de diretoria nessa associação É importante ressaltar que a ordem faz diferença pois um membro poderá ocupar qualquer um dos cargos tomando parte em diferentes composições com os mesmos escritores 52 Permutação A permutação nada mais é do que um caso específico de arranjo no qual o número de elementos do conjunto n é igual ao número total de elementos Isso resulta em que o denominador na fórmula do arranjo seja igual a uma unidade 1 A consequência é que a permutação é representada pela seguinte fórmula Pnn Como exemplo de permutação imagine um veículo que comporta seis passageiros no qual viajarão seis pessoas Nesse caso as pessoas irão ocupar os lugares em determinada ordem e o número de pessoas é igual ao número de assentos Então usamos a permutação para calcular de quantas formas os passageiros poderão se acomodar no veículo P6 6 654321 720 20 Então existem 720 diferentes formas de acomodar esses passageiros no veículo 53 Combinação Diferentemente dos arranjos as combinações são subconjuntos para os quais a ordem dos elementos não importa porém a sua natureza sim Deste modo para obtermos uma combinação simples de n elementos combinados p a p sendo p n recorremos à seguinte fórmula Cnp 𝒏 𝒑𝒏𝒑 Usando o exemplo do arranjo consideremos que na mesma associação de escritores há um conselho composto de três membros todos com a mesma função Nesse caso a ordem não importa e por isso usaremos a combinação para calcular quantas formações desse conselho são possíveis n 40 p 3 C403 40 3403 40393837 337 403938 321 9880 Assim concluímos que há 9880 formações possíveis FINALIZANDO O conhecimento e o uso dos elementos e métodos matemáticos aqui apresentados é de fundamental importância para a computação Recomendamos que você pesquise e faça os exercícios desta aula que constam do Caderno de Exercício e nas atividades práticas da disciplina 21 REFERÊNCIAS GOUVEIA R Análise combinatória Toda Matéria 14 maio 2019 Disponível em httpswwwtodamateriacombranalisecombinatoria Acesso em 13 jun 2019 LEITE A E CASTANHEIRA N P Teoria dos números e teoria dos conjuntos Curitiba InterSaberes 2014 MACEDO L R D CASTANHEIRA N P ROCHA A Tópicos de matemática aplicada Curitiba InterSaberes 2013 SPERANDIO D et al Cálculo numérico São Paulo Pearson Education do Brasil 2014 STALLINGS W Arquitetura e organização de computadores 10 ed São Paulo Pearson Education do Brasil 2017 TANEMBAUM A S Organização estruturada de computadores São Paulo Pearson Prentice Hal 2014