FACULDADE DE ENGENHARIA SÃO PAULO
PROCESSAMENTO DE DADOS - BP1
LINGUAGEM C++ BUILDER
PARTE II
PROFª ANGELA HUM TCHEMRA
PROF EMILIO CELSO PASTORELO DE MIRANDA
COMANDOS DE REPETIÇÃO
Para que determinados trechos do algoritmo ou programa sejam repetidos várias vezes, pode-se utilizar os comandos de repetição. Há três tipos de comandos de repetição:
VisuAlg C++ Builder
1ª opção enquanto (condição) faca
bloco de comandos que deve ser repetido
enquanto a condição for verdadeira
fimenquanto
while (condição) {
bloco de comandos que deve ser repetido
enquanto a condição for verdadeira
} 2ª opção para variável inicial ate valorfinal faca
bloco de comandos que deve ser repetido
fimpara
for (variável=inicial; condição; cálculo) {
bloco de comandos que deve ser repetido
}
Comando de repetição somente no VisuAlg
repita
bloco de comandos que deve ser repetido
até que a condição seja verdadeira
ate (condição)
Comando de repetição somente no C++ Builder
do {
bloco de comandos que deve ser repetido
enquanto a condição é verdadeira
Exemplos em VisuAlg
Ex1: Mostrar os números pares maiores do que
zero e menores do que 100.
Ex2: Mostrar os 50 primeiros múltiplos de 3 que
sejam positivos. algoritmo "Ex1" var p:Inteiro inicio p 2 enquanto (p<=100) faca escreval (p) p p+2 fimenquanto fimalgoritmo algoritmo "Ex2" var m, k:Inteiro inicio m 3 k 1 enquanto (k<=50) faca escreval (m) m m+3 k k+1 fimenquanto fimalgoritmo
Ex3: Dado o valor de N, exibir os N primeiros
múltiplos de 5 que sejam positivos.
Ex4: Dado o valor de N, calcular e exibir o
fatorial de N. algoritmo "Ex3"
var
n, m, k:Inteiro inicio
escreva ("Quantos múltiplos de 5?: ") leia (n)
se (n<=0) entao
escreval ("Quantidade inválida") senao m 5 k 1 enquanto (k<=n) faca escreval (m) m m+5 k k+1 fimenquanto fimse fimalgoritmo algoritmo "Ex4" var n, c, fat:Inteiro inicio escreva ("Valor de n: ") leia (n) se (n<0) entao
escreval ("Valor de n é inválido") senao fat 1 c 1 enquanto (c<=n) faca fat fat*c c c+1 fimenquanto
escreval ("Fatorial de ",n," é ",fat) fimse
fimalgoritmo
Exercícios: Elaborar algoritmo em VisuAlg.
1) Dado o valor de N, calcular e exibir os N primeiros múltiplos de 11 superiores a zero.
2) Dado o valor de N, calcular e exibir para cada um dos N valores de X da sequência 2, 4, 6, .... o valor da função Y = X2 + 2X - 5.
3) Dado o valor de N, calcular e exibir o valor da soma das N primeiras parcelas: 1+3+5+7+ ...
4) Dado o valor de N e o valor de X, calcular e exibir o valor da soma: X + X2 + X3 + X4 + ... + XN
Solução dos exercícios. Algoritmo em VisuAlg. 1) Dado o valor de N, calcular e exibir os N
primeiros múltiplos de 11 superiores a zero. 2) Dado o valor de N, calcular e exibir para cada um dos N valores de X da sequência 2, 4, 6, ... o valor da função Y = X2 + 2X - 5. algoritmo "Ex1" var n, c, m:Inteiro inicio escreva ("Valor de n: ") leia (n) se (n<=0) entao
escreval ("Valor de n é inválido") senao m 11 c 1 enquanto (c<=n) faca escreval (m) m m+11 c c+1 fimenquanto fimse fimalgoritmo algoritmo "Ex2" var n, c:Inteiro x, y:Real inicio escreva ("Valor de n: ") leia (n) se (n<=0) entao
escreval ("Valor de n é inválido") senao x 2 c 1 enquanto (c<=n) faca y x*x+2*x-5 escreval ("x = ",x," y = ",y) x x+2 c c+1 fimenquanto fimse fimalgoritmo 3) Dado o valor de N, calcular e exibir o
valor da soma das N primeiras parcelas: 1+3+5+7+ ...
4) Dado o valor de N e o valor de X, calcular e exibir o valor da soma:
X + X2 + X3 + X4 + ... + XN algoritmo "Ex3" var n, c, p, s:Inteiro inicio escreva ("Valor de n: ") leia (n) se (n<=0) entao
escreval ("Valor de n é inválido") senao s 0 p 1 c 1 enquanto (c<=n) faca escreval (p) s s+p p p+2 c c+1 fimenquanto escreval ("soma = ",s) fimse fimalgoritmo algoritmo "Ex4" var n, c:Inteiro x, t, s:Real inicio escreva ("Valor de x: ") leia (x) escreva ("Valor de n: ") leia (n) se (n<=0) entao
escreval ("Valor de n é inválido") senao s 0 c 1 enquanto (c<=n) faca t x^c escreval (t) s s+t c c+1 fimenquanto escreval("soma = ",s) fimse fimalgoritmo
Programa C++ Builder
No programa C++ Builder, pode-se utilizar o objeto ListBox ou o objeto Memo para mostrar diversos valores na tela, ao invés de usar o Edit que permite mostrar apenas um valor.
Portanto, para o exercício 1, sugere-se o seguinte programa:
Programa para o exercício 3:
void __fastcall TForm1::Button1Click(TObject *Sender) { int N,C,M; N=StrToInt(Edit1Text); if(N<=0) { ShowMessage("N inválido"); } else { M=11; C=1; while(C<=N) { ListBox1ItemsAdd(IntToStr(M)); M=M+11; C=C+1; } } }
void __fastcall TForm1::Button2Click(TObject *Sender) {
Edit1Clear(); ListBox1Clear(); Edit1SetFocus(); }
void __fastcall TForm1::Button3Click(TObject *Sender) {
Close(); }
void __fastcall TForm1::Button1Click(TObject *Sender) { int N,C,P,S; N=StrToInt(Edit1->Text); if(N<=0) { ShowMessage("N inválido"); } else { S=0; P=1; C=1; while(C<=N) { ListBox1ItemsAdd(IntToStr(P)); S=S+P; P=P+2; C=C+1; } Edit2>Text=IntToStr(S); } }
void __fastcall TForm1::Button2Click(TObject *Sender) { Edit1Clear(); Edit2Clear(); ListBox1Clear(); Edit1SetFocus(); }
void __fastcall TForm1::Button3Click(TObject *Sender) {
Close(); }
Exercício: Desenvolver o programa C++ Builder dos exercícios 2 e 4 anteriores.
Observação:
Os exercícios propostos foram resolvidos com o comando de repetição ENQUANTO, porém, podem ser resolvidos com as outras formas de comando de repetição. Por exemplo, o exercício 4: Dado o valor de N e o valor de X, calcular e exibir o valor da soma:
X + X2 + X3 + X4 + ... + XN Com o comando de repetição REPITA/ATE
Este comando, repete os comandos até que a condição seja verdadeira.
Em C++ Builder, não existe o comando repita/ate, mas pode ser substituído pelo comando do/while, que repete os comandos enquanto a condição é verdadeira. algoritmo "Ex4" var n, c:Inteiro x, t, s:Real inicio escreva ("Valor de x: ") leia (x) escreva ("Valor de n: ") leia (n) se (n<=0) entao
escreval ("Valor de n é inválido") senao s 0 c 1 repita t x^c escreval (t) s s+t c c+1 ate (c>n) escreval("soma = ",s) fimse fimalgoritmo
void __fastcall TForm1::Button1Click(TObject *Sender) { int N,C; double X, T, S; N=StrToInt(Edit1Text); X=StrToFloat(Edit2Text); if(N<=0) { ShowMessage("N inválido"); } else { S=0; C=1; do { T=pow(X,C); ListBox1ItemsAdd(FloatToStr(T)); S=S+T; C=C+1; } while (C <= N); Edit3Text=FloatToStr(S); } } Com o comando de repetição PARA
algoritmo "Ex4" var n, c:Inteiro x, t, s:Real inicio escreva ("Valor de x: ") leia (x) escreva ("Valor de n: ") leia (n) se (n<=0) entao
escreval ("Valor de n é inválido") senao
s 0
para c1 ate n faca t x^c escreval (t) s s+t c c+1 fimpara escreval("soma = ",s) fimse fimalgoritmo
void __fastcall TForm1::Button1Click(TObject *Sender) { int N,C; double X, T, S; N=StrToInt(Edit1Text); X=StrToFloat(Edit2Text); if(N<=0) { ShowMessage("N inválido"); } else { S=0; for(C=1; C<=N; C=C+1) { T=pow(X,C); ListBox1ItemsAdd(FloatToStr(T)); S=S+T; } Edit3Text=FloatToStr(S); } }
Exercícios: Elaborar algoritmo em VisuAlg e escrever programa C++ Builder.
1) Dado o valor de N, calcular e exibir os N primeiros termos da sequência: 0.2, 0.4, 0.6, .... 2) Dado o valor de X e o valor de N, calcular e exibir o valor da soma: X + X3 + X5 + ... + X2N-1. 3) Dado o valor de X e o valor de N, calcular e exibir o valor da soma:
1 X3 + 2 X4 + 3 X5 + ... + N XN+2 2 3 4 N+1
4) Dado o valor de N, calcular e exibir a soma dos N primeiros termos: 317 + 310 + 303 + 296 + ....
21 23 25 27
5) Dado o valor de X, o valor de A e o valor de N, calcular e exibir o valor da soma das N parcelas: ... 5 ) ( 3 ) ( ) (X A X A 3 X A5
6) Calcular o valor de Y = 5X2 –10 X para X variando de –1 até 1 com passo 0.01. Exibir os valores de X e Y correspondentes.
7) Exibir a tabela de valores X e Y, sabendo que: Y = (eX – X3 + )/(X + 3) para cada valor de X pertencente à seqüência 0, 3, 6, 9, 12, .... Encerrar o programa quando encontrar um valor de Y maior do que 5000.
8) Calcular e exibir a soma dos números inteiros ímpares maiores do que 100 e menores do que 1000.
9) Calcular e exibir o valor da soma abaixo, considerando apenas os termos positivos:
480 + 475 + 470 + 465 + ...
10 11 12 13
10) São dados os valores de A, B e H (com A<B e H>0). Calcular e exibir o valor de: f(X) = X3 + 2X2 – 4 para X=A; X=A+2H; X=A+4H; X=A+6H; ... X B.