Buscar

Algoritimos - Aula 09

Prévia do material em texto

28/08/2019 Disciplina Portal
estacio.webaula.com.br/Classroom/index.html?id=2642009&courseId=13042&classId=1185233&topicId=0&enableForum=S&enableMessage=S… 1/9
Algoritmos
Aula 9 - Funções
INTRODUÇÃO
Um dos grandes objetivos da programação de computadores é criar programas simples e que sejam facilmente
entendidos por outras pessoas. Porém, é muito comum que os programas tenham 500, 1000 ou mais linhas de código.
Às vezes este número é necessário; outras vezes percebemos que ele pode ser reduzido.
Será que não existem partes de um programa que poderíamos separar e tratar como um programa à parte, ou um
subprograma? Desta forma, toda vez que aquela parte fosse necessária, chamaríamos somente ela.
Isso é possível e tem um nome: procedimentos e funções. E é isso que vamos ver nesta aula.
Bons estudos!
OBJETIVOS
28/08/2019 Disciplina Portal
estacio.webaula.com.br/Classroom/index.html?id=2642009&courseId=13042&classId=1185233&topicId=0&enableForum=S&enableMessage=S… 2/9
Aplicar os conhecimentos adquiridos para criar programas em C++ que usam funções e procedimentos e para utilizar
as funções e procedimentos já existentes nos seus programas.
28/08/2019 Disciplina Portal
estacio.webaula.com.br/Classroom/index.html?id=2642009&courseId=13042&classId=1185233&topicId=0&enableForum=S&enableMessage=S… 3/9
SITUAÇÃO-PROBLEMA
Para começar a nossa aula, vamos imaginar a seguinte situação...
Imagine que você acabou de ser contratado por uma grande empresa que fabrica smartphones e você será um dos
responsáveis por criar o software do telefone.
Como o Android é bem popular aqui no Brasil, imagine que você vai ter que criar uma versão do Android para embutir
no mais novo celular da empresa.
Como você pensaria em desenvolver esse programa?
Veja bem, o celular funciona como um grande laço:
• Enquanto o botão de desligar não for acionado, espere algum comando do usuário;
• Se o ícone de fazer ligação for pressionado, então abra a tela de chamadas;
• Se o ícone do navegador for pressionado, então abra o navegador;
• E assim por diante.
Acontece que o programa do celular não é sequencial. Não podemos prever o que o usuário vai fazer, então
precisamos criar subprogramas que são chamados à medida que o usuário faz uma determinada ação.
Exemplo
28/08/2019 Disciplina Portal
estacio.webaula.com.br/Classroom/index.html?id=2642009&courseId=13042&classId=1185233&topicId=0&enableForum=S&enableMessage=S… 4/9
, Por exemplo: executar o navegador, e depois que ele foi executado, o programa volta ao laço inicial, onde o programa espera a
próxima ação ou o botão desligar é acionado.
Basicamente é isso que fazemos quando temos um programa muito grande e temos a possibilidade de simpli�cá-lo:
usando subprogramas,chamados de funções ouprocedimentos.
Aliás, as funções são o grande diferencial da linguagem C, que originou a linguagem C++. Ou seja, quando você tiver
um problema muito grande, até mesmo em questões pessoais, tente dividi-lo em problemas menores, e desta forma,
solucionando cada pequeno problema, a parte maior também será resolvida.
COMO AS FUNÇÕES E PROCEDIMENTOS FUNCIONAM?
Observe a �gura a seguir:
A �gura basicamente explica o funcionamento de uma função ou procedimento. O procedimento é um grupo de
comandos que realiza uma determinada tarefa especí�ca que é executada quando o procedimento é chamado.
Quando o programa principal chama o procedimento, o �uxo do programa é desviado para o procedimento, o qual é
executado em seguida, e após a sua �nalização, o procedimento volta à execução do programa principal normalmente.
Já usamos um procedimento em alguns de nossos programas anteriores. Lembra-se do system(“cls”)? O que este
comando faz?
Na verdade é hora de ajustarmos nosso vocabulário: na verdade, system(“cls”) é um procedimento. Sendo assim, o que
este procedimento faz? 
Veja o código a seguir:
No código anterior, o programa segue o seu �uxo normal, imprime a mensagem “Digite o seu nome”, lê o valor do
usuário e chama em seguida o procedimento system(“cls”).
28/08/2019 Disciplina Portal
estacio.webaula.com.br/Classroom/index.html?id=2642009&courseId=13042&classId=1185233&topicId=0&enableForum=S&enableMessage=S… 5/9
Internamente, a execução do programa é interrompida, o �uxo é desviado para o código do procedimento system(“cls”),
o qual usa vários comandos internos para limpar a tela, e depois devolve o �uxo para o programa principal e imprime a
mensagem 
“Olá... tudo bem?”.
É que isso ocorre tão rápido e transparente para o usuário que dá a sensação de que o programa está ocorrendo
sequencialmente, mas não está.
Atenção
, É igual ao programa do celular de que falamos no início. Parece que é um programa sequencial, não é? Mas, no fundo, um
programa para celular é na verdade um grande looping cheio de chamadas a procedimentos especí�cos, como por exemplo, fazer
ligação, navegar na internet, executar a calculadora etc.
DIFERENÇAS ENTRE FUNÇÕES E PROCEDIMENTOS
Agora, vamos supor que você está desenvolvendo um programa que vai trabalhar com algumas operações
matemáticas, como por exemplo, calcular o MDC entre dois números, veri�car se um número é primo etc.
Poderíamos criar procedimentos para isso, correto? Mas temos algumas melhorias que podemos fazer nos
procedimentos. Por exemplo, criar procedimentos que funcionariam assim:
Esse retorno pode ser então usado no programa que chamou o procedimento. Então, temos aqui a função. A função é
um procedimento que possui obrigatoriamente um retorno. O procedimento não possui retorno.
Lembra que o system(“cls”) é um procedimento? Que retorno ele devolve ao programa principal?
Nenhum! Logo, é um procedimento.
Atenção
, Daqui para a frente, não vamos mais usar no nosso vocabulário de C++ a palavra “procedimento”. Uma vez que o procedimento é
uma função, mas que não retorna valor, então vamos usar apenas “função”, combinado?
POR QUE USAMOS FUNÇÕES?
Existem várias vantagens de se usar funções. Vejamos:
Para uma melhor legibilidade, como já citamos;
Para modularizar o programa em partes menores e mais funcionais;
Para melhorar a manutenção e permitir a alteração de uma determinada parte do código de uma maneira mais rápida;
Para evitar que uma parte do código seja repetida várias vezes em um programa;
Para o reaproveitamento de código: uma função que você faz pode ser usada por outro programador.
FUNÇÕES EM C++
28/08/2019 Disciplina Portal
estacio.webaula.com.br/Classroom/index.html?id=2642009&courseId=13042&classId=1185233&topicId=0&enableForum=S&enableMessage=S… 6/9
A sintaxe de uma função em C++ é a seguinte:
Vejamos um exemplo aqui (glossário)
PARÂMETROS
Na função teclac() que �zemos, você deve ter notado que a chamada dela no programa principal é muito simples. É
como chamar a função getch() (glossário): basta usá-la e pronto!
Mas algumas funções precisam receber valores para serem executadas. Como já vimos, uma função para calcular a
raiz quadrada de um número precisa receber o número para que a função seja executada.
Algumas funções, como o exemplo do MDC, precisam de dois ou mais parâmetros, en�m, para a linguagem C++ �car
mais versátil, o uso de parâmetros é permitido.
Os parâmetros possibilitam que seja de�nido sobre quais dados a função deve funcionar.
Para de�nir os parâmetros de uma função, é preciso que o tipo da variável seja declarado antes do nome da variável.
Se houver mais do que um, os outros parâmetros são separados por vírgulas. Veja o exemplo a seguir:
28/08/2019 Disciplina Portal
estacio.webaula.com.br/Classroom/index.html?id=2642009&courseId=13042&classId=1185233&topicId=0&enableForum=S&enableMessage=S… 7/9
Os parâmetros da função, quando estão na declaração da função, são chamados de parâmetros formais (como o �oat
a, int b na função anterior). Na chamada da função, são chamados de parâmetros reais ou argumentos.Atenção
, Os parâmetros devem ser passados de acordo com sua posição. Ou seja, o tipo do primeiro argumento (na chamada) tem que
“casar” com o tipo do primeiro parâmetro formal (na declaração da função); o tipo do segundo argumento “casa” com o segundo
tipo do parâmetro formal, e assim por diante. Os nomes das variáveis da chamada e da declaração não precisam ser os mesmos.
Vejamos um exemplo aqui (glossário)
RETORNO DE UMA FUNÇÃO
A função soma que acabamos de mostrar apresenta uma mensagem informando o resultado da conta dentro da
função (veja a linha 7).
A função tem que fazer exatamente o que o nome dela propõe. Se estamos fazendo uma soma, então ela deveria fazer
somente a soma, e o resultado, o próprio programa principal se encarrega de fazer.
Porém, dessa forma vamos precisar que a função retorne um valor para quem a chamar (neste caso, o programa
principal).
Essa palavra é obrigatória para as funções que não retornam valor. As que retornam valor, no lugar da palavra void,
terão que indicar o tipo do retorno, como mostra a função soma() abaixo, agora modi�cada:
Veja que agora a declaração da função, na linha 4, tem o tipo do retorno da função: �oat. E obrigatoriamente temos que
ter a palavra reservada return dentro da função para indicar o valor que será devolvido como resultado da função.
Nesse caso, o valor é devolvido e atribuído à variável retorno na linha 13.Portanto, quando não tiver valor de retorno, a
função tem um void na sua declaração. 
Quando retornar algum valor, ela tem que ter o tipo do retorno e usar o return dentro da função.
28/08/2019 Disciplina Portal
estacio.webaula.com.br/Classroom/index.html?id=2642009&courseId=13042&classId=1185233&topicId=0&enableForum=S&enableMessage=S… 8/9
ESCOPO DE VARIÁVEIS
O escopo de uma variável é o bloco de código onde a variável é válida. Desta forma, temos algumas considerações a
fazer:
As variáveis são válidas
nos blocos em que
foram de�nidas
As variáveis que são de�nidas
dentro de uma função são
chamadas de variáveis locais
Os parâmetros formais de
uma função valem somente
dentro da função
Uma variável que foi de�nida
dentro de uma função não é
acessível em
outras funções, mesmo se
os nomes forem exatamente
iguais
Vejamos um exemplo aqui (glossário)
FINALIZANDO
O estudo das funções em C++ é muito amplo, e nosso objetivo aqui é iniciar os seus estudos.
Ao longo de todas as aulas, usamos as funções o tempo todo, e talvez você não tenha notado que o próprio programa
principal em C++ é uma função. Por isso usamos o return 0 no �nal dos programas: para retornar o valor 0 a quem
chamou o programa; neste caso, o sistema operacional.
O possui milhares de funções prede�nidas, e saber usá-las é muito importante. Desta forma, evitamos a “reinvenção da
roda”, como por exemplo, desenhar �guras de funções matemáticas, funções de estruturas de dados, de manipulação
de strings etc.
Já existe muita coisa pronta. Basta saber em qual biblioteca a função desejada se encontra e incluir a biblioteca
corretamente dentro do programa. Como foi o caso da função getch().
ATIVIDADES
1. Para testar seus conhecimentos do que estudamos até aqui, que tal fazermos uns exercícios?
Clique no link (glossário) e resolva as questões. Boa sorte!
Resposta Correta
28/08/2019 Disciplina Portal
estacio.webaula.com.br/Classroom/index.html?id=2642009&courseId=13042&classId=1185233&topicId=0&enableForum=S&enableMessage=S… 9/9
Glossário
FUNÇÃO GETCH()
Tem como objetivo ler uma tecla digitada pelo usuário e retornar o valor numérico da tecla. Cada tecla no computador tem um
código, e o código da tecla “c” é 99. A função getch() é de�nida na biblioteca conio.h, e para usar a função, é necessário incluir a
biblioteca no programa.

Continue navegando