Escolar Documentos
Profissional Documentos
Cultura Documentos
Use A Cabeca C PDF
Use A Cabeca C PDF
“O livro de Kathy e Bert Use a Cabeça! Java transforma a página impressa em algo semelhante
a uma GUI (Interface Gráfica do Utilizador) que você já tenha visto. Com um jeito
bem-humorado e moderno, os autores fazem do aprendizado de Java uma experiência
envolvente do tipo ‘o que eles farão a seguir?’”
— Warren Keuffel, Revista Software Development
“Além do estilo interessante que o leva do saber nada para o status de guerreiro Java, Use a
Cabeça! Java inclui uma enorme quantidade de assuntos práticos que outros textos deixam
como o temido ‘exercício para o leitor...’. É inteligente, bem-humorado, moderno e prático
– e não há muitos livros didáticos que podem fazer tal alegação e cumpri-la, enquanto
também ensinam serialização de objetos e protocolos de redes.”
— Dr. Dan Russell, diretor de Pesquisa de Ciência e Experiência do Usuário,
IBM Centro de Pesquisa Almaden; instrutor de inteligência artificial,
Universidade de Stanford
“Me sinto como se mil quilos de livros fossem retirados de cima da minha cabeça.”
— Ward Cunningham, inventor do Wiki e fundador do Hillside Group
“Exatamente a coisa certa para o guru informal geek em cada um de nós. A referência certa
para estratégias práticas de desenvolvimento estimula meu cérebro, sem ter de me arrastar
por um monte de papo cansativo e antiquado de professor.”
— Travis Kalanick, fundador de Scour e Red Swoosh; membro do MIT TR100
“Existem livros que você compra, livros que você guarda, livros que você deixa na
escrivaninha e, graças a O’Reilly e à equipe Use a Cabeça!, há a penúltima categoria, os livros
Use a Cabeça!. São aqueles livros usados, em péssimo estado, que são levados para todo lugar.
Use a Cabeça! SQL está no topo da minha pilha. Cara, mesmo o PDF que tenho para revisão
está esfarrapado e rasgado.”
— Bill Sawyer, gerente de Currículo ATG, Oracle
“Eu recebi o livro ontem e comecei a lê-lo... e não consegui parar. Isso definitivamente é
très ‘maneiro’. É divertido, porém transmite muito conteúdo, e vai direto ao assunto. Estou
realmente impressionado.”
— Erich Gamma, engenheiro distinto da IBM e coautor de Design Patterns
“Um dos livros mais engraçados e inteligentes sobre design de software que já li.”
— Aaron LaBerge, VP Technology, ESPN.com
“Design elegante é a essência de cada capítulo aqui, cada conceito transmitido com doses
iguais de pragmatismo e humor.”
— Ken Goldstein, vice-presidente executivo, Disney Online
“Eu ! Use a Cabeça! HTML com CSS e XHTML – ele ensina tudo o que você precisa aprender
em um formato revestido de diversão.”
— Sally Applin, designer IU e artista
Enquanto outros livros estão dizendo ‘Bueller...Bueller...Bueller’, este livro está no carro
alegórico dizendo ‘Shake it up, baby!’”
— Eric Wuehler
“Eu literalmente amo este livro. De fato, eu o beijei na frente da minha mulher.”
— Satish Kumar
Outros livros da série Use a Cabeça!
Use a Cabeça! Ajax Profissional
Use a Cabeça! Álgebra
Use a Cabeça! Análise e Projeto Orientado ao Objeto
Use a Cabeça! Análise de Dados
Use a Cabeça! C# – 2ª Edição
Use a Cabeça! Desenvolvimento de Software
Use a Cabeça! Desenvolvendo para iPhone & iPad
Use a Cabeça! Estatística
Use a Cabeça! Excel
Use a Cabeça! Física
Use a Cabeça! Geometria 2D
Use a Cabeça! Java – 2ª Edição
Use a Cabeça! JavaScript
Use a Cabeça! jQuery
Use a Cabeça! Mobile Web
Use a Cabeça! Padrões de Projetos – 2ª Edição
Use a Cabeça! Programação
Use a Cabeça! PHP & MySQL
Use a Cabeça! PMP
Use a Cabeça! Python
Use a Cabeça! Rails – 2ª Edição
Use a Cabeça! Redes de Computadores
Use a Cabeça! Servlets & JSP – 2ª Edição
Use a Cabeça! SQL
Use a Cabeça! Web Design
Use a Cabeça! C
David Griffiths
Dawn Griffiths
s
David Griffith
Dawn Griffiths
viii
conteúdo
Conteúdo Resumido
Introdução xxvii
1 Começando com c: Mergulhando de cabeça 1
2 Memória e ponteiros: Para o que está apontando? 41
2.5 Strings: Teoria de strings 83
3 Criando ferramentas pequenas: Faça uma coisa e faça-a bem 103
4 Usando múltiplos arquivos fonte: Desmonte e reconstrua 157
C Lab 1: Arduino 207
5 Structs, unions e bitfields: Criando suas próprias estruturas 217
6 Estruturas de dados e memória dinâmica: Construindo pontes 267
7 Funções avançadas: Aumente suas funções para onze 311
8 Bibliotecas estáticas e dinâmicas: Código Hot-Swappable 351
C Lab2: OpenCV 389
9 Processos e chamadas de sistema: Quebrando limites 397
10 Comunicação entre processos: É bom conversar. 429
11 Sockets e redes: Não há lugar como 127.0.0.1 467
12 Threads: É um mundo paralelo 501
C Lab 3: Blasteroids 523
i Sobras: As dez melhores coisas (que não cobrimos) 539
ii Tópicos C: Revisão geral 553
Conteúdo
Introdução
Seu cérebro sobre C. Aqui você está tentando aprender algo;
enquanto isso, aqui está o seu cérebro lhe fazendo o favor de se certificar de
que o aprendizado não role. Seu cérebro está pensando: “É melhor deixar
espaço para coisas mais importantes, como quais animais selvagens evitar e
se praticar snowboarding pelado é uma má ideia”. Então, como você engana
seu cérebro para que ele pense que sua vida depende de conhecer C?
começando com c
1 Mergulhando de cabeça
Quer entrar de cabeça no computador? Precisa escrever um
código de alta performance para um novo jogo? Programar um Arduino?
Ou usar aquela biblioteca de terceiros avançada no seu app de iPhone?
Se for o caso, então C está aqui para ajudar. C funciona em um nível muito
mais baixo que outras linguagens; então, entender C te dá uma ideia
muito melhor do que realmente está acontecendo. C até pode te ajudar a
entender melhor outras linguagens. Então, mergulhe de cabeça, pegue seu
compilador, e você começará em pouco tempo.
x
conteúdo
memória e ponteiros
xi
conteúdo
strings
Teoria de strings
Existe mais em strings do que apenas a leitura. Você viu
como strings em C são, na realidade, arrays de char, mas o que C te deixa
fazer com elas? Isto é, quando string.h entra em jogo. string.h é uma parte
da Biblioteca Padrão do C que é dedicada à manipulação de strings. Se
quiser concatenar strings, copiar uma string para outra ou comparar duas
strings, as funções em string.h estão à sua disposição. Neste capítulo, verá
como criar um array de strings e, depois, verá exatamente como realizar
buscas em strings usando a função strstr().
xii
conteúdo
xiii
conteúdo
4 Desmonte e reconstrua
Se for criar um grande programa, você não quer
grandes arquivos fonte. Você consegue imaginar como seria difícil
e demorado fazer a manutenção de um único arquivo fonte para um programa
a nível empresarial? Neste capítulo, você aprenderá como C permite quebrar
seu código-fonte em segmentos pequenos e gerenciáveis e, depois,
reconstruí-los em um grande programa. Durante o caminho, aprenderá um
pouco mais sobre sutilezas de tipos de dados e conhecerá seu novo melhor
amigo: make.
xiv
conteúdo
C Lab 1
Arduino
Você sempre quis que suas plantas pudessem
te dizer quando precisam ser regadas? Bem,
com Arduino elas podem! Neste lab, você
criará um monitor de planta alimentado por
Arduino todo programado em C.
xv
conteúdo
xvi
conteúdo
6 Construindo pontes
Às vezes, um único struct simplesmente não é
o suficiente. Para modelar requisitos complexos de dados, você
frequentemente precisa juntar structs. Neste capítulo, você verá
como usar ponteiros struct para ligar tipos customizados de dados em
estruturas de dados grandes e complexas. Você explorará princípios-
chave, criando listas encadeadas. Você também verá como fazer com que
suas estruturas de dados aceitem quantidades flexíveis de dados, alocando
memória dinamicamente no heap e liberando a memória quando tiver
terminado. E, se a boa economia doméstica ficar complicada, também
aprenderá como valgrind pode ajudar.
xvii
conteúdo
funções avançadas
xviii
conteúdo
8 Código Hot-Swappable
Você já viu o poder de bibliotecas padrão. Agora chegou
a hora de usar este poder para o seu código. Neste capítulo, verá como
criar suas próprias bibliotecas e reutilizar o mesmo código em vários
programas. E mais, aprenderá como compartilhar código durante o tempo
de execução com bibliotecas dinâmicas e os segredos dos programadores
gurus. E, ao terminar o capítulo, você será capaz de escrever código escalável
que poderá ser dimensionado e gerenciado de forma simples e eficiente.
xix
conteúdo
C Lab2
OpenCV
Imagine se seu computador pudesse ficar de
olho na sua casa, enquanto você está fora, e
te dizer quem tem perambulado por aí. Neste
lab, você criará um detector de intrusos à
base de C usando a astúcia do OpenCV.
xx
conteúdo
9 Quebrando limites
Está na hora de pensar fora da caixa Você já sabe que pode
criar aplicativos complexos conectando ferramentas pequenas na linha de
comando. Mas, e se quiser usar outros programas do seu próprio código?
Neste capítulo, você aprenderá como usar serviços do sistema para criar e
controlar processos. Com isso, seus programas terão acesso a e-mail, web e
quaisquer outras ferramentas que tenha instalado. Ao terminar este capítulo,
você terá a capacidade de ir além do C.
xxi
conteúdo
10 É bom conversar
Criar processos é apenas metade da história E se você
quiser controlar o processo quando este estiver em execução? E se quiser
enviar dados para ele? Comunicação entre processos os deixa realizar o
trabalho em conjunto. Vamos te mostrar como multiplicar o poder do seu
código deixando ele conversar com outros programas no seu sistema.
xxii
conteúdo
sockets e redes
xxiii
conteúdo
threads
12 É um mundo paralelo
Frequentemente programas precisam fazer diversas
coisas ao mesmo tempo. Threads POSIX podem fazer seu código
mais interativo, separando alguns segmentos de código para serem
executados em paralelo. Mas tenha cuidado! Threads são ferramentas
poderosas, mas você não quer que elas entrem em colisão. Neste capítulo,
você aprenderá como colocar sinais de trânsito e marcadores de pista
que irão prevenir um acidente de código. No final, você saberá como criar
threads POSIX e como usar mecanismos de sincronização para proteger a
autenticidade de dados sensitivos.
A Variável
compartilhada
xxiv
conteúdo
C Lab 3
Blasteroids
Neste lab, você fará um tributo a um dos
videogames mais populares e de longa
vida entre todos. Está na hora de criar
Blasteroids!
xxv
conteúdo
sobras
1. Operadores 540
2. Diretivas do pré-processador 542
3. A palavra-chave static 543
4. Qual o tamanho das coisas 544
5. Testes automatizados 545
6. Mais sobre gcc 546
7. Mais sobre make 548
8. Ferramentas de desenvolvimento 550
9. Criando GUIs 551
10. Material de referência 552
Tópicos C
ii Revisão geral
Você já quis que todos aqueles ótimos fatos sobre C
estivessem em um só lugar? Essa é uma reunião de todos os
tópicos e princípios de C que apresentamos no livro. Dê uma olhada
e veja se consegue se lembrar de todos. Cada fato tem o capítulo
de origem ao lado, então fica fácil procurar a referência se precisar
de um lembrete. Talvez você até queira destacar estas páginas
para colocar na sua parede.
xxvi