44
BCC701- Programa¸ ao de Computadores I 05-Fun¸c˜ oes Definidas pelo Usu´ ario Universidade Federal de Ouro Preto - UFOP Departamento de Computa¸c˜ ao - DECOM http://www.decom.ufop.br/bcc701 BCC701 - 2018-02 DECOM 05 - Fun¸c˜oes Definidas pelo Usu´ ario BCC701 - 2018-02 1 / 29

BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

Embed Size (px)

Citation preview

Page 1: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

BCC701- Programacao de Computadores I

05 - Funcoes Definidas pelo Usuario

Universidade Federal de Ouro Preto - UFOPDepartamento de Computacao - DECOMhttp://www.decom.ufop.br/bcc701

BCC701 - 2018-02

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 1 / 29

Page 2: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

Sumario

1 Introducao

2 SintaxeChamada de FuncaoDefinicao de Funcao

3 ExemplosExemplo 1Exemplo 2Exemplo 3Exemplo 4Exemplo 5Exemplo 6

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 2 / 29

Page 3: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

Introducao

Um programa de computador consiste de uma sequencia de instrucoesa serem executadas;

Dependendo do tipo de programa e do problema a ser resolvido, oprograma pode conter de dezenas a milhares de linhas de codigo;

Entretanto, um programa nao deve ser composto de de um blocomonolıtico de instrucoes;

Pelo contrario, para que seja modular, aumentando a legibilidade emanutenibilidade do programa, deve ser composto de variossubprogramas que“se encaixem”, logicamente formando o todo;

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 3 / 29

Page 4: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

Introducao

Alem disso, certas tarefas podem ser necessarias varias vezes;

Ao inves de“replicar”codigo, os subprogramas conterao um unicocodigo para a tarefa, que pode ser usado sempre que necessario;

Em Scilab, o recurso para criar subprogramas e a criacao de funcoes;

Voce ja usou varias funcoes disponibilizadas pelo proprio Scilab, porexemplo: input, printf, sprintf, modulo, sqrt, int;

Agora voce vai aprender a criar as suas proprias funcoes;

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 4 / 29

Page 5: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

Introducao

Dois conceitos sao muito importantes no entendimento de funcoes:

Chamada de Funcao

Processo pelo qual a funcao e “chamada”, ocasionando na sua execucao,atraves de um desvio na execucao do programa.

Definicao de Funcao

Implementacao do codigo-fonte que define as tarefas a serem executadaspela funcao. Tambem define o que a funcao precisa receber como“entrada”para realizar sua tarefa, e aquilo que ela fornece como“saıda”atraves dos resultados gerados pela sua execucao.Tambem conhecido como“declaracao de funcao”.

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 5 / 29

Page 6: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

Chamada de Funcao

“Chamar”uma funcao significa que voce deseja executar a funcao emum momento especıfico da execucao do seu programa;

Quando voce deseja fazer uma entrada de usuario, voce chama afuncao input;Quando voce deseja imprimir um resultado na tela, voce chama afuncao printf ;Quando voce deseja criar um texto com valores de variaveis, vocechama a funcao sprintf ;Quando voce deseja obter o resto da divisao, voce chama a funcaomodulo;

Existe uma sintaxe para“chamar”uma funcao que precisa serrespeitada;

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 6 / 29

Page 7: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

Chamada de Funcao

[ <sa ı da> = ] <nome da func ao >([ en t r ada ] )

<saıda>: lista de variaveis de retorno, entre colchetes e separadas porvırgula, que receberao o(s) resultados retornados pela funcao;

Caso seja retornado algum valor, a chamada da funcao pode seracompanhada de uma atribuicao ou estar inserida em uma expressaocompatıvel com os argumentos de saıda;

<nome da func~ao>: nome da funcao que devera ser executada;

[entrada]: lista de argumentos (expressoes), separadas por vırgula,que a funcao precisa receber como entrada para executar a tarefa;

Caso a funcao nao receba nenhum argumento de entrada, a lista naosera definida, mas ainda assim e necessario usar os parenteses;

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 7 / 29

Page 8: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

Definicao de Funcao

“Definir”uma funcao significa implementar o codigo-fonte queexecuta a tarefa que ela deve realizar;

Esta tarefa e similar a um programa, mas todas as instrucoes seraovinculadas a funcao, e so serao executadas quando a funcao forchamada;

Assim como para a“chamada”, a“definicao”possui uma sintaxe queprecisa ser respeitada;

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 8 / 29

Page 9: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

Definicao de Funcao

funct ion [< sa ı da> = ] <nome da func ao >([ en t r ada ] )<Codigo da func ao>

endfunction

function e endfunction: palavras reservadas obrigatorias, quedelimitam a definicao da funcao;<saıda>: lista de variaveis, entre colchetes e separadas por vırgula,que retornarao o resultado originado da execucao da tarefa;

Os valores para estas variaveis deverao ser definidos dentro da funcao;Caso nao seja retornado nenhum valor, a lista de variaveis e aatribuicao nao devem ser usadas;

<nome da func~ao>: nome da funcao que esta sendo definida. Segueas mesmas regras de definicao de nomes de variaveis;

[entrada]: lista de argumentos (variaveis), separadas por vırgula,que a funcao precisa receber como entrada para executar a tarefa;

<Codigo da func~ao>: subprograma que executa a tarefa;

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 9 / 29

Page 10: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

Construindo programas com funcoes

O programa completo sera composto pelas funcoes definidas e umprograma principal;

As funcoes devem ser definidas antes do programa principal;

A execucao do programa se inicia pela primeira instrucao doprograma principal;

Uma funcao e executada apenas se ela for chamada durante o fluxode execucao do programa;

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 10 / 29

Page 11: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

Exemplo 1

Implemente um programa que realiza as seguintes tarefas:

Leia dois valores numericos;

Identifique o maior valor entre a subtracao e a soma entre os doisnumeros;

Imprima o maior valor identificado;

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 11 / 29

Page 12: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

Exemplo 1: Solucao 1 (SEM funcao)

1 n1 = input ( ”Numero 1 : ”)2 n2 = input ( ”Numero 2 : ”)3 i f n1−n2 > n1+n2 then4 maior = n1−n25 e l s e6 maior = n1+n27 end8 p r i n t f ( ”O maior e : %g. ” , maior )

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 12 / 29

Page 13: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

Exemplo 1: Solucao 2 (COM funcao)

1 // Dec l a ra c a o de f un c o e s2 funct ion [ r ] = ma io rVa lo r ( a , b )3 i f a > b then4 r = a5 e l s e6 r = b7 end8 endfunction9 // Programa p r i n c i p a l

10 n1 = input ( ”Numero 1 : ”)11 n2 = input ( ”Numero 2 : ”)12 maior = ma io rVa lo r ( n1−n2 , n1+n2 )13 p r i n t f ( ”O maior e : %g. ” , maior )

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 13 / 29

Page 14: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

Exemplo 1: Solucao 2 (COM funcao) - Passo a passo

3 if a > b then4 r = a5 else6 r = b7 end8 endfunction9 // Programa principal

10 n1 = input("Número 1: ")11 n2 = input("Número 2: ")12 maior = maiorValor(n1−n2, n1+n2)13 printf("O maior é: %g.", maior)

Console

Numero 1: ‡Variaveis

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 14 / 29

Page 15: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

Exemplo 1: Solucao 2 (COM funcao) - Passo a passo

3 if a > b then4 r = a5 else6 r = b7 end8 endfunction9 // Programa principal

10 n1 = input("Número 1: ")11 n2 = input("Número 2: ")12 maior = maiorValor(n1−n2, n1+n2)13 printf("O maior é: %g.", maior)

Console

Numero 1: 5‡

Variaveis

n1 5

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 14 / 29

Page 16: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

Exemplo 1: Solucao 2 (COM funcao) - Passo a passo

3 if a > b then4 r = a5 else6 r = b7 end8 endfunction9 // Programa principal

10 n1 = input("Número 1: ")11 n2 = input("Número 2: ")12 maior = maiorValor(n1−n2, n1+n2)13 printf("O maior é: %g.", maior)

Console

Numero 1: 5Numero 2: ‡

Variaveis

n1 5

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 14 / 29

Page 17: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

Exemplo 1: Solucao 2 (COM funcao) - Passo a passo

3 if a > b then4 r = a5 else6 r = b7 end8 endfunction9 // Programa principal

10 n1 = input("Número 1: ")11 n2 = input("Número 2: ")12 maior = maiorValor(n1−n2, n1+n2)13 printf("O maior é: %g.", maior)

Console

Numero 1: 5Numero 2: -3‡

Variaveis

n1; n2 5; -3

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 14 / 29

Page 18: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

Exemplo 1: Solucao 2 (COM funcao) - Passo a passo

3 if a > b then4 r = a5 else6 r = b7 end8 endfunction9 // Programa principal

10 n1 = input("Número 1: ")11 n2 = input("Número 2: ")12 maior = maiorValor(n1−n2, n1+n2)13 printf("O maior é: %g.", maior)

Console

Numero 1: 5Numero 2: -3‡

Variaveis

n1; n2 5; -3

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 14 / 29

Page 19: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

Exemplo 1: Solucao 2 (COM funcao) - Passo a passo

1 // Declaração de funções2 function [r] = maiorValor(a, b)3 if a > b then4 r = a5 else6 r = b7 end8 endfunction9 // Programa principal

10 n1 = input("Número 1: ")

Console

Numero 1: 5Numero 2: -3‡

Variaveis

n1; n2 5; -3

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 14 / 29

Page 20: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

Exemplo 1: Solucao 2 (COM funcao) - Passo a passo

1 // Declaração de funções2 function [r] = maiorValor(a, b)3 if a > b then4 r = a5 else6 r = b7 end8 endfunction9 // Programa principal

10 n1 = input("Número 1: ")

Console

Numero 1: 5Numero 2: -3‡

Variaveis

n1; n2 5; -3a; b 8; 2

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 14 / 29

Page 21: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

Exemplo 1: Solucao 2 (COM funcao) - Passo a passo

1 // Declaração de funções2 function [r] = maiorValor(a, b)3 if a > b then4 r = a5 else6 r = b7 end8 endfunction9 // Programa principal

10 n1 = input("Número 1: ")

Console

Numero 1: 5Numero 2: -3‡

Variaveis

n1; n2 5; -3a; b 8; 2

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 14 / 29

Page 22: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

Exemplo 1: Solucao 2 (COM funcao) - Passo a passo

1 // Declaração de funções2 function [r] = maiorValor(a, b)3 if a > b then4 r = a5 else6 r = b7 end8 endfunction9 // Programa principal

10 n1 = input("Número 1: ")

Console

Numero 1: 5Numero 2: -3‡

Variaveis

n1; n2 5; -3a; b; r 8 ; 2; 8

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 14 / 29

Page 23: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

Exemplo 1: Solucao 2 (COM funcao) - Passo a passo

1 // Declaração de funções2 function [r] = maiorValor(a, b)3 if a > b then4 r = a5 else6 r = b7 end8 endfunction9 // Programa principal

10 n1 = input("Número 1: ")

Console

Numero 1: 5Numero 2: -3‡

Variaveis

n1; n2 5; -3a; b; r 8; 2; 8

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 14 / 29

Page 24: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

Exemplo 1: Solucao 2 (COM funcao) - Passo a passo

1 // Declaração de funções2 function [r] = maiorValor(a, b)3 if a > b then4 r = a5 else6 r = b7 end8 endfunction9 // Programa principal

10 n1 = input("Número 1: ")

Console

Numero 1: 5Numero 2: -3‡

Variaveis

n1; n2 5; -3a; b; r 8; 2; 8

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 14 / 29

Page 25: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

Exemplo 1: Solucao 2 (COM funcao) - Passo a passo

3 if a > b then4 r = a5 else6 r = b7 end8 endfunction9 // Programa principal

10 n1 = input("Número 1: ")11 n2 = input("Número 2: ")12 maior = maiorValor(n1−n2, n1+n2)13 printf("O maior é: %g.", maior)

Console

Numero 1: 5Numero 2: -3‡

Variaveis

n1;n2 5; -3a; b; r 8;2; 8maior 8

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 14 / 29

Page 26: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

Exemplo 1: Solucao 2 (COM funcao) - Passo a passo

3 if a > b then4 r = a5 else6 r = b7 end8 endfunction9 // Programa principal

10 n1 = input("Número 1: ")11 n2 = input("Número 2: ")12 maior = maiorValor(n1−n2, n1+n2)13 printf("O maior é: %g.", maior)

Console

Numero 1: 5Numero 2: -3‡

Variaveis

n1;n2 5; -3maior 8

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 14 / 29

Page 27: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

Exemplo 1: Solucao 2 (COM funcao) - Passo a passo

3 if a > b then4 r = a5 else6 r = b7 end8 endfunction9 // Programa principal

10 n1 = input("Número 1: ")11 n2 = input("Número 2: ")12 maior = maiorValor(n1−n2, n1+n2)13 printf("O maior é: %g.", maior)

Console

Numero 1: 5Numero 2: -3O maior e: 8.‡

Variaveis

n1;n2 5; -3maior 8

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 14 / 29

Page 28: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

Exemplo 1: Solucao 2 (COM funcao) - Passo a passo

3 if a > b then4 r = a5 else6 r = b7 end8 endfunction9 // Programa principal

10 n1 = input("Número 1: ")11 n2 = input("Número 2: ")12 maior = maiorValor(n1−n2, n1+n2)13 printf("O maior é: %g.", maior)

Console

Numero 1: 5Numero 2: -3O maior e: 8.‡

Variaveis

n1;n2 5; -3maior 8

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 14 / 29

Page 29: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

Entendendo melhor o funcionamento

Ao chamar a funcao, havera um desvio da execucao do programa parao codigo da funcao chamada;

Variaveis para os argumentos de entrada sao criadas e recebem osvalores resultantes das expressoes passadas na chamada;

O codigo da funcao e executado como um programa qualquer;

Ao final da execucao da funcao, os valores das variaveis de retornoserao transferidos para“quem”chamou a funcao, dependendo docontexto da chamada:

Caso seja uma atribuicao, os valores serao transferidos entre asvariaveis de saıda da definicao da funcao e da chamada da funcao;Caso seja uma expressao, os valores das variaveis de saıda da definicaoda funcao serao transferidos para a expressao, possibilitando a obtencaodo resultado final da expressao. Neste caso, e importante que os valoresretornados sejam compatıveis com os valores esperados na expressao;

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 15 / 29

Page 30: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

Entendendo melhor o funcionamento

As variaveis do programa principal existirao dentro da funcao(variaveis globais);

Mas, as variaveis da funcao nao existirao fora da funcao (variaveislocais);

As variaveis do programa e das funcoes podem possuir o mesmonome, mas ainda assim, serao variaveis diferentes (elas seraohomonimas);

Uma funcao pode ser chamada em qualquer lugar, inclusive dentro deuma funcao definida pelo usuario;

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 16 / 29

Page 31: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

Exemplo 2

Implemente um programa que realiza as seguintes tarefas:

Leia dois valores inteiros, obrigando o usuario a digitar valores validos;

Identifique o maior valor entre o subtracao e a soma entre os doisnumeros;

Imprima o maior valor identificado;

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 17 / 29

Page 32: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

Exemplo 2: Solucao 1 (SEM funcao para a validacao)

1 // Dec l a ra c a o de f un c o e s2 f u n c t i o n [ r ] = ma io rVa lo r ( a , b )3 i f a > b then4 r = a5 e l s e6 r = b7 end8 end funct i on9 // Programa p r i n c i p a l

10 n1 = i npu t ( ”Numero 1 : ”)11 wh i l e n1 ˜= i n t ( n1 )12 n1 = i npu t ( ”Numero 1 : ”)13 end14 n2 = i npu t ( ”Numero 2 : ”)15 wh i l e n2 ˜= i n t ( n2 )16 n2 = i npu t ( ”Numero 2 : ”)17 end18 maior = ma io rVa lo r ( n1−n2 , n1+n2 )19 p r i n t f ( ”O maior e : %g. ” , maior )

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 18 / 29

Page 33: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

Exemplo 2: Solucao 2 (COM funcao para a validacao)

1 // Dec l a ra c a o de f un c o e s2 f u n c t i o n [ n ] = i n t e i r o (mensagem )3 n = i npu t (mensagem )4 wh i l e n ˜= i n t ( n )5 n = i npu t (mensagem )6 end7 end funct i on8 f u n c t i o n [ r ] = ma io rVa lo r ( a , b )9 i f a > b then

10 r = a11 e l s e12 r = b13 end14 end funct i on15 // Programa p r i n c i p a l16 n1 = i n t e i r o ( ”Numero 1 : ”)17 n2 = i n t e i r o ( ”Numero 2 : ”)18 maior = ma io rVa lo r ( n1−n2 , n1+n2 )19 p r i n t f ( ”O maior e : %g. ” , maior )

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 19 / 29

Page 34: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

Exemplo 3

Implemente um programa que calcule o numero de combinacoes de ntomados k a k, que pode ser obtido com a expressao:(

n

k

)=

n!

(n − k)!k!

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 20 / 29

Page 35: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

Exemplo 3: Solucao 1 (SEM funcao)

(n

k

)=

n!

(n − k)!k!

1 n = i npu t ( ”n = ”)2 k = i npu t ( ”k = ”)3 f a t n = 14 f o r i = 2 : n5 f a t n = f a t n ∗ i6 end7 f a t n k = 18 f o r i = 2 : n − k9 f a t n k = f a t n k ∗ i

10 end11 f a t k = 112 f o r i = 2 : k13 f a t k = f a t k ∗ i14 end15 nComb = f a t n / ( f a t n k ∗ f a t k )16 p r i n t f ( ”O numero de combina c oes e %g. ” , nComb)

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 21 / 29

Page 36: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

Exemplo 3: Solucao 2 (COM funcao)

(n

k

)=

n!

(n − k)!k!

1 // Dec l a ra c a o de f un c o e s2 f u n c t i o n [ f a t ] = f a t o r i a l ( n )3 f a t = 14 f o r i = 2 : n5 f a t = f a t ∗ i6 end7 end funct i on8 // Programa p r i n c i p a l9 n = i npu t ( ”n = ”)

10 k = i npu t ( ”k = ”)11 nComb = f a t o r i a l ( n ) / ( f a t o r i a l ( n − k ) ∗ f a t o r i a l ( k ) )12 p r i n t f ( ”O numero de combina c oes e %g. ” , nComb)

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 22 / 29

Page 37: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

Exemplo 4

Implemente um programa que leia 3 notas de um aluno, definidas entre osvalores 0 e 10. Em seguida, calcule a media das notas e determine se oaluno foi aprovado ou reprovado, mostrando tambem o valor da mediacalculada. A nota media para aprovacao e 6.

Observacoes

Divida o problema em problemas menores, cada pequeno problema eum candidato a ser uma funcao;

Uma possibilidade e dividir o problema em tres:1 Validar uma entrada, obrigando que o valor lido esteja entre 0 e 10;2 Calcular a media e definir o resultado do aluno;3 Um programa principal, que realiza todo o trabalho, chamando as

funcoes que resolvem os problemas menores.

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 23 / 29

Page 38: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

Exemplo 4: Solucao

1 // Dec l a ra c a o de f un c o e s2 f u n c t i o n [ n ] = no taVa l i d a (mensagem )3 n = i npu t (mensagem )4 wh i l e n < 0 | n > 105 n = i npu t (mensagem )6 end7 end funct i on8 f u n c t i o n [ r e s u l t a d o , media ] = ava l i a c a oA l uno ( n1 , n2 , n3 )9 media = ( n1+n2+n3 ) / 3

10 i f media < 6 then11 r e s u l t a d o = ”rep rovado ”12 e l s e13 r e s u l t a d o = ”aprovado ”14 end15 end funct i on16 // Programa p r i n c i p a l17 n1 = no taVa l i d a ( ”Nota 1 : ”)18 n2 = no taVa l i d a ( ”Nota 2 : ”)19 n3 = no taVa l i d a ( ”Nota 3 : ”)20 [ r ,m] = ava l i a c a oA l uno ( n1 , n2 , n3 )21 p r i n t f ( ”A media e %. 2 f , a luno %s . ” , m, r )

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 24 / 29

Page 39: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

Exemplo 5

Implemente um programa que calcule o valor do somatorio a seguir:

n∑i=1

i − sen(i)

i3 − cos(2i)

Observacoes

Uma possibilidade e dividir o problema em quatro:1 Calcular o numerador;2 Calcular o denominador;3 Calcular o termo;4 Um programa principal, que realiza o laco e calcula o somatorio.

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 25 / 29

Page 40: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

Exemplo 5: Solucao

n∑i=1

i − sen(i)

i3 − cos(2i)

1 // Dec l a ra c a o de f un c o e s2 f u n c t i o n [ r ] = numerador ( i )3 r = i − s i n ( i )4 end funct i on5 f u n c t i o n [ r ] = denominador ( i )6 r = i ˆ3 − cos (2∗ i )7 end funct i on8 f u n c t i o n [ t ] = termo ( i )9 t = numerador ( i ) / denominador ( i )

10 end funct i on11 // Programa p r i n c i p a l12 n = i npu t ( ”Numero de termos : ”)13 soma = 014 f o r i = 1 : n15 soma = soma + termo ( i )16 end17 p r i n t f ( ”O somat o r i o e %. 2 f . ” , soma )

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 26 / 29

Page 41: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

Exemplo 6

Implemente um programa que realiza a leitura dos coeficientes de umaequacao de segundo grau e imprime os valores de suas raızes.

Observacoes

Uma possibilidade e dividir o problema em dois:1 Calcular as raızes;2 Um programa principal, que le os coeficientes e imprime o resultado.

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 27 / 29

Page 42: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

Exemplo 6: Solucao

1 // Dec l a ra c a o de f un c o e s2 f u n c t i o n [ r , x1 , x2 ] = baska ra ( a , b , c )3 x1 = 0 ; x2 = 0 // P r e c i s o d e f i n i r algum v a l o r de r e t o r n o4 i f a == 0 then5 r = 1 // Codigo para e r r o a == 06 e l s e7 d e l t a = bˆ2 − 4∗a∗c8 i f d e l t a < 0 then9 r = 2 // Codigo para e r r o d e l t a < 0

10 e l s e11 i f ( d e l t a == 0) then12 x = −b / (2∗ a )13 r = 3 // Codigo para d e l t a == 014 x1 = x ; x2 = x15 e l s e16 x1 = (−b + s q r t ( d e l t a ) ) / (2∗ a )17 x2 = (−b − s q r t ( d e l t a ) ) / (2∗ a )18 r = 4 // Codigo para d e l t a > 019 end20 end21 end22 end funct i on

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 28 / 29

Page 43: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

Exemplo 6: Solucao

23 // Programa p r i n c i p a l24 a = i npu t ( ’ D i g i t e o c o e f i c i e n t e A : ’ )25 b = i npu t ( ’ D i g i t e o c o e f i c i e n t e B : ’ )26 c = i npu t ( ’ D i g i t e o c o e f i c i e n t e C : ’ )27 [ r , x1 , x2 ] = baska ra ( a , b , c )28 i f r == 1 then29 p r i n t f ( ’ \nERRO: C o e f i c i e n t e a == 0 ’ )30 e l s e i f r == 231 p r i n t f ( ’ \nERRO: De l ta < 0 . ’ )32 e l s e i f r == 333 p r i n t f ( ”x1 = x2 = %g\n ” , x1 )34 e l s e35 p r i n t f ( ’ x1 = %g\nx2 = %g ’ , x1 , x2 )36 end

Observacao

O comportamento sera diferente do programa definido na aula deEstrutura de Decisao, mas resolve o problema proposto.

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 28 / 29

Page 44: BCC701- Programação de Computadores I 05 - Funções ...2018_02][bcc... · programa pode conter de dezenas a milhares de linhas de c odigo; Entretanto, um programa n~ao deve ser

DUVIDAS

DECOM 05 - Funcoes Definidas pelo Usuario BCC701 - 2018-02 29 / 29