Algoritmo e Programação
Matemática Complexidade = VARIEDADE:
Um problema matemático é tão mais complexo quanto
maior for a quantidade de variáveis a serem tratadas.
Modularização de Algoritmos Um problema algorítmico é tão mais complexo quanto
Renato Dourado Maia maior for a quantidade de situações diferentes que
precisam ser tratadas.
Instituto de Ciências Agrárias
Universidade Federal de Minas Gerais Como reduzir a complexidade?
Reduzindo-se a variedade!
Como reduzir a variedade?
26/03/11 Algoritmo e Programação Matemática – Renato Dourado Maia 7/32 26/03/11 Algoritmo e Programação Matemática – Renato Dourado Maia 8/32
Tipos de Módulos Módulos
Os módulos podem ser classificados quanto ao seu objetivo Todo módulo possui um cabeçalho, que corresponde à sua
principal em dois contextos: declaração.
Contexto de Ação: quando o módulo simplesmente O cabeçalho também é denominado de protótipo ou
executa coisas. No caso do VisuAlg, esse tipo de módulo interface do módulo.
é um procedimento. Sintaxe do cabeçalho para um procedimento:
● Contexto de Resultado: quando o módulo calcula coisas
Procedimento <nome-de-procedimento> (<lista de
e retorna um resultado. No caso do VisuAlg, esse tipo de
parâmetros>)
módulo é uma função.
Inicio
FimProcedimento
26/03/11 Algoritmo e Programação Matemática – Renato Dourado Maia 9/32 26/03/11 Algoritmo e Programação Matemática – Renato Dourado Maia 10/32
Módulos Procedimento
Sintaxe do cabeçalho para uma função: Exemplo (simples) de utilização de procedimento:
Funcao <nome-de-função> (<lista de parâmetros>) : Arquivo: ExemploProcedimento_1.alg
<tipo do retorno> Vamos analisar alguns detalhes e verificar o fluxo de
Inicio execução por meio da execução passo a passo...
FimFuncao
26/03/11 Algoritmo e Programação Matemática – Renato Dourado Maia 11/32 26/03/11 Algoritmo e Programação Matemática – Renato Dourado Maia 12/32
Função Função
Vimos que uma função é um módulo que retorna um Exemplo de utilização de função:
resultado. Esse retorno é feito por meio do comando ● Arquivo: ExemploFuncao_1.alg
retorne, cuja sintaxe é:
● Vamos analisar alguns detalhes e verificar o fluxo de
retorne <valor> execução por meio da execução passo a passo... O programa
O valor retornado pela função deve ser recebido e tratado permite identificar se um número é par ou ímpar, ou se
dentro do módulo ativador, podendo ser armazenado em representa um ano bissexto (a escolha é feita pelo usuário).
uma variável e utilizado normalmente. Caso a opção seja inválida, é apresentada uma mensagem.
26/03/11 Algoritmo e Programação Matemática – Renato Dourado Maia 13/32 26/03/11 Algoritmo e Programação Matemática – Renato Dourado Maia 14/32
26/03/11 Algoritmo e Programação Matemática – Renato Dourado Maia 15/32 26/03/11 Algoritmo e Programação Matemática – Renato Dourado Maia 16/32
Escopo de Variáveis Escopo de Variáveis
Variáveis locais são declaradas no início do módulo ao qual Exemplo de utilização de variáveis locais e globais:
pertencem, e somente podem ser acessadas dentro desse Arquivo: ExemploEscopo_1.alg
módulo.
Vamos utilizar a execução passo a passo para analisar os
A principal vantagem das variáveis locais é a obtenção de valores das variáveis durante a execução do algoritmo...
uma maior independência entre os módulos:
A alteração de uma variável local afetará de forma direta O VisuAlg não implementa variáveis locais no
apenas o módulo ao qual ela pertence, facilitando a a módulo principal!
manutenção ao algoritmo/programa.
O tempo de vida das variáveis locais é limitado ao
tempo de execução do módulo ao qual elas pertencem,
pois elas são excluídas ao fim de sua execução.
26/03/11 Algoritmo e Programação Matemática – Renato Dourado Maia 17/32 26/03/11 Algoritmo e Programação Matemática – Renato Dourado Maia 18/32
FimFuncao
Lista de parâmetros?
26/03/11 Algoritmo e Programação Matemática – Renato Dourado Maia 19/32 26/03/11 Algoritmo e Programação Matemática – Renato Dourado Maia 20/32
Passagem de Parâmetros Passagem de Parâmetros
Na função matemática f(x, y) = xy, x e y são parâmetros de Dentro do módulo ativado, os parâmetros funcionam como
entrada. Quando se escreve f(3, 2), indica-se que o variáveis locais.
parâmetro de entrada x será substituído pelo argumento 3, e A grande vantagem da passagem de parâmetros é a
o parâmetro de entrada y pelo argumento 9:
generalização dos módulos.
f(3, 2) = 32 = 9 ≠ f(2, 3) = 23 Existem duas formas de passagem de parâmetros:
Um módulo pode receber parâmetros de entrada! Esses Passagem por valor.
parâmetros formam a lista de parâmetros mencionada nas
sintaxes de funções e procedimentos. Passagem por referência.
Esses parâmetros, passados pelo módulo ativador, são as
entradas do módulo chamado, e são também chamados de
argumentos.
26/03/11 Algoritmo e Programação Matemática – Renato Dourado Maia 21/32 26/03/11 Algoritmo e Programação Matemática – Renato Dourado Maia 22/32
26/03/11 Algoritmo e Programação Matemática – Renato Dourado Maia 25/32 26/03/11 Algoritmo e Programação Matemática – Renato Dourado Maia 26/32
26/03/11 Algoritmo e Programação Matemática – Renato Dourado Maia 27/32 26/03/11 Algoritmo e Programação Matemática – Renato Dourado Maia 28/32
Passagem de Parâmetros por Referência Passagem de Parâmetros por Referência
Sintaxe da passagem de parâmetros por referência: Exemplos de ativação:
Procedimento <nome-de-procedimento> (<Var lista de Media(6, 8, 10) // Ôpa! Não pode! Por quê?
identificadores> : tipo; <Var lista de identificadores> : v_1 <- 6
tipo; …; < Var lista de identificadores> : tipo)
v_2 <- 8
Funcao <nome-de-funcao> (<Var lista de
identificadores> : tipo; <Var lista de identificadores> : v_3 <- 10
tipo; …; <Var lista de identificadores> : tipo) : <tipo do Media(v_1, v_2, v_3)
retorno>
Exemplo de cabeçalho: A passagem de parâmetros por referência
implica na utilização de variáveis. Por quê?
Media(Var n_1, n_2, n_3 : Inteiro) : Real
26/03/11 Algoritmo e Programação Matemática – Renato Dourado Maia 29/32 26/03/11 Algoritmo e Programação Matemática – Renato Dourado Maia 30/32