PEMODELAN SIMPANG TAK BERSINYAL SAMIRONO - UNIVERSITAS NEGERI YOGYAKARTA DENGAN MENGGUNAKAN CELLULAR AUTOMATA.

(1)

1

BAB I PENDAHULUAN

A. Latar Belakang

Hampir setiap hari manusia menggunakan transportasi untuk berpindah dari satu tempat ke tempat yang lain. Sistem transportasi yang andal merupakan sarana penunjang kemajuan ekonomi karena mendukung mobilitas penduduk dari satu daerah ke daerah lain yang mampu mendistribusikan barang dari satu tempat ke tempat lainnya secara meluas (Lemhanas, 2012:1). Dewasa ini, tranportasi menjadi masalah tersendiri bagi kota-kota besar seperti Yogyakarta. Peningkatan kebutuhan akan transportasi memunculkan masalah baru seputar kepadatan arus lalu-lintas. Salah satunya kepadatan di persimpangan Samirono Universitas Negeri Yogyakarta (UNY) merupakan salah satu contohnya. Bagi mahasiswa UNY yang akan masuk atau keluar lingkungan UNY mengalami kesulitan untuk menyeberang jalan. Pengendara lain yang melewati persimpangan tersebut juga mengalami masalah karena terhambat mahasiswa UNY yang menyeberang jalan. Masalah transportasi ini menjadi hal yang menarik untuk dibahas ditinjau dari teori arus lalu-lintas yang membahas model-model lalu-lintas. Menurut Gartner et al (2001:1-1) teori-teori arus lalu-lintas berusaha untuk mendeskripsikan secara matematis tentang interaksi antara kendaraan, operator dan infrastrukturnya. Gazis (2002:1) menyatakan teori arus lalu-lintas adalah teori yang digunakan untuk memahami fenomena pergerakan kendaraan secara individual di jalan dimana saat bersamaan berinteraksi dengan kendaraan di dekatnya.


(2)

2

Teori arus lalu-lintas membahas model-model lalu-lintas yang dapat digunakan untuk merekayasa lalu-lintas untuk menyelesaikan masalah yang ada. Secara umum pemodelan arus lalu-lintas bersifat makroskopik, mesoskopik dan mikroscopik. Pemodelan makroskopik adalah pemodelan arus lalu-lintas dengan pendekatan dari sudut pandang hidrodinamik dimana arus lalu-lintas dianalogikan sebagai proses fluida yang dipengaruhi oleh variabel densitas, volume dan kecepatan. Sedangkan pemodelan mesoskopik adalah simplifikasi dari dinamika kendaraan (Barceló, 2010:15).

Pemodelan mikroskopik mempelajari variabel mikroskopik lalu-lintas dan pola karakteristik yang mencerminkan sikap dari setiap kendaraan secara individu dalam arus lalu-lintas (Kerner, 2009:10). Menurut Hoogendoorn dan Bovy (2001:5) pemodelan tersebut di atas adalah klasifikasi dari pemodelan arus lalu-lintas menurut tingkat kedetailan dalam merepresentasikan arus lalu-lalu-lintas dimana model makroskopik memiliki kedetailan rendah, model mesoskopik memiliki kedetailan menengah dan model mikroskopik memiliki kedetailan tinggi.

Dalam pemodelan simpang tak bersinyal (Unsignalized Intersection) seperti perempatan Samirono-UNY, banyak pendekatan yang dapat dilakukan. Sebagian besar analisa persimpangan tak bersinyal menggunakan model stokastik yaitu gap-acceptance theory. Diasumsikan bahwa arus lalu-lintas minor dapat memasuki sebuah persimpangan ketika interval waktu kedatangan selanjutnya dari kendaraan dengan prioritas lebih tinggi lebih besar daripada critical gap1 dan

1

Critical Gap adalah headway minimum dari arus primer dimana memungkinkan bagi arus sekunder untuk bermanuver. Headway adalah waktu interval antara bumper depan dua kendaraan yang melewat suatu titik (Luttinen, 2004:13).


(3)

3

safe time interval2(Luttinen, 2004:22). Namun model ini kurang realistik karena mengasumsikan semua pengendara konsisten dan homogen. Secara logika dapat diketahui bahwa pengemudi memiliki kemampuan mengendarai kendaraan yang berbeda-beda. Sebagai contoh seorang pengendara mampu menyeberang walaupun jarak kendaraan yang akan lewat sudah dekat, ada pula yang tidak akan menyeberang jika kendaraan yang akan lewat masih jauh dari tempatnya menyeberang. Pendekatan menggunakan Cellular Automata yang termasuk dalam model mikroskopik mampu memecahkan masalah tersebut.

Cellular Automata (CA) adalah pemodelan dari sitem dinamis yang merepresentasikan sistem secara sederhana namun mampu menangkap berbagai variasi sifat dari suatu sistem. Konsep CA dimulai dari konsep bidang dan lokalitas dari pengaruh. Diasumsikan sistem terdistribusi pada suatu bidang kemudian bidang dibagi menjadi cell-cell dimana cell yang lebih dekat memiliki pengaruh terhadap kondisi cell yang lain daripada cell yang jauh (Bar-Yam,1997:112-113). Penggunaan konsep CA dimulai pada tahun 1948 ketika Johann Louis von Neumann memperkenalkannya untuk mempelajari sistem biologis hidup (Maerivoet dan Moor, 2005:3).

Penggunaan CA dalam pemodelan lalu-lintas dimulai tahun 1992 oleh Nagel dan Schreckenberg untuk memodelkan arus lalu lintas satu lajur, yang kemudian model ini dikenal dengan nama model Nasch. Kemudian pada tahun 1995 Rickert, Nagel, Schreckenberg dan Latour mempublikasikan model untuk dua lajur dan memperkenalkan aturan perubahan lajur, model ini dikenal dengan nama model

2 Safe time interval

atau follow up time adalah waktu antar keberangkatan dari kendaraan arus sekunder dan waktu keberangkatan kendaraan selanjutnya menggunakan gap yang sama dalam kondisi antrian kontinu (Luttinen, 2004:14:)


(4)

4

RNSL (Benoso et al, 2013:1092). Kemudian banyak dikembangkan berbagai model termasuk model untuk simpang tak bersinyal.

Pemodelan dengan CA untuk simpang tak bersinyal mampu memberikan konsep yang lebih fleksibel daripada model Gap Acceptance dimana interaksi antar kendaraan maupun perbedaan sifat dari pengemudi mampu dijelaskan (Ruskin dan Wang, 2002:382). Namun, pemodelan CA untuk simpang tak bersinyal yang kompleks seperti simpang Samirono-UNY perlu modifikasi lebih jauh karena tidak hanya melibatkan mobil dan motor, namun juga melibatkan sepeda dan pejalan kaki. Lebih jauh lagi kondisi geometris dari simpang tersebut yang cukup unik perlu diperhatikan.

B. Rumusan Masalah

Permasalahan yang akan dibahas dalam tugas akhir ini dengan mengambil persimpangan Samirono-UNY seperti ilustrasi pada gambar 1 adalah: (1) “Seperti apa model arus lalu-lintas di persimpangan tak bersinyal yang berisi mobil, motor, sepeda dan pejalan kaki (dimana dalam skripsi ini akan disebut sebagai simpang tak bersinyal saja) dengan menggunakan Cellular Automata?” dan (2) “Bagaimana pengembangan simulator menggunakan model yang diperoleh serta contoh analisa kinerja dari simpang?”.


(5)

5

Gambar 1 Persimpangan Samirono-UNY

C. Tujuan

Tujuan dari tugas akhir ini yaitu: (1) Memodelkan arus lalu-lintas menggunakan Cellular Automata. (2) Membuat simulatornya serta memberikan contoh analisa kinerja dari simpang menggunakan simulator yang dibuat.

D. Manfaat

Manfaat yang dapat diambil dari adalah simulasi dari pemodelan arus lalu-lintas kendaraan di persimpangan Samirono-UNY sehingga dapat digunakan untuk mempelajari karakteristiknya dengan lebih mudah.


(6)

6

BAB II

KAJIAN PUSTAKA

A. Lalu Lintas

Studi terhadap arus lalu-lintas dimulai pada tahun 1930-an. Pada tahun 1936 Adams menggunakan teori peluang untuk mendeskripsikan keadaan lalu-lintas jalan. Pada tahun 1935 Bruce D. Greenshields melakukan studi mengenai model yang berhubungan dengan volume dan kecepatan di Yale Bureau of Highway Traffic, Bruce juga melakukan investigasi terhadap kinerja lalu-lintas di persimpangan pada tahun 1947. Gartner, Messer, dan Rathi (2001:1-1) menyatakan bahwa setelah perang dunia kedua, semakin meningkatnya penggunaan mobil dan ekspansi dari sistem jalan raya meningkat pula studi mengenai karakteristik lalu-lintas dan pengembangan dari teori arus lalu-lintas. Menurut Gartner, Messer, dan Rathi (2001:1-1) teori arus lalu-lintas berusaha untuk mendeskripsikan hubungan antara kendaraan dan pengendaranya (komponen yang bergerak) dengan infrastruktur (komponen yang tidak bergerak) secara presisi.

Kendaraan menurut Undang Undang No. 14 Tahun 1992 adalah suatu alat yang dapat bergerak di jalan, terdiri dari kendaraan bermotor dan kendaraan tidak bermotor. Komponen tidak bergerak terdiri dari sistem jalan dan semua elemen operasionalnya: alat pengontrol seperti lampu Arah Penunjuk Intruksi Lalu Lintas (APILL) yang diatur dalam Keputusan Direktur Jenderal Perhubungan Darat Nomor : 273/HK.105/DJRD/96, rambu-rambu seperti yang diatur dalam Peraturan


(7)

7

Menteri Perhubungan Nomor 13 Tahun 2014, dan tanda seperti marka jalan yang diatur dalam Peraturan Menteri Perhubungan Nomor PM 34 Tahun 2014. Menurut Roess, Prassas dan McShane (2011:96) parameter arus lalu-lintas secara umum adalah volume dan arus, kecepatan serta densitas.

1. Volume dan Arus (Volume and Rate of Flow)

Menurut Luttinen (2004:17) volume adalah jumlah kendaraan yang melewati suatu titik pada suatu lajur atau jalan raya selama interval waktu tertentu. Dalam Highway Capacity Manual (2000:5-18) volume sering dihitung dalam interval 1 jam dan tidak terbatas pada kendaraan saja, dapat juga berupa orang. Arus adalah adalah ratio per jam kendaraan atau orang yang melewati suatu titik atau ruas pada suatu lajur atau jalan raya pada interval kurang dari satu jam, biasanya menggunakan interval 15 menit yang kemudian dikonversi ke dalam satuan jam (Highway Capacity Manual, 2000:5-6). Perbedaan mendasar dari volume dan arus adalah interval waktu yang digunakan. Sebagai contoh dari hasil observasi selama 4 kali 15 menit diperoleh jumlah kendaraan 1.000, 1.200, 1.100, dan 1.000. Diperoleh volume :

⁄ sedangkan arus diperoleh :

⁄ untuk 15 menit pertama ⁄ ⁄ untuk 15 menit kedua ⁄ ⁄ untuk 15 menit ketiga dan ⁄ ⁄ untuk 15 menit keempat (Highway Capacity Manual, 2000:7-1).


(8)

8

Selain satuan ⁄ arus juga dapat direpresentasikan dalam ⁄ .

2. Kecepatan (Speed)

Menurut Roess, Prassas dan McShane (2011:100) kecepatan atau speed didefinisikan sebagai rasio pergerakan dalam jarak per satuan waktu

(1)

dengan adalah kecepatan, adalah jarak dan adalah waktu.

Roess, Prassas dan McShane (2011:100-101) juga menyebutkan bahwa kecepatan dihitung sebagai kecepatan rata-rata (average speed). Perhitungan kecepatan rata-rata dapat dihitung dengan dua cara yaitu time mean speed (TMS) dan space mean speed (SMS). TMS adalah kecepatan rata-rata dari semua kendaraan yang melewati sebuah titik di jalan raya atau sebuah lajur pada interval waktu tertentu. SMS adalah kecepatan rata-rata dari semua kendaraan yang menempati sebuah ruas jalan raya atau lajur tertentu selama interval waktu tertentu.

3. Densitas (Density)

Densitas atau kepadatan menururt Kerner (2009:12) didefinisikan sebagai jumlah kendaraan pada setiap unit panjang jalan. Densitas dapat diestimasi dengan

(2)


(9)

9

B. Simpang

Simpang merupakan bagian yang tidak terpisahkan dari jaringan jalan. Pada saat di simpang pengemudi dapat memutuskan untuk berjalan lurus atau berbelok dan pindah jalan untuk mencapai satu tujuan. Simpang dapat didefinisikan sebagai daerah dimana dua jalan atau lebih bergabung atau bertemu (Khisty dalam Juniardi, 2006:7). Pergerakan menyeberang dan berbelok pada persimpangan memunculkan peluang adanya konflik antar kendaraan, kendaraan-pejalan kaki, dan kendaraan-pesepeda (Neuman et al, 2003:I-1).

Di dalam Highway Capacity Manual (HCM) maupun dalam Manual Kapasitas Jalan Indonesia (MKJI) simpang dibedakan menjadi dua macam yaitu simpang bersinyal dan simpang tak bersinyal. Sinyal adalah lampu pengatur lalu-lintas yang disebut lampu APILL. Menurut Ruskin dan Wang (2002:381) ada dua tipe simpang tak bersinyal yang menjadi fokus dalam pemodelan simpang tak bersinyal yaitu two-way stop-controlled intersection (TWSC) dan all-way stop-controlled intersection (AWSC). TWSC adalah simpang tak bersinyal yang memiliki perbedaan prioritas untuk setiap pergerakan, sedangkan AWSC semua pergerakan dianggap memiliki prioritas yang sama (Li et al, 2009:129). Penilaian kinerja simpang tak bersinyal meliputi kapasitas, derajat kejenuhan, tundaan, dan peluang antrian (MKJI,1997:3-3).


(10)

10

1. Kapasitas

Kapasitas merupakan arus lalu-lintas maksimum yang dapat dipertahankan (tetap) pada suatu bagian jalan dalam kondisi tertentu. Di Indonesia perhitungan kapasitas menggunakan suatu manual, yaitu MKJI 1997. Untuk memudahkan pembahasan, berikut istilah-istilah yang sering digunakan dalam penentuan kapasitas (MKJI, 1997: 3-4).

Tabel 1. Notasi, Istilah, dan Definisi Pada Lebar Pendekat dan Tipe Simpang

Notasi Istilah Definisi

Jalan utama Jalan utama adalah jalan yang paling penting pada persimpangan jalan, misalnya dalam hal klasifikasi jalan. Pada suatu simpang-3 jalan yang menerus selalu ditentukan sebagai jalan utama.

Pendekat Tempat masuknya kendaraan dalam suatu lengan persimpangan jalan. Pendekat jalan utama

disebut B dan D, jalan minor A dan C dalam arah jarum jam.

Lebar masuk pendekat x (meter)

Lebar dari bagian pendekat yang diperkeras, diukur dibagian tersempit, yang digunakan oleh lalu lintas yang bergerak. X adalah nama pendekat.

Lebar pendekat simpang rata-rata

Lebar efektif rata-rata dari seluruh pendekat pada simpang

Lebar pendekat jalan rata-rata (meter)

Lebar rata-rata pendekat pada simpang. untuk pendekat minor dan untuk pendekat utama.

Median Daerah yang memisahkan arah lalu-lintas pada suatu segmen jalan.


(11)

11

Tabel 2. Notasi, Istilah, dan Definisi Pada Lebar Pendekat dan Tipe Simpang (lanjutan)

Notasi Istilah Definisi

Belok kiri Indeks untuk lalu-lintas belok kiri. Lurus Indeks untuk lalu-lintas lurus.

Belok kanan Indeks untuk lalu-lintas belok kanan.

Kendaraan

ringan

Kendaraan bermotor ber as dua dengan 4 roda dan dengan jarak as 2,0-3,0 m (meliputi: mobil penumpang, oplet, mikrobis, pick-up dan truk kecil sesuai sistem klasifikasi Bina Marga). Sepeda motor Kendaraan bermotor dengan 2 atau 3 roda

(meliputi sepeda motor dan kendaraan roda 3 sesuai sistem klasifikasi Bina Marga).

Kendaraan berat Kendaraan bermotor dengan lebih dari 4 roda (meliputi bis, truk 2 as, truk 3 as dan truk

kombinasi sesuai sistem klasifikasi Bina Marga). Kendaraan tak

bermotor

Kendaraan dengan roda yang digerakkan oleh orang atau hewan ( meliputi : sepeda, becak, kereta kuda, dan kereta dorong sesuai sistim klasitikasi Bina Marga).

Jalan Utama Jalan yang paling penting pada persimpangan jalan, misalnya dalam hal klasifkasi jalan. Pada suatu simpang-3 jalan yang menerus selalu ditentukan sebagai jalan utama

Jalan Minor Jalan dengan prioritas lebih rendah dari jalan utama


(12)

12

Perhitungan kapasitas memiliki beberapa tahapan. Gambar 2 adalah prosedur perhitungan kapasitas simpang tak bersinyal (MKJI, 1997: 3-30).

Gambar 2. Alur Perhitungan Kapasitas Simpang Tak Bersinyal Kapasitas

Faktor penyesuaian rasio arus jalan minor �

Faktor penyesuaian belok kanan �

Faktor penyesuaian belok kiri �

Faktor penyesuaian tipe lingkungan, hambatan samping, dan kendaraan

tak bermotor �

Faktor penyesuaian ukuran kota �

Faktor penyesuaian median jalan utama �

Faktor penyesuaian lebar masuk �

Kapasitas dasar 0


(13)

13

a. Lebar pendekat dan tipe simpang

Langkah ini digunakan untuk mendapatkan parameter geometrik dari simpang. Lebar pendekat diukur pada jarak 10 m dari garis imajiner yang menghubungkan tepi perkerasan dari jalan berpotongan, yang dianggap mewakili lebar pendekat efektif untuk masing-masing pendekat, lihat Gambar 3.

Gambar 3. Garis imajiner dan lebar efektif pada simpang Hitung lebar rata-rata pendekat pada jalan minor

(3)

dengan

Hitung lebar rata-rata pendekat pada jalan utama

(4)

dengan

Hitung lebar rata-rata pendekat


(14)

14

Gambar 4 Simpang dengan median pada lengan B

Sumber : MKJI. Departemen Pekerjaan Umum Ditjen Bina Marga. 1997. Hal 3-31 Jika simpang memiliki median, lebar rata-rata pendekat adalah

(5.1)

dengan : Lebar rata-rata pendekat dengan median pada lengan B

Jika lengan hanya untuk ke luar, maka :

(5.2)

dengan : Lebar rata-rata pendekat dengan median pada lengan

dan lengan hanya untuk keluar

Lebar rata-rata pendekat minor dan pendekat utama jika lengan terdapat median

(3.1)


(15)

15

Jumlah lajur yang digunakan untuk keperluan perhitungan ditentukan dari lebar rata-rata pendekat jalan minor dan jalan utama seperti pada tabel 2 (MKJI, 1997:3-32).

Tabel 1 Jumlah Lajur dan Lebar Rata-Rata Pendekat Minor dan Utama Lebar rata-rata pendekat minor dan utama Jumlah lajur

(total untuk kedua arah)

2

4

2

4

Tipe simpang (IT) menentukan jumlah lengan simpang dan jumlah lajur pada jalan utama dan jalan minor pada simpang tersebut dengan kode tiga angka. Pada tabel 3 adalah daftar kode simpang beserta karakteristiknya (MKJI, 1997: 3-32).

Tabel 3. Kode Tipe Simpang Kode

(IT)

Jumlah lengan simpang

Jumlah lajur jalan minor

Jumlah lajur jalan utama

322 3 2 2

324 3 2 4

342 3 4 2

422 4 2 2

424 4 2 4

Dalam tabel 3 tidak terdapat simpang tak bersinyal yang kedua jalan utama dan jalan minornya mempunyai empat lajur, yaitu tipe simpang 344 dan 444. Jika analisa kapasitas harus dikerjakan untuk simpang seperti ini, simpang tersebut dianggap sebagai 324 dan 424. Ilustrasi tipe simpang 4 dan 3 diberikan pada gambar 5.


(16)

16

Gambar 5. Ilustrasi Tipe Simpang Tak Bersinyal 4 Lengan dan 3 Lengan Sumber : MKJI. Departemen Pekerjaan Umum Ditjen Bina Marga. 1997. Hal 3-14


(17)

17

b. Kapasitas dasar

Langkah awal perhitungan kapasitas adalah menentukan kapasitas dasar. Kapasitas dasar adalah kapasitas persimpangan jalan total untuk suatu kondisi tertentu yang sudah ditentukan sebelumnya atau kondisi dasar (MKJI, 1997:3-7). Nilai kapasitas dasar ditentukan dari Tabel 4 dengan variabel masukan tipe simpang (MKJI, 1997:3-33).

Tabel 4. Kapasitas Dasar Menurut Tipe Simpang Tipe simpang

(IT)

Kapasitas dasar ⁄

322 2700

342 2900

324 atau 344 3200

422 2900

424 atau 444 3400

c. Faktor penyesuaian lebar pendekat

Penyesuaian lebar pendekat � , diperoleh dari Tabel 5. Variabel masukan adalah lebar rata-rata semua pendekat , dan tipe simpang (MKJI, 1997:3-33)

Tabel 5. Faktor Penyesuaian Lebar Pendekat Tipe simpang

Penyesuaian lebar pendekat �

422

424 atau 444

322

324 atau 344


(18)

18

d. Faktor penyesuaian median jalan utama

Pertimbangan teknik lalu-lintas diperlukan untuk menentukan faktor penyesuaian median jalan utama � . Median disebut lebar jika kendaraan ringan standar dapat berlindung pada daerah median tanpa mengganggu arus berangkat pada jalan utama. Faktor penyesuaian median jalan utama diperoleh dengan menggunakan Tabel 6. Penyesuaian hanya digunakan untuk jalan utama dengan 4 lajur. Variabel masukan adalah tipe median jalan utama (MKJI, 1997:3-34).

Tabel 6. Faktor Penyesuaian Median Jalan Utama

Uraian Tipe median Faktor penyesuaian median �

Tidak ada median jalan utama Tidak ada 1,00 Ada median jalan utama, lebar Sempit 1,05 Ada median jalan utama, lebar Lebar 1,20

e. Faktor penyesuaian ukuran kota

Faktor penyesuaian ukuran kota ditentukan dari Tabel 7. Variabel masukan adalah ukuran kota, (MKJI, 1997:3-34).

Tabel 7. Faktor Penyesuaian Ukuran Kota Ukuran kota

Penduduk (juta)

Faktor penyesuaian ukuran kota

Sangat kecil

Kecil

Sedang

Besar


(19)

19

f. Faktor penyesuaian tipe lingkungan jalan, hambatan samping dan kendaraan tak bermotor

Sebelum menentukan faktor penyesuaian tipe lingkungan jalan, hambatan samping dan kendaraan tak bermotor perlu dicari terlebih dahulu tipe lingkungan jalan , kelas hambatan samping � dan rasio kendaraan tak bermotor . Lingkungan jalan diklasifikasikan dalam kelas menurut tata guna tanah dan aksesibilitas jalan tersebut dari aktivitas sekitarnya. Hal ini ditetapkan secara kualitatif dari pertimbangan teknik lalu-lintas dengan bantuan Tabel 8 (MKJI, 1997:3-29)

Tabel 8. Tipe Lingkungan Jalan

Komersial Tata guna lahan komersial (misalnya pertokoan, rumah makan, perkantoran) dengan jalan masuk langsung bagi pejalan kaki dan kendaraan.

Pemukiman Tata guna lahan tempat tinggal dengan jalan masuk langsung bagi pejalan kaki dan kendaraan.

Akses terbatas Tanpa jalan masuk atau jalan masuk langsung terbatas (misalnya karena adanya penghalang fisik atau jalan samping).

Hambatan samping menunjukkan pengaruh aktivitas samping jalan di daerah simpang pada arus berangkat lalu-lintas, misalnya pejalan kaki berjalan atau menyeberangi jalur, angkutan kota dan bis berhenti untuk menaikkan dan menurunkan penumpang, kendaraan masuk dan keluar halaman dan tempat parkir di luar jalur. Hambatan samping ditentukan secara kualitatif dengan pertimbangan teknik lalu-lintas sebagai Tinggi, Sedang atau Rendah. Perhitungan rasio kendaraan tak bermotor adalah


(20)

20

(6) dengan : rasio kendaraan tak bermotor

: arus kendaraan tak bermotor ⁄ : arus kendaraan bermotor ⁄

Setelah tipe lingkungan jalan, kelas hambatan samping dan rasio kendaraan tak bermotor diperoleh ditentukan faktor penyesuaian tipe lingkungan jalan, hambatan samping dan kendaraan tak bermotor dengan menggunakan Tabel 9 (MKJI, 1997:3-35).

Tabel 9. Faktor Penyesuaian Tipe Lingkungan Jalan, Hambatan Samping dan Kendaraan Tak Bermotor

Kelas tipe lingkungan jalan

Kelas hambatan samping

Rasio kendaraan tak bermotor

0,15

Komersial Tinggi

Sedang

Rendah

Pemukiman Tinggi

Sedang

Rendah

Akses terbatas Tinggi/sedang/rendah

g. Faktor penyesuaian belok kiri

Sebelum menentukan faktor penyesuaian belok kiri, perlu dihitung rasio belok kiri dengan

(7) dengan : rasio belok kiri


(21)

21 ⁄

: arus total dari semua arah dan semua belok kiri, belok kanan, dan lurus ⁄

Kemudian faktor penyesuaian belok kiri ditentukan dengan

� (8)

h. Faktor penyesuaian belok kanan

Sebelum menentukan faktor penyesuaian belok kanan, perlu dihitung rasio belok kanan dengan

(9)

dengan : rasio belok kanan

: arus belok kanan dari semua arah pendekat ⁄

: arus total dari semua arah dan semua belok kiri, belok kanan, dan lurus ⁄

Kemudian faktor penyesuaian belok kanan ditentukan dengan

� Untuk simpang 3 lengan (10.1) � Untuk simpang 4 lengan (10.2)

i. Faktor penyesuaian rasio arus jalan minor

Sebelum menentukan faktor penyesuaian rasio arus jalan minor perlu ditentukan dulu rasio arus jalan minor dengan

� �

(11) dengan : rasio arus jalan minor

� : total arus jalan minor ⁄

: arus total dari semua arah dan semua belok kiri, belok kanan, dan lurus ⁄


(22)

22

Kemudian ditentukan faktor penyesuaian rasio arus jalan minor � dengan menggunakan Tabel 10 (MKJI, 1997:3-38)

Tabel 10. Faktor Penyesuaian Rasio Arus Jalan Minor

� � �

422

424

444

322

� �

342

� �

324

344

� �

j. Kapasitas

Setelah semua faktor penyesuaian diketahui, kapasitas dihitung dengan rumus berikut

0 �� � � � � � � � (12)

2. Derajat Kejenuhan

Derajat kejenuhan adalah rasio arus lalu-lintas terhadap kapasitas. Derajat kejenuhan dihitung dengan rumus berikut

(13)

dengan : arus total dari semua arah dan semua belok kiri, belok kanan, dan lurus ⁄


(23)

23

3. Tundaan

Tundaan adalah waktu tempuh tambahan yang diperlukan untuk melewati suatu simpang dibandingkan terhadap situasi tanpa simpang. Tundaan terdiri dari tundaan lalu-lintas yang disebabkan pengaruh kendaraan lain; dan tundaan geometrik yang disebabkan perlambatan dan percepatan untuk melewati fasilitas (misalnya akibat lengkung horisontal pada persimpangan).

a. Tundaan lalu-lintas simpang

Tundaan lalu-lintas simpang adalah tundaan lalu-lintas rata-rata untuk semua kendaraan bermotor yang masuk simpang. ditentukan dengan

� untuk (14.1)

untuk (14.2)

dengan :derajat kejenuhan b. Tundaan lalu-lintas jalan utama

Tundaan lalu-lintas jalan-utama adalah tundaan lalu-lintas rata-rata semua kendaraan bermotor yang masuk persimpangan dari jalan-utama. dihitung dengan

untuk (15.1)


(24)

24

c. Tundaan lalu-lintas jalan minor

Tundaan lalu lintas rata-rata jalan minor ditentukan berdasarkan tundaan lalu-lintas rata-rata dan tundaan lalu lintas rata-rata jalan major . dihitung dengan rumus berikut.

� � �

(16)

dengan : arus total ⁄

� : Tundaan lalu-lintas simpang : arus jalan utama ⁄ : Tundaan lalu-lintas jalan utama

� : arus jalan minor ⁄

d. Tundaan geometrik simpang

Tundaan geometrik simpang adalah tundaan geometrik rata-rata seluruh kendaraan bermotor yang masuk simpang. Sebelum penentuan tundaan geometrik perlu dihitung terlebih dahulu rasio arus belok dengan rumus berikut

(17) dengan : arus yang berbelok dari semua jalan ⁄

: arus total ⁄ dihitung dari rumus berikut

( ) untuk (17.1)

untuk (17.2)

dengan : derajat kejenuhan : rasio arus belok


(25)

25

e. Tundaan simpang

Tundaan simpang dihitung sebagai berikut

� (18)

dengan : tundaan geometric simpang � : tundaan lalu-lintas simpang

4. Peluang Antrian

Peluang antrian yang dimaksud adalah peluang antrian dengan lebih dari dua kendaraan di daerah pendekat yang mana saja, pada simpang tak bersinyal. Rentang peluang antrian diperoleh dengan

Batas atas (19.1) Batas bawah (19.2)

dengan : derajat kejenuhan

5. Perhitungan Arus Lalu-Lintas dalam Satuan Mobil Penumpang

Data arus lalu-lintas yang sudah diklasifikasikan1 dengan satuan ⁄ dikonversikan ke satuan mobil penumpang dengan mengalikan data arus dengan ekuivalensi mobil penumpang seperti pada tabel 11 (MKJI, 1997:3-26).

Tabel 11. Nilai Ekuivalensi Mobil Penumpang Klasifikasi kendaraan emp

1

Diperlukan data arus kendaraan menurut jenis kendaraan yaitu kendaraan ringan , kendaraan berat , dan sepeda motor , dalam perhitungan kapasitas kendaraan tanpa motor tidak dianggap sebagai kendaraan, namun sebagai hambatan.


(26)

26

C. Cellular Automata

Menurut Wolfram (1983:602) Cellular Automata adalah idealisasi matematis dari sistem fisik dimana ruang dan waktu adalah diskret, dan kuantitas fisik mengambil himpunan berhingga dari nilai diskret. Cellular Automata terdiri dari lattice yang uniform, dengan variabel diskret pada setiap cell-nya. Keadaan dari suatu Cellular Automata ditentukan oleh variabel-variabel pada siap cell-nya. Cellular Automata berevolusi pada langkah waktu (time step) diskret, dimana nilai dari variabel di suatu cell dipengaruhi oleh nilai dari variabel-variabel cell tetangga (neighbourhood) cell tersebut saat time step sebelumnya. Neighbourhood suatu cell terdiri dari cell itu sendiri dan cell-cell sekitarnya. Variabel pada setiap cell akan di-update secara bersamaan, berdasarkan nilai dari variabel neighbourhood pada time step sebelumnya dan sekumpulan aturan.

Burzyński et al (2009:28-29) merangkum cellular automata ke dalam poin-poin sebagai berikut :

CA berkembang dalam bidang dan waktu

CA dalah metode simulasi diskrit, dimana bidang dan waktu terdefinisi dalam langkah (steps) diskrit

CA terdiri dari cell-cell yang berbaris pada suatu garis untuk CA satu dimensi, atau tersusun pada suatu lattice dua dimensi atau lebih untuk CA dua dimensi atau lebih.

 Banyaknya status suatu cell berhingga


(27)

27

 Status masa depan dari setiap cell tergantung hanya dari status cell saat ini dan status cell dari cell-cell tetangganya.

 Perkembangan dari setiap cell didefinisikan oleh himpunan aturan deterministik atau probabilistik yang sama

Secara umum menurut Maerivoet dan Moor (2005:4) terdapat empat unsur pembentuk CA, yaitu lingkungan fisik dimana pada tulisan ini akan disebut lingkungan geometri, status cell, neighbourhood, dan aturan transisi. Bar-Yam(1997:116) menyebutkan bahwa pemilihan status awal adalah aspek penting dalam operasi CA. Status awal dapat ditentukan sebelumnya atau dipilih secara random.

1. Lingkungan geometri

Lingkungan geometri merepresentasikan sistem yang dipelajari. Lingkungan geometri tersusun atas cell-cell berbentuk segi empat, segi enam atau bentuk yang lainnya (Maerivoet dan Moor, 2005:4).

Gambar 6. Berbagai Lingkungan 2 Dimensi

Sumber : S. Maerivoet, B. De Moor, Cellular automata Models of Road Traffic, Physics Reports 419, 2005, hal:5


(28)

28

Lingkungan geometri dapat memiliki dimensi berapapun, namun yang biasa digunakan adalah 1,2, dan 3 dimensi.

Gambar 7. Berbagai Dimensi Lingkungan Geometri

Sumber : Harald Niesche, Introduction to Cellular automata Seminar “Organic Computing”, 2006, hal 2

2. Status Cell

Setiap cell dapat berada di suatu status tertentu, dimana biasanya digunakan bilangan bulat untuk merepresentasikan status suatu cell. Status dari cell-cell tidak terbatas hanya pada bilangan bulat saja. Status dari cell-cell secara kolektif disebut konfigurasi global CA (CA’s global configuration). Status merujuk pada cell tertentu dan bersifat lokal, sedangkan konfigurasi adalah global dan merujuk pada lingkungan geometri. (Maerivoet dan Moor, 2005:5).

3. Neighbourhood

Untuk setiap cell, kita menentukan neighbourhood (cell-cell tetangga dari cell yang dimaksud) yang mempengaruhi evolusi dari cell secara local. Ukuran dari


(29)

29

neighbourhood sama untuk setiap cell di dalam lingkungan. Sebagai contoh pada lingkungan 2 dimensi dengan cell berbentuk segiempat neighbourhood terdiri dari cell itu sendiri ditambah cell-cell disekitarnya dengan radius 1 cell di utara, timur, selatan dan barat (Von Neuman neighbourhood) atau ditambah dengan cell-cell pada arah tenggara, barat daya, barat laut, dan timur laut (Moree neighbourhood). Sedangkan pada lingkungan 1 dimensi neighbourhood paling sederhana adalah Wolfram neighbourhood (Karayiannis, 2005:9).

Gambar 8. Neighbourhood Wolfram, Neighbourhood von Neumann dan Neighbourhood Moore

Sumber : K. Maeda dan C. Sakama, Identifying Cellular automata Rules, Journal of Cellular automata, Vol. 2, 2007, hal 3

4. Aturan Transisi

Aturan ini (atau juga disebut fungsi) bekerja pada suatu cell dan neighbourhood, dimana status cell berubah dari satu time step ke time step selanjutnya (iterasi sistem). Secara umum aturan transisi yang sama digunakan untuk seluruh cell di dalam lingkungan. Ketika tidak ada komponen stokastik dalam aturan ini maka model disebut CA deterministik, jika ada maka disebut CA stokastik. (Maerivoet dan Moor, 2005:5). Contoh aturan transisi adalah

Aturan 1: kecepatan

{ } Aturan 2 : perpindahan posisi


(30)

30

adalah kecepatan subjek pada saat time step , adalah kecepatan maksimum, adalah jarak dengan kendaraan di depannya dan adalah posisi subjek saat time step . CA digunakan dalam berbagai disiplin ilmu, salah satunya pemodelan lalu-lintas yang disebut Traffic Cellular Automata (TCA).

D. Traffic Cellular Automata (TCA)

Dalam TCA, posisi, kecepatan, akselerasi dan waktu dianggap sebagai variabel diskrit. Pada pendekatan CA sebuah lajur jalan direpresentasikan dengan lattice2 satu dimensi dan setiap unit dari lattice merepresentasikan cell dimana dapat kosong atau terisi paling sedikit satu kendaraan atau bagian dari kendaraan pada suatu waktu (Pal dan Mallikarjuna, 2010:53). Jika dalam satu cell hanya terisi suatu bagian dari kendaraan saja maka satu kendaraan dapat menempati beberapa cell sekaligus, model ini dikenal dengan multi-cell model.

1. Notasi

Berikut adalah notasi yang biasa digunakan dalam teori CA

Dimana adalah lingkungan dari sistem, adalah himpunan dari status cell. Setiap cell ke- memiliki status pada saat time step . Kemudian cell -cell yang menjadi neighbourhood dari cell adalah dimana merupakan himpunan dari beberapa cell. Dan aturan transisi yang direpresentasikan sebagai berikut

2

Lattice adalah suatu bidang yang terbagi-bagi menjadi beberapa bagian, sebagai contoh kertas gambar dengan garis grid


(31)

31

Dimana adalah himpunan status dari cell-cell di dalam neighbourhood pada time step dan adalah himpunan status pada time step . (Maerivoet dan Moor, 2005:7-8).

2. Traffic Cellular Automata Deterministik

Pada model deterministik, aturan-aturan transisi tidak memiliki komponen stokastik dimana pergerakan dari kendaraan ditentukan dari aturan transisi sebagai berikut

Aturan transisi 1 : akselerasi/percepatan

Aturan transisi 2 : perlambatan karena kendaraan lain

(20.2)

Aturan transisi 3 : pergerakan kendaraan

Atau dapat ditulis

(20.3)

Untuk lebih jelasnya perhatikan gambar 9.

(20.1) dengan : kecepatan kendaraan (status) di cell ke- pada saat time step

Kecepatan ini bukan kecepatan sebenarnya namun kecepatan yang direpresentasikan dalam bilangan bulat, contoh :

angka 1 berarti kecepatannya ⁄ , angka berarti ⁄

: kecepatan maksimum dari kendaraan yang diperbolehkan pada sistem


(32)

ke-32

Gambar 9. Contoh Pergerakan Kendaraan Berdasarkan Aturan Transisi Sumber: S. Rajeswaran dan S. Rajasekaran, A Realistic Approach to the Traffic Flow Behaviors by Cellular automata Models, International Journal of Computer Applications,

vol 56, 2012, hal 32

TCA deterministik adalah versi sederhana dari lalu-lintas nyata dimana terdapat percepatan dan perlambatan kendaraan. (Rajeswaran dan Rajasekaran, 2012:32).

Pada aturan transisi 1, jika kecepatan kendaraan yang menempati cell pada time step lebih kecil dari dan gap di depan cell lebih besar dari atau sama dengan maka kendaraan akan mempercepat laju kendaraan menjadi . Pada aturan transisi 2, jika gap di depan cell jumlahnya kurang dari maka kendaraan akan menurunkan kecepatan menjadi . Aturan transisi 3 digunakan supaya setiap time step kendaraan bergerak maju.

3. Traffic Cellular Automata pada Jalan dengan Multi Lajur

Pada model di atas jalan hanya direpresentasikan dengan satu lajur saja, kondisi ini tidak memungkinkan bagi kendaraan untuk menyalip (overtake) kendaraan di depannya. Jika kendaraan-kendaraan memiliki kecepatan maksimum yang berbeda namun dimodelkan dengan model satu lajur maka akan menimbulkan antrian yang parah. Pada model cellular automata dengan dua lajur menurut Chen et al (2013:1414) untuk berpindah lajur kendaraan harus memenuhi dua syarat. Syarat pertama yaitu motivasi untuk berpindah lajur


(33)

33

dimana apakah kendaraan ingin berpindah lajur atau tidak. Syarat kedua adalah kondisi keselamatan, apakah aman untuk menyalip kendaraan di depannya tanpa menimbulkan kecelakaan.

Gambar 10. Contoh Lingkungan Pada model TCA dengan dua lajur Sumber : Automata-2008 Theory and Applications of Cellular Automata,

Development of CA model of highway trac, 2008, hal 533

E. Klasifikasi Kendaraan

Klasifikasi kendaraan memiliki banyak jenis. Ada klasifikasi yang dibuat oleh majalah otomotif seperti klasifikasi AMS (Auto Motor und Sport) dan Teknikens Värld. Klasifikasi oleh kerjasama industri otomotif, klasifikasi kendaraan bermotor menurut English-System seperti ACS (Amerika) dan BCS (Inggris) (Opland, 2007:43-53). Di Indonesia juga terdapat klasifikasi kendaraan seperti diatur dalam Keputusan Menteri Pekerjaan Umum Nomor 370/KPTS/M/2007 tentang penetapan golongan jenis kendaraan bermotor pada ruas jalan tol yang sudah beroperasi dan besarnya tarif tol pada beberapa ruas jalan tol dimana kendaraan bermotor dibagi menjadi 5 golongan. Pada klasifikasi tersebut golongan 4 dan 5 adalah kendaraan bermotor yang memiliki 4 as dan 5 as dimana tidak terdapat pada simpang Samirono, sehingga klasifikasi ini tidak cocok untuk digunakan.

Dalam survei lalu-lintas di Indonesia digunakan 3 jenis klasifikasi yaitu IRMS (Integrated Road Management System), DJBM 1992 (Direktorat Jenderal Bina


(34)

34

Marga) dan MKJI 1997. Tabel 12 adalah klasifikasi dan padanannya (Bahan Konstruksi Bangunan dan Rekayasa Sipil, Kapasitas Simpang APILL, 2014: 13).

Tabel 12. Klasifikasi Jenis Kendaraan IRMS (11 kelas) DJBM 1992 (8 kelas) MKJI 1997 (5 kelas) 1. Sepeda motor,

Skuter, Kendaraan roda tiga

1. Sepeda motor, Skuter, Sepeda kumbang, dan Sepeda roda tiga

1. SM: Kendaraan bermotor roda 2 dan 3 dengan panjang tidak lebih dari 2,5m 2. Sedan, Jeep, Station

wagon

2. Sedan, Jeep, Station Wagon

2. KR:Mobil penumpang (Sedan, Jeep, Station wagon, Opelet, Minibus, Mikrobus), Pickup, Truk Kecil, dengan panjang tidak lebih dari atau sama dengan 5,5m 3. Opelet,

Pickup-opelet, Suburban, Kombi, dan Minibus

3. Opelet, Pickup-opelet, Suburban, Kombi, dan Minibus 4. Pikup, Mikro-truk,

dan Mobil hantaran

4. Pikup, Mikro-truk, dan Mobil hantaran

5. a. Bus Kecil 5. Bus 3 KS: Bus dan Truk 2 sumbu, dengan panjang tidak lebih dari atau sama dengan 12,0m b. Bus Besar

6. Truk 2 sumbu 6. Truk 2 sumbu

7. a. Truk 3 sumbu 7. Truk 3 sumbu atau lebih

dan Gandengan

4. KB: Truk 3 sumbu dan Truk kombinasi (Truk Gandengan dan Truk Tempelan), dengan panjang lebih dari 12,0m*)

b. Truk Gandengan c. Truk Tempelan

(Semi trailer)

8. KTB:

Sepeda, Becak, Dokar, Keretek, Andong.

8. KTB:

Sepeda, Becak, Dokar, Keretek, Andong.

5. KTB: Sepeda, Becak, Dokar, Keretek, Andong. Catatan: *)Dalam jalan perkotaan, KB dikatagorikan KS


(35)

35

F. Ukuran Cell

Beberapa ukuran cell telah digunakan oleh para peneliti tergantung dari jenis kendaraan yang digunakan dalam simulasi, namun belum ada prosedur pasti dalam menentukan ukuran dari cell. Sing (1990) menggunakan cell berukuran , Roy (2000) menggunakan ukuran dalam model TCA heterogen. Lan dan Chang menggunakan ukuran , Gundaliya et al (2004) menggunakan ukuran (Gundaliya, Mathew, dan Dhingra, 2005:72).


(36)

36

BAB III

PEMBAHASAN

A. Pemodelan Traffic Cellular Automata

Masalah yang dimodelkan adalah lalu-lintas simpang Samirono-UNY, terletak di sebelah barat daya lapangan sepak bola UNY. Simpang ini merupakan pertemuan antara jalan Colombo dan jalan yang menghubungkan kompleks kampus FMIPA UNY, kampung Karangmalang dan kampung Samirono, seperti pada gambar 11. Model yang digunakan adalah model TCA multi-cell multi-speed, subjek dalam model dapat menempati lebih dari 1 cell dan memiliki lebih dari 2 macam kecepatan.

Gambar 11. Simpang Samirono-UNY


(1)

364

//==================================

============= //= jika argument sama ====================

if checksameargument1.Checked=true then begin

begin

if ia1.Checked=true then a:=i[x]; if ja1.Checked=true then a:=j[x]; if ma1.Checked=true then a:=m; if na1.Checked=true then a:=n; end;

begin

if plusa1.Checked=true then a:=a; if mina1.Checked=true then a:=-a; end;

begin

if ib1.Checked=true then b:=i[x]; if jb1.Checked=true then b:=j[x]; if mb1.Checked=true then b:=m; if nb1.Checked=true then b:=n; end;

begin

if plusb1.Checked=true then b:=b; if minb1.Checked=true then b:=-b; end;

begin

c:=strtoint(conscona1.Text); if plusc1.Checked=true then c:=c; if minc1.Checked=true then c:=-c; end;

begin a2:=a+b+c; end; end;

//================================== ============= begin

d:=strtoint(consconc2.Text); if pluse2.Checked=true then d:=d; if mine2.Checked=true then d:=-d; end;

if (checkcondition3.Checked=true) and (checkcondition2samesign.Checked=false) then

begin

d1:=strtoint(conscona2.Text); if plusa2.Checked=true then d1:=d1; if mina2.Checked=true then d1:=-d1; end;

//= nilai kondisi 2 jika hanya 2 kondisi ==============

if checkcondition3.Checked=false then begin

if moresameb2.Checked=true then begin

if a2>=d then kondisi2:=true else kondisi2:=false; end;

if moreb2.Checked=true then begin

if a2>d then kondisi2:=true else kondisi2:=false; end;

if lesssameb2.Checked=true then begin

if a2<=d then kondisi2:=true else kondisi2:=false; end;

if lessb2.Checked=true then begin

if a2<d then kondisi2:=true else kondisi2:=false; end;

end;

//================================== =============

//== jika 3 kondisi, kondisi 2 tandanya sama dengan ======

if (checkcondition3.Checked=true) and (checkcondition2samesign.Checked=true) then

begin if a2=d then kondisi2:=true else kondisi2:=false; end;

//=== jika ada 3 kondisi ================ if (checkcondition3.Checked=true) and (checkcondition2samesign.Checked=false) then

begin

if moresamea2.Checked=true then begin

if moresameb2.Checked=true then begin

if (d1>=a2) and (a2>=d) then kondisi2:=true

else kondisi2:=false; end;

if moreb2.Checked=true then begin

if (d1>=a2) and (a2>d) then kondisi2:=true

else kondisi2:=false; end;

if lesssameb2.Checked=true then begin

if (d1>=a2) and (a2<=d) then kondisi2:=true

else kondisi2:=false; end;

if lessb2.Checked=true then begin

if (d1>=a2) and (a2<d) then kondisi2:=true

else kondisi2:=false; end;

end;

//--- if morea2.Checked=true then begin

if moresameb2.Checked=true then begin

if (d1>a2) and (a2>=d) then kondisi2:=true

else kondisi2:=false; end;

if moreb2.Checked=true then begin

if (d1>a2) and (a2>d) then kondisi2:=true

else kondisi2:=false; end;

if lesssameb2.Checked=true then begin

if (d1>a2) and (a2<=d) then kondisi2:=true

else kondisi2:=false; end;

if lessb2.Checked=true then begin

if (d1>a2) and (a2<d) then kondisi2:=true

else kondisi2:=false; end;

end;

//--- if lesssamea2.Checked=true then begin

if moresameb2.Checked=true then begin

if (d1<=a2) and (a2>=d) then kondisi2:=true

else kondisi2:=false; end;

if moreb2.Checked=true then begin

if (d1<=a2) and (a2>d) then kondisi2:=true

else kondisi2:=false; end;

if lesssameb2.Checked=true then begin

if (d1<=a2) and (a2<=d) then kondisi2:=true

else kondisi2:=false; end;

if lessb2.Checked=true then begin

if (d1<=a2) and (a2<d) then kondisi2:=true

else kondisi2:=false; end;

end;

//--- if lessa2.Checked=true then begin

if moresameb2.Checked=true then begin

if (d1<a2) and (a2>=d) then kondisi2:=true

else kondisi2:=false; end;

if moreb2.Checked=true then begin

if (d1<a2) and (a2>d) then kondisi2:=true

else kondisi2:=false; end;

if lesssameb2.Checked=true then begin

if (d1<a2) and (a2<=d) then kondisi2:=true

else kondisi2:=false; end;

if lessb2.Checked=true then begin

if (d1<a2) and (a2<d) then kondisi2:=true

else kondisi2:=false; end;

end; end; end;

procedure TForm1.kondisiketiga;

var a,b,c,d:integer; begin

//=== jika argument tidak sama =============

if checksameargument2.Checked=false then begin

begin

if ia3.Checked=true then a:=i[x]; if ja3.Checked=true then a:=j[x]; if ma3.Checked=true then a:=m; if na3.Checked=true then a:=n; end;

begin

if plusa3.Checked=true then a:=a; if mina3.Checked=true then a:=-a; end;

begin

if ib3.Checked=true then b:=i[x]; if jb3.Checked=true then b:=j[x]; if mb3.Checked=true then b:=m; if nb3.Checked=true then b:=n; end;

begin

if plusb3.Checked=true then b:=b; if minb3.Checked=true then b:=-b; end;

begin

c:=strtoint(conscona3.Text); if plusc3.Checked=true then c:=c; if minc3.Checked=true then c:=-c; end;

begin a3:=a+b+c; end; end;

//=== jika argumen sama ====================

if checksameargument2.Checked=true then begin

begin

if ia1.Checked=true then a:=i[x]; if ja1.Checked=true then a:=j[x]; if ma1.Checked=true then a:=m; if na1.Checked=true then a:=n; end;

begin

if plusa1.Checked=true then a:=a; if mina1.Checked=true then a:=-a; end;

begin

if ib1.Checked=true then b:=i[x]; if jb1.Checked=true then b:=j[x]; if mb1.Checked=true then b:=m; if nb1.Checked=true then b:=n; end;

begin

if plusb1.Checked=true then b:=b; if minb1.Checked=true then b:=-b; end;

begin

c:=strtoint(conscona1.Text); if plusc1.Checked=true then c:=c; if minc1.Checked=true then c:=-c; end;

begin a3:=a+b+c;


(2)

365

end;

end;

//================================== =============

begin

d:=strtoint(consconb3.Text); if plusd3.Checked=true then d:=d; if mind3.Checked=true then d:=-d; end;

//=== cari nilai kondisi 3 =================== begin

if moresame3.Checked=true then begin

if a3>=d then kondisi3:=true else kondisi3:=false; end;

if more3.Checked=true then begin

if a3>d then kondisi3:=true else kondisi3:=false; end;

if lesssame3.Checked=true then begin

if a3<=d then kondisi3:=true else kondisi3:=false; end;

if less3.Checked=true then begin

if a3<d then kondisi3:=true else kondisi3:=false; end;

end;

//================================== =============

end;

procedure TForm1.posisim1;

var a,b,c:integer; begin begin

if ima1.Checked=true then a:=i[x]; if jma1.Checked=true then a:=j[x]; if mma1.Checked=true then a:=m; if nma1.Checked=true then a:=n; if imb1.Checked=true then b:=i[x]; if jmb1.Checked=true then b:=j[x]; if mmb1.Checked=true then b:=m; if nmb1.Checked=true then b:=n; c:=strtoint(consm1.Text); end;

begin

if plusma1.Checked=true then a:=a; if minma1.Checked=true then a:=-a; if plusmb1.Checked=true then b:=b; if minmb1.Checked=true then b:=-b; if plusmc1.Checked=true then c:=c; if minmc1.Checked=true then c:=-c; end;

begin

posm[x,m,n]:=a+b+c; end;

end;

procedure TForm1.posisin1;

var a,b,c:integer; begin begin

if ina1.Checked=true then a:=i[x]; if jna1.Checked=true then a:=j[x]; if mna1.Checked=true then a:=m; if nna1.Checked=true then a:=n; if inb1.Checked=true then b:=i[x]; if jnb1.Checked=true then b:=j[x]; if mnb1.Checked=true then b:=m; if nnb1.Checked=true then b:=n; c:=strtoint(consn1.Text); end;

begin

if plusna1.Checked=true then a:=a; if minna1.Checked=true then a:=-a; if plusnb1.Checked=true then b:=b; if minnb1.Checked=true then b:=-b; if plusnc1.Checked=true then c:=c; if minnc1.Checked=true then c:=-c; end;

begin

posn[x,m,n]:=a+b+c; end;

end;

procedure TForm1.posisim2;

var a,b,c:integer; begin begin

if ima2.Checked=true then a:=i[x]; if jma2.Checked=true then a:=j[x]; if mma2.Checked=true then a:=m; if nma2.Checked=true then a:=n; if imb2.Checked=true then b:=i[x]; if jmb2.Checked=true then b:=j[x]; if mmb2.Checked=true then b:=m; if nmb2.Checked=true then b:=n; c:=strtoint(consm2.Text); end;

begin

if plusma2.Checked=true then a:=a; if minma2.Checked=true then a:=-a; if plusmb2.Checked=true then b:=b; if minmb2.Checked=true then b:=-b; if plusmc2.Checked=true then c:=c; if minmc2.Checked=true then c:=-c; end;

begin

posm[x,m,n]:=a+b+c; end;

end;

procedure TForm1.posisin2;

var a,b,c:integer; begin begin

if ina2.Checked=true then a:=i[x]; if jna2.Checked=true then a:=j[x]; if mna2.Checked=true then a:=m; if nna2.Checked=true then a:=n; if inb2.Checked=true then b:=i[x]; if jnb2.Checked=true then b:=j[x]; if mnb2.Checked=true then b:=m; if nnb2.Checked=true then b:=n; c:=strtoint(consn2.Text); end;

begin

if plusna2.Checked=true then a:=a; if minna2.Checked=true then a:=-a; if plusnb2.Checked=true then b:=b; if minnb2.Checked=true then b:=-b; if plusnc2.Checked=true then c:=c; if minnc2.Checked=true then c:=-c; end;

begin

posn[x,m,n]:=a+b+c; end;

end;

procedure TForm1.posisim3;

var a,b,c:integer; begin begin

if ima3.Checked=true then a:=i[x]; if jma3.Checked=true then a:=j[x]; if mma3.Checked=true then a:=m; if nma3.Checked=true then a:=n; if imb3.Checked=true then b:=i[x]; if jmb3.Checked=true then b:=j[x]; if mmb3.Checked=true then b:=m; if nmb3.Checked=true then b:=n; c:=strtoint(consm3.Text); end;

begin

if plusma3.Checked=true then a:=a; if minma3.Checked=true then a:=-a; if plusmb3.Checked=true then b:=b; if minmb3.Checked=true then b:=-b; if plusmc3.Checked=true then c:=c; if minmc3.Checked=true then c:=-c; end;

begin

posm[x,m,n]:=a+b+c; end;

end;

procedure TForm1.posisin3;

var a,b,c:integer; begin begin

if ina3.Checked=true then a:=i[x]; if jna3.Checked=true then a:=j[x]; if mna3.Checked=true then a:=m; if nna3.Checked=true then a:=n; if inb3.Checked=true then b:=i[x]; if jnb3.Checked=true then b:=j[x];

if mnb3.Checked=true then b:=m; if nnb3.Checked=true then b:=n; c:=strtoint(consn3.Text); end;

begin

if plusna3.Checked=true then a:=a; if minna3.Checked=true then a:=-a; if plusnb3.Checked=true then b:=b; if minnb3.Checked=true then b:=-b; if plusnc3.Checked=true then c:=c; if minnc3.Checked=true then c:=-c; end;

begin

posn[x,m,n]:=a+b+c; end;

end;

procedure TForm1.Button1Click(Sender: TObject);

var a,b,c,d:integer; begin

//== setting nilai vaiabel awal =============================== begin

for a:=1 to 9 do begin i[a]:=0; j[a]:=0; end; for b:=1 to 9 do begin for c:=1 to 10 do begin for d:=1 to 3 do begin posm[b,c,d]:=0; posn[b,c,d]:=0; end; end; end; y:=0;x:=0; a1:=0;a2:=0;a3:=0; m:=0;n:=0;

kondisi1:=false;kondisi2:=false;kondisi3:=fal se;

end;

//= baca input cell parent ====== begin

if checkcellparent1.Checked=true then begin

form1.inputparent1;y:=1; end;

if checkcellparent2.Checked=true then begin

form1.inputparent2;y:=2; end;

if checkcellparent3.Checked=true then begin

form1.inputparent3;y:=3; end;

if checkcellparent4.Checked=true then begin

form1.inputparent4;y:=4; end;

if checkcellparent5.Checked=true then begin

form1.inputparent5;y:=5; end;

if checkcellparent6.Checked=true then begin

form1.inputparent6;y:=6; end;

if checkcellparent7.Checked=true then begin

form1.inputparent7;y:=7; end;

if checkcellparent8.Checked=true then begin

form1.inputparent8;y:=8; end;

if checkcellparent9.Checked=true then begin

form1.inputparent9;y:=9; end;

end; //= cari posisi

================================ begin

for x:=1 to y do begin


(3)

366

for m:=1 to 10 do

begin for n:=1 to 3 do begin

form1.kondisipertama; form1.kondisikedua; if

checkcondition3.Checked=true then begin

form1.kondisiketiga; end;

begin

if kondisi1=true then begin

form1.posisim1; form1.posisin1; end;

if kondisi2=true then begin

form1.posisim2; form1.posisin2; end;

if kondisi3=true then begin

form1.posisim3; form1.posisin3; end;end;end;end;end;end; begin

form2.Show; end;end; end.

b. Unit2.pas

unit Unit2; {$mode objfpc}{$H+} interface uses

Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls,Grids, ExtCtrls, StdCtrls;

type { TForm2 } TForm2 = class(TForm) PageControl1: TPageControl; StringGrid2: TStringGrid;StringGrid1: TStringGrid;

StringGrid3: TStringGrid;StringGrid4: TStringGrid;

StringGrid5: TStringGrid;StringGrid6: TStringGrid;

TabSheet1: TTabSheet;TabSheet2: TTabSheet;

TabSheet3: TTabSheet;TabSheet4: TTabSheet;

TabSheet5: TTabSheet;TabSheet6: TTabSheet;

procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); procedure posisisubjek1;procedure posisisubjek2;

procedure posisisubjek3; procedure posisisubjek4;

procedure posisisubjek5;procedure posisisubjek6;

procedure FormShow(Sender: TObject); private

{ private declarations } public

{ public declarations } end;

var

Form2: TForm2; implementation uses unit1; {$R *.lfm} { TForm2 }

procedure TForm2.posisisubjek1;

begin

tabsheet1.TabVisible:=true; StringGrid1.Cells[0,1]:='(1,1)'; StringGrid1.Cells[0,2]:='(2,1)'; StringGrid1.Cells[0,3]:='(1,2)'; StringGrid1.Cells[0,4]:='(2,2)'; if form1.checkcellparent1.Checked=true then

begin

StringGrid1.Cells[1,1]:='('+inttostr(posm[1,1, 1])+','+

inttostr(posn[1,1,1])+')';

StringGrid1.Cells[1,2]:='('+IntToStr(posm[1,2 ,1])+','+

Inttostr(posn[1,2,1])+')';

StringGrid1.Cells[1,3]:='('+inttostr(posm[1,1, 2])+','+

inttostr(posn[1,1,2])+')';

StringGrid1.Cells[1,4]:='('+IntToStr(posm[1,2 ,2])+','+

Inttostr(posn[1,2,2])+')'; end;

end;

procedure TForm2.FormClose(Sender: TObject; var CloseAction: TCloseAction);

begin

kondisi1:=false;kondisi2:=false;kondisi3:=fal se;

end;

procedure TForm2.posisisubjek2;

begin

tabsheet2.TabVisible:=true; StringGrid2.Cells[0,1]:='(1,1)'; StringGrid2.Cells[0,2]:='(2,1)'; StringGrid2.Cells[0,3]:='(3,1)'; StringGrid2.Cells[0,4]:='(1,2)'; StringGrid2.Cells[0,5]:='(2,2)'; StringGrid2.Cells[0,6]:='(3,2)'; begin

if form1.checkcellparent1.Checked=true then

begin

StringGrid2.Cells[1,1]:='('+inttostr(posm[1,1, 1])+','+

inttostr(posn[1,1,1])+')';

StringGrid2.Cells[1,2]:='('+IntToStr(posm[1,2 ,1])+','+

Inttostr(posn[1,2,1])+')';

StringGrid2.Cells[1,3]:='('+IntToStr(posm[1,3 ,1])+','+

IntToStr(posn[1,3,1])+')';

StringGrid2.Cells[1,4]:='('+inttostr(posm[1,1, 2])+','+

inttostr(posn[1,1,2])+')';

StringGrid2.Cells[1,5]:='('+IntToStr(posm[1,2 ,2])+','+

Inttostr(posn[1,2,2])+')';

StringGrid2.Cells[1,6]:='('+IntToStr(posm[1,3 ,2])+','+

IntToStr(posn[1,3,2])+')'; end;

if form1.checkcellparent2.Checked=true then

begin

StringGrid2.Cells[2,1]:='('+inttostr(posm[2,1, 1])+','+

inttostr(posn[2,1,1])+')';

StringGrid2.Cells[2,2]:='('+IntToStr(posm[2,2 ,1])+','+

Inttostr(posn[2,2,1])+')';

StringGrid2.Cells[2,3]:='('+IntToStr(posm[2,3 ,1])+','+

IntToStr(posn[2,3,1])+')';

StringGrid2.Cells[2,4]:='('+inttostr(posm[2,1, 2])+','+

inttostr(posn[2,1,2])+')';

StringGrid2.Cells[2,5]:='('+IntToStr(posm[2,2 ,2])+','+

Inttostr(posn[2,2,2])+')';

StringGrid2.Cells[2,6]:='('+IntToStr(posm[2,3 ,2])+','+

IntToStr(posn[2,3,2])+')'; end;end;end;

procedure TForm2.posisisubjek3;

begin

tabsheet3.TabVisible:=true; StringGrid3.Cells[0,1]:='(1,1)'; StringGrid3.Cells[0,2]:='(2,1)'; StringGrid3.Cells[0,3]:='(3,1)'; StringGrid3.Cells[0,4]:='(4,1)'; StringGrid3.Cells[0,5]:='(5,1)'; StringGrid3.Cells[0,6]:='(1,2)'; StringGrid3.Cells[0,7]:='(2,2)'; StringGrid3.Cells[0,8]:='(3,2)'; StringGrid3.Cells[0,9]:='(4,2)'; StringGrid3.Cells[0,10]:='(5,2)';

begin

if form1.checkcellparent1.Checked=true then

begin

StringGrid3.Cells[1,1]:='('+inttostr(posm[1,1, 1])+','+inttostr(posn[1,1,1])+')'; StringGrid3.Cells[1,2]:='('+IntToStr(posm[1,2 ,1])+','+Inttostr(posn[1,2,1])+')'; StringGrid3.Cells[1,3]:='('+IntToStr(posm[1,3 ,1])+','+IntToStr(posn[1,3,1])+')'; StringGrid3.Cells[1,4]:='('+IntToStr(posm[1,4 ,1])+','+Inttostr(posn[1,4,1])+')'; StringGrid3.Cells[1,5]:='('+IntToStr(posm[1,5 ,1])+','+IntToStr(posn[1,5,1])+')'; StringGrid3.Cells[1,6]:='('+IntToStr(posm[1,1 ,2])+','+IntToStr(posn[1,1,2])+')'; StringGrid3.Cells[1,7]:='('+IntToStr(posm[1,2 ,2])+','+IntToStr(posn[1,2,2])+')'; StringGrid3.Cells[1,8]:='('+IntToStr(posm[1,3 ,2])+','+IntToStr(posn[1,3,2])+')'; StringGrid3.Cells[1,9]:='('+IntToStr(posm[1,4 ,2])+','+IntToStr(posn[1,4,2])+')'; StringGrid3.Cells[1,10]:='('+IntToStr(posm[1, 5,2])+','+IntToStr(posn[1,5,2])+')'; end;

if form1.checkcellparent2.Checked=true then

begin

StringGrid3.Cells[2,1]:='('+inttostr(posm[2,1, 1])+','+inttostr(posn[2,1,1])+')'; StringGrid3.Cells[2,2]:='('+IntToStr(posm[2,2 ,1])+','+Inttostr(posn[2,2,1])+')'; StringGrid3.Cells[2,3]:='('+IntToStr(posm[2,3 ,1])+','+IntToStr(posn[2,3,1])+')'; StringGrid3.Cells[2,4]:='('+IntToStr(posm[2,4 ,1])+','+Inttostr(posn[2,4,1])+')'; StringGrid3.Cells[2,5]:='('+IntToStr(posm[2,5 ,1])+','+IntToStr(posn[2,5,1])+')'; StringGrid3.Cells[2,6]:='('+IntToStr(posm[2,1 ,2])+','+IntToStr(posn[2,1,2])+')'; StringGrid3.Cells[2,7]:='('+IntToStr(posm[2,2 ,2])+','+IntToStr(posn[2,2,2])+')'; StringGrid3.Cells[2,8]:='('+IntToStr(posm[2,3 ,2])+','+IntToStr(posn[2,3,2])+')'; StringGrid3.Cells[2,9]:='('+IntToStr(posm[2,4 ,2])+','+IntToStr(posn[2,4,2])+')'; StringGrid3.Cells[2,10]:='('+IntToStr(posm[2, 5,2])+','+IntToStr(posn[2,5,2])+')'; end;

if form1.checkcellparent3.Checked=true then

begin

StringGrid3.Cells[3,1]:='('+inttostr(posm[3,1, 1])+','+inttostr(posn[3,1,1])+')'; StringGrid3.Cells[3,2]:='('+IntToStr(posm[3,2 ,1])+','+Inttostr(posn[3,2,1])+')'; StringGrid3.Cells[3,3]:='('+IntToStr(posm[3,3 ,1])+','+IntToStr(posn[3,3,1])+')'; StringGrid3.Cells[3,4]:='('+IntToStr(posm[3,4 ,1])+','+Inttostr(posn[3,4,1])+')'; StringGrid3.Cells[3,5]:='('+IntToStr(posm[3,5 ,1])+','+IntToStr(posn[3,5,1])+')'; StringGrid3.Cells[3,6]:='('+IntToStr(posm[3,1 ,2])+','+IntToStr(posn[3,1,2])+')'; StringGrid3.Cells[3,7]:='('+IntToStr(posm[3,2 ,2])+','+IntToStr(posn[3,2,2])+')'; StringGrid3.Cells[3,8]:='('+IntToStr(posm[3,3 ,2])+','+IntToStr(posn[3,3,2])+')'; StringGrid3.Cells[3,9]:='('+IntToStr(posm[3,4 ,2])+','+IntToStr(posn[3,4,2])+')'; StringGrid3.Cells[3,10]:='('+IntToStr(posm[3, 5,2])+','+IntToStr(posn[3,5,2])+')'; end; if form1.checkcellparent4.Checked=true then

begin

StringGrid3.Cells[4,1]:='('+inttostr(posm[4,1, 1])+','+inttostr(posn[4,1,1])+')'; StringGrid3.Cells[4,2]:='('+IntToStr(posm[4,2 ,1])+','+Inttostr(posn[4,2,1])+')'; StringGrid3.Cells[4,3]:='('+IntToStr(posm[4,3 ,1])+','+IntToStr(posn[4,3,1])+')'; StringGrid3.Cells[4,4]:='('+IntToStr(posm[4,4 ,1])+','+Inttostr(posn[4,4,1])+')'; StringGrid3.Cells[4,5]:='('+IntToStr(posm[4,5 ,1])+','+IntToStr(posn[4,5,1])+')'; StringGrid3.Cells[4,6]:='('+IntToStr(posm[4,1 ,2])+','+IntToStr(posn[4,1,2])+')'; StringGrid3.Cells[4,7]:='('+IntToStr(posm[4,2 ,2])+','+IntToStr(posn[4,2,2])+')'; StringGrid3.Cells[4,8]:='('+IntToStr(posm[4,3 ,2])+','+IntToStr(posn[4,3,2])+')';


(4)

367

StringGrid3.Cells[4,9]:='('+IntToStr(posm[4,4

,2])+','+IntToStr(posn[4,4,2])+')'; StringGrid3.Cells[4,10]:='('+IntToStr(posm[4, 5,2])+','+IntToStr(posn[4,5,2])+')'; end;

end; end;

procedure TForm2.posisisubjek4;

begin

tabsheet4.TabVisible:=true; StringGrid4.Cells[0,1]:='(1,1)'; StringGrid4.Cells[0,2]:='(2,1)'; StringGrid4.Cells[0,3]:='(3,1)'; StringGrid4.Cells[0,4]:='(4,1)'; StringGrid4.Cells[0,5]:='(5,1)'; StringGrid4.Cells[0,6]:='(6,1)'; StringGrid4.Cells[0,7]:='(1,2)'; StringGrid4.Cells[0,8]:='(2,2)'; StringGrid4.Cells[0,9]:='(3,2)'; StringGrid4.Cells[0,10]:='(4,2)'; StringGrid4.Cells[0,11]:='(5,2)'; StringGrid4.Cells[0,12]:='(6,2)'; begin

if form1.checkcellparent1.Checked=true then

begin

StringGrid4.Cells[1,1]:='('+inttostr(posm[1,1, 1])+','+inttostr(posn[1,1,1])+')'; StringGrid4.Cells[1,2]:='('+IntToStr(posm[1,2 ,1])+','+Inttostr(posn[1,2,1])+')'; StringGrid4.Cells[1,3]:='('+IntToStr(posm[1,3 ,1])+','+IntToStr(posn[1,3,1])+')'; StringGrid4.Cells[1,4]:='('+IntToStr(posm[1,4 ,1])+','+Inttostr(posn[1,4,1])+')'; StringGrid4.Cells[1,5]:='('+IntToStr(posm[1,5 ,1])+','+IntToStr(posn[1,5,1])+')'; StringGrid4.Cells[1,6]:='('+IntToStr(posm[1,6 ,1])+','+IntToStr(posn[1,6,1])+')'; StringGrid4.Cells[1,7]:='('+IntToStr(posm[1,1 ,2])+','+IntToStr(posn[1,1,2])+')'; StringGrid4.Cells[1,8]:='('+IntToStr(posm[1,2 ,2])+','+IntToStr(posn[1,2,2])+')'; StringGrid4.Cells[1,9]:='('+IntToStr(posm[1,3 ,2])+','+IntToStr(posn[1,3,2])+')'; StringGrid4.Cells[1,10]:='('+IntToStr(posm[1, 4,2])+','+IntToStr(posn[1,4,2])+')'; StringGrid4.Cells[1,11]:='('+IntToStr(posm[1, 5,2])+','+IntToStr(posn[1,5,2])+')'; StringGrid4.Cells[1,12]:='('+IntToStr(posm[1, 6,2])+','+IntToStr(posn[1,6,2])+')'; end;

if form1.checkcellparent2.Checked=true then

begin

StringGrid4.Cells[2,1]:='('+inttostr(posm[2,1, 1])+','+inttostr(posn[2,1,1])+')'; StringGrid4.Cells[2,2]:='('+IntToStr(posm[2,2 ,1])+','+Inttostr(posn[2,2,1])+')'; StringGrid4.Cells[2,3]:='('+IntToStr(posm[2,3 ,1])+','+IntToStr(posn[2,3,1])+')'; StringGrid4.Cells[2,4]:='('+IntToStr(posm[2,4 ,1])+','+Inttostr(posn[2,4,1])+')'; StringGrid4.Cells[2,5]:='('+IntToStr(posm[2,5 ,1])+','+IntToStr(posn[2,5,1])+')'; StringGrid4.Cells[2,6]:='('+IntToStr(posm[2,6 ,1])+','+IntToStr(posn[2,6,1])+')'; StringGrid4.Cells[2,7]:='('+IntToStr(posm[2,1 ,2])+','+IntToStr(posn[2,1,2])+')'; StringGrid4.Cells[2,8]:='('+IntToStr(posm[2,2 ,2])+','+IntToStr(posn[2,2,2])+')'; StringGrid4.Cells[2,9]:='('+IntToStr(posm[2,3 ,2])+','+IntToStr(posn[2,3,2])+')'; StringGrid4.Cells[2,10]:='('+IntToStr(posm[2, 4,2])+','+IntToStr(posn[2,4,2])+')'; StringGrid4.Cells[2,11]:='('+IntToStr(posm[2, 5,2])+','+IntToStr(posn[2,5,2])+')'; StringGrid4.Cells[2,12]:='('+IntToStr(posm[2, 6,2])+','+IntToStr(posn[2,6,2])+')'; end;

if form1.checkcellparent3.Checked=true then

begin

StringGrid4.Cells[3,1]:='('+inttostr(posm[3,1, 1])+','+inttostr(posn[3,1,1])+')'; StringGrid4.Cells[3,2]:='('+IntToStr(posm[3,2 ,1])+','+Inttostr(posn[3,2,1])+')'; StringGrid4.Cells[3,3]:='('+IntToStr(posm[3,3 ,1])+','+IntToStr(posn[3,3,1])+')'; StringGrid4.Cells[3,4]:='('+IntToStr(posm[3,4 ,1])+','+Inttostr(posn[3,4,1])+')';

StringGrid4.Cells[3,5]:='('+IntToStr(posm[3,5 ,1])+','+IntToStr(posn[3,5,1])+')'; StringGrid4.Cells[3,6]:='('+IntToStr(posm[3,6 ,1])+','+IntToStr(posn[3,6,1])+')'; StringGrid4.Cells[3,7]:='('+IntToStr(posm[3,1 ,2])+','+IntToStr(posn[3,1,2])+')'; StringGrid4.Cells[3,8]:='('+IntToStr(posm[3,2 ,2])+','+IntToStr(posn[3,2,2])+')'; StringGrid4.Cells[3,9]:='('+IntToStr(posm[3,3 ,2])+','+IntToStr(posn[3,3,2])+')'; StringGrid4.Cells[3,10]:='('+IntToStr(posm[3, 4,2])+','+IntToStr(posn[3,4,2])+')'; StringGrid4.Cells[3,11]:='('+IntToStr(posm[3, 5,2])+','+IntToStr(posn[3,5,2])+')'; StringGrid4.Cells[3,12]:='('+IntToStr(posm[3, 6,2])+','+IntToStr(posn[3,6,2])+')'; end;

if form1.checkcellparent4.Checked=true then

begin

StringGrid4.Cells[4,1]:='('+inttostr(posm[4,1, 1])+','+inttostr(posn[4,1,1])+')'; StringGrid4.Cells[4,2]:='('+IntToStr(posm[4,2 ,1])+','+Inttostr(posn[4,2,1])+')'; StringGrid4.Cells[4,3]:='('+IntToStr(posm[4,3 ,1])+','+IntToStr(posn[4,3,1])+')'; StringGrid4.Cells[4,4]:='('+IntToStr(posm[4,4 ,1])+','+Inttostr(posn[4,4,1])+')'; StringGrid4.Cells[4,5]:='('+IntToStr(posm[4,5 ,1])+','+IntToStr(posn[4,5,1])+')'; StringGrid4.Cells[4,6]:='('+IntToStr(posm[4,6 ,1])+','+IntToStr(posn[4,6,1])+')'; StringGrid4.Cells[4,7]:='('+IntToStr(posm[4,1 ,2])+','+IntToStr(posn[4,1,2])+')'; StringGrid4.Cells[4,8]:='('+IntToStr(posm[4,2 ,2])+','+IntToStr(posn[4,2,2])+')'; StringGrid4.Cells[4,9]:='('+IntToStr(posm[4,3 ,2])+','+IntToStr(posn[4,3,2])+')'; StringGrid4.Cells[4,10]:='('+IntToStr(posm[4, 4,2])+','+IntToStr(posn[4,4,2])+')'; StringGrid4.Cells[4,11]:='('+IntToStr(posm[4, 5,2])+','+IntToStr(posn[4,5,2])+')'; StringGrid4.Cells[4,12]:='('+IntToStr(posm[4, 6,2])+','+IntToStr(posn[4,6,2])+')'; end;

if form1.checkcellparent5.Checked=true then

begin

StringGrid4.Cells[5,1]:='('+inttostr(posm[5,1, 1])+','+inttostr(posn[5,1,1])+')'; StringGrid4.Cells[5,2]:='('+IntToStr(posm[5,2 ,1])+','+Inttostr(posn[5,2,1])+')'; StringGrid4.Cells[5,3]:='('+IntToStr(posm[5,3 ,1])+','+IntToStr(posn[5,3,1])+')'; StringGrid4.Cells[5,4]:='('+IntToStr(posm[5,4 ,1])+','+Inttostr(posn[5,4,1])+')'; StringGrid4.Cells[5,5]:='('+IntToStr(posm[5,5 ,1])+','+IntToStr(posn[5,5,1])+')'; StringGrid4.Cells[5,6]:='('+IntToStr(posm[5,6 ,1])+','+IntToStr(posn[5,6,1])+')'; StringGrid4.Cells[5,7]:='('+IntToStr(posm[5,1 ,2])+','+IntToStr(posn[5,1,2])+')'; StringGrid4.Cells[5,8]:='('+IntToStr(posm[5,2 ,2])+','+IntToStr(posn[5,2,2])+')'; StringGrid4.Cells[5,9]:='('+IntToStr(posm[5,3 ,2])+','+IntToStr(posn[5,3,2])+')'; StringGrid4.Cells[5,10]:='('+IntToStr(posm[5, 4,2])+','+IntToStr(posn[5,4,2])+')'; StringGrid4.Cells[5,11]:='('+IntToStr(posm[5, 5,2])+','+IntToStr(posn[5,5,2])+')'; StringGrid4.Cells[5,12]:='('+IntToStr(posm[5, 6,2])+','+IntToStr(posn[5,6,2])+')'; end;

end; end;

procedure TForm2.posisisubjek5;

var

d1,d2,d3,e1,e2,e3,f1,f2,f3,g1,g2,g3:integer; begin

tabsheet5.TabVisible:=true; StringGrid5.Cells[0,1]:='(1,1)'; StringGrid5.Cells[0,2]:='(2,1)'; StringGrid5.Cells[0,3]:='(3,1)'; StringGrid5.Cells[0,4]:='(4,1)'; StringGrid5.Cells[0,5]:='(5,1)'; StringGrid5.Cells[0,6]:='(6,1)'; StringGrid5.Cells[0,7]:='(7,1)'; StringGrid5.Cells[0,8]:='(8,1)'; StringGrid5.Cells[0,9]:='(1,2)'; StringGrid5.Cells[0,10]:='(2,2)';

StringGrid5.Cells[0,11]:='(3,2)'; StringGrid5.Cells[0,12]:='(4,2)'; StringGrid5.Cells[0,13]:='(5,2)'; StringGrid5.Cells[0,14]:='(6,2)'; StringGrid5.Cells[0,15]:='(7,2)'; StringGrid5.Cells[0,16]:='(8,2)'; StringGrid5.Cells[0,17]:='(1,3)'; StringGrid5.Cells[0,18]:='(2,3)'; StringGrid5.Cells[0,19]:='(3,3)'; StringGrid5.Cells[0,20]:='(4,3)'; StringGrid5.Cells[0,21]:='(5,3)'; StringGrid5.Cells[0,22]:='(6,3)'; StringGrid5.Cells[0,23]:='(7,3)'; StringGrid5.Cells[0,24]:='(8,3)'; begin

if

form1.checkcellparent1.Checked=true then begin

StringGrid5.Cells[1,1]:='('+inttostr(posm[1,1, 1])+','+inttostr(posn[1,1,1])+')'; StringGrid5.Cells[1,2]:='('+inttostr(posm[1,2, 1])+','+inttostr(posn[1,2,1])+')'; StringGrid5.Cells[1,3]:='('+inttostr(posm[1,3, 1])+','+inttostr(posn[1,3,1])+')'; StringGrid5.Cells[1,4]:='('+inttostr(posm[1,4, 1])+','+inttostr(posn[1,4,1])+')'; StringGrid5.Cells[1,5]:='('+inttostr(posm[1,5, 1])+','+inttostr(posn[1,5,1])+')'; StringGrid5.Cells[1,6]:='('+inttostr(posm[1,6, 1])+','+inttostr(posn[1,6,1])+')'; StringGrid5.Cells[1,7]:='('+inttostr(posm[1,7, 1])+','+inttostr(posn[1,7,1])+')'; StringGrid5.Cells[1,8]:='('+inttostr(posm[1,8, 1])+','+inttostr(posn[1,8,1])+')'; StringGrid5.Cells[1,9]:='('+inttostr(posm[1,1, 2])+','+inttostr(posn[1,1,2])+')'; StringGrid5.Cells[1,10]:='('+inttostr(posm[1, 2,2])+','+inttostr(posn[1,2,2])+')'; StringGrid5.Cells[1,11]:='('+inttostr(posm[1, 3,2])+','+inttostr(posn[1,3,2])+')'; StringGrid5.Cells[1,12]:='('+inttostr(posm[1, 4,2])+','+inttostr(posn[1,4,2])+')'; StringGrid5.Cells[1,13]:='('+inttostr(posm[1, 5,2])+','+inttostr(posn[1,5,2])+')'; StringGrid5.Cells[1,14]:='('+inttostr(posm[1, 6,2])+','+inttostr(posn[1,6,2])+')'; StringGrid5.Cells[1,15]:='('+inttostr(posm[1, 7,2])+','+inttostr(posn[1,7,2])+')'; StringGrid5.Cells[1,16]:='('+inttostr(posm[1, 8,2])+','+inttostr(posn[1,8,2])+')'; StringGrid5.Cells[1,17]:='('+inttostr(posm[1, 1,3])+','+inttostr(posn[1,1,3])+')'; StringGrid5.Cells[1,18]:='('+inttostr(posm[1, 2,3])+','+inttostr(posn[1,2,3])+')'; StringGrid5.Cells[1,19]:='('+inttostr(posm[1, 3,3])+','+inttostr(posn[1,3,3])+')'; StringGrid5.Cells[1,20]:='('+inttostr(posm[1, 4,3])+','+inttostr(posn[1,4,3])+')'; StringGrid5.Cells[1,21]:='('+inttostr(posm[1, 5,3])+','+inttostr(posn[1,5,3])+')'; StringGrid5.Cells[1,22]:='('+inttostr(posm[1, 6,3])+','+inttostr(posn[1,6,3])+')'; StringGrid5.Cells[1,23]:='('+inttostr(posm[1, 7,3])+','+inttostr(posn[1,7,3])+')'; StringGrid5.Cells[1,24]:='('+inttostr(posm[1, 8,3])+','+inttostr(posn[1,8,3])+')'; end;

if

form1.checkcellparent2.Checked=true then begin

StringGrid5.Cells[2,1]:='('+inttostr(posm[2,1, 1])+','+inttostr(posn[2,1,1])+')'; StringGrid5.Cells[2,2]:='('+inttostr(posm[2,2, 1])+','+inttostr(posn[2,2,1])+')'; StringGrid5.Cells[2,3]:='('+inttostr(posm[2,3, 1])+','+inttostr(posn[2,3,1])+')'; StringGrid5.Cells[2,4]:='('+inttostr(posm[2,4, 1])+','+inttostr(posn[2,4,1])+')'; StringGrid5.Cells[2,5]:='('+inttostr(posm[2,5, 1])+','+inttostr(posn[2,5,1])+')'; StringGrid5.Cells[2,6]:='('+inttostr(posm[2,6, 1])+','+inttostr(posn[2,6,1])+')'; StringGrid5.Cells[2,7]:='('+inttostr(posm[2,7, 1])+','+inttostr(posn[2,7,1])+')'; StringGrid5.Cells[2,8]:='('+inttostr(posm[2,8, 1])+','+inttostr(posn[2,8,1])+')'; StringGrid5.Cells[2,9]:='('+inttostr(posm[2,1, 2])+','+inttostr(posn[2,1,2])+')'; StringGrid5.Cells[2,10]:='('+inttostr(posm[2, 2,2])+','+inttostr(posn[2,2,2])+')';


(5)

368

StringGrid5.Cells[2,11]:='('+inttostr(posm[2,

3,2])+','+inttostr(posn[2,3,2])+')'; StringGrid5.Cells[2,12]:='('+inttostr(posm[2, 4,2])+','+inttostr(posn[2,4,2])+')'; StringGrid5.Cells[2,13]:='('+inttostr(posm[2, 5,2])+','+inttostr(posn[2,5,2])+')'; StringGrid5.Cells[2,14]:='('+inttostr(posm[2, 6,2])+','+inttostr(posn[2,6,2])+')'; StringGrid5.Cells[2,15]:='('+inttostr(posm[2, 7,2])+','+inttostr(posn[2,7,2])+')'; StringGrid5.Cells[2,16]:='('+inttostr(posm[2, 8,2])+','+inttostr(posn[2,8,2])+')'; StringGrid5.Cells[2,17]:='('+inttostr(posm[2, 1,3])+','+inttostr(posn[2,1,3])+')'; StringGrid5.Cells[2,18]:='('+inttostr(posm[2, 2,3])+','+inttostr(posn[2,2,3])+')'; StringGrid5.Cells[2,19]:='('+inttostr(posm[2, 3,3])+','+inttostr(posn[2,3,3])+')'; StringGrid5.Cells[2,20]:='('+inttostr(posm[2, 4,3])+','+inttostr(posn[2,4,3])+')'; StringGrid5.Cells[2,21]:='('+inttostr(posm[2, 5,3])+','+inttostr(posn[2,5,3])+')'; StringGrid5.Cells[2,22]:='('+inttostr(posm[2, 6,3])+','+inttostr(posn[2,6,3])+')'; StringGrid5.Cells[2,23]:='('+inttostr(posm[2, 7,3])+','+inttostr(posn[2,7,3])+')'; StringGrid5.Cells[2,24]:='('+inttostr(posm[2, 8,3])+','+inttostr(posn[2,8,3])+')'; end;

if

form1.checkcellparent3.Checked=true then begin

StringGrid5.Cells[3,1]:='('+inttostr(posm[3,1, 1])+','+inttostr(posn[3,1,1])+')'; StringGrid5.Cells[3,2]:='('+inttostr(posm[3,2, 1])+','+inttostr(posn[3,2,1])+')'; StringGrid5.Cells[3,3]:='('+inttostr(posm[3,3, 1])+','+inttostr(posn[3,3,1])+')'; StringGrid5.Cells[3,4]:='('+inttostr(posm[3,4, 1])+','+inttostr(posn[3,4,1])+')'; StringGrid5.Cells[3,5]:='('+inttostr(posm[3,5, 1])+','+inttostr(posn[3,5,1])+')'; StringGrid5.Cells[3,6]:='('+inttostr(posm[3,6, 1])+','+inttostr(posn[3,6,1])+')'; StringGrid5.Cells[3,7]:='('+inttostr(posm[3,7, 1])+','+inttostr(posn[3,7,1])+')'; StringGrid5.Cells[3,8]:='('+inttostr(posm[3,8, 1])+','+inttostr(posn[3,8,1])+')'; StringGrid5.Cells[3,9]:='('+inttostr(posm[3,1, 2])+','+inttostr(posn[3,1,2])+')'; StringGrid5.Cells[3,10]:='('+inttostr(posm[3, 2,2])+','+inttostr(posn[3,2,2])+')'; StringGrid5.Cells[3,11]:='('+inttostr(posm[3, 3,2])+','+inttostr(posn[3,3,2])+')'; StringGrid5.Cells[3,12]:='('+inttostr(posm[3, 4,2])+','+inttostr(posn[3,4,2])+')'; StringGrid5.Cells[3,13]:='('+inttostr(posm[3, 5,2])+','+inttostr(posn[3,5,2])+')'; StringGrid5.Cells[3,14]:='('+inttostr(posm[3, 6,2])+','+inttostr(posn[3,6,2])+')'; StringGrid5.Cells[3,15]:='('+inttostr(posm[3, 7,2])+','+inttostr(posn[3,7,2])+')'; StringGrid5.Cells[3,16]:='('+inttostr(posm[3, 8,2])+','+inttostr(posn[3,8,2])+')'; StringGrid5.Cells[3,17]:='('+inttostr(posm[3, 1,3])+','+inttostr(posn[3,1,3])+')'; StringGrid5.Cells[3,18]:='('+inttostr(posm[3, 2,3])+','+inttostr(posn[3,2,3])+')'; StringGrid5.Cells[3,19]:='('+inttostr(posm[3, 3,3])+','+inttostr(posn[3,3,3])+')'; StringGrid5.Cells[3,20]:='('+inttostr(posm[3, 4,3])+','+inttostr(posn[3,4,3])+')'; StringGrid5.Cells[3,21]:='('+inttostr(posm[3, 5,3])+','+inttostr(posn[3,5,3])+')'; StringGrid5.Cells[3,22]:='('+inttostr(posm[3, 6,3])+','+inttostr(posn[3,6,3])+')'; StringGrid5.Cells[3,23]:='('+inttostr(posm[3, 7,3])+','+inttostr(posn[3,7,3])+')'; StringGrid5.Cells[3,24]:='('+inttostr(posm[3, 8,3])+','+inttostr(posn[3,8,3])+')'; end;

if

form1.checkcellparent4.Checked=true then begin

for d1:=1 to 8 do begin

StringGrid5.Cells[4,d1]:='('+inttostr(posm[4, d1,1])+','+inttostr(posn[4,d1,1])+')'; end;

for d2:=1 to 8 do

begin

StringGrid5.Cells[4,d2+8]:='('+inttostr(posm[ 4,d2,2])+','+inttostr(posn[4,d2,2])+')'; end;

for d3:=1 to 8 do begin

StringGrid5.Cells[4,d3+16]:='('+inttostr(pos m[4,d3,3])+','+inttostr(posn[4,d3,3])+')'; end;

end; if

form1.checkcellparent5.Checked=true then begin

for e1:=1 to 8 do begin

StringGrid5.Cells[5,e1]:='('+inttostr(posm[5, e1,1])+','+inttostr(posn[5,e1,1])+')'; end;

for e2:=1 to 8 do begin

StringGrid5.Cells[5,e2+8]:='('+inttostr(posm[ 5,e2,2])+','+inttostr(posn[5,e2,2])+')'; end;

for e3:=1 to 8 do begin

StringGrid5.Cells[5,e3+16]:='('+inttostr(pos m[5,e3,3])+','+inttostr(posn[5,e3,3])+')'; end;

end; if

form1.checkcellparent6.Checked=true then begin

for f1:=1 to 8 do begin

StringGrid5.Cells[6,f1]:='('+inttostr(posm[6,f 1,1])+','+inttostr(posn[6,f1,1])+')'; end;

for f2:=1 to 8 do begin

StringGrid5.Cells[6,f2+8]:='('+inttostr(posm[ 6,f2,2])+','+inttostr(posn[6,f2,2])+')'; end;

for f3:=1 to 8 do begin

StringGrid5.Cells[6,f3+16]:='('+inttostr(posm [6,f3,3])+','+inttostr(posn[6,f3,3])+')'; end;

end; if

form1.checkcellparent7.Checked=true then begin

for g1:=1 to 8 do begin

StringGrid5.Cells[7,g1]:='('+inttostr(posm[7, g1,1])+','+inttostr(posn[7,g1,1])+')'; end;

for g2:=1 to 8 do begin

StringGrid5.Cells[7,g2+8]:='('+inttostr(posm[ 7,g2,2])+','+inttostr(posn[7,g2,2])+')'; end;

for g3:=1 to 8 do begin

StringGrid5.Cells[7,g3+16]:='('+inttostr(pos m[7,g3,3])+','+inttostr(posn[7,g3,3])+')'; end;

end; end; end;

procedure TForm2.posisisubjek6;

var

b1,b2,b3,c1,c2,c3,d1,d2,d3,f1,f2,f3,g1,g2,g3 :integer;

h1,h2,h3,i1,i2,i3,j1,j2,j3,k1,k2,k3:integer; begin

tabsheet6.TabVisible:=true; StringGrid6.Cells[0,1]:='(1,1)'; StringGrid6.Cells[0,2]:='(2,1)'; StringGrid6.Cells[0,3]:='(3,1)'; StringGrid6.Cells[0,4]:='(4,1)'; StringGrid6.Cells[0,5]:='(5,1)'; StringGrid6.Cells[0,6]:='(6,1)'; StringGrid6.Cells[0,7]:='(7,1)'; StringGrid6.Cells[0,8]:='(8,1)'; StringGrid6.Cells[0,9]:='(9,1)'; StringGrid6.Cells[0,10]:='(10,1)'; StringGrid6.Cells[0,11]:='(1,2)'; StringGrid6.Cells[0,12]:='(2,2)'; StringGrid6.Cells[0,13]:='(3,2)'; StringGrid6.Cells[0,14]:='(4,2)';

StringGrid6.Cells[0,15]:='(5,2)'; StringGrid6.Cells[0,16]:='(6,2)'; StringGrid6.Cells[0,17]:='(7,2)'; StringGrid6.Cells[0,18]:='(8,2)'; StringGrid6.Cells[0,19]:='(9,2)'; StringGrid6.Cells[0,20]:='(10,2)'; StringGrid6.Cells[0,21]:='(1,3)'; StringGrid6.Cells[0,22]:='(2,3)'; StringGrid6.Cells[0,23]:='(3,3)'; StringGrid6.Cells[0,24]:='(4,3)'; StringGrid6.Cells[0,25]:='(5,3)'; StringGrid6.Cells[0,26]:='(6,3)'; StringGrid6.Cells[0,27]:='(7,3)'; StringGrid6.Cells[0,28]:='(8,3)'; StringGrid6.Cells[0,29]:='(9,3)'; StringGrid6.Cells[0,30]:='(10,3)'; begin

if

form1.checkcellparent1.Checked=true then begin

for b1:=1 to 10 do begin

StringGrid6.Cells[1,b1]:='('+inttostr(posm[1, b1,1])+','+inttostr(posn[1,b1,1])+')'; end;

for b2:=1 to 10 do begin

StringGrid6.Cells[1,b2+10]:='('+inttostr(pos m[1,b2,2])+','+inttostr(posn[1,b2,2])+')'; end;

for b3:=1 to 10 do begin

StringGrid6.Cells[1,b3+20]:='('+inttostr(pos m[1,b3,3])+','+inttostr(posn[1,b3,3])+')'; end;

end; if

form1.checkcellparent2.Checked=true then begin

for c1:=1 to 10 do begin

StringGrid6.Cells[2,c1]:='('+inttostr(posm[2, c1,1])+','+inttostr(posn[2,c1,1])+')'; end;

for c2:=1 to 10 do begin

StringGrid6.Cells[2,c2+10]:='('+inttostr(pos m[2,c2,2])+','+inttostr(posn[2,c2,2])+')'; end;

for c3:=1 to 10 do begin

StringGrid6.Cells[2,c3+20]:='('+inttostr(pos m[2,c3,3])+','+inttostr(posn[2,c3,3])+')'; end;

end; if

form1.checkcellparent3.Checked=true then begin

for d1:=1 to 10 do begin

StringGrid6.Cells[3,d1]:='('+inttostr(posm[3, d1,1])+','+inttostr(posn[3,d1,1])+')'; end;

for d2:=1 to 10 do begin

StringGrid6.Cells[3,d2+10]:='('+inttostr(pos m[3,d2,2])+','+inttostr(posn[3,d2,2])+')'; end;

for d3:=1 to 10 do begin

StringGrid6.Cells[3,d3+20]:='('+inttostr(pos m[3,d3,3])+','+inttostr(posn[3,d3,3])+')'; end;

end; if

form1.checkcellparent4.Checked=true then begin

for f1:=1 to 10 do begin

StringGrid6.Cells[4,f1]:='('+inttostr(posm[4,f 1,1])+','+inttostr(posn[4,f1,1])+')'; end;

for f2:=1 to 10 do begin

StringGrid6.Cells[4,f2+10]:='('+inttostr(posm [4,f2,2])+','+inttostr(posn[4,f2,2])+')'; end;

for f3:=1 to 10 do begin

StringGrid6.Cells[4,f3+20]:='('+inttostr(posm [4,f3,3])+','+inttostr(posn[4,f3,3])+')';


(6)

369

end;

end; if

form1.checkcellparent5.Checked=true then begin

for g1:=1 to 10 do begin

StringGrid6.Cells[5,g1]:='('+inttostr(posm[5, g1,1])+','+inttostr(posn[5,g1,1])+')'; end;

for g2:=1 to 10 do begin

StringGrid6.Cells[5,g2+10]:='('+inttostr(pos m[5,g2,2])+','+inttostr(posn[5,g2,2])+')'; end;

for g3:=1 to 10 do begin

StringGrid6.Cells[5,g3+20]:='('+inttostr(pos m[5,g3,3])+','+inttostr(posn[5,g3,3])+')'; end;

end; if

form1.checkcellparent6.Checked=true then begin

for h1:=1 to 10 do begin

StringGrid6.Cells[6,h1]:='('+inttostr(posm[6, h1,1])+','+inttostr(posn[6,h1,1])+')'; end;

for h2:=1 to 10 do begin

StringGrid6.Cells[6,h2+10]:='('+inttostr(pos m[6,h2,2])+','+inttostr(posn[6,h2,2])+')'; end;

for h3:=1 to 10 do begin

StringGrid6.Cells[6,h3+20]:='('+inttostr(pos m[6,h3,3])+','+inttostr(posn[6,h3,3])+')'; end;

end; if

form1.checkcellparent7.Checked=true then begin

for i1:=1 to 10 do begin

StringGrid6.Cells[7,i1]:='('+inttostr(posm[7,i 1,1])+','+inttostr(posn[7,i1,1])+')'; end;

for i2:=1 to 10 do begin

StringGrid6.Cells[7,i2+10]:='('+inttostr(posm [7,i2,2])+','+inttostr(posn[7,i2,2])+')'; end;

for i3:=1 to 10 do begin

StringGrid6.Cells[7,i3+20]:='('+inttostr(posm [7,i3,3])+','+inttostr(posn[7,i3,3])+')'; end;

end; if

form1.checkcellparent8.Checked=true then begin

for j1:=1 to 10 do begin

StringGrid6.Cells[8,j1]:='('+inttostr(posm[8,j 1,1])+','+inttostr(posn[8,j1,1])+')'; end;

for j2:=1 to 10 do begin

StringGrid6.Cells[8,j2+10]:='('+inttostr(posm [8,j2,2])+','+inttostr(posn[8,j2,2])+')'; end;

for j3:=1 to 10 do begin

StringGrid6.Cells[8,j3+20]:='('+inttostr(posm [8,j3,3])+','+inttostr(posn[8,j3,3])+')'; end;

end; if

form1.checkcellparent9.Checked=true then begin

for k1:=1 to 10 do begin

StringGrid6.Cells[9,k1]:='('+inttostr(posm[9, k1,1])+','+inttostr(posn[9,k1,1])+')'; end;

for k2:=1 to 10 do begin

StringGrid6.Cells[9,k2+10]:='('+inttostr(pos m[9,k2,2])+','+inttostr(posn[9,k2,2])+')'; end;

for k3:=1 to 10 do begin

StringGrid6.Cells[9,k3+20]:='('+inttostr(pos m[9,k3,3])+','+inttostr(posn[9,k3,3])+')'; end;

end; end; end;

procedure TForm2.FormShow(Sender: TObject);

begin

StringGrid1.Clean; StringGrid2.Clean; StringGrid3.Clean; StringGrid4.Clean; StringGrid5.Clean; StringGrid6.Clean; tabsheet1.TabVisible:=false; tabsheet2.TabVisible:=false; tabsheet3.TabVisible:=false; tabsheet4.TabVisible:=false; tabsheet5.TabVisible:=false; tabsheet6.TabVisible:=false; if form1.Subjek1.Checked=true then form2.posisisubjek1;

if form1.Subjek2.Checked=true then form2.posisisubjek2;

if form1.Subjek3.Checked=true then form2.posisisubjek3;

if form1.Subjek4.Checked=true then form2.posisisubjek4;

if form1.Subjek5.Checked=true then form2.posisisubjek5;

if form1.Subjek6.Checked=true then form2.posisisubjek6;

end; end.