Você está na página 1de 11

$OJRUtWLPRVH3URJUDPDomR

Autoria: Jeanne Dobgenski

Tema 03
Estruturas de Controle de Fluxo

7HPD
Estruturas de Controle de Fluxo
Autoria: Jeanne Dobgenski
Como citar esse documento:
DOBGENSKI, Jeanne. Algoritmos e Programao: Estruturas de Controle de Fluxo. Caderno de Atividades. Valinhos: Anhanguera Educacional, 2014.

ndice

CONVITELEITURA PORDENTRODOTEMA
Pg. 3 Pg. 3

ACOMPANHENAWEB
Pg. 15 Pg. 16

Pg. 18 Pg. 19

Pg. 19 Pg. 20

 $QKDQJXHUD (GXFDFLRQDO 3URLELGD D UHSURGXomR QDO RX SDUFLDO SRU TXDOTXHU PHLR GH LPSUHVVmR HP IRUPD LGrQWLFD UHVXPLGD RX PRGLFDGD HP OtQJXD
SRUWXJXHVDRXTXDOTXHURXWURLGLRPD
CONVITELEITURA
Para a adequada construo de algoritmos h a necessidade de compreender todos os recursos que as linguagens
de programao oferecem aos desenvolvedores. Para isso, fundamental que se tenha conhecimento sobre os
operadores lgicos, compreenda-se a importncia que esses operadores, e tambm os relacionais, possuem num
algoritmo, que se saiba manipular as estruturas de controle de seleo e se conhea os tipos existentes, sempre tendo
HPYLVWDDIHUUDPHQWDFRPSXWDFLRQDOXVDGDSDUDFRGLFDURVDOJRULWPRV(VVHVHOHPHQWRVVRIUHPSHTXHQDVDOWHUDo}HV
de uma linguagem de programao para outra e, como voc perceber, a linguagem C possui uma estrutura de lao de
repetio for bastante poderosa! Mas o que so laos de repetio mesmo? Atente-se ao texto e aproveite o momento
para conhecer mais sobre a linguagem de programao C, desenvolvendo sua capacidade de implementar programas
computacionais. Bons estudos!

PORDENTRODOTEMA
(VWUXWXUDVGHFRQWUROHGHX[R
( W W G W O G

Os operadores relacionais e os operadores lgicos so usados para a composio de expresses lgicas, ou


seja, aquelas que resultam em apenas duas possibilidades: verdadeiro ou falso. A Tabela 3.1 apresenta os operadores
relacionais e a Tabela 3.2, os operadores lgicos.

Tabela 3.1 Operadores relacionais.

Operao Operador em C ([HPSOR


Igual == a == b (a igual a b?)
Diferente != a != b (a diferente de b?)
Maior que > a>b (a maior que b?)
Menor que < a<b (a menor que b?)

PORDENTRODOTEMA
Operao Operador em C ([HPSOR
Maior ou igual que >= a>=b (a maior ou igual a b?)
Menor ou igual que <= a<=b (a menor ou igual a b?)
Fonte: Adaptado de Piva Jr. et al. (2012, p. 62-63).

Tabela 3.2 Operadores lgicos.

Operao Operador em C 6LJQLFDGR


Operador unrio de negao. Tem a maior precedncia
Negao
! HQWUH RV RSHUDGRUHV OyJLFRV ([HPSOR  9(5'$'(,52 
(lgico NO)
)$/62H )$/62  9(5'$'(,52
Conjuno 2SHUDGRUELQiULRTXHUHVXOWD9(5'$'(,52VRPHQWHVH
&&
OyJLFR( seus dois operandos lgicos forem verdadeiros.
Disjuno 2SHUDGRU ELQiULR TXHUHVXOWD 9(5'$'(,52TXDQGR XP
||
(lgico OU) de seus operandos lgicos for verdadeiro.
Fonte: desenvolvido pela autora.

A Figura 3.1 apresenta os resultados possveis para os operadores lgicos, conhecido como tabela verdade. Nas duas
primeiras colunas so dados os valores lgicos das duas variveis A e B e nas demais so apresentados os resultados
para a combinao das variveis por meio de um operador lgico. Observe a terceira linha como exemplo. Foi dado que o
YDORUGH$p9(5'$'(,52 9 HGH%p)$/62 ) $RXVDURRSHUDGRUOyJLFRHYHULFDVHTXHTXDQGRKiXPDYDULiYHO
9(5'$'(,5$HRXWUD)$/6$RUHVXOWDGRp)$/62SRLVDRXQLUXPDIDOVLGDGHFRPXPDYHUGDGHRUHWRUQRpIDOVR-i
RRSHUDGRUOyJLFRRXpXPDGLVMXQomRVHUiHVFROKLGRXPRXRXWURYDORU&RPRXPDGDVYDULiYHLVp9(5'$'(,5$R
UHVXOWDGRVHUi9(5'$'(,522RSHUDGRUOyJLFRQmRDOWHUDRFRQWH~GRGDYDULiYHOOyJLFDSDUDVHXRSRVWR1RH[HPSOR
FRPR$HUD9(5'$'(,52WRUQRXVH)$/626HIRVVHDQHJDomRGH%RUHWRUQRVHULD9(5'$'(,524XDQGRpXVDGD
a linguagem de programao C o valor verdadeiro equivale a 1 e o valor falso, a 0. Portanto, uma varivel lgica em
C uma varivel do tipo inteiro.


PORDENTRODOTEMA
A B A && B A || B !A
F F F F 9
F 9 F 9 9
9 F F 9 F
9 9 9 9 F
Figura 3.1 Tabela verdadeFRPUHVXOWDGRVGHRSHUDGRUHVOyJLFRV/HPEUDUTXH9HTXLYDOHDH)DQDOLQJXDJHP&
Fonte: desenvolvido pela autora.

Um algoritmo completo sempre ser composto por declaraes (variveis, constantes, comentrios, funes, entre
outros), comandos (atribuio, entrada, sada, por exemplo) e estruturas. As estruturas de sequncia, seleo e iterao
SHUPLWHP UHSUHVHQWDU D VROXomR GH TXDOTXHU DOJRULWPR ( p SRU HVVH PRWLYR TXH HODV VmR WmR LPSRUWDQWHV QR VHX
aprendizado sobre algoritmos.

Os exemplos de algoritmos que voc estudou desde o Tema 1 foram construdos usando-se apenas a estrutura de controle
sequencial, ou seja, nessa estrutura h um grupo de comandos, os quais so executados um aps o outro veja o exemplo
na Tabela 3.3.

Tabela 3.3 Algoritmo com estrutura de controle sequencial.

Estrutura geral ([HPSORHP&


$/*25,702 int main()
comando 1; {
comando 2; RDW[\
comando 3;
SULQWI ?Q(QWUHFRPGRLVQ~PHURVUHDLV 
comando N; VFDQI II [ \ 
),0$/*25,702    SULQWI ?Q$ VRPD GRV GRLV Q~PHURV p I
[\ 
}
Fonte: desenvolvido pela autora.

PORDENTRODOTEMA
A estrutura de seleo ou condicional permite a escolha do grupo de aes e estruturas a serem executados quando
determinadas condies, representadas por expresses lgicas, so ou no satisfeitas. Ou seja, essa estrutura usada
quando a execuo de um ou mais comandos s poder ser realizada dependendo de um ou mais testes anteriores.
( HVWHV WHVWHV VmR FRQGLo}HV OyJLFDV TXH UHVXOWDUmR HP 9(5'$'(,52 RX )$/62 2EVHUYH TXH VH R UHVXOWDGR GD
expresso lgica for FALSO, ento o grupo de comandos que dependiam desse teste no ser executado. por
isso que se deve prestar bastante ateno nos testes que forem construdos num algoritmo, pois se o retorno no for
DGHTXDGRjVROXomRSURSRVWDFRPSURPHWHUiRUHVXOWDGRQDOGRDOJRULWPR$VHVWUXWXUDVGHVHOHomRSRGHPVHUVLPSOHV
RXFRPSRVWDVFRPRpPRVWUDGRQD7DEHOD3RUPDVHVWUXWXUDVGHFRQWUROHGHLWHUDomRRXUHSHWLomRSHUPLWHPTXH
uma sequncia de comandos seja executada repetidamente at que uma determinada condio de interrupo seja
satisfeita.

A estrutura de seleo simples aquela em que a execuo de um ou mais comandos depende de uma condio
verdadeira apenas, no tendo comandos a executar se a condio for falsa. J a composta aquela que tem comandos
a serem executados quando a condio for verdadeira ou falsa.

Tabela 3.4 Algoritmo com estrutura de controle de seleo simples e composta.

// forma geral da sentena int main()


{
if (expresso) RDW[ \ 
comando; RDW] 
else
comando; LI [! \ VLPSOHV
] [\
printf(\n z = %6.2f, z);
}
([SOLFDomR int main()
{
FRPDQGR SRGH VHU XP ~QLFR FRPDQGR XP RDW[ \ 
RDW] 
EORFRGHOHV LQLFLDOL]DGRSRU^HQDOL]DGRSRU
}) ou nada. O else opcional. Lembre-se de LI [!\ FRPSRVWD
que apenas o cdigo associado ao if ou ao else ]
else
[\
ser executado, nunca ambos. ] [\
printf(\n z = %6.2f, z);
}
Fonte: desenvolvido pela autora.


PORDENTRODOTEMA
'DGRVRVH[HPSORVGHHVWUXWXUDVGHVHOHomRYHULTXHTXHDSyVif e elseVmRDFHLWRVRXWURVFRPDQGRVFRUUHWR"(VH
houver a necessidade de realizar outro teste como um comando interno seleo? Isso chamado de aninhamento de
selees. A quantidade de comandos aninhadosSRGHFDUPXLWRJUDQGHHQHVVHVFDVRVpUHFRPHQGDGRIRUWHPHQWH
TXHDVFRQGLo}HVRXWHVWHVVHMDPUHYLVWRVSDUDYHULFDUDSRVVLELOLGDGHGHFULDUXPWHVWHTXHHQJOREHRVGHPDLV1D
7DEHODDSUHVHQWDVHFRPRFDRDQLQKDPHQWRGHVHOHomR

Tabela 3.5 Algoritmo com estrutura de controle de seleo aninhada.

// forma geral da sentena int main()


{
if (expresso) RDW[ 
comando; RDW\ 
else if (expresso) RDW] 
comando;
else if (expresso) LI [! \
comando; ] [\
... HOVHLI [  \!
else ] \[
comando; else
] [\
printf(\n z = %6.2f, z);
}
Fonte: desenvolvido pela autora.

9RFr REVHUYRX TXH QD condio mais interna do exemplo apresentado na Tabela 3.5 so feitos dois testes cujos
resultados so avaliados com o conectivo lgico e, ou seja, o comando apresentado em ento se (else if) s ocorrer
se os dois testes forem verdadeiros (relembre esse fato analisando a Figura 3.1), agora o comando apresentado em
VHQmR HOVH RFRUUHUiQDVGHPDLVFRQGLo}HVRXVHMDVHRVGRLVWHVWHVRXDSHQDVXPGHOHVIRUHPIDOVRV&RPRFDULD
se a condioIRVVHFRPSRVWDSRUWUrVRXPDLVWHVWHV"(VVHpXPH[FHOHQWHH[HUFtFLRDVHUIHLWRSDUDFRQVWUXLUWHVWHV
corretos para os programas que desenvolver.

Outra estrutura de controleGHVHOHomRTXHpEDVWDQWHXVDGDpRGHHVFROKDP~OWLSODRXHP&VZLWFKVHJXLGDGH


uma varivel ou um valor numrico entre parnteses. O uso dessa estrutura indicado quando necessrio optar por
uma opo entre vrias alternativas de valor para a varivel sendo testada (ou valor numrico). Seria possvel usar uma
HVWUXWXUDGRWLSRVHHQWmRVHQmRDQLQKDGDVPDVVHRDOJRULWPRSXGHUFDUPDLVFODURHREMHWLYRHVWDpDRSomRDVHU
HVFROKLGD(VVDHVWUXWXUDSRVVXLXPDH[SUHVVmRGHVHOHomR DLQIRUPDomRHQWUHSDUrQWHVHV HDSDUWLUGHODpIHLWDD
escolha de um dos casos cujos comandos sero executados; se nenhum caso atender a expresso de seleo, h a

PORDENTRODOTEMA
opo de inserir uma situao genrica com o uso de outro caso. Na Tabela 3.6 pode ser observado um exemplo do
XVRGHHVFROKDP~OWLSOD

Tabela 3.6 Algoritmo com estrutura de controleGHHVFROKDP~OWLSOD

VZLWFK H[SUHVVmR  int main()


{ {
case constante_1: comandos LQWRSFDR[ \ 
break; printf("\n 1 - adio");
case constante_2: comandos printf("\n 2 - subtrao");
break; printf("\n 3 - diviso");
... printf("\n 4 - multiplicao");
case constante_n: comandos printf("\n Digite a opo desejada:");
break; scanf("%d", &opcao);
default: sequncia de VZLWFK RSFDR
comandos {
} case 1:
SULQWI ?Q[\ G?Q[\ 
break;
case 2:
SULQWI ?Q[\ G?Q[\ 
break;
case 3:
SULQWI ?Q[\ G?Q[\ 
break;
case 4:
SULQWI ?Q[ \ G?Q[ \ 
break;
default :
printf("Opcao Invalida\n");
}
return (0);
}
Fonte: desenvolvido pela autora.


PORDENTRODOTEMA
2 YDORU GH H[SUHVVmR p WHVWDGR QD RUGHP FRP RV YDORUHV GDV FRQVWDQWHV HVSHFLFDGDV QRV FDVH 1R H[HPSOR
DSUHVHQWDGRQD7DEHODRYDORUGDYDULiYHORSomRpYHULFDGRFRPR SULPHLURFDVH HUHVSHFWLYDPHQWH
Se no contiver nenhuma dessas opes, ento cai em default e executado o comando que ele apresenta: indicar que
DRSomRpLQYiOLGD4XDQGRWHVWHVDVVRFLDGRVDRFDVHFRLQFLGHPVHXVFRPDQGRVVmRH[HFXWDGRVDWpTXHVHHQFRQWUH
XPEUHDNTXHLQWHUURPSHUiRFRPDQGRVZLWFK2GHIDXOWpRSFLRQDOHVHHOHQmRIRUXWLOL]DGRQRVZLWFKQHQKXPRXWUR
comando ser executado se todos os testes falharem.

$OpPGDVHVWUXWXUDVGHVHOHomRTXHYRFrDFDERXGHYHUH[LVWHPDVHVWUXWXUDVGHUHSHWLomR(VVDVHVWUXWXUDVSHUPLWHP
que um conjunto de instrues seja executado repetidamente at que ocorra uma condioGHSDUDGD(VVDcondio
SRGHVHUSUHGHQLGD IRU RXFRPRQDOHPDEHUWR ZKLOHHGRZKLOH 2EVHUYHTXHHVVHIDWRHYLWDTXHRPHVPRFRQMXQWR
GHLQVWUXo}HVVHMDHVFULWRYiULDVYH]HVQRDOJRULWPR(VVDVHVWUXWXUDVWDPEpPVmRFKDPDGDVGHODoRVRXloops.

2VFRPDQGRVGHUHSHWLomRMXQWDPHQWHFRPDVHVWUXWXUDVVHTXHQFLDLVHGHVHOHomRSHUPLWHPDFRGLFDomRGDVROXomR
de problemas realmente complexos. Mas, ainda, auxiliam na soluo de problemas simples, como testar a entrada de
dados e solicitar ao usurio que a repita at que um valor vlido seja digitado.

2VFRPDQGRVLWHUDWLYRV RXGHUHSHWLomR EiVLFRVVmRHQTXDQWR ZKLOH SDUD IRU HUHSLWD GRZKLOH 2FRPDQGR


HQTXDQWR p JHUDOPHQWH XWLOL]DGR TXDQGR QmR VH VDEH R Q~PHUR GH YH]HV TXH XP WUHFKR GH DOJRULWPR GHYHUi VHU
UHSHWLGRRTXHQmRLPSHGHRVHXXVRTXDQGRHVVHQ~PHURIRUFRQKHFLGR(VVHFRPDQGRSRVVXLXPDcondio (ou
expresso lgica) inicial, ou seja, s permite a execuo de um ou mais comandos se a condioIRU9(5'$'(,5$
(P&DVLQWD[HGHVVDLQVWUXomRpDDSUHVHQWDGD7DEHOD

7DEHOD6LQWD[HGRFRPDQGRHQTXDQWRHP&

ZKLOH H[SUHVVmROyJLFDRXWHVWH
{
comando_1;
comando_2;

comando_n;
}
Fonte: desenvolvido pela autora.

PORDENTRODOTEMA
2EVHUYHTXHRVFRPDQGRVLQWHUQRVjLQVWUXomRZKLOHQmRHVWmRQRPHVPRDOLQKDPHQWRGDSDODYUDPDVVLPSRVLFLRQDGRV
XPSRXFRPDLVjGLUHLWD,VVRpFKDPDGRGHLGHQWDomRHIDFLOLWDDOHLWXUDGRFyGLJRSRLVUDSLGDPHQWHVmRLGHQWLFDGRVRV
FRPDQGRVTXHHVWmRGHQWURGRHQTXDQWR1RPHVPRDOLQKDPHQWRGRZKLOHHVWiRPZKLOHHRVSUy[LPRVFRPDQGRV
que existirem no algoritmo. O uso da identao faz parte do estilo do desenvolvedor, mas certamente contribui muito
para um cdigo claro e limpo. Portanto, em todos os comandos que tiverem outras instrues internas, recomendvel
o uso da identao.

Considere o cdigo em C e as respectivas sadas apresentadas na Tabela 3.8, de forma a analisar o que realizado
pelo algoritmo.

Tabela 3.8 Sintaxe do comando enquanto.

int main() (VWDGR X Y


{ 9DORUHVLQLFLDLV 1 5
int X, Y; Final do primeiro teste 1<5 3 6
Final do segundo teste 3<6 5 
X = 1; )LQDOGRWHUFHLURWHVWH  8
Y = 5; )LQDOGRTXDUWRWHVWH  
ZKLOH ;< 4XLQWRWHVWHpIDOVRSRUWDQWRVDL
{ GR ORRS ZKLOH H YDL SDUD R SUy[LPR
X = X + 2; comando.
Y = Y + 1;
} // Fim enquanto
printf(X = %d e Y = %d\n,
X, Y);
}// Fim main
Fonte: Adaptado de Ascencio e Campos (2002).

2EVHUYHTXHQD7DEHODRXVRLIWKHQHOVHQmRIRLHIHWXDGRFRPRXVRGH^H`VHQGRTXHQRORRSZKLOHGD7DEHOD
IRLXWLOL]DGR9RFrWHPDOJXPDLGHLDGRSRUTXHLVVRRFRUUHX"4XDQGRKiDSHQDVXPFRPDQGRLQWHUQRGHRXWURQmR
KiQHFHVVLGDGHGHVLQDOL]DURLQtFLRHRPGHXPEORFRGHFRPDQGRVSRLVHOHp~QLFR6HPSUHTXHKRXYHUPDLVTXH
um comando impretervel o uso de {} para sinalizar o bloco de comandos. No se esquea disso, pois se no cdigo
da Tabela 3.8 no tivesse sido usado o {} a operao realizada com o Y ocorreria sempre, porque o compilador no
HQWHQGHULDTXHHOHSHUWHQFHDREORFRGHFRPDQGRVGRZKLOH$SHQDVDRSHUDomRFRP;VHULDUHDOL]DGDFRQIRUPHR


PORDENTRODOTEMA
UHVXOWDGRGRWHVWHDOWHUDQGRFRPSOHWDPHQWHRUHVXOWDGRQDO9HMDTXHDLGHQWDomRDX[LOLDQDOHLWXUDGRFyGLJRPDVQmR
VLJQLFDQDGDSDUDRFRPSLODGRUTXHHQWHQGHDSHQDVDVLQVWUXo}HVTXHVmRLQVHULGDVQRFyGLJR

2FRPDQGRGRZKLOHRXIDoDHQTXDQWRH[HFXWDXPFRQMXQWRGHLQVWUXo}HVXPDYH]SDUDHQWmRWHVWDUDcondio.
&RPRRWHVWHOyJLFRHVWiQRQDOGRFRPDQGRLVVRVLJQLFDTXHDVLQVWUXo}HVVHUmRH[HFXWDGDVHQTXDQWRRUHVXOWDGR
GRWHVWHIRU9(5'$'(,521D7DEHODpDSUHVHQWDGDDVLQWD[HGRFRPDQGRHP&2EVHUYHTXHKiSRQWRHYtUJXOD
QRQDOGRFRPDQGRRXVHMDDSyVRWHVWHOyJLFR

Tabela 3.96LQWD[HGRFRPDQGRGRZKLOHQDOLQJXDJHP&

do
{
comando 1;
comando 2;
comando 3;

comando N;
`ZKLOH H[SUHVVmROyJLFD 
Fonte: desenvolvido pela autora.

$QDOLVHRH[HPSORDSUHVHQWDGRQD7DEHODHSHQVHHPFRPRVHULDUHSUHVHQWDUDTXHOHDOJRULWPRXVDQGRRFRPDQGR
GRZKLOHDRLQYpVGRFRPDQGRZKLOH2TXHPXGDULD"(PSULQFtSLRQDGD$GLIHUHQoDpTXHRFRQMXQWRGHLQVWUXo}HV
LQWHUQDVDRFRPDQGRZKLOHVyVHUiH[HFXWDGRVHRWHVWHIRUYHUGDGHLURHQRFDVRGRFRPDQGRGRZKLOHHVVHFRQMXQWR
de instrues internas executado pelo menos uma vez, mesmo que o teste seja falso. Portanto, nesse comando, o
WHVWHSHUPDQHFHUiRPHVPRHRSVHXGRFyGLJRDSUHVHQWDGRQD7DEHODPRVWUDFRPRFDPRVFRPDQGRVHVXDV
respectivas sadas.



PORDENTRODOTEMA
Tabela 3.106LQWD[HGRFRPDQGRGRZKLOH

int main() X Y (VWDGR


{ 1 5 9DORUHVLQLFLDLV
int X, Y; 3 6 Primeiro teste 3<6
5  6HJXQGRWHVWH
X = 1;  8 7HUFHLURWHVWH
Y = 5;   4XDUWR WHVWH  p IDOVR SRUWDQWR VDL
GRORRSGRZKLOHHYDLSDUDRSUy[LPR
do comando.
{
X = X + 2;
Y = Y + 1;
`ZKLOH ;< 
printf(X = %d e Y = %d\n,
X, Y);
}// Fim main
Fonte: Adaptado de Ascencio e Campos (2002 ).

1D7DEHODIRUDPDSUHVHQWDGRVRVYDORUHVGH[H\DQWHVGRWHVWHOyJLFRSRUTXHQRFRPDQGRGRZKLOHRVFRPDQGRV
internos ao lao so executados pelo menos uma vez antes da condio VHU DYDOLDGD SDUD YHULFDU VH D UHSHWLomR
continuar ou no.

O comando de repetio for usado quando conhecida a quantidade de vezes que se deseja repetir o bloco de
comandos internos. Funciona com uma varivel de controle que assume um valor inicial e inteiro, testado seu valor
SDUDDYHULJXDUVHDWLQJLXRYDORUQDO WDPEpPLQWHLUR HVWDEHOHFLGRHSRUPpLQFUHPHQWDGD RXGHFUHPHQWDGD HP
determinado valor inteiro a cada passo. Na Tabela 3.11 apresentada a sintaxe desse comando em linguagem C.


PORDENTRODOTEMA
Tabela 3.11 Sintaxe do comando for na linguagem C.

for (i = 0; i < N; i++) for (j = N; j > 0; j--)


{ {
comando 1; comando 1;
comando 2; comando 2;
comando 3; comando 3;

comando N; comando N;
`PSDUD `PSDUD
 ([SOLFDo}HV  ([SOLFDo}HV
i a varivel de controle para j a varivel de controle para que o
que o loop repita N vezes; loop repita N vezes
N o total de vezes que o loop N o total de vezes que o loop dever
dever repetir; repetir
i++ porque neste exemplo N foi i-- porque neste exemplo j inicia com
considerado maior que i. o valor de N e deve ser decrementado
*/ at 0.
*/
Fonte: desenvolvido pela autora.

Nas sintaxes apresentadas na Tabela 3.11, a varivel de controle incrementada ou decrementada em uma unidade,
mas poderia ser em outro valor, por exemplo, poderia ter sido feito i += 3 (varivel de controle recebe o seu prprio
FRQWH~GRPDLVXQLGDGHV RXDLQGDL  YDULiYHOGHFRQWUROHUHFHEHVHXSUySULRFRQWH~GRPHQRVXQLGDGHV HQWUH
outras vrias possibilidades. O mesmo ocorre com o teste que pode ser usado de diversas formas distintas para atingir
o objetivo do lao.

Ou seja, o incremento padro de um comando for de uma unidade, mas se for necessrio possvel alterar o valor do
LQFUHPHQWRGHFUHPHQWR$YDULiYHOGHFRQWUROHDVVXPHRYDORULQLFLDOGHQLGRDSHQDVQDSULPHLUDH[HFXomRGRFRPDQGR
for, nos demais passos a varivel incrementada/decrementada pelo valor determinado no comando, repetindo-se as
LQVWUXo}HVLQWHUQDVDWpTXHDYDULiYHOGHFRQWUROHDWLQMDRYDORUOLPLWHGHQLGRSDUDRODoR2XWUDREVHUYDomRLPSRUWDQWH
sobre incremento/decremento que se for usado ++i ou --i, primeiro ocorre a operao de incremento/decremento para
HQWmRSDVVDUDRVFRPDQGRVLQWHUQRVGRIRU4XDQGRRLQFUHPHQWRGHFUHPHQWRHVWLYHUDSyVDYDULiYHOGHFRQWUROHL
RXLHQWmRRVFRPDQGRVmRH[HFXWDGRVHVRPHQWHDRQDORYDORUGDYDULiYHOpDOWHUDGR



PORDENTRODOTEMA
Na Tabela 3.12 apresentado o mesmo exemplo usado para demonstrar os comandos de repetio, mas agora com o
uso do for.

Tabela 3.12 Sintaxe do comando for na linguagem C.

int main() (VWDGR i X Y


{ 9DORUHVLQLFLDLV 1 5
int X, Y, i; Primeiro lao 0 3 6
Segundo lao 1 5 
X = 1; Terceiro lao 2  8
Y = 5; 4XDUWRODoR 3  
(for i = 0; i<4; i++)
{
X = X + 2;
Y = Y + 1;
} // Fim para
printf(X = %d e Y = %d\n, X, Y);
}// Fim main
Fonte: Adaptado de Ascencio e Campos (2002).

(VVHH[HPSORIRLDSUHVHQWDGRSRUTXHVmRFRQKHFLGDVTXDQWDVUHSHWLo}HVGRVFRPDQGRVLQWHUQRVVmRQHFHVViULDVSDUD
TXH[DWLQMDRPHVPRYDORUGH\$VVLPFRPRTXDOTXHURXWUDestrutura de controle, o comando for pode ter outros
comandos for no seu bloco de comandos internos, assim como outros comandos de repetio ou de seleo, por
exemplo.

importante que voc exercite o emprego desses comandos de repetio desenvolvendo novos algoritmos e programando-
os. Portanto, aproveite seu tempo, dedique-se a sua instruo e faa os exerccios propostos. Boa sorte!


ACOMPANHENAWEB
Operadores Lgicos

 &RQMXQWRGHVOLGHVTXHDERUGDPRVRSHUDGRUHVOyJLFRVDSUHVHQWDGRSHORSURI$LUWRQ5LEHLUR
Disponvel em: <KWWSZZZODQZDQFRPEU$XODVB6HQDF7HFB5HGHVB7XUPDB$XOD
-%20Logica%20-%20Operadores%20Logicos.pdf>. Acesso em: 26 maio 2014.

Otimizao do Algoritmo de Busca do Google

 Pequeno artigo com vdeo sobre a otimizao do algoritmo de busca do Google.


Disponvel em: <KWWSZZZUHYLVWDLQWHUQHWFRPEURWLPL]DFDRTXDVHGLDULDGRDOJRULWPRGRJRRJOH/>.
Acesso em: 26 maio 2014.

Introduo Programao C

 timo material sobre como programar em C, disponibilizado pelo Departamento de Cincia da


Computao da Universidade Federal de Minas Gerais.
Disponvel em: <KWWSZZZGFFXIPJEUGLVFLSOLQDVSFVRXUFHLQWURGXFDRBFBUHQDWRFPBGHHXIPJSGI>. Acesso
em: 30 jun. 2014.

Programar em C - Ciclo for | Lao for | Repetio for

 Dcima videoaula da srie que apresenta o uso de laos de repetio em linguagem C.


Disponvel em: <KWWSVZZZ\RXWXEHFRPZDWFK"Y O5X46M;F<>. Acesso em: 30 jun. 2014.

7HPSR



AGORAASUAVEZ
,QVWUXo}HV
$JRUDFKHJRXDVXDYH]GHH[HUFLWDUVHXDSUHQGL]DGR$VHJXLUYRFrHQFRQWUDUiDOJXPDVTXHVW}HVGHP~OWLSOD
escolha e dissertativas. Leia cuidadosamente os enunciados e atente-se para o que est sendo pedido.
Questo 1

Tendo em vista o que voc j aprendeu at agora, faa um programa em C que calcule e mostre a rea de um crculo, lembrando
TXHHVWDpGDGDSRU52.

Questo 2
([HUFtFLRSDUDWUHLQDUH[SUHVV}HVyJLFDV6mRGDGDVDVHJXLUDJXPDVRUGHQVGHRSHUDo}HVTXHVmRH[SUHVV}HVyJLFDV)DoD
DFRUUHDomRHQWUHDRSHUDomRDSUHVHQWDGDHDH[SUHVVmRyJLFDFRUUHVSRQGHQWH

1. ;H[FHGH<H.pPHQRUTXHRX-pLJXDD

2. ;pPDLRUTXH]HURSRUpPPHQRUTXH \

3. ;QmRpLJXDD<H=QmRpLJXDD.-RX0

4. ;HVWiHQWUHHLQFXVLYHRVH[WUHPRVSRUpP<HVWiIRUDGHVWHLQWHUYDR

5. A soma de X e Y deve ser menor que dez ao cubo.

( ) (X > 0) && (X < 3*Y)

( ) ((X + Y) < (10*10*10))

( ) (X > Y) && ((K < 2) || ( J == 4))

( ) (X>=1) && (x<=8) && ((Y<1) || (Y> 8))

  ; <   = .   = -   = 0


AGORAASUAVEZ
Questo 3

Dado o trecho de cdigo a seguir, marque a alternativa correta.


{
[...]
for (i = 1; i <=3; i++)
for (j = 1; i <=2; j++)
printf(%d,%d; , i, j);
[...]
}
a) A sintaxe do comando for est errada, pois no deveria conter i++ que o padro de incremento.

b) $VHTXrQFLDGH LM JHUDGDSHRFyGLJRp

c) 1mRpSRVVtYHH[HFXWDUXPDoRGHQWURGHRXWURDoR

d) $VHTXrQFLDGH LM JHUDGDSHRFyGLJRp

e) 2DoRLQWHUQRVyIXQFLRQDUiVHIRUXVDGRZKLHRXGRZKLH

Questo 4

Calcule o valor de x em cada teste, sabendo-se que a=5, b=4, c=3 e d=6.

Teste 1

if ( !(d > 5) )

x = (a + b) * d;

else

x = (a b) * c;



AGORAASUAVEZ
Teste 2

LI D!   E

x = (a + 2) * (b 2);

else

x = (a + b)/d * (c + d);

Questo 5

(VFUHYDXPSURJUDPDHP&TXHUHFHEDXPQ~PHURLQWHLURHYHULTXHVHHOHpSDURXtPSDU
(VFUHYDXPSURJUDPDHP&TXHUHFHEDXPQ~PHURLQWHLURHYHULTXHVHHOHpSDURXtPSDU

FINALIZANDO
Neste tema voc
N estudou
d sobre
b os operadores
d lgicos
l i e as estruturas d
de controle
l que so essenciais
i i em qualquer
l
DOJRULWPRDVHUGHQLGR$OpPGLVVRREVHUYRXRTXDQWRHVVHVUHFXUVRVVmRUHODFLRQDGRVFRPRSRUH[HPSORRHVWXGR
das tabelas verdades que mostram os resultados de testes condicionais, os quais, por sua vez, so usados em estruturas
de controle de seleo/condio.

A partir de agora voc j tem condies de desenvolver algoritmos cada vez mais complexos. As estruturas de repetio
YLVWDVQHVWHWHPDMXQWDPHQWHFRPRVGHPDLVFRQWH~GRVYLVWRVQRVWHPDVDQWHULRUHVRIHUHFHPIHUUDPHQWDVLPSRUWDQWHV
para a soluo de muitos problemas.

importante que voc esteja atento s possibilidades de emprego das estruturas de repetio, aninhando-as,
combinando-as com as estruturas de seleo e, como ver adiante, com estruturas de dados como vetores e matrizes.
(VVHFRQWH~GRpEiVLFRHUHFRPHQGDVHTXHRVHVWXGRVVHMDPDSURIXQGDGRVSHODOHLWXUDGRPDWHULDOGLVSRQLELOL]DGR
e dos vdeos indicados.


REFERNCIAS
$6&(1&,2$QD)HUQDQGD*RPHV&$0326(GLOHQH$9GHFundamentos da Programao de Computadores: algoritmos,
pascal e C/C++. 1 ed. So Paulo: Pearson, 2002.
'($/8123$5$$/812Programar em C &LFORIRU_/DoRIRU_5HSHWLomRIRU Aula 10. Disponvel em: <KWWSVZZZ
\RXWXEHFRPZDWFK"Y O5X46M;F<>. Acesso em: 30 jun. 2014.
*20(6$EHODesenho de Algoritmos e Programao Estruturada: slides de Aula. 2005. Disponvel em: <KWWSZZZGLXEL
pt/~programacao/capitulo4.pdf>. Acesso em: 15 maio 2014.
0,=5$+,9LFWRULQH9LYLDQHTreinamento em Linguagem CHG6mR3DXOR3HDUVRQ/LYUR7H[WR
3,9$-81,25, Dilermando; NAKAMITI, Gilberto Shigueo; (1*(/%5(&+7, Angela de M.; %,$1&+,, Francisco. Algoritmos e
Programao de Computadores5LRGH-DQHLUR(OVHYLHU/LYUR7H[WR
6&+,/'7+HUEHUWC, completo e total. 6mR3DXOR0DNURQ%RRNV
UFMG, Departamento de Cincia da Computao. Curso de Programao em C. Disponvel em: <KWWSZZZGFFXIPJEU
disciplinas/pc/source/introducao_c_renatocm_deeufmg.pdf>. Acesso em: 30 jun. 2014.
=,9,$1,,, Nivio. Projeto de Algoritmos: com implementaes em Pascal e C. So Paulo: Pioneira, 2002.

GLOSSRIO
7DEHODYHUGDGHpXPDWDEHODTXHDSUHVHQWDRVUHVXOWDGRV9(5'$'(,52RX)$/62GHWHVWHVOyJLFRVUHDOL]DGRVOHP-
7 E O G G p W E O W OW G 9(5'$'(,52 )$/62 G W W Oy L OL G O
brando que esses testes so relacionados com os conectivos lgicos estudados.

(VWUXWXUDGHFRQWUROH em computao, refere-se ordem em que as instrues, expresses e as funes so execu-


tadas ou avaliadas em um programa.

$QLQKDGR diz-se que um comando est aninhado quando est dentro de outro comando.



GLOSSRIO
,QWHUUXSomR o ato ou efeito de interromper. Um comando de interrupo termina uma execuo de uma estrutura de
seleo, por exemplo.

&RQGLomR num teste computacional, pode-se dizer que condio a exigncia que precisa ser atendida para que de-
terminadas aes/comandos
sejam
j executados.

GABARITO
Questo 1

5HVSRVWD

4XHVWmR3URJUDPDHP&TXHFDOFXODDiUHDGHXPFtUFXOR
#include <stdio.h>
int main()
{
// Declarao dos dados
RDWDUHDUDLR

SULQWI ?Q(QWUHFRPRUDLRGRFtUFXOR 
scanf(%6.2f, &raio);
area = 3,1415 * raio*raio;
printf (\n A rea do crculo : %6.2f, area);
`PPDLQ

Questo 2

5HVSRVWD2, 5, 1, 4 e 3.


GABARITO
Questo 3

5HVSRVWDAlternativa B.

Questo 4

5HVSRVWD Teste 1 x = 3; Teste 2 x = 14.


Questo 5
5HVSRVWD
3URJUDPDTXHYHULFDVHXPQ~PHURLQWHLUROLGRpSDURXtPSDU

#include <stdio.h>

int main()
{
// declarao da varivel
int x;
RDWUHVWR

// leitura do dado
SULQWI (QWUHFRPRQ~PHURLQWHLUR 
scanf(%d, &x);

WHVWHGHYHULFDomRGHSDURXtPSDU
UHVWR [GLYLGHRQ~PHUROLGRSRUHFRORFDRUHVWRHPUHVWR
LI UHVWR  VHHVVHWHVWHIRUYHUGDGHLURRQ~PHURpSDUVHQmRtPSDU
SULQWI ?Q2Q~PHURpSDU 
else
SULQWI ?Q2Q~PHURptPSDU 
`PIXQomRPDLQ



Você também pode gostar