C 프로그래밍: 사용자 정의 함수와 중첩 루프
프로그래밍을 하다 보면 반복적으로 작성해야 하는 코드가 자주 생긴다. 이를 함수로 만들어 두면 코드가 간결해지고 가독성이 높아진다. 오늘 공부는 C에서 사용자 정의 함수를 만드는 방법과 중첩 루프를 활용하는 방법을 기록해보았다(:
1. 사용자 정의 함수
어떤 작업을 여러 번 수행해야 한다면, 그 작업을 함수로 정의하는 것이 좋다. 예를 들어, "cough"를 세 번 출력하는 프로그램을 작성해보자.
1.1 반복문 없이 작성
#include <stdio.h>
int main(void)
{
printf("cough\n");
printf("cough\n");
printf("cough\n");
}
위처럼 단순히 printf를 세 번 반복하는 방법이 있지만, 이는 코드의 재사용성을 떨어뜨린다.
1.2 반복문을 활용한 개선
#include <stdio.h>
int main(void)
{
for (int i = 0; i < 3; i++)
{
printf("cough\n");
}
}
for 루프를 활용하면 반복 횟수를 쉽게 조절할 수 있다.
1.3 사용자 정의 함수 활용
#include <stdio.h>
void cough(void)
{
printf("cough\n");
}
int main(void)
{
for (int i = 0; i < 3; i++)
{
cough();
}
}
이제 cough라는 함수를 정의해 printf를 직접 호출하는 대신 함수를 사용했다. 이렇게 하면 코드가 더 직관적이고 유지보수가 쉬워진다.
1.4 함수 선언을 활용한 개선
C에서는 함수가 정의되기 전에 호출되면 오류가 발생할 수 있다. 이를 해결하기 위해 함수 선언을 활용한다.
#include <stdio.h>
void cough(void);
int main(void)
{
for (int i = 0; i < 3; i++)
{
cough();
}
}
void cough(void)
{
printf("cough\n");
}
함수의 선언(prototype)을 main 함수보다 위에 두면, C 컴파일러가 해당 함수를 미리 인식할 수 있다.
1.5 매개변수를 활용한 함수 개선
#include <stdio.h>
void cough(int n);
int main(void)
{
cough(3);
}
void cough(int n)
{
for (int i = 0; i < n; i++)
{
printf("cough\n");
}
}
이제 cough 함수를 호출할 때 원하는 횟수를 인자로 전달할 수 있다. 이렇게 하면 더욱 유연하게 사용할 수 있다.
1.6 사용자 입력을 받아 반환하는 함수
#include <cs50.h>
#include <stdio.h>
int get_positive_int(void);
int main(void)
{
int i = get_positive_int();
printf("%i\n", i);
}
int get_positive_int(void)
{
int n;
do
{
n = get_int("Positive Integer: ");
}
while (n < 1);
return n;
}
이 함수는 양의 정수를 입력받을 때까지 반복하는 기능을 수행한다. get_positive_int 함수가 int 값을 반환하는 것을 알 수 있다.
2. 중첩 루프
중첩 루프를 사용하면 가로와 세로로 반복되는 패턴을 쉽게 구현할 수 있다. 예를 들어, n x n 크기의 # 블록을 출력하는 프로그램을 만들어보자.
#include <cs50.h>
#include <stdio.h>
int main(void)
{
int n;
do
{
n = get_int("Size: ");
}
while (n < 1);
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
printf("#");
}
printf("\n");
}
}
2.1 중첩 루프의 동작 방식
- do-while 루프를 사용해 n이 1보다 작은 값이 입력되지 않도록 한다.
- for 루프를 두 번 중첩해 n x n 크기의 #을 출력한다.
- 첫 번째 for 루프(i 변수)는 세로 방향으로 n번 반복한다.
- 내부 for 루프(j 변수)는 가로 방향으로 n번 #을 출력한다.
- 내부 루프가 끝나면 줄바꿈(\n)을 수행해 다음 줄로 넘어간다.
이렇게 중첩 루프를 활용하면 원하는 크기의 패턴을 쉽게 만들 수 있다.
- 사용자 정의 함수를 활용하면 코드의 재사용성을 높이고 가독성을 개선할 수 있다.
- 함수 선언(prototype)을 사용하면 main 함수보다 아래에 위치한 함수도 호출할 수 있다.
- 매개변수(parameter)를 활용하면 함수의 기능을 더 유연하게 만들 수 있다.
- 중첩 루프를 사용하면 2차원 형태의 패턴을 출력할 수 있다.
'IT' 카테고리의 다른 글
C 언어 컴파일 과정 : 전처리, 컴파일, 어셈블, 링크 (0) | 2025.03.17 |
---|---|
부동 소수점 오류와 오버플로우: 프로그래밍에서 주의할 점 (1) | 2025.03.16 |
리눅스/유닉스에서 cd 명령어 완벽 활용법: 디렉토리 변경 및 탐색 가이드 (0) | 2025.03.15 |
CS50 C 언어 기초 정리 | 데이터 타입, 입력 & 출력, 연산자 총정리 (0) | 2025.03.14 |
C 프로그래밍 기초 정리 | 변수, 조건문, 반복문 (0) | 2025.03.13 |
댓글
이 글 공유하기
다른 글
-
C 언어 컴파일 과정 : 전처리, 컴파일, 어셈블, 링크
C 언어 컴파일 과정 : 전처리, 컴파일, 어셈블, 링크
2025.03.17 -
부동 소수점 오류와 오버플로우: 프로그래밍에서 주의할 점
부동 소수점 오류와 오버플로우: 프로그래밍에서 주의할 점
2025.03.16 -
리눅스/유닉스에서 cd 명령어 완벽 활용법: 디렉토리 변경 및 탐색 가이드
리눅스/유닉스에서 cd 명령어 완벽 활용법: 디렉토리 변경 및 탐색 가이드
2025.03.15 -
CS50 C 언어 기초 정리 | 데이터 타입, 입력 & 출력, 연산자 총정리
CS50 C 언어 기초 정리 | 데이터 타입, 입력 & 출력, 연산자 총정리
2025.03.14