C / C++ e Orientação a Objetos em Ambiente Multiplataforma Por: Sergio Barbosa Villas-Boas, Ph.D. Professor Adjunto do DEL - Departamento de Eletrônica e Computação da UFRJ. (www.del.ufrj.br) Resumo do Currículo: TTééccnniiccoo EElleettrrôônniiccoo ppeellooCCEEFFEETT--RRJJ 11998811 wwwwww..cceeffeett--rrjj..bbrr EEnnggeennhheeiirroo EElleettrrôônniiccoo ppeellooDDEELL,, UUFFRRJJ 11998877 wwwwww..ddeell..uuffrrjj..bbrr MM..SScc..eemm EEnnggeennhhaarriiaa EEllééttrriiccaa ppeellaa CCOOPPPPEE -- 11999911 wwwwww..ccooeepp..uuffrrjj..bbrr PPEEEE --CCoonnttrroollee PPhh..DD..eemm EEnnggeennhhaarriiaa ddee CCoonnttrroollee ppoorr CChhiibbaa 11999988 wwwwww..cchhiibbaa--uu..aacc..jjpp UUnniivveerrssiittyy -- JJaappããoo MMBBAAeemm IInntteelliiggêênncciiaa EEmmpprreessaarriiaallee GGeessttããoo 22000000 wwwwww..ccrriiee..ccooppppee..uuffrrjj..bbrr//mmbbkkmm// ddooCCoonnhheecciimmeennttoo((MMBBKKMM)) Email do Autor: [email protected] URL do Autor: www.del.ufrj.br/~villas URL do Livro: www.del.ufrj.br/~villas/livro_c++.html Versão do Livro: 5.1, de 17 de Agosto de 2001 Por Sergio Barbosa Villas-Boas (www.del.ufrj.br/~villas) pág. 2 Índice Índice........................................................................................................................................................2 Capítulo 1) Introdução............................................................................................................................17 1.1 Prefácio...................................................................................................................................17 1.2 Histórico do livro....................................................................................................................19 1.3 Escolha de uma tecnologia: uma decisão estratégica.............................................................20 1.3.1 Características do produto “software” 21 1.3.2 Incorporação de novidades 22 1.4 Mercadoria e produto diferenciado........................................................................................24 1.4.1 Mercadoria escassa 24 1.5 Sociedade do conhecimento...................................................................................................25 1.5.1 Mudança do paradigma de negócios 26 1.5.2 “Mercadorização” 26 1.5.3 Remuneração × agregação de valor na cadeia produtiva 27 1.6 Porque C/C++ ?......................................................................................................................27 1.6.1 “Tribos” de tecnologia 27 1.6.2 A escolha tecnológica é uma escolha estratégica 28 1.7 Breve história do C/C++.........................................................................................................30 1.8 Qualidades da Linguagem C/C++..........................................................................................31 1.9 Classificação de interfaces de programas...............................................................................32 1.10 Programando para console.....................................................................................................32 1.11 Linguagens de programação de computador..........................................................................33 1.11.1 Alto nível × baixo nível 33 Capítulo 2) Conheça o Seu Compilador.................................................................................................35 2.1 Visual C++ 6.0.......................................................................................................................35 2.1.1 Reconhecendo o Compilador 35 2.1.2 “Hello world” para DOS 41 2.1.2.1 Adicionando argumentos para a linha de comando....................................................44 2.1.3 Usando o Help 45 2.1.4 Projetos (programas com múltiplos fontes) 46 2.1.5 Bibliotecas 46 “C / C++ e Orientação a Objetos em Ambiente Multiplataforma”, versão 5.1 Esse texto está disponível para download em www.del.ufrj.br/~villas/livro_c++.html Por Sergio Barbosa Villas-Boas (www.del.ufrj.br/~villas) pág. 3 2.1.5.1 Fazer uma biblioteca..................................................................................................46 2.1.5.2 Incluir uma biblioteca num projeto............................................................................48 2.1.5.3 Examinar uma biblioteca............................................................................................48 2.1.6 Debug 48 2.1.7 Dicas extras 49 2.1.7.1 Acrescentando Lib no Project Settings ......................................................................49 2.1.7.2 Class View..................................................................................................................50 2.1.7.3 Usando bibliotecas de ligação dinâmica (DLL).........................................................51 2.1.7.4 DLL para Windows....................................................................................................55 2.1.7.5 Otimização do linker para alinhamento de código.....................................................55 2.1.8 Detectando vazamento de memória 55 2.2 Borland C++ builder 5.0.........................................................................................................56 2.2.1 Reconhecendo o Compilador 57 2.2.2 “Hello world” para DOS 57 2.2.2.1 Adicionando argumentos para a linha de comando....................................................59 2.3 C++ for win32 gratuito...........................................................................................................60 2.3.1 Ming (da GNU) 60 Livro patrocinado, que história é essa ? Vivemos atualmente num mundo conectado e globalizado. Há tecnologia de sobra para copiar conhecimentos em praticamente qualquer forma que possa ser registrado. Portanto, tentar bloquear a cópia do texto pode ser um trabalho de “remar contra a maré”. Optei por disponibilizar gratuitamente a versão em PDF desse texto. Ao faze-lo, investigo um modelo de negócios que pode ser o mais adequado ao ambiente atual. O autor do texto pode doar seu material se quiser, e é o que estou fazendo. Mas ao faze-lo, a atividade de dar autoria ao texto torna-se obviamente não remunerada. Então que estímulo teria o autor em fazer o texto ? Resposta: usa-se o texto como veículo para mensagens de patrocinadores. Isso é feito nesses quadros, inseridos nas páginas de índice. Esse livro não está pronto ainda. Há trechos por melhorar, e outros a acrescentar. Procure por novas versões a cada início de semestre. “C / C++ e Orientação a Objetos em Ambiente Multiplataforma”, versão 5.1 Esse texto está disponível para download em www.del.ufrj.br/~villas/livro_c++.html Por Sergio Barbosa Villas-Boas (www.del.ufrj.br/~villas) pág. 4 2.3.2 djgpp 60 2.4 g++ (do unix)..........................................................................................................................60 2.4.1 “Hello world” 61 2.4.1.1 Adicionando argumentos para a linha de comando....................................................61 2.4.2 Usando o Help 61 2.4.3 Projetos (programas com múltiplos fontes) 61 2.4.4 Bibliotecas 62 2.4.4.1 Incluir uma biblioteca num projeto............................................................................62 2.4.4.2 Fazer uma biblioteca..................................................................................................62 2.4.4.3 Examinar uma biblioteca............................................................................................62 2.4.5 Fazendo uma biblioteca usando libtool 63 2.4.5.1 Instalando uma biblioteca dinâmica...........................................................................64 2.4.6 Debug 65 2.4.7 Definindo um identificador para compilação condicional 65 2.4.8 O pacote RPM do linux 66 2.4.8.1 rpm binário e rpm com fonte......................................................................................66 2.4.8.2 Alguns comandos do rpm...........................................................................................66 Patrocine essa publicação Público Alvo: Profissionais e estudantes de tecnologia de informação. Circulação: Esse texto é literatura recomendada para cerca de 100 alunos por ano (circulação mínima). Considerando as versões anteriores do livro, pelo menos 200 alunos já usaram esse texto. Os alunos são usuários influenciadores, que mostram o material em empresas que trabalham. Na página web do livro há uma lista de interessados em receber notícia sobre novas versões do livro. O número de pessoas que deseja receber notícias sobre o livro é mostrado na página web. Sendo que o formato do livro em PDF pode ser copiado livremente, não há registro de quantas cópias estão efetivamente em circulação, mas é seguramente muito mais que o número de pessoas mostrado na página web do livro. Periodicidade: A cada semestre, o texto é atualizado e melhorado. A nova versão corrente do texto pode sempre ser copiada a partir da página web. A próxima versão está programada para início de 2002. “C / C++ e Orientação a Objetos em Ambiente Multiplataforma”, versão 5.1 Esse texto está disponível para download em www.del.ufrj.br/~villas/livro_c++.html Por Sergio Barbosa Villas-Boas (www.del.ufrj.br/~villas) pág. 5 2.4.8.3 Construindo um rpm...................................................................................................67 2.4.8.3.1 Introdução.............................................................................................................67 2.4.8.3.2 O header...............................................................................................................68 2.4.8.3.3 Preparação (prep)..................................................................................................69 Capítulo 3) Princípios de C/C++............................................................................................................70 3.1 O primeiro programa..............................................................................................................70 3.2 Formato livre..........................................................................................................................70 3.3 Chamada de função................................................................................................................70 3.4 Declaração e definição de funções.........................................................................................71 3.5 Comentários............................................................................................................................71 3.6 Identificador...........................................................................................................................72 3.7 Constantes literais...................................................................................................................72 3.8 Escopo....................................................................................................................................72 3.9 Tipos de dados padrão (Standard Data Types)......................................................................73 3.10 Palavras reservadas do C++ (keywords)................................................................................74 3.11 Letras usadas em pontuação...................................................................................................74 3.12 Letras usadas em operadores..................................................................................................74 Surgiram oportunidades profissionais ? lembre-se do autor ! http://www.del.ufrj.br/~villas O primeiro patrocinador é o autor, cujos dados de contato estão divulgados no texto. Espero ser lembrado pelos leitores em consultorias, projetos, cursos ou empreendimentos que surjam, no ambiente profissional sempre em grande mutação. Como membro da comunidade acadêmica, sou entusiasta defensor de uma parceria tipo “ganha-ganha” entre universidade e empresas privadas ou públicas. Acredito que implantar com sucesso esse tipo de parceria é fator essencial de desenvolvimento econômico e social. Qualquer país precisa muito disso. No caso do Brasil, a necessidade de que a inteligência das universidades seja traduzida em desenvolvimento econômico e bem estar social é evidente e urgente. Veja slides desse livro na web em http://del.ufrj.br/~villas/slides.html “C / C++ e Orientação a Objetos em Ambiente Multiplataforma”, versão 5.1 Esse texto está disponível para download em www.del.ufrj.br/~villas/livro_c++.html Por Sergio Barbosa Villas-Boas (www.del.ufrj.br/~villas) pág. 6 Capítulo 4) Estrutura do Compilador.....................................................................................................75 4.1 Entendendo o Compilador......................................................................................................75 4.2 Protótipos (prototypes)...........................................................................................................76 4.3 Projetos em C/C++.................................................................................................................77 4.4 Header Files (*.h)...................................................................................................................79 4.5 Biblioteca (library).................................................................................................................79 4.5.1 Utilizando Bibliotecas prontas 80 4.5.2 Fazendo bibliotecas 80 4.6 Regras do compilador.............................................................................................................82 Capítulo 5) Fundamentos de C /C++......................................................................................................84 5.1 Chamada de função por referência e por valor.......................................................................84 5.2 Tipos de dados definidos pelo programador..........................................................................85 5.3 Maquiagem de tipos (type casting)........................................................................................85 5.4 Operações matemáticas..........................................................................................................86 5.5 Controle de fluxo do programa..............................................................................................86 5.6 Execução condicional.............................................................................................................87 5.7 Laços (loop) de programação.................................................................................................87 Balico – o mercado de trabalho na web http://www.balico.com.br O Balico é um sistema na web para cadastrar profissionais a procura de emprego, e empresas com ofertas de emprego. O sistema permite o cadastro imediato e gratuito tanto de empresas quanto de profissionais. Formulários específicos dão perfil para as empresas e para os profissionais, de forma que as buscas por oportunidades são eficientes e focadas. Se você está procurando talentos, o Balico é o melhor local para veicular o seu anúncio. “C / C++ e Orientação a Objetos em Ambiente Multiplataforma”, versão 5.1 Esse texto está disponível para download em www.del.ufrj.br/~villas/livro_c++.html Por Sergio Barbosa Villas-Boas (www.del.ufrj.br/~villas) pág. 7 5.7.1 Laço tipo “do-while” 87 5.7.2 while 88 5.7.3 for 88 5.7.4 Alterando o controle dos laços com break e continue 89 5.7.5 Exercício 89 5.8 switch-case.............................................................................................................................90 5.9 arrays......................................................................................................................................90 5.9.1 Arrays multidimensionais 92 5.10 Parâmetros da função main....................................................................................................92 5.11 Compilação condicional.........................................................................................................93 5.12 Pré processador e tokens (símbolos) usados pelo pré-processador........................................93 5.13 #define....................................................................................................................................94 5.14 operador #..............................................................................................................................94 5.15 operador ##............................................................................................................................94 5.16 Número variável de parâmetros..............................................................................................95 Capítulo 6) Técnicas para melhoria de rendimento em programação....................................................96 6.1 Reutilização de código...........................................................................................................96 Vogsys http://www.vogsys.com.br/ A Vogsys Consultoria e Desenvolvimento de Sistemas, é uma empresa especializada no fornecimento de soluções integradas para o segmento de mídia, possui uma expressiva participação no mercado de publicação impressa e on-line. “C / C++ e Orientação a Objetos em Ambiente Multiplataforma”, versão 5.1 Esse texto está disponível para download em www.del.ufrj.br/~villas/livro_c++.html Por Sergio Barbosa Villas-Boas (www.del.ufrj.br/~villas) pág. 8 6.2 Desenvolvimento e utilização de componentes......................................................................97 6.3 Programação estruturada........................................................................................................98 Capítulo 7) Programação orientada a objeto..........................................................................................99 7.1 Introdução...............................................................................................................................99 7.1.1 Abstração do software 99 7.1.2 Mudança de nomenclatura 100 7.1.3 Objetos 100 7.2 Introdução a análise orientada a objetos...............................................................................100 7.3 Polimorfismo........................................................................................................................101 7.3.1 Argumento implícito (default argument) 102 7.4 Uso de classes.......................................................................................................................102 7.5 Herança.................................................................................................................................103 7.6 Sobrecarga de operadores.....................................................................................................106 7.7 Construtor e destrutor de um objeto.....................................................................................107 7.7.1 Default constructor (construtor implícito) 108 7.7.2 Ordem de chamada de construtor e destrutor para classes derivadas 108 7.7.3 Inicialização de atributos com construtor não implícito 109 VBMcgi – programação para Internet (CGI) com C++ http://www.vbmcgi.org Para quem sabe C++, ou quer saber, VBMcgi é a melhor opção para programação de sistemas de software para Internet. Trata-se de uma biblioteca gratuita, distribuída com código fonte original. A sua melhor característica é o fato de isolar o trabalho do webmaster do webdesigner. Isto é, o webdesigner pode usar programas de HTML comerciais, como Dream Weaver ou Front Page. Apenas o webmaster é programador C++ e lida com banco de dados. Além disso, VBMcgi é multiplataforma, testado em Windows e Unix. Quem desenvolve usando ASP, PHP, JSP (java), Perl ou Cold Fusion, pode usar com C++ e VBMcgi. Não há problema em usar ao mesmo tempo C++/VBMcgi e outra tecnologia. “C / C++ e Orientação a Objetos em Ambiente Multiplataforma”, versão 5.1 Esse texto está disponível para download em www.del.ufrj.br/~villas/livro_c++.html Por Sergio Barbosa Villas-Boas (www.del.ufrj.br/~villas) pág. 9 7.7.4 Copy constructor (construtor de cópia) 110 7.8 lvalue....................................................................................................................................111 7.9 Encapsulamento de atributos e métodos..............................................................................112 7.10 União adiantada × união atrasada (early bind × late bind)..................................................114 7.10.1 Destrutores virtuais 116 7.11 Classe base virtual................................................................................................................117 7.12 Alocação de Memória..........................................................................................................119 7.12.1 Vazamento de memória 120 7.12.2 Objetos com memória alocada 121 7.12.3 Array de objetos com construtor não padrão 123 Capítulo 8) Biblioteca padrão de C++..................................................................................................125 8.1 Introdução.............................................................................................................................125 8.2 Entrada e saída de dados pelo console.................................................................................125 8.3 Sobrecarga do operador insersor (<<) e extrator (>>)..........................................................126 8.4 Formatando Entrada / Saida com streams............................................................................127 8.4.1 Usando flags de formatação 128 8.4.2 Examinando os flags de um objeto ios 129 VBLib – biblioteca gratuita multiplataforma para uso geral http://www.vbmcgi.org/vblib Para quem usa C++, a VBLib oferece algumas classes bastante úteis. A VBMcgi usa VBLib. • Classe genérica (template) para lista encadeada (class VBList) • Classe de string fácil e poderosa (class VBString) • Classe para detectar vazamento de memória (VisualC++ only) VBMemCheck • Classe para ajudar a medição de tempo (class VBClock) • Classe para mostrar o conteúdo de um contenedor STL (class VBShowSTLContainer) • Uma classe de calendário, que retorna o dia da semana para uma data dada (class VBCalendar) “C / C++ e Orientação a Objetos em Ambiente Multiplataforma”, versão 5.1 Esse texto está disponível para download em www.del.ufrj.br/~villas/livro_c++.html Por Sergio Barbosa Villas-Boas (www.del.ufrj.br/~villas) pág. 10 8.4.3 Definindo o número de algarismos significativos 130 8.4.4 Preenchendo os espaços vazios com o método fill 131 8.4.5 Manipuladores padrão 131 8.4.6 Manipuladores do usuário 132 8.4.7 Saída com stream em buffer 133 8.5 Acesso a disco (Arquivos de texto para leitura/escrita).......................................................134 8.5.1 Escrevendo um arquivo de texto usando a biblioteca padrão de C++ 134 8.5.2 Escrevendo um arquivo de texto usando a biblioteca padrão de C 134 8.5.3 Lendo um arquivo de texto usando a biblioteca padrão de C++ 135 8.5.4 Dica para leitura de arquivo de texto. 135 8.5.5 Lendo um arquivo de texto usando a biblioteca padrão de C 136 8.6 Acesso a disco (Arquivos binários para leitura/escrita).......................................................136 8.6.1 Escrevendo um arquivo binário usando a biblioteca padrão de C++ 136 8.6.2 Escrevendo um arquivo binário usando a biblioteca padrão de C. 137 8.6.3 Lendo um arquivo binário usando a biblioteca padrão de C++ 138 8.6.4 Lendo um arquivo binário usando a biblioteca padrão de C 138 Capítulo 9) Programação genérica (template)......................................................................................140 VBMath – biblioteca gratuita multiplataforma para matemática http://www.vbmcgi.org/vbmath Para quem usa C++, a VBMath oferece classes para matemática matricial. Desenvolvida em programação genérica (template), o usuário pode facilmente criar classes matriciais codificadas com float, double ou long double, por exemplo. As funções básicas de operação matemática matricial estão implementadas (+, -, *, /, inverse, etc). Essa biblioteca é recomendada para implementação de contas matriciais de pequena dimensão, ou quando o requerimento de desempenho de execução não é severo. Nesse caso, aproveita-se a vantagem de fazer o programa de forma rápida e facilmente compreensível. Também está implementada uma classe (genérica) VBParser para calcular em tempo de execução o resultado de uma fórmula matemática. “C / C++ e Orientação a Objetos em Ambiente Multiplataforma”, versão 5.1 Esse texto está disponível para download em www.del.ufrj.br/~villas/livro_c++.html
Description: