Discussão em 'Programação' iniciada por corehound, 4 de Abril de 2013. (Respostas: 11; Visualizações: 1922)
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.
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
tens o Visual Studio e Dev C++, há vários manuais básicos de c que te ajudam a começar a entender da coisa
Recomendo o DevC++ do Orwell, usa gcc -> http://sourceforge.net/projects/orwelldevcpp/
O Visual Studio também serve, mas é muito pesado e pouco ágil na minha opinião.
Rapaz instala uma distribuição Linux que já tem o gcc. Aprendes Linux e C ao mesmo tempo.
Compra o livro do Damas e vê alguma coisa na net.
Livro do Damas FTW
E pela tua saúde não compiles C em Windows
Alguém me explica isso do Linux, por favor? Porque Linux é melhor na programação?
Porque não 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.
#9 18 de Abril de 2013
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.
int n,num,soma,produto;
produto=1;
for(num=1; num<=n; num=num+1)
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);
#11 22 de Abril de 2013
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.
pwseo Power Member
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.