Escolar Documentos
Profissional Documentos
Cultura Documentos
Sebenta Introdução À Programação
Sebenta Introdução À Programação
$
%"
$&
$
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' !
#'# ( )
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' !
#' *
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' !
#' '# *
$
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +
#' '
,
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' .
#' '/ $
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' #
#'/
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' #
#'/'# *
0
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' #
#'/' $
$
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ##
#' 1
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' #/
#' '#
1
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' #/
#'! - 1
2 ) ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' #
#'!'# $
2 ) ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' #
#'+ 3 4
"
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' #!
5
6
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' #+
'# ( )
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' #+
'
3 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' #+
7
" ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' #+
'/
8
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' #9
8
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' #9
'
"
8
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' #9
'!
0
7
"
:
3 ; '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' #.
'+ <
% <5 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' #.
'9
"
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'. 3 4
"
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
/
$
%"
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +
/'#
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +
/'
0
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +
/'/
) *
)
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 9
/'
4
=
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 9
/'! = ") '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' .
/'+
6
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' .
/'9 $
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' >
/'.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' /
/'.'#
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' /#
/'.' *
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' /
/'.'/ $
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' //
/'.' 1 ?
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' /
/'.'! @
1?
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' /
/'.'+ @
*
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' /
/'>
A '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' /!
/'>'# $
" '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' /+
/'>'
0
B
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' /+
/'# C
2 ) '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' /9
/'## 3 4
"
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' /.
D
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'#
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'#'# @
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'#' @
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' #
'
3
A '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' #
' '# $ ) A
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
"
4.3 - $
Math Random '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' /
'/'# %
$
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'/' $
Math''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'/'/ $
Random'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'
4
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +
' '#
4
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +
' '
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 9
' '/ $
Le ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 9
' ' $
String''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' >
'! 3 4
"
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' !
!
A
$
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' !
!'#
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' !
!'#'#
E if''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' !
!'#'
) E if-else''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' !
!'#'/
(
E switch - case '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' !>
!' *
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +
!' '#
*
while ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +/
!' '
*
do-while ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +!
!' '/
*
for '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' +9
!'/ 3 4
"
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 9#
+
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 9>
+'#
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' .
+' 5 A ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' .#
+'/
8
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' .
+'
8
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' .
+'! =
= ") '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' .+
+'+ 3 4
"
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ..
9
$
@ F
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' .>
9'# @ F
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' .>
9' $
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' >
9'/ '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' >
9' (,
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' >
9'!
$
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' >#
9'+ * 0
@ F
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' >#
9'9 (,
8
: )
; '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' >/
9'. $
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' >!
9'>
0
< ) $
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' >9
9'# = ")
$
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' >.
9'## = ")
8
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' >>
9'# @ @
- * 0
this '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' >>
9'#/ 3 4
"
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' #
.
*
)
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' # /
.'#
0 A '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' # /
.'
3 4
"
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' # !
>
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' # +
>'# ( )
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' # +
>'
C
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' # .
>' '# = ")
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' # .
>' '
6
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' # .
>' '/ 3
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ##
>'/
8
,
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ##
>' #' G
(
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ##/
>'!
@ F
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ##
>'+ $
Vector''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' #
"
>'+'#
>'+' >'9 3 4
#
# '#
# '
# ' '#
# ' ' $
# '/
# '
3 4
##
##'#
##' %
##'/ H
##' @
##'! ##'+ 3 4
#
- 3
#/
- 3
#
- 3
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' #
Vector'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' #
"
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' #
B D
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' # !
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' # !
D
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' # !
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' # !
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' # 9
% " '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' # .
"
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' #/
@
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' #/
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' #/
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' #//
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' #/!
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' #/9
I J
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' #/.
"
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' #
G$
1 'F ) ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' # #
G7
" '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' # 9
%
0 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' # >
,
"
EF
$
0
-
K
" D ,
F " 0
'
0
"
" D
K
3
)
4)
K
K
)
B
D
0
# ,
6
0 )
'
,
0 &
K
0
F"
/B
)
H
H
)
'
K
K)
'
"
1-
1.1 - Motivao
<
)
'
@ 0
F
A
,
A
)
'-
'
6
, L
04
D &
'
KD
0
K
K,
,
) 6 K
6
A
K,
)
&
K
0
0
"
'
'I
"
"
0
0 K
K
K
A
"
H"
0
,
'
) 'C
) N
'
0
0 6
F K D
,
=
D
KD
H D
D
KD
,D
'
D
K
8
'
3
A
''$
(
0
H
? K
0 D
"
K
'
'
0
"
O
E
E
:-
#'
#'# %
#' #'/ 2
#' $
,
)
H
N
0
'
'# -D
"
' $
E
-0
, ?
)
)
-D
P
)
'
0
F
*
7
@
@
0
0
A
A
0
6
,
?
)"
A
A
*
C
:
:
) ) 0
;
;
0
3
")
:D D
F
"
D
K 0 6
),
H
K
O;
Produzir resultados correctos, qualquer que seja o conjunto de dados legtimos utilizado.
Exemplos:
Exemplo 1: Elaborar um algoritmo que calcule a rea total das paredes de uma caixa de seco
rectangular a partir das suas dimenses.
E
K
"
E$
E"
K
"
E
1&
1&
1&
-
Q
Q
Q
Q
R
#R
R
3 R S) -
S
S
S
Q
T S-
#T S-
E C
F )
U V ! G !W
K 0
0
XV ! G# W ;
U V! G W K V! U
&
"
+W '
D
) )
,D
'
E
1&
1&
Q
Q
,
Q Q
S K +
U!
R K
U !
R K#
R K !
5 Q
Q Q
5 Q
)
3
Q Q
/E $
E
@ <
@ <
,D
T<
<
<
T#
D
R
<
R#
R
<
,D
T<
R<
<
T#
X#
)
E
R
R
1 )
D
:)
R
R
XR ;
T)
T#
1 )
"
5 Q
D
R
) L$ F
R
)
) 6 M
5 Q
3
D
C
,
0
)
")
K
D
H F D
,
D
D
:
;' @
' @
4
KD
3
'@
0 3
)
'3
) K
'
0 3
K
D &
6
),
:) 0
3 ;'
#' *
"0
'
B5
1 H
0 3
"
'
0 3
6
3
0 3
0
'
4
K
04
'@
0 3
'( K
) 6
6 '
<
#X)
<
)
#U)
)
)
#,
/'
0 3
'
"
>
1
1
)
)
)
) L
#
#X)
) )
)
# L,
#U)
) )
L,
) L)
5 Q
5 Q
5
5
'
?
K
'
0
D
'
3
K
)
@
, D
F K
0
0
)
'
, 0
3
) )
K
'-
) '
,
H
H
A
K)
"
M :
;K
H '<
3 , )
'
" K
D
6
,
,
' I
,
K
F K
'
'
D
"
D
KD
D
MK
D
F
0 6
K
F K )
D
F
'<
)
,
0
H
6
?
D
,
'
H
H K
0
6
,
0
K
')
'@
"
KD
#'
E
!
"#
$#
%#
"
/
!
+
9
'''
$
) 0
<
#
'''
R.
#
#
##
#
#
##
'''
#
# #
##
###
'''
' I
<
K
K
6 K
R
#
/
'
"
, ,
K) F
0 6
) A
E
7 / 2
= 3 e o resto da diviso 1
3 / 2 = 1 e o resto da diviso 1
1 / 2 = 0 e o resto da diviso 1
@
$
'
Z
,
&
1
1
1
1
1
3
3
'
bit
byte
Kilobyte
Megabyte
Gigabyte
0
';' = F
N/A
8 bit
1024 byte
1024 Kilobyte
1024 Megabyte
,
E
)* #
)+
b
B
KB
MB
GB
" K
H 3
'
04
04
;K
;K
'K
'
"
##
C
$
:$ C ;
0,
0,
4
?
"
!' $
'
,
$ C ,
:$ C G
) 6'
;' - 0
"
;
:
: 3
@ $ C ,
;'
E
B1 ?
"
K
,
)
C
?3
:
;
D
"
5
+' $
@
"
$ C'
0
,
0
D
?
D
,
,
$
I
?
)
6
) )
G
:) 0
) N
H
?
? K
* -( :!
4
E
) " N
3 ;N
"
;' [
"
"
) N
, 3
:(% G #
;K
Z
\%
D
;K
6
:7 % G #
E$
:\ % G
(%
;
D
4 H
#\ % :# \
Z ;K
,
z
0
512
)
)
)
K
B 4 E
N
'
K,
?
6
G
6
?
x
1024
...
E
4 E
0
,
3
;E
6,
,
) K
...
:* -(;
K 3
3
' $,
12
256
...
?
K
:
5
,
: D
#K K ''' !+K
$ C
Z ;K D
"0
a
2
9' *
,
#(% :# (
"0
* -(
" E
) "
"
"D
4
0
"0
K $ *
'
0 K,
'
6
]" )
4)
E
4
#.E
,
A
F 0
'@
' -
# K
'
4
) 6
H
# '
D &
?3
*( E
6
6
?
0"
]"
"
"D
H
'
D
E $K
K1
K $TT 2 ) '
,0
"D
K
'@
?
4) ;
-
D
D
3
D
") :
'
?
0 6
"D
,) 0
D
'<
"
K
0
0
?
6
:
;'
?
D
3
H ,0
K
"
'"
'
"
#/
0
8
;' <
'
F K
4
?
F
D
'
,
F
) )
D
'
'
#
D
) )
3
F
2 )
6
0
,
,
0
2 ) '
3
) A
( @ K ;'
'@
/ (
F 3
D
/ ( KD
,
("D
-0
6
3
")
)
:^
3
_ KC
@ L?
0
K,
0
0
'
L?
, '
3
"D
,0
?
D
"
2 =( :%
MK
'
K
&
;'
2 )
2 ) ;
.'
3
D
3
3K
2 ) '
("D
:2 =(K
3K 1
MK D
2 )
2 )
?
?
2 )
")
H
D
<
%Z
'
$?
D
?
'<
'
K
H
2 ) '
"D
D
0
D
K D
2 )
'
"
"
'
"
2 ) ,
( :2
\;
"
'
'
' #E = 0
' E
# # '
)
' :<
' /E
' E
' !E $
' +E
' 9E
' .E
' >E
K5
\ ) K
'
3
"
"
D
,
6
K
ET
D
'
K
#
)
3
K
$
E `$ R :`5 / ;S!B>N `\ R `$T 9/'#!;
F
0 &
3
'
),
'- ?
'
,
'
'
"
#!
2-
Formalizao
2.1 - Motivao
I
0
,0
'
K,
3
K
0
0 6
A
:
'
3
K
A
3
;
0
3
' -
8
,
K
0
'-
D
6
:0
;'
2.2 - Sintaxe
-
3
)
,
"
,
''-
0
"
)"
'-
3
, ,
),
'
Gramtica
$
'
)
L) % *
0
L
M ,
0
L) % * M
L@ 2
H
M ,
&
'
4
)
L@ M
M
M'
L2
) 6K
)
H
M'
M' @
L
5
<
=
<
<
<
@
5
>'
2
0
'
0
E
L)
% * M
"
#+
-0
"
'<
3
) 0
K 0
D
0 6
'
2.3 - Semntica
-
:)
'
3
'C
0
0
'
Ambiguidade Semntica
-
"
4
4
,D
' C
0
,
4)
"
# '
4)
;'
<
<
"
K
6
3
A
"
K
'
L'
:&
K
,
D
)
KD
D
'C
'
E
-
A
6
"
'
K
),
'
G @
1
)
D &
'
"
#9
04
3E
6
:3 T#;
) 6
'
:3 #;
F" )
"
3 ;D
"
),
'
<
"
'
0
"
"
)* #
)* #
D
: 3'
"
M;
KD
)
)"
4
'
: 3'
)
;
4
-
'
)"
F
)
)* #
"
)"
"
E
% <5K
"
'
% <5 0
%
0
:% <5
L
"
"
M;'
D
'
<
"
% <5K
)* #
)* #
@
@
2
U 4
4 :
EER
4
4
#E
LUM LXM
X
a a;
0 L,
4)
M
D
U 4
4
G
EER
X EER
&
"
#.
1.
Uma frase (F) constituda por um sintagma nominal (SN) seguido
de um sintagma verbal (SV)
2.
Um sintagma nominal (SN) definido por um determinante (Det)
seguido de um nome (N)
3.
Um Sintagma verbal (SV) formado por um verbo (V) seguido de um
sintagma nominal (SN)
"
D &
% <5K
"
"
#'
<nmero binrio>
- #b
"
"
"
"
- b
4
4
4
3
"
"
#'
"
E
#
E
/E
"
% <5
'
E
E TK K K #K K /K K !K +K 9K .K >
E
K
E
H
"
<Tempo>
::=
<Horas>
::=
<Minutos> ::=
<Segundos>::=
<Horas>
0 | 1
00 | 01
00 | 01
!E $
% <5
'
:
|
|
|
<Minutos>
2 | 3 |
02 | 03 |
02 | 03 |
: <Segundos>
4 | 5 | 23
04 | 05 | 59
04 | 05 | 59
"
% <5'
5 )6 7 # 5 6
5 6 7 #5' 64 5 64#
"
#>
5' 6 7
4
4
4
E
E K
E K%
;-0
#b
b
b
b
b
*
*
*
*
*
U% X
U% X
U% X
U% X
D
4)
;-0
#b *
<
#b
'
O
U% X
;-0
#b *
b*
/b *
U% X
U$X
D
4)
#b K b /b
)
"
"
% <5
'
)
)* #
D
)* #
8
)* #
4
)* #
<
D
4
:&
:&
M;'
L M;
"
#E
&
SN
SV
5;6
5 ) 6 5 )0 6
Det
5) 6
5!
' =
- (
)0
-
SN
0
E
D &
65 6
<
5 )0 6
50 65) 6
"
"
"
"
#'
!*
!*
!*
"
3
4
D
:
,
;'
4)
K ?
"
"
/E
"
'
#
/
<
E $
3
. / 001
. / 001
. / 001
!
+
9
.
>
"
% <5
. /
. / 2 . / 2
' #E
"
<Comp>::=
<Dum+>::=
<Dum> ::=
<Bum> ::=
;
;
0D
KF 0
% <5E
"
KD
'
0
"
1)EFA
2)AA
3)ACC
4)ABCDE
5)BBAAAAE
6)EDDCCE
"
7)BBCA
;-
"
' E
D )
"
% <5E
<S>::=<A> a
<A>::=a <B>
<B>::=<A> a | b
0D
4
U X'
KD
0
;
KF
"
&
"
"
1)aabaa
2)abc
3)abaa
4)aaaabaaaa
5)aaaba
;-
"
' /E
D )
"
% <5E
<Blop>::= c <Gulp> s
<Gulp>::= a | b <Gulp> | x <Bat> y
<Bat> ::= x | y <Bat>
;
;
0D
KF 0
"
KD
'
1)cas
2)cGulps
3)bay
4)cxxy
5)cxxayys
;-
"
' E
"
D )
K
% <5
"
'
3
' !E
"
4
3
' +E
)
0
'C
3
K
?)
' 9E
E
)
"
% <5
0
,
% <5
"
6
'
F
"
'
"
4
H )
KD
D
0
D
E K K K K '
% <5E
"
<Princ>::= a <Meio> a
<Meio> ::= b <Fim> b
<Fim> ::= c | c <Fim>
;
;
0D
)
' .E
"
"
)
0
E
:#; 0
: ; 0
:/;
'
' >E
K
K
6
D )
"
'
"
% <5
'
"
3
3
c D
E K
0
"
% <5
D
,
K D
L M
K
0
0D
;-
LTM
" K
D )
"
'# E
L L LM ,
"
T '
K
'
"
4
'
K '! /'
T/
'
% <5E
4
&
G ' K '
% <5E
0D
<Seleco> ::=
<confuso> ::=
<Condio> ::=
<Expresso>::=
<Id>
::=
;
'
% <5
"
1 (
k=m
<D>
e |
'
" K
3
0
E
<s> <A> <s> <B> i
L-M L% M
KL M,
3 '
<A>::=
<B>::=
<C>::=
<D>::=
;
;-
' ##E
"
'C
'
3
D
,
' !N
40
'
D
D
'C
)
D
'# E
KD
"
"
'
"
D )
'
"
' #/E
"
% <5E
0D
4
&
"
"
'
;3 '# E
"
D )
'
% <5K
"
, comp'E
"
K
"
'
'
K
"
' #!E
: 3 'E #K
)
#K !!!!!K
"
'; ' *
6
)
"
K
% <5'
"
3-
&
E
!
> G
)
?
6
0
) ) N
+
> G
D
) 0
N
Comentrios so teis para os humanos, mas so ignorados pelo computador.
'-
&
2 ) :
"
"
6
0
K 4
'
3.2 - Identificadores
@
4
;' 3
D
2 ) K
:0
K ) ")
'
K
:
<
:Q ;
K 4
:d ;
0 ;
K 2 )
A
a
B
b
public static void
)
6
A
)
$
D
,
:)
K,
'
E
H")
,
: 3E - ;
: 3 E main() )
;
K
) )
;
K
)
D
) 0D
H
2 ) ,
@
I
F E
: 3E
, )
;
)
'
;
<identificador>
<letra>
<caracter>
<string>
/ (
::=
::=
::=
::=
<letra> | <caracter><string>
a | b | ....| z | A | B | ... | Z |
<letra> | _ | $
<caracter ou digito> |
<caracter ou digito><string>
<caracter ou digito> ::= <caracter> | <digito>
<digito>
::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
"
1_x
X1
M&M
int
$dlar
limite Inf
)"
2 )
invlido,
vlido
invlido,
invlido,
invlido,
invlido,
: 3E
0
6
E 3
K
0
&
;' <
(
2
?
,
' -
)
3 '-
'
abstract
boolean
break
byte
byvalue
case
cast
catch
char
class
const
continue
default
do
double
else
extends
false
final
finally
float
for
future
generic
goto
if
implements
import
inner
instanceof
int
interface
long
native
new
null
operator
outer
package
private
protected
public
rest
return
short
static
super
switch
synchronized
this
Throw
throws
transient
true
try
var
void
volatile
while
##' 1
2 )
0
2 )
E TK K S R
E eK fK :K ; N
)
)
K
)* #
)
4
E
&
0 '
@
3 4
'
3
<
<
@
$
E
E +! / #
E /'# #!>K '
E g cK g-c gh c
E L%
!'..0
PM
"
3.5 - Variveis
C
= ") ,
'-
) ")
'
@ )
) ")
)
'$
)
) ")
3
) 0
) ") '
'<
K
# ' *
) ")
) )
num = 210;
Clula de
Memria
1002
K
6
Clula de
Memria
1002
"0
) ")
"
;
:N;'
)
,
0 6
2 )
K
;' D D
0
,
'
int total;
int count, temp, result;
9
5
#/'
) ")
(
-+
) ")
: 3 E total = 0;).
"
<
( '
) ")
'
int sum = 0;
int base = 32, max = 149;
;
) ")
' - ) ")
6 ;'
0
0
: ?
)
)
) ") , 0
)
'<
K,
:)
?
) ") 0
3 ;'
"
)
3.7 - Constantes
C
? K
)
) 6' -
K )
)
?
2 ) K ,
'
K,
K
6
) ") K
3
,
0
?
'- " K
'
)
final
"
>
'
) ")
&
&
0
)
)
)
) ")
4)
!
'E
E
( E
)
F
'
Z K
:)
;'
int x = 10;
// int um tipo primitivo
String str= new String (Ola);
// String uma referncia
"
# ' *
"0
,
0
4)
) ")
>
'
)
) '
2 )
I
C
C
3.8.1 - Inteiros
Tipo
Inteiro
Tamanho
byte
1 byte
(8 bits)
short
Menor Valor
Maior Valor
128
127
2 bytes
(16 bits)
32,768
32,767
int
4 bytes
(32 bits)
2,147,483,648
2,147,483,647
long
8 bytes
(64 bits)
9,223,372,036,854,775,808
9,223,372,036,854,775,807
#!'
0
) ")
byte:
short:
int:
long:
2 ) '<
K
)
) ")
) ")
40
-22 500
1 500 000
4 000 000 000
"
/#
Operao
Smbolo
Exemplo
Resultado
Adio
26 + 10
36
Subtraco
26 - 1
25
Multiplicao
26 * 10
260
Diviso
26 / 10
Mdulo
(resto)
26 % 10
#+' $ F
@
E System.out.println(30 + 10 / 2);
-
A
30 + 10
= 20
2
4)
>
'
30 +
10
= 35
2
correcto!
errado!
Grau de
Precedncia
Operao
Alto
()
Mdio
-, + (unrios)
*, /, %
Baixo
5
#.'
4)
#9'
+, &
3.8.2 - Reais
C
K
3
: ;
Tipo
Tamanho
float
double
#>'
2 )
"
Tipo
Menor Valor
Maior Valor
float
1.40129846432481707e-45
3.40282346638528860e+38
double
4.94065645841246544e-324
1.79769313486231570e+308
' (
")
2 )
@
float
double' -
&
D
D
Operao
Smbolo
Exemplo
Resultado
Adio
5.4 + 2.0
7.4
Subtraco
5.4 - 2.0
3.4
Multiplicao
5.4 * 2.0
10.8
Diviso
5.4 / 2.0
2.7
#' @
6
double'
4)
Grau de
Precedncia
Operao
Alto
()
Mdio
-, + (unrios)
*, /
+, -
Baixo
5
'
&
3.8.3 - Caracteres
@
2 ) ,
0
D
char' <
?
, 4
char
?
,
) ")
,4 ) ''
0
'
@
char
: ' ;E
"
//
3.8.4 - Lgico
@
)
-
E)
boolean, D
2 ) ,
0
'
true false
)"
K )
1?
@ <@
"
?
!
NOT
&&
AND
||
OR
;K
'
D
-<
@ *
"
:&
;
a
true
true
false
false
5
5
b
true
false
true
false
/'
'
a && b
true
false
false
false
a || b
true
true
true
false
a
true
true
false
false
! a
false
false
true
true
i i K jj P
)
Operador
>
>=
<
<=
==
!=
booleanE
Designao
Maior que
Maior ou igual a
Menor que
Menor ou igual a
Igual a
Diferente de
"
-0
4)
)"
+
*
/
float,
double
++
--
>
>=
<
<=
==
!=
byte, short,
int, long
+
*
/
%
>
>=
<
<=
==
!=
char
boolean
+
>
>=
<
<=
==
!=
||
&&
>
>=
<
<=
==
!=
3.9 - Instrues
$
F" 0
A
) 0 6 ' -
E
( G
3
No executveis constituem directivas para a JVM
// executveis
System.out.println("Ol!");
aluno.inscricao();
// no executveis
public static void main(String[ ] args)
import desenhograficos.*;
I
3
+
+
> )
> '
L e k fM
)
A
:N;
4
)"
"
/!
// instruo simples
System.out.println("Ol!");
// instruo composta
{
System.out.println("Ol!");
System.out.println("Bom trabalho!");
}
;
>
C
@ $
6
,
main()K
main
D ,
3
K
D
3
:)
main
3
D
-
A
3 '
D
D
'
)
D
'
;'
K
3.10 - Comentrios
@
"
3
'<
'
'
@
"
2 ) &
'@
6
'
'
C
2 )
'
"
/+
/ (
package meuteste;
public class OlaMundo {
public static void main(String[] args) {
System.out.println("Ol Mundo!");
}
}
/ (
package
meuteste;
public
class
OlaMundo
{
public
static
main(String[] args) { System.out.println("Ol Mundo!"); } }
@ $
void
H '
D K
6
K
, 0
G
)
)
6
@
) "
K
D
'
,
'
),
'
"
"
)
0
? '
G !
,
0
"
(
"
/9
:String nome);
6
Z
6
'
'
:L
E
6
M;N
Le.umaString() ,
D
0
L'
M' @ )
6
) ")
nome.
"
:L M;' I
)
G 0
! (
D
?
KD
) D
3
D 06
K
<
) ")
6
?
"
D
) '
"
D
F"
0
D
6")
'
?
) '<
?
,
//Declarao de variveis
//Mostra a mensagem
' #E
D
'
#O <
1
0
true
' E
23E5
-255
false
300
23.4E300
8000000
D
)
)"
7E10
32767
-127
'
D
1E3
-32767
123
, )"
0D
'
666
777.
888.0
6.66e2
483,500
1666667e -6
' /E
D
; CONST
a = 3;
b = 4;
F"
2 ) E
' E
; CONSTANT PI = 3.14;
conta
diferenca
fraccao
cor
3
-2
0.33333
Azul
'2
0D
'
; CONST e = 2.718;
"
/.
; CONST a, b = 12;
; VAR y : INTEGER
F; VAR x = REAL;
0; CONST valor = 2
H; VAR x, y : CHAR;
; VAR x : BOLEAN;
J ; VAR x : CHAR;
; VAR a: CHAR;
VAR b : REAL;
; VAR a : INTEGER;
b : CHAR; c : INTEGER;
; VAR a; b : INTEGER;
c : REAL;
"
/>
4-
Sequenciao
6
"
) ") '
'
- 3
,
3 K
?
-
4
) ") K
)
M'
) ") D
D
) ")
'<
) ") '
'$
K,
) ") conta
)
R
T #N
,
:
5
!' *
conta
;
"
) ")
E
R !!N
@ )
) ") total ,
!!
int conta ;
conta = 25;
sum = conta;
conta = sum + 15;
conta = conta + 1;
!
!
#
,
"
) ") ' @
3
K
, D )
) ") K
2 )
6
A
'
num += conta;
num = num + conta;
"
TR
R
SR
BR
W R
+'
3
3
3
3
3
D )
TR Z
RZ
SR Z
BR Z
W RZ
3
3
3
3
3
R3
R3
R3
R3
R3
TZ
Z
SZ
BZ
W Z
,
) ") K
'
conta = conta + 1;
conta++;
++conta;
// Verso Sufixo
// Verso Prefixo
3
3
int x = 0, y = 1;
x = y++;
BB Z , K 3 , #
3
int x = 0, y = 1;
x = ++y;
// y 2, x 2
@
--
count--;
--count;
4.2 - Expresses
C
3
) )
D &
'-
'
"
E
G
>
) )
5 * ( 2 + 3 ) + ( 7 3 ) / 2
-
,
>
Resultado: 27
G &
) )
E
3
#E
)
2
3-4*2+1
2*(12%5)-(8-3)/2
2*12%5-8-3/2
2.5+6%4*2.1
!
+'9
#'
A
2
3 0
0
R0
3
K
"
)
0
A
A
4)
D
'
D
4) ' 3 E
" ,
4)
)
'
D
:
'
? K
'
D
"
H F
)
)
0
,)
;'
"
Z
)"
0
;N
'
X H
X
G
X0
)
X
3
"
'
"
E
3
#E $
<
double ,
, double
, 0
6
;'
) ") int
4)
E I
6 A
)
) ")
-2.8636363636363633
-2.727272727272727
-3.15
-3.0
-2.0
K0
F"
D
,
"
D
K
'
K
-
) )
K)
0 A
0
?
K
0 &
)
0
)
'
"
0
3
?
)
)
D
A
"
D
K
'
F
0
K
F
0
6
?
D
'
'
'
"
) )
-
K D
'
K
@ F
java.lang
java.util
java.applet
etc.
C
$
;E
)
"
_
)
0
"
Math.sin() G
Math
: 3E
N
46 D
';
java.lang K
$
40
'
6
3
$
Math D
)
Math.sqrt() G
:import; 3
"
'
E
&
'
java.util :0
java.lang ,
"
F ) '
I
,
6
"
'*
;' $
N
$
) importK
'
"
Random
,
(,
*
:;
3 :
3 :;
3 :
3
;
;
:;
$
7
*
*
*
?
?
?
?
? K
)
#'
'
,D
'
4) K
3 4
import java.util.Random;
public class Calculo {
public static void main (String args[]){
int base=2, expoente=8;
Random r = new Random(); //agora j mais legvel...
int resultado = r.nextInt();
System.out.println(O resultado : +resultado);
}
}
J
F ) '
'SN
"
'
import java.util.Random;
public class SomaAlet {
public static void main (String args[]){
Random random = new Random();
int n1 = random.nextInt();
int n2 = random.nextInt();
int soma = n1 + n2;
System.out.println(A soma : +soma);
}
}
"
6
)
@
C
A
6
'@
F K
'
:
E,0
;
),
) K
println
3
)
println
&
'
&
E
E Ol a todos
println (
System.out.println()
"
System.out.println(Primeira mensagem");
System.out.println(Segunda mensagem");
X
X
XQ
System.out.print()
(
'
'
:a
a;N
Q
E
3
#E
) ")
R //N
//
System.out.println(idade);
3
) )"
?) 6
@
//
)
-
,!
int x = 3, y = 2;
System.out.println(A soma dos dois nmeros + (x + y));
2 )
'<
D
40
A
K
,
K
K F" D
04
0
System.out.read()
6
K
0
)"
) 6 D
6
6
4
D
)
0
'
4.4.3 - Classe Le
0
6
L'
MK
4
0 H
Le.javaK D
'D D
?,
6
D
F
6
'
3 '
"
0 H
E
=
$H
int
float
double
String
-
Le.umInt()
Le.umFloat()
Le.umDouble()
Le.umaString()
'
#E
: 0
/+ `;
)
K
K
W
"
0
W
0
H 0
E+ W
'
"
String' [
2 ) ,
'
String
)
'-
KD
) 6D
tring
F
) )
)
String
) String :String
String
(,
:;
char charAt(int index)
int compareTo(String anotherString)
String toUpperCase()
int lenght()
E
index
) )
&
0
*
,
String
2 ) '
E
String frase = Hoje quinta feira;
2
int tamanho = frase.lenght();
H R#>
String palavra = frase.substring(0,4);
) RL] F M
String novaPalavra = frase.toLowerCase(0,4);
)
) RLH F M
char c = palavra.charAt(2);
RgFc
boolean b = novaPalavra.equals(Hoje)N
R0
int indice = frase.indexOf(qui);
R9
String outraPalavra = frase.substring(indice,indice+7);
) RLD
M
String outra = outraPalavra.trim();
RLD
M
"
>
' #E I
a + b + c + d + e
a / (b + c) - d % e
a + b * c - d / e
a / (b * (c + (d - e)))
' E
"
"
0D
' /E
)
2 ) D
)
D
4
< R !.#
@
4
$
H E
3
$
) ")
)
!.#
'-
!K .K #K
B#
W R#
'
' E
)
23 + 34 < 123
89.1 * 100 > 200
78 / 2 == 50
67.23 * 200 <= 500
4) '
"
(,
H
4 '= 0D
3
,
& K
- E
( E
2 H
E
)
K-
K(
# '
# '
.
##'//////
,
gh c
;1
;1
;1
A
"
)
K 0
K 0
)
)
'
'
'
' 9E
"
3
$
D
' .E
' >E
)
/K#W
)
)4
?
)4
'1
'
'# E
)
'
'!/+' -
D
H
'
'
:a
EaT
; 3
3 Ta
Math.sin(value)
)
0
)
'
"
'
Math.cos(value)' <
F H '
0
E
'
' +E
)
&
,
EaT
,
6
) ") '
3 Ta
EaT
) ")
& ) ")
;N
'! /+
' ##E
3
)
H
)
Math.sin Math.cos' @
Math.PI
D
" H
)
"
,
)
Pi'
"
!#
5-
Instrues de Controlo
-, D K
H
H
A
D
06
;K
'
, 3
6
A
A
"
$
) 6
) ,
'
)
2
:
0
' @ D
'<
F K
6 '
D
' @
3
D
)
3
"
0 3
?
D
*
)
:0 3
)
0
, 3
;'
5.1 - Seleco
-
A
6
D
'
A
-
)"
F ) 0
'
3
3
'$
'
E-
2 )
0
A
A
A
3
9
( E
3
E$
) 0
, K
"
) '
if/else
switch - case
A
&
'
0 3
'''
9' 5 3
$
)
A
?
'$
" K
2 ) K
'
, 3
'
ifK
3 ,
if
.'
expresso
instruo
if
"
B if
if (<expresso-lgica>)
<instruo>;
'
if (condio) {
instrues;
}
"
public class TesteIdade
{
public static void main(String args[])
{
int idade = 14;
// Verificar se um individuo tem
// idade para guiar
if (idade < 16)
System.out.println(Muito novo para guiar);
}
}
$
// Programa que gera um nmero aleatrio e reporta se
// o nmero gerado ou no negativo
import java.util.Random;
public class NumNeg
{
public static void main(String args[])
"
!/
{
Random random = new Random();
int n = random.nextInt();
System.out.println(n = + n);
if (n < 0)
System.out.println(*** n < 0! ***);
System.out.println(Adeus.);
}
f
) 6
'[
D
D
E
KD
) 0
"
) KD
'''
)
E
F
0 3
>' 5 3
*
KH F
'''
F 0
K
0 )
A % '@
K, 3
-'
3 2 ) K
0
)
K, 3
3
'
if
expresso
instruo
else
/ '
instruo
if-else
"
"
( C D
'
if (<expresso-lgica>)
<instruo>;
else
<instruo>;
"
public class TesteNota
{
public static void main(String args[])
{
int Nota = 14;
// Resultado da avaliao
if (nota < 10)
System.out.println(Nota negativa);
else
System.out.println(Nota positiva);
}
}
$
// Programa que gera dois nmeros aleatrios
// e reporta qual deles o menor.
import java.util.Random;
public class Menor
{
public static void main(String args[])
{
Random random = new Random();
int m = random.nextInt();
System.out.println("m = " + m);
int n = random.nextInt();
System.out.println("n = " + n);
if (m < n) // o que acontece se m=n?
System.out.println(O menor numero e " + m);
"
!!
else
System.out.println("O menor numero e " + n);
}
}
-
if
H F )"
'
%
// Determinar a ordem de grandeza
// dos trs nmeros (a, b, c) usando ifs encadeados.
U U
U U
: U ;O
: U ;O
: U ;O
U U
U U
U U
: U ;O
: U ;O
U U
// cdigo:
if (a < b)
if (b < c)
System.out.println("a < b < c");
else
if (a < c)
System.out.println("a < c < b");
else
System.out.println("c < a < b");
else
if (a < c)
System.out.println("b < a < c");
else
if (b < c)
System.out.println("b < c < a");
else
System.out.println("c < b < a");
"
!+
E
// Determinar a ordem da grandeza
// dos trs nmeros (a, b, c) usando ifs paralelos.
//
if
if
if
if
if
if
U O
U O
U U
U O
U O
U U
U O
U O
U U
U O
U O
U U
U O
U O
U U
U O
U O
U U
cdigo:
(a < b &&
(a < c &&
(b < a &&
(b < c &&
(c < a &&
(c < b &&
b
c
a
c
a
b
<
<
<
<
<
<
c)
b)
c)
a)
b)
a)
System.out.println("a
System.out.println("a
System.out.println("b
System.out.println("b
System.out.println("c
System.out.println("c
ifs
K
0
<
<
<
<
<
<
c");
b");
c");
a");
b");
a");
'
40
K
<
<
<
<
<
<
) 0
b
c
a
c
a
b
) elseK H"
K
F K
0 6 '] "
4)
else
D
A
'
F
if ( numeroAluno > 1200)
if (numeroAluno < 2000)
System.out.println("O aluno tem um numero entre 1201 e 1999");
else
System.out.println("O aluno tem um numero inferior ou igual a
1200");
,
if
elseA
0
"
?
numeroAluno > 1200''''
(
?
numeroAluno < 2000'
else
else
)
)
"
!9
<
2 )
F
8
'@
2 ) K
<
,
'
ifBelse
D
if
else'
F K
K
else
K
else a
if D
ifK
'
D
0 6
)
D
K 6
;K 0 6
if
D
A
"
)
4 :
numeroAluno > 1200
F
true'
'
H ) ifs
elsesK
"
'
G
//
//
//
//
//
import Le;
public class Pontos
{
public static void main(String args[])
{
int pontos = Le.umInt();
/* Sem as {} sabemos a que if pertence o
else? E esse o resultado desejado? */
if (pontos >= 70)
if (pontos > 95)
System.out.println(" Trabalho excelente!");
else
System.out.println(" Deve melhorar ");
}
}
) 0
- "D
D
else
pontos > 95P
"
D
D
,
8
K
4
'
if
"D
?3
2 )
K
3
else
if
H"
'
'
"
!.
A
0
<
?
) 0 "
), '
) D
) D
D
0 3
2 )
4)
)
0
0
0
),
6'
5$- G 5
H ;E
=#
/#' 5 3
$
)
)
)
3
'
3
H"
"
D
)# ) '
0
)
H
)
H"
2 ) K
switch ,
:
3
)
)#''' ) K
H
H
)
A
H K
A
A
A
3
H
0 3
;'
D
,
;
K 3
H
3
'
0
)"
D
)
)
4)
) ")
F
switch' 3
A
3
"
)
'
!>
"
!
switch
(expresso)
case
constante
/ '
brea
k
instruo
defaul
t
switch-case
"
C switch/case
switch (<expresso>)
{
case <valor 1>:
<instruo 1>;
break;
?3
A
H
switch
A
break
3
'
break 0 6
) :
0 3
default
3
' ] "K
H"
D
,
'- 3
K
;'
&
A
" '
)
cases
default
K
default
'
?
F
'
K,
"
"
@ break
defaultK
:
D
;K
&
" '(
'
"
import Le;
public class Pontos
{
public static void main(String args[])
{
int pontos;
System.out.print (Digite um inteiro entre 1 e 100:> );
pontos = Le.umInt();
switch (pontos/10)
{
case 10:
case 9:
System.out.println("A - Excelente!");
break; // por exemplo, se o break nao estivesse aqui
// e pontos/10 = 9, o bloco seguinte (do case 8)
// era executado na mesma, conduzindo a um erro!
case 8:
System.out.println(B - Bom trabalho!");
break;
case 7:
System.out.println("C - Pode fazer melhor!");
break;
case 6:
System.out.println("D - Falamos depois da aula.");
break;
default:
System.out.println("F Vai trabalhar!");
}
}
}
$
import Le;
public class TestaCaracter
{
public static void main(String args[])
{
char ch = Le.umChar();
switch (ch)
{
case 0: case 1: case 2: case 3: case 4:
case 5: case 6: case 7: case 8: case 9:
return (ch 0);
case a: case b: case c: case d: case e:
case f:
return (ch a) + 10;
case A: case B: case C: case D: case E:
case F:
"
+#
Switch
@ if ,
@ switch 0 6
A
C 6
if D
o @
o I
o H ,
C 6
switch D
o
3
3
)
D
)
3
)
)
F
x>1K
")
5.2 - Repetio
[0
0 &
H"
? 3
D
&
,
0 D
)
3
)
) K,
0 K
) 6 K
)
K
) 6
?
4)
?
A
A
K
'
D
)
,
'
'<
"
'
D &
'[
I
+
$
C
D
A
D
) 6
0 K
3
3
F K
K
;'
K 6
"0
6 "
'
0
D
'
'
A
D
F")
3
D
,
? K
K
A
'
2 ) :
,
K
") H )
4) ;K H" &
while
do-while
for
"
'
D
:true;K
0 3
K
3
,D
'
5
O
=
while
//' 5 3
"
!
)
while
/ '
;
expresso-lgica
instruo
while
"
while
'
H =
"
+/
- ?
"
- )
false;'
@
'
K H"
0 6 E
)
'
D
) 0
"
)
0
0
)
,K
"
0
0 6
:true
A
0 )
K
'
H )
D
H
D
D
'
'
)
A
'
"
public class CicloWhile
{
public static void main(String args[])
{
int a=30, b=15, i=3;
while (i>0)
{
a-=10;
b-=5;
i--;
System.out.println(A + a + B + b);
}
}
} // qual o resultado produzido?
$
/* Programa que gera um nmero entre 1 e 100 verifica se o nmero
primo (primo um nmero maior que 2 e que divisvel somente por si
prprio e por 1) */
import java.util.Random;
public class NumeroPrimo {
public static void main(String[] args) {
int d = 2;
Random random = new Random();
int x = random.nextInt(100)+1;
boolean primo = (x > 1);
while (primo && d <= x)
primo = (x % d++ != 0);
if (primo)
System.out.println(x + " e primo.");
else
System.out.println(x + " no primo.");
}
}
"
%
public class CicloInfinito
{
public static void main(String args[])
{
int a=0, i=0;
do
{
++a;
++i;
System.out.println(A + a);
}
while (i > 0);
}
} // Este um exemplo a no seguir!
D
)
:while;K
)
3
3
0
)
while
0 3
D
"
D
D
'
'
0 6
K
while
while
:
0 K
do-while
( ? '
)
'
F K H" D
0
do-while
)
0
D
'
_H
H
( ?
0 0
'
) 6' @ do-
=
O
5
5
/!' 5 3
do-while
"
+!
do
instruo
while
expresso-lgica
5
/+'
do-while
"
do-while
do-while
'
"
public class CicloDoWhile
{
public static void main(String args[])
{
int a=0, i=0;
do
{
++a;
++i;
System.out.println(A + a);
}
while (i<3);
}
} // qual o resultado produzido?
$
// Programa que gera um nmero entre 1 e 100
// e verifica se o nmero primo.
import java.util.Random;
public class Primo
{
"
++
while
o
o
o
o
o
o
o
$
o
o
0 )
3
-
A
)
)
0
3
do-whileE
3
A
-)
3
0 )
E
do-while 3
while 3
K
A
6
) 6
) 6
D
- 3
"
0
:
"K
K
) 6
F K
K
;'
)
) ")
'
for
expresso
expresso
lgica
expresso
instruo
/9'
for
"
"
+9
for
6
3
,
$
,
D
D
D
6
, 0
)
)
'
) ")
) ")
U) $
'
for
'
for(expresso1;expresso2;expresso3){
instrues
}
@
0
,
E
#'
expresso1'
' -)
expresso2'
o
,)
E
3
3
expresso1
o
0 3
,0
expresso3
) ")
for
;E
/.' 5 3
3 /
3 #
for
"
+.
<
K ?,
forK
H
3
<
) ")
"
K
0
H
H
:
),
6
)
3 '
K
K
K
for'
8
forK
K
"
)
A
H
) 6
D
'
0
H ;'
B?
'
"
public class CicloFor
{
public static void main(String args[])
{
int a=0, b=0;
for (int i=0; i<3; i++)
{
a+=10;
b+=5;
System.out.println(A + a + B + b);
}
}
}
$
// Programa que gera aleatoriamente um nmero entre 1 e 100
// e verifica se o nmero primo.
import java.util.Random;
public class Primo
{
public static void main(String[] args)
{
Random random = new Random();
int n = random.nextInt(100)+1;
for (int d = 2; d < n; d++)
if (n%d == 0) {
System.out.println(n + " no primo.");
return;
}
System.out.println(n + " primo.");
}
}
"
+>
/ 3
expresso2K 2 )
0
'
expresso1
expresso3
'
, trueK
D
6
) ")
'
A
'
A
F K
'
-
"
'
H '
<
H")
K
while
- ?
)
C
'
3
F K
6 ")
do-whileI
04
'
&
'
for
) ED
O
forK
2 ) K for , 0 3 4)
,
K
H
D
0
A
D
4)
A
?
3
A
A
K
H
, ,
'
F
'<
04
'
"
do-while
K
while'
A
K )
K
) 6' - " K ,
'
do-while
,
D
,
$ H
-
#'
'
3
+CJ
#'
'
/'
I
<
I
D
8
H
D
0O
A
A
6
'=
?
OI
0
)
O
D
OI
'
OI
0
O
HO
6
H
0D
0
_
O
D
O2
4)
A
'
O
# ' [
##' @ D
0
0D
O2
'
0
A
OI
H D
++ C '
' #E
6
4)
@ D
@ D
I
O
A
_ HO I
0
6
A
K
>
!'
+'
9'
.'
>'
D
'
'
3
D
) ")
'
if (LIMIT+num3 <= 150)
{
"
9#
System.out.println ("ma");
System.out.println ("laranja");
}
else
System.out.println ("pera");
*
!
if (num1 < MAX)
if (LIMIT >= num2)
System.out.println ("ma");
System.out.println ("laranja");
*
if (LIMIT%num1 + 4 == num1 + (MAX-num2))
{
System.out.println ("ma");
System.out.println ("laranja");
}
else
{
System.out.println ("pera");
System.out.println ("banana");
}
*
;
if (num2 > 18)
if (num1 < 0)
System.out.println ("ma");
else
System.out.println ("laranja");
System.out.println ("pera");
K
if (num3 >= MAX)
{
if (MAX/num2 == 1)
System.out.println
System.out.println
if (LIMIT-num3 > num1+2)
System.out.println
else
{
System.out.println
System.out.println
}
}
else
if (num2*2 == MAX*2)
System.out.println
("ma");
("laranja");
("pera");
("banana");
("kiwi");
("uva");
L
if (LIMIT >= 4*num2)
if (MAX == 25)
System.out.println ("ma");
else
System.out.println ("laranja");
else
System.out.println ("pera");'
"
' E
*
L]
PM
L<
,6
) ")
) 4)
) MK L<
)
0
@
#'
'
) MK
'
) ")
!
L
M
3
'
MK L<
L 0
' /E <
) ")
float
)
) #
8
0
3
H
4
3
'
'
'E
"
'
for (int count1=1; count1 <= 5; count1++)
{
for (int count2=1; count2 <= 5; count2++)
System.out.print (count1*count2 + " ");
System.out.println();
}
!
while (num > MIN)
{
System.out.println (num);
num = num - 1;
}
*
while (num < MAX)
{
if (num%2 == 0)
System.out.println (num);
num++;
}
"
9/
;
for (int value=7; value < 0; value--)
System.out.println (value);
K
do
{
num = num + 1;
if (num*2 > MAX+num)
System.out.println (num);
}
while (num <= MAX);
L
for (int value=num; value <= MAX; value++)
if (value%4 != 0)
System.out.println(value);
' E
*
= 0
*
= 0
_H '
) K
_H '
'
# '
!
/
' !E I
, /'
D )
if (condio1)
if (condio2)
instruo
If (condio1)
Instruo1
else if (condio2)
instruo1
If (condio1 || condio2)
instruo
' +E 1
' 9E 1
' .E 1
&
' >E
'# E
' ##E
'
4
'
'
6
&
'
'
6
'
"
3
!'
3
'# E5
KD
' #/E
0
K
2 ) KD
, ) 4)
6
, ) 4)
'
3
'# E
2 )
' #!E
2 ) D
' #+E
) '
' #9E
) 0
, ) 4)
K /K !K +K # K #!
?3
KD
) )
K CalcIRS D
/ '
'
,
E
Ordenado
<100.000
>= 100 000 e
> 300 000
Taxa
5%
15%
25%
Tabela 2
3
' #.E @
' #>E
'
E$
K 0
)
8
)
D
)
?
&
'K
D
H D
K
:TK K SKB;'
&
'
KD
K ?
' /E 5
'
& )
) '
H
,
3
D
"
D
3
KD
' #E
0D
'
! )
"
3
D
'
"
6
,6
# D
"
'@
46
D &
D &
'
)
?
2 ) KD
F
6
'@ F
) '
E@
'-D
0
K F
,
'
"
9!
' !E $
'
' +E 5
KD
' 9E $
' .E
' >E
) K
) K
,
KD
'
'
L0 MK
D )
'
E
while (i<100)
System.out.println(i,ao quadrado igual a ,Math.sqr(i));
3
'/ E
'*
? '
D
D
' /#E
?
,
2 ) KD
n
i2 =
i =1
)
3
'/ E@
) 0D
,
) 4)
n ( n + 1 ) ( 2n + 1)
6
K
)
0?
#
D
?
D
# '
E
' //E @
D
0
E
'<
"
9+
System.ou.println(\tcount= + count);
}
}
}
3
'/ E@
' /!E
' /+E C
2 ) KD
)
#
D
@
3
' /9E
,
: ?
'
# # '
K5
K1
D
D
'-
H D
';
)
8
'
'
#'! V
'9!V
'!!V
'.!V
%
*
'
*
<
,
*
4)
0 6
'!V'
'
)
3
0
!V &
' /.E C
W '
&
K
'
4
0
D
K
"
)
#
&
0D
>> )' -
2 )
(
^ #
&
) ")
&
E
&
U#
# UR
U!
"
99
! UR
U
UR
U#
XR #
-
3
3
' />E
K
D
)
6
) '
2 ) D
0c
'
D
) 0D
D E
E(
E( 4
E 0
E%
E(
%
!>
# #/
# #9
#.
3
^
^ /
(
'
) ,
K
4
0
D
'
H"
2 )
#'
'@
0
)
F
) "
D
D
3
K
:
3
" K
;' $
' ) "
'
"
9.
6-
Sub-Programas
K
'(
) 6 K
D
)
0
')
K
'
&
C
$
D
H
4)
40
:
3 '
K
,
0
&
"
:' ' D
0 60
;K
F
)
'
0
6
;K
) "
'=
K &
F K
MK
3
3
) 6
)
0
L )
) #B3
4
0
H
'
A
0
) 6
3
E
$
"
'
0 '
?
'
) #B3
,
0
D
&
'=
&
H ,
' [
D
0 H
:;K
'%
D
:, D
;'
"
resultado = Math.pow(2,4);
powK 3
3
)
:Z ; ;K D
H
)
&
8
?
"0
:3 ;
Math
Z' <
#+' [
2 ) '
"
)
D
) ")
'
numero = Math.random();
<
D
H
?
A '
"
K
K
) 0
( H'
H
"
"
9>
'
) #B3
H E
:D
) 6 ;
"
)
)
:D
)
'
) ")
;K
) '
'
'
&
)
"
D
KD
) '
,D
%
public class Programa
{
public static void main(String[] args)
{
System.out.println("1 instruo executada pelo main");
imprimeMensagem() // chamada do sub-programa imprimeMensagem
System.out.println(3 instruo executada pelo main");
}
// imprimeMensagem : sub-programa que escreve a mensagem
// Ol Mundo! no cran
public static void imprimeMensagem()
Cabealho do sub-programa
{
System.out.println("Ol Mundo!");
Instrues a executar
}
}
C
3
$
"
F K
;'
2 )
@
D
0
0 6
'] " ,
'
6.1 - Procedimentos
C
,
D
0
A
D
0 H K
D
F
0 '
K
3
A
0 H
"
' 3
,
0
0 '@
'[
0 ,
?
B
K
" '
"
C
:
)
;' @
K D
(
2 ) ,
3
)
/
void
,
,
3
'
6.2 - Funes
C
&
3
[
-0
, voidK
,
'
"
;'
return'
2
3
0 3
) )
'
return <expresso>;
@ )
, )
,
: ,
<expresso>)K
3
;'
'
void;K
3
return
: ? ) 0
3 4
:
K
"
public class ExemploFuncao
{
public static void main(String[] args)
{
double varA;
varA = 10.5;
System.out.println(2 instruo executada pelo mtodo main");
System.out.println(varA);
varA = funcao(); // invocacao do mtodo funcao
System.out.println(varA);
System.out.println("5 instruo executada pelo mtodo main");
}
// funcao: soma 2 numeros aleatorios e retorna o resultado da soma
static double funcao()
{
double valor1, valor2, resultado;
valor1 = Math.random();
valor2 = Math.random();
resultado = valor1 + valor2;
return resultado;
}
}
"
.#
<
K
KD
H
)
K
:
),
,
)
M;'
6.3 - Parmetros
2" 0
D
:
) K
-
K
D
) 6 K
0
P5
H K
' ;'
'
0 K
'''
6 H
1
;
) '''; D
3 1
0
D
0
-D
) ")
0 '
6
,
3
A
H
:
D
&
3
K
'
D
'
"
public class ProcedimentoComParametros
{
public static void main(String[] args)
{
int pcA = 10, pcB = 20;
System.out.println(2 instruo executada pelo mtodo main");
procComParams(pcA, pcB); // invocao do mtodo procComParams
System.out.println(4 instruo executada pelo mtodo main");
}
// procComParams: recebe dois inteiros e imprime no cran a sua soma
// imprime tambm a soma de duas variveis
// locais (internas) ao procedimento
public static void procComParams( int pfA, int pfB) // PROCEDIMENTO
{
int varLocalC = 11, varLocalD = 12;
"
3
K)
pfA pfB'
) 0
D
) ") pcA
)
10 pcB )
20'
K, )
,
procComParams' <
8
) ") pcA pcB'
8
K D
)
,
)
H
3
)
0 '
pcA pcB
K
)
K
) ") pfA pfBK
KD
,
0 6
System.out.println (pfA+pfB);
30K
'
<
,
D
@
$
public class FuncaoComParams
{
public static void main(String[] args)
{
int pcA = 1, pcB = 20, varC = 30;
System.out.println(2 instruo executada pelo mtodo main");
System.out.println(varC);
varC = funComParams(pcA, pcB); // invocao do mtodo funComParams
System.out.println(varC);
System.out.println(6 instruo executada pelo mtodo main");
}
public static int funComParams(int pfA, int pfB) // FUNO
{
return (pfA+pfB);
}
}
3
,
H
pfA pfB' @
) ") varC
0
3
K 3
0
D
pcA pcBK
0
:
F K
)
8
8
pfA
pfB
;'
H"
D
) K
F
)
]"
3
0
8
,
8
2 ) ';' -
'
8
H )
K
D
0
8
,
int
D
D
&
"
'
8
'@
charK ,
D
4)
F K
,
H
"
./
char
0
int
&
'@
&
'
'
3
?
)
?
0
/ ( K
"M
)
0 &
8
8
0 &
)
'
K
8
D
' 1
D &
'
,
'
}
public static void procComParams(int pfA, int pfB) // PROCEDIMENTO
{
// pfA recebe uma cpia do valor de pcA
// pfB recebe uma cpia do valor de pcB
pfA = pfA + 2; // mudamos o valor de pfA
pfB = pfB * 3; // mudamos o valor de pfB
// imprimimos os dois valores
System.out.println (pfA = + pfA);
System.out.println (pfB = + pfB);
}
}
= F
'''
"
pfA
pcB
pfB
// Invocao de procComParams!
pcA
pfA
pcB
pfB
/>'
8
2 ) D
)
0 &
F
6
)
F
D
;
;' - ) ")
6
'
8
0 &
) ") K
'
D
F
&
?
)
0 &
$M
) ") D
K
D
0 &
'
K
06
H
)&
'
K) F
E
1
"
.!
// zona de memria.
//
//
//
//
//
//
s.delete(0, s.length());
s.append(Isto FOI um teste passagem por referncia!);
}
}
)
) 0
AAAAAA
Logo,
quando
s muda
s uma
referncia
de
valor,
exemplo
para o objecto
tambm
sofre
apontado
poras
consequncias!
// Invocao de procComParams!
exemplo
s
Isto FOI
Teste
um
teste
passagem
passagem
por
por
referncia
referncia
AAAAAA
5
exemplo
AAAA
AAAAAA
'
AAAAAE
0 &
0
K
)
2 )
6 )
D
K
2 ) K
H
main D
'
3
2 ) ;E
) ")
,D
K
D
O;
,
F
'C
'
o
o
, E
A
C
) ")
'
)
;
D
:)
4
) ' :-
&
,
F
"
"
5$- G 5
N
main()N
"
.+
@
o
o
o
@
D
F
& E
) ")
'
$H
K
: ,
H
8
[
) ") ,
';N
;'
)
6 :,
D
0
) ")
,
D H F
) ")
0
0
K
(
(
) ")
) K
'
C
) ")
) 4)
D
< ,
?
0
,
,D
) ") ' =
) ") ,
0
0
D
P;'
, H
D
,
D
KD
)
H
) ")
'C
4 D
) ")
) ")
'
K
'
D
, D
D
4
D
) ")
)
K
H
D
'
)
6
K
D
) ")
'
A
04
6
,D
) 4)
,
,
D
'
) )
'
"
class VisibilidadeVariaveis
{
private int valor1;
// varivel global
public static int valor2 = 10;
public static void mudaValor2(int v2) {
// novoValor uma varivel local ao mtodo
int novoValor = v2 + valor2;
valor2 = novoValor;
} ...
public static void main(String args[]) { // Resultado = 43!
System.out.println(Valor2 antes da chamada = + valor2);
mudaValor2(33);
System.out.println(Valor2 depois da chamada = + valor2);
}
}
"
.9
,
#'
'
/'
'
!'
A
8
8
0
+CJ
#'
'
/'
0 &
>
D
D
)
@ D
8
C
) ")
3 4
'
O
0
O2
) ") D
0D
,
H
K)
,
O
H OI
@ D
I
8
2 )
,
O
0
O & 3
9'
.'
>'
) ")
I
0
I
0
< 2 ) 3
'
!'
+'
),
,
0
& 3
4)
0D
"
0
O2
'
6
D
'
O
O2
0D
& 3
'
3
3
3
++ C
'
' #E C 6
34
E
)
D
3
D
34
: ,
0
;
'
)
) ")
) ")
'<
) ")
'
K0
2 )
'
3
&
D
,D
6
: ,
0
D
' E
&
&
3
3 ,
'
' /E $
&
,K
,
'
'[
O2
0D
"
..
'
7-
Classes e Objectos
@
:
2 )
"
B
2 )
3
A
) )
)
,
2 ) ;' - - 2 )
0
"
F" 3
0
A
) )
2 )
"
'
' @ 0
E
F
'<
) 0
)
A
'
K ) 0
- 4
?) ' -
'
D
?)
' '
:
K
;
D
K
)
?)
?) K D
H ) K
ND
'
H '
'
D
?)
'
'
0
0 K
D
) 0
'
0 H
D
0
K
?)
H"
)
,
)
0 K
'
8
; KD
:
D
0
K
;'
F
'
<#8
A
0
K
8
'<
8
K
'
E
0
F
o
o
I
I
"
4
0
7.1 - Objectos
8
& E
o
o
o
0
0
'
'
: 0
;N
;G$
,
H
,
'
'
F
K
0
),
: )
"
.>
),
),
'
7.2 - Classes
0
D
)
)
"
'
F
: 0
F
0
'
: ,
'
'
0
0
:) ")
0
;
F
: ,
7.3 - Atributos
0
'
&
'
7.4 - Mtodos
0
'
)
0
-
F
,
F
C
0 6
)
;
F
F
8
&
3
&
&
'<
2 ) K
: 3E <
: 3E
@ F
;'
: 3E
,
,
4)
'
F
@ 0
K D
'
'
0
: 0
:
;K
;'
"
>
: F
'
F"
0 6
''';'
8
newK D
"
, 3
? '
6"
4 K
F
0 &
K 0
F
6
D
6
F
0
) ") D
) '
?
#;'
'
'
F K
K
D
F"
"
'
System.out.println(OLA);
)
System.outK
D
?
F K
)
)
,
)
3
println
println
8
F
System.out D
OLA
'
contaDoBanco.recebeOrdenado (500.5);
"
>#
F
;K
F K
(,
contaDoBanco :
D
)
recebeOrdenado D
)
,
recebeOrdenado
8
D
" 0
Conta'
Conta F"
3
8
)
500.5' @
500.5
F
contaDoBanco'
Conta c;
c = new Conta(1287,0);
c.obterSaldo(); /* envia a mensagem obterSaldo para o
objecto referenciado pela varivel c */
Conta b = c; /* as variveis b e c passam referenciar o
mesmo objecto */
4)
3 &
D
0 &
F
' 3
)"
) ")
6
'$
0
F
0
)&
0
'
< 3
KD
"
) ")
Conta 0 6
b = cK
6
F
D 0
new Conta(1287,0)'
)
,
K
c.obterSaldo()
0;'
06
b.recebeOrdenado(600.0)
+ V
06
c.obterSaldo() ) 0
D
"+ K
0
, )
+ '
D
) ")
@
#8
'
?
K
F
)
"
) ")
:b.obterSaldo()
'$
D &
K
b.obterSaldo()
F
Gb c
F
import java.io.*;
import java.util.Random;
public class Untitled1
{
public static void main(String[] args)
{
Random objectoDaClassRandom;
objectoDaClassRandom = new Random();
// declarao
// instanciao
=
=
=
=
objectoDaClassRandom.nextInt();
// mensagem
objectoDaClassRandom.nextInt(50);
// mensagem
objectoDaClassRandom.nextDouble();
// mensagem
objectoDaClassRandom.nextGaussian(); // mensagem
"
>
,
8
' 2" )
D
D
&
D
8
'
=
)
, D
0 &
K
/ ( K
8
H
8
@
0
F
8
) : K H K
,
D
F K
)
o
o
,
'
D
= ")
?
I
,
,
F
;'
)
F
o
o
: ,
'
A
@ F
@
P:
0
E
K
F
P
@ F
0 &
;
,
8
?
@ F
:
"
K H K''';
?
)
F K
@ F
@ F
6
,
)
8
8
)
, (
,
0 &
'
O
@
G
"
>/
'
P
// Exemplo de um programa que demonstra a passagem por valor
public class PassagemPorValor
{
public static void main(String[] args)
{
int pcA = 10, pcB = 20;
System.out.println(pcA= + pcA + pcB= pcB);
metPassagemValor(pcA,pcB);//invocacao do mtodo metPassagemValor
System.out.println (pcA= + pcA + pcB= pcB);
}
static void metPassagemValor(int pfA, int pfB)
{
pfA = 111;
pfB = 222;
System.out.println(Como o que est a passar para dentro do");
System.out.println(mtodo so os valores 10 e 20 e no);
System.out.println(Os endereos de memria das variveis pcA e);
System.out.println (pcB, os seus valores no so alterados);
}
}
Q
// Exemplo que demonstra o funcionamento
// das referncias para objectos quando passados
// como parmetros a mtodos
class Referencia {
// redefine: recebe uma referncia para uma conta bancria
// cria uma nova conta, credita a primeira e depois
// credita a nova conta acabada de criar
void redefine (Conta a) {
Conta b = new Conta(567-8,55);
a.creditar(100);
a = b;
a.creditar(100);
}
public static void main(String args[]){
Referencia r;
r = new Referencia();
Conta c = new Conta(123-4,12);
r.redefine(c);
System.out.println(c.getSaldo());
}
}
// no altera o valor de c
// altera o estado do objecto referenciado por c
"
>
7.8 - Construtores
C
F
F
@
@
,
)
6
F
) ,
6
8
'
K
'
F K
'
#8
H
;'
D
public
'
R
public class Conta {
private double saldo;
public Conta() { // Construtor sem parmetros
saldo = 0.0; // quando um objecto do tipo conta criado
// com este construtor, fica com saldo 0
}
public Conta(double saldoInicial) { // Construtor com parmetros
saldo = saldoInicial; // quando um objecto do tipo Conta
// criado com este contrutor
// fica com um saldo cujo
// valor inicial dado pela varivel
// dada como argumento (saldoInicial)
}
Conta(String numeroConta, double saldoInicial)
{ // mais um exemplo de um construtor com parmetros
// numeroConta e saldoInicial so os parmetros formais...
numero = numeroConta;
saldo = saldoInicial;
}
}
0
3
H
K D )
"D
<nome da classe>(){}
0
false
null
null
,
0
)
KD
E
:short, byte, int, long, double,float, char;
boolean
0 &
0 &
'
"
>!
":
class Funcionario{
String nome, codigo; // Atributos
float salario;
Funcionario(String nomef,String ident,float sal){ // Construtor
nome=nomef;
codigo=ident;
salario=sal;
}
...
}
class admissao{
public static void main(String args[]){
Funcionario func = new Funcionario(Pedro,15080,150);
...
} // cria uma referncia chamada func para um Funcionrio que
// construdo com o valor inicial Pedro para o nome,
// 15080 para o cdigo e 150 para o salrio
}
""
// Exemplo que demonstra a utilizao de um construtor implcito
// ou default
class Funcionario{
// atributos
String nome, codigo;
float salario;
// admite: atribui novos valores aos atributos de um Funcionario
void admite(String nomef,String ident,float sal){
nome=nomef;
codigo=ident;
salario=sal;
}...
} // note-se que a classe Funcionrio no tem construtor!
class admissao{
public static void main(String args[]){
Funcionario ze = new Funcionario(); //chamada ao construtor
//default!
ze.admite(Z,15090,150); // invocao do mtodo admite
...
}
}
"
>+
F
K
0
0
0
0
,
)
K
K,
: " K,
;'
0 6
F
0 6
"
)
3
D
'-
E
:) ")
:) ")
;
;
:D
"
; M
"
>9
"$
// Definir uma Classe
public class A_MinhaClasse ()
{
// Atributo
double contaNoBanco;
// Mtodo
private static recebeOrdenado (double ordenado)
{
// Instruo
contaNoBanco = contaNoBanco + ordenado;
}
}
...
// Criar um objecto a partir da classe definida, ou seja,
// Instanciar a classe
A_MinhaClasse contaDoBanco = new A_MinhaClasse();
) ")
0 ;'
= ")
2 )
valor_cambio_dolar;'
0
K
6 :
) ")
,
"
"
3
H
,
,
8
0
"
E
H
3
D
"
)
)
static : 3
"
'@
D
F
,
D
D
E static double
"
Math;'
) ")
'
"%
"
>.
) ")
K
"
K
K0
'@
) ") '
4
F
40
'
F
'
)
L
this
M
this ,
,
'
6
0 &
D
D
K
F
,
'C
'
K
'
F
"E
class Funcionario{
String nome, codigo;
float salario;
Funcionario(String nome,String codigo,float salario)
{
this.nome=nome;
// Acesso aos atributos
this.codigo=codigo;
this.salario=salario;
} // neste caso o operador this ajuda ainda a resolver
// ambiguidades. Caso contrrio como saberamos de que nome
// codigo ou salario se estava a falar?
// nome=nome no tem significado!
// qual deles o atributo da classe funcionrio e qual o
// que foi passado como parmetro?
}
"
>>
,
$ H
+'
9'
3
)
D
E
F
+CJ
"
>
# '
##' C
F
F
'
O
# ' <
#/' I
3
# ' [
0
#!'
#+'
#9'
#.'
#>'
'
O &
D
0 &
?
0
)
0
D
I
@ D
I
C
O
6
0
F
& 3
' =
F
O
K
0
'
O
D
O
H
++ C
3
K ,
D
'
4)
O
8
'
) ")
F 0D
#' $
'
6
2 0D '
/' (,
"
' @ D ,
D
3
D
A
O
8
'(
'
6 ) ")
) ")
B
O2
0D
& 3
'
O
"
O2
0D
'
H O
&
"
,K D
"
'
' #E
) ")
3 ,
E L@ D
*
H
0 3
"
'
'
*
)
*
2 )
"
'
,
0 6
'
!
0D
) ")
*
0D
*
H"
) ")
"
,
3
' EC
'
Z'
*
)
2 )
'
*
<
,
#'
'
*
8
8
'
"
"
"
'
!
0D
) ")
'
*
0D
*
H"
'
;
,
) ")
' /E - 0
"
C pn =
)
D
6
'@
$
) 0 6
8
0
'
n!
p !(n p )!
)
H ,
3 E
' E
"
# #
# SS
SS
/ SS
SS
' !E <
3
8
8
' +E $
D
/
/
/
3
) ")
D
: D
8
#'
'
/'
'
K ?
;'
/
)
K0
,
'
'
8
8
8
C
H
"
) ")
D "
?
8
/
D
'
'
0
) 0
'
"
'
E
#'
'
/'
"
F
8
,
'
0 6
'
"
8-
Recursividade
8.1 - Definies
0
) :
3 4 ;'
) :
4 ;' I
K) F
"
C
<
'
)
0
;
,
#PR#'
) K PR S: #;P
3
?
"
:
3
;SkS#
? K
) K
"
'
) : 0
#PR#
P R S: #;P
)
P R S: #;S:
= 0
<
<
"
"
"
) ")
"
)
8
'
),
) '
+
"
# /
}
}
/*
Output:
f(0)
f(1)
f(2)
f(3)
f(4)
f(5)
f(6)
f(7)
f(8)
*/
=
=
=
=
=
=
=
=
=
1
1
2
6
24
120
720
5040
40320
=
=
=
=
=
=
=
=
=
1
1
2
6
24
120
720
5040
40320
"
= F
"
0:/; R / S 0: ; R +
j
S 0:#; R
j
#S#R#
0
6 K
<
<
E
)
"
)
3
"
'
'
'# 5
'
0
)
) D
0
3 '/
)
T: T#;B: T/;
3
'
'!
'+ 5
A '
3
-
) D
'
&
) D
0
o: K E
) D
'9 5
0
: #K ; R # K
R
: #K ; R
: K #
'.
) D
)
,
) D
:3 ; R # 3 T 3 3 + T '''' P P +P
)
o
;E
op'
)
) D
;K
),
E
PR
3 E
inicio
se (n=m) ou (m=0)
entao
X = 1
senao
X = X(n-1,m) + X(n-1,m-1)
fim
I
)
o:!K/; O
I
H
0
)
"
# !
9-
Tabelas
9.1 - Motivao
C
)"
)
K
3
= ")
#' -
= ") /
<
4 '
)
) 6:0 ' ;'
) ") K 0 6
= ") #
6
:0 ' #;'
)"
'
=
=
=
=
'''
' (
)"
"
# +
D
"
"
LD
)"
)
6
' @
:0 ' /;'
= ") #
= ")
= ") /
4
= ")
= ") !
'''
'''
=
= ")
/' 1
-
)"
0 '/
:0 ' ;'
KD
6
D
) ")
'-
=
=
/
4
= ")
=
=
'''
=
' -
)"
'
"
# 9
0
:#; U
: ; U
'5
2 ) E
X U) ") X q r
X q r U) ") X
0
:#;
: ;
qrN
N
qr
) ")
?)
'
'
) KD
'
)
3
K
'
'
) 6
F )
H 03 '
F K
)
3
D
'
'
6
#;
& K
E
int [] tab; // declara uma referncia para uma tabela de inteiros
com qualquer dimenso, iniciada com null
E
tab = new int[5] ; //criao de uma tabela com capacidade para 5
inteiros
"
# .
q r
C
@ 4
N,
q#r
q r
q/r
q r
new
F K
F ) ,
3
0
3
0 N-1' $
H 1K
'
?
length : 3 E tab.length;'
)
,
:
'
'
q r
q/r
q#r
/;
#/
q9r
k''
q r
E
tab[1] = 12; // o elemento com o ndice 1 da tabela
// passa a armazenar o valor 123
q r
q/r
q#r
k''
#/
q9r
q r
"
# >
#
&
0
( )
valor = 10.6;
valor = Le.umDouble ( );
System.out.println(valor);
x = valor / 2;
if (valor > 5.0);
Testa(valor);
#
) *
'
3
#
tab[3] = 10.6;
tab[3] = Le.umDouble ( );
System.out.println(tab[3]);
x = tab[3] / 2;
if (tab[3] > 5.0);
Testa(tab[3]);
#
"
<
3
#. )
)
)
#.
E
'
KD
D
$
)
0
, length-1
$
@
F
6
6
)
"3
)
)
:0 ' !;'
"
##
import Le;
public class MaxTotal{
public static void main(String[] args)
{
int n1[] = new int[5];
int soma=0;
int max=0;
//Ler array
for(int i=0;i<5; i++) {
n1[i]=Le.umInt();
System.out.println(Introduza um valor: );
}
//Mostrar array
for(int i=0;i<5; i++)
System.out.println("i["+i+"]="+n1[i]);
//Calcular mximo, total
for(int i=0;i<5; i++){
soma+=n1[i];
if (max<n1[i])
max=n1[i];
}
//Mostrar resultados
System.out.println("Total:"+soma);
System.out.println("Media:"+(float)soma/n1.length);
System.out.println("Maximo:"+max);
//Nota: na media necessrio fazer uma divisao
//de floats.
!
"
!
#
!
#
$
5
!' $
'
"
###
#' ' K
K
'$
Java.lang.ArrayIndexOutOfBoundsException:19
At Teste.main(Test.java)
8
0 &
K D
, ,
'
[
4)
4)
'@ D
,
8
;,
'
0
0
'
"
##
/*
O output do cdigo atrs apresentado, luz dos conceitos introduzidos
:
12
10
13
11
O valor recebido 11.
13
11
*/
)
6K
F ,
'
, 0
2 ) K
,
,
0 &
'
D
'
!
<tipo> [ ] [ ] <varivel>
int [ ] [ ] tab;
@
K
0 &
'
,D
) E
q r
q#r
q rq r
q#rq r
"
##/
for
'
@ 2 ) ,
0
'@
D
) '
6/
'
D
'
D
F
,
6
0 &
null'
"
##
#
<
)
3
,
,
0 &
String'
#
@
<#8
K
class Pessoa
{
String nome;
int idade;
String BI;
public Pessoa (String pfN, String pfC, int pfI)
{
nome = pfN;
BI = pfC;
idade = pfI;
}
public void apresentar()
{
System.out.println(Meu nome + nome);
System.out.println(Tenho + idade + anos);
}
public String getBI()
{
return BI;
}
public String toString()
{
return (nome=+nome+com +idade+anos);
}
}
"
##!
'
?
,
0 &
KD
'
q r
q#r
q r
- ?
+'
#
<
"0
Grupo:
"
q/r
2 D
5 6
1
3
"
)
8
"3
K
'
import Le;
public static void main(String args[])
"
##+
{
//Declarao de uma tabela de inteiros com
// dimenso ainda indefinida
int tab[ ]={};
int soma=0;
int max=0;
int i=1;
//Ler 1 valor
System.out.print(Insira o 1 inteiro:> );
int n =Le.umInt();
while (n!=0)
{
//criar tabela temporria
int tabTemp[]=new int[tab.length+1];
//copiar valores
for(int j=0;j<tab.length;j++)
tabTemp[j]=tab[j];
//inserir novo valor
tabTemp[tabTemp.length-1]=n;
//colocar a tabela temporria na definitiva
tab = tabTemp;
System.out.print(Insira o + j + inteiro:> );
n = Le.umInt();
}
//Mostrar tabela
for(i=0; i<tab.length; i++)
System.out.println(tab[ + i + "]="+ tab[i]);
//Calcular o valor mximo e a soma total
for(i=0; i<tab.length; i++)
{
soma+ = tab[i];
if (max < tab[i])
max = tab[i];
}
//Mostrar resultados
System.out.println("Total:"+soma);
//Nota: na media necessrio fazer uma divisao
//de floats.
System.out.println("Media:"+(float)soma/n1.length);
System.out.println("Maximo:"+max);
"
##9
<
0?
0
'
0?
"
##.
System.out.println("Introduza o nome:");
nome= Le.umaString();
System.out.println("Introduza o telefone:");
telefone= Le.umInt();
Contacto c = new Contacto(nome,telefone);
contactos[nContactos]=c;
nContactos++;
}
public void mostrar(){
for ( int i=0; i<nContactos; i++)
System.out.println(contactos[i].mostrarContacto());
}
public void procurar(){
System.out.println("Qual o telefone:");
int telefone=Le.umInt();
int i=0;
while(i<nContactos && contactos[i].obterTelefone()!=telefone)
i++;
if (i!=nContactos)
System.out.println(contactos[i].mostrarContacto());
else
System.out.println("O nmero no se encontra na lista.");
}
public void ordenar(){
quickSort(0, nContactos-1);
}
private void quickSort( int pri, int ult)
{
int i = pri;
int j = ult;
if (pri > ult)
return;
String pivot = contactos[(pri + ult)/2].obterNome();
do
{
while (contactos[i].obterNome().compareToIgnoreCase(pivot) < 0)
i++;
while (contactos[j].obterNome().compareToIgnoreCase(pivot) > 0)
j--;
if (i <= j)
trocaContactos(i++, j--);
}
while (i <= j) ;
quickSort(pri, j);
quickSort(i, ult);
}
private void trocaContactos(int i, int j){
Contacto tmp = contactos[i];
contactos[i] = contactos[j];
contactos[j] = tmp;
}
//Mtodo Main
public static void main(String[] args)
{
ListaTelefonica listaTelefonica = new ListaTelefonica();
"
##>
int seleccao;
do
{
System.out.println("Organizer");
System.out.println("");
System.out.println("1 - Adicionar");
System.out.println("2 - Mostrar");
System.out.println("3 - Procurar");
System.out.println("4 - Ordenar");
System.out.println("5 - Sair");
System.out.println("_______________________");
System.out.println("Qual a sua escolha?");
seleccao = Le.umInt();
switch(seleccao){
case 1:
listaTelefonica.adicionar();
break;
case 2:
listaTelefonica.mostrar();
break;
case 3:
listaTelefonica.procurar();
break;
case 4:
listaTelefonica.ordenar();
break;
case 5:
System.out.println("Adeus.");
break;
default:
System.out.println("Opo errada. Tente de Novo.");
break;
}
}
while(seleccao != 5);
}
}
9.6.1 - Introduo
Vector 0 6
)
Vector , D
H 03 '
6
F
0
Vector
F
)
package java.util
0 &
),
0
4
'-
&
K
0
H K
)
D
ObjectK
0 &
'C
D
'
"
Vector ( )
void addElement (Object obj)
$
-
) 6
F
)
void insertelementAt (Object obj, int index)
4
0
)
0
)
F
&
F
void removeElementAt( int index)
void clear ( )
Boolean contains (Object obj)
int indexOf (Object obj)
*
*
*
'
F
)
0
)
4
)
"
4
0
'*
3
Object elementAt (int index)
F
F
'
@ F
0
Booleam isEmpty ( )
int size ( )
<
"
*
*
)
F
K
) K) 0
) ) 6
Vector D
D
6
"
2 ) '
"
'
4
'
"
# #
'# G
)
3
-
')
)
0
)
)
)
) 4)
)
,
, D
'
,
'
E
'/
,
, D
'
,
D &
3 '!
,
, D
D
'
'+
'9
&
'-
E
) :
n)
D &
K H
$;
'
) )
'-
, D
'.
8
,
'
, D
'
'>
A
'@
'#
)
&
D
)
) )
)
&
'
"3
"
'##
'#
D
D
-' 3
4
3
'#/
'
-K
E
- R : # / + 9 . ;K
0
R : / ! ;'
;D
'
3
'#
n
D &
3
; D
&
'
'#!
D &
n )
D &
D &
K0 6
0 D &
D &
'
R#
D &
E /' .'# '! /' 9' .'# /' +'/ 9' /'
4 E
<
5 D
/'
.'#
'! #
9'
+'/ #
3 '#+
X
)
"3
3
'
'
A
,
D
q rqFrR3 q rSZ qFrK
'#9
0
"
Z
6 '-
D
6
'
,E
'#.
;0 6
' #>
D
'$
6 K
0
'
1
*
'
D
&
'
D
= 0
*
)
6
'
E
3
D )
"
_
)
0
D
<'
6
)
&
" K
K
D
_
D
"
3 E
"
# /
'
D
! V'
"
,
6
"
' # $
0D
"
,
E #K K/K
)"
!;
K$
:-K% K$
0
)
?
'@
# -
6
,
@
K
4
"
"3
)
K
6
A E
#! =
'
'
'
'
0
;' $
#-
'
D
)
K
4
4
'
D
3
/ 6
:D
'
E #- #% K
'- ?
'
"
10 - Algoritmos de Procura/Pesquisa
10.1 - Introduo
-
0
"
,
,
D
" '
0
H
0?
'
E
'
,0 D
0 6
8
K
'=
': #
;D
= ; D
# '@ ?
H
,
E
import java.util.Random;
class Tabela {
public static void preenche(int tabela[]){
Random random = new Random();
for (int i=0; i < tabela.length; i++)
tabela[i] = random.nextInt(100);
}
public static void imprime(int tabela[]){
for (int i=0; i < tabela.length; i++)
System.out.println(" "+i+":"+ tabela[i]+"; ");
System.out.println();
}
}
$
<
E
$
$
*
'
)
'
,
0
K
'
D
)
9! :
'
'
"
# !
9!
>
9!
# s
9!
9!
9! s
@ )
@ ?3
# ;
'
6
D
K
H
D
:
'
"
# +
"
#' <
K
while (i < tab.length && tab[ i ] != valor ) {
0
) 0
) 0
E
)
0
0
0
) 0
)
'
"
'
6
,
)
D
)
'-
&
K
0
K,
K
'
'
K
# ;
D
H
'C
'<
'
<
D
K
'
"
# 9
System.out.println("Resultado:"+procura(tab,1));
System.out.println("Resultado:"+procura(tab,102);
}
}
'
"
'
)
6K
,
#'
'
/'
"
E
'
#b
'
D
,
D
*
'
!'
#b
b
#b
'
D
+'
9'
.'
#b
?3
'
"
'
D
3
'
0
<
'
#b
'
&#
'
public class ProcuraBinaria {
public static int procuraBinaria(int tab[], int valor) {
boolean achou = false;
int alto = tab.length - 1;
int baixo = 0;
int meio = (alto + baixo )/2;
while (!achou && alto >= baixo )
{
if (valor == tab[meio ])
achou = true;
else if (valor < tab[meio ])
alto = meio - 1;
else
baixo = meio + 1;
meio = (alto + baixo )/2;
}
return((achou ) ? meio : -1);
"
# .
}
public static void main(String[] args) {
int tabela[] = new int[100
for (int i=0; i < tabela.length; i++)
tabela[i] = i;
System.out.println("Resultado:"+procuraBinaria
System.out.println("Resultado:"+procuraBinaria
System.out.println("Resultado:"+procuraBinaria
System.out.println("Resultado:"+procuraBinaria
(tabela,67));
(tabela,33));
(tabela,1));
(tabela,101));
}
}
M3
baixo
#b
alto
baixo meio
Valor a Procurar
5
7
(>x)
3
3
(>x)
3
1
(<x)
/b
baixo alto
b
@ )
5
9'
"
3
3
'
"
# >
int baixo = 0;
int meio = alto/2;
while (!achou && alto >= baixo ){
if (valor == tab[meio ])
achou = true;
else if (valor < tab[meio ])
alto = meio - 1;
else
baixo = meio + 1;
meio = (alto + baixo )/2;
}
return((achou ) ? meio : -1);
}
M3
meio
baixo
#b
5
7
(>x)
alto
baixo meio
Valor a Procurar
alto
3
3
(>x)
3
1
(<x)
/b
@ )
5
.'
"
# 3
'#
D
'
,
"3
3' C
'
D
5' -
"
#/
'/
$ 'C
,
6
$ D
" '-
&
,
,E
#'
'
/'
3
'
& E
0
D
I
& 'I
)
0
'!
3
,
G#'
3' $
,
'
)K D
'[
K
"
)
)
0
,
-
,
"
'
'
L S gM
,E
public static boolean procuraPessoa(String[ ] v)
"
#/#
11 - Algoritmos de Ordenao
11.1 - Introduo
C
,
0?
'
6
#
'
0
K )
'
'
A
0
0
)
D
"3
D &
F
'@
<
$
0
D
'
0
;D
0
K
K )
E
'
'
'
import java.util.Random;
class Tabela {
//(1) preenche uma tabela
public static void preenche(int tabela[]) {
Random random = new Random();
for (int i=0; i < tabela.length; i++)
tabela[i] = random.nextInt(100);
}
//(2) troca as posies de dois elementos da tabela
public static void troca(int tabela[], int x, int y){
int tmp;
tmp = tabela[x];
tabela[x] = tabela[y];
tabela[y] = tmp;
}
//(3) Imprime a tabela
public static void imprime(int tabela[]) {
for (int i=0; i < tabela.length; i++)
System.out.println(" "+i+": "+ tabela[i]+" ; ");
System.out.println();
}
// O mtodo main vai variar para cada implementao
}
"
#/
11.2 - BubbleSort
E
K
D
<
-,D
'
H F
'
'
F
@
'
"
'
/
#9
##
) ")
H )
'
R0
. #9 / ##
. #9 / ##
. / #9 ## :
. / ## #9 :
. / ## #9 :
R0
. / ## #9
/ . ## #9 :
/ . ## #9
/ . ## #9 :
/ . ## #9
R0
/ . ## #9 :
/ . ## #9
/
. ## #9 :
/
. ## #9
/
. ## #9
R
R
R
;
;
;
I
/
/
R0
. ## #9
. ## #9 :
"
#//
/
/
/
. ## #9
. ## #9
. ## #9
I
/
/
/
/
/
R0
. ## #9 :
. ## #9
. ## #9
. ## #9
. ## #9
3
/
/
/
/
/
R0
. ## #9
. ## #9
. ## #9
. ## #9
. ## #9
RR 0
G
ordenao
//ordena tabela
"
#/
11.3 - ShellSort
-
,
F
$
- ?
K
)
'
K
,D
<
'
'
)
F #:
0
;'
"
D
F"
F
'
$
.
= F
#9
E
!
##
K
H )
) ")
) ")
0
D
8
'
#
R/
R5
% . #9 E ## :
/ Q #9 ""
/ . $ ## "P :
)
R
R
;
;
R/
R5
% . E ## #9
/Q
"" #9
/ . $ ## "P
/
R#
R5
/.
## #9
/ $ Q ## #9 :
/ E Q ## #9 :
/
. ## #9
/
. ## #9
)
"
#/!
)
$%
/
/
/
/
R#
R5
. ## #9 :
. ## #9
. ## #9
. ## #9
. ## #9
!
)
/
/
/
/
/
@
R#
R5
. ## #9
. ## #9
. ## #9
. ## #9
. ## #9
//ordena tabela
"
#/+
E
o
o
o
$
< #b
< b
'
'
)
D
#
.
= F
'
3
/
#9
E
!
##
E
3
% . #9 E ##
$ . #9 ## %
ME Q "P % "" $N
)
$ . #9 ## /
$ E #9 Q ## /
$ % #9 . ## E
M$ Q "P E "" %N
M$ % "P Q "" EN
$ % Q "P ##
$ % E #9 ## Q
J
$ % E "" "P .
$ % E Q #9 ""
M$ % E "P "" QN
J
$ % E Q "" "P
M$ % E Q "P ""N
"
#/9
//ordena tabela
o
o
"
:3 ;
) ,
'
D
)
F
F 3
:) 6
:) 6
@
'
)
:3 R )q B r;'
0
6 R :4
#`
6 F R # :4
FK 0 6 E
D
)q r U 3 :,
D
)qFr X 3 :,
FK
)q r
@
FU ;
@
X #;
) '
) '
"
;'
) ;
: D
@
@
@
: H
)
)
:
:
;'
;'
#;K
F ;K
3 ; , )q rK '''K )qFr
)
)
)qFrK
3 ; , )q rK '''K )q #r
S
,
-
'
M
D
"
D &
6
'
, D
"
D &
78
"
#/.
'
x=4
:/'#T/' ;
F
8
6U
:/'/;
:/'/;
F
3
4
F
:/'#T/' ;
3
5
F
:/'/;
3
>'
@
//preenche tabela
//imprime tabela antes da ordenao
quickSort(tabela, 0, tabela.length);
//ordena tabela
"
#/>
}
while (k < tabela.length);
}
'#
%
3
'
'C
3
'/
;
'
'
'!
#'
'
/' @
' -
D E
?) :(
'+
'C
"
:
'
'`
'
'
)
F K
D
K
6
;'
,
"
'
:
F
K
-
F K
0 6
0
H K
F K)
K 6 K)
H K
F
"
import java.io.*;
import java.awt.*;
import java.awt.event.*;
/**
* Classe
atravs de
* @verso
* @autor:
*/
public class Le
{
private static final int BUF_SIZE = 1024;
// Inibe o constructor por defeito
private Le()
{
}
/**
* Le um inteiro da entrada padro.
* A entrada terminada com um return. Se a entrada no for vlida
mostrada a mensagem
* "!!! No um inteiro !!!" e o utilizador pode tentar de novo.
*
* @devolve o nmero lido
*/
public static int umInt()
{
while(true)
{
try
{
return Integer.valueOf(umaString().trim()).intValue();
}
catch(Exception e)
{
System.out.println("!!! No um inteiro !!!");
}
}
}
/**
* Le um double da entrada padro.
* A entrada terminada com um return. Se a entrada no for vlida
mostrada a mensagem
* "!!! No um double !!!" e o utilizador pode tentar de novo.
*
"
# #
in
new
BufferedReader(new
"
s = in.readLine();
}
catch (IOException e)
{
System.out.println("Error reading from the input stream.");
}
return s;
}
/**
* Le um caracter da entrada padro.
* A entrada terminada com um return.
*
* @devolve o caracter lido
*/
public static char umChar()
{
char c=' ';
try
{
BufferedReader
in
=
new
BufferedReader(new
InputStreamReader(System.in), 1);
c = (char)in.read();
}
catch (IOException e)
{
System.out.println("Error reading from the input stream.");
}
return c;
}
/**
* Le um inteiro usando uma janela grfica.
* A entrada terminada quando o boto Ok seleccionado
*
* @devolve o nmero lido
*/
public static int grafUmInt(String msg)
{
ReadIntFrame intFrame = new ReadIntFrame(msg);
return intFrame.getValue();
}
/**
* Le um inteiro usando uma janela grfica.
* A entrada terminada quando o boto Ok seleccionado
*
* @devolve o nmero lido
*/
public static double grafUmDouble(String msg)
{
ReadDoubleFrame doubleFrame = new ReadDoubleFrame(msg);
return doubleFrame.getValue();
"
# /
}
}
/**
* Classe auxiliar que l inteiros numa janela
* @verso 1.0 - 13 Jan 1999
* @autor Paulo Marques (pmarques@dei.uc.pt)
*/
class ReadIntFrame
implements ActionListener
{
/**
* Construtor.
* @parmetro msg - a mensagem a aparecer como ttulo.
*/
public ReadIntFrame(String msg)
{
this.msg = new String(msg);
valid
= false;
window = new Frame();
window.setTitle(msg);
window.setLayout(new FlowLayout());
valueArea = new TextField("", 15);
Button done = new Button(" Ok ");
done.addActionListener(this);
window.add(valueArea);
window.add(done);
window.setSize(320, 100);
window.setBackground(Color.gray);
window.setLocation(100, 100);
window.setResizable(false);
window.show();
}
/**
* Metodo chamado quando o Ok seleccionado.
*/
public synchronized void actionPerformed(ActionEvent e)
{
try
{
value
Integer.valueOf(valueArea.getText().trim()).intValue();
valid = true;
window.dispose();
notify();
}
catch (Exception exc)
{
window.setTitle("!!! No um inteiro !!! --- " +
msg);
}
"
}
/**
* Devolve o valor fornecido pelo utilizador.
*/
public synchronized int getValue()
{
try
{
if (!valid)
wait();
}
catch (Exception e)
{
}
return value;
}
private
private
private
private
private
boolean
int
String
Frame
TextField
valid;
value;
msg;
window;
valueArea;
}
/**
* Classe auxiliar que l doubles numa janela.
* @version 1.0 - 13 Jan 1999
* @author Paulo Marques (pmarques@dei.uc.pt)
*/
class ReadDoubleFrame
implements ActionListener
{
/**
* Constructor.
* @parmetro msg - a mensagem a aparecer como ttulo.
*/
public ReadDoubleFrame(String msg)
{
this.msg = new String(msg);
valid
= false;
window = new Frame();
window.setTitle(msg);
window.setLayout(new FlowLayout());
valueArea = new TextField("", 15);
Button done = new Button(" Ok ");
done.addActionListener(this);
window.add(valueArea);
window.add(done);
window.setSize(320, 100);
window.setBackground(Color.gray);
window.setLocation(100, 100);
"
# !
window.setResizable(false);
window.show();
}
/**
* Metodo chamado quando o Ok seleccionado.
*/
public synchronized void actionPerformed(ActionEvent e)
{
try
{
value
Double.valueOf(valueArea.getText().trim()).doubleValue();
valid = true;
window.dispose();
notify();
}
catch (Exception exc)
{
window.setTitle("!!! No um double !!! --- " + msg);
}
}
/**
* Devolve o valor fornecido pelo utilizador.
*/
public synchronized double getValue()
{
try
{
if (!valid)
wait();
}
catch (Exception e)
{
}
return value;
}
private
private
private
private
private
boolean
double
String
Frame
TextField
valid;
value;
msg;
window;
valueArea;
"
# +
13 - Anexo II Glossrio
"
)
"
8
E
0 ,
'
E$ F
E 3
#
F KD
'
'
0
0
'
3
K
"
;'
B& E $
E $?
'
'
( E*
'
# E$
'
?
6 ?
0
E
'
! (
B'
?
,
E (
D
") '
")
'
D
E$
04
'< D
K
E1
'@
K
0
, )
E $?
) )
'
) ")
'*
3
'
0
K
'
'
'
'
';
4)
'
-
'
,
E<
0
E(
0
4
"
'$
3
D
"
)
?
0
2 )
)
)
),
"D
'-
0_
)
?
2 )
'
0
K
o(1
K
0
)
'
3
0
E % <5
)
K
'
"
# 9
<
) )
)
E 0
K
'
0
D
D
K,
( E
H
),
A
H
4)
D
,
K
3
H
"D
:
A
H
4
'
'
<
)
04
H )
'
H
E
)
%
'
'*
")
?
;
'
"
'
) #
E
2 ) ;K
,
D
F
D
,
F
'
B! H E $
0
D
4)
4)
K
F K
'
"
# .
0_
2 ) G- ? (
K2 H 1 _ K^
Z
2 ) G
$ H K 5$C 6
K ) (
1
G\ K2
7
)
B # ,
/B
K(
K( 7 _ ]
'-
,(
K 5$-
"
# >