Translate

Sabtu, 15 Juni 2013

CERPENku yang Ke-4



“RANTAI”

“Woi ada kabar baru”, teriak Loki
“Opo-opo?”, shisaw ingin melihat
Aku ikut-ikut mendekat.
“Ada pembunuhan berantai”, jawab Loki
“Hah yang bener? Dimana?”, aku mulai penasaran
Bel asrama berdentang tak henti-hentinya.
“Ayo-ayo cepat ke kelas, nanti kita telat”, saran shisaw
Loki langsung meletakkan ipad nya di lemari, aku terburu mengambil tas. Kita bertiga berlari bersama menuju sekolah yang emang jaraknya dekat tapi jalu sudah telat itu lho hukiumannya sesuatu banget.
Benar Saja terpat Loki dan shisaw masuk aku tertinggal di luar gerbang gara-gara bawaan ku terlalu berat. Pak Jos, sebutan anak-anak untuk seorang lelaki paruh baya ng mengebul-ngebulkan asa rokoknya di depan mukaku.
“Bau pak” wajahku menunduk dan memelas minta mpun
“Bisa-bisanya kamu telat? Kamu tau kan apa hukuman bagi anak asrama yang telat?”
“iya pak”, aku putus asa
***
Hukuman pertama di pagi hari aku harus membersihkan daun-daun yang berserakan di taman dan membersihkan toilet putra maupun putrid an guru maupun murid.
Hukuman kedua di siang hari aku harus menimba air untuk anak-anak berwudhu.
Hukuman ketiga menjadi burung hantu alias penjaga malam, yang tak pernah tidur.Inilah hukuman yang paling tidak ku suka.Bergelut dengan gelapnya dunia malam, dinginnya menusuk rusuk tulang belakang, dan auman hewan-hewan tak sedap di dengar.
**
Emang sih aku akui, aku ini lahir di malam hari yang penuh kegelapan dan gelagepan.Tau ga aku tu lahir di air kolam renang, fasilitas trend ibu melahirkan sekarang.Tapi ku jengkel dan masih inget kalo waktu lahir ku kemasukkan air kolam, sampai-sampai ku ga nangis.

***
Loki dan Shisaw berlari padaku saat istirahat pertama.
“Maaf ya”, loki memelas
“He.em bro sorry nggih”, logat blasteran dan jowo nglotok shisaw keluar
“Ya gapapa kok”, tiba-tiba aku yang cengeng menangis
“Hei you don’t galau-galau, what is the water?”, hibur Shisaw
Loki menenangkan dengan menepuk pundakku.

***
Pelajaran pun telah usai, hukuman terakhir telah menantiku, Loki dan shisaw bersiap menemaniku malam Kamis Kliwon (KK) ini.
Shisaw membawa bawang yang banyak dan mengalungkannya di leher. Loki membawa banyak sekali peralatan dapur, dandanannya pun seperti akan berperang.
“Hei kalian tu mau apa?”, hardikku menunjuk apa yang mereka bawa
“Kita kan mau berperang dengan gelapnya malam”, Loki memperagakan gayanya
“Tradisi nang omahku emang ngene yo bro, hehe” Shisaw tetap pede membawa bawang-bawang yang sudah dikirimkan Ciciknya tadi sore.

**
Asrama kami memang terkenal agak seram dan banyak isu tak sedap yang mewarnainya.Kami bertiga Aku, Loki dan Shisaw memang trio religious, sebutan dari teman-teman kami.
Aku adalah ketua bagian kerohanian islam di asrama sekolah. Loki itu cah Kristen yang gaul banget ama siapa aja. Sedangkan yang satu ini Shisaw dia itu blasteran cina-tegal, dia satu-satunya murid beragama Kong Hu Chu.
Meskipun berbeda-beda kami tetap trio, hehe itu motto kami, jika ada kesusahan diselesaikan bersama.Tapi, jika ada rumor tentang pencemoohan agama yang kami anut, kami sering sekali berdebat hingga berbulan-bulan dan setelah itu berkumpul bersama lagi, karena kami tau bahwa kebenaran hanyalah milik-Nya.

***
Malam itu kami keluar dari kamar bak tentara yang akan bertempur. Teman dari asrama lain melihat dan agak mencemooh.
“Haha bocah sutris”, ejek fallis
“Meh masak-masak nggih bu?” tambah stonn
“Heh bro jo ngono to, we love peace” seru Shisaw
“Sudah-sudah biarkan saja”, kataku menenangkan
“Iya kita langsung aja ke pos ”, ajak Loki
**
“Lok, berita tadi gimana lanjutnya?”, tanyaku
“Oh itu aku juga belum selesai baca ig, hehe” kata Loki cengingisan
“Iyaya ambil Ipadmu sana biar ga lone”, pinta Shisaw
“Tapi kan kita udah jauh dari asrama”, Loki agak ketakutan
“Yaudah besok aja sekarang kita mau jaga dimana?” tanyaku
“Di sudut-sudut sekolah/ asrama wae” kata Shisaw
“Hii gak takut?”, tanya Loki
“Ya ding tadi Pak Jos juga bilang gitu” kataku
**
Aku, Loki dan Shisaw memutuskan untuk berpencar dan menjaga asrama.Loki senantiasa membaca puji-pujian, Shisaw komat-kamit gajelas.Aku berdzikir sepanjang jalan.Kami bertiga jelas ketakutan sekali.
Hingga tiba di lorong asrama di sana terdapat tower yang terkenal angker.
Tiba-tiba saja air mbludak dan baunya busuk.Kami ketakutan langsung pergi.
Shisaw “Aku kebelet nih bro, temenin yuk?”
“Idih ogah ah” kata Loki
“Come on, please” Shisaw memohon
“Oke-oke, karena kamu di sini bantuin aku yaudah deh ku anter”, ku menenangkan
**
Sesampainya di toilet dekat lorong itu.
“Aku tiba-tiba sakit perut nih, tungguin ya”, Loki dengan enaknya pergi
“Hei-hei yang bener aja nih”, kataku risau
“Lok, tunggu sampai shisaw selesai dong!” teriakku
“Halah wes mules ki lo”, paksa Loki
“Yawes kalo shisaw udah selesai, ku tinggalin kamu”, ancamku
“Terserah..”, Loki pede

Sekitar 15 menit – 45 menit mereka pun tak keluar-keluar, membuatku sangat risau.Terpaksa ku ke kamar mandi dan mengecek keberadaan mereka. Ternyata nihil, tapi ada rantai berdarah di sana. Hii,, atut aku. Langsung saja ku berlari tak tentu arah.
Ku ditimpuk orang dari belakang ‘Mak gedebug’ aku tersungkur.
**
Beberapa jam berlalu, aku tersadar dan sudah berada di kamarku.
“What happen tonight?”, tanyaku kebingungan
Loki dan Shisaw ternyata tak ada.Aku berniat melaporkan hal ini pada pihak keamanan sekolah.
“Maaf pak budi teman saya hilang”, kataku
“Haa hilang, kapan?”, jawab pak budi
“Tadi malam pak di dekat kamar mandi lorong”, jawabku
“Kok bisa kesana kalian?Padahal kamar kalian ke sana jaraknya jauh?”
“Saya kena hukuman pak, Loki dan Shisaw menemani saya”, terangku
“Hukuman-hukuman siapa? Kok yang lain ngikut?”
“Iya maaf pak”
“Sudah sana pergi saya tak ada waktu untuk hal tak penting”
Ku berjalan lunglai dari kantor BK,
Ku bertanya pada diriku, “Dimana trio religious ini”
“Kenapa pak budi begitu? Apakah dia pelakunya”
“Aku sungguh bingung dan butuh teman.”

***
Selama 3 hari penuh Loki dan Shisaw tak dapat ditemukan.
Akhirnya pada malam minggu ku putuskan untuk menjaga malam tuk mencari keberadaan mereka.
Alhasil ku ditikam kembali, tapi saat pagi hari ku tak berada di kamar, namun ada di gudang dengan tangan, kaki, mulut yang terikat.
“Siapa di sini?” teriakku
Dug dug deg tik duk, langkah kaki itu menggoncangkan segenap kestabilanku. Langkahnya semakin keras dan cepat seirama dengan detak jantungku.
Jeng-jeng-jeng-jeng…
“Siapa? Siapa?Siapa yang datang?” tanyaku membabi buta.
“Hei, kau jawab!!” paksaku
“Hahah slowdown kancaku”, Shisaw tertawa
“Loh? Yang nimpuk aku?” tanyaku menerka
“Not me lo”, terang Shisaw
“Lalu?” tanyaku penasaran
“Ehm, entar habis ini dia datang kok.” jawab Shisaw
Bak tikus yang dijebak, ku deg-deg an kembali.
“Apakah Shisaw komplotan pembunuh?” tanya hatiku

Jeng-jeng-jeng-jeng gubrak, ternyata eh ternyata yang datang itu… ’Pak Budi’, kawanan guru yang ku minta tuk mencari Loki dan Shisaw.
“Hehe maaf ya nang”, kata Pak Budi
“Gapapa pak, kenapa saya ditimpuk?” kataku
“Saya mau nyelamatin kamu.” Terang pak budi mencurigakan
“Haah? Kok ditimpuk pak?” tanyaku lagi, padahal ku mencurigai beliau
“Ada pembunuh sebenarnya..”
“Yang benar saja pak?”

Semua hening sejenak, tiba-tiba Shisaw menangis dan Pak Budi menenangkan.
“Tenang nak, Loki pasti ada”
Shisaw masih tetap  menangis dan menganggukkan kepala.
Ku semakin bertanya-tanya, mengapa ini? Ada apa?
Pak  Budi melarangku bertanya banyak dan melepaskan ikatan tangan dan kakiku.

***
“Loki dimana kamu?” tanya hatiku risau
“Bagaimana persahabatan kita”, ku semakin galau dan menangis.
Tapi ku putuskan untuk semangat kembali, masak cowok ketua rohis nangis, haduhhh memalukan.
**
Belum selesai ku telusuri keberadaan Loki dan kasus ini.
Loki telah ditemukan dengan keadaan mengenaskan di kamar mandi lorong, sekitar 5 hari setelah ku ditimpuk.
Aku waktu itu pernah mengecek tapi yang ku lihat hanya rantai berdarah.Lalu ku putuskan untuk pergi.
Mereka, kawanan guru BK tetap menjaga rahasia kasus ini.Tetapi, aku selalu ingin tau kebenarannya.
*
Loki ditemukan diikat rantai yang terbenam di tanah, dekat jendela kamar mandi.
Tapi, untunglah masih bisa diselamatkan.
Apa motif pembunuh ini dan kenapa bisa masuk asrama?
Apa pembunuh itu orang dalam? Tapi siapa?
Sejuta pertanyaan memenuhi otakku.
Apakah mungkin????
*
Ku bergegas beranjak ke kamar.Semua orang yang ku lewati begitu saja.
Ku ambil i-pad milik Loki, ku lihat berita yang dahulu kami baca bersama.
Ku membaca dengan saksama.
Setelah selesai membaca, ku ambruk tak bisa berdiri dan tau kenyataannya.
Bahwa pak Joss dalang dari semua kejadian ini, dia sengaja memberi hukuman yang berlebih padaku. Hal itu diperbuat untuk memenuhi hawa nafsu untuk membredeli tubuh orang, anak-anak muda 17 tahun an. Untunglah aku selamat, dan untung saja Loki masih hidup.

***
Hari Sabtu, 2 Mei 2014 merupakan hari tak terlupakan bagiku. Loki sudah siuman dan akan menempuh ujian nasional susulan. Guru-guru BK akhirnya berterus terang pada kepolisian bahwa Pak Joss itu psikopat.Shisaw masih parno dan memutuskan tuk pergi ke kampungya, di Yang Zho setelah perpisahan.

Hal-hal yang ku telusuri ternyata memang menuju ke satu kata satu nama, itulah Pak Joss. Beliau guru yang tegas, idolaku, tapi setelah adanya kasus ini ku menyadari agar tak percaya orang hanya pada cover nya saja.
Trio Religius sudah tak ada lagi, hanya dapat dikenang di hati teman satu angkatan.
***
Sore hari yang cerah tahun 2015 ku membaca Koran, trending topic nya pak Joss.
‘Rantai yang digunakan Pak Joss untuk melukai orang lain, biasanya dilumuri darah babi, bisa ular, obat gatal.’
“Benar-benar kejam beliau.” renungku
Pantas saja, saat ditimpuk pertama kali dan terbangun di kamar, aku merasa gatal-gatal yang tak biasa.
**
Malam harinya, ku sakit perut.Air di kamar mandi habis dan saat itu mati lampu.Ku pergi ke pom bensin terdekat saja.Saat membayar ongkos kamar mandi ke petugas di luar, yang gelagatnya ku tau siapa dia. Tetapi, ku abaikan saja karena perut ini tak kuat lagi.
Saat masuk ke kamar mandi, ada rantai yang menggantung dari atap.
“Haaaa” teriakku
***

hehe gara" gajadi ikut lomba cerpen jadi ku posting di blog aja deh

Sabtu, 03 November 2012

ATUR PAMBAGYAHARJA

FORMAT ATUR PAMBAGYAHARJA


Assalamualaikum wr. Wb.
Nuwun nuwun kula nuwun
Dhumateng sanggya para rawuh kakung sumawana putri ingkang luhuring budi, dhumateng para priyagung dharahing nata. Para sarjana sujaning budi langkung-langkung dhumateng para sepuh pinisepuh ingkang mahambeg berbudi darma, pana ing pamawas lebda ing pitutur aji. Waradinipun dhumateng sanggya para rawuh kakung sumawana putri ingkang murbeng budi
Sugeng rawuh kula aturaken sinarengan gunging panuwun ingkang tanpa pepindhan panjenengengan keraya-raya kersa nglodhangaken wekdal hangrawuhi punapa ingkang dados pamundhutipun bapa/ibu pamangkugati hanatepi dharmaning asepuh saperlu hangrakit sekar cempaka mulya wiwaha putra, mahargya siwi. Ngentas pitulus kenyanipun ingkang wuragil ingkang asesilih namapun …….. ingkang sampun jinatukrama dening nakmas bagus . . . . . . . atmaja jalunipun saking panjenenganipun bapa/ibu . . . . . . . . . ingkang pidalem saking pedurungan semarang.
Ing salajengipun, kaparenga pamangkugati lumantar kula ngaturaken gunging panuwun ingkang tanpa pepindhan awit saking paring penjenengan ingkang awujud tandha tresna, bau suku, iguh pratikel miwah pisungsung ingkang maneka warni tundhonipun saged ndadosaken handayani dhateng babaring sedya., wigatosing gati ing ri kalenggahan punika.
Para rawuh, wondene anggenipun panjenenganipun bapa/ibu pamangkugati ngrawuhaken panjengan sami saperlu badhe nyuwun idi pangestu nun inggih sih donga pangestu mugi pinanganten kekalih anggenipun badhe lelumban wonten ing madyaning bebrayan agung tansah sageda begja kang sinedya jumbuh kang ginayuh, lestari pepasthening akrami, bias guyub rukun reruntungan, linuludhan ing semat drajat lan pangkat kanthi sinandhangan ing suka basuki wirya widodo nir ing sambekala lan tuwusipun tansah sageda dados kaluwarga ingkang sakinanh, mawadah, warohmah. Pikantuk nugrahanipun ing ngarsa dalem Gusti ingkang Maha Agung lan mugiya enggal-enggal pikantuk momongan ingkang soleh lan solekah. Lan mugiya rising pinangten kekalih tansah enggal anampi pasihaning Gusti kang arupi pratima mas ingkang saged tata jalma, ingkang ginadhang gadhang tansah dadosa anak anung anindhita ingkang bangkit mikul dhuwur mendem jero yayah wibi, anak anung ingkang tansah mengku werdi putra kang linangkung , anindhita putra kang tanpa cacat lair batosipun, mikul dhuwur ingkang tansah mengku werdi putra kang bias damel arum kuncaraning asmaning para pepundhen lan kaluwarganipun, wondene mendem jero ingkang tansah mengku werdi putra ingkang bias nasabi utawi nutupi cacat lan kekiranganipun saking para pepundhen lan kaluwarganipun.
Para rawuh kaparenga pamangkugati lumantar kula hambokbilih anggenipun nampi karawuhan panjenegen sami wonten kiranging tri prakawis ingkang awujud tanggap, tangguh, gupuh punapa dene suguh lan aruh lumantar kula nyuwun agunging samudra pangaksama ingkang tanpa pepindhan.
Semanten ugi kula ingkang minangka talanging basa hambok bilih anggen kula matur wonten kiranging reh subasita, basa, miwah sastra, nyuwun agunging samudra pangaksama.
Akhirul kalam wabilahitaufik walhidayah, wassalamualaikum wr. Wb
Nuwun nuwun matur nuwun 


TULADHANE VIDEO SAKING KULA:
hehe maklum videonya jelek, yang ngedit ecek-ecek sih hehe...

Rabu, 19 September 2012

PROGRAM PASCAL 1/2 BELAH KETUPAT DENGAN FOR



Pascal Bab Perulangan



Proses yang Berulang
       Seringkali kita harus melakukan pengulangan terhadap suatu proses. Untuk memudahkan hal ini, Turbo Pascal menyediakan tiga macam pernyataan:
§  FOR
§  WHILE
§  REPEAT

   Dengan menggunakan pernyataan ini, suatu proses yang berulang dapat ditulis dengan kode yang pendek. Sebagai sontoh, jika Anda diminta menampilkan tulisan ‘Turbo Pascal’ seratus kali, tidaklah mungkin kita menuliskan perintah Writeln (‘Turbo Pascal’) seratus kali. Bila hal ini harus dilakukan karena tidak ada pernyataan lain yang mendukung, pemrograman akan terasa membosankan. Untungnya hal ini tidak harus terjadi!
  
   Ketiga Pernyataan di atas merupakan komponen yang membuat Pascal merupakan suatu bahasa pemrograman yang terstruktur. Suatu pengulangan dapat dilakukan tanpa menggunakan pernyataan GOTO sebagaimana dilakukan pada bahasa-bahasa pendahulu Pascal (meskipun pascal juga menyediakannya).

?
Terdapat Istilah loop atau kalang. Istilah ini menyatakan proses yang berulang.

1.1 Pernyataan FOR
       Pernyataan FOR biasa digunakan untuk melakukan pengulangan yang jumlahnya telah diketahui sebelumnya. Sebagai contoh, FOR dapat digunakan untuk menampilkan tulisan ‘Turbo Pascal’ 10 kali atau pun dalam jumlah yang lebih banyak lagi.

1.1.1 FOR TO
Salah satu bentuk pernyataan FOR adalah sebgai berikut:

FOR variabel := nilai_awal TO nilai_akhir DO
      pernyataan


Gambar 1.1 Pernyataan FOR

Pada format ini, variabel bertindak sebagai variabel pengontrol pengulangan. Variabel akan diisi dengan nilai, dimulai dari nilai_awal hingga nilai_akhir untuk setiap iterasi (putaran). Untuk setiap iterasi, pernyataan akan dijalankan. Gambar 1.1 menunjukkan mekanisme pengulangan oleh FOR.

Pada bentuk FOR di atas:

§  Variabel, nilai_awal dan nilai_akhir harus bertipe sama atau kompatibel
§  Tipe yang digunakan pada ketiga komponen tersebut harus berupa ordinal.
§  Nilai_awal harus lebih kecil atau sama dengan nilai_akhir. Kalau nilai_akhir lebih kecil daripada nilai_awal, bagian pernyataan tidak dijalankan sama sekali.
Contoh program yang menggunakan FOR untuk menampilkan tulisan ‘Turbo Pascal’ 10 kali:
Program 1.1

Program x10;

{     -----------------------------------------------------------              }
{     Contoh pemakaian FOR untuk                            }
{        menampilkan tulisan Turbo Pascal 10 kali.     }
{     -----------------------------------------------------------              }

USES Crt;

Var
     Pencacah
BEGIN
     ClrScr;

     For Pencacah := TO 10 DO
          Writeln (‘Turbo Pascal’);
END.

Akhir Program

Pada contoh diatas, Pencacah akan bernilai 1, 2, 3, 4 hingga 10 secara berturut-turut. Untuk setiap nilai tersebut, pernyataan:
            WriteLn (‘Turbo Pascal’);
dieksekusi. Sebagai akibatnya, pada layar muncul tulisan:
            Turbo Pascal
Sebanyak 10 kali.
Pada contoh berikut, isi dari variabel pengontrol FOR ditampilkan.

Program 1.2
                       
                        PROGRAM Deret;
                   {------------------------------------------------------}
                   {Menampilkan bilangan 1 sampai 10.   }
                   {------------------------------------------------------}
                            
                   Uses Crt;

                   Var
                       Pencacah : Integer;
                   BEGIN
                       Clrscr;
                       For Pencacah := 1 to 10 do
                       WriteLn (Pencacah);
                   END.

Akhir Program

            Hasilnya berupa bilangan dari 1 sampai dengan 10:
           

1
2
3
4
5
6
7
8
9
10

   Di depan telah dijelaskan bahwa nilai awal yang diberikan pada FOR-TO harus lebih kecil dari nilai akhir. Apa yang terjadi seandainya aturan ini dilanggar? Marilah kita lihat contoh berikut:
   FOR Pencacah := 10 TO 1 DO
         WriteLn (pencacah);

Perintah seperti di atas tidak menghasilkan keluaran apapun. Anda dapat melihat Gambar 1.1 untuk menganalisis kenapa hasilnya tidak ada.

   Sebuah gambaran atas penggunaan pernyataan majemuk di dalam pernyataan FOR ditunjukkan pada program berikut:

Program 1.3

   Program Rata2;
 
  {----------------------------------------------------------------------       }
  {Contoh program untuk menghitung nilai rata-rata         }
  {      dari sejumlah nilai                              }
  {----------------------------------------------------------------------       }
 
  USES Crt;

  VAR
          Nilai,                     {Menampung data dari keyboard}
          Jum    : Real; {Untuk menampung jumlah semua data }
          Pencacah : Integer;
  BEGIN
          Clrscr;
 
          Jum := 0;               {Diisi dengan nol terlebih dulu}
          FOR pencacah := 1 to 5 do
          BEGIN
                    Write (‘Nilai ke-‘, Pencacah, ‘ : ‘);
                   ReadLn (Nilai);

                   Jum := Jum + Nilai;  {Tambahkan Nilai ke Jum }
          END;

          WriteLn (‘Nilai rata-rata = ‘, Jum / 5 : 0 :2 ) ;
  END.

Akhir Program

Contoh di atas menggambarkan cara menghitung rata-rata dari 5 buah nilai. Mula-mula variabel Jum yang akan digunakan untuk menghitung jumlah kelima nilai diisi dengan nol. Kemudian untuk setiap nilai Pencacah yang bergerak dari 1 hingga 5, pernyataan:
   Write ( ‘Nilai ke-‘, Pencacah, ‘ : ‘);
   ReadLn (Nilai) ;

   Jum := Jum + Nilai;

akan dijalankan.

   Setelah FOR berakhir, Jum berisi total dari semua nilai yang dimasukkan dari keyboard. Kemudian untuk menghitung nilai rata-rata, Jum tinggal dibagi dengan 5.

Contoh pengeksekusian terhadap Program 1.3:

Nilai ke-1 : 70 
Nilai ke-2 : 80
Nilai ke-3 : 75
Nilai ke-4 : 90
Nilai ke-5 : 60
Nilai rata-rata = 75.00


Telah disinggung di depan bahwa variabel yang digunakan sebagai pengontrol FOR dapat bertipe CHAR. Contoh tentang hal ini dapat dilihat pada program berikut :

Program 1.4

   Program Abjad;

  {------------------------------------------------------------------------------ }
  { Contoh pemakaian FOR dengan variabel pengontrol      }
  {      bertipe Char.                                                         }
  {------------------------------------------------------------------------------ }

  USES Crt;
 
  Var
          Kar : Char;

  Begin
          Clrscr;

          FOR Kar := ‘A’ TO ‘z’ DO
                   Write (Kar) ;
          WriteLn;
  END.

Akhir Program

Pada contoh ini , secara berturut-turut Kar akan berisi dari ‘A’ hingga ‘Z’. Itulah sebabnya hasil dari program di atas berupa:

ABCDEFGHIJKLMNOPQRSTUVWXYZ
Adapun contoh berikut menunjukkan variabel pengontrol yang bertipe Boolean.
   FOR Saklar := False TO True DO
   WriteLn (Saklar) ;

Hasil dari pernyataan di atas berupa:

nFALSE
nTRUE

Program berikut memberikan gambaran cara menampilkan bilangan ganjil antara 1 sampai dengan 15.

Program 1.5

   PROGRAM Ganjil;

  {------------------------------------------------------------------------      }
  { Menampilkan bilangan ganjil antara 1 sampai dengan 15.        }
  {-----------------------------------------------------------------------                }

  USES Crt;

  Var
          Bilangan : Integer;

  BEGIN
          Clrscr;

          FOR Bilangan := 1 to 15 DO
                   IF Odd(Bilangan) THEN     { Kalau ganjil }
                             WriteLn (Bilangan) ;
  END.

Akhir Program

Hasil program:

1
3
5
7
9
11
13
15

1.1.2 FOR DOWNTO
   Kalau FOR-TO digunakan untuk mencacah naik, FOR-DOWNTO adalah kebalikannya. Pada FOR-DOWNTO, nilai awal justru harus lebih besar (atau sama dengan) nilai akhir. Format selengkapnya:

For variabel ;= nilai_awal DOWNTO nilai_akhir DO
        pernyataan


Pernyataan seperti:

   FOR Pencacah := 10 DOWNTO 1 do
   WriteLn (Pencacah);

Menghasilkan berupa:       

10
9
8
7
6
5
4
3
2
1

Adapun contoh berikut digunakan untuk menampilkan huruf Z hingga A:

   FOR Huruf := ‘Z’ DOWNTO “a” DO
   Write (Huruf) ;

Hasil:

ZYXWVUTSRQPONMLKJIHGFEDCBA

1.1.3 Kenaikan atau Penurunan Tidak Sebesar Satu
   FOR merupakan pernyataan yang cocok untuk menangani pencacah yang kenaikan atau penurunannya sebesar satu. FOR-TO dipakai untuk pencacahan yang naik sebesar satu (nilai   ordinalnya), sedangkan FOR-DOWNTO digunakan untuk pencacahan yang menurun sebesar satu (nilai ordinalnya). Bila selang kenaikan atau penurunan pencacahan tidak sebesar satu, WHILE dan REPEAT-lah yang cocok dipakai untuk keperluan itu.

1.1.4 FOR Bersarang
   Pada masalah tertentu ada kemungkinan FOR di dalam FOR yang lain. Bentuk seperti ini biasa disebut FOR bersarang (nested FOR). Contoh penerapan FOR bersarang adlah untuk membuat gambar seperti berikut ini:

   *
   **
   ***
   ****
   *****
   ******
   *******
   ********
Program untuk membuat pola seperti di atas ditunjukkan di bawah ini.

Program 1.6

    PROGRAM Bintang;

  {------------------------------------------------      }
  { Contoh pemakaian IF di dalam IF.     }
  {------------------------------------------------      }

  USES Crt;

  CONST
          AKHIR = 8;   { -- Jumlah * pada bari terakhir --  }
                  
  VAR
          Baris, Kolom : Integer;

  BEGIN
          Clrscr;

          FOR Baris := 1 TO AKHIR DO
          BEGIN
          FOR Kolom := 1 TO Baris DO
                   Write (‘*’) ;

                   WriteLn;                { ---- Pindah Baris --- }
          END;
  END.

Akhir Program
FOR yang terluar dipakai untuk mengontrol baris. Baris yang dibuat bergerak dari 1 sampai dengan AKHIR. Kemudian untuk setiap nilai baris, tanda * ditulis sebanyak nomor baris saat itu. Dapat dilihat, baris pertama berisi 1 buah tanda *, baris kedua berisi 2 buah tanda * dan seterusnya. Untuk menampilakan banyaknya tanda * dalam satu baris, pernyataan yang digunakan adalah FOR yang kedua:
  
   FOR Kolom := 1 TO Baris DO
            Write (‘ * ’) ;

Setelah menampilkan tanda * yang terakhir untuk setiap baris, kursor dipindahkan ke baris berikutnya dengan menggunakan WriteLn.

?
FOR bersarang umum dipakai pada operasi matriks.

1.1.5 FOR Tanpa Diikuti oleh Pernyataan

Suatu pernyataan FOR bisa saja tidak diikuti dengan sebuah pernyataan pun. Contoh:

   FOR I := 1 TO 20000 DO ;
   Writeln (‘Halo’) ;

Tampak bahwa sesudah DO terdapat titik koma. Ini menandakan bahwa FOR tidak diikuti dengan pernyataan yang akan diulang. Pernyataan di atas jelas berbeda dengan:

   FOR I := 1 TO 20000 DO
            Writeln ( ‘ Halo ‘ );

Bukan karena tulisan Writeln ditulis masuk ke kanan, tetapi berhubung tanda titik koma tidak ada pada akhir DO, pernyataan yang terakhir ini akan mengulang Writeln sebanyak 20.000 kali. Sedangkan pernyataan FOR pada contoh sebelumnya akan menunda pengerjaan Writeln sampai I bernilai 20.000 terlampaui ( Writeln hanya dikerjakan sekali).

?
Cara penundaan eksekusi terhadap suatu perintah melalui bentuk semacam:
FOR I := 1 TO 20000 DO;

Sangat bergantung oleh kecepatan computer. Lama penundaan menjadi tidak tentu. Cara yang terbaik untuk melakukan penundaan eksekusi adalah dengan memakai prosedur standar bernama delay (bab 20)


1.2 Pernyataan WHILE
   Pernyataan WHILE biasa dipakai untuk melakukan pengulangan yang jumlahnya tidak diketahui di depan atau selang pencacah tidak sebesar 1 atau -1. Bentuk pernyataan WHILE:

WHILE kondisi DO
          pernyataan


1.2.1 Pencacahan Meningkat
Contoh program berikut menunjukkan pemakaian WHILE untuk menggantikan perintah:
   FOR Pencacah := 1 TO 10 DO
            Writeln (I) ;

Program 1.7

   PROGRAM Whill;
 
  {--------------------------------------------------------------------         }
  {Contoh WHILE untuk menampilkan bilangan          }
  {      antara 1 sampai 10                             }
  {--------------------------------------------------------------------         }

  USES Crt;
  VAR
          Pencacah : Integer:
  Begin
          Clrscr;
          Pencacah := 1;       { - - - Nilai awal - - - }
          While Pencacah <= 10 DO
          BEGIN

                   WriteLn(Pencacah);
                   Pencacah := Pencacah +1; { - - - Menaikkan nilai Pencacah - - - }
          END;
  END.

Akhir Program

Pada contoh di atas:
            Pencacah := 1;                        
            While Pencacah <= 10 DO
            BEGIN

                        WriteLn(Pencacah);
                        Pencacah := Pencacah +1;                  
            END;

Menggantikan:
            FOR Pencacah := 1 TO 10 DO
                        WriteLn (Pencacah);

Tampak bahwa pada instruksi di atas:
n Pemberian nilai awal terhadap variabel pengndali pengulangan berupa:
    Pencacah := 1;        

n Upaya untuk menaikkan nilai variabel pengontrol pengulangan, berupa:
    Pencacah := Pencacah +1;  

n Kondisi pengulangan berupa: Pencacah <= 10 DO.
    Kondisi ini menentukan terjadinya pemrosesan bagian pernyataan kalau bernilai           True.
Ketiga hal tersebut perlu diperhatikan dengan seksama. Kekeliruan seperti kealpaan terhadap penaikan variabel pengontrol pengulangan ( Pencacah pada contoh diatas) berakibat fatal. Misalnya bila pernyataan:

   Pencacah := Pencacah + 1;

Pada Program 9.7, tidak disertakan bagian yang terletak di dalam BEGIN END yang mengikuti WHILE akan dijalankan terus-menerus.


?
Jika keadaan ini terjadi dan Anda sedang berada di linhkungan IDE, Anda bisa menekan tombol Ctrl+Break untuk menghentikannya.

1.2.2 Pencacahan Menurun
WHILE juga dapat diakai untuk menggantikan FOR-DOWNTO, yaitu sebagai contoh:

   Pencacah := 10;
   WHILE Pencacah >0 DO
   BEGIN
            WriteLn (Pencacah);
            Pencacah := Pencacah -1;
   END;

Merupakan pengganti dari:
   FOR Pencacah := 10 DOWNTO 1 DO
            WriteLn (Pencacah);

Contoh Program:

Prgram 1.8

   Program Whil2;
  {----------------------------------------------------------------   }
  {Contoh WHIle untuk menampilkan bilangan }
  {      dari 10 ke 1.                                       }
  {----------------------------------------------------------------   }

  USES Crt;

  VAR
          Pencacah : Integer;
  BEGIN
          Clrscr;       
          Pencacah := 10;  { - - - Nilai Awal - - - }
          WHILE Pencacah >= 1 DO
          BEGIN
                   WriteLn (Pencacah);
                   Pencacah := Pencacah -1;  { - - - Menurunkan nilai Pencacah }
          END;
  END.

Akhir Program
Hasil:
1.2.3 Kenaikan atau Penurunan Tidak Sebesar Satu
10
9
8
7
6
5
4
3
2
1
   Dengan mengatur selang kenaikan pada variabel pengontrol pengulangan, WHILE bisa dimanfaatkan, misalnya untuk mendapatkan sederetan bilangan ganjil ataupun menampilkan bilangan dari 1 sampai dengan 10 dengan kenaikan sebesar 0,2. Sebagai contoh (dengan Bil bertipe Real):

   Bil := 1:
   WHILE Bil <= 2.0 DO
   BEGIN
            WriteLn (Bil :0:2);
            Bil := Bil + 0.2;
   END;

Hasil dari pernyataan-pernyataan di atas adalah:
   1.00
   1.20
   1.40
   1.60
   1.80
   2.00
1.2.4 Tidak Selamanya Ada Pencacahan
Beberapa contoh WHILE yang telah diberikan melibatkan pencacahan (yang meningkat ataupun menurun). Hal ini sebenarnya belum tentu ada. Pada contoh berikut dapat dilihat bahwa pengndalian kondisi WHILE ditentukan oleh keabsahan yang dimasukkan dari keyboard.
Program 1.9

PROGRAM While;

{----------------------------------------------------------------------          }
{ Contoh WHILE yang tidak melibatkan pencacah.     }
{----------------------------------------------------------------------          }

USES Crt;

VAR
  Absah : Boolean;
  Pil     : Integer;
BEGIN
  Clrscr;

  Absah := FALSE;    { --- Nilai Awal --- }
  WHILE NOT Absah DO
  BEGIN
          Write (‘Pilihan  [1..3] : ‘);
          ReadLn (Pil) ;
         
          Absah := (Pil >= 1) AND (Pil <= 3);
  END;

  WriteLn (‘Selesai…’);
END.

Akhir Program

Hasil:

Pilihan  [1..3]  :  5
Pilihan  [1..3]  :  4
Pilihan  [1..3]  :  3
Selesai…


Pada WHILE di atas,
   Absah := (Pil >= 1) AND (Pil <= 3) ;

Menentukan bagian yang terletak di dalam BEGIN END yang mengikuti WHILE akan diproses lagi atau tidak. Dari contoh di atas terlihat bahwa kalau nilai seperti 4 atau 5 dimasukkan, bagian BEGIN END akan diproses kembali, mengingat Absah bernilai False disebabkan nilai 4 atau 5 tidak terletak antara 1 sampai dengan 3.

1.2.5 WHILE Bersarang
   Bagian yang akan diulang oleh WHILE juga bisa mengandung WHILE yang lain.
Gambaran mengenai hal ini, yaitu misalnya untuk membuat gambar seperti berikut:

*
***
*****
*******
Programnya dapat dilihat di bawah ini.
Program 1.10

PROGRAM Bintang2;
{-----------------------------------------------------    }
{ Contoh yang menggunakan WHILE                }
{        di dalam WHILE.                         }
{-----------------------------------------------------    }

USES Crt;
VAR
          Baris,                              { - - Pencacah Baris - - }
                   Kolom,                             { - - Pencacah Kolom - }
                   JumBaris : Integer; { - - Jumlah Baris - - -        }       

BEGIN
          Clrcr;
          Write (‘ Jumlah baris : ‘);
          Readln (JumBaris);
          Baris := 1;
          WHILE Baris <= JumBaris DO
          BEGIN
                   { - - Menulis * yang pertama - - }
                   Write (‘*’ : JumBaris + 1 – Baris);

                   { - - Menulis * selanjutnya - - }
                   Kolom := 2;
                   WHILE Kolom <= (2 * Baris -1) DO
                   BEGIN
                             Write (‘*’);
                             Kolom := Kolom +1;  { - - Naikkan Kolom - - }
                   END;

                   WriteLn;   { - - Pindah baris - - }
                   Baris := Baris +1 { - - Naikkan Baris - - }
          END;
END.

Akhir Program
Namun perlu diketahui, program di atas akan menjadi lebih sederhana kalau WHILE diganti dengan FOR. Anda bisa mencobanya.


1.3 Pernyataan REPEAT
            REPEAT biasa dipakai untuk menangani pengulangan yang jumlahnya belum pasti, tetapi paling tidak dikerjakan sekali ( Pada WHILE, ada kemungkinan bagian pernyataan tidak dijalankan sama sekali).

Bentuk pernyataan REPEAT :

REPEAT
   Pernyataan_1;
   Pernyataan_2;
  
   Pernyataan_n
UNTIL kondisi

   Pada dasarnya REPEAT dapat digunakan untuk semua masalah yang dapat ditangani oleh FOR ataupun WHILE. Sebagai contoh:
   FOR Pencacah := 1 TO 10 DO
            Writeln (‘Turbo Pascal’);

Dapat disajikan dengan menggunakan REPEAt seperti berikut:
   Pencacah := 1;
   REPEAT
            Writeln (‘Turbo Pascal’);
            Pencacah := Pencacah + 1 : { - - Menaikkan nilai Pencacah - - }

   Contoh berikut memberikan gambaran penggunaan REPEAt untuk membentuk tabel ekuivalensi derajat celcius, fahrenheit dan reamur. Rumus yang digunakan:

   F=9/5 x C +32
   R=4/5 x C

Program 9.11

PROGRAM Cfr;
{--------------------------------------------------------------       }
{ Tabel derajar Celcius, Fahrenheit, Reamur.  }
{--------------------------------------------------------------       }
USES Crt;

VAR
  Celcius,
  Reamur,
  Fahrenheit : Real;
Begin
  Clrscr;

  Writeln (‘Celcius’ : 12, ‘Reamur’ :12, ‘Fahrenheit’ : 12);
  Writeln (‘---------------------------------------------------‘);

  Celcius := 0:
  REPEAT
          Reamur := 4 / 5 * Celcius;
          Fahrenheit := 9 / 5 * Celcius + 32;
          Writeln (Celcius:12:2, Reamur :12:2, Fahrenheit:12:2);
  UNTIL Celcius >10;
  Writeln (‘--------------------------------------------------‘);
END.

Akhir Program

Hasil eksekusi:

  Celcius                      Reamur                        Fahrenheit
      0.00                         0.00                                 32.00
      0.50                         0.40                                 32.90
    1.00                            0.80                                 33.80
    2.00                            1.60                                 35.60
    3.00                            2.40                                 37.40