C é uma linguagem de programação de alto nível, procedural, portátil e de propósito geral, que é uma das mais populares e influentes linguagens. Foi projetada para ser compilada usando um compilador simples, para fornecer acesso de baixo nível à memória, para fornecer construções de linguagem que mapeiam eficientemente as instruções da máquina, e para requerer um suporte mínimo de tempo de execução. Muitas linguagens de programação têm uma dívida considerável com C. Tornou-se algo da lingua franca no mundo da programação.
C é bastante simples de entender. Ela permite ao programador organizar programas de uma maneira clara, fácil e lógica. É uma linguagem muito flexível, prática e compacta, combinada com uma sintaxe de fácil leitura. O código escrito em C corre rapidamente, com fácil acesso às facilidades de baixo nível no computador. As diretrizes do compilador permitem produzir uma única versão de um programa compilado para diferentes arquiteturas.
C é sobre liberdade. Portanto, faz sentido aprender C com livros que também incorporam a liberdade. Dê uma olhada nas minhas escolhas e veja se alguma delas agarra a sua fantasia.
1. The C Book by Mike Banahan, Declan Brady and Mark Doran
The C Book is designed for programmers who already have some experience of using a modern high-level procedural programming language.
Você já deve entender declarações, variáveis, execução condicional, arrays, procedimentos (ou sub-rotinas) e assim por diante.
O livro se concentra nas coisas que são especiais para C. Em particular, é a forma como C é usado que está focado. O livro é ao mesmo tempo informativo e uma boa leitura.
Capítulos incluem:
- Uma Introdução a C
- Variáveis e Aritmética – introduz alguns dos fundamentos de C, incluindo palavras-chave e identificadores, declaração de variáveis, tipos reais, tipos integrais, expressões e aritmética, e constantes
- Controle de Fluxo e Expressões Lógicas – olha para as várias maneiras em que o controle de instruções de fluxo pode ser usado em um programa em C, incluindo algumas instruções que não foram introduzidas até agora. Controle de fluxo, expressões mais lógicas e operadores estranhos
- Funções – o tipo de funções, recursividade e passagem de argumentos, e ligação
- Arrays and Pointers – arrays, apontadores, manipulação de caracteres, alocação de tamanho e armazenamento, apontadores para funções, expressões envolvendo apontadores, arrays, o & declarações de operador e função
- Tipos de dados estruturados – estruturas, uniões, bitfields, enumeros, qualificadores e tipos derivados, e inicialização
- Áreas Especializadas de C – declarações, definições e acessibilidade, typedef, constantes e voláteis, e pontos de sequência
- Programas Completos em C – juntando tudo, argumentos, interpretando os argumentos dos programas, um programa de correspondência de padrões e um exemplo mais ambicioso
li>O Pré-processador – como funciona o pré-processador, e diretrizes
li>Bibliotecas – diagnóstico, manipulação de caracteres, localização, limites, funções matemáticas, saltos não-locais, manipulação de sinais, números variáveis de argumentos, entrada e saída, E/S formatada, E/S de caracteres, E/S sem formatação, funções de acesso aleatório, utilidades gerais, manipulação de strings, e data e hora
Os autores dão permissão ao leitor para fazer o que quiser com o livro desde que haja um reconhecimento dos autores e dos seus direitos autorais. Pelo que Mike Banahan confirmou, o livro está efectivamente sob a licença Creative Commons.
Leia o livro
2. C Elements of Style by Steve Oualline
C Elements of Style é um guia útil que cobre os princípios do bom estilo de programação, ensinando aos programadores de C e C++ como escrever código que pode ser facilmente lido, compreendido e mantido por outros. Se você é um estudante ou programador profissional, você se beneficiará de muitas dicas e técnicas para construir um código elegante e confiável.
O livro tenta mostrar aos leitores como construir um bom estilo de programação no seu código. Como o computador lê apenas o código e o humano se concentra nos comentários, um bom estilo de programação pertence a ambas as partes de um programa.
O objetivo final é construir um código bem desenhado e bem escrito que não só faça um uso eficaz do computador, mas também contenha comentários construídos cuidadosamente para ajudar os humanos a compreendê-lo. Esta condição irá facilitar o processo de depuração, manutenção e aperfeiçoamento, o que irá eventualmente melhorar a legibilidade, portabilidade, confiabilidade e manutenção do seu código.
Inte, você encontrará diretrizes para escrever comentários, título do programa, determinar nomes de variáveis, formatação de declaração, detalhes da declaração, escrever pré-processador, organizar diretórios e criar makefile.
Este livro é publicado sob a Licença Creative Commons.
Leia o livro
3. Uma Introdução ao GCC por Brian Gough
Um Introdução ao GCC fornece uma introdução aos Compiladores GNU C e C++, gcc e g++, que são parte da Coleção de Compiladores GNU (GCC).
Após ler este livro, você saberá como compilar um programa, usar opções básicas de compilação para otimização e depuração.
Este livro explica como usar o compilador em si. Baseado em anos de observação de perguntas postadas em listas de discussão, ele guia o leitor diretamente para as opções importantes do GCC. O livro não ensina C.
Chapters:
- Introduction
- Compilar um programa em C – descreve como compilar programas em C usando o gcc. Os programas podem ser compilados a partir de um único arquivo fonte ou de múltiplos arquivos fonte, e podem usar bibliotecas de sistema e arquivos de cabeçalho
- Opções de compilação – descreve outras opções de compilação comumente usadas disponíveis no GCC. Estas opções controlam recursos como os caminhos de busca usados para localizar bibliotecas e incluem arquivos, o uso de avisos e diagnósticos adicionais, macros de pré-processador e dialetos de linguagem C
- Usando o pré-processador – descreve o uso do pré-processador cpp do GNU C, que é parte do pacote GCC. O pré-processador expande as macros nos arquivos fonte antes que elas sejam compiladas. Ele é automaticamente chamado sempre que o GCC processa um programa em C ou C++
- Compilar para depuração – fornece a opção -g de depuração para armazenar informações adicionais de depuração em arquivos objetos e executáveis. Esta informação de depuração permite que erros sejam rastreados de uma instrução específica da máquina até a linha correspondente no arquivo fonte original
- Compilação com otimização – GCC é um compilador otimizador. Ele fornece uma ampla gama de opções que visam aumentar a velocidade, ou reduzir o tamanho dos arquivos executáveis que ele gera
- Compilar um programa em C++ – descreve como usar o GCC para compilar programas escritos em C++, e as opções de linha de comando específicas daquela linguagem
- Opções específicas da plataforma – descreve algumas das opções disponíveis para plataformas comuns: Opções Intel e AMD x86, extensões x86, processadores x86 de 64 bits, opções DEC Alpha, opções SPARC, opções POWER/PowerPC, suporte a multi-arquitetura, e problemas de ponto flutuante
- Problemas – o GCC fornece várias opções de ajuda e diagnóstico para ajudar a solucionar problemas no processo de compilação
- Ferramentas relacionadas ao compilador – descreve uma série de ferramentas que são úteis em combinação com o GCC. Estas incluem o arquivador GNU ar, para a criação de bibliotecas, e os programas de teste de perfil e cobertura GNU, gprof e gcov
- Como o compilador funciona – descreve com mais detalhes como o GCC transforma os arquivos fonte em um arquivo executável. Compilação é um processo multi-estágio envolvendo várias ferramentas, incluindo o próprio Compilador GNU (através dos frontends gcc ou g++), o GNU Assembler as, e o GNU Linker ld. O conjunto completo de ferramentas usadas no processo de compilação é referido como toolchain
- Examining compiled files – descreve várias ferramentas úteis para examinar o conteúdo de arquivos executáveis e arquivos objeto
- Mensagens de erro comuns – descreve as mensagens de erro e aviso mais freqüentes produzidas pelo gcc e g++. Cada caso é acompanhado por uma descrição das causas, um exemplo e sugestões de possíveis soluções
- Obter ajuda – se os leitores encontrarem um problema não coberto por esta introdução, existem vários manuais de referência que descrevem GCC e tópicos relacionados à linguagem em mais detalhes
Este livro é publicado sob a GNU Free Documentation License.
Leia o livro
Página seguinte: Página 2 – Uma Introdução a C & GUI e mais livros
Páginas neste artigo:
Página 1 – O Livro C e mais livros
Página 2 – Uma Introdução a C & Programação GUI e mais livros
Página 3 – O Manual de Referência C GNU e mais livros
Página 4 – C Essencial e mais livros
Página 5 – Guia de Programação em Rede do Beej e mais livros
Todos os livros desta série:
Free Programming Books | |
---|---|
Java | General-purpose, concurrent, class-based, object-oriented, high-level language |
C | General-purpose, procedural, portable, high-level language |
Python | General-purpose, structured, powerful language |
C++ | General-purpose, portable, free-form, multi-paradigm language |
C# | Combines the power and flexibility of C++ with the simplicity of Visual Basic |
JavaScript | Interpreted, prototype-based, scripting language |
PHP | PHP has been at the helm of the web for many years |
HTML | HyperText Markup Language |
SQL | Access and manipulate data held in a relational database management system |
Ruby | General purpose, scripting, structured, flexible, fully object-oriented language |
Assembly | As close to writing machine code without writing in pure hexadecimal |
Swift | Powerful and intuitive general-purpose programming language |
Groovy | Powerful, optionally typed and dynamic language |
Go | Compiled, statically typed programming language |
Pascal | Imperative and procedural language designed in the late 1960s |
Perl | High-level, general-purpose, interpreted, scripting, dynamic language |
R | De facto standard among statisticians and data analysts |
COBOL | Common Business-Oriented Language |
Scala | Modern, object-functional, multi-paradigm, Java-based language |
Fortran | The first high-level language, using the first compiler |
Scratch | Visual programming language designed for 8-16 year-old children |
Lua | Designed as an embeddable scripting language |
Logo | Dialect of Lisp that features interactivity, modularity, extensibility |
Rust | Ideal for systems, embedded, and other performance critical code |
Lisp | Unique features – excellent to study programming constructs |
Ada | ALGOL-like programming language, extended from Pascal and other languages |
Haskell | Standardized, general-purpose, polymorphically, statically typed language |
Scheme | A general-purpose, functional language descended from Lisp and Algol |
Prolog | A general purpose, declarative, logic programming language |
Forth | Imperative stack-based programming language |
Clojure | Dialect of the Lisp programming language |
Julia | High-level, high-performance language for technical computing |
Awk | Versatile language designed for pattern scanning and processing language |
CoffeeScript | Transcompiles into JavaScript inspired by Ruby, Python and Haskell |
BASIC | Beginner’s All-purpose Symbolic Instruction Code |
Erlang | General-purpose, concurrent, declarative, functional language |
VimL | Powerful scripting language of the Vim editor |
OCaml | The main implementation of the Caml language |
ECMAScript | Best known as the language embedded in web browsers |
Bash | Shell and command language; popular both as a shell and a scripting language |
LaTeX | Professional document preparation system and document markup language |
TeX | Markup and programming language – create professional quality typeset text |
Arduino | Inexpensive, flexible, open source microcontroller platform |
TypeScript | Strict syntactical superset of JavaScript adding optional static typing |
Elixir | Relatively new functional language running on the Erlang virtual machine |
F# | Uses functional, imperative, and object-oriented programming methods |
Tcl | Dynamic language based on concepts of Lisp, C, and Unix shells |
Factor | Dynamic stack-based programming language |
Eiffel | Object-oriented language designed by Bertrand Meyer |
Agda | Dependently typed functional language based on intuitionistic Type Theory |
Icon | Wide variety of features for processing and presenting symbolic data |
XML | Rules for defining semantic tags describing structure ad meaning |
Vala | Object-oriented language, syntactically similar to C# |
Standard ML | General-purpose functional language characterized as “Lisp with types” |
D | General-purpose systems programming language with a C-like syntax |
Dart | Client-optimized language for fast apps on multiple platforms |
Markdown | Plain text formatting syntax designed to be easy-to-read and easy-to-write |
Kotlin | More modern version of Java |
Objective-C | Object-oriented language that adds Smalltalk-style messaging to C |
PureScript | Small strongly, statically typed language compiling to JavaScript |
ClojureScript | Compiler for Clojure that targets JavaScript |
VHDL | Hardware description language used in electronic design automation |