Modularização: Funções e Procedimentos \| TreinaWeb               Promoção no ar   Matricule-se agora e garanta **54% de desconto**  

  Termina em   Tempo restante da oferta: 09 Horas 

 50 Min 

 52 Seg 

   Tempo restante da oferta: 09 50 52 

  [Assinar →](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26) 

   [                ](https://www.treinaweb.com.br)  Explorar  

 [ Quanto custa? ](#assinatura) [ FAQ ](https://www.treinaweb.com.br#faq) [Matricule-se](#assinatura) [ Entrar ](https://www.treinaweb.com.br/login) 

     [ Início ](https://www.treinaweb.com.br) [ Artigos ](https://www.treinaweb.com.br/blog) Modularização: Funções e Procedimentos  [ Algoritmos ](https://www.treinaweb.com.br/blog/categoria/algoritmos) [ Desenvolvimento ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento) 

# Modularização: Funções e Procedimentos

 Entenda o conceito de modularização e a utilização de funções e procedimentos no desenvolvimento de software.

 [ Wesley Gado ](https://www.treinaweb.com.br/blog/autor/wesley-gado) 6 anos atrás

  ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/12/MODULARIZAÇÃO.png)  

Nos artigos anteriores aprendemos sobre [variáveis e constantes](https://www.treinaweb.com.br/blog/variaveis-e-constantes-na-programacao/ "variáveis e constantes"), [operadores de comparação](https://www.treinaweb.com.br/blog/operadores-de-comparacao-na-programacao/ "operadores de comparação"), [estrutura condicionais e de repetição](https://www.treinaweb.com.br/blog/estruturas-condicionais-e-de-repeticao/ "estrutura condicionais e de repetição") agora vamos entender o uso do conceito de modularização.

[  ![Base para desenvolvedor](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/base-para-desenvolvedor.svg)   Formação Base para desenvolvedor Conhecer a formação ](https://www.treinaweb.com.br/formacao/base-para-desenvolvedor)

## Modularização

Devido as funções e procedimentos nós podemos modular a construção de nosso software, ou seja, dividir várias partes do sistema em partes menores que possuem tarefas específicas. O uso deste recurso traz muitas vantagens como a reutilização do código, a facilidade de manutenção, melhor legibilidade facilitando a compreensão do código por outros desenvolvedores, entre outras. Portanto, o conceito de dividir o seu código em blocos que se comunicam entre si e que cada parte tenha uma responsabilidade especifica pode ser chamado de modularização.

A modularização é mais vista na programação estruturada, mas os conceitos são muito importantes para quem está aprendendo lógica, pois outros paradigmas utilizam algumas características similares.

## Funções e Procedimentos

### Funções

Uma função é um conjunto de comandos que pode ser separado por um “bloco” de código visando o processamento de uma tarefa específica, onde esta função recebe parâmetros e retorna um valor, por exemplo: ao desenvolver uma calculadora simples nós teremos, ao menos, quatro operações como adição, subtração, multiplicação e divisão. Cada operação pode ser traduzida em uma função específica que será chamada de acordo com a necessidade do usuário a qualquer momento.

A função somar ficaria da seguinte forma utilizando a linguagem C:

```c
int somar(int n1, int n2){
    int soma;
    soma = n1 + n2;
    return(soma);
}

```

Vamos analisar o código acima, podemos ver que a função *somar* tem a responsabilidade única de somar dois valores (que são recebidos como parâmetros) e retornar o resultado da soma destes dois valores, como podemos ver na linha `return(soma)`. Logo em seguida veremos como podemos chamar a função somar em nossa função principal, a *main*:

```c
void main() {
    int n1, n2;
    printf("Digite o primeiro valor:");
    scanf("%d", &n1);
    printf("Digite o segundo valor:");
    scanf("%d", &n2);

    printf("\\nA soma e %d.", somar(n1,n2));
}

```

A função *main* é a função principal que executa o nosso código. Na função *main*, é chamada a função somar da seguinte maneira: `somar(n1,n2)` onde temos o nome da função e logo em seguida a entrada dos **parâmetros**.

Perceba que a função *somar* possui a característica `int` antes de seu nome, isso significa que ela irá retornar um valor inteiro, valor este que é exibido em nossa função principal. Sendo assim, em qualquer parte de nosso algoritmo que formos somar dois valores nós não precisamos repetir o mesmo código, será necessário somente chamar a função e alterar os **parâmetros.**

Os **parâmetros** são os valores que a função irá pedir para executar a sua tarefa, neste caso ao criar a função estamos informando que é necessário passar os valores `n1` e `n2`, ambos inteiros, para que desta forma a função faça a soma destes dois valores, e **retorne** a variável ´soma´.

Podemos ver o resultado do código acima:

![Resultado Terminal exemplo função](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/12/retorno-soma.png)

[  ![Lógica de Programação - Iniciando na programação](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/logica-de-programacao.svg)   Curso Lógica de Programação - Iniciando na programação Conhecer o curso ](https://www.treinaweb.com.br/curso/logica-de-programacao-iniciando-na-programacao)

### Procedimentos

Os procedimentos, ou procedures, são similares as funções tanto na sua criação como no conceito de ter uma responsabilidade específica, porém nós utilizamos os procedimentos quando não há retorno, para mostrar uma mensagem por exemplo.

Para entender melhor podemos complementar o exemplo acima com um procedimento que diga se um número é par ou ímpar, para isso, vamos criar o procedimento *parOuImpar:*

```c
void parOuImpar(int n1){
    float resto;
    resto = n1 % 2;
    if (resto != 0) {
        printf("\\nO numero %d e impar.", n1);
    } else {
        printf("\\nO numero %d e par.", n1);
    }
}

```

Criamos o procedimento *parOuImpar* que recebe um único valor de parâmetro, onde a responsabilidade dele é verificar e exibir a mensagem se o valor é par ou ímpar, **sem a necessidade de retornar algum valor,** perceba que se tratar de um procedimento nós iniciamos a criação dele com o tipo *void*.

Ao final, nosso código completo ficará da seguinte forma:

```c
int somar(int n1, int n2){
    int soma;
    soma = n1 + n2;
    return(soma);
}

void parOuImpar(int n1){
    float resto;
    resto = n1 % 2;
    if (resto != 0) {
        printf("\\nO numero %d e impar.", n1);
    } else {
        printf("\\nO numero %d e par.", n1);
    }
}

void main() {
    int n1, n2;
    printf("Digite o primeiro valor:");
    scanf("%d", &n1);
    printf("Digite o segundo valor:");
    scanf("%d", &n2);

    printf("\\nA soma e %d.", somar(n1,n2));
    parOuImpar(somar(n1,n2));
}

```

Outro ponto que vale ressaltar, em nossa função principal *main*, veja que curioso, chamamos o procedimento *parOuImpar* e como parâmetro nós passamos a função *somar*, afinal, ela retorna um valor inteiro, que é o que o nosso **parâmetro** pede.

O resultado para o código acima será:

![Resultado terminal exemplo procedimento](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/12/funcao-parouimpar.png)

### Funções e Procedimento em outras linguagens

Em C podemos diferenciar a função do procedimento utilizando *void* já que o procedimento não retornará nenhum valor\*,\* porém em Pascal, por exemplo, devemos declarar de forma diferente, onde as funções terão que ser declaradas utilizando *function* e os procedimentos utilizando *procedure,* como podemos ver no exemplo abaixo:

```c
Program exemploIdade;
var
idade :integer;

procedure maioridade(idade :integer);
begin
    if (idade >= 18) then
      Writeln('Maior de idade')
    else
    	Writeln('Menor de idade');
end;

begin
    Write('Informe a idade: ');
    readln(idade);
    maioridade(idade);    
end.

```

Ao criarmos a *procedure maioridade*, ela não irá retornar nenhum valor, mas sim exibir as mensagens de acordo com o valor da idade digitada pelo usuário, podendo ser maior de idade para a idade igual ou acima de 18 anos, ou menor de idade para valores menores de 18. Podemos criar uma função com a mesma responsabilidade que esse procedimento, porém ficaria da seguinte forma:

```c
Program exemploIdade;
var
idade :integer;

function maioridade(idade :integer):boolean;
begin
    if (idade >= 18) then
      maioridade:=true
    else
    	maioridade:=false;
end;

begin
    Write('Informe a idade: ');
    readln(idade);

    if maioridade(idade)=true then
      Writeln('Maior de idade')
    else 
    	Writeln('Menor de idade');            
end.

```

Perceba que a *função maioridade* não exibe nenhuma mensagem, mas sim retorna um valor booleano, ou seja, se é verdadeiro ou falso, e com isso ao chamar a função é exibida a mensagem de acordo com o retorno obtido pela função.

### Conclusão

Utilizando o conceito de modularização podemos facilitar a construção de sistemas mais complexos dividindo as responsabilidades em blocos menores e específicos utilizando as funções e procedimentos como vimos neste artigo, lembrando que este conceito não está ligado a somente a Linguagem C ou Pascal, mas sim a lógica de programação como um todo. Outro artigo fundamental para entender os conceitos da área de desenvolvimento é [guia de introdução a programação](https://www.treinaweb.com.br/blog/guia-de-introducao-a-programacao/ "guia de introdução a programação"), aconselho fortemente a leitura.

[  ![Lógica de Programação - Iniciando na programação](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/logica-de-programacao.svg)   Curso Lógica de Programação - Iniciando na programação Conhecer o curso ](https://www.treinaweb.com.br/curso/logica-de-programacao-iniciando-na-programacao)

Por fim, caso queira aprender mais sobre [Lógica de Programação](https://www.treinaweb.com.br/blog/o-que-e-de-fato-a-logica-de-programacao) saiba que aqui na [TreinaWeb](https://treinaweb.com.br/) temos o curso [Lógica de Programação - Iniciando na programação](https://www.treinaweb.com.br/curso/logica-de-programacao-iniciando-na-programacao) que possui **01h25 de vídeos** e um total de **13 exercícios**. Conheça também nossos outros cursos de [Lógica de Programação](https://www.treinaweb.com.br/cursos?q=logica+de+programacao).

Veja quais são os tópicos abordados durante o curso de Lógica de Programação - Iniciando na programação:

- Entender o que é lógica de programação e algoritmos;
- Entender qual diferença entre dados e informações;
- Conhecer os diferentes tipos de dados;
- Saber com trabalhar com variáveis e constantes;
- Saber como trabalhar com os operadores aritméticos, relacionais e lógicos.

- [ #Lógica de Programação ](https://www.treinaweb.com.br/blog/tag/logica-de-programacao)
- [ #Algoritmo ](https://www.treinaweb.com.br/blog/tag/algoritmo)

Autor

 ![Wesley Gado](//secure.gravatar.com/avatar/1b770ca482a7232b1885881430a592bb?d=mm)

## Wesley Gado

 Formado em Análise e Desenvolvimento de Sistemas pelo Instituto Federal de São Paulo, atuou em projetos como desenvolvedor Front-End. Nas horas vagas grava Podcast e arrisca uns três acordes no violão. 

 [Todos os artigos](https://www.treinaweb.com.br/blog/autor/wesley-gado)  

## Continue estudando

 Transforme leitura em prática com os cursos e formações da TreinaWeb.

 [Ver cursos](https://www.treinaweb.com.br/cursos)   

  Continue lendo

## Artigos relacionados

- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/01/GUIA-INTRODUÇÃO-PROGRAMAÇÃO-400x280.png)  [ Algoritmos ](https://www.treinaweb.com.br/blog/categoria/algoritmos) 

     6 anos atrás

    ##  [ Guia de introdução à programação ](https://www.treinaweb.com.br/blog/guia-de-introducao-a-programacao) 

     Entenda os conceitos fundamentais para iniciar seus estudos na área de desenvolvimento neste guia de introdução a programação.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/12/CONCEITOS-APRENDIZADO-PROGRAMAÇÃO-400x280.png)  [ Algoritmos ](https://www.treinaweb.com.br/blog/categoria/algoritmos) 

     6 anos atrás

    ##  [ Conceitos usados no aprendizado de programação ](https://www.treinaweb.com.br/blog/conceitos-usados-no-aprendizado-de-programacao) 

     Entenda conceitos utilizados no aprendizado de lógica de programação.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/10/o-que-e-e-como-comecar-com-golang-400x280.jpg)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     4 anos atrás

    ##  [ Orientação a objetos na linguagem Go ](https://www.treinaweb.com.br/blog/orientacao-a-objetos-na-linguagem-go) 

     Neste artigo iremos aprender como podemos utilizar a orientação a objetos na linguagem Go, usando structs e pointer receivers.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2017/08/ainda-vale-a-pena-utilizar-o-jquery-400x280.png)  [ Javascript ](https://www.treinaweb.com.br/blog/categoria/javascript) 

     9 anos atrás

    ##  [ Ainda vale a pena utilizar o jQuery? ](https://www.treinaweb.com.br/blog/ainda-vale-a-pena-utilizar-o-jquery) 

     O jQuery é a biblioteca JavaScript mais famosa. Discutiremos nesse artigo se ainda vale a pena utilizá-lo e os cenários possíveis.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/11/ARTIGO-DART-400x280.jpg)  [ Dart ](https://www.treinaweb.com.br/blog/categoria/dart) 

     4 anos atrás

    ##  [ Guia da linguagem dart ](https://www.treinaweb.com.br/blog/guia-da-linguagem-dart) 

     Nesse guia da linguagem Dart você aprenderá o necessário para criar os seus primeiros softwares com a linguagem de programação Dart.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/05/como-instalar-o-csharp-e-nosso-primeiro-exemplo-400x280.png)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     4 anos atrás

    ##  [ Guia da linguagem C# ](https://www.treinaweb.com.br/blog/guia-da-linguagem-csharp) 

     Nesse guia de C# você aprenderá o necessário para criar os seus primeiros softwares com a linguagem de programação C#. Acesse agora mesmo!

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/07/DART-ORIENTACAO-OBJETOS-400x280.png)  [ Dart ](https://www.treinaweb.com.br/blog/categoria/dart) 

     4 anos atrás

    ##  [ Orientação a objetos em Dart ](https://www.treinaweb.com.br/blog/orientacao-a-objetos-em-dart) 

     Aprenda Orientação a objetos em Dart e como trabalhar com classes, atributos, métodos e objetos em Dart e aumente seus conhecimentos!

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/05/como-instalar-o-csharp-e-nosso-primeiro-exemplo-400x280.png)  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

     4 anos atrás

    ##  [ Orientação a objetos no C# ](https://www.treinaweb.com.br/blog/orientacao-a-objetos-no-csharp) 

     Aprenda como trabalhar com classes, atributos, métodos e objetos no C# e aumente seus conhecimentos nessa linguagem incrível!

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/04/PHP-ORIENTACAO-OBJETOS-400x280.png)  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

     5 anos atrás

    ##  [ Orientação a objetos em PHP ](https://www.treinaweb.com.br/blog/orientacao-a-objetos-em-php) 

     Aprenda como trabalhar com classes, atributos, métodos e objetos no PHP e aumente seus conhecimentos nessa linguagem incrível!

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/02/JAVA-ORIENTACAO-OBJETOS-400x280.png)  [ Java ](https://www.treinaweb.com.br/blog/categoria/java) 

     6 anos atrás

    ##  [ Orientação a objetos em Java ](https://www.treinaweb.com.br/blog/orientacao-a-objetos-em-java) 

     É perceptível a vocação do Java para estruturas orientadas a objetos. Veremos um pouco mais sobre neste artigo.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/11/o-que-e-o-spring-400x280.png)  [ Java ](https://www.treinaweb.com.br/blog/categoria/java) 

     6 anos atrás

    ##  [ O que é o Spring? ](https://www.treinaweb.com.br/blog/o-que-e-o-spring) 

     Veja neste artigo o que é o Spring.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/08/NEST-JS-400x280.png)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     5 anos atrás

    ##  [ O que é NestJS? ](https://www.treinaweb.com.br/blog/o-que-e-nestjs) 

     Vamos ver neste artigo uma breve descrição sobre o que é o NestJS e como criar uma aplicação base em minutos.

     Ler artigo

## Um ano de acesso total para você viver de programação.

 Todos os cursos e formações da TreinaWeb numa única assinatura, com professores que atuam no mercado, suporte direto e certificados. Do primeiro `console.log` ao mercado de trabalho.

- **1 ano** de acesso a **todos os cursos**
- Cursos novos **toda semana**
- Suporte **direto com professores**
- Plano de carreira **personalizado**
- **Certificados digitais** inclusos
- **Aplicativos** para Android e iOS, com **acesso offline**

    **Garantia incondicional de satisfação** 

 Teste por 7 dias e, se não fizer sentido para você, devolvemos seu dinheiro.

### Acesso completo a todos os cursos e dezenas de Formações.

 12 meses 

  Economize R$ 840,00  54% OFF 

 de 12x R$ 129,00 por apenas

 12x  R$ 59,00

 sem juros no cartão de crédito ou R$ 599,00 à vista

  Oferta termina em  **09h 50min 52s**

- Acesso imediato e ilimitado durante 1 ano.
- Plano de carreira personalizado.
- Suporte direto com professores.
- E muito mais!

 [Matricule-se agora](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26)

     [                ](https://www.treinaweb.com.br)

 Escola online de programação, tecnologia e IA.

- [  ](https://www.facebook.com/TreinaWeb/)
- [  ](https://www.instagram.com/treinaweb/)
- [  ](https://www.youtube.com/user/TreinaWeb)
- [  ](https://twitter.com/treinaweb)
- [  ](https://www.linkedin.com/company/treinaweb)
- [  ](https://github.com/treinaweb)

## Inscreva-se em nossa newsletter

Receba lançamentos, promoções e novidades.

   Seu nome     Seu WhatsApp     Seu melhor e-mail   Inscrever-se 

## Cursos

- [ Base para Devs ](https://www.treinaweb.com.br/categoria/base-para-devs)
- [ Front-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-front-end)
- [ Back-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-back-end)
- [ Mobile ](https://www.treinaweb.com.br/categoria/desenvolvimento-mobile)
- [ Bancos de Dados ](https://www.treinaweb.com.br/categoria/bancos-de-dados)
- [ Cloud ](https://www.treinaweb.com.br/categoria/cloud-computing)
- [ IA ](https://www.treinaweb.com.br/categoria/ia)
- [ E mais ](https://www.treinaweb.com.br/categoria/e-mais)
- [ Ver todos os cursos ](https://www.treinaweb.com.br/cursos)

## Conteúdo

- [ Formações ](https://www.treinaweb.com.br/formacoes)
- [ Projetos práticos ](https://www.treinaweb.com.br/projetos-praticos)
- [ Direto ao ponto ](https://www.treinaweb.com.br/direto-ao-ponto)
- [ Planos ](https://www.treinaweb.com.br#assinatura)
- [ Depoimentos ](https://www.treinaweb.com.br#depoimentos)
- [ Comunidade ](https://www.treinaweb.com.br#comunidade)
- [ Corpo docente ](https://www.treinaweb.com.br#docente)

## A empresa

- [ Sobre a TreinaWeb ](https://www.treinaweb.com.br#sobre)
- [ Perguntas frequentes ](https://www.treinaweb.com.br#faq)
- [ Vantagens de estudar na TreinaWeb ](https://www.treinaweb.com.br/vantagens-de-estudar-na-treinaweb)
- [ Cursos para empresas ](https://www.treinaweb.com.br/empresas)
- [ Sugira um novo curso ](https://www.treinaweb.com.br/sugerir-curso)
- [ Trabalhe conosco ](https://www.treinaweb.com.br/trabalhe-conosco)
- [ Artigos ](https://www.treinaweb.com.br/blog)
- [ Desenvolvedores e agentes ](https://www.treinaweb.com.br/developers)
- [ Contato ](https://www.treinaweb.com.br/contato)
- [ Política de privacidade ](https://www.treinaweb.com.br/politica-de-privacidade)
- [ Termos de uso ](https://www.treinaweb.com.br/termos-de-uso)

## Baixe nosso aplicativo

 [   Disponível na **App Store**  ](https://apps.apple.com/us/app/treinaweb/id1322729447) [   Disponível no **Google Play**  ](https://play.google.com/store/apps/details?id=br.com.treinaweb.mobile) 

  Av. Paulista, 1765, Conj 71 e 72 · Bela Vista · São Paulo · SP · 01311-200   © 2004 – 2026 TreinaWeb Tecnologia LTDA · CNPJ 06.156.637/0001-58
