• 검색 결과가 없습니다.

컴퓨터프로그래밍 2014 2학기 - [이론] 08_ch13_번호가 붙은 변수, 배열

N/A
N/A
Protected

Academic year: 2021

Share "컴퓨터프로그래밍 2014 2학기 - [이론] 08_ch13_번호가 붙은 변수, 배열"

Copied!
34
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)
(2)

여러 개의 변수가 필요한 경우

배열과 변수의 차이

1차원 배열의 선언과 사용

scanf를 이용한 배열요소의 입력

배열과 문자열

2차원 배열의 초기화와 출력

함수와 배열

(3)

프로그램의 특성상 많은 수의 변수가 필요하거나 데이터를 순서대로 저장해야 한다면 변수를 사용하는 것이 불편하므로 배열이라는 기억 공간을 이용한다. 배열과 변수의 공통점 : 데이터를 기억시킬 수 있는 공간 차이점 : 배열은 변수와 달리 번호가 붙은 저장 공간 아파트나 건물 입구에 있는 우편함과 같이 층과 호수를 나타내는 번호로 구별되는 동일한 크기의 연속된 공간과 같이 배열 역시 번호로 구별되는 동일한 데이터 형의 연속된 기억 공간

(4)

2008년 8월 23일에 열렸던 베이징 올림픽 대한민국과 쿠바의 결승전 경기결과 각 회별로 국가를 구분하여 점수를 저장하는 경우 변수를 사용한다면 → 2*9 개의 변수가 필요함. 배열을 이용한다면 → 회수의 데이터를 순서대로 구분하여 저장할 수 있다. 배열은 많은 수의 변수가 필요한 경우나 데이터를 순서대로 저장할 필요가 있는 경우에 유용하게 사용할 수 있는 저장 공간.

(5)

한 학생의 영어 성적과 수학 성적에 대한 평균을 계산 각각의 성적을 저장하고, 점수를 출력하기 위해서는 2개의 변수가 필요함. 50명에 대한 영어 성적과 수학 성적에 대한 평균을 계산 성적을 저장하고, 출력하기 위해 100(50×2)개의 변수가 필요함. 이때 동일한 데이터 형의 변수를 이전과 같은 방법으로 선언하여 사용하기에는 다소 무리가 있다. 배열은 이와 같은 경우에 편리하게 사용할 수 있는 변수이다. 배열은 변수와 같이 데이터를 저장하는 공간이지만 번호가 붙은 특별한 변수이며, 배열을 사용할 경우에는 변수를 사용할 때와 같이 사용 전에 미리 데이터 형을 선언해 주어야 한다.

(6)

2007년 1월에 있었던 대한민국과 중국 올스타의 농구경기 2차전 결과

(7)
(8)

1차원 배열 : korea[0], korea[1]과 같이 배열 요소를 구별하는데 있어서 한 개의 첨자가 사용되는 배열

(9)
(10)

변수의 값을 입력받을 경우와 마찬가지로 배열 이름 앞에 주소 연산자 &를 사용하고 제어 변수 i를 첨자로 이용

실행결과

(11)

문자에 대한 데이터 형인 char 형은 있으나 두 개 이상의 문자가 연속되는 문자열에 대한 데이터 형은 따로 정의되어 있지 않다.

(12)

문자열을 문자형 배열에 저장할 경우 다음과 같이 실제 배열크기에 맞게 저장할 수도 있고, 배열크기보다 적은 문자열을 저장할 경우도 있다.

char str[12]="Kim Eugene"; 또는 char str[12]="Lee JS";

배열 이름(str)이나 배열의 크기(12)만으로는 실제 저장된 문자가 몇 개인가에 대한 정보를 알 수 없다. 이러한 정보가 없다면 배열에 저장된 문자열을 출력할 때나 배열에 새로운 문자열을 대입할 경우에 혼란을 가져다 줄 것이므로 추가적인 정보를 배열에 표시해야 하는데 이를 나타내는 가장 편리한 방법은 "저장된 문자열이 여기에서 끝났음"을 나타내는 NULL문자를 문자열의 마지막 부분에 넣는 것이다. 이러한 방법은 인원수를 확인하기 위해 "뒤로 번호!"를 할 때, 마지막 사람이 자신의 순번을 부르고 나서 "번호 끝!"이라고 외치는 것과 같습니다. NULL(\0)문자는 문자열이 여기서 끝났음을 나타낸다.

(13)

문자열은 첨자를 구분하지 않고 한 번에 입력하고 출력하는 방법을 사용하므로 문자열에 대한 입출력에서 첨자를 사용할 필요가 없다. 문자열의 입력에서는 주소 연산자 &을 생략한다.

(14)

예를 들어 It is a string이라는 문자열을 scanf("%s")로 입력한다면 첫 번째 공백이 나타나는 It까지의 문자열만 변수에 저장된다. 공백이 있는 문자열을 입력 받으려면 scanf는 사용할 수 없으며 대신 라이브러리 함수 gets를 사용

(15)
(16)
(17)

2차원 배열은 1차원 배열과는 달리 두 개의 첨자를 사용하는 배열로서 대표적인 예로 행렬(matrix)을 들 수 있다.

(18)

2차원 배열은 배열 요소에 대해 두 개의 첨자를 사용

첫 번째 첨자는 행을, 두 번째 첨자는 열을 나타낸다.

2차원 배열의 초기화는 행을 우선으로 초기화하므로 다음의 세 가지 초기화 방법은 모두 동일.

(19)
(20)
(21)
(22)

2차원 배열을 이용하면 2개 이상의 문자열을 배열에 저장할 수 있다. 세 개의 국가이름을 2차원 배열에 초기화하여 출력하는 예제 첫 번째 첨자는 저장할 문자열의 개수(3)를 나타내고, 두 번째 첨자는 저장할 문자열의 길이(크기)를 나타낸다. "Thailand"를 저장하려면 최소 9 byte가 필요하므로 문자형 2차원 배열의 두 번째 첨자는 저장할 문자열 중에서 길이가 가장 큰 값(9)을 저장할 수 있는 크기로 설정해 주어야 한다.

(23)

2차원 문자형 배열의 두 번째 첨자는 저장할 문자열 중에서 길이가 가장 큰 값(9)을 저장할 수 있는 크기로 설정해 주어야 하기에 "Korea"와

(24)

값에 의한 호출(call by value)

인수가 인자에 전달될 때 변수 자체가 전달되는 것이 아니라 변수에 저장된 값만 전달되므로 함수 정의부분에서 인자가 변하더라도 인수는 영향을 받지 않는다.

C 언어에서 함수 호출 방법은 두 가지 방법 값에 의한 호출과 참조(또는 주소)에 의한 호출(call by reference, address)을 사용

변수 n에 저장된 값(인수)만 변수 x(인자)에 전달됨

(25)

실행결과

함수 print_array를 호출하면 배열 str이 배열 a로 전달되는데 이때 배열 str의 배열 요소가 전달되는 것이 아니라 배열 str의 주소가 값에 의한 호출로 전달된다.

(26)
(27)

배열이란?

배열이 필요한 경우는?

첨자로 구분되는 변수를 말하며 동일한 데이터 형을 갖는 연속된 기억공간에 데이터를 저장한다. 동일한 데이터 형을 갖는 여러 개의 변수가 필요한 경우에 유용하게 사용된다. 배열은 번호가 붙는 변수이므로 데이터의 순서로 첨자를 이용한다.

배열과 변수의 공통점과 차이점은 ?

공통점 : 데이터를 저장하는 공간, 사용하기 전에 미리 선언해야 한다. 차이점 : 배열은 첨자가 붙은 변수로 생각할 수 있다. 배열은 한 번의 선언으로 여러 개의 저장공간을 생성할 수 있다.

(28)

1차원 배열을 초기화하는 방법은?

(29)

문자열과 배열의 초기화 방법은?

(30)

문자열의 입력과 출력

scanf사용시 주소 연산자 &를 생략 문자열을 출력할 때는 배열 이름과 %s를 사용 scanf로 문자열을 입력 받을 경우 문자열에 공백이 없어야 한다. 공백을 문자열에 삽입하는 경우는 함수 gets를 사용한다.

(31)

2차원 배열의 초기화

2차원 배열은 배열 요소에 대해 두 개의 첨자를 사용

첫 번째 첨자는 행을, 두 번째 첨자는 열을 나타낸다.

2차원 배열의 초기화는 행을 우선으로 초기화하므로 다음의 세 가지 초기화 방법은 모두 동일.

(32)

2차원 배열과 문자열

2차원 문자형 배열의 두 번째 첨자는 저장할 문자열 중에서 길이가 가장 큰 값(9)을 저장할 수 있는 크기로 설정해 주어야 하기에 "Korea"와

"China"에 대해서는 기억공간의 낭비가 생긴다.

(33)

1차원 배열과 함수

배열은 함수의 인자로 사용되거나 함수의 결과 값으로 반환할 수 있는데

배열을 반환하는 경우에는 포인터가 사용된다. 함수의 가인수로 1차원 배열을 사용할 경우에는 배열의 이름만 사용하고 배열의 크기는 생략한다.

(34)

2차원 배열과 함수

함수의 가인수로 2차원 배열을 사용하는 경우 행의 크기를 나타내는 첫 번째 배열 첨자는 생략할 수 있지만 두 번째 배열 첨자는 생략할 수 없다.

참조

관련 문서

알파 룸은 1층 세대에서 보행가로 방향으로 돌출되어 구성되어 있는 별도의 공간 취미실이나 서재, 기타 여가를 위한 공간으로 사용할 수 있게 제공된 것으로 당초부터 이

● 중소기업이 ①「중소기업기본법」의 규정에 따른 중소기업 외의 기업과 합병하는 경우 ②유예 기간 중에 있는 기업과 합병 ③독립성기준의 요건을 충족하지 못하게

[r]

[r]

데이터 탐색가는 수많은 데이터를 걸러내 실제로 필요한 데이터를 발견하는 능력을 가진 사람이다.. - 분석한 자료를 가지고 찾아낸 우리가 적용할

* ‘ 실용수학’ 은 10단계 수학의 이수 여부에 관계없이 학생들이 실생활에 필요한 수학 을 학습하기 위하여 선택할 수 있는 과목으로 수학의 기본적인

평소 과학에 대한 관심이 높지만 문제 풀이의 수업과 성적에 대 한 부담감으로 늘 개념 정리와 문제 풀이 수업에 적응되어서 수업 참여도가 낮았던 학생들 도 실생활에서

상상력과 예술적 감성 까지 아우를 수 있는 능력을 겸비한 사람.