Pascal‎ > ‎

Parameter: Pohon Natal

Pohon (Natal) adalah istilah yang digunakan untuk mencetak sebuah piramid (atau segitiga) secara rekursif sehingga berbentuk seperti pohon pinus. Pohon biasanya digunakan untuk mengukur tingkat daya tangkap seorang siswa/mahasiswa dalam menggunakan perintah perulangan (for) pada suatu bahasa pemrograman.

Permasalahan

Kita ingin mencetak sebuah pohon dengan ketinggian tertentu. Misalnya apabila tinggi pohon satu akan dicetak ke layar dengan 
*

Apabila tinggi pohonnya tiga, akan dicetak:
   *
   *
  ***
   *
  ***
 *****

Sedangkan apabila pohon tingginya 5, akan dicetak:
     *
     *
    ***
     *
    ***
   *****
     *
    ***
   *****
  *******
     *
    ***
   *****
  *******
 *********

Solusi

Jika Anda perhatikan,  pohon terdiri dari segitiga-segitiga yang diletakkan tumpang tindih. 
  • Banyak spasi untuk segitiga sebuah bagian pohon tertinggi adalah sebanyak tingginya (lihat perintah for j:=i to tinggi do).
  • Banyak bintang (*) yang dicetak sebanyak 2* tinggiSegitigaSekarang -1 (Lihat perintah for k:=1 to 2*i-1 do ).
  • Sedangkan segitiga akan dicetak mulai dari satu hingga tinggi yang diminta (lihat perintah for l:=1 to tinggi do)

Kode Sumber


{
  solusi untuk tugas praktikum 01-02
  Algoritma dan Pemrograman 1
  Materi: 
    * FOR..DO
    * PROCEDURE
    * COMANDLINE (PARAMETER)
}

uses crt;

procedure pohon(tinggi:integer);
var
  i,j,k,l:integer;
begin
  for l:=1 to tinggi do
  for i:= 1 to l do
    begin
    for j:=i to tinggi do
      write(' ');
    for k:=1 to 2*i-1 do
      write('*');
    writeln;
    end;
end;


var
  i,errorPlace:integer;
  c:char;{untuk Y/N}
begin
  if paramcount > 0 then
    begin
      val(paramstr(1),i,errorPlace);
      pohon(i);
    end
  else
    begin
      writeln('Program untuk membuat segitiga');
      writeln;
      repeat
        write('Masukkan tinggi segitiga: '); readln(i);
        pohon(i);
        writeln;
        write('Ulangi? [Y/T]: ');
        repeat
           c:=upcase(readkey);{ Ask user : Input again or not }
        until c in ['Y','T'];
        writeln(c);
      until c='T';
    end
end.



Tampilan

Tampilan jika perintah dijalankan langsung



Tampilan jika dipanggil dengan parameter 5

Penjelasan Lanjut

Penggunaan ParamCount untuk membantu pengguna jika ingin otomatis menampilkan pohon tanpa harus masuk ke program terlebih dahulu. Perhatikan bahwa program ini menggunakan unit CRT, akibatnya, tidak bisa diredirect outputnya ke sebuah file. Jika Anda ingin menghilangkan unit CRT, Anda harus mengganti perintah readkey dengan readln.


Comments