Programação defensiva
Nesta aula, você aprenderá a aplicar técnicas de programação defensiva em C, como validação de entradas, uso de assert, verificação de retornos e boas práticas, para criar programas mais robustos e confiáveis.
LidoC é a linguagem que sustenta a computação moderna: sistemas operacionais, bancos de dados, interpretadores de outras linguagens e quase todo sistema embarcado. Trabalha perto do hardware, com controle explícito da memória através de ponteiros — o que exige disciplina, mas ensina como o computador realmente funciona por baixo das abstrações.
Nesta aula, você aprenderá a aplicar técnicas de programação defensiva em C, como validação de entradas, uso de assert, verificação de retornos e boas práticas, para criar programas mais robustos e confiáveis.
LidoNesta aula, exploramos como o compilador organiza estruturas na memória, introduzindo os conceitos de alinhamento e padding. Você aprenderá por que o tamanho de uma struct pode ser maior que a soma de seus membros, como o compilador insere bytes de preenchimento e como reordenar campos pode otimizar o uso de memória.
LidoNesta aula, você aprenderá sobre os qualificadores de tipo volatile e restrict na linguagem C, entendendo quando e como usá-los para controlar otimizações do compilador e melhorar a performance, com exemplos práticos e exercícios.
LidoNesta aula, exploramos as funções setjmp e longjmp da biblioteca padrão C, que permitem saltos não locais entre funções. Discutimos seus casos de uso raros, como recuperação de erros em sistemas embarcados ou implementação de corrotinas, e os riscos associados, incluindo problemas com variáveis voláteis e vazamentos de recursos. Também comparamos essa técnica com o tratamento de erro tradicional baseado em códigos de retorno.
LidoNesta aula, você aprenderá a importância da análise estática e das flags do compilador C para escrever código mais seguro e confiável. Abordaremos as flags -Wall e -Wextra, a ferramenta -fsanitize, o uso de linters e a prática de tratar avisos como erros, com exemplos práticos e exercícios.
LidoNesta aula, você aprenderá a criar funções em C que aceitam um número variável de argumentos, usando o cabeçalho stdarg.h e as macros va_list, va_start, va_arg e va_end. Vamos também entender como printf funciona internamente e ver exemplos práticos de implementação.
LidoNesta aula, você construirá uma calculadora completa em C, cobrindo desde o parsing de entrada até o tratamento de erros, com uma estrutura modular e boas práticas. O projeto inclui suporte a operações básicas, precedência de operadores e funções avançadas, além de testes.
LidoNesta aula, você aprenderá a decifrar e criar declarações complexas de ponteiros em C, utilizando a regra direita-esquerda, e entenderá as diferenças entre ponteiros para arrays e arrays de ponteiros, além de usar typedef para simplificar a sintaxe.
LidoNesta aula, desenvolvemos um processador de arquivos em C, abrangendo leitura e escrita, transformações de dados, tratamento de erros e robustez. O projeto integra conceitos de manipulação de arquivos, alocação dinâmica e boas práticas de programação defensiva.
LidoEsta aula oferece uma visão geral introdutória sobre concorrência em C, abordando threads com pthreads, o problema das race conditions, o conceito de mutex e quando faz sentido usar concorrência. O aluno aprenderá os fundamentos teóricos e práticos para começar a escrever programas concorrentes em C, com exemplos de código e exercícios.
LidoNesta aula, construímos um gerenciador de registros usando lista ligada em C, abordando CRUD em memória, alocação dinâmica, liberação de memória e um menu interativo. O projeto integra todos os conceitos anteriores e serve como base para sistemas mais complexos.
LidoNesta aula, exploramos como a linguagem C se tornou a base para a interoperabilidade entre linguagens de programação, abordando conceitos fundamentais como FFI (Foreign Function Interface) e ABI (Application Binary Interface). Você aprenderá por que C é considerado a 'língua franca' da computação e como outras linguagens se comunicam com código C, com exemplos práticos em Python, Rust e JavaScript.
Lido