"Clear Screen" para Linux x86 em Assembly Puro (GNU Assembly)
Obs[1]: Testado apenas para o as (GNU Assembly.). Não tentei com o Nasm. Obs[2]: Óbvio, mas bom ressaltar: não funciona em nada que rode "INT 21h". TASM está fora... Obs[3]: (De última hora) Está aparecendo um sinal entre chaves escrito em maiúsculo "FONTE" no lugar do BACKSLASHZERO (barra invertida-zero), sinal de caractere zero e de fim de string em C, quando alguma coisa lê uma string e entende o símbolo como zero. "\" + "0" = BACKSLASHZERO = Caractere nulo. Ditando a grosso modo, caso não dê pra ver corretamente, fica sendo a seguinte linha deste modo: .ascii "BACKSLASHZERO33cBACKSLASHZERO" O "33" fica aonde está, junto com a letra "c" (minúscula). Apenas troca-se o nome da barra pela barra e o ZERO pelo algarismo "0". ======================================= Este código simplesmente retira os caracteres do console após executado muito parecido com o comando "clear" do Unix/Linux. Para gerar o executável, usar: "$ as clrscr001.s -o clrscr001.o" Em seguida usar: "ld clrscr001.o -o clrscr001" Depois para executar: "$ ./clrscr001" Após a montagem, por aqui ficou com apenas 591 bytes. E logo depois ao usar "$ strip -s clrscr001" para retirar informações de montagem, link edição etc ficou com apenas 308 bytes. Quer dizer, menor que os 512 bytes da MBR de um HD convencional. Obs: O comando "strip" retira informações usadas para depurar com o gdb. Como está tudo ok, estas serão retiradas para ficar menor ainda.
Por: Perfil removido
Crivo de Eratóstenes Simples em Fortran 95
Para compilar, use: "gfortran sieve001.f95 -o sieve001", igual GNU Pascal e GCC Particularidades desta linguagem: - Início e fim de blocos demarcados por palavras, lembrando Pascal; - Cláusula "Program" ao início do programa semelhante a Pascal; - Declaração de variáveis no início do código, como em Pascal. - Arrays podem ser bem flexíveis ao serem dimensionados; - Usam-se parêntesis para determinar elementos de um array; - A simples declaração "LISTAGEM(:)=12345" preenche todos os elementos do array LISTAGEM com o mesmo valor. - Cláusula de fim de blocos terminam geralmente com a seguinte estrutura: "END" + "Comando titular do bloco" + "Identificador criador pelo programador". Exemplos: END DO, END IF, END PROGRAM XXXXXXX, END FUNCTION XXXXXXX; - Comentários são declarados após um ponto de exclamação; - Operadores lógicos são identificados por palavras abreviadas entre pontos (.OP.). Exemplos: .AND. .OR. .NOT. Provavelmente foi daí que veio .AND., .T. .F. do Dbase, Clipper etc.; - Originalmente "maior que (>)", "menor que (<)", "maior ou igual que (>=)", "menor ou igual que (<=)" etc em Fortran escreviam-se igual ao que se usa hoje em Bash Script ou no comando test: * Maior que: .GT. (Greater Than). Em Bash: -gt * Menor que: .GT. (Less Than). Em Bash: -lt * Maior ou igual que:: .GE. (Greater or Equal Than). Em Bash: -ge * Menor ou igual que:: .LE. (Less or Equal Than). Em Bash: -ge * Igual a: .EQ. (Equal). Em Bash -eq * Diferente de: .NE. (Not Equal). Em Bash -ne Usados dentro de colchetes em scripts em comandos "if/elif" e "while", por exemplo. - Atualmente os operadores simbólicos consagrados do tipo ">" para a omparação "maior que" podem ser usados em lugar das letras e pontos. No script fica como exemplificado. - Formatação de entrada/saída de strings e números, são mais complicadas que em C. São feitas com uma variável de string pré-declarada ou com um comando chamado "FORMAT", podendo até ter um número de linha de código (label) para identificá-lo. FORMAT lembra um comando chamado "PICTURE" do Clipper/XBase; - Impressão de término de linha ('\n' em C) no comando Write pode ser cancelada com a incomum declaração "Advance='no'"; - Cláusula "PARAMETER" pode definir constantes; - Strings são definidas por uma notação semelhante a uma multiplicação de um tipo de dado (Character) por um valor. Exemplo: Character*5. - Não existe operador para resto de divisão (módulo, sinal de porcentagem "%" em C), sendo necessário o uso de uma função já implementada na linguagem (não aparece neste código). - Não encontrei operador de auto-incremento semelhante ao "duplo mais" em C. Fortran não é lacônico, conciso e simbólico quanto C, porém pode ser tão poderoso quanto. Existem algumas facilidades sintáticas que não devem ser subestimadas.
Por: Perfil removido
Função Fatorial Recursiva em Fortran 95
A velha função fatorial, recursiva, em Fortran versão 95. Para compilar, use: "gfortran fatorial001.f95 -o fatorial001", igual GNU Pascal e GCC Durante a execução (após compilado), o programa pede um número de um intervalo pré-definido de 0 a J. Insistentemente, há um loop indefinido para isto. "J" deve ser no máximo até 20, já que o número definido por 21! (fatorial de 21) excede 2^63. O que há de diferente no código são as particularidades desta linguagem: - Blocos com início e fim definidos por palavras, lembrando Pascal; - Cláusula "Program" semelhante a Pascal; - Comentários vêm após um ponto de exclamação; - Operadores lógicos definidos por palavras entre pontos (.OP.). Provavelmente foi daí que veio .AND., .T. .F. do Dbase, Clipper etc.; - Máscaras de formatação com strings, algo mais complexas que C para formatação de entrada/saída de dados. Podem ser feitas com um comando chamado "FORMAT". De novo uma referência ao "PICTURE" do Clipper; - Necessidade de uma estranha expressão (Advance='no') para evitar avanço de linha; - Dimensionamento do tamanho do tipo de dados (KIND=8). Esta cláusula aumenta o inteiro para 64 bits. 8 é o valor máximo; - Cláusula "PARAMETER" para declarar constantes; - Funções e subrotinas devem estar num bloco determinado em uma áres definida pela cláusula "CONTAINS"; - Não foi usado algo como "RETURN" ao final, mas uma variável especificada para retorno do valor; - Variáveis de sequências de caracteres são definidas por uma coisa que "lembra" uma multiplicação de um tipo (Character) por um valor (Character*5). - Não existe operador para resto de divisão (módulo, sinal de porcentagem "%" em C), sendo necessário o uso de uma função já implementada na linguagem (não aparece neste código). A sintaxe de Fortran é ricamente cheia de recursos tanto quanto C. Infelizmente não tão lacônica e taquigráfica quanto. Seu código compilado com gfortran gerou um executável pequeno, mesmo sem usar "strip -s". É tão verborrágica quanto Pascal e até mais, lembrando também Clipper e COBOL.
Por: Perfil removido
Crivo de Eratóstenes Simples em Pascal
Esta implementação do Crivo de Erastótenes possui diretivas de pré-compilação que permitem que o código seja compilado por fpc (Free Pascal) ou gpc (GNU Pascal). Na prática é igual a um IF ... THEN ... sem usar BEGIN ... END e usando ENDIF. Sendo também que esta etapa ocorre como uma filtragem de código, antes deste ser compilado. No caso os compiladores consideram na compilação o código dentro de {$ifdef X} ... {$endif} somente se houver uma identificação de um símbolo (aqui chamado de X) no contexto Já {$ifndef X} ... {$endif} faz o contrário: compila se a definição do símbolo não for encontrada. A pré-definição "FPC" indica uso do compilador Free Pascal. A pré-definição __GPC_RELEASE__ indica uso do compilador GNU PASCAL. O código demarcado, portanto, só será usado conforme estes símbolos aparecerem {ifdef ...} ou não {ifndef ...}, isto é, conforme os compiladores utilizados. O nome dos tipos de dados numéricos para valores grandes é diferente nos dois compiladores e foi utilizada uma predefinição na área TYPE do código. Dentro desta área o código é selecionado em tempo de compilação conforme a diretiva. Mais abaixo também está outro par de compilações condicionais. A procedure Inc (...) parece não funcionar com valores não-ordinais ou inteiros no Free Pascal, portanto foi escolhido o incremento na forma-padrão como opção. Acredito que o uso de Inc (...) funcione do mesmo modo que a variável com "duplo mais" (V++) ou "mais igual" (V+=2) funcionam otimizados em C.
Por: Perfil removido
Crivo de Eratóstenes Simples em PHP
Não é muito comentado, mas pode-se fazer scripts que rodem direto do terminal para tarefas corriqueiras em PHP. Igual a Perl, Python e Shellscript. Como o objetivo desta linguagem é ser uma página dinâmica de web (ou CGI, mais raro), essa observação passa por desapercebido. Para rodar um script em PHP igual aos outros script, necessita-se de três coisas: 1ª Permissões de execução: "chmod +x ..." 2ª Colocar She-Bang na primeira linha: "#!/usr/bin/php" 3ª Todo o código deve estar entre as tags "". O que estiver fora das tags será impresso na tela sem ser interpretado. ================================================================= Este script tabula números primos. A contagem está marcada para o intervalo de 1 até 10000000 (dez milhões). Um script em Perl de código muito similar tabulou aqui os ńúmeros do intervalo de um a um milhão em quase quatro segundos. Este script fez o mesmo teste de um a um milhão em pouco menos de três, isto é um segundo a menos. Mas o que me chamou a atenção foi que o mesmo teste para ńúmeros do intervalo de um a dez milhões levou em Perl 1min 17seg (um minuto e desessete segundos). Este script aqui em "PHP de terminal" fez a mesma tabulação no intervalo de um a dez milhões em 57seg (cinquenta e sete segundos). Essa diferença de 20 segundos é muito significante para não ser notada. Se fosse em hardware mais antigo, seria uma eternidade. PHP mais rápido que Perl para ser usado em terminal?? Ainda é pouco para comparação. Falta testar acessos a recursos de sistema e ver até onde vai o poder de fogo de ambas as linguagens para tarefas similares. Desde CGI, administração de sistemas e uso em aplicativos... Pra variar, não sei se ainda pode ser melhorado, nem onde pode falhar. Aguardo por bugs.
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
Mint começou a apresentar varios erros (1)
Recuperar arquivos de HD em formato RAW usando Linux (1)
Não consigo instalar linux mint [RESOLVIDO] (9)
Melhorando a precisão de valores flutuantes em python[AJUDA] (14)