Posts Subscribe comment Comments

ARRAYS

Array adalah serangkaian unsur-unsur dari jenis yang sama ditempatkan di lokasi memori yang berdekatan yang dapat secara individual direferensikan dengan menambahkan indeks unik pengenal.

That means that, for example, we can store 5 values of type int in an array without having to declare 5 different variables, each one with a different identifier. Itu berarti bahwa, misalnya, kita dapat menyimpan 5 nilai bertipe int dalam array tanpa harus mendeklarasikan 5 variabel yang berbeda, masing-masing dengan identifier yang berbeda. Instead of that, using an array we can store 5 different values of the same type, int for example, with a unique identifier. Daripada itu, menggunakan array, kita dapat menyimpan 5 nilai yang berbeda dari jenis yang sama, int misalnya, dengan identifikasi unik.

For example, an array to contain 5 integer values of type int called billy could be represented like this: Sebagai contoh, sebuah array berisi nilai integer 5 bertipe int disebut billy dapat diwakili seperti ini:



where each blank panel represents an element of the array, that in this case are integer values of type int . dimana setiap panel kosong merupakan elemen array, yang dalam hal ini adalah nilai integer tipe int. These elements are numbered from 0 to 4 since in arrays the first index is always 0 , independently of its length. Unsur-unsur diberi nomor dari 0 sampai 4 karena dalam array indeks pertama selalu 0, terlepas dari panjangnya.

Like a regular variable, an array must be declared before it is used. Seperti variabel reguler, array harus dideklarasikan sebelum digunakan. A typical declaration for an array in C++ is: Sebuah pernyataan khas untuk sebuah array di C + + adalah:


type name [elements]; tipe nama [elemen];


where type is a valid type (like int , float ...), name is a valid identifier and the elements field (which is always enclosed in square brackets [] ), specifies how many of these elements the array has to contain. dimana jenis adalah jenis yang valid (seperti int, float ...), adalah nama yang valid pengenal dan elemen bidang (yang selalu ditutupi dalam kurung siku []), menentukan berapa banyak elemen-elemen array telah mengandung.

Therefore, in order to declare an array called billy as the one shown in the above diagram it is as simple as: Oleh karena itu, dalam rangka untuk mendeklarasikan array disebut billy sebagai yang ditunjukkan dalam diagram di atas itu adalah yang sederhana seperti:

 
int billy [5]; 


NOTE : The elements field within brackets [] which represents the number of elements the array is going to hold, must be a constant value, since arrays are blocks of non-dynamic memory whose size must be determined before execution. CATATAN: Bidang unsur-unsur dalam kurung [] yang merupakan jumlah elemen array akan terus, harus menjadi nilai konstan, karena array blok memori non-dinamis yang ukurannya harus ditentukan sebelum eksekusi. In order to create arrays with a variable length dynamic memory is needed, which is explained later in these tutorials. Dalam rangka untuk menciptakan array dengan panjang variabel memori dinamis diperlukan, yang dijelaskan nanti dalam tutorial ini.

Initializing arrays. Inisialisasi array.

When declaring a regular array of local scope (within a function, for example), if we do not specify otherwise, its elements will not be initialized to any value by default, so their content will be undetermined until we store some value in them. Ketika mendeklarasikan array regular dari lingkup lokal (dalam satu fungsi, misalnya), jika kita tidak menentukan lain, unsur-unsur yang tidak akan diinisialisasi ke nilai default, sehingga konten mereka akan belum ditentukan sampai kita menyimpan beberapa nilai di dalamnya. The elements of global and static arrays, on the other hand, are automatically initialized with their default values, which for all fundamental types this means they are filled with zeros. Elemen-elemen array global dan statis, di sisi lain, secara otomatis diinisialisasi dengan nilai standar, yang untuk semua jenis fundamental ini berarti mereka penuh dengan nol.

In both cases, local and global, when we declare an array, we have the possibility to assign initial values to each one of its elements by enclosing the values in braces { } . Dalam kedua kasus, lokal dan global, ketika kita mendeklarasikan array, kita memiliki kemungkinan untuk menetapkan nilai awal untuk masing-masing unsur dengan melampirkan nilai dalam kurung {}. For example: Sebagai contoh:

 
int billy [5] = { 16, 2, 77, 40, 12071 }; 


This declaration would have created an array like this: Deklarasi ini akan menciptakan sebuah array seperti ini:



The amount of values between braces { } must not be larger than the number of elements that we declare for the array between square brackets [ ] . Jumlah nilai antara kurung {} tidak boleh lebih besar dari jumlah elemen yang kita mendeklarasikan untuk array antara tanda kurung siku []. For example, in the example of array billy we have declared that it has 5 elements and in the list of initial values within braces { } we have specified 5 values, one for each element. Misalnya, dalam contoh array billy kami telah menyatakan bahwa ia memiliki 5 elemen dan dalam daftar nilai awal dalam kurung kurawal {} kami telah ditetapkan 5 nilai, satu untuk setiap elemen.

When an initialization of values is provided for an array, C++ allows the possibility of leaving the square brackets empty [ ] . Ketika sebuah inisialisasi nilai disediakan untuk array, C + + memungkinkan kemungkinan meninggalkan kurung siku [] kosong. In this case, the compiler will assume a size for the array that matches the number of values included between braces { } : Dalam hal ini, kompiler akan mengasumsikan ukuran array yang sesuai dengan jumlah nilai termasuk antara kurung kurawal {}:

 
int billy [] = { 16, 2, 77, 40, 12071 }; 


After this declaration, array billy would be 5 ints long, since we have provided 5 initialization values. Setelah deklarasi ini, array billy akan 5 int panjang, karena kami telah menyediakan 5 nilai inisialisasi.

Accessing the values of an array. Mengakses nilai array.


In any point of a program in which an array is visible, we can access the value of any of its elements individually as if it was a normal variable, thus being able to both read and modify its value. Dalam setiap titik di mana sebuah program array terlihat, kita dapat mengakses nilai dari setiap elemen secara sendiri seolah-olah itu adalah variabel normal, sehingga bisa baik membaca dan memodifikasi nilainya. The format is as simple as: Formatnya adalah yang sederhana seperti:


name[index] ] Nama [indeks


Following the previous examples in which billy had 5 elements and each of those elements was of type int , the name which we can use to refer to each element is the following: Berikut contoh sebelumnya di mana billy memiliki 5 elemen dan masing-masing unsur adalah bertipe int, nama yang bisa kita gunakan untuk merujuk ke masing-masing elemen adalah sebagai berikut:



For example, to store the value 75 in the third element of billy , we could write the following statement: Misalnya, untuk menyimpan nilai 75 dalam elemen ketiga dari billy, kita bisa menulis pernyataan berikut:

 
billy[2] = 75; 


and, for example, to pass the value of the third element of billy to a variable called a , we could write: dan, misalnya, untuk melewati nilai elemen ketiga dari billy ke variabel yang disebut, kita bisa menulis:

 
a = billy[2]; 


Therefore, the expression billy[2] is for all purposes like a variable of type int . Oleh karena itu, istilah billy [2] adalah untuk semua tujuan seperti sebuah variabel bertipe int.

Notice that the third element of billy is specified billy[2] , since the first one is billy[0] , the second one is billy[1] , and therefore, the third one is billy[2] . Perhatikan bahwa elemen ketiga ditetapkan billy billy [2], karena yang pertama adalah billy [0], yang kedua adalah billy [1], dan oleh karena itu, yang ketiga adalah billy [2]. By this same reason, its last element is billy[4] . Dengan alasan yang sama, elemen terakhir adalah billy [4]. Therefore, if we write billy[5], we would be accessing the sixth element of billy and therefore exceeding the size of the array. Oleh karena itu, jika kita menulis billy [5], kami akan mengakses elemen keenam billy dan karenanya melebihi ukuran array.

In C++ it is syntactically correct to exceed the valid range of indices for an array. Dalam C + + itu adalah sintaksis benar untuk melebihi rentang indeks berlaku untuk array. This can create problems, since accessing out-of-range elements do not cause compilation errors but can cause runtime errors. Hal ini dapat menciptakan masalah, karena akses keluar-elemen-range tidak menyebabkan error kompilasi, tetapi dapat menyebabkan error runtime. The reason why this is allowed will be seen further ahead when we begin to use pointers. Alasan mengapa hal ini diperbolehkan akan terlihat lebih jauh ke depan ketika kita mulai menggunakan pointer.

At this point it is important to be able to clearly distinguish between the two uses that brackets [ ] have related to arrays. Pada titik ini penting untuk dapat dengan jelas membedakan antara dua penggunaan yang kurung [] harus berhubungan dengan array. They perform two different tasks: one is to specify the size of arrays when they are declared; and the second one is to specify indices for concrete array elements. Mereka melakukan dua tugas yang berbeda: satu adalah untuk menentukan ukuran array saat diumumkan, dan yang kedua adalah untuk menentukan indeks untuk elemen array beton. Do not confuse these two possible uses of brackets [ ] with arrays. Jangan bingung kedua kemungkinan menggunakan kurung [] dengan array.

1 1
2 2
int billy[5]; // declaration of a new array billy[2] = 75; // access to an element of the array. 


If you read carefully, you will see that a type specifier always precedes a variable or array declaration, while it never precedes an access. Jika Anda membaca dengan seksama, Anda akan melihat bahwa tipe penspesifikasi selalu mendahului deklarasi variabel atau array, sementara itu tidak pernah mendahului mengakses.

Some other valid operations with arrays: Beberapa berlaku operasi lainnya dengan array:

1 1
2 2
3 3
4 4
billy[0] = a; billy[a] = 75; b = billy [a+2]; billy[billy[a]] = billy[2] + 5; 


1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
11 11
12 12
13 13
14 14
15 15
16 16
// arrays example #include  using namespace std; int billy [] = {16, 2, 77, 40, 12071}; int n, result=0; int main () { for ( n=0 ; n<5 ; n++ ) { result += billy[n]; } cout << result; return 0; } 
12206 12206 


Multidimensional arrays Multidimensional array


Multidimensional arrays can be described as "arrays of arrays". Multidimensional array dapat digambarkan sebagai "array dari array". For example, a bidimensional array can be imagined as a bidimensional table made of elements, all of them of a same uniform data type. Misalnya, array bidimensional dapat dibayangkan sebagai meja yang terbuat dari unsur-unsur bidimensional, semuanya dari jenis data yang seragam yang sama.



jimmy represents a bidimensional array of 3 per 5 elements of type int . jimmy merupakan array bidimensional dari 3 per 5 elemen tipe int. The way to declare this array in C++ would be: Cara untuk mendeklarasikan array ini di C + + akan menjadi:

 
int jimmy [3][5]; 


and, for example, the way to reference the second element vertically and fourth horizontally in an expression would be: dan, misalnya, cara untuk referensi elemen kedua vertikal dan horizontal keempat dalam sebuah ekspresi akan menjadi:

 
jimmy[1][3] 




(remember that array indices always begin by zero). (Ingat bahwa indeks array selalu dimulai dengan nol).

Multidimensional arrays are not limited to two indices (ie, two dimensions). Array multidimensi tidak terbatas pada dua indeks (yaitu, dua dimensi). They can contain as many indices as needed. Mereka dapat berisi sebagai indeks yang diperlukan. But be careful! Tapi hati-hati! The amount of memory needed for an array rapidly increases with each dimension. Jumlah memori yang diperlukan untuk array dengan cepat meningkat dengan dimensi masing-masing. For example: Sebagai contoh:

 
char century [100][365][24][60][60]; 


declares an array with a char element for each second in a century, that is more than 3 billion chars. menyatakan sebuah array dengan elemen char untuk setiap kedua dalam satu abad, yang lebih dari 3 milyar karakter. So this declaration would consume more than 3 gigabytes of memory! Jadi, deklarasi ini akan mengkonsumsi lebih dari 3 gigabyte memori!

Multidimensional arrays are just an abstraction for programmers, since we can obtain the same results with a simple array just by putting a factor between its indices: Array multidimensi hanya sebuah abstraksi bagi programmer, karena kita dapat memperoleh hasil yang sama dengan array sederhana hanya dengan meletakkan faktor antara indeksnya:

1 1
2 2
int jimmy [3][5]; // is equivalent to int jimmy [15]; // (3 * 5 = 15) 


With the only difference that with multidimensional arrays the compiler remembers the depth of each imaginary dimension for us. Dengan-satunya perbedaan bahwa dengan array multidimensi compiler mengingat kedalaman masing-masing dimensi imajiner untuk kita. Take as example these two pieces of code, with both exactly the same result. Ambil contoh kedua potongan kode, dengan kedua persis hasil yang sama. One uses a bidimensional array and the other one uses a simple array: Satu menggunakan array bidimensional dan yang lainnya menggunakan array sederhana:

multidimensional array array multidimensi pseudo-multidimensional array pseudo-multidimensional array
#define WIDTH 5 # Define WIDTH 5
#define HEIGHT 3 # Define HEIGHT 3

int jimmy [HEIGHT][WIDTH]; jimmy int [TINGGI] [LEBAR];
int n,m; int n, m;

int main () int main ()
{ {
  for (n=0;n untuk (n = 0; n TINGGI <; n + +)
    for (m=0;m for (m = 0; WIDTH 
    { {
      jimmy[n][m]=(n+1)*(m+1); jimmy [n] [m] = (n +1) * (m +1);
    } }
  return 0; return 0;
} }
#define WIDTH 5 # Define WIDTH 5
#define HEIGHT 3 # Define HEIGHT 3

int jimmy [HEIGHT * WIDTH]; int jimmy [HEIGHT * WIDTH];
int n,m; int n, m;

int main () int main ()
{ {
  for (n=0;n untuk (n = 0; n TINGGI <; n + +)
    for (m=0;m for (m = 0; WIDTH 
    { {
      jimmy[n*WIDTH+m]=(n+1)*(m+1); jimmy [n * WIDTH + m] = (n +1) * (m +1);
    } }
  return 0; return 0;
} }


None of the two source codes above produce any output on the screen, but both assign values to the memory block called jimmy in the following way: Tak satu pun dari kedua kode program di atas menghasilkan output apapun pada layar, tetapi keduanya menempatkan nilai ke blok memori yang disebut jimmy dengan cara berikut:



We have used "defined constants" ( #define ) to simplify possible future modifications of the program. Kami telah menggunakan "Konstanta buatan" (# define) untuk mempermudah modifikasi kemungkinan masa depan program. For example, in case that we decided to enlarge the array to a height of 4 instead of 3 it could be done simply by changing the line: Misalnya, dalam hal ini kami memutuskan untuk memperbesar array ke ketinggian 4 bukan 3 itu bisa dilakukan hanya dengan mengubah baris:

 
#define HEIGHT 3 

to: untuk:
 
#define HEIGHT 4 


with no need to make any other modifications to the program. dengan tidak perlu melakukan modifikasi lain untuk program tersebut.

Arrays as parameters Array sebagai parameter

At some moment we may need to pass an array to a function as a parameter. Pada beberapa saat kami mungkin harus melewati array ke fungsi sebagai parameter. In C++ it is not possible to pass a complete block of memory by value as a parameter to a function, but we are allowed to pass its address. Dalam C + + itu tidak mungkin untuk melewati blok lengkap memori dengan nilai sebagai parameter ke fungsi, tetapi kita bisa lewat alamatnya. In practice this has almost the same effect and it is a much faster and more efficient operation. Dalam praktik ini memiliki efek hampir sama dan itu adalah operasi lebih cepat dan lebih efisien.

In order to accept arrays as parameters the only thing that we have to do when declaring the function is to specify in its parameters the element type of the array, an identifier and a pair of void brackets [] . Dalam rangka untuk menerima array sebagai parameter satu-satunya yang harus kita lakukan ketika mendeklarasikan berfungsi untuk menentukan dalam parameter tipe elemen dari array, sebuah identifier dan sepasang kurung void []. For example, the following function: Sebagai contoh, fungsi berikut:

 
void procedure ( int arg[]) 


accepts a parameter of type "array of int " called arg . menerima parameter tipe "array int" arg disebut. In order to pass to this function an array declared as: Dalam rangka untuk lolos ke fungsi ini array dinyatakan sebagai:

 
int myarray [40]; 


it would be enough to write a call like this: akan cukup untuk menulis panggilan seperti ini:

 
procedure (myarray); 


Here you have a complete example: Di sini Anda memiliki contoh lengkap:

1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
11 11
12 12
13 13
14 14
15 15
16 16
17 17
18 18
// arrays as parameters #include  using namespace std; void printarray ( int arg[], int length) { for ( int n=0; n<< arg[n] << " " ; cout << "\n" ; } int main () { int firstarray[] = {5, 10, 15}; int secondarray[] = {2, 4, 6, 8, 10}; printarray (firstarray,3); printarray (secondarray,5); return 0; } 
5 10 15 5 10 15 
 2 4 6 8 10 2 4 6 8 10 


As you can see, the first parameter ( int arg[] ) accepts any array whose elements are of type int , whatever its length. Seperti yang anda lihat, parameter pertama (int arg []) menerima setiap array yang elemen-elemen yang bertipe int, apa pun panjangnya. For that reason we have included a second parameter that tells the function the length of each array that we pass to it as its first parameter. Untuk itu kami telah memasukkan parameter kedua yang memberitahukan fungsi panjang setiap array yang kita lolos ke sebagai parameter pertama. This allows the for loop that prints out the array to know the range to iterate in the passed array without going out of range. Hal ini memungkinkan untuk loop yang mencetak array untuk mengetahui kisaran untuk beralih di dalam array berlalu tanpa keluar dari jangkauan.

In a function declaration it is also possible to include multidimensional arrays. Dalam deklarasi fungsi juga memungkinkan untuk memasukkan array multidimensi. The format for a tridimensional array parameter is: Format untuk parameter array trimatra adalah:

 
base_type[][depth][depth] 


for example, a function with a multidimensional array as argument could be: misalnya, fungsi dengan array multidimensi sebagai argumen dapat:

 
void procedure ( int myarray[][3][4]) 


Notice that the first brackets [] are left blank while the following ones are not. Perhatikan bahwa kurung pertama] [yang dibiarkan kosong sementara yang berikut tidak. This is so because the compiler must be able to determine within the function which is the depth of each additional dimension. Hal ini terjadi karena compiler harus dapat menentukan dalam fungsi yang kedalaman dari masing-masing dimensi tambahan.

Arrays, both simple or multidimensional, passed as function parameters are a quite common source of errors for novice programmers. Array, baik sederhana atau multidimensi, dikirimkan sebagai parameter fungsi adalah sumber kesalahan yang cukup umum untuk programmer pemula. I recommend the reading of the chapter about Pointers for a better understanding on how arrays operate. Saya sarankan membaca bab tentang Pointer untuk pemahaman yang lebih baik tentang bagaimana array beroperasi.

0

Silahkan Tulis Komentar Anda ...

Tunjukan apa yang kau harapkan................
komentar anda sangat berharga bagi kami

Related Posts Plugin for WordPress, Blogger...