Árvore Binária – Percursos Pré, Em e Pós Ordem

Código simples em Java de percurso em árvores binárias Pré, Em e Pós ordem.

Exemplo de leitura Pré, Em e Pós Ordem da árvore:

árvore binária

—————————————–
PreOrdem (RED): F,B,A,D,C,E,G,I,H
InOrdem (ERD): A,B,C,D,E,F,G,H,I
PosOrdem (EDR): A,C,E,D,B,H,I,G,F
—————————————–

Percurso árvore binária

Continuar lendo Árvore Binária – Percursos Pré, Em e Pós Ordem

C++ Threads com Time To Live (TTL)

Este tutorial tem por objetivo demonstrar o controle de threads em C++ com o uso de uma thread monitora (pthread_t _killthis) em conjunto com o conceito de ‘TTL’ ou Time to Live – tempo de vida da thread. A ideia central é: Execute o meu método (ponteiro de função) em uma thread até que ele termine, ou que, o tempo definido (em segundos) se esgote.

Este artigo envolve conceitos de threads (pthread_t), ponteiros (*), ponteiro de função (void (*pfuntoexecute)(void*)), classes, sleep, parameters do tipo void* (reinterpret_cast…), join de threads (pthread_join), etc, que não serão explicados neste tutorial.

001_codigo_cpp

Continuar lendo C++ Threads com Time To Live (TTL)

Download imagens C++ (linux)

Obs.: Código atualizado em 20/09/2014 – 21:28 – Correções para download de imagens sem o header Content-Length.

Tutorial de como fazer downloads de imagens, páginas (html), arquivos, etc. através do uso de sockets em linguagem C++ (So linux) e tratamento do http header response (http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html). Sugestões e melhorias são bem vindas, ainda mais observando-se que eu não sou um desenvolvedor profissional de cpp.

Código desenvolvido no DevC++ Orwell e CygWin, usado para emular o ambiente de desenvolvimento gnu/linux no windows. Este código foi testado no SO linux também.

Resultado:

001

Continuar lendo Download imagens C++ (linux)

DevC++ Windows + CImg.h

Este tutorial tem por objetivo ensinar como usar e configurar o CImg.h (http://cimg.sourceforge.net/download.shtml) com o DevCpp (Dev C++) em ambiente Windows, projeto de nível hello world.

De acordo com os criadores, a CImg.h é:

The CImg Library is a small, open source, C++ toolkit for image processing

CImg defines classes and methods to manage images in your own C++ code. You can use it to load/save various file formats, access pixel values, display/transform/filter images, draw primitives (text, faces, curves, 3d objects, …), compute statistics, manage user interactions on images, and so on…

– retirado de http://cimg.sourceforge.net/

Resultado final – blur image jpg:

0devcpp e CImg.h

Continuar lendo DevC++ Windows + CImg.h

Lista dinâmica duplamente encadeada – C#

Autor: Emerson Shigueo Sugimoto 08/03/2014

Criei este projeto para resolver um problema que envolvia LinquedList (C#), que por definição é uma lista duplamente ligada. O objetivo do projeto é o desenvolvimento de uma biblioteca de objetos genéricos armazenados em uma lista duplamente ligada com inserção ordenada.

Exemplo de Entrada:

LinkedList lqDt = new LinkedList();
UtilLinquedList.AddLinkedList(ref lqDt, new LQData(DateTime.Now));
UtilLinquedList.AddLinkedList(ref lqDt, new LQData(DateTime.Now.AddDays(-1)));
UtilLinquedList.AddLinkedList(ref lqDt, new LQData(DateTime.Now.AddDays(-4)));
UtilLinquedList.AddLinkedList(ref lqDt, new LQData(DateTime.Now.AddDays(10)));

txt1.Text = UtilLinquedList.Print(lqDt) + Environment.NewLine + Environment.NewLine;

LinkedList lqInt = new LinkedList();
UtilLinquedList.AddLinkedList(ref lqInt, new LQInt(3));
UtilLinquedList.AddLinkedList(ref lqInt, new LQInt(20));
UtilLinquedList.AddLinkedList(ref lqInt, new LQInt(14));
UtilLinquedList.AddLinkedList(ref lqInt, new LQInt(-7));
UtilLinquedList.AddLinkedList(ref lqInt, new LQInt(1));
UtilLinquedList.AddLinkedList(ref lqInt, new LQInt(3));

txt1.Text += UtilLinquedList.Print(lqInt) + Environment.NewLine + Environment.NewLine;

LinkedList lqPessoa = new LinkedList();
UtilLinquedList.AddLinkedList(ref lqPessoa, new LQPessoa(new Pessoa() { Nome = "Emerson", Idade = 10 }));
UtilLinquedList.AddLinkedList(ref lqPessoa, new LQPessoa(new Pessoa() { Nome = "Maria", Idade = 7 }));
UtilLinquedList.AddLinkedList(ref lqPessoa, new LQPessoa(new Pessoa() { Nome = "Alana", Idade = 20 }));
UtilLinquedList.AddLinkedList(ref lqPessoa, new LQPessoa(new Pessoa() { Nome = "Denise", Idade = 20 }));
UtilLinquedList.AddLinkedList(ref lqPessoa, new LQPessoa(new Pessoa() { Nome = "Kurtis", Idade = 15 }));
UtilLinquedList.AddLinkedList(ref lqPessoa, new LQPessoa(new Pessoa() { Nome = "Paula", Idade = 9 }));
UtilLinquedList.AddLinkedList(ref lqPessoa, new LQPessoa(new Pessoa() { Nome = "Gogh", Idade = 7 }));
UtilLinquedList.AddLinkedList(ref lqPessoa, new LQPessoa(new Pessoa() { Nome = "Four", Idade = 4 }));

txt1.Text += UtilLinquedList.Print(lqPessoa) + Environment.NewLine + Environment.NewLine;

Exemplo de saída do sistema:

SaidaDoubleLinquedList
Continuar lendo Lista dinâmica duplamente encadeada – C#

Eclipse Rede Neural Neuroph – rede OU

Fiz esta rede neural simples para ajudar um amigo meu na disciplina de Sistemas Inteligentes do curso de BSI na UTFPR.

Este tutorial ensina a criar uma rede neural no Eclipse sob a biblioteca Neuroph. A rede neural executa a operação lógica OU (||). Recordando:

false || false : false
true || false : true
false || true : true
true || true : true

Passo 1:
Acessar o site do Neuroph: http://neuroph.sourceforge.net/download.html
E fazer download do neuroph-2.7: http://sourceforge.net/projects/neuroph/files/latest
Extraia o arquivo: neuroph-core-2.7.jar

O software Eclipse pode ser encontrado aqui: http://www.eclipse.org/downloads/

Passo 2:
Criar um novo projeto no Eclipse com o nome de: JavaNeuroph001
Adicione a pasta de nome ‘lib’ e dentro dela o arquivo ‘neuroph-core-2.7.jar’:

lib neuroph

Continuar lendo Eclipse Rede Neural Neuroph – rede OU

Conversão de Bases (Decimal,Binário,Octal,Hexadecimal)

Devo ressaltar que o Java (e demais linguagens) possuem funções em suas libs para conversão de base, o artigo ter por função auxiliar a aprendizagem.
Este artigo descreve funções em Java para conversão de bases numéricas:

  • Decimal
  • Binário
  • Octal
  • Hexadecimal

Exemplo de saída:

Saída conversão bases

Para entender mais sobre conversão de bases leia:
http://pt.wikipedia.org/wiki/Sistema_octal
http://www.calculadoraonline.com.br/conversao-bases

Continuar lendo Conversão de Bases (Decimal,Binário,Octal,Hexadecimal)

Cursor SQL Server

O tutorial é muito simples e não faz mais do que um SELECT * faria. A ideia é mostrar o conceito de cursor no SQL Server. O uso desta ferramenta pode ser muito útil e solucionar uma série de problemas complexos de forma rápida e fácil (aninhe cursores por exemplo).

[1] No SQL Server crie a data base testesdb e a tabela tabela1:

data base

USE [testesdb]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[tabela1](
	[id] [int] IDENTITY(1,1) NOT NULL,
	[nome] [varchar](50) NOT NULL,
	[porcentagem] [numeric](8, 2) NOT NULL,
 CONSTRAINT [PK_tabela1] PRIMARY KEY CLUSTERED
(
	[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF
GO

Continuar lendo Cursor SQL Server

Comandos básicos EMGU

– Carregar imagem do arquivo:

Image<Bgr, Byte> imagem = new Image<Bgr, Byte>(caminhoImagem);

– Carregar imagem do objeto Capture:

Image<Bgr, Byte> imagem = capWebCam.QueryFrame();

– Copiar imagens:

Image<Bgr, Byte> imagemCopy = imagem.Copy();
Image<Bgr, Byte> imagemCopy = imagem.CopyBlank();

– Redimensionar imagens:

imagemR = imagem.Resize(320,420, INTER.CV_INTER_CUBIC, true);

– Image Gray

Image<Gray, Byte> imagemGray = imagem.Convert<Gray, Byte>();

Continuar lendo Comandos básicos EMGU