Vamos agora trabalhar com Operações e Funções Matemáticas e para isso é preciso antes de tudo aprendermos como convertermos as formulas matemáticas presentes nos algoritmos textuais e teses acadêmicas que teremos acesso para construir o comportamento de nossos sistemas.
Para convertermos uma formula matemática como esta:
$$ \left{\left[\frac{2}3-(5-3)+1\right]\right}.5 $$ em um Algoritmo computacional é preciso linearizar as expressões, ou seja transforma-la em uma sequências simples de operações, veja:
E posteriormente substituir os operadores matemáticos pelos equivalentes na linguagem escolhida:
Abaixo apresentamos uma tabela de substituição:
Descrição | Comum | computacional |
---|---|---|
Multiplicação | . ou X | * |
Divisão | / ou ÷ | / |
Soma | + | + |
Subtração | - | - |
Abre chaves ou colchetes | { ou [ | ( |
Fecha chaves ou colchetes | } ou ] | ) |
Raiz Quadrada | {% math %}\sqrt{x}{% endmath %} | sqrt(x) |
Ponteciação | {% math %}X^Y{% endmath %} | x^y |
Como na matemática comum precisamos construir nossas formulas sejam matemáticas ou para operações lógicas observando as precedências dos operadores, e alterando com o uso de parenteses como é comum ser feito. Abaixo uma tabela de prioridades para os operadores:
Operador Aritmético | Prioridade |
---|---|
Exponenciação | 3 (maior) |
Multiplicação | 2 |
Divisão | 2 |
Adição | 1 |
Subtração | 1 (menor) |
Exemplo:
Porém já a formula:
Uma amiga me enviou estes dias uma questão que tem circulado na internet, vamos usa-la para compreender a precedência de um jeito diferente, veja a imagem abaixo:
O exercício parece complicado, mas não é, ele é pura matemática vamos resolve-lo e assim praticar um pouco o raciocino lógico e matemático:
Temos primeiro 3 Rosas (R
) que são igual a 60, então:
Pronto já sabemos que R = 20
;
Em seguida temos uma Rosa (R), somada a dois Girassóis (G
) que é igual a 30:
Então o Girassol (G
) vale 5.
Estamos chegando lá, você vai entender facilmente a precedência daqui a pouco, aprender a programar é isso, desmembrar um problema passo a passo e ficar atendo a detalhes.
Agora temos 3 Trevos (T
) e um Girassol (G
) que é igual a 41.
Agora já temos praticamente tudo que precisamos para dar a resposta certa, mas mesmo assim muitos erram e por dois motivos, o primeiro é por total falta de atenção a detalhes, o segundo é simplesmente porque a precedência dos operadores deve ser observada neste desafio, como não nenhum parenteses que muda esta precedência o resultado é totalmente influênciado pela ordem correta usada:
Vejamos então a ultima fórmula, já reduzida e reflita se está certa antes de continuar:
Horas, mas o trevo não seria 12 (doze)? porque está o 9 (nove) ali? volte na imagem a cima e certifique do que vê nas duas últimas fórmulas.
Descobriram? Ok, vou contar então, o trevo na ultima fórmula está com uma folha a menos, portanto das 4 folhas restam apenas 3, ou seja {% math %}\frac{3}{4}{% endmath %} do valor do Trevo {% math %}T \star \frac{3}{4}{% endmath %}.
Sendo assim agora fica apenas a precedência como o último cuidado a se tomado, como a multiplicação tem maior precedência sobre os demais operadores, ela deve ser feito primeiro ficando por tanto:
Sendo assim a resposta é a letra "C".
Então fica este desafio para verem como á matemática é importante e o raciocínio lógico também nos ajuda a perceber detalhes que antes passariam desapercebidos.
Vamos continuar agora vendo a precedência dos operadores Lógicos.
Operador Lógico | Prioridade |
---|---|
e | 3 |
ou | 2 |
nao | 1 |
Resultado falso:
Resultado verdadeiro:
Apesar do VisuAlg não aceitar relacionamento entre tipos de operadores, como matemáticos com Lógicos e Relacionamento, é possível usa-los em uma operação observando o uso correto.
Operador | Prioridade |
---|---|
Aritméticos | 3 |
Relacionais | 2 |
Lógicos | 1 |
O uso abaixo está errado:
Para que a fórmula acima fique correta deve ser escrita da seguinte forma:+
As funções matemáticas são muitas delas ligadas a trigonometria, como seno
, coseno
, e tangente
, mas há diversas outras que auxiliam nos cálculos matemáticos como funções que retornam valor absoluto de um número, o resto da divisão ou a raiz ou logaritmo. Veja a lista abaixo e funções matemáticas disponíveis.
Obtém o valor absoluto de um número, desconsiderando seu sinal.
usado para achar o módulo de um número em comparações (o mesmo que ' % ' )
#####Tan( )
#####Sen( )
#####Cos( )
Gera um valor aleatório do tipo Real. Não precisa argumento, o valor aleatório gerado é entre 0 e 1, sendo a precisão de de 15 casas após a virgula, como no exemplo abaixo:
0.454236520919949
Gera um número aleatório do tipo Inteiro, entre 0 e o valor de x informado como parâmetro.
Aqui concluímos nosso estudo sobre Algoritmo, deste ponto cabe a nós praticarmos, existe ainda um subcapítulo a seguir meramente como referência geral as palavras chaves, comandos e funções proprietárias do Portugol para VisuAlg.
Continuaremos agora na segunda parte onde iremos aprender a Linguagem C, com alguns ganchos para a Linguagem C++, uma extensão que permite programar orientado a objetos com a a Linguagem C e ainda outros recursos avançados, porém não iremos estudar nada que não seja necessário para uso com o Arduino e seu dialeto Wiring (também conhecido como Linguagem do Arduino)
Revisado: {{ file.mtime }} | Compilado: {{ gitbook.time }}