aula 07 introdução à programação subprogramasgrac/ip/aula07 - subprogramas.pdf ·...

26
Aula 07 Introdução à Programação Subprogramas Prof. Gustavo Callou [email protected] [email protected]

Upload: others

Post on 06-Aug-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

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

Aula 07

Introdução à Programação

Subprogramas

Prof. Gustavo Callou

[email protected]

[email protected]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 .