Archive for the ‘Artigos’ Category

Algoritmo Heurístico

Existem duas propriedades principais na elaboração de algoritmos:

1 – Criar o algoritmo de modo a ter um tempo de execução aceitável.

2 – Ser a mais aproximada ou a melhor solução para o problema.

Um algoritmo heurístico não cumpre uma das duas propriedades mencionadas anteriormente, podendo ser um algoritmo que retorne boas soluções na maioria das vezes, mas não oferece garantias de que seja sempre assim.

Os algoritmos heurísticos são realizados por meio da proximidade e de modo aleatório de um determinado objectivo. Mas nem todo o algoritmo heurístico é aproximativo , ou seja, nem toda heurística tem uma razão de qualidade comprovada matematicamente.

Tipos de Algoritmos:

Algoritmo Aproximativo -É um algoritmo que retorna soluções dentro de um determinado limite assimptótico.

Método Heurístico – É um algoritmo que retorna soluções sem que tenha um limite formal de qualidade, empiricamente avaliado em termos de complexidade.

A Heurístico é um conjunto de regras que conduzem à descoberta e à realização de problemas complexos.

IDE’s Para Python

A utilização de um IDE na programação facilita a criação e organização do código, permitindo fazer o debug mais facilmente. Aqui apresento um lista dos principais IDE’s existentes para Python.

IDE’s Free

Idle — É um IDE simples e fácil de usar.

Komodo-Edit — Esta é uma versão com menos funcionalidades que a principal versão do Komodo, é simples de utilizar e recorre a bastantes recursos tais como, autocomplete, calltips, multi-language file support, syntax coloring, syntax checking, Vi emulation, Emacs key bindings e outros.

NetBeans — É um poderoso IDE, que através de plugins pode receber a linguagem Python.

Eclipse —É um poderoso e ao mesmo tempo monstruoso IDE. Assenta sobre Java mas com recurso a alguns plugins poderá receber a linguagem Python.

DrPython — É um IDE muito simples para GNU\Linux.

IDE’s Proprietários

Wing — É um dos mais simples, completos e poderosos IDE’s disponíveis para Python.

Komodo — Analogamente ao Wing é também um IDE muito poderoso para Python.

BlackAdder — É um bom IDE desenvolvido pelos mesmos produtores do KDE.

Editores de Texto

vim — É usado nas plataformas GNU\Linux e é altamente configurável.

Emacs — É um editor de texto com uma curva de aprendizagem muito acentuada, mas que se pode tornar numa ferramenta muito poderosa.

SciTE — É um excelente editor de texto voltado para a programação, suporta uma grande variedade de linguagens de programação e permite correr e fazer debug dos programas.

Diferença Entre Hacker e Cracker

Tentando esclarecer as dúvidas que foram levantadas no Post “Microsoft Contrata Hacker de 14 anos” acerca das diferenças entre um Hacker e um Cracker, decidi criar este Post.

Um Hacker é um individuo com elevados conhecimentos técnicos de hardware e software que utiliza todos os seus conhecimentos para testar os dispositivos de segurança em determinadas situações, mas sem nunca utilizarem esses testes e invasões para fins menos lícitos.

O Hacker tem um perfil auto-didacta, e possui elevados conhecimentos teóricos e práticos sobre redes, e domina várias linguagens de programação, o que lhe permite usar esses conhecimentos para explorar vulnerabilidades nos sistemas de segurança do software para posteriormente serem corrigidas. Estes indivíduos são apelidados de Hacker’s Éticos.

Por outro lado os Cracker’s são os maus da fita, são indivíduos que tem alguns conhecimentos técnicos e teóricos, mas muitas das vezes usam os recursos já criados pelos hacker’s para invadir sistemas de segurança e criar algum tipo de dano nesses mesmos sistemas.

Os Cracker’s não são mais do que piratas cibernéticos que invadem determinados sistemas com o objectivo de roubar, destruir ou simplesmente danificar…

Em conclusão podemos dizer que os Hacker’s são os verdadeiros invasores, mas usam isso em prol da evolução e melhoramento dos sistemas de segurança, enquanto que os Cracker’s são totalmente o oposto, ou seja, usam as invasões para actividades ilícitas…

Tutorial de Introdução à Lógica e Algoritmia

A Comunidade Portugal@Programar criou um tutorial de Introdução à Lógica e Algoritmia, que está disponível na sua Wiki para todos os que quiserem aceder.

O tutorial poderá ser lido na integra Aqui:

Operadores em C++

Como o próprio nome indica operadores realizam operações entre dados, existem vários tipos de operadores, tais como Operadores Aritméticos, Operadores Comparativos, Operadores de Deslocamento de Bits, Operadores Lógicos sobre Bits entre outros.

Operadores Aritméticos:

Operadores Sintaxe
Adição unitária +a
Adição a + b
Incremento pré-fixado ++a
Incremento pós-fixado a++
Atribuição por adição a += b
Subtracção unitária -a
Subtracção a - b
Decremento pré-fixado --a
Decremento pós-fixado a--
Atribuição por subtracção a -= b
Multiplicação a * b
Atribuição por multiplicação a *= b
Divisão a / b
Atribuição por divisão a /= b
Módulo (resto) a % b
Atribuição por módulo (resto) a %= b

Operadores Comparativos

Operadores Sintaxe
Menor que a < b
Menor ou igual que a <= b
Maior que a > b
Maior ou igual que a >= b
Diferente de a != b
Igual a a == b
Não lógico !a
E lógico a && b
Ou lógico a || b

Operadores de Deslocamento de Bits

Operadores Sintaxe
Deslocamento à esquerda a << b
Atribuição de deslocamento à esquerda a <<= b
Deslocamento à direita a >> b
Atribuição de deslocamento à direita a >>= b

Operadores Lógicos sobre Bits

Operadores Sintaxe
Complemento ~a
E a & b
Atribuição por e a &= b
Ou a | b
Atribuição por ou a |= b
Ou exclusivo a ^ b
Atribuição por ou exclusivo a ^= b

Outros Operadores

Operadores Sintaxe
Atribuição a = b
Chamada de função a()
Elemento de arranjo a[]
De-referência *a
Referência &a
Membro de ponteiro a->b
Membro de identificador a.b
De-referência de membro de identificador a.*b
De-referência de membro de ponteiro a->*b
Conversão de tipo de dados (tipo) a
Vírgula a , b
Condição ternária a ? b : c
Resolução de escopo a :: b
Tamanho de sizeof a
Identificador de tipo typeid (tipo de dado)

Espero que esta lista com todos os operadores existentes em C++ possam ser úteis, principalmente para quem está a iniciar-se na programação…