28
ANHANGUERA – 2016.1 ALGORITMOS E ESTRUTURA DE DADOS AULA 03 – MODULARIZAÇÃO E FUNÇÕES Prof. Thomás da Costa [email protected]

Algoritmos e Estrutura de Dados - Aula 03

Embed Size (px)

Citation preview

Page 1: Algoritmos e Estrutura de Dados - Aula 03

ANHANGUERA – 2016.1

ALGORITMOS E ESTRUTURA DE DADOSAULA 03 – MODULARIZAÇÃO E FUNÇÕES

Prof. Thomás da [email protected]

Page 2: Algoritmos e Estrutura de Dados - Aula 03

ALGORITMOS E ESTRUTURA DE DADOS – Prof. Thomás da Costa

MODULARIZAÇÃO E FUNÇÕES

MODULARIZAÇÃO E FUNÇÕES

Page 3: Algoritmos e Estrutura de Dados - Aula 03

ALGORITMOS E ESTRUTURA DE DADOS – Prof. Thomás da Costa

O que é Modularização:

É o processo de decompor um programa em partes menores, facilitando a manutenção e o entendimento pelos desenvolvedores. Com isso podemos ter rotinas reutilizáveis para outros programas e aplicações. Além disso, conseguimos efetuar atividades paralelas na construção do código-fonte, na qual mais de um desenvolvedor pode atuar no trabalho.

Modularização e Funções

MODULARIZAÇÃO E FUNÇÕES

Page 4: Algoritmos e Estrutura de Dados - Aula 03

ALGORITMOS E ESTRUTURA DE DADOS – Prof. Thomás da Costa

Veja o exemplo abaixo:

Um carro é composto por vários componentes (portas, rodas, motor e etc). Esses componentes tornam o carro modular.

Modularização e Funções

Cada parte tem uma finalidade, todas juntas formam o carro. Caso uma peça tenha problema,

fazemos o ajuste neste local sem afetar o restante do carro.

MODULARIZAÇÃO E FUNÇÕES

Page 5: Algoritmos e Estrutura de Dados - Aula 03

ALGORITMOS E ESTRUTURA DE DADOS – Prof. Thomás da Costa

Benefícios da Modularização em um programa:

- Componentes menores formam um programa- Programa fica mais legível para compreensão- Facilidade na manutenção da aplicação- Funcionalidade pode ser reutilizada em outros programas- Previne duplicação de código e retrabalho

Modularização e Funções

MODULARIZAÇÃO E FUNÇÕES

Page 6: Algoritmos e Estrutura de Dados - Aula 03

ALGORITMOS E ESTRUTURA DE DADOS – Prof. Thomás da Costa

Modularização em C/C++:

Em C++ a modularização é feita a partir de blocos de funcionalidades, denominado funções.

Modularização e Funções

MODULARIZAÇÃO E FUNÇÕES

Page 7: Algoritmos e Estrutura de Dados - Aula 03

ALGORITMOS E ESTRUTURA DE DADOS – Prof. Thomás da Costa

O que é:

São rotinas que tem como objetivo, executar trechos de códigos de forma modular, melhorando a organização do programa e evitando repetição de código. As funções são reutilizáveis dentro de um programa.

Funções

MODULARIZAÇÃO E FUNÇÕES

Page 8: Algoritmos e Estrutura de Dados - Aula 03

ALGORITMOS E ESTRUTURA DE DADOS – Prof. Thomás da Costa

CALCULADORA

FunçõesPara pensar:

Em uma calculadora quais são as suas 4 principais operações?

SOMA

MULTIPLICAÇÃO DIVISÃO

SUBTRAÇÃO

Conseguimos definir as 4 principais operações da calculadora.

No desenvolvimento do código da calculadora vamos precisar criar as 4 funções de acordo com as operações definidas.

MODULARIZAÇÃO E FUNÇÕES

Page 9: Algoritmos e Estrutura de Dados - Aula 03

ALGORITMOS E ESTRUTURA DE DADOS – Prof. Thomás da Costa

FunçõesComo criar funções:

- Análise quais tarefas o programa vai executar- Identifique ações- Ações são verbos como inserir, alterar, excluir e etc.- A partir das ações temos as funções

Mais um exemplo:

Quais as funções da lista de contatos de um celular?

- Inserir um Contato- Alterar um Contato- Excluir um Contato- Discar para um Contato

MODULARIZAÇÃO E FUNÇÕES

Page 10: Algoritmos e Estrutura de Dados - Aula 03

ALGORITMOS E ESTRUTURA DE DADOS – Prof. Thomás da Costa

FunçõesEstrutura de uma função:

Retorno da função

Nome da função

Parâmetros da função

Corpo da função

Escopo de início e fim da função

double somar(double x, double y){

double resultado = x + y;return resultado;

}

MODULARIZAÇÃO E FUNÇÕES

Page 11: Algoritmos e Estrutura de Dados - Aula 03

ALGORITMOS E ESTRUTURA DE DADOS – Prof. Thomás da Costa

FunçõesEstrutura de uma função:

- Tipos de retorno da função- double, float, int, char, void, vetores e outros tipos

- Parâmetros da função- Cada parâmetro é composto pelo tipo, nome e separados por virgulas

- Retorno da função- Quando uma função deve retornar um valor, devemos usar a palavra

reservada return seguido de um valor, variável ou operação do mesmo tipo de retorno

- Corpo da função- Código fonte com a funcionalidade que a função deve executar

- Protótipo- As funções possuem protótipos para definir sua estrutura

MODULARIZAÇÃO E FUNÇÕES

Page 12: Algoritmos e Estrutura de Dados - Aula 03

ALGORITMOS E ESTRUTURA DE DADOS – Prof. Thomás da Costa

FunçõesComo Utilizar em C++:

As quatro funções da calculadora

Protótipo das funções

#include <iostream>

using namespace std;

double somar(double x, double y);double subtrair(double x, double y);double multiplicar(double x, double y);double dividir(double x, double y);

int main(){

double x, y;

cout << "Digite os valores para somar:\n";cin >> x >> y;cout << somar(x, y);

cout << "Digite os valores para subtrair:\n";cin >> x >> y;cout << subtrair(x, y);

cout << "Digite os valores para multiplicar:\n";cin >> x >> y;cout << multiplicar(x, y);

cout << "Digite os valores para dividir:\n";cin >> x >> y;cout << dividir(x, y);

}

Chamando uma função

double somar(double x, double y){

double resultado = x + y;return resultado;

}

double subtrair(double x, double y){

double resultado = x - y;return resultado;

}

double multiplicar(double x, double y){

double resultado = x * y;return resultado;

}

double dividir(double x, double y){

double resultado = x / y;return resultado;

}

MODULARIZAÇÃO E FUNÇÕES

Page 13: Algoritmos e Estrutura de Dados - Aula 03

ALGORITMOS E ESTRUTURA DE DADOS – Prof. Thomás da Costa

FunçõesChamando uma função:

Chamando a função “somar” passando os parâmetros 10 e 15

Retornando o valor para a variável “valor”

Protótipo da função

#include <iostream>

using namespace std;

double somar(double x, double y);

int main(){

double valor;valor = somar(10,15);

}

...

MODULARIZAÇÃO E FUNÇÕES

Page 14: Algoritmos e Estrutura de Dados - Aula 03

ALGORITMOS E ESTRUTURA DE DADOS – Prof. Thomás da Costa

FunçõesChamando uma função:

- Para executar uma função, devemos colocar o nome da função seguido dos parâmetros

- Nos parâmetros podemos passar um valor especifico ou uma variável- Devemos respeitar o tipo passado nos parâmetros das funções. Ex: se o

parâmetro for int, devemos passar um tipo int. Se for passado o tipo incorreto no parâmetro, o programa não compila.

- Caso a função retorne algum valor, podemos atribuir diretamente a uma variável

- Quando uma função não tem parâmetros, abrimos e fechamos parênteses- void faz a função retornar nenhum valor

MODULARIZAÇÃO E FUNÇÕES

Page 15: Algoritmos e Estrutura de Dados - Aula 03

ALGORITMOS E ESTRUTURA DE DADOS – Prof. Thomás da Costa

FunçõesRetorno da função:

Quando o tipo de retorno da função é diferente do tipo void, a função devolve algum valor para alguma variável. Para efetuar este tipo de operação utilizamos a palavra reservada return seguido de um valor ou uma variável.

Retorno da função

Retorno da função na variável “resultado”

#include <iostream>

using namespace std;

int par_ou_impar(int numero);

int main(){

int numero, resultado;

cout << "Digite um número:\n";cin >> numero;resultado = par_ou_impar(numero);

if (resultado == 0)cout << "Par";

elsecout << "Impar";

}

int par_ou_impar(int numero){

int valor = numero % 2;return valor;

}

MODULARIZAÇÃO E FUNÇÕES

Page 16: Algoritmos e Estrutura de Dados - Aula 03

ALGORITMOS E ESTRUTURA DE DADOS – Prof. Thomás da Costa

FunçõesTipo void:

A palavra reservada void não efetua nenhum retorno para a função.

Retorno da função do tipo void

Função não retorna um valor

#include <iostream>

using namespace std;

void imprime_idade(int idade);

int main(){

int idade;cout << "Digite a sua idade:\n";cin >> idade;imprime_idade(idade);

}

void imprime_idade(int idade){

cout << "Sua idade é: " << idade;}

MODULARIZAÇÃO E FUNÇÕES

Page 17: Algoritmos e Estrutura de Dados - Aula 03

ALGORITMOS E ESTRUTURA DE DADOS – Prof. Thomás da Costa

FunçõesUsando return em uma função void:

O return em uma função void, interrompe a execução do código.#include <iostream>

using namespace std;

void dividir(int x, int y);

int main(){

int x, y;cout << "Digite os valores para dividir:\n";cin >> x >> y;dividir(x, y);

}

void dividir(int x, int y){

if (y == 0){

cout << "Não dividirás por zero";return;

}cout << "Valor da Divisão:" << x / y;

}

Não existe divisão por zero

Terminando a execução da função com return

Este código não vai ser executado

MODULARIZAÇÃO E FUNÇÕES

Page 18: Algoritmos e Estrutura de Dados - Aula 03

ALGORITMOS E ESTRUTURA DE DADOS – Prof. Thomás da Costa

Resumo:

- Possuem um nome- Podem possuir um retorno ou não- Tem parâmetros com tipo e nome, separados por virgulas- A função tem um corpo, aonde é definido e escrito oque a função vai executar- Tem um protótipo para definir a função- São reutilizáveis- Ajuda a deixar o código mais simples- Funções quando usadas corretamente deixa muito mais fácil o entendimento

do programa- Organização do código- Retornam valores com a palavra reservada return- void é tipo que não retorna valor na função

Funções

MODULARIZAÇÃO E FUNÇÕES

Page 19: Algoritmos e Estrutura de Dados - Aula 03

ALGORITMOS E ESTRUTURA DE DADOS – Prof. Thomás da Costa

MODULARIZAÇÃO E FUNÇÕES

Page 20: Algoritmos e Estrutura de Dados - Aula 03

ALGORITMOS E ESTRUTURA DE DADOS – Prof. Thomás da Costa

Exemplo – Imprime na tela:Funções

#include <iostream>

using namespace std;

void imprimir();

int main(){

imprimir();}

void imprimir(){

char valor[10];cout << "Digite algo:\n";gets(valor);cout << valor;

}

MODULARIZAÇÃO E FUNÇÕES

Page 21: Algoritmos e Estrutura de Dados - Aula 03

ALGORITMOS E ESTRUTURA DE DADOS – Prof. Thomás da Costa

Exemplo – Quadrado:Funções

#include <iostream>

using namespace std;

int quadrado(int x);

int main(){

int x;cout << "Digite um numero:\n";cin >> x;cout << "Quadrado de " << x << " é " << quadrado(x);

}

int quadrado(int x){

return x * x;}

MODULARIZAÇÃO E FUNÇÕES

Page 22: Algoritmos e Estrutura de Dados - Aula 03

ALGORITMOS E ESTRUTURA DE DADOS – Prof. Thomás da Costa

Exemplo – Conversor de Moedas:Funções

#include <iostream>

using namespace std;

const double VALOR_DOLAR = 2.7;

void converte_real_dolar(double real);

int main(){

double valor_real;cout << "Valor em reais:";cin >> valor_real;

converte_real_dolar(valor_real);}

void converte_real_dolar(double real){

if (real < 0){

cout << "O valor não pode ser menor que zero";

return;}

cout << "Valor convertido: " << real * VALOR_DOLAR;}

MODULARIZAÇÃO E FUNÇÕES

Page 23: Algoritmos e Estrutura de Dados - Aula 03

ALGORITMOS E ESTRUTURA DE DADOS – Prof. Thomás da Costa

Exemplo – Calculadora:Funções

#include <iostream>

using namespace std;

double somar(double x, double y);double subtrair(double x, double y);double multiplicar(double x, double y);double dividir(double x, double y);

int main(){

double x, y;

cout << "Digite os valores para somar:\n";cin >> x >> y;cout << somar(x, y);

cout << "Digite os valores para subtrair:\n";cin >> x >> y;cout << subtrair(x, y);

cout << "Digite os valores para multiplicar:\n";cin >> x >> y;cout << multiplicar(x, y);

cout << "Digite os valores para dividir:\n";cin >> x >> y;cout << dividir(x, y);

}

double somar(double x, double y){

double resultado = x + y;return resultado;

}

double subtrair(double x, double y){

double resultado = x - y;return resultado;

}

double multiplicar(double x, double y){

double resultado = x * y;return resultado;

}

double dividir(double x, double y){

double resultado = x / y;return resultado;

}

MODULARIZAÇÃO E FUNÇÕES

Page 24: Algoritmos e Estrutura de Dados - Aula 03

ALGORITMOS E ESTRUTURA DE DADOS – Prof. Thomás da Costa

O que é:

É quando uma variável é passada como parâmetro de uma função, e seu valor original não é alterado. Somente o valor da sua cópia pode ser alterado dentro da função.

Parâmetros Por Valor

MODULARIZAÇÃO E FUNÇÕES

Page 25: Algoritmos e Estrutura de Dados - Aula 03

ALGORITMOS E ESTRUTURA DE DADOS – Prof. Thomás da Costa

#include <iostream>

using namespace std;

void troca(int a, int b);

int main(){

int a = 10;int b = 20;troca(a, b);cout << "Valor de A e B não foi alterado:" << a << b << endl;

}

void troca(int a, int b){

a = b;b = a + 100;cout << "Valor de A e B: " << a << b << endl;

}

Exemplo:Parâmetros Por Valor

Variáveis a e b tem valor 10 e 20

Variáveis a e b continuam com o mesmo valor 10 e 20

Trocamos o valor de a com b dentro da função

MODULARIZAÇÃO E FUNÇÕES

Page 26: Algoritmos e Estrutura de Dados - Aula 03

ALGORITMOS E ESTRUTURA DE DADOS – Prof. Thomás da Costa

Parâmetros Por ReferênciaO que é:

É quando uma variável é passada como parâmetro de uma função, e seu valor original pode ser alterado.

MODULARIZAÇÃO E FUNÇÕES

Page 27: Algoritmos e Estrutura de Dados - Aula 03

ALGORITMOS E ESTRUTURA DE DADOS – Prof. Thomás da Costa

#include <iostream> using namespace std; void troca(int &a, int &b); int main(){

int a = 10;int b = 20;cout << "Valor de A e B original:" << a << "-" << b << endl;troca(a, b);cout << "Valor de A e B FOI alterado:" << a << "-" << b <<

endl;} void troca(int &a, int &b){

int temp;temp = b;b = a;a = temp;

}

Exemplo:Parâmetros Por Referência

Variáveis a e b tem valor 10 e 20

Variáveis a e b mudam de valor

Trocamos o valor de a com b dentro da função

Referencia endereço de memória

MODULARIZAÇÃO E FUNÇÕES

Page 28: Algoritmos e Estrutura de Dados - Aula 03

Obrigado !!!

ANHANGUERA – 2016.1