A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

ESCOLA DE ENGENHARIA C++ Programação Estruturada.

Apresentações semelhantes


Apresentação em tema: "ESCOLA DE ENGENHARIA C++ Programação Estruturada."— Transcrição da apresentação:

1 ESCOLA DE ENGENHARIA C++ Programação Estruturada

2 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 2/57 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. " Funciona, porém está ilegível! Não é bom!

3 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 3/57 Brian Kernighan (1976) Funciona e está legível! Se um programa é fácil de ler, ele é provavelmente um bom programa.

4 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 4/57 Funciona e está legível! Funciona, porém está ilegível! Brian Kernighan (1976) int main(int argc, char *argv[]){float a,b,c;cout >a>>b>>c; float m=(a+b+c)/2;cout<a>>b>>c; float m=(a+b+c)/2;cout<> 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; }

5 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 5/57 Descriçã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.

6 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 6/57 ISO 5807: Dados e Processos TerminaçãoTerminação Entrada de Entrada de Dados Saída de Saída de Dados ProcessoProcesso Processo de Decisão ConectorConector FluxoFluxo AnotaçãoAnotação passivo: sofre ação ativo: executa ação

7 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 7/57 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.

8 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 8/57 Sete Peças Básicas no C++: seqüencial ; 22 truetrue falsefalse condicional if v1v1v2v2vnvn defaultdefault condicional switch 33 truetrue falsefalse condicional if/else 55 falsefalse truetrue repetitiva for 66 falsefalse truetrue repetitiva while 77 truetrue falsefalse repetitiva do/while

9 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 9/57 Sete Peças Básicas no C++ retânguloretânguloaa bb 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; } em C seqüencial ;

10 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 10/57 Sete Peças Básicas no C++ comando simples: seqüência de um único comando. palavras reservadas em vermelho true false if( ) ; 22 truetrue falsefalse condicional if parênteses obrigatórios

11 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 11/57 Sete Peças Básicas no C++ comando composto: seqüência de dois ou mais comandos. false true if( ){ ;... ; } if( ){ ;... ; } 22 truetrue falsefalse condicional if indentação com 2 espaços (legibilidade) (legibilidade) ;; Aqui não tem ponto e vírgula!

12 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 12/57 Sete Peças Básicas no C++ comando simples true false Uma possível forma de indentar (Kernighan & Ritchie). if( ) ; else ; if( ) ; else ; 33 truetrue falsefalse condicional if/else

13 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 13/57 Sete Peças Básicas no C++ ;; comando composto true false Uma possível forma de indentar (Kernighan & Ritchie). if( ){ ;... ; } else{ ;... ; } if( ){ ;... ; } else{ ;... ; } 33 truetrue falsefalse condicional if/else ;; Aqui não tem ponto e vírgula!

14 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 14/57 estruturaseqüencialestruturaseqüencial Exercício 01: Exercício 01: elabore um fluxograma para determinar o maior valor entre três valores reais.

15 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 15/57 Exercício 01: continuação. estruturacondicionalestruturacondicional estruturacondicionalembutidaestruturacondicionalembutida estruturacondicionalembutidaestruturacondicionalembutida

16 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 16/57 estruturaseqüencialestruturaseqüencial Exercício 01: continuação.

17 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 17/57 Exercício 02: teste o exercício 01 para os valores abaixo. Determine o maior e também o caminho seguido no fluxo. Veja como exemplo o teste 1. Testeabcmaiorcaminho true, true false, true true, false false, false

18 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 18/57 Exercício 03: Exercício 03: elabore um fluxograma para determinar o menor valor entre quatro valores reais.

19 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 19/57 A criação de variáveis foi omitida no fluxograma! Exercício 04: Exercício 04: converta o exercício anterior (03) em um programa C++. 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 de linha // comentário de 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;

20 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 20/57 Exercício 04: Exercício 04: continuação. 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; if(c < menor) menor = c; if(d < menor) menor = d; cout << Menor: << menor << endl; return 0; } cout << Menor: << menor << endl; return 0; }

21 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 21/57 Aninhamento ou Embutimento. Embutimento. seqüencial condicional Exercício 05: converta o programa C++ abaixo em um fluxograma e determine o que será exibido. seqü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; }

22 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 22/57 Aninhamento ou embutimento. Exercício 05: 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 Condi- cional Seqüen- cial Condi- cional

23 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 23/57 Exercício 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; 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; Seq. Observe os níveis da numeração!

24 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 24/57 Aninhamento ou embutimento. Exercício 06: 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; } Seq. Cond. Seq. Cond. Seq. Observe os níveis da numeração!

25 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 25/57 Vamos usar o else! Exercício 07: utilize o else nos últimos condicionais do exercício 06 (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 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;

26 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 26/57 Exercício 08: elabore um programa C++ para descobrir qual é a cor do ponto de coordenadas cartesianas x e y dadas. yyxx C++ álgebra de Boole conjuntosportuguês ! não && e || ou círculocírculo triângulotriângulo losangolosango quadradoquadrado

27 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 27/57 Exercício 08: 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 0.0) cout << Amarelo << endl; else if(q <= 4.0 && r <= 0.0) cout << Vermelho << endl; else if(r = 0.0) cout << Verde << endl; else if(r = 0.0) cout << Verde << endl; else cout << Branco << endl; } return 0; } else cout << Branco << endl; } return 0; }

28 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 28/57 Sete Peças Básicas v1v1v2v2vnvn defaultdefault condicional switch switch ( ){ : ;... ; break; : ;... ; break;... : ;... ; break; default: ;... ; } switch ( ){ : ;... ; break; : ;... ; break;... : ;... ; break; default: ;... ; } default opcional v1 v2 vn default

29 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 29/57 Exercício 09: elabore um fluxograma e seu correspondente programa C++ para calcular e exibir, baseado numa opção de entrada, a área de uma das figuras abaixo. retânguloretânguloaa bb elipseelipseaa bb triângulotriânguloaa bb cc

30 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 30/57 Exercício 09: solução.

31 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 31/57 Exercício 09: continuação.

32 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 32/57 Exercício 09: 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){ 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 de indentação! Mais dois espaços de indentação! Outros dois espaços de indentação!

33 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 33/57 Exercício 09: 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;

34 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 34/57 Exercício 09: 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; }

35 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 35/57 chamada execução retorno Funções: Definição e Chamada... (,,..., );... (,,..., );... Argumentos (a) e Parâmetros (p): deve haver compatibilidade de tipos. Argumentos (a) e Parâmetros (p): deve haver compatibilidade de tipos. Definição Chamada compatíveis... (,,..., ) { // corpo da função: estruturas de controle e // chamadas de funções.... return ; }... (,,..., ) { // corpo da função: estruturas de controle e // chamadas de funções.... return ; }...

36 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 36/57 Exercício 10: elabore uma função C++, que não seja a main, para calcular a área de um retângulo. retânguloretânguloaa bb 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; } entrada saída entrada saída Ar é do tipo double return a * b; Definição

37 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 37/57 Exercício 11: elabore uma função C++, que não 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; } entrada saída Ae é do tipo double elipseelipseaa bb entrada return M_PI * a * b; Definição

38 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 38/57 Exercício 12: elabore uma função C++, que não 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; } entrada saída At é do tipo double entrada triângulotriânguloaa bb cc return sqrt(s*(s-a)*(s-b)*(s-c)); entrada Definição

39 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 39/57 Exercício 13: elabore um programa C++ para calcular e exibir, baseado numa opção de entrada, a área 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; Chamada

40 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 40/57 Exercício 13: continuaçã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; } Chamada

41 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 41/57 Exercício 14: elabore uma função C++, que não seja a main, para verificar se a cor de um ponto de coordenadas cartesianas x e y é azul, segundo o diagrama abaixo. yyxx losangolosango quadradoquadrado

42 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 42/57 Exercício 14: 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; } entrada saída

43 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 43/57 Exercício 15: elabore uma função C++, que não seja a main, para verificar se a cor de um ponto de coordenadas cartesianas x e y é amarela, segundo o diagrama abaixo. yyxx triângulotriângulo círculocírculo

44 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 44/57 Exercício 15: 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 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 0.0) return true; else return false; } entrada saída

45 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 45/57 Exercício 16: elabore uma função C++, que não seja a main, para verificar se a cor de um ponto de coordenadas cartesianas x e y é vermelha, segundo o diagrama abaixo. yyxx triângulotriângulo círculocírculo

46 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 46/57 Exercício 16: 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; } entrada saída

47 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 47/57 Exercício 17: elabore uma função C++, que não seja a main, para verificar se a cor de um ponto de coordenadas cartesianas x e y é verde, segundo o diagrama abaixo. triângulotriângulo yyxx

48 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 48/57 Exercício 17: 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) 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) return true; else return false; } entrada saída

49 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 49/57 siga a seta Passagem por referência & Passagem por referência & Exercício 18: elabore uma função C++, que não 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; } entrada saída a:3a:3 b:4b:4 a:4a:4 b:3b:3 Chamada Troca ( a, b ) simulação: a:3a:3 b:4b:4 Troca ( a, b) x x y y aux:3aux:3 a:4a:4 b:3b:3 siga a seta Definição

50 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 50/57 Sete Peças Básicas no C++ 55 falsefalse truetrue repetitiva for for( ; ; ){ ; ; ; ;} for( ; ; ){ ; ; ; ;} true false ponto e vírgula obrigatório Comando simples não necessita das chaves { e }. parên- teses obriga- tórios

51 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 51/57 Sete Peças Básicas no C++ while ( ){ ; ; ; ;} while ( ){ ; ; ; ;} true false Comando simples não necessita das chaves { e }. 66 falsefalse truetrue repetitiva while parên- teses obriga- tórios

52 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 52/57 Sete Peças Básicas no C++ do{ ; ; ; ;}while(); do{ ; ; ; ;}while(); true false parên- teses obriga- tórios 77 truetrue falsefalse repetitiva do/while

53 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 53/57 Exercício 19: elabore uma função C++, que não seja a main, para calcular a soma abaixo. Use um for nn qq kk k

54 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 54/57 Passagem por valor chamada retorno Exercício 19: 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. { entrada saída entrada 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; // grau x *= M_PI/180.0; // rad double y = cosseno(x, 10);... // Chamada da função: double x = 45; // grau x *= M_PI/180.0; // rad double y = cosseno(x, 10);...

55 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 55/57 Passagem por valor chamada retorno Exercício 19: solução com 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. { entrada saí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; // grau x *= M_PI/180.0; // rad double y = cosseno(x, 10);... // Chamada da função: double x = 45; // grau x *= M_PI/180.0; // rad double y = cosseno(x, 10);...

56 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 56/57 Um erro pequeno! Um erro pequeno! Passage m por valor chamada retorno Exercício 19: outra solução com while e sem a quantidade de 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. { entrada saí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; // grau x *= M_PI/180.0; // rad double y = cosseno(x);... // Chamada da função: double x = 45; // grau x *= M_PI/180.0; // rad double y = cosseno(x);...

57 C++ - Programação Estruturada Prof. Lincoln Cesar Zamboni 57/57 Um erro pequeno! Um erro pequeno! Passage m por valor chamada retorno Exercício 19: solução 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. { double cosseno(double x) // Retorna o cosseno de x (rad) // calculado com n+1 parcelas. { entrada saí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; // grau x *= M_PI/180.0; // rad double y = cosseno(x);... // Chamada da função: double x = 45; // grau x *= M_PI/180.0; // rad double y = cosseno(x);...


Carregar ppt "ESCOLA DE ENGENHARIA C++ Programação Estruturada."

Apresentações semelhantes


Anúncios Google