Instalação do Ruby no Linux (Ubuntu)
A instalação do Ruby no Linux é muito parecida com a instalação no Windows. A maior diferença é que você só precisa de alguns comandos no terminal e ele se encarrega de todo o resto (baixar e instalar no devido lugar).
$ sudo apt-get install ruby1.9.1-full
Pronto, Ruby instalado. Agora você pode fazer um teste rápido. Digite no terminal:
$ ruby -v
Primeira Aplicação Ruby no Linux
Você já deve saber que escrever um “Hello World” em Ruby é muito simples. Então vamos fazer um programa executá-lo. Para fazer isso iremos precisar de um editor de texto simples(Gedit, por exemplo) e o terminal para digitar alguns comandos. Agora vamos aos passos:
- Abra o terminal (console) e vamos criar uma pasta para guardar o nosso programa, da seguinte forma:
$ cd ~ $ mkdir testeruby $ cd testeruby
- Abra o Gedit ou outro editor de sua preferência, escreva o texto abaixo:
puts "Hello world Ruby!"
- Salve com o nome programa.rb na seguinte pasta: ~/testeruby
- Volte para o terminal e execute o seu programa
$ ruby programa.rb
Se você fez tudo certinho verá o texto “Hello world Ruby!” sendo exibido no terminal (console).
Quando se usa o Linux, existem duas formas de você executar seus programas utilizando o Ruby. A primeira forma é utilizando o comando ruby + nome-do-arquivo.rb no terminal, como no exemplo anterior. A outra forma, é colocar o caminho para o interpretador Ruby dentro do arquivo programa.rb como no texto abaixo:
#!/usr/bin/env ruby puts "Hello world Ruby!"
Agora dê permissão de execução para o seu arquivo:
$ chmod +x programa.rb
E execute-o:
$ ./programa.rb
Perceba que a diferença entre as duas formas de execução de programas Ruby é apenas o comando no terminal. Na primeira forma você usa o comando “ruby” e na segunda você o executa como um arquivo qualquer do linux.
Pronto, programa escrito e executando! E agora, está pronto para outros desafios?
Instalação do Ruby no Windows
Ruby é uma linguagem fácil de aprender. As tarefas diárias são simples de codificar, manter e incrementar. Quando você se depara com problemas aparentemente difíceis, acaba por resolvê-las de forma muito mais simples do que você imaginava. Ruby segue o princípio da menor surpresa – as coisas funcionam da forma como você espera, com poucas exceções. Isso realmente faz a diferença quando está programando. (The Pragmatic Programmer’s Guide)
Para que você consiga desenvolver utilizando a linguagem de programação Ruby, é necessária a instalação dos componentes básicos para que a linguagem seja entendida pelo seu computador. Neste caso, o interpretador e o gerenciador de pacotes são suficientes.
Instalando o Interpretador
Estou considerando que você não tenha nenhuma versão do Ruby instalada no seu computador. Caso tenha, é importante você observar a versão atualmente instalada (digite o comando: ruby -v no prompt de comando). Quando escrevi este post, a mais nova versão do Ruby era a 1.9.2 (recomendo). Se você tiver problemas ao instalar ou executar seus programas, você pode desinstalar a versão anterior ou usar o Pik para gerenciar as versões do Ruby já instaladas. Agora, vamos à parte mais interessante, acesse o site, baixe e instale o interpretador do Ruby (Windows installer) observando as versões recomendadas.
Instalando o Gerenciador de Pacotes (Gem)
Em seguida baixe a mais nova versão do RubyGems. Após fazer o download do RubyGems, você deverá descompactar em qualquer pasta do seu computador. Abra o prompt de comando, navegue até a pasta onde o RubyGems foi descompactado e instale com o comando: ruby setup.rb
- Fiz o download do arquivo rubygems-1.8.5 na pasta C:\Downloads
- Descompactei
- Entrei no prompt de comando e naveguei até a pasta: C:\Downloads\rubygems-2.8.5 como na imagem
Agora é só aguardar o final da instalação e você já terá o Ruby e o RubyGems instalado e pronto pra usar. Se quiser conferir qual a versão instalada atualmente é só digitar ruby –v ou gem –v no prompt de comando. Agora você tem comandos para executar seus programas em Ruby e instalar novas bibliotecas usando o gerenciador de pacotes (gem). Se quiser fazer um teste agora:
- Abra o bloco de notas
- escreva: puts “Hello world Ruby!”
- Salve no C:\ com o nome: programa.rb
- Vá para o prompt de comando
- Digite ruby C:\programa.rb
- Será exibido: Hello world Ruby!
Pronto, você já escreveu e executou seu primeiro programa em Ruby.
Rake task personalizado
Um dia precisei criar uma rake task para automatizar a importação de arquivos CSV em uma aplicação em RubyOnRails (2.3.8), então resolvi criar este post para ajudar a pessoas com o mesmo objetivo e que procuram criar rake tasks personalizadas.
A estrutura apresentada no código abaixo apresenta um exemplo de importação de um arquivo CSV de funcionários, que contém 3 campos:
- nome – string
- salário – float
- cpf – string
Antes de continuar, explicarei rapidamente sobre os arquivos CSV. Arquivos CSV (comma-separated values) são arquivos de dados que guardam valores separados por vírgula. Assim a linha abaixo é um exemplo válido de uma linha do arquivo de funcionários.
"Fulano de tal",123.45,"987.654.321-00"
Pronto, agora você já sabe o que é um arquivo CSV e qual a estrutura do arquivo que será importado pela nossa rake task personalizada. Só lembrando que o script foi feito para rodar na versão 2.3.8 do Rails, mas não está limitado a ele, você pode usar em versões mais atuais, com as devidas adaptações, caso necessite.
# DATA: 10/06/2011
# PROGRAMADOR: Valberto Carneiro
# OBJETIVO: Criar um script para atualizacao dos salarios dos funcionarios e
# criacao de novos salarios, caso a matricula do funcionario ainda
# nao exista na base de dados.
# CONSIDERAÇÕES:
# 1. Aplicação em Rails (>= 2.3.8)
# 2. Conexão com banco de dados configurada
# 3. Tabela "funcionarios" criada e populada
# 4. Campos da tabela: id:integer, nome:string, salario:float, cpf:string
# app/models/funcionario.rb
class Funcionario < ActiveRecord::Base
# os metodos de acesso sao criados automaticamente pelo ActiveRecord
end
# lib/tasks/minhas_tarefas.rake
require 'csv'
namespace :tarefas do
desc "Importa arquivo CSV, Parametro: PATH=/caminho/completo/para/o/arquivo.csv"
task :importar_funcionarios => :environment do
csv_file = ENV["PATH"]
puts "Verificando a existência do arquivo..."
unless File::exists?(csv_file)
puts "Arquivo nao encontrado, verifique se esta correto e tente novamente."
return
end
puts "Arquivo encontrado!"
puts "Executando importacao, aguarde..."
CSV.open("#{csv_file}","r") do |linha|
nome = linha[0]
salario = linha[1]
cpf = linha[2]
funcionario = Funcionario.find_by_cpf(cpf)
if funcionario
funcionario.salario = salario
else
funcionario = Pessoa.new(:nome => nome, :salario => salario)
funcionario.save
end
end
puts "Importacao concluida com sucesso!"
end
end
Programa que identifica palindromes
/* Data: 24/02/2011
* Programador: Valberto Carneiro
* Objetivo: Faça um programa que leia uma string do teclado e diga se ela é
palíndrome. Uma string é palíndrome quando pode ser lida tanto
de trás pra frente quanto de frente para trás e possui exatamente
a mesma seqüência de caracteres. Ex.: ASA, SUBI NO ONIBUS.
Desconsidere os espaços.
Defina uma função chamada Palindrome que receba uma string como
parâmetro e retorne um boolean no seu programa.
Dica: Use a função do exercício 1.
*/
#include<stdio.h>
const int FALSE = 0;
const int TRUE = -1;
int is_palindrome(char *texto) {
int palindrome = TRUE, tamanho = strlen(texto), y = 0, x = 0;
//elimina brancos
while(x < tamanho) {
if(texto[x] == ' ') for(y=x; y < tamanho; y++) texto[y] = texto[y+1];
x++;
}
tamanho = strlen(texto);
//compara os caracteres
for(x = 0; x < tamanho ; x++) {
//printf("%c = %c\n", texto[x], texto[tamanho-1-x]);
if (texto[x] != texto[tamanho-1-x]) {
palindrome = FALSE;
break;
}
}
return palindrome;
}
int main(){
char texto[100];
printf("Escreva uma string para sabermos se ela é palindrome: ");
gets(texto);
printf("Resultado: %s", is_palindrome(texto) == FALSE ? "nao" : "sim");
getch();
}
Strings em C
Introdução
A línguagem C é considerada de nível médio, ou seja, uma linguagem de programação que se aproxima da linguagem humana, mas que também utiliza explicitamente características de “linguagem de máquina”. As Strings em C não trazem abstrações e facilidades que escondem alguns detalhes como:
- contagem de caracteres
- tamanho da variável que armazenará a string
- caractere de terminação entre outros.
Como é uma string em C?
“Uma string de caracteres em C é apenas uma matriz de caracteres” [1], ou seja, para se conseguir armazenar uma string em C, é preciso declarar um array de char com o tamanho máximo que a sua string pode ter.
char variavel[100];
É importante saber que na string acima, você pode armazenar até 99 caracteres. Mas por que? Em C, um dos espaços string guarda o caractere de terminação que serve também para contar o tamanho da string na matriz de caracteres. “As operações de I/O de strings de caracteres (gets, puts, etc.) são implementadas em <stdio.h> e um conjunto de funções de manipulação de strings de caracteres bastante simples é implementado em <string.h>.” [1]
Ler strings em C
Há mais de uma maneira de se ler strings em C, uma delas é utilizando o comando scanf. Veja algumas características:
- Lê até o primeiro espaço em branco – Você pode digitar uma frase inteira, porém o que a variável armazenará será a primeira sequência de caracteres até o espaço em branco. Use o scanf quando necessitar armazenar strings sem espaços como: logins, senhas, e-mails, urls etc. Abaixo há um exemplo comum de utilização:
- Não precisa indicar o “&” antes da variável, como se faz quando queremos ler inteiros, por exemplo, pois o vetor de caracteres já é um endereço de memória que aponta para a primeira posição. Veja o exemplo. [4].
- Aceita vários tipos de parâmetros para formatar, delimitar ou restringir a leitura de determinados caracteres.
scanf("%s", texto); //lê uma string
scanf("%d", &valor); //lê um inteiro
scanf("%[A-Z]s", frase); //lê apenas caracteres entre A a Z. Para no primeiro caractere fora desse intervalo
scanf("%[^\n]s", frase); //lê qualquer caractere inclusive espaços (igual ao comando gets();)
scanf("%50[^\n]s", frase);// lê apenas 50 caracteres
strcpy
é usado sempre que se deseja copiar uma string em outra. Esse comando é necessário, pois como as duas strings são arrays de caracteres, cada caractere de uma string é copiada para a outra string. Uma por uma. Trabalho árduo.
strcpy(destino, origem);
strcmp
é usado quando se deseja comparar strings. Aqui, o valor de retorno pode ser:
- zero (0): caso as duas strings sejam iguais
- negativo (-1): caso a primeira string seja menor que a segunda
- positivo (1): caso a primeira string seja maior que a segunda
Esse valor usado na comparação para determinação de maior menor ou igual é o código ASCII do caractere comparado. Esse comando varre toda a string comparando caractere por caractere.
#include
#include
int main() {
char s1[100],s2[100];
gets(s1);
gets(s2);
if (strcmp(s1,s2)==0)
printf("igual\n");
else if (strcmp(s1,s2)<0)
printf("s1 menor que s2\n");
else
printf("s1 maior que s2\n");
return 0;
}
strlen
esta função retorna o tamanho da sua string. Ele identifica o tamanho da sua string assim que encontra o caractere de terminação, o “contra-barra zero”.
char nome[] = "Maria da Silva"; int s = strlen (nome); // s conterá o valor 14
strcat
concatena duas strings, adicionando o conteúdo da segunda ao final da primeira, além do terminador (). Note que a primeira string deve ter espaço suficiente para conter a segunda, para que não ocorra um “estouro de buffer” [2].
char nome[50] = "Maria"; char sobrenome[] = " da Silva"; strcat (nome, sobrenome); // agora nome contém "Maria da Silva"
Exercícios
[3] possui uma excelente lista de exercícios.
Referências
[1] Marshall Brain. String de Caracteres. <http://informatica.hsw.uol.com.br/programacao-em-c35.htm>
[2] ___. Programar em C/Strings. <http://pt.wikibooks.org/wiki/Programar_em_C/Strings>
[3] Unicamp. Algoritmos e Programação de Computadores. <http://www.ic.unicamp.br/~rodolfo/Cursos/mc102/1s2003/exercicios4.html>
[4] Islene Calciolari Garcia. Manipulação de Strings. <http://www.ic.unicamp.br/~islene/mc102/aula17/aula17.pdf>
Estrutura de um programa em C com loop de reexecução
Revendo alguns conceitos de C e pesquisando nuns sites por aí, encontrei um exeplo que acredito ser pático pra quem quer fazer rapidamente um programa em C.
Aqui é uma estrutura básica, copie e cole no seu arquivo.c, edite da forma como desejar e compile. Pronto, vc terá um programa que só para quando vc quer.
#include<stdio.h>
#include<conio.h>
void main(void) {
short int rodando;
do {
// DIGITE SEU CÓDIGO AQUI.
printf("\nDigite 1 para manter o programa rodando. ");
scanf("%d", &rodando);
} while(rodando==1);
}
Adobe Air no Ubuntu 64 bits
É só seguir esse breve tutorial que vc consegue instalar o Adobe Air e em seguida qualquer aplicação que dependa dele.



