Você está aqui: Principal » Lista Completa de Tutoriais

Sobre este Tutorial

Autor: Kátia Duarte
Data: 18-11-2005
Categoria: Programação
Assunto: C - BÁSICO
Visitas:
E-mail: katchuskaduarte@yahoo.com.br
Site:
Avaliação: ( voto)
1 2 3 4 5
Comentários: Ler / Escrever

Linguagem C – Ponteiros e funções

 

Objetivos

 

Neste artigo veremos como fazer chamadas por referencia e aprender como declarar, inicializar ponteiros para matrizes.

 

Pré-requisitos

 

É necessário que o leitor tenha acompanhado o artigo anterior, pois os artigos obedecem a uma seqüência.

 

Nota: Este artigo faz parte do curso de “Linguagem C – Básico”.

 

Ponteiros e funções

 

No artigo sobre funções foi visto o conceito de chamada por valor, ou seja, a função chamada não pode alterar nenhuma variável da função chamadora. Porém existe uma forma de fazer isto utilizando os ponteiros dito como chamada por referencia. Dessa forma os parâmetros a serem passados a função devem ser os endereços das variáveis e não os valores. Veja o programa abaixo.

 

#include<stdio.h>

#include<conio.h> /*Para utilizar getch();*/

 

AlteraValores(int *pnum1,int *pnum2);

 

void main()

{

 

int num1,num2;

num1=11;

num2=22;

 

/*Imprime os dados da variaveis num1 e num2 antes da função AleraValores() ser
chamada:*/

 

printf("Na funcao principal temos:\n");

printf("num1=%d e num2=%d\n\n", num1,num2);

 

/* Chama a função AlteraValores():*/

AlteraValores(&num1,&num2);  /*chamada por referencia, para isso passamos os
                                               os endereços das variaveis e não os valores.
                                              Possibilitando assim que a função AlteraValores()
                                              modifique os valores armazenados nessas duas
                                               variaveis (num1 e num2) do programa principal.*/

 

/*Imprime os dados da variaveis num1 e num2 depois da função AleraValores() ser
executada, comprovando que os valores das duas variaveis foram modificados:*/

 

printf("Apos chamar a funcao AlteraValores()temos:\n");

printf("num1=%d e num2=%d\n",num1,num2);

 

getch();

}/*Fim do programa principal*/

 

AlteraValores(int *pnum1,int *pnum2)

{

 

/*Incrementando os valores das variaveis num1 e num2 cujos os endereços foram
armazenados nos ponteiros pnum1 e pnum2 respectivamente:*/

 

*pnum1=*pnum1+1;

*pnum2=*pnum2+1;

 

}/* Fim da função AlteraValores()*/

 

No programa acima pode-se observar claramente que ao passarmos o endereço das variáveis num1 e num2 para a função AlteraValores(), dado pela instrução:

 

AlteraValores(&num1,&num2);

 

pode-se modificar o valor dessas duas variáveis através da função chamada, ou seja, AlteraValores(); Essas modificações nos valores são feitos pela instrução:

 

*pnum1=*pnum1+1; /*Altera o valor da variavel num1 */

*pnum2=*pnum2+1; /*Altera o valor da variavel num2 */

Agora veremos um outro conceito que pode ser utilizado na linguagem c que o uso de ponteiros para chamar uma função. Embora a função não seja uma variável, ela é gravada em uma posição da memória que pode ser referenciada por um ponteiro. Dessa forma o ponteiro aponta para o inicio da função, podendo ser usado para chama-lá.

 

#include<stdio.h>

#include<conio.h> /*Para utilizar getch();*/

 

void CalculaArea();/*declara a função como sendo do tipo void */

 

void main()

 

{

void (*pfuncao)(); /*declara um ponteiro do tipo void para função.*/

 pfuncao=CalculaArea; /*Diz que o ponteiro pfuncao aponta para função
                     CalculaArea().Nesta instrução não deve ser utilizado os
                     parenteses depois do nome da funcao. */

(*pfuncao)(); /*chama a função através do ponteiro pfuncao.*/

 

getch();

 

}

 

void CalculaArea()

{

int b,h;

float Area;

 

/* A entrada de dados poderia ser feito no programa principal, ela foi feita
 dentro dessa função para facilitar a visualização de como é feita a chamada
 do programa principal para esta função através de ponteiros.*/

 

/*Colhe as informações necessarias para o calculo da area do triangulo:*/
printf("Esta funcao foi chamada atraves do ponteiro pfuncao:\n\n");
printf("Aqui nesta funcao sao colhidos os dados para o calculo da area\n");

 

printf("Digite o valor da base do triangulo:\n");

scanf("%d",&b);

 

printf("Digite o valor da altura do triangulo:\n");

scanf("%d",&h);

 

/* Calcula a área do triangulo:*/

Area=(b*h)/2;

 

/*Imprime a area do triangulo:*/

 printf("\nArea do triangulo:%f",Area);

 

}

 

Observe no exemplo acima que a declaração de um ponteiro para função é feita da seguinte forma:

 

void (*pfuncao)();

 

Nessa instrução temos um ponteiro para uma função do tipo void, é importante lembrar que pode-se utilizar qualquer tipo de dados definido no começo deste tutorial. Os primeiros parênteses são importantíssimos, pois caso não os coloque haverá erro ao rodar o programa. Já a instrução:

 

pfuncao=CalculaArea;

 

Atribui ao ponteiro pfuncao o endereço da função CalculaArea. Observe que não utiliza-se nenhum parênteses, pois isso significaria a atribuição do valor retornado pela função ocasionando erro na hora da compilação.

 

E por ultimo a instrução:

 

(*pfuncao)();

 

É responsável por chamar a função CalculaArea(), responsável por calcular a área de um triangulo.

 

Esse método de programação é muito usado em algumas situações como, por exemplo, quando se deseja substituir um grande comando de switch com muitas funções listadas. Um programa desse tipo pode ser simplificado utilizando matrizes de funções.

 

Para entender melhor o que é matriz de ponteiros para funções analise o programa a seguir.

 

#include<stdio.h>

#include<conio.h> /*para usar getch();*/

 

void funcao1(), funcao2();

 

void main()

{

int opcao;

void (*MatrizFuncao[2])(); /* Declarando matriz de ponteiros para função */

 

/*Inicializando a matrizFuncao:*/

MatrizFuncao[0]=funcao1;

MatrizFuncao[1]=funcao2;

 

printf("Digite 1 para primeira funcao e 2 para segunda:\n");

scanf("%d",&opcao);

 

if (opcao==1)

(*MatrizFuncao[0])();/*chama função*/

else

{

 

if (opcao==2)

(*MatrizFuncao[1])();/*chama função*/

else

printf("\nOpcao Invalida!!!");

}

 

getch();

 

}

 

void funcao1()

{

 

printf("\nVc acessou a funcao 1!!!");

 

}

 

void funcao2()

{

 

printf("\nVc acessou a funcao 2!!!");

 

}

 

No programa apresentado o usuário escolhe entre a opção 1 ou 2. Conforme a sua escolha uma das funções será acessada.

 

Para isto uma matriz de ponteiro teve que ser definida através da instrução:

 

void (*MatrizFuncao[2])();

 

O que indica que a MatrizFuncao irá conter dois elementos que são ponteiros para funções. Essa matriz de função pode ser inicializadas da seguinte forma:

 

MatrizFuncao[0]=funcao1;

MatrizFuncao[1]=funcao2;

Indicando que a o primeiro e o segundo elemento da matriz irá conter a funcão1 e 2 respectivamente. A função a ser chamada é determinada pelo índice em que a função se encontra. Isto é feita através das instruções:

 

(*MatrizFuncao[0])(); /*chama função 1*/

(*MatrizFuncao[0])(); /*chama função 2*/

 

Conclusão

 

Neste artigo vimos como modificar as variáveis da função principal pela função chamada. Isto foi feito usando ponteiros (chamada por referencia). E por ultimo como utilizamos matrizes de ponteiros e como elas podem nos ser úteis.

 

 

LISTA DE TODOS OS TUTORIAIS DISPONÍVEIS

 

LIVROS CAMPEÕES DE VENDA NO SITE

Cursos Online com Certificado e Suporte à Dúvidas

CURSOS ONLINE COM CERTIFICADO - INDICADOS POR JÚLIO BATTISTI
EM PARCERIA COM BRAVA CURSOS
INFORMÁTICA
  • Curso de Digitação
  • Formatando e Instalando Computador
  • Excel para Iniciantes
  • Curso Compre no Ebay
  • Informática Educativa
  • Curso de Linux
  • Segurança na Internet
  • Montagem e Manutenção de Computadores
  • Curso Remoção de Vírus
  • Curso Ubuntu
  • Instalação Linux - Ubuntu
  • AdministraÇÃo
  • Gestão de Projetos e Empreendedorismo
  • Benefícios da Previdência
  • Curso HP 12C
  • Matemática Financeira
  • Curso Análise Salarial
  • Processo de Elaboração de Questionário
  • Excelência no Atendimento ao Cliente
  • Logística do Transporte
  • Licitações e Contratos Administrativos
  • Profissionalizante
  • Adestramento Canino
  • Como fazer pesquisa Científica e Monografia
  • Curso de Corte e Costura
  • Supervisor de Telemarketing
  • Balconista de Padaria
  • Curso Educação Infantil
  • Recepcionista e Secretaria
  • Velas Artesanais
  • Relações Interpessoais
  • Curso de Arbitragem
  • Bullying e Cyberbullying
  • Capacitação de Tutores em EAD
  • EstÉtica
  • Curso de Massoterapia
  • Curso de Depilação
  • Drenagem Linfática
  • Curso de Maquiagem
  • Limpeza Turbinada de Pele
  • Alisamento e Relaxamento Capilar
  • Curso de Etiqueta
  • SPA de Vinhoterapia na Estética Facial
  • Curso de Shantala
  • Introdução à Colorimetria Capilar
  • Pessoal
  • Curso de Caligrafia
  • Memorização
  • Chefia e Liderança
  • Curso Falar em Público
  • Curso Bases Neurológicas
  • Leitura Dinâmica
  • Planejamento de Projeto Pessoal
  • Reforma Ortográfica
  • Como Passar em Concursos Públicos
  • Direção Defensiva
  • Administração do Tempo
  • Curso de Redação
  • Curso de Meditação
  • Como Passar no Vestibular
  • Atualização Gramatical
  • NegÓCIOS
  • Relações Humanas e Ética Profissional
  • Marketing e Vendas Diretas
  • Persuasão em Vendas
  • Entretenimento
  • Curso de Mágica
  •  
    SaÚde
  • Primeiros Socorros
  • Curso de Fitoterapia
  • Curso de Aromaterapia
  • Medicina Alternativa
  • Plantas Medicinais
  • Técnicas básicas de Enfermagem
  • O Trabalho do Agente Comunitário de Saúde
  • Ergonomia - Postura Correta em Frente ao Computador
  • Ética Profissional - Ênfase em Radiologia
  • Adolescência: Visão Saúde do Assunto
  • Meio Ambiente
  • Curso Gestão Ambiental
  • Jardinagem e Paisagismo
  • Curso de Reciclagem
  • Curso de Bonsai
  • MÚsica
  • Curso de Violão
  •  
    NutriÇÃo
  • Higiene e Manipulação de Alimentos
  • Congelamento de Alimentos
  • Culinária Básica
  • Culinária Intermediária
  • RelaÇÕes Humanas
  • Curso Gestão de Pessoas
  • Departamento Pessoal
  • Desenvolvimento Pessoal Empresarial
  • Curso de Telemarketing
  • Curso Dinâmica em Grupo
  • Rescisão Contrato de Trabalho
  • Folha de Pagamento na Prática
  • Atendimento ao Cliente
  • Adm. da Empregada Doméstica
  • Curso de Homolognet
  • Recursos Humanos - Férias
  • Recursos Humanos - 13° Salário
  • Registro de Empregados
  • Web Master
  • Curso de HTML
  • Curso de WordPress
  • Curso de HTML5
  • Designer GrÁfico
  • Curso de Corel Draw
  • Efeitos Especiais com InDesign CS5
  • Efeitos Tipográficos com InDesign CS5
  • CURSO EM FORMATO DE VÍDEO-AULA
    EXEMPLOS PRÁTICOS PASSO A PASSO COM SOM E IMAGEM
    Clique no curso para informações detalhadas
    Curso Duração Informações
    ACCESS
    Vídeo Aula: Access 2007 - Consultas - Curso Completo e Prático 4:30h Clique aqui
    Vídeo Aula: Access 2007 - Curso Básico e Prático 5:30h Clique aqui
    Vídeo Aula: Access 2007 - Curso Intermediário - Passo a Passo 5:00h Clique aqui
    Vídeo Aula: Access 2007 Avançado Macros e Programação VBA 11:30h Clique aqui
    Vídeo Aula: Access 2010 - Básico + Intermediário 3:00h Clique aqui
    Vídeo Aula: Aprenda Access 2007 - Curso Prático 1:30h Clique aqui
    Vídeo Aula: Formulários e Macros no Access 2007 - Curso Prático 6:00h Clique aqui
    Vídeo-Aula - Access 2007 - Curso Básico 2:01h Clique aqui
    Vídeo-aula - Access 2007 - Tudo Sobre Consultas 2:30h Clique aqui
    Vídeo-Aula - Curso Avançado de Access 2003 2:48h Clique aqui
    Vídeo-Aula - Curso Básico de Access 2003 2:49h Clique aqui
    EXCEL
    Vídeo-aula - Curso de Macros e Programação VBA no Excel - Básico e In... 13:02h Clique aqui
    Vídeo-Aula: Excel 2007 - Curso Avançado 6:00h Clique aqui
    Vídeo-Aula: Excel 2007 Avançado - Passo a Passo 7:30h Clique aqui
    Vídeo Aula: Aprenda Excel 2007 - Avançado 1:30h Clique aqui
    Vídeo Aula: Excel 2010 - Básico e Intermediário 7:36h Clique aqui
    Vídeo aula: Excel 2010 - Dashboards - Curso Completo 2:49h Clique aqui
    Vídeo Aula: Funções de Pesquisa no Excel 2007 2:00h Clique aqui
    Vídeo Aula: Macros e Programação VBA no Excel 2007 - Básico + Intermed... 11:00h Clique aqui
    Vídeo Aula: Macros e Programação VBA no Excel 2007 Curso Avançado 4:00h Clique aqui
    Vídeo Aula: Tabelas Dinâmicas no Excel 2007 - Curso Completo 2:30h Clique aqui
    Vídeo Aula: Tudo Sobre Funções de Texto no Excel 2007 2:00h Clique aqui
    Vídeo-Aula - Criando um Cadastro de Clientes com o VBA no Excel 2003 2:14h Clique aqui
    Vídeo-aula - Criando uma Agenda no Excel 0:40h Clique aqui
    Vídeo-aula - Curso de Macros e Programação VBA no Excel - Avançado 11:27h Clique aqui
    Vídeo-aula - Excel 2003 - Curso Básico 3:03h Clique aqui
    Vídeo-Aula - Excel 2007 - Dashboards - Curso Completo 1:30h Clique aqui
    Vídeo-Aula - Tabelas Dinâmicas Avançadas no Excel 2003 2:00h Clique aqui
    Vídeo-aula - Tudo Sobre Funções Matriciais no Excel 2:30h Clique aqui
    Vídeo-Aula - Tudo Sobre Gráficos no Excel 9:00h Clique aqui
    Vídeo-aula interativa: Tudo Sobre Tabelas Dinâmicas no Excel 2003 2:30h Clique aqui
    Vídeo-Aula: Excel 2003 Avançado em 120 Lições 14:00h Clique aqui
    Vídeo-aula: Excel 2007/2010 Básico + Intermediário em 26 Lições 3:00h Clique aqui
    WORD
    Vídeo Aula: Aprenda Word 2007 - Curso Prático 1:30h Clique aqui
    Vídeo-Aula - Curso Básico de Word 2003 2:14h Clique aqui
    Vídeo-aula - Word 2003 Avançado 1:34h Clique aqui
    Vídeo-aula - Word 2003 Básico 2:14h Clique aqui
    Vídeo-Aula - Word 2007 - Curso Básico 2:23h Clique aqui
    POWERPOINT
    Vídeo Aula: Aprenda PowerPoint 2007 - Curso Prático 1:30h Clique aqui
    Vídeo-Aula - Curso Básico de PowerPoint 2003 2:22h Clique aqui
    WINDOWS
    Vídeo Aula: Aprenda Windows 7 - Curso Prático 1:30h Clique aqui
    Vídeo-Aula - Curso Básico de Windows XP 2:36h Clique aqui
    Vídeo-Aula - Windows 7 - Formatação, Instalação e Configuração 3:40h Clique aqui
    Vídeo-Aula - Windows Server 2003 e Active Directory - Instalação e Adm... 27:00h Clique aqui
    Vídeo-Aula - Windows XP - Formatação e Instalação 3:47h Clique aqui
    Vídeo-Aula - Windows XP Básico + Intermediário + Dicas Práticas 8:00h Clique aqui
    Vídeo-Aula: GPOs no Windows Server 2003 - Curso Completo 4:00h Clique aqui
    Vídeo-Aula: Windows 7 - Curso Prático 5:00h Clique aqui
    Vídeo-Aula: Windows Server 2003 - DNS DHCP WINS e TCP/IP 5:00h Clique aqui
    Windows Server 2003 - Terminal Services e Active Directory 2:30h Clique aqui
    REDES E TCP/IP
    Aprenda Redes para Casas e Escritórios 1:30h Clique aqui
    PROGRAMAÇÃO
    Vídeo-Aula: Programação Delphi - Básico + Intermediário 30:00h Clique aqui
    Vídeo Aula: Criando um Sistema de Controle de Estoque Completo com Del... 11:19h Clique aqui
    Vídeo Aula: Programação Orientada à Objetos com Java 9:00h Clique aqui
    Vídeo-Aula - CALCULADORA HP 12C - Curso Prático em 80 Lições 02:30h Clique aqui
    Vídeo-Aula - CALCULADORAS HP 50G - 49G/G+ - 48 GII 1:30h Clique aqui
    Vídeo-Aula - Curso Completo de Lógica de Programação 22:15h Clique aqui
    Vídeo-Aula - Curso Completo de PHP + HTML + CSS 27:35h Clique aqui
    Vídeo-Aula - Lógica de Programação com VB.NET 14:00h Clique aqui
    Vídeo-Aula - Programação C - Curso Básico e Intermediário 12:00h Clique aqui
    Vídeo-Aula - Programação Web com ASP.NET 3.5 e VB.NET - Básico 19:00h Clique aqui
    Vídeo-Aula - VB.NET 2010- Curso Avançado 37:00h Clique aqui
    Vídeo-Aula - VB.NET 2010- Curso Básico e Prático 22:00h Clique aqui
    Vídeo-Aula: Curso de Java e Lógica de Programação com Java 8:00h Clique aqui
    Vídeo-aula: Programação PHP - Passo a Passo em 151 Lições 2:00h Clique aqui
    Vídeo-aula: Programação Visual C Sharp 2010 - Passo a Passo 37:00h Clique aqui
    Vídeo-Aula: Programação Web com ASP.NET 4.0 e C# - Curso Avançado 22:00h Clique aqui
    Vídeo-Aula: Programação Web com ASP.NET 4.0 e C# - Curso Básico 20:00h Clique aqui
    Vídeo-aula: Visual C# 2010- Curso Avançado e Prático 32:00h Clique aqui
    CONCURSOS PÚBLICOS
    130 Questões de Matemática para Concursos Públicos - Resolvidas e Come... 6:00h Clique aqui
    Vídeo Aula: Física 1 - Ensino Médio 1:30h Clique aqui
    Vídeo Aula: Física 2 - Ensino Médio 1:30h Clique aqui
    Vídeo Aula: Português e Gramática - Teoria + Prática 30:18h Clique aqui
    Vídeo Aula: Progressão Aritmética - PA mais Progressão Geométrica - PG... 4:00h Clique aqui
    Vídeo-aula - Análise Combinatória - Teoria e Prática 6:00h Clique aqui
    Vídeo-aula - Conjuntos - Teoria e Prática 5:00h Clique aqui
    Vídeo-aula - Excel Para Concursos Públicos - Simulados e Provas Coment... 2:00h Clique aqui
    Vídeo-aula - Matemática Financeira - Teoria e Prática 9:10h Clique aqui
    Vídeo-Aula - Raciocínio Lógico - Curso Completo e Prático 12:00h Clique aqui
    Vídeo-aula - Série Concursos: Inglês ESAF - Simulados e Provas Comenta... 2:00h Clique aqui
    Vídeo-Aula: Concordância Nominal e Concordância Verbal 0h Clique aqui
    Vídeo-Aula: Matemática do 1º Ano do Segundo Grau - Curso Completo 27:00h Clique aqui
    Vídeo-Aula: Matemática do 1º Grau - Curso Completo 30:00h Clique aqui
    Vídeo-Aula: Trigonometria - Teoria e Prática - Completo 6:00h Clique aqui
    BANCO DE DADOS
    Vídeo-Aula - Dominando o ORACLE - Curso Prático 12:00h Clique aqui
    Vídeo-Aula - Linguagem SQL e Banco de Dados - Teoria e Prática 08:00h Clique aqui
    Vídeo-Aula - MySQL - Curso Completo e Prático 12:00h Clique aqui
    Vídeo-aula - SQL Server 2005 - Reporting Services 2:30h Clique aqui
    Vídeo-Aula: Dominando o SQL Server 2005 - Curso Completo 5:00h Clique aqui
    Vídeo-Aula: Firebird e Linguagem SQL - Curso Completo 12:00h Clique aqui
    WEBDESIGN
    Criando um Site Completo e Profissional com Fireworks, Flash, Dreamwe... 5:00h Clique aqui
    Criando um Site ou Blog Dinâmico, Completo e Profissional, facilmente,... 6h Clique aqui
    Vídeo-Aula - Criação de Sites - Curso Básico 3:00h Clique aqui
    Vídeo-Aula - Criando uma Loja Virtual com PHP e MySQL - Curso Completo... 19:00h Clique aqui
    Vídeo-Aula - Flash MX - Curso Básico 2:26h Clique aqui
    Vídeo-Aula - HTML - Curso Prático 2:40h Clique aqui
    Vídeo-Aula: Como Criar um Portal Profissional e Dinâmico, com o WordPr... 7:40h Clique aqui
    Vídeo-Aula: Criando uma Loja Virtual Completa com o Magento 5:33h Clique aqui
    INTERNET
    Vídeo-Aula - Curso de Microinformática Prática 4:35h Clique aqui
    Vídeo-aula - Curso Prático de Internet 0:40h Clique aqui
    Vídeo-aula - Curso Prático de Outlook Express 0:55h Clique aqui
    Vídeo-Aula: Tudo Sobre Rede Sociais - Facebook, Twitter, Orkut e MSN ... 3:00h Clique aqui
    CAD
    Vídeo-Aula - Curso de Autocad 2D 4:00h Clique aqui
    Vídeo-Aula - Curso de Autocad 3D 3:45h Clique aqui
    VÍDEO E ÁUDIO
    DVD: Conversão de Formatos Digitais: Áudio e Vídeo 1:26h Clique aqui
    Sony Vegas 8 PRO - Edição de Vídeo e Multimídia para Web 5:00h Clique aqui
    Vídeo-Aula - Curso de Teoria Musical 1:00h Clique aqui
    PROGRAMAS GRÁFICOS
    Vídeo-Aula - Adobe Illustrator CS4 - Curso Completo 3:00h Clique aqui
    Vídeo-Aula - Adobe InDesignr CS4 - Curso Completo 3:00h Clique aqui
    Vídeo-Aula - Corel Draw X4 - Curso Completo 5:00h Clique aqui
    Vídeo-Aula - Criando Efeitos Digitais com o Photoshop CS4 e com o Illu... 5:00h Clique aqui
    Vídeo-Aula - Curso de CorelDraw X4 - Módulo I 3:00h Clique aqui
    Vídeo-Aula - Curso Profissional Photoshop 4:20h Clique aqui
    ADMINISTRAÇÃO E NEGÓCIOS
    DVD - Curso de Oratória - Falando em Público sem Medo 2:36h Clique aqui
    VÍDEO AULAS DE HARDWARE E MONTAGEM DE PCS
    DVD: Hardware - Curso Básico 0:58h Clique aqui
    Vídeo Aula: Aprenda Hardware e Montagem de Microcomputadores 1:30h Clique aqui

    © Júlio Battisti, 2001 - 2010. Todos os direitos reservados.
    É expressamente proibida a reprodução total ou parcial do conteúdo deste site e dos textos disponíveis, seja através de mídia eletrônica, impressa, ou qualquer outra forma de distribuição. Os infratores serão indiciados e punidos com base na lei nº 9.610 de 19/02/1998. Este tutorial só pode ser publicado no site www.juliobattisti.com.br e no site do Autor do tutorial. Nenhum outro site tem permissão para copiar e publicar este tutorial, mesmo que sejam mantidas todas as referências ao autor e ao site www.juliobattisti.com.br. Não é permitida a publicação deste tutorial em nenhum outro site.