Larik enumerasi dan himpunan

Tipe ordinal sebagai indeks larik

Larik panjang tetap Constant-length arrays

Tipe enumerasi dan tipe ordinal rentang buatan sendiri semuanya dapat dipakai sebagai indeks larik, memungkinkan penyesuaian rentang indeks larik secara fleksibel.

Berikut contoh enumerasi sebagai indeks larik

type
  // 1. Indeks rentang angka biasa 0~9
  TArrayOfTenStrings = array [0..9] of string;

  // 2. Indeks mulai dari angka 1 1~10
  TArrayOfTenStrings1Based = array [1..10] of string;

  // 3. Tipe ordinal buatan sendiri dipakai sebagai indeks larik
  TMyNumber = 0..9;
  TAlsoArrayOfTenStrings = array [TMyNumber] of string;

  // 4. Tipe enumerasi langsung sebagai indeks larik (paling sering dipakai)
  TAnimalKind = (akDuck, akCat, akDog);
  TAnimalNames = array [TAnimalKind] of string;
var
  AnimalNameArr: TAnimalNames;
begin
  AnimalNameArr[akDuck] := 'Bebek';
  AnimalNameArr[akCat] := 'Kucing';
  AnimalNameArr[akDog] := 'Anjing';
end;
Code language: PHP (php)

IntToStr adalah fungsi konversi standar yang didefinisikan di unit SysUtils. Fungsi: mengubah bilangan bulat menjadi string.

Contoh lengkap

{$ifdef FPC} {$mode objfpc} {$H+} {$endif}
{$codepage utf8}
program ArrayIndexDemo;

uses
  SysUtils; // Wajib dimuat agar bisa pakai IntToStr

type
  // 1. Indeks rentang angka biasa 0~9
  TArrayOfTenStrings = array [0..9] of string;

  // 2. Indeks mulai dari angka 1 1~10
  TArrayOfTenStrings1Based = array [1..10] of string;

  // 3. Tipe ordinal buatan sendiri dipakai sebagai indeks larik
  TMyNumber = 0..9;
  TAlsoArrayOfTenStrings = array [TMyNumber] of string;

  // 4. Tipe enumerasi langsung sebagai indeks larik (paling sering dipakai)
  TAnimalKind = (akDuck, akCat, akDog);
  TAnimalNames = array [TAnimalKind] of string;

var

  // Buat larik dengan indeks 0-9
  Arr0To9: TArrayOfTenStrings;

  // Buat larik dengan indeks 1-10
  Arr1To10: TArrayOfTenStrings1Based;

  // Buat larik dengan indeks ordinal buatan
  ArrCustomIdx: TAlsoArrayOfTenStrings;

  // Deklarasikan variabel I bertipe TMyNumber buatan sendiri
  I: TMyNumber;

  // Buat variabel larik enumerasi
  AnimalNameArr: TAnimalNames;

begin

  // 1. Penggunaan larik indeks 0~9
  Arr0To9[0] := 'Elemen nomor 0'; // Pemberian nilai
  Arr0To9[5] := 'Elemen tengah';
  Writeln(Arr0To9[0]); // Membaca nilai

  // 2. Penggunaan larik indeks mulai 1, tidak bisa akses pakai indeks 0
  Arr1To10[1] := 'Item pertama';
  Arr1To10[10] := 'Item terakhir';
  Writeln(Arr1To10[10]);

  // 3. Perulangan larik pakai tipe ordinal TMyNumber sebagai indeks
  for I := Low(TMyNumber) to High(TMyNumber) do
  begin
    ArrCustomIdx[I] := 'Nomor urut ' + IntToStr(I);
  end;

  Writeln(ArrCustomIdx[3]);

  // Demo isi nilai ke larik enumerasi pakai nilai enum sebagai indeks
  AnimalNameArr[akDuck] := 'Bebek';
  AnimalNameArr[akCat] := 'Kucing';
  AnimalNameArr[akDog] := 'Anjing';
end.Code language: PHP (php)

Saat kompilasi akan muncul dua peringatan

D:\fpcdemo>fpc mydemo.dpr
Free Pascal Compiler version 3.2.2 [2021/05/15] for i386
Copyright (c) 1993-2021 by Florian Klaempfl and others
Target OS: Win32 for i386
Compiling mydemo.dpr
mydemo.dpr(55,35) Warning: Implicit string type conversion from "AnsiString" to "UnicodeString"
mydemo.dpr(55,33) Warning: Implicit string type conversion with potential data loss from "UnicodeString" to "AnsiString"
Linking mydemo.exe
63 baris dikompilasi, 0,2 detik, 68464 byte kode, 4276 byte data
2 peringatan muncul

D:\fpcdemo>mydemo
Elemen nomor 0
Item terakhir
Nomor urut 3Code language: CSS (css)

Tipe Himpunan

Sets, implementasi dasar berupa bit-field

Himpunan didefinisikan berdasarkan tipe enumerasi / ordinal, berfungsi menyimpan sekelompok nilai enum sekaligus, mendukung operasi himpunan serta penambahan dan penghapusan elemen.

{$ifdef FPC} {$mode objfpc} {$H+} {$endif}
{$codepage utf8}
program ArrayIndexDemo;

type
  TAnimalKind = (akDuck, akCat, akDog);
  // Definisikan tipe himpunan berbasis enumerasi
  TAnimals = set of TAnimalKind;
var
  A: TAnimals;
begin
  A := [];                     // Himpunan kosong
  A := [akDuck, akCat];        // Isi beberapa elemen sekaligus
  A := A + [akDog];            // Gabungan himpunan (tambah elemen)
  A := A * [akCat, akDog];     // Irisan himpunan (simpan elemen yang ada di dua sisi)

  Include(A, akDuck);          // Fungsi bawaan: tambah satu elemen
  Exclude(A, akDuck);          // Fungsi bawaan: hapus satu elemen
end.
Code language: PHP (php)

Penjelasan operasi umum himpunan

  1. [] : Literal himpunan kosong
  2. + : Gabungan, gabung dua kelompok elemen
  3. * : Irisan, ambil elemen yang ada di kedua kelompok
  4. Include(Himpunan, Elemen) : Tambah elemen dengan aman
  5. Exclude(Himpunan, Elemen) : Hapus elemen dengan aman

Previous:

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *