Como o blog coloca os artigos mais recentes na frente, resolvi organizar esta página como sugestão de ordem de leitura dos artigos sobre a linguagem C. Também tem tem uma introdução de cada artigo, para você saber se já o leu, ou não.
A ideia aqui não é ser um curso para ensinar a programar em C, mas um conjunto de dicas e extras para o aprendizado. Um material bom como complemento ao aprendizado, e para melhor compreensão, é bom ler os artigos em uma ordem lógica. Aqui ficará a ordem lógica.
Linguagem C
A linguagem de programação C é mal compreendida por muita gente, inclusive por alguns que programam nela. Alguns pensam nela como uma linguagem de alto nível, como Pascal, Java, PHP, BASIC (Visual Basic não é BASIC), Visual Basic etc, mas ela não é bem assim. Ela nasceu na Bell Labs, criada por Dennis Ritchie quando migravam o Unix para o PDP 11. Atualmente pode-se dizer que é a linguagem de programação mais importante do mundo.
C: Como compilar
Como compilar um programa em C? É uma dúvida simples, mas comum entre os iniciantes. A resposta varia conforme o sistema e o desenvolvedor do compilador, mas tem um básico que é comum nos Unix, e nos outros sistemas cujo compilador seja por linha de comando. E sobre este modo que aqui tratarei.
C: Tipos básicos de dados
O C tem alguns tipos básicos de dados, dos quais os outros se originam. Eles são: char, int, float, double. E tem modificadores de tipo: signed, unsigned, short e long. Todo o resto é derivado destes
C: Modificadores de sinal e tamanho
A linguagem C tem basicamente quatro modificadores de tipo, dois em relação ao sinal, signed e unsigned, e dois relativo a tamanho da variável, short e long.
C: Dualidade char/int
O tipo char no C é este inteiro de um Byte, que pode ser usado para armazenar um número inteiro que caiba em um Byte, ou um caractere, e não é um tipo restritivo como outras linguagens de alto nível.
C: sizeof.c
Como forma de reconhecimento de um sistema, e de seu compilador C, este é um dos primeiros programas que executo em um sistema quando começo a mexer nele.
Processo x Programa Executável
"Alguém sabe a diferença entre um Processo e um Programa Executável?"
Esta foi a pergunta que um amigo, o Sergio Prallon, fez em uma turma de amigos para a qual ele ensinava C, a qual eu entrei de penetra. E eu respondi da seguinte forma:
C: Formas de armazenamento das variáveis
O C tem algumas formas de como uma variável será alocada. (Aqui se excluem as formas de alocação dinâmica, que deverá ser outro capítulo.) Estas formas são: auto, register, static e external.
C: Explicando as bruxarias
A linguagem C permite uma economias de expressão, e outras linguagens podem ter seus truques também, então é aconselhável o uso de comentários explicando as "bruxarias" que você fez.
C: Ser ou no ser - Boolean
No C não existe o tipo boolean, tal como existe em outras linguagens, mas existem operações lógicas. As operações lógicas são operações inteiras de baixo nível de precedência.
C: Avaliação incompleta
Existem duas formas de avaliação em expressões lógicas, a avaliação completa e a incompleta.
Por definição, no Pascal a avaliação sempre é completa (O Turbo Pascal tinha uma opção para mudar este comportamento.), e no C é incompleta.
O que é isto? Quais são as consequências? Como melhor aproveitar isto.
C: Contagem de condições lógicas
Digamos que em um algoritmo é necessário que pelo menos 3 de 5 condições sejam verdadeiras para tomar uma ação. Como testar isto? Fazer um emaranhado de if? Pior, se somente 3 de 5 tem que ser verdadeiras? Fazer um emaranhado maior?
C: Um exemplo de simplificação de expressão lógica
No outro dia vi uma expressão assim:
if(((situacao == situacao_a) ||
((situacao == situacao_b) && (strcmp(string,UMA_MACRO) == 0))) ||
((situacao == situacao_c) ||
((situacao == situacao_d) && (strcmp(string,UMA_MACRO) == 0))))
{
/* ... */
}
Este código acima está abaixo do ótimo, tanto em geração de código quanto em desempenho. Mas como otimizar?