Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Entre para seguir isso  
apolimarkus

[Resolvido] chamar função

Recommended Posts

olá, boa tarde! estou com algumas dificuldades para realizar programas que envolvem funções, tenho pesquisado o assunto na internet, e encontro exemplos que se divergem em sua forma de construção , e isso acaba me confundindo ainda mais, por exemplo há programas que apresentam a seguinte estrutura: void imprime(vetor[]){, utilizando ao final uma chaves, já em outros exemplos apresenta a ausencia das "{}" e utiliza o ";" void troca(int *m, int *n);/ int volume(int n);. Gostaria que alguém pudesse me explicar o porque que isso acontece, porque há esta troca, se possivel mostre estas aplicações em um programa. valeu, e ate mais!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seguem alguns exemplos de uso de funções.

Nesse exemplo foi criada uma variável global, e sendo global, todas a funções têm acesso à ela. Veja que todas as funções têm obrigatóriamente abre e fecha chaves "{}".

A função "main" é a primeira a ser executada, depois dentro da "main é chamada a função para ler valores. Na função "le_valores" é solicitado ao usuário entrar com um valor, depois é chamada a função "imprime_valor", onde é feita a impressão do valor digitado.

#include <stdio.h>
#include <stdlib.h>

int valor;

void imprime_valor()
{
printf( "\nValor digitado: %d\n\n", valor );
}

void le_valor()
{
printf( "Entre com valor: " );
scanf( "%d", &valor );

imprime_valor();
}

void main()
{
le_valor();

system( "PAUSE" );
}

Repare que as funções são criadas na ordem inversa de execução. A função "imprime_valor" é a primeira a ser criada, porém é a última a ser executada. isso porque quando você chama uma função, o compilador busca ela antes da função que a chamou, pois entende-se que se houve uma chamada de função, essa função logicamente já foi criada anteriormente.

Mas tem uma maneira de não ter a obrigação de criar funções inversamente, ou seja, criar funções na sequencia lógica de execução do programa. Para isso usamos "protótipos", ou seja,informamos ao compilador que as funções existem. Segue alteração do código acima, para protótipo.


#include <stdio.h>
#include <stdlib.h>

int valor;

/* declaração dos protótipos */

void le_valor();
void imprime_valor();

// inicio da execução do programa

void main()
{
le_valor();

system( "PAUSE" );
}

void le_valor()
{
printf( "Entre com valor: " );
scanf( "%d", &valor );

imprime_valor();
}

void imprime_valor()
{
printf( "\nValor digitado: %d\n\n", valor );
}

Repare que a variável "valor" foi criada fora das funções, ou seja, global. Então todas as funções têm acesso à essa variável. Caso essa variável fosse declarada dentro da função le_valor, por exemplo, as demais funções não teriam acesso à ela, logo a função imprime_valor não conseguiria imprimir o valor digitado. Para corrigir esse problema usamos passagem de parâmetro por valor. Criamos uma variável na função "imprime_valor" que irá recebe via parâmetro uma cópia do valor informado na variável "valor".

#include <stdio.h>
#include <stdlib.h>

/* declaração dos protótipos */

void le_valor();
void imprime_valor( [COLOR="Red"]int[/COLOR] );

// inicio da execução do programa

void main()
{
le_valor();

system( "PAUSE" );
}

void le_valor()
{
int valor;

printf( "Entre com valor: " );
scanf( "%d", &valor );

// chamada da função imprime_valor passando o conteúdo da variável "valor" como parâmetro
imprime_valor( [COLOR="Red"]valor[/COLOR] );
}

// a variável criada entre parênteses recebe uma cópia do valor passado pela variável "valor"
void imprime_valor( [COLOR="Red"]int num[/COLOR] )
{
printf( "\nValor digitado: %d\n\n",[COLOR="Red"] num[/COLOR] );
}

Até agora as funções não retornam valor nenhum, por isso usamos "void", que significa vazio.

Segue abaixo código usando retorno de função. No caso o retorno é do tipo inteiro.

 #include <stdio.h>
#include <stdlib.h>

/* declaração dos protótipos */

[COLOR="Red"]int[/COLOR] le_valor();

// inicio da execução do programa

void main()
{
[COLOR="Red"] int V;

// é chamada a função le_valor, o valor digitado é retornado e atribuído à variável V
V = le_valor();[/COLOR]

printf( "\nValor digitado: %d\n\n",[COLOR="Red"] V[/COLOR] );

system( "PAUSE" );
}

[COLOR="Red"]int[/COLOR] le_valor()
{
iint valor;

printf( "Entre com valor: " );
scanf( "%d", &valor );

[COLOR="Red"] return valor; [/COLOR]
}

Esse exemplo com retorno de função pode ser feito também sem o uso de protótipos.

Espero ter ajudado...

Editado por Marcelo Miguel

Compartilhar este post


Link para o post
Compartilhar em outros sites

olá, bom dia! essas dicas são fundamentais para quem nunca teve contato com linguagem de programação, e que possamos aplica-las na prática a fim de obtermos uma melhor compreenssão do assunto. valeu e ate mais!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caso o autor do tópico necessite, o mesmo será reaberto, para isso deverá entrar em contato com a moderação solicitando o desbloqueio.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×