Introdução
Neste laboratório, você aprenderá como criar e usar funções na programação em C. O laboratório cobre os conceitos fundamentais de declaração e definição de funções, compreensão de argumentos de funções, retorno de valores de funções, tratamento de funções void e prática do uso de funções. Você explorará esses tópicos por meio de exemplos práticos e exercícios, adquirindo as habilidades para escrever código C modular e reutilizável.
O laboratório começa introduzindo os fundamentos da declaração e definição de funções, demonstrando como criar e chamar funções simples. Em seguida, aprofunda-se na compreensão dos argumentos de funções, mostrando como passar diferentes tipos de dados como entrada para as funções. O laboratório também cobre o conceito de valores de retorno, guiando você sobre como retornar dados de funções. Além disso, o laboratório explora o uso de funções void, que não retornam nenhum valor. Finalmente, você terá a oportunidade de praticar e aplicar os conceitos aprendidos por meio de vários exercícios.
Declarar e Definir Funções
Nesta etapa, você aprenderá como declarar e definir funções na programação em C. Funções são blocos de construção fundamentais que ajudam a organizar e modularizar seu código.
Vamos começar criando um novo arquivo chamado functions_demo.c no diretório ~/project:
cd ~/project
touch functions_demo.c
Agora, vamos escrever uma declaração e definição de função simples:
#include <stdio.h>
// Declaração da função (protótipo)
void greet(char* name);
// Função principal
int main() {
// Chamando a função
greet("LabEx User");
return 0;
}
// Definição da função
void greet(char* name) {
printf("Hello, %s! Welcome to C programming.\n", name);
}
Vamos detalhar os componentes-chave:
void greet(char* name)é a declaração da função (protótipo)- A função recebe um ponteiro de caractere (string) como um argumento
voidindica que a função não retorna um valor- Dentro de
main(), chamamos a função com um argumento - A definição da função segue a função principal, implementando a lógica real
Compile e execute o programa:
gcc functions_demo.c -o functions_demo
./functions_demo
Exemplo de saída:
Hello, LabEx User! Welcome to C programming.
Funções ajudam você a:
- Organizar o código em blocos reutilizáveis
- Melhorar a legibilidade do código
- Reduzir a repetição
- Modularizar seu programa
Entender os Argumentos da Função
Nesta etapa, você aprenderá como trabalhar com argumentos de funções na programação em C. Argumentos de funções permitem que você passe dados para funções, tornando-as mais flexíveis e reutilizáveis.
Vamos criar um novo arquivo chamado function_arguments.c no diretório ~/project:
cd ~/project
touch function_arguments.c
Agora, vamos escrever um programa demonstrando diferentes tipos de argumentos de funções:
#include <stdio.h>
// Função com múltiplos argumentos
int calculate_rectangle_area(int length, int width) {
return length * width;
}
// Função com um argumento de ponto flutuante
float convert_celsius_to_fahrenheit(float celsius) {
return (celsius * 9/5) + 32;
}
int main() {
// Usando argumentos inteiros
int length = 5;
int width = 3;
int area = calculate_rectangle_area(length, width);
printf("Rectangle Area: %d square units\n", area);
// Usando argumento de ponto flutuante
float celsius = 25.0;
float fahrenheit = convert_celsius_to_fahrenheit(celsius);
printf("%.1f°C is %.1f°F\n", celsius, fahrenheit);
return 0;
}
Vamos detalhar os conceitos-chave:
- Funções podem receber múltiplos argumentos de diferentes tipos
calculate_rectangle_area()recebe dois argumentos inteirosconvert_celsius_to_fahrenheit()recebe um argumento float- Argumentos são passados por valor em C (uma cópia é criada)
- A função pode usar esses argumentos em seu cálculo
Compile e execute o programa:
gcc function_arguments.c -o function_arguments
./function_arguments
Exemplo de saída:
Rectangle Area: 15 square units
25.0°C is 77.0°F
Pontos-chave sobre argumentos de funções:
- Argumentos fornecem entrada para funções
- Você pode passar variáveis ou valores diretos
- O número e o tipo de argumentos devem corresponder à declaração da função
- Argumentos ajudam a tornar as funções mais versáteis e reutilizáveis
Retornar Valores de Funções
Nesta etapa, você aprenderá como retornar valores de funções na programação em C. Valores de retorno permitem que as funções calculem e enviem resultados de volta ao código de chamada.
Vamos criar um novo arquivo chamado function_returns.c no diretório ~/project:
cd ~/project
touch function_returns.c
Agora, vamos escrever um programa demonstrando diferentes tipos de valores de retorno:
#include <stdio.h>
// Função retornando um inteiro
int square(int number) {
return number * number;
}
// Função retornando um float
float calculate_average(int a, int b, int c) {
return (float)(a + b + c) / 3;
}
// Função retornando um caractere
char get_grade(int score) {
if (score >= 90) return 'A';
else if (score >= 80) return 'B';
else if (score >= 70) return 'C';
else if (score >= 60) return 'D';
else return 'F';
}
int main() {
// Usando valor de retorno inteiro
int num = 7;
int squared = square(num);
printf("Square of %d is %d\n", num, squared);
// Usando valor de retorno float
int math = 85, science = 92, english = 78;
float average = calculate_average(math, science, english);
printf("Average score: %.2f\n", average);
// Usando valor de retorno caractere
int student_score = 85;
char grade = get_grade(student_score);
printf("Student score %d gets grade %c\n", student_score, grade);
return 0;
}
Vamos detalhar os conceitos-chave:
- Funções podem retornar diferentes tipos de dados
square()retorna um resultado inteirocalculate_average()retorna um floatget_grade()retorna um caractere- A palavra-chave
returnenvia um valor de volta para a função de chamada - Tipos de retorno devem corresponder à declaração da função
Compile e execute o programa:
gcc function_returns.c -o function_returns
./function_returns
Exemplo de saída:
Square of 7 is 49
Average score: 85.00
Student score 85 gets grade B
Pontos-chave sobre valores de retorno:
- Valores de retorno permitem que as funções calculem e enviem resultados de volta
- Use tipos de retorno apropriados com base no propósito da função
- Você pode usar valores de retorno diretamente ou armazená-los em variáveis
- Valores de retorno tornam as funções mais poderosas e flexíveis
Lidar com Funções Void
Nesta etapa, você aprenderá sobre funções void na programação em C. Funções void executam ações sem retornar um valor, o que é útil para tarefas que não precisam enviar um resultado de volta.
Vamos criar um novo arquivo chamado void_functions.c no diretório ~/project:
cd ~/project
touch void_functions.c
Agora, vamos escrever um programa demonstrando funções void:
#include <stdio.h>
// Função void para imprimir uma mensagem de boas-vindas
void print_welcome() {
printf("Welcome to the C Programming Lab!\n");
}
// Função void com parâmetros para exibir informações do aluno
void display_student_info(char* name, int age) {
printf("Student Name: %s\n", name);
printf("Student Age: %d\n", age);
}
// Função void para desenhar um padrão simples
void draw_pattern(int size) {
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
printf("* ");
}
printf("\n");
}
}
int main() {
// Chamando funções void
print_welcome();
// Função void com parâmetros
char* student_name = "LabEx User";
int student_age = 25;
display_student_info(student_name, student_age);
// Função void com um padrão
int pattern_size = 3;
printf("\nDrawing a %dx%d pattern:\n", pattern_size, pattern_size);
draw_pattern(pattern_size);
return 0;
}
Vamos detalhar os conceitos-chave:
- Funções
voidtêmvoidcomo seu tipo de retorno - Elas executam ações sem retornar um valor
print_welcome()simplesmente imprime uma mensagemdisplay_student_info()recebe parâmetros e imprime informaçõesdraw_pattern()cria um padrão visual usando loops aninhados- Funções
voidsão chamadas como funções regulares - Você não pode usar
returncom um valor em funçõesvoid
Compile e execute o programa:
gcc void_functions.c -o void_functions
./void_functions
Exemplo de saída:
Welcome to the C Programming Lab!
Student Name: LabEx User
Student Age: 25
Drawing a 3x3 pattern:
* * *
* * *
* * *
Pontos-chave sobre funções void:
- Usadas para ações que não precisam retornar um valor
- Podem receber parâmetros
- Úteis para impressão, registro (logging) ou execução de tarefas específicas
- Ajudam a organizar e modularizar o código
- Não podem retornar um valor usando
return
Praticar o Uso de Funções
Nesta etapa final, você aplicará tudo o que aprendeu sobre funções em C, criando um programa abrangente que demonstra múltiplos tipos de funções e seu uso.
Vamos criar um arquivo chamado calculator.c no diretório ~/project:
cd ~/project
touch calculator.c
Agora, vamos escrever um programa que implementa uma calculadora simples com várias funções:
#include <stdio.h>
// Função para somar dois números
int add(int a, int b) {
return a + b;
}
// Função para subtrair dois números
int subtract(int a, int b) {
return a - b;
}
// Função para multiplicar dois números
int multiply(int a, int b) {
return a * b;
}
// Função para dividir dois números com tratamento de erros
float divide(int a, int b) {
if (b == 0) {
printf("Error: Division by zero!\n");
return 0;
}
return (float)a / b;
}
// Função void para exibir o menu da calculadora
void display_menu() {
printf("\n--- Simple Calculator ---\n");
printf("1. Addition\n");
printf("2. Subtraction\n");
printf("3. Multiplication\n");
printf("4. Division\n");
printf("5. Exit\n");
printf("Enter your choice: ");
}
int main() {
int choice, num1, num2;
float result;
while (1) {
display_menu();
scanf("%d", &choice);
// Condição de saída
if (choice == 5) {
printf("Goodbye!\n");
break;
}
// Validar a escolha
if (choice < 1 || choice > 4) {
printf("Invalid choice. Try again.\n");
continue;
}
// Obter entrada do usuário
printf("Enter two numbers: ");
scanf("%d %d", &num1, &num2);
// Executar o cálculo com base na escolha do usuário
switch (choice) {
case 1:
result = add(num1, num2);
printf("Result: %d + %d = %d\n", num1, num2, (int)result);
break;
case 2:
result = subtract(num1, num2);
printf("Result: %d - %d = %d\n", num1, num2, (int)result);
break;
case 3:
result = multiply(num1, num2);
printf("Result: %d * %d = %d\n", num1, num2, (int)result);
break;
case 4:
result = divide(num1, num2);
printf("Result: %d / %d = %.2f\n", num1, num2, result);
break;
}
}
return 0;
}
Vamos detalhar os conceitos-chave:
- Múltiplos tipos de funções são usados (valores de retorno, funções void)
- Funções executam operações matemáticas específicas
display_menu()é uma função void que mostra o menu- Funções aritméticas retornam resultados calculados
- A função
main()implementa uma calculadora orientada a menu - Tratamento de erros está incluído para divisão por zero
- A instrução
switché usada para selecionar a operação
Compile e execute o programa:
gcc calculator.c -o calculator
./calculator
Exemplo de interação:
--- Simple Calculator ---
1. Addition
2. Subtraction
3. Multiplication
4. Division
5. Exit
Enter your choice: 1
Enter two numbers: 10 5
Result: 10 + 5 = 15
--- Simple Calculator ---
...
Enter your choice: 5
Goodbye!
Pontos-chave sobre o uso de funções:
- Combine diferentes tipos de funções
- Use funções para dividir problemas complexos
- Implemente tratamento de erros
- Crie código modular e reutilizável
Resumo
Neste laboratório, você aprendeu como declarar e definir funções na programação em C, entender argumentos de funções, retornar valores de funções, lidar com funções void e praticar o uso de funções. Você começou criando uma função simples para cumprimentar um usuário e, em seguida, explorou funções mais complexas com múltiplos argumentos e valores de retorno. Você também aprendeu como usar funções void e praticar o uso de funções em seus programas. Esses conceitos fundamentais são essenciais para construir código modular e reutilizável em C.



