daniel terzella leandro amancio eduardo bruno …...7hpsodwhv — ’hfodudom g whpsodwh˛ frpho fr...
TRANSCRIPT
*HQHULF 3URJUDPPLQJ
Daniel Terzella
Leandro Amancio
Eduardo Bruno Hadlich
$XWRUHV
� 'DYL
�
5 � 0XVVHU
� $OH[DQGH
�
$ � 6WHSDQRY
� $UWLJ
�
DSUHVHQWDG
�
H
�
���� � H
�
5RP
�
±,WiOLD�
3URJUDPDom *HQpULFD
� 'HILQLom
�
GR
�
$XWRUHV
� ³*HQHULF 3URJUDPPLQ
�
FHQWHU
�
DURXQ
�
WK
�
LGH
�
R
�
DEVWUDFWLQ
�
IUR
FRQFUHWH HIILFLHQ
�
DOJRULWKP
�
W
REWDL�
JHQHUL
�
DOJRULWKP
�
WKD
�
FD
�
E
�
FRPELQH�
ZLW
�
GLIIHUHQ
�
GDW
�
UHSUHVHQWDWLRQ�W
�SURGXF
� �
ZLG
�
YDULHW
�
R
�
XVHIX
�
VRIWZDUH�´
3URJUDPDom *HQpULFD
� 2XWU
�
GHILQLomR
� 3URJUDPDom
�
*HQpULF
�
SRG�
VH
�
GHILQLG
�
FRP
�
³SURJUDPDom
�
FR�
FRQFHLWRV´ � RQG
�
X
�
FRQFHLW
�
p GHILQLG�
FRP
�
XP
�
IDPtOL
�
G
�
DEVWUDo}H
TX
Vm
�
UHODFLRQDGD
SR
�
X
FRQMXQW
�
FRPX�
G
�
UHTXLVLWRV�
$QDORJLD
&ODVVLILFDom GD $EVWUDo}HV
� $EVWUDom
�
G
�
GDGRV
� 7LSR
�
G
�
GDGR
� �
RSHUDo}H�
GHILQLGD
�
VREU
� �
OHV
� 3RGH
�
VH
�
HQWHQGLGD�
LQGHSHQGHQWHPHQW
�
G
�
VX
�
LPSOHPHQWDomR� 3LOKDV � /LVWDV � )LODV
&ODVVLILFDom GD $EVWUDo}HV
� $EVWUDom
�
G
�
DOJRULWPRV
� )DPtOLD
�
G
�
DEVWUDo}H
�
G�
GDGR
�
FR
�
RSHUDo}H
�
FRPXQ
�
HQWU� �
OHV� $OJRULWPR
�
G
�
RUGHQDom�
SDU
�
OLVWDV
LOKD
� �
ILODV
,GpLDV�FKDYH
� (OHYD
� �
QtYH
�
G
�
DEVWUDom
�
G
�
DOJRULWPR
�
FRQFUHWR
� �
H
�
SHUGH
�
HILFLrQFLD�
� 8WLOL]D
�
DOJRULWPR
� �
H
�
V
SUHRFXSD
�
FR
�
DEVWUDom
G
GDGRV�
� 5HSUHVHQWDo}H
�
ODUJDPHQW
DGDSWiYHL
�
SDU
�
VXSRUWD
�
VH
� �
V
GLUHW
Q
�
FRQVWUXom
G
VRIWZDUH�
8WLOL]DomR
� 'HILQLom
�
G
�
XP
�
FODVV
�
JHQpULF�
p IHLW
�
XP
�
~QLF
�
YH
� � �
O
�
p UHXWLOL]DG
�
DWUDYp�
G
�
HQYL
�
G
�
SDUkPHWURV � �3DUDPHWUL]DomR�
� (VSHFLILFDom
GR
DOJRULWPR
H
�
WHPS
G
�
FRPSLODomR�
� 67
H
�
&��
([HPSO DEVWUDWR
� &ODVVH
�
FRQFUHWDV
� 5HDOBVWDFN � ,QWHJHUBVWDFN � %RRNBVWDFN
� &ODVV
�
JHQpULFD
� 6WDFN>*
�
� RQG
� � �
X
�
SDUkPHWU
JHQpULFR
� &ODVV
�
UHXWLOL]iYH
H
�
GLYHUVD
�
DSOLFDo}HV
7HPSODWHV
� 'HILQLomR
�
Vm
�
XP
� �
ERUGDJH
�
SDU
�
SURJUDPDom
�
JHQpULFD � XP
�
HVWUDWpJL
�
G
�
SURJUDPDom�
Q�
TXD
�
FRQMXQWR
�
G
�
DOJRULWPR
�
Vm
�
SDUDPHWUL]DGR
�
SR
�
XP
�
YDULHGDG
G
WLSR
G
GDGRV�HVWUXWXUD
G
GDGR
DGHTXDGDV�
�
�
PHFDQLVP
�
GH 7HPSODWHV H
&�
�
SHUPLW
TX
X
WLS
�
VHM
�
XP
�
SDUkPHWU
�
Q
�
GHILQLom
�
G
XP
�
FODVV
R
�
IXQomR �
� 6H
�
XV
�
DEU
QRYD
SRVVLELOLGDGH
Q
�
OLQJXDJHP � WDL
FRP
� �
GHVFULom�
G
DOJRULWPR
TX
V
[HFXWD
H
WHPS
�
G
�
FRPSLODomR ��
JHUDom
� �
WLPL]DG
�
G
�
FyGLJR
� � �
UHXV
�
G
�
FyGLJR�
7HPSODWHV
�
�
XV
�
G
�
7HPSODWH
� � �
PRVWUR
�
HVVHQFLD�
Q�
SURMHW
�
G
�
ELEOLRWHF
�
SDGUm
�
G
�
&
� �
�67/� � XP�
YH
TX
�
D
�
HVWUXWXUD
� �
DOJRULWPR
�
O
GHILQLGR�
GHYH
�
VH
�
G
�
XV
�
JHUD
�
VH
�
FRPSURPHWH
�
VX
�
HILFLrQFLD $VVLP � YiULR
�
DOJRULWPR
�
SRGH
�
VH
�
XVDGR�
FR
�
YiULD
�
HVWUXWXUD
�
G
�
GDGRV
7HPSODWHV
� 8P WHPSODWH Qm
�
FDXV
�
SHUG
�
G
�
GHVHPSHQKR
�
�
WUDQVIRUPDom
�
G
�
XP WHPSODWH �DEVWUDWR
� �
XP
FODVV
�
�FRQFUHWD
� �
IHLW
H
WHPS�
G�
FRPSLODomR
�
WDPEp
Qm
�
LPSOLF
Q
UHGXom�
G
TXDQWLGDG
�
G
�
FyGLJ
�
JHUDGR
�
V
�
WHQK
�
H
H
�SURMHW
�
GXD
�
FODVVH
�
GHULYDGD
�
G
�
XP WHPSODWH � FyGLJ
�
VHU
�
JHUDG
�
G
�
IRUP
�
HTXLYDOHQW� �
GHILQLom
�
GLUHW
�
G
�
GXD
�
FODVVH
�
Qm
�
UHODFLRQDGDV �
7HPSODWHV
� 'HFODUDom
�
G
�
WHPSODWH� FRPHo
�
FR� �
SDODYU
�
FKDY
�
WHPSODW
�
VHJXLG
�
SR
�
XP
�
OLVW�
G�
SDUkPHWUR
�
G
�
WLSR
�
IRUPDL
�
FRORFDG
HQWU
�
R� �
tPEROR
� �
! �
7RG
�
SDUkPHWU
�
IRUPD
�
SUHFHGLG�
SHO
SDODYUD�FKDY
�
W\SHQDP
�
R
�
SHO
�
SDODYUD�FKDYH FODVV�
� 3DUkPHWUR
�
G
�
WLSR�
IRUPDL
�
Vm
�
WLSR
�
SULPLWLYR
�
R
�
WLSR
�
GHILQLGR
�
SHO�
SURJUDPDGRU � XVDGR
�
SDU
�
HVSHFLILFD
�
R
�
WLSR�
G�SDUkPHWUR
�
G
�
FODVV
�
R
�
IXQomR �
�
WLS
�
G�
UHWRUQ
�
G
�
IXQom
� �
SDU
�
GHFODUD
�
YDULiYHL
�
GHQWU�
G
�
FRUS
�
G
�
IXQomR�
([HPSO )XQom *HQpULFD
template < class T>T maximum (T value1, T value2, T value3){
T max = value1;if (value2 > max)
max = value2;
if (value3 > max)max = value3;
retunr max;}
8V G )XQom *HQpULFD
//versão para inteirosint main (){
int int1, int2, int3cout << “ Forneça 3 va lores inteiros: ” ;cin >> int1 >> int2 >> int3;cout << “ O maior valor inteiro é: ”
<< maximum (int1, int2, int3);���
8V G )XQom *HQpULFD
...//versão para doubledouble double1, double2, double3
cout << “ Forneça 3 valores double: ” ;cin >> double1 >> double2 >> double3;cout << “ O maior valor double é: ”
<< maximum (double1, double2, double3);...
8V G )XQom *HQpULFD...//versão para caractereschar char1, char2, char3
cout << “ forneça 3 caracteres: ” ;cin >> char1 >> char2 >> char3;cout << “ O maior valor de caractere é: ”
<< maximum (char1, char2, char3);
return 0;} //fim do main
5HVXOWDG G 8V G )XQomR
Forneça 3 valores inteiros: 1 2 3O maior valor inteiro é: 3
Forneça 3 valores double: 3.3 2.2 1.1O maior valor double é: 3.3
Forneça 3 caracteres: A C BO maior valor de caractere é: C
5HVXOWDG G XV G )XQomR
� 5HVXWDGR G
�
FRPSLODom
� � �
PHVP
�
TX�
V�
IRVVH
�
HVFULWD
� �
IXQo}H
�
GLIHUHQWH
�
SDU
�
FDG�
WLSR � R
VHMD �
FRPSLODG
�
XP
�
IXQom
�
SDU
�
RSHUD�
FR
LQW � XP
�
SDU
�
GRXEOH
�
RXWU
�
SDU
�
FKDU�
� 4XDQG
� �
IHLW
� �
FRPSLODomR � WRGD
�
D
�
UHIHUrQFLD
�
IHLWD
� �
FODVV
�
Q
�
IXQom�
JHQpULF
�
Vm
�
VXEVWLWXtGD
�
SHO
�
WLS
�
HQYLDG�
SR�
SDUkPHWUR�
([HPSO G )XQom &RPSLODGD
int maximum (int value1, int value2, int value3){
int max = value1;if (value2 > max)
max = value2;
if (value3 > max)max = value3;
retunr max;}
8V G )XQom SR
�
XP &ODVVH
3HVVRD
SB1RPHSB,GDGHSB5*SB$OWXUD
Se fossem passados para a função 3 Objetos da classe Pessoa?
)XQom
�
&RPSLODG
�
FR &ODVV
�
3HVVRD
Pessoa maximum (Pessoa value1, value2, value3){Pessoa max = value1;if (value2 > max)
max = value2;
if (value3 > max)max = value3;
retunr max;}
Como fazer “Pessoa1 > Pessoa2” ?
)XQom
�
*HQpULF
�
FR &ODVV
�
3HVVRD
� 4XDQG
�
V
� �
VFUHYH
� �
IXQom
�
JHQpULF�
Qm�
V
�
VDEL
� �
SULRU
�
TXD
� �
PpWRG
�
TX
�
FRPSDU�
R
GDGRV �
MXVWDPHQW
�
SRUTX
� �
FODVV
�
TX
�
FKDP
�
HVV
�
PpWRG
�
JHQpULF
�
�template� �
� $SHQD
DEH�V
�
TX
�
SDU�
TX
�
XP
�
FODVV
�
G
� �
QWUDG
�
SRVV
�
XVD
HVV
�
IXQomR �
SUHFLV
�
TX
� �
PpWRG
�
operator> HVWHM
�
GHILQLGR�
6REUHFDUJD
� 6REUHFDUJ
�
REMHWLY
�
IRUQHFH
�
SDU�
WLSR
�
GHILQLGR
�
SHO
�
XVXiUL
�
D
�
PHVPD�
H[SUHVV}H
�
TX
�
&
� �
IRUQHF
�
SDU
�
VHX�
WLSR�
SULPLWLYRV�
� &RP
�
SRGHPR
� �
DEH�
TXH
��
PDLR
�
SHVVRD"R: Pode ser visto pela Altura. A maior pessoaé a mais alta!
6REUHFDUJD
� 'HYH�V
�
VREUHFDUUHJD
� �
RSHUDGR�
G�
! SDU
�
TX
� �
FODVV
�
SHVVR
�
SRVV
�
XVD
� �IXQomR�
3HVVRD
SB1RPHSB,GDGHSB5*SB$OWXUD
RSHUDWRU!
6REUHFDUJD
Exemplo de função sob recarregada: //recebe objeto pessoa como parâmetroboo l operator> (Pessoa &A) { return (p_Altura > A.p_Altura) }
Na função genérica quando for feito:if (value1 > max)
seria como se estivesse chamando uma função da classe:value1.operator>(max);
2%6
�
2XWU
� �
SHUDGR�
TX
�
GHYHUL
�
VH
�
VREUHFDUUHJDG
�
VHULD
� �
SHUDGR�
G�
DWULEXLom
�
� ��
6REUHFDUJD
� ([LVWH
�
YiULD
�
PDQHLUD
�
G
�
V
�
VREUHFDUUHJD
�
SRUpP � EDVWD�V
�
VDEH
�
TX
�
VREUHFDUJ
� �
X
�
UHFXUV�
IDFLOLWDGR
�
SDU
� �
SURJUDPDom
�
JHQpULF
�
XVDQG�
WHPSODWH
�
H
�
&�� �� 6REUHFDUJ
� �
X
�
SURFHGLPHQW
�
EH
�
FRPX
�
Q�
/LQJXDJH
�
&�� � SR
�
H[HPSO
� � �
SHUDGR
�
VRP
�
��
H[HFXW�
G
�
PDQHLUD
�
GLIHUHQWH
�
SDUD LQWV� IORDWV � GRXEOHV SRL
�
M
IRUD
�
VREUHFDUUHJDGR
�
Q
�
OLQJXDJH
�
&���
� 0D
�
SDU
�
TX
�
LVV
�
RFRUU�
GHYH�V
�
WH
�
FODVVH
� �
IXQo}H
�
EH
�
GRFXPHQWDGD
�
SDU
�
TX�
VH
�
XVXiUL
�
WHQK
�
QRom
�
G
�
TX
�
PpWRGR
�
FULD
�
Q
�
VX�
FODVV
�
SDU
�
XVD
�
GHWHUPLQDG
�
FODVV
�
R
�
IXQom
�
JHQpULFD�
0DL G X 3DUkPHWUR
� REVHUYDom
�
LPSRUWDQWH�
FRP
�
SUHFLVDPR
�
GHILQL
� �
LQVWDQFLDomR H
�
WHPS
�
G
�
FRPSLODomR � FHUWR
�
SDUkPHWUR
�
GHYH
�
VH
�
LQVWDQFLDGR
�
SR
�
OLWHUDLV�
YRL
�
I�LQW L
%XIIHU�LQW � L! E[
�
��HUU
`
� X
�
WHPSODWH SRG
�
WH
�
PDL
�
G
�
X
�
SDUkPHWUR � 3RU H[HPSOR�
WHPSODWH�FOD
� �
7� LQW L
�
FODV
�
%XIIH� �
�
Y>L@�
LQ
�
V]
�
SXEOLF
�
%XIIHU�
�
� V]�L
�
^`
������`
�
%XIIHU�IORDW � ���! FEXI�
(VSHFLDOL]DomR�
�
WHPSODWH JHQpULF
�
GHY
�
VH
�
GHFODUDG
�
DQWH
�
G�
TXDOTXH
�
HVSHFLDOL]DomR
�
� WHPSODWH�FODVV 7
�
FOD
� �
/LVW ^� ��� �`�
��WHPSODWHJHQpULF
� WHPSODWH�FODVV 7
FOD
� �
/LVW�7
^� ��� �`
�
��WHPSODWH HVSHFLDOL]DG
H
�
SRQWHLURV
� 1HVW
VLWXDomR �
FRPSLODGR�
SULPHLUDPHQW
�
LU
�
SURFXUD
�
WHPSODW
�
HVSHFLDOL]DG
�
� /LVW�SRQWHLUR!
�
DQWH
�
G
�
TXDOTXHUWHPSODW
�
/LVW SDUDPHWUL]DG
�
SR
�
X
�
SRQWHLUR �
� 'HVW
�
IRUPD � FULD�V�
FR
� �
HQR
�
WUDEDOK
�
XP
�
LQWHUIDF
�
SDU
�
XP
�
FODVV
�
PDL�
JHQpULF
� �
D
�
PHVP
�
WHPS
�
XP
�
~QLF
�
FODVV
�
SDU
�
WRGR
R
WLSR
G
�
/LVW
�
G
�
SRQWHLUR�
3ROLPRUILVP 7HPSODWHV
� WHPSODWHV
�
IXQo}H
�
YLUWXDL
�
WH
�
REMHWLYR�
EDVWDQW
�
VHPHOKDQWHV� SHUPLWH
��
FULDom�
G
�
FRQMXQWR
�
G
�
WLSR
�
G
�
GDGR
�
FRPSDUWLOKDQG
�XP
�
LQWHUIDF
�
H
�
FRPXP �
� )XQo}H
�
YLUWXDL
�
IRUQHFH
�
X
�WLS
�G
�
FRPSRUWDPHQWRSROLPyUILFR H
�
WHPS
�
G
� �
[HFXomR HQTXDQWR WHPSODWHVDJH
�
H
�
WHPS
�
G
�
FRPSLODomR �
� 4XDQG
�
XWLOL]D
X�
R�
RXWUR"
3ROLPRUILVP 7HPSODWHV
funções virtuais são adequadas quando existe uma hierarquia entre as classes que compartilham aquela interface, possibilitando uma forma elegante de permitir diferentes implementações de um mesmo método
$QLPDO
6 � 'LJHVWLYR
*DOLQKD
6 � 'LJHVWLYR
+XPDQR
6 � 'LJHVWLYR
3ROLPRUILVP 7HPSODWHV
� WHPSODWHV WUDWD
�
VXD
�
FODVVH
�
LQVWDQFLDGD�
H�
LJXD
�
QtYH
�
KLHUiUTXLFR �
�
LPSOHPHQWDom
�
G
�
X
� �pWRG
� �
~QLFD
�
SRGHP�V
�
XWLOL]D
HVSHFLDOL]Do}H
�
SDU
GHWHUPLQD
D
�
OLJHLUD
�
GLIHUHQoD
�
HQWU
�
D
�
FODVVH�
�V�
QHFHVViULR� �
HQTXDQW
� �
DOJRULWP
�
SULQFLSD� � �
PHVP
�
SDU
HVW
�
FRQMXQW
�
G
�
FODVVHV �
� $Op
�
GLVVR � SR
TXHVW}H�G
�HILFLrQFLD � SRG
�
VH
PDL
�
LQWHUHVVDQW
�
UHRUJDQL]DGHWHUPLQDGR
�
PpWRGR
�
H
�
WHPSODWHV D
�
LQYp
�
G�
GLVWULEXt�ORV H
�
IXQo}H
�
YLUWXDL
�
SUHVHQWH
�
H
�
GLIHUHQWH
�
FODVVHV�
3ROLPRUILVP 7HPSODWHV
� H[HPSO
�
JHQpULFR
�
FRQKHFHPR
� �
FRQFHLW� � �
FRPSRUWDPHQW
�
G
�
XP
�
SLOK
�
�³~OWLP� �
HQWUD
� � �
SULPHLU
� �
VDLU´
VH
HVP
�
VDEH�
GR
WLSR
G
�
LWHQ
TX
�
HVWm
�
LQVHULGR
QHOD � 0D
TXDQG�
FKHJ
�
Q
�
PRPHQW
�
G
�
HIHWLYDPHQW
�
LQVWDQFLD
�
XP
�
SLOKD � X
WLS
�
G
�
GDGR
GHY
�
VH
�
HVSHFLILFDGR � 1HFHVVLWDPR
G
�
PHLR
G
�
GHVFUHYH
� �
QRom
�
G
�
SLOK
�
JHQHULFDPHQW
� �
LQVWDQFLD
�
FODVVH
TX
�
Vm
�
YHUV}H
GHVW
�
FODVV�
JHQpULF
�
G
�
SLOK
�
SDU
�
WLSR
HVSHFtILFR
G
�
SLOKD � (VW
�
UHFXUV
� �
IRUQHFLG
�
SR
�
7HPSODWHV�
3LOK
�
*HQpULF
�
�/,)2�
[\Z]DE
([HPSO G &ODVV *HQpULFD
//declaração da classe Pilhatemplate< class T> class Stack{public:
Stack (int = 10); //construtor default (tamanho da pilha 10)~Stack() { delete[] stackPtr;} //destruidorboll push ( const T&); //insere um elemento na pilha
private:int size ; //quantidade de elementos na Pilhaint top; //posição do elemento no topo da pilhaT *stackPtr; //ponteiro para pilha
boll isEmpty() const {retunr top == -1;}boll isFull() const {retunr top == size - 1;}
};
([HPSO G &ODVV *HQpULFD//Construtor com tamanho default 10template<class T>Stack<T>::Stack ( int s ) {
size = (s > 0 ? s : 10);top = -1; //inicialmente stack está vaziastackPtr = new T[ size ] //aloca espaço para elementos
}// insere um elemento na pilha (retorna 1 se bem sucedida e 0 caso contrário)template < class T >boll stack <T>:: push ( const T &pushValue){
if ( ! IsFull() ) {stackPtr[ ++top ] = pushValue; //coloca item em Satckretunr true; //push bem sucedida
}else { retunr false; } //push mal sucedida
}
([HPSO G &ODVV *HQpULFD
//retira um elemento da pilhatemplate< class T >boll stack <T>:: pop ( T &popValue){
if ( ! isEmpty() ){popValue = stackPtr[ top- ]; //remove item de stackreturn true; //operação pop bem sucedida
}return false; //pop mal sucedido}
8V G &ODVV 3LOK *HQpULFDint main(){//uso da pilha com doublestack < dou ble > doubleStack(5);dou ble f = 1.1;cout << “ Inserindo elementos em doub leStack\n”
while ( doubleStack.push( f ) ) //sucesso true retornado{ cout << f << ‘ ’ ;
f += 1.1; }
cout << “ \nStack está cheia. Não pod e inserir ” << f << “ \nRetirando elementos de doubleStack\n ” ;
while (doubleStack.pop ( f ) ) //sucesso: true retornadocout << f << ‘ ’;
cout << “ \nStack está vazia. Não pod e retirar\n” ;
8V G &ODVV 3LOK *HQpULFD... //uso da pilha com inteiroStack< int > inStack; //usa construtor defaultInt i = 1;cout << “ Inserindo elementos em intStack\n”
while ( intStack.push( i ) ) //sucesso true retornado{ cout << i << ‘ ’ ;
++i; }
cout << “ \nStack está cheia. Não pod e inserir ” << i<< “ \nRetirando elementos de intStack\n ” ;
while (intStack.pop ( i ) ) //sucesso: true retornadocout << i << ‘ ’;
cout << “ \nStack está vazia. Não pod e retirar\n” ;
return 0; } //fim do main
5HVXOWDG G 8V G 3LOKDInserindo elementos em doub leStacK1.1 2.2 3.3 4.4 5.5Stack está cheia não pode inserir 6.6
Retirando elementos de doub leStack5.5 4.4 3.3 2.2 1.1Stack está vazia. Não pode retirar
Inserindo elementos em intStack1 2 3 4 5 6 7 8 9 10Stack está cheia não pode inserir 11
Retirando elementos de intStack10 9 8 7 6 5 4 3 2 1Stack está vazia. Não pod e retirar
6WDQGDU 7HPSODW /LEUDU\
� TX
�
67
�
"� $SURYDG
�
H
� � � ��
SHO
�
FRPLWr G�
SDGU}H
&��
� &ULDGRUHV
$OH[DQGHU 6WHSDQRY � 0HQJ /
� � �
'DYLG 0XVVHU
� %LEOLRWHF
�
SDGUm
�
G�
FRPSRQHQWH
UHXWLOL]iYHLV
�
�
67
p IRUPDG�
SR
�
WUr
HOHPHQWR
FKDYH
±FRQWrLQHUHV � LWHUDGRUHV
�
DOJRULWPR
6WDQGDU 7HPSODW /LEUDU\
� 67/�
67/
$OJRULWPRV
&RQWHLQHUHV
,WHUDGRUHV
3URJ � *HQpULFD
6WDQGDU 7HPSODW /LEUDU\
� &RQWrLQHUHV
� (VWUXWXUD
�
G
�
GDGR
�
SRSXODUH�
SDGURQL]DGDV � FULDGR
�
DSDUWLU G
�
WHPSODWHV �
XWLOL]DQGR�V
� �
SDUDGLJP�
G
�
SURJUDPDom
�
JHQpULFD� ([�
�
3LOKDV � /LVWDV � )LODV���
6WDQGDU 7HPSODW /LEUDU\
� $OJRULWPRV
� 8WLOL]DGR
�
SDU
�
PDQLSXOD
�
R�
FRQWHLQHUHV� ([
�
,QVHULU � 'HOHWDU � 3URFXUDU � &ODVVLILFDU � � �
6WDQGDU 7HPSODW /LEUDU\
� ,WHUDGRUHV
� 6m
�
XWLOL]DGR
�
SDU
�
DFHVVD�
HOHPHQWR
�
G
�
FRQWrLQHUHV
6WDQGDU 7HPSODW /LEUDU\
� &RQWHLQHUHV
�
�
67
�
IR
�
FXLGDGRVDPHQW
�
SODQHMDG
�
G
�
PDQHLU
�
TX
�
R
�
FRQWrLQHUH�
IRUQHoD
�
IXQFLRQDOLGDGH
�
VLPLODUHV � G
�
IRUP
�
TX
�
H[LVWD
�
RSHUDo}H�
JHQpULFD
� �
RXWUD
�
RSHUDo}H
�
TX
�
V�
DSOLFD
� �
VXEFRQMXQWR
�
G
�
FRQWHLQHUHV VLPLODUHV�
� ([
IXQom
VL]H �DSOLFDG
� �
WRGR
�
FRQWHLQHUHV�
� ([
IXQom
HUDVHU �DSHQD
�
FRQWrLQHUH
�
G
�
VXEFODVV
$GDSWDGRUHV�
6WDQGDU 7HPSODW /LEUDU\
� 5HODom
� � �
Q
&RQWrLQHU $OJRULWPRQ Q
� 8
�
DOJRULWP
�
SRG�
VH�
XWLOL]DGR SRUYiULRV FRQWHLQHUHV
� 8P FRQWrLQHU SRG
�
XWLOL]D
�
YiULR
�
DOJRULWPRV
6WDQGDU 7HPSODW /LEUDU\
� 2XWUD
�
ELEOLRWHFDV
� $OJRULWPR
�
FRQVWUXLGRV QD�
FODVVH
�
G
�
FRQWHLQHUHV
$OJRULWP�
$
&RQWrLQHU
$OJRULWP�%
$OJRULWP
�
&
6WDQGDU 7HPSODW /LEUDU\
� ([HPSOR�
// container
list<string> Friends;
// iterator to the begin
list<string>::iterator begin = Friends.begin()of the container
// iterator to the end of the container
list<string>::iterator end = Friends.end() of the container
// algorithm find() search for "Philippe" in the container
if (find(Friends.begin(),Friends.end(),"Philippe") != Friends.end())
FRXW
� �
�3KLOLSS
�
L
� �
IULHQ�
R
�
PLQH
�
�
�
HQG�
6WDQGDU 7HPSODW /LEUDU\
� 9DQWDJHP
� 8VDQG
� �
67/ � SRGHPR
�
HFRQRPL]D
�
WHPS
�
� �
VIRUo
�
FRQVLGHUiYHL
�
G�
SURJUDPDom
� �
REWH
�
FRP
�
UHVXOWDG�
VRIWZDUH
�
G
�
PDLR
�
TXDOLGDGH�
� GHVHQYROYHGR�
Qm
�
SHUG
�
WHPS
�
Q
�
FRQVWUXom
�
G�
FRPSRQHQWH
�
TX
�
M
�
H[LVWH
�
Q
�
ELEOLRWHFD
� 6RIWZDUH�
G
�
PDLR
�
TXDOLGDGH
3URJUDPDom *HQpULFD
� /LQNV�
� *HQHUL
�
3URJUDPPLQJ
� KWWS���ZZZ�FV�USL�HGX�aPXVVHU�JS
� 67/
�KWWS���ZZZ�VJL�FRP�7HFKQRORJ\�67/
�KWWS���ZZZ�GHO�XIUM�EU�aYLOODV
�KWWS���ZZZ�FV�USL�HGX�SURMHFWV�67/�VWO�VWO�KWPO
�KWWS���ZZZ�LVHO�LSO�SW�$JHQGD�VHPLQDULR��KWPO