Unidade 6: Modularização · Unidade 6: Modularização Sumário 1 Introdução 2 Tipos de...

25
Unidade 6: Modularização Prof. Josué Pereira de Castro Universidade Estadual do Oeste do Paraná Curso: Bacharelado em Ciência da Computação Cascavel, 2010 Prof. Josué P. Castro (UNIOESTE) Unidade 6 Cascavel, 2010 1 / 21

Transcript of Unidade 6: Modularização · Unidade 6: Modularização Sumário 1 Introdução 2 Tipos de...

  • Unidade 6: Modularização

    Prof. Josué Pereira de Castro

    Universidade Estadual do Oeste do ParanáCurso: Bacharelado em Ciência da Computação

    Cascavel, 2010

    Prof. Josué P. Castro (UNIOESTE) Unidade 6 Cascavel, 2010 1 / 21

  • Unidade 6: Modularização

    Sumário

    1 Introdução

    2 Tipos de Sub-Rotinas

    3 Variáveis Globais X Locais: Regras de Escopo

    4 Passagem de Parâmetros

    5 Recursividade

    Prof. Josué P. Castro (UNIOESTE) Unidade 6 Cascavel, 2010 2 / 21

  • Unidade 6: Modularização

    Sumário

    1 Introdução

    2 Tipos de Sub-Rotinas

    3 Variáveis Globais X Locais: Regras de Escopo

    4 Passagem de Parâmetros

    5 Recursividade

    Prof. Josué P. Castro (UNIOESTE) Unidade 6 Cascavel, 2010 2 / 21

  • Unidade 6: Modularização

    Sumário

    1 Introdução

    2 Tipos de Sub-Rotinas

    3 Variáveis Globais X Locais: Regras de Escopo

    4 Passagem de Parâmetros

    5 Recursividade

    Prof. Josué P. Castro (UNIOESTE) Unidade 6 Cascavel, 2010 2 / 21

  • Unidade 6: Modularização

    Sumário

    1 Introdução

    2 Tipos de Sub-Rotinas

    3 Variáveis Globais X Locais: Regras de Escopo

    4 Passagem de Parâmetros

    5 Recursividade

    Prof. Josué P. Castro (UNIOESTE) Unidade 6 Cascavel, 2010 2 / 21

  • Unidade 6: Modularização

    Sumário

    1 Introdução

    2 Tipos de Sub-Rotinas

    3 Variáveis Globais X Locais: Regras de Escopo

    4 Passagem de Parâmetros

    5 Recursividade

    Prof. Josué P. Castro (UNIOESTE) Unidade 6 Cascavel, 2010 2 / 21

  • Introdução

    Sumário

    1 Introdução

    2 Tipos de Sub-Rotinas

    3 Variáveis Globais X Locais: Regras de Escopo

    4 Passagem de Parâmetros

    5 Recursividade

    Prof. Josué P. Castro (UNIOESTE) Unidade 6 Cascavel, 2010 3 / 21

  • Introdução

    Introdução I

    Problemas complexos exigem algoritmos complexos.

    Quanto mais complexo o algoritmo, mais difícil descrevê-lo.

    Solução: Uso de módulos (sub-rotinas).

    Definição:

    Módulos (ou Sub-rotinas): São grupos de comandos que constituemum trecho de algoritmo que realiza uma tarefa específica e bemdefinida, de forma independente em relação ao resto do algoritmo.

    Prof. Josué P. Castro (UNIOESTE) Unidade 6 Cascavel, 2010 4 / 21

  • Introdução

    Introdução II

    Vantagens da Modularização1 Manutenção mais simples, evitando efeitos colaterais (problemas

    em outras partes do algoritmo)2 O módulo pode ser feito independentemente das outras partes do

    algoritmo.3 Testes e correções podem ser realizados em separado em cada

    sub-rotina.4 Uma sub-rotina podem ser reutilizada em outros algoritmos que

    requeiram o mesmo processamento realizado por ela (reuso decódigo).

    5 Pode-se construir bibliotecas de sub-rotinas de uso frequente(Todas as linguagens de programação em geral fornecembibliotecas de sub-rotinas).

    Prof. Josué P. Castro (UNIOESTE) Unidade 6 Cascavel, 2010 5 / 21

  • Tipos de Sub-Rotinas

    Sumário

    1 Introdução

    2 Tipos de Sub-Rotinas

    3 Variáveis Globais X Locais: Regras de Escopo

    4 Passagem de Parâmetros

    5 Recursividade

    Prof. Josué P. Castro (UNIOESTE) Unidade 6 Cascavel, 2010 6 / 21

  • Tipos de Sub-Rotinas

    Tipos de Sub-rotinas I

    1 Procedimentos:São blocos de código identificados por um nome, pelo qual podemser referenciados em qualquer parte de um programa.Quando um procedimento é ativado (chamado) em algum ponto deum algoritmo, o código correspondente é carregado na pilha deativação (Stack), e então o fluxo de execução é desviado para elee, após a conclusão do procedimento, o controle de execuçãoretorna automaticamente para a instrução seguinte àquela queefetuou a sua chamada, e o código do procedimento é removido dapilha de ativação.

    Prof. Josué P. Castro (UNIOESTE) Unidade 6 Cascavel, 2010 7 / 21

  • Tipos de Sub-Rotinas

    Tipos de Sub-rotinas II

    2 FunçõesSão sub-rotinas semelhantes aos procedimentos, porém com umadiferença: funções retornam um determinado valor para o local emque ocorreu a sua chamada.

    Obs:

    1 Na linguagem C não existe o conceito de "procedimentos". Apenas funçõessão implementadas.

    2 Em C procedimentos podem ser considerados um tipo especial de função comvalor de retorno vazio ("void").

    3 Ainda, em C o valor de retorno de uma função pode ser descartado, caso muitocomum, por exemplo, no uso das funções de entrada de saída, como printf()e scanf()

    Prof. Josué P. Castro (UNIOESTE) Unidade 6 Cascavel, 2010 8 / 21

  • Variáveis Globais X Locais: Regras de Escopo

    Sumário

    1 Introdução

    2 Tipos de Sub-Rotinas

    3 Variáveis Globais X Locais: Regras de Escopo

    4 Passagem de Parâmetros

    5 Recursividade

    Prof. Josué P. Castro (UNIOESTE) Unidade 6 Cascavel, 2010 9 / 21

  • Variáveis Globais X Locais: Regras de Escopo

    Variáveis Globais X Locais: Regras de Escopo I

    Variáveis Globais:Variáveis são consideradas globais quando são declaradas forade quaisquer sub-rotinas.

    Variáveis LocaisSão consideradas alertlocais as variáveis que são declaradasdentro de funções e procedimentos.

    Prof. Josué P. Castro (UNIOESTE) Unidade 6 Cascavel, 2010 10 / 21

  • Variáveis Globais X Locais: Regras de Escopo

    Variáveis Globais X Locais: Regras de Escopo II

    Obs:Variáveis declaradas dentro da função main() são consideradaslocais à main(), e não variáveis globais!Variáveis globais podem ser acessadas dentro de qualquerfunção, desde que não haja outra variável local com mesmonome. Neste caso, a variável local de mesmo nome oculta avariável global.Variáveis locais somente podem ser acessadas dentro dosprocedimentos onde elas foram declaradas.a implementação de funções também segue as mesmas regraspara variáveis, sendo que funções globais são aquelasimplementadas fora de qualquer outra função. Caso contrário,elas serão funções locais.

    Prof. Josué P. Castro (UNIOESTE) Unidade 6 Cascavel, 2010 11 / 21

  • Passagem de Parâmetros

    Sumário

    1 Introdução

    2 Tipos de Sub-Rotinas

    3 Variáveis Globais X Locais: Regras de Escopo

    4 Passagem de Parâmetros

    5 Recursividade

    Prof. Josué P. Castro (UNIOESTE) Unidade 6 Cascavel, 2010 12 / 21

  • Passagem de Parâmetros

    Passagem de Parâmetros I

    Definição

    Parâmetros: são tipos de variáveis especiais que servem comomeio de comunicação bidirecional entre uma função chamada euma outra chamadora (usualmente a função principal).Permitem a troca de informações entre sub-rotinas e evitamefeitos colaterais.Parâmetros formais: São nomes simbólicos introduzidos noscabeçalhos das sub-rotinas que definem quais informações e deque tipo devem ser fornecidas para a subrotina.Parâmetros Reais (ou argumentos) São os valores quesubstituem os parâmetros formais na chamada da subrotina.

    Prof. Josué P. Castro (UNIOESTE) Unidade 6 Cascavel, 2010 13 / 21

  • Passagem de Parâmetros

    Passagem de Parâmetros II

    Tipos de Passagem de Parâmetros

    Passagem por valor: Neste caso é criada uma variável localcom o mesmo nome do parâmetro formal, a qual recebe umacópia do valor do argumento passado para a função. Qualquermodificação na variável local dentro da sub-rotina não altera ovalor do argumento passado, pois a sub-rotina trabalha apenascom uma cópia do mesmo.Passagem por referência: Neste caso o endereço do argumentoé passado para a sub-rotina, de tal forma que quando se modificaa variável correspondente ao parâmetro formal, modifica-setambém a variável que foi passada como argumento.

    Prof. Josué P. Castro (UNIOESTE) Unidade 6 Cascavel, 2010 14 / 21

  • Passagem de Parâmetros

    Passagem de Parâmetros III

    Passagem por valor em C

    Forma padrão em Cas variáveis são declaradas dentro dos parêntesis no cabeçalhoda função, separadas por vírgula, da mesma forma que umadeclaração normal de variáveis

    Prof. Josué P. Castro (UNIOESTE) Unidade 6 Cascavel, 2010 15 / 21

  • Passagem de Parâmetros

    Passagem de Parâmetros IV

    Passagem por valor em C

    É feita através da utilização de ponteirosO uso de ponteiros faz com que o endereço da variável (não oseu valor) seja passado para a funçãoNa passagem por referência, nenhuma cópia local do argumentoé criada e as alterações realizadas no parâmetro formal narealidade estão sendo realizadas diretamente no argumento.as variáveis são declaradas dentro dos parêntesis no cabeçalhoda função, separadas por vírgula, da mesma forma que umadeclaração normal de variáveis

    Prof. Josué P. Castro (UNIOESTE) Unidade 6 Cascavel, 2010 16 / 21

  • Recursividade

    Sumário

    1 Introdução

    2 Tipos de Sub-Rotinas

    3 Variáveis Globais X Locais: Regras de Escopo

    4 Passagem de Parâmetros

    5 Recursividade

    Prof. Josué P. Castro (UNIOESTE) Unidade 6 Cascavel, 2010 17 / 21

  • Recursividade

    Recursividade

    Definição

    Técnica de programação baseada na propriedade matemática quealguns problemas tem de poderem ser definidos em função de simesmos.

    ExemploConsidere a função fatorial, que é definida matematicamente como:

    n! ={

    1, se n = 0;n × (n − 1)!, se n > 0.

    Prof. Josué P. Castro (UNIOESTE) Unidade 6 Cascavel, 2010 18 / 21

  • Recursividade

    Funções Recursivas

    A utilização de recursividade pode simplificar a resolução deproblemas complexos, tornando os algoritmos mais simples,claros e elegantes.Pode substituir de forma simples as estruturas de repetição.O uso da recursividade exige cautela, pois a utilização darecursividade pode causar estouro da pilha de execução defunções.Exige poder de abstração para visualizar a execução daschamadas recursivas.

    Prof. Josué P. Castro (UNIOESTE) Unidade 6 Cascavel, 2010 19 / 21

  • Recursividade

    Exemplos I

    1 Soma dos primeiros n números naturais: Elaborar uma funçãorecursiva que recebe um inteiro não negativo n como argumentoe retorna a soma dos n primeiros números naturais.

    2 Cálculo do Fatorial: Elaborar uma função recursiva que recebaum inteiro não negativo n como argumento e retorne o fatorial den.

    3 Cálculo do n-ésimo termo da série de Fibonacci: Elaboraruma função recursiva que receba um inteiro não negativo n eretorne o n-ésimo termo da série de Fibonacci.

    4 Conversão de Binário para Decimal: Elaborar uma funçãorecursiva que receba como argumento um inteiro n não negativoe retorne uma cadeia de caracteres com a sua representação embinário.

    Prof. Josué P. Castro (UNIOESTE) Unidade 6 Cascavel, 2010 20 / 21

  • FIM

    Fim

    FIM

    Prof. Josué P. Castro (UNIOESTE) Unidade 6 Cascavel, 2010 21 / 21

    Unidade 6: ModularizaçãoUnidade 6: ModularizaçãoIntroduçãoTipos de Sub-RotinasVariáveis Globais X Locais: Regras de EscopoPassagem de ParâmetrosRecursividadeFIM