Desenvolvimento - C/C++

Série “Iniciando em C++” – O que é o C++

O objetivo desta série é publicar vários artigos relacionados a linguagem C++ para que os que não conhecem a linguagem ainda possa aprender esta maravilhosa linguagem de programação e utilizar todos os seus recursos.

por Fabiano Maciel



Introdução

A linguagem de programação C++ é, na verdade um superconjunto da linguagem de programação C (seu primeiro nome foi "C com Classes"). A razão da linguagem C ter sido chamada de C é simplesmente porque ela foi sucessora de uma linguagem chamada B, desenvolvida por Ken Thompson em 1970 e que rodava em um DEC PDP-7, um computador muito menos potente do que um PC moderno. O sistema operacional UNIX original rodava naquela máquina, e foi ali também onde o B nasceu (o B em si foi o sucessor de uma linguagem chamada BCPL, escrita por Martin Richards).

No entanto, o B era um tanto quanto restrito. Em 1972 Dennis Ritchie e Ken Thompson criaram a Linguagem C para aumentar o poder do B. O C não se tornou popular imediatamente após sua criação. Na verdade, ele permaneceu como um assunto quase esotérico pelos seis anos seguintes. Em 1978, Brian Kernighan e Dennis Ritchie escreveram o famoso "The C Programming Language", o qual tenho um exemplar original em Inglês da 1ª. Edição, obrigado. Este livro simplesmente mudou tudo. Com a divulgação do C houve uma explosão de interesse, e a linguagem foi implementada em computadores de 8 bits que rodavam o sistema operacional CP/M. Mas foi o lançamento do IBM PC, em 1981, que realmente deu impulso ao C. Quando a revolução do PC começou, o C estava em uma posição privilegiada para aproveitá-la. À medida que o número de PC"s explodia, também explodia o número de usuários do C.

O C libertou-se de seu ambiente UNIX original e tornou-se uma linguagem "popular" para microcomputadores. Vale a pena salientar que ele se tornou popular por uma razão muito boa: os programadores gostaram de usá-lo. Ao contrário de outras linguagens, o C dava ao programador grande controle sobre o computador, tal controle, no entanto, traz também a responsabilidade: há muitas coisas que você pode fazer em C que arruinarão seu programa ou travarão seu computador. Ou seja, você pode fazer em C coisas que outras linguagens jamais permitiriam. Os programadores gostaram disso, imagine quem não gostaria poder fazer praticamente tudo com um computador! O C tornou-se uma ferramenta e não um obstáculo. O C tornou-se a combinação perfeita entre o controle e poder de programação.

À medida que a popularidade do C crescia, crescia também o número de aplicativos escritos em C.

Depois de certo tempo, os programas em C ficavam cada vez maiores e algumas pessoas começaram a achar que as construções de programação padrão simplesmente não estavam à altura da tarefa. Uma solução seria tornar os programas mais modulares, através do uso de funções. No entanto algumas funções acabavam precisando compartilhar dados, outras precisavam coordenar seu trabalho com outras e, de novo, era possível acabar precisando ter de guardar na cabeça dúzias de coisas ao mesmo tempo. Aí então apareceu o Dr. Bjarne Stroustrup e desenvolveu o C++, inspirado em parte por outras linguagens, como o Simula67, Smalltalk, até hoje considerada uma das mais puras linguagens OO.

O trecho de uma entrevista com o Dr. Bjarne Stroustrup:

"Inventei C++, escrevi suas definições preliminares e produzi sua primeira implementação. Escolhi e formulei os critérios de projeto para C++, projetei seus principais recursos e era responsável pelo processamento de propostas de extensão no comitê de padrões C++".

Acho que ninguém melhor como referência na linguagem que o Dr. Bjarne. Mais detalhes sobre ele, acesse http://www.research.att.com/~bs/homepage.html

O nome C++ foi criado por Rick Mascitti em 1983, o nome representa um incremento (operador ++ de incremento no C) na linguagem C. A linguagem não foi chamada de D porque é uma extensão da linguagem C. No início não havia documentação de projeto do C++, nem comitê para aprovação dos padrões C++. Em 1987 (ano que comecei a me dedicar em programação de computadores) com a explosão do C++ foi-se necessário que a padronização formal do C++ acontecesse. Após vários anos e várias propostas de padronizações, em 1995 foi divulgado um projeto de padrão inicial para revisão pública e em 1998 um padrão internacional formalmente aprovado para C++.

Bem pessoal, acho que agora todos conhecem um pouco da história do C++, vamos dar prosseguimento ao nosso estudo.

Vamos agora abordar uma visão geral do C++, sem entrar em detalhes minuciosos de definição da linguagem. O objetivo é fornecer uma visão geral de C++ e as principais técnicas para usá-la. Logo nos próximos artigos da série "Iniciando em C++" vamos fornecer informações detalhadas sobre o que está descrito abaixo neste artigo.

O que estamos passando daqui pra frente é uma visão geral do C++, ou seja, da linguagem de programação C++, e não de um pacote de desenvolvimento, seja ele, Visual C++, C++ Builder, C++.NET VS.NET, GCC (Unix). Estes próximos artigos descreverão o C++ ISO/ANSI. Depois após você estiver familiarizado com o C++, vamos tomar um outro rumo, que é o pacote da Microsoft VS.NET C++ e MS Visual C++ 6.0.

No próximo tópico, iniciaremos nossa série propriamente dita, e é imprescindível que você que deseja aprender C++, tenha alguns conhecimentos de Orientação a Objeto, abstração de dados, etc.

O que é o C++

O C++ é uma linguagem de uso geral, com uma tendência para a programação de sistemas e que:

  • É uma linguagem C melhorada;
  • Suporta abstração de dados;
  • Suporta programação orientada a objetos;
  • Suporta programação genérica;

Como mencionei acima, não vamos tentar adivinhar qual é o sistema operacional que você está utilizando, vamos aprender o C++ ISO/ANSI padrão, que a partir de agora será chamado de C++. Nesta etapa não vamos fazer referências a janelas, listbox, textbox, gráficos, etc., ou seja, tudo o que depender de sistema operacional. Vamos utilizar nesta fase a "saída padrão", ou seja, a console. Compilador e Editor

Como um grande fã da Microsoft, não poderia deixar de utilizar as ferramentas MS, então para a parte prática, vamos utilizar o VS.NET para isso. Quem não tiver o VS.NET, poderá também utilizar o Visual C++ 6.0 ou C++ Builder da Borland, ou quem sabe ainda, algum outro compilador Unix/Linux de sua preferência.

Todos os projetos que vamos desenvolver agora serão baseados em uma console DOS, ou seja, uma Win32 Console Application.

Começando um novo Projeto

Acho que já está na hora de começar, vamos lá. Como estamos usando o VS.NET 2003, vamos iniciar um novo projeto. Selecione o menu File->New->Project e em seguida será apresentada a seguinte tela:

Você deverá selecionar sempre Visual C++ Projects->Win32 Console Project

ATENÇÃO: Se estiver utilizando o VS.NET 2003, atenção para a seleção de aplicações Win32 e não aplicações .NET.

Você deverá estar perguntando agora, porque aplicações Win32 e não aplicações .NET???

Simples, porque as aplicações .NET utilizam as Managed Extensions, ou seja, extensões gerenciadas, que de uma certa forma encapsulam as funcionalidades do C++ padrão. E o nosso objetivo agora é o aprendizado do C++ padrão.

Logo mais adiante no nosso curso, estarei explicando outros tipos de aplicações, mas por enquanto vamos utilizar Win32 Console Project ou para o Visual C++ 6.0 Win32 Console Application.

Após selecionar o tipo de projeto, você deverá selecionar Project Empty.

Obs.: No VC++.NET você deverá selecionar Project Settings para alterar esta opção. Caso não venha a selecionar Project Empty o VC++ criará uma classe com uma aplicação Hello World já definida, que por enquanto não utilizaremos.

Ciclo de Desenvolvimento

Se todos os programas funcionassem logo na primeira vez que fosse testado, o ciclo de desenvolvimento completo seria o seguinte: escrever o programa, compilar o código fonte, vincular o programa e executá-lo. Infelizmente, quase todos os programas, independentemente do grau de complexidade que apresente, podem e conterão erros (Lei de Murphy), mais conhecidos como bugs. Alguns erros farão com que a compilação falhe, outros farão com que a vinculação ou linkedição não funcione e haverá aqueles que só darão problema quando o programa for executado.

Independentemente do tipo de erro com o qual você se depare, corrija-o; sua correção envolve a edição do código-fonte, uma nova compilação, uma nova vinculação e por fim uma nova execução do programa. Atualmente com as novas versões do VC++ (.NET e VS 6.0) é perfeitamente possível editar o código enquanto se depura a aplicação, e uma compilação incremental é feita. Não recomendo esta prática, exceto casos particulares, pois algumas referências de ponteiros poderão ser perdidas e seu sistema ficará instável.

Nosso primeiro Programa em C++

Não poderia deixar de ser, afinal todos os autores citam o exemplo seja em qualquer linguagem, o nosso tradicional "Alo Mundo" ou podemos utilizar "Hello World". Não vamos fugir à regra.

Após criar o projeto vazio, selecione o menu File->New e selecione C++ Source File. (para VC++ 6.0) e selecione File->Add New Item e selecione C++ Source File (VC++.NET) Agora digite o código abaixo:

<code>
#include <iostream>

using namespace std;

int main()
{
	cout << "Hello World!\n";
	return 0;
}
</code>

Quando tiver digitado o texto acima, selecione a opção Salvar.

Na C++ todos os caracteres, incluindo os sinais de pontuação, são de fundamental importância e devem ser digitados com absoluta precisão. Além disso, a C++ faz distinção entre letras maiúsculas e minúsculas; portanto, há diferença entre Return e return.

Para compilar e executar o programa acima, tecle F5 ou CTRL-F5 (Visual Studio 6.0 ou .NET) para executar e esperar que o usuário tecle algo para continuar, permitindo ver a saída da console.

Quanto às funcionalidades de cada ambiente de desenvolvimento, sugerimos você de dar uma breve leitura no manual do ambiente utilizado para verificar como se compila um programa, como se depura um programa, etc.

DICA: No Visual Studio, a tecla F5 executa o programa, compilando-o se necessário e fazendo a linkedição do mesmo. Para Compilar um programa somente, selecione a opção Compile do menu Build.

Erros de Compilação

Os erros em tempo de compilação podem ocorrer por uma série de razões. Geralmente, eles são decorrentes de uma pequena inversão de letras em uma palavra ou outro pequeno erro cometido acidentalmente. Os bons compiladores não apenas lhe dirão o que aconteceu de errado, como também identificarão o local exato em que houve um erro de código. Os melhores compiladores do mercado chegarão até a sugerir uma solução para o problema!

ATENÇÃO: Embora os compiladores modernos tentem localizar a linha em que está o erro, a ausência de um ponto-e-vírgula ou de uma chave de fechamento pode confundir o compilador e você pode achar que ele está apontando para uma linha que não apresenta problema. Tome muito cuidado com os erros de pontuação, cuja detecção pode ser mais difícil.

Você pode testar este programa colocando intencionalmente um erro em seu programa. Se o Exemplo01.cpp for executado sem problema, edite-o agora e remova a chave de fechamento existente no final do código. Seu programa terá a seguinte aparência:

<code>
#include <iostream>

using namespace std;

int main()
{
	cout << "Hello World!\n";
	return 0;
</code>

Recompile o seu programa a fim de ver um erro semelhante:

Exemplo01.cpp(11): fatal error C1075: end of file found before the left brace "{" at Exemplo01.cpp(7)" was matched

Esta mensagem de erro é do VC++.NET, no VC++ 6.0 é diferente, mas tem o mesmo significado.

Algumas vezes, os erros apenas o aproximavam do problema. Se o compilador pudesse identificar todos os erros com exatidão, ele mesmo corrigiria o código.

Neste artigo, você aprendeu a preparar o programa em C++, lembrando que este procedimento se aplica ao VC++ 6.0 e VC++.NET. Caso você tenha alguma dúvida sobre a utilização de outros ambientes de desenvolvimento, verifique na documentação do C++ do ambiente para saber como faze-lo, caso necessário entre em contato, que terei imenso prazer em ajudá-lo.

Fabiano Maciel

Fabiano Maciel - MCP, formado pela Universidade Federal de Viçosa em Ciência da Computação atualmente é Gerente de Desenvolvimento da empresa ARC do Brasil (www.arcbrasil.com.br), atuando principalmente no setor automobilístico com automação industrial. Trabalha com informática há mais de 14 anos, utilizando-se as principais linguagens de programação (C++, Visual Basic, Visual Basic.NET, Delphi) existentes no mercado, bem com as principais técnicas de modelagem e desenvolvimento de aplicativos. Co-Lider do Grupo de usuários .NET Raptors (www.dotnetraptors.com.br) escreve artigos técnicos para diveros meios de comunicação da área de informática.