Clique aqui para ler o primeiro capítulo do livro. - Livrarias Curitiba
Clique aqui para ler o primeiro capítulo do livro. - Livrarias Curitiba
Clique aqui para ler o primeiro capítulo do livro. - Livrarias Curitiba
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
RICARDO SONAGLIO ALBANO E<br />
SILVIE GUEDES ALBANO<br />
Linguagem 14-04-2010.indd i 28/5/2010 20:16:13
RICARDO SONAGLIO ALBANO E<br />
SILVIE GUEDES ALBANO<br />
Linguagem 14-04-2010.indd iii 28/5/2010 20:16:18
PREFÁCIO:<br />
A linguagem de programação C é uma das mais conhecidas e utilizadas<br />
linguagens de programação no mun<strong>do</strong>, não só com presença garantida em<br />
ambientes de ensino à programação, mas também, com grande in uência no<br />
desenvolvimento de aplicações comerciais.<br />
Esta obra é fruto de anos de experiência em sala de aula, nos cursos de<br />
Ciências da Computação e Sistemas de Informação, nas disciplinas de Linguagem<br />
de Programação. Ten<strong>do</strong> por objetivo auxiliar aos interessa<strong>do</strong>s nesta<br />
linguagem, disponibilizan<strong>do</strong> lições dirigidas, promoven<strong>do</strong> uma melhor compreensão<br />
sobre o desenvolvimento de aplicações e oferecen<strong>do</strong>, assim, o que<br />
esperamos ser um guia útil e um material de referência e ciente.<br />
Com a intenção de não deixar dúvidas, to<strong>do</strong>s os exercícios sugeri<strong>do</strong>s, a<br />
título de xação, apresentam sua resolução no nal <strong>do</strong> <strong>livro</strong>.Vale salientar que<br />
qualquer linguagem de programação exige prática e dedicação <strong>para</strong> que seja<br />
possível atingir com sucesso o <strong>do</strong>mínio da mesma.<br />
Esperamos que você aprecie a leitura deste <strong>livro</strong> e obtenha bons resulta<strong>do</strong>s<br />
em seus estu<strong>do</strong>s.<br />
Linguagem 14-04-2010.indd v 28/5/2010 20:16:19
DEDICATÓRIA:<br />
À minha mãe Beatriz e ao meu esposo Ricar<strong>do</strong>.<br />
Saibam que vocês são responsáveis por eu me tornar uma pessoa<br />
melhor.<br />
Silvie Guedes Albano<br />
Dedico aos meus pais e, em especial,<br />
à minha esposa Silvie que sempre me encorajou a enfrentar novos<br />
desa os.<br />
Ricar<strong>do</strong> Sonaglio Albano<br />
Linguagem 14-04-2010.indd vii 28/5/2010 20:16:19
AGRADECIMENTOS:<br />
Para esta seção, optamos por tomar emprestadas as palavras e os<br />
pensamentos de Rudyard Kipling (“IF”, 1910), agradecen<strong>do</strong> a to<strong>do</strong>s com essa<br />
mensagem de perseverança.<br />
SE<br />
Se és capaz de manter a tua calma, quan<strong>do</strong>,<br />
to<strong>do</strong> mun<strong>do</strong> ao re<strong>do</strong>r já a perdeu e te culpa.<br />
De crer em ti quan<strong>do</strong> estão to<strong>do</strong>s duvidan<strong>do</strong>,<br />
e <strong>para</strong> esses, no entanto, achar uma desculpa.<br />
Se és capaz de esperar sem te desesperares,<br />
ou, engana<strong>do</strong>, não mentir ao mentiroso,<br />
Ou, sen<strong>do</strong> odia<strong>do</strong>, sempre ao ódio te esquivares,<br />
e não parecer bom demais, nem pretensioso.<br />
Se és capaz de pensar – sem que a isso só te atires,<br />
de sonhar – sem fazer <strong>do</strong>s sonhos teus senhores.<br />
Se, encontran<strong>do</strong> a Desgraça e o Triunfo, conseguires,<br />
tratar da mesma forma a esses <strong>do</strong>is impostores.<br />
Se és capaz de sofrer a <strong>do</strong>r de ver mudadas,<br />
em armadilhas as verdades que disseste<br />
E as coisas, por que deste a vida estraçalhadas,<br />
e refazê-las com o bem pouco que te reste.<br />
Linguagem 14-04-2010.indd ix 28/5/2010 20:16:19
Se és capaz de arriscar numa única <strong>para</strong>da,<br />
tu<strong>do</strong> quanto ganhaste em toda a tua vida.<br />
E perder e, ao perder, sem nunca dizer nada,<br />
resigna<strong>do</strong>, tornar ao ponto de partida.<br />
De forçar coração, nervos, músculos, tu<strong>do</strong>,<br />
a dar seja o que for que neles ainda existe.<br />
E a persistir assim quan<strong>do</strong>, exausto, contu<strong>do</strong>,<br />
resta a vontade em ti, que ainda te ordena: Persiste!<br />
Se és capaz de, entre a plebe, não te corromperes,<br />
e, entre Reis, não perderes a naturalidade.<br />
E de amigos, quer bons, quer maus, te defenderes,<br />
se a to<strong>do</strong>s podes ser de alguma utilidade.<br />
Se és capaz de dar, segun<strong>do</strong> por segun<strong>do</strong>,<br />
ao minuto fatal to<strong>do</strong> valor e brilho.<br />
Tua é a Terra com tu<strong>do</strong> o que existe no mun<strong>do</strong>,<br />
e – o que ainda é muito mais – és um Homem, meu lho!<br />
Linguagem 14-04-2010.indd x 28/5/2010 20:16:19
ALBANO, Ricar<strong>do</strong> Sonaglio<br />
ALBANO, Silvie M. A. Guedes<br />
SOBRE OS AUTORES:<br />
CITAÇÃO BIBLIOGRÁFICA:<br />
Silvie Guedes Albano, formada em Informática<br />
com pós-graduação em Educação e Ciências<br />
da Computação. Mestranda em Educação<br />
pela Universidad de La Empresa. Professora<br />
universitária atuante (11 anos). Atualmente,<br />
trabalha como professora em cursos de Sistemas<br />
de Informação e Ciências da Computação.<br />
Ricar<strong>do</strong> Sonaglio Albano, forma<strong>do</strong> em Ciências<br />
Contábeis com pós-graduação em Meto<strong>do</strong>logia<br />
<strong>do</strong> Ensino Superior e Ciências da Computação.<br />
Mestran<strong>do</strong> em Educação pela Universidad<br />
de La Empresa. Professor universitário há 15<br />
anos. Professor em cursos de Sistemas de<br />
Informação e Ciências da Computação na área<br />
de desenvolvimento de software. Também atua<br />
no desenvolvimento de softwares comerciais<br />
<strong>para</strong> empresas privadas e públicas.<br />
Linguagem 14-04-2010.indd xi 28/5/2010 20:16:19
SUMÁRIO<br />
CAPÍTULO 1 - INTRODUÇÃO ................................................................................... 1<br />
1.1. Um Pouco de História........................................................................................1<br />
1.2. Por que Apreender a Programar e C? ...............................................................2<br />
1.3. A Organização de Programas em C .................................................................2<br />
1.4. A Escolha <strong>do</strong> Ambiente de Desenvolvimento ....................................................3<br />
1.4.1. Alguns Ajustes de Con guração .....................................................................4<br />
1.4.2. Conhecen<strong>do</strong> a Ferramenta de DEV-C++ .......................................................8<br />
1.4.2.1. Barra de Menus ...........................................................................................8<br />
1.4.2.2. Menu de Acessos Rápi<strong>do</strong> – A Barra de Ferramentas..................................8<br />
1.4.2.3. Navega<strong>do</strong>r de Classes/Projetos ................................................................10<br />
1.4.2.4. Principais Teclas de Atalhos ...................................................................... 11<br />
1.5. Arquivo Fonte X Projeto................................................................................... 11<br />
CAPÍTULO 2 - MÃOS À OBRA: O CÓDIGO FONTE ............................................. 13<br />
2.1. Estrutura Básica de um Programa em C .........................................................14<br />
2.2. O Primeiro Programa em Linguagem de Programação C...............................14<br />
2.2.1. Com<strong>para</strong>n<strong>do</strong> a Lógica com a Lingugem C ...................................................16<br />
2.3. Bibliotecas Básicas..........................................................................................17<br />
2.4. Elementos Básicos ..........................................................................................18<br />
2.4.1. Tipos de Da<strong>do</strong>s.............................................................................................18<br />
2.4.2. Variáveis .......................................................................................................20<br />
2.4.3. Constantes ...................................................................................................22<br />
2.4.4. Opera<strong>do</strong>res Relacionais e Lógicos...............................................................23<br />
2.4.5. Expressões Aritméticas ................................................................................25<br />
2.4.6. Coman<strong>do</strong>s de Atribuição ..............................................................................26<br />
2.4.7. Precedência de Operações ..........................................................................29<br />
2.4.8. Opera<strong>do</strong>res de Incremento e Decremento ...................................................30<br />
2.4.9. Opera<strong>do</strong>res de Bits.......................................................................................30<br />
2.4.10. Opera<strong>do</strong>res de Endereço ...........................................................................36<br />
2.4.11. Opera<strong>do</strong>r SIZEOF .......................................................................................36<br />
2.4.12. Convcersão de Tipos de Da<strong>do</strong>s .................................................................37<br />
2.4.12.1 Conversão Implícita ..................................................................................37<br />
2.4.12.2 Conversão Explícita – CAST ....................................................................38<br />
2.5. Instruções de Entrada e Saída ........................................................................40<br />
Linguagem 14-04-2010.indd xiii 28/5/2010 20:16:19
xiv<br />
| Programação em Linguagem C<br />
2.5.1. Formatações Númericas: Apresentan<strong>do</strong> Resulta<strong>do</strong>s ...................................43<br />
2.5.2. Exemplo: Lógica X Código em C..................................................................44<br />
2.6. Usan<strong>do</strong> o System (“PAUSE”) ou GETCH() .....................................................45<br />
2.6.1. Exemplo de Aplicação ..................................................................................46<br />
2.7. Identação .........................................................................................................47<br />
2.8. Bons Vícios de Programação ..........................................................................48<br />
CAPÍTULO 3 - ESTRUTURAS DE CONTROLE ....................................................................51<br />
3.1. Estruturas de Decisão, Composta e Múltipla ..................................................51<br />
3.1.1. Estrutura de Decisão Simples: If ..................................................................51<br />
3.1.2. Estrutura de Decisão Composta: If... Else....................................................52<br />
3.1.3. O opera<strong>do</strong>r Tenário (?) ................................................................................55<br />
3.1.4. Estrutura de Decisão Múltipla: Switch... Case.............................................56<br />
3.2. Estruturas de Repetição convencional ............................................................58<br />
3.2.1. FOR ..............................................................................................................59<br />
3.2.1.1. Exemplo com o uso de De ne...................................................................62<br />
3.2.2. While.............................................................................................................63<br />
3.2.3. Do... While ....................................................................................................65<br />
CAPÍTULO 4 - USANDO FUNÇÕES MATEMÁTICAS .......................................... 71<br />
4.1. Funções de Potência .......................................................................................71<br />
4.1.1. A Função POW()...........................................................................................71<br />
4.1.2. A Função SQRT() .........................................................................................73<br />
4.2. Funções de Arre<strong>do</strong>ndamento ..........................................................................73<br />
4.2.1. Função FLOOR() ..........................................................................................73<br />
4.2.2. Função CEIL() ..............................................................................................74<br />
4.3. Funções TRIGONOMÉTRICAS ......................................................................75<br />
4.3.1. Função SIN() ................................................................................................75<br />
4.3.2. Função COS() ..............................................................................................76<br />
4.3.3. Função TAN() ...............................................................................................76<br />
4.4. Funções Logaritímicas ....................................................................................77<br />
4.4.1. Função LOG()...............................................................................................77<br />
4.4.2. Função LOG10()...........................................................................................77<br />
4.5. Obten<strong>do</strong> o resto de uma Divisão (%) ..............................................................78<br />
4.6. Descobrin<strong>do</strong> o Código ASCII ...........................................................................79<br />
CAPÍTULO 5 - ESTRUTURA DE DADOS HOMOGÊNEOS .................................. 83<br />
5.1. Vetores ............................................................................................................84<br />
5.2. Matrizes ...........................................................................................................87<br />
CAPÍTULO 6 - MANIPULANDO STRINGS.............................................................. 99<br />
6.1. As Funções GETS() E FGETS() ....................................................................102<br />
6.2. Testan<strong>do</strong> o Final de uma String .....................................................................106<br />
Linguagem 14-04-2010.indd xiv 28/5/2010 20:16:19
XV Sumário<br />
6.3. Funções de Strings........................................................................................107<br />
6.3.1. Atribuição de Strings – STRCPY()..............................................................108<br />
6.3.2. Concatenação de Strings – STRCAT() .......................................................109<br />
6.3.3. Com<strong>para</strong>ção de Strings – STRCMP() ........................................................ 110<br />
6.3.4. STRLEN() ................................................................................................... 112<br />
6.3.5. STRUPR() .................................................................................................. 113<br />
6.3.6. STRLWR() .................................................................................................. 114<br />
CAPÍTULO 7 - ESTRUTURA DE DADOS HETEROGÊNEOS .................................... 119<br />
7.1. Structs (Registros) ......................................................................................... 119<br />
7.1.1. Declaran<strong>do</strong> Variáveis <strong>do</strong> Tipo Struct ..........................................................120<br />
7.1.2. Acessan<strong>do</strong> as Variáveis de uma Estrutura .................................................122<br />
7.1.3. Trabalhan<strong>do</strong> com Vetores em uma Struct .................................................123<br />
7.1.4. Aplican<strong>do</strong> Structs dentro de Structs ...........................................................126<br />
CAPÍTULO 8 - MODULARIZAÇÃO (FUNÇÕES) ............................................................. 131<br />
8.1. Por que Usar Funções? ................................................................................131<br />
8.2. Escopo de Variáveis ......................................................................................132<br />
8.3. Declaran<strong>do</strong> uma Função ...............................................................................133<br />
8.3. O Coman<strong>do</strong> Return() .....................................................................................134<br />
8.5. Funções sem Passagem de Argumentos ......................................................136<br />
8.6. Funções com Passagem por Valor ................................................................138<br />
8.7. A Função Static..............................................................................................144<br />
8.8. Recursividade ................................................................................................146<br />
CAPÍTULO 9 - O USO DE PONTEIROS ................................................................................ 153<br />
9.1. Armazenan<strong>do</strong> Informações............................................................................153<br />
9.2. O Que é um Ponteiro?...................................................................................156<br />
9.3. Por que Usar Ponteiros? ...............................................................................156<br />
9.4. Opera<strong>do</strong>res com Manipulação de Ponteiros .................................................158<br />
9.4.1.Opera<strong>do</strong>r de Endereço (&) ..........................................................................158<br />
9.4.2. Opera<strong>do</strong>r de Conteú<strong>do</strong> ou de Referência (*)..............................................165<br />
9.5. Ponteiros <strong>para</strong> Ponteiros ...............................................................................168<br />
9.6. Aritméticas <strong>do</strong>s Ponteiros ..............................................................................170<br />
9.7. Funções com Passagem por Referência ......................................................172<br />
CAPÍTULO 10 - MANIPULAÇÃO DE ARQUIVOS ............................................................ 181<br />
10.1. Coman<strong>do</strong>s <strong>para</strong> Manipulação de Da<strong>do</strong>s ....................................................181<br />
10.2. Arquivo Texto X Arquivo Binário .................................................................183<br />
10.3. A Estrutura File ............................................................................................184<br />
10.4. Abrin<strong>do</strong> um Arquivo .....................................................................................185<br />
10.5. Fechan<strong>do</strong> um Arquivio .................................................................................188<br />
Linguagem 14-04-2010.indd xv 28/5/2010 20:16:19
xvi<br />
| Programação em Linguagem C<br />
10.6. Leitura e Gravação de Caracteres ..............................................................189<br />
10.6.1. Gravan<strong>do</strong> um arquivo Caracter a Caracter ..............................................189<br />
10.6.2. Len<strong>do</strong> um arquivo Caracter a Caracter ....................................................191<br />
10.7. Leitura e Gravação de Strings .....................................................................193<br />
10.7.1. Leitura de Strings .....................................................................................193<br />
10.7.2. Gravação de Strings .................................................................................197<br />
10.8. Leitura e Gravação de Da<strong>do</strong>s Formata<strong>do</strong>s .................................................198<br />
10.8.1. Gravan<strong>do</strong> Da<strong>do</strong>s Formata<strong>do</strong>s ..................................................................198<br />
10.8.2. Len<strong>do</strong> Da<strong>do</strong>s Formata<strong>do</strong>s ........................................................................202<br />
10.9. Leitura e Gravação de Informações Estruturadas (Registros) ....................203<br />
10.9.1. Gravan<strong>do</strong> Blocos de Da<strong>do</strong>s de um Arquivo..............................................203<br />
10.9.2. Len<strong>do</strong> Blocos de Da<strong>do</strong>s de um Arquivo ...................................................206<br />
10.10. Acesso Aleatório a Arquivos .....................................................................212<br />
10.11. A Função Rewind() ....................................................................................219<br />
10.12. A Função Feof() .........................................................................................219<br />
10.13. Renomean<strong>do</strong> Arquivos .............................................................................221<br />
10.14. Excluin<strong>do</strong> Arquivos ...................................................................................222<br />
10.15. Alteran<strong>do</strong> Registros de um Arquivo ...........................................................224<br />
10.16. Excluin<strong>do</strong> Registros de um Arquivo ...........................................................227<br />
10.17. Arquivos Standart ......................................................................................231<br />
CAPÍTULO 11 – RESPOSTAS DOS EXERCÍCIOS SUGERIDOS......................... 241<br />
11.1. Respostas <strong>do</strong>s Exercícios <strong>do</strong> Capítulo 1: ....................................................241<br />
11.2. Respostas <strong>do</strong>s Exercícios <strong>do</strong> Capítulo 2: ....................................................242<br />
11.3. Respostas <strong>do</strong>s Exercícios <strong>do</strong> Capítulo 3: ....................................................249<br />
11.4. Respostas <strong>do</strong>s Exercícios <strong>do</strong> Capítulo 4: ....................................................262<br />
11.5. Respostas <strong>do</strong>s Exercícios <strong>do</strong> Capítulo 5: ....................................................267<br />
11.6. Respostas <strong>do</strong>s Exercícios <strong>do</strong> Capítulo 6: ....................................................298<br />
11.7. Respostas <strong>do</strong>s Exercícios <strong>do</strong> Capítulo 7: ....................................................308<br />
11.8. Respostas <strong>do</strong>s Exercícios <strong>do</strong> Capítulo 8: ....................................................331<br />
11.9. Respostas <strong>do</strong>s Exercícios <strong>do</strong> Capítulo 9: ....................................................349<br />
11.10. Respostas <strong>do</strong>s Exercícios <strong>do</strong> Capítulo 10: ................................................362<br />
Referências Bibliográ cas ................................................................................... 411<br />
Linguagem 14-04-2010.indd xvi 28/5/2010 20:16:19
CAPÍTULO 1<br />
1.1. UM POUCO DE HISTÓRIA<br />
INTRODUÇÃO<br />
C<br />
A linguagem de Programação C foi criada entre 1969 a 1973 por Dennis<br />
Ritchie, no AT&T Bell Labs, com o objetivo de desenvolver a implementação<br />
<strong>do</strong> sistema operacional UNIX (originalmente escrito em Assembly).<br />
A partir da inserção <strong>do</strong> tipo struct, a linguagem C foi utilizada em grande<br />
parte <strong>do</strong> kernel <strong>do</strong> Unix (conheci<strong>do</strong> como o núcleo <strong>do</strong> sistema, que faz a interação<br />
entre as camadas de hardware e software, ten<strong>do</strong> por função gerenciar<br />
os recursos <strong>do</strong> sistema e permitir que os programas façam uso deles).<br />
No nal da década de 70, a linguagem C começou a ser conhecida como a<br />
linguagem de programação de microcomputa<strong>do</strong>res mais usada, substituin<strong>do</strong><br />
a linguagem BASIC. Logo na década de 80, foi desenvolvi<strong>do</strong> um projeto onde<br />
foram adicionadas construções de linguagens de programação orientada a<br />
objetos, geran<strong>do</strong> assim, a chamada linguagem de programação C++ (C plus<br />
plus). Nessa mesma época, o Instituto Norte-Americano de Padrões (ANSI)<br />
compôs um comitê com o objetivo de estabelecer padrões de especi cação<br />
<strong>para</strong> a linguagem C. O padrão ANSI C foi naliza<strong>do</strong> em 1989 e até hoje, é<br />
comum a linguagem de programação C ser referida como ANSI C. Sen<strong>do</strong><br />
a<strong>do</strong>ta<strong>do</strong> pela Organização Internacional de Padrões (ISO) em 1990 (ISO/IEC<br />
9899:1990, também conheci<strong>do</strong> como C89 ou C90).<br />
Linguagem 14-04-2010.indd 1 28/5/2010 20:16:19
2 | Programação em Linguagem C<br />
1.2. POR QUE APRENDER A PROGRAMAR EM C?<br />
C é uma linguagem de programação de alto nível, possibilitan<strong>do</strong> um maior<br />
reaproveitamento <strong>do</strong> código. Além disso, fornece acesso de baixo nível à<br />
memória e baixos requerimentos de hardware. É atualmente uma das linguagens<br />
de programação mais utilizadas.<br />
Possui as seguintes características e vantagens:<br />
• Portabilidade entre máquinas e sistemas operacionais. Total interação<br />
com o Sistema Operacional. Disponível em várias plataformas;<br />
• Linguagem procedimental, simples e de aprendiza<strong>do</strong> fácil. A linguagem<br />
C é compilada, isto signi ca que os programas escritos nessa linguagem<br />
não podem ser executa<strong>do</strong>s diretamente. Precisam ser compila<strong>do</strong>s<br />
por um programa chama<strong>do</strong> compila<strong>do</strong>r.<br />
• Trabalha sobre o <strong>para</strong>digma da criação de programas menores com<br />
menos erros. Código compacto e rápi<strong>do</strong>, em com<strong>para</strong>ção com outras<br />
linguagens semelhantes;<br />
• Baseada em construções simples, que usam os recursos da máquina de<br />
forma e ciente;<br />
• Oferece recursos de modularização necessários ao desenvolvimento de<br />
aplicações de grande porte;<br />
• Uso amplamente difundi<strong>do</strong>. É a linguagem de programação mais usada<br />
<strong>para</strong> o desenvolvimento de sistemas e softwares de base;<br />
• Possui diversas funcionalidades presentes por um conjunto de bibliotecas<br />
de rotinas padronizadas, tais como, funções matemáticas ou manipulação<br />
de arquivos;<br />
• Utiliza o conceito de ponteiros que possibilita maior exibilidade da linguagem;<br />
• Estruturas de variáveis (structs), que permitem a combinação e manipulação<br />
de da<strong>do</strong>s relaciona<strong>do</strong>s como um to<strong>do</strong> (registro);<br />
• Amplamente utilizada em cursos de graduação na área de Informática.<br />
1.3. A ORGANIZAÇÃO DE PROGRAMAS EM C<br />
A estrutura de um programa em linguagem C é composta por da<strong>do</strong>s e funções,<br />
onde os da<strong>do</strong>s são variáveis que são inicializadas antes <strong>do</strong> início <strong>do</strong><br />
programa e as funções basicamente são pequenas partes de um código or-<br />
Linguagem 14-04-2010.indd 2 28/5/2010 20:16:19
Capítulo 1 — Introdução | 3<br />
ganizadas em módulos agrupa<strong>do</strong>s e desenvolvi<strong>do</strong>s de tal maneira que conseguem<br />
realizar determinadas tarefas.<br />
Além disso, o C possui uma função especial, que é a principal função <strong>do</strong><br />
programa. É onde ocorre o início da execução de qualquer programa desenvolvi<strong>do</strong><br />
em C.<br />
De forma geral, o funcionamento de um programa em C segue a seguinte<br />
lógica: O arquivofonte principal é passa<strong>do</strong> como argumento <strong>para</strong> o compila<strong>do</strong>r,<br />
que, por sua vez, de ne uma unidade de compilação. Essa unidade de<br />
compilação importa de nições usan<strong>do</strong> a diretiva #include ou algum identi ca<strong>do</strong>r<br />
como externo.<br />
Vale salientar que em C, você pode dividir um mesmo programa em vários<br />
programas independentes (módulos), que serão compila<strong>do</strong>s se<strong>para</strong>damente<br />
e depois serão linka<strong>do</strong>s, isto é, agrupa<strong>do</strong>s ou encadea<strong>do</strong>s com o link editor<br />
<strong>para</strong> gerar o programa nal. Também é possível trabalhar com o que chamamos<br />
de “header les” (arquivos de cabeçalho), onde temos cada módulo em<br />
um arquivo texto se<strong>para</strong><strong>do</strong>, conten<strong>do</strong> sua própria declaração de da<strong>do</strong>s e funções.<br />
Esses arquivos de cabeçalho são identi ca<strong>do</strong>s pela extensão “.h”, poden<strong>do</strong><br />
ser priva<strong>do</strong>s, especí cos da aplicação e disponíveis <strong>para</strong> o sistema.<br />
1.4. A ESCOLHA DO AMBIENTE DE DESENVOLVIMENTO<br />
Neste <strong>livro</strong>, utilizaremos a ferramenta DEV-C++ como base no desenvolvimento<br />
de programas com o intuito de exempli car cada conteú<strong>do</strong> discuti<strong>do</strong>.<br />
O DEV-C++ é um ambiente integra<strong>do</strong> de desenvolvimento (IDE – Integrated<br />
Development Environment), isto é, uma ferramenta de programação,<br />
ou melhor dizen<strong>do</strong>, um programa que realiza uma integração com diversos<br />
recursos necessários <strong>para</strong> a geração de novos programas e que tornará a<br />
atividade de programar mais simples. Em um único ambiente, encontram-se<br />
o Compila<strong>do</strong>r (chama<strong>do</strong> GBD, que tem por função compilar o código fonte e<br />
gerar um arquivo executável), o Link-Editor e o Loader, ou seja, em um único<br />
programa estão presentes todas as etapas de desenvolvimento e teste, tornan<strong>do</strong><br />
o processo mais simples e transparente. Também existe um depura<strong>do</strong>r<br />
simbólico, que permite testar o programa, instrução por instrução, observan<strong>do</strong><br />
o que ocorre com cada uma de suas rotinas e um editor de texto, onde o<br />
mesmo já é pre<strong>para</strong><strong>do</strong> <strong>para</strong> reconhecer vários elementos da linguagem e até<br />
mesmo auxiliar na automatização escrita de códigos.<br />
Linguagem 14-04-2010.indd 3 28/5/2010 20:16:19
4 | Programação em Linguagem C<br />
Existem muitas ferramentas/ambientes de programação disponíveis na<br />
Internet. Exemplos disso são o wxDev-C++ e o Eclipse (que inclusive serve<br />
<strong>para</strong> muitas linguagens). Optamos por utilizar o DEV-C++ por ser um produto<br />
bastante popular. Algumas das ferramentas disponíveis são livres e podem<br />
ser obtidas na Internet sem custos.<br />
É importante deixar claro que este <strong>livro</strong> tem como objetivo aprender a<br />
programar em linguagem C e por esse motivo, detalhes relaciona<strong>do</strong>s ao ambiente<br />
de desenvolvimento devem ser sana<strong>do</strong>s mediante a busca de informações<br />
em <strong>livro</strong>s e manuais disponibiliza<strong>do</strong>s pelas empresas desenvolve<strong>do</strong>ras<br />
<strong>do</strong> ambiente.<br />
Você pode baixar o DEV-C++ através <strong>do</strong> site da Bloodshed (http://www.<br />
bloodshed.net/dev/ devcpp.html).<br />
1.4.1. ALGUNS AJUSTES DE CONFIGURAÇÃO<br />
Após baixar o programa, instalá-lo em sua máquina e executá-lo, é conveniente<br />
que você ajuste a aparência da ferramenta <strong>para</strong> default.<br />
(Figura 01 – Abertura <strong>do</strong> DEV-C++)<br />
Para a realização dessa operação, selecione, na barra de menus, as<br />
seguintes opções (como demonstra<strong>do</strong> nas guras 01 e 02):<br />
Linguagem 14-04-2010.indd 4 28/5/2010 20:16:19
• Tools (ferramentas);<br />
• Environment Options (opções <strong>do</strong> ambiente);<br />
(Figura 02 – Menu Ferramentas)<br />
• Guia Interface;<br />
Se preferir, troque também a língua <strong>para</strong> português.<br />
(Figura 03 – Opções <strong>do</strong> ambiente de desenvolvimento)<br />
Capítulo 1 — Introdução | 5<br />
Outros ajustes interessantes de realizar são os que se referem às opções<br />
padrão <strong>do</strong> editor de texto.<br />
Linguagem 14-04-2010.indd 5 28/5/2010 20:16:19
6 | Programação em Linguagem C<br />
Para a realização dessa operação, selecione na barra de menus, as<br />
seguintes opções (como demonstra<strong>do</strong> nas guras 03, 04 e 05):<br />
• Ferramentas;<br />
• Opções <strong>do</strong> editor;<br />
(Figura 04 – Opções <strong>do</strong> editor)<br />
• Na guia Geral, desmarque a opção Tabulação Inteligente, fazen<strong>do</strong> com<br />
que as tabulações ocupem quatros espaços xos.<br />
(Figura 05 – Opções <strong>do</strong> editor – Guia Geral)<br />
Linguagem 14-04-2010.indd 6 28/5/2010 20:16:19
Capítulo 1 — Introdução | 7<br />
• Na guia Display, marque a opção Números das Linhas. Essa medida<br />
servirá apenas <strong>para</strong> que seja apresentada a numeração de linhas <strong>do</strong>s<br />
programas fonte, o que é bastante útil na eliminação de erros de compilação.<br />
(Figura 06 – Opções <strong>do</strong> editor – Guia Display)<br />
Linguagem 14-04-2010.indd 7 28/5/2010 20:16:20
8 | Programação em Linguagem C<br />
1.4.2. CONHECENDO A FERRAMENTA DEV-C++<br />
A gura abaixo apresenta o layout default <strong>do</strong> ambiente de desenvolvimento<br />
DEV-C++. Vamos discutir alguns <strong>do</strong>s aspectos presentes na mesma.<br />
Vale salientar que você pode con gurar a apresentação <strong>do</strong>s elementos<br />
conti<strong>do</strong>s na ferramenta, tornan<strong>do</strong>-os visíveis ou não. Caso tenha o interesse<br />
de realizar esse procedimento, selecione o menu Exibir.<br />
1.4.2.1. BARRA DE MENUS<br />
(Figura 7 – Ambiente de Desenvolvimento)<br />
Como to<strong>do</strong> programa padrão Win<strong>do</strong>ws, há uma janela onde estão situa<strong>do</strong>s<br />
os menus da aplicação, conten<strong>do</strong> diversos recursos. Neste <strong>livro</strong>, discutiremos<br />
alguns deles.<br />
(Figura 8 – Barra de Menus)<br />
1.4.2.2. MENU DE ACESSO RÁPIDO – A BARRA DE FERRAMENTAS<br />
A Barra de Ferramentas (SpeedBar) está posicionada logo abaixo da barra<br />
de menus. Possui diversos botões (ícones) que representam os coman<strong>do</strong>s<br />
mais utiliza<strong>do</strong>s durante o desenvolvimento. Cada ícone pertence a um grupo<br />
de ferramentas e você pode con gurar sua apresentação através <strong>do</strong> menu<br />
Exibir, opção Barra de Ferramentas.<br />
Linguagem 14-04-2010.indd 8 28/5/2010 20:16:20
(Figura 9 – Menu de Acesso Rápi<strong>do</strong> (não habilita<strong>do</strong>))<br />
Capítulo 1 — Introdução | 9<br />
Alguns <strong>do</strong>s mesmos só estarão habilita<strong>do</strong>s apenas quan<strong>do</strong> você começar<br />
a programar.<br />
(Figura 10 – Menu de Acesso Rápi<strong>do</strong> (habilita<strong>do</strong>))<br />
É interessante chamar a atenção <strong>para</strong> alguns ícones na barra de acesso<br />
rápi<strong>do</strong>:<br />
(Figura 11 – Menu de Acesso Rápi<strong>do</strong> – Ícones importantes)<br />
Você também pode con gurar a apresentação dessas barras através <strong>do</strong><br />
menu Exibir, opção Barra de Ferramentas.<br />
Linguagem 14-04-2010.indd 9 28/5/2010 20:16:20
10<br />
| Programação em Linguagem C<br />
(Figura 12 – Barra de Ferramentas)<br />
1.4.2.3. NAVEGADOR DE CLASSES/PROJETOS<br />
O navega<strong>do</strong>r só é necessário na edição de projetos ou programas em C++.<br />
Sugerimos, então, que você desabilite essa janela <strong>para</strong> que possa ter mais<br />
espaço <strong>para</strong> a edição de seus programas. Para isso, escolha na barra de<br />
menus o menu Exibir e desmarque o Navega<strong>do</strong>r de Classes/Projetos.<br />
(Figura 13 – Navega<strong>do</strong>r de Classes/Projeto)<br />
Linguagem 14-04-2010.indd 10 28/5/2010 20:16:20