FórumGdH

Página Inicial do Guia do Hardware

Registrar FAQ Calendário Pesquisar Mensagens de Hoje Marcar Fóruns Como Lidos

Voltar   FórumGdH > Profissional > Programação, scripts, web e banco de dados
Bem-vindo ao FórumGdH
Não se esqueça de se registrar, é grátis . Nós temos 754.116 usuários, convidamos você fazer parte de nossa comunidade também! Se ainda não encontrou o que procura use nossa pesquisa. Esperamos que aprecie nosso trabalho.

Resposta
 
Opções do Tópico
Antigo 16-08-2007, 19:18   #1 (permalink)
Eicar
Membro Senior
 
Avatar de Eicar
 
Registrado em: Feb 2007
Idade: 22
Mensagens: 209
Reputação: 11 Eicar está indo no caminho certo
Enviar mensagem via MSN para Eicar Enviar mensagem via Yahoo para Eicar Enviar mensagem via Skype para Eicar
Padrão Linguagem de programação em C

Ola.. sou iniciante nessa linguagem...

baixei o compilador Dev-C++ estou seguindo a apotila do curso de "linguagem de programação C" da UFMG. To seguindo uns programas da apostila mais sempre quando vou atribuir uma especificação para a função do main o compilador naum roda. Ex.:

#include<stdio.h>

int prod (int x,int y)
{
return (x*y);
}

return main ()
{
int saida;
saida=prod (12,7);
printf ("A saida e: %d\n",saida);
}

se eu tirar o return do main o programa ateh roda mais naum faz oque eu esperava....

quaria saber se eh por causa do compilador ou oq...

favor... SE MANIFESTEM!
VlW...
__________________
_____________________________

"Não consigo me convencer de que um Deus caridoso e onipotente teria propositalmente criado vespas parasitas com a intenção expressa de alimentá-las dentro de corpos vivos de lagartas."

Charles Darwin
Eicar está offline   Responder com Quote
Antigo 16-08-2007, 19:51   #2 (permalink)
pflynn
Zumbi
 
Avatar de pflynn
 
Registrado em: Jan 2004
Mensagens: 5.276
Reputação: 189 pflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputação
Padrão

Amigo, tirando um pequeno detalhe, o seu programa está correto. Sugiro retornar a apostila do curso e verificar, com atenção, a forma de definição da função main.

Código:
return main () { ... }
Corrigindo esse pequeno detalhe (e você vai descobrir como sem maiores dificuldades), o programa vai funcionar exatamente da maneira que você imagina, que é imprimir na tela o resultado do produto entre os números 12 e 7, concorda ?
__________________
------------------------------------------------
Muito bom. Mas tijolo não revida!
------------------------------------------------
pflynn está offline   Responder com Quote
Antigo 16-08-2007, 19:53   #3 (permalink)
Eicar
Membro Senior
 
Avatar de Eicar
 
Registrado em: Feb 2007
Idade: 22
Mensagens: 209
Reputação: 11 Eicar está indo no caminho certo
Enviar mensagem via MSN para Eicar Enviar mensagem via Yahoo para Eicar Enviar mensagem via Skype para Eicar
Padrão

sim.. mais vei.. esse num eh o primeiro programa q da pau..

ja testei uns 3 e sempre quandu tiro esse void ele funciona... mas naum como imagino =/
__________________
_____________________________

"Não consigo me convencer de que um Deus caridoso e onipotente teria propositalmente criado vespas parasitas com a intenção expressa de alimentá-las dentro de corpos vivos de lagartas."

Charles Darwin
Eicar está offline   Responder com Quote
Antigo 16-08-2007, 19:56   #4 (permalink)
pflynn
Zumbi
 
Avatar de pflynn
 
Registrado em: Jan 2004
Mensagens: 5.276
Reputação: 189 pflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputação
Padrão

Citação:
ja testei uns 3 e sempre quandu tiro esse void ele funciona... mas naum como imagino =/
E como você imagina que ele deva funcionar ? E outra coisa: que void que você tirou do seu programa ? No código que você postou, não tem nenhum void.
__________________
------------------------------------------------
Muito bom. Mas tijolo não revida!
------------------------------------------------
pflynn está offline   Responder com Quote
Antigo 16-08-2007, 20:04   #5 (permalink)
Eicar
Membro Senior
 
Avatar de Eicar
 
Registrado em: Feb 2007
Idade: 22
Mensagens: 209
Reputação: 11 Eicar está indo no caminho certo
Enviar mensagem via MSN para Eicar Enviar mensagem via Yahoo para Eicar Enviar mensagem via Skype para Eicar
Padrão

naum funcionou nem com void(outros programas) e dessa vez com return.. soh funciona o main sem nada. tipow.. sera q tem haver q meu compilador compilador naum eh um padrão ANSI???
__________________
_____________________________

"Não consigo me convencer de que um Deus caridoso e onipotente teria propositalmente criado vespas parasitas com a intenção expressa de alimentá-las dentro de corpos vivos de lagartas."

Charles Darwin
Eicar está offline   Responder com Quote
Antigo 16-08-2007, 20:30   #6 (permalink)
Eicar
Membro Senior
 
Avatar de Eicar
 
Registrado em: Feb 2007
Idade: 22
Mensagens: 209
Reputação: 11 Eicar está indo no caminho certo
Enviar mensagem via MSN para Eicar Enviar mensagem via Yahoo para Eicar Enviar mensagem via Skype para Eicar
Padrão

pq a apostila pede um compilador padrão ANSI ;/
__________________
_____________________________

"Não consigo me convencer de que um Deus caridoso e onipotente teria propositalmente criado vespas parasitas com a intenção expressa de alimentá-las dentro de corpos vivos de lagartas."

Charles Darwin
Eicar está offline   Responder com Quote
Antigo 16-08-2007, 21:29   #7 (permalink)
Fergo
Zumbi
 
Avatar de Fergo
 
Registrado em: Nov 2004
Localização: Curitiba - PR
Idade: 24
Mensagens: 8.178
Reputação: 1187 Fergo tem uma fabulosa reputaçãoFergo tem uma fabulosa reputaçãoFergo tem uma fabulosa reputaçãoFergo tem uma fabulosa reputaçãoFergo tem uma fabulosa reputaçãoFergo tem uma fabulosa reputaçãoFergo tem uma fabulosa reputaçãoFergo tem uma fabulosa reputaçãoFergo tem uma fabulosa reputaçãoFergo tem uma fabulosa reputaçãoFergo tem uma fabulosa reputação
Enviar mensagem via ICQ para Fergo Enviar mensagem via MSN para Fergo
Padrão

Se a apostila pede um compilador padrão ANSI e usa void main(void) como exemplo, troque de apostila, pois ela mesmo se contradiz, uma vez que void main(void) não está no padrão ANSI.
Utilize a seguinte estrutura do main() para padronizar de acordo com o ANSI

Código PHP:
int main(void)
{
//seu código aqui
return 0;

A IDE que você está utilizando ( DevC++ ) utiliza o Mingw ( port do GCC ) como compilador, que atende aos padrões ANSI.

Fergo
__________________
Site pessoal www.fergonez.net
Portfolio
www.fbirck.com
Artigos
Informática
Fergo está offline   Responder com Quote
Antigo 16-08-2007, 23:43   #8 (permalink)
douglastc
Super Participante
 
Avatar de douglastc
 
Registrado em: Oct 2006
Localização: Campo Grande MS
Mensagens: 591
Reputação: 11 douglastc está indo no caminho certo
Enviar mensagem via ICQ para douglastc Enviar mensagem via Skype para douglastc
Padrão

int prod (int x,int y)
{
return (x*y);
}

int main ()
{
int saida;
saida=prod (12,7);

A main é a função principal do programa, vc não poderá retornar ela como vc está fazendo.
printf ("A saida e: %d\n",saida);
}
__________________
ASUS A7N8X-X
AMD Athlon XP 2800+
GeForce 6800 256/256 EXTREME
3 GB DDR 400
1 x HD Seagate 80GB
3 x HD Samsung 80GB
1 x HD Seagate 1,5TB Externo

User Linux #448420
Fedora Core 12
Windows 7 Professional
douglastc está offline   Responder com Quote
Antigo 17-08-2007, 7:17   #9 (permalink)
pflynn
Zumbi
 
Avatar de pflynn
 
Registrado em: Jan 2004
Mensagens: 5.276
Reputação: 189 pflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputação
Padrão

Citação:
Postado Originalmente por Eicar Ver Mensagens
naum funcionou nem com void(outros programas) e dessa vez com return.. soh funciona o main sem nada. tipow.. sera q tem haver q meu compilador compilador naum eh um padrão ANSI???
Bom, amigo Eicar...esse, realmente, é um grande problema: "não funcionou" não quer dizer absolutamente nada...
__________________
------------------------------------------------
Muito bom. Mas tijolo não revida!
------------------------------------------------
pflynn está offline   Responder com Quote
Antigo 17-08-2007, 8:32   #10 (permalink)
Flávio Borges
Super Participante
 
Avatar de Flávio Borges
 
Registrado em: Apr 2005
Localização: São Gonçalo do Sapucaí - MG
Idade: 24
Mensagens: 554
Reputação: 16 Flávio Borges Tem uma excelente energiaFlávio Borges Tem uma excelente energia
Padrão

Citação:
Se a apostila pede um compilador padrão ANSI e usa void main(void) como exemplo, troque de apostila, pois ela mesmo se contradiz, uma vez que void main(void) não está no padrão ANSI.
Essa apostila é um pouquinho mais antiga, por isso utiliza void main (void), um padrão mais antigo. Compiladores mais novos, como o próprio devc++, já não aceitam mais que a função main não tenha retorno (void) e sequer compilam. Por isso o interessante é colocar int main(), padrão mais recente.

Eicar:

O que acontece é o seguinte: o seu programa está funcionando, mas o programa está fechando antes mesmo de dar tempo de você ver algum resultado. Esse é o padrão da linguagem C (pelo menos do devc++ eu sei que é). Para resolver faça o seguinte:

1- Conserte o seu código de forma que a função main fique como o Fergo disse:
Citação:
int main(void)
{
//seu código aqui
return 0;
}
2 - Depois da linha #include<stdio.h> insira também a biblioteca "cstdlib". Vai ficar assim:
Citação:
#include<stdio.h>
#include<cstdlib>
3 - Antes da linha return(0) da função main, adiciona a seguinte linha:
Citação:
system("pause")
Após isso, é só compilar.

Somente lembrando que a linguagem C é "case sensitive", ou seja, diferencia letras maiúsculas de minúsculas.
__________________
Flávio.
"Quem lê é", Revista Superinteressante.

Graduado !!! Ciência da Computação - UninCor - Três Corações-MG.
Rock n' Roll stop the traffic

Última edição por Flávio Borges : 17-08-2007 às 8:38. Motivo: Complementar resposta
Flávio Borges está offline   Responder com Quote
Antigo 17-08-2007, 8:42   #11 (permalink)
pflynn
Zumbi
 
Avatar de pflynn
 
Registrado em: Jan 2004
Mensagens: 5.276
Reputação: 189 pflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputação
Padrão

Citação:
Postado Originalmente por Flávio Borges Ver Mensagens
O que acontece é o seguinte: o seu programa está funcionando, mas o programa está fechando antes mesmo de dar tempo de você ver algum resultado. Esse é o padrão da linguagem C (pelo menos do devc++ eu sei que é).

Não, não ! Esse é o padrão do Windows. A janela do emulador do DOS se fechar após a execução do programa é uma característica do sistema operacional, não da linguagem C. Para evitar esse "incomodo", existe a saída clássica do system("PAUSE") ou do getch(), por exemplo. Mas são gambiarras . A saída mais elegante é abrir uma janela do emulador do DOS, caminhar até o diretório onde se encontra o executável e executá-lo na linha de comando.
__________________
------------------------------------------------
Muito bom. Mas tijolo não revida!
------------------------------------------------
pflynn está offline   Responder com Quote
Antigo 17-08-2007, 9:02   #12 (permalink)
philix
Super Participante
 
Registrado em: Dec 2006
Idade: 20
Mensagens: 953
Reputação: 14 philix possui ótimo potencialphilix possui ótimo potencial
Enviar mensagem via MSN para philix
Padrão

Citação:
Não, não ! Esse é o padrão do Windows. A janela do emulador do DOS se fechar após a execução do programa é uma característica do sistema operacional, não da linguagem C. Para evitar esse "incomodo", existe a saída clássica do system("PAUSE") ou do getch(), por exemplo. Mas são gambiarras . A saída mais elegante é abrir uma janela do emulador do DOS, caminhar até o diretório onde se encontra o executável e executá-lo na linha de comando
O mesmo acontece com Pascal no DOS. Esse motivo já seria suficiente para usar um *nix para programar em vez do DOS.

Citação:
#include<stdio.h>

int prod (int x,int y)
{
return (x*y);
}

return main ()
{
int saida;
saida=prod (12,7);
printf ("A saida e: %d\n",saida);
}
Falaram aí acima, mas não explicaram muita coisa não.

Quando se cria uma função deve-se iniciar a linha com o tipo de dado que ela retorna:

int main(void) {}
void main(void) {}

return não é um tipo de dado, return é uma instrução.

em int main(void){}

vc deve usar return <inteiro>

usa-se retun 0; para "dizer" que o programa não encontrou erros na execução.

Se houver erros me avisem, pois estou aprendendo.
__________________
"A Matemática é a ginástica mental necessária na tentativa da compreenssão do universo" Linus Torvalds
philix está offline   Responder com Quote
Antigo 17-08-2007, 17:35   #13 (permalink)
Fergo
Zumbi
 
Avatar de Fergo
 
Registrado em: Nov 2004
Localização: Curitiba - PR
Idade: 24
Mensagens: 8.178
Reputação: 1187 Fergo tem uma fabulosa reputaçãoFergo tem uma fabulosa reputaçãoFergo tem uma fabulosa reputaçãoFergo tem uma fabulosa reputaçãoFergo tem uma fabulosa reputaçãoFergo tem uma fabulosa reputaçãoFergo tem uma fabulosa reputaçãoFergo tem uma fabulosa reputaçãoFergo tem uma fabulosa reputaçãoFergo tem uma fabulosa reputaçãoFergo tem uma fabulosa reputação
Enviar mensagem via ICQ para Fergo Enviar mensagem via MSN para Fergo
Padrão

Para pausar o programa após a execução sem fechar o prompt é melhor usar o getch() ao invés do system(), uma vez que este último só funciona no Windows. Com disseram, não é problema do C, é problema do subsistema de 16 bits ( Prompt do DOS ), que fecha o prompt assim que a execução termina ( se você executar o programa a partir do próprio prompt, ele não fecha ).

Fergo
__________________
Site pessoal www.fergonez.net
Portfolio
www.fbirck.com
Artigos
Informática
Fergo está offline   Responder com Quote
Antigo 19-08-2007, 10:35   #14 (permalink)
Eicar
Membro Senior
 
Avatar de Eicar
 
Registrado em: Feb 2007
Idade: 22
Mensagens: 209
Reputação: 11 Eicar está indo no caminho certo
Enviar mensagem via MSN para Eicar Enviar mensagem via Yahoo para Eicar Enviar mensagem via Skype para Eicar
Padrão

ja aproveotando o topico pessoal...

eh q eu instalei o linux no meu pc e gostaria de saber como uso o compilador gcc (padrão do linux) para compilar meus programas???

VLW
__________________
_____________________________

"Não consigo me convencer de que um Deus caridoso e onipotente teria propositalmente criado vespas parasitas com a intenção expressa de alimentá-las dentro de corpos vivos de lagartas."

Charles Darwin
Eicar está offline   Responder com Quote
Antigo 19-08-2007, 10:40   #15 (permalink)
HigorC
Veterano
 
Avatar de HigorC
 
Registrado em: Apr 2007
Localização: ls Espirito Santo | grep Vila Velha
Mensagens: 1.319
Reputação: 15 HigorC é um modelo a seguirHigorC é um modelo a seguirHigorC é um modelo a seguir
Padrão

gcc -o nome_do_executavel nome_do_fonte.c
__________________
Pensamento de um usuário: Estou com problemas. O que fazer?
[ ]Procurar no google?
[ ]Procurar no forum?
[X]Postar no forum sem procurar no google e pesquisar no forum.
Java write once, debug anywhere.(Eu gosto de java tah.)
HigorC está offline   Responder com Quote
Antigo 19-08-2007, 11:09   #16 (permalink)
Eicar
Membro Senior
 
Avatar de Eicar
 
Registrado em: Feb 2007
Idade: 22
Mensagens: 209
Reputação: 11 Eicar está indo no caminho certo
Enviar mensagem via MSN para Eicar Enviar mensagem via Yahoo para Eicar Enviar mensagem via Skype para Eicar
Padrão

mais isso ai eh no Executar Comando???
__________________
_____________________________

"Não consigo me convencer de que um Deus caridoso e onipotente teria propositalmente criado vespas parasitas com a intenção expressa de alimentá-las dentro de corpos vivos de lagartas."

Charles Darwin
Eicar está offline   Responder com Quote
Antigo 19-08-2007, 11:28   #17 (permalink)
HigorC
Veterano
 
Avatar de HigorC
 
Registrado em: Apr 2007
Localização: ls Espirito Santo | grep Vila Velha
Mensagens: 1.319
Reputação: 15 HigorC é um modelo a seguirHigorC é um modelo a seguirHigorC é um modelo a seguir
Padrão

Sim, na linha de comando
__________________
Pensamento de um usuário: Estou com problemas. O que fazer?
[ ]Procurar no google?
[ ]Procurar no forum?
[X]Postar no forum sem procurar no google e pesquisar no forum.
Java write once, debug anywhere.(Eu gosto de java tah.)
HigorC está offline   Responder com Quote
Antigo 20-08-2007, 8:33   #18 (permalink)
Flávio Borges
Super Participante
 
Avatar de Flávio Borges
 
Registrado em: Apr 2005
Localização: São Gonçalo do Sapucaí - MG
Idade: 24
Mensagens: 554
Reputação: 16 Flávio Borges Tem uma excelente energiaFlávio Borges Tem uma excelente energia
Padrão

Citação:
Postado Originalmente por pflynn Ver Mensagens
Não, não ! Esse é o padrão do Windows. A janela do emulador do DOS se fechar após a execução do programa é uma característica do sistema operacional, não da linguagem C. Para evitar esse "incomodo", existe a saída clássica do system("PAUSE") ou do getch(), por exemplo. Mas são gambiarras . A saída mais elegante é abrir uma janela do emulador do DOS, caminhar até o diretório onde se encontra o executável e executá-lo na linha de comando.
Pô não sabia que esse padrão era do Windows não, pois já utilizei algumas outras linguagens que colocavam um pausa no final... Então, provavelmente, os compiladores já implementavam essa gambiarra automaticamente.

Citação:
Postado Originalmente por philix
Falaram aí acima, mas não explicaram muita coisa não.

Quando se cria uma função deve-se iniciar a linha com o tipo de dado que ela retorna:

int main(void) {}
void main(void) {}

return não é um tipo de dado, return é uma instrução.

em int main(void){}

vc deve usar return <inteiro>

usa-se retun 0; para "dizer" que o programa não encontrou erros na execução.

Se houver erros me avisem, pois estou aprendendo.
Você está certo ao falar sobre a instrução return(), mas o tipo de retorno void não é mais aceito para funções no padrão ANSI C. Dessa forma, em compiladores um pouco mais recentes (como o Dev-C++) void main (void) causará um erro de compilação.

Falou!
__________________
Flávio.
"Quem lê é", Revista Superinteressante.

Graduado !!! Ciência da Computação - UninCor - Três Corações-MG.
Rock n' Roll stop the traffic
Flávio Borges está offline   Responder com Quote
Antigo 20-08-2007, 8:58   #19 (permalink)
pflynn
Zumbi
 
Avatar de pflynn
 
Registrado em: Jan 2004
Mensagens: 5.276
Reputação: 189 pflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputaçãopflynn tem uma fabulosa reputação
Padrão

Citação:
Postado Originalmente por Flávio Borges Ver Mensagens
Você está certo ao falar sobre a instrução return(), mas o tipo de retorno void não é mais aceito para funções no padrão ANSI C. Dessa forma, em compiladores um pouco mais recentes (como o Dev-C++) void main (void) causará um erro de compilação.

Falou!

Olha, não é que "o tipo de retorno void não é mais aceito para funções no padrão ANSI C". Funções com o tipo de retorno void são perfeitamente válidas na linguagem C padrão - nunca deixaram de ser, aliás. O padrão ANSI C fala especificamente da função main: essa sim tem um tipo de retorno que deve ser sempre o mesmo: int. Para as demais funções, não existe restrição.

[edit] Detalhe: um compilador ANSI C não deve acusar erro de compilação ao encontrar a função main definida como uma função que retorna o tipo void, mas apenas emitir uma advertência. Já na linguagem C++ é diferente: main não retornando int é erro de compilação.
__________________
------------------------------------------------
Muito bom. Mas tijolo não revida!
------------------------------------------------
pflynn está offline   Responder com Quote
Antigo 20-08-2007, 9:59   #20 (permalink)
philix
Super Participante
 
Registrado em: Dec 2006
Idade: 20
Mensagens: 953
Reputação: 14 philix possui ótimo potencialphilix possui ótimo potencial
Enviar mensagem via MSN para philix
Padrão

O gcc manda warning(não erro!!!) quando vc usa "void main()";

Citação:
Você está certo ao falar sobre a instrução return(), mas o tipo de retorno void não é mais aceito para funções no padrão ANSI C. Dessa forma, em compiladores um pouco mais recentes (como o Dev-C++) void main (void) causará um erro de compilação.
void não é permitido apenas no main viu.
__________________
"A Matemática é a ginástica mental necessária na tentativa da compreenssão do universo" Linus Torvalds
philix está offline   Responder com Quote
Resposta


Opções do Tópico

Regras de Mensagens
Você não pode criar tópicos
Você não pode postar respostas
Você não pode anexar arquivos
Você não pode editar suas mensagens

Código vB está Ligado
Smiles estão Ligado
Código [IMG] está Ligado
Código HTML está Desligado
Ir para...


Horários baseados na GMT -3. Agora são 13:40.