Funções e Procedimentos - Parte 4

Operações relacionais e lógicas Operações Aritméticas variáveis Tipos de dados Estruturas Aninhadas algoritmos

Oi galera! Tudo bem com todos? Espero que sim! No último artigo eu apresentei as Rotinas que não têm passagem de parâmetros, mas têm algum tipo de retorno, lembram-se? Vamos lá, caso você ainda não tenha lido as partes 1, 2 e 3, então, por favor, antes de ler este artigo, leia essas partes! É importante seguir a ordem, neste caso em particular, para conseguir acompanhar o raciocínio didático que desenvolvi especialmente para vocês.

 

 

Não se perca

 

 

 

Antes de continuarmos ...

 

Antes de continuarmos com as nossas Rotinas em Pascal e em C, vamos dar uma olhada na estrutura de um programa em Linguagem C, da mesma forma que fizemos em Pascal. Utilizei a IDE CodeBlocks para implementar os códigos em Linguagem C, você também pode usar esta ferramenta ou optar por outras, como o Dev C++, Visual Studio, Eclipse, Netbeans, etc. Observe a Figura 1.

  

Estrutura de um Programa em C
Tabela 1: Estrutura de um Programa em C

  

A Linguagem C em tem algumas particularidades, em relação a outras Linguagens de Programação. Usamos Pascal por ser muito mais didático. O aprendizado de algoritmos e pseudocódigo com Pascal é muito mais rápido do que utilizando C. Entretanto, grande parte dos projetos de sistemas embarcados utilizam-se da Linguagem C e, acredito que grande parte dos meus leitores estão neste meio. Assim, incluirei aqui uma breve explicação da estrutura de um programa em C, para que os exemplos demonstrados nesta série, e na série de Estruturas de Dados, possam ser melhor entendidos.

 

 

Palavras Chaves da Linguagem C

  

INCLUDE: utilizada para INCLUIR uma biblioteca, seja ela da linguagem, ou desenvolvida pelo usuário.

 

DEFINE: utilizada para DEFINIR uma constante, isto é, um espaço de memória que conterá sempre o mesmo valor de um tipo de dado determinado.

 

TYPEDEF: utilizada para definir um tipo de dado desenvolvido pelo usuário (tipo definido pelo usuário).

 

STRUCT: utilizada para definir uma estrutura, isto é, é a forma de implementação de Registros na linguagem C. É uma variável heterogênea, que permite manipular tipos de dados diferentes. Vetores e Matrizes são variáveis homogêneas, pois manipulam um único tipo de dado.

 

 

Áreas

 

As áreas definidas na Estrutura de um programa em C não diferem muito de um programa em Pascal. Existe o escopo global e o local, da mesma forma que em Pascal. Variáveis, Estruturas e Ponteiros podem ser utilizados por todo o arquivo, estando no escopo global, ou apenas por uma parte, estando no escopo local. O que muda de fato é a forma de trabalhar com as funções.

 

A função deve primeiro ser declarada na área de PROTOTIPO DE FUNÇÕES. Nessa área você não implementa de fato a função, apenas declara que ela vai existir, por isso o ponto e vírgula no final da função e não os colchetes. Após o programa principal é que você vai inserir os comandos que farão parte daquela função, o que chamamos de FUNÇÕES PROTOTIPADAS.

 

Note que, diferente de um programa em Pascal, em C não precisamos explicitar o nome do programa no início do arquivo. A primeira área do arquivo em C já é destinada à declaração das bibliotecas que serão utilizadas. Se for necessário utilizar constantes em seu programa, estas devem ser definidas logo em seguida a essa área.

 

Essa estrutura padrão deve ser respeitada, portanto, procure sempre organizar seus programas em C dessa forma. Mas lembre-se, se puder desenvolver suas próprias bibliotecas, melhor. Seria bom que o arquivo do seu programa principal pudesse apenas dar o start na sua aplicação.

 

 

Bibliotecas do Usuário

 

Sempre que possível, desenvolva suas próprias bibliotecas, isto é, aplique o conceito de MODULARIZAÇÃO em seu projeto de software. Em Linguagem C os arquivos de bibliotecas são salvos com a extensão ".h" e, depois, utilizados nos arquivos ".c". Vejamos um exemplo:

 

 

Este é o arquivo ".h", ou seja, a biblioteca. A listagem abaixo é o código fonte do arquivo do programa principal. 

 

 

Observe que no arquivo de biblioteca estão as funções prototipadas, as quais são utilizadas no arquivo do programa principal. Para que possam ser utilizadas, a biblioteca deve ser declarada da seguinte forma:

 

#include "nomeDaBiblioteca.h"

 

Note que agora usamos aspas duplas ao invés das tags "<" e ">", pois é uma biblioteca definida pelo usuário e não uma biblioteca nativa.

 

 

Funções com passagem de parâmetros e com retorno

 

Em Pascal

 

A listagem X apresenta o código fonte em Pascal, usando functions. Este código está um pouco diferente em relação aos códigos anteriores. Inclui uma nova Função, do tipo inteira, chamada verifica, que tem o objetivo de verificar se o número N2 é igual a zero, retornando 1 se verdadeiro e 0 caso contrário. Esse valor que é retornado por esta função é tratado por quem a chama, que neste caso é a função dividir, que utiliza o n2 como operador e o mesmo não pode ser igual a zero pois não existe divisão por zero.

 

 

Note que as funções agora ficaram ainda mais objetivas, retornando diretamente a operação matemática básica desejada. Se desejar ainda verificar N2 em outras partes do programa, poderá fazê-lo, já que existe uma função para isso. Observe também que o Case 4 é quem chama a função verifica e faz o tratamento necessário para que a função dividir seja usada corretamente. Você não pode chamar a função dividir antes de chamar a função verifica, pois essa verificação do N2 é necessária para não causar um erro de execução no programa. Funções com parâmetros e com retorno têm a seguinte sintaxe:

 

 

Assim, substitua nome pelo nome que você quer dar para a sua função. No lugar de parâmetro, coloque o nome da variável, e no lugar de tipo, coloque o tipo de dado que está trabalhando. Não precisamos usar a palavra chave return aqui, o próprio nome da função é utilizado para retornar o valor desejado.

 

Em C

 

O exemplo em C é uma "cópia" fiel da lógica do programa em Pascal, a diferença está na sintaxe da linguagem. As funções utilizam a palavra chave return para retornar o valor desejado e, aqui, eu fiz uma conta ao invés de criar uma variável local e retorna-la. Isso aumentaria em duas linhas de código para cada função, o que não é realmente necessário. Os exemplos anteriores foram desenvolvidos dessa forma. Claro que se você tivesse que realizar mais cálculos, ou solicitar outros dados, você não poderia fazer isto diretamente no return, teria mesmo de utilizar uma variável. Tudo bem?

 

 

 

Ainda não acabou ...

 

Pessoal, hoje eu apresentei alguns detalhes sobre a estrutura do programa em C e expliquei como funcionam as funções com retorno e com parâmetros! No último artigo sobre Funções, concluirei o assunto falando sobre a importância das funções e apresentando um resumo de tudo o que discutimos. Muito Obrigada e até a próxima.

Outros artigos da série

<< Funções e Procedimentos - Parte 3Funções e Procedimentos - Modularização >>
NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Elaine Cecília Gatto
Bacharel em Engenharia de Computação. Mestre em Ciência da Computação. Doutoranda em Ciência da Computação. Co-fundarora e Líder das #GarotasCPBr. Pesquisadora Convidada no Grupo de Pesquisa: "Artes em Tecnologias Emergentes" do Programa de Pós Graduação em Design na UNESP Campus Bauru. Cantora, Docente no Magistério Superior, Geek, Nerd, Otaku e Gamer. Apaixonada por Michael Jackson, Macross, Rocky Balboa, Séries, Filmes, Cervejas e Vinhos. Mais informações sobre mim você encontra em: http://lattes.cnpq.br/8559022477811603.

Deixe um comentário

avatar
 
  Notificações  
Notificar