Autor Tópico: C - Primeiras dúvidas de um iniciante  (Lida 14051 vezes)

Offline usifoto

  • Usuário Ubuntu
  • *
  • Mensagens: 320
    • Ver perfil
C - Primeiras dúvidas de um iniciante
« Online: 22 de Julho de 2007, 10:10 »
 :(

Olá, pessoal

Comecei a estudar seguindo uma apostila do site http://www.apostilando.com e, ao visitar um link http://www.ppgia.pucpr.br/~maziero/ensino/so/projetos/curso-c/aulas-main.html postado pelo colega tfmoraes, vi que se tratava da mesma apostila que eu havia baixado em formato .doc, porém, no primeiro exemplo de programa, embora o exemplo fosse o mesmo, apresentava essa diferença:

Na apostila:
Código: [Selecionar]
#include <stdio.h>
        /* Um Primeiro Programa */
        int main ()   
        {
            printf ("Ola! Eu estou vivo!\n");
            return(0);
        }

No curso on-line:
Código: [Selecionar]
#include <stdio.h>
        void main ()    /* Um Primeiro Programa */
        {
            printf ("Ola! Eu estou vivo!\n");
        }

Perguntas:

1 - Qual a diferença entre int e void?

2 - Como faço para compilar o programa no Kubuntu, depois de digita-lo no kate?

Obrigado.

Ronie

Offline celsofaf

  • Usuário Ubuntu
  • *
  • Mensagens: 254
  • Ubuntu 12.10
    • Ver perfil
Re: C - Primeiras dúvidas de um iniciante
« Resposta #1 Online: 22 de Julho de 2007, 14:20 »
1 - Qual a diferença entre int e void?

Grosso modo:

int = a função main() retorna um valor inteiro.
void = main() não retorna valor.

Na prática, para a função main() (que é a função principal de qualquer programa), não há muita diferença. Mas, para main(), prefira sempre usar int, com return(0) ao final. Logo você saberá a razão.

2 - Como faço para compilar o programa no Kubuntu, depois de digita-lo no kate?

Código: [Selecionar]
gcc -o nomedoexecutável codigofonte.c
Rio de Janeiro, RJ, Brasil

Darcamo

  • Visitante
Re: C - Primeiras dúvidas de um iniciante
« Resposta #2 Online: 22 de Julho de 2007, 14:31 »
Por enquanto que são poucos arquivos para compilar você pode continuar usando o gcc diretamente pela linha de comando como o celsofaf ensinou.

No entanto, quando seu programa começar a ficar maior e composto por vários arquivos você provavelmente deva preferir usar o make para compilar. Nesse tópico http://ubuntuforum-pt.org/index.php/topic,21155.0.html eu postei um tutorial básico sobre o make e como criar seu proprio makefile. O Exemplo lá é para C++ mas é fácil adaptar para C (ou para diversas outras coisas).

Offline tfmoraes

  • Usuário Ubuntu
  • *
  • Mensagens: 441
    • Ver perfil
Re: C - Primeiras dúvidas de um iniciante
« Resposta #3 Online: 22 de Julho de 2007, 16:25 »
Citar
1 - Qual a diferença entre int e void?

http://www.delorie.com/djgpp/v2faq/faq22_25.html

Offline usifoto

  • Usuário Ubuntu
  • *
  • Mensagens: 320
    • Ver perfil
Re: C - Primeiras dúvidas de um iniciante
« Resposta #4 Online: 22 de Julho de 2007, 16:28 »
Obrigado pelas respostas.

Então, supondo que eu vou usar o nome "exemplo1" eu devo digitar o código no kate, salvar em qualquer diretório como "exemplo1.c" e, depois, pelo terminal, gcc -o exemplo1 exemplo1.c?

Vou tentar assim.  ;)

Deu erro  :(

Código: [Selecionar]
ubuntu@ubuntu:~/Desktop$ gcc -o exemplo1 exemplo1.c
exemplo1.c:1:20: error: stdio.h: Arquivo ou diretório inexistente
exemplo1.c:3: error: stray ‘\302’ in program
exemplo1.c:3: error: stray ‘\240’ in program
exemplo1.c:3: error: stray ‘\302’ in program
exemplo1.c:3: error: stray ‘\240’ in program
exemplo1.c:3: error: stray ‘\302’ in program
exemplo1.c:3: error: stray ‘\240’ in program
exemplo1.c: In function ‘main’:
exemplo1.c:5: warning: incompatible implicit declaration of built-in function ‘printf’
exemplo1.c:8:2: warning: no newline at end of file
ubuntu@ubuntu:~/Desktop$

Na apostila não há nada sobre como tratar o código digitado e compilar e eu não sei como funciona...

Grato

Ronie
« Última modificação: 22 de Julho de 2007, 16:40 por usifoto »

Offline usifoto

  • Usuário Ubuntu
  • *
  • Mensagens: 320
    • Ver perfil
Re: C - Primeiras dúvidas de um iniciante
« Resposta #5 Online: 22 de Julho de 2007, 20:53 »
 :'(

Se alguém estiver a fim de me dar umas dicas via MSN, por favor me adicione:

usifoto(arroba)ig(ponto)com(ponto)br

Offline Dimas

  • Usuário Ubuntu
  • *
  • Mensagens: 81
    • Ver perfil
Re: C - Primeiras dúvidas de um iniciante
« Resposta #6 Online: 22 de Julho de 2007, 21:02 »
Você instalou o build-essential ?
Em negação, instale-o assim:
Código: [Selecionar]
sudo aptitude install build-essential
Poste o seu código, isto também ajuda.

Valeu!
Dimas Gabriel
digabriel[at]gmail.com

"Liberdade é a questão, a única e exclusiva questão."

Offline usifoto

  • Usuário Ubuntu
  • *
  • Mensagens: 320
    • Ver perfil
Re: C - Primeiras dúvidas de um iniciante
« Resposta #7 Online: 22 de Julho de 2007, 22:11 »
Olá, Dimas.

O código que estou querendo compilar é o primeiro exemplo da apostila:
Código: [Selecionar]
#include <stdio.h>
/* Um Primeiro Programa */
int main ()
{
printf ("Ola! Eu estou vivo!\n");
return(0);
}

Eu estou salvando da forma correta?

Eu digitei o código acima no Kate e salvei com a extensão ".c" no Desktop mesmo. Pode ser dessa forma ou é exigido algum modo ou diretório especial para salvar o código a ser compilado?

Após instalar o build-essential deu o seguinte erro:
Código: [Selecionar]
ubuntu@ubuntu:~$ cd ~/Desktop
ubuntu@ubuntu:~/Desktop$ gcc -o exemplo1 exemplo1.c
exemplo1.c:3: error: stray ‘\302’ in program
exemplo1.c:3: error: stray ‘\240’ in program
exemplo1.c:3: error: stray ‘\302’ in program
exemplo1.c:3: error: stray ‘\240’ in program
exemplo1.c:3: error: stray ‘\302’ in program
exemplo1.c:3: error: stray ‘\240’ in program
exemplo1.c:8:2: warning: no newline at end of file
ubuntu@ubuntu:~/Desktop$

Grato

Ronie
« Última modificação: 22 de Julho de 2007, 22:14 por usifoto »

Offline usifoto

  • Usuário Ubuntu
  • *
  • Mensagens: 320
    • Ver perfil
Re: C - Primeiras dúvidas de um iniciante
« Resposta #8 Online: 22 de Julho de 2007, 22:40 »
 ;D

Eureka!

Consegui!

Deu alerta, mas funcionou:
Código: [Selecionar]
ubuntu@ubuntu:~/Desktop$ gcc -o exemplo1 exemplo1.c
exemplo1.c:8:2: warning: no newline at end of file
ubuntu@ubuntu:~/Desktop$ ./exemplo1
Ola! Eu estou vivo!
ubuntu@ubuntu:~/Desktop$

O que seria essa "nova linha no final do arquivo" que provocou esse alerta?
« Última modificação: 22 de Julho de 2007, 22:43 por usifoto »

Offline celsofaf

  • Usuário Ubuntu
  • *
  • Mensagens: 254
  • Ubuntu 12.10
    • Ver perfil
Re: C - Primeiras dúvidas de um iniciante
« Resposta #9 Online: 22 de Julho de 2007, 23:52 »
Sempre deixe uma linha vazia ao final do fonte. Suponho que seja isso. :)
Rio de Janeiro, RJ, Brasil

Darcamo

  • Visitante
Re: C - Primeiras dúvidas de um iniciante
« Resposta #10 Online: 23 de Julho de 2007, 23:50 »
É isso mesmo. Sempre deixa uma linha em branco no final do arquivo para evitar esse warning.

Quanto aos erros que você estava tendo antes, o que era?
O código está certo então fiquei pensando se era o sistema de codificação de caracteres do arquivo que o kate gravou (ou seja, se num era culpa do editor).

Offline usifoto

  • Usuário Ubuntu
  • *
  • Mensagens: 320
    • Ver perfil
Re: C - Primeiras dúvidas de um iniciante
« Resposta #11 Online: 24 de Julho de 2007, 09:26 »
 ???

Eu não sei o que estava acontecendo, mas de uma hora para outra ficou normal e agora está compilando corretamente.

Tá indo tudo bem agora, estou conseguindo entender os exemplos, digito os códigos e compilo para exercitar.

Antes de passar o código no editor eu dou uma lida para entender o que ele vai fazer e depois tento digitar tudo de cabeça, para ver se consigo montar o código sem erros. Até agora tá dando pra acompanhar a apostila.

Obrigado pela força

Offline usifoto

  • Usuário Ubuntu
  • *
  • Mensagens: 320
    • Ver perfil
Re: C - Primeiras dúvidas de um iniciante
« Resposta #12 Online: 03 de Agosto de 2007, 20:24 »
Olá, pessoal.

Cá estou, a passos de tartaruga, mas vou indo.  ;D

Cheguei na quarta auto-avaliação da apostila e resolvi os exercícios propostos, mas quando decidi criar um outro programinha baseado no que vi até aqui, me deparei com o seguinte erro:

Código: [Selecionar]
senha.c:9: error: incompatible types in assignment
Está dando erro quando eu tento clonar o conteúdo da senha original.

O código do exercício é este:
Código: [Selecionar]
#include<stdio.h>
int main()
{
char senhao[11],senham[11];
int x;
printf("\nDigite uma senha em maiusculas");
printf("\nuse no maximo dez caracteres: ");
gets(senhao);
senham=senhao;
for(x=0;senham[x]!='\0';x=x+1)
{
if(senham[x]=='O')
{
senham[x]='0';
}
if(senham[x]=='I')
{
senham[x]='1';
}
if(senham[x]=='Z')
{
senham[x]='2';
}
if(senham[x]=='E')
{
senham[x]='3';
}
if(senham[x]=='A')
{
senham[x]='4';
}
if(senham[x]=='S')
{
senham[x]='5';
}
if(senham[x]=='G')
{
senham[x]='6';
}
if(senham[x]=='T')
{
senham[x]='7';
}
if(senham[x]=='B')
{
senham[x]='8';
}
}
printf("\n\nSenha original: %s",senhao);
printf("\nSenha modificada: %s\n\n",senham);
return(0);
}

Outra coisa que me chamou a atenção é que se eu comentar a linha 9 o programa funciona, mesmo estando a variável da senha modificada (e não aquela captada pelo gets) no loop. Alguém me explica o que acontece?  ???

E esse alerta?
Código: [Selecionar]
auto_avaliacao_004-b.c:(.text+0x32): warning: the `gets' function is dangerous and should not be used.

Offline tfmoraes

  • Usuário Ubuntu
  • *
  • Mensagens: 441
    • Ver perfil
Re: C - Primeiras dúvidas de um iniciante
« Resposta #13 Online: 03 de Agosto de 2007, 21:35 »
Cara, você não pode atribuir uma matriz deste jeito, você teria que atribuir valor por valor.

Offline usifoto

  • Usuário Ubuntu
  • *
  • Mensagens: 320
    • Ver perfil
Re: C - Primeiras dúvidas de um iniciante
« Resposta #14 Online: 03 de Agosto de 2007, 21:44 »
Tô revirando a apostila pra ver se acho algo que explique como fazer.

Na seqüência que acompanhei até aqui não tem nada que ensine, então vou ter de aprender batendo a cabeça mesmo.

Obrigado.

[]'s