segunda-feira, 6 de dezembro de 2010

quarta-feira, 24 de novembro de 2010

Como criar um makefile

O objetivo do make é otimizar a compilação, quando se tem projetos com muitos arquivos. Suponha, que um programa possua o códigos-fonte principal.c, funcao1.c e funcao2.c. Toda vez que é feita alguma alteração em qualquer destes arquivos, deve-se compilar novamente. O make detecta qual código foi modificado e compila apenas o que mudou.
A seguir um exemplo de makefile:

Utilize:
$ gcc principal.c funcao1.o funcao2.o -o executavel -lm

Para limpar o diretório, use:
$rm *.o executavel -f


Como usar o f2c

O F2c é um conversor de código Fortran para C.
Para converter, siga os comandos:

$ f2c hello.f
$ gcc -c hello.c
$ gcc -o hello hello.o -lf2c -lm
$ ./hello

Instalar Fortran g77

Olá!!!
Aqui vai um howto de como instalar o compilador g77, para Fortran 77.

http://ceswp.ca/ceswptech/?p=19

;)

quinta-feira, 28 de outubro de 2010

Como Eliminar numerações de equações

Simples! Se você utiliza o equation ou eqnarray, com asterisco você elimina a numeração da equação. Então...

Você quer numeração?? Use:

\begin{equation}
x+1
\end{equation}


Você NÃO quer numeração?? Use:

\begin{equation*}
x+1
\end{equation*}

A mesma coisa pro eqnarray.

Bjs!!!

Modelo Matématico em Latex

Olá! Hoje vou mostrar como escrever um modelo matemático em LateX, de forma que fique organizado e legível.

Você deve usar o eqnarray, da seguinte forma:

\begin{eqnarray}
\max && FO \\
&& R1 \\
&& R2 \\
\end{eqnarray}

Em FO você coloca sua função objetivo, e nas outras linhas, R1, R2 e outras é só colocar as restrições.
Veja um exemplo:

Foi obtido pelo código:
\begin{eqnarray*}
\min && f(x) \\
s.a. && g_i(x) \geq 0,\textrm{para } i = 1, ..., m\\
&& h_j(x) = 0,\textrm{para } j = 1, ..., p
\end{eqnarray*}

E pronto!

terça-feira, 26 de outubro de 2010

Minicurso sobre Metaheurísticas

Olá Pessoal!
Ontem eu ministrei um minicurso sobre metaheurísticas. Venho disponibilizar a vocês os slides da apresentação. Nele, eu dou uma introdução sobre alguns conceitos básicos de otimização, como definição de instância, solução ótima, vizinhança, e também falo das metaheurísticas Tabu Search, GRASP e Algoritmos Genéticos, dando uma visão geral de cada uma.

sexta-feira, 24 de setembro de 2010

Exemplo de Autômato Usando Vaucanson

Vou mostrar em detalhes como desenhar um autômato usando o pacote Vaucanson.
Quero deixar claro que há outras maneiras mais simples de desenhar. Mas como eu passei trabalho neste autômato, achei melhor explicá-lo.

Vamos desenhar o seguinte autômato:
A seguir o código em latex:

\begin{center}
\MediumPicture\VCDraw{
\begin{VCPicture}{(0,-5)(8,3)}
% states
\FinalState[1]{(0,0)}{1} \State[2]{(3,0)}{2}
\LargeState \FinalStateVar[\{1,2\}]{(8,0)}{3}
\LargeState \FinalStateVar[\{2,3\}]{(3,-3)}{4}
% initial--final
\Initial{1}
% transitions
\EdgeL{1}{2}{a}\EdgeL{1}{4}{b}
\LoopN{2}{a} \EdgeL{2}{4}{b}
\EdgeL{3}{2}{a}\ArcL{3}{4}{b}
\LoopS{4}{b} \ArcL{4}{3}{a}
\end{VCPicture}
}
\end{center}


O comando \MediumPicture desenha a figura no tamanho médio.
Inicia-se a figura com \VCDraw{
\begin{VCPicture}{(0,-5)(8,3)} Estas duas coordenadas são as dimensões da figura.

O comando \FinalState[1]{(0,0)}{1} define um estado final. O [1] equivale ao rótulo do estado que aparecerá na figura, {(0,0)} é a coordenada que o estado irá ficar, e {1} é o nome dado para trabalhar com este estado, pode ser o mesmo que [1]. Muitas vezes não é possível, quando o rótulo é bem incrementado como este:
\FinalStateVar[\{1,2\}]{(8,0)}{3}. Perceba que o nome que irá na figura é {1,2}, mas no código eu chamo este estado de {3}.

Quando você quiser colocar fórmulas nos rótulos você deve usar o comando \FinalStateVar[]{}{}.

O comando \initial{1} define um estado inicial. (Pode ser mais que um, assim como os finais.)

Rá! A hora da fazer as transições! Você deve ter ideia de como é a figura, para saber quais como vão ficar as setas. Para isso, temos 3 opções aqui:

\EdgeL{1}{2}{a} Desenha uma aresta reta, que vai do estado 1 ao 2, e tem o símbolo a na transição.
\ArcL{3}{4}{b} Desenha uma aresta curva, que vai do estado 3 ao 4, e tem o símbolo b na transição.
\LoopN{2}{a} Faz o loop no estado 2, com o símbolo a.
Bem, acho que deu para dar uma ideia. Agora é só praticar!!
;)

Como Desenhar Autômatos e Grafos em LateX

Olá!!!

Hoje vou apresentar a vocês um pacote chamado Vaucanson para desenhar autômatos ou grafos em LaTeX. Nestes sites vocês encontram o pacote para download, o manual e toda documentação:


Segue um exemplo de autômato:
Bem, só há um problema... Você tem que digitar todo o seu autômato em Latex mesmo, por linha de comando.... Não há uma ferramenta gráfica pra isso. Mas... é só praticar que você consegue! (O manual é ótimo!)

Importante: Um bug que dá na compilação usando o Kile é que ele não gera automaticamente o .pdf. Você tem que gerar o .ps primeiro. E depois converter para .pdf, se quiser.

Estou usando e é o melhor que achei até agora!
Se alguém souber de outro me avise!

Aulas de Autômatos no Youtube

Olá!

Este vídeo sobre conversão de NFA para DFA é bem prático e simples de entender!


Para aprender a fazer o Fecho Epsilon:


Para minimização de DFA's, eu encontrei somente estes vídeos, são vários:


Adorei o exemplo, pois pares com mesmos estados sobram como equivalentes. Por exemplo, sobraram como equivalentes os pares: (s0,s1), (s0,s3), (s1,s3).

O que fazer? Uni-los e transformá-los em um só estado: (s0,s1,s3).
Depois é só verficar!

Bem era isso! ;)

quinta-feira, 19 de agosto de 2010

Correção Ortográfica no Kile

Geralmente, quando o Kile é instalado, ele não vem com o dicionário em Português para correção ortográfrica. Uma solução é instalar o pacote aspell. Vá no Synaptic e instale o pacote aspell-pt.

Automaticamente, o dicionário de Português é adicionado ao Kile, e então você pode utilizar o corretor.

quarta-feira, 28 de julho de 2010

Acentos no Modo Matemático em LaTeX

Olá!
Hoje vou falar sobre os acentos no modo matemático em Latex. Muitas vezes, quando escrevemos fórmulas, precisamos colocar por exemplo, uma barra em cima de uma variável. Neste caso, uitilizamos o código \={letra que vc quer barrar}, no texto normal. Mas no modo matemático, é diferente. Veja abaixo os possíveis acentos a serem utilizados no modo matemático.
Legal né! Eu adorei achar estes comandos, afinal demorei um pouco....
Eu achei no LATEX Para Iniciantes, de David R. Wilkins, 1995.

sexta-feira, 9 de julho de 2010

Olá Pessoal!

Vou deixar hoje uma dica interessante pra quem precisa gerar documentos em formato .pdf.
No link http://www.pdfonline.com/convert-pdf/, você posta o seu arquivo, e logo recebe o seu pdf pronto por email. É rápido e simples, e você não precisa ficar dependente de nenhum programa. Dica do meu amigo Alexis!
Abraços!

segunda-feira, 28 de junho de 2010

Olá Pessoal!
Vou postar mais um probleminha. Estes problemas são bons pra quem tá iniciando, como eu!!kkk

Anões

Todos os dias, enquanto os anões estão ocupados nas minas, Branca de Neve prepara o jantar eles: sete cadeiras, sete pratos, sete garfos e sete facas para sete anões famintos. Um dia, em vez de sete, nove anões voltaram das minas (ninguém sabe como ou por quê). Cada um deles afirma ser um dos sete anões da Branca de Neve. Felizmente, cada anão usa uma touca com um número inteiro positivo menor que 100 escrito nela. Branca de Neve, uma matemática famosa, já havia observado, há muito tempo, que a soma dos números nas toucas de seus sete anões era exatamente 100. Escreva um programa que determina quais anões são legítimos, ou seja, escolhe sete dos nove números que totalizem 100.

Entrada:
A entrada conterá um inteiro T, o número de casos de testes, e para cada caso de teste, nove linhas de entrada. Cada uma com um inteiro entre 1 e 99 (inclusive). Todos os números serão distintos.

Saída: A saída deve conter, para cada caso de teste, exatamente 7 linhas. Cada uma com um dos números nas toucas dos anões de Branca de Neve (em ordem crescente).

Exemplo:

Entrada
2
7
8
10
13
15
19
20
23
25
8
6
5
1
37
30
28
22
36

Saída:
7
8
10
13
19
20
23
1
5
6
8
22
28
30

Solução: A solução é muito simples, primeiro deve-se ordenar os números de cada teste, que correspondem aos números dos anões. Depois somam-se todos estes números. Começando do primeiro e do segundo, você deve subtrair estes dois números, se o resultado der igual a 100, pronto, você deve imprimir todos os números menos estes dois que você subtraiu. Se não for você deve continuar com a subtração do segundo e o terceiro, e assim por diante.
Olá! Já que eu aprendi a usar o SyntaxHighlighter, vou publicar um problema visto na aula da TAP. A seguir a descrição dele:

Cartas
João pegou um baralho com um certa quantidade de cartas numeradas e, depois de algum esforço, conseguiu colocá-las em ordem numérica, da menor para a maior. Agora, ele quer organizá-las em colunas e, por razões estéticas, quer as colunas ordenadas em ordem não crescente de comprimentos, os quais devem ser aproximadamente iguais ou seja, o comprimento de duas colunas não podem diferir por mais de uma carta. Além disso, ele quer distribuir as cartas sequencialmente por colunas, ou seja, ele quer distribuir todas as cartas da primeira coluna, depois todas as cartas de segunda coluna e assim por diante. Escreva um programa que execute esta tarefa.

Entrada:

A entrada conterá um inteiro T, o número de casos de testes e, para cada caso de teste, uma linha com os inteiros N (1 <= N <= 1000), a quantidade de cartas, e M (1 <= M <=100), a quantidade de colunas. As cartas são numeradas de 1 a N. Não há duas cartas com o mesmo número. Saída:

A saída deve conter, para cada caso de teste, uma linha com as quantidades das cartas em cada coluna e na sequência, a distribuição das cartas.

Exemplo:

Entrada:
2
4 3
37 5

Saida:
02 01 01
| Carta 001 | Carta 003 | Carta 004 |
| Carta 002 |
08 08 07 07 07
| Carta 001 | Carta 009 | Carta 017 | Carta 024 | Carta 031 |
| Carta 002 | Carta 010 | Carta 018 | Carta 025 | Carta 032 |
| Carta 003 | Carta 011 | Carta 019 | Carta 026 | Carta 033 |
| Carta 004 | Carta 012 | Carta 020 | Carta 027 | Carta 034 |
| Carta 005 | Carta 013 | Carta 021 | Carta 028 | Carta 035 |
| Carta 006 | Carta 014 | Carta 022 | Carta 029 | Carta 036 |
| Carta 007 | Carta 015 | Carta 023 | Carta 030 | Carta 037 |
| Carta 008 | Carta 016 |

Para resolver este problema, deve calcular o resto da quantidade de cartas pela quantidade de colunas. Com isso, você deverá adicionar a cada coluna, começando da primeira à esquerda, um elemento. Feito isso, a impressão é dada da seguinte forma: O primeiro elemento é o número 1, o segundo elemento é o primeiro mais a quantidade de elementos da primeira coluna, o terceiro elemento é a soma do segundo elemento com a quantidade dos elementos da segunda coluna e assim por diante. A seguir, o código em detalhes:


#include<stdio.h>
int main(){
int t; //quantidade de testes
int n; //quantidade de cartas
int m; //quantidade de colunas
int q,r; //quociente e resto
int i, j, anterior; //auxiliares
scanf("%d", &t);
while(t--){
scanf("%d %d", &n, &m);
if((n>=1) && (n<=1000) && (m>=1)&&(m<=100)){
q = n/m;
r = n % m;
int vet[m];
for(i =0; i < m ; i++){
vet[i] = q;
}
for(i=0; i < r ; i++){
vet[i] = vet[i] + 1;
}
for(i=0; i < m ; i++){
printf("%.2d ", vet[i]);
}
printf("\n");
for(i=1; i <= vet[0] ; i++){
anterior = i;
printf("| Carta ");
printf("%.3d ", i);
if(i <= q){
for(j=0; j < (m-1) ; j++){
printf("| Carta %.3d ", vet[j]+anterior);
anterior = vet[j]+anterior;
}
}
else{//imprime os ultimos elementos
for(j=0; j < (r-1) ; j++){
printf("| Carta %.3d ", vet[j]+anterior);
anterior = vet[j]+anterior;
}
}
printf("|\n");
}
}
}
return 0;
}

Como usar o SyntaxHighLighter para publicar código-fonte no seu Blog

SyntaxHighlighter é uma ferramenta desenvolvida em JavaScript que cria caixas de texto para códigos-fonte de programas. Com o SyntaxHighlighter você pode visualizar diversas linguagens, dentre elas Shell Script, C, C++, C#, CSS, Delphi, JavaScript, Java, Perl, PHP, Python, Ruby, SQL e XML.
Através do uso desta ferramenta é possível manter o código no formato original, sem perder a identação, o código fica com linhas numeradas e o código é colorido de acordo com a linguagem. É muito útil para visualizar, exemplificar e explicar códigos-fontes em blogs ou sites de programação.
Ainda há um botão para os leitores que desejarem copiar o código.

Neste tutorial vou explicar como inserir e utilizar o SyntaxHighlighter no blog para publicar seus códigos-fonte. Primeiro faça o login, clique em Layout (ou Design) e clique em Editar HTML. Faça o backup clicando em Baixar Modelo Completo.

1º Cole o código CSS no HTML do Blogger antes de </b:skin>
/* CSS do SyntaxHighlighter */
.dp-highlighter{font-family:"Consolas", "Monaco", "Courier New", Courier, monospace;font-size:12px;background-color:#E7E5DC;width:99%;overflow:auto;padding-top:1px;margin:18px 0 !important;}
.dp-highlighter ol,.dp-highlighter ol li,.dp-highlighter ol li span{border:none;margin:0;padding:0;}
.dp-highlighter a,.dp-highlighter a:hover{background:none;border:none;margin:0;padding:0;}
.dp-highlighter .bar{padding-left:45px;}
.dp-highlighter.collapsed .bar,.dp-highlighter.nogutter .bar{padding-left:0;}
.dp-highlighter ol{list-style:decimal;background-color:#fff;color:#5C5C5C;margin:0 0 1px 45px !important;padding:0;}
.dp-highlighter.nogutter ol,.dp-highlighter.nogutter ol li{list-style:none !important;margin-left:0 !important;}
.dp-highlighter ol li,.dp-highlighter .columns div{list-style:decimal-leading-zero;list-style-position:outside !important;border-left:3px solid #6CE26C;background-color:#F8F8F8;color:#5C5C5C;line-height:14px;margin:0 !important;padding:0 3px 0 10px !important;}
.dp-highlighter.nogutter ol li,.dp-highlighter.nogutter .columns div{border:0;}
.dp-highlighter .columns{background-color:#F8F8F8;color:gray;overflow:hidden;width:100%;}
.dp-highlighter .columns div{padding-bottom:5px;}
.dp-highlighter ol li.alt{background-color:#FFF;color:inherit;}
.dp-highlighter ol li span{color:#000;background-color:inherit;}
.dp-highlighter.collapsed ol{margin:0;}
.dp-highlighter.collapsed ol li{display:none;}
.dp-highlighter.printing{border:none;}
.dp-highlighter.printing .tools{display:none !important;}
.dp-highlighter.printing li{display:list-item !important;}
.dp-highlighter .tools{font:9px Verdana, Geneva, Arial, Helvetica, sans-serif;color:silver;background-color:#f8f8f8;border-left:3px solid #6CE26C;padding:3px 8px 10px 10px;}
.dp-highlighter.nogutter .tools{border-left:0;}
.dp-highlighter.collapsed .tools{border-bottom:0;}
.dp-highlighter .tools a{font-size:9px;color:#a0a0a0;background-color:inherit;text-decoration:none;margin-right:10px;}
.dp-highlighter .tools a:hover{color:red;background-color:inherit;text-decoration:underline;}
.dp-about{background-color:#fff;color:#333;margin:0;padding:0;}
.dp-about table{width:100%;height:100%;font-size:11px;font-family:Tahoma, Verdana, Arial, sans-serif !important;}
.dp-about td{vertical-align:top;padding:10px;}
.dp-about .copy{border-bottom:1px solid #ACA899;height:95%;}
.dp-about .title{color:red;background-color:inherit;font-weight:700;}
.dp-about .para{margin:0 0 4px;}
.dp-about .footer{background-color:#ECEADB;color:#333;border-top:1px solid #fff;text-align:right;}
.dp-about .close{font-size:11px;font-family:Tahoma, Verdana, Arial, sans-serif !important;background-color:#ECEADB;color:#333;width:60px;height:22px;}
.dp-highlighter .comment,.dp-highlighter .comments{color:#008200;background-color:inherit;}
.dp-highlighter .string{color:blue;background-color:inherit;}
.dp-highlighter .keyword{color:#069;font-weight:700;background-color:inherit;}
.dp-highlighter .preprocessor{color:gray;background-color:inherit;}

2º Cole o código a seguir antes da tag </head>. São as chamadas das linguagens. Cole somente as que você utiliza.

<script src="http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shCore.js" type="text/javascript">
</script>
<script src="http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushCpp.js" type="text/javascript">
</script>
<script src="http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushCSharp.js" type="text/javascript">
</script>
<script src="http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushCss.js" type="text/javascript">
</script>
<script src="http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushDelphi.js" type="text/javascript">
</script>
<script src="http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushJava.js" type="text/javascript">
</script>
<script src="http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushJScript.js" type="text/javascript">
</script>
<script src="http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushPhp.js" type="text/javascript">
</script>
<script src="http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushPython.js" type="text/javascript">
</script>
<script src="http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushRuby.js" type="text/javascript">
</script>
<script src="http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushSql.js" type="text/javascript">
</script>
<script src="http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushVb.js" type="text/javascript">
</script>
<script src="http://syntaxhighlighter.googlecode.com/svn/trunk/Scripts/shBrushXml.js" type="text/javascript">
</script>

3º Cole o código antes da tag </body>

<script language="javascript">
dp.SyntaxHighlighter.BloggerMode();
dp.SyntaxHighlighter.HighlightAll('code');
</script>

Clique em Visualizar, e se não der nenhum problema clique em Salvar modelo.

Para adicionar o código nas postagens, basta clicar em Editar Html quando estiver fazendo seu post e adicione a tag:

<pre class="linguagem" name="code">Seu código aqui....
</pre>


No atributo class onde está escrito "linguagem", deve-se escrever a linguagem que irá utilizar (por exemplo C, C++, Java, Delphi, XML, HTML).
A listagem completa você encontra aqui.


OBS.: Para quem for usar o símbolo "<" em seu código, substitua-o por "&lt;"

A seguir, um exemplo do uso de SyntaxHighlighter:


#include<stdio.h>
int main(){
printf("Hello World finalmente!!!");
return 0;
}

Estudando correio eletrônico - Aula Prática

Vamos estudar o serviço de Correio Eletrônico utilizando o Apache James Server , um rico conjunto de módulos e bibliotecas escritos em Java,...