Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Aula 07
Introdução à Programação
Subprogramas
Prof. Gustavo Callou
SubProgramas
Procedimentos
Funções
Exercícios
Gustavo Callou DEINFO/UFRPE 2
Roteiro
Sistema complexo
Gustavo Callou DEINFO/UFRPE 3
Simples
Gustavo Callou DEINFO/UFRPE 4
Dividir para
Conquistar
Gustavo Callou DEINFO/UFRPE 5
Modularização
Situação
Parte 1
Parte 2
Parte 3
Parte 4
Problema
Gustavo Callou DEINFO/UFRPE 6
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
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
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
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
Modularização::Subprograma
Tipos de Subprogramas
Procedimentos
Funções
Gustavo Callou DEINFO/UFRPE 11
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
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
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
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
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
Modularização::Subprograma
Fluxo de Controle
Parte 1Subprograma 2
main()func1()
func1()
Subprograma 2
func2()
func2()
Gustavo Callou DEINFO/UFRPE 17
Procedimento
Gustavo Callou DEINFO/UFRPE 18
Procedimento
Sintaxe:
void nome_procedimento(tipo parâmetro1, ...,
tipo parâmetro N)
{
Corpo do procedimento;
}
Opcional
Gustavo Callou DEINFO/UFRPE 19
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
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
Função
Gustavo Callou DEINFO/UFRPE 22
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
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
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.
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 .