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

Documentos relacionados
Bacharelado em Ciência e Tecnologia Processamento da Informação. Módulos Parte III

Lógica de Programação. Profas. Simone Campos Camargo e Janete Ferreira Biazotto

Departamento de Informática - PUC-Rio INF 1005 Programação I P1 22/09/2010 Nota

Programação de Computadores I. Linguagem C Função

Comandos de Eletropneumática Exercícios Comentados para Elaboração, Montagem e Ensaios

tipo e tamanho e com os "mesmos" elementos do vetor A, ou seja, B[i] = A[i].

Programação de Computadores I Estruturas de Repetição PROFESSORA CINTIA CAETANO

Universidade Federal de Ouro Preto UFOP. Instituto de Ciências Exatas e Biológicas ICEB. Departamento de Computação DECOM

Manual Geral de Aplicação Universal Entrada 2008

Lista de Exercícios 04 Estruturas de Dados Homogêneas - Vetores

2) Escreva um algoritmo que leia um conjunto de 10 notas, armazene-as em uma variável composta chamada NOTA e calcule e imprima a sua média.

Programação para Web HTML - Parte 2

Conteúdo programático

Inteligência Artificial

UNIVERSIDADE DO TOCANTINS TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PRÁTICA EM PROGRAMAÇÃO DE SISTEMAS

Os passos a seguir servirão de guia para utilização da funcionalidade Acordo Financeiro do TOTVS Gestão Financeira.

Introdução à orientação a objetos

Aula 11: Desvios e Laços

Expressões Lógicas e Aritméticas. Professora Kátia Adriana Alves Leite de Barros katia.barros@pitagoras.com.br

Carlos de Salles Soares Neto Segundas e Quartas, 17h40 às 19h10

Aula 03. Processadores. Prof. Ricardo Palma

MANUAL HAE - WEB MANUAL WEB HAE

Disponibilizada a rotina Vale Presente (LOJA830) no módulo Controle de Lojas (SIGALOJA), assim como já é utilizada no módulo Front Loja (SIGAFRT).

DK105 GROVE. Temperatura e Umidade. Radiuino

Tópicos Avançados em Banco de Dados Dependências sobre regime e controle de objetos em Banco de Dados. Prof. Hugo Souza

TUTORIAL MATLAB Victor Breder 2016

UNIVERSIDADE DO VALE DO RIO DOS SINOS - UNISINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS - CENTRO 06. Funções, variáveis, parâmetros formais

MÓDULO 2 Topologias de Redes

Introdução ao. Script. Baltazar Tavares (Psycho Mantys)

Lista de Exercícios 1

Manual de Programação TED1000 versão TC100 Ethernet

Programação 2009/2010 MEEC - MEAer Laboratório 5 Semana de 26 de outubro de 2009

Comandos de Desvio 1

LEUCOTRON EQUIPAMENTOS LTDA ROTEIRO DE INTERLIGAÇÃO SIP ACTIVE IP COM REGISTRO

Fundamentos de Programação. Diagrama de blocos

Manual do Usuário Sistema de Acuidade Visual Digital

Roteiro... Sistemas Distribuídos Aula 4. Troca de mensagens. Comunicação entre processos. Conceitos de SD, vantagens e desvantagens

MANUAL DO PROFESSOR. - Inscrições Colégios. Colégios Participantes de Temporadas anteriores:

Algoritmo e Pseudo-código

Programação WEB I Funções

Álgebra Linear Aplicada à Compressão de Imagens. Universidade de Lisboa Instituto Superior Técnico. Mestrado em Engenharia Aeroespacial

BALANÇO PATRIMONIAL AMBIENTAL - EXERCÍCIO COMENTADO Prof Alan

Tutorial do aluno Ambiente Virtual de Aprendizagem (AVA) Rede e-tec Brasil

ROTEIRO PARA REGISTRO NO CONTAS ONLINE Programa Caminho da Escola Parte I Execução Financeira Data de atualização: 21/6/2012

Engenharia de Software II

Programação WEB. Prof. André Gustavo Duarte de Almeida www3.ifrn.edu.br/~andrealmeida. Aula II jquery UI

Sistemas Operacionais. Sincronização: Semáforos Problema dos Leitores/Escritores

LIBERAÇÃO DE ATUALIZAÇÃO CORDILHEIRA

COBRANÇA BANCÁRIA CAIXA

Fundamentos de Bancos de Dados 3 a Prova Caderno de Questões

CONFIGURAçÃO E GERAÇÃO DO LALUR. Parâmetros

Introdução à Programação. Funções e Procedimentos. Prof. José Honorato F. Nunes honoratonunes@gmail.com

Orientação a Objetos

Sistemas Distribuídos

INICIADOS - 2ª Sessão ClubeMath

Cadeira de Tecnologias de Informação. Ano lectivo 2009/2010. Sites dinâmicos. Com Expression Web TI2009/10 EWD_1. Filipa Pires da Silva (2009)

2. ALGORITMOS. Unesp Campus de Guaratinguetá

Driver Next Versão 1.0 de Português

ActivALEA. ative e atualize a sua literacia

Arquitetura TCP/IP. Apresentado por: Ricardo Quintão

Modelos Lineares Generalizados - Verificação do Ajuste do Modelo

Estruturas de Repetição

UTILIZAÇÃO DE RECURSOS AVANÇADOS DO EXCEL EM FINANÇAS (PARTE III): GERENCIAMENTO DE CENÁRIOS

SISTEMA OPERACIONAL - ANDROID

PLANILHA DE NIVELAMENTO

Modelos de Regressão Linear Simples - Erro Puro e Falta de Ajuste

II Semana de Ciência e Tecnologia do IFMG campus Bambuí II Jornada Científica 19 a 23 de Outubro de 2009

2 Segmentação de imagens e Componentes conexas

Função. Adição e subtração de arcos Duplicação de arcos

Algoritmos e Programação : Conceitos e estruturas básicas. Hudson Victoria Diniz

UNIMED LITORAL MANUAL DE PROCESSOS E SISTEMAS DE INFORMAÇÃO

Módulo 1 - Mês 1- Aula 3

Drone2Map: o software que transforma imagens de drones em mapas 2D e 3D

Aula 5. Uma partícula evolui na reta. A trajetória é uma função que dá a sua posição em função do tempo:

MDS II Aula 04. Concepção Requisitos Diagrama de Casos de Uso (Use Cases)

SISTEMAS DISTRIBUÍDOS

Observando embalagens

Configuração para Uso do Tablet no GigaChef e Outros Dispositivos

Tutorial. Georreferenciamento de Imagens. versão /08/2008. Autores: Rafael Bellucci Moretti, Vitor Pires Vencovsky

MANUAL DE INSTALAÇÃO SAT DIMEP PDV CAKE

ISS Eletrônico. Formato de Arquivos para Transmissão de Documentos Declarados através do aplicativo OFFLINE. Extensão do Arquivo JUNHO2006.

5a. Aula - XML

APOSTILA DE INFORMÁTICA INTERNET E

Manual de Utilização. Ao acessar o endereço chegaremos a seguinte página de entrada: Tela de Abertura do Sistema

Manual do Usuário (Firma Inspetora) Versão 1.8. CMCP - Controle da Marcação Compulsória de Produtos

MANUAL DE INSTALAÇÃO DO MILLENNIUM BASIC

CATÁLOGO DE APLICAÇÕES Rateio CC Contas a Pagar

Flávia Rodrigues. Silves, 26 de Abril de 2010

,QVWDODomR. Dê um duplo clique para abrir o Meu Computador. Dê um duplo clique para abrir o Painel de Controle. Para Adicionar ou Remover programas

GEOMETRIA. sólidos geométricos, regiões planas e contornos PRISMAS SÓLIDOS GEOMÉTRICOS REGIÕES PLANAS CONTORNOS

A uma plataforma online de gestão de condomínios permite gerir de forma fácil e simples a atividade do seu condomínio.

Gerenciador de Ambiente Laboratorial - GAL Manual do Usuário Módulo Controle de Qualidade Analítico

Guia de Referência OPEN PROJECT Treinamento Essencial

Instruções para o cadastramento da Operação de Transporte e geração do Código Identificador da Operação de Transporte CIOT.

MANUAL DE INTEGRAÇÃO FORTES AC PESSOAL / CONTÁBIL

Para entender o conceito de objetos em programação devemos fazer uma analogia com o mundo real:

Sistema NetConta I - Guia de Referência Rápida

Transcrição:

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

Objetivos da Aula Compreender a necessidade e a importância de modularizar Aprender a criar e utilizar (chamar) seus próprios módulos

Refletindo... Bacharelado em Ciência e Tecnologia Até o momento temos escrito nossos programas no PortugolStudio de maneira sequencial dentro da função início

Refletindo... Bacharelado em Ciência e Tecnologia À 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)

PROBLEMA EXEMPLO

Problema 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

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 SAÍDA DE DADOS?

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 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 Mostrar os elementos de A e B que são acima da média de ambos ENTRADA DE DADOS: os vetores A e B

SOLUÇÃO 1

DECLARAÇÃO DE VARIÁVEIS E ENTRADA DE DADOS

PROCESSAMENTO [1]: - Obter e exibir a soma dos elementos do vetor A - Obter e exibir a soma dos elementos do vetor B 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.

PROCESSAMENTO [2] - Calcular e exibir a média dos elementos dos dois vetores (uma única média) - Imprimir o vetor A e depois o vetor B

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

SOLUÇÃO COMPLETA (53 LINHAS DE PROGRAMA)

SOLUÇÃO COMPLETA (53 LINHAS DE PROGRAMA)

SOLUÇÃO COMPLETA

Análise da Solução Bacharelado em Ciência e Tecnologia 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

Trecho repetitivo: ENTRADA DE DADOS O mesmo trecho para ENTRADA DE DADOS dos vetores! Muda apenas o nome da variável.

Trecho repetitivo: SOMA ELEMENTOS VETOR O mesmo trecho para SOMA DOS ELEMENTOS dos vetores! Muda apenas o nome da variável.

Trecho repetitivo: IMPRIME VETOR O mesmo trecho para IMPRIMIR VETOR! Muda apenas o nome da variável.

Trecho repetitivo: ELEMENTOS ACIMA MEDIA O mesmo trecho para MOSTRAR ELEMENTOS ACIMA DA MÉDIA! Muda apenas o nome da variável.

ANÁLISE DA SOLUÇÃO Bacharelado em Ciência e Tecnologia 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!!!

SOLUÇÃO MODULARIZADA Primeiro vamos ver a solução modularizada, para entendermos suas vantagens! Em seguida vamos aprender a escrever os módulos (funções)

Modularizando Primeiro, vamos pegar cada trecho específico, um a um, e transformá-lo numa função Comecemos pela ENTRADA DE DADOS

MODULARIZANDO A ROTINA LEITURA VETOR

Modularizando ENTRADA DE DADOS O que difere entre os dois trechos é apenas a variável do leia

Modularizando ENTRADA DE DADOS 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.

Modularizando - ENTRADA DE DADOS 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

MODULARIZANDO A ROTINA SOMA VETOR

Modularizando SOMA VETOR O que difere os dois trechos?

Modularizando SOMA VETOR 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.

Modularizando - SOMA VETOR 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

MODULARIZANDO A ROTINA IMPRIME VETOR

Modularizando IMPRIME VETOR O que difere os dois trechos?

Modularizando IMPRIME VETOR 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.

Modularizando - IMPRIME VETOR 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

MODULARIZANDO A ROTINA IMPRIME ACIMA MEDIA

Modularizando IMPRIME ACIMA DA MÉDIA O que difere os dois trechos?

Modularizando IMPRIME ACIMA DA MÉDIA 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.

Modularizando - IMPRIME ACIMA DA MÉDIA 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

SOLUÇÃO COMPLETA

FUNÇÃO INÍCIO Note como o programa está mais ENXUTO (código mais limpo)

FUNÇÕES DE USUÁRIO (CRIADAS) AS FUNÇÕES CRIADAS E QUE FORAM CHAMADAS (E REUSADAS)

VANTAGENS DA MODULARIZAÇÃO

Modularização - Vantagens Reaproveitamento de código (reuso) Organização Legibilidade Flexibilidade

COMO ESCREVER E ATIVAR MÓDULOS (FUNÇÕES)

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 funções de usuário

Módulos - Sintaxe Sintaxe parecida com O módulo principal 4- Parênteses com parâmetros (caso exista) 3- Identificador (obrigatório) 1- Palavra funcao (obrigatório) 2- Valor de retorno (caso exista)

PARÂMETROS Bacharelado em Ciência e Tecnologia 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) (2) PARÂMETROS

RETORNO O Retorno de um módulo é o valor (ou valores) que o módulo retorna para o local em que ele foi chamado (3) RETORNO

Módulos Sintaxe - Portugol palavra funcao tipo do retorno da função Identificador (nome da função) Parâmetros da função) valor de retorno (caso exista)

Módulos Sintaxe - Portugol palavra funcao Identificador (nome da função) Parâmetros da função) NOTE QUE ESSA FUNÇÃO NÃO TEM RETORNO

Módulos Sintaxe - Portugol Sempre dentro das chaves, para Delimitar o BLOCO do módulo

EXECUÇÃO E CHAMADA DOS MÓDULOS

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.

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)

Modularização - CHAMADA Note as chamadas à função SOMA_VETOR: passando dois parâmetros e atribuindo o valor do retorno para somaa e somab

Modularização - CHAMADA Note as chamadas à função IMPRIME_VETOR: passando dois parâmetros. Não há atribuição pois a função não retorna nada!

Módulos Execução de um Módulo Qualquer função pode chamar outra função. Um módulo pode chamar ele próprio? Recursividade! Fora do escopo da disciplina

EXEMPLO

Problema Escreva um programa para exibir o peso ideal de uma pessoa utilizando a formula a seguir: 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. SAÍDA:???

Problema Escreva um programa para exibir o peso ideal de uma pessoa utilizando a formula a seguir: 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. SAÍDA: peso ideal

Problema Escreva um programa para exibir o peso ideal de uma pessoa utilizando a formula a seguir: 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. SAÍDA: peso ideal ENTRADA: sexo e altura

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.

Construção da Função Bacharelado em Ciência e Tecnologia 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 3. Definir tipo do retorno, se necessário

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 A função deverá RETORNAR o peso ideal calculado

Construção da Função Masculino: 72.7 x altura 58 Feminino: 62.1 x altura 44.7

Construção da Função Masculino: 72.7 x altura 58 Feminino: 62.1 x altura 44.7

Solução Completa CHAMADA DA FUNÇÃO

Solução Completa

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 ela foi declarada.

Módulos Escopo LOCAL Bacharelado em Ciência e Tecnologia 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 RETORNADOS: retorne

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 Dê preferência pelas variáveis locais!

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). ESSA É A PASSAGEM DE PARÂMETRO PADRÃO!

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

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

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 modifica o conteúdo do vetor

Coisas para recordar Bacharelado em Ciência e Tecnologia 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

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.

AGORA É PRATICAR!!!

Exercícios

Modularização Exercício Bacharelado em Ciência e Tecnologia 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 feita por passagem de parâmetros (e não por variáveis globais)