Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Modularização

1,263 views

Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Modularização

  1. 1. Modularização Prof. Sérgio Souza Costa Site:https://sites.google.com/site/profsergiocosta/ Email: prof.sergio.costa@gmail.com
  2. 2. Programação estruturada A crise do software no ínicio da década de 1970 levou a programação estruturada. Além do conceito de que todo programa pode ser escrito usando sequencia, seleção e repetição. Surgiu o conceito de refinamento sucessivo (ou top-down) - modularização.
  3. 3. Refinamento sucessivo ● Técnica utilizada para tentar minimizar a complexidade da resolução de um problema ● “Dividir para Conquistar” ○ Divida o problema e subproblemas menores. ■ Se a resolução de um subproblema ainda for complexa ● Divida o subproblema em subproblemas menores ainda, e assim, sucessivamente ...
  4. 4. Refinamento sucessivo Ex. Algoritmo que lê três valores inteiros, determina e imprime o menor deles. int main(void){ // declarar as variáveis // Ler os números // Determinar o menor deles // Escrever o menor número return 0; }
  5. 5. Refinamento sucessivo Ex. Algoritmo que lê três valores inteiros, determina e imprime o menor deles. int main(void){ // declarar as variáveis // Ler os números // Determinar o menor deles // Escrever o menor número return 0; } scanf(“%d %d %d”, &a, &b, &c); Ref. ler_numeros
  6. 6. Refinamento sucessivo Ex. Algoritmo que lê três valores inteiros, determina e imprime o menor deles. int main(void){ // declarar as variáveis // Ler os números // Determinar o menor deles // Escrever o menor número return 0; } scanf(“%d %d %d”, &a, &b, &c); Ref. ler_numeros if ((a < b) && (a < c)) { menor = a; } else { ... } Ref. menor_deles
  7. 7. Refinamento sucessivo Ex. Algoritmo que lê três valores inteiros, determina e imprime o menor deles. int main(void){ // declarar as variáveis // Ler os números // Determinar o menor deles // Escrever o menor número return 0; } scanf(“%d %d %d”, &a, &b, &c); Ref. ler_numeros if ((a < b) && (a < c)) { menor = a; } else { ... } Ref. menor_deles printf(“%dn”, menor); Ref. escrever_menor
  8. 8. Refinamento sucessivo Ex. Algoritmo que lê três valores inteiros, determina e imprime o menor deles. #include <stdio.h> int main(void){ int a, b, c, menor; scanf(“%d %d %d”, &a, &b, &c); if ((a < b) && (a < c)) { menor = a; } else { if (b < c) menor = b; else menor = c; } printf(“%dn”, menor); return 0; } Declarar as variáveis Ler os números Determinar o menor deles Escrever o menor número
  9. 9. Refinamento sucessivo Ex. Algoritmo que lê três valores inteiros, determina e imprime o menor deles. #include <stdio.h> int main(void){ int a, b, c, menor; scanf(“%d %d %d”, &a, &b, &c); if ((a < b) && (a < c)) { menor = a; } else { if (b < c) menor = b; else menor = c; } printf(“%dn”, menor); return 0; } Pode ser modularizado através de uma função. Podendo ser utilizado em outras partes do programa.
  10. 10. Refinamento sucessivo Ex. Algoritmo que lê três valores inteiros, determina e imprime o menor deles. #include <stdio.h> int menor(int x, int y, int z){ int m; if ((x < y) && (x < z)) { m = x; } else { if (y < z) menor = y; else m = z; } return m; } int main(void){ int a, b, c, menor; scanf("%d %d %d", &a, &b, &c); printf("%dn", menor(a, b, c)); return 0; Uma função para determinar o menor valor entre 3 inteiros
  11. 11. Refinamento -> Modularização
  12. 12. Refinamento -> Modularização +Manutenibilidade
  13. 13. Refinamento -> Modularização +Manutenibilidade +Legibilidade
  14. 14. Refinamento -> Modularização +Manutenibilidade +Legibilidade +Reusabilidade
  15. 15. Refinamento -> Modularização +Manutenibilidade +Legibilidade +Reusabilidade Confiabilidade
  16. 16. Modularização Transformar refinamento sucessivo em módulos ● Módulos ○ formas agrupadas de conjuntos de instruções (encapsulada em funções e ou tipos de dados) responsáveis por executar uma ação bem definida, podendo ou não repetir-se em diferentes pontos de um programa.
  17. 17. ● Um conjunto de instruções (utilizadas para cumprir uma tarefa particular) agrupadas num módulo com um nome para referenciá-lo, esse módulo pode ou não retornar um valor (numérico, caractere, estruturado, lógico, etc) como resultado. ○ Quando não retorna valor é usualmente referido como procedimento. ● Vantagens ○ dividir a tarefa original em pequenas tarefas que simplificam e organizam o programa como um todo. ○ reduzir o tamanho do programa. Qualquer sequência de instruções que apareça no programa mais de uma vez é candidata a ser uma função. Funções
  18. 18. Funções Um programa C é dividido em pequenas funções: – Bons programas são compostos por diversas pequenas funções. – Como o próprio nome diz, uma função representa uma funcionalidade. – A vantagem de se ter o código modularizado em funções é que o código fica mais fácil de entender, de manter, de atualizar e de reusar.
  19. 19. Funções “Funções são os blocos de construção de C e o local onde toda a atividade do programa ocorre.” Herberth Schildt (C Completo e Total) “Uma função é uma unidade de código de programa autônoma desenvolvida para cumprir uma determinada tarefa em particular” (MIZRAHI, 1990).
  20. 20. Funções - Sintaxe Toda função em C é definida assim: tipo_retorno identificador (lista de parâmetros){ corpo da função (sequencia de comandos); } escopo
  21. 21. Funções - Sintaxe Toda função em C é definida assim: tipo_retorno identificador (lista de parâmetros){ corpo da função (sequencia de comandos); } escopo
  22. 22. Tipos de retorno ● O tipo de uma função é definido pelo tipo de valor que ela retorna por meio do comando return. ● Os tipos de funções em C são os mesmos tipos de variáveis, exceto quando a função não retorna nada (void). ○ int, char, float, double e void ○ tipos criados pelo usuario
  23. 23. Funções - Sintaxe Toda função em C é definida assim: tipo_retorno identificador (lista de parâmetros){ corpo da função (sequencia de comandos); } escopo
  24. 24. Identificador de uma função A estrutura de uma função em C é semelhante à de uma função main(). A diferença é que main() possui um nome especial reservado. O programador pode dar o nome que desejar para a função que irá definir, desde que o nome: Seja diferente de palavras reservadas (int, char, float, break, switch, while ...) da Linguagem. Não contenha caracteres especiais (#$%@*&-+”: =;,.) Não seja igual aos nomes de outras funções previamente declaradas ou de outras bibliotecas (main, printf, scanf, getchar, strcmp, system, etc);
  25. 25. Funções - Sintaxe Toda função em C é definida assim: tipo_retorno identificador (lista de parâmetros){ corpo da função (sequencia de comandos); } escopo
  26. 26. Parâmetros ● As informações transmitidas para uma função são chamadas parâmetros. ● Os parâmetros podem ser utilizados livremente no corpo da função. ○ Agem como variáveis locais da função p = cubo(3); q = media(2,6);
  27. 27. Funções - Sintaxe Toda função em C é definida assim: tipo_retorno identificador (lista de parâmetros){ corpo da função (sequencia de comandos); } escopo
  28. 28. Sequência de comandos Como já vimos na função main, podemos ter declarações de variáveis, comandos de atribuição, entrada, saída, seleção, iteração e chamadas a outras funções.
  29. 29. Exemplo #include <stdio.h> int celsius (int fahr) // definição da função { int r; r = (fahr - 32) * 5.0/9; // Corpo da função return r; } int main(void){ int c, f; printf("Digite a temperatura Fahrenheit: "); scanf(“%d”, &f); c = celsius(f); // chamada à função printf(“%d F é igual a %d Cn”, f, c); return 0; } escopo Parâmetro(s)tipo retorno
  30. 30. Comando return ● O comando return termina a execução da função e retorna o controle para a instrução seguinte do código de chamada. ● Se após a palavra return houver uma expressão, o valor da expressão é retornado à função que chama. Por exemplo, no programa anterior as funções celsius() e min() retornam valores para main(). ● Sintaxe: return; return <expressão>; return (<expressão>);
  31. 31. Comando return ● Um return desacompanhado de expressão somente termina a função void funcao_nada(void) { printf(“Nada”); return; } ● Quando não há retorno a função termina quando encontra a chave } Neste caso, o uso do comando return não é obrigatório.
  32. 32. Execução de funções ● Um programa pode conter uma ou mais funções, das quais uma delas deve ser main(). ○ A execução do programa sempre começa em main() e, quando o controle do programa encontra uma instrução que inclui o nome de uma função, a função é chamada.#include <stdio.h> int main(void){ printf(“Pressione uma tecla”); system(“cls”); return 0; }
  33. 33. Execução de funções #include <stdio.h> int celsius (int fahr) // definição da função { int r; r = (fahr - 32) * 5.0/9; // Corpo da função return r; } int main(void){ int c, f; printf("Digite a temperatura Fahrenheit: "); scanf(“%d”, &f); c = celsius(f); // chamada à função printf(“%d F é igual a %d Cn”, f, c); return 0; }
  34. 34. Execução de funções #include <stdio.h> int celsius (int fahr) // definição da função { int r; r = (fahr - 32) * 5.0/9; // Corpo da função return r; } int main(void){ int c, f; printf("Digite a temperatura Fahrenheit: "); scanf(“%d”, &f); c = celsius(f); // chamada à função printf(“%d F é igual a %d Cn”, f, c); return 0; }
  35. 35. Execução de funções #include <stdio.h> int celsius (int fahr) // definição da função { int r; r = (fahr - 32) * 5.0/9; // Corpo da função return r; } int main(void){ int c, f; printf("Digite a temperatura Fahrenheit: "); scanf(“%d”, &f); c = celsius(f); // chamada à função printf(“%d F é igual a %d Cn”, f, c); return 0; }
  36. 36. Execução de funções #include <stdio.h> int celsius (int fahr) // definição da função { int r; r = (fahr - 32) * 5.0/9; // Corpo da função return r; } int main(void){ int c, f; printf("Digite a temperatura Fahrenheit: "); scanf(“%d”, &f); c = celsius(f); // chamada à função printf(“%d F é igual a %d Cn”, f, c); return 0; }
  37. 37. Execução de funções #include <stdio.h> int celsius (int fahr) // definição da função { int r; r = (fahr - 32) * 5.0/9; // Corpo da função return r; } int main(void){ int c, f; printf("Digite a temperatura Fahrenheit: "); scanf(“%d”, &f); c = celsius(f); // chamada à função printf(“%d F é igual a %d Cn”, f, c); return 0; } o valor da variavel f da função main será copiado para o parametro fahr da função celsius
  38. 38. Execução de funções #include <stdio.h> int celsius (int fahr) // definição da função { int r; r = (fahr - 32) * 5.0/9; // Corpo da função return r; } int main(void){ int c, f; printf("Digite a temperatura Fahrenheit: "); scanf(“%d”, &f); c = celsius(f); // chamada à função printf(“%d F é igual a %d Cn”, f, c); return 0; }
  39. 39. Execução de funções #include <stdio.h> int celsius (int fahr) // definição da função { int r; r = (fahr - 32) * 5.0/9; // Corpo da função return r; } int main(void){ int c, f; printf("Digite a temperatura Fahrenheit: "); scanf(“%d”, &f); c = celsius(f); // chamada à função printf(“%d F é igual a %d Cn”, f, c); return 0; }
  40. 40. Execução de funções #include <stdio.h> int celsius (int fahr) // definição da função { int r; r = (fahr - 32) * 5.0/9; // Corpo da função return r; } int main(void){ int c, f; printf("Digite a temperatura Fahrenheit: "); scanf(“%d”, &f); c = celsius(f); // chamada à função printf(“%d F é igual a %d Cn”, f, c); return 0; }
  41. 41. Execução de funções #include <stdio.h> int celsius (int fahr) // definição da função { int r; r = (fahr - 32) * 5.0/9; // Corpo da função return r; } int main(void){ int c, f; printf("Digite a temperatura Fahrenheit: "); scanf(“%d”, &f); c = celsius(f); // chamada à função printf(“%d F é igual a %d Cn”, f, c); return 0; }
  42. 42. Execução de funções #include <stdio.h> int celsius (int fahr) // definição da função { int r; r = (fahr - 32) * 5.0/9; // Corpo da função return r; } int main(void){ int c, f; printf("Digite a temperatura Fahrenheit: "); scanf(“%d”, &f); c = celsius(f); // chamada à função printf(“%d F é igual a %d Cn”, f, c); return 0; }
  43. 43. Passagem de parâmetros (valor) int dobro (int x ) { return 2 * x; } int main () { int a, b; a = 10; b = dobro (a); } O valor da variável "a" é copiado (por valor) para o parâmatro "x" da função dobro
  44. 44. Exercícios Exercícios na página do curso.

×