Você está na página 1de 13

Apostila de Linguagem de Programação: C++, Versão 1.0.

Professor: Marcelo Luís Moreira

Preparando o ambiente de desenvolvimento


Para desenvolver programas em C++ no Windows é necessária apenas a instalação de uma IDE (Integrated
Development Environment), ou seja, um software para desenvolvimento de programas. Existem diversas opções,
a maioria gratuita, e nessa apostila será utilizado como exemplo o Dev-C++, que pode ser baixado em
https://sourceforge.net/projects/orwelldevcpp/.

Estrutura básica
Observe o exemplo da estrutura básica de um programa em C++:
#include <iostream>
using namespace std;

int main(){

As duas primeiras linhas preparam o ambiente de programação para receber os comandos que serão
utilizados na maioria dos nossos programas. Por enquanto, vamos manter sempre essa estrutura e escrever
nosso código entre as chaves depois de int main(){.
Importante frisar que o C++, como muitas outras linguagens de programação, faz distinção entre maiúscula e
minúscula, então se você escrever “INT”, por exemplo, o programa não funcionará, retornando mensagem de
erro.

Saída de dados
Observe o exemplo de estrutura de saída (cout) em C++:
#include <iostream>
using namespace std;

int main(){
cout << “Ola mundo!”;
}

Resultado:

O comando cout seguido de << nos permite exibir mensagens no console do computador. Sempre que a
mensagem for um texto como no exemplo, deve vir entre aspas duplas.
Você pode utilizar vários comandos de saída de texto, mas para quebrar linha é necessário utilizar comandos
especiais, são eles:
a) “\n” é um texto especial, portanto deve vir dentro de aspas duplas;
b) endl é um comando que deve ser concatenado ao texto exibido pelo comando cout. O sinal de << é
utilizado para a concatenação de elementos de saída.
#include <iostream>
using namespace std;

int main(){
cout << “Esse e a primeira linha de texto\n”;
cout << “Essa e a segunda linha de texto” << endl;
cout << “Essa e a terceira linha de texto”;
}

Resultado:

Variáveis
Grosso modo, variáveis são palavras que guardam valores que podem mudar ao longo do funcionamento do
programa. As variáveis têm tipos, que identificam quais valores são validos para as variáveis. Antes de
efetivamente usar uma variável, é necessário fazer sua declaração, informando o tipo, como no exemplo a seguir:
#include <iostream>
using namespace std;

int main(){
int x;
double a, b, c;
string sobrenome;
double nota1, nota2, media;
}

Os tipos de dados mais comuns são os seguintes:


a) Números inteiros: int
b) Números reais/fracionários: double ou float;
c) Caracteres: char;
d) Texto: string;
e) Booleano/lógico: bool;

Por exemplo, o nome de uma pessoa seria do tipo string, enquanto a idade seria int e a média das notas de
um aluno seria double ou float.
Uma vez declarada, a variável pode ter valores atribuídos a ela com o símbolo de igualdade. Importante
lembrar que em C++ esse símbolo representa atribuição, ou “recebe”. Observe o exemplo:
#include <iostream>
using namespace std;

int main(){
double a, b;
a = 7;
b = a + 10;
cout << b;
}
Podemos intercalar texto e variável em uma saída, gerando frases que passem a mensagem de forma mais
clara. Para isso é usado o símbolo de concatenação de saída, o <<. Observe:
#include <iostream>
using namespace std;

int main(){
double a, b;
a = 7;
b = a + 10;
cout << “Resultado: “ << b;
}

Resultado:

Atenção: A variável nunca deve vir dentro das aspas, pois nesse caso seria escrito apenas seu nome (o texto
“b”, no caso) e não seu valor.

Entrada de dados
Até o momento, os valores a ser processado pelo computador o computador (exibir o nome de alguém,
calcular uma soma, etc.) eram determinados previamente pelo programador (no caso você) e assim toda vez que
o programa é rodado, a menos que o código fonte seja alterado, ele sempre retorna o mesmo resultado.
Programas reais são dinâmicos, ou seja, processam os dados entrados pelo usuário. Para receber valores do
usuário é utilizado o comando cin seguido de >> e a variável que deve armazenar o que o usuário do programa
digitar. Além disso, geralmente colocamos um comando de saída de texto (cout) informando ao usuário o que
digitar antes de efetivamente receber o valor com cin. Observe o exemplo:
#include <iostream>
using namespace std;

int main ()
{
double x, y, z;
cout << "Digite um numero: ";
cin >> x;
cout << "Digite outro numero: ";
cin >> y;
z = x + y;
cout << "Resultado da soma: " << z;
}

Observe no exemplo a seguir como podemos utilizar o cin para receber do usuário mais de um valor ao
mesmo tempo:
#include <iostream>
using namespace std;

int main(){
int x, y;
cout << "Digite dois numeros: ";
cin >> x >> y;
cout << "\n\n a soma dos numeros eh: " << (x+y);
}

Note que justamente pelo cin poder receber dois ou mais valores separados por espaço, ele não é ideal para
receber alguns valores de texto, como nomes próprios, frases, nomes de rua, etc.
Para isso, recomenda-se o uso da função getline(cin, VAR), substituindo VAR pela variável que receberá a
entrada do usuário. Veja seu uso no exemplo:
#include <iostream>
using namespace std;

int main(){
string nome;
cout << "Digite seu nome complete\n";
getline(cin, nome);
cout << "Bom dia, " << nome;
}

Observação importante: a função getline(cin, VAR) pode gerar conflito com outro uso da mesma, ou seja, se
você quiser receber dois textos de múltiplas palavras. Para evitar isso, utilize a função cin.ignore() após receber
os dados desejados.
#include <iostream>
using namespace std;

int main(){
string nome, endereco;
cout << "Digite seu nome completo\n";
getline(cin, nome);
cin.ignore();
cout << "Digite seu endereço\n";
getline(cin, endereco);

cout << "Bom dia, " << nome;


}

Comentários
Caso você queira deixar anotações no seu código para lembrar mais tarde, ou para que um colega de
trabalho entenda mais facilmente seu programa, você pode utilizar comentários. Estes são escritos de duas
formas: duas barras (//) para comentário em linha ou barra-asterisco e asterisco-barra (/* */) para comentário
em bloco. Veja no exemplo:
#include <iostream>
using namespace std;

int main(){
//Esta linha é um comentário e não será lido pelo compilador
/*Este bloco de texto
É um comentário até que
Eu o finalize*/
}

Exercícios I
a) Escreva um programa em C++ que leia um tempo em meses e retorne essa quantidade em anos.

b) Escreva um programa em C++ que solicite ao usuário o preço unitário de um produto e a quantidade a
ser vendida. No final mostre o valor total da venda.

c) Escreva um programa que recebe o endereço do usuário, seu nome, o produto que esta sendo comprado
e a quantidade. Depois o programa deve exibir uma mensagem de confirmação do tipo “Caro [NOME], a
solicitação de entrega de [QUANTIDADE] [PRODUTO] no endereço [ENDERECO] foi realizada com
sucesso”.
Estruturas Condicionais
Com a entrada de dados do usuário, nossos programas tornaram-se mais dinâmicos, porém eles ainda são
muito lineares. Apenas com os comandos vistos até o momento, é possível calcular a média que um aluno obteve
na escola, mas não informar se ele foi aprovado ou não, se ele teve a maior nota da turma, ou se ele passou com
nota, mas ficou reprovado por falta.
Para esses tipos de problema é necessário utilizar uma estrutura condicional, ou seja, uma estrutura onde
parte do programa será executada apenas se determinada condição for realizada. Isso é feito com a função if().
Observe o exemplo abaixo que verifica se a idade informada pelo usuário é de uma pessoa adulta ou não:
#include <iostream>
using namespace std;

int main(){
int idade;
cout << "Digite sua idade \n";
cin >> idade;
if(idade < 18){
cout << “Usuario menor de idade”;
}
else{
cout << “Usuario maior de idade”;
}
}

O algoritmo da função if() pode ser descrita da seguinte forma:


If(condição){
//Comandos caso a condição seja verdadeiro;
//Comandos caso a condição seja verdadeiro;
//Comandos caso a condição seja verdadeiro;
else{
//Comandos caso a condição seja falsa;
//Comandos caso a condição seja falsa;
//Comandos caso a condição seja falsa;
}

O comando else é opcional e representa o caso da condição do if() não ser verdadeira. Você pode usar como
no exemplo anterior, que tinha dois resultados específicos a partir do teste da idade do usuário, mas por vezes
ele não será necessário.
Os seguintes são os operadores lógicos que podem ser utilizados como a condição de uma função if():

Assim temos a seguinte leitura de uma estrutura condicional:


Se determinada condição, representada entre parênteses, for
verdadeira, os comandos dentro das chaves do if() devem ser
executados. Senão, os comandos dentro das chaves do else que
devem ser executados, ignorando os do if(). Veja mais um
exemplo a seguir:
#include <iostream>
using namespace std;

int main ()
{
int x;
cout << "Digite um numero: ";
cin >> x;
if(x>5){
cout << "O valor digitado e maior que 5" << endl;
}
else{
cout << "O valor digitado não é maior que 5" << endl;
}
cout << "Obrigado por participar" << endl;
}

Observe que no exemplo acima, o usuário digita um número (armazenado em x) e o código testa se ele é
maior que 5 (if(x>5)). Em seguida, duas coisas podem acontecer:
d) Se o usuário digitou um valor maior que 5 (7, por exemplo), será escrito na tela "O valor digitado e maior
que 5";
e) Se o usuário digitou um valor que não é maior que 5 (1, por exemplo) toda a parte dentro das chaves não
será executada;
Finalmente, independente do valor digitado, será exibida a mensagem "Obrigado por participar", pois
acontece depois da função condicional if().

Exercícios II
a) Escreva um programa em C++ que recebe um número e diz se ele é menor que 20.

b) Pesquise sobre os cinco operadores aritméticos em C++ e escreva um programa que recebe um número e
diz se é par ou impar.

c) Escreva um programa em C++ que recebe as quatro notas de um aluno, calcula sua média e diz se ele foi
aprovado ou não. Considere média mínima 7 para aprovação.

Estruturas Condicionais Compostas


Por vezes é necessário combinar condições para determinar um resultado. Por exemplo, um aluno só pode
ser aprovado se tiver nota acima da média e uma quantidade mínima de presença nas aulas. Para resolver esse
problema temos duas opções:
a) Condições aninhadas: É possível escrever um programa satisfatório utilizando a sintaxe vista até o
momento, veja abaixo:
if (nota >=7){
if (presenca >= 20) {
cout << "Aprovado";
}
else {
cout << "Reprovado";
}
}
else {
cout << "Reprovado";
}

Observe então que no fragmento de código acima primeiro verificamos se o aluno obteve nota suficiente. Se
não, o programa nem verifica a presença e já retorna "Reprovado". Caso tenha nota, então é verificada a
quantidade de presenças que, se for suficiente então o aluno é dado como aprovado (pois já tinha sido verificado
que sua nota era alta o bastante) e se for insuficiente, ele é reprovado.
b) Múltiplas condições: A sintaxe da função if() permite
que sejam colocadas mais de uma condições dentro dos
parênteses, contanto que sejam conectadas com
conectivos lógicos, representados na tabela ao lado.
Assim, observe outra solução para o problema anterior:
if ((nota >=7) && (presenca >=20){
cout << "Aprovado";
}
else{
cout << "Reprovado";
}

Sobre os conectivos, temos que no && ("e" lógico) o if() apenas retornará verdadeiro, ou seja, será
executado, caso ambas condições sejam verdadeiras. É o caso do exemplo da nota e presença do aluno.
Enquanto isso, no || ("ou" lógico) o if() retorna verdadeiro caso qualquer uma das condições seja verdadeira,
inclusive ambas.

Exercícios III
a) Escreva um programa em C++ que recebe os valores da produção mensal de um determinado funcionário
em três meses. Caso a média for maior que 60 e nenhum dos meses tenha tido produção menor que 20,
diga que o funcionário receberá uma bonificação pelo bom desempenho.

b) Escreva um programa em C++ que recebe as notas de um aluno nas disciplinas de Matemática, Física e
Álgebra. Caso o aluno tenha média maior que 7 em qualquer uma dessas, o programa deverá informar
que ele pode cursar Cálculo I no próximo período.

Função switch()
Semelhante a condicional if(), podemos utilizar a função switch() para tratar de diferentes situações. Na
realidade, esta função atua bem quando temos valores inteiros esperados para uma determinada variável.
Observe o exemplo a seguir:
switch(x){
case 1:
cout << "O valor de teste e 1";
break;
case 2:
cout << "O valor de teste e 2";
break;
case 3:
cout << "O valor de teste e 3";
break;
default:
cout << "O valor de teste nao foi nenhum esperado";
}

Lendo o código acima temos que será verificada a variável “x”. Caso ela seja 1, será escrito na tela “O valor de
teste e 1”. O mesmo acontece com 2 e 3, respectivamente. O comando break faz com que o programa saia de
toda estrutura switch(), evitando que sejam verificados os outros casos sem motivo.
Por fim, o comando default é acionado caso o valor da variável verificada não seja nenhum dos casos
esperados (no exemplo acima, 1, 2 ou 3). Ele é opcional e se não colocado o programa simplesmente não
executará nada da estrutura switch para os outros valores.
Exercícios IV
a) Escreva um programa em C++ que receba o código de um produto e o classifique da seguinte forma: 1
para alimento, 2 para vestuário, 3 para higiene pessoal e 4 para limpeza. Qualquer outro código é
inválido e deve notificar o usuário de tal.

b) Sabendo que o resto de uma divisão por dois pode ser apenas zero ou um, escreva um programa em C++
que recebe um número e informa, através de switch/case/break, se o número digitado é par ou impar.

Estruturas de Repetição
Com o que foi estudado até agora, podemos com facilidade resolver problemas como "escreva um programa
que recebe três valores e exiba o somatório deles". No entanto, não seria viável resolver questões com 70
valores, por exemplo.
Em programas onde você tem uma parte do código que deve ser executada repetida vezes conforme uma
condição (no exemplo acima, até que tenham sido somados 70 números), utilizam-se as estruturas de repetição.
A primeira e mais simples função de repetição é a while(). Ela recebe uma condição que será verificada no
início e depois novamente sempre que seu código for executado. Caso sua condição não seja verdadeira em
algum momento, então o programa pula o código dentro das chaves e continua o programa escrito abaixo.
int soma = 0, i = 0, x;
while (i < 70){
cout << "Digite um numero" << endl;
cin >> x;
soma = soma + x;
i = i + 1;
}
cout << "Soma total: " << soma << endl;

Observe no exemplo acima que a condição do while() é a variável “i” ser menor que 70. Isso porque “i”
começa com 0 e é aumentado de 1 em 1 a cada vez que o while() rodar (i = i + 1). Então na primeira vez “i” vale 0,
a condição é verdadeira, o programa entra nas chaves do while() e pede ao usuário um número, que é colocado
em “x”. Em seguida, a variável “soma” onde ficará o total somado é incrementado em “x” (soma = soma + x), ou
seja, o valor de “soma” (que até então ainda é 0) recebe o valor digitado (por exemplo, 12), em seguida o “i”
incrementa em um para servir de contador.
Ao chegar à chave de fechamento do while(), o programa volta para a linha da condição e testa novamente,
agora “i” é 1 mas ainda é menor que 70 então o conteúdo do while() será executado novamente. Um novo
número será requisitado e seu valor substituirá “x”. “soma” será incrementado nesse novo valor (por exemplo, se
foi digitado agora 4, então temos que “soma” recebe seu valor até então (12) + 4) e “i” será incrementado em
mais 1.
Isso se repete até que “i” seja 70, onde o teste condicional do inicio verificará que “i” não é menor que 70 e
sairá do loop. Executando o código abaixo que exibe o valor de soma.

Exercícios V
a) Escreva um programa em C++ que leia o número de horas trabalhadas diárias (NH) de um funcionário por
um período de 30 dias (ele trabalhou todos os 30 dias) e apresente o total de horas trabalhadas por ele
nesse período

b) Escreva um programa em C++ que calcule N! (fatorial de N), sendo que o valor de N (inteiro) é fornecido
pelo usuário. Sabe-se que: N! = 1 x 2 x 3 x 4 x .... x N

c) Escreva um programa em C++ que leia o conjunto de 20 números inteiros e mostre qual foi o maior valor
fornecido.
Lógicas de Repetição
Em programação, as estruturas de repetição como o while() podem ser utilizadas de diversas formas. Os
exercícios anteriores tratam principalmente de uma das formas mais tradicionais, a de contar iterações. Observe
a seguir as aplicações de estruturas de repetição:
a) Quantidade predefinida de repetições: Como no exemplo da soma dos 70 números.

b) Usuário fornecendo quantidade de repetições: De forma incremental, uma repetição pode utilizar uma
ou mais variáveis para realizar uma contagem. Essa contagem pode ter vários usos. Por exemplo,
podemos pedir para que o usuário informe quantos números ele irá fornecer antes de realizar a média.
Observe:
cout << "Quantos numeros serao fornecidos?";
cin >> n;
while (i < n){
cout << "Digite um numero";
cin >> x;
total = total + x;
i = i + 1;
}
media = total / n;

No exemplo acima são pedidos e somados n números, onde n é fornecido pelo usuário no início. Quando
todo o somatório tiver sido feito, o programa divide por n para realizar a média.

c) Repetições indefinidas ou baseadas em critério de parada: Por vezes nem o programador nem o usuário
sabem de antemão quantos valores serão entrados no programa. Nesses casos pode ser utilizado um critério de
parada, que é uma condição onde a repetição será interrompida. Alguns exemplos são "até que o usuário digite
0" ou "até que o somatório alcance 1000+". Como nos outros exemplos, vale lembrar que podem ter requisitos
compostos como "até que o usuário digite 0 ou o somatório alcance 1000+, o que acontecer primeiro". Veja o
exemplo:
while (x != 0){
cout << "Digite um numero para inclui-lo na soma. Digite 0 para terminar.";
cin >> x;
total = total + x;
}

Note que no exemplo acima não foi utilizada nenhuma variável para contar. Isso é porque não é necessário
saber quantas vezes a repetição aconteceu, pois o programa não para após um determinado número de vezes e
só é preciso apenas da soma dos valores (se fosse uma média seria importante saber quantos números foram
recebidos).

Exercícios VI
a) Escreva um programa em C++ que leia vários números inteiros e positivos, calculando ao final da
sequência a soma e a média desses números. A sequência termina quando o usuário entrar com um valor
negativo (esse valor não deve fazer parte de nenhum dos cálculos).

b) Escreva um programa em C++ que leia um número do usuário e determinar se ele é ou não primo.

c) Escreva um programa em C++ que apresente a tabuada de um número N. O valor de N será apresentado
pelo usuário.
Outras Funções de Repetição
A função for() funciona de forma similar ao while() no entanto ele recebe três argumentos, em ordem: a
inicialização de uma variável, a condição, um comando a ser efetuado ao final de uma iteração.

Observe um exemplo de estrutura for() para o mesmo problema do tópico X e compare as duas soluções:
int soma = 0;
int x;
for(int i = 0; i < 70; i = i +1){
cout << "Digite um numero" << endl;
cin >> x;
soma = soma + x;
}
cout << "Soma total: " << soma << endl;

A estrutura do ... while() funciona como um while(), mas o teste condicional é feito apenas no final, logo ele
sempre executa seu código pela primeira vez. Observe o exemplo anterior sendo resolvido desta forma:
int soma = 0;
int i = 0;
int x;
do{
cout << "Digite um numero" << endl;
cin >> x;
soma = soma + x;
i = i + 1;
} while (i < 70);
cout << "Soma total: " << soma << endl;

Exercícios VII
a) Escreva um programa em C++ que fique lendo 2 notas, calcule e mostra a média, enquanto o usuário
quiser. Dica: leia “0” (Não) ou “1” (Sim) para fazer o teste.

b) Escreva um programa em C++ que leia uma quantidade N de números inteiros e mostre qual foi o menor
valor fornecido. N deve ser fornecido pelo usuário no inicio do programa.

Vetores de dados
Um vetor ou array é uma série de elementos do mesmo tipo colocados sequencialmente em memória e que
podem ser individualmente referenciados através de um valor de index. Observe os exemplos de declaração de
vetores e como eles se assemelham com a declaração de variáveis comuns:
int A [5];
int B [5] = {1, 3, 5, 7, 9};
double C [5] = {2.5, 1.7, 8};
double D [7] = { };

a) O vetor A é uma lista de cinco elementos inteiros que é iniciado com os valores que já estavam na
memória, por isso, cuidado;
b) O vetor B tem cinco posições ocupadas respectivamente pelos valores inteiros 1, 3, 5, 7 e 9.
c) O vetor C tem cinco posições ocupadas respectivamente pelos valores reais 2.5, 1.7, 8, 0 e 0. Observe que
são zeradas as posições não declaradas nesse caso.
d) O vetor D é um conjunto vazio de sete posições e se fosse lido resultaria em 0, 0, 0, 0, 0, 0, 0. Fazer essa
declaração = { }) é muito útil pois limpa o array de lixos de memória, deixando-o pronto para uso.
Para acessar um vetor é necessário informar qual posição do mesmo será usada (isso vale tanto para leitura
quanto para escrita). É importante notar, no entanto, que uma sequência em C++ sempre começa do 0, portanto
um vetor de cinco posições como o vetor B do exemplo anterior tem as posições 0, 1, 2, 3 e 4. Observe os
seguintes exemplos e seus resultados, baseados nos vetor utilizados acima:
cout << B[1] //Resultado: 3
cout << B[4] //Resultado: 9
cout << B[0] //Resultado: 1
cout << B[5] //Resultado: erro
cout << C[1] //Resultado: 1.7
cout << C[3] //Resultado: 0
cout << D[2] //Resultado: 0
cout << A[4] //Resultado: desconhecido

Para ler todo um vetor é necessário o uso de uma estrutura de repetição. Ao invés de se apontar para uma
posição específica da sequência, utilizamos o próprio contador que exibe a posição em seu valor, incrementa-se e
repete o processo até o fim do vetor. Exemplos:
//com while()
int i = 0;
while (i<5){
cout << B[i] << endl;
i++
}

//com for()
for (int i=0; i<5; i++){
cout << B[i] << endl;
}

Para permitir que o usuário entre com os valores de um vetor utiliza-se a mesma lógica de repetição, só que
com cin para receber o valor digitado na posição atual. Observe os exemplos:
//com while()
int i = 0;
while (i<5){
cout << "Digite um numero" << endl;
cin >> B[i];
i++;
}

//com for()
for (int i=0; i<5; i++){
cout << "Digite um numero" << endl;
cin >> B[i];
}

Exercícios VIII
a) Escreva um programa em C++ que leia um conjunto de 5 valores inteiros e exiba a média deles.

b) Escreva um programa em C++ que leia um conjunto de 5 valores reais e exiba um novo vetor com as
metades de cada um deles.

c) Escreva um programa em C++ que leia dois conjuntos de 5 valores inteiros e exiba um novo vetor
contendo a soma dos dois vetores.
Matrizes de dados
Matrizes são vetores de duas dimensões, definidos em C++ por uma variável com tipo e dois tamanhos,
conforme o exemplo a seguir:
int M[4][5] = { };

No exemplo acima é reservada em memória uma variável M, 4 x 5 de inteiros onde todos os valores foram
inicializados como zero.
Para navegar em uma matriz de forma linear, basta colocar a estrutura de repetição que utilizávamos para
vetores dentro de outra semelhante. Desta forma a mais interna passará pelas linhas da matriz e quando uma
linha terminar então a outra variável será acrescida em 1, pulando para a próxima linha que então será
novamente “varrida” horizontalmente. Observe o exemplo:
int M[4][5] = {};
for(int j=0; j<5; j++){
for(int i=0; i<4; i++){
cout << M[i][j] << " ";
}
cout << endl;
}

Da mesma forma, para permitir que o usuário entre com valores em cada campo da matriz, podemos fazer
da seguinte maneira:
int M[4][5] = {};
for(int j=0; j<5; j++){
for(int i=0; i<4; i++){
cout << "Digite um numero" << endl;
cin >> M[i][j];
}
}

Naturalmente, podemos utilizar o algoritmo de leitura após o de escrita para verificar se todos os dados de
entrada foram recebidos corretamente pela matriz.

Exercícios IX
a) Escreva um programa em C++ que leia duas matrizes A e B, cada uma de duas dimensões com 5 linhas e 3
colunas. Construir uma matriz C de mesma dimensão, que é formada pela soma dos elementos da matriz
A com os elementos da matriz B. Apresentar a matriz C.

b) Escreva um programa em C++ que leia duas matrizes A e B, cada uma com uma dimensão para 7
elementos. Construir uma matriz C de duas dimensões, em que a primeira coluna deverá ser formada
pelos elementos da matriz A e a segunda coluna deverá ser formada pelos elementos da matriz B.
Apresentar a matriz C.
Funções
Funções são pedaços de código definidos fora da "main()". Na verdade, todo nome seguido de parênteses,
com algo dentro ou não, é uma função. Exemplos de funções definidas por padrão nas bibliotecas de C++ são if(),
while(), for(), main(), etc.
Essas funções padrão que usamos até então já estão definidas em biblioteca, ou seja, o código de seu
funcionamento interno já está escrito e embutido no programa. Quando escrevemos algo como "if(x>4)"
estamos apenas "chamando" ou "usando" a função na execução do nosso código.
No entanto, é possível criar novas funções, geralmente com a finalidade de agrupar pedaços específicos de
código de forma inteligente e que, preferencialmente, serão repetidos ao longo do algoritmo. Para isso é
necessário declarar a função no início do código.
Para definir uma função que será usada no nosso programa, escrevemos seu código antes da função principal
main(). Começamos a definição com a "assinatura" da função, isto é, o tipo do retorno, o nome da função e os
parâmetros que ela vai receber. Observe o exemplo de uma função que calcula a soma de dois números:
double soma(double a, double b){

A assinatura acima quer dizer que temos uma função chamada "soma" que recebe dois valores do tipo
double chamados "a" e "b" respectivamente, e que retornará um valor do tipo double.
Dentro das chaves da função entramos com os processamentos locais que serão realizados pela função. No
caso do nosso exemplo, poderíamos escrever o seguinte:
double soma(double a, double b){
double r;
r = a + b;
return r;
}

Assim está feita a definição da função. Isso significa que quando for chamada a função soma(), a qual recebe
dois números reais, cada um deles será armazenado como as variáveis locais a e b (independente da variável
anterior), somados e retornado o resultado.
Agora, para fazer uso da função, basta chamar seu nome no meio do código interno da main(), como
faríamos com qualquer outra função. Se ela tem um retorno, então provavelmente teremos que atribuir seu
resultado a uma variável ou escreve-lo em console imediatamente. Exemplo:
main(){
double x, y, z;
cout << "Escreva dois numeros" << endl;
cin >> x >> y;
z = soma(x, y);
cout << "Resultado da soma: " << z << endl;
}

No exemplo, observe que o usuário entra com dois valores (x e y), mas quando chamamos a função soma() e
passamos essas variáveis como parâmetros, fazemos um "salto" para aquele pedaço de código e lá esses valores
são chamados respectivamente de a e b, com a finalidade de realizar os cálculos locais da função. Ao final é
retornado r que no algoritmo principal é atribuído a variável z. O programa então conclui exibindo o valor de z no
console.

Exercícios X
a) Escreva um programa em C++ que recebe uma base e um expoente e calcula a potência. Utilize uma
função para realizar o cálculo.

b) Escreva um programa em C++ que recebe três pares de números e calcula, em uma função, qual o maior
número de cada par.

Você também pode gostar