Вы находитесь на странице: 1из 30

ECT2303 – Linguagem de Programação

Aula 06 þ Funções I

Einstein Santos

UFRN

17 de agosto de 2018

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 17 de agosto de 2018 1 / 30


Sumário

1 Função

2 Estrutura de uma função

3 O comando return

4 Chamada de função

5 Exemplos

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 17 de agosto de 2018 2 / 30


Plano

1 Função

2 Estrutura de uma função

3 O comando return

4 Chamada de função

5 Exemplos

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 17 de agosto de 2018 3 / 30


Função
Perguntas preliminares. . .

Sabemos o que são funções e como funcionam?


Talvez não. . .
Já utilizamos funções antes?
Certamente sim!
Qual?!
A função main!!!

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 17 de agosto de 2018 4 / 30


Função
Definição

É um bloco de instruções evocável construído para realizar uma te-


refa específica e que pode ou não receber e/ou retornar dados ao ser
processado.

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 17 de agosto de 2018 5 / 30


Função
Por que funções? 1

Para permitir o reaproveitamento de código já construído (por você ou


por outros programadores);
Para evitar que um trecho de código que seja repetido várias vezes
dentro de um mesmo programa;
Para permitir a alteração de um trecho de código de uma forma mais
rápida. Com o uso de uma função é preciso alterar apenas dentro da
função que se deseja;

1 https://www.inf.pucrs.br/~pinho/LaproI/Funcoes/AulaDeFuncoes.htm

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 17 de agosto de 2018 6 / 30


Função
Por que funções?

Para que os blocos do programa não fiquem grandes demais e, por


conseqüência, mais difíceis de entender;
Para facilitar a leitura do programa-fonte de uma forma mais fácil;
Para separar o programa em partes (blocos) que possam ser logica-
mente compreendidos de forma isolada.

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 17 de agosto de 2018 7 / 30


Plano

1 Função

2 Estrutura de uma função

3 O comando return

4 Chamada de função

5 Exemplos

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 17 de agosto de 2018 8 / 30


Estrutura de uma função
Forma geral

TIPO <NOME_DA_FUNÇÃO>( <DECLARAÇÃO_DE_PARÂMETROS> )


{
INSTRUÇÃO_1;
INSTRUÇÃO_2;
.
.
.
INSTRUÇÃO_n;
}

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 17 de agosto de 2018 9 / 30


Estrutura de uma função
Observação

Obs.:
* O tipo de uma função é definido pelo valor que ela retorna via o comando
return, e não pelo tipo de argumentos que ela recebe.
* Se uma função não utiliza o comando return, ou o utilizada sem valor
associado, essa função é do tipo void, i.e., função que retorna nada.
* Uma função sem tipo especificado é, por padrão, uma função inteira.

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 17 de agosto de 2018 10 / 30


Estrutura de uma função
Declaração de parâmetros

TIPO <NOME_DA_FUNÇÃO>( TIPO VAR_1, TIPO VAR_2, ..., TIPO VAR_n )


{
INSTRUÇÃO_1;
INSTRUÇÃO_2;
.
.
.
INSTRUÇÃO_n;
}

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 17 de agosto de 2018 11 / 30


Estrutura de uma função
Declaração de parâmetros

1 float volume ( float x , float y , float z ) // Certo !


2
3 float volume ( float x , y , z ) // Errado !
4
5 float volumeTotal ( int quant , float x , float y , float z )
// Certo !
6
7 float volumeTotal ( int quant , float x , y , z ) // Errado !
8
9 void menu ( void ) // Certo !
10
11 void menu () // Certo !
12
13 menu () // Certo !

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 17 de agosto de 2018 12 / 30


Plano

1 Função

2 Estrutura de uma função

3 O comando return

4 Chamada de função

5 Exemplos

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 17 de agosto de 2018 13 / 30


O comando return
Funcionamento

Esse comando termina a execução da função e retorna o controle para


ponto de chamada da função.
Caso exista uma expressão após a palavra return, o valor da expres-
são será retornado à função chamadora.
O comando return pode retornar nada ou somente um único valor.

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 17 de agosto de 2018 14 / 30


O comando return
Exemplos de uso

1 return ;
2

3 return 1;
4

5 return (1) ;
6

7 return area ;
8

9 return pi * r * r ;
10

11 return 3* pow (x ,2) + 4* x - 1.5;


12

13 return ( a * x * x + b * x + c ) ;

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 17 de agosto de 2018 15 / 30


Plano

1 Função

2 Estrutura de uma função

3 O comando return

4 Chamada de função

5 Exemplos

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 17 de agosto de 2018 16 / 30


Chamanda de função
Informações importantes

A chamada a uma função é realizada utilizando o seu nome e os ar-


gumentos a serem enviados para ela, se existirem, entre parêntesis e
separados por vírgula.
Caso a função retorne um valor, ele deverá ser usado imediatamente
ou armazenado em uma variável.
Na chamada a uma função, os tipos, números e ordem dos argumen-
tos devem respeitar a definição dos parâmetros da função a ser cha-
mada.

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 17 de agosto de 2018 17 / 30


Chamanda de função
Exemplos de aplicação

1 v = volume (x ,y , z ) ;
2

3 cout << volume (x ,y , z ) ;


4

5 cout << area (14.67 ,56.89) ;


6

7 comb = fat ( n ) / ( fat ( r ) * fat ( n - r ) ) ;


8

9 valor = calculo () ;
10

11 menu () ;
12

13 cout << medidas ( volume (x ,y , z ) , area ( l1 , l2 ) ) ;


14

15 return (4.5* pow (k ,5) - 7.3* sqrt ( w ) + 5.8) ;

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 17 de agosto de 2018 18 / 30


Plano

1 Função

2 Estrutura de uma função

3 O comando return

4 Chamada de função

5 Exemplos

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 17 de agosto de 2018 19 / 30


Exemplos
Exemplo de modularização de código 1 – Enunciado

. Escreva um programa em C++ que utilize uma função que verifique se


um determinado número lido é primo.

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 17 de agosto de 2018 20 / 30


Exemplos
Exemplo de modularização de código 1 – Versão sem função

1 # include < iostream >


2 using n a m e s p a c e std ;
3
4 int main ()
5 {
6 int num ;
7 bool valor = true ;
8
9 do {
10 cout <<" Digite um número : " ;
11 cin >> num ;
12 } while ( num <=1) ;
13
14 for ( int i =2; i < num ; i ++) {
15 if (( num % i ) == 0) {
16 valor = false ;
17 break ;
18 }
19 }
20
21 if ( valor )
22 cout <<" O número é primo ! " << endl ;
23 else
24 cout <<" O número não é primo ! " << endl ;
25
26 return 0;
27 }
Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 17 de agosto de 2018 21 / 30
Exemplos
Exemplo de modularização de código 1 – Versão com função

1 int main ()
2 {
3 int num ;
1 # include < iostream > 4
2 5 do {
3 using n a m e s p a c e std ; 6 cout <<" Digite um número : " ;
4 7 cin >> num ;
5 bool verifica ( int n ) 8 } while ( num <=1) ;
6 { 9
7 for ( int i =2; i < n ; i ++) 10 if ( verifica ( num ) )
8 if (( n % i ) == 0) 11 cout <<" O número é primo ! " << endl
9 return false ; ;
10 12 else
11 return true ; 13 cout <<" O número não é primo ! " <<
12 } endl ;
14
15 return 0;
16 }

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 17 de agosto de 2018 22 / 30


Exemplos
Exemplo de modularização de código 2 – Enunciado

. Escreva um programa em C++ que utilize uma função para converter


um caractere alfabético minúsculo em maiúsculo e vice-versa.

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 17 de agosto de 2018 23 / 30


Exemplos
Exemplo de modularização de código 2 – Versão sem função

1 # include < iostream >


2
3 using n a m e s p a c e std ;
4
5 int main ()
6 {
7 char c , letra ;
8
9 cout <<" Digite um caractere : " ;
10 cin >>c ;
11
12 if (( c >= ’a ’) &&( c <= ’z ’) ) {
13 letra = c - 32;
14 cout <<" Caractere convertido : " << letra << endl ;
15 } else if (( c >= ’A ’) &&( c <= ’Z ’) ) {
16 letra = c + 32;
17 cout <<" Caractere convertido : " << letra << endl ;
18 } else
19 cout <<" Não é uma letra ! " << endl ;
20
21 return 0;
22 }

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 17 de agosto de 2018 24 / 30


Exemplos
Exemplo de modularização de código 2 – Versão com função

1 # include < iostream >


2 using n a m e s p a c e std ;
3
4 char converte ( char carac )
5 {
6 char letra ;
1 int main ()
7
2 {
8 if (( carac >= ’a ’) &&( carac <=
3 char c ;
’z ’) )
4
9 letra = carac - 32;
5 cout <<" Digite um caractere : " ;
10 else
6 cin >>c ;
11 letra = carac + 32;
7
12
8 if ( ve rificaSe Alfa ( c ) )
13 return letra ;
9 cout <<" Caractere convertido : "
14 }
<< converte ( c ) << endl ;
15
10 else
16 bool verificaSeAlfa ( char carac
11 cout <<" Não é uma letra ! " << endl ;
)
12
17 {
13 return 0;
18 if (( carac >= ’a ’ && carac <=
14 }
’z ’) ||( carac >= ’A ’ &&
carac <= ’Z ’) )
19 return true ;
20
21 return false ;
22 }

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 17 de agosto de 2018 25 / 30


Exemplos
Exemplo de modularização de código 3 – Enunciado

. Sabendo que a condição de existência de um triângulo formado pelos


lados a, b e c é:
|b − c| < a < b + c
|a − c| < b < a + c
|a − b| < c < a + b
Faça um programa em C++ que leia três valores inteiros e que informe
se formam ou não um triângulo. Em caso afirmativo, a área do triân-
gulo formado deve ser calculada e exibida na tela.

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 17 de agosto de 2018 26 / 30


Exemplos
Exemplo de modularização de código 3 – Versão sem função

1 # include < iostream >


2 # include < cmath >
3
4 using n a m e s p a c e std ;
5
6 int main ()
7 {
8 int a , b , c ;
9 int t1 , t2 , t3 , t4 , t5 , t6 ;
10
11 cout <<" Informe a , b e c : " ;
12 cin >>a > >b > > c ;
13
14 t1 = abs ( b - c ) ; t2 = b + c ;
15 t3 = abs ( a - c ) ; t4 = a + c ;
16 t5 = abs ( a - b ) ; t6 = a + b ;
17
18 if (( a > t1 && a < t2 ) &&( b > t3 && b < t4 ) &&(( c > t5 && c < t6 ) ) ) {
19 cout <<" Forma um triângulo ! " << endl ;
20 float s = ( a + b + c ) /2.0;
21 cout <<" Área : " << sqrt ( s *( s - a ) *( s - b ) *( s - c ) ) << endl ;
22 } else
23 cout <<" Não forma um triângulo ! " << endl ;
24
25 return 0;
26 }

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 17 de agosto de 2018 27 / 30


Exemplos
Exemplo de modularização de código 3 – Versão com função

1 # include < iostream >


2 # include < cmath >
3
4 using n a m e s p a c e std ;
5
6 bool v e r i f i c a S e T r i a n g u l o ( int a , int b , int c ) 1 int main ()
7 { 2 {
8 int t1 , t2 , t3 , t4 , t5 , t6 ; 3 int a , b , c ;
9 4
10 t1 = abs ( b - c ) ; t2 = b + c ; 5 cout <<" Informe a , b e c : " ;
11 t3 = abs ( a - c ) ; t4 = a + c ; 6 cin >>a > >b > > c ;
12 t5 = abs ( a - b ) ; t6 = a + b ; 7
13 8
14 if (( a > t1 && a < t2 ) &&( b > t3 && b < t4 ) 9 if ( v e r i f i c a S e T r i a n g u l o (a ,b , c ) ) {
&&(( c > t5 && c < t6 ) ) ) 10 cout <<" Forma um triângulo ! " << endl ;
15 return true ; 11 cout <<" Área : " << calculaArea (a ,b , c ) << endl ;
16 12 } else
17 return false ; 13 cout <<" Não forma um triângulo ! " << endl ;
18 } 14
19 15 return 0;
20 float calculaArea ( int a , int b , int c ) 16 }
21 {
22 float sp = ( a + b + c ) /2.0;
23
24 return sqrt ( sp *( sp - a ) *( sp - b ) *( sp - c ) ) ;
25 }

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 17 de agosto de 2018 28 / 30


Atividade Extraclasse
Pesquisa

- Pesquise a biblioteca cctype / ctype.h e verifique quais funções pode-


riam ser utilizadas nas implementações desta aula de modo a otimizá-
las.

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 17 de agosto de 2018 29 / 30


Funções I

Fim da aula 06

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 17 de agosto de 2018 30 / 30

Вам также может понравиться