Função "Temporizador" em C
Exemplo simples em compilação normal. A função lê um instante do sistema e divide o valor pelo número de ciclos de execução da máquina para calcular tempo. Depois faz isto por uma segunda vez dentro de um laço (loop). Quando a diferença entre a segunda e a primeira leitura for igual a um valor fornecido em segundos à função, o loop se encerra e a função termina. Deste modo, durante a execução da função passou-se este tempo em segundos. Igual à sleep em Bash.
Por: Perfil removido
Cálculo de logaritmo de um número por um terceiro método em C
Este é um terceiro método de cálculo de logaritmos e o curioso é que sempre são necessários os mesmos números de passos para o cálculo. Bem diferente do que cito como métodos "A" e "B". Não é nada inovador e é do tipo de coisa vista num curso escolar sobre a matéria. Detalhes no código. Não precisa de derivadas. Apenas saber raiz quadrada. O que significa que dá prá fazer com o auxílio de uma calculadora do tipo que não é científica e algumas anotações caso esta calculadora tenha restrição de memória. Portanto a precisão e o custo computacional estão ligados diretamente ao algoritmo de raiz quadrada usado. Ele usa o mesmo método quese usa para saber quantas casas decimais ou quantos bits tem um número. Ao se escrever um número de binário para decimal, são usadas somas de potências de 2 e *** qualquer número é uma soma de potências não-repetidas de 2. Como se faz mesmo? Divide-se por 2 repetidas vezes e anotam-se os restos, 0 e 1 alternados que serão os dígitos de escrita. Por exemplo: 32 = 2 elevado à 5. São feitas 5 divisões por 2. Por acaso esse 5 é o expoente e o logaritmo. Para 33 = 2 elevado à 5. mais 1. A diferença é que sobrou 1. Se a parte inteira desse logaritmo de 33 base 2 é 5 e pôde ser calculada, então não existiria algo a ser feito com esse 1 que sobrou prá saber qual é o logaritmo de 33 base 2 fracionado? A resposta é sim. Numa divisão, divisão mesmo, quando o resto é maior que o número prá se dividir, coloca-se a vírgula e vão sendo colocados zeros quando não se consegue dividir. Se o objetivo era o de descobrir quantos 2 existiam dentro de 33, agora esse objetivo deve ser mudado porque 2 já não é possível com o resto 1. Agora deve-se descobrir quantas "raiz quadradas de 2" existem neste resto. Dividir o resto por sqrt(2) quantas vezes for possível, contar quantas divisões foram feitas e colocar após a vírgula colocada após o cinco. E quando o resto for de novo menor que o teste, que é "raiz quadrada de 2", muda se de novo o teste. Muda-se para "raiz quadrada da raiz quadrada" de dois. Também chamada de a "raiz quarta". Faz-se a mesma coisa: contam-se o número de divisões e anota-se na casa decimal seguinte à da última contagem. O único problema é que este método depende do sistema de numeração adotado. Esse exemplo citado acima foi para base 2. Para fazer com base 10, precisa trabalhar com "raiz décima". E agora? Da mesma forma que inteiros são representados por somas de potências de dois, fracionários também podem ser representados. Representados por somas de potências de 0.5 (ou 1/2). Ficaria a sequência: 1/2, 1/4, 1/8, 1/16, 1/32... 1/2 = 0.1 binário 1/4 = 0.01 binário 1/8 = 0.001 binário 1/16 = 0.0001 binário 1/32 = 0.00001 binário Da mesma forma que existem decimais de casas infinitas, existiriam binários de casas infinitas. No caso do teste de divisão existiriam duas hipóteses: "dá prá dividir" o resultado da divisão é 1 "não dá prá dividir" o resultado da divisão é 0 Sempre havendo resto. Se fosse prá escrever em binário de baixo nível na memória, bastava deslocar uma casa tipo "x >> 1" em ponto flutuante e inverter o bit, mas parece que em C não há como e ainda não me inteirei do que poderia ser feito. Ainda. Então o jeito é somar potências de (1/2) decimais numa variável conforme o resultado da divisão seja 0 ou 1. O expoente da potência somada corresponde à casa fracionária binária. Fiquem à vontade para sugestões, dúvidas ou apontar erros e simplificações.
Por: Perfil removido
Cálculo de logaritmo de um número por Método de Newton-Raphson em C
A descrição vai ao código. Este método, também como o algoritmo "A", necessita da definição do que é uma derivada. Ele é bem mais simples de implementar que Séries de Taylor e possui um custo computacional bem menor também. O problema é a necessidade de um valor inicial, que é aproximado a cada iteração. Deste valor depende a veloidade de mais ou menos iterações. Grosseiramente o método funciona por uma fórmula F(x) onde se começa com o valor x0. Depois continua-se com x1=F(x0) e segue: x2=F(x1) x3=F(x2) x4=F(x3) ... Até o último valor x_ obtido ser muito igual com o último valor x_ que entrou. Para saber como é essa fórmula F(X) é que é necessário saber algo de derivadas. Qualquer erro encontrado ou dúvida, fiquem à vontade.
Por: Perfil removido
Cálculo de logaritmo de um número por Série de Taylor em C
A descrição vai ao código. Ainda não sei um modo simples de dizer o que seria uma derivada, que é algo a ser usado neste algoritmo. O que faz parte da teoria sobre Séries de Taylor. Portanto entender a fórmula da Série não é o problema, mas o porquê de ter sido escrita daquela forma. Existe uma fórmula T(x) chamada de "Termo Geral". Calcula-se um valor para cada número natural (0, 1, 2, 3 ... ) inteiros não-negativos nessa fórmula em ordem crescente Os valores são somados de forma acumulativa: T(0) + T(1) + T(2) + T(3) + ... Quanto mais se calcule e se soma, maior a precisão. Porém demora bastante. O custo computacional é maior que o de outros métodos. Requer muitos passos para um resultado preciso. Para se entender como foi feita essa fórmula de termo geral T(x) é que se precisa saber derivadas. Qualquer erro encontrado ou dúvida, fiquem à vontade.
Por: Perfil removido
Algoritmo de Fatoração de Fermat (FFA) em Perl
FFA: Fermat Factoring Algorithm (Algoritmo de Fatoração de Fermat) Método de fatoração inventado por Pierre de Fermat: Todo numero pode ser escrito como diferença de dois números elevados ao quadrado: n = a² - b², ou n = a*a - b*b; Esta expressão pode ser escrita como n = (a+b) * (a-b), ou n = (a+b) (a-b), onde a soma e a subtração dos valores "a" e "b" são dois fatores do número em questão. Se n é primo, então a-b = 1 e a+b=n; Para números com diversos fatores e divisores existem diversos "a" e "b" que satisfazem a expressão. Este algoritmo testa em progressão diversos valores "b" em "i + j*j", ou i + j², com i=n no primeiro passo. Se i + j*j for um quadrado perfeito, então calcula-se com base nisto os correspondentes a e b da expressão anterior, tendo-se então encontrado um fator. Fator este que não é necessariamente um número primo. Este programa trabalha com os fatores sendo escritos em uma lista, sendo pegos um a um até o final. A função de fatoração retorna uma estrutura com um par de números que se multiplicados retornam o valor de entrada, ordenados em maior e menor. No retorno, a parcela menor substitui a posição do elemento pego anteriormente e a parcela maior é inserida ao fim da lista principal. Quando o valor menor do par é um, o valor maior é um número primo, então continua-se com o próximo elemento da lista principal, encerrando-se ao último elemento. Por último, a lista de fatores é ordenada para apresentação. Obs[1]: Ainda é possível melhorá-lo. Obs[2]: Números negativos são desconsiderados para simplificação. Por enquanto.
Por: Perfil removido
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Criando uma VPC na AWS via CLI
Multifuncional HP imprime mas não digitaliza
Dica básica para escrever um Artigo.
Como Exibir Imagens Aleatórias no Neofetch para Personalizar seu Terminal