sábado, 1 de dezembro de 2012

Algoritmo: Merge Sort

Assim como o Quick Sort, o Merge Sort também utiliza a estratégia dividir para conquistar. Entretanto, a estratégia do Merge Sort é dividir o vetor em vários subvetores já no início e ordenar enquanto reconstrói o vetor. 

Esse método possui duas funções,  a que faz as divisões (neste caso, a função MergeSort()) e a função que a reconstrói (a função Merge()).
A função que faz a divisão, faz de modo recursivo, sempre dividindo o vetor ao meio até que não seja possível dividí-lo. 

Depois de dividido, utiliza-se a função de união que irá pegar os dois vetores e unirá ambos vetores, já ordenando seus elementos. E assim vai reconstruindo até que todos os elementos estejam unidos novamente. Veja o psudocódigo abaixo:

sexta-feira, 30 de novembro de 2012

Algoritmo: Quick Sort

O Quick Sort, como o nome já diz, é um dos algoritmos de ordenação mais rápidas já desenvolvida. Utiliza uma estratégia de dividir para conquistar e consiste em pegar um elemento pivô e mover todos os elementos maiores que o pivô para um lado e todos os elementos menores para o outro (o qual lado depende se for crescente ou decrescente). 

Uma das razões dele ser rápido é porque a análise começa das duas pontas e vai em direção ao centro, onde geralmente está localizado o elemento pivô. Depois de analisar e mover todos os elementos em relação ao pivô, então divide-se o vetor em duas partes e aplica a mesma técnica nos dois subvetores, até que não seja possível dividir os vetores. 

quinta-feira, 29 de novembro de 2012

Algoritmo: Selection Sort

Continuando a série sobre algoritmos de ordenação, hoje falarei sobre o Selection Sort.

O Selection Sort funciona de forma semelhante ao Bubble Sort. A principal diferença é durante a análise de qual número vai naquela casa, não é feito a troca imediatamente, mas sim guardado a referência para aquela posição (no pseudo-código abaixo, essa referência é guardada na variável “menor”). 

segunda-feira, 19 de novembro de 2012

Algoritmo: Bubble Sort

Vou iniciar uma série sobre algoritmos de ordenação, começando hoje pelo Bubble Sort, também conhecido como o método da bolha. Para facilitar, vamos pegar o seguinte caso: tenho um vetor de  inteiros chamado vet com os seguintes valores: {55, 76, 26, 64, 26, 80, 71, 46} e temos que organizar os números desse vetor em ordem crescente.

Vamos para o pseudocódigo:

01. var x,y,aux : INTEIRO   
02. PARA x=0 ATE vet.tamanho PASSO 1
03.     PARA y=x+1 ATE vet.tamanho PASSO 1
04.      SE(vet[x] > vet[y]) ENTAO
05.       var aux = vet[x]
06.       vet[x] = vet[y]
07.       vet[y] = aux
08.      FIMSE
09.     FIMPARA
10.    FIMPARA

Vamos para a explicação:

quinta-feira, 1 de novembro de 2012

Javascript: Criação de Objetos

Para criar um objeto em Javascript, é necessário apenas declarar o seu construtor, que não é nada mais que uma função. Os métodos e atributos do objeto são todos declarados dentro do construtor. No exemplo a seguir, mostra a criação de um objeto Compromisso, junto com as seus atributos:

//Construtor de um compromisso de uma agenda (Compromisso)
function Compromisso(nome,inicio,fim){
    //Declaração dos atributos
    this.nome = nome;
    this.dtInicio = inicio;
    this.dtFim = fim;
   
}

segunda-feira, 29 de outubro de 2012

PHP: Manipulação de Arquivos


1. Abrindo um Arquivo

Esse tutorial irá ensinar como manipular arquivos, utilizando o PHP. A primeira coisa que deve ser feita quando for manipular um arquivo é abrí-lo. Para abrir utiliza-se a função fopen() para abrir. O protótipo da função é a seguinte:

resource fopen ( string $filename, string $mode [, int $use_include_path [, resource $context]] )

onde:
  • $filename: Nome do arquivo a ser aberto;
  • $mode: é o modo de acesso do arquivo;
  • $ use_include_path (opcional): indica se o arquivo deve ser procurado nos diretórios especificados no include_path do php.ini ;
  • $context (opcional): permite a definição de um contexto, que é um conjunto de parâmetros que modificam o comportamento do arquivo.

quinta-feira, 26 de julho de 2012

.NET e C♯: Criando e Usando um Assembly

Essa é uma das postagens que se originou nas minhas pesquisas para montar aulas para um curso de .NET que eu aceitei fazer. Precisava reciclar, pois eu aprendi a usar .NET no tempo do ensino técnico, que faz uns 7 anos que me formei. Uma das coisas que percebi é a carência de material decente para .NET, sendo que o melhor é uma apostila de quando o .NET foi recém criada, ou seja, muita coisa mudou e estou me batendo muito para reciclar.

Uma das coisas que quero trabalhar são os diferenciais do .NET, afinal, não acho que vale a pena falar de um framework que faz a mesma coisa que os outros. E uma das coisas que o .NET faz bem é fazer com que programas de diversas linguagens de programação se comuniquem como se fosse a mesma linguagem. Tudo isso graças ao Assembly, que não é nada mais do que o programa em uma linguagem intermediária própria do .NET.

Nas minhas aulas, eu utilizo o  C♯ em conjunto com .NET, uma vez que a linguagem foi criada com o propósito de ser trabalhada com o .NET, mas pode ser utilizada em qualquer outra linguagem que seja compatível com o .NET.