SlideShare uma empresa Scribd logo
1 de 4
1
ModularizaçãoModularização
Programação I
ALG
2/21
Modularização
A medida que abordamos problemas mais complexos, os
algoritmos também apresentarão uma maior
complexidade.
A complexidade não está relacionada a quantidade de
comandos existentes, e sim às diversas combinações
possíveis dos comandos à disposição.
Os comandos que possuímos são poucos, mas podemos realizar
diversas combinações com os mesmos.
A complexidade de um problema pode dificultar a
construção do algoritmo de sua solução
Devemos tentar dividi-lo em partes menores, resolvendo cada um
dos subproblemas separadamente.
3/21
Modularização de algoritmos
Consiste em dividir um algoritmo em etapas, fazendo
com que cada etapa seja parte da solução de um
problema maior.
Se um subproblema ainda parecer muito complexo, podemos
tentar dividi-lo em partes menores, para facilitar sua solução, e
assim sucessivamente.
“Dividir para conquistar”
Nós temos dificuldade de resolver problemas quando os
mesmos possuem uma grande quantidade de elementos
inseridos.
A modularização é a forma humilde de reconhecermos esta
dificuldade, mas ainda assim resolvermos o problema.
4/21
Modularização: funções e
procedimentos
Realizada através de sub-algoritmos, também
chamados de funções e procedimentos.
Todas as funções precisam ser chamadas para ser
executadas.
Ao encontrar uma chamada para uma função ou
procedimento, o fluxo de execução do programa desvia
para o local onde a função existe, e executa a mesma.
Ao terminar a execução da função, o fluxo de execução
retorna para o local onde a função foi chamada.
A execução do programa é reiniciada na linha seguinte à
linha onde a função foi acionada.
5/21
Modularização: fluxo
6/21
Modularização em VisuAlg
Todas as funções devem indicar um valor para quem
chamou a função. Caso não seja necessário retornar um
valor, deve-se usar um procedimento. Como a função
retorna um valor, devemos usar o comando retorne
seguido de uma variável ou constante para retornar
esse valor para quem chamou a função.
VisuAlg possui uma grande quantidade de funções
disponíveis para uso imediato pelo programador.
2
7/21
Criando Funções
A criação de uma Função deve ser declarada no início
do programa. Este tipo de sub-algoritmo sempre
retornam um e apenas um valor ao algoritmo que lhe
chamou. Cada função tem associada ao seu valor de
retorno um tipo explícito. Da mesma maneira com que
os parâmetros são fixos para todas as chamada o
retorno também é fixo.
Algoritmo "<nome do algoritmo>"
var
<declaração de variáveis globais>
<definição da função>
inicio
< lista de comandos>
fimalgoritmo
8/21
Criando Funções
Identificador: Nome da função.
Passagem de parâmetros por referência: utiliza-se a construção VAR antes dos
identificadores para indicar a passagem por referência. Os identificadores são
separados por vírgula.
Parâmetros: Entre um mesmo tipo de dados são separados por vírgula. Entre
tipos de dados a separação é feita com ponto-e-vírgulas ';'.
Tipo de retorno da função: Real, Inteiro, Lógico ou Caractere.
Declaração de variáveis locais: idêntica a declaração de variáveis globais. As
variáveis declaradas localmente tem validade dentro do escopo da função.
Retorne: local onde é colocado a variável de retorno.
funcao <identificador> ([var]<parâmetros>) <tipo de retorno>
var
<declaração de variáveis locais>
inicio
<lista de comandos>
retorne <variável de retorno>
fimfuncao
9/21
Exemplo
algoritmo "funcao"
var
a , b , s : inteiro
funcao soma (x,y: inteiro): inteiro
inicio
retorne x + y
fimfuncao
inicio
escreva("Dig. o 1º número: ")
leia(a)
escreva("Dig. o 2º número: ")
leia(b)
s <- soma(a,b)
escrevaL("A soma é ", s)
fimalgoritmo
10/21
Criando Procedimentos
Identificador: Nome do procedimento.
Passagem de parâmetros por referência: utiliza-se a
construção VAR antes dos identificadores para indicar a
passagem por referência. Os identificadores são separados
por vírgula.
Parâmetros: Entre um mesmo tipo de dados são separados
por vírgula. Entre tipos de dados a separação é feita com
ponto-e-vírgulas ';'.
procedimento <identificador> ([var]<parâmetros>)
var
<declaração de variáveis locais>
inicio
<lista de comandos>
fimprocedimento
11/21
Exemplo
algoritmo “procedimento"
var
a , b : inteiro
procedimento escreve_soma (x,y: inteiro)
inicio
escrevaL(x + y)
fimprocedimento
inicio
escreva("Dig. o 1º número: ")
leia(a)
escreva("Dig. o 2º número: ")
leia(b)
escreva("A soma é ")
escreve_soma(a,b)
fimalgoritmo
12/21
Compartilhando variáveis entre
funções
Caso seja necessário acessar ou alterar o valor de uma
variável dentro de mais de uma função, devemos
declarar a variável dentro do algoritmo, mas fora de
qualquer função.
As variáveis criadas dentro de funções recebem o nome
de variáveis locais, e só existem dentro das funções
onde foram criadas.
As variáveis criadas dentro de um algoritmo podem ser
utilizadas em qualquer lugar. São chamadas de
variáveis globais.
3
13/21
Exemplo
algoritmo “escopo"
var
a , b , s : inteiro
procedimento altera_s (x,y: inteiro)
inicio
s <- x + y
fimprocedimento
inicio
escreva("Dig. o 1º número: ")
leia(a)
escreva("Dig. o 2º número: ")
leia(b)
altera_s( a , b )
escreva("A soma é ", s)
fimalgoritmo
14/21
Exemplo
Exemplos
Numa loja de materiais de construção, um azulejo estampado
custa R$2,50. Faça um algoritmo para ler o comprimento e a
altura de uma parede (em metros), e depois escrever o valor a
ser gasto com a compra de azulejos. Considere que um metro
quadrado é formado por 9 azulejos.
Solução
A saída é o valor total gasto com azulejos.
O computador precisa saber o comprimento e a altura da
parede.
Quais são os cálculos necessários?
15/21
Exemplo
Solução (cont.)
Multiplicando a altura pelo comprimento, teremos a área da
parede (considerando uma parede retangular);
Multiplicando a área pelo número 9, teremos a quantidade de
azulejos necessários para preencher esta área;
Uma vez que um azulejo custa R$2,50 (um valor constante),
podemos multiplicar a quantidade de azulejos por 2,5 para
chegar ao total gasto.
16/21
Exemplo
Solução sem uso de modularização:
Variáveis
gasto_azulejos, comprimento, altura, area, azulejos: real;
Início
escrever “Digite o comprimento em metros: ”;
ler comprimento;
escrever “Digite a altura em metros”;
ler altura;
area = comprimento * altura;
azulejos = area * 9;
gasto_azulejos = azulejos * 2.5;
escrever “Quantidade de azulejos necessária: “, azulejos;
escrever “Valor gasto com azulejos: R$ “, gasto_azulejos;
Fim
17/21
Exemplo
Solução (cont.)
Pensando em termos de algoritmo, podemos imaginar três
etapas:
Variáveis
? ? ?;
Início
“Obter as dimensões da parede e calcular a área”;
“Calcular o valor gasto com azulejos”;
“Escrever o resultado calculado”;
Fim
18/21
Exemplo
Solução (cont.)
Detalhando o cálculo do valor gasto.
Variáveis
gasto_azulejos, comprimento, altura, area, qtd_azulejos: real;
Início
LER_DIMENSOES_E_OBTER_AREA;
CALCULAR_VALOR_GASTO;
ESCREVER_GASTO;
Fim.
Módulo CALCULAR_VALOR_GASTO;
[[...]];
Módulo LER_DIMENSOES_E_OBTER_AREA;
[[...]];
Módulo ESCREVER_GASTO;
[[...]];
4
19/21
Vantagens do uso de funções
Facilita a resolução de problemas complexos;
Viabiliza a divisão do trabalho entre a equipe de
desenvolvimento (cada programador ou grupo de
programadores pega um pedaço do problema para
resolver e trabalha de forma independente);
Desenvolvimento mais rápido de programas (várias
funções podem ser escritas em paralelo pelos membros
da equipe).
20/21
Vantagens do uso de funções
Incentiva a divisão de responsabilidades;
Reuso de funções desenvolvidas em projetos anteriores
ou obtidas externamente diminui o tempo de
desenvolvimento de novos programas;
Aumento de qualidade pelo uso de funções cujo
funcionamento foi validado em projetos anteriores.
21/21
Exercícios
Escreva uma função que recebe uma quantidade
qualquer de valores e retorna a média desses valores.
Escreva uma função que receba um número inteiro
positivo e retorne o fatorial desse número.
A fábrica de refrigerantes Meia-Cola vende seu produto
em três formatos: lata de 350ml, garrafa de 600ml e
garrafa de 2 litros. Se um comerciante compra uma
determinada quantidade de cada formato, faça um
programa para calcular quantos litros de refrigerante ele
comprou. Resolva o problema utilizando funções.
DÚVIDAS ?DÚVIDAS ?
Programação I
ALG

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Introdução à Linguagem de Programação C
Introdução à Linguagem de Programação CIntrodução à Linguagem de Programação C
Introdução à Linguagem de Programação C
 
Algoritmos e lp parte 5-subalgoritmos
Algoritmos e lp parte 5-subalgoritmosAlgoritmos e lp parte 5-subalgoritmos
Algoritmos e lp parte 5-subalgoritmos
 
mod3-programação-estruturada
mod3-programação-estruturadamod3-programação-estruturada
mod3-programação-estruturada
 
Programação em C
Programação em CProgramação em C
Programação em C
 
Cap07
Cap07Cap07
Cap07
 
Aula 1 2
Aula 1 2Aula 1 2
Aula 1 2
 
Apostila c
Apostila cApostila c
Apostila c
 
Linguagem c parte 2
Linguagem c parte 2Linguagem c parte 2
Linguagem c parte 2
 
Algumas notas sobre pascal
Algumas notas sobre pascalAlgumas notas sobre pascal
Algumas notas sobre pascal
 
Algoritmos 1 - Semana 2
Algoritmos 1 - Semana 2Algoritmos 1 - Semana 2
Algoritmos 1 - Semana 2
 
Algoritmos e Lógica de Programação
Algoritmos e Lógica de ProgramaçãoAlgoritmos e Lógica de Programação
Algoritmos e Lógica de Programação
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
 
Java2
Java2Java2
Java2
 
Curso Básico de Java - Aula 3
Curso Básico de Java - Aula 3Curso Básico de Java - Aula 3
Curso Básico de Java - Aula 3
 
Conceitos e técnicas de programação aula 3
Conceitos e técnicas de programação aula 3Conceitos e técnicas de programação aula 3
Conceitos e técnicas de programação aula 3
 
Linguagem C - Controle de Programa
Linguagem C - Controle de ProgramaLinguagem C - Controle de Programa
Linguagem C - Controle de Programa
 
Aula 05 subprogramas
Aula 05   subprogramasAula 05   subprogramas
Aula 05 subprogramas
 
Aula6 - Linguagem C
Aula6 - Linguagem CAula6 - Linguagem C
Aula6 - Linguagem C
 
Aula de C e C++
Aula de C e C++Aula de C e C++
Aula de C e C++
 
Comandos de Controle de Programa em C
Comandos de Controle de Programa em CComandos de Controle de Programa em C
Comandos de Controle de Programa em C
 

Semelhante a Alg aula 08 - modularizacao

Algoritmos - Aula 02 - Construcao de algoritmos
Algoritmos - Aula 02 - Construcao de algoritmosAlgoritmos - Aula 02 - Construcao de algoritmos
Algoritmos - Aula 02 - Construcao de algoritmosRodrigo Kiyoshi Saito
 
Apostila de algoritimos
Apostila de algoritimosApostila de algoritimos
Apostila de algoritimosCleide Soares
 
Lista de exercicios algoritmos resolvida-
Lista de exercicios   algoritmos  resolvida-Lista de exercicios   algoritmos  resolvida-
Lista de exercicios algoritmos resolvida-Mauro Pereira
 
Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Natanael Fonseca
 
Alg aula 03 - construcao algoritmos2 tp1
Alg   aula 03 - construcao algoritmos2 tp1Alg   aula 03 - construcao algoritmos2 tp1
Alg aula 03 - construcao algoritmos2 tp1Thalles Anderson
 
Algoritmos e Visualg parte 1
Algoritmos e Visualg   parte 1Algoritmos e Visualg   parte 1
Algoritmos e Visualg parte 1Marcio Pinto
 
Algoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigoAlgoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigoMauro Pereira
 
Aula 01 Logica de Programacao - Logica Matematica 1.pdf
Aula 01 Logica de Programacao - Logica Matematica 1.pdfAula 01 Logica de Programacao - Logica Matematica 1.pdf
Aula 01 Logica de Programacao - Logica Matematica 1.pdfEizoKato
 
Aula 01 Logica de Programacao - Logica Matematica 1.pdf
Aula 01 Logica de Programacao - Logica Matematica 1.pdfAula 01 Logica de Programacao - Logica Matematica 1.pdf
Aula 01 Logica de Programacao - Logica Matematica 1.pdfEizoKato
 
Algoritmos e Programação: Subalgoritmos, funções e passagem de parâmetros
Algoritmos e Programação: Subalgoritmos, funções e passagem de parâmetrosAlgoritmos e Programação: Subalgoritmos, funções e passagem de parâmetros
Algoritmos e Programação: Subalgoritmos, funções e passagem de parâmetrosAlex Camargo
 
Algoritmos e Programação: Subalgoritmos, funções e passagem de parâmetros
Algoritmos e Programação: Subalgoritmos, funções e passagem de parâmetrosAlgoritmos e Programação: Subalgoritmos, funções e passagem de parâmetros
Algoritmos e Programação: Subalgoritmos, funções e passagem de parâmetrosAlex Camargo
 
Logica Algoritmo 07 Subalgoritmos
Logica Algoritmo 07 SubalgoritmosLogica Algoritmo 07 Subalgoritmos
Logica Algoritmo 07 SubalgoritmosRegis Magalhães
 
Aula02_Vars_Ident_Ent_Saida_Algoritmos.pptx
Aula02_Vars_Ident_Ent_Saida_Algoritmos.pptxAula02_Vars_Ident_Ent_Saida_Algoritmos.pptx
Aula02_Vars_Ident_Ent_Saida_Algoritmos.pptxaronoliveira3
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmosjormad
 
Algoritmo estruturado
Algoritmo estruturadoAlgoritmo estruturado
Algoritmo estruturadodasko
 
(A10) LabMM3 - JavaScript - Subalgoritmos
(A10) LabMM3 - JavaScript - Subalgoritmos(A10) LabMM3 - JavaScript - Subalgoritmos
(A10) LabMM3 - JavaScript - SubalgoritmosCarlos Santos
 
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Os Fantasmas !
 

Semelhante a Alg aula 08 - modularizacao (20)

Algoritmos - Aula 02 - Construcao de algoritmos
Algoritmos - Aula 02 - Construcao de algoritmosAlgoritmos - Aula 02 - Construcao de algoritmos
Algoritmos - Aula 02 - Construcao de algoritmos
 
Apostila de algoritimos
Apostila de algoritimosApostila de algoritimos
Apostila de algoritimos
 
Lista de exercicios algoritmos resolvida-
Lista de exercicios   algoritmos  resolvida-Lista de exercicios   algoritmos  resolvida-
Lista de exercicios algoritmos resolvida-
 
Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Curso Java Básico - Aula 03
Curso Java Básico - Aula 03
 
Alg aula 03 - construcao algoritmos2 tp1
Alg   aula 03 - construcao algoritmos2 tp1Alg   aula 03 - construcao algoritmos2 tp1
Alg aula 03 - construcao algoritmos2 tp1
 
Algoritmos e Visualg parte 1
Algoritmos e Visualg   parte 1Algoritmos e Visualg   parte 1
Algoritmos e Visualg parte 1
 
Cap07
Cap07Cap07
Cap07
 
Algoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigoAlgoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigo
 
Aula 01 Logica de Programacao - Logica Matematica 1.pdf
Aula 01 Logica de Programacao - Logica Matematica 1.pdfAula 01 Logica de Programacao - Logica Matematica 1.pdf
Aula 01 Logica de Programacao - Logica Matematica 1.pdf
 
Aula 01 Logica de Programacao - Logica Matematica 1.pdf
Aula 01 Logica de Programacao - Logica Matematica 1.pdfAula 01 Logica de Programacao - Logica Matematica 1.pdf
Aula 01 Logica de Programacao - Logica Matematica 1.pdf
 
Algoritmos e Programação: Subalgoritmos, funções e passagem de parâmetros
Algoritmos e Programação: Subalgoritmos, funções e passagem de parâmetrosAlgoritmos e Programação: Subalgoritmos, funções e passagem de parâmetros
Algoritmos e Programação: Subalgoritmos, funções e passagem de parâmetros
 
Algoritmos e Programação: Subalgoritmos, funções e passagem de parâmetros
Algoritmos e Programação: Subalgoritmos, funções e passagem de parâmetrosAlgoritmos e Programação: Subalgoritmos, funções e passagem de parâmetros
Algoritmos e Programação: Subalgoritmos, funções e passagem de parâmetros
 
Logica Algoritmo 07 Subalgoritmos
Logica Algoritmo 07 SubalgoritmosLogica Algoritmo 07 Subalgoritmos
Logica Algoritmo 07 Subalgoritmos
 
Aula02 - JavaScript
Aula02 - JavaScriptAula02 - JavaScript
Aula02 - JavaScript
 
Aula02_Vars_Ident_Ent_Saida_Algoritmos.pptx
Aula02_Vars_Ident_Ent_Saida_Algoritmos.pptxAula02_Vars_Ident_Ent_Saida_Algoritmos.pptx
Aula02_Vars_Ident_Ent_Saida_Algoritmos.pptx
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Algoritmo estruturado
Algoritmo estruturadoAlgoritmo estruturado
Algoritmo estruturado
 
(A10) LabMM3 - JavaScript - Subalgoritmos
(A10) LabMM3 - JavaScript - Subalgoritmos(A10) LabMM3 - JavaScript - Subalgoritmos
(A10) LabMM3 - JavaScript - Subalgoritmos
 
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
 
Logica de Programacao
Logica de ProgramacaoLogica de Programacao
Logica de Programacao
 

Mais de Thalles Anderson (20)

Minipa et 1110
Minipa et   1110Minipa et   1110
Minipa et 1110
 
Minipa et 1001
Minipa et   1001Minipa et   1001
Minipa et 1001
 
Apostila usando multímetro
Apostila usando multímetroApostila usando multímetro
Apostila usando multímetro
 
Informática básica
Informática básicaInformática básica
Informática básica
 
Cabling 96
Cabling 96Cabling 96
Cabling 96
 
Cabos e linhas
Cabos e linhasCabos e linhas
Cabos e linhas
 
Código de cores tabela
Código de cores tabelaCódigo de cores tabela
Código de cores tabela
 
Dimensionamento cabos baixa tensão
Dimensionamento cabos baixa tensãoDimensionamento cabos baixa tensão
Dimensionamento cabos baixa tensão
 
Dimensionamento
DimensionamentoDimensionamento
Dimensionamento
 
Fibras ópticas
Fibras ópticasFibras ópticas
Fibras ópticas
 
Linhas de transmissão
Linhas de transmissãoLinhas de transmissão
Linhas de transmissão
 
Topologias de redes
Topologias de redesTopologias de redes
Topologias de redes
 
Windows xp
Windows xpWindows xp
Windows xp
 
Windows vista
Windows vistaWindows vista
Windows vista
 
Tcp e ip
Tcp e ipTcp e ip
Tcp e ip
 
Sockets
SocketsSockets
Sockets
 
Redes 6
Redes 6Redes 6
Redes 6
 
Redes 5
Redes 5Redes 5
Redes 5
 
Redes 4
Redes 4Redes 4
Redes 4
 
Redes 3
Redes 3Redes 3
Redes 3
 

Último

Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Ilda Bicacro
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...azulassessoria9
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Ilda Bicacro
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptxJOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptxTainTorres4
 
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....LuizHenriquedeAlmeid6
 
ATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
ATIVIDADE PARA ENTENDER -Pizzaria dos DescritoresATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
ATIVIDADE PARA ENTENDER -Pizzaria dos DescritoresAnaCarinaKucharski1
 
Bullying - Atividade com caça- palavras
Bullying   - Atividade com  caça- palavrasBullying   - Atividade com  caça- palavras
Bullying - Atividade com caça- palavrasMary Alvarenga
 
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdfPROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdfMarianaMoraesMathias
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfprofesfrancleite
 
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamentalAntônia marta Silvestre da Silva
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdfLeloIurk1
 
Revista-Palavra-Viva-Profetas-Menores (1).pdf
Revista-Palavra-Viva-Profetas-Menores (1).pdfRevista-Palavra-Viva-Profetas-Menores (1).pdf
Revista-Palavra-Viva-Profetas-Menores (1).pdfMárcio Azevedo
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...azulassessoria9
 
Manual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManuais Formação
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...IsabelPereira2010
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfLeloIurk1
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfCamillaBrito19
 

Último (20)

Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
 
Bullying, sai pra lá
Bullying,  sai pra láBullying,  sai pra lá
Bullying, sai pra lá
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptxJOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
JOGO FATO OU FAKE - ATIVIDADE LUDICA(1).pptx
 
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
Slides Lição 5, Betel, Ordenança para uma vida de vigilância e oração, 2Tr24....
 
ATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
ATIVIDADE PARA ENTENDER -Pizzaria dos DescritoresATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
ATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
 
Bullying - Atividade com caça- palavras
Bullying   - Atividade com  caça- palavrasBullying   - Atividade com  caça- palavras
Bullying - Atividade com caça- palavras
 
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdfPROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
 
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdfPRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
PRÉDIOS HISTÓRICOS DE ASSARÉ Prof. Francisco Leite.pdf
 
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental
2° ano_PLANO_DE_CURSO em PDF referente ao 2° ano do Ensino fundamental
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
 
Revista-Palavra-Viva-Profetas-Menores (1).pdf
Revista-Palavra-Viva-Profetas-Menores (1).pdfRevista-Palavra-Viva-Profetas-Menores (1).pdf
Revista-Palavra-Viva-Profetas-Menores (1).pdf
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: COMUNICAÇÃO ASSERTIVA E INTERPESS...
 
Manual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envioManual da CPSA_1_Agir com Autonomia para envio
Manual da CPSA_1_Agir com Autonomia para envio
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdf
 

Alg aula 08 - modularizacao

  • 1. 1 ModularizaçãoModularização Programação I ALG 2/21 Modularização A medida que abordamos problemas mais complexos, os algoritmos também apresentarão uma maior complexidade. A complexidade não está relacionada a quantidade de comandos existentes, e sim às diversas combinações possíveis dos comandos à disposição. Os comandos que possuímos são poucos, mas podemos realizar diversas combinações com os mesmos. A complexidade de um problema pode dificultar a construção do algoritmo de sua solução Devemos tentar dividi-lo em partes menores, resolvendo cada um dos subproblemas separadamente. 3/21 Modularização de algoritmos Consiste em dividir um algoritmo em etapas, fazendo com que cada etapa seja parte da solução de um problema maior. Se um subproblema ainda parecer muito complexo, podemos tentar dividi-lo em partes menores, para facilitar sua solução, e assim sucessivamente. “Dividir para conquistar” Nós temos dificuldade de resolver problemas quando os mesmos possuem uma grande quantidade de elementos inseridos. A modularização é a forma humilde de reconhecermos esta dificuldade, mas ainda assim resolvermos o problema. 4/21 Modularização: funções e procedimentos Realizada através de sub-algoritmos, também chamados de funções e procedimentos. Todas as funções precisam ser chamadas para ser executadas. Ao encontrar uma chamada para uma função ou procedimento, o fluxo de execução do programa desvia para o local onde a função existe, e executa a mesma. Ao terminar a execução da função, o fluxo de execução retorna para o local onde a função foi chamada. A execução do programa é reiniciada na linha seguinte à linha onde a função foi acionada. 5/21 Modularização: fluxo 6/21 Modularização em VisuAlg Todas as funções devem indicar um valor para quem chamou a função. Caso não seja necessário retornar um valor, deve-se usar um procedimento. Como a função retorna um valor, devemos usar o comando retorne seguido de uma variável ou constante para retornar esse valor para quem chamou a função. VisuAlg possui uma grande quantidade de funções disponíveis para uso imediato pelo programador.
  • 2. 2 7/21 Criando Funções A criação de uma Função deve ser declarada no início do programa. Este tipo de sub-algoritmo sempre retornam um e apenas um valor ao algoritmo que lhe chamou. Cada função tem associada ao seu valor de retorno um tipo explícito. Da mesma maneira com que os parâmetros são fixos para todas as chamada o retorno também é fixo. Algoritmo "<nome do algoritmo>" var <declaração de variáveis globais> <definição da função> inicio < lista de comandos> fimalgoritmo 8/21 Criando Funções Identificador: Nome da função. Passagem de parâmetros por referência: utiliza-se a construção VAR antes dos identificadores para indicar a passagem por referência. Os identificadores são separados por vírgula. Parâmetros: Entre um mesmo tipo de dados são separados por vírgula. Entre tipos de dados a separação é feita com ponto-e-vírgulas ';'. Tipo de retorno da função: Real, Inteiro, Lógico ou Caractere. Declaração de variáveis locais: idêntica a declaração de variáveis globais. As variáveis declaradas localmente tem validade dentro do escopo da função. Retorne: local onde é colocado a variável de retorno. funcao <identificador> ([var]<parâmetros>) <tipo de retorno> var <declaração de variáveis locais> inicio <lista de comandos> retorne <variável de retorno> fimfuncao 9/21 Exemplo algoritmo "funcao" var a , b , s : inteiro funcao soma (x,y: inteiro): inteiro inicio retorne x + y fimfuncao inicio escreva("Dig. o 1º número: ") leia(a) escreva("Dig. o 2º número: ") leia(b) s <- soma(a,b) escrevaL("A soma é ", s) fimalgoritmo 10/21 Criando Procedimentos Identificador: Nome do procedimento. Passagem de parâmetros por referência: utiliza-se a construção VAR antes dos identificadores para indicar a passagem por referência. Os identificadores são separados por vírgula. Parâmetros: Entre um mesmo tipo de dados são separados por vírgula. Entre tipos de dados a separação é feita com ponto-e-vírgulas ';'. procedimento <identificador> ([var]<parâmetros>) var <declaração de variáveis locais> inicio <lista de comandos> fimprocedimento 11/21 Exemplo algoritmo “procedimento" var a , b : inteiro procedimento escreve_soma (x,y: inteiro) inicio escrevaL(x + y) fimprocedimento inicio escreva("Dig. o 1º número: ") leia(a) escreva("Dig. o 2º número: ") leia(b) escreva("A soma é ") escreve_soma(a,b) fimalgoritmo 12/21 Compartilhando variáveis entre funções Caso seja necessário acessar ou alterar o valor de uma variável dentro de mais de uma função, devemos declarar a variável dentro do algoritmo, mas fora de qualquer função. As variáveis criadas dentro de funções recebem o nome de variáveis locais, e só existem dentro das funções onde foram criadas. As variáveis criadas dentro de um algoritmo podem ser utilizadas em qualquer lugar. São chamadas de variáveis globais.
  • 3. 3 13/21 Exemplo algoritmo “escopo" var a , b , s : inteiro procedimento altera_s (x,y: inteiro) inicio s <- x + y fimprocedimento inicio escreva("Dig. o 1º número: ") leia(a) escreva("Dig. o 2º número: ") leia(b) altera_s( a , b ) escreva("A soma é ", s) fimalgoritmo 14/21 Exemplo Exemplos Numa loja de materiais de construção, um azulejo estampado custa R$2,50. Faça um algoritmo para ler o comprimento e a altura de uma parede (em metros), e depois escrever o valor a ser gasto com a compra de azulejos. Considere que um metro quadrado é formado por 9 azulejos. Solução A saída é o valor total gasto com azulejos. O computador precisa saber o comprimento e a altura da parede. Quais são os cálculos necessários? 15/21 Exemplo Solução (cont.) Multiplicando a altura pelo comprimento, teremos a área da parede (considerando uma parede retangular); Multiplicando a área pelo número 9, teremos a quantidade de azulejos necessários para preencher esta área; Uma vez que um azulejo custa R$2,50 (um valor constante), podemos multiplicar a quantidade de azulejos por 2,5 para chegar ao total gasto. 16/21 Exemplo Solução sem uso de modularização: Variáveis gasto_azulejos, comprimento, altura, area, azulejos: real; Início escrever “Digite o comprimento em metros: ”; ler comprimento; escrever “Digite a altura em metros”; ler altura; area = comprimento * altura; azulejos = area * 9; gasto_azulejos = azulejos * 2.5; escrever “Quantidade de azulejos necessária: “, azulejos; escrever “Valor gasto com azulejos: R$ “, gasto_azulejos; Fim 17/21 Exemplo Solução (cont.) Pensando em termos de algoritmo, podemos imaginar três etapas: Variáveis ? ? ?; Início “Obter as dimensões da parede e calcular a área”; “Calcular o valor gasto com azulejos”; “Escrever o resultado calculado”; Fim 18/21 Exemplo Solução (cont.) Detalhando o cálculo do valor gasto. Variáveis gasto_azulejos, comprimento, altura, area, qtd_azulejos: real; Início LER_DIMENSOES_E_OBTER_AREA; CALCULAR_VALOR_GASTO; ESCREVER_GASTO; Fim. Módulo CALCULAR_VALOR_GASTO; [[...]]; Módulo LER_DIMENSOES_E_OBTER_AREA; [[...]]; Módulo ESCREVER_GASTO; [[...]];
  • 4. 4 19/21 Vantagens do uso de funções Facilita a resolução de problemas complexos; Viabiliza a divisão do trabalho entre a equipe de desenvolvimento (cada programador ou grupo de programadores pega um pedaço do problema para resolver e trabalha de forma independente); Desenvolvimento mais rápido de programas (várias funções podem ser escritas em paralelo pelos membros da equipe). 20/21 Vantagens do uso de funções Incentiva a divisão de responsabilidades; Reuso de funções desenvolvidas em projetos anteriores ou obtidas externamente diminui o tempo de desenvolvimento de novos programas; Aumento de qualidade pelo uso de funções cujo funcionamento foi validado em projetos anteriores. 21/21 Exercícios Escreva uma função que recebe uma quantidade qualquer de valores e retorna a média desses valores. Escreva uma função que receba um número inteiro positivo e retorne o fatorial desse número. A fábrica de refrigerantes Meia-Cola vende seu produto em três formatos: lata de 350ml, garrafa de 600ml e garrafa de 2 litros. Se um comerciante compra uma determinada quantidade de cada formato, faça um programa para calcular quantos litros de refrigerante ele comprou. Resolva o problema utilizando funções. DÚVIDAS ?DÚVIDAS ? Programação I ALG