• Nenhum resultado encontrado

Módulos ou Subrotinas: PARTE II. Criando seus próprios módulos

N/A
N/A
Protected

Academic year: 2021

Share "Módulos ou Subrotinas: PARTE II. Criando seus próprios módulos"

Copied!
85
0
0

Texto

(1)

Módulos ou Subrotinas:

PARTE II

(2)

Objetivos da Aula

Compreender a necessidade e a importância de

modularizar

Aprender a criar e utilizar (chamar) seus

próprios módulos

(3)

Refletindo ...

Até o momento temos escrito nossos programas no

PortugolStudio de maneira “sequencial” dentro da

(4)

Refletindo ...

À medida que os problemas vão se tornando mais

complexos,

os programas (solução) tendem a ficar

mais

extensos.

Modularizar permite “quebrar” o problema em

subproblemas.

Para cada subproblema podemos, por exemplo,

escrever um

módulo específico

(função)

(5)

PROBLEMA

EXEMPLO

(6)

Escreva um programa ler dois vetores (A e B) de

10 elementos cada. Após a entrada de dados, o

programa deve:

Obter e exibir a soma dos elementos do vetor A

Obter e exibir a soma dos elementos do vetor B

Calcular e exibir a média dos elementos dos dois

vetores (uma única média)

Imprimir o vetor A e depois o vetor B

Mostrar os elementos de A e B que são acima da média

de ambos

(7)

Escreva um programa ler dois vetores (A e B) de 10

elementos cada. Após a entrada de dados, o programa

deve:

Obter e exibir a soma dos elementos do vetor A Obter e exibir a soma dos elementos do vetor B

Calcular e exibir a média dos elementos dos dois vetores (uma única média)

Imprimir o vetor A e depois o vetor B

Mostrar os elementos de A e B que são acima da média de ambos

(8)

 SAÍDA:

soma do vetor A (somaA), soma do vetor B (soma B),

media dos dois vetores (mediaAB), exibir vetor A, exibir vetor

B, exibir elementos de A e B acima de mediaAB.

Escreva um programa ler dois vetores (A e B) de 10

elementos cada. Após a entrada de dados, o programa

deve:

Obter e exibir a soma dos elementos do vetor A Obter e exibir a soma dos elementos do vetor B

Calcular e exibir a média dos elementos dos dois vetores (uma única média)

Imprimir o vetor A e depois o vetor B

(9)

 ENTRADA DE DADOS:

os vetores A e B

Escreva um programa

ler dois vetores

(A e B) de 10

elementos cada. Após a entrada de dados, o programa

deve:

Obter e exibir a soma dos elementos do vetor A Obter e exibir a soma dos elementos do vetor B

Calcular e exibir a média dos elementos dos dois vetores (uma única média)

Imprimir o vetor A e depois o vetor B

(10)
(11)
(12)

PROCESSAMENTO [1]:

Note que poderíamos usar um ÚNICO laço de repetição para somar os DOIS vetores. Propositalmente, optou-se por tratar cada problema (de somar cada vetor) como um problema específico.

- Obter e exibir a soma dos elementos do vetor A - Obter e exibir a soma dos elementos do vetor B

(13)

PROCESSAMENTO [2]

- Calcular e exibir a média dos elementos dos dois vetores (uma única média)

(14)

PROCESSAMENTO [3]

Mostrar os elementos de A e B que são acima da média de ambos

(15)
(16)
(17)
(18)

O programa completo possui cerca de 53 linhas

Há diversos trechos no programa que são

“repetitivos”

,

ou seja, fazem a “mesma” coisa,

mudando-se apenas a “variável”

(19)

Trecho repetitivo:

ENTRADA DE DADOS

O “mesmo trecho” para ENTRADA DE DADOS dos vetores! Muda apenas o nome da variável.

(20)

Trecho repetitivo:

SOMA ELEMENTOS VETOR

O “mesmo trecho” para SOMA DOS ELEMENTOS dos vetores! Muda apenas o nome da variável.

(21)

Trecho repetitivo:

IMPRIME VETOR

O “mesmo trecho” para IMPRIMIR VETOR! Muda apenas o nome da variável.

(22)

Trecho repetitivo:

ELEMENTOS ACIMA MEDIA

O “mesmo trecho” para MOSTRAR ELEMENTOS ACIMA DA MÉDIA! Muda apenas o nome da variável.

(23)

Trechos repetitivos é um convite ao

REUSO!

Cada “parte” do programa tem uma

FINALIDADE

ESPECÍFICA

:

Ler o vetor

(subproblema 1)

Somar os elementos do vetor

(subproblema 2)

Imprimir os elementos do vetor

(subproblema 3)

Exibir os elementos acima da media

(subproblema 4)

Reuso

e

Problemas com finalidade específica é um

convite a

MODULARIZAÇÃO!!!

(24)

SOLUÇÃO

MODULARIZADA

Primeiro vamos ver a solução

modularizada, para entendermos suas

vantagens! Em seguida vamos aprender a

(25)
(26)

Primeiro, vamos pegar cada

trecho específico

, um

a um, e transformá-lo numa

função

Modularizando

(27)

MODULARIZANDO A ROTINA

(28)

O que difere entre os dois trechos é apenas a

variável do

“leia”

(29)

Note que os trechos são IDÊNTICOS!

Apenas “criamos” uma nova função, demos um nome a ela

(Leitura_Vetor)

e agora podemos CHAMÁ-LA

Daqui a pouco entenderemos melhor os detalhes da criação da função: nome, parâmetros, etc.

(30)

Existindo a função podemos CHAMÁ-LA como fazemos

com funções existentes (potencia, raiz, etc)

Note que “Leitura_Vetor” é chamada duas vezes: uma para

A e outra para B

(31)

MODULARIZANDO A ROTINA

(32)

O que difere os dois trechos?

(33)

Note que os trechos são IDÊNTICOS!

Apenas “criamos” uma nova função, demos um nome a ela

(Soma_Vetor)

e agora podemos CHAMÁ-LA

Daqui a pouco entenderemos melhor os detalhes da criação da função : nome, parâmetros, etc.

(34)

Existindo a função podemos CHAMÁ-LA como fazemos

com funções existentes (potencia, raiz, etc)

Note que “Soma_Vetor” é chamada duas vezes: uma para A

e outra para B

(35)

MODULARIZANDO A ROTINA

(36)

O que difere os dois trechos?

(37)

Note que os trechos são IDÊNTICOS!

Apenas “criamos” uma nova função, demos um nome a ela

(Imprime_Vetor)

e agora podemos CHAMÁ-LA

Daqui a pouco entenderemos melhor os detalhes da criação da função : nome, parâmetros, etc.

(38)

Existindo a função podemos CHAMÁ-LA como fazemos

com funções existentes (potencia, raiz, etc)

Note que “Imprime_Vetor” é chamada duas vezes: uma para

A e outra para B

(39)

MODULARIZANDO A ROTINA

(40)

O que difere os dois trechos?

(41)

Note que os trechos são IDÊNTICOS!

Apenas “criamos” uma nova função, demos um nome a ela

(Imprime_Acima_Media)

e agora podemos CHAMÁ-LA

Daqui a pouco entenderemos melhor os detalhes da criação da função : nome, parâmetros, etc.

(42)

Existindo a função podemos CHAMÁ-LA como fazemos

com funções existentes (potencia, raiz, etc)

Note que “Imprime_Acima_Media” é chamada duas vezes:

uma para A e outra para B

(43)
(44)

FUNÇÃO INÍCIO

Note como o

programa está mais

ENXUTO (código

mais limpo)

(45)

FUNÇÕES DE USUÁRIO (CRIADAS)

AS FUNÇÕES

CRIADAS E QUE

FORAM CHAMADAS

(46)

VANTAGENS DA

MODULARIZAÇÃO

(47)

Modularização - Vantagens

Reaproveitamento de código

(reuso)

Organização

Legibilidade

Flexibilidade

(48)

COMO ESCREVER E ATIVAR

MÓDULOS

(FUNÇÕES)

(49)

Módulos – Estrutura e Sintaxe

Um programa modularizado tem:

um

módulo principal

(função início) e

outros módulos que vamos chamar de

(50)
(51)

Módulos - Sintaxe

Sintaxe parecida com O módulo principal

1- Palavra funcao (obrigatório)

2- Valor de retorno (caso exista)

3- Identificador (obrigatório) 4- Parênteses com parâmetros (caso exista)

(52)

PARÂMETROS

São os valores ou variáveis

enviadas ao

módulo

, para que ele possa realizar o seu

processamento

Podemos passar nenhum ou vários parâmetros

para o módulo

Tudo depende da finalidade do módulo (e de

como ele foi construído)

(53)

RETORNO

O Retorno de um módulo é o valor (ou valores) que o

módulo retorna para o local em que ele foi chamado

(54)

Módulos – Sintaxe - Portugol

palavra

funcao

valor de retorno (caso exista) Identificador (nome da função) Parâmetros da função) tipo do retorno da função

(55)

Módulos – Sintaxe - Portugol

palavra funcao

NOTE QUE ESSA FUNÇÃO NÃO TEM RETORNO Identificador (nome da função)

(56)

Módulos – Sintaxe - Portugol

Sempre dentro das chaves, para Delimitar o BLOCO do módulo

(57)

EXECUÇÃO E CHAMADA

DOS MÓDULOS

(58)

Módulos – Execução de um Módulo

A chamada (ou ativação) de um módulo, representa a

execução das ações contidas nele, em seguida a

execução retorna para a instrução seguindo ao ponto

da sua chamada (que poderá ser o módulo principal ou

noutros módulos)

Não existe ordem para a definição dos módulos

Quem determina a execução de um MÓDULO (ou

função) é a sua chamada.

(59)

Módulos – Execução (chamada)

O módulo principal

(função início)

É o primeiro a ser chamado quando um

programa é executado

Os outros módulos são ativados (executados)

toda vez que forem chamados (pelo nome)

A chamada de um módulo deve respeitar sua

definição (nome, parâmetros, etc)

(60)

Note as chamadas à função

SOMA_VETOR

: passando dois

parâmetros e atribuindo o valor do

retorno

para somaA e somaB

(61)

Note as chamadas à função

IMPRIME_VETOR

: passando dois

parâmetros. Não há atribuição pois a função

não retorna

nada!

(62)

Módulos – Execução de um Módulo

Qualquer função pode chamar outra função.

Um módulo pode chamar ele próprio?

(63)
(64)

Escreva um programa para exibir o peso ideal de uma pessoa utilizando a formula a seguir:

Problema

 Masculino: 72.7 x altura – 58

 Feminino: 62.1 x altura – 44.7

A entrada e saída de dados poderá ser feito no módulo principal

(função início). No entanto, o calculo do peso ideal deve ser feito em uma função específica.

(65)

Escreva um programa para exibir o peso ideal de uma pessoa utilizando a formula a seguir:

Problema

 SAÍDA:

peso ideal

 Masculino: 72.7 x altura – 58

 Feminino: 62.1 x altura – 44.7

A entrada e saída de dados poderá ser feito no módulo principal

(função início). No entanto, o calculo do peso ideal deve ser feito em uma função específica.

(66)

Escreva um programa para exibir o peso ideal de uma pessoa utilizando a formula a seguir:

Problema

 SAÍDA:

peso ideal

 Masculino: 72.7 x altura – 58

 Feminino: 62.1 x altura – 44.7

A entrada e saída de dados poderá ser feito no módulo principal

(função início). No entanto, o calculo do peso ideal deve ser feito em uma função específica.

(67)

Solução

A entrada e saída de dados poderá ser feito no módulo principal

(função início). No entanto, o calculo do peso ideal deve ser feito em uma função específica.

(68)

Construção da Função

A entrada e saída de dados poderá ser feito no módulo principal

(função início). No entanto, o calculo do peso ideal deve ser feito em uma função específica.

 Masculino: 72.7 x altura – 58

 Feminino: 62.1 x altura – 44.7

Para construir o módulo (função) precisamos:

1.

Definir identificador (nome da função)

2.

Definir os parâmetros (tipo e nome), se necessário

(69)

Construção da Função

 Masculino: 72.7 x altura – 58

 Feminino: 62.1 x altura – 44.7

1.

Definir identificador (nome da função)

Calcula_Peso_Ideal

2.

Definir os parâmetros (tipo e nome), se necessário

A função precisa receber o SEXO e ALTURA por parâmetro (já que eles foram lidos fora da função)

3.

Definir tipo do retorno, se necessário

(70)

Construção da Função

 Masculino: 72.7 x altura – 58

(71)

Construção da Função

 Masculino: 72.7 x altura – 58

(72)

Solução Completa

(73)
(74)

Blocos

Um BLOCO é delimitado por um par de chaves

{ }

Um BLOCO define o ESCOPO das variáveis.

A variável só existe dentro do “bloco” em que

(75)

Módulos – Escopo

LOCAL

Escopo local – VARIÁVEL existe somente no

módulo em que foi declarada.

Quando a execução do módulo (função) é

finalizada a variável é “liberada” (da memória) e

os valores perdidos.

Caso os valores devam “sair” da função (antes

de serem perdidos) eles precisam ser

(76)

Escopo Global

Escopo global – são variáveis que podem ser utilizadas

nos módulos em que foram declaradas e também nos

módulos internos aos módulos que foram declarados

Evitem utilizar variáveis globais!

Ocupam mais espaço de memória, pois ocupam a

memória enquanto o programa estiver sendo

executado

(77)

PASSAGEM DE PARÂMETRO POR VALOR

Ocorre a passagem do VALOR (conteúdo) para a

variável correspondente na função, por correspondência

de posição: o primeiro valor é passado para a primeira

variável, o segundo valor é passado para a segunda

posição, e assim por diante

Caso haja alterações no parâmetro correspondente

(dentro da função) essas

mudanças

são perdidas

(a não

ser que os valores sejam retornados).

(78)

PASSAGEM DE PARÂMETRO POR REFERÊNCIA

Ocorre a passagem do

ENDEREÇO

da variável (e não

apenas o conteúdo). É criado uma CONEXÃO entre as

variáveis correspondentes.

Caso haja alterações no parâmetro correspondente

(dentro da função) essas mudanças alteram a variável

passada por parâmetro (similar a um “retorno”)

NO PORTUGOL STUDIO a passagem de parâmetros

por REFERÊNCIA é feita colocando-se um

&

antes do

nome da variável

(79)

PASSAGEM DE PARÂMETRO POR REFERÊNCIA

Note que na função Leitura_Vetor o

primeiro parâmetro usa o & pois o

VETOR é modificado dentro da função e

essa modificação precisa ser refletida

fora da função

(80)

PASSAGEM DE PARÂMETRO POR VALOR

Note que na função Imprime_Vetor a passagem é

feita por VALOR (sem o &) pois a função NÃO

(81)

Coisas para recordar

Obrigatório existir um módulo principal

O módulo principal é criado automaticamente

Para criar seus módulos você precisa pensar:

No objetivo do módulo

Identificador

Número e tipo de parâmetros

Valor de retorno

(82)

Coisas para não esquecer

Um bloco é delimitado pelos CHAVES { e }.

Uma variável que é declarada dentro de um módulo é

chamada de

variável local

e existe apenas dentro do

módulo.

O módulo fica na memória durante a sua execução sendo

destruido quando última instrução é executada (ou após

um retorne).

Uma variável criada fora de qualquer módulo é chamada

de

variável global

.

A variável global existe dentro de qualquer módulo criado

dentro do programa.

(83)

AGORA É

(84)
(85)

Modularização – Exercício

Escreva a função

Valida_Inteiro para solicitar um número

inteiro e validá-lo de forma que o mesmo esteja dentro de

um intervalo. Os limites do intervalo serão passados por

parâmetro. Escreva também a função principal (início) para

fazer a chamada da função com os seguintes valores:

Valida_Inteiro (0, 100) // aceitar valores entre 0 e 100

Valida_Inteiro (-50, 50) // aceitar valores entre -50 e 50

Atenção: A comunicação dos valores entre a função e o meio externo dever ser

Referências

Documentos relacionados

Na maioria das regiões produtoras de café no estado, com exceção da região do Norte de Minas/Jequiti- nhonha e Mucuri, as condições climáticas vigentes no período

3.4.4 Se você modificar qualquer parte de seu transporte ou não fizer o check-in antes do fechamento do mesmo para seu voo sem nos avisar, não atendendo ao artigo

16/02/2018 CONTRATANTE: MUNICÍPIO DE AMARGOSA, CONTRATADA: NADJA MARIA AMADO DE JESUS, CPF: 487.081.005-00 OBJETO: CONTRATAÇÃO DE PROFISSIONAL DA ÁREA DE EDUCAÇÃO COM

Anno Descrizione Lavoro Importo lavori a base d'asta Tipologia Lavoro Committente Natura e livello della prestazione Grado di attuazione 2018 Implementazione sistema di

Nenhum prato, produto alimentar ou bebida pode ser cobrado se não for solicitado pelo cliente ou por este for inutilizado.. ■ Mozzarella di Bufala del giorno 250

Afim de avaliar a influência dos parâmetros de node embedding na classificação, foi tomado dos pior e melhor algoritmos, as 10 melhores e as 10 piores configurações de embedding

O tratamento 3, composto do substrato comercial TN Gold, esterco bovino e areia lavada, foi o que proporcionou os maiores valores para o desenvolvimento inicial das mudas de tomate,

apresentaram Escritura Pública de Dação em Pagamento para registro perante o Serviço apelado, todavia, o ato não foi realizado, ao fundamento de que existiria