sexta-feira, 23 de setembro de 2005

Contando de 1 a 100 (ANSI C)

É o quê, hômi?
Contando de 1 a 100, sem uso de condicionais (if-then), nem loops. Lembrem que os operadores lógicos também não são permitidos (&&, ||, etc...). Mas, porque não pode usar os operadores lógicos?
Porque dizer "sem instruções condicionais", significa "sem operadores condicionais" em C. Isso se justifica pelo fato que todas as expressões em C (e C++) são sentenças (statements), uma vez que você sempre pode ignorar o resultado de uma expressão. E todos os operadores (incluindo os binários - &&, ||, ~, etc. - e unários) são também expressões, logo (juntando 1 com 2 na breve demonstração acima) todos os operadores são também sentenças.

(código obtido de Sitikant Sahu/Índia)

#include <stdio.h>
void func2(int lower,int upper);
void func(int lower,int upper)
{
printf("%d\n",upper);
func2(lower,--upper);
}
void func3(int lower,int upper)
{
exit(-1);
}
void func2(int lower,int upper)
{
void (*a)(int,int);
a = ((int)(&func) * !(!(upper-lower))) + ((int)(&func3) * (!(upper-lower))) ;
a(lower,upper);
}
main()
{
int lower,upper;
scanf("%d",&lower);
scanf("%d",&upper);

func2(lower-1,upper);
}

quinta-feira, 22 de setembro de 2005

UPnP CyberLink

Last month (august, 1st), an UPnP library I suggested to the OSSO Connectivity group personnel, was delivered on SourceForge. The new was sent on the Satoshi's Blog: http://www.cybergarage.org/blog/archive/2005_08_01_skonnoblog.html
Satoshi Konno is an engineer from Japan, and the main developer of CyberLink for C library. He made 2 (two) more versions of CyberLink before: one for C++ programmers, and another for Java developers. I made some contributions for this and the old (C++) release...
This is a very good new; OSSO is wanting for something non-C++ related for his UPnP applications, and the very stable version of CyberLink was, until then, the C++ release. This one is a very complete implementation, with a lot of features, like most of AV (audio-visual) aspects of UPnP. The C version of CyberLink only needs this missing AV features, but is very stable and well optimized, and was ready for working in embedded devices, like the japanese device T-Engine (in japanese; only Sobral would be able to read this page, I guess!) :)
This, definitely, is not the first effort to construct a stable UPnP implementation: several developers around the world invest his own time to create UPnP APIs, and some enterprises, like Intel made one implementation too. I had opportunity to use some of them... But I think CyberLink is the most well-designed and "developer friendly" UPnP library. And it is free (it has a BSD license).

quarta-feira, 21 de setembro de 2005

Primeiro Post do Garoto Hipotenusa

Depois de muito insistir em não criar esse blog, e após tanta pressão, criei agora um blog público, junto com a galera do Instituto.
Devo dizer que não é meu primeiro blog. Tenho outros blogs, alguns fictícios (para extravasar minha parte criativa!), outros diários pessoais, ou de grupos do qual participo (ou participei). Apesar da grande insistência: não, não vou dizer quais os nomes desse blogs! ;) Apenas espero que vocês continuem dando uma olhada por aqui, e que encontrem sempre coisas curiosas e interessantes...
Não vou escrever muita coisa aqui, quem quiser, pode dar uma olhada no meu perfil no Orkut: http://www.orkut.com/Home.aspx?xid=1511306046830256280
Voltar agora pra essa loucura de bateria de testes que não acaba nunca...