SlideShare uma empresa Scribd logo
1 de 42
Programação Estruturada II
Aula 02 – Modularização e Funções
Prof. Thomás da Costa
thomasdacosta@gmail.com
Anhanguera – 2015.1
Modularização e Funções
MODULARIZAÇÃO E FUNÇÕES
Prof. Thomás da Costa Programação Estruturada II
Modularização e Funções
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
Prof. Thomás da Costa Programação Estruturada II
Modularização e Funções
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.
Prof. Thomás da Costa Programação Estruturada II
Modularização e Funções
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
Prof. Thomás da Costa Programação Estruturada II
Modularização e Funções
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
Prof. Thomás da Costa Programação Estruturada II
Modularização e Funções
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
Prof. Thomás da Costa Programação Estruturada II
CALCULADORA
Modularização e Funções
Funções
Para 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
Funções
Como 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
Prof. Thomás da Costa Programação Estruturada II
Modularização e Funções
Funções
Estrutura 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;
}
Prof. Thomás da Costa Programação Estruturada II
Modularização e Funções
Funções
Estrutura 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
Prof. Thomás da Costa Programação Estruturada II
Modularização e Funções
Funções
Como 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;
}
Prof. Thomás da Costa Programação Estruturada II
Modularização e Funções
Funções
Chamando 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);
}
...
Prof. Thomás da Costa Programação Estruturada II
Modularização e Funções
Funções
Chamando 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
Prof. Thomás da Costa Programação Estruturada II
Modularização e Funções
Funções
Retorno 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";
else
cout << "Impar";
}
int par_ou_impar(int numero)
{
int valor = numero % 2;
return valor;
}
Prof. Thomás da Costa Programação Estruturada II
Modularização e Funções
Funções
Tipo 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;
}
Prof. Thomás da Costa Programação Estruturada II
Modularização e Funções
Funções
Usando 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
Prof. Thomás da Costa Programação Estruturada II
Modularização e Funções
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
Prof. Thomás da Costa Programação Estruturada II
Modularização e Funções
Prof. Thomás da Costa Programação Estruturada II
Modularização e Funções
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;
}
Prof. Thomás da Costa Programação Estruturada II
Modularização e Funções
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;
}
Prof. Thomás da Costa Programação Estruturada II
Modularização e Funções
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;
}
Prof. Thomás da Costa Programação Estruturada II
Modularização e Funções
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;
}
Prof. Thomás da Costa Programação Estruturada II
Modularização e Funções
O que é:
No caso da linguagem C++, escopo de variáveis é o ciclo de vida de um tipo de
dado e como ele pode ser acessado pelo programa principal e suas funções.
Escopo de Variáveis
Prof. Thomás da Costa Programação Estruturada II
Modularização e Funções
Exemplo:
Escopo de Variáveis
Prof. Thomás da Costa Programação Estruturada II
#include <iostream>
using namespace std;
int global = 0;
void escopo(int x);
int main()
{
int a = 1;
{
int b = 1;
cout << "Escopo mais interno: " << b << endl;
}
escopo(100);
cout << "Escopo local: " << a << endl;
}
void escopo(int x)
{
cout << "Escopo local: " << x << endl;
cout << "Escopo global: " << global << endl;
}
Variável global, ou seja, pode
ser acessada em qualquer
lugar do programa
Variável b pode ser acessada
somente neste trecho
Chaves definem
um escopo
Modularização e Funções
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
Prof. Thomás da Costa Programação Estruturada II
#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;
}
Modularização e Funções
Exemplo:
Parâmetros Por Valor
Prof. Thomás da Costa Programação Estruturada II
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
Parâmetros Por Referência
Prof. Thomás da Costa Programação Estruturada II
O que é:
É quando uma variável é passada como parâmetro de uma função, e seu valor
original pode ser alterado.
#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;
}
Modularização e Funções
Exemplo:
Parâmetros Por Referência
Prof. Thomás da Costa Programação Estruturada II
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
Exemplo:
Parâmetros do Tipo String
Prof. Thomás da Costa Programação Estruturada II
#include <iostream>
#include <string.h>
using namespace std;
int validar_senha(char *senha);
int main()
{
char senha[10];
cout << "Digite a senha:" << endl;
gets(senha);
validar_senha(senha);
}
int validar_senha(char *senha)
{
if (strcmp(senha, "entrar123") == 0)
{
cout << "Senha OK";
return 0;
} else {
cout << "Senha inválida";
return 1;
}
}
Passando uma string como
parâmetro devemos colocar o
sinal ( * )
Modularização e Funções
Exemplo:
Parâmetros do Tipo Vetor
Prof. Thomás da Costa Programação Estruturada II
#include <iostream>
#include <string.h>
using namespace std;
void imprime_vetor(int *valores);
int main()
{
int valores[10] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29};
imprime_vetor(valores);
}
void imprime_vetor(int *valores)
{
for (int i=0;i<=9;i++)
{
cout << "valores[" << i << "] :" << valores[i] << endl;
}
}
Passando um vetor como
parâmetro devemos colocar o
sinal ( * )
CUIDADO: alterar o vetor
dentro da função, modifica o
valor que foi passado como
parâmetro
Modularização e Funções
Para pensar:
Podemos ter funções com o mesmo nome ?
Sim podemos !!!
Desde que as funções possuam parâmetros diferentes uma da outra. Essa técnica
é chamada de sobrecarga.
Sobrecarga de funções
Prof. Thomás da Costa Programação Estruturada II
Para acontecer a sobrecarga:
- Tipos de parâmetros diferentes
- Quantidades de parâmetros
Modularização e Funções
Exemplo:
Sobrecarga de funções
Prof. Thomás da Costa Programação Estruturada II
#include <iostream>
#include <string.h>
using namespace std;
void imprime_vetor(char *valores);
void imprime_vetor(int *valores);
void imprime_vetor(int *valores, int tamanho);
int main()
{
int valores[10] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29};
char nome[10] = {'a','n','h','a','n','g','u','e','r','a'};
imprime_vetor(nome);
imprime_vetor(valores);
imprime_vetor(valores, 10);
}
Continua ->
Funções com o mesmo nome e
parâmetros diferentes
Modularização e Funções
Exemplo - Continuação:
Sobrecarga de funções
Prof. Thomás da Costa Programação Estruturada II
void imprime_vetor(char *valores)
{
cout << "void imprime_vetor(char *valores)" << endl;
for (int i=0;i<=9;i++)
{
cout << "valores[" << i << "] :" << valores[i] << endl;
}
}
void imprime_vetor(int *valores)
{
cout << "void imprime_vetor(int *valores)" << endl;
for (int i=0;i<=9;i++)
{
cout << "valores[" << i << "] :" << valores[i] << endl;
}
}
void imprime_vetor(int *valores, int tamanho)
{
cout << "void imprime_vetor(int *valores, int tamanho)" << endl;
for (int i=0;i<tamanho;i++)
{
cout << "valores[" << i << "] :" << valores[i] << endl;
}
}
Modularização e Funções
Exemplo:
Valores Default
Prof. Thomás da Costa Programação Estruturada II
#include <iostream>
using namespace std;
double media(double b1 = 0, double b2 = 0);
int main()
{
cout << "Media Default:" << media() << endl;
cout << "Media Aluno:" << media(6.5, 6.5) << endl;
}
double media(double b1, double b2)
{
return (b1 + b2) / 2;
}
Valores pré-definidos na
função é chamado de valores
default
Modularização e Funções
Desenvolvendo uma Biblioteca !!!:
Vamos criar uma biblioteca para ser utilizada em todos os nossos programas. A
nossa biblioteca será chamada pela diretiva #include, como todas as outras do
C++.
Para criar um biblioteca:
- Criar um projeto no Dev-C++
- Criar um arquivo .h com os protótipos das funções
- Criar um arquivo .cpp com as definições das funções
Bibliotecas
Prof. Thomás da Costa Programação Estruturada II
Modularização e Funções
Vamos criar uma biblioteca matemática:
Criando um projeto do Dev-C++:
- File -> New Project
- Console Application
- Colocar em Name (nome do projeto) matematica
Bibliotecas
Prof. Thomás da Costa Programação Estruturada II
Modularização e Funções
Vamos criar uma biblioteca matemática:
- Criar arquivo .h
- Criar arquivo .cpp
Bibliotecas
Prof. Thomás da Costa Programação Estruturada II
Arquivos da biblioteca .h e .cpp
namespace matematica
{
double somar(double x, double y);
double subtrair(double x, double y);
double multiplicar(double x, double y);
double dividir(double x, double y);
}
Modularização e Funções
Arquivo .h:
Bibliotecas
Prof. Thomás da Costa Programação Estruturada II
Namespace da biblioteca
Os namespace´s servem para identificar uma
biblioteca, tornando única dentro da aplicação
e não entrar em conflito com outras
bibliotecas
#include <iostream>
#include "matematica.h"
using namespace std;
namespace matematica
{
double somar(double x, double y)
{
return x + y;
}
double subtrair(double x, double y)
{
return x - y;
}
double multiplicar(double x, double y)
{
return x * y;
}
double dividir(double x, double y)
{
return x / y;
}
}
Modularização e Funções
Arquivo .cpp:
Bibliotecas
Prof. Thomás da Costa Programação Estruturada II
Implementações das funções
Namespace da biblioteca
#include <iostream>
#include "matematica.h"
using namespace matematica;
using namespace std;
int main() {
cout << "Somar:" << somar(2,2) << endl;
cout << "Subtrair:" << subtrair(2,2) << endl;
cout << "Multiplicar:" << multiplicar(2,2) << endl;
cout << "Dividir:" << dividir(2,2) << endl;
}
Modularização e Funções
Usando a biblioteca:
Bibliotecas
Prof. Thomás da Costa Programação Estruturada II
Chamando as funções
Namespace da biblioteca
Incluindo a biblioteca no programa
Modularização e Funções
Obrigado !!!
Prof. Thomás da Costa Programação Estruturada II

Mais conteúdo relacionado

Mais procurados

Algoritmos e Técnicas de Programação - Aula 04
Algoritmos e Técnicas de Programação - Aula 04Algoritmos e Técnicas de Programação - Aula 04
Algoritmos e Técnicas de Programação - Aula 04thomasdacosta
 
Linguagem C (UFRPE)
Linguagem C (UFRPE)Linguagem C (UFRPE)
Linguagem C (UFRPE)guest14543db
 
Conceitos Fundamentais de Programacao
Conceitos Fundamentais de ProgramacaoConceitos Fundamentais de Programacao
Conceitos Fundamentais de ProgramacaoJorge Cardoso
 
Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2Robson Ferreira
 
Introdução a linguagem c karen lowhany
Introdução a linguagem c   karen lowhanyIntrodução a linguagem c   karen lowhany
Introdução a linguagem c karen lowhanyKaren Costa
 
Algoritmos e Técnicas de Programação - Curso Completo
Algoritmos e Técnicas de Programação - Curso CompletoAlgoritmos e Técnicas de Programação - Curso Completo
Algoritmos e Técnicas de Programação - Curso Completothomasdacosta
 
Programação Concorrente - Aula 02
Programação Concorrente - Aula 02Programação Concorrente - Aula 02
Programação Concorrente - Aula 02thomasdacosta
 
Programação Concorrente - Aula 04
Programação Concorrente - Aula 04Programação Concorrente - Aula 04
Programação Concorrente - Aula 04thomasdacosta
 
C curso - notas de aula
C   curso - notas de aulaC   curso - notas de aula
C curso - notas de aulaLoAlves21
 
Conceitos e técnicas de programação aula 1
Conceitos e técnicas de programação aula 1Conceitos e técnicas de programação aula 1
Conceitos e técnicas de programação aula 1Robson Ferreira
 
Algoritmos e Técnicas de Programação - Aula 01
Algoritmos e Técnicas de Programação - Aula 01Algoritmos e Técnicas de Programação - Aula 01
Algoritmos e Técnicas de Programação - Aula 01thomasdacosta
 
Programação Concorrente - Aula 05
Programação Concorrente - Aula 05Programação Concorrente - Aula 05
Programação Concorrente - Aula 05thomasdacosta
 
Apostila de-introdução-à-linguagem-c
Apostila de-introdução-à-linguagem-cApostila de-introdução-à-linguagem-c
Apostila de-introdução-à-linguagem-cMaicon Rodrigues
 
Programação Concorrente - Aula 03
Programação Concorrente - Aula 03Programação Concorrente - Aula 03
Programação Concorrente - Aula 03thomasdacosta
 

Mais procurados (20)

Algoritmos e Técnicas de Programação - Aula 04
Algoritmos e Técnicas de Programação - Aula 04Algoritmos e Técnicas de Programação - Aula 04
Algoritmos e Técnicas de Programação - Aula 04
 
Linguagem C (UFRPE)
Linguagem C (UFRPE)Linguagem C (UFRPE)
Linguagem C (UFRPE)
 
Conceitos Fundamentais de Programacao
Conceitos Fundamentais de ProgramacaoConceitos Fundamentais de Programacao
Conceitos Fundamentais de Programacao
 
Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2
 
Introdução a linguagem c karen lowhany
Introdução a linguagem c   karen lowhanyIntrodução a linguagem c   karen lowhany
Introdução a linguagem c karen lowhany
 
TDC2014 SP - C/C++ - Modularização de Código C
TDC2014 SP - C/C++ - Modularização de Código CTDC2014 SP - C/C++ - Modularização de Código C
TDC2014 SP - C/C++ - Modularização de Código C
 
Algoritmos e Técnicas de Programação - Curso Completo
Algoritmos e Técnicas de Programação - Curso CompletoAlgoritmos e Técnicas de Programação - Curso Completo
Algoritmos e Técnicas de Programação - Curso Completo
 
Programação Concorrente - Aula 02
Programação Concorrente - Aula 02Programação Concorrente - Aula 02
Programação Concorrente - Aula 02
 
Revista programar 20
Revista programar 20Revista programar 20
Revista programar 20
 
Programação Concorrente - Aula 04
Programação Concorrente - Aula 04Programação Concorrente - Aula 04
Programação Concorrente - Aula 04
 
C curso - notas de aula
C   curso - notas de aulaC   curso - notas de aula
C curso - notas de aula
 
Mini Curso de C
Mini Curso de CMini Curso de C
Mini Curso de C
 
Fundamentos de Programação
Fundamentos de ProgramaçãoFundamentos de Programação
Fundamentos de Programação
 
Linguagem c
Linguagem cLinguagem c
Linguagem c
 
Conceitos e técnicas de programação aula 1
Conceitos e técnicas de programação aula 1Conceitos e técnicas de programação aula 1
Conceitos e técnicas de programação aula 1
 
Algoritmos e Técnicas de Programação - Aula 01
Algoritmos e Técnicas de Programação - Aula 01Algoritmos e Técnicas de Programação - Aula 01
Algoritmos e Técnicas de Programação - Aula 01
 
Programação Concorrente - Aula 05
Programação Concorrente - Aula 05Programação Concorrente - Aula 05
Programação Concorrente - Aula 05
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Apostila de-introdução-à-linguagem-c
Apostila de-introdução-à-linguagem-cApostila de-introdução-à-linguagem-c
Apostila de-introdução-à-linguagem-c
 
Programação Concorrente - Aula 03
Programação Concorrente - Aula 03Programação Concorrente - Aula 03
Programação Concorrente - Aula 03
 

Destaque

Programação Estruturada 2 - Aula 02 - Código Fonte
Programação Estruturada 2 - Aula 02 - Código FonteProgramação Estruturada 2 - Aula 02 - Código Fonte
Programação Estruturada 2 - Aula 02 - Código Fontethomasdacosta
 
Exercícios da Aula de LAB 02
Exercícios da Aula de LAB 02Exercícios da Aula de LAB 02
Exercícios da Aula de LAB 02thomasdacosta
 
Programação Estruturada 2 - Aula 04
Programação Estruturada 2 - Aula 04Programação Estruturada 2 - Aula 04
Programação Estruturada 2 - Aula 04thomasdacosta
 
LAB 03 - Programação Estruturada 2
LAB 03 - Programação Estruturada 2LAB 03 - Programação Estruturada 2
LAB 03 - Programação Estruturada 2thomasdacosta
 
Exercícios da Aula de LAB 03
Exercícios da Aula de LAB 03Exercícios da Aula de LAB 03
Exercícios da Aula de LAB 03thomasdacosta
 
Revisão - Funções
Revisão - FunçõesRevisão - Funções
Revisão - Funçõesthomasdacosta
 
Exercícios da Aula de LAB 01
Exercícios da Aula de LAB 01Exercícios da Aula de LAB 01
Exercícios da Aula de LAB 01thomasdacosta
 
LAB 02 - Programação Estruturada 2
LAB 02 - Programação Estruturada 2LAB 02 - Programação Estruturada 2
LAB 02 - Programação Estruturada 2thomasdacosta
 
Programação Estruturada 2 - Aula 05
Programação Estruturada 2 - Aula 05Programação Estruturada 2 - Aula 05
Programação Estruturada 2 - Aula 05thomasdacosta
 
Especialização e generalização em java
Especialização e generalização em javaEspecialização e generalização em java
Especialização e generalização em javaDiogo Winck
 

Destaque (10)

Programação Estruturada 2 - Aula 02 - Código Fonte
Programação Estruturada 2 - Aula 02 - Código FonteProgramação Estruturada 2 - Aula 02 - Código Fonte
Programação Estruturada 2 - Aula 02 - Código Fonte
 
Exercícios da Aula de LAB 02
Exercícios da Aula de LAB 02Exercícios da Aula de LAB 02
Exercícios da Aula de LAB 02
 
Programação Estruturada 2 - Aula 04
Programação Estruturada 2 - Aula 04Programação Estruturada 2 - Aula 04
Programação Estruturada 2 - Aula 04
 
LAB 03 - Programação Estruturada 2
LAB 03 - Programação Estruturada 2LAB 03 - Programação Estruturada 2
LAB 03 - Programação Estruturada 2
 
Exercícios da Aula de LAB 03
Exercícios da Aula de LAB 03Exercícios da Aula de LAB 03
Exercícios da Aula de LAB 03
 
Revisão - Funções
Revisão - FunçõesRevisão - Funções
Revisão - Funções
 
Exercícios da Aula de LAB 01
Exercícios da Aula de LAB 01Exercícios da Aula de LAB 01
Exercícios da Aula de LAB 01
 
LAB 02 - Programação Estruturada 2
LAB 02 - Programação Estruturada 2LAB 02 - Programação Estruturada 2
LAB 02 - Programação Estruturada 2
 
Programação Estruturada 2 - Aula 05
Programação Estruturada 2 - Aula 05Programação Estruturada 2 - Aula 05
Programação Estruturada 2 - Aula 05
 
Especialização e generalização em java
Especialização e generalização em javaEspecialização e generalização em java
Especialização e generalização em java
 

Semelhante a Programação Estruturada 2 - Aula 02

Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03thomasdacosta
 
Funções inline e Recursivas
Funções inline e RecursivasFunções inline e Recursivas
Funções inline e RecursivasKadzuwa Kuyeri
 
mod3-programação-estruturada
mod3-programação-estruturadamod3-programação-estruturada
mod3-programação-estruturadadiogoa21
 
RevisãoCompactaFuncoesPonteiro.pptx
RevisãoCompactaFuncoesPonteiro.pptxRevisãoCompactaFuncoesPonteiro.pptx
RevisãoCompactaFuncoesPonteiro.pptxClaudia Ferlin
 
Qualidade de Software: Escrevendo Código Limpo
Qualidade de Software: Escrevendo Código LimpoQualidade de Software: Escrevendo Código Limpo
Qualidade de Software: Escrevendo Código LimpoLidiane Taquehara
 
Aula01
Aula01Aula01
Aula01vdlos
 
2 funcoes e estrutura de blocos
2   funcoes e estrutura de blocos2   funcoes e estrutura de blocos
2 funcoes e estrutura de blocosRicardo Bolanho
 
Aula - Funções (Curso de Python Básico -- FATEC SENAI MT)
Aula - Funções (Curso de Python Básico -- FATEC SENAI MT)Aula - Funções (Curso de Python Básico -- FATEC SENAI MT)
Aula - Funções (Curso de Python Básico -- FATEC SENAI MT)Filipe Chagas Ferraz
 
Semana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Semana 10: Encapsulação, cópia de instâncias, igualdade de instânciasSemana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Semana 10: Encapsulação, cópia de instâncias, igualdade de instânciasManuel Menezes de Sequeira
 
Aula 12 funcoes - Programação 1
Aula 12 funcoes - Programação 1Aula 12 funcoes - Programação 1
Aula 12 funcoes - Programação 1Isaac Barros
 
Estruturas em C++ (struct)
Estruturas em C++ (struct)Estruturas em C++ (struct)
Estruturas em C++ (struct)Márcio Rizzatto
 
Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1ariovaldodias
 
Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1ariovaldodias
 

Semelhante a Programação Estruturada 2 - Aula 02 (20)

Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03
 
Funções inline e Recursivas
Funções inline e RecursivasFunções inline e Recursivas
Funções inline e Recursivas
 
Modularização
ModularizaçãoModularização
Modularização
 
mod3-programação-estruturada
mod3-programação-estruturadamod3-programação-estruturada
mod3-programação-estruturada
 
RevisãoCompactaFuncoesPonteiro.pptx
RevisãoCompactaFuncoesPonteiro.pptxRevisãoCompactaFuncoesPonteiro.pptx
RevisãoCompactaFuncoesPonteiro.pptx
 
Linguagem c parte 2
Linguagem c parte 2Linguagem c parte 2
Linguagem c parte 2
 
Qualidade de Software: Escrevendo Código Limpo
Qualidade de Software: Escrevendo Código LimpoQualidade de Software: Escrevendo Código Limpo
Qualidade de Software: Escrevendo Código Limpo
 
Sobrecarga operadores
Sobrecarga operadoresSobrecarga operadores
Sobrecarga operadores
 
Clean code
Clean codeClean code
Clean code
 
Aula01
Aula01Aula01
Aula01
 
2 funcoes e estrutura de blocos
2   funcoes e estrutura de blocos2   funcoes e estrutura de blocos
2 funcoes e estrutura de blocos
 
Aula - Funções (Curso de Python Básico -- FATEC SENAI MT)
Aula - Funções (Curso de Python Básico -- FATEC SENAI MT)Aula - Funções (Curso de Python Básico -- FATEC SENAI MT)
Aula - Funções (Curso de Python Básico -- FATEC SENAI MT)
 
Semana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Semana 10: Encapsulação, cópia de instâncias, igualdade de instânciasSemana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Semana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
 
apostila C++
apostila C++apostila C++
apostila C++
 
JavaScript - A Linguagem
JavaScript - A LinguagemJavaScript - A Linguagem
JavaScript - A Linguagem
 
Aula 12 funcoes - Programação 1
Aula 12 funcoes - Programação 1Aula 12 funcoes - Programação 1
Aula 12 funcoes - Programação 1
 
Semana 2: Funções e listas, variáveis
Semana  2: Funções e listas, variáveisSemana  2: Funções e listas, variáveis
Semana 2: Funções e listas, variáveis
 
Estruturas em C++ (struct)
Estruturas em C++ (struct)Estruturas em C++ (struct)
Estruturas em C++ (struct)
 
Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1
 
Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1
 

Mais de thomasdacosta

Azure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a ProduçãoAzure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a Produçãothomasdacosta
 
Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03thomasdacosta
 
Programação de Sistemas Distribuídos - Aula 02
Programação de Sistemas Distribuídos - Aula 02Programação de Sistemas Distribuídos - Aula 02
Programação de Sistemas Distribuídos - Aula 02thomasdacosta
 
Programação de Sistemas Distribuídos - Aula 01
Programação de Sistemas Distribuídos - Aula 01Programação de Sistemas Distribuídos - Aula 01
Programação de Sistemas Distribuídos - Aula 01thomasdacosta
 
Organização de Computadores - Aula 02
Organização de Computadores - Aula 02Organização de Computadores - Aula 02
Organização de Computadores - Aula 02thomasdacosta
 
Organização de Computadores - Aula 03
Organização de Computadores - Aula 03Organização de Computadores - Aula 03
Organização de Computadores - Aula 03thomasdacosta
 
Organização de Computadores - Aula 01
Organização de Computadores - Aula 01Organização de Computadores - Aula 01
Organização de Computadores - Aula 01thomasdacosta
 
Redes de Computadores - Exercícios 06
Redes de Computadores - Exercícios 06Redes de Computadores - Exercícios 06
Redes de Computadores - Exercícios 06thomasdacosta
 
Redes de Computadores - Exercícios 05
Redes de Computadores - Exercícios 05Redes de Computadores - Exercícios 05
Redes de Computadores - Exercícios 05thomasdacosta
 
Programação Concorrente - Curso Completo
Programação Concorrente - Curso CompletoProgramação Concorrente - Curso Completo
Programação Concorrente - Curso Completothomasdacosta
 
Programação Concorrente - Aula 07
Programação Concorrente - Aula 07Programação Concorrente - Aula 07
Programação Concorrente - Aula 07thomasdacosta
 
Programação Concorrente - Aula 06
Programação Concorrente - Aula 06Programação Concorrente - Aula 06
Programação Concorrente - Aula 06thomasdacosta
 
Redes de Computadores - Exercícios 04
Redes de Computadores - Exercícios 04Redes de Computadores - Exercícios 04
Redes de Computadores - Exercícios 04thomasdacosta
 
Redes de Computadores - Aula 05
Redes de Computadores - Aula 05Redes de Computadores - Aula 05
Redes de Computadores - Aula 05thomasdacosta
 
Redes de Computadores - Exercícios 03
Redes de Computadores - Exercícios 03Redes de Computadores - Exercícios 03
Redes de Computadores - Exercícios 03thomasdacosta
 
Redes de Computadores - Aula 04
Redes de Computadores - Aula 04Redes de Computadores - Aula 04
Redes de Computadores - Aula 04thomasdacosta
 
Algoritmos e Estrutura de Dados - Aula 05
Algoritmos e Estrutura de Dados - Aula 05Algoritmos e Estrutura de Dados - Aula 05
Algoritmos e Estrutura de Dados - Aula 05thomasdacosta
 
Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04thomasdacosta
 
Redes de Computadores - Aula 03
Redes de Computadores - Aula 03Redes de Computadores - Aula 03
Redes de Computadores - Aula 03thomasdacosta
 
Redes de Computadores - Aula 02
Redes de Computadores - Aula 02Redes de Computadores - Aula 02
Redes de Computadores - Aula 02thomasdacosta
 

Mais de thomasdacosta (20)

Azure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a ProduçãoAzure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a Produção
 
Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03
 
Programação de Sistemas Distribuídos - Aula 02
Programação de Sistemas Distribuídos - Aula 02Programação de Sistemas Distribuídos - Aula 02
Programação de Sistemas Distribuídos - Aula 02
 
Programação de Sistemas Distribuídos - Aula 01
Programação de Sistemas Distribuídos - Aula 01Programação de Sistemas Distribuídos - Aula 01
Programação de Sistemas Distribuídos - Aula 01
 
Organização de Computadores - Aula 02
Organização de Computadores - Aula 02Organização de Computadores - Aula 02
Organização de Computadores - Aula 02
 
Organização de Computadores - Aula 03
Organização de Computadores - Aula 03Organização de Computadores - Aula 03
Organização de Computadores - Aula 03
 
Organização de Computadores - Aula 01
Organização de Computadores - Aula 01Organização de Computadores - Aula 01
Organização de Computadores - Aula 01
 
Redes de Computadores - Exercícios 06
Redes de Computadores - Exercícios 06Redes de Computadores - Exercícios 06
Redes de Computadores - Exercícios 06
 
Redes de Computadores - Exercícios 05
Redes de Computadores - Exercícios 05Redes de Computadores - Exercícios 05
Redes de Computadores - Exercícios 05
 
Programação Concorrente - Curso Completo
Programação Concorrente - Curso CompletoProgramação Concorrente - Curso Completo
Programação Concorrente - Curso Completo
 
Programação Concorrente - Aula 07
Programação Concorrente - Aula 07Programação Concorrente - Aula 07
Programação Concorrente - Aula 07
 
Programação Concorrente - Aula 06
Programação Concorrente - Aula 06Programação Concorrente - Aula 06
Programação Concorrente - Aula 06
 
Redes de Computadores - Exercícios 04
Redes de Computadores - Exercícios 04Redes de Computadores - Exercícios 04
Redes de Computadores - Exercícios 04
 
Redes de Computadores - Aula 05
Redes de Computadores - Aula 05Redes de Computadores - Aula 05
Redes de Computadores - Aula 05
 
Redes de Computadores - Exercícios 03
Redes de Computadores - Exercícios 03Redes de Computadores - Exercícios 03
Redes de Computadores - Exercícios 03
 
Redes de Computadores - Aula 04
Redes de Computadores - Aula 04Redes de Computadores - Aula 04
Redes de Computadores - Aula 04
 
Algoritmos e Estrutura de Dados - Aula 05
Algoritmos e Estrutura de Dados - Aula 05Algoritmos e Estrutura de Dados - Aula 05
Algoritmos e Estrutura de Dados - Aula 05
 
Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04
 
Redes de Computadores - Aula 03
Redes de Computadores - Aula 03Redes de Computadores - Aula 03
Redes de Computadores - Aula 03
 
Redes de Computadores - Aula 02
Redes de Computadores - Aula 02Redes de Computadores - Aula 02
Redes de Computadores - Aula 02
 

Programação Estruturada 2 - Aula 02

  • 1. Programação Estruturada II Aula 02 – Modularização e Funções Prof. Thomás da Costa thomasdacosta@gmail.com Anhanguera – 2015.1
  • 2. Modularização e Funções MODULARIZAÇÃO E FUNÇÕES Prof. Thomás da Costa Programação Estruturada II
  • 3. Modularização e Funções 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 Prof. Thomás da Costa Programação Estruturada II
  • 4. Modularização e Funções 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. Prof. Thomás da Costa Programação Estruturada II
  • 5. Modularização e Funções 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 Prof. Thomás da Costa Programação Estruturada II
  • 6. Modularização e Funções 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 Prof. Thomás da Costa Programação Estruturada II
  • 7. Modularização e Funções 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 Prof. Thomás da Costa Programação Estruturada II
  • 8. CALCULADORA Modularização e Funções Funções Para 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.
  • 9. Modularização e Funções Funções Como 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 Prof. Thomás da Costa Programação Estruturada II
  • 10. Modularização e Funções Funções Estrutura 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; } Prof. Thomás da Costa Programação Estruturada II
  • 11. Modularização e Funções Funções Estrutura 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 Prof. Thomás da Costa Programação Estruturada II
  • 12. Modularização e Funções Funções Como 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; } Prof. Thomás da Costa Programação Estruturada II
  • 13. Modularização e Funções Funções Chamando 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); } ... Prof. Thomás da Costa Programação Estruturada II
  • 14. Modularização e Funções Funções Chamando 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 Prof. Thomás da Costa Programação Estruturada II
  • 15. Modularização e Funções Funções Retorno 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"; else cout << "Impar"; } int par_ou_impar(int numero) { int valor = numero % 2; return valor; } Prof. Thomás da Costa Programação Estruturada II
  • 16. Modularização e Funções Funções Tipo 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; } Prof. Thomás da Costa Programação Estruturada II
  • 17. Modularização e Funções Funções Usando 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 Prof. Thomás da Costa Programação Estruturada II
  • 18. Modularização e Funções 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 Prof. Thomás da Costa Programação Estruturada II
  • 19. Modularização e Funções Prof. Thomás da Costa Programação Estruturada II
  • 20. Modularização e Funções 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; } Prof. Thomás da Costa Programação Estruturada II
  • 21. Modularização e Funções 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; } Prof. Thomás da Costa Programação Estruturada II
  • 22. Modularização e Funções 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; } Prof. Thomás da Costa Programação Estruturada II
  • 23. Modularização e Funções 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; } Prof. Thomás da Costa Programação Estruturada II
  • 24. Modularização e Funções O que é: No caso da linguagem C++, escopo de variáveis é o ciclo de vida de um tipo de dado e como ele pode ser acessado pelo programa principal e suas funções. Escopo de Variáveis Prof. Thomás da Costa Programação Estruturada II
  • 25. Modularização e Funções Exemplo: Escopo de Variáveis Prof. Thomás da Costa Programação Estruturada II #include <iostream> using namespace std; int global = 0; void escopo(int x); int main() { int a = 1; { int b = 1; cout << "Escopo mais interno: " << b << endl; } escopo(100); cout << "Escopo local: " << a << endl; } void escopo(int x) { cout << "Escopo local: " << x << endl; cout << "Escopo global: " << global << endl; } Variável global, ou seja, pode ser acessada em qualquer lugar do programa Variável b pode ser acessada somente neste trecho Chaves definem um escopo
  • 26. Modularização e Funções 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 Prof. Thomás da Costa Programação Estruturada II
  • 27. #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; } Modularização e Funções Exemplo: Parâmetros Por Valor Prof. Thomás da Costa Programação Estruturada II 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
  • 28. Modularização e Funções Parâmetros Por Referência Prof. Thomás da Costa Programação Estruturada II O que é: É quando uma variável é passada como parâmetro de uma função, e seu valor original pode ser alterado.
  • 29. #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; } Modularização e Funções Exemplo: Parâmetros Por Referência Prof. Thomás da Costa Programação Estruturada II 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
  • 30. Modularização e Funções Exemplo: Parâmetros do Tipo String Prof. Thomás da Costa Programação Estruturada II #include <iostream> #include <string.h> using namespace std; int validar_senha(char *senha); int main() { char senha[10]; cout << "Digite a senha:" << endl; gets(senha); validar_senha(senha); } int validar_senha(char *senha) { if (strcmp(senha, "entrar123") == 0) { cout << "Senha OK"; return 0; } else { cout << "Senha inválida"; return 1; } } Passando uma string como parâmetro devemos colocar o sinal ( * )
  • 31. Modularização e Funções Exemplo: Parâmetros do Tipo Vetor Prof. Thomás da Costa Programação Estruturada II #include <iostream> #include <string.h> using namespace std; void imprime_vetor(int *valores); int main() { int valores[10] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29}; imprime_vetor(valores); } void imprime_vetor(int *valores) { for (int i=0;i<=9;i++) { cout << "valores[" << i << "] :" << valores[i] << endl; } } Passando um vetor como parâmetro devemos colocar o sinal ( * ) CUIDADO: alterar o vetor dentro da função, modifica o valor que foi passado como parâmetro
  • 32. Modularização e Funções Para pensar: Podemos ter funções com o mesmo nome ? Sim podemos !!! Desde que as funções possuam parâmetros diferentes uma da outra. Essa técnica é chamada de sobrecarga. Sobrecarga de funções Prof. Thomás da Costa Programação Estruturada II Para acontecer a sobrecarga: - Tipos de parâmetros diferentes - Quantidades de parâmetros
  • 33. Modularização e Funções Exemplo: Sobrecarga de funções Prof. Thomás da Costa Programação Estruturada II #include <iostream> #include <string.h> using namespace std; void imprime_vetor(char *valores); void imprime_vetor(int *valores); void imprime_vetor(int *valores, int tamanho); int main() { int valores[10] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29}; char nome[10] = {'a','n','h','a','n','g','u','e','r','a'}; imprime_vetor(nome); imprime_vetor(valores); imprime_vetor(valores, 10); } Continua -> Funções com o mesmo nome e parâmetros diferentes
  • 34. Modularização e Funções Exemplo - Continuação: Sobrecarga de funções Prof. Thomás da Costa Programação Estruturada II void imprime_vetor(char *valores) { cout << "void imprime_vetor(char *valores)" << endl; for (int i=0;i<=9;i++) { cout << "valores[" << i << "] :" << valores[i] << endl; } } void imprime_vetor(int *valores) { cout << "void imprime_vetor(int *valores)" << endl; for (int i=0;i<=9;i++) { cout << "valores[" << i << "] :" << valores[i] << endl; } } void imprime_vetor(int *valores, int tamanho) { cout << "void imprime_vetor(int *valores, int tamanho)" << endl; for (int i=0;i<tamanho;i++) { cout << "valores[" << i << "] :" << valores[i] << endl; } }
  • 35. Modularização e Funções Exemplo: Valores Default Prof. Thomás da Costa Programação Estruturada II #include <iostream> using namespace std; double media(double b1 = 0, double b2 = 0); int main() { cout << "Media Default:" << media() << endl; cout << "Media Aluno:" << media(6.5, 6.5) << endl; } double media(double b1, double b2) { return (b1 + b2) / 2; } Valores pré-definidos na função é chamado de valores default
  • 36. Modularização e Funções Desenvolvendo uma Biblioteca !!!: Vamos criar uma biblioteca para ser utilizada em todos os nossos programas. A nossa biblioteca será chamada pela diretiva #include, como todas as outras do C++. Para criar um biblioteca: - Criar um projeto no Dev-C++ - Criar um arquivo .h com os protótipos das funções - Criar um arquivo .cpp com as definições das funções Bibliotecas Prof. Thomás da Costa Programação Estruturada II
  • 37. Modularização e Funções Vamos criar uma biblioteca matemática: Criando um projeto do Dev-C++: - File -> New Project - Console Application - Colocar em Name (nome do projeto) matematica Bibliotecas Prof. Thomás da Costa Programação Estruturada II
  • 38. Modularização e Funções Vamos criar uma biblioteca matemática: - Criar arquivo .h - Criar arquivo .cpp Bibliotecas Prof. Thomás da Costa Programação Estruturada II Arquivos da biblioteca .h e .cpp
  • 39. namespace matematica { double somar(double x, double y); double subtrair(double x, double y); double multiplicar(double x, double y); double dividir(double x, double y); } Modularização e Funções Arquivo .h: Bibliotecas Prof. Thomás da Costa Programação Estruturada II Namespace da biblioteca Os namespace´s servem para identificar uma biblioteca, tornando única dentro da aplicação e não entrar em conflito com outras bibliotecas
  • 40. #include <iostream> #include "matematica.h" using namespace std; namespace matematica { double somar(double x, double y) { return x + y; } double subtrair(double x, double y) { return x - y; } double multiplicar(double x, double y) { return x * y; } double dividir(double x, double y) { return x / y; } } Modularização e Funções Arquivo .cpp: Bibliotecas Prof. Thomás da Costa Programação Estruturada II Implementações das funções Namespace da biblioteca
  • 41. #include <iostream> #include "matematica.h" using namespace matematica; using namespace std; int main() { cout << "Somar:" << somar(2,2) << endl; cout << "Subtrair:" << subtrair(2,2) << endl; cout << "Multiplicar:" << multiplicar(2,2) << endl; cout << "Dividir:" << dividir(2,2) << endl; } Modularização e Funções Usando a biblioteca: Bibliotecas Prof. Thomás da Costa Programação Estruturada II Chamando as funções Namespace da biblioteca Incluindo a biblioteca no programa
  • 42. Modularização e Funções Obrigado !!! Prof. Thomás da Costa Programação Estruturada II