Desenvolvimento - C/C++

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

Neste artigo da série Iniciando em C++ você aprenderá quais são as partes de um programa em C++, como elas se interagem e o que é uma função e o que ela faz.

por Fabiano Maciel



Introdução

Neste artigo da série Iniciando em C++ você aprenderá quais são as partes de um programa em C++, como elas se interagem e o que é uma função e o que ela faz.

As partes de um programa simples

Antes de nos aprofundarmos nos detalhes da C++, como classes e variáveis, vamos reservar um tempinho para termos uma noção do processo de montagem de um programa.

O programa simples apresentado no primeiro artigo, Hello.cpp, tem muitas partes interessantes. Agora vamos ver o programa em detalhes. A listagem abaixo reproduz a versão original do Hello.cpp.

1: #include <iostream>
2:
3: using namespace std;
4:
5: int main()
6: {
7: 	cout << "Hello World!\n";
8:	return 0;
9: }

Output:
Hello World!

Na linha 1, o arquivo iostream.h é incluído no arquivo. Para o compilador é como se você tivesse digitado todo o conteúdo do arquivo iostream.h na abertura do Hello.cpp.

Examinando o #include caractere por caractere

O primeiro caractere é o símbolo "#", que é um sinal para o pré-processador. O pré-processador tem como função ler o código-fonte à procura de linhas que comecem com o símbolo # e, quando o localiza, modifica o código de acordo com a instrução do pré-processador.

Include é uma instrução do pré-processador que diz o seguinte: "O que vem a seguir é um nome de arquivo. Localize o arquivo e leia-o agora mesmo". Os sinais <> em tornodo nome do arquivo dizem a seguinte informação para o pré-processador: "Procure este arquivo nos lugares de sempre". Se o seu compilador estiver devidamente configurado, os <> farão com que o pré-processador procure o arquivo iostream no diretório que armazena todos os arquivos de cabeçalho do seu compilador. O arquivo iostream (Input-Output-STREAM) é usado pelo cout, que remete o texto para a tela.

Na prática, a linha 1 incluir o arquivo iostream no programa, como se você mesmo o tivesse digitado.

DICA 1: Porque no código tem <iostream> e não <iostream.h>? Bem no C++ atual, o arquivo de cabeçalho não contêm a extensão .H. Eram utilizados na versão do C++ antigo.

DICA 2: Porque utilizar "<>" e ""? Bem caso você utilize "" o compilador buscará somente no path onde está o seu código.

Análise linha a linha

A linha 3 indica que estamos utilizando o namespace STD. Um namespace permite dividir um programa em regiões que mantêm suas próprias tabelas de símbolos, estas regiões são chamadas de regiões declarativas. A idéia por trás dos namespaces é evitar que nomes declarados em um programa entrem em conflito com outros nomes definidos no mesmo programa, uma vez que os nomes de um namespace são independentes daqueles de outros.

O que estamos realmente fazendo na linha 3 é importar os símbolos do namespace STD para o espaço de nomes global. Quando importamos um símbolo para o espaço de nomes global ele fica disponível a todo o código do programa. Se não importarmos um símbolo e outro namespace , para referenciá-lo precisaremos qualifica-lo com seu namespace da seguinte maneira: namespace::nome. Por exemplo: std::cout.

A linha 5 inicia o programa propriamente dito com uma função cujo nome é main(). Todos os programas em C++ têm uma função main(). Em geral, uma função é um bloco de código que executa uma ou mais ações. As funções são invocadas (alguns programadores preferem dizer que são chamadas) por outras funções, mas main() é especial. Quando o seu programa é iniciado, main() é chamada automaticamente.

main(), como todas as outras funções deve afirmar o tipo de valor que retornará. Mais uma vez, main() é especial, pois retornará sempre int . Todas as funções começam com uma chave de abertura ({) e terminam com uma chave de fechamento (}). As chaves da função main() encontram-se nas linhas 6 e 9. Tudo o que estiver entre as chaves de abertura e de fechamento será considerado como parte integrante da função.

cout é utilizado para imprimir uma mensagem na tela.

Os dois caracteres finais, "\n", fazem com que cout coloque uma nova linha depois das palavras "Hello World!". Na linha 8 chamamos o return 0. Ela retorna o controle para o sistema operacional.

A função main() termina na linha 9, com a chave de fechamento.

Comentários

Um comentário é um texto adicionado para explicar (para você ou outros programadores) o que está acontecendo com seu código. O comentário não tem efeito; serve apenas como documentação.

Há dois tipos de comentários em C++. O comentário de barra dupla (//), que chamaremos de comentário no estilo C++, manda o compilador ignorar tudo que vem depois das barras até o final da linha.

O comentário de barra-asterisco (/*), no estilo C, manda o compilador ignorar tudo o que vem depois até que uma marca de comentário de asterisco-barra (*/) seja detectada.

Funções

Embora main() seja uma função incomum, pois é chamada automaticamente quando seu programa é inicializado. Todas as outras funções são chamadas pelo seu próprio código à medida que o programa é executado.

Um programa é executado linha a linha na ordem em que aparece no código-fonte, até uma função ser chamada. Em seguida, o programa desvia para executar a função. Quando termina a função, ele retorna o controle para a linha posterior à função chamadora.

Quando um programa precisa executar um serviço, ele chama uma função para executa-lo e, quando a função retorna, o programa volta para o ponto imediatamente anterior à função chamada.

As funções retornam um valor ou retornam um void, o que significa que não retornam nada. Observe que main() sempre retorna um int.

Uma função que inclui dois inteiros deve retornar a soma e, dessa forma, seria definida para retornar um valor inteiro. Uma função que se restringe a imprimir uma mensagem não tem nada a retornar e, portanto, seria declarada para retornar nula.

As funções consistem em um cabeçalho e um corpo. O cabeçalho consiste, por sua vez, no tipo de retorno, no nome da função e nos parâmetros dessa função. O cabeçalho também é definido como protótipo da função. Os parâmetros de uma função permitem que os valores sejam passados para a função. Assim, se a função fosse adicionar dois números, os números seriam os parâmetros da função. Veja um exemplo abaixo:

int Sum(int a, int b)

Um parâmetro é uma declaração do tipo de valor que será passado; o verdadeiro valor passado pelo função chamadora é chamada de argumento. Muitos programadores usam esses dois termos, parâmetros e argumentos, com sinônimos.

O nome da função e seus parâmetros (que é o cabeçalho sem valor de retorno) é chamado de assinatura da função.

O corpo de uma função consiste em uma chave de abertura, nenhuma ou alguma(s) instrução(ões) e uma chave de fechamento. As instruções constituem o trabalho da função. Uma função pode retornar um valor usando uma instrução return. Essa instrução fará com que a função seja fechada. Se você não colocar uma instrução return na sua função, ela automaticamente retornará um void no final da função. O valor retornado deve ser do tipo declarado no cabeçalho da função. Abaixo segue um exemplo que demonstra uma função que utiliza dois parâmetros inteiros e retorna um valor inteiro. Por enquanto não vamos nos preocupar com a sintaxe ou o modo como os valores inteiros funcionam.

//Listagem 2.2	Func.cpp demonstra uma função simples.

#include <iostream>
using namespace std;
int Add (int x, int y)
{
	cout << "Em Add(), recebeu " << x << " e " << y << "\n";
	return (x+y);
}

int main()
{
	cout << "Estou em main()!\n";
	int a, b, c;
	cout << "Digite dois números: ";
	cin >> a;
	cin >> b;
	cout << "\nChamando Add()\n";
	c=Add(a,b);
	cout << "\nDe volta para main().\n";
	cout << "c foi definido como "<< c;
	cout << "\nSaindo...\n\n";
	return 0;
}

A função Add() é definida na linha 3. O programa em si começa na linha 12, na qual ele imprime uma mensagem. O programa solicita dois números para o usuário (linhas 14 e 15). O usuário digita cada número, separado por um espaço, e em seguida pressiona <Enter>. Main() passa os dois números digitados pelo usuário como argumentos para a função Add() na linha 18.

O processamento desvia para a função Add(), que começa na linha 3. Os parâmetros a e b são impressos e, em seguida, adicionados. O resultado é retornado na linha 7 e a função retorna.

Nas linhas 15 e 16, o objeto cin é usado para obter um número para as variáveis A e B, e cout é usado para remeter os valores para a tela. As variáveis e outros aspectos desse programa serão depurados nos próximos artigos.

Neste artigo você aprendeu as partes que compõem um programa C++ e como elas se inter-relacionam, bem como aprendeu o que é uma função e como utiizá-la.

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.