Buatlah program (dengan Java/Python) yang dapat menampilkan segitiga Pascal hingga

Berikut ini adalah pertanyaan dari qed pada mata pelajaran TI untuk jenjang Sekolah Dasar

Buatlah program (dengan Java/Python) yang dapat menampilkan segitiga Pascal hingga baris tertentu, dengan spesifikasi:1. Program menerima input nomor baris terakhir, yang dibatasi maksimal 20 baris.
2. Baris pertama adalah baris ke-0.

____________
Sy post ulang karena sblmnya dihapus oleh moderator.
Ada yg salah dgn tgs ini? ​

Jawaban dan Penjelasan

Berikut ini adalah pilihan jawaban terbaik dari pertanyaan diatas.

Kode Program (Python)

# segitigapascal.py
# Program oleh HY
from rich.console import Console
console = Console()

def segitiga_pascal(n) -> list:
   # Menerima n: integer >= 0
   # Mengembalikan list 2 dimensi segitiga Pascal
   p = []
   for i in range(0, n+1):
       p.append(i)
       if i in [0, 1]:
           p[i] = [1 for item in range(0, i+1)]
       else:
           p[i] = [1, 1]
           for j in range(1, i):
               p[i].insert(j, p[i-1][j-1] + p[i-1][j])
   return p

def output_segitiga_pascal(p) -> None:
   # Menampilkan list p dalam bentuk segitiga Pascal
   maxdigit = len(str(max(max(p))))
   strlist = []
   maxnumchars = 0
   for i in range(len(p)-1, -1, -1):
       strlist.insert(0, " ".join([str(item)
           .center(maxdigit if maxdigit%2 == 1 else maxdigit+1, " ")
               for item in p[i]]))
       maxnumchars = max(maxnumchars, len(strlist[0]))
       strlist[0] = f"n = {i:2d}: " + "[bold white]" + str(strlist[0]).center(maxnumchars, " ") + "[/bold white]"
   console.print("\n".join(strlist))

### PROGRAM UTAMA ###
if __name__ == '__main__':
   print()
   print("Program SEGITIGA PASCAL")
   n = int(input("Nomor baris maksimum (n) : "))
   print("=================================================")
   output_segitiga_pascal(segitiga_pascal(n))
   print()
### END OF PROGRAM ###

_____________________

Pembahasan

Sebelum membuat program segitiga Pascal ini, terlebih dahulu dirancang algoritmenya.

Kita bisa saja menggunakan koefisien binomial, sehingga dapat langsung ketemu bilangan-bilangannya. Namun, saya gunakan cara yang lebih merujuk pada mekanisme menghasilkan bilangan-bilangan pada segitiga Pascal tersebut.

\large\text{$\begin{array}{c}\bf1\\\swarrow\:\searrow\\\bf1\qquad1\\\swarrow\ {}_{(1+1)}\ \searrow\\\bf1\qquad2\qquad1\\\swarrow{}_{(1+2)}\ \ {}_{(2+1)}\searrow\\\bf1\qquad3\qquad3\qquad1\\\swarrow{}_{(1+3)}\ \ {}_{(3+3)}\ \ {}_{(3+1)}\searrow\\\bf1\qquad4\qquad6\qquad4\qquad1\\\sf dan\ seterusnya\end{array}$}

Jadi, untuk setiap baris, bilangan ujung kiri dan ujung kanan sudah pasti 1. Dari bilangan ke-2 hingga ke-2 dari terakhir merupakan penjumlahan dari pasangan 2 bilangan di baris sebelumnya (di atasnya).

Algoritma (Notasi Deskriptif)

Diberikan nilai n (nomor baris terakhir).

  1. Inisialisasi array 2 dimensi p.
  2. Loop/iterasi i, dari i = 0 hingga i = n:
       2.a. Tambahkan elemen p[i]. (p[i] adalah array 1 dimensi.)
       2.b. Jika i = 0 atau i = 1, maka p[i] diisi dengan nilai 1.
       2.c. Jika tidak (berarti i > 1), maka:
           2.c.1. Inisialisasi p[i] dengan [1, 1].
           2.c.2. Loop/iterasi j, dari j = i hingga j = i-1:
               2.c.2.a. Pada p[i, j], sisipkan nilai p[i-1, j-1] + p[i-1, j].

Pada program, algoritma tersebut diimplementasikan pada fungsi segitiga_pascal(n) yang mengembalikan array 2 dimensi dari bilangan-bilangan segitiga Pascal.

Sedangkan fungsi output_segitiga_pascal(p) merupakan fungsi untuk mengolah array 2 dimensi tersebut sehingga dapat ditampilkan pada layar dalam bentuk "segitiga", atau minimal menyerupai.

Pada program tersebut, tidak ada pembatasan bahwa banyak baris maksimum adalah 20.

Contoh hasil eksekusi program disajikan pada beberapa gambar yang disertakan.

Kode Program (Python)# segitigapascal.py# Program oleh HYfrom rich.console import Consoleconsole = Console()def segitiga_pascal(n) -> list:    # Menerima n: integer >= 0    # Mengembalikan list 2 dimensi segitiga Pascal    p = []    for i in range(0, n+1):        p.append(i)        if i in [0, 1]:            p[i] = [1 for item in range(0, i+1)]        else:            p[i] = [1, 1]            for j in range(1, i):                p[i].insert(j, p[i-1][j-1] + p[i-1][j])    return pdef output_segitiga_pascal(p) -> None:    # Menampilkan list p dalam bentuk segitiga Pascal    maxdigit = len(str(max(max(p))))    strlist = []    maxnumchars = 0    for i in range(len(p)-1, -1, -1):        strlist.insert(0, Kode Program (Python)# segitigapascal.py# Program oleh HYfrom rich.console import Consoleconsole = Console()def segitiga_pascal(n) -> list:    # Menerima n: integer >= 0    # Mengembalikan list 2 dimensi segitiga Pascal    p = []    for i in range(0, n+1):        p.append(i)        if i in [0, 1]:            p[i] = [1 for item in range(0, i+1)]        else:            p[i] = [1, 1]            for j in range(1, i):                p[i].insert(j, p[i-1][j-1] + p[i-1][j])    return pdef output_segitiga_pascal(p) -> None:    # Menampilkan list p dalam bentuk segitiga Pascal    maxdigit = len(str(max(max(p))))    strlist = []    maxnumchars = 0    for i in range(len(p)-1, -1, -1):        strlist.insert(0, Kode Program (Python)# segitigapascal.py# Program oleh HYfrom rich.console import Consoleconsole = Console()def segitiga_pascal(n) -> list:    # Menerima n: integer >= 0    # Mengembalikan list 2 dimensi segitiga Pascal    p = []    for i in range(0, n+1):        p.append(i)        if i in [0, 1]:            p[i] = [1 for item in range(0, i+1)]        else:            p[i] = [1, 1]            for j in range(1, i):                p[i].insert(j, p[i-1][j-1] + p[i-1][j])    return pdef output_segitiga_pascal(p) -> None:    # Menampilkan list p dalam bentuk segitiga Pascal    maxdigit = len(str(max(max(p))))    strlist = []    maxnumchars = 0    for i in range(len(p)-1, -1, -1):        strlist.insert(0, Kode Program (Python)# segitigapascal.py# Program oleh HYfrom rich.console import Consoleconsole = Console()def segitiga_pascal(n) -> list:    # Menerima n: integer >= 0    # Mengembalikan list 2 dimensi segitiga Pascal    p = []    for i in range(0, n+1):        p.append(i)        if i in [0, 1]:            p[i] = [1 for item in range(0, i+1)]        else:            p[i] = [1, 1]            for j in range(1, i):                p[i].insert(j, p[i-1][j-1] + p[i-1][j])    return pdef output_segitiga_pascal(p) -> None:    # Menampilkan list p dalam bentuk segitiga Pascal    maxdigit = len(str(max(max(p))))    strlist = []    maxnumchars = 0    for i in range(len(p)-1, -1, -1):        strlist.insert(0,

Semoga dengan pertanyaan yang sudah terjawab oleh henriyulianto dapat membantu memudahkan mengerjakan soal, tugas dan PR sekolah kalian.

Apabila terdapat kesalahan dalam mengerjakan soal, silahkan koreksi jawaban dengan mengirimkan email ke yomemimo.com melalui halaman Contact

Last Update: Sun, 30 Oct 22