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

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

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

Page 1: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

ESCOLA DE ENGENHARIA

C++Programação Estruturada

Page 2: 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!!

Page 3: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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.

Page 4: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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;}

Page 5: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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.

Page 6: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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

Page 7: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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.

Page 8: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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

Page 9: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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 ;

Page 10: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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

Page 11: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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!

Page 12: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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

Page 13: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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!

Page 14: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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

Page 15: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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

Page 16: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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

Page 17: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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

Page 18: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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

Page 19: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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;

Page 20: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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;}

Page 21: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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; }

Page 22: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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

Page 23: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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

ão

!O

bs

erv

e o

s n

íve

is d

a n

um

era

çã

o!

Page 24: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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

ão

!O

bs

erv

e o

s n

íve

is d

a n

um

era

çã

o!

Page 25: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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;

Page 26: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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

Page 27: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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;}

Page 28: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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

Page 29: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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

Page 30: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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

Page 31: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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

Page 32: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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!

Page 33: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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;

Page 34: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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;}

Page 35: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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>;}...

Page 36: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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

Page 37: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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

Page 38: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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

Page 39: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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

Page 40: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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

Page 41: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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

Page 42: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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

Page 43: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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

Page 44: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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

Page 45: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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

Page 46: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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

Page 47: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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

Page 48: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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

Page 49: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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

Page 50: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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

Page 51: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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

Page 52: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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

Page 53: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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

qq

kkk+1k+1

............

Page 54: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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);...

Page 55: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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);...

Page 56: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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);...

Page 57: ESCOLA DE ENGENHARIA C++ Programação Estruturada.

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);...