Sie sind auf Seite 1von 25

Primeiros Elogios ao Use a Cabea!

C
Use a Cabea! C possivelmente pode acabar sendo o melhor livro de C de todos os tempos. Eu poderia facilmente visualiz-lo se tornando o livro didtico padro para curso de faculdade sobre C. A maioria dos livros sobre programao segue um caminho relativamente previsvel. 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 Cabea! C uma introduo acessvel e animada programao em C, no clssico estilo da srie Use a Cabea!. Figuras, piadas, exerccios e laboratrios guiam o leitor suavemente, porm de forma constante, pelos fundamentos de C... antes de avanar para tpicos mais avanados de programao em sistemas Posix e Linux. Vince Milner, desenvolvedor de software

Elogios a outros livros da srie


O livro de Kathy e Bert Use a Cabea! Java transforma a pgina impressa em algo semelhante a uma GUI (Interface Grfica do Utilizador) que voc j tenha visto. Com um jeito bem-humorado e moderno, os autores fazem do aprendizado de Java uma experincia envolvente do tipo o que eles faro a seguir? Warren Keuffel, Revista Software Development Alm do estilo interessante que o leva do saber nada para o status de guerreiro Java, Use a Cabea! Java inclui uma enorme quantidade de assuntos prticos que outros textos deixam como o temido exerccio para o leitor.... inteligente, bem-humorado, moderno e prtico e no h muitos livros didticos que podem fazer tal alegao e cumpri-la, enquanto tambm ensinam serializao de objetos e protocolos de redes. Dr. Dan Russell, diretor de Pesquisa de Cincia e Experincia do Usurio, IBM Centro de Pesquisa Almaden; instrutor de inteligncia artificial, Universidade de Stanford rpido, irreverente, divertido e interessante. Tome cuidado voc poder realmente aprender alguma coisa! Ken Arnold, ex-engenheiro snior 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 cabea. Ward Cunningham, inventor do Wiki e fundador do Hillside Group Exatamente a coisa certa para o guru informal geek em cada um de ns. A referncia certa para estratgias prticas de desenvolvimento estimula meu crebro, 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, graas a OReilly e equipe Use a Cabea!, h a penltima categoria, os livros Use a Cabea!. So aqueles livros usados, em pssimo estado, que so levados para todo lugar. Use a Cabea! SQL est no topo da minha pilha. Cara, mesmo o PDF que tenho para reviso est esfarrapado e rasgado. Bill Sawyer, gerente de Currculo ATG, Oracle A admirvel clareza, o humor e as doses significativas de inteligncia tornam o livro ideal para resoluo de problemas, at mesmo para no 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 srie


Eu recebi o livro ontem e comecei a l-lo... e no consegui parar. Isso definitivamente trs maneiro. divertido, porm transmite muito contedo, e vai direto ao assunto. Estou realmente impressionado. Erich Gamma, engenheiro distinto da IBM e coautor de Design Patterns Um dos livros mais engraados 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 essncia de cada captulo aqui, cada conceito transmitido com doses iguais de pragmatismo e humor. Ken Goldstein, vice-presidente executivo, Disney Online Eu < Use a Cabea! HTML com CSS e XHTML ele ensina tudo o que voc precisa aprender em um formato revestido de diverso. Sally Applin, designer IU e artista Geralmente quando leio um livro ou artigo sobre padres de projetos, preciso ocasionalmente optar por medidas drsticas para me certificar de que estou prestando ateno. No com este livro. Por mais estranho que parea, ele faz com que seja divertido aprender. Enquanto outros livros esto dizendo Bueller...Bueller...Bueller, este livro est no carro alegrico 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 srie Use a Cabea!


Use a Cabea! Ajax Profissional Use a Cabea! lgebra Use a Cabea! Anlise e Projeto Orientado ao Objeto Use a Cabea! Anlise de Dados Use a Cabea! C# 2 Edio Use a Cabea! Desenvolvimento de Software Use a Cabea! Desenvolvendo para iPhone & iPad Use a Cabea! Estatstica Use a Cabea! Excel Use a Cabea! Fsica Use a Cabea! Geometria 2D Use a Cabea! Java 2 Edio Use a Cabea! JavaScript Use a Cabea! jQuery Use a Cabea! Mobile Web Use a Cabea! Padres de Projetos 2 Edio Use a Cabea! Programao Use a Cabea! PHP & MySQL Use a Cabea! PMP Use a Cabea! Python Use a Cabea! Rails 2 Edio Use a Cabea! Redes de Computadores Use a Cabea! Servlets & JSP 2 Edio Use a Cabea! SQL Use a Cabea! Web Design

Use a Cabea! C
No seria maravilhoso se existisse um livro sobre C que fosse mais fcil de entender do que o manual de operao 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 Cabea! C

David Griffith

Dawn Griffiths

David Griffiths comeou a programar aos 12 anos de idade, quando viu um documentrio sobre o trabalho de Seymour Papert. Aos 15, ele escreveu uma implementao da linguagem computacional de Papert, o LOGO. Depois de estudar matemtica na universidade, comeou a escrever cdigo para computadores e artigos de revista para humanos. Ele trabalhou como coach de metodologias geis, programador e atendente de garagem, mas no nesta ordem. David Griffiths pode escrever cdigo em mais de dez linguagens, e prosa em apenas uma, e, quando no est escrevendo, programando, ou trabalhando como coach, ele passa a maior parte do seu tempo livre com sua adorvel esposa e coautora, Dawn.
Antes de escrever Use a Cabea! C, David escreveu dois outros livros Use a Cabea!: Use a Cabea! Rails e Use a Cabea! Programao.

Voc pode seguir o David no Twitter: http://twitter.com/dogriffiths.

Dawn Griffiths comeou a vida matemtica 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 experincia na indstria de Tecnologia da Informao.
Antes de juntar foras com David em Use a Cabea! C, Dawn escreveu outros dois livros Use a Cabea! (Use a Cabea! Estatstica e Use a Cabea! Geometria 2D) e tambm trabalhou em muitos outros livros da srie. Quando Dawn no est trabalhando, voc a ver aprimorando suas habilidades de Tai Chi, correndo, confeccionando renda de bilro, ou cozinhando. Ela tambm curte viajar e passar o tempo com seu marido, David.

viii

contedo

Contedo Resumido
Introduo 1 2 2.5 3 4 5 6 7 8 9 10 11 12 i ii Comeando com c: Mergulhando de cabea Memria e ponteiros: Para o que est apontando? Strings: Teoria de strings Criando ferramentas pequenas: Faa uma coisa e faa-a bem Usando mltiplos arquivos fonte: Desmonte e reconstrua C Lab 1: Arduino Structs, unions e bitfields: Criando suas prprias estruturas Estruturas de dados e memria dinmica: Construindo pontes Funes avanadas: Aumente suas funes para onze Bibliotecas estticas e dinmicas: Cdigo Hot-Swappable C Lab2: OpenCV Processos e chamadas de sistema: Quebrando limites Comunicao entre processos: bom conversar. Sockets e redes: No h lugar como 127.0.0.1 Threads: um mundo paralelo C Lab 3: Blasteroids Sobras: As dez melhores coisas (que no cobrimos) Tpicos C: Reviso geral xxvii 1 41 83 103 157 207 217 267 311 351 389 397 429 467 501 523 539 553

Contedo
Introduo
Seu crebro sobre C. Aqui voc est tentando aprender algo;
enquanto isso, aqui est o seu crebro lhe fazendo o favor de se certificar de que o aprendizado no role. Seu crebro est pensando: melhor deixar espao para coisas mais importantes, como quais animais selvagens evitar e se praticar snowboarding pelado uma m ideia . Ento, como voc engana seu crebro para que ele pense que sua vida depende de conhecer C? A quem se destina este livro? Sabemos o que voc est pensando Metacognio: Leve sua mente submisso Leia-me Reviso tcnica Agradecimentos xxviii xxix xxxi xxxiii xxxiv xxxvi xxxvii voc est aqui X ix

contedo

comeando com c
Mergulhando de cabea
Quer entrar de cabea no computador? Precisa escrever um
cdigo de alta performance para um novo jogo? Programar um Arduino? Ou usar aquela biblioteca de terceiros avanada no seu app de iPhone? Se for o caso, ento C est aqui para ajudar. C funciona em um nvel muito mais baixo que outras linguagens; ento, entender C te d uma ideia muito melhor do que realmente est acontecendo. C at pode te ajudar a entender melhor outras linguagens. Ento, mergulhe de cabea, pegue seu compilador, e voc comear em pouco tempo. C uma linguagem para programas pequenos e rpidos Mas o que um programa C completo parece? Mas como voc executa o programa? Dois tipos de comandos Aqui est o cdigo at agora Contar cartas? Em C? H mais em booleanos que igual... Como est o cdigo agora? Usando o velho switch s vezes, uma vez no o bastante... Loops frequentemente usam a mesma estrutura... Use break para fugir... Sua Caixa de Ferramentas C 2 5 9 14 15 17 18 25 26 29 30 31 40

contedo

2
2

memria e ponteiros
Para o que est apontando?
Se voc realmente quer arrasar com C, voc precisa entender como C gerencia memria. A linguagem C lhe
d muito mais controle sobre como seu programa usa a memria do computador. Neste captulo, voc ir abaixo da superfcie e ver exatamente o que acontece quando l e cria variveis. Voc aprender como arrays funcionam, como evitar desagradveis desastres de memria e, mais importante que tudo, ver como dominar ponteiros e endereamento de memria chave para se tornar um programador fera em C. Cdigo C inclui ponteiros Escavando na memria Navegue com ponteiros Tente passar um ponteiro para a varivel Usando ponteiros de memria Como passar uma string para uma funo? Variveis array so como ponteiros... O que o computador pensa quando executa seu cdigo Mas variveis array no so exatamente ponteiros. Porque arrays na realidade comeam no 0 Por que ponteiros tm tipos? Usando ponteiros para entrada de dados Tome cuidado com scanf() fgets() uma alternativa para scanf() 42 43 44 47 48 53 54 55 59 61 62 65 66 67 72 74 80 81

GLOBAIS
CONSTANTES
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

String literais nunca podem ser atualizadas. Se for modificar uma string, faa uma cpia. Memorizador de memria Sua Caixa de Ferramentas C

xi

contedo

strings
Teoria de strings
Existe mais em strings do que apenas a leitura. Voc viu
como strings em C so, 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 Padro do C que dedicada manipulao de strings. Se quiser concatenar strings, copiar uma string para outra ou comparar duas strings, as funes em string.h esto sua disposio. Neste captulo, ver como criar um array de strings e, depois, ver exatamente como realizar buscas em strings usando a funo strstr(). Procura-se Frank desesperadamente Crie um array de arrays Encontre strings contendo o texto de busca Usando a funo strstr() T na hora de revisar o cdigo Array de arrays vs. array de ponteiros Sua Caixa de Ferramentas C 84 85 86 89 94 98 101

xii

contedo

criando ferramentas pequenas


Faa uma coisa, e faa-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 so criadas? Neste captulo, voc ver a matria-prima para a fabricao das ferramentas pequenas. Voc descobrir como controlar as opes da linha de comando e como gerenciar trfego de informao e redirecionamento, criando ferramentas em pouco tempo. Ferramentas pequenas podem solucionar grandes problemas Aqui est como o programa deveria funcionar Mas voc no est usando arquivos... Pode usar redirecionamento Apresentando o Erro Padro Por default, o Erro Padro enviado ao display fprintf() imprime para um fluxo de dados Vamos atualizar o cdigo para usar fprintf() Ferramentas pequenas so flexveis No mude a ferramenta geo2json Uma tarefa diferente precisa de uma ferramenta diferente. Ligue sua entrada e sada com um pipe A ferramenta bermuda Mas e se quiser enviar output para mais de um arquivo? Crie seus prprios fluxos de dados Existe mais na main() Deixe a biblioteca fazer o seu trabalho Sua Caixa de Ferramentas C 104 108 109 110 120 121 122 123 128 129 130 131 132 137 138 141 149 156

xiii

contedo

usando mltiplos arquivos fonte


Desmonte e reconstrua
Se for criar um grande programa, voc no quer grandes arquivos fonte. Voc consegue imaginar como seria difcil
e demorado fazer a manuteno de um nico arquivo fonte para um programa a nvel empresarial? Neste captulo, voc aprender como C permite quebrar seu cdigo-fonte em segmentos pequenos e gerenciveis 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 rpido para tipos de dados No coloque algo grande em algo pequeno Use casting para colocar floats em nmeros inteiros Essa no... os atores sem emprego... Vamos ver o que aconteceu com o cdigo Compiladores no gostam de surpresas Separe a declarao da definio Criando seu primeiro arquivo header Se tiver caractersticas em comum... Pode dividir o cdigo em arquivos separados Compilao por trs das cenas O cdigo compartilhado precisa de seu prprio arquivo header No fsica quntica ou ser que ? No recompile cada arquivo Primeiro compile a fonte em arquivos objetos difcil manter o controle sob os arquivos Automatize seus builds com a ferramenta make Como make funciona Mostre seu cdigo para make com makefile. Sua Caixa de Ferramentas C 162 163 164 168 169 171 173 174 182 183 184 186 189 190 191 196 198 199 200 206

xiv

contedo

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

contedo

structs, unions e bitfields


Criando suas prprias estruturas
A maioria das coisas na vida mais complexa que um simples nmero. At agora, temos visto os tipos bsicos de dados
da linguagem C, mas e se voc quiser ir alm dos nmeros e segmentos de texto e modelar as coisas no mundo real? structs permitem que voc modele complexidades do mundo real atravs da criao de suas prprias estruturas. Neste captulo, voc aprender como combinar os tipos bsicos de dados em structs e at manejar as incertezas da vida com unions. E, se quiser um simples sim ou no, bitfields podem ser exatamente o que voc precisa. s vezes, voc precisa distribuir muitos dados. Conversa de cubculo Crie seu prprio tipo estruturado de dados com um struct S d-lhes o peixe Leia os campos do struct com o operador . possvel colocar um struct dentro do outro? Como voc atualiza um struct? O cdigo est clonando a tartaruga Voc precisa de um ponteiro para o struct (*t).age vs. *t.age s vezes, o mesmo tipo de coisa precisa de tipos diferentes de dados. Um union deixa voc reutilizar espao de memria. Como se usa o union? Uma varivel enum armazena um smbolo s vezes, voc quer controlar o nvel de bits. Bitfields armazenam uma quantidade customizvel de bits Sua Caixa de Ferramentas C 218 219 220 221 222 227 236 238 239 240 246 247 248 255 261 262 266

xvi

contedo

estruturas de dados e memria dinmica


Construindo pontes
s vezes, um nico struct simplesmente no o suficiente. Para modelar requisitos complexos de dados, voc
frequentemente precisa juntar structs. Neste captulo, voc ver como usar ponteiros struct para ligar tipos customizados de dados em estruturas de dados grandes e complexas. Voc explorar princpioschave, criando listas encadeadas. Voc tambm ver como fazer com que suas estruturas de dados aceitem quantidades flexveis de dados, alocando memria dinamicamente no heap e liberando a memria quando tiver terminado. E, se a boa economia domstica ficar complicada, tambm aprender como valgrind pode ajudar. Voc precisa de armazenamento flexvel? Listas encadeadas so como correntes de dados. Listas encadeadas permitem inseres. Crie uma estrutura recursiva Crie ilhas em C... Inserindo valores na lista Use o heap para armazenamento dinmico Devolva a memria quando terminar Pea memria com malloc()... Vamos consertar o cdigo usando a funo strdup() Libere a memria ao terminar Uma viso geral do sistema SIPS Software Forense: usando valgrind Use valgrind repetidamente para coletar mais evidncia. Olhe a evidncia A soluo em julgamento Sua Caixa de Ferramentas C 268 269 270 271 272 273 278 279 280 286 290 300 302 303 304 307 309

xvii

contedo

funes avanadas
Aumente suas funes para onze
Funes bsicas so timas, mas s vezes voc precisa de mais. At agora, voc tem se concentrado no bsico. Mas
e se precisar de ainda mais poder e flexibilidade para conseguir o que quer? Neste captulo, voc ver como aumentar o QI do seu cdigo passando funes como parmetros. Voc descobrir como organizar as coisas com funes de comparao. E, finalmente, descobrir como fazer seu cdigo muito flexvel com funes com argumentos variveis. Procurando o Sr. Certo... Passando cdigo a uma funo Voc precisa dizer para find() o nome de uma funo. Todo nome de funo um ponteiro para a funo... ...mas no existe tipo de dados function Como criar ponteiros para funes Organize-se com a Biblioteca Padro C Use os ponteiros para funes para pr as coisas em ordem. Automatizando as cartas da agncia de namoro Crie um array de ponteiros para funes Faa sua funo flexvel Sua Caixa de Ferramentas C 312 316 317 318 319 320 325 326 334 338 343 350

xviii

contedo

bibliotecas estticas e dinmicas


Cdigo Hot-Swappable
Voc j viu o poder de bibliotecas padro. Agora chegou
a hora de usar este poder para o seu cdigo. Neste captulo, ver como criar suas prprias bibliotecas e reutilizar o mesmo cdigo em vrios programas. E mais, aprender como compartilhar cdigo durante o tempo de execuo com bibliotecas dinmicas e os segredos dos programadores gurus. E, ao terminar o captulo, voc ser capaz de escrever cdigo escalvel que poder ser dimensionado e gerenciado de forma simples e eficiente. Cdigo que voc pode levar ao banco Maior e menor so para headers padro Mas e se quiser compartilhar cdigo? Compartilhando arquivos header .h Compartilhe arquivos de objetos .o usando o pathname completo Um depsito contm arquivos .o. Crie um arquivo com o comando ar... Finalmente, compile seus outros programas. A Academia Use a Cabea! est virando global. Calculando calorias Mas as coisas so um pouco mais complexas... Programas so compostos de vrios pedaos... Ligaes dinmicas acontecem durante o tempo de execuo D para fazer uma ligao .a durante o tempo de execuo? Primeiro crie um arquivo objeto O nome que der para sua biblioteca dinmica depende da sua plataforma. Sua Caixa de Ferramentas C 352 354 355 356 357 358 359 360 365 366 369 370 372 373 374 375 387

xix

contedo

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 astcia do OpenCV.

xx

contedo

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 prprio cdigo? Neste captulo, voc aprender como usar servios do sistema para criar e controlar processos. Com isso, seus programas tero acesso a e-mail, web e quaisquer outras ferramentas que tenha instalado. Ao terminar este captulo, voc ter a capacidade de ir alm do C. Chamadas ao sistema so sua conexo ao SO A algum invadiu o sistema... Segurana no o nico problema As funes exec() lhe do mais controle H vrias funes exec() As funes array: execv(), execpv(), execve() Passando variveis de ambiente A maioria das chamadas de sistema cometem o mesmo erro Leia as notcias com RSS exec() o fim da linha para o seu programa Executando um processo filho com fork() + exec() Sua Caixa de Ferramentas C 398 402 403 404 405 406 407 408 416 420 421 427

xxi

contedo

10

comunicao entre processos


bom conversar
Criar processos apenas metade da histria E se voc
quiser controlar o processo quando este estiver em execuo? E se quiser enviar dados para ele? Comunicao entre processos os deixa realizar o trabalho em conjunto. Vamos te mostrar como multiplicar o poder do seu cdigo deixando ele conversar com outros programas no seu sistema. Redirecionando a entrada e a sada Olhando por dentro de um processo tpico fileno() te diz qual o descritor s vezes, voc precisa esperar... Fique em contato com seu filho Conecte seus processos com pipes Estudo de caso: abrindo histrias em um navegador No filho No pai Abrindo uma pgina web em um navegador A morte de um processo Pegando os sinais e executando o seu cdigo sigactions so registradas com sigaction() Reescrevendo o cdigo para usar um tratador de sinais Use kill para enviar sinais Enviando uma chamada de alerta para seu cdigo Sua Caixa de Ferramentas C 430 431 433 438 442 443 444 445 445 446 451 452 453 454 457 458 466

Redirecionamento simplesmente substitui o fluxo de dados 432

xxii

contedo

11

sockets e redes
No h lugar como 127.0.0.1
Programas em mquinas diferentes precisam conversar. Voc aprendeu como usar I/O para se comunicar com arquivos
e como processos na mesma mquina 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 captulo, voc ser capaz de criar programas que atuam como servers e programas que atuam como clientes. O servidor de internet knock-knock Viso geral do servidor knock-knock BLAB: como servidores conversam com a internet Um socket no um tpico fluxo de dados s vezes o servidor no inicializa corretamente. O motivo pelo qual sua me sempre mandou verificar seu trabalho Lendo dados do cliente O servidor s pode falar com uma pessoa por vez. Voc pode fork() um processo para cada cliente Escrevendo um cliente web Clientes que mandam Crie um socket para um endereo IP getaddrinfo() pega endereos para domnios Sua Caixa de Ferramentas C 468 469 470 472 476 477 478 485 486 490 491 492 493 500

xxiii

contedo

12

threads
um mundo paralelo
Frequentemente programas precisam fazer diversas coisas ao mesmo tempo. Threads POSIX podem fazer seu cdigo
mais interativo, separando alguns segmentos de cdigo para serem executados em paralelo. Mas tenha cuidado! Threads so ferramentas poderosas, mas voc no quer que elas entrem em coliso. Neste captulo, voc aprender como colocar sinais de trnsito e marcadores de pista que iro prevenir um acidente de cdigo. No final, voc saber como criar threads POSIX e como usar mecanismos de sincronizao para proteger a autenticidade de dados sensitivos. Tarefas so sequenciais... ou no... ...e processos no so sempre a soluo Processos simples fazem uma coisa de cada vez Contrate funcionrios extras: use threads Como se criam threads? Crie threads com pthread_create. O cdigo no seguro para threads Voc precisa acrescentar sinais de trnsito Use mutex como sinal de trnsito Sua Caixa de Ferramentas C 502 503 504 505 506 507 512 513 514 521

A
Varivel compartilhada

B
xxiv

contedo

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

contedo

sobras
As dez melhores coisas (que no cobrimos)
Mesmo depois de tudo aquilo, ainda tem mais um pouquinho. Tem mais algumas coisas que achamos que voc precisa
saber. No nos sentiramos bem ignorando-as, mesmo que precisem de uma breve meno, e ns realmente queremos lhe dar um livro que voc possa carregar sem treinamento intensivo na academia do bairro. Ento, antes de guardar este livro, leia estes acrscimos. 1. Operadores 2. Diretivas do pr-processador 3. A palavra-chave static 4. Qual o tamanho das coisas 5. Testes automatizados 6. Mais sobre gcc 7. Mais sobre make 8. Ferramentas de desenvolvimento 9. Criando GUIs 10. Material de referncia 540 542 543 544 545 546 548 550 551 552

ii
xxvi

Tpicos C
Reviso geral
Voc j quis que todos aqueles timos fatos sobre C estivessem em um s lugar? Essa uma reunio de todos os
tpicos e princpios de C que apresentamos no livro. D uma olhada e veja se consegue se lembrar de todos. Cada fato tem o captulo de origem ao lado, ento fica fcil procurar a referncia se precisar de um lembrete. Talvez voc at queira destacar estas pginas para colocar na sua parede.

Das könnte Ihnen auch gefallen