Funções e Procedimentos - Parte 3

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

Oi gente! Tudo bem com todos? Espero que sim! No artigo anterior eu falei sobre Funções e Procedimentos com parâmetros e sem retorno. Dando continuidade ao assunto, hoje falarei sobre Funções/Procedimentos sem parâmetros mas com retorno. Bora lá?

 

 

Não se perca

 

Para que vocês não fiquem muito perdidos em relação a estas partes de Funções, elaborei a Tabela 1. Verde é a parte que já estudamos, laranja é a parte que veremos hoje e vermelho o que falta estudar.

 

 Sem Parâmetros (S.P.)Com Parâmetros (C.P.)
Sem Retorno (S.R.)S.P.S.R.C.P.S.R
Com Retorno (C.R)S.P.C.R.C.P.C.R

Tabela 1: Classificação de Funções

 

Na linguagem C "COM RETORNO" significa que a função tem um TIPO, que pode ser int, float, double, char, struct, etc. Uma função do tipo VOID é uma função que não tem tipo definido. Quando uma função tem um tipo definido, então, ela obrigatoriamente deverá retornar algo do tipo definido. Uma função do tipo int deve retornar uma variável do tipo int, e assim por diante. Poderíamos então classificar as funções de outra forma, conforme mostra a Tabela 2: 

 

Tipo da Função
Tipo de RetornoParâmetros
VoidSem RetornoCom ou Sem
IntCom Retorno do tipo IntCom ou Sem
FloatCom Retorno do tipo FloatCom ou Sem
DoubleCom Retorno do tipo DoubleCom ou Sem
BoolCom Retorno do tipo BoolCom ou Sem
CharCom Retorno do tipo CharCom ou Sem
StructCom Retorno do tipo StructCom ou Sem

Tabela 2: Classificação de Funções de acordo com o seu tipo.

 

Reforçando, em PASCAL usamos functions quando queremos definir tipos e procedures quando não (VOID). Em Java funções são chamadas de métodos e as questões de tipos, parâmetros e retornos é parecido com C. Para elucidar as diferenças entre Pascal e C, neste artigo vou incluir os códigos fontes em C para os exemplos dos artigos anteriores.

 

 

Funções sem passagem de parâmetros e sem retorno em Linguagem C

  

 Listagem 1: Código Fonte em C

 

 

Funções com passagem de parâmetros por valor e sem retorno em Linguagem C

 

 Listagem 2: Código Fonte em C

 

Observe que, tanto na Listagem 1, quanto na Listagem 2, usou-se VOID e não PROCEDURE. Em Linguagem C, é desta forma que definimos uma FUNÇÃO SEM TIPO. Os parâmetros são passados normalmente, sem muitas diferenças em relação à Pascal. Foram declaradas variáveis globais e estas foram utilizadas dentro das funções. Você também poderia declarar estas variáveis dentro da função apenas, já que as mesmas não foram utilizadas em outras partes do programa.

 

A biblioteca LOCALE permite configurarmos o console da aplicação para que compreenda os caracteres especiais, como acentos e pontos, correspondentes à da língua do país. No exemplo foi configurado para PORTUGUESE, que é a nossa língua padrão aqui no Brasil.

 

 

Funções sem passagem de parâmetros mas com retorno

 

Em Pascal

 

Observe o código da Listagem 3. Um variável chamada r do tipo double foi declarada no escopo das variáveis globais (linha 7). Essa variável será utilizada para tratar o retorno da função, isto é, chamaremos a função e ela retornará um valor, esse valor retornado será armazenado em r, para ser utilizado depois. Até o momento estive definindo as variáveis como inteiras, mas neste exemplo mudei para double, para diversificar e também aprendermos a usar outros tipos de dados.

 

 Listagem 3: Código Fonte em Pascal

 

Note que as funções usam o seu próprio nome para realizar o cálculo.

 

 

A função subtrair usa o seu próprio nome para calcular a subtração, e as outras funções fazem o mesmo. Observe também que o tipo da função é dado após os dois pontos, ao final dos parênteses. Essa é a sintaxe correta para as FUNCTIONS. O resultado do cálculo da subtração é armazenado na própria função e a própria função retorna o valor do resultado para quem a está chamando. No caso da subtração, quem a chamou foi o case 2, subtrair:

 

 

A variável r é então usada no writeln para imprimir na tela o resultado do cálculo da subtração. Então, vejam, a forma da FUNCTION é diferente, mas no fim o resultado será o mesmo da PROCEDURE. Quando você deverá usar um ou outro? Isso dependerá única e exclusivamente do problema a ser resolvido e do seu nível de experiência com a Linguagem com a qual estiver trabalhando. A Tabela 3 apresenta um pequeno comparativo do que vimos até agora.

 

  RotinaChamada
Sem Parâmetros Sem Retorno

 

Sem Parâmetros Com Retorno

 

Com Parâmetros Sem Retorno

 

Com Parâmetros Com Retorno----

 Tabela 3: Comparação dos tipos de funções

 

 

Em Linguagem C

 

 Listagem 4: Código Fonte em C

 

Note que em C devemos usar a palavra chave RETURN para indicar o retorno da função e, junto com ela, a variável que será retornada:

 

 

Se esquecermos de colocar o return, no momento da compilação um erro será gerado e você não conseguirá executar o seu programa (return s). Outro detalhe é que neste exemplo, a variável usada para guardar o resultado é declarada dentro da função, e não como uma variável global (float s).

 

 

Conclusão

 

Sei que tem vários detalhes da Linguagem C que não foram esclarecidos, mas solicito um pouco de paciência, em breve escreverei alguns artigos falando sobre eles. Mesmo assim, você pode entrar em contato comigo e tirar suas dúvidas, tá ok?  Até o próximo artigo pessoal. Muito Obrigada.

Outros artigos da série

<< Funções e Procedimentos - Parte 2Funções e Procedimentos - Parte 4 >>
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.

4
Deixe um comentário

avatar
 
1 Comment threads
3 Thread replies
2 Followers
 
Most reacted comment
Hottest comment thread
2 Comment authors
Elaine Cecília GattoAndre Salgado Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Andre Salgado
Visitante
Andre Salgado

Pq não uma aula deste assunto no tutorial sobre MIPS? Funções, procedimentos, funcionamento do stack pointer...

Andre Salgado
Visitante
Andre Salgado

Oi Ciça, obrigado a você!!! Seus tutoriais são incríveis.