Divagações...

quarta-feira, 21 de abril de 2010

Pilhas

Pilhas são estruturas de dados que visam armazenar elementos em termos do seguinte conceito: o ultimo elemento inserido é o primeiro elemento que será removido, são conhecidas como estruturas LIFO ( last in, first out ). São denominadas em analogia a pilhas de pratos ou livros, que para não corromper a estrutura é preciso tirar o primeiro elemento e assim por diante, até a pilha esvaziar. Para elucidar como as pilhas funcionam, e ententer como a sua lógica pode ser usufruia na confecção de programas para resolver determinados problemas  segue um codigo em C++, que utiliza de pilhas para converter numeros em decimais em numeros de base 2 a 9:

terça-feira, 13 de abril de 2010

Lista simplesmente ligada - Inserção

O esquema acima representa uma lista ligada, onde cada nó contem duas posições de memoria, um destinado as informações da lista, como nomes, valores, etc, e o segundo reservado aos ponteiros que fazem as referencias aos outros nós, seu sucessor e antecessor.

Algoritmo e Pensamento

Pensamentos são constituídos de palavras e imagens, e são manipulados pelo cérebro como forma de representar o mundo que nos cerca. Assim como nos algoritmos, para que o pensamento se realize, é necessário dados de entrada, ou estímulos externos, no caso da mente, que por meio destes pode evocar da memoria informações e efetuar computações.

Necessitamos da linguagem, constituida de palavras, para formular raciocínios e dar vazão a expressão dos pensamentos, analogamente, os algoritmos operam sobre dados, a fim de que alguma computação seja realizada. Sem a linguagem, os dados que usamos para nossas computações internas, não seriamos capazes de representar nosso pensamento, embora algumas correntes da psicologia afirmam que antes mesmo de aprendermos um idioma estamos aptos a modelar o mundo de outras formas. É o modelo, input/output, dados (algoritmos) ou estímulos (ambiente), que gera respostas de acordo com as entradas, que no caso dos algoritmos são deterministicas, e no nosso caso, subjetivas, intrínsecas aos nossos valores pessoais e/ou crenças.

Sobrecarga de operadores

As linguagens de programação, como C++, possuem tipagem forte, isto é, mantem associado aos tipos que variaveis podem assumir regras bem definidas. Em outras palavras, os tipos float, int, double, tem caracteristicas que as diferenciam, com um conjunto de operaçoes proprias. Por exemplo, o tipo int alem das operações aritmeticas, suporta o modulo de um numero, mod, o qual retorna o resto de uma divisão, operação não aceita em um float ou double. Com essas informações quero mostrar o mecanismo de conceber novos tipos de dados genericos, em C++, onde o programador é o responsavel por definir as operações sobre eles, a sobrecarga de operadores.

Esse topico de C++ destina-se a aplicar os operadores nativos ( +, -, *, / , <<, >> ) para os da


segunda-feira, 12 de abril de 2010

Fila

Filas são construidas em termos de listas ligadas, mas sua conceituação difere na maneira comos os dados são inseridos e removidos. Nesse caso, as filas são conhecidas como estruturas FIFO ( first in, first out ), ou seja, o primeiro elemento inserido, é o primeiro elemento que sai. As filas existem para suprir a necessidade de estabelecer uma dada ordem entre conjuntos de elementos. Por exemplo, uma fila de acesso a uma impressora, onde o primeiro processo que chega é o primeiro que toma os recursos para impressão, e também, o acesso aos dados de um servidor, onde as ordens de requisição obedecem uma ordem, implementados, possivelmente por uma fila.


Lista simplesmente ligada

Listas ligadas são um outro tipo de estrutura de dados, e em conjunto com as estruturas nativas da linguagem de programação, vetores e matrizes, visam manejar e organizar os dados de um determinado modo. As listas ligadas foram criadas para contornar o problema de estruturar os dados em vetores e matrizes, que dispondo os dados de modo sequencial, com acesso indexado, apresentam a desvantagem de lenta velocidade de inserção e remoção de elementos, visto que é preciso alterar todo o conjunto em caso de uma remoção no inicio de um vetor, reposicionando todos os demais, o que consome muito tempo de computação.