Você está na página 1de 57

ESCOLA DE ENGENHARIA

C++
Programao Estruturada
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
2/57
Brian Kernighan (1976)
Nossa experincia mostra que a legibilidade o
nico e o melhor critrio para a qualidade de um
programa: se um programa fcil de ler, ele
provavelmente um bom programa; se ele difcil
de ler, provavelmente ele no bom. "
incio
m = (a + b + c) / 3
fim
"Entre com
trs valores
reais...'
a, b, c
"Mdia: ", m
Funciona, porm
est ilegvel!
No bom!
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
3/57
Brian Kernighan (1976)
incio
m = (a + b + c) / 3
fim
"Entre com
trs valores
reais..."
a, b, c
"Mdia: ", m
Funciona e est
legvel!
Se um programa
fcil de ler, ele
provavelmente um
bom programa.
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
4/57
Funciona e est
legvel!
Funciona, porm
est ilegvel!
Brian Kernighan (1976)
int main(int argc, char *argv[]){float a,b,c;cout<<
Entre com trs valores reais...<<endl;cin>>a>>b>>c;
float m=(a+b+c)/2;cout<<Mdia: <<m<<endl;return 0;}
int main(int argc, char *argv[])
{
float a, b, c;
cout << Entre com trs valores reais... << endl;
cin >> a >> b >> c;
float m = (a + b + c) / 2;
cout << Mdia: << m << endl;
return 0;
}
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
5/57
Descrio de Algoritmos
Narrativa: o algoritmo descrito com o uso da linguagem
natural. A linguagem natural abstrata, imprecisa e
freqentemente pouco confivel. Isto pode ser observado
por pessoas que tentam redigir um contrato ou um
documento legal;

Fluxograma: o algoritmo descrito com o uso de
smbolos geomtricos (retngulos, losangos, etc.)
enfatizando seus passos individuais e suas interconexes;

Linguagem Algortmica: o algoritmo descrito com o uso
da combinao entre a Narrativa e o Fluxograma, extraindo
suas melhores caractersticas. similar a vrias
linguagens de programao como, por exemplo, Object
Pascal, C++, etc.
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
6/57
ISO 5807: Dados e Processos
Escreva o
texto aqui!
Terminao
Entrada de Dados
Sada de Dados
Processo
Processo de Deciso
Conector
Fluxo
Anotao
passivo: sofre ao
ativo: executa ao
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
7/57
Bhn e Jacopini (1966)
as estruturas tm um papel fundamental quando
desejamos descrever um algoritmo que seja
computvel, isto , implementvel em um computador;
Bhm e Jacopini demonstraram em 1966 que qualquer
programa de computador pode ser decomposto atravs
de trs tipos de estruturas de programao:
1) estrutura seqencial;
2) estrutura condicional;
3) estrutura repetitiva;
estas estruturas tambm podem estar embutidas
umas nas outras, por exemplo, uma estrutura repetitiva
pode repetir uma seqncia onde um dos comandos
desta seqncia seja uma estrutura condicional que
por sua vez condiciona uma outra seqncia, etc.
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
8/57
Sete Peas Bsicas no C++:
...
1 seqencial ; 2
true
false
condicional if 4
...
v1 v2 vn
default
condicional switch
3
true
false
condicional if/else
5
false
true
repetitiva for
6
false
true
repetitiva while
7
true
false
repetitiva do/while
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
9/57
Sete Peas Bsicas no C++
R
A a b =
retngulo
a
b
"a e b?..."
a, b
Ar = a * b
"rea: ", Ar
Variveis
reais.
rea do Retngulo
incio
fim
int main(int argc, char *argv[])
{
double a, b, Ar;
cout << a e b?... << endl;
cin >> a >> b;
Ar = a * b;
cout << rea: << Ar << endl;
return 0;
}
e
m

C
+
+

...
1 seqencial ;
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
10/57
Sete Peas Bsicas no C++
comando simples:
seqncia de um
nico comando.
palavras reservadas
em vermelho
true
false
if( <condio> ) <comando> ;
2
true
false
condicional if
parnteses
obrigatrios
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
11/57
Sete Peas Bsicas no C++
comando composto:
seqncia de dois
ou mais comandos.
false
true
if( <condio> ){


<comando 1>;
<comando 2>;
...
<comando n>;
}
2
true
false
condicional if
indentao com 2
espaos
(legibilidade)
;
Aqui no tem
ponto e vrgula!
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
12/57
Sete Peas Bsicas no C++
comando
simples
comando
simples
true
false
Uma possvel forma
de indentar
(Kernighan & Ritchie).
if( <condio> ) <comandoT> ;


else <comandoF> ;
3
true
false
condicional if/else
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
13/57
Sete Peas Bsicas no C++
;
comando
composto
comando
composto
true
false
Uma possvel
forma de indentar
(Kernighan &
Ritchie).
if( <condio> ){


<comandoT 1>;
<comandoT 2>;
...
<comandoT n>;
}
else{
<comandoF 1>;
<comandoF 2>;
...
<comandoF m>;
}
3
true
false
condicional if/else
;
Aqui no tem
ponto e vrgula!
Aqui no tem
ponto e vrgula!
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
14/57
estrutura
seqencial
Exerccio 01: elabore um fluxograma
para determinar o maior valor entre trs
valores reais.
incio
aqui comea a determinao do
maior, comparando-os dois a dois.
criar reais
a, b, c, maior
Aqui so criadas as variveis reais
a, b, c, maior (normalmente este
d e t a l h e o m i t i d o n o s
fluxogramas).
a ,b, c
1
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
15/57
Exerccio 01: continuao.
estrutura
condicional
estrutura
condicional
embutida
estrutura
condicional
embutida
a > b a > c maior = a
maior = c
b > c
true true
false
maior = b
maior = c
false
false
true
1
2
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
16/57
estrutura
seqencial
Exerccio 01: continuao.
destruir reais
a, b, c, maior
fim
Aqui so destruidas as variveis
reais a, b, c, maior (normalmente
est e det al he omi t i do nos
fluxogramas).
escrever
maior
1
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
17/57
a > b a > c maior = a
maior = c
b > c
true true
false
maior = b
maior = c
false
false
true
1
2
Exerccio 02: teste o exerccio 01 para os
valores abaixo. Determine o maior e tambm o
caminho seguido no fluxo. Veja como exemplo o
teste 1.
Teste a b c maior caminho
1 69 21 7 69 true, true
2 21 69 7
3 21 7 69
4 7 21 69
5 7 7 7
69
69
69
7
false, true
true, false
false, false
false, false
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
18/57
Exerccio 03: elabore um fluxograma
para determinar o menor valor entre quatro
valores reais.
c < menor menor = c
false
fim
true
d < menor menor = d
false
true
"Menor: ",
menor
1
incio
menor = a
a, b, c, d Admitir que um
deles o menor.
b < menor menor = b true
false
Comparar
individualmente
com os outros.
1
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
19/57
A criao de variveis foi
omitida no fluxograma!
Exerccio 04: converta o exerccio
anterior (03) em um programa C++.
menor = a
Admitir que um
deles o menor.
incio
a, b, c, d
b < menor menor = b true
false
Comparar
individualmente
com os outros.
1
cin >> a >> b >> c >> d;
// Admitir que um deles
// o menor.
menor = a;
/* Comparar individualmente
com os outros. */
if(b < menor) menor = b;
comentrio
de linha //
comentrio de
bloco /* */
int main(int argc, char *argv[])
{
double a, b, c, d, menor;
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
20/57
Exerccio 04: continuao.
c < menor menor = c
false
true
1
int main(int argc, char *argv[])
{
double a, b, c, d, menor;
cin >> a >> b >> c >> d;
// Admitir que um deles
// o menor
menor = a;
/* Comparar individualmente com
os outros. */
if(b < menor) menor = b;
d < menor menor = d
false
true
fim
'Menor:',
menor
if(c < menor) menor = c;
if(d < menor) menor = d;
cout << Menor: << menor << endl;
return 0;
}
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
21/57
Aninhamento ou
Embutimento.
seqencial
condicional
Exerccio 05: converta o programa
C++ abaixo em um fluxograma e determine o
que ser exibido.
seqencial
int main(int argc, char *argv[])
{
double Nota1;
cout << Nota 1: ;
cin >> Nota1;
double Nota2;
cout << Nota 2: ;
cin >> Nota2;
double Media = (Nota1 + Nota2) / 2.0;
string Situacao;
if(Media < 3.0){
Situacao = Reprovado;
cout << Media: << Media << endl;
cout << Situao: << Situacao << endl;
}
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
22/57
Aninhamento ou
embutimento.
Exerccio 05: continuao.
if(3.0 <= Media && Media < 6.0){
double Exame;
cout << Nota Exame: << endl;
cin >> Exame;
Media = (Media + Exame) / 2.0;
if(Media < 6.0) Situacao = Reprovado Exame;
else Situacao = Aprovado Exame;
cout << Media: << Media << endl;
cout << Situao: << Situacao << endl;
}
if(6.0 <= Media){
Situacao = Aprovado;
cout << Media: << Media << endl;
cout << Situao: << Situacao << endl;
}
return 0;
}
Seqen-
cial
Condi-
cional
Condi-
cional
Seqen-
cial
Seqen-
cial
Condi-
cional
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
23/57
Exerccio 06: converta o programa C++
abaixo em um fluxograma e determine o que
ser exibido.
int main(int argc, char *argv[])
{
double A, B, C;
cout << Entre com os lados;
cout << Lado A: );
cin >> A;
cout << Lado B: );
cin >> B;
cout << Lado C: );
cin >> C;
1
2
3
4
5
6
7
8
Seq.
O
b
s
e
r
v
e

o
s

n

v
e
i
s

d
a

n
u
m
e
r
a

o
!

C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
24/57
Aninhamento ou
embutimento.
Exerccio 06: continuao.
if(A < B + C && B < A + C && C < A + B){
if(B > A){
double aux = B;
B = A;
A = aux;
}
if(C > A){
double aux = C;
C = A;
A = aux;
}
double QA = A * A;
double QBC = B * B + C * C;
if(QA > QBC) cout << Obtusngulo << endl;
if(QA == QBC) cout Retngulo << endl;
if(QA < QBC) cout << Acutngulo << endl;
}
return 0;
}
9
10
9.1
9.2
9.3
9.4
9.5
9.6
9.7
9.1.1
9.1.2
9.1.3
9.2.1
9.2.2
9.2.3
Seq.
Cond.
Seq.
Cond.
Cond.
Cond.
Cond.
Cond.
Seq.
Seq.
O
b
s
e
r
v
e

o
s

n

v
e
i
s

d
a

n
u
m
e
r
a

o
!

C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
25/57
Vamos usar o
else!
Exerccio 07: utilize o else nos
ltimos condicionais do exerccio 06
(abaixo).
if(QA > QBC) cout << Obtusngulo << endl;
if(QA == QBC) cout Retngulo << endl;
if(QA < QBC) cout << Acutngulo << endl;
Melhorou ou
piorou?
Justifique.
if(QA > QBC) cout << Obtusngulo << endl;
else if(QA == QBC) cout Retngulo << endl;
else cout << Acutngulo << endl;
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
26/57
Exerccio 08: elabore um programa C++ para
descobrir qual a cor do ponto de coordenadas
cartesianas x e y dadas.
4 4 2 x y + s
y
x
4
4
-4
-4
C++
lgebra
de Boole
conjuntos portugus
! no
&& . e
|| v ou
2 2
( 4) ( 4) 4 x y + + s
crculo
( 8 0) ( 0) ( 0) y x x y s . s . >
tringulo
4 4 2 x y + s
losango
maximo( 4 , 4) 2 x y + s
quadrado
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
27/57
Exerccio 08: soluo.
int main(int argc, char *argv[])
{
cout << Coordenadas x e y?...;
double x, y;
cin >> x >> y;
double a = abs(x 4.0);
double b = abs(y + 4.0);
double maximo;
if(a > b) maximo = a;
else maximo = b;
if(maximo <= 2.0 || a + abs(y 4.0) <= 2.0)
cout << Azul << endl;
else{
double a = x + 4.0;
double b = y 4.0;
double q = a * a + b * b;
double r = y x 8.0;
if(q <= 4.0 && r > 0.0) cout << Amarelo << endl;
else if(q <= 4.0 && r <= 0.0) cout << Vermelho << endl;
else if(r <= 0.0 && x <= 0.0 && y >= 0.0)
cout << Verde << endl;
else cout << Branco << endl;
}
return 0;
}
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
28/57
Sete Peas Bsicas
4
...
v1 v2 vn
default
condicional switch
switch ( <exp.ord.> ){

<v1>:
<comando v11>;
...
<comando v1n>;
break;
<v2>:
<comando v21>;
...
<comando v2n>;
break;
...
<vn>:
<comando vn1>;
...
<comando vnn>;
break;
default:
<comando v21>;
...
<comando v2n>;
}
default
opcional
v1
v2
vn
default
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
29/57
Exerccio 09: elabore um fluxograma e seu
correspondente programa C++ para calcular e exibir,
baseado numa opo de entrada, a rea de uma das
figuras abaixo.
retngulo
a
b
R
A a b =
elipse
a
b
4
E
a b
A
t
=
tringulo
a
b
c
( ) ( ) ( )
T
A s s a s b s c =
2
a b c
s
+ +
=
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
30/57
Exerccio 09: soluo.
incio
"Opo? (1, 2
ou 3)...'"
opcao
opcao 2
1
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
31/57
Exerccio 09: continuao.
"a e b?..."
a, b
Ar = a * b
"rea: ", Ar
Retngulo
"a, b, c?..."
a, b, c
s = (a + b + c) / 2
Ar = sqrt(s * (s - a) * (s - b) * (s - c))
"rea: ", Ar
Tringulo
"a e b?..."
a, b
Ar = (M_PI * a * b) / 4
"rea: ", Ar
Elipse
"1, 2 ou 3!'"
1 2
3
fim
else
1
2
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
32/57
Exerccio 09: continuao.
int main(int argc, char *argv[])
{
int opcao;
double a, b, c, s, Ar;
cout << Opo?(1, 2 ou 3)...;
cin >> opcao;
switch(opcao){
case 1: // Retngulo
cout << a e b?...;
cin >> a >> b;
Ar = a * b;
cout << rea: << Ar << endl;
break;
Dois espaos
de
indentao!
Mais dois
espaos de
indentao!
Outros dois
espaos de
indentao!
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
33/57
Exerccio 09: continuao.
case 2: // Tringulo
cout << a, b, c?...;
cin >> a >> b >> c;
s = (a + b + c) / 2.0;
Ar = sqrt(s * (s - a)
(s b) * (s c));
cout << rea: << Ar << endl;
break;
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
34/57
Exerccio 09: continuao.
case 3: // Elipse
cout << a e b?...;
cin >> a >> b;
Ar = M_PI * a * b / 4.0;
cout << rea: << Ar << endl;
break;
default cout << 1, 2 ou 3! << endl;
} // switch
return 0;
}
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
35/57









c
h
a
m
a
d
a

e
x
e
c
u

o

r
e
t
o
r
n
o

Funes: Definio e Chamada
...
<funo>(<a1>, <a2>, ..., <an>);
...
Argumentos (a)
e Parmetros (p): deve
haver compatibilidade
de tipos.
Definio
Chamada
compatveis
...
<tipo> <funo>(<tipo1> <p1>, <tipo2> <p2>, ..., <tipon> <pn>)
{
// corpo da funo: estruturas de controle e
// chamadas de funes.
...
return <expresso>;
}
...
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
36/57
Exerccio 10: elabore uma funo C++, que no
seja a main, para calcular a rea de um retngulo.
R
A a b =
retngulo
a
b
double ArRet(double a, double b)
// Retorna a rea de um retngulo
// de lados a e b.
{
double Ar = a * b;
return Ar;
}
e
n
t
r
a
d
a

e
n
t
r
a
d
a

s
a

d
a

e
n
t
r
a
d
a

entrada
s
a

d
a

Ar do tipo
double
return a * b;
Definio
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
37/57
Exerccio 11: elabore uma funo C++, que no
seja a main, para calcular a rea de uma elipse.
double ArElp(double a, double b)
// Retorna a rea de uma elipse
// de dimetros a e b.
{
double Ae = M_PI * a * b;
return Ae;
}
e
n
t
r
a
d
a

e
n
t
r
a
d
a

s
a

d
a

s
a

d
a

Ae do tipo
double
elipse
a
b
4
E
a b
A
t
=
e
n
t
r
a
d
a

entrada
return M_PI * a * b;
Definio
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
38/57
Exerccio 12: elabore uma funo C++, que no
seja a main, para calcular a rea de um tringulo.
double ArTri(double a, double b, double
c)
// Retorna a rea de um tringulo de
// lados a, b e c.
{
double s = (a + b + c) / 2.0;
double At = sqrt(s*(s-a)*(s-b)*(s-c));
return At;
}
e
n
t
r
a
d
a

e
n
t
r
a
d
a

s
a

d
a

s
a

d
a

At do
tipo double
e
n
t
r
a
d
a

tringulo
a
b
c
( ) ( ) ( )
T
A s s a s b s c =
2
a b c
s
+ +
=
e
n
t
r
a
d
a

e
n
t
r
a
d
a

return sqrt(s*(s-a)*(s-b)*(s-c));
e
n
t
r
a
d
a

Definio
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
39/57
Exerccio 13: elabore um programa C++ para
calcular e exibir, baseado numa opo de entrada, a rea
de uma das figuras: 1) Retngulo; 2) Tringulo; 3) Elipse.
int main(int argc, char *argv[])
{
int opcao;
double a, b, c;
switch(opcao){
case 1: // Retngulo
cout << a e b?...;
cin >> a >> b;
cout << rea: << ArRet(a, b) << endl;
break;
case 2: // Tringulo
cout << a, b, c?...;
cin >> a >> b >> c;
cout << rea: << ArTri(a, b, c) << endl;
break;
Chamada
Chamada
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
40/57
Exerccio 13: continuao
case 3: // Elipse
cout << a e b?...;
cin >> a >> b;
cout << rea: << ArElp(a, b) << endl;
break;
default cout << 1, 2 ou 3! << endl;
} // switch
return 0;
}
Chamada
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
41/57
Exerccio 14: elabore uma funo C++, que no
seja a main, para verificar se a cor de um ponto de
coordenadas cartesianas x e y azul, segundo o
diagrama abaixo.
y
x
4
4
-4
4 4 2 x y + s
losango
maximo( 4 , 4) 2 x y + s
quadrado
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
42/57
Exerccio 14: soluo.
bool Azul(double x, double y)
// Retorna true se o ponto azul
// e false se no azul.
{
if(abs(x 4.0) + abs(y 4.0) <= 2.0) return
true;
double a = abs(x 4.0);
double b = abs(y + 4.0);
double maximo;
if(a > b) maximo = a;
else maximo = b;
if(maximo <= 2.0) return true;
return false;
}
e
n
t
r
a
d
a

e
n
t
r
a
d
a

s
a

d
a

C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
43/57
Exerccio 15: elabore uma funo C++, que no
seja a main, para verificar se a cor de um ponto de
coordenadas cartesianas x e y amarela, segundo o
diagrama abaixo.
4 4 2 x y + s
y
x
4
-4
( 8 0) ( 0) ( 0) y x x y s . s . >
tringulo
2 2
( 4) ( 4) 4 x y + + s
crculo
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
44/57
Exerccio 15: soluo.
bool Amarelo(double x, double y)
// Retorna true se o ponto amarelo
// e false se no amarelo.
{
double a = x + 4.0;
double b = y 4.0;
double q = a * a + b * b;
if(q <= 4.0 && y x 8.0 > 0.0) return true;
else return false;
}
e
n
t
r
a
d
a

e
n
t
r
a
d
a

s
a

d
a

C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
45/57
Exerccio 16: elabore uma funo C++, que no
seja a main, para verificar se a cor de um ponto de
coordenadas cartesianas x e y vermelha, segundo o
diagrama abaixo.
4 4 2 x y + s
y
x
4
-4
( 8 0) ( 0) ( 0) y x x y s . s . >
tringulo
2 2
( 4) ( 4) 4 x y + + s
crculo
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
46/57
Exerccio 16: soluo.
bool Vermelho(double x, double y)
// Retorna true se o ponto vermelho
// e false se no vermelho.
{
double a = x + 4.0;
double b = y 4.0;
double q = a * a + b * b;
if(q <= 4.0 && y x 8.0 <= 0.0) return true;
else return false;
}
e
n
t
r
a
d
a

e
n
t
r
a
d
a

s
a

d
a

C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
47/57
Exerccio 17: elabore uma funo C++, que no
seja a main, para verificar se a cor de um ponto de
coordenadas cartesianas x e y verde, segundo o
diagrama abaixo.
( 8 0) ( 0) ( 0) y x x y s . s . >
tringulo
y
x
8
-8
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
48/57
Exerccio 17: soluo.
bool Verde(double x, double y)
// Retorna true se o ponto verce
// e false se no verde.
{
if(y x 8.0 <= 0.0 && x <= 0.0 && y >= 0.0)
return true;
else return false;
}
e
n
t
r
a
d
a

e
n
t
r
a
d
a

s
a

d
a

C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
49/57
siga a seta
siga a seta
siga a seta
siga a seta
Passagem por
referncia
&
Exerccio 18: elabore uma funo C++, que no
seja a main, para trocar os valores de duas variveis.
void Troca(double &x, double &y)
// Troca os valores das variveis x e y.
{
double aux = x; // Varivel auxiliar.
x = y;
y = aux;
}
e
n
t
r
a
d
a

e
n
t
r
a
d
a

s
a

d
a

s
a

d
a

a:3
b:4
a:4
b:3
Chamada
Troca ( a , b )
simulao:
a:3
b:4
Troca ( a, b)
x
y
aux:3
a:4
b:3
siga a
seta
Definio
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
50/57
Sete Peas Bsicas no C++
5
false
true
repetitiva for
for( <inic.>; <comp.>; <inc.> ){


<comando 1>;
<comando 2>;
...
<comando n>;
}
true
false
ponto e
vrgula
obrigatrio
ponto e
vrgula
obrigatrio
Comando
simples no
necessita das
chaves { e }.
parn-
teses
obriga-
trios
parn-
teses
obriga-
trios
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
51/57
Sete Peas Bsicas no C++
while (<condio>){


<comando 1>;
<comando 2>;
...
<comando n>;
}
true
false
Comando
simples no
necessita das
chaves { e }.
6
false
true
repetitiva while
parn-
teses
obriga-
trios
parn-
teses
obriga-
trios
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
52/57
Sete Peas Bsicas no C++
do{
<comando 1>;
<comando 2>;
...
<comando n>;


}while(<condio>);
true
false
parn-
teses
obriga-
trios
parn-
teses
obriga-
trios
7
true
false
repetitiva do/while
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
53/57
Exerccio 19: elabore uma funo C++, que no
seja a main, para calcular a soma abaixo. Use um for.
2 4 6 8 2
cos 1 ...
2! 4! 6! 8! (2 )!
n
x x x x x
x
n

= + +

0 1 2 3 4 n ...
2
1 2
x

2
3 4
x

2
5 6
x

2
7 8
x

2
9 10
x

q
k
k+1
...
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
54/57
Passagem
por valor
chamada
retorno
Exerccio 19: soluo.
double cosseno(double x, int n)
// Retorna o cosseno de x (rad)
// calculado com n+1 parcelas.
{
e
n
t
r
a
d
a

e
n
t
r
a
d
a

s
a

d
a

s
a

d
a

2 2
cos 1 ...
2! (2 )!
n
x x
x
n

= +

e
n
t
r
a
d
a

e
n
t
r
a
d
a

double cos = 0.0;
double p = 1.0;
double q = - x * x;
int k = 1;
for(int i = 0; i < n; i++){
cos += p;
p *= q / (k * (k + 1));
k += 2;
}
return cos;
}
...
// Chamada da funo:
double x = 45; // grau
x *= M_PI/180.0; // rad
double y = cosseno(x, 10);
...
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
55/57
Passagem
por valor
chamada
retorno
Exerccio 19: soluo com
while.
double cosseno(double x, int n)
// Retorna o cosseno de x (rad)
// calculado com n+1 parcelas.
{
e
n
t
r
a
d
a

e
n
t
r
a
d
a

s
a

d
a

double cos = 0.0;
double p = 1.0;
double q = - x * x;
int k = 1, i = 0;
while(i < n){
cos += p;
p *= q / (k * (k + 1));
k += 2; i++;
}
return cos;
}
...
// Chamada da funo:
double x = 45; // grau
x *= M_PI/180.0; // rad
double y = cosseno(x, 10);
...
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
56/57
Um erro
pequeno!
Passage
m por
valor
chamada
retorno
Exerccio 19: outra soluo
com while e sem a quantidade de
parcelas n.
double cosseno(double x)
// Retorna o cosseno de x (rad)
// calculado com n+1 parcelas.
{
e
n
t
r
a
d
a

s
a

d
a

double cos = 0.0;
double p = 1.0, erro = 1E-10;
double q = - x * x;
int k = 1;
while(fasb(p) > erro){
cos += p;
p *= q / (k * (k + 1));
k += 2;
}
return cos;
}
...
// Chamada da funo:
double x = 45; // grau
x *= M_PI/180.0; // rad
double y = cosseno(x);
...
C++ - Programao Estruturada
Prof. Lincoln Cesar Zamboni
57/57
Um erro
pequeno!
Passage
m por
valor
chamada
retorno
Exerccio 19: soluo com
do/while e sem a quantidade de
parcelas n.
double cosseno(double x)
// Retorna o cosseno de x (rad)
// calculado com n+1 parcelas.
{
e
n
t
r
a
d
a

s
a

d
a

double cos = 0.0;
double p = 1.0, erro = 1E-10;
double q = - x * x;
int k = 1;
do{
cos += p;
p *= q / (k * (k + 1));
k += 2;
}while(fasb(p) > erro);
return cos;
}
...
// Chamada da funo:
double x = 45; // grau
x *= M_PI/180.0; // rad
double y = cosseno(x);
...