데이터 저장소.

플레이어가 복잡하고 비우호적인 사용자와 경쟁하는 "적대적인 사용자"라는 컴퓨터 게임을 개발했다고 가정합니다. 컴퓨터 인터페이스. 이제 5년 동안 이 게임의 월별 판매를 추적하는 프로그램을 작성해야 합니다. 또는 Hacker Hero 트레이딩 카드의 인벤토리가 필요하다고 가정해 보겠습니다.
곧 정보를 저장하고 처리하기 위해 단순한 기본 데이터 유형 이상이 필요하다는 결론에 도달하게 될 것입니다.

 

배열. 소개.

많은 양의 데이터로 작업하기 쉽도록 셀 그룹에 공통 이름. 이러한 셀 그룹을 배열이라고 합니다.
배열 – 나란히 위치하고 공통 이름을 갖는 동일한 유형의 메모리 셀 그룹입니다. 그룹의 각 셀에는 고유 번호가 있습니다.

배열로 작업할 때 알아야 할 세 가지가 있습니다.
엑스 어레이에 필요한 크기의 메모리를 할당합니다.
엑스 원하는 셀에 데이터 쓰기
엑스 셀에서 데이터를 읽습니다.

배열을 만듭니다.

배열을 만들 때 메모리에 공간이 할당됩니다(특정 셀 수). <예비> 1) 단순히 요소를 열거하여 배열을 만들 수 있습니다. <예비> int[] 숫자 = < 코드>새로운 <코드>정수<코드>[] { 1, 2, 3, 5 }; int 는 배열의 모든 개체가 정수임을 의미합니다. int 대신 다른 데이터 유형이 있을 수 있습니다. 예를 들어, string[] names = ["Vasya", "Peter", "Fedya"]; 2) 배열의 값을 바로 지정할 수는 없고 필요한 길이의 배열만 생성하면 됩니다. int[] nums = new int[4]; 3) 배열은 항상 "인식"합니다. 너의 사이즈. 배열 a의 크기는 다음과 같이 찾을 수 있습니다.
a.길이;
종종 배열의 크기는 별도의 변수에 저장되므로 다른 배열 크기로 작업하도록 프로그램을 쉽게 변경할 수 있습니다. 예:
<예비> int N = 10; // 배열의 크기를 변수 N에 저장 int[] 숫자 = new int[4]; // 크기 N의 배열 생성 Console.Write(숫자.길이); // 배열의 크기 표시 배열의 크기는 키보드에서 설정할 수 있습니다.

배열 요소 참조 < /u>

대부분의 배열 유용성은 해당 요소에 개별적으로 액세스할 수 있다는 사실에서 비롯됩니다.
이렇게 하는 방법은 인덱스를 사용하여 요소에 번호를 매기는 것입니다.
인덱스는 특정 배열 요소를 가리키는 값입니다.

기억: C# 배열 번호 지정은 0부터 시작합니다.< br />
배열 A에 액세스하는 예:
<예비> int x = (A[3] + 5) * A[1] / / 값 A[3] 및 A[1] 읽기 A[0] = x + 6 // A[0]에 새 값 쓰기 배열 요소 작업을 위한 프로그램을 분석해 보겠습니다. <예비> int i = 1; int[] A = 새로운 int[5]; //5개 요소의 배열 생성 A[0] = 23; // 배열의 5개 요소 각각에 대해(인덱스는 0에서 4까지) A[1] = 12; // 특정 값 쓰기 A[2] = 7; A[3] = 43; A[4] = 51; A[2] = A[i] + 2*A[i-1] + A[2*i]; // 인덱스가 2인 요소의 값을 표현식의 결과로 변경 // i=1이므로 변수 i의 값을 우리가 얻는 표현식으로 대체합니다. // 다음 식 A[2] = A[1] + 2*A[0] + A[2]; Console.Write((A[2] + A[4])); 이 프로그램을 실행한 결과, 인덱스 2와 인덱스 4는 화면에 116과 동일하게 나타납니다. 예제에서 볼 수 있듯이 배열의 모든 요소에 액세스할 수 있습니다. 또한 다양한 공식을 사용하여 필요한 요소 번호를 계산합니다(예: 프로그램 A[i-1] 또는 A[2*i]에서와 같이 이러한 경우, 요소 인덱스가 계산되고 i)의 값에 따라 달라집니다.

예제 프로그램을 분석해 봅시다.
<예비> int N = 5; int[] A = 새로운 int[N]; 정수 x = 1; A[x + 4] = A[x] + A[2 * (x + 1)];  // x를 식과 계산에 대입한 후                            // 다음 줄을 얻습니다. A[5] = A[1] + A[4]                           // A[5] 그러한 요소가 존재하지 않습니다.                           // 오류 - 범위를 벗어난 배열 배열은 5개의 요소로 선언됩니다. 4. 6번째 줄에 있는 프로그램이 존재하지 않는 요소인 A[5]를 참조하는 것을 볼 수 있습니다.
프로그램이 배열의 범위를 넘어선 것으로 나타났습니다.
배열 오버런은 배열에 존재하지 않는 인덱스의 요소에 대한 액세스입니다.
이러한 경우 프로그램은 일반적으로 런타임 오류와 함께 충돌합니다.

 

배열 작업을 할 때 일반적으로 배열의 모든 요소를 ​​한 번에 작업해야 합니다.
요소 반복: 배열의 모든 요소를 ​​살펴보고 필요한 경우 각 요소에 대해 일부 작업을 수행합니다.
이를 위해 0 에서 N-1으로 변경되는 변수가 있는 루프가 가장 자주 사용되며 여기서 N 은 숫자입니다. 배열 요소.
N에서 배열의 현재 크기, 즉
를 고려합니다. N = A.길이;
<예비> ... for (int i = 0; i < N; i++) { // 여기서 우리는 A[i]로 작업합니다. } 지정된 루프에서 i 변수는 다음 값을 사용합니다. 0, 1, 2, ..., N-1.  따라서 루프의 각 단계에서 숫자 i가 있는 배열의 특정 요소에 액세스합니다.
즉, A[i] 배열의 한 요소로 수행해야 하는 작업을 설명하고 이러한 작업을 루프 안에 배치하는 것으로 충분합니다.

첫 번째 자연수로 배열을 채우는 프로그램을 작성해 보겠습니다. 즉, 프로그램이 끝나면 배열의 요소가 같아야 합니다
<예비> A[0] = 1 A[1] = 2 A[2] = 3 ... A[N - 1] = N 패턴을 쉽게 볼 수 있습니다. 배열 요소의 값은 요소의 인덱스.
루프는 다음과 같습니다
<예비> for (int i = 0; i < N; i++) { A[ i] = i + 1; }

배열 요소를 사용하는 추가 방법
<코드 루프>를 제외하고 , foreach - 인덱스를 사용하지 않고 배열의 모든 요소를 ​​반복합니다. 때로는 예를 들어 화면에 배열을 표시하는 것이 편리할 수 있습니다.   foreach(A의 정수 i) { Console.Write(i + " "); }
그리고 이것은 키보드에서 요소가 한 줄에 쓰여지고 공백으로 구분되는 배열을 읽는 방법입니다. System.Linq 사용; // 배열 작업과 관련된 함수를 사용하려면 이 지시문을 작성해야 합니다. ... 문자열 텍스트 = Console.ReadLine(); int[] array = text.Split(' ').Select(int.Parse).ToArray(); // Split()은 문자열을 별도의 객체로 분할합니다(이 경우 공간 분할). // Select(int.Parse)는 각 객체(문자열)를 int로 변환합니다. // ToArray()는 수신된 모든 객체를 배열에 씁니다.