본문 바로가기

프로그래밍, 쉽게 배워보자

배열

배열(array)
데이터를 넣을 때 일일이 변수를 선언해야 합니다. 변수란 '데이터를 보관하는 상자'와 같다고 말씀드렸는데요, 만약 데이터의 종류나 수가 많아진다면 일일이 변수 이름을 만들어 선언하는 것은 보통일이 아닙니다.

이럴 때 같은 종류의 데이터끼리 묶어 한 번만 선언한다면 무척 편리할텐데요, 이렇게 같은 종류의 데이터마다 0부터 순서대로 번호를 매겨 묶음 전체에 하나의 이름을 붙인 것을 배열(array)이라고 합니다.

예를 들어 1반 학생들의 수학 점수 평균을 내고 싶을 때,  dat, total, answer 의 세 가지 변수명만 선언하면 됩니다. 그러면 학생들의 점수를 보관하는 상자에는 자동으로 1, 2, 3...라는 번호가 자동으로 부여됩니다. 이때 이 상자들 인에는 같은 종류의 데이터, 같은 데이터타입(정수형, 실수형, 문자형...)만 넣을 수 있습니다.

배열(array) 선언하는 방법
배열의 이름, 데이터타입, 상자 개수도 선언해야 함. 이때 각각의 상자를 '요소', 상자의 개수를 '요소 수'라고 합니다.

배열을 선언하면 이 요소마다 순차적으로 연속하는 번호가 자동으로 부여됩니다. 이 번호를 인덱스(index) 또는 첨자라고 합니다. C언어의 경우, 0부터 4까지의 인데스는 dat[0], dat[1], dat[2], dat[3], dat[4]처럼 나타나게 됩니다.

배열과 반복(루프)구조
배열과 루프 구조는 흔히 같이 쓰일 때가 많습니다. 1번부터 5번까지 회원의 점수를 평균 내고자 한다면,
1. 요소 수가 다섯 개인 정수형 배열을 준비
2. 카운터 값이 0부터 4까지일 때
3.        배열의 □번째 점수를 대입한다.
4.        카운터를 하나 늘린다.
5.        2로 돌아간다.
6. 합계를 넣는 변수 total을 0으로 초기화한다.
7. 카운터의 값이 0부터 4까지일 때
8.        total에 배열의 □번째의 값을 더하여, 그 답으로 total을 덮어쓴다.
9.        카운터를 하나 늘린다.
10.      7로 돌아간다.
11. total을 배열의 요소 수로 나누어, 답을 answer에 넣는다. 

위 내용을 논리의 흐름도로 나타내면 다음과 같습니다.

배열과 반복구조배열과 반복구조

배열 사용시 주의할 점
데이터수와 인덱스와 요소 수가 일치해야 합니다.  만약 인덱스가 부족한 경우, 다른 영역의 데이터를 망가뜨릴 위험이 있습니다.

2차원 배열
같은 종류의 데이터가 2개 이상일 때의 배열을 2차원배열이라고 합니다. 예를 들어 'A반 5명의 학생들의 과학, 사회 점수를 평균 내는 프로그램'을 만든다고 가정합시다. 과학, 사회 등 같은 데이터 종류가 2개 이상입니다. 이 때 2×5의 행/열로 데이터의 배열이 짜여지는데요, 이것을 2차원 배열이라고 합니다.

2차원배열2차원 배열

즉 '표 형식의 데이터를 보관하는 상자들의 나열' 인데요, '정수형의 값을 넣기 위해서 dat라는 이름의 3행×5열의 배열을 사용한다.'라고 선언합니다.  그리고 이것을 dat [0][0]과 같이 표현합니다.

2차원 배열2차원 배열(array)

2차원 배열 활용 방법
배열과 마찬가지로 반복구조(루프)와 같이 활용되는 경우가 많습니다. 특히 반복구조의 중첩(네스트)와 잘 어울리는데요, 위 내용의 논리구조를 풀어보면,

1. 시험 점수를 넣기 위해 2행×5열의 정수형 배열을 준비한다.
2. 행 방향의 카운터가 0부터 1사이
3.      열 방향의 카운터가 0부터 4사이
4.           배열의 ○ 행 □ 열째의 상자에 점수를 넣는다.
5.           열 방향의 카운터를 하나 늘린다.
6.           3으로 돌아간다.
7.       행 방향의 카운터를 하나 늘린다.
8.           2로 돌아간다.
9.  행 방향의 카운터가 0부터 1사이
10.          합계를 넣을 변수 total을 0으로 초기화
11.          열 방향의 카운터가 0부터 4사이
12.                total에 배열 ○행□열째의 값을 더하여, 그 답으로 total을 덮어쓴다.
13.                열 방향의 카운터를 하나 늘린다.
14.                11로 돌아간다.
15.            total을 열 수로 나누어 답을 answer에 넣는다.
16.            answer의 값을 출력한다.
17.            행 방향의 카운터를 하나 늘린다.
18.             9로 돌아간다.

2차원배열과 반복구조2차원배열과 반복구조

♤ 위 내용은 [기초 튼튼 코드 튼튼, 다함께 프로그래밍] (출판사 : 제이펍)이라는 책을 참조했음을 밝힙니다. 프로그래밍의 기본을 쉽게 익히기에 무척 좋은 책입니다!