Aula 07 Introdução à Programação Subprogramasgrac/ip/Aula07 - Subprogramas.pdf ·...
Transcript of Aula 07 Introdução à Programação Subprogramasgrac/ip/Aula07 - Subprogramas.pdf ·...
![Page 1: Aula 07 Introdução à Programação Subprogramasgrac/ip/Aula07 - Subprogramas.pdf · 2017-06-21 · Aula 07 Introdução à Programação Subprogramas Prof. Gustavo Callou gustavo.callou@ufrpe.br](https://reader034.fdocumentos.tips/reader034/viewer/2022050505/5f96a737f64ed675eb000b49/html5/thumbnails/1.jpg)
Aula 07
Introdução à Programação
Subprogramas
Prof. Gustavo Callou
![Page 2: Aula 07 Introdução à Programação Subprogramasgrac/ip/Aula07 - Subprogramas.pdf · 2017-06-21 · Aula 07 Introdução à Programação Subprogramas Prof. Gustavo Callou gustavo.callou@ufrpe.br](https://reader034.fdocumentos.tips/reader034/viewer/2022050505/5f96a737f64ed675eb000b49/html5/thumbnails/2.jpg)
SubProgramas
Procedimentos
Funções
Exercícios
Gustavo Callou DEINFO/UFRPE 2
Roteiro
![Page 3: Aula 07 Introdução à Programação Subprogramasgrac/ip/Aula07 - Subprogramas.pdf · 2017-06-21 · Aula 07 Introdução à Programação Subprogramas Prof. Gustavo Callou gustavo.callou@ufrpe.br](https://reader034.fdocumentos.tips/reader034/viewer/2022050505/5f96a737f64ed675eb000b49/html5/thumbnails/3.jpg)
Sistema complexo
Gustavo Callou DEINFO/UFRPE 3
![Page 4: Aula 07 Introdução à Programação Subprogramasgrac/ip/Aula07 - Subprogramas.pdf · 2017-06-21 · Aula 07 Introdução à Programação Subprogramas Prof. Gustavo Callou gustavo.callou@ufrpe.br](https://reader034.fdocumentos.tips/reader034/viewer/2022050505/5f96a737f64ed675eb000b49/html5/thumbnails/4.jpg)
Simples
Gustavo Callou DEINFO/UFRPE 4
![Page 5: Aula 07 Introdução à Programação Subprogramasgrac/ip/Aula07 - Subprogramas.pdf · 2017-06-21 · Aula 07 Introdução à Programação Subprogramas Prof. Gustavo Callou gustavo.callou@ufrpe.br](https://reader034.fdocumentos.tips/reader034/viewer/2022050505/5f96a737f64ed675eb000b49/html5/thumbnails/5.jpg)
Dividir para
Conquistar
Gustavo Callou DEINFO/UFRPE 5
![Page 6: Aula 07 Introdução à Programação Subprogramasgrac/ip/Aula07 - Subprogramas.pdf · 2017-06-21 · Aula 07 Introdução à Programação Subprogramas Prof. Gustavo Callou gustavo.callou@ufrpe.br](https://reader034.fdocumentos.tips/reader034/viewer/2022050505/5f96a737f64ed675eb000b49/html5/thumbnails/6.jpg)
Modularização
Situação
Parte 1
Parte 2
Parte 3
Parte 4
Problema
Gustavo Callou DEINFO/UFRPE 6
![Page 7: Aula 07 Introdução à Programação Subprogramasgrac/ip/Aula07 - Subprogramas.pdf · 2017-06-21 · Aula 07 Introdução à Programação Subprogramas Prof. Gustavo Callou gustavo.callou@ufrpe.br](https://reader034.fdocumentos.tips/reader034/viewer/2022050505/5f96a737f64ed675eb000b49/html5/thumbnails/7.jpg)
Modularização
Solução
Parte 1
Parte 2
Parte 3
Parte 4
Parte 1
Parte 2
Parte 3
Parte 4
Problema
Gustavo Callou DEINFO/UFRPE 7
![Page 8: Aula 07 Introdução à Programação Subprogramasgrac/ip/Aula07 - Subprogramas.pdf · 2017-06-21 · Aula 07 Introdução à Programação Subprogramas Prof. Gustavo Callou gustavo.callou@ufrpe.br](https://reader034.fdocumentos.tips/reader034/viewer/2022050505/5f96a737f64ed675eb000b49/html5/thumbnails/8.jpg)
Modularização::Subprograma
Solução
Parte 1
Parte 2
Parte 3
Parte 4
Subprograma 1
Subprograma 2
Subprograma 3
Subprograma 4
Programa
Gustavo Callou DEINFO/UFRPE 8
![Page 9: Aula 07 Introdução à Programação Subprogramasgrac/ip/Aula07 - Subprogramas.pdf · 2017-06-21 · Aula 07 Introdução à Programação Subprogramas Prof. Gustavo Callou gustavo.callou@ufrpe.br](https://reader034.fdocumentos.tips/reader034/viewer/2022050505/5f96a737f64ed675eb000b49/html5/thumbnails/9.jpg)
Modularização::Subprograma
A solução do problema original é implementada
através da composição dos subprogramas.
Subprogramas podem ser vistos como blocos de
construção com os quais montamos um programa.
Esta técnica de construção de programas é
chamada de MODULARIZAÇÃO.
Gustavo Callou DEINFO/UFRPE 9
![Page 10: Aula 07 Introdução à Programação Subprogramasgrac/ip/Aula07 - Subprogramas.pdf · 2017-06-21 · Aula 07 Introdução à Programação Subprogramas Prof. Gustavo Callou gustavo.callou@ufrpe.br](https://reader034.fdocumentos.tips/reader034/viewer/2022050505/5f96a737f64ed675eb000b49/html5/thumbnails/10.jpg)
Modularização::Subprograma
Um subprograma é um bloco de programa
constituído por um conjunto de declarações e
por um conjunto de comandos e identificado por
um nome.
Exemplo:
Comandos
Declarações de variáveis
Gustavo Callou DEINFO/UFRPE 10
![Page 11: Aula 07 Introdução à Programação Subprogramasgrac/ip/Aula07 - Subprogramas.pdf · 2017-06-21 · Aula 07 Introdução à Programação Subprogramas Prof. Gustavo Callou gustavo.callou@ufrpe.br](https://reader034.fdocumentos.tips/reader034/viewer/2022050505/5f96a737f64ed675eb000b49/html5/thumbnails/11.jpg)
Modularização::Subprograma
Tipos de Subprogramas
Procedimentos
Funções
Gustavo Callou DEINFO/UFRPE 11
![Page 12: Aula 07 Introdução à Programação Subprogramasgrac/ip/Aula07 - Subprogramas.pdf · 2017-06-21 · Aula 07 Introdução à Programação Subprogramas Prof. Gustavo Callou gustavo.callou@ufrpe.br](https://reader034.fdocumentos.tips/reader034/viewer/2022050505/5f96a737f64ed675eb000b49/html5/thumbnails/12.jpg)
Modularização::Subprograma
Tipos de Subprogramas
Procedimentos
Têm o objetivo de executar uma determinada tarefa para o
programa.
Funções
Têm o objetivo de calcular um valor que deve ser informado
pela função.
Gustavo Callou DEINFO/UFRPE 12
![Page 13: Aula 07 Introdução à Programação Subprogramasgrac/ip/Aula07 - Subprogramas.pdf · 2017-06-21 · Aula 07 Introdução à Programação Subprogramas Prof. Gustavo Callou gustavo.callou@ufrpe.br](https://reader034.fdocumentos.tips/reader034/viewer/2022050505/5f96a737f64ed675eb000b49/html5/thumbnails/13.jpg)
Modularização::Subprograma
Funções e Procedimentos
Toda função ou procedimento deve ser, pelo menos,
declarada antes da função principal main().
Declara a função/procedimento antes da main() e a implementa
depois.
Implementa a função/procedimento diretamente antes da
main().
Gustavo Callou DEINFO/UFRPE 13
![Page 14: Aula 07 Introdução à Programação Subprogramasgrac/ip/Aula07 - Subprogramas.pdf · 2017-06-21 · Aula 07 Introdução à Programação Subprogramas Prof. Gustavo Callou gustavo.callou@ufrpe.br](https://reader034.fdocumentos.tips/reader034/viewer/2022050505/5f96a737f64ed675eb000b49/html5/thumbnails/14.jpg)
Modularização::Subprograma
Funções e Procedimentos
Exemplo: Procedimento que não recebe parâmetros e
não retorna valor.
#include <stdio.h>
void desenha();
main()
{
printf(”Usando procedimento.");
desenha( );
}
void desenha()
{
int i;
for (i = 0; i <= 10; i++)
printf("--\n");
}
Assinatura ou
protótipo do
procedimento
Implementacao do
procedimento
Gustavo Callou DEINFO/UFRPE 14
![Page 15: Aula 07 Introdução à Programação Subprogramasgrac/ip/Aula07 - Subprogramas.pdf · 2017-06-21 · Aula 07 Introdução à Programação Subprogramas Prof. Gustavo Callou gustavo.callou@ufrpe.br](https://reader034.fdocumentos.tips/reader034/viewer/2022050505/5f96a737f64ed675eb000b49/html5/thumbnails/15.jpg)
Modularização::Subprograma
Chamada (Execução) de um Subprograma
Uma referência a um nome de subprograma dentro de
um programa provoca a execução do bloco de
comandos do subprograma.
Ao término da execução do subprograma, a execução
do programa continua a partir do ponto onde este foi
chamado.
Gustavo Callou DEINFO/UFRPE 15
![Page 16: Aula 07 Introdução à Programação Subprogramasgrac/ip/Aula07 - Subprogramas.pdf · 2017-06-21 · Aula 07 Introdução à Programação Subprogramas Prof. Gustavo Callou gustavo.callou@ufrpe.br](https://reader034.fdocumentos.tips/reader034/viewer/2022050505/5f96a737f64ed675eb000b49/html5/thumbnails/16.jpg)
Modularização::Subprograma
Fluxo de Controle
Parte 1Subprograma 2
Unidade de programa chamadora
Sub-programa
A unidade de
programa
chamadora ativa o
sub-programa
A unidade de
programa
chamadora continua
Transferência
de Controle
para o sub-
programa
O controle é
retornado ao
ambiente
chamador
O sub-
programa é
executado
Gustavo Callou DEINFO/UFRPE 16
![Page 17: Aula 07 Introdução à Programação Subprogramasgrac/ip/Aula07 - Subprogramas.pdf · 2017-06-21 · Aula 07 Introdução à Programação Subprogramas Prof. Gustavo Callou gustavo.callou@ufrpe.br](https://reader034.fdocumentos.tips/reader034/viewer/2022050505/5f96a737f64ed675eb000b49/html5/thumbnails/17.jpg)
Modularização::Subprograma
Fluxo de Controle
Parte 1Subprograma 2
main()func1()
func1()
Subprograma 2
func2()
func2()
Gustavo Callou DEINFO/UFRPE 17
![Page 18: Aula 07 Introdução à Programação Subprogramasgrac/ip/Aula07 - Subprogramas.pdf · 2017-06-21 · Aula 07 Introdução à Programação Subprogramas Prof. Gustavo Callou gustavo.callou@ufrpe.br](https://reader034.fdocumentos.tips/reader034/viewer/2022050505/5f96a737f64ed675eb000b49/html5/thumbnails/18.jpg)
Procedimento
Gustavo Callou DEINFO/UFRPE 18
![Page 19: Aula 07 Introdução à Programação Subprogramasgrac/ip/Aula07 - Subprogramas.pdf · 2017-06-21 · Aula 07 Introdução à Programação Subprogramas Prof. Gustavo Callou gustavo.callou@ufrpe.br](https://reader034.fdocumentos.tips/reader034/viewer/2022050505/5f96a737f64ed675eb000b49/html5/thumbnails/19.jpg)
Procedimento
Sintaxe:
void nome_procedimento(tipo parâmetro1, ...,
tipo parâmetro N)
{
Corpo do procedimento;
}
Opcional
Gustavo Callou DEINFO/UFRPE 19
![Page 20: Aula 07 Introdução à Programação Subprogramasgrac/ip/Aula07 - Subprogramas.pdf · 2017-06-21 · Aula 07 Introdução à Programação Subprogramas Prof. Gustavo Callou gustavo.callou@ufrpe.br](https://reader034.fdocumentos.tips/reader034/viewer/2022050505/5f96a737f64ed675eb000b49/html5/thumbnails/20.jpg)
Procedimento
Exemplo:
Exibir na tela uma linha com 20 asteriscos.
void linha(){
int i;
for (i = 1; i <= 20; i++)
printf(‘*’);
printf(‘\n’);
}
Gustavo Callou DEINFO/UFRPE 20
![Page 21: Aula 07 Introdução à Programação Subprogramasgrac/ip/Aula07 - Subprogramas.pdf · 2017-06-21 · Aula 07 Introdução à Programação Subprogramas Prof. Gustavo Callou gustavo.callou@ufrpe.br](https://reader034.fdocumentos.tips/reader034/viewer/2022050505/5f96a737f64ed675eb000b49/html5/thumbnails/21.jpg)
Procedimento
Exemplo de chamada a um procedimento
void main(){
int i;
linha(); /* escreve uma linha de asteriscos */
puts(“Numeros entre 1 e 5”);
linha(); /* escreve outra linha de asteriscos */
for(i = 1; i <= 5; i++)
printf(“%d\n”, i);
linha(); /* escreve outra linha de asteriscos */
}
Gustavo Callou DEINFO/UFRPE 21
![Page 22: Aula 07 Introdução à Programação Subprogramasgrac/ip/Aula07 - Subprogramas.pdf · 2017-06-21 · Aula 07 Introdução à Programação Subprogramas Prof. Gustavo Callou gustavo.callou@ufrpe.br](https://reader034.fdocumentos.tips/reader034/viewer/2022050505/5f96a737f64ed675eb000b49/html5/thumbnails/22.jpg)
Função
Gustavo Callou DEINFO/UFRPE 22
![Page 23: Aula 07 Introdução à Programação Subprogramasgrac/ip/Aula07 - Subprogramas.pdf · 2017-06-21 · Aula 07 Introdução à Programação Subprogramas Prof. Gustavo Callou gustavo.callou@ufrpe.br](https://reader034.fdocumentos.tips/reader034/viewer/2022050505/5f96a737f64ed675eb000b49/html5/thumbnails/23.jpg)
Função
Sintaxe:tipo_retorno nome_função (tipo parâmetro1, ..., tipo parâmetroN)
{
Corpo da função;
return (valor_retorno);
}
Exemplo: Calcular o valor da soma de dois números reais.
float soma(float a, float b) {
float aux;
aux = a + b;
return aux;
}
Opcional
Gustavo Callou DEINFO/UFRPE 23
![Page 24: Aula 07 Introdução à Programação Subprogramasgrac/ip/Aula07 - Subprogramas.pdf · 2017-06-21 · Aula 07 Introdução à Programação Subprogramas Prof. Gustavo Callou gustavo.callou@ufrpe.br](https://reader034.fdocumentos.tips/reader034/viewer/2022050505/5f96a737f64ed675eb000b49/html5/thumbnails/24.jpg)
Função
float soma(float a, float b) {
float aux;
aux = a + b;
return aux;
}
void main () {
float x,y,z;
printf(“Digite X:”);
scanf (“%f”, &x);
printf(“Digite Y:”);
scanf (“%f”, &y);
z = soma(x,y);
printf(“Soma: %f”,z);
}
Gustavo Callou DEINFO/UFRPE 24
Chamada a
uma função
![Page 25: Aula 07 Introdução à Programação Subprogramasgrac/ip/Aula07 - Subprogramas.pdf · 2017-06-21 · Aula 07 Introdução à Programação Subprogramas Prof. Gustavo Callou gustavo.callou@ufrpe.br](https://reader034.fdocumentos.tips/reader034/viewer/2022050505/5f96a737f64ed675eb000b49/html5/thumbnails/25.jpg)
Exercício 1
Faça um programa para fazer conversão de temperaturas de
graus Fahrenheit para graus Celsius e vice-versa.
O programa deverá apresentar os seguintes subprogramas:
a) Função para converter temperaturas em graus Fahrenheit
para graus Celsius. Esta função receberá como parâmetro o valor da
temperatura em graus Fahrenheit a ser convertido e deverá
calcular e retornar para o programa o valor correspondente em
graus Celsius.
b) Função para converter temperaturas em graus Celsius para
graus Fahrenheit. Esta função receberá como parâmetro o valor da
temperatura em graus Celsius a ser convertido e deverá calcular e
retornar o valor correspondente em graus Fahrenheit.
![Page 26: Aula 07 Introdução à Programação Subprogramasgrac/ip/Aula07 - Subprogramas.pdf · 2017-06-21 · Aula 07 Introdução à Programação Subprogramas Prof. Gustavo Callou gustavo.callou@ufrpe.br](https://reader034.fdocumentos.tips/reader034/viewer/2022050505/5f96a737f64ed675eb000b49/html5/thumbnails/26.jpg)
Exercício 2
Uma função para calcular X elevado a Y. Esta
função deve receber como parâmetro dois números
(X – real e Y – inteiro maior ou igual a zero) e deve
calcular e retornar o valor de XY .