terça-feira, 19 de maio de 2009

printf - cores e cursor

Precisava eu, mover o cursor pela tela, algo muito fácil com as bibliotecas ncurses ou conio mas depois de dias (muito tempo mesmo) tentando instalas no no netbeans e do codes não obtive exito.
Mas eu continuava precisando mover o cursor pela tela.
Achei em um artigo no viva o linux onde um programador dizia ser possível fazer o movimento apartir do proprio printf () e postava o código.
Infelizmente tambem não funcionou, mas continuei pesquisando e consegui uma maneira de usar o printf() para mover o cursor e tambem mudar a cor do cursor da tela sem adicionar nenhuma bibliotecas especial (a princípio).

Os códigos abaixo foram testado no netbeans 6.1 e também no code:blocks 8.02 ambos copilador cygwin versao desconhecida rodando apartir do MS Windows XP sp2 pc tipo x86

void move(int x, int y) {
printf("\033[%d;%df",y,x);
}

Assim tenho uma funcao que move o cursor para a x,y passadas pela funcao. Se eu fizessem sem funcao poderia passar diretamente pos exemplo para posicao (22,11)

printf("\033[11;22f");
Embora feio mas funcional.
Para cores temos

printf("\033[1;%dm",valor);


No qual as cores estao entre valores de 30 e 50. Sugiro usar um for de 1 ate 50 para testar e cuidado para valores que não alteram as cores pois podem estar alterando algo não perceptível.

Era isto.
Fonte: http://www.magnux.org/doc/howto/en/Bash-Prompt-HOWTO-6.php

quinta-feira, 14 de maio de 2009

Iniciando no C++

Embora muitos costumem recopilar o kernel como quem faz um cafezinho, muitos ficam complemente perdidos ao iniciar em um linguagem de programação. Até mesmo professores de disciplinas de programação ficam perdidos ao ensinar programação.

Antes de mais nada temos que esclarecer o seguinte:
Linguagem de programação de alto nível é o que se chama na Ciência da Computação de linguagens de programação com um nível de abstração relativamente elevado, longe do código de máquina e mais próximo à linguagem humana.
O C++ é uma linguagem de programação de alto nível com facilidades para o uso em baixo nível, multiparadigma e de uso geral. (fonte wikipédia)
Para programar em C++, o programador precisa de uma IDE (do inglês Integrated Development Environment ou Ambiente Integrado de Desenvolvimento) e um Copilador que transforma em código executavel o programa que você escreve.

Muitos professores usam o velho Borland(C) Turbo C++ que fazia de tudo. Dava para escrever nele e executa-lo, tudo isto em ambiente DOS (tela preta). Mas que hoje é quase incompatível com os sistemas operacionais.
Outros professores se aventuram "loucamente" em IDEs como Eclipse, Kdeveloper, Code:blocks, NetBenas, etc. que são usadas por programadores profissionais.
Vou então propor escrever os programas mais simples do tipo "hello, Word" sem usar IDE. (claro que assim que o aluno se sentir seguro deve-se passar para uma das IDE citadas acima.

1 - Abrir um programa de edicao de textos SIMPLES
Abra um terminal no linux e crie uma pasta "teste" (mkdir teste) e digite kedit (outras opcao são: kate, joe, nano emacs, vi e muitas outras opcoes)
No windows, abra o prompt , crie a pasta (md teste) e digite notepad (bloco de notas) :
Digite:

int main ()
{
}

Todo programa em c++ é chamado apartir desta funcao main e que esta entre colchetes é programa em si. Aperte um enter para criar uma linha em branco no fim e salve este arquivo como trabalho1.cpp. Lembre-se de gravar na sua pasta.

2 - Compilando o arquivo
Embora existem vários o mais famoso compilador é o GCC (GNU Compiler Collection) e ele vai ser responsável por fazer seu código virar programa. Digite no terminal:

gcc -o trabalho1.exe trabalho1.cpp

Se simplesmente nao aconteceu nada é porque deu tudo certo, mas vamos colocar um erro de uma olhada e tente reparar o erro. Digite novamente kedit e abra seu arquivo, na verdade você nao vai mais fecha-lo, basta digitar kedit & que assim o terminal nao ficara ocupado quando estiver editando. (Usuários M$ dependeram da instalação e configuração do programa
Cygwin) Digite:

int main()
{
Ola Mundo!
}

Caso nao tenha percebido, o erro é colocar um texto desconhecido do programa, e a linguagem de programação (assim como o computador) aceita apenas comandos; Veja o erro que ocorreu ao executar o gcc.

[luciano@meupc]$ gcc -o trabalho1.exe trabalho1.cpp
trabalho1.cpp: In function ‘int main()’:
trabalho1.cpp:3: error: ‘Ola’ was not declared in this scope
trabalho1.cpp:3: error: expected `;' before ‘Mundo’

Ou seja,, deu varios problemas na fucao “int main” mais especificamente na linha 3

3 - Usando o comando certo - printf
Para aparecer uma string (como se chama um texto) na tela do computador devemos usar o comando printf("Ola, mundo"), desta forma o programa fica assim:

int main()
{
printf(“Ola Mundo!”);
}

Resultado:

trabalho1.cpp:3: error: stray ‘\342’ in program
trabalho1.cpp:3: error: stray ‘\200’ in program
trabalho1.cpp:3: error: stray ‘\234’ in program
trabalho1.cpp:3: error: stray ‘\342’ in program
trabalho1.cpp:3: error: stray ‘\200’ in program
trabalho1.cpp:3: error: stray ‘\235’ in program
trabalho1.cpp: In function ‘int main()’:
trabalho1.cpp:3: error: ‘Ola’ was not declared in this scope
trabalho1.cpp:3: error: ‘printf’ was not declared in this scope

4 - Adicionando Bibliotecas
Bom, o problema e que nao dissemos de onde vem as funcoes, o copilador continua sem saber de onde vem a palavra “printf“
para resolver este problema devemos colocar o local de onde vem os comandos.fica assim:

#include <stdio.h>
int main()
{
printf("Ola Mundo!");
}

e o Resultado vai ficar assim:

[
luciano@meupc teste]$ gcc -o trabalho1.exe trabalho1.cpp
/tmp/ccKfNvbV.o:(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status

Pelo menos há uma menor quantidade de erros.

5 - Usando o copilador certo g++

Qual o problema,, o problema é q estamos trabalhando com C++ e nao C puro.. E para copilar um programa em c++ devemos usar o g++,,

[
luciano@meupc teste]$ g++ -o trabalho1.exe trabalho1.cpp

E sem erros, mas cade meu “Ola Mundo”? Digite ls (ou dir caso M$)

[
luciano@meupc1 teste]$ ls
trabalho1.cpp trabalho1.cpp~ trabalho1.exe
[
luciano@meupc1 teste]$

Ha 3 arquivos: o cpp é o criamos, o cpp~ é uma copia de segurança que o kedit cria, e o trabalho1.exe é um executavel linux (repare na cor verde), caso vc esteja no linux digite assim

[
luciano@meupc teste]$ ./trabalho1.exe
Ola Mundo![
luciano@meupc teste]$

É realmente tanta emoção que o prompt ficou do lado do resolva seu problema adicionando um “\n” do final de seu texto:

#include <stdio.h>
int main()
{
printf("Ola Mundo!\n");
}

Nao esqueca de salvar, copilar e depois executar.
Sugestao:: pesquise no google cada palavra estranha q vc leu por aqui..
Teste agora em um repeticao de 10 vezes:

#include <stdio.h>
int main()
{
int i;
for (i=0; i<10;>