Compilador C

corehound

Membro
Boas,

Tenho 16 anos e vou começar a aprender C.
Tou praticamente a 0 em programação, faço apenas alguns programas para uma TI-84, nada de mais.
Se alguém achar que não devo começar por C, diga por favor.

Gostava que me indicassem um compilador para C (Windows 8 64-bits)
Sei que há por aí, mas os que encontrei já eram de post's antigos e os links já não estavam disponíveis.

Obrigado
 
Começa por ver uns tutoriais no youtube!
Uns bons que aconselho sao os do thenewboston, deves encontrar rapido no youtube, "newboston C tutorials" , e penso q ele tambem fala do compilador a usar no primeiro video
 
Para C é realmente melhor usar Linux. Para aprender os básicos Windows dá perfeitamente, mas há muitas funções comummente utilizadas em C que são nativas em Linux e sistemas *nix-like e que em Windows são fornecidas por camadas de compatibilidade (como o Cygwin) ou simplesmente reimplementadas (como é o caso do MinGW). Por isso é que normalmente se aconselha Linux.

No entanto, no geral, não deves ter problemas em Windows para aprendizagem. Para algumas coisas mais avançadas pode ser que sejam mais facilmente feitas em Linux do que Windows, pois é muito mais fácil adicionar bibliotecas extra pelos repositórios de uma distribuição de Linux do que à pata em Windows.
 
Para C é realmente melhor usar Linux. Para aprender os básicos Windows dá perfeitamente, mas há muitas funções comummente utilizadas em C que são nativas em Linux e sistemas *nix-like e que em Windows são fornecidas por camadas de compatibilidade (como o Cygwin) ou simplesmente reimplementadas (como é o caso do MinGW). Por isso é que normalmente se aconselha Linux.

No entanto, no geral, não deves ter problemas em Windows para aprendizagem. Para algumas coisas mais avançadas pode ser que sejam mais facilmente feitas em Linux do que Windows, pois é muito mais fácil adicionar bibliotecas extra pelos repositórios de uma distribuição de Linux do que à pata em Windows.

Certo, obrigado. Por enquanto estou apenas a aprender.
Tenho feito uns programas (Raiz quadrada, Numeros Primos, dizer se uma letra é vogal ou consoante, calcular derivadas, etc).
Penso que tou a evoluir rápido e estou a adorar.
 
Vou aproveitar este tópico para expor uma dúvida que me surgiu.

O tamanho de um int char ou outro, depende exactamente de quê? do compilador, da linguagem, do SO?


Por exemplo no código a baixo, quando o número introduzido é maior que 12 o produto começa a dar valores disparatados. Experimentei um unsigned long int na variável produto e apartir de 12 acontence o mesmo. Isto quer dizer que o int e o long int têm o mesmo tamanho neste caso? Pelo que percebi suponho que o tamanho de ambos seja 4bytes.


Código:
#include <stdio.h>

main()
{
    int n,num,soma,produto;
    soma=0;
    produto=1;

    printf("Introduza o numero: ");
    scanf("%d",&n);
    for(num=1; num<=n; num=num+1)
      {
        soma=soma+num;
        produto=produto*num;
      }
    printf("\nA soma dos %d termos inteiros e' %d\n",n,soma);
    printf("\nO produto dos %d termos inteiros e' %d\n",n,produto);
}


   }
 
Acho que é do SO ou do compliador, mas sim é normal que sejam iguais. Não te podes é fiar nisso como verdade absoluta.

E isso é mais um factorial que um produto.
 
corehound,
Para aprender a programar em C recomendo-te um bom compilador, de preferência sem IDE. Podes optar entre gcc e clang, caso estejas a pensar em programar em Linux. Se o teu objectivo for programar em Windows, sugiro-te que experimentes o Pelles C, um IDE minimalista que suporta C99 (algo que nunca encontraras no Visual Studio). Tendo um compilador debaixo de olho, deves aprender a gerir os teus projectos manualmente, e o mesmo pode ser dito para a compilação dos mesmos: aprende a fazer isso tu mesmo. Tenta compilar sempre com opções que te avisem dos teus erros e aponta sempre para código compatível com o standard: -Wall -Wextra -pedantic e, por fim, -std=c99 ou -std=c89, como preferires.
Relativamente a bibliografia... The C Programming Language (a 2ª edição) ou C Primer Plus.

Fakamos,
De facto, o tamanho dos tipos inteiros depende do compilador (e, indirectamente, do teu sistema). Não sei que valores disparatados obtiveste, mas provavelmente deve-se ao tamanho dos tipos de dados que utilizaste. Para começar, se usares 'int' em vez de 'unsigned int', estás a desperdiçar metade da gama de valores possíveis. Depois, tens o problema de que o 'unsigned int' pode não ser suficiente. Podes sempre experimentar com 'unsigned long long int' (sim, long duas vezes) para um inteiro sem sinal de pelo menos 64bits (tem pelo menos 18446744073709551615 valores possíveis).
Uma alternativa é incluires o header <stdint.h> ou o <inttypes.h> e escolheres um tipo de dados de tamanho fixo: uint64_t, neste caso. Assim sabes precisamente o seu tamanho (nota: só está presente a partir do C99, ou com extensões dos compiladores).

Se quiseres investigar as gamas de valores dos diferentes tipos de dados, podes consultar o <limits.h> que vem com o teu compilador, e podes sempre consultar o standard se quiseres saber os valores mínimos.

Outra coisa, 'main ()' é errado. 'int main (void)' é a forma correcta de declarar a função 'main' que não aceita argumentos. Assim sendo, falta-te também um 'return 0;' no final do código, a menos que estejas a usar C99.
 
Back
Topo