Social Icons

Mostrando postagens com marcador Programação. Mostrar todas as postagens
Mostrando postagens com marcador Programação. Mostrar todas as postagens

LOIC - Instalação e Uso (Linux)


Desde que o grupo Anonymous usou o Low Orbit Ion Cannon (LOIC) para atacar uma serie de empresas que entraram no caminho do Wikileaks, este software tem sido colocado no centro das atenções.






LOIC é uma aplicação open source de ataque de rede, escrito em C. LOIC executa uma negação de serviço, ataque (DoS) (ou quando utilizados por várias pessoas, um ataque DDoS) em um local de destino, inundando o servidor com os pacotes TCP, UDP, HTTP ou pedidos com a intenção de interromper o serviço de um determinado host. As pessoas têm usado para se juntar LOIC alguns botnets.

O LOIC pode ser usando para testar reações em servidores contra tal ataque e também para testar os mecanismos de segurança dos envolvidos.

LOIC esta disponível no sistema operacional Windows XP ou superior, mas claro que é possível também usar no GNU/Linux com algumas manipulações.

Instalando o LOIC


Provavelmente e possível a instalação em todas as distribuições linux. Nessa tutorial estou usando o Ubuntu 11.04.

Começamos instalando os seguinte programas:

No Ubuntu/Debian entre no shell e execute:

sudo apt-get install git-core monodevelop

Encontrei um script que nos permite: Inicia, atualizar e executar o LOIC.

mkdir ~loic 

Baixe o script http://www.4shared.com/file/rly7YCfe/loic.html
e Depois:

mv loic.sh /home/bhior/~loic
cd ~loic
chmod a+x loic.sh


Instalando o LOIC.

Entre com o seguinte comando:

./loic.sh install

O script ira baixar a ultima versão dispobivel, e em seguinda, executar uma instalação no diretorio ~/loic/LOIC.

Atualizando o LOIC

Entre com o seguinte comando:

./loic.sh update

O script irá verificar a existência de uma nova versão disponível no GIT, e em seguida, executar uma instalação no diretório ~/loic/LOIC.

Iniciando o LOIC

Agora e a parte importante:

./loic.sh run

A seguinte janela deverá aparecer:



Não testem este software em um site que não pertence a você! Na verdade, o software não tem nenhum mecanismo para esconder o seu endereço IP, e você será mais facilmente detectado pelo site de destino. Mesmo sem prever o futuro sei que muitos não vão seguir o apelo. hahaha...

Por padrão, o tipo de ataques de inundação são lançados no TCP/80 porta (mas é possível fazer ataques UDP ou HTTP). 10 processos são executados em paralelo.


A interface gráfica e de fácil utilização, crio que e difícil alguém que terá dificuldades.
Segundo @LulzSecBrazil Sexta Feira às 20:20 terá um novo ataque...
Você pode também usar JS LOIC. Pesquisando no google acha os links é exatamente igual sem instalar nada...




Boa Sorte e façam bom Uso!

Entrevista do Linus Torvalds ao G1 no Brasil!

Entrevista do Famoso Linus Torvalds para o G1, quando ele veio para o Brasil em uma conferência de Open Source em Florianópolis, gosto muito dele, sabias palavras, pena que ele não curte Tablets... hehe mesmo eles rodando Android.

Python - Conceitos e Iniciação


Python é uma linguagem de programação de alto nível, open source, multiplataforma, interpretada e com uma extensa biblioteca padrão. Criada por Guido van Rossum em 1989, com a primeira versão lançada em 1991, Python, uma homenagem ao grupo humorístico inglês Monty Python, vem com uma sintaxe elegante, simples e clara, sem aqueles montes de “{” e “}” (chaves) por todo o código.

Existem várias linguagens de programação para os mais diversos fins e quem está querendo começar, não sabe qual escolher. Uma das febres é o Java, mas a sua sintaxe é complexa para quem nunca teve contato com programação.
Existem linguagens mais simples como o Pascal, mas não é mais tão usada e está defasada. Por isso o indicado é poder usar uma linguagem atual, que já usufrui das novas tecnologias, mas que seja fácil de aprender e acredito que não existe linguagem que se encaixe mais nesse perfil do que o Python.
O Python ajuda e muito a aprender noções básicas de programação, como também permite a criação de sistemas robustos com bancos de dados. A sua sintaxe é muito simples e lógica. Ele é baseado em palavras curtas em inglês, como print, function, dentre muitas outras.

 Principais características do Python

  • Sintaxe elegante, simples e clara: A sintaxe do Python facilita e encoraja a legibilidade do código, o que o torna mais fácil de manter e reutilizar;
  • Multiparadigmática: OOP, estruturada e procedural;
  • Tipagem forte e dinâmica;
  • Estruturas de dados de alto nível: tuplas, listas de dicionários;
  • Fácil de aprender;
  • Interpretador interativo: shell;
  • Blocos de código são delimitados por endentação!
É possível trabalhar em Python desde pequenas agências até grandes empresas, como Google, Industrial Light & Magic, Nortel, Nokia, Sepro, Interlegis, isto só para citar algumas…Aliás, Python é uma das três linguagens oficiais do Google, sendo adotada na primeira implementação do motor de busca, e hoje é a tecnologia que move o YouTube, entre tantos outros projetos da empresa.
  • Por que Python?
Essa resposta depende do ponto de vista de cada pessoa, mas na minha opinião pessoal eu escolhi a linguagem Python por ser clara e simples de se aprender.
Poderiamos utilizar também a linguagem Java, mas esta dá acesso limitado as funções do sistema operacional, tornando os aplicativos mais limitados.
Além de disso, podem os ainda, se desejarmos, utilizar pontes de outras linguagens com python para suprir quaisquer que sejam as necessidades do aplicativo.
Se você quer usar coisas como Wi-Fi, Bluetooth, etc.. no java terá na minha opnião uma dificuldade maior, pois a implementação por hardware tem q ser puzada do C, então ou você escreve tudo em C ou Mistura tudo com java, mas pode também fazer tudo apartir do Python, como é o caso de muitos programas que usam porta serial por exemplo, para linux, e alguns aplicativos para Symbian...
  • O que podemos fazer com o tal do Python ?
Posso citar alguns exemplos: podemos no caso de aparelhos  Celulares com Symbian manipular eventos de teclas, fazer conexões bluetooth ou wi fi, mandar mensagens SMS, acessar a câmera, fazer chamada s, utilizar informações de contatos e calendário, localizar o aparelho através do sinal GPRS, desenhar gráficos na tela, enfim ... poderia passar o dia todo aqui isso sem contar a aplicação dele em computadores ..

Vamos Trabalhar? 

Sabermos como funciona a sintaxe da linguagem e nos nos familiarizarmos mais.


Para Windows Pode se baixar o IDE Python Clicando aqui.
Sua instalação é simples, igual a qualquer outro instalador (Next, Next, Finish).
Para Linux: você já tem o Python instalado por padrão, diversos pacotes que movem o Linux são feitos em Python.Para Achar seu Python no Linux faça Assim:

- CRTL+ALT+T(abrindo terminal);
- Digite "Python" Sem Aspas, e seu terminal ficará +- assim:
Python 2.6.5 (r265:79063, Apr 16 2010, 13:09:56)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
A melhor forma de aprender a programar é usando um interpretador em modo interativo. Dessa forma você pode digitar comandos linha por linha e observar a cada passo como o computador interpreta e executa esses comandos. Por tanto vamos ao interpretador:

1
2
3
4
5
Python 2.6.5 (r265:79063, Apr 16 2010, 13:09:56)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
A partir dai, é só executar os comandos. Vamos começar com alguns comandos bem básicos, para nos acortumarmos com o interpretador:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15

>>> 2 + 2
4
>>> (1 + 2) * 3
9
>>> list = ["Macelo", 17, "Engenheiro"]
>>> print list[0]
Marcelo
>>> print list[1]
17
>>> print list[2]
Engenheiro
>>> print list[1:]
[17, 'Engenheiro']
>>> print list[:2]
['Marcelo', 17]
>>>
Para sair do interpretador basta apertar Crtl + d ou executar quit().

Eu estou estudando sobre Python também, e conforme for descobrindo coisas interessantes vou postando aqui para compartilhar e aprender também!
Qualquer dúvida ou sugestões é só comentar.

Programando para iOS no Ubuntu/Linux !



Eis aí a prova de que é possivel emular um ambiente para programar com SDK Oficial da Apple!
Estou tentando aqui em no meu Desk Também se obtiver algum sucesso farei um tutorial...

Projeto EscaPe! v1.1



Ontem a noite sem nada pra fazer comecei a trabalhar com novos caracteres para a LCD Shield e aprendi a criar caracteres especiais com este site você tem uma idéia de como eles vão ficar.
Criei alguns avatares,bonequinhos,símbolos e gostei, pensei então em fazer o bonequinho andar na tela com os comandos:

 lcd.setCursor(x,y);
X=Valor de 0 a 15(no caso de LCD 16x2); - COLUNA
Y=Valor 0 ou 1 (Linha de cima ou de baixo) - LINHA

Recomendo quem quer entender o código por completo que leia o outro tutorial que fiz para o reconhecimento das teclas da shield lcd, pois irei usar o mesmo código para fazer com que vá para cima/baixo...







------------------------------------------
Nome do Jogo: EscaPe! 
Versões:
- 1.0: (Bugs simples logo serão corrigidos);
   1.1 (Implementado e corrigido 3 Bugs, ainda tem bastante bugs mas como estou sem muito                                  tempo talvez demore a concertar todos - Qualque ajuda é bem vinda).


No Pack de Download estão todas as versões para você poder avaliar a evolução.
Totalmente OPEN SOURCE: Download do Código (coloquei assim porque é muito grande o código para largar aqui, +-350 linhas)
User como quiser.
Você pode acompanhar notícias do jogo pela label EscaPe! aguardem muitas novidades até o fim do mês.

Homens de Verdade Criam Seus Próprios Jogos!

Frase de efeito, mas muita gente (“geeks de verdade”) leva ao pé da letra. Claro que não dispensam um bom Wii ou XBox 360… mas brincar com a “Gamepack” aí embaixo é muito, muito mais legal.

diy_gameboy_arduino_2
O preço não é lá muito convidativo, especialmente em épocas de dólar caro: são US$ 250,00. O poder de processamento também não é “aquela coisa toda”.
Todos os esquemas estão disponíveis (o da CPU é este, por exemplo) e o display OLED é mesmo muito bonito. Mas, particularmente, ainda existe outro kit: o Hydra. (US$ 200,00), vem com teclado, tem saída para monitor/TV e gera imagens como essa aí de baixo:

hydra_ss_02_large

hydra_ss_03_large

gd-photo200
Para Nosso Arduino temos outra opção:

Em se tratando de acessibilidade e diversão com engenhocas DIY, nada pode bater o Arduino. Sim, projetos possibilitando a criação de jogos com uma proposta “do-it-yourself” já surgiram, mas pareciam caros e não muito atraentes. A ideia com o Gameduino é possibilitar que você crie o seu próprio “console” e saia jogando sem pagar caro para isso e com facilidade para dar vida às suas criações.

A solução se baseia em uma placa extra que se acopla ao Arduino adicionando o hardware necessário para transformá-lo numa plataforma de jogos de 8 bits. De acordo com seus criadores, adquirindo a placa por US$ 50,00 e sabendo como desenvolver projetos para o Arduino, qualquer um pode desenvolver seus próprios games sem muita complicação, contanto inclusive com a ajuda de elementos disponibilizados pela comunidade. Os jogos são declaradamente retrô, é óbvio, mas com criatividade é possível criar coisas bem interessantes.
Confira alguns detalhes técnicos sobre o projeto na página oficial do Gameduino.

Pascal - Início

Hoje, finalmente, iremos começar a programar de fato, e fazer o nosso primeiro programa! Quanto a linguagem, iremos utilizar a Linguagem Pascal num primeiro momento. Apesar de muitos não concordarem com o uso dela, eu a considero a melhor escolha para o ensino da programação, por ter uma sintaxe clara e fácil de ser entendida.



Para escrever e compilar (transformar o código escrito em um arquivo executável), utilizaremos o Pascal Zim, um ambiente criado pelo departamento de Ciência da Computação da Universidade de Brasília, para o auxílio no ensino da disciplina de Algoritmos. Atualmente, ele encontra-se na versão 5.01. O link para download você encontra aqui. Algumas pessoas podem preferir utilizar o Turbo Pascal, da Borland. Eu optei pelo Pascal Zim por dois motivos: a última versão do Turbo Pascal é de 1991 (ou seja, já tem 18 anos!!!) e também pelo fato do Pascal Zim ser brasileiro! (vamos valorizar os programadores do Brasil!). Caso queiram utilizar o Turbo Pascal, fiquem à vontade, pois a sintaxe é a mesma.
Após baixarem o Pascal Zim, descompacte-o utilizando o Winrar, PKZip, Winzip, 7Zip, enfim, qualquer um que você tenha aí. Logo após, vá até a pasta pascalzim e execute o Pzim.exe. Teremos a seguinte janela:
pascalzim
Esta é a tela de edição de um programa no Pascal Zim. É nela que escreveremos os comandos que irão compor o nosso programa. A seguir, temos um programa simples em algoritmo que iremos passar para a linguagem Pascal:
1algoritmo ola_mundo
2 
3[Processamento]
4   escreva("Olá, Mundo! Estou no blog do Striker07!")
5[Fim]
Este é um programa extremamente simples, que escreve o texto Olá, Mundo! Estou no blog do Striker07! na tela. Em Pascal, este programa ficaria dessa forma:
1program ola_mundo;
2 
3begin
4   write('Olá, Mundo! Estou no blog do Striker07!');
5end.
Vamos agora explicar passo-a-passo este primeiro programa. Na primeira linha, temos Program Ola_Mundo; Esta linha define o nome do nosso programa, da mesma forma que definimos o nome do nosso algoritmo na primeira linha dele. Perceba que, os comandos do Pascal terminam com ; e se você não colocá-los, ocorrerá um erro na hora de compilar. Logo em seguida temos o Begin, que significa o início do programa. Os comandos do nosso programa começarão a ser escritos a partir deste Begin. Ele não tem ; porque não é um comando, mas uma indicação de que a área de processamento está iniciando. A seguir, temos o comando write(‘Olá, Mundo! Estou no blog do Striker07!’); que corresponde ao Escreva(“Olá, Mundo! Estou no blog do Striker07!”). Perceba, basicamente, é a mesma coisa no algoritmo e no programa, com a diferença de que no Pascal os comandos são em inglês. Outra diferença é que na linguagem Pascal o texto deve vir entre aspas simples enquanto que no algoritmo ele vem entre aspas duplas. Também não se deve esquecer de colocar o ponto e vírgula no final do comando. Encerrando o programa, temos End. que indica o final do programa. Este End deve sempre ser acompanhado do ponto final, indicando que o programa se encerra aí.
Caso você esteja utilizando o Turbo Pascal, precisará incluir a seguinte linha depois do título do programa:
1program ola_mundo;
2 
3uses
4   wincrt;
5 
6begin
7...
Esta linha inclui a biblioteca padrão de comandos. Caso esteja utilizando a versão para DOS do Turbo Pascal, substitua wincrt por crt. No Pascal Zim, a biblioteca é incluída automaticamente, então não há a necessidade de colocar esta linha.
Vamos agora fazer um programa simples, que recebe dois números do usuário e os soma. Primeiro, vamos fazer o algoritmo deste programa:
01algoritmo soma_dois_numeros
02 
03[Declaração de Variáveis]
04   numero1, numero2, resultado : inteiro
05 
06[Processamento]
07   escreva("Digite o primeiro número: ")
08   leia(numero1)
09   escreva("Digite o segundo número: ")
10   leia(numero2)
11   resultado ← numero1 + numero2
12   escreva("O resultado da soma é ", resultado)
13[Fim]
Um algoritmo muito simples, onde lemos o valor de duas variáveis do tipo inteiro, e depois as somamos, armazenando na variável resultado, e mostramos na tela. Agora vamos fazer o mesmo programa em Pascal:
01program soma_dois_numeros;
02 
03var
04   numero1, numero2, resultado : integer;
05 
06begin
07   write('Digite o primeiro número: ');
08   readln(numero1);
09   write('Digite o segundo número: ');
10   readln(numero2);
11   resultado := numero1 + numero2;
12   write('O resultado da soma é ', resultado);
13end.
Este programa tem alguns elementos a mais que o outro não tinha. Na primeira linha, temos o título do programa, da mesma forma como estava no Olá Mundo. Após isso, temos a área Var, onde declaramos as variáveis do tipo Inteiro, no caso da linguagem Pascal, Integer. A seguir os tipos básicos e os seus respectivos nomes na linguagem Pascal:
  • Inteiro = Integer
  • Real = Real
  • Caracter = Char
  • Booleano = Boolean
  • Literal = String
Na linguagem Pascal, todas as variáveis devem ser declaradas nesta seção. Caso queira declarar variáveis de tipos diferentes, deve-se fazer igual a um algoritmo:
01// No Algoritmo
02[Declaração de Variáveis]
03   soma : inteiro
04   inicial : caracter
05   media : real
06 
07{ Em Pascal }
08var
09   soma : integer;
10   inicial : char;
11   media : real;
Uma coisa importante que eu tinha esquecido de falar é que a linguagem Pascal não distingue maiúsculas de minúsculas. Ou seja, Real é a mesma coisa que  real ou rEaL ou reaL. Da mesma forma se você declarar uma variável Media, não poderá declarar outra com o nome de media.
Continuando o código, temos o início do programa. O primeiro comando escreve uma mensagem pedindo pra o usuário entrar com o primeiro número. Em programação, esse tipo de mensagem é conhecido como prompt. Em seguida, temos a função readln() que lê um valor do usuário e o armazena em uma variável. Depois, repetimos os dois comandos para ler o segundo número da soma. Em seguida, temos o cálculo da soma. Perceba que, na linguagem Pascal, o operador de atribuição é representado por := em vez da seta que representamos nos algoritmos. Na última linha, temos a apresentação do resultado na tela, através da função write(), onde colocamos entre os parênteses o texto e  a variável que queremos exibir na tela.
Para concluir este primeiro post, vamos fazer um último programa que calcula a sua idade, baseando-se no seu ano de nascimento, utilizando o conceito de constantes. Teremos, então o seguinte algoritmo:
01algoritmo calculo_idade
02 
03[Declaração de Constantes]
04   ano_atual = 2009
05 
06[Declaração de Variáveis]
07   ano_nascimento, idade : inteiro
08   nome : literal
09 
10[Processamento]
11   escreva("Olá! Poderia me dizer qual é o seu nome? ")
12   leia(nome)
13   escreva("Em que ano você nasceu? ")
14   leia(ano_Nascimento)
15   idade ← ano_atual - anoNascimento
16   escreva("Prazer em conhecê-lo, ", nome, ".")
17   escreva("Você tem ", idade, " anos.")
18[Fim]
Passando este algoritmo para a linguagem Pascal, teremos o seguinte:
01program calculo_idade;
02 
03const
04   ano_atual = 2009;
05 
06var
07   ano_nascimento, idade : integer;
08   nome : string;
09 
10begin
11   write('Olá! Poderia me dizer qual é o seu nome? ');
12   readln(nome);
13   write('Em que ano você nasceu? ');
14   readln(ano_nascimento);
15   idade := ano_atual - ano_nascimento;
16   writeln('Prazer em conhecê-lo, ', nome, '.');
17   write('Você tem ', idade, ' anos.');
18end.
Basicamente, temos apenas um detalhe novo em relação ao último programa: a inclusão da área Const para a declaração de constantes. A declaração ocorre da mesma forma que nos algoritmos, ou seja, sem a definição do tipo, utilizando o operador = para indicar o valor da constante. Outro detalhe é a utilização da função writeln(). Mas qual a diferença entre write() e writeln()? Ao utilizar a função write(), o cursor ficará posicionado logo após o final do texto. Já na função writeln(), o cursor pulará para a próxima linha ao escrever o texto. O emprego dessas funções deve priorizar a estética na tela, deixando o programa com um visual mais “agradável”.
Para encerrar este tópico, vou deixar alguns exercícios para praticarem a elaboração de algoritmos e a programação em Pascal:
1. Desenvolva um algoritmo para calcular a média de 4 números fornecidos pelo usuário.
2. Desenvolva um algoritmo para calcular a expressão S = (A + B) / (A – B).Os valores A e B deverão ser fornecidos pelo usuário.
3. Desenvolva um algoritmo para calcular o volume de um cilindro, dado por Pi R² H, onde R é o raio, H é a altura e Pi uma constante equivalente a 3,14. Os valores de R e H deverão ser fornecidos pelo usuário.
4. Desenvolva um algoritmo para calcular a área da esfera, dada por 4 Pi R² e o seu volume, dado por 4 Pi R³ / 3, onde R é o raio e Pi uma constante equivalente a 3,14. O valor de R deverá ser fornecido pelo usuário.
5. Desenvolva um algoritmo para calcular a altura do cilindro, dada por V / 4 Pi R², onde R é o raio, V é o volume e Pi uma constante equivalente a 3,14. Os valores R e V deverão ser fornecidos pelo usuário.
6. Desenvolva um algoritmo para calcular a função F(x,y) = 2x + 2y², em um domínio real. Os valores X e Y deverão ser fornecidos pelo usuário.
7. Desenvolva um algoritmo para calcular o troco a ser devolvido a um cliente. Deve ser lido (fornecido pelo usuário) o valor  a ser pago e o valor dado pelo cliente.
8. Desenvolva um algoritmo para calcular o valor absoluto da diferença entre A e B. Os valores A e B deverão ser lidos.
9. Desenvolva um algoritmo para calcular (converter) graus Farenheit (F) em graus Centígrados (C) , utilizando a seguinte fórmula: C = 5 (F – 32) / 9. O valor F deverá ser lido.
Algumas dicas:
- Função para calcular a raiz quadrada: sqrt(número)
- Função para calcular o valor absoluto de um número: abs(número)
Tentem fazer os exercícios. Qualquer dúvida, postem nos comentários

Laços de Repetição

Hoje iremos tratar de um tema de suma importância na programação: Os Laços de Repetição. Em nossos programas já estamos lendo dados do usuário. Imagine o seguinte: vamos fazer uma soma de números. Lemos dois números e realizamos a soma. E se quiséssemos fazer uma soma de, por exemplo, 100 números, ou mesmo uma quantidade X definida pelo usuário? No caso da soma de 100 números, teríamos 100 vezes o comando Leia()? E como faríamos pra ler uma quantidade X de vezes? Sem as estruturas de repetição, sem dúvida, seria bem complicado. Além disso, teríamos um código extremamente grande e repetitivo, com comandos iguais pra fazer as mesmas coisas. Os Laços de Repetição foram criados para solucionar estes problemas, deixando os códigos mais compactos, mais legíveis e mais rápidos de serem desenvolvidos.
Os Laços de Repetição que iremos tratar aqui são o Enquanto, Faça e o Para. Descrevendo-os resumidamente, temos o seguinte:
  • Enquanto: testa a condição antes de executar o bloco de código
  • Faça: executa o bloco de código e depois verifica a condição
  • Para: executa um bloco de código um determinado número de vezes
Vamos começar, então, falando do Enquanto. O enquanto possui um funcionamento bem simples, porém é de grande utilidade. Ele compara uma sentença e executa o bloco de código se a condição for verdadeira. Da mesma forma que, por exemplo, no Se, você pode colocar diversas condições, com o uso dos operadores lógicos e e ou, além do não. A seguir temos o exemplo da sintaxe em algoritmo…
1enquanto (nota > 70) faça
2   comandos...
3fim-enquanto
… e em Pascal…
1while (Nota > 70) do
2begin
3   comandos...
4end;
Dessa forma, utilizamos o Enquanto quando vamos executar uma repetição sem sabermos necessariamente o número de vezes que ele será executado. O looping pode, ainda, não ser executado nenhuma vez, caso a condição não seja satisfeita, ou seja, no Enquanto, testa-se a condição antes de executar o bloco de código.
Outra estrutura de repetição importante é o Repita. Ela possui praticamente o mesmo funcionamento que o Enquanto, porém a condição é testada após a execução do bloco de código. Abaixo, temos a sua sintaxe algoritmica…
1repita
2   comandos...
3enquanto(nota <= 70) e (nota >= 30)
… e em Pascal…
1repeat
2   comandos...
3until(nota <= 70) and (nota >= 30);
Neste exemplo acima, utilizei o operador lógico e para condicionar a repetição. Dessa forma, o looping será executado somente enquanto a variável Nota estiver na faixa entre 30 e 70 (para mais detalhes sobre os operadores lógicos, dê uma olhada no post sobre eles).
Por último, mas não menos importante, temos o Para. Esta estrutura de repetição se diferencia das outras por executar a repetição um determinado número de vezes. Como assim? A execução do Para é executada através da verificação e incremento de uma variável inteira, ou seja, determinamos a quantidade de vezes que a repetição será executada através de um limite para o valor da variável. Meio confuso? Calma, nos exemplos abaixo vai ficar mais claro. Primeiro na forma algoritmica…
1para i = 1 até 50 faça
2   comandos...
3fim-para
… e em Pascal…
1for i := 1 to 50 do
2begin
3   comandos...
4end;
No exemplo acima, temos a variável I funcionando como o contador de execução do looping, sendo incrementado automaticamente a cada execução do bloco de código. Dessa forma, o nosso looping será executado 50 vezes, ou seja, enquanto a variável I for menor ou igual o valor 50. Podemos, em vez do valor 50 colocar outra variável ou uma constante pra controlar a quantidade de vezes que o Para será executado.
O Para também possui uma particularidade interessante, podendo realizar decrementos a cada execução do looping. Dessa forma, podemos, por exemplo, criar contadores decrescentes, ou ainda exibir vetores invertidos (para mais informações sobre vetores, consulte o próximo post). A seguir temos a sintaxe do Para com decremento tanto em algoritmo quanto em Pascal:
1para i = 50 até 1 passo -1
2   Comandos...
3fim-para
1for i := 50 downto 1 do
2begin
3   Comandos...
4end;
Bem, pessoal, acho que é isso. Com o tempo vocês verão que a utilização das estruturas de repetição está sempre presente no dia-a-dia de um programador e tem papel fundamental na construção de um código otimizado. Fiquem atentos, pois no próximo post iremos falar de vetores e matrizes. Até lá e bons estudos!

Estruturas de Repetição "SE" "IF"

Os programas geralmente, baseados em algum dado, selecionam porções do código a serem executadas, realizando operações diferenciadas a cada execução. Para representar essa seleção em nosso programa utilizamos as estruturas de seleção.
A primeira estrutura de seleção que iremos conhecer é o Se. O Se é utilizado quando esperamos por uma condição. O bloco de código referente só sera executado se a condição for verdadeira. A seguir temos um exemplo algoritmico da utilização dessa estrutura e sua implementação em Pascal.
1leia(numero)
2se (numero MOD 2 = 0) então
3   início
4      escreva("O número é par.")
5   fim
1readln(numero);
2if (numero MOD 2 = 0) then
3   begin
4      write('O número é par.');
5   end;
Neste exemplo, lemos do usuário a variável numero. Se o resto da divisão do conteúdo da variável for igual a zero, será mostrada na tela a frase O número é par. A partir disso, podemos criar condições para o nosso programa, executando determinadas tarefas somente se algumas condições forem satisfeitas. Mas e se, por exemplo o número não fosse par? Ele seria ímpar… mas como faríamos isso no programa? A estrutura do Se é composta do Senão, que é executado caso a condição do Se não seja satisfeita. A seguir temos o exemplo da utilização do Se com o Senão na forma algoritmica e na linguagem Pascal:
1leia(numero)
2se(numero MOD 2 = 0)
3   então
4      escreva("O número é par.")
5   senão
6      escreva("O número é impar.")
7fim-se
1readln(numero);
2if (numero MOD 2 = 0) then
3   begin
4      write('O número é par.');
5   end
6else
7   begin
8      write('O número é ímpar.');
9   end;
Dessa forma, se o número digitado fosse par, a mensagem O número é par. Caso contrário, a mensagem O número é ímpar. seria exibida. Além disso, podemos encadear vários ‘Ses’, criando uma série de condições. Podemos também, colocar mais de uma condição ou negar uma condição, com a utilização dos operadores lógicos e, ou e não.
1leia(idade)
2se (idade < 13)
3   então
4      Escreva("Criança")
5senão se (idade >= 13 e < 21)
6      escreva("Adolescente")
7   senão
8      escreva("Adulto")
9fim-Se
01readln(idade);
02if (idade < 13) then
03   begin
04      write('Criança');
05   end
06else if (idade >= 13 and idade < 21) then
07   begin
08      write('Adolescente');
09   end
10else
11   begin
12      write('Adulto');
13   end;
Ah, um detalhe. Percebam que em Pascal, somente o último End de uma sequência de Ifs tem ponto-e-vírgula! Observando o exemplo acima, podemos realizar diversas tarefas, encadeando diversos Ifs / Elses. Apesar de simples, esta estrutura é vastamente utilizada na programação. Porém, quando precisamos conferir o valor de uma variável frente a muitos valores, o uso de Ifs encadeados torna-se trabalhoso, principalmente ao programador, além de deixar o código repleto de Begins e Ends. Para resolver problemas do tipo, utilizamos uma estrutura chamada Escolha ou Case. Com ela, podemos comparar o conteúdo de uma variável frente a diversas constantes, de uma forma bem mais organizada que o simples encadeamento de Ifs. A seguir, temos um exemplo de um programa de apuração de votos, com a utilização do Escolha.
1...
2escolha (votos)
3   caso (votos = 1) : candidato1 ← candidato1 + 1
4   caso (votos = 2) : candidato2 ← candidato2 + 1
5senão
6   escreva("Voto inválido")
7fim-escolha
1case votos of
2   1 : candidato1 := candidato1 + 1;
3   2 : candidato2 := candidato2 + 2;
4else
5   write('Voto inválido');
6end;
Neste caso, a variável votos foi comparada com os valores 1 e 2. Dependendo do seu conteúdo,  incrementa-se a variável correspondente ao candidato. Caso o voto não confira com nenhuma das opções do case, ele irá executar o comando para escrever Voto inválido na tela. Nesta estrutura, assim como no se, o uso do senão é facultativo, ou seja, ele não precisa necessariamente estar presente, sendo utilizado de acordo com a necessidade. Outro ponto é que os valores constantes comparados não precisam ser necessariamente inteiros. Podem ser, por exemplo, um tipo caracter.
Bom, pessoal, é isso. No começo pode ser que vocês estranhem um pouco estas estruturas, mas com o tempo elas virão a estar presente em praticamente todas as aplicações que vocês fizerem. E lembrem-se que, em caso de dúvida, podem  simplesmente deixar um comentário aqui no blog.
Obrigado pela visita e até o próximo post com as Estruturas de Repetição. Abraço a todos! :)

Operadores Lógicos

Bom Agora que ja se sabe um pouquinho sobre a estrutura simples vamos começar a Relação de Dados, estrutura teórica e prática de Operadores Lógicos.


Operadores Relacionais Matemáticos Seria uma boa leitura antes desse texto abaixo...

Bom, os operadores lógicos são usados em todas as engenharias acredito eu, pois são a base do pensamento lógico racional, eu mesmo uso MUITO em Eletrônica, e MUITO em programação,....
Todo Operador Lógico tem uma condição de entrada e análise para condiçaõ de saida.


E : Operador Lógico Inclusivo.As 2 Condições declaradas tem de ser verdadeiras para poder sair um dado verdadeiro. Explicando melhor com exemplo.


A conjunção é verdadeira se e somente se os operandos são verdadeiros
A B   Resposta
V V   V
V F   F
F V   F
F F   F

Percebemos que somente quando A e B São Verdadeiras a Resposta é verdadeira.


OU: Só Resultara em FALSO quando todas forem falsas. Se uma ou outra for verdadeira ele resulta em verdadeiro. por isso OU, A ou B.

AB  Resposta
VV  V
VF  V
FV  V
FF  F

NÃO: A negação da proposição "A" é a proposição "~A", de maneira que se "A" é verdade então "~A" é falsa, e vice-versa.Ou Seja se a afimação for verdadeira ele retorna falsa se for falsa retorna verdadeira.

A ~A
V F
F V

O que é Processing?



O Processing é uma ferramenta open source que resulta numa simplificação de Java. Possibilita aos designers e artistas a utilização nas suas criações de algoritmos e formas computacionais, com um elevado índice de processamento

  • Sobre:
=> Gratuito e open source.
=> Programas interativos em 2d e 3d ou com saida em pdf.
=> Integração com OpenGL para acelaração 3D.
=> Roda em GNU/Linux, Mac OS X e Windows
=> Compilados para browser Web ou aplicativo desktop.
=> Mais de 100 bibliotecas de extensão para audio, vídeo, captura de imagens, etc.
=> Inúmeros recursos disponíveis (em inglês)

Fazemos o download da pequena aplicação no link abaixo. Só escolher o sistema operativo:

http://processing.org/download/

É composto por uma pasta compactada. Descompactar em localização à sua scolha.

No interior encontra o ficheiro "processing", com ícone. Clicar para executar.

 




  • Referências
Para mais informações acesse:

» Processing.Org
» Processing Wiki
» Processing Discussion Forum
» OpenProcessing
» CreativeApplications.Net
» O'Reilly Answers
» Vimeo
» del.icio.us
» Flickr
» YouTube     

Processing - Primeiros passos para interação com Arduino

Processing + Arduino | Interação Simples

Olá, gostaria de pedir desculpas pelo tempo sem atualização. Tanto o Processing como o Arduino já possuem bibliotecas prontas para uma comunicação eficaz entre eles, e neste post veremos como começar a utilizar tais recursos.

Para começar faça o download da biblioteca Arduino para o processing, já que ela não é nativa do programa.
processing-arduino-0017.zip
Extraia o arquivo zip dentro da pasta "libraries" no Processing, para que você possa utilizá-la.

A seguir, no Arduino, abra o exemplo "Standard Firmata" e faça o upload na sua placa, este exemplo contem o Firmware necessário para interagir diretamente PC-Arduino, este programa é uma ligação entre todos os recursos do arduino e a sua comunicação serial, assim você poderá acessar "diretamente" os valores nas suas entradas digitais e até mesmo escrever valores nas saidas do Arduino interagindo apenas com o seu PC, em outras palavras, você transforma o arduino em um "periférico" do seu pc e pode controlar ele diretamente.

Voltando.


Se você já fez o upload do Firmata para a sua placa, ela não precisa de mais nada para funcionar! Agora vamos a um exemplo básico.

Leitura digital utilizando o Firmata e o Processing

Neste exemplo vamos ver como acessar as portas do Arduino para utilizá-las como saídas para nosso programa Processing. Ligue alguns Leds nos pinos digitais do Arduino, nunca use os pinos 0 e 1 pois eles são ligações diretas com a comunicação serial, que neste caso será obrigatoriamente usada pela placa para conexão com o PC, independente do meio usado (usb, Bluetooth, XBee, rádio, etc). Continuando...

Exemplo de ligações.
Como já disse, você poderá ligar em qualquer pino exceto os pinos 0 e 1.

A seguir abra o Processing e abra o exemplo arduino_output que acompanha os arquivos da biblioteca, deverá ser como este:



import processing.serial.*; // Biblioteca serial nativa do processing

import cc.arduino.*; // Biblioteca de interação com o arduino

Arduino arduino; // Cria um novo objeto arduino para interação com a placa

color off = color(4, 79, 111); //Declara as cores usadas no exemplo
color on = color(84, 145, 158);

int[] values = { Arduino.LOW, Arduino.LOW, Arduino.LOW, Arduino.LOW,
 Arduino.LOW, Arduino.LOW, Arduino.LOW, Arduino.LOW, Arduino.LOW,
 Arduino.LOW, Arduino.LOW, Arduino.LOW, Arduino.LOW, Arduino.LOW };
//Cria um array para armazenar os valores a serem passados para a placa
//Arduino.LOW representa os valor LOW na placa arduino sendo acessada pela biblioteca
//Arduino

void setup() {
  size(470, 200);//Tamanho da tela
  
  println(Arduino.list());//Esse é um comando usado apenas para saber
  // qual a porta utilizada pela placa.
  
  arduino = new Arduino(this, Arduino.list()[0], 57600); //Construtor
  //do objeto arduino, onde Arduino.list()[0] é a porta usada e 57600 é a Baud
  //da porta serial
  
  //Este For é uma parte do código que devemos prestar atenção
  //pois nele estamos utilizando código do arduino.
  //tente substituir este bloco por:
  /*
  arduino.pinMode(2,Arduino.OUTPUT);
  arduino.pinMode(3,Arduino.OUTPUT);
  arduino.pinMode(4,Arduino.OUTPUT);
  etc
  */
  for (int i = 0; i <= 13; i++)
    arduino.pinMode(i, Arduino.OUTPUT);
}
//Percebeu a semelhança? com o código do arduino?
//Pois é...


//Este bloco desenha a interface, não vem ao caso agora
void draw() {
  background(off);
  stroke(on);
  
  for (int i = 0; i <= 13; i++) {
    if (values[i] == Arduino.HIGH)
      fill(on);
    else
      fill(off);
      
    rect(420 - i * 30, 30, 20, 20);
  }
}

//Esta função é um presset do Processing, pode ser chamada de Evento
// Ela é chamada SEMPRE que um botão do mouse é pressionado.
void mousePressed()
{
  int pin = (450 - mouseX) / 30;//Utiliza a posição X do mouse para
  //saber que botão foi clicado
  //Perceba que aqui ele não utiliza a posição Y 
  //mas vamos deixar assim pra simplificar.
  
  //Este bloco if simplesmente comuta os valores
  if (values[pin] == Arduino.LOW) {
    // A parte legal esta aqui!!
    // pra quem já conhece o arduino e POO não tem o que explicar
    // se não vamos lá:
    // aqui você manda a sua placa, representada aqui pelo objeto "arduino"
    // e manda ele escrever numa saída digital
    // perceba que a variável pin é uma variável do programa, e não da placa
    arduino.digitalWrite(pin, Arduino.HIGH);
    values[pin] = Arduino.HIGH;
  } else {
    arduino.digitalWrite(pin, Arduino.LOW);//idem
    values[pin] = Arduino.LOW;
  }
}