Ir ao conteúdo
  • Cadastre-se

porque a primeira função digitada está fora do ''main''


johnny88

Posts recomendados

Boa tarde pessoal,

 

Antes de mais nada, quero agradecer qualquer um que tenha paciência e boa vontade de esclarecer minhas dúvidas. Comprei um livro de programação C e estava lendo sem fazer os exercícios mas tava quase desistindo pela dificuldade, apesar de que pra uns e futuramente pra mim vai parecer simples (tomara) me sinto um pouco perdido ainda.

 

Neste tópico estarei colocando minhas dúvidas e caso alguém queira também compartilhar suas dúvidas, será de grande ajuda,assim poderemos aprender juntos. Apenas peço que tentem postar de uma maneira organizada pra não poluir o tópico. 

 

Vamos lá, vou começar com algo simples:

 

''    #include <stdio.h>int mult (float a,float b,float c) /* Multiplica 3numeros */{printf ("%d",a*b*c);return(0);}int main (){float x,y;x=23.7;y=12.8;mult (x,y,3.87);return(0);}''
 
1- porque a primeira função digitada está fora do ''main'' que no caso é a primeira função a ser executada pelo C. Seria como uma biblioteca? Pois precisa estar alí para que o resto do programa funcione, correto?!
 
2-se estamos falando de float (que armazena números com decimais) porque usamos int mult e não float mult?
 
Desde já, obrigado!
Abraço.
Link para o comentário
Compartilhar em outros sites

1 - Você poderia colocar a função dentro de main(), já que main() é a única função que invoca mult(), mas não seria 'elegante' do ponto de vista da boa prática de programação.

Além do mais não faria muito sentido criar uma função dentro do escopo de main(), bastaria apenas usar printf com o cálculo. De qualquer forma a função também poderia estar após main().

2 - Foi usado int pois a função apenas retorna 0 (return 0) e não o cálculo o passado como argumento. O ideal seria void mult, sem return.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Obrigado Olliver e Math!

Agora posso continuar aos próximos exercícios!

 

@johnny88

 

Entenda que main() é a função principal, é a função que o C vai executar.

As funções declaradas (escritas) fora do escopo do main() saõ funções que podem ser chamadas dentro da main() e também dentro de outras funções.

 

Vamos supor que você tem 3 funções:

main()

mult()

div()

 

Dentro da main() (principal) você chama a mult() e dentro da mult() você pode chamar a div(), então a ordem de chamada fica..

 

main() > mult() > div() (ao executar)

div() > mult() > main() (retorno das funções)

 

Abraço!

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Obrigado @Pimptech

 

_

 

Pessoal, estou com uma nova dúvida. Recebi o seguinte exercício:

 
a) Escreva um programa que leia um caractere digitado pelo usuário,
imprima o caracter digitado e o código ASCII correspondente a este caractere
 
eis o código:
#include <stdio.h>int main (){char carac [3];printf ("digite um caractere:");gets (carac);printf ("\n\n voce digitou: %s", carac);return (0);}

1- Fiz o código com a base num código passado e só consegui executar corretamente com o ''%s'' (%s não é para strings? não deveria ser %c por causa do ''char''?)

 

2 - Como fazer um código ''correspondente'' ao ASCII? O exercício pede pra exibir o código ASCII para o caractere digitado.

 

Novamente, obrigado.

Abç.

 

____

 

refiz o código com ''scanf'' ao invés de gets e reconheceu chamando por "%c", qual seria o motivo disso? ''gets'' reconhece apenas strings?


Pessoal, estou fazendo alguns exercicios e colocarei outra dúvida:

O seguinte código:

#include <stdio.h>int main (){char string[100]; /* String, ate' 99 caracteres */int i, cont;printf("\n\nDigite uma frase: ");gets(string); /* Le a string */printf("\n\nFrase digitada:\n%s", string);cont = 0;for (i=0; string[i] != '\0'; i=i+1){if ( string[i] == 'c' ) /* Se for a letra 'c' */cont = cont +1; /* Incrementa o contador decaracteres */}printf("\nNumero de caracteres c = %d", cont);return(0);}

Alguém poderia me explicar melhor o que faz e qual a lógica dessas linhas:

cont = 0;for (i=0; string[i] != '\0'; i=i+1){if ( string[i] == 'c' ) /* Se for a letra 'c' */cont = cont +1; /* Incrementa o contador decaracteres */

Uma coisa também que eu não entendi corretamente é qual o uso do incremento...

 

Desde já, obrigado.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

 

1- Fiz o código com a base num código passado e só consegui executar corretamente com o ''%s'' (%s não é para strings? não deveria ser %c por causa do ''char''?)

 

2 - Como fazer um código ''correspondente'' ao ASCII? O exercício pede pra exibir o código ASCII para o caractere digitado.

 

Novamente, obrigado.

Abç.

 

1 - Vetor de char se representa com %s pois não existe String em c (pelo que eu lembre).

Se você vai pegar um caractere somente, não faz sentido ter um vetor de char. Use char sem índice e troque %s por %c.

 

 

2 - Esse tópico deve ajudar: http://forum.clubedohardware.com.br/forums/topic/598030-trabalhar-com-c%C3%B3digo-ascii/

 

 

 

____

 

refiz o código com ''scanf'' ao invés de gets e reconheceu chamando por "%c", qual seria o motivo disso? ''gets'' reconhece apenas strings?

Pessoal, estou fazendo alguns exercicios e colocarei outra dúvida:

O seguinte código:

#include <stdio.h>int main (){char string[100]; /* String, ate' 99 caracteres */int i, cont;printf("\n\nDigite uma frase: ");gets(string); /* Le a string */printf("\n\nFrase digitada:\n%s", string);cont = 0;for (i=0; string[i] != '\0'; i=i+1){if ( string[i] == 'c' ) /* Se for a letra 'c' */cont = cont +1; /* Incrementa o contador decaracteres */}printf("\nNumero de caracteres c = %d", cont);return(0);}

Alguém poderia me explicar melhor o que faz e qual a lógica dessas linhas:

cont = 0;for (i=0; string[i] != '\0'; i=i+1){if ( string[i] == 'c' ) /* Se for a letra 'c' */cont = cont +1; /* Incrementa o contador decaracteres */

Uma coisa também que eu não entendi corretamente é qual o uso do incremento...

 

Desde já, obrigado.

 

Isso é outro exercício?

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...