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 MacielNeste 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.