You are on page 1of 204

!

" # $ $ & %

' ( ) * ++ ,-. / 0 * 1 2 2 -' ( ) * +3+ ) 0 +4( 2+ 1 2 * 0 / . / 5 + 67 ' -' 1 2, ) 2(289 ' 80 ( + 1 + )34 / + )1 2: / 8/ 6; 2)-+ ( +) 2* ) 34( -( / 89 <-/ ' ) 2, + 3+ . / 4!. + ) 32= + ,' ) + . > * ,+ ) 1 2: ' ( ,+/ . * ) 0 ( + 0 / 3+

@ ' 2) 0 * 1 '1 2) / ) 0 2,+ ) -( 2) 9 ( / 0 / 3' ) 1 2( + 9 / ' 9 <8/ '' *) 2= +) / ) 0 2,+ ) A* 2 1 2: / 82, 9 ' ,' ) 2 B 1 232( / + B( 2+ . ,280 2 -28) + ( -+ ( + 87 ' 2( ( + ( * ) + 81 '+( + 5 7 '1 21 * 0 / 3+ ,280 22/ 81 * 0 / 3+ ,280 2C
#$ % % & &% ' $ % % & & ''' .

! ( & )? 2 : ' ( ,+) * -2( : / 9 / + . *(

! "

: ' ( 829 2( ,21 / + 80 2 ' 2) 0 * 1 '1 + )2) 0 ( * 0 * ( + )1 ' -28) + ,280 '+ ) ( 2> ( + ) A* 2 1 232,' )) 2> * / () 2 1 2) 2= + ,' ): ' ( ,* . + (( + 9 / ' 9 <8/ ' ) 34. / 1 ' ) 29 ' ( ( 20 ' ) C
, ! + " % ! , /0 *( 12 #$ % % & & '3% " , & ' "& ( ,+ %+ 4 $ + $ 5 & 6 76 7 ( 6 8 8 6 & 9 " ( + & ":$ % 3) 3) ? ' > / 9/ )0 F 2 ) 9 / 289 2 ' :9 ' ( ( 29 0+ ( > * ,280 CG D> / 9 +@ +9 / E 89 / +1 + 9/ 0+ 9 ' ( ( 20 ++ ( > * ,280 + 67 ' H

"% + ", '"+% " " +. "% ! ! ? D> / 9 +@ +9 / E 89 / + A* 2 -( 20 281 2

; 2<

280 ( 2' )34 / ' )2) 0 * 1 ' )2, . D> / 9 + ,2( 29 2( 41 2) 0 + A* 2 34( 2, 8' ) ) '9 * ( ) '+. D> / 9 +1 21 * 0 / 3+ ' 1 2! 2 1 2: / 8/ ( +. D> / 9 +1 21 * 0 / 3+9 ' ,'* ,+. D> / 9 +87 ' 2!) A* + 80 / 0 + 0 / 3+ ' 81 2 0 2( 2,' )) ' ,280 2 3+ . ' ( 2)? C G? CH ' * ? C G?ICH-+ ( ++ )-( 2,/ ) ) + )G) 280 286 )/ 8/ 9 / + / ) H2 286+ 9 ' 89 . * ) ; 2)G) 280 286 )( 2) * . 0 + 80 2) H 2 : ' ( ,+J + ) 0 + 80 2 286+ ) / ,-. / ) 0 +-' 1 2,' )1 / 5 2( A* 2 +. D> / 9 +1 21 * 0 / 3+' *1 2 K ' ( 1 2, 0 ( + J + . F +9 ' ,' ) 3+ . ' ( 2) I 2 2 +. D> / 9 +/ 81 * 0 / 3+ ' *1 2' ( 1 28) ) * -2( / ' ( 2) 0 ( + J + . F +9 ' , 3+ . ' ( 2) 1 2I+ L M 2 + 9 ' ( 1 '9 ' , +. D> / 9 +1 21 * 0 / 3+ * ,+-2) ) ' +@ + . 0 +' *J + / L + 87 'F 4 ?,2/ '0 2( ,' C 2 + 9 ' ( 1 '9 ' , +. D> / 9 +82J * . ' ) +' *: * 5 5 N* ,+ -2) ) ' +-' 1 2) 2( IO + . 0 +2 IO ,@ / + ,@1

=4 9 4 >
. 2,280 ': * 81 + ,280 + .1 '9 4. 9 * . ' -( ' -' ) / 9 / ' 8+ .@ * ,+ ) 280 286 ' ,+ . > * ,+ ) 9 + ( + 9 0 2( <) 0 / 9 + ) -29 * . / + ( 2) +) + J 2( M 286+9 + 7 '1 29 . + ( + 0 / 3+ ) P J 1 ,/ 0 2, ) ' ,280 2* ,1 ' )3+ . ' ( 2) ' * 1 2: ' ( ,+ 2L 9 . * 1 280 2P L 2,-. ' ) M ' 32 @ 1 / : 2( 280 21 2 G-( ' -' ) / 67 '32( 1 + 1 2/ ( + H 20 2 @ ,28' ( A* 20 ( E ) G-( ' -' ) / 67 ': + . ) + H ' / )325 2)9 / 89 ',+ / )0 ( E )G87 '@ * ,+-( ' -' ) / 67 ' -' / ) 87 '-' 1 2) 21 / 5 2( ) 2 2. +@ 32( 1 + 1 2/ ( +' *: + . ) + H ' / ) ,+ / ) 1 ' / ) @/ > * + . +9 / 89 ' Q G87 '@ * ,+-( ' -' ) / 67 '@ * ,+: ( + ) 2/ 80 2( ( ' > + 0 / 3+ H * + ) 325 2) * , 8R ',+ / ) 0 ( E ) 3+ . 20 ( 25 2 G87 '@ * ,+ 8R,2( -( ' -' ) / 67 ' -' / )9 ' ,' 87 ') 2 ) + J 2 ' 8R ' ,289 / ' 8+ 1 ' 87 ' 8R,2( -' 1 2,' ) 9 . + ) ) / : / 9 + ( +) 280 286 ' ,'32( 1 + 1 2/ ( +' *: + . ) + H 286+9

72?

< 9

+ J 2. + 2( 1 + 1 2M @ + + : 2( / 67 ' 1 ' ) 3+ . ' ( 2) . D> / 9 ' )1 2 * ,+ -( ' -' ) / 67 '( 2) * . 0 + 80 21 +9 ' ,J / 8+ 67 '1 2' * 0 ( + )+ 0 ( + 3@ ++ 84 / ) 2 3@)1 84. 1 20 ' 1 + ) + ) -' ) ) / J / . / 1 + 1 2) 1 + ) -( ' -' ) / 6; 2) A* 2 +9 ' ,-; 2 L 2,-. ' M -( ' -' ) / 67 '( 2) * . 0 + 80 2M GG- AH S -H GA -H -( ' -' ) / 6; 2) A* 2 +9 ' ,-; 2,M - 2 A + J 2. +32( 1 + 1 2

2 : ' ( ,+ ) 2,2. F + 80 2 + ' )' -2( + 1 ' ( 2) + ( / 0 ,@ / 9 ' ) 8+ ,+ 0 2,4 / 9 + ' ) ,@0 2,40 9 ' 829 0 / 3' ). D> / 9 ' )+ -+ ( 29 2, 9 ' ,' / ,-' ( 0 + 80 2 : 2( ( + ,280 + .8' 9 4. 9 * . ' -( ' -' ) / 9 / ' 8+ .-' / )-2( ,/ 0 2, +9 ' 8) 0 ( * 67 '1 2 8' 3+ )-( ' -' ) / 6; 2)+-+ ( 0 / ( 1 2 -( ' -' ) / 6; 2)1 + 1 + ) . > * 8)2L 2,-. ' )1 2 9 ' 829 0 / 3' )) 7 ' M ?87 ' C ?2C ?' * C ! ' 829 0 / 3'?' * C G ! H M -' ) 0 '280 ( 2 1 * + )-( ' -' ) / 6; 2)- 2 A : ' ( ,+ ( 4 * ,+8' 3+-( ' -' ) / 67 ' ) 0 +-( ' -' ) / 67 ') 2( 4 32( 1 + 1 2/ ( +) 2 -2. ',28' ) * ,+ 1 + ) -( ' -' ) / 6; 2) -2A: ' ( 2, 9 + ) '9 ' 80 ( 4( / ') 2( 4: + . ) + ! L 2,-. ' M - T ?U ' = 2@) 2L 0 + !: 2/ ( + CP A T ?U ' = 2@: 2( / + 1 ' CP ( T - 3 AP ( ) 2( 4 : + . ) ') ' ,280 2) 2F ' = 2 87 ': ' ( ) 2L 0 + !: 2/ ( +2 82, : ' ( : 2( / + 1 ' ! + J 2. +32( 1 + 1 2M
A A

I I I I I

! ' 829 0 / 3'?"@ G ! H M -' ) 0 '280 ( 21 * + )-( ' -' ) / 6; 2)- 2 A : ' ( ,+ ( 4* ,+8' 3+ -( ' -' ) / 67 ' ) 0 +-( ' -' ) / 67 ') 2( 4 32( 1 + 1 2/ ( +) 2+ ,J + )+ )-( ' -' ) / 6; 2)- 2 A : ' ( 2, 9 + ) '9 ' 80 ( 4( / ') 2( 4: + . ) + ! L 2,-. ' M - T ?U ' = 2@) 2L 0 + !: 2/ ( + CP A T ?U ' = 2@: 2( / + 1 ' CP ( T - AP ( ) 2( 4 32( 1 + 1 2 ) ' ,280 2) 2F ' = 2: ' ( ) 2L 0 + !: 2/ ( +2 : ' ( : 2( / + 1 ' ! + J 2. +32( 1 + 1 2M
A

I I I I

I I I

! ' 829 0 / 3'? 0 C GS ! H M -' ) 0 '+: ( 280 2 1 2 * ,+-( ' -' ) / 67 '- : ' ( ,+ ( 4 * ,+ 8' 3+-( ' -' ) / 67 ' ) 0 +-( ' -' ) / 67 '0 2( 4 3+ . ' ( . D> / 9 '9 ' 80 ( 4( / '+ '1 +-( ' -' ) / 67 '! L 2,-. ' M) 2 +-( ' -' ) / 67 '- T ?U ' = 2 2) 0 49 F ' 3281 ' C @ 32( 1 + 1 2/ ( +G H+2L -( 2) ) 7 ' S - T ?U ' = 2 2) 0 49 F ' 3281 '@ : + . ) + C ! + J 2. +32( 1 + 1 2M

! ' 829 0 / 3'? ,": , + C G3 ! V H M -' ) 0 '280 ( 21 * + ) -( ' -' ) / 6; 2) -2A : ' ( ,+ ( 4 * ,+8' 3+-( ' -' ) / 67 ' ) 0 +-( ' -' ) / 67 ') 2( 4 32( 1 + 1 2/ ( ++ ) -( ' -' ) / 6; 2) -2A0 / 32( 2, 3+ . ' ( 2) . D> / 9 ' ) 1 / : 2( 280 2) 9 + ) '9 ' 80 ( 4( / ') 2( 4: + . ) + ! L 2,-. ' M - T ?U ' = 2 @) 2L 0 + !: 2/ ( + CP A T ?U ' = 2 @ : 2( / + 1 ' CP ( T - 3 AP ( ) 2( 4 : + . ) ' ) ' ,280 2) 2F ' = 2 87 ': ' ( ) 2L 0 + !: 2/ ( +2 82, : ' ( : 2( / + 1 '' *) 2: ' ( ) 2L 0 +2 : ' ( : 2( / + 1 ' ! + J 2. +32( 1 + 1 2 - A A

I I I I I I

' 829 0 / 3' ?+ " " % 0 C G ! H M0 + ,J @, 9 F + ,+ 1 '1 2 9 ' 81 / 9 / ' 8+ .' * / ,-. / 9 + 67 ' ,+ 0 2( / + . -' ) 0 ' 280 ( 2 1 * + ) -( ' -' ) / 6; 2) - 2 A : ' ( ,+ ( 4 * ,+ 8' 3+ -( ' -' ) / 67 ' ) 0 + -( ' -' ) / 67 ') 2( 4 32( 1 + 1 2/ ( + + -( / ,2/ ( +: ' (: + . ) +' *) 2 + )1 * + ) : ' ( 2, 32( 1 + 1 2/ ( + )9 + ) '9 ' 80 ( 4( / ') 2( 4: + . ) + ! L 2,-. ' M - T ?U ' = 2@) 2L 0 + !: 2/ ( + CP A T ?U ' = 2@: 2( / + 1 ' CP ( T - AP ( ) 2( 4: + . ) ' ) ' ,280 2) 2F ' = 2: ' ( ) 2L 0 + !: 2/ ( +G- 32( 1 + 1 2/ ( ' H 2 87 ': ' ( : 2( / + 1 'GA : + . ) ' H ! + J 2. +32( 1 + 1 2
A -A

I I I I

,-' ( 0 + 80 2M * , 2( ( ',* / 0 '9 ' ,* , 8'* ) '1 2) 0 2+ -. / 9 + 0 / 3'@ 1 / 5 2( A* 2) 2 +-( / ,2/ ( + -( ' -' ) / 67 ': ' (: + . ) ++) 2> * 81 +0 + ,J @, 1 232 ) 2(-+ ( +) 2 0 2(* ,+ -( ' -' ) / 67 ' ( 2) * . 0 + 80 2 32( 1 + 1 2/ ( + '2L 2,-. '+ 9 / ,+ @ 2( ( '9 ' ,* ,1 / 5 2( A* 2) 2 87 ': ' ( ) 2L 0 + ! : 2/ ( +G-( ' -' ) / 67 '- : + . ) + H0 + ,J @, 87 '@ : 2( / + 1 'G-( ' -' ) / 67 'A : + . ) + H 2 A > 2 9 > 2 B 9 9 87 '+ 0 281 / ,280 '1 +-( / ,2/ ( +-( 2,/ ) ) +2, 8+ 1 +/ ,-. / 9 ++) 2> * 81 + ' 829 0 / 3' ? + " " + 3" % " + " C G C <H M 0 + ,J @, 9 F + ,+ 1 '1 2 J / 9 ' 81 / 9 / ' 8+ .-' ) 0 '280 ( 2 1 * + )-( ' -' ) / 6; 2)- 2 A : ' ( ,+ ( 4 * ,+8' 3+-( ' -' ) / 67 ' ) 0 +-( ' -' ) / 67 ') 2( 4 32( 1 + 1 2/ ( ++ ) -( ' -' ) / 6; 2) -2A0 / 32( 2, 3+ . ' ( 2) . D> / 9 ' ) / > * + / ) 9 + ) '9 ' 80 ( 4( / ') 2( 4: + . ) + ! L 2,-. ' M - T ?U ' = 2 @ ) 2L 0 + !: 2/ ( + CPA T ?U ' = 2 @ : 2( / + 1 ' CP(T - AP() 2( 4 32( 1 + 1 2/ ( ') ' ,280 2) 2: ' ( ) 2L 0 + !: 2/ ( +G- 32( 1 + 1 2/ ( ' H 2: ' ( : 2( / + 1 'GA 32( 1 + 1 2/ ( ' H ' * ) 2 87 ': ' ( ) 2L 0 + !: 2/ ( +G- : + . ) ' H 2 82, : ' ( : 2( / + 1 'GA : + . ) ' H ! + J 2. +32( 1 + 1 2
A -A

I I I I

I I

9 1; >4 9 4 >

>

' ,J / 8+ 6; 2) 1 2 -( ' -' ) / 6; 2) -' ( ,2/ '1 29 ' 829 0 / 3' )> 2( + 81 '8' 3+ ) -( ' -' ) / 6; 2) L 2,-. ' ) M -A GS - AH E2; 2 ( ' -' ) / 67 '( 2) * . 0 + 80 21 +9 ' ,J / 8+ 67 '1 2' * 0 ( + ) A* 2 / 81 2-281 280 21 '3+ . ' ( 1 2) 2* ) 9 ' ,-' 8280 2) ) 2,-( 2+ ) ) * ,2 '3+ . ' ( 32( 1 + 1 2G H L 2,-. ' M G- AH GAH

F <B

9 1;

>> 2 2A

2 9

9 1;

2 9

( ' -' ) / 67 '( 2) * . 0 + 80 21 +9 ' ,J / 8+ 67 '1 2' * 0 ( + ) A* 2 / 81 2-281 280 21 '3+ . ' ( 1 2) 2* ) 9 ' ,-' 8280 2) ) 2,-( 2+ ) ) * ,2 '3+ . ' ( : + . ) 'G H L 2,-. ' MS GG- AH G- AH H G32( 0 + J 2. ++ 9 / ,+ H G C ;< H

/ 5 !) 2 A* 21 * + )-( ' -' ) / 6; 2)? C 2 ? C ) 7 '2A* / 3+ . 280 2)) 2 +-( ' -' ) / 67 ' : ' ( * ,+0 + * 0 ' . ' > / + *) 2= ++ )-( ' -' ) / 6; 2)? C 2 ? C + ) ) * ,2, ) 2,-( 2 ' ),2) ,' ) 3+ . ' ( 2) . D> / 9 ' ) L 2,-. ' M GG- AH S -H GA -H 2-) 7 '2A* / 3+ . 280 2)

&

W @9 8/ 9 '1 + 29 2/ 0 + 21 2( + . 1 ' ( + ) / . ! W II W I ! 8+ . / ) 2 + )) 2> * / 80 2)' -2( + 6; 2)( 2. + 9 / ' 8+ 1 + )X ( / 0 ,@ / 9 + ' ,-* 0 + 9 / ' 8+ . ,@0 9 ' 8) / 1 2( + 81 ' A* 2 ' ) 3+ . ' ( 2) * 0 / . / 5 + 1 ' ) 2) 0 7 ' 8+ ( 2-( 2) 280 + 67 ' F 2L + 1 29 / ,+ . GG GG GG GG H V H V H V H V H T H T H T H T

81 / A* 2 +' -6 'A* 29 ' 80 28F +0 ' 1 + ) + ) + : / ( ,+ 6; 2) 32( 1 + 1 2/ ( + ) -67 + H2 J H 2 ") " 9 H 2 1 H 2

W * 1 / 0 ' (/ ) 9 + . 1 + 29 2/ 0 + 21 2( + . 1 ' ( + ) / . ! W II W ! +( 2-( 2) 280 + 67 'F 2L + 1 29 / ,+ .9 ' 8) / 1 2( + 81 ' !) 2 ' 3+ . ' (T 2 + -. / 9 + 81 ' !) 2 + 2) 0 2 * , V 9 ' , ' 3+ . ' (T ' J 0 @,!) 2 9 ' ,' ( 2) * . 0 + 1 ' 8+,2) ,+( 2-( 2) 280 + 67 ' '3+ . ' ( ) 86 J H 9 H 1 H IIII 2H I

! Y Z ! & [ II W #! ,+-( ' -' ) / 67 'A* 2 @ 32( 1 + 1 2/ ( + 2, 0 ' 1 + )+ )) * + )3+ . ' ( + 6; 2) @ * ,+ 0 + * 0 ' . ' > / + ) ) / 8+ . 2 + ' -6 'A* 2 @* ,+0 + * 0 ' . ' > / + M -67

! Y Z ! & [ II W ! 8R '1 2. / 8F + ) A* 2 8R,2( * ,+ 0 + J 2. + !32( 1 + 1 2 1 2 * ,+ -( ' -' ) / 67 '9 ' ,-' ) 0 +0 2, 1 2-281 2 1 ' 8R,2( '1 2 -( ' -' ) / 6; 2)) / ,-. 2)A* 2 +/ 80 2> ( + , 2) ) +: ' ( ,+ '8R ' 8R,2( 1 2 . / 8F + )A* 2 * ,+0 + J 2. + !32( 1 + 1 2 1 2 * ,+-( ' -' ) / 67 '9 ' ,-' ) 0 +9 ' , 8 -( ' -' ) / 6; 2) ) / ,-. 2) 9 ' ,-' 8280 2) 9 ' 80 @, @M G H 8 #? ) 6 G H8G H 88 G H 8

! ! Y Z [ II W ! 2= + G- AHT S G-\ AH 3S GA -H* ,+ -( ' -' ) / 67 ' ( 2) * . 0 + 80 2 1 +9 ' ,J / 8+ 67 '1 + ) -( ' -' ) / 6; 2) - 2 A + ) ) / 8+ . 2 +' -6 ' A* 2 -( 2289 F 2 -67 9 ' ( ( 20 + ,280 2 +0 + J 2. ++ J + / L ' M !

(A) F - V - V - V (D) V - F - V F

(B) F - V F-V (E) V - V - V - V

(C) F - F - V V

! W [ II W I ! A lgica proposicional trata das proposi proposies que podem ser interpretadas como verdadeiras (V) ou falsas (F). Para as proposi proposies (ou f frmulas) P e Q, duas opera operaes b bsicas, e , podem ser definidas de acordo com as tabelas de interpreta interpretao abaixo.

' ,J + ) 2 82) ) + )' -2( + 6; 2) 8' 3+ )-( ' -' ) / 6; 2)-' 1 2, ) 2( 9 ' 8) 0 ( * <1 + ) ,+ + ( > * ,280 + 67 ' @ * ,+ ) 2A] 89 / + : / 8/ 0 + 1 2 -( ' -' ) / 6; 2) ,+ 2A]E + ( > * ,280 + 67 '@ 34. / 1 +) 2,-( 2 A* 2 +32( + 9 / 1 + 1 2G H 1 2) * + ) G8 ! H -( 2,/ ) ) + ) + 9 + ( ( 20 ++32( + 9 / 1 + 1 21 2) * +8!@) / ,+^ 0 / ,+^ -( ' -' ) / 67 ' ' ,( 2. + 67 ' ,+^ 2 R. +2) ) 2) 9 ' 89 2/ 0 ' )= * . > * 2' ) / 0 28) +) 2> * / (

! [ II W

W . A seq seqncia de proposi proposies

- Se existem tantos n nmeros racionais quanto n nmeros irracionais, ento o conjunto dos n nmeros irracionais infinito. - O conjunto dos n nmeros irracionais infinito - Existem tantos n nmeros racionais quanto n nmeros irracionais. uma argumenta argumentao da forma -PQ -Q -P

! argumenta argumentao

[ II W

.A

- Se l lgica fcil, ento S Scrates foi mico de circo - Lgica no fcil - Scrates no foi mico de circo vlida e tem a forma -PQ - P - Q

! W [ II W . A tabela de interpreta interpretao de (P Q) P igual tabela de interpreta interpretao de P Q.

SISTEMAS DE NUMERAO
1.1. SISTEMA DE NUMERAO BINRIO 1.2. SISTEMAS DE NUMERAO OCTAL E HEXADECIMAL 1.3. CONVERSO DE BASES NUMRICAS 1.3.1. CONVERSO ENTRE AS BASES POTNCIAS DE 2 1.3.1.1. CONVERSO ENTRE A BASE BINRIA E A HEXADECIMAL 1.3.1.2. CONVERSO ENTRE A BASE HEXADECIMAL E A BINRIA 1.3.1.3. CONVERSO ENTRE A BASE BINRIA E A OCTAL 1.3.1.4. CONVERSO ENTRE A BASE OCTAL E A BINRIA 1.3.1.5. CONVERSO ENTRE BASES OCTAL E HEXADECIMAL 1.3.2. CONVERSO DE UMA BASE QUALQUER PARA BASE DECIMAL 1.3.3. CONVERSO DA BASE DECIMAL PARA UMA BASE QUALQUER 1.3.4. CONVERSO ENTRE DUAS BASES DISTINTAS QUAISQUER 1.4. REPRESENTAO DE NMEROS NEGATIVOS 1.5. REPRESENTAO DE NMEROS BINRIOS NA NOTAO EM COMPLEMENTO A 2 1.6. REPRESENTAO DE NMEROS DECIMAIS NO FORMATO BINRIO (CDIGO BCD)

1. SISTEMAS DE NUMERAO

2.1 OPERAES DE ADIO E SUBTRAO BINRIAS EM COMPLEMENTO PARA 2 2.2. ADIO E SUBTRAO BINRIAS COM PALAVRAS DE DIFERENTES TAMANHOS 2.3.CONSIDERAES FINAIS

2. ARITMTICA BINRIA

1.

SISTEMAS DE NUMERAO
Em qualquer sistema de numerao (decimal, hexadecimal, octal, binrio, etc...) um nmero representado por meio de uma seqncia de dgitos referentes a sua parte inteira, uma outra seqncia que se refere a sua parte fracionria e um smbolo de separao entre as duas partes (vrgula ou ponto). Portanto, um sistema de numerao composto por: - Uma base n; - Nmero corresponde uma seqncia de dgitos; - Valor do dgito determinado em funo do dgito e da sua posio na seqncia de dgitos. Assim, o valor de cada dgito corresponde s potncias inteiras da base do sistema de numerao; Num sistema de numerao genrico de base r o nmero N representado da seguinte forma: N(r) = djdj1...d3d2d1d0(,)d(1)d(2)...d[(k1)]d(k), ONDE N(r) = dj*rj + dj-1*rj-1 + ...d1*r1 + d0*r0 + d-1*r-1 + ... + d[(k1)]*r[(k1)]+d(k)*r(k)
- Conjunto de n smbolos distintos denominados dgitos;

- N o nmero representado. - r a base numrica de representao - dj e d1 so os dgitos mais significativos das partes inteira e fracionria respectivamente. - d0 e dk so os dgitos menos significativos das partes inteira e fracionria respectivamente. - {a0, a1, ..., an-1} conjunto de n dgitos da base n A parte inteira composta por j +1 dgitos e a parte fracionria composta por k dgitos. Os sistemas numricos mais utilizados so os seguintes: Decimal ou de base 10 - r = 10 ; alfabeto d {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}*; Binrio ou de base 2 - base r = 2 ; alfabeto; d {0, 1}* Hexadecimal ou de base 16 - base r =16 ; d {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F}*, onde A=10, B=11, C=12; D=13, E=14 e F=15 na base decimal; Octal ou de base 8 base r = 8 ; alfabeto; d {0, 1, 2, 3, 4, 5, 6, 7}* * valores na base decimal

1.1. SISTEMA DE NUMERAO BINRIO Os atuais sistemas de computao compreendem somente dois estados, em razo de suas portas lgicas elementares reconhecerem somente os nveis alto de baixo de tenso que passa por elas. Por este motivo, os computadores no conseguem trabalhar diretamente com sistemas decimais de numerao. Sendo adotado o sistema de numerao binrio. O sistema de numerao binrio permite representar nmeros utilizando apenas os dois smbolos (dgitos 0 e 1). A grande vantagem conseguida com a representao de nmeros decimais no sistema binrio justamente adequar-se a limitao existente dos atuais computadores. Como exemplo, o valor do nmero 1101,101 em base 10 :
(1101,101)2 = 1x23 + 1x22 + 0x21 + 1x20 + 1x21 + 0x22 + 1x23 =(13,625)10

1.2. SISTEMAS DE NUMERAO OCTAL E HEXADECIMAL

Alm do sistema binrio (base 2), o sistema octal (base 8) e o sistema hexadecimal (base 16) so tambm formas convenientes para representar informao binria, pois permitem representar um determinado valor de forma mais compacta que no sistema binrio. Em particular o sistema hexadecimal tem particular interesse como forma de representao de dados binrios porque como um dgito hexadecimal representa um conjunto de 4 dgitos binrios (notar que 24 =16) bastam dois dgitos hexadecimais para representar 1 byte (1 byte corresponde a uma palavra binria de 8 bits).

1.3. CONVERSO DE BASES NUMRICAS 1.3.1. CONVERSO ENTRE AS BASES POTNCIAS DE 2 1.3.1.1. CONVERSO ENTRE A BASE BINRIA E A HEXADECIMAL Para passar um nmero de binrio para hexadecimal, agrupam-se os dgitos binrios em grupos de quatro a partir vrgula ou ponto que separa a parte inteira da parte fracionria em ambas as direes. A seguir cada grupo substitudo pelo seu equivalente hexadecimal. Relativamente parte fracionria, as posies incompletas direita do algarismo menos significativo so preenchidas com zeros. Ex: 10111002 = 5C16 0101 = 5 1100 = C 11,1011112 = 3,BC16 0011 = 3 1011 = B 1100 = C

1.3.1.2. CONVERSO ENTRE A BASE HEXADECIMAL E A BINRIA Para passar da representao em sistema hexadecimal para binrio cada dgito hexadecimal substitudo pela sua representao binria em quatro bits. Depois da converso, os zeros esquerda do algarismo mais significativo da parte inteira so desprezados, assim como os zeros direita da parte fracionria no antecedidos por algarismos significativos (diferentes de zero). 81F16 = 1000000111112 8 = 1000 1 = 0001 F = 1111 1DBA,816 = 1110110111010,12 1 = 0001 = 1 D =1101 B =1011 A =1010 8 =1000 (estes trs ltimos zeros so ignorados por estarem na parte fracionria e no terem nenhum algarismo significativo anterior a eles)

1.3.1.3 CONVERSO ENTRE A BASE BINRIA E A OCTAL Para passar um nmero de binrio para octal, agrupam-se os dgitos binrios em grupos de trs a partir vrgula ou ponto que separa a parte inteira da parte fracionria em ambas as direes. A seguir cada grupo substitudo pelo seu equivalente octal. Relativamente parte fracionria, as posies incompletas direita do algarismo menos significativo so preenchidas com zeros. 101111102 = 2768 10 = 2 111 = 7 110 = 6 1011111000,00112 = 1370,148 1 = 1; 011 = 3; 111 = 7; 000 = 0; 001 = 1; 100 = 4;

1.3.1.4. CONVERSO ENTRE A BASE OCTAL E A BINRIA Para passar da representao em sistema octal para binrio cada dgito octal substitudo pela sua representao binria em trs bits. Depois da converso, os zeros esquerda do algarismo mais significativo da parte inteira so desprezados, assim como os zeros direita da parte fracionria no antecedidos por algarismos significativos (diferentes de zero). 15378 = 11010111112; 1 = 001 (estes dois zeros sero ignorados); 5 =101; 3 = 011; 7 =111 2046,168 = 10000100110,001112; 2 = 010 (o zero a esquerda ser ignorado); 0 = 000; 4 =100; 6 =110; 1 = 001; 6 =110; (o zero a direita ser ignorado)

1.3.1.5. CONVERSO ENTRE BASES OCTAL E HEXADECIMAL A converso entre a base 8 e a base 16 pode ser conseguida muito facilmente utilizando uma representao intermdia em base 2 e aplicando as regras descritas acima para converter entre a base 2 e as bases 8 e 16. FAZER QUESTES 1 a 4

1.3.2. CONVERSO DE UMA BASE QUALQUER PARA BASE DECIMAL


Deve-se seguir o modelo explanado no slide 2, ou seja, deve-se multiplicar cada algarismo significativo por np, onde n a base do nmero que se quer converter e p a posio do dgito no nmero. A posio do algarismo logo a esquerda da vrgula ou ponto que separa a parte inteira da parte fracionria vale 0, decrescendo a direita e crescendo a esquerda. O resultado final da converso resultar da soma dos valores encontrados nas multiplicaes acima. Ex: 1587.469 = 1*93 + 5*92 + 8*91 + 7*90 + 4*9-1 + 6*9-2 = 1213.51851810 (na verdade, o valor encontrado foi uma dizima, que foi truncada na 6 casa decimal)

1.3.3. CONVERSO DE UMA BASE DECIMAL PARA UMA BASE QUALQUER Nos pontos anteriores foi descrito o processo de converso de quantidades expressas em bases quaisquer para base 10. A converso de um nmero na base 10 para uma base diferente realiza-se em duas etapas: (1) A parte inteira convertida segundo o mtodo das divises sucessivas. (2) A parte fracionria convertida segundo o mtodo das multiplicaes sucessivas. (1) Dividi-se o valor sucessivamente pelo valor da base que se deseja converter o nmero, o nmero convertido ser formado pelos restos das divises efetuadas, onde o algarismo menos significativo o obtido na primeira diviso, decrescendo a posio do algarismo nas divises seguintes e com o algarismo mais significativo sendo o quociente da ltima diviso. Converso de 830410 para base 9: 830410 = 123469 Os zeros esquerda (caso existam) no so considerados. 8304 / 9 = 922 resto 6 922 / 9 = 102 resto 4 102 / 9 = 11 resto 3 11 / 9 = 1 resto 2 (2) Multiplica-se o valor sucessivamente pelo valor da base que se deseja converter o nmero, o nmero convertido ser formado pelas partes inteiras das multiplicaes efetuadas, onde o algarismo mais significativo o obtido na primeira multiplicao, decrescendo a posio do algarismo nas multiplicaes seguintes. Converso de 0,354 para hexadecimal 0,354 * 16 = 5,664 0,664 * 16 = 10,624 (1010 = A16) 0,624 * 16 = 9,984 ... 0,35410 = 0,5A9...16

1.3.4. CONVERSO ENTRE DUAS BASES DISTINTAS QUAISQUER

A converso de uma quantidade numrica expressa em base r (com r 10) para uma base genrica s segue o seguinte raciocnio (quer para a parte inteira quer para a parte fracionria): Nr > N10 > Ns - ou seja: primeiro faz-se a converso da base r de origem para decimal e depois para a base s pretendida (itens 1.3.2 e 1.3.3 respectivamente). Os casos particulares de converso octal para binrio (e vice-versa) e de hexadecimal para binrio (e viceversa) j foram descritos anteriormente. FAZER QUESTES 5 a 12

1.4. REPRESENTAO DE NMEROS NEGATIVOS No sistema de numerao decimal que utilizamos correntemente representamos nmeros negativos precedendo o seu valor de um sinal menos (-) e nmeros positivos pelo seu valor ou precedendo-o de um sinal (+). A esta forma de representao chamamos sinal e grandeza ou sinal e magnitude e podemos utiliz-la naturalmente para representao de grandezas negativas em qualquer sistema de numerao. No caso particular do sistema binrio, o sinal representado por um bit adicional que o 1 lgico para representar grandezas negativas e o 0 lgico para representar grandezas positivas. No sistema binrio o bit de sinal de uma palavra binria o bit mais significativo da palavra. Sendo assim, com N bits podemos representar nmeros positivos e negativos no intervalo [(2N1 1), 2N1 1]. Por exemplo, com 8 bits podemos representar nmeros na notao sinal e magnitude compreendidos no intervalo [127,+127] Exemplos: + 8510 = 010101012 8510 = 110101012 + 010 = 000000002 * 010 = 100000002 * * Nesta notao o zero tem duas formas de representao possveis, o que extremamente inconveniente.

1.5.

REPRESENTAO DE COMPLEMENTO A 2

NMEROS

BINRIOS

NA

NOTAO

EM

Complemento para 2 uma forma de representao de nmeros negativos representados no sistema binrio ou de base 2, e consiste em representar valores negativos como complementos de valores positivos de mesmo mdulo. Primeiramente, necessrio estabelecer o nmero de bits da palavra binria utilizada para representao da informao (1 bit para o sinal e os demais para a mantissa). Uma vez estabelecido o tamanho da palavra em bits, qualquer transporte resultante da soma ou subtrao aritmticas dos bits mais significativos de duas palavras binrias so desprezados. Na notao em complemento para 2, a gama de representao possvel para uma palavra binria com N bits a seguinte [2N1 ,+2N1 1] (1 valor a mais que na notao sinal e magnitude comparando palavras que utilizam a mesma quantidade de bits). Exemplos: Num microprocessador com registros de 8 bits, cada registro apenas poder armazenar nmeros compreendidos obrigatoriamente entre [128,+127], (ou em binrio [10000000,01111111]). Qualquer resultado superior a 127 ou inferior a -128 resulta numa condio de overflow (erro por limitao da capacidade de armazenamento da informao binria).

Num microprocessador com registros de 16 bits o resultado da operao de soma ou subtrao aritmticas (binria) de duas variveis A e B dever ser um nmero compreendido obrigatoriamente entre [32768,+32767], (ou em binrio [10000000 00000000, 01111111 11111111]). Qualquer resultado superior a 32767 ou inferior a 32768 resulta numa condio de overflow. Na notao em complemento para 2 fundamental ter em ateno os seguintes pressupostos: 1. O tamanho da palavra binria utilizada para na representao da informao. 2. O bit mais significativo (MSB em ingls) o bit de sinal. Se este bit vale 1 ento a grandeza negativa, enquanto que se vale 0 ento a grandeza positiva. 3. O complemento para 2 de um nmero binrio positivo X resulta no seu valor negativo X (MSB invertido passando a 1). Da mesma forma, o complemento para 2 de um nmero binrio negativo X (MSB est a 1) resulta no seu valor positivo X (MSB invertido passando a 0). Ou seja, o nmero binrio mantm a mesma magnitude (ou grandeza), mas o bit de sinal invertido. 4. O MSB indica o sinal, mas, em valores negativos, a mantissa no informa diretamente o valor absoluto da grandeza Exemplo: + 8510 = 010101012 (representao sinal e magnitude) 8510 = 110101012 (representao sinal e magnitude) Nestes casos, o MSB representa o sinal e os outros bits representam a grandeza + 8510 = 010101012 (representao complemento a base) 8510 = 101010112 (representao complemento a base)

Nestes casos o MSB continua representando o sinal, em +8510, os outros bits representam a grandeza 85, porm em -85, temos 0101011 = 43 (128-85) Existem duas formas possveis de se determinar o complemento para 2 de um nmero binrio com o tamanho de N bits: 1. Complementa-se (inverte-se) cada bit da palavra binria a partir do bit menos significativo (LSB em ingls) em direo ao bit mais significativo (MSB). Em seguida adiciona-se 1 ao resultado obtido. 2. Partindo do bit menos significativo (LSB) mantm-se os valores dos bits da palavra binria at que o primeiro 1 seja encontrado. A partir da posio seguinte a esta, os restantes bits so complementados em direo ao bit mais significativo (MSB). Exemplos: Determinar o complemento para 2 de + 127 = 01111111. 1. Complementando cada bit da palavra a partir do LSB obtemos 10000000. Em seguida somamos 1 ao LSB de 10000000 e obtemos 10000001 = 127 na notao em complemento para 2 para palavras binrias de 8 bits. Notar que o MSB igual a 1, logo o nmero negativo. 2. Partindo do LSB da palavra binria +127 = 01111111 mantemos os valores dos bits da palavra at encontrar o primeiro 1 que neste exemplo o prprio LSB. A partir da posio seguinte complementamos os demais bits em direo ao MSB. 127 =1000 0001.

Outros exemplos (em complemento para 2 e para palavras com um byte de tamanho): +31 = 0001 1111 -> 31 =1110 0001; +3 = 0000 0011 -> 3 =1111 1101; +0 = 0000 0000 -> 0 = (1)0000 0000. Na notao em complemento para 2 o zero apenas tem uma representao possvel, sendo que o bit de transporte resultante desta operao desprezado uma vez que a representao em oito bits. No existe overflow porque o bit de sinal (na oitava posio e ao lado do bit desprezado) igual a 0. 128 = 1000 0000 -> + 128 0000 0000 . No podemos calcular o complemento para 2 de -128 porque o nmero 128 no pode ser representado em complemento para 2 com palavras de comprimento igual a 8 bits. FAZER QUESTES 13 a 17

1.6. Representao de nmeros decimais no formato binrio (cdigo BCD) A forma mais comum de representar valores numricos em sistemas digitais consiste na utilizao do sistema de numerao binrio j apresentado. A utilizao deste sistema vantajosa porque permite utilizar de forma eficiente os diferentes cdigos representados por um determinado nmero de bits. No entanto, quando valores numricos so apresentados em alguns dispositivos de sada para serem percebidos por um ser humano, devem ser mostrados em formato decimal por ser este o sistema de numerao a que estamos habituados a lidar. O processo necessrio para determinao dos dgitos decimais que formam um determinado valor requer a realizao de uma srie de divises por 10 que so bastante mais complexas que os somadores ou subtratores binrios. Outra forma de representao de nmeros usando o sistema binrio consiste em represent-los como uma srie de dgitos decimais, cada um representado como um valor de 4 bits (entre 0 e 9). Por exemplo, o nmero decimal 1234 pode escrever-se como uma seqncia de grupos de 4 bits, formando uma palavra binria com tamanho total igual a 16 bits, onde cada grupo de 4 bits codifica um dgito decimal: 123410 = 0001 0010 0011 0100 BCD 110 = 00012 210 = 00102 310 = 00112 410 = 01002

Este formato particular de representao de nmeros decimais no sistema binrio conhecido por Decimal Codificado em Binrio, ou como vulgarmente conhecido BCD (do ingls Binary-Coded Decimal). O cdigo BCD um cdigo ponderado (pesos 8, 4, 2 e 1), codificado em palavras binrias de 4 bits. A principal vantagem deste cdigo que as converses entre decimal e BCD so fceis de se realizar, uma vez que um nmero decimal de n dgitos pode ser automaticamente representado em BCD atravs da substituio de cada dgito pelo seu valor binrio em 4 bits, ou seja, cada byte de informao codifica dois dgitos decimais. Uma das desvantagens do formato BCD a m utilizao dos bits empreguados na representao de um nmero decimal. Com 16 bits o sistema de numerao binrio permite representar nmeros decimais sem sinal entre 0 e 65535, mas no formato BCD apenas possvel representar valores entre 0 e 9999, j que nos 4 bits que representam cada dgito decimal no so utilizados os cdigos entre 1010 (10) e 1111 (15). A representao de nmeros com sinal no formato BCD pode ser feita usando uma notao sinal e grandeza ou ento a notao em complemento para 10. Outros exemplos: 23 0010 0011 (0010 -> 2 e 0011 - > 3) 78 0111 1000 (0111 -> 7 e 1000 -> 8)

Fazer questo 18

10

2. ARITMTICA BINRIA 2.1 OPERAES DE ADIO E SUBTRAO BINRIAS EM COMPLEMENTO PARA 2 A representao de valores com sinal em complemento para dois, bem como o armazenamento dos resultados obtidos a partir das operaes aritmticas pressupe um nmero de bits determinados para a sua representao e deve ser ignorado o transporte que gerado para alm do bit mais significativo. A partir da representao de nmeros binrios na notao em complemento a 2 possvel realizar as operaes aritmticas da soma e da subtrao binrias com dois mdulos bsicos apenas: um somador e um inversor. Isto porque A B = A + (B) , ou seja, na subtrao basta calcular o complemento a 2 de B. Em complemento a 2 os nmeros em formato binrio podem ser somados digito a digito, tal como na aritmtica decimal. O bit de transporte esquerda do bit mais significativo (MSB) corresponde posio 8 (0,1,2,...,8) numa soma de palavras com um comprimento igual a 1 byte. Para palavras binrias com este tamanho o resultado obtido estar correto partindo do princpio que um nmero compreendido entre +127 e -128. Caso contrrio corresponde a uma situao de overflow, no tendo significado. >>> 0011 1010 + 0010 0000 = 0101 Exemplo 1: + 5810 + 3210 = +9010 1010 Exemplo 2: + 9710 7210 = 9710 + (72)10 = 2510. A operao de subtrao binria transformada numa operao de adio de um nmero positivo 97 = 01110111 com um nmero negativo 72 = 1010 0010 , ambos representados em complemento para 2. +9710 7210 = 0110 00012 0100 10002 +9710 + (-72)10 = 0110 00012 + 1011 10002 (complemento a base 2 de 0100 10002) +9710 + (-72)10 = *(1)0001 1001 = 0001 1001 = +25 * o 1 entre parenteses, por estar a esquerda do MSB ser desprezado

Exemplo 3: - 2510 3210 = (-25)10 + (-32)10 = -5710 - 0001 1001 0010 0000 1110 0111 + 1110 0000 (nesta linha, calculamos o complemento a 2 dos dois valores negativos) *(1)1100 0111 = 1100 0111 = -5710

Uma situao de overflow ocorre se o resultado da soma de dois nmeros positivos resultar um valor de sinal negativo ou quando a soma de dois nmeros negativos resultar um valor de sinal positivo, ou seja: sempre que h troca de sinal na soma de dois nmeros com o mesmo sinal. FAZER QUESTES 19 a 25

11

2.2. ADIO E SUBTRAO ARITMTICAS (BINRIAS) COM PALAVRAS DE DIFERENTES TAMANHOS Quando se efetua a adio binria de dois nmeros representados em complemento para dois, os dois operandos e o resultado devem ter o mesmo nmero de bits. Se os valores a somar tiverem nmeros diferentes de bits ento o resultado ter no mximo o maior nmero de bits entre os dois operandos. Neste caso necessrio representar o menor operando com o mesmo numero de bits do maior operando. Se o valor positivo ento basta acrescentar zeros esquerda mantendo o valor do seu bit de sinal. No entanto, se esse valor negativo o seu bit mais significativo 1 e necessrio acrescentar 1s esquerda por forma a preservar o seu sinal. A esta operao d-se o nome de extenso de sinal j que consiste em estender o bit de sinal de um nmero para completar o nmero de bits requeridos para a realizao de uma operao aritmtica Exemplos Adicionar x = 1001 com y = 110000, representados em complemento para 2 com 4 e 6 bits, respectivamente. 1001 + 11 0000 11 1101 + 11 0000 = (1) 10 1101 (resultado com 6 bits) extenso do sinal de x Adicionar x = 0 1010 com y = 1000 0000 , representados em complemento para 2 com 4 e 8 bits respectivamente. 0 1010 + 1000 0000 0000 1010 + 1000 0000 = 1000 1010 (resultado de 8 bits) extenso do sinal de x

CONSIDERAES FINAIS Concluindo o trabalho sobre aritmtica binria, alguns pontos so especialmente importantes. 1. Os operandos devem ser escritos com o mesmo nmero de bits (caso no sejam, deve haver a extenso de sinal esplanada acima) 2. o bit a esquerda do bit de sinal sempre desprezado 3. Uma subtrao sempre ser tratada como uma soma de inversos 4. O overflow ocorre quando a soma de valores de mesmo sinal resulta um valor com sinal diferente dos operandos

12

QUESTES DE PROVAS 1. CESGRANRIO - PETROBRAS - ANALISTA DE SISTEMAS JNIOR - DESENVOLVIMENTO DE SOLUES 31 - Qual das opes abaixo mostra um nmero em hexadecimal que corresponde ao nmero binrio 1011010? (A) 3F (B) 5A (C) 7B (D) B2 (E) D1

2. CESGRANRIO - PETROBRAS - ANALISTA DE SISTEMAS JNIOR SUPORTE DE INFRAESTRUTURA 23 - O formato das instrues de alguns processadores composto por um conjunto de bits para o cdigo da operao e outro conjunto de bits para operando, se houver. Considere uma mquina cujo tamanho das instrues 16 bits e sendo o formato o mesmo para todas as instrues: 5 bits para o cdigo e 11 bits para o operando. Qual o nmero mximo de operaes distintas que essa mquina capaz de executar? (A) 5 (B) 11 (C) 16 (D) 31 (E) 32

3. ESAF - Tcnico - MPU 23 - Sabendo que o caractere a representado em ASCII pelo valor 61 hexadecimal, determine o valor em binrio associado ao caractere z na representao ASCII. a) 0101 0111 d) 0111 1010 b) 0101 1010 e) 1000 0111 c) 0110 0000

4. O nmero (25,2A)16, vale, na base octal? 5. ESAF - Analista - IRB 14 - O nmero 0,6875 na base dez equivale a a) 0,0111 na base 2. b) 0,1000 na base 2. c) 1,1000 na base 2. d) 1,1010 na base 2. e) 0,1011 na base 2. 6. ESAF - Tcnico - MPU 24 - Supondo que a operao aritmtica de multiplicao entre os nmeros binrios positivos 01101101 e 00110011 realizada em 16 bits, assinale a opo que apresenta o resultado correto na base 10. a) 535 b) 1047 c) 2071 d) 5559 e) 8215

7. ESAF Tcnico da Receita Federal do Brasil - TRFB 03 - O nmero inteiro positivo 5487, no sistema decimal, ser representado no sistema hexadecimal por a) CB78 b) DC89 c) 156F d) F651 e) 1157

8. Qual das opes abaixo mostra em sistema de base 5 o nmero (236)7? a. 125 b. 1111101 c. 1000 d. 100 e. 25

9. Qual dos valores abaixo mostra um nmero em base octal do nmero (AH)20? a. 217 b. 331 c. D9 d. 11011001 e. 52

10. O nmero (0,325)8, vale no sistema decimal? a. 2,46 b. 0,416 c. 2,648 d. 6,84 e. 0,228

11. Supondo que a operao aritmtica de multiplicao entre os nmeros binrios positivos 1101 e x realizada em 16 bits, e sabendo-se que seu resultado vale (1111)8 assinale a opo que apresenta o valor correto de x na base 7. a) 45 b) 101101 c) 63 d) 54 e) 32

12. CESGRANRIO - PETROBRAS - ANALISTA DE SISTEMAS JNIOR SUPORTE DE INFRAESTRUTURA 22 - Um computador utiliza representao de inteiros em complemento a dois (C2) com valores armazenados em 8 bits. Indique qual a representao em C2 do valor decimal -123. (A) 10000101 (B) 10000100 (C) 01111011 (D) 11111011 (E) 10000111 13. ESAF - Tcnico - MPU 18 - Em palavras de 16 bits, a faixa de valores cobertos pela representao complemento-a-dois (ou complemento-de-dois, segundo alguns autores) para nmeros inteiros positivos e negativos de a) 32768 a +32767. b) 32767 a +32768. c) 65535 a +65535. d) 65536 a +65535. e) 65535 a +65536. 14. Qual a representao em sinal e magnitude do valor (115)10 com valores representados em 8 bits (o MSB o sinal, os outros sete so a magnitude)? a. 1110011 b. 11110011 c. 01110011 d. 10001101 e. 1110101

15. Qual a representao em complemento a dois do valor (-42)9 em 8 bits? a. 38 b. 38 c. 101010 d. 00101010 e. 11011010

16. Em palavras de 8 bits, a faixa de valores cobertos pela representao C2 para nmeros inteiros positivos e negativos de? a) 256 a +255 d) 128 a +127 b) 255 a +256 e) 127 a +128 c) 127 a +127

17. Os valores representados na representao BCD de 17 bits podem ser representados com quantos bits na representao complemento a dois? a. 12 b. 13 c. 14 d. 15 e. 16

18. ESAF - Analista - IRB 18 - Considerando as regras de overflow para a subtrao, correto afirmar que ocorreu overflow se o resultado, ao se subtrair a) um nmero negativo de um nmero positivo, for zero. b) um nmero positivo de um nmero positivo, for zero. c) um nmero positivo de um nmero negativo, for negativo. 2

d) um nmero negativo de um nmero positivo, for positivo. e) um nmero negativo de um nmero positivo, for negativo. 19. NCE BNDES - ANLISE DE SISTEMAS - DESENVOLVIMENTO 5 (objetiva) - 31- Em um computador hipottico, onde os nmeros so armazenados utilizando-se exatamente 8 bits no formato de complemento a dois, o resultado da operao de adio de 77 com 90 ser (todos os nmeros esto representados na base 10): (A) 167; (B) 89; (C) 27; (D) 89; (E) 167.

20. Em que operao nunca ocorrer overflow, sabendo-se que a e b esto dentro da faixa de representao admitida pelo sistema? a. a + b, onde a e b > 0 d. a + b, onde a e b < 0 b. a b, onde a > 0 e b < 0 e. a - b, onde a < 0 e b > 0 c. a + b, onde a > 0 e b < 0

21. Em uma operao de adio, qual o nmero mnimo de operandos deve existir, para que, independente de seus sinais, haja possibilidade de haver overflow, considerando-se que seus valores absolutos so desconhecidos, e que individualmente esto contidos na faixa de representao? a. 2 b. 3 c. 4 d. 5 e. 6

- Em um computador hipottico, onde os nmeros so armazenados utilizando-se exatamente 8 bits no formato de complemento a dois, calcule o resultado das seguintes operaes (os valores informados esto todos na base decimal): 22 Subtrair -25 de -54 23 Adicionar 28 a 110 24 Subtrair 92 de 65 GABARITO 1. b 2. e 3. d 4. d 5. e 6. d 7. c 8. c 9. b 10. b 11. c 12. a 13. a 14. c 15. e 16. c 17. e 18. b 19. c 20. b 21. 79 22. 118 23. 67

ARITMTICA DE PONTO FLUTUANTE


Um computador ou calculadora representa um n nmero real no sistema denominado aritm aritmtica de ponto flutuante. Neste sistema, o n nmero x ser ser representado na forma: h (0.d1d2d3...dt) x b , onde b a base em que a m mquina opera; t o n nmero de d dgitos na mantissa; 0 <= dj <= b - 1, j = 1, 1,,t, d1 0; h o expoente num intervalo [m; M].

Em qualquer m mquina, apenas um subconjunto de nmeros reais representado exatamente, e, portanto, a representa representao de um n nmero real ser ser realizada atrav atravs de truncamento e/ou arredondamento. Vale a pena salientar aqui que, num computador, a quantidade de n nmeros que pode ser armazenada pequena e mesmo insignificante em presen presena da totalidade existente de n nmeros, mas suficiente para finalidade pr tica. pr Um n nmero x = q x bh armazenado numa palavra de computador como um n nmero de ponto flutuante como segue: - 1 bit armazena o sinal de x; - m bits armazena a mantissa q; - s bits armazena o expoente h. Os comprimentos de armazenamento m e s so caracter caractersticas de f fbrica do computador.

Nmero de Ponto Flutuante Normalizado


Se x F e x est est escrito na forma normalizada ento x = 0, d1d2d3...d ...dn x be, onde d1 0, onde d1 sempre diferente de zero, e o expoente varia entre m e M. O n nmero de ponto flutuante normalizado est est definido segundo o padro IEEEIEEE-754, ou seja: - utiliza mantissa normalizada em base 2. Sendo assim, como o primeiro bit sempre 1, o bit mais significativo no precisa ser representado e obt obtm-se um ganho de 1 bit (bit impl cito). impl - o expoente representado na forma normalizada, a qual facilita compara comparaes e evita o uso de 1 bit de sinal antes dos expoentes.

1.1 - Caractersticas do Sistema de Ponto Flutuante


possvel representar somente um intervalo limitado de nmeros. A representao em um ponto flutuante de um nmero real x com mais do que n-bits de mantissa obtida arredondando este nmero real para o nmero de ponto flutuante mais prximo. O espaamento entre elementos de F muda para cada potncia fixada de b.

Para qualquer mantissa m, vale b-1 |m| < 1. x F, (-x) F. 0 F e 1 F. O menor nmero de ponto flutuante no nulo, em valor absoluto, dado por 0,1xbm . O maior nmero de ponto flutuante, em valor absoluto, dado por 0,(b-1)... (b-1)*x bM.
*o algarismo (b-1) se repetindo n vezes, onde n equivale ao nmero de bits da mantissa * m o limite inferior do expoente * M o limite superior da mantissa

O nmero de elementos de F denotado por #F e calculado por: #F = 2(b - 1)bn-1(M - m + 1) + 1.

ARITMTICA EM PONTO FLUTUANTE


Alguns computadores no tm suporte de hardware para fazer operaes aritmticas em ponto flutuante. Alguns dispem de processadores especializados que podem ser adquiridos como opcionais. Outros no tem esse recurso nem como opcional e nesse caso, as operaes aritmticas em ponto flutuante so resolvidas atravs de programa (isso , por software).

SOMA E SUBTRA SUBTRAO EM PONTO FLUTUANTE


Algoritmo:
a)

VerificaVerifica-se se uma das mantissas a operar zero; caso afirmativo: - se for uma soma e uma das parcelas for zero ---> ---> o resultado igual outra parcela - se for uma subtra subtrao e o subtraendo for zero ---> ---> o resultado igual ao minuendo - se for uma subtra subtrao e o minuendo for zero ---> ---> o resultado igual ao subtraendo, com o sinal invertido

b) Se no houver zeros: - reduzir ao mesmo expoente (o maior); - somar / subtrair as mantissas; - normalizar o resultado. (m1 x be1) + (m2 x be2) = (m1 x be1) + (m3 x be1) = (m1 + m3) x be1 (m1 x be1) - (m2 x be2) = (m1 x be1) - (m3 x be1) = (m1 - m3) x be1

Algoritmo:

MULTIPLICA MULTIPLICAO EM PONTO FLUTUANTE*

a) VerificaVerifica-se se uma das mantissas a operar zero; caso afirmativo, o resultado zero; b) Se no houver zeros: - somar os expoentes; - multiplicar as mantissas; - normalizar o resultado. (m1 x be1) x (m2 x be2) = (m1 x m2) b (e1+e2) Obs.: Ao fazer a soma dos expoentes, verificar qual a representa representao do expoente. - se o expoente estiver representado em Sinal e Magnitude, usar o algoritmo de soma em S/M; S/M; - se o expoente estiver representado em excesso de N (caracter (caracterstica), ao somar as caracter caractersticas estaremos somando N duas vezes; como caracter caracterstica o expoente mais excesso de N, necess necessrio subtrair N da soma: (e1 (e1 + N) + (e2 (e2 + N) = (e1 (e1 + e2 + 2 N), logo preciso subtrair N do resultado.

DIVISO EM PONTO FLUTUANTE*


Algoritmo: a) VerificaVerifica-se se uma das mantissas a operar zero; caso afirmativo: - se o divisor zero, imposs impossvel e d d erro por diviso de zero; - se o dividendo zero, o resultado igual a zero. b) Se no houver zeros: - subtrair os expoentes; - dividir as mantissas; - normalizar o resultado. (e1-e2) (m1 x be1) / (m2 x be2) = (m1 / m2) b(e1Obs.: Ao fazer a subtra subtrao dos expoentes, verificar qual a representa representao do expoente. - se o expoente estiver representado em Sinal e Magnitude, usar o algoritmo de subtra subtrao em S/M; S/M; - se o expoente estiver representado em excesso de N (caracter (caracterstica), ao subtrair as caracter caractersticas estaremos eliminando N; como caracter caracterstica o expoente mais excesso de N, necess necessrio somar N ao resultado: (e1 + N) - (e2 + N) = (e1 (e1 - e2) e2) + (N - N) logo preciso somar N ao resultado.

Normaliza Normalizao / Desnormaliza Desnormalizao de Expoentes:


Nas opera operaes de multiplica multiplicao e diviso, os expoentes devem ser desnormalizados desnormalizados antes de serem operados. Tal opera operao consiste em inverter o MSB (Bit mais significativo) ou a direita do valor. Com isso os expoentes passam passam a serem representados em complemento a dois. O passo seguinte consiste em normalizar o resultado obtido, ou seja, novamente inverter seu MSB. Com isso ele passa a ser novamente novamente representado de forma normalizada

A representa representao bin binria em ponto flutuante mais comumente adotada corresponde ao padro IEEE 754, de 1985, que define nmeros em preciso simples (32 bits) e dupla (64 bits). Neste padro padro apenas o sinal, mantissa e expoente so armazenados. sinal * mantissa * 2 expoente A base 2 impl implcita e no armazenada, bem como o ponto bin binrio, cuja posi posio assumida a posi posio imediatamente esquerda da mantissa. O n nmero armazenado no formato normalizado, que assume o valor '1' no bit mais significativo da mantissa. Este valor valor no armazenado, o que aumenta a preciso do n nmero. A tabela abaixo apresenta o n nmero de bits empregado para o sinal, expoente e mantissa. Preciso Simples Preciso Dupla Sinal 1 1 Expoente 8 11 Mantissa 23 52

A figura abaixo mostra quais bits so atribu atribudos para cada uma das partes de um n nmero em preciso simples, aonde o o bit de sinal representado por uma letra "s", os bits do expoente por letras "e", "e", e os bits que formam a mantissa por letras "m":

Um bit '0' no sinal indica um n nmero positivo, enquanto um bit '1' no sinal indica um n nmero negativo. A mantissa sempre interpretada como um nmero positivo, que deve ser multiplicado por -1 caso o sinal indique n nmero negativo.

Expoente
Para representar n nmeros positivos e negativos, diferentemente da representa ) somada ao representao complementocomplemento-a-dois, dois, uma polariza polarizao (bias (bias) expoente real para se obter o expoente armazenado. No padro IEEE IEEE para preciso simples este valor 127 (e para preciso dupla este valor 1023). Portanto um expoente zero armazenado como 127 no campo do expoente. Os expoentes -127 (todos os bits em '0') e +128 (todos os bits em '1') so reservados para n nmeros especiais.

QUESTES DE PROVA MINISTRIO DA PREVIDNCIA E ASSISTNCIA SOCIAL EMPRESA DE PROCESSAMENTO DE DADOS DA PREVIDNCIA SOCIAL Concurso Pblico (Aplicao: 23/9/2001) CARGO: ANALISTA DE TECNOLOGIA DA INFORMAO ATIVIDADE TELEMTICA PERFIL II INFRA-ESTRUTURA TECNOLGICA CESPE Em computadores, nmeros, caracteres e outros tipos de informao podem ser representados de diversas formas. Nos itens a seguir, considere que o subscrito de um nmero indica o sistema de numerao em que ele est representado. Assim, 25DEZ e 1001DOIS so nmeros representados em base dez e em base dois, respectivamente. Com relao aos sistemas de representao de nmeros e caracteres utilizados em computadores, julgue os itens a seguir. 1 O formato IEEE 754 para nmeros em ponto flutuante contm informaes acerca do sinal, do expoente e da mantissa do nmero.

CESPE 2005 Analista Judici Judicirio TRT/DF - Um usu usurio utiliza, em seu local de trabalho, um computador PC com processador Pentium 4 de 3 GHz de clock. clock. A sua capacidade de mem memria RAM igual a 128 MB e a de disco r rgido igual a 40 GB. No que se refere ao computador descrito acima, julgue os itens itens seguintes.

2 - As informa informaes apresentadas permitem concluir que o computador tem capacidade para realizar 3 bilhes de opera operaes em ponto flutuante por segundo.

GABARITO 1. CERTO. Cabe observar que no h h bit para representa representao do sinal do expoente, pois o mesmo representado de forma normalizada (veremos em sala isso)

2. ERRADO

NDICE 1. PRINC PRINCPIOS DE AN ANLISE COMBINAT COMBINATRIA

1.1. PRINC PRINCPIOS FUNDAMENTAIS DA CONTAGEM 1.2. EXERC EXERCCIOS DE PRINC PRINCPIOS FUNDAMENTAIS CONTAGEM 1.3. ARRANJO 1.4. EXERC EXERCCIOS DE ARRANJO 1.5. COMBINA COMBINAO 1.6. EXERC EXERCCIOS DE COMBINA COMBINAO 1.7. PERMUTA 1.8. EXERC EXERCCIOS DE PERMUTA

DA

2. QUESTES DE PROVAS

1. PRINC PRINCPIOS DE AN ANLISE COMBINAT COMBINATRIA O estudo da An Anlise Combinat Combinatria visa desenvolver m mtodos que permitam contar o n nmero de elementos de determinado conjunto, onde estes obedecem certas condi condies Ex: S o conjunto de n nmeros de 2 algarismos distintos formados com os algarismos 5, 6 e 7. S = {56, 57, 65, 67, 75, 76} e #S = 6 1.1. PRINC PRINCPIOS FUNDAMENTAIS DA CONTAGEM a. Sejam os conjuntos A = {a1, a2, ..., an} com n elementos e B = {b1, b2, ..., bp} com p elementos. PodePode-se formar n*p pares ordenados do tipo (ai, bj) onde ai A e bj B b. Seja o conjunto A = {a1, a2, ..., an} com n elementos, o nmero de pares ordenados (ai, aj) tais que ai e aj A e i j n*(nn*(n-1)

1.2. EXERC EXERCCIOS DE PRINC PRINCPIOS FUNDAMENTAIS DA CONTAGEM


1. Sejam os conjuntos A = {a1, a2, ..., an} com n elementos e B = {b1, b2, ..., bp} com p elementos. Calcule o quantidade de pares ordenados que podem ser formados, do tipo (ai, bj) onde ai A e bj B e i j. 2. De quantos modos distintos podemos colocar 3 livros juntos em uma estante de biblioteca? 3. De quantos modos distintos 4 pessoas podem sentar-se em um banco 6 lugares? 4. Qual o nmero possvel de anagramas que se pode montar com as letras da palavra AMOR? 5. Quantos nmeros com quatro algarismos podemos construir com os nmeros 2, 4, 6, 8? 6. Quantos nmeros com quatro algarismos distintos podemos construir com os nmeros 2, 4, 6, 8? 7. Consideremos um conjunto com n letras. Quantas permutaes comeam por uma determinada letra? 8. Quantos so os anagramas possveis com as letras: ABCDEFGHI? 9. Quantos so os anagramas possveis com as letras: ABCDEFGHI, comeando pelas trs letras do grupo ABC? 10. Quantos so os anagramas possveis com as letras: ABCDEFGHI, comeando por uma vogal e terminando por uma consoante?

Gabarito 1. n * p min {n,p} 2. 3*2*1 = 6 3. 6*5*4*3 = 360 4. 4*3*2*1 = 24 5. 4*4*4*4 = 256 6. 4*3*2*1 = 24 7. 1 * (n(n-1) * (n(n-2) * ... * 1 = (n(n-1)! 8. 9 * 8 * 7 * ... * 1 = 9! 9. 3*2*1*6*5*4*3*2*1 = 3!*6! 10. 3*6*7!

1.3. ARRANJO Seja S um conjunto de p elementos, tal que S = {a1, a2, ..., ap}, o n nmero de subsub-conjuntos de S com r elementos (1 <= r <= s) que podem ser formados formados a partir do conjunto S : Arranjo simples: m*(mm*(m-1)*...[m1)*...[m-(r(r-1)] = m! / (m(m-r)! = Am,r se os r elementos forem distintos e se o subconjunto {ai, aj} for considerado distinto de {aj, ai} Arranjo com repeti repetio: mr = (AR)m,r se no houver limita limitao quanto aos elementos dos subconjuntos

1.4. EXERC EXERCCIOS DE ARRANJO


1. Quantos n nmeros diferentes com menos de 2 algarismos podemos formar com os algarismos 0, 1, 2, 3, 4, 5 e 9? 2. Quantos n nmeros distintos com 2 algarismos diferentes, podemos formar com os algarismos 0, 1, 2, 3, 4, 5 e 9? 3. Quantos n nmeros distintos com 3 algarismos diferentes, podemos formar com os algarismos 0, 1, 2, 3, 4, 5 e 9? 4. Quantos n nmeros distintos menores que 1000 podem ser formados com algarismos diferentes de 0, 1, 2, 3, 4, 5 e 9? 5. UsandoUsando-se apenas os algarismos 1,3,5,7,9 quantos n nmeros com 3 algarismos podem ser montados? 6. UsandoUsando-se os algarismos 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9 quantos n nmeros com 4 algarismos distintos podem ser montados? 7. UsandoUsando-se as 26 letras do alfabeto: A, B, C, D, ..., Z quantos arranjos distintos com 3 letras distintas podem ser montados? 8. Com as 26 letras do alfabeto: A,B,C,D,...,Z e os algarismos 0, 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9, quantas placas de carros podem ser escritas contendo 3 letras letras distintas seguidas de 4 algarismos distintos? 9. Quantas palavras (independente de existirem em algum idioma) com 3 letras podemos formar com as 26 letras de nosso alfabeto ?

Gabarito: 1. N1=A(7,1)=7 (0 um nmero) 2. Os nmeros iniciados por 0 no tero 2 dgitos e sua quantidade corresponde a A(6,1), logo N2 = A(7,2)-A(6,1) = 7*66=426=36 3. Os nmeros iniciados por 0 no tero 3 dgitos e sua quantidade corresponde a A(6,2), logo N3 = A(7,3)-A(6,2) = 7*6*5-6*5 = 180 4. N=N1+N2+N3=7+36+180=223 5. A = A(5,3) = 5! / (5-3)! = 60 6. A = A(10,4) = 10! / (10-4)! = 5040 7. A = A(26,3) = 26!/(26-3)! = 26*25*24 = 15600 8. A = 5040 * 15600 = 78624000, sendo 5040 gabarito questo 7 e 15600 gabarito questo 8 9. AR(26,3) = 263 = 17576

1.5. COMBINA COMBINAO Seja S um conjunto de p elementos, tal que S = {a1, a2, ..., ap}, o n nmero de subsub-conjuntos de S com r elementos (1 <= r <= s) que podem ser formados formados a partir do conjunto S : Combina Combinao: m*(mm*(m-1)*...[m1)*...[m-(r(r-1)] / [r*(r[r*(r-1)*...*2*1] = m! / [(m[(m-r)!*r!] = Cm,r se os r elementos forem distintos e se o subconjunto {ai, aj} for considerado igual1 ao {a {aj, ai} A diferen diferena ou semelhan semelhana entre subconjuntos de mesmos elementos a principal diferen diferena entre arranjo e combina combinao, respectivamente
1

1.6. EXERC EXERCCIOS DE COMBINA COMBINAO


1. Quantos grupos de 3 pessoas podem ser montados com 5 pessoas? 2. Quantos grupos de 2 pessoas podem ser montados com 500 pessoas? pessoas? 3. Quantas combina combinaes com 4 elementos podem ser montadas com as 10 primeiras letras do alfabeto? 4. Quantas combina combinaes com 4 elementos podem ser montadas com as 7 primeiras letras do alfabeto, de tal forma que sempre comecem pela pela letra C? 5. Quantas combina combinaes com 5 elementos podem ser montadas com as 9 primeiras letras do alfabeto, de tal forma que sempre estejam juntas juntas as letras A e B? 6. Quantas combina combinaes com 4 elementos podem ser montadas com as 10 primeiras letras do alfabeto, de tal forma que no contenham nem as letras A e B? 7. Quantas combina combinaes com 4 elementos podem ser montadas com as 10 primeiras letras do alfabeto, de tal forma que somente uma das letras letras A ou B esteja presente, mas no as duas? 8. Quantas combina combinaes com 4 elementos podem ser montadas com as 7 primeiras letras do alfabeto, de tal forma que contm 2 dentre as as 3 letras A,B e C? 9. Em uma sala existem 30 pessoas, 14 mulheres e 16 homens. Quantas Quantas comisses podem ser montadas nesta sala contendo 3 mulheres e 5 homens? 10. Calcular o valor de m tal que 5*C(m+1,3)=2*C(m+2,2).

Gabarito: 1. C = 5!/(3!2!) = (5 (54)/(2 4)/(21) = 10 2. C=500!/(2!498!) = 500*499 / 2*1 = 124.750 3. C=10!/(4!6!) = (10*9*8*7)/(1*2*3*4) = 210 4. C=C(1,1)*C(6,3) = (1*6*5*4)/3!=20 5. C=C(2,2)*C(7,3) = (1*7*6*5)/6=35 6. C = C(8,4) = (8*7*6*5)/24 = 70 7. C=C(2,1)*C(8,3)=(2*8*7*6)/6=112 8. C=C(3,2)*C(4,2)=(3*4*3)/2=18 9. C=C(14,3)*C(16,5) = 364 * 4368 = 1.589.952 10. 5*(m+1)*m*(m5*(m+1)*m*(m-1) / 6 = 2*(m+2)*(m+1)/2 (dividi(dividi-se os dois lados da expresso por m+1) 5*m*(m5*m*(m-1) = 6*(m+2) 5m2 5m = 6m+12 5m2 11m 12 = 0 m = 3 (m = 0,8 que a outra raiz desta equa equao do 2 2 grau, no uma resposta v vlida)

1.7. PERMUTA PERMUTAO A fim de estabelecer uma melhor compreenso, analisemos dois exemplos simples da mesma 1. (Permuta (Permutao simples). De quantas formas podepode-se formar uma fila com 10 pessoas? Resposta: na verdade, esta questo quer saber de quantas formas podemos organizar estas 10 pessoas. Na 1 1 posi posio da fila podem ficar 10 pessoas 10 Na 2 2 posi posio da fila podem ficar 9 pessoas - 9 (10 menos o que ficou na 1 1 posi posio) Na 3 3 posi posio da fila podem ficar 8 pessoas - 8 (10 menos os dois primeiros da fila) ... Na 10 -1 10 posi posio da fila pode ficar 1 pessoa Total de possibilidades: 10*9*8*7*...*1 = 10! Logo Ps(10) = 10!, e, generalizando, Ps(m) = m!

2. (Permuta (Permutao com repeti repetio). De quantas formas podepode-se formar uma fila fila com 3 uvas, 2 ma mas e 5 pras? Resposta: a diferen diferena entre esta situa situao e a anterior est est no fato que no h h diferen diferena entre alguns elementos que vo compor esta fila. As 5 uvas podem fazer todas as permuta permutaes poss possveis entre elas (5! pela explica explicao acima), que a permuta resultante ser ser a mesma. Racioc Raciocnio an anlogo deve ser aplicado s ma mas e pras (e de forma gen genrica, a qualquer elemento repetido) Logo: Pr(10,2+3+5)= 10!/(2!*3!*5!), e generalizando Pr(T,a1+a2+...+a +...+an) = T! / a1!*a2!*...*a !*...*an!, e a1+ a2 + ... + an = T, sendo que entre os valores a1 a an esto inclu includos os valores no repetidos (neste caso ai = 1)

1.8. EXERC EXERCCIOS DE PERMUTA PERMUTAO 1. Quantos so os anagramas poss possveis com as letras da palavra: ARARA? 2.Quantos so os anagramas poss possveis para a palavra ANACONDA? 3. Quantos so os anagramas poss possveis para a palavra ANACONDA come comeando por A? 4. Quantos so os anagramas poss possveis para a palavra ANACONDA terminando por D? 5. Quantos so os anagramas poss possveis para a palavra: ANACONDA come comeando por A e terminando por D? 6. De quantos modos distintos podemos colocar 3 livros juntos em uma estante de biblioteca? 7. De quantos modos distintos 5 pessoas podem sentarsentar-se em um banco de jardim com 5 lugares? 8. Qual o n nmero poss possvel de anagramas que se pode montar com as letras da palavra AMOR? 9. Quantos n nmeros com cinco algarismos distintos podemos construir com os nmeros mpares 1,3,5,7,9. 10. Quantos n nmeros com cinco algarismos podemos construir com os n nmeros mpares 1,3,5,7,9, desde que estejam sempre juntos os algarismos 1 e 3.

Gabarito: 1. 5! / (3!*2!) 2. 8! / (3!*2!*1!*1!*1!) = 40320 / (6*2) = 3360 3. 7! / (2!*2!*1!*1!*1!) = 5040 / (2*2) = 1260 4. 7! / (3!*2!*1!*1!) = 5040 / (6*2) = 420 5. 6! / (2!*2!*1!*1!*1!) = 720 / (2*2) = 180 6. P(n)=n!, n=3; logo p(3)=3!=6 7. P(n)=n!, n=5; logo p(5)=5!=120 8. P(n)=n!, n=4; logo p(4)=4!=24 9. P(n)=n!, n=5; logo p(5)=5!=120 10. cada conjunto com os algarismos 13 e 31 forma um grupo que junto junto com os outros, formam 4 grupos, logo n=2*p(4)=2*24=48

2.

QUESTES DE PROVAS

1. CESGRANRIO - PETROBRAS - ANALISTA DE SISTEMAS J JNIOR DESENVOLVIMENTO DE SOLU SOLUES / 2005 72 - Quantos n nmeros naturais, de 4 algarismos (na base 10), menores que 4000 e divis divisveis por 5, podem ser formados usandousandose apenas os algarismos 1, 2, 3, 4, e 5? (A) 20 (B) 25 (C) 75 (D) 625 (E) 3125

2. CESGRANRIO - PETROBRAS - ANALISTA DE SISTEMAS J JNIOR DESENVOLVIMENTO DE SOLU SOLUES / 2005 78 - Quantos so os anagramas da palavra fila? (Cada anagrama da palavra fila uma ordena ordenao das letras f, i, l, a). (A) 1 (B) 4 (C) 16 (D) 24 (E) 256

3. CESGRANRIO - PETROBRAS - ANALISTA DE SISTEMAS J JNIOR DESENVOLVIMENTO DE SOLU SOLUES / 2005 80 - Quantas equipes diferentes, contendo exatamente 4 programadores, podepode-se formar a partir de um grupo de 10 programadores? (A) 14 (B) 40 (C) 210 (D) 1260 (E) 5040

4. CESGRANRIO - PETROBRAS - ANALISTA DE SISTEMAS J JNIOR SUPORTE DE INFRAINFRA-ESTRUTURA/ 2005 61 - Um gerente de inform informtica dispe de 11 equipamentos, sendo 7 desktops e 4 notebooks. notebooks. De quantos modos ele pode escolher 6 equipamentos incluindo pelo menos 2 notebooks? notebooks? (A) 11 (B) 28 (C) 210 (D) 371 (E) 462

5. CESGRANRIO - PETROBRAS - ANALISTA DE SISTEMAS J JNIOR SUPORTE DE INFRAINFRA-ESTRUTURA/ 2005 70 - Em uma sala existe uma bancada que comporta 5 computadores. A rea de suporte da empresa possui 5 m mquinas numeradas de 11 a 15. De quantas formas estas m mquinas podem ser arrumadas nesta bancada (em cada arruma arrumao devedeve-se utilizar todas as m mquinas)? (A) 25 (B) 50 (C) 75 (D) 120 (E) 125

6. CESGRANRIO - PETROBRAS - ANALISTA DE SISTEMAS J JNIOR SUPORTE DE INFRAINFRA-ESTRUTURA/ 2005 76 - De quantos modos um analista de sistemas pode comprar 3 notebooks em uma loja que vende 5 tipos diferentes deste produto. (A) 27 (B) 35 (C) 60 (D) 125 (E) 243

Em cada um dos itens a seguir, apresentada uma situa situao, seguida de uma assertiva a ser julgada. 7. CESPE - ANALISTA DESENVOLVIMENTO DE SISTEMAS/ 2004 45 - DesejaDeseja-se formar uma cadeia de s smbolos com os n nmeros 0, 1 e 2, de modo que o 0 seja usado trs vezes, o n nmero 1 seja usado duas vezes e o n nmero 2, quatro vezes. Nessa situa situao, o nmero de cadeias diferentes que podem ser formadas maior que 1.280. 8. CESPE - ANALISTA DESENVOLVIMENTO DE SISTEMAS/ 2004 46 - Com os smbolos 0 e 1, um programador deseja gerar c cdigos cujos comprimentos (n (nmero de smbolos) variem de 1 a 10 s smbolos. Nessa situa situao, o n nmero de c cdigos diferentes que podero ser gerados no passa de 2.046. 9. CESPE - ANALISTA DESENVOLVIMENTO DE SISTEMAS/ 2004 47 - Em um centro de pesquisas onde atuam 10 pesquisadores, dever dever ser formada uma equipe com 5 desses pesquisadores para desenvolver determinado projeto. SabeSabe-se que 2 dos 10 pesquisadores s s aceitam participar do trabalho se ambos forem escolhidos; caso contr contrrio, no participam. Nessa situa situao, h h menos de 250 maneiras diferentes de se montar a equipe. 10. CESPE - ANALISTA DESENVOLVIMENTO DE SISTEMAS/ 2004 48 - Uma empresa de engenharia de software recebeu muitas inscri inscries de candidatos a um cargo de programador. Somente 60% dos inscritos eram qualificados. Um teste teste de aptido foi aplicado para ajudar a analisar as inscri inscries. Dos qualificados, 80% passaram no teste, que aprovou tamb tambm 20% dos nono-qualificados. Nessa situa situao, se um inscrito passou no teste (ou se foi reprovado), a probabilidade de ele ser qualificado maior que 86%.

11. NCE BNDES - AN ANLISE DE SISTEMAS - DESENVOLVIMENTO/ 2005 5 (objetiva) - 5757- A probabilidade de ser encontrada uma falha durante um dia de opera operao de um sistema de informa informao de 0,1. O item que mostra o valor mais pr prximo da probabilidade de o sistema apresentar pelo menos um defeito defeito em cinco dias :
(A)

0,01;

(B) 0,1;

(C) 0,40; (D) 0,60; (E) 0,99.

GABARITO
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.

C D C D D B E C C E C

ANLISE COMBINATRIA 1. CESGRANRIO - PETROBRAS - ANALISTA DE SISTEMAS JNIOR - DESENVOLVIMENTO DE SOLUES / 2005 72 - Quantos nmeros naturais, de 4 algarismos (na base 10), menores que 4000 e divisveis por 5, podem ser formados usando-se apenas os algarismos 1, 2, 3, 4, e 5? (A) 20 (B) 25 (C) 75 (D) 625 (E) 3125

2. CESGRANRIO - PETROBRAS - ANALISTA DE SISTEMAS JNIOR - DESENVOLVIMENTO DE SOLUES / 2005 78 - Quantos so os anagramas da palavra fila? (Cada anagrama da palavra fila uma ordenao das letras f, i, l, a). (A) 1 (B) 4 (C) 16 (D) 24 (E) 256

3. CESGRANRIO - PETROBRAS - ANALISTA DE SISTEMAS JNIOR - DESENVOLVIMENTO DE SOLUES / 2005 80 - Quantas equipes diferentes, contendo exatamente 4 programadores, pode-se formar a partir de um grupo de 10 programadores? (A) 14 (B) 40 (C) 210 (D) 1260 (E) 5040

4. CESGRANRIO - PETROBRAS - ANALISTA DE SISTEMAS JNIOR SUPORTE DE INFRAESTRUTURA/ 2005 61 - Um gerente de informtica dispe de 11 equipamentos, sendo 7 desktops e 4 notebooks. De quantos modos ele pode escolher 6 equipamentos incluindo pelo menos 2 notebooks? (A) 11 (B) 28 (C) 210 (D) 371 (E) 462

5. CESGRANRIO - PETROBRAS - ANALISTA DE SISTEMAS JNIOR SUPORTE DE INFRAESTRUTURA/ 2005 70 - Em uma sala existe uma bancada que comporta 5 computadores. A rea de suporte da empresa possui 5 mquinas numeradas de 11 a 15. De quantas formas estas mquinas podem ser arrumadas nesta bancada (em cada arrumao deve-se utilizar todas as mquinas)? (A) 25 (B) 50 (C) 75 (D) 120 (E) 125

6. CESGRANRIO - PETROBRAS - ANALISTA DE SISTEMAS JNIOR SUPORTE DE INFRAESTRUTURA/ 2005 76 - De quantos modos um analista de sistemas pode comprar 3 notebooks em uma loja que vende 5 tipos diferentes deste produto. (A) 27 (B) 35 (C) 60 (D) 125 (E) 243

Em cada um dos itens a seguir, apresentada uma situao, seguida de uma assertiva a ser julgada. 7. CESPE - ANALISTA DESENVOLVIMENTO DE SISTEMAS/ 2004 45 - Deseja-se formar uma cadeia de smbolos com os nmeros 0, 1 e 2, de modo que o 0 seja usado trs vezes, o nmero 1 seja usado duas vezes e o nmero 2, quatro vezes. Nessa situao, o nmero de cadeias diferentes que podem ser formadas maior que 1.280. Permutao com repetio = 9! / (3!x2!x4!) = 1260 8. CESPE - ANALISTA DESENVOLVIMENTO DE SISTEMAS/ 2004 46 - Com os smbolos 0 e 1, um programador deseja gerar cdigos cujos comprimentos (nmero de smbolos) variem de 1 a 10 smbolos. Nessa situao, o nmero de cdigos diferentes que podero ser gerados no passa de 2.046. Total = 210 + 29 + ... + 21 = 21 x (210 1) = 2046 (lembra frmula da soma dos termos de uma PG) 9. CESPE - ANALISTA DESENVOLVIMENTO DE SISTEMAS/ 2004 47 - Em um centro de pesquisas onde atuam 10 pesquisadores, dever ser formada uma equipe com 5 desses pesquisadores para

desenvolver determinado projeto. Sabe-se que 2 dos 10 pesquisadores s aceitam participar do trabalho se ambos forem escolhidos; caso contrrio, no participam. Nessa situao, h menos de 250 maneiras diferentes de se montar a equipe. Possibilidade 1: escolher os 2 pesquisadores C83 (escolher os outros 3 pesquisadores entre os 8 restantes)= 56 Possibilidade 2: no escolher os 2 pesquisadores C85 (escolher os 5 pesquisadores entre os 8 restantes)= 56 Total = 112 10. CESPE - ANALISTA DESENVOLVIMENTO DE SISTEMAS/ 2004 48 - Uma empresa de engenharia de software recebeu muitas inscries de candidatos a um cargo de programador. Somente 60% dos inscritos eram qualificados. Um teste de aptido foi aplicado para ajudar a analisar as inscries. Dos qualificados, 80% passaram no teste, que aprovou tambm 20% dos no-qualificados. Nessa situao, se um inscrito passou no teste (ou se foi reprovado), a probabilidade de ele ser qualificado maior que 86%. Qualificados 60% - passaram no teste = 80% x 60% = 48% No qualificados 40% - passaram no teste = 20% x 40% = 8% Passar no teste e ser qualificado = 48/56 x 100% = 85,71% 11. NCE BNDES - ANLISE DE SISTEMAS - DESENVOLVIMENTO/ 2005 5 (objetiva) - 57- A probabilidade de ser encontrada uma falha durante um dia de operao de um sistema de informao de 0,1. O item que mostra o valor mais prximo da probabilidade de o sistema apresentar pelo menos um defeito em cinco dias : (A) 0,01; (B) 0,1; (C) 0,40; (D) 0,60; (E) 0,99.

Chance de no ter falha = 0,95 0,59 Chance de haver falha ao menos 1 vez = 1 0,59 = 0,41 12. FCC - TRE/ PB - 2007 - Analista Judicirio - Analista de Sistemas - 21. Considere a seguinte operao de simples subtrao feita entre elementos codificados no sistema hexadecimal: DEF ABC. Os respectivos resultados dessa subtrao nos sistemas decimal e binrio de mais baixa ordem (A) 140 e 10001100 (B) 320 e 101000000 (C) 333 e 101001101 (D) 819 e 1100110011 (E) 2073 e 100000011001 13. MPU 2007 - Analista Informtica - Desenvolvimento de Sistemas - 31. As representaes de nmeros inteiros, positivos e negativos na notao de complemento de dois, bem como os positivos e negativos na notao de excesso, tm os bits de sinal com os respectivos valores: (A) 0, 1, 0 e 1 (B) 1, 0, 0 e 1 (C) 0, 1, 1 e 0 (D) 1, 0, 1 e 0 (E) 0, 0, 1 e 1

NDICE 1. ALGORITMOS 1.1.CONCEITOS INICIAIS 1.2. FASES DE UM PROGRAMA 1.3. CONCEITOS IMPORTANTES 1.4. ESTRUTURAS DE CONTROLE 1.5. ESTRUTURA DE DADOS 1.6. PROCEDIMENTOS E FUNES 1.7. RECURSIVIDADE

2. QUESTES DE PROVAS PASSADAS

1.1. CONCEITOS INICIAIS - Definies Possveis: 1. Objetivo fundamental de toda a programao. 2. Seqncia de passos que visam atingir um objetivo bem definido. Em nosso estudo, a segunda definio de algoritmo ficar muito mais evidente, inclusive em atividades completamente estranhas ao estudo da informtica. Exemplo 1: Receita de bolo. Existe uma descrio dos passos - aes - a serem cumpridos para que se consiga fazer determinado resultado (tipo de bolo). Objetivo bem definido desde o incio da realizao das aes.

Exemplo 2: trocar uma lmpada. - Objetivo: dispor de uma lmpada nova - Passos: Passo 1: pegar a escada; Passo 2: posicion-la embaixo da lmpada; Passo 3: buscar uma lmpada nova; Passo 4: subir na escada; Passo 5: retirar a lmpada velha; Passo 6: colocar a lmpada nova. Exemplo 3: calcular a soma dos nmeros naturais no superiores a 100. - Objetivo: efetuar o clculo descrito acima - Passos: Passo 1: faa soma igual a zero Passo 2: faa N igual a zero Passo 3: some 1 a N Passo 4: some N a soma Passo 5: se N for menor ou igual a 100 ento volte ao passo 3
3

1.2. FASES DE UM PROGRAMA Planejamento: a fase onde definimos o problema a ser resolvido utilizando um computador. Nesta fase relacionamos a entrada e a sada do futuro programa, assim como a definio dos arquivos auxiliares que ele venha a utilizar. Projeto: a fase onde a resoluo do problema concebida. Neste ponto so definidos detalhes do algoritmo, estrutura de dados empregados pelo programa. Escrita: Consiste em codificar o programa em uma linguagem de programao apropriada. Depurao: Fase onde ocorre a depurao do programa, ou seja, a correo de erros. Manuteno: Passada a fase de depurao, o programa ser ento liberado para utilizao. Mas durante sua vida til, um programa pode ser alterado; neste caso teremos que fazer novas mudanas, ou seja, manuteno. 1.2.1. Pseudo-linguagem. Escrever um algoritmo em portugus (portugol) visa principalmente facilitar o projetista, pensar no problema e no na mquina, deixando para um segundo momento a converso do algoritmo desta pseudo-linguagem para a linguagem de programao a ser utilizada.
4

1.2.2. Exerccios 1. Um homem precisa atravessar um rio com um barco que possui capacidade de carregar apenas ele mesmo e mais uma de suas trs cargas, que so: um lobo, um bode e um mao de alfafa. O que o homem deve fazer para conseguir atravessar o rio sem perder suas cargas? 2. Suponha que voc possua um rob e queira faz-lo trocar uma lmpada, sendo que o mesmo foi programado para obedecer aos seguintes comandos: pegue <objeto> pressione <objeto> gire garras 180 no sentido horrio gire garras 180 no sentido anti-horrio mova <objeto> para <lugar> desloque-se para <lugar> e ainda capaz de: perceber quando algum comando no pode mais ser executado sentir alguma fonte de calor Que ordens voc daria para que seu rob trocasse a lmpada?
5

3. Construa um algoritmo que mostre todos os passos que voc segue para escolher o tipo de roupa com que vai sair, aps levantar, levando em considerao apenas o tempo (bom, nublado, chuvoso) e a temperatura (quente, moderado, frio). 4. Elabore um algoritmo que mova trs discos de uma Torre de Hani, que consiste em trs hastes (a - b - c), uma das quais serve de suporte para trs discos diferentes (1 - 2 3), os menores sobre os maiores. Pode-se mover um disco de cada vez para qualquer haste, contanto que nunca seja colocado um disco maior sobre um menor. O objetivo transferir os trs discos para outra haste. 5. Trs jesutas e trs canibais precisam atravessar um rio; para tal, dispem de um barco com capacidade para duas pessoas. Por medidas de segurana no se permite que em alguma margem a quantidade de jesutas seja inferior de canibais. Qual a seqncia de passos que permitiria a travessia com segurana? 6. Numa determinada noite, acontece uma queda de energia. Voc sabia que poderia encontrar uma vela na gaveta da cozinha, um lampio embaixo da cama, fusveis de reserva no armrio da sala e fsforos na estante da cozinha. Descreva a seqncia de passos que poderia ser utilizada para diagnosticar e resolver o problema, que pode ser previsto em duas possibilidades: a) o fusvel queimou; b) a queda na estao da companhia eltrica.

1.3. CONCEITOS IMPORTANTES 1.3.1. Expresses e Operadores - Expresses so conjuntos de constantes e/ou variveis e/ou funes ligadas por operadores aritmticos ou lgicos. - Expresses Aritmticas: Denominamos expresso aritmtica aquela cujos operadores so aritmticos e cujos operandos so constantes e/ou variveis do tipo numrico (inteiro e/ou real). - Operadores Aritmticos: Chamamos de operadores aritmticos o conjunto de smbolos que representa as operaes bsicas da matemtica, que so os seguintes: Operadores Aritmticos: + adio * multiplicao ** potenciao subtrao / diviso // radiciao mod resto da diviso div quociente da diviso inteira
7

Funes Matemticas: Alm das operaes aritmticas bsicas anteriormente citadas, podemos usar nas expresses aritmticas algumas funces da matemtica: sen(x) cos(x) tg(x) arctg(x) arccos(x) arcsen(x) abs(x) int(x) frac(x) ard(x) inteiro; sinal(x)
nulo);

seno de x; coseno de x; tangente de x; arco cuja tangente x; arco cujo coseno x; arco cujo seno x; valor absoluto (mdulo) de x; a parte inteira de um nmero fracionrio; a parte fracionria de x; transforma por arredondamento, um nmero fracionrio em
fornece o valor -1, +1 ou 0 conforme o valor de x (negativo, positivo,

rnd(x) valor randmico de x; Onde x pode ser um nmero, varivel, expresso aritmtica ou tambm outra funo matemtica.
8

Prioridades - A hierarquia das expresses e funes aritmticas a seguinte: ( ) parnteses mais internos funes matemticas ** // * / div mod + -

Expresses Lgicas: Denominamos expresso lgica aquela cujos operadores so lgicos e/ou relacionais e cujos operandos so relaes e/ou variveis e/ou constantes do tipo lgico. Operadores Relacionais: Utilizamos os operadores relacionais para realizar comparaes entre dois valores de mesmo tipo primitivo. Tais valores so representados por constantes, variveis ou expresses aritmticas.

Os operadores so: = igual a > maior que < menor que < > diferente de > = maior ou igual a < = menor ou igual a O resultado sempre um valor lgico.

Operadores Lgicos: Utilizaremos trs conectivos bsicos para a formao de novas proposies a partir de outras j conhecidas. Os operadores lgicos so:
e ou xou no conjuno disjuno no exclusiva disjuno exclusiva negao

10

1.3.2. Comandos 1.3.2.1. Comandos de Atribuio


Um comando de atribuio permite-nos fornecer um valor a uma certa varivel, onde o tipo dessa informao deve ser compatvel com o tipo da varivel, isto , somente podemos atribuir um valor lgico a uma varivel capaz de comport-lo, ou seja, uma varivel declarada do tipo lgico. O comando de atribuio uma seta apontando para a varivel ou dois pontos e o sinal de igual := (em Java somente o sinal de igual): Exemplo: Exemplo: variveis A, B : lgico; X : inteiro; A := V; X := 8 + 13 div 5; B := 5;

11

Exemplo:

Sub folha12() Dim valor1 As Integer Dim valor2 As Integer Dim valor3 As Integer Dim arr As Integer valor1 = 8 valor2 = 13 valor3 = 5 arr = valor1 + valor2 * valor3 End Sub
12

1.3.2.2. Comandos de Entrada e Sada de Dados Entrada de Dados Para que nossos algoritmos funcionem, em quase todos os casos precisaremos de informaes que sero fornecidas somente aps o algoritmo pronto, e que sempre estaro mudando de valores, para que nossos algoritmos recebem estas informaes, devemos ento construir entradas de dados, pelas quais o usurio (pessoa que utilizar o programa) poder fornecer todos os dados necessrios. A sintaxe do comando de entrada de dados a seguinte: leia (varivel); leia ("Entre com o valor de var1 e var 2: ", var1, var2);

Sub folha13() Dim linha As String linha = InputBox("Insira uma informao") MsgBox "valor 1 = " & linha End Sub
13

Sada de Dados Da mesma forma que nosso algoritmo precisa de informaes, o usurio precisa de respostas as suas perguntas, para darmos estas respostas usamos um comando de sada de dados para informar a resposta. A sintaxe do comando de sada de dados a seguinte: escreva (varivel); escreva (cadeia de caracteres ); escreva (cadeia, varivel); escreva (nmero, cadeia, varivel); JAVA System.out.println (varivel); System.out.println (cadeia de caracteres ); System.out.println (cadeia + varivel); System.out.println (nmero + cadeia + varivel);

14

1.4. ESTRUTURAS DE CONTROLE 1.4.1. ESTRUTURA SEQUENCIAL o conjunto de aes que sero executadas numa seqncia linear de cima para baixo e da esquerda para direita, isto , na mesma ordem em que foram escritas. Como podemos perceber, todas as aes devem ser seguidas por um ponto-e-vrgula (;), que objetiva separar uma ao de outra. Exemplo: construa um algoritmo que calcule a mdia aritmtica entre trs valores quaisquer fornecidas pelo usurio.

15

Resoluo: - Dados de entrada: trs valores (N1, N2, N3, N4); Dados de sada: mdia aritmtica; O que devemos fazer para transformar quatro valores em uma mdia aritmtica? Resposta: utilizar mdia aritmtica. Resposta: O que mdia aritmtica? Resposta: Resposta: a soma dos elementos divididos pela quantidade deles. Em nosso caso particular: (N1 + N2 + N3)/3 Construindo o algoritmo: variveis (declarao das variveis) N1, N2, N3, MA : real; incio (comeo do algoritmo) conhea (N1, N2, N3); {entrada de dados} Ma := (N1 + N2 + N3) / 3; {processamento} escreva (A mdia aritmtica vale: , MA); {sada de dados} fim.

16

Sub folha17() Dim valor1 As Integer Dim valor2 As Integer Dim valor3 As Integer Dim media As Single valor1 = Int(Val(InputBox("Insira valor 1"))) valor2 = Int(Val(InputBox("Insira valor 2"))) valor3 = Int(Val(InputBox("Insira valor 3"))) media = (valor1 + valor2 + valor3) / 3 MsgBox "A media dos valores inseridos vale " & media End Sub

17

1.4.1.1. Exerccios 1. Dados dois nmeros inteiros, achar a mdia aritmtica entre eles. 2. Dados dois nmeros inteiros, trocar o contedo desses nmeros. 3. Dados trs notas inteiras e seus pesos, encontrar a mdia ponderada entre elas. 4. Calcular a rea de um tringulo reto. Escreva um algoritmo que tenha como entrada nome, endereo, sexo, salrio. Informe-os. Escreva um algoritmo que calcule: C = (A + B) * B. Faa um algoritmo que calcule o valor a ser pago em uma residncia, que consumiu uma quantidade X de energia eltrica. Faa um algoritmo para calcular e imprimir a tabuada.

18

1.4.2. ESTRUTURA DE SELEO OU DECISO


Uma estrutura de deciso permite a escolha de um grupo de aes e estruturas a ser executado quando determinadas condies, representadas por expresses lgicas, so ou no satisfeitas. 1.4.2.1. Deciso Simples Se <condio> ento incio {bloco verdade} fim {se} <condio> uma expresso lgica, que, quando inspecionada, pode gerar um resultado falso ou verdadeiro. Se V, a ao primitiva sob a clusula ser executada; caso contrrio, encerra o comando, neste caso, sem executar nenhum comando.

19

Exemplo variveis altura1, altura2 : real incio leia (altura1, altura2); se altura1 > altura2 ento incio escreva(Altura 1 maior); fim {se} fim. {algoritmo}

20

1.4.2.2. Deciso Composta Se <condio> ento incio C; B; fim; seno incio A; fim;
Notamos agora que se a condio for satisfeita (Verdadeira), os comandos C e B sero executados, mas se a condio for falsa, tambm podem ser executados comandos, neste caso o comando A entrando no seno.

21

1.4.2.3. Seleo Mltipla Escolha varivel caso valor1 : comando1; caso valor2 : comando2; caso valor3 : comando3; caso valor4 : comando4; caso contrrio comando_F fimescolha; Esta estrutura evita que faamos muitos blocos se, quando o teste ocorre sempre em cima da mesma varivel.

22

1.4.2.4. Exerccios
1. Faa um algoritmo que conhea as quatro notas bimestrais e, informe a mdia do aluno e se ele passou; mdia para aprovao = 6. 2. Conhea trs nmeros inteiros, e informe qual o maior. 3. Encontrar o dobro de um nmero se este for par, se mpar encontrar o triplo. 4. Construa um algoritmo que verifique a validade de uma senha fornecida pelo usurio. A senha valida deve ser igual a LGICA. 5. Conhecendo-se trs nmeros, encontrar o maior. 6. Dados trs nmeros inteiros, coloc-los em ordem crescente. 7. Numa festinha de fim de curso, foi feito um sorteio para distribuir o dinheiro restante em caixa. Dez pessoas foram sorteadas com direito a tentar a sorte mais uma vez. Faa um algoritmo que calcule o prmio recebido individualmente por pessoa, sabendo-se que cada um deveria apanhar uma bola numerada de 0 a 9 e conforme o algarismo sorteado o prmio seria:

23

8. Sendo dados 3 nmeros positivos, verificar a natureza do tringulo formado, quanto aos seus ngulos, com estes nmeros como medida dos lados. 9.Considerando trs notas inteiras, encontrar a mdia aritmtica simples entre as que correspondem a nmeros pares. 10.Dados 4 nmeros, coloc-los em ordem crescente. 11.Conhecer o nome e a idade de trs pessoas, informar quem o mais velho e quem o mais novo. 12.Dadas duas medidas, informar a figura geomtrica que se forma, sendo que cada medida corresponde ao tamanho de dois lados paralelos. 13.Dada a hora (apenas a hora, sem minutos ou segundos), informar qual a direo do sol. 14.Sendo conhecidos os valores de Z e W encontrar: y = (7x2 - 3x - 8t) / 5(x + 1), sabendo-se que os valores de x so assim definidos: a. se w > 0 ou z < 7 i. x = (5w + 1) / 3; ii. t = (5z + 2); b. caso contrrio i. x = (5z + 2); ii. t = (5w + 1) / 3;

24

1.4.3. ESTRUTURA DE REPETIO Estas estruturas possibilitam que nosso algoritmo seja muito mais enxuto e fcil de se programar. Imagine um algoritmo de fatorial de 8: variveis fat : real; incio fat := 8 * 7; fat := fat * 6 ; fat := fat * 5; fat := fat * 4; fat := fat * 3; fat := fat * 2; escreva(fat); fim. O resultado ser o fatorial com certeza mas, imagine se fosse o fatorial de 250. Ou ainda, o usurio deseja fornecer o nmero e o algoritmo deve retornar o fatorial, qual nmero ser digitado? Quantas linhas devero ser escritas? Para isso servem as estruturas de repetio, elas permitem que um determinado bloco de comandos seja repetido vrias vezes, at que uma condio determinada seja satisfeita.
25

1.4.3.1. Repita ... At - Estrutura com teste no final Esta estrutura faz seu teste de parada aps o bloco de comandos, isto , o bloco de comandos ser repetido, at que a condio seja V. Os comandos de uma estrutura Repita .. at sempre sero executados pelo menos uma vez. Repita comando1; at <condio>; 1.4.3.2. Enquanto .. Faa - Estrutura com teste no Incio Esta estrutura faz seu teste de parada antes do bloco de comandos, isto , o bloco de comandos ser repetido, at que a condio seja F. Os comandos de uma estrutura enquanto .. faa podero ser executados uma vez, vrias vezes ou nenhuma vez. Enquanto < condio > Faa incio < bloco de comandos >; fim; 1.4.3.3. Para .. Passo - Estrutura com varivel de Controle Nas estruturas de repetio vistas at agora, acorrem casos em que se torna difcil determinar quantas vezes o bloco ser executado. Sabemos que ele ser executado enquanto uma condio for satisfeita - enquanto..faa, ou at que uma condio seja satisfeita - repita...at. A estrutura para .. passo repete a execuo do bloco um nmero definido de vezes, pois ela possui limites fixos: Para <varivel> := <valor> at <valor> passo N faa incio < bloco de comandos >; fim; Exerccio: Construa o algoritmo de clculo do fatorial com as estruturas acima.
26

Sub folha24()

limite = 10 fatorial = 1 valor = 1 For valor = 1 To 10 Step 1 fatorial = fatorial * valor Next valor MsgBox "3- Fatorial de " & limite & " = " & fatorial End Sub

Dim valor As Integer Dim fatorial As Single Dim limite As Integer limite = 10 fatorial = 1 valor = 1 Do

fatorial = fatorial * valor valor = valor + 1 Loop Until valor > limite

MsgBox "1- Fatorial de " & limite & " = " & fatorial limite = 10 fatorial = 1 valor = 1

While valor <= limite fatorial = fatorial * valor valor = valor + 1 Wend

MsgBox "2- Fatorial de " & limite & " = " & fatorial

27

1.4.3.3.1. Exerccios 1. Construa o algoritmo de clculo do fatorial com a estrutura Para .. Passo. 2. Encontrar os N primeiros termos de uma progresso geomtrica, onde o primeiro termo e a razo so conhecidos. 3. A converso de graus Fahrenheit para centgrados obtida pela frmula 9*C = 5*F - 160. Escreva um algoritmo que calcule e escreva uma tabela de graus centgrados em funo de graus Fahrenheit que variem de 50 a 150 de 1 em 1. 4. Uma rainha requisitou os servios de um monge e disse-lhe que pagaria qualquer preo. O monge, necessitando de alimentos, indagou rainha sobre o pagamento, se poderia ser feito com gros de trigo dispostos em um tabuleiro de xadrez, de tal forma que o primeiro quadro deveria conter apenas um gro e os quadros subseqentes, o dobro do quadro anterior. A rainha achou o trabalho barato e pediu que o servio fosse executado, sem se dar conta de que seria impossvel efetuar o pagamento. Faa um algoritmo para calcular o nmero de gro que o monge esperava receber. 5. Prepare um algoritmo que calcule o valor de H, sendo que ele determinado pela srie H = 1/1 + 3/2 + 5/3 + 7/4 + ... + 99/50. 6. Elabore um algoritmo que determine o valor de S, onde S = 1/1 - 2/4 + 3/9 4/16 + 5/25 - 6/36 ... - 10/100 7. Construa um algoritmo que calcule o valor aproximado de PI utilizando a frmula PI = 3/(H*32), onde H = 1/1**3 - 1/3**3 + 1/5**3 - 1/7**3 + 1/9**3 - ...

28

8. Em uma eleio presidencial, existem quatro candidatos. Os votos so informados atravs de cdigo. Os dados utilizados para a escrutinagem obedecem seguinte codificao: 1, 2, 3, 4 = voto para os respectivos candidatos; 5 = voto nulo; 6 = voto em branco;
-Elabore um algoritmo que calcule e escreva:

- total de votos para cada candidato; - total de votos nulos; - total de votos em branco; - percentual dos votos em branco e nulos sobre o total; - Como finalizador do conjunto de votos, tem-se o valor 0.

29

9. Calcule o imposto de renda de um grupo de contribuintes considerando que os dados de cada contribuinte, nmero do CPF, nmero de dependentes e renda mensal so valores fornecidos pelo usurio. Para cada contribuinte ser feito um desconto de 5% de salrio mnimo por dependente. Os valores da alquota para clculo do imposto so:

10. O ltimo valor, que no ser considerado, ter o CPF igual a zero. Deve ser fornecido o valor atual do salrio mnimo. Realizou-se uma pesquisa para determinar o ndice de mortalidade infantil em um certo perodo. Construa um algoritmo que leia o nmero de crianas nascidas no perodo e, depois, num nmero indeterminado de vezes, o sexo de uma criana morta (masculino, feminino) e o nmero de meses da vida da criana. Como finalizador, teremos a palavra fim no lugar do sexo da criana. Determine e imprima: - a porcentagem de crianas mortas no perodo; - a porcentagem de crianas do sexo masculino mortas no perodo; - a porcentagem de crianas que viveram dois anos ou menos no perodo.

30

1.5. Tipos de Dados Mesmo possuindo tipos bsicos para as declaraes de variveis, voc deve ter notado que eles muitas vezes no so suficientes para representar toda e qualquer informao que possa surgir. Portanto, em muitas situaes esses recursos so escassos, o que poderia ser suprido se existissem mais tipos de informao ou, ainda melhor, se esses tipos pudessem ser construdos, criados, medida que se fizessem necessrios. 1.5.1. Dados Agregados Homogneos Da mesma forma que na Teoria dos Conjuntos, uma varivel pode ser interpretada como um elemento e uma estrutura de dados como um conjunto. As variveis compostas homogneas so formadas de variveis com o mesmo tipo primitivo. Os agregados homogneos correspondem a posies de memria, identificadas por um mesmo nome, referenciadas por um ndice, e que possuem um mesmo tipo. 1.5.1.1. Variveis Compostas Homogneas Suponha que voc est dentro de um elevador, para ir a um determinado andar voc deve especificar o seu nmero, isto , em um vetor, voc deve se referenciar por seu ndice para acessar qualquer um de seus elementos.

31

Declarao Tipo IDENTIFICADOR = vetor [LI .. LF] de <tipo>; variveis varivel : IDENTIFICADOR; Onde: - LI - representa o limite inicial do vetor; - LF - representa o limite final do vetor; - <tipo> - qualquer um dos tipos primitivos, ou ainda um outro tipo que pode ser construdo, o qual veremos adiante. Primeiramente criaremos um novo tipo e lhe daremos um nome, aps isso podemos us-lo para declarar as variveis que sero utilizados dentro do programa.

32

Exemplo: Utilizaremos o exerccio de mdia das notas:


tipo v_notas = vetor [1..4] de real; variveis notas : v_notas; ndice: inteiro; mdia: real; incio para ndice <__ 1 at 4 faa leia( notas[ndice] ); fim; mdia <__ 0; para ndice <__ 1 at 4 faa mdia <__ mdia + notas[ndice]; mdia <__ mdia / 4; escreva(mdia); fim; fim.

33

Exerccio: Construa um algoritmo que preencha um vetor de 100 elementos inteiros colocando 1 na posio correspondente a um quadrado perfeito e 0 nos demais casos.

Sub folha31() Dim vetor(100) As Integer Dim a As Integer For a = 1 To 100 vetor(a) = 0 Next a For a = 1 To 10 Step 1 vetor(a * a) = 1 Next a End Sub

34

1.5.1.2.Dados Agregados Multidimensionais Suponha que, alm do acesso pelo elevador at um determinado andar, tenhamos tambm a diviso desse andar em apartamentos. Para chegar a algum deles no basta s o nmero do andar, precisamos tambm do nmero do apartamento. Os vetores tm como principal caracterstica a necessidade de apenas um ndice para endereamento - estruturas unidimensionais. Uma estrutura que precisasse de mais de um ndice, como no caso especfico, dividido em apartamentos, seria ento denominada estrutura composta multidimensional (agregado), neste caso, de duas dimenses (bidimensional). Declarao Tipo IDENTIFICADOR = matriz [LI1 .. LF1, LI2 .. LF2, .., LIN .. LFN] de <tipo>; variveis varivel : IDENTIFICADOR; Onde: LIN, LFN - so os limites dos intervalos de variao dos ndices da varivel, onde cada par de limites est associado a um ndice. O nmero de dimenses igual ao nmero de intervalos; <tipo> - qualquer um dos tipos primitivos, ou ainda um outro tipo que pode ser construdo, o qual veremos adiante. Primeiramente criaremos um novo tipo e lhe daremos um nome, aps isso podemos us-lo para declarar as variveis que sero utilizados dentro do programa.

35

Exemplo: Construa um algoritmo que efetue a leitura, a soma e a impresso do resultado, entre duas matrizes inteiras que comportem 25 elementos; tipo m = matriz [1 .. 5, 1 .. 5] de inteiros; variveis ma, mb, mc : m; incio i <__ 1; enquanto i <= 5 faa incio j < 1; enquanto j <= 5 faa incio conhea (ma[i,j] , mb[i,j]); mc[i,j] < ma[i,j] + mb[i,j]; j < j + 1; fim; i < i + 1; fim; j < 1; enquanto j <= 5 faa incio i < 1; enquanto i <= 5 faa incio informe (mc[i,j]); i < i + 1; fim; j < j + 1; fim; fim.
36

//

i,j : inteiro;

Exemplo: Construa um algoritmo que efetue a leitura, a soma e a impresso do resultado, entre duas matrizes inteiras que comportem 25 elementos;
Sub folha38() Dim matriz(5, 5) As Integer Dim a As Integer Dim b As Integer For a = 1 To 5 For b = 1 To 5 matriz(a, b) = (a + 1) * (b + 1) Next b Next a End Sub
37

1.5.1.3. Exerccio O tempo que um determinado avio leva para percorrer o trecho entre duas localidades distintas est disponvel atravs da seguinte tabela:

a.Construa um algoritmo que leia a tabela acima e informe ao usurio o tempo necessrio para percorrer duas cidades por ele fornecidas, at o momento em que ele fornecer duas cidades iguais (fonte e destino). b. Elabore um algoritmo que imprima a tabela sem repeties (apenas o tringulo superior ou o tringulo inferior). c. Desenvolva um algoritmo que permita ao usurio informar vrias cidades, at inserir uma cidade 0, e que imprima o tempo total para cumprir todo o percurso especificado entre as cidades fornecidas.

38

1.5.1.4. Registros Uma das principais estruturas de dados o registro. Para exemplificar, imagine uma passagem de nibus, que formada por um conjunto de informaes logicamente relacionadas, porm de tipos diferentes, tais como: nmero da passagem (inteiro), origem e destino (caractere), data (caractere), horrio (caractere), poltrona (inteiro), distncia (real), fumante (lgico), que so subdivises (elementos de conjunto) do registro, tambm chamadas de campos. Logo, um registro composto por campos que so partes que especificam cada uma das informaes. Nmero:___________ Fumante:____________ De:_______________ Para:__________________________ Data: ____ / _____ / ______ Horrio: ______ : ______ Poltrona:________________ Distncia:______________________ Declarao Tipo IDENTIFICADOR = registro campo1 : tipo; " " campoN : tipo; fimregistro; variveis varivel : IDENTIFICADOR;

39

Onde: construdo. registro. IDENTIFICADOR : representa o nome associado ao tipo registro Campo1, campo2, campoN: so os nomes associados a cada campo do

Da mesma forma que na declarao de vetores e matrizes, primeiramente devemos criar um tipo, para ento declararmos as variveis desse tipo. Exemplo: Conhecer um passageiro e imprimir seu nmero de passagem e poltrona. Tipo RegPassagem = registro nmero, poltrona : inteiro; origem, destino, data, horrio : caractere; distncia : real; fumante : lgico; fimregistro; variveis passagem : RegPassagem; incio leia(passagem.nmero, passagem.poltrona); escreva(passagem.nmero, passagem.poltrona); fim.

40

1.5.4.1. Conjunto de Registros Nas estruturas compostas heterogneas (vetores e matrizes) utilizamos tipos de dados primitivos como sendo os elementos dessas estruturas. Agora utilizaremos como componente dessa estrutura no apenas um tipo primitivo, mas sim os tipos construdos, neste caso os registros. Supondo que quisssemos manter um registro de informaes relativas a passagens rodovirias de todos lugares de um nibus, utilizaramos um registro diferente para cada poltrona, e, para agrupar todos eles, utilizaramos um conjunto desses registros. Como possumos 44 lugares num nibus, numerados seqencialmente de 1 at 44, podemos, para uni-los, criar um vetor no qual cada posio um elemento de tipo construdo registro (passagem). Como possumos um vetor composto por registros, no podemos declara esse vetor sem antes ter declarado seus elementos; devemos ento declarar primeiro o tipo construdo registro e depois o vetor.

41

Tipo RegPassagem = registro nmero, poltrona : inteiro; origem, destino, data, horrio : caracter; distncia : real; fumante : lgico; fimregistro; VetPassagem = vetor [1 .. 44] de RegPassagem; variveis passagem : RegPassagem; vetor : VetPassagem; incio para i < 1 at 44 faa incio conhea (vetor[i].nmero); conhea (vetor[i].poltrona); conhea (vetor[i].origem); conhea (vetor[i].destino); conhea (vetor[i].data); conhea (vetor[i].horrio); conhea (vetor[i].distncia); conhea (vetor[i].fumante); fim; fim.

42

Sub folha40()

Dim registro_passagem(4) As registro 'declarado acima Dim a As Integer

For a = 1 To 4 registro_passagem(a).passagem = Int(Val(InputBox("Informe passagem " & a))) registro_passagem(a).passageiro = InputBox("Informe passageiro " & a) Next a End Sub

43

1.5.5. Exerccios 1. Defina um registro para cheque bancrio. 2. Construa um algoritmo que, usando um campo saldo de um registro conta bancria, imprima um relatrio dos cheques sem fundos. 3. Dado um conjunto de tamanho N, calcular a somatria de seus elementos. 4. Encontrar o maior elemento, e sua respectiva posio, de um vetor A de 15 elementos. 5. Dados dois conjuntos ordenados A e B de N posies, gerar a partir destes o conjunto C, sabendo-se que o conjunto C dever conter os elementos comuns entre A e B. 6. Dado um conjunto A de N elementos, separ-lo em outros dois conjuntos B e C, contendo B os elementos pares e C os elementos mpares. 7. Dado um conjunto A de N elementos, separar os elementos pares e mpares, usando apenas um vetor extra. 8. Para uma turma de N alunos, fazer um algoritmo para corrigir provas de mltipla escolha. Cada prova tem 10 questes e cada questo vale 1 ponto. O primeiro conjunto de dados a ser lido ser o gabarito para a correo da prova. Os outros dados sero os nmeros dos alunos e suas respectivas respostas. O programa dever calcular e imprimir: a) para cada aluno, o seu nmero e nota; b) a porcentagem de aprovao, sabendo-se que a nota mnima de aprovao 06;

44

9. Leia uma frase de 80 letras (incluindo brancos) e escreva um algoritmo para: a) contar quantos brancos existem na frase; b) contar quantas vezes aparece a letra A; 10. Para o controle dos veculos que circulam em uma determinada cidade, a Secretria dos Transportes criou o seguinte registro padro,onde: Proprietrio:___________________ Combustvel: _____________ Modelo:______________________ Cor: _____________________ No chassi:_____________ Ano:__________ Placa: _____________ -Combustvel pode ser lcool, diesel ou gasolina; -Placa possui os trs primeiros valores alfabticos e os quatro restantes numricos. Sabendo-se que o nmero mximo de veculos da cidade de 5.000 unidades e que os valores no precisam ser lidos.

45

a) Construa um algoritmo que liste todos os proprietrios cujos carros so do ano de 1980 e acima e que sejam movidos a diesel. b) Escreva um algoritmo que liste todas as placas que comecem com a letra A e terminem com 0, 2, 4 ou 7 e seus respectivos proprietrios. c) Elabore um algoritmo que liste o modelo e a cor dos veculos cujas placas possuem como segunda letra uma vogal e cuja soma dos valores numricos fornece um nmero par. 11. Escrever um algoritmo para a formao da seguinte matriz:

46

1.6. Procedimentos e Funes Ao desenvolvermos um programa, muitas vezes precisamos utilizar uma pequena rotina repetidamente em mais de um local do mesmo, quando fazemos isso, estamos ocupando mais espao de memria, aumentando a complexidade do algoritmo, aumentando o tamanho do programa. Para evitar tudo isso, podemos modularizar o programa, isto , criar procedimentos e funes (mdulos) uma vez apenas, e cham-los repetidamente de vrias partes do programa, por um nome que os identifica. 1.6.1. Procedimentos Aqui aplicamos efetivamente o termo Dividir para Conquistar, quando nos depararmos com um problema, e formos resolv-lo por meio de algoritmos, devemos dividi-lo em vrios problemas menores, se necessrio, dividimos novamente em vrios outros problemas menores, resolvendo estes problemas estaremos conseqentemente resolvendo nosso problema inicial. Como exemplo, faremos um algoritmo que imprima o extenso do nmero 1 ou 2.

47

escreva num : inteiro; Procedimento mostre_um; incio escreva(Um); fim; Procedimento mostre_dois; incio escreva(Dois); fim; incio Repita leia(num); se num = 1 ento mostre_um; se num = 2 ento mostre_dois; At num > = 2; fim.

48

49

O que acontece neste algoritmo o seguinte, os blocos que comeam com a palavra Procedimento, so mdulos que somente sero executados se chamados do principal ou outro mdulo do algoritmo. Sendo assim o primeiro comando a ser executado o comando leia, dentro da estrutura de repetio Repita, que ir conhecer o valor da varivel num, o valor da varivel ento testado, se for igual a 1 o procedimento mostra_um chamado, quando isto acontece os comandos que esto contidos dentro do procedimento, neste caso somente o comando informe. Quando a ultima linha do procedimento executada e encontra-se o comando fim, a execuo do algoritmo volta exatamente ao comando aps a chamada do procedimento, neste caso, aps a linha mostra_um ou mostra_dois, executado o teste da estrutura de repetio, se num for maior que 2 o algoritmo encerrado, caso contrrio, o algoritmo executado novamente a partir do comando leia.

50

1.6.2. Escopo de Variveis


Escopo de variveis seria o mesmo que domnio sobre variveis. Quando uma varivel declarada no incio do algoritmo, dizemos que ela global, isto , todos os mdulos do algoritmo reconhecem esta varivel. Quando uma varivel declarada dentro de um mdulo, dizemos que ela local, isto , somente este mdulo reconhece a varivel. Variveis declaradas no cabealho do mdulo (parmetros), so variveis locais deste mdulo.

Olhe para os quadros acima e imagine que seja um algoritmo. O quadro maior o mdulo principal, dentro deles existem mais quatro quadros (1, 2, 3, 4) que so os mdulos secundrios (procedimentos, funes), sendo que ainda temos o quadro 2 dentro do quadro 1 - isto significa que o quadro 2 s pode ser chamado pelo quadro 1.

51

Observe que as variveis K e Y so globais, elas so visveis a todos os mdulos; as variveis J e H so visveis apenas ao quadro 1 onde esto declaradas, e ao quadro 2 que est declarado dentro do quadro 1; as variveis O e P so visveis somente ao quadro 2; as variveis O, J, Y so visveis somente ao quadro 3; e as variveis O, J, L, H, I e A so visveis somente ao quadro 4. Note que a varivel Y dentro do quadro 3 no a mesma varivel Y do quadro principal, ento, se Y usado dentro de 3, o Y mais interno que ser usado. Isto uma prtica desaconselhvel por tornar o programa confuso e com tendncia a comportamentos indesejados.

52

1.6.3. Parmetros
Agora imagine se pudssemos mandar mensagens aos procedimentos, isto , se pudssemos passar parmetros aos procedimentos, desta forma eles ganhariam muito mais poder e generalizao. Vamos usar o exemplo anterior e ver como podemos diminuir o nmero de procedimentos. Variveis num : inteiro; Procedimento mostre_num (numero : caracter); incio escreva(numero); fim; incio Repita leia(num); se num = 1 ou num = 2 ento mostre_num(num); At num > = 2; fim. Observe como nosso algoritmo ficou menor e mais legvel, conseguimos isto com a passagem de parmetros para o procedimento.
53

Sub parametro() Dim valor As Integer valor = 1 Do Call numero(valor) valor = valor + 1 Loop Until valor = 3 End Sub Sub numero(ByVal numero_teste As Integer) If numero_teste = 1 Then Call numero1 ElseIf numero_teste = 2 Then Call numero2 End If End Sub
54

1.6.4. Funes
Como voc pde perceber, os procedimentos so blocos de comandos que executam determinada tarefa, mas no retornam nenhum valor, ao contrrio das Funes, que so especificamente desenvolvidas para retornarem valores aos mdulos que as chamam. Como exemplo vamos construir um algoritmo que retorne o valor de uma expresso matemtica: variveis X : real; Funo Expresso : Real; incio expresso < 8 * X ; fim; incio leia (X); X < expresso; escreva(X); fim.
55

Sub funcao() Dim valor As Integer valor = 1 Do numero_teste2 (valor) valor = valor + 1 Loop Until valor = 3 MsgBox numero_teste2(valor) End Sub Function numero_teste2(ByVal numero_teste As Integer) As String If numero_teste = 1 Then Call numero1 numero_teste2 = "" ElseIf numero_teste = 2 Then Call numero2 numero_teste2 = "" Else numero_teste2 = "Fim contagem" End If End Function 56

1.6.5. Passagem de Parmetros por Referncia e Valor


Como j falamos, somente funes podem retornar valores e procedimentos no. Mas existe uma forma de fazer com que uma varivel que foi passada como parmetro, tanto para um procedimento como para uma funo, volte com o valor alterado. Para isso voc deve conhecer o conceito de passagem de parmetros por Referncia e Valor. Na passagem por valor, voc apenas passa o contedo da varivel e no seu endereo fsico, isto , se o contedo da varivel do cabealho, que est recebendo o valor, for alterado dentro do procedimento ou funo, no ir alterar o contedo da varivel que foi usada para passar o valor. J na passagem por referncia, voc no apenas passa apenas o contedo da varivel e sim seu endereo fsico, isto , se o contedo da varivel do cabealho, que est recebendo o valor, for alterado dentro do procedimento ou funo, ir alterar o contedo da varivel que foi usada para passar o valor.

57

1.6.6. Exerccios 1. Reconstrua o algoritmo de clculo fatorial, modularizando com procedimento e funo. 2. Faa um algoritmo que conhea as quatro notas bimestrais e, informe a mdia do aluno e se ele passou; mdia para aprovao 6. 3. A converso de graus Fahrenheit para centgrados obtida pela 5 * ( F 32) frmula C = . Escreva um algoritmo que calcule e escreva uma 9 tabela de graus centgrados em funo de graus Fahrenheit que variem de 50 a 150 de 1 em 1. 4. Uma rainha requisitou os servios de um monge e disse-lhe que pagaria qualquer preo. O monge, necessitando de alimentos, indagou rainha sobre o pagamento, se poderia ser feito com gros de trigo dispostos em um tabuleiro de xadrez, de tal forma que o primeiro quadro deveria conter apenas um gro e os quadros subseqentes, o dobro do quadro anterior. A rainha achou o trabalho barato e pediu que o servio fosse executado, sem se dar conta de que seria impossvel efetuar o pagamento. Faa um algoritmo para calcular o nmero de gro que o monge esperava receber.
58

1.7. Recursividade Um objeto recursivo aquele que consiste parcialmente ou definido em termos de si prprio. Ex.: Nmeros naturais, estruturas em rvores, certas funes matemticas, fatorial, fibonacci, etc... A ferramenta para codificar programas de modo recursivo o subalgoritmo. 1.7.1. Recursividade Direta Quando um subalgoritmo (procedimento ou funo) possuir uma referncia explcita a si prprio atravs de seu nome. Exemplo: Procedimento A; Incio : A; : Fim;
59

Sub fatorial_direto() MsgBox fatorial(10) End Sub Function fatorial(valor As Integer) As Double

If valor > 1 Then fatorial = valor * fatorial(valor - 1) Else fatorial = 1 End If

End Function

60

1.7.2. Recursividade Indireta


Quando um subalgoritmo possuir uma chamada a um segundo subalgoritmo e este possuir uma referncia direta ou indireta ao primeiro. Exemplo: Procedimento A; Incio : B; : Fim Procedimento B; Incio : A; : Fim

61

Deve-se declarar variveis, constantes e tipos como locais, pois a cada chamada recursiva do subalgoritmo um novo conjunto de variveis locais criado, como tambm para os parmetros passados. (sempre por valor). Em uma chamada recursiva deve-se considerar a possibilidade da ocorrncia da no terminao dos clculos, considerando-se ento o critrio de parada. Evitar nveis de recurso muito profundos, devido a ocupao de memria (variveis locais, estado corrente do processamento, valor de retorno, valores de parmetros de entrada e sada). Um algoritmo recursivo empregado quando o problema ou os dados a que se destina for definido de forma recursiva. prefervel evitar o uso da recurso sempre que existir uma soluo no recursiva (interativa) para o problema. Nem sempre um programa recursivo rpido. O mtodo para transformar um programa no-recursivo num programa recursivo a criao de uma pilha definida pelo usurio.

62

A tcnica de recurso consiste em transformar uma parte do programa, que ser alguma estrutura de repetio. No recursivo i := N Enquanto i > 1 Faa i := i-1; fimenquanto; Recursivo Funo Dec (i : Inteiro); Incio Se i = 1 ento Dec := i; seno inicio i:= i-1; Dec ( i ) fim; fim;

63

1.9. QUESTES DE PROVAS PASSADAS


3.

CESGRANRIO - PETROBRAS - ANALISTA DE SISTEMAS JNIOR - DESENVOLVIMENTO DE SOLUES / 2005 39 - O nmero mximo de elementos que tm de ser examinados para completar uma pesquisa binria em um vetor ordenado de 200 elementos : (A)8 (B)16 (C)32 128 (D)64 (E)

Da lgebra linear, tem-se que a resoluo de sistemas triangulares de equaes lineares da forma em que as constantes aij so no-nulas para i = 1, ... n, tem soluo nica que pode ser encontrada pelo algoritmo a seguir.

64

passo 1: Tome os dados aij com j >= i e bi para i, j variando de 1 at n. passo 2: Calcule xn = bn/ann. passo 3: Faa s = 0. passo 4: Para k decrescendo de n 1 at 1, faa s = bk; para j crescendo de k + 1 at n, faa s = s akjxj ; xk = s/akk; Acerca da contabilidade do nmero de operaes envolvidas nesse algoritmo, julgue os itens que se seguem. 2. CESPE - ANALISTA DESENVOLVIMENTO DE SISTEMAS/ 2004 49 - Um sistema triangular com n equaes e n incgnitas envolve, em sua resoluo, n divises. 3. CESPE - ANALISTA DESENVOLVIMENTO DE SISTEMAS/ 2004 50 - O nmero de adies e(ou) subtraes envolvidas na resoluo de um sistema com 10 equaes maior que 46. 4. ESAF Auditor Fiscal da Receita Federal - AFRF 2002 42 - Analise as seguintes afirmaes relativas programao de computadores: I. Uma estrutura de repetio permite ao programador especificar que uma ao deve ser repetida enquanto alguma condio for verdadeira. II. Na chamada por referncia o parmetro no altera o argumento que o chamou. III. O raio de ao de uma varivel qualquer chamado de escopo. IV. Um vetor uma estrutura mltipla que armazena vrios dados de vrios tipos diferentes. Indique a opo que contenha todas as afirmaes verdadeiras. a) I e II b) II e III c) III e IV d) I e III e) II e IV

65

5. ESAF Auditor Fiscal da Receita Federal - AFRF 2002 43 - Uma funo que chama a si mesma, direta ou indiretamente, denominada a) procedimento. b) prottipo. c) funo interativa. d) compilador. e) funo recursiva. 6. ESAF Auditor Fiscal da Receita Federal - AFRF 2002.2 47 - Basicamente, h duas maneiras pelas quais um subprograma pode ter acesso aos dados que deve processar. So elas: a) pelas variveis locais ou pela passagem de parmetros. b) pelas variveis locais ou pela passagem por referncia. c) pelo acesso direto s variveis globais e pelas variveis locais. d) por referncia ou por ponteiro. e) pelo acesso direto s variveis globais ou pela passagem de parmetros. 7. ESAF - ANALISTA DE CONTROLE EXTERNO - ACE - TCU 2002 - 28- Analise as seguintes afirmaes relativas programao: I. Um procedimento para resolver um problema, em termos das aes a serem executadas e da seqncia em que essas aes devem ser executadas, chamado de algoritmo; II. Os valores de sentinela so geralmente usados para controlar a repetio quando o nmero preciso de repetio no conhecido com antecedncia e o lao contm comandos que obtm dados toda vez que o lao executado. O valor de um desses dados pode ser usado como sentinela; III. Declaraes so mensagens para o compilador informando-lhe a ordem em que os comandos devem ser executados em um programa de computador; IV. Se um contador ou um total no inicializado, os resultados do programa provavelmente sero incorretos. Este um erro de sintaxe. Indique a opo que contenha todas as afirmaes verdadeiras. a) I e II b) II e III c) III e IV d) I e III e) II e IV
66

8. ESAF Auditor Fiscal da Receita Federal - AFRF 2003 38 - Analise as seguintes afirmaes relativas programao de computadores: I - Uma funo, para ser caracterizada como recursiva, deve ter em seu cdigo uma ou mais repeties do tipo Do/Until onde a quantidade de vezes que o referido lao Do/Until executado quantifica a ordem da recurso. Em programao Orientada a Objetos, o uso de um mtodo construtor permite que se atribua valores iniciais aos atributos de uma classe quando esta instanciada. Em um programa Orientado a Objetos podem existir diversos tipos de relacionamentos estticos entre as classes. A associao um deles. O uso de funes e procedimentos desaconselhvel no desenvolvimento estruturado, pois quebram a seqncia lgica da programao linear, objetivo principal deste modelo de desenvolvimento. Indique a opo que contenha todas as afirmaes verdadeiras. a) I e II b) II e III c) III e IV d) I e III e) II e IV

67

9. ESAF Auditor Fiscal da Receita Federal - TRFB 2005 21 - Analise as seguintes afirmaes relacionadas a Noes de Programao: I. Quando uma funo chamada e os parmetros formais da funo copiam os valores dos parmetros que so passados para ela, sem que ocorra alterao dos valores que os parmetros tm fora da funo, este tipo de chamada de funo denominado chamada com passagem de parmetros por valor. Isso ocorre porque so passados para a funo apenas os valores dos parmetros e no os prprios parmetros. II. Uma funo que pode chamar a si prpria chamada funo recursiva. Um critrio de parada vai determinar quando a funo dever parar de chamar a si mesma. Isso impede que a funo entre em loop. III. Uma fila uma lista de informaes com operaes especiais de acesso. O acesso aos elementos da fila feito pela extremidade oposta da insero, ou seja, o elemento disponvel estar sempre na extremidade oposta da insero. Esta regra tambm conhecida como LIFO (Last In First Out). IV. No desenvolvimento estruturado, uma boa prtica de modularizao proporcionar um alto acoplamento entre os mdulos, mantendo a dependncia lgica e liberdade de comunicao entre eles. Indique a opo que contenha todas as afirmaes verdadeiras. a) II e III b) I e II c) III e IV d) I e III e) II e IV
68

GABARITO

1A 2C 3E 4D 5E

6C 7A 8B 9B

69

NDICE 1. ALGORITMOS de ORDENAO 1.1. Ordenao por troca 1.1.1. BubbleSort (mtodo da bolha) 1.1.2. QuickSort (troca de partio) 1.1.3. Mergesort 1.2. Ordenao por seleo 1.2.1. Seleo direta 1.3. Ordenao por insero 1.3.1. Insero simples 1.3.2. Ordenao de shell (ShellSort) 1.4. Algoritmos de ordenao em VB (macro do Excel)

NDICE 2. DADOS LINEARES 2.1. Ponteiros 2.2. Listas 2.2.1. Listas sequenciais 2.2.2. Listas encadeadas 2.2.2.1. Listas simplesmente encadeadas 2.2.2.2. Listas duplamente encadeadas 2.3. Filas 2.4. Pilhas 2.5. Deck 2.6. Hash

NDICE 3. DADOS NO LINEARES 3.1. rvores 3.1.1. Representao de rvores 3.2. rvores Binrias 3.2.1. Representao de rvores binrias 3.2.2. Percursos em rvores binrias 3.2.3. rvore Binria de busca 3.2.4. rvores AVL ou rvore Binria de Altura Equilibrada. 4. ALGORITMOS DE ORDENAO EM JAVA E DELPHI 5. QUESTES DE PROVAS

1. ALGORITMOS de ORDENAO Definio 1: entendemos por algoritmos de ordenao, as vrias seqncias de execuo de tarefas (algoritmos) que tenham por objetivo ordenar uma seqncia de elementos Definio 2: um arquivo de tamanho N uma seqncia de n elementos r[0], r[1], ..., r[N-1]. Cada elemento no arquivo chamado de registro (ou entrada). Uma chave k[i] normalmente associada a cada registro r[i]. (A chave quase sempre um campo do registro.) Um arquivo dito ordenado pela chave, se i<j implica k[i] < k[j].

1.1. Ordenao por troca Conceito: este mtodo consiste em varrer o registro, trocando a posio de elementos que, em funo de suas chaves, forem identificados fora da ordem. O processo de varredura envolve a realizao de comparaes sucessivas de pares de elementos. 1.1.1. BubbleSort: em cada passo, cada elemento comparado ao prximo. Se o elemento estiver fora de ordem, realizada a troca. Realizam-se tantos passos quanto necessrios, at que no ocorram mais trocas. A idia fundamental que a cada varredura, o maior elemento v para ltima posio do registro. Ou seja, na 1 varredura, o maior elemento vai para ltima posio, na 2 varredura, o segundo maior elemento v para penltima posio, e assim sucessivamente, at todo o registro estar ordenado - TEMPO DE EXECUO: O(N2)
5

- Algoritmo BubbleSort (implementao) Funo bubblesort (vetor[ ]: inteiro; MAXIMO : inteiro) variveis j, i, trab, limite: inteiro troca: lgico inicio troca = true; limite = MAXIMO 1 enquanto (troca = true) faa inicio troca = false para i = 1 at limite faa inicio se vetor[i] > vetor [i + 1] ento trab = vetor[i] vetor[i] = vetor[i + 1] vetor[i + 1] = trab j=i troca = true fim se fim para limite = j fim enquanto fim
6

1.1.2. QuickSort: Este mtodo parte do princpio que mais rpido ordenar dois vetores com n/2 elementos cada um, do que um com n elementos (conceito dividir para conquistar). O primeiro passo dividir o vetor original. Esse procedimento denominado particionamento. Primeiramente, deve-se escolher uma das posies do vetor (por exemplo, V[i]) a qual denominada piv. Uma vez escolhido o piv, os elementos do vetor so movimentados de forma que o subvetor esquerda do piv contenha somente os elementos cujo valor menor que o valor do piv e o subvetor da direita contenha valores maiores que o valor do piv.
V[1], ..... V[i-1] V[i] V[i+1], ..... V[n]

O procedimento repetido at que o vetor esteja ordenado.

Existem vrias formas de escolher o piv: partindo do primeiro elemento do vetor; por escolha aleatria; escolha do valor do meio de um subvetor. O algoritmo apresentado a seguir considera esta ltima opo, a qual resulta em um algoritmo mais eficiente. - TEMPO DE EXECUO: O(n * log(n)).

Algoritmo: a) Piv escolhido no meio do vetor. O elemento colocado numa varivel auxiliar pivo; b) So iniciados dois ponteiros i e j; c) O vetor percorrido a partir da esquerda at que se encontre um V[i] >= pivo (i incrementado no processo); d) O vetor percorrido a partir da direita at que se encontre um V[j] <= pivo (j decrementado no processo); e) Os valores V[i] e V[j] so trocados; i incrementado de 1 e j decrementado de 1; f) O processo repetido at que i e j se cruzem em algum ponto do vetor; g) Quando so obtidos os dois segmentos do vetor por meio do processo de partio, realiza-se a ordenao de cada um deles de forma recursiva.
9

Algoritmo (implementao)
Funo QuickSort (V[ ] : Vetor de inteiro, esquerda, direita : inteiro) Inicio variveis trab, aux : inteiro i, j : inteiro i := esquerda j := direita pivo := V[(esquerda + direita) div 2] repita enquanto pivo > V[i] faa inicio i := i + 1; fim enquanto enquanto pivo < V[j] faa inicio j := j - 1; fim enquanto se i <= j ento inicio aux := V[i] V[i] := V[j] V[j] := aux i := i + 1 j := j 1 fim se at i > j se esq < j ento QuickSort (V, esquerda, j) se dir > i ento QuickSort (V, i,direita) fim 10

EXEMPLO:

11

1.1.3. MergeSort: O merge sort, ou ordenao por mistura, um exemplo de algoritmo de ordenao do tipo dividirpara-conquistar. Sua idia bsica que muito fcil criar uma sequncia ordenada a partir de duas outras tambm ordenadas. Para isso, ele divide a sequncia original em pares de dados, ordenadoos; depois as agrupa em sequncias de quatro elementos, e assim por diante, at ter toda a sequncia dividida em apenas duas partes. Os trs passos teis dos algoritmos dividir-paraconquistar, ou divide and conquer, que se aplicam ao merge sort so:
12

Dividir: Dividir os dados em subsequncias pequenas; Conquistar: Classificar as duas recursivamente aplicando o merge sort; metades

Combinar: Juntar as duas metades em um nico conjunto j classificado.


-

TEMPO DE EXECUO: O(n * log(n)) (pior caso, melhor que o pior caso do quicksort).

13

Algoritmo (implementao) - Chamada Inicial: Mergesort(A, 1, n) MergeSort (A, p, r) 1: if p < r then 2: q = (p + r)/2 3: Mergesort(A, p, q) 4: Mergesort(A, q + 1, r) 5: Merge(A, p, q, r)

14

procedure Merge_Sort(V : in out Vetor; Esq, Dir, N : Integer) is Temp : Vetor(1 .. N); I, J : Integer; Metade : Integer; begin if (Dir - Esq) > 0 then Metade := (Dir + Esq) / 2; Merge_Sort(V,Esq,Metade,N); Merge_Sort(V,Metade+1,Dir,N); for I in Esq .. Metade loop Temp(I) := V(I); end loop; for I in Metade+1 .. Dir loop Temp(Dir+Metade+1-I) := V(I); end loop; I := Esq; J := Dir; for K in Esq .. Dir loop if Temp(I) < Temp(J) then V(K) := Temp(I); I := I + 1; else V(K) := Temp(J); J := J - 1; end if; end loop; end if; end Merge_Sort;

15

Exemplo

16

1.2. Ordenao por seleo - O maior, ou menor, valor contido no vetor selecionado e colocado diretamente na posio correta (no vetor). O processo repetido para o segmento do vetor que contm os elementos no selecionados. 1.2.1. Seleo Direta Algoritmo bsico 1. Identifica-se o menor (ou maior) elemento no segmento do vetor que contm os elementos ainda no selecionados; 2. Troca-se o elemento identificado com o primeiro (ou ltimo) elemento do segmento; 3. Atualiza-se o tamanho do segmento (diminui uma posio); 4. Interrompe-se o processo quando o segmento contiver apenas um elemento. - TEMPO DE EXECUO: O(N2)

17

Algoritmo (implementao) constante: TAMANHO = 15 variveis: vetor[1...TAMANHO]: inteiro i, j, trab, menor: inteiro incio para i := 1 at TAMANHO faa leia (vetor[i]) fim para para i = 1 at TAMANHO-1 faa menor = i para j = i + 1 at TAMANHO faa se vetor[j] < vetor[menor] ento menor = j fim se fim para trab = vetor[i] vetor[i] = vetor[menor] vetor[menor] = trab fim para fim

18

Exemplo:
Passo 1 25 57 48 37 12 92 86 33 - identifica menor valor do segmento 12 57 48 37 25 92 86 33 - troca-se a posio com o primeiro elemento do grupo 12 57 48 37 25 92 86 33 - identifica o menor valor do segmento 12 25 48 37 57 92 86 33 - (tamanho do segmento diminuiu de uma posio) 12 25 48 37 57 92 86 - 33 12 25 33 37 57 92 86 - 48 12 25 33 37 57 92 86 - 48 12 25 33 37 57 92 86 - 48 12 25 33 37 57 92 86 - 48 12 25 33 37 48 92 86 - 57 12 25 33 37 48 92 86 - 57 12 25 33 37 48 57 86 - 92 12 25 33 37 48 57 86 - 92 12 25 33 37 48 57 86 - 92 12 25 33 37 48 57 86 - 92

Passo 2

Passo 3

Passo 4

Passo 5

Passo 6

Passo 7

Passo 8

19

1.3. Ordenao por insero 1.3.1. Insero simples


O processo de insero simples consiste em dividir o vetor a ser ordenado em dois segmentos, o primeiro contendo os elementos j ordenados e o segundo os no ordenados. Algoritmo O algoritmo pode ser resumido da seguinte maneira: a) O primeiro elemento est no vetor ordenado e os demais no vetor desordenado; b) Retira-se o primeiro elemento do vetor desordenado, colocando-o no vetor ordenado. Nesse processo, so realizadas as comparaes necessrias para inser-lo na sua posio correta; c) Repete-se o processo at que todos os elementos do vetor desordenado tenham passado para o vetor ordenado. - TEMPO DE EXECUO: O(N2)
20

Algoritmo (implementao) Funo Insero_simples (V[ ] : Vetor de inteiro, maximo: inteiro) Inicio i, j, k, trab: inteiro para j := 2 at maximo faa trab = vetor[j] i=j-1 enquanto (i > 0) e (vetor[i] > trab) faa vetor[i+1] = vetor[i] i=i-1 fim enquanto vetor[i+1] = trab fim para fim

21

Exemplo

22

1.3.2. Ordenao de Shell (shellsort)


Trata-se de uma extenso do processo de insero simples. No mtodo de ordenao por insero simples so trocados somente elementos adjacentes. A idia bsica do shellsort subdividir o vetor em blocos de tamanho h e rearranjar (ordenar) os dados comparando elementos afastados (de h posies). Assim, o valor A[1] comparado com A[h+1], A[2] com A[h+2], e assim por diante. Se h grande, pode-se mover elementos que esto bastante afastados no vetor. O valor de h diminudo a cada ciclo de ordenao, at atingir o valor 1 (neste caso, a ordenao se reduz a uma insero simples). O ideal que a os valores de h sejam nmeros primos entre si, de forma a garantir sobreposio de regies de subdiviso. - TEMPO DE EXECUO: ??? - Algoritmo (implementao) Funo shellsort (V[ ] : Vetor de inteiro, maximo: inteiro, h[ ] : vetor de inteiro, m : inteiro) inicio i, j, k, trab: inteiro para k = m at 1 decr 1 faa para j = h[k] +1 at maximo faa trab = vetor[j] i = j h[k] enquanto (i > 0) e (vetor[i] > trab) faa vetor[i+h[k]] = vetor[i] i = i h[k] fim enquanto vetor[i+h[k]] = trab fim para fim para fim

23

Exemplo 1: ordenao com seqncia h={1,3,4} - (Observem que estes nmeros so primos entre si).

24

Exemplo 2: ordenao com seqncia h={1,2,3}. - (Observem que estes nmeros tambm so primos entre si).

Exemplo 3: ordenao com seqncia h={1,3}.

25

1.4. Algoritmos de Ordenao em VB (macro do Excel) Ver arquivo Algoritmos de Ordenao em VB (macro do Excel)

26

2. DADOS LINEARES 2.1. Ponteiros Os apontadores, assim como as demais variveis de um programa, so declarados, seguindo a sintaxe da linguagem de programao utilizada. Eles so variveis que armazenam o endereo de memrias de outras variveis, funcionando assim, como meio de referenciar uma varivel dinmica. Uma varivel dinmica*, uma varivel que no declarada na parte de declarao de variveis, porque esta ainda no existe antes do seu tempo de execuo, ela no possui sequer um nome, ficando a cargo dos ponteiros desempenhar esta funo de nome. Uma varivel dinmica sempre referenciada indiretamente por um apontador, ou seja, para cada varivel dinmica criada deve existir um apontador, que literalmente aponta para ela, permitindo a sua manipulao. * Lembrar, uma varivel dinmica criada e destruda durante a execuo do programa

27

Implementao de uma rotina com variveis dinamicas declaradas por ponteiro (em Borland Delphi 3.0): procedure TForm1.ponteiro_rotina; type nome = string[30]; ponteiro = ^nome; var p1, p2 : ponteiro; begin new(p1); cria as variveis dinamicas p1 e p2 j new(p2); referenciadas pelo ponteiro nome p1^ := 'Daniel - '; p2^ := 'meu filho'; p1^:= p1^ + ' ' + p2^; showmessage(p1^); dispose(p1); dispose(p2); end;
28

2.2. Listas
So estruturas formadas por um conjunto de dados de forma a preservar a relao de ordem linear entre eles. Uma lista composta por ns, os quais podem conter, cada um deles, um dado primitivo ou composto.

2.2.1. Listas seqenciais


Exploram a seqencialidade da memria do computador, de tal forma que os ns de uma lista sejam armazenados em endereos seqenciais, ou igualmente distanciados um do outro. Pode ser representado por um vetor na memria principal ou um arquivo seqencial em disco. Exemplo:

29

Uma lista representada de forma seqencial um conjunto de registros onde esto estabelecidas regras de precedncia entre seus elementos. O sucessor de um elemento ocupa posio fsica subsequente. A implementao de operaes pode ser feita utilizando array e registro, associando o elemento a(i) com o ndice i (mapeamento seqencial). - CARACTERSTICAS a. os elementos na lista esto armazenados fisicamente em posies consecutivas; b. a insero de um elemento na posio a(i) causa o deslocamento a direita do elemento de a(i) ao ltimo; c. a eliminao do elemento a(i) requer o deslocamento esquerda do a(i+1) ao ltimo;

30

Assim as propriedades estruturadas da lista permitem responder a questes tais como: a. se uma lista est vazia b. quantos elementos existem na lista c. qual o elemento de uma determinada posio d. qual a posio de um determinado elemento e. inserir um elemento na lista f. eliminar um elemento da lista

ESTES ALGORITMOS ESTO IMPLEMENTADOS EM DELPHI COMO SER VISTO AGORA

31

Conseqncia: As quatro primeiras operaes so feitas em tempo constante. As demais, porm, requerero mais cuidados. Vantagens: a. acesso direto indexado a qualquer elemento da lista b. tempo constante para acessar o elemento i - depender somente do ndice. Desvantagem: a. movimentao quando eliminado/inserido elemento b. tamanho mximo pr estimado Quando usar: a. listas pequenas b. insero/remoo no fim da lista c. tamanho mximo bem definido
32

2.2.2. Listas encadeadas


Esta estrutura de dados lista foi concebida, onde, cada elemento da lista armazena uma informao til e uma, ou mais, referencia(s) para outro elemento, desta forma, com o auxlio dos ponteiros, pode-se acrescentar ou retirar elementos conforme a necessidade. Listas encadeadas geralmente so utilizadas para criar vetores de extenso de memria desconhecida, pela sua caracterstica dinmica, permitindo que o vetor (lista) tenha sempre o tamanho necessrio.

2.2.2.1. Listas simplesmente encadeadas


Este tipo de lista o mais simples e segue as seguintes regras: a. deve existir um ponteiro que aponte para o primeiro elemento da lista (incio da lista); b. cada elemento, ou n, da lista aponta para o prximo sucessivamente (da o nome listas encadeadas) c. o ltimo elemento deve apontar para NIL, indicando o final da lista. Agora podemos definir a estrutura bsica de um n da lista
33

Declarao : type apontador = ^no; InfoType = record campos do registro; end; no = record info : InfoType; prox : apontador; end; ,onde no um registro com dois campos : info e prox, info um tipo registro do tipo InfoType contendo as informaes (variveis) teis e prox um ponteiro capaz de armazenar o endereo de memria de um registro do tipo no (elemento da lista). Graficamente a representao de uma lista simplesmente encadeada seria a seguinte :

,onde, INICIO um ponteiro que guarda o endereo de memria do primeiro elemento da lista.
34

Assim as propriedades estruturadas da lista simplesmente encadeada permitem responder a questes tais como: a. se uma lista est vazia b. quantos elementos existem na lista c. qual o elemento de uma determinada posio d. qual a posio de um determinado elemento e. inserir um elemento na lista f. eliminar um elemento da lista

ESTES ALGORITMOS ESTO IMPLEMENTADOS EM DELPHI COMO SER VISTO AGORA

35

2.2.2.2. Listas duplamente encadeadas


Definio: defini-se lista duplamente encadeada como uma lista em que para cada nodo, deve existir dois endereos (pointers) que apontam para nodos da mesma lista, isto , um endereo aponta para o nodo imediatamente posterior e outro endereo aponta para o nodo imediatamente anterior, isto com exceo do primeiro e do ltimo nodo, cujos endereos posterior e antecessor so respectivamente NIL. Abaixo est uma figura representando este tipo de lista encadeada na memria

Aplicao das listas duplamente encadeadas semelhante as listas simplesmente encadeadas, mas aquela mais apropriada, quando h a necessidade de caminhamento em ambos os sentidos.
36

Este tipo de lista segue as seguintes regras: a. deve existir um ponteiro que aponte para o primeiro elemento da lista (incio da lista); b. cada elemento, ou n, da lista aponta para o prximo sucessivamente e para o antecessor; c. o ponteiro que aponta para o sucessor do ltimo elemento e para o antecessor do primeiro elemento deve apontar para NIL. Agora podemos definir a estrutura bsica de um n da lista

37

Declarao:
TYPE Ap_Nodo = ^Nodo Infotype = RECORD Nome : STRING; Idade : BYTE; Sexo : CHAR; Ant, Prox : Ap_Nodo; END; VAR Raiz : Ap_Nodo; BEGIN NEW(RAIZ) WRITE (Digite o Nome : ); READLN (RAIZ^.Nome); WRITE (Digite o Idade : ); READLN (RAIZ^.Idade); WRITE (Digite o Sexo : ); READLN (RAIZ^.Sexo); RAIZ^.Ant := NIL; RAIZ^.Prox := NIL; END.

38

Assim as propriedades estruturadas da lista duplamente encadeada permitem responder a questes tais como: a. se uma lista est vazia b. quantos elementos existem na lista c. qual o elemento de uma determinada posio d. qual a posio de um determinado elemento e. inserir um elemento na lista f. eliminar um elemento da lista

ESTES ALGORITMOS ESTO IMPLEMENTADOS EM DELPHI COMO SER VISTO AGORA

39

2.3. Filas
Definio: uma fila uma lista linear de informao que acessada na seguinte ordem, o primeiro que entra, primeiro que sai (FIFO). Uma fila no permite acesso a um elemento que no seja o primeiro. Aplicao: normalmente as filas so utilizadas na administrao de recursos compartilhados, impondo uma prioridade por ordem de chegada. Um bom exemplo so as filas de impresso, onde, cada documento espera sua vez para ser impresso. Operaes Bsicas (Incluso e Excluso): existem, basicamente, duas operaes bsicas a serem implementadas na filas : adicionar e remover. comum a utilizao de um ponteiro para o incio e outro para o fim da fim, facilitando assim as operaes.

ESTES ALGORITMOS ESTO IMPLEMENTADOS EM DELPHI COMO SER VISTO AGORA


40

2.4. Pilhas
Definio: anlogo estrutura fila, a estrutura pilha tambm pr-define a posio de insero e remoo dos elementos, sendo que, a estratgia ltimo que entra, primeiro que sai (LIFO) Aplicao: um bom exemplo da aplio das pilhas a gerencia das chamadas as sub-rotinas utilizadas pela maioria dos compiladores das linguagens de programao. Operaes Bsicas (Incluso e Excluso): por razes histricas, as duas operaes primrias de pilha - insero e retirada - so normalmente chamadas de push e pop, respectivamente. Assim para implementar uma pilha so necessrias duas funes : PUSH - coloca um elemento no topo da pilha procedure push (var inicio : ponteiro; info : InfoType); POP - retira um elemento do topo da pila function pop (var inicio : ponteiro) : InfoType;

- ESTES ALGORITMOS ESTO IMPLEMENTADOS EM DELPHI COMO SER VISTO AGORA


41

2.5. Deck
Definio: esta estrutura de dados uma unio das propriedades de pilhas e filas, ou seja, s permitido, manipular os elementos das extremidades. Operaes Bsicas (Incluso e Excluso): pode-se inserir e retirar no incio e no fim.

ESTES ALGORITMOS ESTO IMPLEMENTADOS EM DELPHI COMO SER VISTO AGORA

42

2.6. HASH
Definio: A estrutura de dados HASH consiste basicamente em criar uma srie de sub-listas no lugar de uma nica lista maior. A partir da aplicao de uma determinada funo (chamada funo de hashing) sobre a chave de busca do elemento, decide-se em qual das sub-listas o elemento deve ser ou estar armazenado. Procede-se, ento, uma busca na sub-lista determinada. Portanto, ao invs de realizar a busca em toda a lista, faz-se uma busca num subconjunto da lista. Resumindo, atravs da aplicao da funo de hashing, ou o elemento est localizado em determinada sub-lista ou no est localizado em nenhuma das sublistas que compem a lista. Assim, consegue-se uma busca eficiente. Embora os elementos no fiquem dispostos ordenadamente, o hash pemite uma melhora na eficincia da localizao individual dos elemento em relao as listas. A questo principal escolher uma funo de hashing adequada para garantir uma distribuio uniforme dos elementos nas sub-listas, pois existe uma variedade enorme nas funes de hashing. A funo hashing ideal (e muito difcil de ser implementada para listas grandes) transforma a lista de muitas sub-listas com um nico registro cada. Os ponteiros iniciais de cada sub-lista so dispostos num vetor. O nmero de sub-listas, isto , a dimenso deste vetor, define o tamanho da chamada tabela de hash (hash table).
43

A forma mais comum da funo hashing a aplicao, no campo chave de ordenao, da funo mdulo pelo tamanho da hash table e o resultado desta operao indica qual a sub-lista do elemento. Caso o campo chave de ordenao no seja numerico, pode-se utilizar artifcios para transform-lo

funo hash est implementada em Dephi, com veremos agora


Uma funo hash deve satisfazer as seguintes condies: 1. 2. 3. Ser simples de calcular Assegurar que elementos distintos possuam ndices distintos. Gerar uma distribuio equilibrada para os elementos dentro do array, ou seja, em outras palavras, uma boa funo hash aquela em que toda entrada (slot) do array possui a mesma probabilidade de ser atingido pela funo - Distribuio de Records entre endereos A funo hash perfeita seria aquela que no produzisse nenhum sinnimo para um dado conjunto de chaves, em um dado endereamento. A pior funo seria aquela que , para qualquer chave, geraria sempre o mesmo endereo (todas as chaves seriam sinnimas). Uma funo aceitvel gera poucos sinnimos.

em um campo numrico e, ento, aplicar a funo hashing. Esta

44

Vejamos o esquema abaixo:

Este conjunto de endereos o vetor tabela de hash (hash table)


45

3. DADOS NO LINEARES 3.1. rvores So estruturas de dados que seguem as seguintes premissas bsicas: (i) existe um n especialmente designado denominado raiz. (ii) os ns restantes esto desdobrados em n conjuntos (n 0) separados T1, T2, ..., Tn em que cada um dos referidos conjuntos se constitui numa rvore. Os conjuntos T1, T2, ..., Tn, se denominam as subrvores da raiz. Obs.: T1, T2, ..., Tn, ... so conjuntos individuais, ou seja, subrvores no podem ser interligadas.

46

Definies: grau de um n: nmero de subrvores de um n grau da rvore: grau mximo entre os ns da rvore folhas: ns com grau 0 (tambm chamados ns terminais) filhos: razes das subrvores de um n pai de um n: raiz da subrvore que contem este n irmos: ns que so filhos do mesmo pai nvel: define- se inicialmente que a raiz est no nvel 0. A partir deste ponto temos que os filhos da raiz esto no nvel 1, os filhos dos filhos da raiz esto no nvel 2 e assim sucessivamente. altura ou profundidade: nvel mximo entre os ns de uma rvore antepassados de um n: seqncia de ns ao longo da raiz at este n floresta: conjunto de n rvores separadas (n 0 ). A noo de floresta se aproxima muito da noo de rvore pois se retirarmos a raiz obtemos uma floresta
47

48

Podemos afirmar sobre a rvore do slide anterior: 1. a rvore tem 13 ns (A, B, C, D, E, F, G, H, I, J, K, L, M) 2. a raiz o n A 3. o grau da rvore 3 (H, I, J filhos de D e B, C, D filhos de A) 4. o grau do n A 3, o grau do n C 1 e o grau do n F 0 5. as folhas da rvore so {K, L, F, G, M, I, J} 6. os demais ns so chamados de ns no terminais 7. o pai do n D o n A 8. os ns H, I e J so irmos. 9. os antepassados do n M so os ns A, D e H. 10. nvel do n B 1, do n H 2 e do n M 3 11. a altura da rvore 3

49

3.1.1. Representao de rvores a) estrutura em forma de lista A rvore do exemplo 1 pode ser representada pela seguinte lista de ns: (A(B(E(K,L),F),C(G),D(H(M),I,J))) b) utilizando apontador e alocao dinmica - lista de apontadores

50

3.2. rvores binrias


Definio: um conjunto finito de ns, que se apresenta vazio ou que consiste de uma raiz e de duas rvores binrias separadas, denominadas a subrvore esquerda e a subrvore direita. obs1.: numa rvore binria no existe n com grau superior a dois. obs2.: uma rvore binria completa de profundidade k uma rvore binria com 2k+1-1 ns. obs3.: o nmero mximo de ns do nvel k de uma rvore binria 2k, k 1. obs4.: o nmero mximo de ns numa rvore binria de profundidade n 2n+1-1, n 1. No existe rvore vazia (ns com grau zero), ao passo que existe um rvore binria vazia. Se considerarmos as duas rvores abaixo como sendo rvores binrias podemos afirmar que elas so diferentes pois a primeira tem subrvore direita vazia e a segunda tem subrvore esquerda vazia. Se as considerarmos como rvores elas seriam idnticas, apenas desenhadas de maneira diferente.

51

3.2.1. Representao de rvores Binrias Estudaremos dois modos de representar rvores binrias: a representao seqencial e a representao ligada. Na representao ligada veremos como implementar uma rvore binria utilizando um vetor de apontadores e utilizando alocao dinmica. a) Representao seqencial Nesta representao os ns so numerados por nvel e da esquerda para a direita, pois dessa maneira, os ns podem ser armazenados num vetor, sendo que o n de nmero k ser armazenado na posio k do vetor.

52

53

Seja uma rvore binria completa com n ns representados seqencialmente (rvore a do slide anterior). Para qualquer n com ndice k, 0 k n temos: a) Pai(k) est em int((k-1)/2) sendo k 1. Se k = 0, k a raiz b) FilhoEsq(k) est em 2k+1, se 2k+1 n. Se 2k+1 > n ento k no tem filho esquerdo. c) FilhoDir(k) est em 2k + 2, se 2k + 2 n. Se 2k + 2 > n ento k no tem filho direito. Para rvores binrias completas, a representao ideal pois no h perda de espao. Para rvores assimtricas ocorrer perda, sendo que, no pior caso, uma rvore assimtrica de profundidade k exigir 2k-1 posies e s ocupar k posies (lista linear rvore b do slide anterior).
54

Vantagens e desvantagens da representao seqencial Vantagens: estrutura e algoritmos simples, rapidez no acesso ao pai e aos filhos de um n. - Desvantagens: perda de espao para rvores assimtricas (exemplo a), inseres e delees de ns no meio da rvore exigem uma reorganizao do vetor. b) Representao Ligada Esta representao pode ser implementada, dentre outras maneiras, atravs de um vetor ou atravs de alocao dinmica, ambos modos utilizando apontadores (por isso chamada de representao ligada).

55

b.1. Utilizando um vetor


Info 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 A B C D E F G H I J K L M N O Esq 1 3 5 7 9 11 13 Dir 2 4 6 8 10 12 14

56

b.2) Utilizando alocao dinmica - Esquema da estrutura de dados


Filho Esquerdo Filho Direito Informa Informao

As estruturas acima apresentadas dificultam a determinao do pai de um n. Se for essencial este tipo de acesso pode-se adicionar mais um campo de modo a armazenar uma referncia ao pai do n.
57

Operaes em rvores Binrias Para construirmos uma rvore binria devemos definir as seguintes operaes (todas implementadas em Delphi, com veremos): - CriaArv(x): cria uma rvore binria de um nico n com informao x e devolve um apontador para esta rvore. - InsEsq(p,x): cria um novo n, contendo a informao x, a esquerda do n apontado por p. - InsDir(p,x): cria um novo n, contendo a informao x, a direita do n apontado por p. - Info(p): retorna a informao contida no n apontado por p. - FilhoEsq(p): retorna o apontador para o filho esquerdo de p. - FilhoDir(p): retorna o apontador para o filho direito de p. - Irmo(p): retorna o apontador para o irmo de p. - Pai(p): retorna o apontador para o pai de p.

58

3.2.2. Percursos em rvores Binrias Para acessarmos os elementos de uma rvore binria devemos percorrer os seus ns atravs das referncias que temos para os seus filhos esquerdo e direito. Para que este acesso no seja desordenado e aleatrio e para que possamos desenvolver os algoritmos que exploram esta estrutura devemos estabelecer algumas regras para percorrer as rvores binrias. Tomaremos a seguinte conveno: E representa percorrer a subrvore esquerda de um n P representa o acesso a um n (impresso, consulta, alterao, etc.) D representa percorrer a subrvore direita de um n Podemos formar seis combinaes possveis: EPD, EDP, PED, PDE, DPE, DEP. Adotando a norma de percorrer primeiro a rvore esquerda, temos quatro combinaes: EPD - em ordem (in order) EDP - ps ordem (pos order) PED - pr ordem (pre order) DPE em ordem simtrica

59

60

61

3.2.3. rvore Binria de Busca A rvore binria de busca uma rvore binria que satisfaz as seguintes propriedades: a) cada n w na subrvore esquerda de um n v, satisfaz w.info < v.info b) cada n w na subrvore direita de um n v satisfaz w.info > v.info c) para cada elemento x da rvore, existe um e s um n v tal que v.info = x Em outras palavras a definio acima indica que todos os ns a esquerda de um determinado n so menores (informao/chave) que este n e todos os ns a direita de um dado n so maiores (informao/chave) que este n. Observe que as condies a e b acima acarretam o fato de que ao se percorre a rvore segundo o algoritmo in order (EPD) as informaes contidas nos ns sero apresentadas de maneira ordenada. Este tipo de rvore apropriada para realizarmos operaes de insero, remoo e busca.

62

-Os algoritmos de insero e busca so relativamente simples. Apenas uma implementao das regras bsicas de rvore binria ordenada, vista no slide anterior - O algoritmo de remoo algo mais complexo, para melhor analis-lo, o dividiremos em trs situaes, quais sejam:
a) ns sem filhos (folhas): devemos ajustar o apontador do pai correspondente, e, em seguida remover a folha da rvore. b) n com um nico filho: devemos ajustar o apontador do pai do n que ser removido, fazendo-o apontar para o filho do n que ser excluido, e em seguida remover o n da rvore. c) n com dois filhos: precisamos ser cuidadosos para preservar a ordenao da rvore. Para se efetuar uma remoo e ainda preservar a ordenao, devemos substituir o n a ser removido pelo seu Sucessor Imediato. O sucessor imediato de um n o seu descendente mais a esquerda a partir da sua subrvore direita.
63

3.2.4. rvores AVL ou rvore Binria de Altura Equilibrada. Adelson Velsky e Landis introduziram em 1962 uma estrutura de rvore binria que equilibrada com respeito as alturas das sub rvores. Devido a natureza equilibrada das rvores AVL, as recuperaes, inseres e excluses podem ser efetuadas num tempo da ordem de log N onde N o n de ns. Definio 1: a rvore vazia de altura equilibrada. Seja T uma rvore binria de busca no vazia com TE e TD como sub rvores esquerda e direita, ento T ter altura equilibrada se: i) TE e TD forem equilibradas na altura ii) | hE - hD | < 2 onde hE e hD so as alturas de TE e TD respectivamente

64

Definio 2: uma rvore AVL uma rvore binria de busca que vazia ou cuja diferena de pesos entre as profundidades das sub rvores esquerda e direita , no mximo, igual a 1, e as sub rvores direita e esquerda, por sua vez, tambm so rvores AVL. Uma rvore AVL sempre tem um certo grau de balano, mas no precisa estar perfeitamente balanceada. Para restaurar o balano aps uma insero ou remoo temos que reorganizar a rvore. A principal vantagem das rvores AVL que o balanceamento permite que as buscas no se tornem seqenciais, porm devemos considerar o trabalho extra gasto no balanceamento. Definio 3: uma rvore AVL uma rvore binria de busca que vazia ou cujos ns possuem Fator de Balanceamento* (FB) entre -1 e 1. *FB = altura da sub rvore esquerda menos a altura da sub rvore direita do n
65

Exemplos de rvores AVL

66

Exemplos de rvores no AVL

67

Antes de estudarmos os algoritmos de balanceamento para rvores AVL devemos conhecer as operaes de rotao direita, esquerda (que podem ser aplicadas em qualquer rvore binria que possua n no balanceado) e rotao dupla esquerda e dupla direita (que podem ser aplicadas em alguns casos especficos)

68

Rotao dupla direita

Algoritmo: p := raiz; q := p^.Esq; h := q^.Dir; t := h^.Esq; k := h^.Dir; raiz := h; raiz^.Esq := q; raiz^.Dir := p; q^.Dir := t; p.esq := k;

(9) (2=9.Esq) (8=2.Dir) (5=8.esq) (vazio=8.dir) (raiz = 8) (8.esq = 2) (8.Dir = 9) (2.Dir = 5) (9.Esq = vazio)
69

Rotao dupla esquerda

Algoritmo: p := raiz; q := p^.Dir; h := q^.Esq; t := h^.Dir; k := h^.Esq; raiz := h; raiz^.Dir := q; raiz^.Esq := p; q^.Esq := t; p.dir := k;

(2) (5=2.Dir) (3=5.Esq) (4=3.dir) (vazio=3.esq) (raiz = 3) (3.dir = 5) (3.esq = 2) (5.esq = 4) (2.dir = vazio)
70

Para identificarmos quando uma rotao simples ou dupla observamos os sinais de FatBal*: se o sinal for igual**, a rotao simples. se o sinal for diferente** a rotao dupla. 2. Se FB+ rotao para esquerda 3. Se FB- rotao para direita

*FB(nodo p) = altura(subrvoredireita p) -altura(subrvoreesquerda p) ** comparando a altura do n a ser balanado com a altura do filho da subrvore mais alta

71

RVORES AVL

Rosaura E. S. da Silva Estrutura de Dados

rvores Balanceadas
z Uma rvore dita balanceada quando as suas subrvores esquerda e direita possuem a mesma altura. z Todos os links vazios esto no mesmo nvel, ou seja, que a rvore est completa. z A rvore que no est balanceada, define-se como degenerada

rvores Balanceadas
Balanceamento Esttico - O balanceamento esttico de uma rvore binria consiste em construir uma nova verso, reorganizando-a.

Balanceamento Dinmico: AVL { rvore AVL em homenagem aos matemticos russos (Adelson-Velskii e Landism -1962) { Uma rvore AVL uma rvore binria de pesquisa onde a diferena em altura entre as subrvores esquerda e direita no mximo 1 (positivo ou negativo). { A essa diferena chamamos de fator de balanceamento de n (FatBal (n)). { Essa informao dever constar em cada n de uma rvore balanceada

rvores AVL
Assim, para cada nodo podemos definir um fator de balanceamento (FB), que vem a ser um nmero inteiro igual a

FB(nodo p) = altura(subrvore direita p) altura(subrvore esquerda p)

O Fator de uma folha sempre Zero (0)

rvores Balanceadas
z
Exemplos de rvores AVL e rvores no-AVL. z Os nmeros nos nodos representam o FB para cada nodo. z Para uma rvore ser AVL os fatores de balano devem ser necessariamente -1, 0, ou 1.
rvores AVL

rvores No AVL

Balanceamento de AVL
z Inicialmente inserimos um novo nodo na rvore. z A insero deste novo nodo pode ou no violar a propriedade de balanceamento. z Caso a insero do novo nodo no viole a propriedade de balanceamento podemos ento continuar inserindo novos nodos. z Caso contrrio precisamos nos preocupar em restaurar o balano da rvore. A restaurao deste balano efetuada atravs do que denominamos ROTAES na rvore.

rvores AVL
z Se quisermos manter a rvore balanceada a cada
insero, devemos ter um algoritmo que ajuste os fatores de balanceamento

z O algoritmo corrige a estrutura travs de movimentao dos ns, ao que chamamos de rotao.

rvores Balanceadas
z Exemplos z Vamos considerar a seguinte rvore (os nmeros ao lado dos nodos so o FB de cada nodo):

A rvore acima est balanceada, como podemos observar pelos FB de cada nodo. Os casos possveis de desbalanceamento so 2. Veremos cada um deles.

Tipo 1 Rotao Dupla

z Ao inserir o nmero 5 na rvore. Esta insero produziria a seguinte rvore:

O nodo 8 fica com o FB -2 e tem um filho com FB +1. Neste caso o


balanceamento atingido com duas rotaes, tambm denominada ROTAO DUPLA. Primeiro rotaciona-se o nodo com FB 1 para a esquerda.

Tipo 1 Rotao Dupla

A seguir rotaciona-se o nodo que tinha FB -2 na direo oposta (direita neste caso).

Tipo 1 Rotao Dupla

Os FB nos nodos voltaram a ficar dentro do esperado das rvores AVL. O caso simtrico ao explicado acima acontece com os sinais de FB trocados, ou seja, um nodo com FB +2 com um filho com FB -1. Tambm utilizariamos uma rotao dupla, mas nos sentidos contrrios, ou seja, o nodo com FB -1 seria rotacionado para a direita e o nodo com FB +2 seria rotacionado para a esquerda.

Tipo 2 Rotao Simples


Suponha que queremos inserir o nodo 3 na rvore inicial. A insero produziria a seguinte rvore:

A insero do nodo 3 produziu um desbalano no nodo 8 verificado pelo


FB -2 neste nodo. Neste caso, como os sinais dos FB so os mesmos (nodo 8 com FB -2 e nodo 4 com FB -1) significa que precisamos fazer apenas uma ROTAO SIMPLES direita no nodo com FB -2. No caso simtrico (nodo com FB 2) faramos uma rotao simples esquerda.

Tipo 2 Rotao Simples

Aps a rotao simples a rvore ficaria:

Observe que os FB esto dentro do esperado para mantermos a propriedade de balanceamento de rvores AVL.

A descrio do algoritmo em pseudo-cdigo para a construo de uma rvore AVL:

1. Insira o novo nodo normalmente (ou seja, da mesma maneira que inserimos numa ABB); 2. Iniciando com o nodo pai do nodo recm-inserido, teste se a propriedade AVL violada neste nodo, ou seja, teste se o FB deste nodo maior do que abs(1). Temos aqui 2 possibilidades: 2.1 A condio AVL foi violada 2.1.1 Execute as operaes de rotao conforme for o caso (Tipo 1 ou Tipo 2) 2.1.2 Volte ao passo 1 2.2 A condio AVL no foi violada. Se o nodo recm-testado no tem pai, ou seja, o nodo raiz da rvore, volte para inserir novo nodo (Passo 1)

Dicas: rvores AVL


1. Para identificarmos quando uma rotao simples ou dupla observamos os sinais de FatBal: se o sinal for igual, a rotao simples. se o sinal for diferente a rotao dupla. 2. Se FB+ rotao para esquerda 3. Se FB- rotao para direita

Referncias:
Bibliografia: Luzzardi, Paulo Roberto Gomes - Estrutura da Dados. UCPel

Sites: www.fw.uri.br/~elisa/estrutura/arvores_avl_b_2.pdf

Simulao: http://www.site.uottawa.ca/~stan/csi2514/applets/avl/BT.html

You might also like