UNIDADE 6 - PROGRAMAÇÃO MODULAR



Documentos relacionados
TÉCNICAS DE PROGRAMAÇÃO

Existem dois tipos básicos de subrotinas: a) Procedimentos; b) Funções.

15 a Aula Subprogramação /Subalgoritmos Função e Procedimento

Regras Métodos Identificadores Variáveis Constantes Tipos de dados Comandos de atribuição Operadores aritméticos, relacionais e lógicos

Programação I. Departamento de Engenharia Rural Centro de Ciências Agrárias

CONCEITOS BÁSICOS PARA A CONSTRUÇÃO DE ALGORITMOS PARA COMPUTADORES. Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com

Algoritmos Estruturas Seqüenciais. José Gustavo de Souza Paiva

Algoritmos e Programação Parte Teórica

Tópicos Avançados em Banco de Dados Gerenciamento de Transações em Banco de Dados. Prof. Hugo Souza

Implementando uma Classe e Criando Objetos a partir dela

FMEA (Failure Model and Effect Analysis)

compreender a importância de cada estrutura de controle disponível na Linguagem C;

Cotagem de dimensões básicas

Linguagem e Técnicas de Programação I Tipos de dados, variáveis e constantes. Prof. MSc. Hugo Souza Material desenvolvido por: Profa.

- Aulas 57, 58, 59 e 60 - Técnicas de programação. Funções

AULA 12 FUNÇÕES Disciplina: Algoritmos e POO Professora: Alba Lopes alba.lopes@ifrn.edu.br

Programação Estruturada. Programação Estruturada. Idéias Básicas da Programação Estruturada

DESENVOLVIMENTO DE SOFTWARE

Resolução de problemas e desenvolvimento de algoritmos

Algoritmos não se aprendem: Copiando algoritmos Estudando algoritmos Algoritmos só se aprendem: Construindo algoritmos Testando algoritmos

Linguagens de Programação Aula 10

ILP - Introdução à Linguagem de Programação. Plano de estudo: - Constantes e variáveis. - Atribuindo valores às variáveis.

Aula 9 ESCALA GRÁFICA. Antônio Carlos Campos

Cotagem de elementos

O mecanismo de alocação da CPU para execução de processos constitui a base dos sistemas operacionais multiprogramados.

Apostila de Fundamentos de Programação I. Prof.: André Luiz Montevecchi

INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO

Estruturas de Repetição

P r o g r a m a ç ã o d e C o m p u t a d o r e s 1 o S e m P r o f. A n d r é A m a r a n t e L u i z L A B 5 tag %2d while printf PE1:

3. Estruturas de seleção

5. Uma lousa denominada EPI (registrador de endereço de próxima instrução).

Guia de utilização da notação BPMN

INTRODUÇÃO À LINGUAGEM C++

Conceitos básicos da linguagem C

Escalas. Antes de representar objetos, modelos, peças, A U L A. Nossa aula. O que é escala

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

Portal do Projeto Tempo de Ser

Estrutura de Dados Básica

3 Qualidade de Software

GABARITO COMENTADO SISTEMAS OPERACIONAIS. PROF. Cláudio de C. Monteiro, Evanderson S. de Almeida, Vinícius de M. Rios

Tarefa Orientada 18 Procedimentos armazenados

Sumário Algoritmos e Estrutura de Dados Repetição

ARTIGOS CIENTÍFICOS. MANUAL DE NORMAS FACULDADE DE ENSINO SUPERIOR DO CENTRO DO PARANÁ - UCP PITANGA/PR biblioteca@ucpparana.edu.

Introdução a Computação

Lógica para a Programação - 1º semestre AULA 01 Prof. André Moraes

"SISTEMAS DE COTAGEM"

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

Conectar diferentes pesquisas na internet por um menu

Sistemas Operacionais. Curso Técnico Integrado Profa: Michelle Nery

O ENSINO DE CÁLCULO NUMÉRICO: UMA EXPERIÊNCIA COM ALUNOS DO CURSO DE CIÊNCIA DA COMPUTAÇÃO

LÓGICA DE PROGRAMAÇÃO. Vitor Valerio de Souza Campos

ABNT (Associação Brasileira de Normas Técnicas)

Figure 2 - Nós folhas de uma árvore binária representando caracteres ASCII

CONCEITOS BÁSICOS DE UM SISTEMA OPERATIVO

PROJETO DE REDES

CAPÍTULO II. Funções e Portas Lógicas

AULA 6 Esquemas Elétricos Básicos das Subestações Elétricas

Seminário de Avaliação Econômica de Projetos Sociais

A estrutura de repetição em um algoritmo consiste na execução de um trecho do mesmo levando em consideração certas condições imposta pelo algoritmo.

Resolução da lista de exercícios de casos de uso

3 A Biblioteca para Implementação de Máquinas Virtuais

Papo com a Especialista

Aula 12: Funções. Pré-requisitos: Todas as aulas anteriores deste módulo. 1. Aproveitando Códigos no Programa

Exercícios Teóricos Resolvidos

Eventos independentes

Sistemas Operacionais. Prof. André Y. Kusumoto

UML: Diagrama de Casos de Uso, Diagrama de Classes

Linguagem algorítmica: Portugol

LINGUAGEM C. Estrutura básica de um programa

3 Estratégia para o enriquecimento de informações

Introdução ao Paradigma Orientado a Objetos. Principais conceitos

Algoritmos e Programação

Aula de JavaScript 05/03/10

Potenciação no Conjunto dos Números Inteiros - Z

PRIORIDADES EM SERVIÇOS E ORGANIZAÇÃO DO TRABALHO. Professora Andréia Ribas rp_andreiaribas@hotmail.com

Algoritmos e Estruturas de Dados I 01/2013. Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo

Programação: Tipos, Variáveis e Expressões

VIII. VARIÁVEIS. Tabela I ARQUITETURA DA MEMÓRIA. 0x0000 0x34 0x0001 0xB0 0x0002 0x23. 0xFFFF 0x00

JavaScript (ou JScript)

SP 04/92 NT 141/92. Velocidade Média: Considerações sobre seu Cálculo. Engº Luiz Henrique Piovesan. 1. Introdução

Gerenciamento de Entrada e Saída Hélio Crestana Guardia e Hermes Senger

COMPUTAÇÃO APLICADA. Porém, é necessário considerar que ninguém ensina ninguém a pensar, pois todas as pessoas normais tem este dom.

Aula 4 Pseudocódigo Tipos de Dados, Expressões e Variáveis

Conceitos de Banco de Dados

1 Funções básicas de implementação de arquivos

Algoritmos e Programação. Curso de Engenharia de Produção Prof. Ms. Rogério Cardoso rogerio.cardoso@aedu.com professor@rogeriocardoso.com.


Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia de Computação CECOMP

Núcleo de Pós Graduação Pitágoras

Introdução à Programação B Licenciatura em Engenharia Informática. Enunciado do trabalho prático. Quem quer ser milionário? 20 de Dezembro de 2007

Testando e Comparando Valores

ORIENTAÇÕES PARA O PREENCHIMENTO DO QUESTIONÁRIO POR MEIO DA WEB

Q-Acadêmico. Módulo CIEE - Estágio. Revisão 01

7. Estrutura de Decisão

Arquitetura dos Sistemas Operacionais

Casos de uso Objetivo:

Estrutura switch if-else switch switch switch if-else-if switch switch case default break switch switch break Observações: case

Transcrição:

UNIDADE 6 - PROGRAMAÇÃO MODULAR Até o momento as estruturas de controle (seqüência, seleção e repetição) de um algoritmo definia-o como um bloco lógico (início e fim). À medida que os problemas a serem solucionados se tornam mais complexos, ou seja, apresentam uma variedade maior de situações diferentes a serem resolvidas, temos, então, uma série de pequenos problemas, cujas respectivas soluções integrarão o conjunto de ações definitivo. Quando tal conjunto de ações é construído, podemos nos deparar literalmente com um amontoado de ações que afetam a legibilidade porque não ficam claras e concisas as pequenas partes lógicas que solucionam cada pequeno problema, o que dificulta a assimilação desta construção por outras pessoa, além de inviabilizar uma perfeita coesão interna do algoritmo. Modularização é a técnica que combate tais circunstâncias e explicita as pequenas soluções. 6.1 MÓDULOS Módulos são blocos lógicos de um algoritmo que visam aumentar a funcionalidade das partes do conjunto solução. 6.2 BLOCOS Um bloco consiste em um conjunto de declarações e comandos delimitados pelas palavras início e fim. 6.3 DECLARAÇÃO Para modularizar um algoritmo necessitamos de uma sintaxe para expressar esta nova estrutura compreendida por módulos. Esta sintaxe será vista mais tarde, uma vez que o módulo pode assumir mais de uma forma. Neste momento é importante saber que ao módulo é atribuído um nome (Identificador). De certo modo, precisamos uniformizar determinado conjunto de ações afins que obedeçam a mesma estruturação de um algoritmo com objetivo de representar um bloco lógico em especial. OBS: a) Quando construímos um módulo estamos construindo um algoritmo em instância menor, ou seja, um pequeno conjunto solução praticamente independente. b) Este sub-algoritmo pode inclusive utilizar outros módulos. c) Com o emprego de sub-algoritmos utilizados especificamente para resolver problemas pequenos, aumentou-se o grau de clareza, facilitando a compreensão de cada parte isoladamente, assim como o relacionamento entre elas.

6.4 MANIPULAÇÃO A ativação de um módulo ocorre quando um determinado ponto do algoritmo contém o identificador que foi usado na definição do módulo, o que é conhecido por chamada ou ativação do módulo que por sua vez representa a execução das ações deste naquele trecho do algoritmo. 6.5 ESCOPO DE VARIÁVEIS Todas as variáveis utilizadas no algoritmo e que encontram-se declaradas no seu início, tornam-se possíveis de aplicação por qualquer módulo integrante. Estas variáveis são denominadas globais. Em alguns casos uma determinada variável é utilizada apenas por um módulo específico, o que não justifica uma definição global, pois somente se fazem necessários o conhecimento e a utilização dessa variável dentro dos limites desse bloco lógico. Esta situação ocorre quando a variável é declarada internamente ao módulo e é denominada variável local. OBS: a) Uma variável declarada dentro de um bloco só é conhecida dentro deste bloco; b) Se uma variável X declarada em um bloco já foi declarada como global e com o mesmo nome declarado num bloco mais interno, a variável válida no bloco mais interno será a declarada neste bloco. 6.6 SUBROTINAS Uma subrotina é uma ferramenta de programação que serve basicamente a dois objetivos: Evitar que certa seqüência de comandos que ocorra em vários locais de um algoritmo tenha de ser escrita repetidamente nestes locais; Dividir a estrutura de um algoritmo em partes fechadas e logicamente coerentes. Algoritmos contêm muitas vezes grupos de comandos iguais e repetidos em várias partes de seu corpo. As subrotinas permitem economia de tempo, de escrita e redução no tamanho de algoritmos. Em alguns casos, os trechos de comandos repetidos são idênticos, porém utilizam operandos diferentes. Nestes casos, a utilização de subrotinas permite, também, uma única escrita dos comandos que ao serem executados, utilizam os parâmetros ou operandos adequados a cada ocorrência. Bem mais importante que esta primeira utilidade do uso de subrotinas, o seu uso na modularização de algoritmos torna-se uma ferramenta indispensável na elaboração de algoritmos mais complexos e de maior tamanho. A d ivisão de estruturas de algoritmos em partes lógicas é uma técnica indispensável em programação estruturada. A divisão de algoritmos em subrotinas, além de facilitar a elaboração do algoritmo permite uma melhor documentação e verificação de sua correção. Cada módulo implementado como uma subrotina deve conter sua própria documentação e pode ser verificado independentemente.

Adicionalmente a modularização por subrotinas pode facilitar muito o trabalho de equipes de programadores no sentido que um algoritmo pode ser dividido em partes, testado e catalogado separadamente. 6.7 ESTRUTURAÇÃO DOS MÓDULOS DE UM ALGORITMO Uma subrotina nada mais é que um algoritmo hierarquicamente subordinado a um outro algoritmo comumente chamado de módulo principal. Da mesma forma, uma subrotina pode conter outras subrotinas aninhadas. 6.8 TIPOS BÁSICOS DE SUBROTINAS Existem dois tipos básicos de subrotinas: a) Procedimentos; b) Funções. PROCEDIMENTOS Os procedimentos são utilizados quando um conjunto de comandos repetese ao longo do algoritmo. Então, para não escrevermos várias vezes o mesmo bloco de comandos, usamos os procedimentos. Sintaxe: procedimento IDENTIFICADOR (parâmetros); Comandos; fim procedimento IDENTIFICADOR; Onde: - IDENTIFICADOR é o nome de referência do procedimento; - parâmetros é a lista de variáveis que serão passadas ao procedimento para serem manipuladas no seu interior. Na definição dos parâmetros também devem ser declarados seus tipos. Nem todo procedimento utiliza-se de parâmetros, portanto é um item opcional. procedimento LINHA (inteiro: COMPRIMENTO); inteiro : I; para I 1 até COMPRIMENTO faça escreva - ; fim para; fim procedimento LINHA; FUNÇÕES As funções constituem um tipo especial de subrotina, bastante semelhante ao procedimento, que tem a característica especial de retornar ao algoritmo chamador um valor associado ao nome da função. Esta característica permite uma analogia com o conceito de função na matemática.

A utilização de outras funções no algoritmo como por exemplo, seno, tangente ou qualquer outra função especial, pode ser feito declarando-se um procedimento função. A declaração de uma função é semelhante a de um procedimento. Difere somente na especificação do tipo da mesma, ou seja, do tipo de valor que será retornado. Apesar de terem sido citadas apenas funções numéricas, elas podem ser lógicas ou literais. Sintaxe: função tipo de retorno: IDENTIFICADOR (parâmetros); comandos; fim função IDENTIFICADOR; Onde: - tipo de retorno é o tipo de dado que a função retornará (inteiro, real, lógico, caracter); - IDENTIFICADOR é o nome de referência da função; - parâmetros é a lista de variáveis que serão passadas à função para serem manipuladas no seu interior. Na definição dos parâmetros também devem ser declarados seus tipos. Nem toda função utiliza-se de parâmetros, portanto é um item opcional. função lógico: E_PAR (inteiro : N); se (N mod 2 = 0) então E_PAR verdadeiro senão E_PAR falso; fim se; fim função E_PAR; 6.9 PASSAGEM DE PARÂMETROS A transferência de informações de e para subrotinas utilizando-se variáveis globais não constitui uma boa disciplina de programação. Estas transferências precisam ser mais formalizadas e documentadas a bem da legitimidade, documentação e organização do programa elaborado. Em algoritmos, a transferência de informações de e para subrotinas pode ser feita com a utilização de parâmetros. Esta utilização formaliza a comunicação entre módulos. Além disso, permite que um módulo seja utilizado com operandos diferentes, dependendo do que se deseja do mesmo. Parâmetros de definição são objetos utilizados dentro das subrotinas que em cada ativação representam objetos de nível mais externo. A forma de se utilizar parâmetros em subrotinas foi apresentada anteriormente. A chamada de uma subrotina aparece numa expressão e tem a seguinte forma:

NOME DO PROCEDIMENTO/FUNÇÃO (Lista de parâmetros de chamada); início real : A, B, C; procedimento EXEMPLO (real: VALOR_1, VALOR_2, VALOR_3); real : MAIOR_VALOR; MAIOR_VALOR VALOR_1; se (VALOR_2 > MAIOR_VALOR) então MAIOR_VALOR VALOR_2; fim se; se (VALOR_3 > MAIOR_VALOR) então MAIOR_VALOR VALOR_3; fim se; escreva O maior valor é:, MAIOR_VALOR; fim procedimento EXEMPLO; {corpo do programa principal} leia Digite 3 números: ; A, B, C; EXEMPLO (A, B, C); fim. 6.9.1 PASSAGEM DE PARÂMETROS POR VALOR Na passagem de parâmetros por valor (ou por cópia) o parâmetro real é calculado e uma cópia de seu valor é fornecida ao parâmetro formal, no ato da invocação da subrotina. A execução da subrotina prossegue normalmente e todas as modificações feitas no parâmetro formal não afetam o parâmetro real, pois trabalha-se apenas com uma cópia do mesmo. início inteiro : X; procedimento PROC (inteiro: Y); Y Y + 1; escreva Durante =, Y; fim procedimento PROC; fim. X 1; escreva Antes =, X; PROC (X); escreva Depois =, X; O algoritmo anterior fornece o seguinte resultado: Antes = 1; Durante = 2; Depois = 1;

Este tipo de ação é possível porque, neste mecanismo de passagem de parâmetros, é feita uma reserva de espaço em memória para os parâmetros formais, para que neles seja armazenada uma cópia dos parâmetros reais. 6.9.2 PASSAGEM DE PARÂMETROS POR REFERÊNCIA Neste mecanismo de passagem de parâmetros não é feita uma reserva de espaço em memória para os parâmetros formais. Quando uma subrotina com parâmetros passados por referência é chamada, o espaço de memória ocupado pelos parâmetros reais é compartilhado pelos parâmetros formais correspondentes. Assim, as eventuais modificações feitas nos parâmetros formais também afetam os parâmetros reais correspondentes. Uma mesma subrotina pode utilizar diferentes mecanismos de passagem de parâmetros, para parâmetros distintos. Para diferenciar uns dos outros, convencionou-se colocar o prefixo var antes da definição dos parâmetros formais passados por referência. Se por exemplo um procedimento tem o seguinte cabeçalho: procedimento PROC (inteiro: X, Y; real: var Z; real: J) Então: - X e Y são parâmetros formais do tipo inteiro e são passados por valor; - Z é um parâmetro formal real passado por referência; - J é um parâmetro formal real passado por valor. O exemplo do item anterior, alterado para que o parâmetro Y do procedimento seja passado por referência, torna-se: início inteiro : X; procedimento PROC (inteiro: var Y); Y Y + 1; escreva Durante =, Y; fim procedimento PROC; fim. X 1; escreva Antes =, X; PROC (X); escreva Depois =, X; O resultado do algoritmo modificado é: Antes = 1; Durante = 2; Depois = 2; Fonte: Material retirado da Apostila de Aulas do professor Adair Santa Catarina.