{ ubah adalah fungsi yang menerima masukan integer i dengan rumus: ubah(1) = 'A'; ubah(2) = 'B'; ubah(3) = 'C', dst. } var kalimat : array[1..10000] of string; hitung : integer; procedure berulang(idx,n: integer; kata:string); var i:integer; begin if (idx = n) then begin hitung := hitung+1; kalimat[hitung] := kata; end else begin for i:=1 to 5 do berulang(idx+1,n, kata+ubah(i)); end; end;
-
Jika diberikan program utama ini:
begin berulang(0,5,''); writeln(hitung); end.
Apakah output yang tampil di layar? Jawab: ….. -
Jika diberikan program utama ini:
begin berulang(0,5,''); writeln(kalimat[1],' ',kalimat[10],' ',kalimat[hitung]); end.
Apakah output yang tampil di layar? Jawab: …..
-
Nilai idx awal adalah 0. Karena idx tidak sama dengan n (5), maka program akan memanggil prosedur berulang sebanyak 5x dengan idx menjadi 1.
Setiap idx = 1 yang dipanggil sebelumnya juga akan melakukan pemanggilan prosedur dengan idx 2 dan seterusnya sampai idx bernilai 5. Dengan demikian program akan terpanggil sebanyak 5n-idx = 55 = 3125 yang mana merupakan nilai hitung.
-
kata pada procedur akan berubah dengan menambahkan ‘A’, ‘B’, ‘C’, ‘D’ dan ‘E’ setiap melakukan pemanggilan. Awalnya kata bernilai ” yang kemudian akan menjadi ‘A’, ‘B’, ‘C’, ‘D’ dan ‘E’ dengan nilai idx = 1. Setiap huruf tersebut akan melakukan pemanggilan dengan menambahkan juga ‘A’ sampai ‘E’. Jika diilustrasikan akan menjadi:
Kalimat akan menyimpan kata yang diurutkan dari paling atas. Sehingga kalimat[1] pasti bernilai ‘AAAAA’ untuk idx = 0 dan n = 5. Sedangkan kalimat[10] akan bernilai ‘AAABE’ dan string terakhir yang tersimpan dalam array adalah ‘EEEEE’. Dengan demikian output yang ditampilkan adalah AAAAA AAABE EEEEE.
⅓ x ⅔ = 2/9 bagian
kok bisa gitu kak?
Kan ibunya dapat 1/3, jadi sisa 2/3 untuk anak-anaknya. Karena anaknya ada 3, jadi 2/3 itu dibagi 3 lagi buat masing-masing anak, sehingga bagian yang didapat anak-anaknya itu 1/3 dari 2/3 = 2/9.