Use_a_Cabeca_C_.pdf
January 24, 2017 | Author: 1028freitas | Category: N/A
Short Description
Download Use_a_Cabeca_C_.pdf...
Description
Primeiros Elogios ao Use a Cabeça! C “Use a Cabeça! C possivelmente pode acabar sendo o melhor livro de C de todos os tempos. Eu poderia facilmente visualizá-lo se tornando o livro didático padrão para curso de faculdade sobre C. A maioria dos livros sobre programação segue um caminho relativamente previsível. Este livro, por outro lado, utiliza uma abordagem completamente diferente. Ele te ensina a ser um verdadeiro programador em C.” — Dave Kitabjian, diretor de Desenvolvimento de Software, NetCarrier Telecom “ Use a Cabeça! C é uma introdução acessível e animada à programação em C, no clássico estilo da série Use a Cabeça!. Figuras, piadas, exercícios e laboratórios guiam o leitor suavemente, porém de forma constante, pelos fundamentos de C... antes de avançar para tópicos mais avançados de programação em sistemas Posix e Linux.” — Vince Milner, desenvolvedor de software
Elogios a outros livros da série “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 “É rápido, irreverente, divertido e interessante. Tome cuidado – você poderá realmente aprender alguma coisa!” — Ken Arnold, ex-engenheiro sênior da Sun Microsystems; coautor (com James Gosling, criador da linguagem Java) do The Java Programming Language “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 “A admirável clareza, o humor e as doses significativas de inteligência tornam o livro ideal para resolução de problemas, até mesmo para não programadores.” — Cory Doctorow, coeditor de Boing Boing, autor de Down and OUt in the Magic Kingdom e Someone Comes to Town, Someone Leaves Town
Elogios a outros livros da série “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 “O que antes era um processo de aprendizado demorado de tentativa e erro, agora é reduzido nitidamente em um livro cativante.” — Mike Davidson, CEO, Newsvine, Inc. “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 “Geralmente quando leio um livro ou artigo sobre padrões de projetos, preciso ocasionalmente optar por medidas drásticas para me certificar de que estou prestando atenção. Não com este livro. Por mais estranho que pareça, ele faz com que seja divertido aprender. 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 Não seria maravilhoso se existisse um livro sobre C que fosse mais fácil de entender do que o manual de operação de um ônibus espacial? Acho que é apenas um sonho...
David Griffiths Dawn Griffiths
Rio de Janeiro, 2013
Para Dennis Ritchie (1941-2011), o pai do C.
os autores
Autores de Use a Cabeça! C
s
David Griffith
Dawn Griffiths
David Griffiths começou a programar aos 12 anos de idade, quando viu um documentário sobre o trabalho de Seymour Papert. Aos 15, ele escreveu uma implementação da linguagem computacional de Papert, o LOGO. Depois de estudar matemática na universidade, começou a escrever código para computadores e artigos de revista para humanos. Ele trabalhou como coach de metodologias ágeis, programador e atendente de garagem, mas não nesta ordem. David Griffiths pode escrever código em mais de dez linguagens, e prosa em apenas uma, e, quando não está escrevendo, programando, ou trabalhando como coach, ele passa a maior parte do seu tempo livre com sua adorável esposa – e coautora, – Dawn. Antes de escrever Use a Cabeça! C, David escreveu dois outros livros Use a Cabeça!: Use a Cabeça! Rails e Use a Cabeça! Programação.
viii
Você pode seguir o David no Twitter: http://twitter.com/dogriffiths.
Dawn Griffiths começou a vida matemática em uma universidade top do Reino Unido, onde foi premiada como primeira da classe de licenciatura. Ela passou a seguir uma carreira em desenvolvimento de software e tem mais de quinze anos de experiência na indústria de Tecnologia da Informação. Antes de juntar forças com David em Use a Cabeça! C, Dawn escreveu outros dois livros Use a Cabeça! (Use a Cabeça! Estatística e Use a Cabeça! Geometria 2D) e também trabalhou em muitos outros livros da série. Quando Dawn não está trabalhando, você a verá aprimorando suas habilidades de Tai Chi, correndo, confeccionando renda de bilro, ou cozinhando. Ela também curte viajar e passar o tempo com seu marido, David.
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
3
Criando ferramentas pequenas: Faça uma coisa e faça-a bem
103
83
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? A quem se destina este livro?
xxviii
Sabemos o que você está pensando
xxix
Metacognição:
xxxi
Leve sua mente à submissão
xxxiii
Leia-me
xxxiv
Revisão técnica
xxxvi
Agradecimentos
xxxvii você está aqui !
ix
conteúdo
1
começando com c 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. C é uma linguagem para programas pequenos e rápidos
2
Mas o que um programa C completo parece?
5
Mas como você executa o programa?
x
9
Dois tipos de comandos
14
Aqui está o código até agora
15
Contar cartas? Em C?
17
Há mais em booleanos que igual...
18
Como está o código agora?
25
Usando o velho switch
26
Às vezes, uma vez não é o bastante...
29
Loops frequentemente usam a mesma estrutura...
30
Use break para fugir...
31
Sua Caixa de Ferramentas C
40
conteúdo
2
memória e ponteiros Para o que está apontando? Se você realmente quer arrasar com C, você precisa entender como C gerencia memória. A linguagem C lhe dá muito mais controle sobre como seu programa usa a memória do computador. Neste capítulo, você irá abaixo da superfície e verá exatamente o que acontece quando lê e cria variáveis. Você aprenderá como arrays funcionam, como evitar desagradáveis desastres de memória e, mais importante que tudo, verá como dominar ponteiros e endereçamento de memória é chave para se tornar um programador fera em C.
2
GLOBAIS 1
CONSTANTES
Código C inclui ponteiros
42
Escavando na memória
43
Navegue com ponteiros
44
Tente passar um ponteiro para a variável
47
Usando ponteiros de memória
48
Como passar uma string para uma função?
53
Variáveis array são como ponteiros...
54
O que o computador pensa quando executa seu código
55
Mas variáveis array não são exatamente ponteiros.
59
Porque arrays na realidade começam no 0
61
Por que ponteiros têm tipos?
62
Usando ponteiros para entrada de dados
65
Tome cuidado com scanf()
66
fgets() é uma alternativa para scanf()
67
String literais nunca podem ser atualizadas.
72
Se for modificar uma string, faça uma cópia.
74
Memorizador de memória
80
Sua Caixa de Ferramentas C
81
LINK A6, #VARSIZE MOVEM.L DO-D7/A1-A5, (SP) MOVE.L SP, SAVESTK(A6) MOVE.L SP, SAVEAS(A6) MOVE.L GRAFGLOBALS(A5), AO
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(). Procura-se Frank desesperadamente Crie um array de arrays
85
Encontre strings contendo o texto de busca
86
Usando a função strstr()
89
Tá na hora de revisar o código
94
Array de arrays vs. array de ponteiros Sua Caixa de Ferramentas C
xii
84
98 101
conteúdo
3
criando ferramentas pequenas Faça uma coisa, e faça-a bem Todo sistema operacional inclui ferramentas pequenas. Ferramentas pequenas escritas em C realizam pequenas tarefas especializadas, tais como ler e escrever arquivos ou filtrar dados. Se quiser realizar tarefas mais complexas, pode até ligar diversas ferramentas juntas. Mas como estas ferramentas pequenas são criadas? Neste capítulo, você verá a matéria-prima para a fabricação das ferramentas pequenas. Você descobrirá como controlar as opções da linha de comando e como gerenciar tráfego de informação e redirecionamento, criando ferramentas em pouco tempo. Ferramentas pequenas podem solucionar grandes problemas
104
Aqui está como o programa deveria funcionar
108
Mas você não está usando arquivos...
109
Pode usar redirecionamento
110
Apresentando o Erro Padrão
120
Por default, o Erro Padrão é enviado ao display
121
fprintf() imprime para um fluxo de dados
122
Vamos atualizar o código para usar fprintf()
123
Ferramentas pequenas são flexíveis
128
Não mude a ferramenta geo2json
129
Uma tarefa diferente precisa de uma ferramenta diferente.
130
Ligue sua entrada e saída com um pipe
131
A ferramenta bermuda
132
Mas e se quiser enviar output para mais de um arquivo?
137
Crie seus próprios fluxos de dados
138
Existe mais na main()
141
Deixe a biblioteca fazer o seu trabalho
149
Sua Caixa de Ferramentas C
156
xiii
conteúdo
4
usando múltiplos arquivos fonte 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. Seu guia rápido para tipos de dados
xiv
162
Não coloque algo grande em algo pequeno
163
Use casting para colocar floats em números inteiros
164
Essa não... os atores sem emprego...
168
Vamos ver o que aconteceu com o código
169
Compiladores não gostam de surpresas
171
Separe a declaração da definição
173
Criando seu primeiro arquivo header
174
Se tiver características em comum...
182
Pode dividir o código em arquivos separados
183
Compilação por trás das cenas
184
O código compartilhado precisa de seu próprio arquivo header
186
Não é física quântica… ou será que é?
189
Não recompile cada arquivo
190
Primeiro compile a fonte em arquivos objetos
191
É difícil manter o controle sob os arquivos
196
Automatize seus builds com a ferramenta make
198
Como make funciona
199
Mostre seu código para make com makefile.
200
Sua Caixa de Ferramentas C
206
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
5
structs, unions e bitfields Criando suas próprias estruturas A maioria das coisas na vida é mais complexa que um simples número. Até agora, temos visto os tipos básicos de dados da linguagem C, mas e se você quiser ir além dos números e segmentos de texto e modelar as coisas no mundo real? structs permitem que você modele complexidades do mundo real através da criação de suas próprias estruturas. Neste capítulo, você aprenderá como combinar os tipos básicos de dados em structs e até manejar as incertezas da vida com unions. E, se quiser um simples sim ou não, bitfields podem ser exatamente o que você precisa.
xvi
Às vezes, você precisa distribuir muitos dados.
218
Conversa de cubículo
219
Crie seu próprio tipo estruturado de dados com um struct
220
Só dê-lhes o peixe
221
Leia os campos do struct com o operador “.”
222
É possível colocar um struct dentro do outro?
227
Como você atualiza um struct?
236
O código está clonando a tartaruga
238
Você precisa de um ponteiro para o struct
239
(*t).age vs. *t.age
240
Às vezes, o mesmo tipo de coisa precisa de tipos diferentes de dados.
246
Um union deixa você reutilizar espaço de memória.
247
Como se usa o union?
248
Uma variável enum armazena um símbolo
255
Às vezes, você quer controlar o nível de bits.
261
Bitfields armazenam uma quantidade customizável de bits
262
Sua Caixa de Ferramentas C
266
conteúdo
6
estruturas de dados e memória dinâmica 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ípioschave, 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. Você precisa de armazenamento flexível?
268
Listas encadeadas são como correntes de dados.
269
Listas encadeadas permitem inserções.
270
Crie uma estrutura recursiva
271
Crie ilhas em C...
272
Inserindo valores na lista
273
Use o heap para armazenamento dinâmico
278
Devolva a memória quando terminar
279
Peça memória com malloc()...
280
Vamos consertar o código usando a função strdup()
286
Libere a memória ao terminar
290
Uma visão geral do sistema SIPS
300
Software Forense: usando valgrind
302
Use valgrind repetidamente para coletar mais evidência.
303
Olhe a evidência
304
A solução em julgamento
307
Sua Caixa de Ferramentas C
309
xvii
conteúdo
7
funções avançadas Aumente suas funções para onze Funções básicas são ótimas, mas às vezes você precisa de mais. Até agora, você tem se concentrado no básico. Mas e se precisar de ainda mais poder e flexibilidade para conseguir o que quer? Neste capítulo, você verá como aumentar o QI do seu código passando funções como parâmetros. Você descobrirá como organizar as coisas com funções de comparação. E, finalmente, descobrirá como fazer seu código muito flexível com funções com argumentos variáveis.
xviii
Procurando o Sr. Certo...
312
Passando código a uma função
316
Você precisa dizer para find() o nome de uma função.
317
Todo nome de função é um ponteiro para a função...
318
...mas não existe tipo de dados function
319
Como criar ponteiros para funções
320
Organize-se com a Biblioteca Padrão C
325
Use os ponteiros para funções para pôr as coisas em ordem.
326
Automatizando as cartas da agência de namoro
334
Crie um array de ponteiros para funções
338
Faça sua função flexível
343
Sua Caixa de Ferramentas C
350
conteúdo
8
bibliotecas estáticas e dinâmicas 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. Código que você pode levar ao banco
352
Maior e menor são para headers padrão
354
Mas e se quiser compartilhar código?
355
Compartilhando arquivos header .h
356
Compartilhe arquivos de objetos .o usando o pathname completo
357
Um depósito contém arquivos .o.
358
Crie um arquivo com o comando ar...
359
Finalmente, compile seus outros programas.
360
A Academia Use a Cabeça! está virando global.
365
Calculando calorias
366
Mas as coisas são um pouco mais complexas...
369
Programas são compostos de vários pedaços...
370
Ligações dinâmicas acontecem durante o tempo de execução
372
Dá para fazer uma ligação .a durante o tempo de execução?
373
Primeiro crie um arquivo objeto
374
O nome que der para sua biblioteca dinâmica depende da sua plataforma.
375
Sua Caixa de Ferramentas C
387
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
processos e chamadas de sistema 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. Chamadas ao sistema são sua conexão ao SO
398
Aí alguém invadiu o sistema...
402
Segurança não é o único problema
403
As funções exec() lhe dão mais controle
404
Há várias funções exec()
405
As funções array: execv(), execpv(), execve()
406
Passando variáveis de ambiente
407
A maioria das chamadas de sistema cometem o mesmo erro
408
Leia as notícias com RSS
416
exec() é o fim da linha para o seu programa
420
Executando um processo filho com fork() + exec()
421
Sua Caixa de Ferramentas C
427
xxi
conteúdo
10
comunicação entre processos É 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. Redirecionando a entrada e a saída
430
Olhando por dentro de um processo típico
431
Redirecionamento simplesmente substitui o fluxo de dados 432
xxii
fileno() te diz qual é o descritor
433
Às vezes, você precisa esperar...
438
Fique em contato com seu filho
442
Conecte seus processos com pipes
443
Estudo de caso: abrindo histórias em um navegador
444
No filho
445
No pai
445
Abrindo uma página web em um navegador
446
A morte de um processo
451
Pegando os sinais e executando o seu código
452
sigactions são registradas com sigaction()
453
Reescrevendo o código para usar um tratador de sinais
454
Use kill para enviar sinais
457
Enviando uma chamada de alerta para seu código
458
Sua Caixa de Ferramentas C
466
conteúdo
11
sockets e redes Não há lugar como 127.0.0.1 Programas em máquinas diferentes precisam conversar. Você aprendeu como usar I/O para se comunicar com arquivos e como processos na mesma máquina podem se comunicar entre si. Agora você vai precisar entrar em contato com o resto do mundo e aprender como escrever programas em C que podem conversar com outros programas do outro lado da rede e do outro lado do mundo. Ao terminar este capítulo, você será capaz de criar programas que atuam como servers e programas que atuam como clientes. O servidor de internet knock-knock
468
Visão geral do servidor knock-knock
469
BLAB: como servidores conversam com a internet
470
Um socket não é um típico fluxo de dados
472
Às vezes o servidor não inicializa corretamente.
476
O motivo pelo qual sua mãe sempre mandou verificar seu trabalho
477
Lendo dados do cliente
478
O servidor só pode falar com uma pessoa por vez.
485
Você pode fork() um processo para cada cliente
486
Escrevendo um cliente web
490
Clientes que mandam
491
Crie um socket para um endereço IP
492
getaddrinfo() pega endereços para domínios
493
Sua Caixa de Ferramentas C
500
xxiii
conteúdo
12
threads É 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. Tarefas são sequenciais... ou não...
502
...e processos não são sempre a solução
503
Processos simples fazem uma coisa de cada vez
504
Contrate funcionários extras: use threads
505
Como se criam threads?
506
Crie threads com pthread_create.
507
O código não é seguro para threads
512
Você precisa acrescentar sinais de trânsito
513
Use mutex como sinal de trânsito
514
Sua Caixa de Ferramentas C
521
A Variável compartilhada
B 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
i
sobras As dez melhores coisas (que não cobrimos) Mesmo depois de tudo aquilo, ainda tem mais um pouquinho. Tem mais algumas coisas que achamos que você precisa saber. Não nos sentiríamos bem ignorando-as, mesmo que precisem de uma breve menção, e nós realmente queremos lhe dar um livro que você possa carregar sem treinamento intensivo na academia do bairro. Então, antes de guardar este livro, leia estes acréscimos. 1. Operadores
ii
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 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
View more...
Comments