Estrutura de Dados - LNCC - Laboratório Nacional de ...rogerio/ed/01 - Funcoes.pdf · 1....

41
Prof. Leticia Winkler 1 Estrutura de Dados Aula 1 Funções prof Leticia Winkler [email protected]

Transcript of Estrutura de Dados - LNCC - Laboratório Nacional de ...rogerio/ed/01 - Funcoes.pdf · 1....

Page 1: Estrutura de Dados - LNCC - Laboratório Nacional de ...rogerio/ed/01 - Funcoes.pdf · 1. Definição de estrutura de dados, com a identificação de estruturas lineares e não lineares.

Prof. Leticia Winkler 1

Estrutura de Dados

Aula 1

Funções

prof Leticia Winkler

[email protected]

Page 2: Estrutura de Dados - LNCC - Laboratório Nacional de ...rogerio/ed/01 - Funcoes.pdf · 1. Definição de estrutura de dados, com a identificação de estruturas lineares e não lineares.

1. Definição de estrutura de dados, com a identificação de estruturas lineares

e não lineares.

2. Criação de funções, passagem de parâmetros (por valor e por referência)

e escopo de variáveis (local e global).

3. Listas lineares: definição e tipos com relação às formas de

armazenamento.

4. Listas lineares sequenciais (lista, pilha e fila) e suas operações básicas.

5. Ordenação e pesquisa em listas lineares seqüenciais.

6. Agregado de dados heterogêneos: structs.

7. Ponteiros e alocação dinâmica de memória.

8. Listas lineares encadeadas (lista, pilha e fila) e suas operações básicas. Prof. Leticia Winkler 2

Ementa

Page 3: Estrutura de Dados - LNCC - Laboratório Nacional de ...rogerio/ed/01 - Funcoes.pdf · 1. Definição de estrutura de dados, com a identificação de estruturas lineares e não lineares.

SZWARCFITER, Jayme Luiz; MARKENZON, Lilian Estruturas de dados e seus algoritmos

3ª. ed. – Rio de Janeiro – LTC – 2010

Koffman, Elliot B. ; Wolfgang, Paul A.T. Objetos, Abstração, Estrutura de dados e Projeto usando C++

1ª. ed. – Rio de Janeiro – LTC – 2008

EDELWEISS,N.; GALANTE,R.M. Estrutura de Dados

Volume 18 – Série Livros Didáticos Informática UFRGS

1ª. ed. – RS – Bookman – 2009

Prof. Leticia Winkler 3

Bibliografia Básica

Page 4: Estrutura de Dados - LNCC - Laboratório Nacional de ...rogerio/ed/01 - Funcoes.pdf · 1. Definição de estrutura de dados, com a identificação de estruturas lineares e não lineares.

Unidade 1. Introdução 1.1. Definição e objetivo de estrutura de dados

1.2. Estruturas de dados lineares e não lineares (exemplos

de lista, pilha, fila, árvore e grafo)

1.3. Listas lineares

Prof. Leticia Winkler 4

Conteúdo

Page 5: Estrutura de Dados - LNCC - Laboratório Nacional de ...rogerio/ed/01 - Funcoes.pdf · 1. Definição de estrutura de dados, com a identificação de estruturas lineares e não lineares.

Unidade 2. Funções 2.1. Motivação

2.2. Definição

2.3. Passagem de parâmetros (por valor e por referência)

2.4. Escopo de variáveis (local e global)

2.5. Retorno de valores

Prof. Leticia Winkler 5

Conteúdo

Page 6: Estrutura de Dados - LNCC - Laboratório Nacional de ...rogerio/ed/01 - Funcoes.pdf · 1. Definição de estrutura de dados, com a identificação de estruturas lineares e não lineares.

Unidade 3. Listas Lineares Sequenciais 3.1. Definição e representação

3.2. Operações básicas com listas seqüenciais

3.3. Aplicações com listas sequenciais

3.4. Pilha

3.5. Fila

3.6. Ordenação (BubbleSort, Inserção, Seleção)

3.7. Pesquisa

3.8. Agregado Heterogêneo

Prof. Leticia Winkler 6

Conteúdo

Page 7: Estrutura de Dados - LNCC - Laboratório Nacional de ...rogerio/ed/01 - Funcoes.pdf · 1. Definição de estrutura de dados, com a identificação de estruturas lineares e não lineares.

Unidade 4. Ponteiros e Alocação Dinâmica

4.1. Definição de ponteiro

4.2. Operador de endereço, operador de indireção e

operador seta

4.3. Alocação e desalocação de memória

Prof. Leticia Winkler 7

Conteúdo

Page 8: Estrutura de Dados - LNCC - Laboratório Nacional de ...rogerio/ed/01 - Funcoes.pdf · 1. Definição de estrutura de dados, com a identificação de estruturas lineares e não lineares.

Unidade 5. Listas Lineares Encadeadas

5.1. Motivação

5.2. Listas Simplesmente Encadeadas

5.3. Pilha

5.4. Fila

5.5. Listas Circulares Simplesmente Encadeadas

5.6. Listas Duplamente Encadeadas

Prof. Leticia Winkler 8

Conteúdo

Page 9: Estrutura de Dados - LNCC - Laboratório Nacional de ...rogerio/ed/01 - Funcoes.pdf · 1. Definição de estrutura de dados, com a identificação de estruturas lineares e não lineares.

Composta de três etapas:

Avaliação 1 (AV1)

Avaliação 2 (AV2)

Avaliação 3 (AV3).

A AV1 contemplará o conteúdo da disciplina até a sua realização, incluindo o conteúdo das atividades estruturadas.

A AV2 e a AV3 abrangerão todo o conteúdo da disciplina, incluindo o conteúdo das atividades estruturadas.

Prof. Leticia Winkler 9

Avaliação

Page 10: Estrutura de Dados - LNCC - Laboratório Nacional de ...rogerio/ed/01 - Funcoes.pdf · 1. Definição de estrutura de dados, com a identificação de estruturas lineares e não lineares.

Para aprovação na disciplina o aluno deverá: 1. Atingir resultado igual ou superior a 6,0, calculado a partir da

média aritmética entre os graus das avaliações, sendo

consideradas apenas as duas maiores notas obtidas dentre as

três etapas de avaliação (AV1, AV2 e AV3). A média aritmética

obtida será o grau final do aluno na disciplina.

2. Obter grau igual ou superior a 4,0 em, pelo menos, duas das

três avaliações.

3. Frequentar, no mínimo, 75% das aulas ministradas.

Prof. Leticia Winkler 10

Aprovação

Page 11: Estrutura de Dados - LNCC - Laboratório Nacional de ...rogerio/ed/01 - Funcoes.pdf · 1. Definição de estrutura de dados, com a identificação de estruturas lineares e não lineares.

Função

Prof. Leticia Winkler 11

Page 12: Estrutura de Dados - LNCC - Laboratório Nacional de ...rogerio/ed/01 - Funcoes.pdf · 1. Definição de estrutura de dados, com a identificação de estruturas lineares e não lineares.

Fazer um programa que leia um número inteiro e informe se o número é par ou não é par

Exercício

Page 13: Estrutura de Dados - LNCC - Laboratório Nacional de ...rogerio/ed/01 - Funcoes.pdf · 1. Definição de estrutura de dados, com a identificação de estruturas lineares e não lineares.

#include <iostream>

using namespace std;

int main () {

int num;

cout << ”Numero? ”;

cin >> num;

if (num % 2 == 0)

cout << num << ” - PAR\n”;

else

cout << num << ” - IMPAR\n”;

return 0;

}

Resposta Possível

Page 14: Estrutura de Dados - LNCC - Laboratório Nacional de ...rogerio/ed/01 - Funcoes.pdf · 1. Definição de estrutura de dados, com a identificação de estruturas lineares e não lineares.

E se fossem dois números?

#include <iostream>

using namespace std;

int main () {

int num1, num2;

cout << ”Primeiro numero? ”;

cin >> num1;

cout << ”Segundo numero? ”;

cin >> num2;

if (num1 % 2 == 0)

cout << num1 << ”: PAR\n”;

else

cout << num1 << ”: IMPAR\n”;

if (num2 % 2 == 0)

cout << num2 << ”: PAR\n”;

else

cout << num2 << ”: IMPAR\n”;

return 0;

}

Page 15: Estrutura de Dados - LNCC - Laboratório Nacional de ...rogerio/ed/01 - Funcoes.pdf · 1. Definição de estrutura de dados, com a identificação de estruturas lineares e não lineares.

Solução:

USAR FUNÇÃO

E se fossem três, dez, etc...?

Page 16: Estrutura de Dados - LNCC - Laboratório Nacional de ...rogerio/ed/01 - Funcoes.pdf · 1. Definição de estrutura de dados, com a identificação de estruturas lineares e não lineares.

É uma estrutura que permite ao programador separar

seus programas em blocos.

A idéia é dividir programas grandes e complexos em um

programa formado de pequenos blocos (que são as

funções)

menor complexidade

maior facilidade de manutenção.

Prof. Leticia Winkler 16

Função

Page 17: Estrutura de Dados - LNCC - Laboratório Nacional de ...rogerio/ed/01 - Funcoes.pdf · 1. Definição de estrutura de dados, com a identificação de estruturas lineares e não lineares.

Prof. Leticia Winkler 17

Forma Geral de uma Função

Forma Geral em C/C++:

tipo_de_retorno nome_da_função (declaração_de_parâmetros)

{

corpo_da_função

}

tipo_de_retorno é o tipo de dados que a função retorna.

nome_da_função é o nome pelo qual será possível chamar a função,

para que a mesma seja executada.

declaração_de_parâmetros - permite a passagem de dados para a

função quando é ela chamada.

Page 18: Estrutura de Dados - LNCC - Laboratório Nacional de ...rogerio/ed/01 - Funcoes.pdf · 1. Definição de estrutura de dados, com a identificação de estruturas lineares e não lineares.

Exemplo #1

#include <iostream>

using namespace std;

int main () {

int num;

cout << ”Numero? ”;

cin >> num;

if (num % 2 == 0)

cout << num << ”: PAR\n”;

else

cout << num << ”: IMPAR\n”;

return 0;

}

#include <iostream> using namespace std; void parImpar (int n) { if (n % 2 == 0) cout << n << ”: PAR\n”; else cout << n << ”: IMPAR\n”; } int main () { int num; cout << ”Numero? ”; cin >> num; parImpar(num); return 0; }

Com função

Page 19: Estrutura de Dados - LNCC - Laboratório Nacional de ...rogerio/ed/01 - Funcoes.pdf · 1. Definição de estrutura de dados, com a identificação de estruturas lineares e não lineares.

Exemplo #2 #include <iostream>

using namespace std;

int main () {

int num1, num2;

cout << ”Primeiro numero? ”;

cin >> num1;

cout << ”Segundo numero? ”;

cin >> num2;

if (num1 % 2 == 0)

cout << num1 << ”: PAR\n”;

else

cout << num1 << ”: IMPAR\n”;

if (num2 % 2 == 0)

cout << num2 << ”: PAR\n”;

else

cout << num2 << ”: IMPAR\n”;

return 0;

}

#include <iostream>

using namespace std;

void parImpar (int n) {

if (n % 2 == 0)

cout << n << ”: PAR\n”;

else

cout << n << ”: IMPAR\n”;

}

int main () {

int num1, num2;

cout << ”Primeiro numero? ”;

cin >> num1;

cout << ”Segundo numero? ”;

cin >> num2;

parImpar(num1);

parImpar(num2);

return 0;

}

Com função

Page 20: Estrutura de Dados - LNCC - Laboratório Nacional de ...rogerio/ed/01 - Funcoes.pdf · 1. Definição de estrutura de dados, com a identificação de estruturas lineares e não lineares.

void mensagem () {

cout << ”Alo turma!!!\n”;

}

O void indica que não há valor.

A função mensagem não retorna valor algum para função

chamadora.

Prof. Leticia Winkler 20

Tipo void

Page 21: Estrutura de Dados - LNCC - Laboratório Nacional de ...rogerio/ed/01 - Funcoes.pdf · 1. Definição de estrutura de dados, com a identificação de estruturas lineares e não lineares.

O return numa função tipo void irá fazer com que a função

termine sua execução voltando para a função chamadora.

Prof. Leticia Winkler 21

Função que não retorna valor

void divide (float a, float b) {

if (b == 0) {

cout << ”Erro: divisão por zero\n”;

return;

}

cout << ”Resultado: ” << a/b <<

endl;

}

void mensagem () {

cout << ”Alo turma!!!\n”;

}

Page 22: Estrutura de Dados - LNCC - Laboratório Nacional de ...rogerio/ed/01 - Funcoes.pdf · 1. Definição de estrutura de dados, com a identificação de estruturas lineares e não lineares.

Prof. Leticia Winkler 22

Função que retorna valor

O return abandona a função devolvendo um valor, resultado da

tarefa realizada pela função.

float somaFloat (float x, float y) {

return (x + y);

}

bool ehPar (int n) {

if (n % 2 == 0)

return true;

else

return false;

}

Page 23: Estrutura de Dados - LNCC - Laboratório Nacional de ...rogerio/ed/01 - Funcoes.pdf · 1. Definição de estrutura de dados, com a identificação de estruturas lineares e não lineares.

Uma função que retorna parâmetro pode ser usada dentro de uma expressão:

...

if (ehPar (num))

...

ehPar retorna um valor booleano (verdadeiro o falso)

O if está testando se a resposta (valor retornado) da função é verdadeiro ou falso

Observação

Page 24: Estrutura de Dados - LNCC - Laboratório Nacional de ...rogerio/ed/01 - Funcoes.pdf · 1. Definição de estrutura de dados, com a identificação de estruturas lineares e não lineares.

void mensagem () {

cout << ”Alo turma!!!\n”;

}

Realiza sua tarefa sem necessidade de uma informação de entrada

Ou, poderia ser escrito:

void mensagem (void) {

cout << ”Alo turma!!!\n”;

}

Prof. Leticia Winkler 24

Função que não recebe parâmetro

Page 25: Estrutura de Dados - LNCC - Laboratório Nacional de ...rogerio/ed/01 - Funcoes.pdf · 1. Definição de estrutura de dados, com a identificação de estruturas lineares e não lineares.

void mensagem (int cod) { switch (cod) { case 1: cout << ”Bom Dia, Turma!!!\n”; break; case 2: cout << ”Boa Tarde, Turma!!!\n”; break; case 3: cout << ”Boa Noite, Turma!!!\n”; break; default: cout << ”Alo turma!!!\n”; }

Necessita de uma informação para realizar sua tarefa (neste exemplo).

Prof. Leticia Winkler 25

Função que recebe parâmetro

Page 26: Estrutura de Dados - LNCC - Laboratório Nacional de ...rogerio/ed/01 - Funcoes.pdf · 1. Definição de estrutura de dados, com a identificação de estruturas lineares e não lineares.

Prof. Leticia Winkler 26

Função que recebe mais de um parâmetro

float somaFloat (float x, float y) {

return (x + y);

}

Necessita de duas informações para realizar sua tarefa (no exemplo).

A função chamadora deve informar os valores.

...

somaFloat (7.5, 9)

...

Page 27: Estrutura de Dados - LNCC - Laboratório Nacional de ...rogerio/ed/01 - Funcoes.pdf · 1. Definição de estrutura de dados, com a identificação de estruturas lineares e não lineares.

Chamada de uma função – 2 parâmetros

Prof. Leticia Winkler 27

#include <iostream>

using namespace std;

float somaFloat (float x, float y){

return (x + y);

}

int main (){

float num1, num2, num3;

cout << "Primeiro valor? ";

cin >> num1;

cout << "Segundo valor? ";

cin >> num2;

num3 = somaFloat (num1, num2);

cout << ”Resultado: ” << num3 << endl;

return 0;

}

Resultado da Execução:

supondo que foram digitados os

valores 5 e 6 quando solicitado

Primeiro valor? 5

Segundo valor? 6

Resultado: 11

Page 28: Estrutura de Dados - LNCC - Laboratório Nacional de ...rogerio/ed/01 - Funcoes.pdf · 1. Definição de estrutura de dados, com a identificação de estruturas lineares e não lineares.

Chamada de uma função – 1 parâmetro

Prof. Leticia Winkler 28

Resultado da Execução:

supondo que foi digitado 5

quando solicitado

Número? 5

5 é ímpar

#include <iostream>

using namespace std;

bool ehPar (int n) {

if (n % 2 == 0)

return true;

else

return false;

}

int main (){

float num;

cout << "Número? ";

cin >> num;

if (ehPar(num))

cout << num << ” é par\n”;

else

cout << num << ” é ímpar\n”;

return 0;

}

Page 29: Estrutura de Dados - LNCC - Laboratório Nacional de ...rogerio/ed/01 - Funcoes.pdf · 1. Definição de estrutura de dados, com a identificação de estruturas lineares e não lineares.

Chamada de uma função – sem parâmetro

Prof. Leticia Winkler 29

#include <iostream>

using namespace std;

void mensagem () {

cout << ”Alo turma!!!\n”;

}

int main (){

cout << "Início\n";

mensagem();

cout << ”Fim\n”;

return 0;

}

Resultado da Execução:

Início

Alo turma!!!

Fim

Page 30: Estrutura de Dados - LNCC - Laboratório Nacional de ...rogerio/ed/01 - Funcoes.pdf · 1. Definição de estrutura de dados, com a identificação de estruturas lineares e não lineares.

Usando o valor retornado pela função dentro de uma expressão:

#include <iostream> using namespace std; float somaFloat (float x, float y){

return (x + y);

} int main (){

float num1, num2; cout << "Primeiro valor? "; cin >> num1; cout << "Segundo valor? "; cin >> num2; cout << ”Resultado: ” << somaFloat (num1, num2) << endl; return 0;

}

Prof. Leticia Winkler 30

Observação

Page 31: Estrutura de Dados - LNCC - Laboratório Nacional de ...rogerio/ed/01 - Funcoes.pdf · 1. Definição de estrutura de dados, com a identificação de estruturas lineares e não lineares.

Exemplos

Prof. Leticia Winkler 31

#include <iostream>

using namespace std;

float somaFloat (float x, float y){

return (x + y);

}

int main (){

float num1, num2;

cout << "Primeiro valor? ";

cin >> num1;

cout << "Segundo valor? ";

cin >> num2;

cout << ”Resultado: ” << somaFloat (num1, num2) << endl;

return 0;

}

#include <iostream> using namespace std; void somaFloat (float x, float y){

cout << ”Resultado: ” << (x + y);

} int main (){

float num1, num2; cout << "Primeiro valor? "; cin >> num1; cout << "Segundo valor? "; cin >> num2; somaFloat (num1, num2); return 0;

}

Page 32: Estrutura de Dados - LNCC - Laboratório Nacional de ...rogerio/ed/01 - Funcoes.pdf · 1. Definição de estrutura de dados, com a identificação de estruturas lineares e não lineares.

Escopo de uma Variável Variável Local

Prof. Leticia Winkler 32

#include <iostream> using namespace std; bool ehPar (int n) {

if (n % 2 == 0) return true; else return false;

} int main () {

int num; cout << "Numero? "; cin >> num; if (ehPar(num)) cout << "\nO numero e par.\n"; else cout << "\nO numero e impar.\n"; return 0;

}

A variável num é local a função main;

A variável n está sendo declarada dentro da função ehPar – local a função ehPar

num não é vista dentro da função ehPar;

n não é vista dentro da main;

O valor de num é atribuido a variável n – passagem de parâmetros por valor.

Page 33: Estrutura de Dados - LNCC - Laboratório Nacional de ...rogerio/ed/01 - Funcoes.pdf · 1. Definição de estrutura de dados, com a identificação de estruturas lineares e não lineares.

Escopo de uma Variável Variável Global

Prof. Leticia Winkler 33

#include <iostream>

using namespace std;

int x;

void func1() {

cout << ”X – func1: ” << x << endl;

}

void func2() {

cout << ”X – func2: ” << x << endl;

x = 20;

cout << ”X – func2: ” << x << endl;

}

int main () {

x = 10;

cout << ”X – main: ” << x << endl;

func1();

cout << ”X – após a chamada de func1: ” << x << endl;

func2();

cout << ”X – após a chamada de func2: ” << x << endl;

}

X é uma variável global É vista por todas as funções dentro do

programa

Pode ser manipulada e alterada por qualquer função

Resultado da Execução: X – main: 10

X – func1: 10

X – após a chamada de func1: 10

X – func2: 10

X – func2: 20

X – após a chamada de func2: 10

Page 34: Estrutura de Dados - LNCC - Laboratório Nacional de ...rogerio/ed/01 - Funcoes.pdf · 1. Definição de estrutura de dados, com a identificação de estruturas lineares e não lineares.

Escopo de uma Variável

Prof. Leticia Winkler 34

Resultado: 1 - main => 10

1 - func => 10

2 - func => 20

2 - main => 10

Na passagem de parâmetros por valor, a variável passada

como parâmetro não pode ser alterada na função chamada #include <iostream>

using namespace std;

void func(int x) {

cout << "1 - func => " << x << endl;

x = 20;

cout << "2 - func => " << x << endl;

}

int main () {

int n = 10;

cout << "1 - main => " << n << endl;

func(n);

cout << "2 - main => " << n << endl;

return 0;

}

Page 35: Estrutura de Dados - LNCC - Laboratório Nacional de ...rogerio/ed/01 - Funcoes.pdf · 1. Definição de estrutura de dados, com a identificação de estruturas lineares e não lineares.

É uma forma alternativa de acessar uma variável;

Uma referência é como se fosse um apelido dado a uma variável

Declaração:

tipo var, &refVar = var;

Exemplo:

int jose, &ze = jose;

Para indicar que é uma referência, utiliza-se o operador &

Toda referência deve ser inicializada quando declarada

Pode-se manipular a variável através de sua referência

Tudo que se faz com a variável pode ser feito através de sua referência.

Prof. Leticia Winkler 35

Referência

Page 36: Estrutura de Dados - LNCC - Laboratório Nacional de ...rogerio/ed/01 - Funcoes.pdf · 1. Definição de estrutura de dados, com a identificação de estruturas lineares e não lineares.

Exemplo de Referência

Prof. Leticia Winkler 36

#include <iostream>

using namespace std;

int main () {

int jose = 10, &ze = jose;

cout << "Jose => " << jose << endl;

cout << "Ze => " << ze << endl;

ze = 5;

cout << "Jose => " << jose << endl;

cout << "Ze => " << ze << endl;

return 0;

}

Resultado:

Jose => 10

Ze => 10

Jose => 5

Ze => 5

Page 37: Estrutura de Dados - LNCC - Laboratório Nacional de ...rogerio/ed/01 - Funcoes.pdf · 1. Definição de estrutura de dados, com a identificação de estruturas lineares e não lineares.

Passagem de parâmetros por referência

Prof. Leticia Winkler 37

Exemplo: #include <iostream>

using namespace std;

void func(int &x) {

cout << "1 - func => " << x << endl;

x = 20;

cout << "2 - func => " << x << endl;

}

int main () {

int n = 10;

cout << "1 - main => " << n << endl;

func(n);

cout << "2 - main => " << n << endl;

return 0;

}

Resultado: 1 - main => 10

1 - func => 10

2 - func => 20

2 - main => 20

O uso de referência é interessante na passagem de parâmetros

Page 38: Estrutura de Dados - LNCC - Laboratório Nacional de ...rogerio/ed/01 - Funcoes.pdf · 1. Definição de estrutura de dados, com a identificação de estruturas lineares e não lineares.

Calcular informações sobre um circulo. Crie duas

funções:

Uma para calcular a área do círculo, que recebe como

parâmetro de entrada o raio e retorna a área (S = πR2)

A segunda função deve calcular o perímetro do círculo,

que recebe como parâmetro de entrada o raio e retorna o

perímetro (P = 2πR).

Crie a função main, para testar seu programa, que utiliza as

funções acima e apresenta o resultado do cálculo do

perímetro e da área.

Prof. Leticia Winkler 38

Exercício #1

Page 39: Estrutura de Dados - LNCC - Laboratório Nacional de ...rogerio/ed/01 - Funcoes.pdf · 1. Definição de estrutura de dados, com a identificação de estruturas lineares e não lineares.

#include <iostream> #include <cmath> using namespace std; float calcPerCirc (float r) { return (2 * M_PI * r); } float calcAreaCirc (float r) { return (M_PI * pow(r,2)); } int main() { float raio; cout << "Raio? "; cin >> raio; cout << "Perimetro do circulo de raio " << raio << ": " << calcPerCirc(raio) << endl; cout << "Area do circulo de raio " << raio << ": " << calcAreaCirc(raio) << endl; return 0; }

Prof. Leticia Winkler 39

Resposta do Exercício #1

Page 40: Estrutura de Dados - LNCC - Laboratório Nacional de ...rogerio/ed/01 - Funcoes.pdf · 1. Definição de estrutura de dados, com a identificação de estruturas lineares e não lineares.

Converter uma temperatura de graus Celsius para graus Farenheit e vice-versa. Crie duas funções: A primeira recebe como parâmetro de entrada a temperatura em

°C e retorna o resultado em °F.

A segunda recebe como parâmetro de entrada a temperatura em °F e retorna o resultado em °C.

Crie a função main, para testar seu programa, que:

A) lê um menu com as opções:

1. Converte de °C para °F

2. Converte de °F para °C

B) lê a temperatura, e

C) utiliza uma das funções acima para apresentar a temperatura conforme solicitado.

Prof. Leticia Winkler 40

Exercício #2

𝐶

5=

𝐹 − 32

9

Page 41: Estrutura de Dados - LNCC - Laboratório Nacional de ...rogerio/ed/01 - Funcoes.pdf · 1. Definição de estrutura de dados, com a identificação de estruturas lineares e não lineares.

Resposta do Exercício #2

Prof. Leticia Winkler 41

#include <iostream>

#include <cmath>

using namespace std;

float celsiusParaFarenheit (float c) {

return (9 * c / 5 + 32);

}

float farenheitParaCelsius (float f) {

return (5 * (f - 32) / 9);

}

int main() {

float temp;

int op;

do {

cout << "\n\n***Conversor de

Temperatura ***\n\n";

cout << "1 - Celsius para Farenheit\n";

cout << "2 - Farenheit para Celsius\n";

cout << "3 - Sair\n";

cout << "\nOpcao? ";

cin >> op;

switch (op) {

case 1:

cout << "Temperatura em C? ";

cin >> temp;

cout<< celsiusParaFarenheit(temp) << " o.F " << endl;

break;

case 2:

cout << "Temperatura em F? ";

cin >> temp;

cout<< farenheitParaCelsius(temp) << " o.C " << endl;

break;

case 3:

cout << "\nFIM!!!!\n\n";

exit(0);

default:

cout << "opcao invalida\n\n";

}

} while (op !=3);

return 0;

}