Você está na página 1de 19

Faculdade Anhanguera

Engenharias Elétrica e Civil


Algoritmos e Lógicas de Programação
Aula
Funções em C com auxílio da IDE do Code Blocks
Versão 0.2
Prof. WAGNER E LVIO
21 de maio de 2023

Objetivo: Uso de funções na linguagem C com o auxílio da IDE do Code Blocks.

1 Funções em C
• 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;
• 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 logicamente compreendidos de forma
isolada.

1
2 Uso do comando #define em funções-Este
• Será mostrado uma sequencia de programas em C pra dmosntrar o uso e a importância de uma
função em C.
• Abaixo a lista das tarefas com funções em C:

1) Tarefa-01: - programa que usa o caracter # para gerar uma imagem.


2) Tarefa-02: - Uso do comando #define em um programa em C.

2.1 Uso de um programa em C para gerar caracteres


– Neste exemplo, será utilizado o caracter # para gerar uma imagem.
– A resolução da tarefa 01 está mostrado no código listado em 1.
1 # include < stdio .h >
2 # include < stdlib .h >
3

4 // Programa -- funcao -1001 - 01/05/2022


5

6 int main ()
7 {
8 printf ( " % c % c % c % c % c % c % c% c \ n " , '# ' , '# ' , '# ' , '# ' , '# ' , '# ' ,'# ' , '# ') ;
9 printf ( " % c % c % c % c % c % c % c% c \ n " , '# ' , ' ' , '# ' , '# ' , '# ' , '# ' , ' ' , '# ') ;
10 printf ( " % c % c % c % c % c % c % c% c \ n " , '# ' , ' ' , '# ' , '# ' , '# ' , '# ' , ' ' , '# ') ;
11 printf ( " % c % c % c % c % c % c % c% c \ n " , '# ' , '# ' , '# ' , '# ' , '# ' , '# ' ,'# ' , '# ') ;
12 printf ( " \ n " ) ;
13 }
Listing 1: Codigo da funcao para gerar uma imagem com caracteres
2.2 Uso do comando #define em um programa em C
– No exemplo feito na subseção 2.1, foram utilizados os caracteres # e espaço vazio várias
vezes para gerar a imagem.
– Caso fosse necessário fazer uma outra imagem, os os caracteres # e espaço vazio deveriam
ser utilizados conforme a nova imagem.
– Para evitar esse problema, utiliza-se o comando #define.
– Este comando é utilizado para definir constantes ou macros.
– Nesse caso, utilizaremos o define para declarar uma constante.
– Assim, se quisermos alterar o caractere, alteraríamos apenas no local da definição.
– O #define tem a seguinte sintaxe mostrada em 2.
1 # define < identificador > < valor >
Listing 2: sintaxe do comando define

– E toda vez que o o identificador for utulizado no programa (código em C), ele será substituido
pelo valor.
– Neste exemplo, será feito o uso do #define para identificar dois valores e que são:
a. #define Q ’#’
b. #define V ’ ’
– A resolução da tarefa 02 está mostrado no código listado em 3.
1 # include < stdio .h >
2 # include < stdlib .h >
3

4 # define Q '# '


5 # define V ' '
6

7 // Programa -- funcao -1002 - 01/05/2022


8 int main ()
9 {
10 printf ( " % c % c % c % c % c % c % c% c \ n " , Q ,Q ,Q ,Q ,Q ,Q ,Q , Q ) ;
11 printf ( " % c % c % c % c % c % c % c% c \ n " , Q ,V ,Q ,Q ,Q ,Q ,V , Q ) ;
12 printf ( " % c % c % c % c % c % c % c% c \ n " , Q ,V ,Q ,Q ,Q ,Q ,V , Q ) ;
13 printf ( " % c % c % c % c % c % c % c% c \ n " , Q ,Q ,Q ,Q ,Q ,Q ,Q , Q ) ;
14 printf ( " \ n " ) ;
15 return 0;
16 }
Listing 3: Codigo da funcao com o uso do #define
– Esse código gerou uma imagem conforme mostrado na Figura 1

Figura 1: Imagem gerada pelo código

– Agora que foi gerado a primeira imagem, com o código listado em 3, pode-se gerar uma segunda
imagem, apenas copiando parte do código que inicia na linha 10 até a linha 14.
– Entretanto, isso além de ser trabalhoso, não estaria aproveitando a facilidade do reaproveitar o
código que pode ser feito com o uso de uma função.
– Uma função possui a seguinte sintaxe, conforme mostrado em 4.
1

2 < tipo de retorno > < identificador > ([ lista de paramentros ])


3 {
4

5 [ bloco de comandos ]
6

7 }
Listing 4: sintaxe de uma função

Onde :
1) tipo de retorno: Uma função pode retornar algum valor. Por exemplo, uma função poderia
calcular o valor da raiz quadrada de um número float e retornar esse resultado para você.
Assim, esse tipo de retorno também seria float. Também é possível existir uma função
que não retorna nenhum resultado, que apenas executa uma determinada tarefa, mas não
retorna nada.
2) identificador: É o nome que se dá para a função. Segue as mesmas regras de nomes de
variáveis. Caso se construa uma função para calcular a raiz quadrada de um número, essa
função poderia se chamar calculo_da_raiz_quadrada
3) lista de parametros: Uma função pode precisar receber valores para executar a sua tarefa.
No mesmo exemplo da raiz quadrada, você precisa indicar qual é o número que deseja
extrair a raiz. No exemplo da raiz quadrada, nossa função poderia ser declarada da seguinte
forma:
1 foat ratiz quadrata ( float x )
Listing 5: sintaxe do comando define

Isso significa que a função retorna um ficat, o identificador é raiz_quadrada, da e ela precisa
receber um valor float que será chamado de x no corpo função (bloco de comandos).
4) Bloco de comandos: Muitas vezes chamado de corpo da função, contém um conjunto de
comandos responsáveis por implementar a tarefa da qual a função se propõe.
2.3 Uso de uma função em um programa em C
– Neste exemplo, será feito o uso da função para gerar a imagem mostrada na Figura 1.
– O nome dessa função será chamada de: imagem
– E com o uso dessa função poderemos utiliza-la quantas vezes forem necessárias, sem fazer
muitas cópias do código que gera a imagem da Figura 1.
– A resolução desta tarefa com o uso da função imagem está mostrado no código listado em 6.
1 # include < stdio .h >
2 # include < stdlib .h >
3

4 # define Q '# '


5 # define V ' '
6

7 // Programa -- funcao -1003 - 01/05/2022


8

9 // Inicio da funcao imagem


10 void imagem ()
11 {
12 printf ( " % c % c % c % c % c % c % c% c \ n " , Q ,Q ,Q ,Q ,Q ,Q ,Q , Q ) ;
13 printf ( " % c % c % c % c % c % c % c% c \ n " , Q ,V ,Q ,Q ,Q ,Q ,V , Q ) ;
14 printf ( " % c % c % c % c % c % c % c% c \ n " , Q ,V ,Q ,Q ,Q ,Q ,V , Q ) ;
15 printf ( " % c % c % c % c % c % c % c% c \ n " , Q ,Q ,Q ,Q ,Q ,Q ,Q , Q ) ;
16 printf ( " \ n " ) ;
17 }
18 // Uso do metodo main e que faz o uso da funcao imagem
19 int main ()
20 {
21 imagem () ; // Fazendo o uso da funcao imagem apenas uma vez ;
22 return 0;
23 }
Listing 6: Uso da função imagem

– A função que gerou a imagem, está mostrada na Figura 2

Figura 2: Imagem gerada pela função imagem

– Na subseção 2.4, será mostrado o código para gerar duas imagens, conforme mostrada na
Figura 2.
2.4 Gerar duas imagens com o uso da função imagem
– Neste exemplo, será feito o uso da função para gerar a imagem mostrada na Figura 1.
– Será utilizado a função : imagem
– A resolução desta tarefa com o uso da função imagem duas vezes, está mostrado no código
listado em 7.
1 # include < stdio .h >
2 # include < stdlib .h >
3

4 # define Q '# '


5 # define V ' '
6

7 // Programa -- funcao -1004 - 01/05/2022


8

9 // Inicio da funcao imagem


10 void imagem ()
11 {
12 printf ( " % c % c % c % c % c % c % c% c \ n " , Q ,Q ,Q ,Q ,Q ,Q ,Q , Q ) ;
13 printf ( " % c % c % c % c % c % c % c% c \ n " , Q ,V ,Q ,Q ,Q ,Q ,V , Q ) ;
14 printf ( " % c % c % c % c % c % c % c% c \ n " , Q ,V ,Q ,Q ,Q ,Q ,V , Q ) ;
15 printf ( " % c % c % c % c % c % c % c% c \ n " , Q ,Q ,Q ,Q ,Q ,Q ,Q , Q ) ;
16 printf ( " \ n " ) ;
17 }
18 // Uso do metodo main e que faz o uso da funcao imagem
19 int main ()
20 {
21 imagem () ; // Fazendo o uso da funcao imagem pela primeira vez ;
22 imagem () ; // Fazendo o uso da funcao imagem pela segunda vez ;
23 return 0;
24 }
Listing 7: Uso da função imagem

– As imagens geradas pelo uso código neste exemplo, está mostrado na Figura 3

Figura 3: Imagem gerada pela função imagem


3 Resolução da lista dos exercícios de funções em C
• Abaixo a lista das tarefas com funções em C:

1) Tarefa-01: - Função multiplica dois números.


2) Tarefa-02: - Função que calcula a área de um círculo.
3) Tarefa-03: - Função que Converte a Temperatura de Celsius para Fahrenheit
4) Tarefa-04: - Função que calcula o maior de números inteiros.

3.1 Função multiplica dois números


– Exemplo 01 da função.
– A resolução da tarefa 01 está mostrado no código listado em 8.
1 # include < stdio .h >
2 # include < stdlib .h >
3

4 // Programa - funcaoMultiplicaDoisNumeros - - - -1011


5 // Duplicar uma linha : Ctrl + D
6 int multiplica ( int numero1 , int numero2 )
7 {
8 int res ;
9 res = numero1 * numero2 ;
10 return res ;
11 }
12

13 int main ()
14 {
15 int n1 , n2 , resultado ;
16 printf ( " Digite o valor do numero 1:\ n " ) ;
17 scanf ( " % d " , & n1 ) ;
18 printf ( " Digite o valor do numero 2:\ n " ) ;
19 scanf ( " % d " , & n2 ) ;
20 resultado = multiplica ( n1 , n2 ); // chama a funcao multiplica
21

22 printf ( " Resultado = % d \ n " , resultado );


23 return 0;
24 }
Listing 8: Codigo da funcao multiplica dois numeros inteiros
3.2 Função que calcula a área de um círculo
– Exemplo 02.
– A resolução da tarefa 02 está mostrado no código listado em 9.
1 # include < stdio .h >
2 # include < stdlib .h >
3 # include < math .h >
4

5 // # define PI =3.14
6 // Programa funcaoCalcularAreaDoCirculo - - - -1012
7

8 float area_circulo ( float raio1 )


9 {
10

11 return M_PI * pow ( raio1 ,2) ; // Equiavelente a ( raio **2)


12 }
13

14 int main ()
15 {
16 float raio , area ;
17 printf ( " Entre com o valor do raio \ n " ) ;
18 scanf ( " % f " , & raio ) ;
19 area = area_circulo ( raio ) ;
20 printf ( " A area eh igual a : %.2 f \ n" , area ) ;
21 return 0;
22 }
Listing 9: Codigo da funcao que calcula a área de um círculo
3.3 Função que Converte a Temperatura de Celsius para Fahrenheit
– Exemplo 03.
– A resolução da tarefa 03 está mostrado no código listado em 10.
1 # include < stdio .h >
2 # include < stdlib .h >
3

4 // funcaoConverterTempCelsiusFahrenheit - - - -1013
5

7 float celsius_to_fahrenheit ( float celsius )


8 {
9 return 1.8 * celsius + 32;
10 }
11 int main ()
12 {
13 float celsius1 , fah ;
14 printf ( " Informe a temperatura em graus Celsius !\ n " ) ;
15 scanf ( " % f " , & celsius1 ) ;
16 fah = celsius_to_fahrenheit ( celsius1 ) ;
17 printf ( " A temperatura em graus Fahrenheit eh : %.2 f \ n" , fah ) ;
18 return 0;
19 }
Listing 10: Codigo da funcao que Converte a Temperatura de Celsius para Fahrenheit
3.4 Função que calcula o maior de dois números inteiros
– Exemplo 04.
– A resolução da tarefa 04 está mostrado no código listado em 11.
1 # include < stdio .h >
2 # include < stdlib .h >
3

4 // funcaoMaiorDeDoisNumerosInteiros - - -1014
5

6 int maior2 ( int a , int b )


7 {
8 if ( a > b )
9 {
10 return a ;
11 }
12 else
13 {
14 return b ;
15 }
16 }
17

18 int main ()
19 {
20 int numero1 , numero2 , maior ;
21

22 printf ( " Informe o valor do numero 1: " ) ;


23 scanf ( " % d " , & numero1 ) ;
24

25 printf ( " Informe o valor do numero 2: " ) ;


26 scanf ( " % d " , & numero2 ) ;
27 // Funcao maior de dois numeros
28 maior = maior2 ( numero1 , numero2 ) ;
29

30

31 printf ( " O maior numero eh : % d \ n \ n " , maior ) ;


32 printf ( " Hello world !\ n " ) ;
33 return 0;
34 }
Listing 11: Codigo da funcao que calcula o maior de dois números inteiros
4 Operadores em C
• Abaixo a lista das tarefas:

1) Tarefa-01: - Operadores de atribuição.


2) Tarefa-02: - Operadores aritméticos.
3) Tarefa-03: - Operações de Incremento e Decremento
4) Tarefa-04: - Operadores relacionais.

4.1 Operadores de atribuição


– Operadores de atribuição.
– A resolução da tarefa 01 está mostrado no código listado em 14.
1 # include < stdio .h >
2 # include < stdlib .h >
3

4 // Operadores de atribuicao
5 //
6

7 int main ( void )


8 {
9

10 // Declaracao das variaveis


11

12 int numero1 = 10;


13 int numero2 = 20;
14 int numero3 = numero1 + numero2 ;
15

16

17 printf ( " \ n ***** Valores das variaveis *****\ n " ) ;


18 printf ( " % d \ n " ,+ numero1 ) ;
19 printf ( " % d \ n " ,+ numero2 ) ;
20 printf ( " % d \ n " ,+ numero3 ) ;
21

22 printf ( " \ n ***** Operadores de atribuicao *****\ n " ) ;


23 printf ( " % d \ n " ,+ numero1 ) ;
24 printf ( " % d \ n " ,+ numero2 ) ;
25 printf ( " % d \ n " ,+ numero3 ) ;
26

27

28 return 0;
29

30

31 }
Listing 12: Operadores de atribuição
4.2 Operadores Aritméticos
– Operadores Aritméticos
– A resolução da tarefa 01 está mostrado no código listado em 14.
1 # include < stdio .h >
2 # include < stdlib .h >
3

4 // Operadores Aritmeticos
5 // @Wagner Elvio
6

7 int main ( void )


8 {
9 // Declaracao das variaveis
10 int num1 = 10;
11 int num2 = 20;
12

13 float num11 = 10;


14 float num12 = 20;
15

16 int num3 = num1 + num2 ;


17 int num4 = num1 - num2 ;
18 int num5 = num1 * num2 ;
19 int num6 = num1 / num2 ;
20 float num7 = num11 / num12 ;
21 printf ( " \ n ***** Valores das variaveis *****\ n " ) ;
22 printf ( " % d \ n " ,+ num1 ) ;
23 printf ( " % d \ n " ,+ num2 ) ;
24

25 printf ( " \ n ***** Operadores Aritmeticos *****\ n " ) ;


26 printf ( " % d \ n " ,+ num3 ) ;
27 printf ( " % d \ n " ,+ num4 ) ;
28 printf ( " % d \ n " ,+ num5 ) ;
29 printf ( " % d \ n " ,+ num6 ) ;
30 printf ( " %.2 f \ n " ,+ num7 );
31 return 0;
32

33 }
Listing 13: Operadores Aritméticos
4.3 Operações de Incremento e Decremento
– Operações de Incremento e Decremento..
– A resolução da tarefa 02 está mostrado no código listado em 14.
1 # include < stdio .h >
2 # include < stdlib .h >
3 // Operacoes de Incremento e Decremento
4

5 int main ( void )


6 {
7 // Declaracao das variaveis
8

9 int num1 = 10;


10 int num2 = 100;
11

12

13 printf ( " \ n ***** Valores das variaveis *****\ n " ) ;


14 printf ( " % d \ n " ,+ num1 ) ;
15 printf ( " % d \ n " ,+ num2 ) ;
16

17 printf ( " \ n ***** Operacoes de Incremento com as variaveis ***** " ) ;


18 num1 ++; // num1 = num1 +1;
19 num2 ++; // num1 = num2 +1
20 printf ( " \ n ***** Variaveis acrescidas de uma unidade ************\ n " ) ;
21

22 printf ( " % d \ n " , + num1 ) ;


23 printf ( " % d \ n " , + num2 ) ;
24

25 printf ( " \ n ***** Operacoes de Decremento com as variaveis ***** " ) ;


26

27 num1 - -; // num1 = num1 - 1


28 num2 - -; // num1 = num2 - 1
29

30 printf ( " \ n ***** Variaveis dimunidas de uma unidade ********\ n " ) ;


31

32 printf ( " % d \ n " , + num1 ) ;


33 printf ( " % d \ n " , + num2 ) ;
34

35 return 0;
36 }
Listing 14: Operações de Incremento e Decremento
4.4 Operadores relacionais e lógicos
– Operadores relacionais e lógicos.
– A resolução da tarefa 02 está mostrado no código listado em 15.
1 # include < iostream >
2

3 using namespace std ;


4

5 int main ()
6 {
7 int num1 = 14;
8 int num2 = 12;
9

10 bool isMaior = num1 > num2 ;


11

12 printf ( " \ n ** Operador relacional : Maior -- Os valores : 14 e 12 **\ n " );


13 // bool value = true ;
14 ( isMaior ) ? printf ( " isMaior : value is true .\ n " ) : printf ( " isMaior :
value is false .\ n " ) ;
15

16 printf ( " \ n ***********************************\ n " ) ;


17

18 printf ( " \ n ** Operador relacional : Igualdade -- Os valores : 14 e 12


****\ n " ) ;
19

20 bool isIgual = num1 == num2 ;


21 ( isIgual ) ? printf ( " isIgual : value is true " ) : printf ( " isIgual : value
is false " ) ;
22 printf ( " \ n ***********************************\ n " ) ;
23 printf ( " \ n ****** Operador relacional : Diferente -- Os valores : 14 e 12
******\ n " ) ;
24

25 bool isDiferente = num1 != num2 ;


26 ( isDiferente ) ? printf ( " isDiferente : value is true " ) : printf ( "
isDiferente : value is false " );
27

28

29

30 printf ( " \ n ***********************************\ n " ) ;


31 printf ( " \ n ****** Operadores relacional e Logico - Os valores : 14 e 12
***************\ n " ) ;
32 // 1 .... 10
33 bool isDentroDe10 = num1 >= 1 && num1 <= 14;
34 ( isDentroDe10 ) ? printf ( " isDentroDe10 : value is true " ) : printf ( "
isDentroDe10 : value is false " ) ;
35

36

37 return 0;
38 }
Listing 15: Operadores relacionais e lógicos
5 Comando if
• O comando if é utilizado para tomar uma decisão, conforme mostra o código em 16
1 # include < stdio .h >
2 int main ( int argc , char ** argv )
3 {
4 if ( < expressao >)
5 {
6 [ bloco de comandos ]
7 }
8 }
Listing 16: Código do if

• Onde:
a) Expressão: Representa uma condição que necessita ser avaliada como sendo verdadeira.
b) bloco de comandos: Representa os comandos que serão utilizados caso a Expressão seja
verdadeira.
c) A conforme mostrado na Figura 4

Figura 4: O comando if

• O código mostrado em 17, mostra um exemplo do uso do comando if.


1 # include < stdio .h >
2 int main ( int argc , char ** argv ) mv ida
3 {
4 int idade ;
5 printf ( " Digite sua idade : " ) ;
6 scanf ( " % d " , & idade ) ;
7

8 if ( idade >=18)
9 {
10

11 printf ( " \ nVoce eh maior de idade dentro da Lei !\ n " );


12

13 }
14 return (0) ;
15

16

17 }
Listing 17: Código do if
6 E quando a condição não for Verdadeira?
• Mas quando no comando if a condição não é verdadeira ?

• Ele só executará o comando se o a condição for verdadeira e caso não seja, (seja falsa) ele continuará
o processamento do arquivo.

• Temos um exemplo disto no código em 18

• O que acontecerá, caso a condição for falsa?


1 # include < stdio .h >
2 int main ( int argc , char ** argv ) mv ida
3 {
4 int idade ;
5 printf ( " Digite sua idade : " ) ;
6 scanf ( " % d " , & idade ) ;
7 if ( idade >=18)
8 {
9 printf ( " \ nVoce eh maior perante a Lei !\ n " ) ;
10 }
11 printf ( " \ nVoce eh menor perante a Lei !\ n " ) ;
12

13 return (0) ;
14

15 }
Listing 18: Código do if
7 Comando if else
• Os comandos if e else é utilizado para tomar uma decisão, conforme mostra o código em 19
1 # include < stdio .h >
2 int main ( int argc , char ** argv )
3 {
4 if ( < expressao >)
5 {
6 [ bloco de comandos 1]
7 }
8 else
9 {
10 [ bloco de comandos 2]
11 }
12 }
Listing 19: Código do if

• Onde:
a) Expressão: Representa uma condição que necessita ser avaliada como sendo verdadeira.
b) bloco de comandos 1: Esse bloco de comandos 1 será executado, caso a Expressão seja
verdadeira.

c) bloco de comandos 2: Esse bloco de comandos 2 será executado, caso a Expressão não seja
verdadeira.
c) A conforme mostrado na Figura 5

Figura 5: O comando if e else


• O código mostrado em em 20, mostra um exemplo do uso dos comandos if e else.
1 # include < stdio .h >
2 int main ( int argc , char ** argv ) mv ida
3 {
4 int idade ;
5 printf ( " Digite sua idade : " ) ;
6 scanf ( " % d " , & idade ) ;
7 if ( idade >=18)
8 {
9 printf ( " \ nVoce eh maior perante a Lei !\ n " ) ;
10 }
11 else
12 {
13 printf ( " \ nVoce eh menor perante a Lei !\ n " ) ;
14

15 }
16

17 return (0) ;
18

19 }
Listing 20: Código do if
8 Code Blocks
• Informações sobre o Code Blocks

8.1 Atalho para indentar Código no Code Blocks


– Para indentar os códigos escritos no CodeBlocks, proceda conforme mostrado na Figura 6

Figura 6: Identar código no Code Blocks

Referências
http://www.cprogressivo.net/2012/09/hello-world-comentado-c.html Como criar seu primeiro programa em C

https://aulasdec.wordpress.com/2010/11/05/o-primeiro-programa-helloworld-c/ O primeiro programa: HelloWorld.c

Você também pode gostar