-
C programming 기초 5강과외 수업 자료/C 2022. 11. 7. 18:17
이전 포스팅에 이어서 이번 시간에는 n차원 배열과 함수에 대해서 알아보자.
1. 다차원 배열
1.1 다차원 배열이란?
배열의 경우 앞에서 배운 1차원 배열뿐만 아니라 2차원 이상의 다차원 배열도 가능하다.
1차원 배열로 데이터를 처리하기에 제한이 따를 때 다차원 배열을 사용한다.
int array [12] : 48바이트 (4 * 12) 메모리 공간을 행(가로) 단위로 할당
int array[4][3] : 48바이트 (4 * 4 * 3) 메모리 공간을 4행(가로) 3열(세로) 단위로 할당
int array[2][2][3] : 48바이트 (4 * 2 * 2 * 3) 메모리 공간을 2면 2행(가로) 3열(세로) 단위로 할당
행렬을 표현한 그림
1.2 2차원 배열의 선언
1차원 배열과 마찬가지로 2차원 배열을 사용하려면 먼저 2차원 배열을 선언해야 한다.
2차원 배열의 선언 자료형 : 배열의 자료형을 지정
배열 이름 : 변수 이름과 마찬가지로 배열을 구분하는 배열의 이름
배열 길이 : 배열 요소의 길이를 행(가로)과 열(세로)로 지정
2차원 배열은 다음 코드와 같이 선언할 수 있다.
배열 선언 코드 예제 배열 이름이 array인 4행 3열의 배열을 선언한 것이다.
할당된 메모리 공간은 48바이트로 int형(4byte) * 4(행) * 3(열)이다.
1.3 2차원 배열에 데이터 저장하기
2차원 배열 예제 코드 및 실행 결과 위 코드를 보면 array라는 이름의 4행 3열의 길이를 가지는 배열을 선언하였다.
각각 0,0 ~ 3,2까지에 데이터를 넣고 출력한 결과를 확일할 수 있다.
배열에 데이터가 들어가는 과정을 자세하게 표현하면 다음 그림과 같다.
배열에 데이터 넣는 과정 시각화 다음 그림을 통해 배열 각 칸의 index를 확인할 수 있다.
다음과 같은 index에 데이터가 들어가는 것이다.
2차원 배열 또한 1차원 배열과 동일하게 중괄호를 이용하여 초기화할 수 있다.
중괄호를 이용한 2차원 배열 초기화 예제 코드와 실행 결과 다음은 중괄호를 이용하여 2차원 배열을 선언하고 동시에 초기화한다.
데이터를 저장하지 않은 공간에는 0이 자동으로 초기화됨을 확인할 수 있다.
배열에 저장할 데이터는 1~12까지이며, 할당된 배열 공간에 차례로 저장이 된다.
중괄호를 이용한 2차원 배열 초기화의 다른 방법 행단위로 중괄호를 한번 더 싸주어 2차원 배열을 선언하면서 초기화하는 코드이다.
위 코드를 자세하게 표현하면 다음과 같다.
행단위 중괄호를 이용한 2차원 배열 초기화를 자세하게 표현한 그림 다음 그림을 통해 행에 차례대로 값이 초기화됨을 확인할 수 있다.
키보드를 이용한 배열에 데이터 입력 다음 예제는 키보드로부터 입력받은 데이터를 2차원 배열 요소에 저장하고 이들 데이터를 그대로 출력하는 코드이다.
2차원 배열이므로 중첩 for문을 사용해야 한다.
이럴 때 반복문의 사용은 매우 중요하다.
1.4 2차원 배열 선언 시 주의할 점
주의할점 1 2차원 배열 또한 1차원 배열과 마찬가지로 중괄호를 이용하여 초기화할 때 길이를 설정하지 않고 선언이 가능하다.
이때, 2차원 배열은 1차원 배열과 달리 열의 길이를 반드시 설정해주어야 한다.
1.5 3차원 배열의 이해
1차원 배열을 쌓으면 2차원 배열이 되듯이 2차원 배열을 쌓으면 3차원 배열의 된다.
3차원 배열의 이해 즉, 쉽게 말하면 위 그림과 같이 2차원 배열이 중첩된 형태처럼 보인다.
2차원을 초과하는 3차원 이상의 배열은 사용 빈도가 매우 낮다.
3차원 배열 예제 코드 및 실행 결과 사용법만 간단히 확인하기 위한 코드이다.
위와 같이 중괄호를 통해서도 초기화가 가능하다.
면단위로 중괄호를 나누어주어 선언한 형태이다.
2. 함수
함수를 이해하기 위해서는 사용자의 관점에서 벗어나 개발자의 관점으로 기능을 바라봐야 할 필요가 있다.
커피 자판기를 예를 들어보자.
사용자의 관점에서의 커피 자판기는..
- 입력 : 돈을 넣습니다, 커피를 선택합니다.
- 출력 : 커피를 꺼냅니다.
개발자의 관점에서 커피 자판기는..
- 입력 : 돈을 넣습니다, 커피를 선택합니다.
- 자판기의 기능 : 커피 자판기 내부에서 커피를 만듭니다.
- 출력 : 커피를 꺼냅니다.
이렇든 어떠한 기계나 물건의 기능을 생각할 수 있어야 한다.
여기서 자판기의 기능을 우리는 함수의 기능이라고 얘기한다.
컴퓨팅 세계에서 함수란 특정 작업을 수행하는 코드의 집합이라고 정의할 수 있다.
이제껏 만들었던 프로그램은 사실 main() 함수에서 함수들을 호출하여 사용하고 있었다.
ex) stdio.h에서 제공하는 printf()와 scanf() 함수를 main() 함수 내에 호출하여 사용한 것.
이들 대부분의 함수는 C언어에서 제공하는 표준 라이브러리 함수(stdio.h와 같은)였다.
그러나 프로그래머의 필요에 따라 직접 함수를 만들어서 사용할 수 있는데 이것을 사용자 정의 라이브러리 함수라고 부른다.
C 프로그램을 작성하면서 코드의 길이가 기본적인 수준을 넘는 경우에는 함수 단위로 작성해야 코드의 안정성이 좋아지고, 에러를 수정하기가 쉽다.
즉, 대단위 프로그램은 수정, 유지 보수가 쉽지 않기 때문에 기능별로 세분화하는 것이 필요한데 이를 지원하는 것이 함수이다.
개인적으로 잘하는 개발자는 module화를 잘하는 개발자이다.
또한 함수를 사용하면 코드의 재사용성이 좋아진다.
함수는 한번 잘 만들어 놓으면 필요할 때마다 호출해서 사용할 수 있기 때문에 함수를 작성할 때는 재사용성을 고려해야 한다.
하나의 main() 함수 안에서 모든 것을 코드화해 놓으면 프로그램이 복잡해질 수 있다.
따라서 복잡성을 줄이면서 응집력 있는 함수를 설계하고 개발하는 힘써야 한다.
2.1 함수의 형태
함수의 형태를 표현한 그림 입력 형태 : 함수가 입력을 받을 형태
- 두 정수를 더하는 함수를 만든다고 가정해서 함수의 입력 형태를 int x, int y로 설정하였다.
- 이렇게 함수의 입력 형태로 ㅅ설정된 변수를 매개 변수(Parameter)라고 하는데, 둘 이상의 매개 변수를 설정할 필요가 있을 때 콤마( , )로 구분하여 설정한다.
함수 이름 : 함수의 이름을 표현
- 함수의 이름은 sum이다. 두 개의 정수를 입력받아 합을 구하는 기능을 가진 함수이기 때문에 sum이라고 지었다.
출력 형태 : 함수의 출력을 나타내는 자료형
- 함수의 수행 결과를 나타내는 출력 자료형을 나타낸다.
- 두 개의 정수를 더해서 그 결과를 정수로 출력하기 위해 출력 형태를 int형으로 설정한다.
함수의 기능 : 함수가 수행할 기능 정의
- 함수의 몸체 부분, 즉 함수의 기능을 담당하는 곳이다.
- 함수 내에서 입력 변수 x와 y를 더해 변수 result에 저장하고 return문이 result를 반환(출력 또는 전달 의미도 된다)해주고 있다.
함수 예제 코드 및 실행 결과 다음 코드는 함수의 예제 코드와 실행 결과이다.
위 코드의 실행 순서를 자세하게 표현하면 아래의 그림과 같다.
함수 예제 코드 실행 순서 1. main 함수 시작
2. 함수 호출 sum 호출 및 매개 변수 x = 3, y = 4 전달
3. sum 함수 실행
4. sum 함수에서 변수 result를 main의 answer로 전달
마치며..
이번 시간에는 다차원 배열과 함수의 기본에 대해서 공부하였다.
2차원 배열은 상당히 많이 쓰이므로 사용법을 완벽하게 숙지하고 있는 것이 중요하다.
또한 함수는 모든 언어에서 제일 중요한 부분이라 생각한다.
함수를 이용해야 다수의 개발자와 협업이 편리해지고 오류를 분석하는 것이 매우 쉬워진다. 프로그램을 작성하기 전 항상 함수를 설계하고 어떻게 모듈화를 진행할 것인지 계획을 세운 뒤 설계를 따라 작성하는 습관을 들이는 것이 중요할 것이다.
다음 시간에는 함수의 더 자세한 내용을 공부할 것이다.
< 참고 자료 >
책 : 열혈강의 C언어 본색 / 박정민
'과외 수업 자료 > C' 카테고리의 다른 글
C programming 기초 7강 (0) 2022.11.28 C programming 기초 6강 (0) 2022.11.17 C programming 기초 4강 (0) 2022.11.03 C programming 기초 3강 (0) 2022.10.20 C programming 기초 2강 (0) 2022.10.11