Logica_de_Programacao_3_Edicao_Livro
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Capítulo 6 Modularizando algoritmos 1 137
FIGURA 6.5
Escopo de variáveis
---------~------------------~---------
K, J
-------~- ------------------
K, X Q)
..----------.-- - --- ---------------- ---
y 0 X
'------~- - - ----- - - -- - - - --- --- --- - - - ~- -✓
:......................,.'................•.......
. .
.....................................
..--------~- ------------------ -~ -
M
'----------'-- ------------------
'
. . .. ..
' •• ..
'••. ····
.•.. ·-..
...-K---- ·····.. .... ·····.....
y
..
,•
.... •·
,,
-e, - ,
i .....................................•..•' .•...•...••······
'-----------'--••········-------L------------
M
.... \.•,
...
\
\
\.
/
.'
K
.,,·•,,•./.-·.-····..........
l
... ..
', ',,
\ .
.
l
l '
\ J
Observarnos que as variáveis K e J definidas no início do algoritmo são visíveis, a p1;ncípio,
a todo e qualquer rnódulo, ou seja, sã.o globais a r.odos. A variável M é local ao rnódulo
3 e visível ape nas a este , assirn corno a variável Y é local ao rnódulo 2.
Em outra situação, ten1os a variável X, que é local ao 1nódulo 1, se11do visível tan1bén1 ao
1nódulo 2, pode11do ser definida relativan1ente con10 global ao 1nódulo 2.
Em u1na situação bastante particular, na qual ocorre un1 conflito na declaração da variável
K (início do algoritrno e inte1;or do módulo 1), assurniremos sempre que a va1;ável a
ser utilizada no interior do rnódulo será a que foi definida neste, ignorando a existência de
outra variável de 1nesn10 non1e no ârnbito global. Ten10s, então, que os n1ódulos 1 e 2 não
enxergan1 a 1nesn1a variável global K vista pelo módulo 3, e sim a variável K definida Jocal-
1ne11te a 1 e globaltnente a 2.
Refazenclo o algoritmo do cartão de ponto utilizando os conceitos de escopo de variáveis,
te1nos:
ALGORITMO 6.5 Cálculo dos atrasos e horas trabalhadas - versão 3
1. inicio
2. tipo di a = regi stro
3.
4.
5.
6.
7.
8.
9.
10.
inteiro: em, sm, et , st;
fimregistro ;
tipo totDia = registro
inteiro: atraso, horas ;
fimregistro ;
tipo Vl = vetor [1 .. 31] de
tipo V2 = vetor [1 .. 31] de
Vl: cartão;
dia ;
totDia;
(Couli11.1u1)