Obrigado Lord Ruka, funcionou aqui.
Publicidade:
Jogue Tibia sem mensalidades!
Taleon Online - Otserv apoiado pelo TibiaBR.
https://taleon.online
Curtir: 0
Obrigado Lord Ruka, funcionou aqui.
"Why are you wearing that stupid man suit?"
[away]
Preciso esclarecer uma dúvida novamente.
Até hoje eu não entendo o que a função main() representa pro meu programa. Por que ela é necessaria? O que ela faz?
Eu entendo que ela deve ser inicializada, entendo sua parte funcional mas não sei como ela age.
Se alguem puder me explicar, eu agradeço de verdade![]()
"Why are you wearing that stupid man suit?"
[away]
main é a função principal, ela inicia tudo, sem ela não começa o programa,
nela você pode declarar o início de outras funções, etc,
mas só declarando as funções no código e não jogá-las no main ou em outras funções que pelo menos estejam sendo ativadas pelo main, não haveria início no programa,
em uma forma resumida: o main é o coração do código, é lá que inícia tudo.
"Why are you wearing that stupid man suit?"
[away]
lol, respondi um post antigo, pode deletar.
Última edição por krakrek; 28-05-2011 às 08:50.
<editado>
Eu gosto sempre de dexar meu main() o mais limpo possivel, faço meus programas assim!
Com esse exemplo vai ficar mais claroCódigo PHP:#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
//Declaração das funções
void escrevermensagem(void);
int somarnumeros(int n1, int n2);
int main()
{
int n1, n2;
printf("digite dois numeros\n");
scanf("%d%d", &n1, &n2);
somarnumeros(n1, n2);
system("cls");
printf("A Soma de %d e %d e: %d", n1, n2, somarnumeros(n1,n2));
getch();
escrevermensagem();
return 0;
}
int somarnumeros(int n1, int n2)
{
int r;
r = n1 + n2;
return r;
}
void escrevermensagem(void)
{
printf("\n\n\n\n\Obrigado por calcular aqui\");
}
Veja, que na função principal MAIN, ela recebe n1, n2
Apos isso, passa como argumento para a função somarnumeros
Nessa minha função, vai pegar um numero r = n1 + n2 e me retornara esse r
Apos isso, o main somente CHAMA a função, e no casa, a função faz todo os calculos e te retorna somente o que vc precisa, o resultado final
Tambem podemos ter funções void, que não nos retorna nada, como a minha função void escrevermensagem(void), que somente escreve na tela uma mensagem de saida
lembrando, que sempre deve especificar o tipo de retorno da função.
int, long int, float, double, char, void
Qualquer duvida pergunte ai
@Edit
Respondendo essa duvida:
O Main em C/C++ tem a função de receber os dados que o programa precisa para fazer seus calculos ou seja la o que for, e apartir dai, passar esses dados para uma função, como os dados necessarios para ela realizar o que se propoe, no caso da minha int somarnumeros(int n1, int n2), que era somar n1 + n2 e te retornar o resultado
Apos isso, o main recebe o valor final, e o escreve...
Mas, o que não impede de uma função poder chamar outra
Facilmente minha função poderia ser assim
O que aconteceria, a minha main() chamou essa função, e ela calculou os numerosCódigo PHP:int somarnumeros(int n1, int n2)
{
int r;
r = n1 + n2;
if(r > 19)
mensagemdecriacao();
else return r;
}
No caso, de a soma ser maior que 19, ela passa a função que escreve a mensagem de criação, mais tambem poderia passar argumentos para outro calculo e tudo mais (Como no programa para fazer a Validação de CPF)
Caso contrario, se a condição for falha, ele retorna r para a função main() que so escreve o resultado
Como voce vê, tem um leque de opções para ser criado em C, que no meu ponto de vista, e a linguagem mais complexa
Última edição por Lord Ruka; 28-05-2011 às 10:19.




Um ponto interessante é que o main é usado para receber argumentos da linha de comando. Repare na chamada do int main(int argc, char* argv[]).
argc é um inteiro indicando o número de argumentos passado, char* argv[] é um vetor de strings, a posição 0 é o nome do programa, e da posição 1 em diante são os argumentos passados.
Por exemplo, se eu pegasse o programa abaixo, e o executasse no prompt escrevendo por exemplo: Nome_Programa argumento1 argumento2 argumento 3
Ele iria imprimir no console a saída:Código PHP:#include <stdio.h>
int main(int argc, char* argv[]) {
int i;
for(i=0; i<argc; ++i) {
printf("%s\n",argv[i]);
}
return 0;
}
Nome_Programa
argumento 1
argumento 2
argumento 3
Esse mecanismo existe em diversas linguagens de programação e é extremamente útil para passar opções ao programa e mudar a forma como ele será executado.
Última edição por Girafales; 28-05-2011 às 11:41.
Incrementando...
Pra quem quizer entender um pouco mais de funções em C
Ai vai um programinha verificador da validade de CPF
Fiz no 1º Periodo de Ciencias da Computação, quando estavamos vendo função, foi uma tarefinha que teve
E bem simples, ainda era meio "noob" em programação, mais pra quem esta começando e uma "mão na roda" pois pode ver e tirar uma ideia
Se alguem quiser copiar e entender, ai vai...
Código PHP:#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
/* Validador de CPF
by: Mayke F.
Ciencia da Computação
UFG - GO*/
//Declaração das funções
void recebacpf(int i);
int calculaprimeirodigito(int i);
int calculasegundodigito(int i);
//Variavel Global
char cpf[11];
int icpf[11];
int calculodigito1, calculodigito2;
///Função Principal
int main()
{
int validador10, validador11, i;
int x, z, r, flag = 0;
MENU:
system("cls");
printf("\n\n\t\t\t\tValidador de CPF\n\n\n");
printf("\t\t\t1 - Verificar CPF\n\n");
printf("\t\t\t2 - Rever a Validacao\n\n");
printf("\t\t\t3 - Sair\n\n");
scanf("%d", &r);
switch(r)
{
case 1:
system("cls");
printf(" Digite os 11 Digitos do CPF para verificar se e valido");
printf("\n\n\n\n\t\t");
for(i = 0; i < 11; i++)
{
recebacpf(i);
}
calculodigito1 = calculaprimeirodigito(i);
if(calculodigito1 < 2)
calculodigito1 = 0;
else calculodigito1 = 11 - calculodigito1;
calculodigito2 = calculasegundodigito(i);
if(calculodigito2 < 2)
calculodigito2 = 0;
else calculodigito2 = 11 - calculodigito2;
Final:
if(icpf[9] == calculodigito1 && icpf[10] == calculodigito2)
{
printf("\n\n\n\n\t\tO CPF Digitado e Valido\n\n\n\n\n\n");
flag++;
getch();
}
else printf("\n\n\n\n\t\tO CPF Digitado e Invalido\n\n\n\n\n\n");
{
flag++;
getch();
goto MENU;
}
break;
case 2:
if(flag > 0)
{
system("cls");
printf("\n\n\n\n\t\t");
for(i = 0; i < 11; i++)
{
if(i == 3 || i == 6)
printf(" . ");
else if(i == 9)
printf(" - ");
printf("%c", cpf[i]);
}
goto Final;
}
else
{
printf("\n\n\n\tVoce Ainda nao verificou um CPF, portanto nao pode revelo");
getch();
goto MENU;
}
break;
case 3:
printf("\n\n\n\n\n\t\t\tSaindo....\n\n\n\n");
break;
default:
printf("\n\n\n\nOpção Invalida....");
getch();
goto MENU;
}
return 0;
}
///Função para receber os numeros de CPF e printar Pontos e Traços
void recebacpf(int i)
{
CPF:
cpf[i] = getch();
if(cpf[i] == '.' || cpf[i] == '-' || cpf[i] == ' ')
goto CPF;
else if(i == 3 || i == 6)
printf(" . ");
else if(i == 9)
printf(" - ");
printf("%c", cpf[i]);
///Efetua a conversao de array de char para um array de int.
for(i=0;i<11;i++)
{
icpf[i] = cpf[i] - 48;
}
}
///Função para calcular o primeiro Digito do CPF
int calculaprimeirodigito(int i)
{
int z = 10;
i = 0;
calculodigito1 = 0;
while(z > 1)
{
calculodigito1 = (icpf[i] * z) + calculodigito1;
z--;
i++;
}
calculodigito1 = calculodigito1 % 11;
return calculodigito1;
}
///Função para calcular o segundo Digito do CPF
int calculasegundodigito(int i)
{
int z = 11;
i = 0;
calculodigito2 = 0;
while(z > 1)
{
calculodigito2 = (i-cpf[i] * z) + calculodigito2;
z--;
i++;
}
calculodigito2 = calculodigito2 % 11;
return calculodigito2;
}