Importância da Matemática na Ciência da Computação — Pt. 1
António Pedro
Programador Mobile e IT ethusiam
Brief Description: Este artigo Técnico foi extraído dos conteúdos apresentados por mim no DEV FEST Lunada 2020 by GDG Luanda.
Introdução
Muitas vezes lemos e ouvimos que os profissionais da área de computação devem estar em constante actualização para, cada vez mais, oferecerem ao mundo tais inovações. Essa afirmação é verdadeira, pois aos olhos da computação, é imprescindível que estes profissionais não se esqueçam de um dos pilares que dão sustentação à sua formação: a Matemática. Considerada então, mãe de todas as ciências.
Aposto que já se perguntou isso várias vezes: “Para que estudar álgebra linear?”, “Porque devemos aprender Análise Matemática (1, 2), se o que precisamos saber é simplesmente um ‘olá mundo’, estrutara e controlo de decisão, data types e etc?”. Essa pergunta é muito frequente para iniciantes, e até mesmo profissionais em programação, inclusive eu.
No entanto, ainda é maior o número de programadores que desacreditam que matemática apresenta um papel importante no estudo e na aplicação da ciência da computação.
Vamos então esclarecer uma vez por toda, porque nós devemos ter conceitos de matemática para ser um óptimo desenvolvedor.
Um pouco de história
Nos dias atuais, a principal ferramenta utilizada para auxiliar no pensamento é o computador. Este instrumento foi desenvolvido, basicamente, por engenheiros, físicos e matemáticos. Na primeira metade do século XX, a história das máquinas de computação envolveu estatísticos, físicos e engenheiros elétricos em maior número que matemáticos. Máquinas de calcular de mesa e sistemas de cartões perfurados eram indispensáveis para negócios, bancos e para as ciências sociais. A régua de calcular tornou-se o símbolo do engenheiro; integradores de vários tipos eram usados por físicos, geodesistas e estatísticos. A situação mudou por volta de 1940, devido ao envolvimento de matemáticos no esforço de guerra.
Embora a maior parte do esforço viesse de físicos e engenheiros, numerosos matemáticos jovens desempenharam um papel no desenvolvimento do computador eletrônico digital automático. Três desses matemáticos são destaques: John Von Neumann (1903–1957), Norbert Wiener (1894–1964) e Alan Turing (1913–1954).
Razões para ter conceitos fundamentais da matemática
A sociedade atual tem tratado o computador com extrema importância. Com ele, profissionais como cientistas e engenheiros de computação, programadores, analistas de sistemas, etc. têm ocupado posição de destaque. Todos esses profissionais têm como base disciplinas como lógica, algoritmos, estrutura de dados, matemática discreta, geometria, estatística, etc., e todas estas disciplinas estão fundamentadas na matemática descoberta ao longo dos séculos anteriores.
Um profissional de computação que possui conhecimentos em matemática é capaz de resolver problemas profundos, oferecendo soluções claras, organizadas, criativas e eficientes. As empresas têm buscado cada vez mais profissionais com esse perfil, pois os desafios atuais são maiores e exigem conhecimentos mais sólidos. A geometria é uma grande aliada no processo criativo de um profissional em computação, já que facilita a abstração do mundo real, permitindo que novos modelos sejam criados com muita facilidade e precisão.
No universo dinâmico da era actual, não dá para pensar em viver sem os conhecimentos básicos abordados, principalmente nós, estudantes, e profissionais da área de computação. Esta base é diferencial para os programadores que queremos alcançar o sucesso, mas também é fundamental para a sobrevivência nos dias actuais, diante da quantidade de informações e dos avanços tecnológicos, que são extremamente rápidos. Pode-se dizer então, que para compreender o mundo contemporâneo, é necessário acompanhá-lo. Para isso a matemática, aliada à computação, tornou-se linguagem imprescindível.
Lógica de Programação ou Lógica de Matemática?
Conceitos fundamentais sobre lógica
Uns dos conceitos importantes que devemos ter em conta para nós programadores é a lógica matemática e a lógica de Programação. Devemos ter cuidado ao tentar conceituar e relaciona-las. É certo afirmar que lógica matemática é igual à lógica de programação? Veremos a seguir.
Lógica
O que é a lógica? As palavras “lógica” e “lógico” nos são familiares. Falamos frequentemente de comportamento lógico”, de explicação lógica” em contraste com comportamento ilógico”, de explicação ilógica”. Nestes casos, a palavra lógica é usada no mesmo sentido de “razoável”. Uma pessoa com “espírito lógico” é uma pessoa “razoável”. Esses usos podem ser considerados como derivativos de um sentido mais técnico do termo “lógico” para caracterizar os argumentos racionais.
“O estudo de lógica é o estudo dos métodos e princípios usados para distinguir o raciocínio correto do incorreto”.
Isto não significa que só se tem raciocínio lógico quem estuda lógica. Mas uma pessoa que estuda lógica tem maior probabilidade de raciocinar corretamente.
Lógica Matemática
A lógica matemática é conhecida também por Lógica Proposicional ou Lógica Simbólica Clássica. Seu objetivo é a formulação de critérios que permitam a análise da legitimidade dos argumentos usados na demonstração de determinadas afirmações. Assim, usando argumentos “legítimos”, se conseguirmos mostrar que uma afirmação segue de afirmações anteriores já estabelecidas, passamos a considerar essa afirmação como estabelecida também.
Isso dá o modelo geral de uma teoria matemática acerca de determinado assunto, onde tomamos como verdadeiras certo número de afirmações iniciais (axiomas ou postulados) e a partir daí, usando argumentos logicamente válidos, começamos a deduzir outras afirmações construindo a teoria. (Isso fica bem claro na construção da geometria euclidiana, da teoria dos conjuntos, etc.).
Estudo de lógica não só dá uma visão mais profunda dos princípios do raciocínio em geral, como o conhecimento desses ardis auxilia também a evitá-los. Além disso, o estudo de lógica proporciona, através da aplicação de algumas técnicas, determinar a correção ou incorreção de todos os raciocínios.
Exemplo:
a) Criança que tem brinquedo estrela é feliz.
- A criança é feliz.
- A criança tem brinquedo estrela.
Esse argumento nos induz a pensar que o antecedente segue do consequente, ou o contrário.
Lógica de Programação
lógica de programação é necessária para pessoas que desejam trabalhar com desenvolvimento de sistemas e programas, ela permite definir a sequência lógica para o desenvolvimento.
De modo geral, podemos afirmar que:
lógica de programação é a técnica de encadear pensamentos para atingir determinado objectivo.
Estes pensamentos, podem ser descritos como uma “sequência de instruções”, que devem ser seguidas para se cumprir uma determinada tarefa.
Sequência Lógica são passos executados até atingir um objectivo ou solução de um problema.
Essas sequências lógicas são formadas por argumentos ou instruções, e devem seguir uma ordem lógica. Esses conceitos, acabam dando vida a um novo conceito, e importante, “Algoritmo”.
Agora que chegaste até aqui, relaxe e reflita no que leu, e depois, continue….
Aplicação da matemática na Programação.
Dispositivos Android
Embora desconhecido, usamos também para construir o nosso Layout. Como ilustra a imagem adjecente. Na programação de dispositivos android usa-se matemática, em vários ramos, seja para criar um app que realiza cálculos matemáticos/físicos/estatísticos e etc…
Para construir este layout precisamos um GridLayout com 2 colunas e 3 linhas, logo para obter 6 itens, multiplicamos o número de colunas com o número de linhas. 2 x 3=6 itens. Formando no entando uma matriz 2 x 3, e podemos representar como:
Desenvolvimento de Jogos
Outro ponto muito importante, é a aplicação da matemática no desenvolvimento de jogos(2 e 3D), é lógico que todos nós, “se calhar” sabemos a importância que a matemática tem nessa área da computação.
É evidente que para construir um jogo é necessário, um conjunto de profissionais composto por: programador, design, e experts em edição de vídeos(vídeos makers).
O que quero aqui ressaltar é o papel do programador, o programador deverá ter um domínio sobre matemática. Porquê?
Jogos 2D
Vou citar aqui o porque de você não poder programar um jogo 2D sem a matemática.
Citarei como exemplo, um jogo clássico, Flappy Plane, mas os conceitos se aplicam a qualquer jogo. Imagine o seguinte:
Colocamos 6 imagens na tela, o fundo azul, o avião, e as duas imagens de obstáculos.
Numa visão normal, podíamos entender que o avião se move no eixo Y e X. Mas não é exactamente o que acontece, as pedras movem-se no eixo X (-4), e o avião no eixo Y (300).
Agora vamos partir para algo mais complexo que simplesmente colocar uma imagem na tela, vamos falar de Gravidade, Aceleração e Velocidade.
Gravidade:
Gravidade é a força que puxa todos os corpos para o baixo . Na Terra este valor é geralmente arredondado para 10 m/s².
Para o aviamos atribuímos gravidade, e ela saltará os obstáculos, com uma força maior que a de gravidade:
Aceleração e Velocidade:
Velocidade é o quanto deverá ser adicionado ( se for positiva ) ou subtraída ( se for negativa ) da posição actual do jogar. Isso obviamente inclui a matemática.
A Aceleração é o quanto sua velocidade irá aumentar ou diminuir, por exemplo, se sua velocidade é 10 e sua aceleração é –3, então você está parando, porque sua velocidade irá ir diminuindo de 3 em 3.
Jogos 3D
Em jogos 3D a matemática é intensamente, supremamente, e qualquer outro termo exagerado, indispensável. É impossível fazer um jogo 3D sem usar a matemática.
A razão é que sem matemática, não há 3D, pois o computador simula o 3D em nossa tela, e para fazer isso, faz uso intenso de matrizes e não podemos nos esquecer dos vectores também.
Matrizes e Vectores são elementos que aparecem sempre em um jogo 3D.
Os vectores marcam a posição dos pontos dos modelos 3D, além da posição, aceleração, velocidade, direção.
Para poder dizer ao computador a posição do observador e a projecção usa-se matrizes. Que é matemática pura.
Para rotacional, transladar (mover) e escalar um modelo, usa-se multiplicações de matrizes.
Para se obter a direção de um corpo rotacional e move-lo nesta direção, usa-se calculo vectorial e transformações com matrizes.
Para matar, obter pontuação, e gerir as balas usa-se matemática fundamental. Exemplo:
Vamos supor que a vida do adversário é 5. (int vidaAdversario= 5). Sempre que o nosso avatar atirar nele, a vida dele ia diminuir(subtraindo):
vidaAdversaio = vidaAdversario — 1.
E ele ia morrer quando a sua vida ficasse igual a 0.
If(vidaAdversario==0) {
morrerAdversaio();
}
Análise de Algoritmos.
Quando um problema é estudado e um projecto de algoritmo deve ser feito, várias soluções podem surgir, e aspectos de tempo de execução e espaço ocupado são pontos muito relevantes na escolha.
Segundo Cormen (2002), analisar um algoritmo significa prever os recursos de que ele necessitará. Em geral, memória, largura de banda de comunicação, ou hardware de computação são a preocupação primordial, mas geralmente o tempo de computação é o que se deseja medir.
Para calcular o tempo de computação, de um algoritmo, vamos considerar o seguinte:
O tempo de execução de um algoritmo será representado por uma função de custo T, onde T(n) é a medida do tempo necessário para executar um algoritmo para um problema de tamanho n. Logo, T é a chamada função complexidade de tempo do algoritmo.
Se T(n) é a medida de memória necessária para a execução do algoritmo, então T é chamada função de complexidade de espaço. Conforme Ziviani (2004), é importante ressaltar que a função T(n) não representa directamente o tempo de execução, mas o número de vezes que certa operação relevante é executada.
Como exemplo, considere o programa implementado em python para encontrar o menor elemento de um vetor l, com i elementos.
Conclusão
Por intermédio dos conteúdos decifrados aqui, cumpre-se concluir que:
- Sendo a matemática mãe de todas as ciências, toda evolução tecnológica é consequência da aplicação da Matemática.
- O estudo matemática é fundamental no estudo da ciência da computação.
- Lógica de Programação é consequência da lógica de matemática, mas não igual, ou seja aplicamos lógica de matemática dentro da lógica de programação, mas não podemos aplicar lógica de programação dentro da lógica matemática.
- A ciência da computação também tem influencia no desenvolvimento da matemática
- Não podemos programar um jogo, 2 ou 3D sem que haja a matemática como elemento fundamental.
Biografia
António Pedro, estudante do primeiro ano do curso de Ciência da Computação e Engenharia, programador mobile com 3 anos de experiência. Formado pelo Instituto Médio Politécnico dos Dembos no curso Técnico de Informática.
Obrigado! E vos espero na segunda parte, onde entraremos com mais detalhes e aplicação da Álgebegra Linear na Ciência da Computação.