소개
이 랩에서는 C 프로그래밍에서 함수를 생성하고 사용하는 방법을 배우게 됩니다. 이 랩은 함수의 선언 및 정의의 기본 개념, 함수 인자 이해, 함수에서 값 반환, void 함수 처리, 그리고 함수 사용 실습을 다룹니다. 실습 예제와 연습을 통해 이러한 주제를 탐구하여 모듈화되고 재사용 가능한 C 코드를 작성하는 기술을 습득하게 됩니다.
이 랩은 함수 선언 및 정의의 기본 사항을 소개하고, 간단한 함수를 생성하고 호출하는 방법을 보여주는 것으로 시작합니다. 그런 다음 함수 인자에 대한 이해를 깊이 있게 다루며, 다양한 데이터 유형을 함수에 입력으로 전달하는 방법을 보여줍니다. 또한 이 랩은 반환 값의 개념을 다루며, 함수에서 데이터를 반환하는 방법을 안내합니다. 추가적으로, 이 랩은 어떤 값도 반환하지 않는 void 함수의 사용법을 탐구합니다. 마지막으로, 다양한 연습을 통해 학습한 개념을 실습하고 적용할 기회를 갖게 됩니다.
함수 선언 및 정의
이 단계에서는 C 프로그래밍에서 함수를 선언하고 정의하는 방법을 배우게 됩니다. 함수는 코드를 구성하고 모듈화하는 데 도움이 되는 기본적인 구성 요소입니다.
~/project 디렉토리에 functions_demo.c라는 새 파일을 생성하는 것으로 시작해 보겠습니다.
cd ~/project
touch functions_demo.c
이제 간단한 함수 선언과 정의를 작성해 보겠습니다.
#include <stdio.h>
// Function declaration (prototype)
void greet(char* name);
// Main function
int main() {
// Calling the function
greet("LabEx User");
return 0;
}
// Function definition
void greet(char* name) {
printf("Hello, %s! Welcome to C programming.\n", name);
}
주요 구성 요소를 살펴보겠습니다.
void greet(char* name)은 함수 선언 (프로토타입) 입니다.- 함수는 문자 포인터 (문자열) 를 인자로 받습니다.
void는 함수가 값을 반환하지 않음을 나타냅니다.main()내부에서 인자와 함께 함수를 호출합니다.- 함수 정의는 실제 로직을 구현하는 main 함수 다음에 옵니다.
프로그램을 컴파일하고 실행합니다.
gcc functions_demo.c -o functions_demo
./functions_demo
예시 출력:
Hello, LabEx User! Welcome to C programming.
함수는 다음을 돕습니다.
- 코드를 재사용 가능한 블록으로 구성합니다.
- 코드 가독성을 향상시킵니다.
- 반복을 줄입니다.
- 프로그램을 모듈화합니다.
함수 인자 이해하기
이 단계에서는 C 프로그래밍에서 함수 인자를 사용하는 방법을 배우게 됩니다. 함수 인자를 사용하면 함수에 데이터를 전달하여 함수를 더욱 유연하고 재사용 가능하게 만들 수 있습니다.
~/project 디렉토리에 function_arguments.c라는 새 파일을 생성해 보겠습니다.
cd ~/project
touch function_arguments.c
이제 다양한 유형의 함수 인자를 보여주는 프로그램을 작성해 보겠습니다.
#include <stdio.h>
// Function with multiple arguments
int calculate_rectangle_area(int length, int width) {
return length * width;
}
// Function with a floating-point argument
float convert_celsius_to_fahrenheit(float celsius) {
return (celsius * 9/5) + 32;
}
int main() {
// Using integer arguments
int length = 5;
int width = 3;
int area = calculate_rectangle_area(length, width);
printf("Rectangle Area: %d square units\n", area);
// Using floating-point argument
float celsius = 25.0;
float fahrenheit = convert_celsius_to_fahrenheit(celsius);
printf("%.1f°C is %.1f°F\n", celsius, fahrenheit);
return 0;
}
주요 개념을 살펴보겠습니다.
- 함수는 서로 다른 유형의 여러 인자를 가질 수 있습니다.
calculate_rectangle_area()는 두 개의 정수 인자를 받습니다.convert_celsius_to_fahrenheit()는 float 인자를 받습니다.- C 에서 인자는 값으로 전달됩니다 (복사본이 생성됨).
- 함수는 계산에 이러한 인자를 사용할 수 있습니다.
프로그램을 컴파일하고 실행합니다.
gcc function_arguments.c -o function_arguments
./function_arguments
예시 출력:
Rectangle Area: 15 square units
25.0°C is 77.0°F
함수 인자에 대한 주요 사항:
- 인자는 함수에 입력을 제공합니다.
- 변수 또는 직접 값을 전달할 수 있습니다.
- 인자의 수와 유형은 함수 선언과 일치해야 합니다.
- 인자는 함수를 더욱 다재다능하고 재사용 가능하게 만드는 데 도움이 됩니다.
함수 반환 값
이 단계에서는 C 프로그래밍에서 함수에서 값을 반환하는 방법을 배우게 됩니다. 반환 값을 사용하면 함수가 결과를 계산하고 호출 코드에 다시 보낼 수 있습니다.
~/project 디렉토리에 function_returns.c라는 새 파일을 생성해 보겠습니다.
cd ~/project
touch function_returns.c
이제 다양한 유형의 반환 값을 보여주는 프로그램을 작성해 보겠습니다.
#include <stdio.h>
// Function returning an integer
int square(int number) {
return number * number;
}
// Function returning a float
float calculate_average(int a, int b, int c) {
return (float)(a + b + c) / 3;
}
// Function returning a character
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() {
// Using integer return value
int num = 7;
int squared = square(num);
printf("Square of %d is %d\n", num, squared);
// Using float return value
int math = 85, science = 92, english = 78;
float average = calculate_average(math, science, english);
printf("Average score: %.2f\n", average);
// Using character return value
int student_score = 85;
char grade = get_grade(student_score);
printf("Student score %d gets grade %c\n", student_score, grade);
return 0;
}
주요 개념을 살펴보겠습니다.
- 함수는 서로 다른 데이터 유형을 반환할 수 있습니다.
square()는 정수 결과를 반환합니다.calculate_average()는 float 를 반환합니다.get_grade()는 문자를 반환합니다.return키워드는 값을 호출 함수로 다시 보냅니다.- 반환 유형은 함수 선언과 일치해야 합니다.
프로그램을 컴파일하고 실행합니다.
gcc function_returns.c -o function_returns
./function_returns
예시 출력:
Square of 7 is 49
Average score: 85.00
Student score 85 gets grade B
반환 값에 대한 주요 사항:
- 반환 값을 사용하면 함수가 결과를 계산하고 다시 보낼 수 있습니다.
- 함수의 목적에 따라 적절한 반환 유형을 사용합니다.
- 반환 값을 직접 사용하거나 변수에 저장할 수 있습니다.
- 반환 값은 함수를 더욱 강력하고 유연하게 만듭니다.
Void 함수 처리
이 단계에서는 C 프로그래밍에서 void 함수에 대해 배우게 됩니다. void 함수는 값을 반환하지 않고 작업을 수행하며, 결과를 다시 보낼 필요가 없는 작업에 유용합니다.
~/project 디렉토리에 void_functions.c라는 새 파일을 생성해 보겠습니다.
cd ~/project
touch void_functions.c
이제 void 함수를 보여주는 프로그램을 작성해 보겠습니다.
#include <stdio.h>
// Void function to print a welcome message
void print_welcome() {
printf("Welcome to the C Programming Lab!\n");
}
// Void function with parameters to display student information
void display_student_info(char* name, int age) {
printf("Student Name: %s\n", name);
printf("Student Age: %d\n", age);
}
// Void function to draw a simple pattern
void draw_pattern(int size) {
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
printf("* ");
}
printf("\n");
}
}
int main() {
// Calling void functions
print_welcome();
// Void function with parameters
char* student_name = "LabEx User";
int student_age = 25;
display_student_info(student_name, student_age);
// Void function with a pattern
int pattern_size = 3;
printf("\nDrawing a %dx%d pattern:\n", pattern_size, pattern_size);
draw_pattern(pattern_size);
return 0;
}
주요 개념을 살펴보겠습니다.
- Void 함수는 반환 유형으로
void를 갖습니다. - 값을 반환하지 않고 작업을 수행합니다.
print_welcome()은 단순히 메시지를 출력합니다.display_student_info()는 매개변수를 받아 정보를 출력합니다.draw_pattern()은 중첩 루프를 사용하여 시각적 패턴을 만듭니다.- Void 함수는 일반 함수처럼 호출됩니다.
- Void 함수에서는 값과 함께
return을 사용할 수 없습니다.
프로그램을 컴파일하고 실행합니다.
gcc void_functions.c -o void_functions
./void_functions
예시 출력:
Welcome to the C Programming Lab!
Student Name: LabEx User
Student Age: 25
Drawing a 3x3 pattern:
* * *
* * *
* * *
Void 함수에 대한 주요 사항:
- 값을 반환할 필요가 없는 작업에 사용됩니다.
- 매개변수를 가질 수 있습니다.
- 출력, 로깅 또는 특정 작업을 수행하는 데 유용합니다.
- 코드를 구성하고 모듈화하는 데 도움이 됩니다.
return을 사용하여 값을 반환할 수 없습니다.
함수 사용 연습
이 마지막 단계에서는 C 에서 함수에 대해 배운 모든 내용을 적용하여 여러 함수 유형과 사용법을 보여주는 포괄적인 프로그램을 만들 것입니다.
~/project 디렉토리에 calculator.c라는 파일을 생성해 보겠습니다.
cd ~/project
touch calculator.c
이제 다양한 함수를 사용하여 간단한 계산기를 구현하는 프로그램을 작성해 보겠습니다.
#include <stdio.h>
// Function to add two numbers
int add(int a, int b) {
return a + b;
}
// Function to subtract two numbers
int subtract(int a, int b) {
return a - b;
}
// Function to multiply two numbers
int multiply(int a, int b) {
return a * b;
}
// Function to divide two numbers with error handling
float divide(int a, int b) {
if (b == 0) {
printf("Error: Division by zero!\n");
return 0;
}
return (float)a / b;
}
// Void function to display calculator menu
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);
// Exit condition
if (choice == 5) {
printf("Goodbye!\n");
break;
}
// Validate choice
if (choice < 1 || choice > 4) {
printf("Invalid choice. Try again.\n");
continue;
}
// Get user input
printf("Enter two numbers: ");
scanf("%d %d", &num1, &num2);
// Perform calculation based on user choice
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;
}
주요 개념을 살펴보겠습니다.
- 여러 함수 유형이 사용됩니다 (반환 값, void 함수).
- 함수는 특정 수학적 연산을 수행합니다.
display_menu()는 메뉴를 보여주는 void 함수입니다.- 산술 함수는 계산된 결과를 반환합니다.
main()함수는 메뉴 기반 계산기를 구현합니다.- 0 으로 나누기에 대한 오류 처리가 포함되어 있습니다.
switch문은 연산을 선택하는 데 사용됩니다.
프로그램을 컴파일하고 실행합니다.
gcc calculator.c -o calculator
./calculator
예시 상호 작용:
--- 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!
함수 사용에 대한 주요 사항:
- 서로 다른 함수 유형을 결합합니다.
- 함수를 사용하여 복잡한 문제를 세분화합니다.
- 오류 처리를 구현합니다.
- 모듈식이고 재사용 가능한 코드를 만듭니다.
요약
이 랩에서는 C 프로그래밍에서 함수를 선언하고 정의하는 방법, 함수 인자 (argument) 를 이해하는 방법, 함수에서 반환 값 (return value) 을 반환하는 방법, void 함수를 처리하는 방법, 그리고 함수 사용을 연습하는 방법을 배웠습니다. 사용자를 환영하는 간단한 함수를 생성하는 것으로 시작하여, 여러 인자와 반환 값을 가진 더 복잡한 함수를 탐구했습니다. 또한 void 함수를 사용하는 방법과 프로그램에서 함수 사용을 연습하는 방법을 배웠습니다. 이러한 기본적인 개념은 C 에서 모듈식이고 재사용 가능한 코드를 구축하는 데 필수적입니다.



