ldev

tecnologia e afins…

mintermos e maxtermos

com 2 comentários

Na álgebra booleana, qualquer função booleana pode ser expressada na sua forma canônica usando os conceitos de mintermos e maxtermos.

  • mintermos

Um mintermo é um produto no qual todas as n variáveis aparecem uma única vez. Considere uma função E(x_1,x_2,...,x_n) definida por uma soma de produtos, onde cada variável aparece uma única vez. Essa função representa uma soma de mintermos. Note que a quantidade máxima de mintermos de uma função com n variáveis é 2^n. Por exemplo:

E(x_1,x_2,x_3) = \bar{x_1}.x_2.x_3 + x_1.\bar{x_2}.\bar{x_3} + x_1.x_2.x_3 é uma soma de mintermos.

H(x_1,x_2,x_3) = x_1.x_2.x_3 é uma soma de mintermos.

U(x_1,x_2,x_3) = x_1.x_2.\bar{x_2} não é uma soma de mintermos, pois x_2 apareceu duas vezes em um mesmo termo.

Utiliza-se a notação m_k para designar um mintermo, onde k é o valor decimal equivalente ao mintermo. Variáveis diretas (não barradas) representam o “1″ lógico e os seus complementos representam 0. Exemplo:

Y(x_0,x_1,...,x_n) = m_0 + m_1 + m_2 + ... + m_{2^n-1} – forma geral de uma soma de mintermos.

Vamos representar a soma de mintermos E(x_0,x_1,x_2) = x_0.x_1.\bar{x_2} + x_0.\bar{x_1}.x_2 + \bar{x_0}.x_1.x_2 usando a notação. Veja que x_0.x_1.\bar{x_2} equivale a 110_2 = 6 (já que as variáveis diretas equivalem a 1), x_0.\bar{x_1}.x_2 = 101_2 = 5 e, finalmente, \bar{x_0}.x_1.x_2 = 011_2 = 3. Logo E(x_0,x_1,x_2) = m_6 + m_5 + m_3

De uma forma mais compacta, podemos representar a função acima como E(x_0,x_1,x_2) = \sum{m(6,5,3)}.

  • maxtermos

Maxtermos, de certa forma, é o oposto de um mintermo. Um maxtermo é uma soma no qual todas as n variáveis aparecem uma única vez. Considere uma função F(x_0,x_1,x_2) definida por um produto de somas, onde cada variável aparece uma única vez. Essa função representa um produto de maxtermos. Assim como os mintermos, a quantidade máxima de termos no produto de maxtermos é dada por 2^n, onde n é a quantidade de variáveis da função. Por Exemplo:

F(x_0,x_1,x_2) = (x_0+x_1+x_2).(x_0+x_1+\bar{x_2}) é um produto de maxtermos.

U(x_0,x_1,x_2) = (x_0+x_1+x_2).(x_0+x_1+\bar{x_1}) não é um produto de maxtermos.

Utiliza-se a notação M_k para designar um mintermo, onde k é o valor decimal equivalente ao mintermo. Variáveis diretas (não barradas) representam o “0” lógico e os seus complementos representam 1. Exemplo:

Y(x_0,x_1,...,x_n) = M_0.M_1.M_2. ... .M_{2^n-1} – forma geral de um produto de maxtermos.

Vamos representar a soma de maxtermos E(x_0,x_1,x_2) = (x_0+x_1+\bar{x_2}).(x_0+\bar{x_1}+x_2).(\bar{x_0}+x_1+x_2) usando a notação. Veja que x_0+x_1+\bar{x_2} equivale a 001_2 = 1 (já que as variáveis diretas equivalem a 0), x_0+\bar{x_1}+x_2 = 010_2 = 2 e, finalmente, \bar{x_0}+x_1+x_2 = 100_2 = 4. Logo E(x_0,x_1,x_2) = M_1.M_2.M_4

De uma forma mais compacta, podemos representar a função acima como E(x_0,x_1,x_2) = \prod{M(1,2,4)}.

  • observações

1) Note que o complemento de um mintermo é o seu maxtermo correspondente e vice-versa. Exemplo:

\overline{m_3} = \overline{\overline{x_0}.x_1.x_2} = (x_0 + \overline{x_1} + \overline{x_2}) = M_3

2) Toda função lógica tem uma soma canônica de produtos equivalente. Exemplo:

y = b.c \rightarrow y = b.c.1 \rightarrow y = b.c.(\bar{a} + a) \rightarrow y = \bar{a}.b.c + a.b.c

Escrito por Lucas Nogueira

março 20, 2010 em 7:54 pm

Publicado em eletrônica, matemática

Etiquetado com ,

Instalando fontes Microsoft True Type no Ubuntu

fazer um comentário »

Existe um pacote no repositório do Ubuntu chamado ttf-mscorefonts-installer, que instala algumas fontes como: Arial, Comic Sans MS, Times New Roman, Impact, Verdana, etc…

Para instalar esse pacote, digite no terminal:

sudo apt-get install ttf-mscorefonts-installer

Agora atualize o cache das fontes:

sudo fc-cache -fv

Escrito por Lucas Nogueira

março 19, 2010 em 5:58 pm

Publicado em Linux, tutoriais

Etiquetado com

integrando o LaTeX ao Open Office

fazer um comentário »

O LaTeX é uma ferramenta tipográfica muito útil no meio acadêmio. Para facilitar a escrita de equações, ou até mesmo de textos em LaTeX, criou-se uma integração com o Open Office. Para fazê-lo no seu OO, siga os passos:

  • Antes de tudo, baixe o TeX e outras ferramentas…

sudo apt-get install texlive imagemagick epstool

  • Na atual versão do Ubuntu, o Karmic Koala, a libstdc++5 foi retirada, gerando alguns problemas de dependência em alguns programas. O OOoLatex é um desses programas. Para corrigir esse problema, baixe o libstdc++5_3.3.6-17ubuntu1_i386.deb aqui. Então, digite no terminal:

sudo dpkg -i libstdc++5_3.3.6-17ubuntu1_i386.deb

  • Agora baixe e instale algumas fontes necessárias para o LaTeX.

mkdir OOoLatexFonts
cd OOoLatexFonts
wget http://mesh.dl.sourceforge.net/sourceforge/ooolatex/OOoLatexFonts.zip
unzip OOoLatexFonts.zip
cd ..
sudo mv OOoLatexFonts /usr/share/fonts/truetype/.
sudo fc-cache -f /usr/share/fonts/truetype

  • (Opcional) Se você quiser mais qualidade para as imagens feitas com o LaTeX nos seus documentos, baixe o pacote latex2emf para a arquitetura do seu computador neste link. Após o download:

tar -xzvf latex2emf_Linux_i386_binary.tar.gz
cd latex2emf_Linux_i386_binary/
sudo ./install.sh

  • Finalmente, vamos efetivamente instalar o OOoLaTeX :D Nesta página, baixe a última versão do OOoLatex. Atualmente, a última versão disponível é a OOoLatex-4.0.0-beta-2-linux.oxt. Logo após, digite no term:

/usr/lib/openoffice/program/unopkg.bin add OOoLatex-4.0.0-beta-2-linux.oxt

Depois desse último passo, aceite a licensa e usufrua dos grandes poderes do LaTeX :)

Escrito por Lucas Nogueira

março 19, 2010 em 3:25 pm

Publicado em matemática, tutoriais

Etiquetado com

instalando MATLAB no linux

com 13 comentários

Todo aluno de engenharia deve conhecer algumas ferramentas que ajudam a resolver problemas. Uma dessas ferramentas é o MATLAB. “O MATLAB integra análise numérica, cálculo com matrizes, processamento de sinais e construção de gráficos em ambiente fácil de usar onde problemas e soluções são expressos somente como eles são escritos matematicamente, ao contrário da programação tradicional.” Wikipedia

Agora vamos baixar e instalar o MATLAB.

1) Primeiramente, você deve baixar o MATLAB para o Linux. Baixe este torrent (The Pirate Bay). Ele tem cerca de 1.1GB e contém 3 Cds. Ao baixá-lo, extraia o .zip e você verá estes arquivos: license.dat  MathWorks_R14_1.iso  MathWorks_R14_3.iso license.lic  MathWorks_R14_2.iso  readme_lic.txt

2) Agora você deverá criar uma pasta para o MATLAB. Aqui, ela está em /usr/local/matlab. Para criá-la, vá no terminal e digite:

$ sudo mkdir /usr/local/matlab

3) Após ter feito isso, você deverá copiar os arquivos license.dat e license.lic, que estão na pasta do .zip extraído do torrent, para a pasta do MATLAB (no caso, /usr/local/matlab).

4) Monte o CD 1 do MATLAB. Para isso, vá no terminal e digite:

$ sudo mount -o loop MathWorks_R14_1.iso /mnt

5) Inicie o script de instalação

$ sudo sh /mnt/install

No decorrer da instalação, o setup lhe pedirá para inserir os discos 2 e 3, então você digitará um comando semelhante ao passo 4, mudando apenas o nome do .ISO:

$ sudo mount -o loop MathWorks_R14_2.iso /mnt

$ sudo mount -o loop MathWorks_R14_3.iso /mnt

6 ) Instalação completa! NÃO INICIE O MATLAB AGORA. Abra o arquivo “license.lic”, que é para estar na pasta do MATLAB e substitua o trecho “your_host_name” pelo nome da sua máquina. Se você não sabe o nome da sua máquina, digite no terminal:

$ hostname

Então copie o license.lic editado para /usr/local/matlab/etc.

7) Também copie o script /usr/local/matlab/bin/scripts/matlab para /usr/local/matlab/bin/

8 ) Após ter feito a cópia do license.lic e do script matlab (passos 6 e 7, respectivamente), inicie o script de pós-instalação do MATLAB.

$ sudo sh /usr/local/matlab/install_matlab

Nesse script, se você não quiser alterar as configurações padrões, digite ENTER, ENTER… Até a instalação terminar.

9) Bazzinga! Para iniciar o MATLAB, no terminal, digite:

$ matlab

ou

$ /usr/local/matlab/bin/matlab

Escrito por Lucas Nogueira

fevereiro 26, 2010 em 12:32 pm

Publicado em física, Linux, matemática, programas, tutoriais

Etiquetado com , ,

gerando lista de pacotes instalados

com um comentário

Antes de instalar uma nova distribuição Linux ou atualizar o sistema, é bom termos uma lista dos pacotes estão instalados, para, após a instalação, podermos instalar novamente os pacotes que tínhamos.

Para gerar a lista dos pacotes instalados, digite no terminal:

$ dpkg –get-selections | grep -v deinstall > ubuntu-files

OBS: O WordPress interpreta dois traços (- -) como um único traço (–). Então, certifique-se de que, quando você estiver digitando os comandos no terminal, você esteja colocando os dois traços quando necessário.

Isso gerará o arquivo ubuntu-files, que contém o nome de diversos pacotes instalados. Agora, faça o backup desse arquivo. No novo sistema, copie o arquivo ubuntu-files para a sua home e digite no terminal:

$ dpkg –set-selections < ubuntu-files

$ sudo dselect

Os comandos acima farão o sistema novo instalar os pacotes contidos no arquivo ubuntu-files. Após a instalação, digite ‘Q’ e aperte enter, para sair do dselect.

@arsgeek

Escrito por Lucas Nogueira

fevereiro 20, 2010 em 8:54 pm

Publicado em Linux, tutoriais

Etiquetado com , , ,

programando no editor nano

fazer um comentário »

O nano é um editor de textos muito leve e simples que funciona no terminal. Assim como outros editores terminal-based, podemos customizá-lo para facilitar a escrita de programas.

O nano já traz um arquivo de configuração como exemplo. Ele se localiza em /usr/share/nano/examples, então, se você quiser usar esse exemplo e modificar (o arquivo já vem bastante comentado), faça o seguinte:

$ cp /usr/share/nano/examples/nanorc.sample ~/.nanorc

$ gedit ~/.nanorc

O meu .nanorc está da seguinte maneira:

set autoindent
set brackets “”‘)>]}”
set matchbrackets “(<[{)>]}”
set mouse
include “/usr/share/nano/nanorc.nanorc”
include “/usr/share/nano/c.nanorc”
include “/usr/share/nano/python.nanorc”
include “/usr/share/nano/java.nanorc”
include “/usr/share/nano/sh.nanorc”

Escrito por Lucas Nogueira

janeiro 31, 2010 em 4:05 pm

Publicado em Linux, programação, tutoriais

Etiquetado com ,

renomear arquivos em massa com shell script

com um comentário

Muitas vezes, obtemos arquivos com nomes bastante estranhos. Se você baixar imagens diretamente de álbums do Orkut, os títulos dos arquivos serão vários caracteres randômicos. Isso pode tornar a identificação do arquivo um pouco difícil. Algumas câmeras digitais também dificultam a identificação do arquivo, pois, em vez de criar prefixos que identificassem circunstâncias relevantes das fotos, elas criam prefixos inúteis. Ex: DSC00845.JPG (Câmeras da Sony).

Através de um pequeno script, podemos renomear em massa arquivos de uma mesma pasta. Veja o script abaixo:

#!/bin/sh

if [ $# -eq 2 ]
then
 i=0
 files=`ls -1 $1`

 for file in $files
 do
 filename="$file"
 fileextension=$(echo $filename | awk -F . '{print $NF}')

 echo "$filename will be renamed to $2-$i.$fileextension"

 i=$((i+1))
 done

 echo
 echo "Do you really want to rename these files? (y/n)"
 read yesno

 if [ "$yesno" = "y" ]
 then
 i=0
 files=`ls -1 $1`

 cd $1

 for file in $files
 do
 filename="$file"
 fileextension=$(echo $filename | awk -F . '{print $NF}')

 echo "renaming $filename to $2-$i.$fileextension ..."

 mv $filename $2-$i.$fileextension

 i=$((i+1))
 done
 else
 exit
 fi

elif [ $# -ne 2 ]
then
 echo "Usage:"
 echo "$0 (dir) (new_prefix)"
 echo "(dir) -> directory where the files that will be renamed are located"
 echo "(new_name) -> the pattern name"
fi

A usagem desse script é bem simples. Cole o código acima em algum editor de texto e salve o arquivo. Aqui eu o armazenei como massrename.sh. Agora abra um terminal e vá para o diretório onde o script se localiza. Estando no diretório correto, digite:

$ ./massrename.sh  <diretório onde se localizam os arquivos a serem renomeados> <prefixo>

Veja um exemplo:

$ ./massrename.sh /home/lucas/pics/aniversario bday_lucas

De acordo com o exemplo, os arquivos da pasta /home/lucas/pics/aniversario serão renomeados para: bday_lucas-0.JPG, bday_locas-1.JPG, etc…

Escrito por Lucas Nogueira

janeiro 30, 2010 em 11:16 am

Publicado em Linux, programação

Etiquetado com

checar atualização em páginas com shell script

fazer um comentário »

Nessa semana, o resultado do vestibular 2010.1 da UFC saiu. Graças a Deus eu passei. Mas, antes disso, eu sempre ficava checando a página da CCV (Comissão Coordenadora de Vestibular) para ver se eu já poderia olhar a lista dos aprovados.

Mas, então, tive uma ideia: “Por que não faço um script que faça esse trabalho pra mim?”. Então pensei em como faria o tal script e assim o fiz:

O script baixa a página sem o resultado e usa ela como um modelo. De 5 em 5 minutos, a página é baixada novamente, sendo, então, comparada com a página modelo. Se houver mudança, o usuário é alertado, senão o processo é reiniciado.

pagina=http://www.ccv.ufc.br/newpage/vtb/vtb2010/vestib2010.php #mude aqui
modelo=modelo.php
temp=temp.php
alerta=acorda.mp3 #mude aqui
delay=300

clear

wget -q $pagina -O $modelo

while [ 1 = 1 ]
do
 echo "Checando a página..."
 wget -q $pagina -O $temp

 cmp -s $modelo $temp

 if [ $? = 0 ]
 then
 echo "Não houve mudança. Daqui a $delay segundos haverá uma nova checagem."
 echo "última checagem: "
 date
 echo
 else
 echo "HOUVE MUDANÇA!"
 echo "Para sair, digite CTRL + C"
 mplayer -loop 0 $alerta
 exit
 fi

 rm $temp
 sleep $delay
done

OBS: Para me alertar, eu abri um sinal sonoro usando o mplayer. Caso você queira apenas um alerta visual, tente usar xdialog.

Escrito por Lucas Nogueira

janeiro 29, 2010 em 1:52 pm

Publicado em Linux, programação, programas

Etiquetado com , , ,

Introdução ao Zilog Z80

fazer um comentário »

Antes de você ler esse artigo, é bom que você tenha conhecimentos de sistemas numéricos, conversão de bases etc, pois tudo isso será útil ao trabalhar com eletrônica digital e programação em baixo nível.

Leia o resto deste post »

Escrito por Lucas Nogueira

janeiro 17, 2010 em 9:57 pm

Publicado em eletrônica, programação

Etiquetado com , ,

instalando o lamp no ubuntu karmic koala

fazer um comentário »

Simples e rápido:

Abra o terminal e digite:

sudo apt-get install lamp-server^

Escrito por Lucas Nogueira

janeiro 15, 2010 em 11:17 pm

Publicado em Linux

Etiquetado com , ,

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.