ESCOLA DE ENGENHARIA C++ Programação Estruturada.
Transcript of ESCOLA DE ENGENHARIA C++ Programação Estruturada.
ESCOLA DE ENGENHARIA
C++Programação Estruturada
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 2/57
Brian Kernighan (1976)Brian Kernighan (1976) “Nossa experiência mostra que a legibilidade é o
único e o melhor critério para a qualidade de um programa: se um programa é fácil de ler, ele é provavelmente um bom programa; se ele é difícil de ler, provavelmente ele não é bom. "
início
m = (a + b + c) / 3
fim
"Entre comtrês valores
reais...'
a, b, c
"Média: ", m
Funciona, porém Funciona, porém está está ilegívelilegível!!
Funciona, porém Funciona, porém está está ilegívelilegível!!
Não é bomNão é bom!!Não é bomNão é bom!!
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 3/57
Brian Kernighan (1976)Brian Kernighan (1976)início
m = (a + b + c) / 3
fim
"Entre comtrês valores
reais..."
a, b, c
"Média: ", m Funciona e está Funciona e está legívellegível!!
Funciona e está Funciona e está legívellegível!!
Se um programa é fácil de ler, ele é provavelmente um bom programa.
Se um programa é fácil de ler, ele é provavelmente um bom programa.
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 4/57
Funciona e está Funciona e está legívellegível!!
Funciona e está Funciona e está legívellegível!!
Funciona, porém Funciona, porém está está ilegívelilegível!!
Funciona, porém Funciona, porém está está ilegívelilegível!!
Brian Kernighan (1976)Brian Kernighan (1976)int main(int argc, char *argv[]){float a,b,c;cout<< Entre com três valores reais...”<<endl;cin>>a>>b>>c;float m=(a+b+c)/2;cout<<“Média: ”<<m<<endl;return 0;}
int main(int argc, char *argv[]){float a,b,c;cout<< Entre com três valores reais...”<<endl;cin>>a>>b>>c;float m=(a+b+c)/2;cout<<“Média: ”<<m<<endl;return 0;}
int main(int argc, char *argv[]){ float a, b, c; cout << Entre com três valores reais...” << endl; cin >> a >> b >> c; float m = (a + b + c) / 2; cout << “Média: ” << m << endl; return 0;}
int main(int argc, char *argv[]){ float a, b, c; cout << Entre com três valores reais...” << endl; cin >> a >> b >> c; float m = (a + b + c) / 2; cout << “Média: ” << m << endl; return 0;}
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 5/57
Descrição de AlgoritmosDescrição de Algoritmos Narrativa: é o algoritmo descrito com o uso da linguagem
natural. A linguagem natural é abstrata, imprecisa e freqüentemente pouco confiável. Isto pode ser observado por pessoas que tentam redigir um contrato ou um documento legal;
Fluxograma: é o algoritmo descrito com o uso de símbolos geométricos (retângulos, losangos, etc.) enfatizando seus passos individuais e suas interconexões;
Linguagem Algorítmica: é o algoritmo descrito com o uso da combinação entre a Narrativa e o Fluxograma, extraindo suas melhores características. É similar a várias linguagens de programação como, por exemplo, Object Pascal, C++, etc.
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 6/57
ISO 5807: Dados e ProcessosISO 5807: Dados e Processos
Escreva otexto aqui!
TerminaçãoTerminaçãoTerminaçãoTerminação
Entrada deEntrada de DadosEntrada deEntrada de Dados
Saída deSaída de DadosSaída deSaída de Dados
ProcessoProcessoProcessoProcesso
ProcessoProcesso de Decisãode DecisãoProcessoProcesso de Decisãode Decisão
ConectorConectorConectorConector
FluxoFluxoFluxoFluxo
AnotaçãoAnotaçãoAnotaçãoAnotação
passivopassivo: sofre ação: sofre açãopassivopassivo: sofre ação: sofre ação
ativoativo: executa ação: executa açãoativoativo: executa ação: executa ação
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 7/57
Böhn e Jacopini (1966)Böhn e Jacopini (1966)
• as estruturas têm um papel fundamental quando desejamos descrever um algoritmo que seja computável, isto é, implementável em um computador;
• Böhm e Jacopini demonstraram em 1966 que qualquer programa de computador pode ser decomposto através de três tipos de estruturas de programação:
1) estrutura seqüencial;2) estrutura condicional;3) estrutura repetitiva;
• estas estruturas também podem estar embutidas umas nas outras, por exemplo, uma estrutura repetitiva pode repetir uma seqüência onde um dos comandos desta seqüência seja uma estrutura condicional que por sua vez condiciona uma outra seqüência, etc.
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 8/57
Sete Peças Básicas no C++:Sete Peças Básicas no C++:
............
1111 seqüencial ;seqüencial ;seqüencial ;seqüencial ; 2222
truetruetruetrue
falsefalsefalsefalse
condicional ifcondicional ifcondicional ifcondicional if 4444
............v1v1v1v1 v2v2v2v2 vnvnvnvn
defaultdefaultdefaultdefault
condicional switchcondicional switchcondicional switchcondicional switch
3333
truetruetruetrue
falsefalsefalsefalse
condicional if/elsecondicional if/elsecondicional if/elsecondicional if/else
5555
falsefalsefalsefalse
truetruetruetrue
repetitiva forrepetitiva forrepetitiva forrepetitiva for
6666
falsefalsefalsefalse
truetruetruetrue
repetitiva whilerepetitiva whilerepetitiva whilerepetitiva while
7777
truetruetruetrue falsefalsefalsefalse
repetitiva do/whilerepetitiva do/whilerepetitiva do/whilerepetitiva do/while
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 9/57
Sete Peças Básicas no C++Sete Peças Básicas no C++
RA a b
retânguloretânguloretânguloretângulo
aaaa
bbbb"a e b?..."
a, b
Ar = a * b
"Área: ", Ar
Variáveis reais.
Área do Retânguloinício
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;}
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;}eme
m C
++
C+
+eme
m C
++
C+
+
............
1111 seqüencial ;seqüencial ;seqüencial ;seqüencial ;
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 10/57
Sete Peças Básicas no C++Sete Peças Básicas no C++
comando simples: comando simples: seqüênciaseqüência de um de um único comando.único comando.
comando simples: comando simples: seqüênciaseqüência de um de um único comando.único comando.
palavras reservadas palavras reservadas em vermelhoem vermelho
palavras reservadas palavras reservadas em vermelhoem vermelho
truetrue
falsefalse
if( <condição> ) <comando> ;if( <condição> ) <comando> ;
2222
truetruetruetrue
falsefalsefalsefalse
condicional ifcondicional ifcondicional ifcondicional if
parênteses parênteses obrigatóriosobrigatóriosparênteses parênteses obrigatóriosobrigatórios
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 11/57
Sete Peças Básicas no C++Sete Peças Básicas no C++
comando composto: comando composto: seqüênciaseqüência de dois de dois
ou mais comandos.ou mais comandos.
comando composto: comando composto: seqüênciaseqüência de dois de dois
ou mais comandos.ou mais comandos.
falsefalse
truetrue
if( <condição> ){
<comando 1>; <comando 2>; ... <comando n>;}
if( <condição> ){
<comando 1>; <comando 2>; ... <comando n>;}
2222
truetruetruetrue
falsefalsefalsefalse
condicional ifcondicional ifcondicional ifcondicional if
indentação com 2 indentação com 2 espaçosespaços
(legibilidade)(legibilidade)
indentação com 2 indentação com 2 espaçosespaços
(legibilidade)(legibilidade)
;;
Aqui não tem Aqui não tem ponto e vírgula!ponto e vírgula!
Aqui não tem Aqui não tem ponto e vírgula!ponto e vírgula!
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 12/57
Sete Peças Básicas no C++Sete Peças Básicas no C++comando comando simplessimples
comando comando simplessimples
comando comando simplessimples
comando comando simplessimples
truetrue
falsefalse
Uma possível forma Uma possível forma de indentar de indentar
(Kernighan & Ritchie).(Kernighan & Ritchie).
Uma possível forma Uma possível forma de indentar de indentar
(Kernighan & Ritchie).(Kernighan & Ritchie).
if( <condição> ) <comandoT> ;
else <comandoF> ;
if( <condição> ) <comandoT> ;
else <comandoF> ;
3333
truetruetruetrue
falsefalsefalsefalse
condicional if/elsecondicional if/elsecondicional if/elsecondicional if/else
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 13/57
Sete Peças Básicas no C++Sete Peças Básicas no C++
;;
comando comando compostocompostocomando comando compostocomposto
comando comando compostocompostocomando comando compostocomposto
truetrue
falsefalse
Uma possível Uma possível forma de indentar forma de indentar
(Kernighan & (Kernighan & Ritchie).Ritchie).
Uma possível Uma possível forma de indentar forma de indentar
(Kernighan & (Kernighan & Ritchie).Ritchie).
if( <condição> ){
<comandoT 1>; <comandoT 2>; ... <comandoT n>;}else{ <comandoF 1>; <comandoF 2>; ... <comandoF m>;}
if( <condição> ){
<comandoT 1>; <comandoT 2>; ... <comandoT n>;}else{ <comandoF 1>; <comandoF 2>; ... <comandoF m>;}
3333
truetruetruetrue
falsefalsefalsefalse
condicional if/elsecondicional if/elsecondicional if/elsecondicional if/else
;;Aqui não tem Aqui não tem
ponto e vírgula!ponto e vírgula!Aqui não tem Aqui não tem
ponto e vírgula!ponto e vírgula!
Aqui não tem Aqui não tem ponto e vírgula!ponto e vírgula!
Aqui não tem Aqui não tem ponto e vírgula!ponto e vírgula!
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 14/57
estruturaestruturaseqüencialseqüencialestruturaestrutura
seqüencialseqüencial
Exercício 01: Exercício 01: elabore um fluxograma para determinar o maior valor entre três valores reais.
início
aqui começa a determinação domaior, comparando-os dois a dois.
criar reaisa, b, c, maior
Aqui são criadas as variáveis reaisa, b, c, maior (normalmente ested e t a l h e é o m i t i d o n o sfluxogramas).
a ,b, c
1
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 15/57
Exercício 01: Exercício 01: continuação.continuação.
estruturaestruturacondicionalcondicional
estruturaestruturacondicionalcondicional
estruturaestruturacondicionalcondicional
embutidaembutida
estruturaestruturacondicionalcondicional
embutidaembutida
estruturaestruturacondicionalcondicional
embutidaembutida
estruturaestruturacondicionalcondicional
embutidaembutida
a > b a > c maior = a
maior = c
b > c
true true
false
maior = b
maior = c
false
false
true
1
2
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 16/57
estruturaestruturaseqüencialseqüencialestruturaestrutura
seqüencialseqüencial
Exercício 01: Exercício 01: continuação.continuação.
destruir reaisa, b, c, maior
fim
Aqui são destruidas as variáveisreais a, b, c, maior (normalmenteeste deta lhe é omit ido nosfluxogramas).
escrevermaior
1
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. 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
Exercício 02: Exercício 02: teste o exercício 01 para os teste o exercício 01 para os valores abaixo. Determine o maior e também o valores abaixo. Determine o maior e também o caminho seguido no fluxo. Veja como exemplo o caminho seguido no fluxo. Veja como exemplo o teste 1.teste 1.
TesteTeste aa bb cc maiomaiorr
caminhocaminho
11 6969 2211
77 6969 true, truetrue, true
22 2121 6699
77
33 2121 77 6699
44 77 2211
6699
55 77 77 77
69696969
69696969
69696969
7777
false, truefalse, truefalse, truefalse, true
true, falsetrue, falsetrue, falsetrue, false
false, falsefalse, falsefalse, falsefalse, false
false, falsefalse, falsefalse, falsefalse, false
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 18/57
Exercício 03: Exercício 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
início
menor = a
a, b, c, d Admitir que umdeles é o menor.
b < menor menor = btrue
false
Compararindividualmentecom os outros.
1
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 19/57
A criação de variáveis foi A criação de variáveis foi omitida no fluxograma!omitida no fluxograma!
A criação de variáveis foi A criação de variáveis foi omitida no fluxograma!omitida no fluxograma!
Exercício 04: Exercício 04: converta o exercício anterior (03) em um programa C++.
menor = a
Admitir que um deles é o menor.
início
a, b, c, d
b < menor menor = btrue
false
Comparar individualmente com os outros.
1
cin >> a >> b >> c >> d;cin >> a >> b >> c >> d;
// Admitir que um deles// é o menor.menor = a;
// Admitir que um deles// é o menor.menor = a;
/* Comparar individualmente com os outros. */if(b < menor) menor = b;
/* Comparar individualmente com os outros. */if(b < menor) menor = b;
comentário comentário de linha //de linha //
comentário comentário de linha //de linha //
comentário de comentário de bloco /* */bloco /* */
comentário de comentário de bloco /* */bloco /* */
int main(int argc, char *argv[]){ double a, b, c, d, menor;
int main(int argc, char *argv[]){ double a, b, c, d, menor;
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 20/57
Exercício 04: Exercício 04: continuação.
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;
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(c < menor) menor = c;
if(d < menor) menor = d; if(d < menor) menor = d;
cout << “Menor: “ << menor << endl; return 0;}
cout << “Menor: “ << menor << endl; return 0;}
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 21/57
Aninhamento ouAninhamento ouEmbutimento.Embutimento.Aninhamento ouAninhamento ouEmbutimento.Embutimento.
seqüencialseqüencial
condicionalcondicional
Exercício 05: Exercício 05: converta o programa C+converta o programa C++ abaixo em um fluxograma e determine o + abaixo em um fluxograma e determine o que será exibido.que será exibido.
seqüencialseqüencial
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 << “Situação: “ << Situacao << endl; }
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 << “Situação: “ << Situacao << endl; }
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 22/57
Aninhamento ou Aninhamento ou embutimento.embutimento.
Aninhamento ou Aninhamento ou embutimento.embutimento.Exercício 05: Exercício 05: continuação.continuação.
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 << “Situação: “ << Situacao << endl; } if(6.0 <= Media){ Situacao = “Aprovado”; cout << “Media: “ << Media << endl; cout << “Situação: “ << Situacao << endl; } return 0;}
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 << “Situação: “ << Situacao << endl; } if(6.0 <= Media){ Situacao = “Aprovado”; cout << “Media: “ << Media << endl; cout << “Situação: “ << Situacao << endl; } return 0;}
Seqüen-cial
Seqüen-cial
Condi-cionalCondi-cional
Condi-cionalCondi-cional
Seqüen-cial
Seqüen-cial
Seqüen-cial
Seqüen-cial
Condi-cionalCondi-cional
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 23/57
Exercício 06: Exercício 06: converta o programa C++ converta o programa C++ abaixo em um fluxograma e determine o que abaixo em um fluxograma e determine o que será exibido.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;
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;
11
22
33
44
55
66
77
88
Seq.Seq.
Ob
se
rve
os
nív
eis
da
nu
mer
aç
ão
!O
bs
erv
e o
s n
íve
is d
a n
um
era
çã
o!
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 24/57
Aninhamento ou Aninhamento ou embutimento.embutimento.
Aninhamento ou Aninhamento ou embutimento.embutimento.Exercício 06: Exercício 06: continuação.continuação.
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 << “Obtusângulo” << endl; if(QA == QBC) cout “Retângulo” << endl; if(QA < QBC) cout << “Acutângulo” << endl; } return 0;}
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 << “Obtusângulo” << endl; if(QA == QBC) cout “Retângulo” << endl; if(QA < QBC) cout << “Acutângulo” << endl; } return 0;}
99
1010
9.19.1
9.29.2
9.39.3
9.49.4
9.59.5
9.69.6
9.79.7
9.1.19.1.1
9.1.29.1.2
9.1.39.1.3
9.2.19.2.1
9.2.29.2.2
9.2.39.2.3
Seq.Seq.
Cond.Cond.
Seq.Seq.
Cond.Cond.
Cond.Cond.
Cond.Cond.
Cond.Cond.
Cond.Cond.
Seq.Seq.
Seq.Seq.
Ob
se
rve
os
nív
eis
da
nu
mer
aç
ão
!O
bs
erv
e o
s n
íve
is d
a n
um
era
çã
o!
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 25/57
Vamos usar o Vamos usar o else!else!
Vamos usar o Vamos usar o else!else!
Exercício 07: Exercício 07: utilize o “else” nos utilize o “else” nos últimos condicionais do exercício 06 últimos condicionais do exercício 06 (abaixo).(abaixo).
if(QA > QBC) cout << “Obtusângulo” << endl;if(QA == QBC) cout “Retângulo” << endl;if(QA < QBC) cout << “Acutângulo” << endl;
if(QA > QBC) cout << “Obtusângulo” << endl;if(QA == QBC) cout “Retângulo” << endl;if(QA < QBC) cout << “Acutângulo” << endl;
Melhorou ou Melhorou ou piorou?piorou?
Justifique.Justifique.
Melhorou ou Melhorou ou piorou?piorou?
Justifique.Justifique.
if(QA > QBC) cout << “Obtusângulo” << endl;else if(QA == QBC) cout “Retângulo” << endl;else cout << “Acutângulo” << endl;
if(QA > QBC) cout << “Obtusângulo” << endl;else if(QA == QBC) cout “Retângulo” << endl;else cout << “Acutângulo” << endl;
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 26/57
Exercício 08: Exercício 08: elabore um programa C++ para elabore um programa C++ para descobrir qual é a cor do ponto de coordenadas descobrir qual é a cor do ponto de coordenadas cartesianas x e y dadas.cartesianas x e y dadas.
4 4 2x y
yyyy
xxxx4444
4444
-4-4-4-4
-4-4-4-4
C++álgebra
de Boole
conjuntos
português
! não
&& e
|| ou
2 2( 4) ( 4) 4x y círculocírculocírculocírculo
( 8 0) ( 0) ( 0)y x x y triângulotriângulotriângulotriângulo
4 4 2x y
losangolosangolosangolosango
maximo( 4 , 4 ) 2x y quadradoquadradoquadradoquadrado
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 27/57
Exercício 08: Exercício 08: solução.solução.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;
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{
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;
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; if(q <= 4.0 && r > 0.0) cout << “Amarelo” << endl; else if(q <= 4.0 && r <= 0.0) cout << “Vermelho” << 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 if(r <= 0.0 && x <= 0.0 && y >= 0.0) cout << “Verde” << endl; else cout << “Branco” << endl; } return 0;}
else cout << “Branco” << endl; } return 0;}
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 28/57
Sete Peças BásicasSete Peças Básicas4444
............v1v1v1v1 v2v2v2v2 vnvnvnvn
defaultdefaultdefaultdefault
condicional switchcondicional switchcondicional switchcondicional 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>;}
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 default opcionalopcionaldefault default
opcionalopcional
v1v1
v2v2
vnvn
defaultdefault
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 29/57
Exercício 09: Exercício 09: elabore um fluxograma e seu elabore um fluxograma e seu correspondente programa C++ para calcular e exibir, correspondente programa C++ para calcular e exibir, baseado numa opção de entrada, a área de uma das baseado numa opção de entrada, a área de uma das figuras abaixo.figuras abaixo.
retânguloretânguloretânguloretângulo
aaaa
bbbb
RA a b elipseelipseelipseelipse
aaaa
bbbb
4E
a bA
triângulotriângulotriângulotriângulo
aaaa
bbbbcccc
( ) ( ) ( )TA s s a s b s c
2
a b cs
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 30/57
Exercício 09: Exercício 09: solução.solução.
início
"Opção? (1, 2ou 3)...'"
opcao
opcao 2
1
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 31/57
Exercício 09: Exercício 09: continuação.continuação.
"a e b?..."
a, b
Ar = a * b
"Área: ", Ar
Retângulo"a, b, c?..."
a, b, c
s = (a + b + c) / 2Ar = sqrt(s * (s - a) * (s - b) * (s - c))
"Área: ", Ar
Triângulo"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++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 32/57
Exercício 09: Exercício 09: continuação.continuação.int main(int argc, char *argv[]){ int opcao; double a, b, c, s, Ar;
int main(int argc, char *argv[]){ int opcao; double a, b, c, s, Ar; cout << “Opção?(1, 2 ou 3)...”; cin >> opcao; cout << “Opção?(1, 2 ou 3)...”; cin >> opcao;switch(opcao){switch(opcao){ case 1: // Retângulo cout << “a e b?...”; cin >> a >> b; Ar = a * b; cout << “Área: “ << Ar << endl; break;
case 1: // Retângulo cout << “a e b?...”; cin >> a >> b; Ar = a * b; cout << “Área: “ << Ar << endl; break;
Dois espaços Dois espaços de de
indentação!indentação!
Dois espaços Dois espaços de de
indentação!indentação!
Mais dois Mais dois espaços de espaços de indentação!indentação!
Mais dois Mais dois espaços de espaços de indentação!indentação!
Outros dois Outros dois espaços de espaços de indentação!indentação!
Outros dois Outros dois espaços de espaços de indentação!indentação!
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 33/57
Exercício 09: Exercício 09: continuação.continuação.
case 2: // Triângulo 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;
case 2: // Triângulo 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++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 34/57
Exercício 09: Exercício 09: continuação.continuação.
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;}
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++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 35/57
ch
amad
a
c
ham
ada
exe
cuçã
oex
ecu
ção
reto
rno
reto
rno
Funções: Definição e ChamadaFunções: Definição e Chamada
...<função>(<a1>, <a2>, ..., <an>);...
...<função>(<a1>, <a2>, ..., <an>);... Argumentos (a)
e Parâmetros (p): deve haver compatibilidade
de tipos.
Argumentos (a)e Parâmetros (p): deve haver compatibilidade
de tipos.
DefiniçãoDefinição
ChamadaChamada
compatíveiscompatíveis
...<tipo> <função>(<tipo1> <p1>, <tipo2> <p2>, ..., <tipon> <pn>){ // corpo da função: estruturas de controle e // chamadas de funções. ... return <expressão>;}...
...<tipo> <função>(<tipo1> <p1>, <tipo2> <p2>, ..., <tipon> <pn>){ // corpo da função: estruturas de controle e // chamadas de funções. ... return <expressão>;}...
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 36/57
Exercício 10: Exercício 10: elabore uma função C++, que não elabore uma função C++, que não seja a “main”, para calcular a área de um retângulo.seja a “main”, para calcular a área de um retângulo.
RA a b
retânguloretânguloretânguloretângulo
aaaa
bbbb
double ArRet(double a, double b)// Retorna a área de um retângulo// de lados a e b.{ double Ar = a * b; return Ar;}
double ArRet(double a, double b)// Retorna a área de um retângulo// de lados a e b.{ double Ar = a * b; return Ar;}
entr
ada
entr
ada
entr
ada
entr
ada
saíd
asa
ída
en
tra
da
en
tra
da
entradaentrada
sa
ída
sa
ída
Ar é do tipo double
Ar é do tipo double
return a * b;return a * b;
DefiniçãoDefinição
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 37/57
Exercício 11: Exercício 11: elabore uma função C++, que não elabore uma função C++, que não seja a “main”, para calcular a área de uma elipse.seja a “main”, para calcular a área de uma elipse.
double ArElp(double a, double b)// Retorna a área de uma elipse// de diâmetros a e b.{ double Ae = M_PI * a * b; return Ae;}
double ArElp(double a, double b)// Retorna a área de uma elipse// de diâmetros a e b.{ double Ae = M_PI * a * b; return Ae;}
entr
ada
entr
ada
entr
ada
entr
ada
saíd
asa
ída
sa
ída
sa
ída
Ae é do tipo double
Ae é do tipo double
elipseelipseelipseelipse
aaaa
bbbb
4E
a bA
en
tra
da
en
tra
da
entradaentrada
return M_PI * a * b;return M_PI * a * b;
DefiniçãoDefinição
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 38/57
Exercício 12: Exercício 12: elabore uma função C++, que não elabore uma função C++, que não seja a “main”, para calcular a área de um triângulo.seja a “main”, para calcular a área de um triângulo.
double ArTri(double a, double b, double c)// Retorna a área de um triângulo 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;}
double ArTri(double a, double b, double c)// Retorna a área de um triângulo 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;}
entr
ada
entr
ada
entr
ada
entr
ada
saíd
asa
ída
sa
ída
sa
ída At é do
tipo doubleAt é do
tipo double
en
tra
da
en
tra
da
triângulotriângulotriângulotriângulo
aaaa
bbbbcccc
( ) ( ) ( )TA s s a s b s c 2
a b cs
en
tra
da
en
tra
da
entr
ada
entr
ada
return sqrt(s*(s-a)*(s-b)*(s-c));return sqrt(s*(s-a)*(s-b)*(s-c));
en
tra
da
en
tra
da
DefiniçãoDefinição
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 39/57
Exercício 13: Exercício 13: elabore um programa C++ para elabore um programa C++ para calcular e exibir, baseado numa opção de entrada, a área calcular e exibir, baseado numa opção de entrada, a área de uma das figuras: 1) Retângulo; 2) Triângulo; 3) Elipse.de uma das figuras: 1) Retângulo; 2) Triângulo; 3) Elipse.
int main(int argc, char *argv[]){ int opcao; double a, b, c; switch(opcao){
int main(int argc, char *argv[]){ int opcao; double a, b, c; switch(opcao){
case 1: // Retângulo cout << “a e b?...”; cin >> a >> b; cout << “Área: “ << ArRet(a, b) << endl; break;
case 1: // Retângulo cout << “a e b?...”; cin >> a >> b; cout << “Área: “ << ArRet(a, b) << endl; break;
case 2: // Triângulo cout << “a, b, c?...”; cin >> a >> b >> c; cout << “Área: “ << ArTri(a, b, c) << endl; break;
case 2: // Triângulo cout << “a, b, c?...”; cin >> a >> b >> c; cout << “Área: “ << ArTri(a, b, c) << endl; break;
ChamadaChamada
ChamadaChamada
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 40/57
Exercício 13: Exercício 13: continuaçãocontinuação
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;}
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;}
ChamadaChamada
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 41/57
Exercício 14: Exercício 14: elabore uma função C++, que não elabore uma função C++, que não seja a “main”, para verificar se a cor de um ponto de seja a “main”, para verificar se a cor de um ponto de coordenadas cartesianas x e y é azul, segundo o coordenadas cartesianas x e y é azul, segundo o diagrama abaixo.diagrama abaixo.
yyyy
xxxx4444
4444
-4-4-4-4
4 4 2x y
losangolosangolosangolosango
maximo( 4 , 4 ) 2x y quadradoquadradoquadradoquadrado
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 42/57
Exercício 14: Exercício 14: solução.solução.
bool Azul(double x, double y)// Retorna true se o ponto é azul// e false se não é 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; }
bool Azul(double x, double y)// Retorna true se o ponto é azul// e false se não é 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; }
entr
ada
entr
ada
entr
ada
entr
ada
saíd
asa
ída
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 43/57
Exercício 15: Exercício 15: elabore uma função C++, que não elabore uma função C++, que não seja a “main”, para verificar se a cor de um ponto de seja a “main”, para verificar se a cor de um ponto de coordenadas cartesianas x e y é amarela, segundo o coordenadas cartesianas x e y é amarela, segundo o diagrama abaixo.diagrama abaixo.
4 4 2x y
yyyy
xxxx
4444
-4-4-4-4
( 8 0) ( 0) ( 0)y x x y triângulotriângulotriângulotriângulo
2 2( 4) ( 4) 4x y círculocírculocírculocírculo
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 44/57
Exercício 15: Exercício 15: solução.solução.
bool Amarelo(double x, double y)// Retorna true se o ponto é amarelo// e false se não é 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; }
bool Amarelo(double x, double y)// Retorna true se o ponto é amarelo// e false se não é 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; }
entr
ada
entr
ada
entr
ada
entr
ada
saíd
asa
ída
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 45/57
Exercício 16: Exercício 16: elabore uma função C++, que não elabore uma função C++, que não seja a “main”, para verificar se a cor de um ponto de seja a “main”, para verificar se a cor de um ponto de coordenadas cartesianas x e y é vermelha, segundo o coordenadas cartesianas x e y é vermelha, segundo o diagrama abaixo.diagrama abaixo.
4 4 2x y
yyyy
xxxx
4444
-4-4-4-4
( 8 0) ( 0) ( 0)y x x y triângulotriângulotriângulotriângulo
2 2( 4) ( 4) 4x y círculocírculocírculocírculo
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 46/57
Exercício 16: Exercício 16: solução.solução.
bool Vermelho(double x, double y)// Retorna true se o ponto é vermelho// e false se não é 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; }
bool Vermelho(double x, double y)// Retorna true se o ponto é vermelho// e false se não é 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; }
entr
ada
entr
ada
entr
ada
entr
ada
saíd
asa
ída
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 47/57
Exercício 17: Exercício 17: elabore uma função C++, que não elabore uma função C++, que não seja a “main”, para verificar se a cor de um ponto de seja a “main”, para verificar se a cor de um ponto de coordenadas cartesianas x e y é verde, segundo o coordenadas cartesianas x e y é verde, segundo o diagrama abaixo.diagrama abaixo.
( 8 0) ( 0) ( 0)y x x y triângulotriângulotriângulotriângulo
yyyy
xxxx
8888
-8-8-8-8
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 48/57
Exercício 17: Exercício 17: solução.solução.
bool Verde(double x, double y)// Retorna true se o ponto é verce// e false se não é verde.{ if(y – x – 8.0 <= 0.0 && x <= 0.0 && y >= 0.0) return true; else return false; }
bool Verde(double x, double y)// Retorna true se o ponto é verce// e false se não é verde.{ if(y – x – 8.0 <= 0.0 && x <= 0.0 && y >= 0.0) return true; else return false; }
entr
ada
entr
ada
entr
ada
entr
ada
saíd
asa
ída
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 49/57
siga a setasiga a seta
siga a setasiga a seta
siga a setasiga a seta
siga a setasiga a seta Passagem por referência
&
Passagem por referência
&
Exercício 18: Exercício 18: elabore uma função C++, que não elabore uma função C++, que não seja a “main”, para trocar os valores de duas variáveis.seja a “main”, para trocar os valores de duas variáveis.
void Troca(double &x, double &y)// Troca os valores das variáveis x e y.{ double aux = x; // Variável auxiliar. x = y; y = aux;}
void Troca(double &x, double &y)// Troca os valores das variáveis x e y.{ double aux = x; // Variável auxiliar. x = y; y = aux;}
entr
ada
entr
ada
entr
ada
entr
ada
saíd
asa
ída
saíd
asa
ída
a:3a:3a:3a:3
b:4b:4b:4b:4
a:4a:4a:4a:4
b:3b:3b:3b:3
ChamadaChamada
Troca ( a , b )Troca ( a , b )
simulação:simulação:
a:3a:3a:3a:3
b:4b:4b:4b:4
Troca ( a, b)Troca ( a, b)Troca ( a, b)Troca ( a, b)
xxxx
yyyy
aux:3aux:3aux:3aux:3
a:4a:4a:4a:4
b:3b:3b:3b:3
siga a seta
siga a seta
DefiniçãoDefinição
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 50/57
Sete Peças Básicas no C++Sete Peças Básicas no C++5555
falsefalsefalsefalse
truetruetruetrue
repetitiva forrepetitiva forrepetitiva forrepetitiva for
forfor( <inic.>; <comp.>; <inc.> )( <inic.>; <comp.>; <inc.> ){{
<comando 1>;<comando 1>; <comando 2>;<comando 2>; ...... <comando n>;<comando n>;}}
forfor( <inic.>; <comp.>; <inc.> )( <inic.>; <comp.>; <inc.> ){{
<comando 1>;<comando 1>; <comando 2>;<comando 2>; ...... <comando n>;<comando n>;}}
truetrue
falsefalse
ponto e ponto e vírgula vírgula
obrigatórioobrigatório
ponto e ponto e vírgula vírgula
obrigatórioobrigatório
ponto e ponto e vírgula vírgula
obrigatórioobrigatório
ponto e ponto e vírgula vírgula
obrigatórioobrigatório
Comando Comando simples não simples não
necessita das necessita das chaves { e }.chaves { e }.
Comando Comando simples não simples não
necessita das necessita das chaves { e }.chaves { e }.
parên-parên-teses teses
obriga-obriga-tóriostórios
parên-parên-teses teses
obriga-obriga-tóriostórios
parên-parên-teses teses
obriga-obriga-tóriostórios
parên-parên-teses teses
obriga-obriga-tóriostórios
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 51/57
Sete Peças Básicas no C++Sete Peças Básicas no C++
while while (<condição>){(<condição>){
<comando 1>;<comando 1>; <comando 2>;<comando 2>; ...... <comando n>;<comando n>;}}
while while (<condição>){(<condição>){
<comando 1>;<comando 1>; <comando 2>;<comando 2>; ...... <comando n>;<comando n>;}}
truetrue falsefalse
Comando Comando simples não simples não
necessita das necessita das chaves { e }.chaves { e }.
Comando Comando simples não simples não
necessita das necessita das chaves { e }.chaves { e }.
6666
falsefalsefalsefalse
truetruetruetrue
repetitiva whilerepetitiva whilerepetitiva whilerepetitiva while parên-parên-teses teses
obriga-obriga-tóriostórios
parên-parên-teses teses
obriga-obriga-tóriostórios
parên-parên-teses teses
obriga-obriga-tóriostórios
parên-parên-teses teses
obriga-obriga-tóriostórios
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 52/57
Sete Peças Básicas no C++Sete Peças Básicas no C++
dodo{{ <comando 1>;<comando 1>; <comando 2>;<comando 2>; ...... <comando n>;<comando n>;
}while(<condição>);}while(<condição>);
dodo{{ <comando 1>;<comando 1>; <comando 2>;<comando 2>; ...... <comando n>;<comando n>;
}while(<condição>);}while(<condição>);
truetrue
falsefalse
parên-parên-teses teses
obriga-obriga-tóriostórios
parên-parên-teses teses
obriga-obriga-tóriostórios
parên-parên-teses teses
obriga-obriga-tóriostórios
parên-parên-teses teses
obriga-obriga-tóriostórios
7777
truetruetruetrue falsefalsefalsefalse
repetitiva do/whilerepetitiva do/whilerepetitiva do/whilerepetitiva do/while
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 53/57
Exercício 19: Exercício 19: elabore uma função C++, que não elabore uma função C++, que não seja a “main”, para calcular a soma abaixo. Use um “for”.seja a “main”, para calcular a soma abaixo. Use um “for”.
2 4 6 8 2
cos 1 ...2! 4! 6! 8! (2 )!
nx x x x xx
n
0000 1111 2222 3333 4444 nnnn............
2
1 2
x
2
3 4
x
2
5 6
x
2
7 8
x
2
9 10
x
kkk+1k+1
............
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 54/57
Passagem por valor
Passagem por valor
chamadachamada
retornoretorno
Exercício 19: Exercício 19: solução.solução.
double cosseno(double x, int n)// Retorna o cosseno de x (rad)// calculado com n+1 parcelas.{
double cosseno(double x, int n)// Retorna o cosseno de x (rad)// calculado com n+1 parcelas.{
entr
ada
entr
ada
entr
ada
entr
ada
saíd
asa
ída
sa
ída
sa
ída
2 2
cos 1 ...2! (2 )!
nx xx
n
en
tra
da
en
tra
da
en
tra
da
en
tra
da
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;}
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 função:double x = 45; // graux *= M_PI/180.0; // raddouble y = cosseno(x, 10);...
...// Chamada da função:double x = 45; // graux *= M_PI/180.0; // raddouble y = cosseno(x, 10);...
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 55/57
Passagem por valor
Passagem por valor
chamadachamada
retornoretorno
Exercício 19: Exercício 19: solução com solução com “while”.“while”.
double cosseno(double x, int n)// Retorna o cosseno de x (rad)// calculado com n+1 parcelas.{
double cosseno(double x, int n)// Retorna o cosseno de x (rad)// calculado com n+1 parcelas.{
entr
ada
entr
ada
entr
ada
entr
ada
saíd
asa
ída
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;}
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 função:double x = 45; // graux *= M_PI/180.0; // raddouble y = cosseno(x, 10);...
...// Chamada da função:double x = 45; // graux *= M_PI/180.0; // raddouble y = cosseno(x, 10);...
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 56/57
Um erropequeno!Um erro
pequeno!
Passagem por valor
Passagem por valor
chamadachamada
retornoretorno
Exercício 19: Exercício 19: outra solução outra solução com “while” e sem a quantidade de com “while” e sem a quantidade de parcelas n.parcelas n.
double cosseno(double x)// Retorna o cosseno de x (rad)// calculado com n+1 parcelas.{
double cosseno(double x)// Retorna o cosseno de x (rad)// calculado com n+1 parcelas.{
entr
ada
entr
ada
saíd
asa
ída
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;}
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 função:double x = 45; // graux *= M_PI/180.0; // raddouble y = cosseno(x);...
...// Chamada da função:double x = 45; // graux *= M_PI/180.0; // raddouble y = cosseno(x);...
C++ - Programação EstruturadaC++ - Programação Estruturada Prof. Lincoln Cesar ZamboniProf. Lincoln Cesar Zamboni 57/57
Um erropequeno!Um erro
pequeno!
Passagem por valor
Passagem por valor
chamadachamada
retornoretorno
Exercício 19: Exercício 19: solução com solução com “do/while” e sem a quantidade de “do/while” e sem a quantidade de parcelas n.parcelas n.
double cosseno(double x)// Retorna o cosseno de x (rad)// calculado com n+1 parcelas.{
double cosseno(double x)// Retorna o cosseno de x (rad)// calculado com n+1 parcelas.{
entr
ada
entr
ada
saíd
asa
ída
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;}
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 função:double x = 45; // graux *= M_PI/180.0; // raddouble y = cosseno(x);...
...// Chamada da função:double x = 45; // graux *= M_PI/180.0; // raddouble y = cosseno(x);...