Algoritma | UAS
Ujian terbagi menjadi 2 hari yaitu hari Kamis dan Jumat. Di ujian Hari Kamis dan Jumat itu dibagi menjadi 2 shift yaitu shift 1 dan shift 2. Dan tiap shift terdapat 2 bentuk soal (misal A dan B, C dan D, dst).
Di hari Kamis kemarin gue gak sempat minta soal nya. Jadi hari ke-2 ini gue dapat soal yang gak kepake. Soalnya adalah soal F. So, bagi kamu yang tadi ikut UAS dan mendapatkan soal nomor F ini akan gue share jawabannya.
Untuk soal-soal yang lain kalo udah dapat soalnya insya Allah akan gue share juga di sini.
Soal F :
Buatlah sebuah fungsi yang menerima parameter masukan 1 buah integer positif dan mengembalikan sebuah integer yang merupakan bilangan ganjil positif ke-n, contoh bilangan ganjil positif ke-1 = 1, ke-2=3, ke-7=13, dsb, dengan catatan :
- Dilarang menggunakan loop
- Dilarang menggunakan operator * (perkalian)
Contoh : ganjil(10) akan menghasilkan 19
Buatlah sebuah fungsi yang menerima sebuah parameter masukan sebuah string biner (basis 2), dan mengembalikannya dalam bentuk integer.
Contoh : ‘10000111’ (string) ==> 135 )
Jadi, ini loh listing programnya (kalo di soal disuruh functionnya aja, tapi ini gue share program lengkap supaya gak bingung).
Nomor 1 (menggunakan teknik rekursif) :
uses crt;
function ganjil(input:integer):integer;
var temp:integer;
begin
if (input=1) then
temp:=1 else
temp:=ganjil(input-1)+2;
ganjil:=temp;
end;
var input:integer;
begin
clrscr;
repeat
write('Masukkan angka : '); readln(input);
until (input>0);
writeln('Angka ganjil ke-',input,' adalah : ', ganjil(input));
readkey;
end.
Hasilnya :

Nomor 2 (menggunakan teknik string)
Jadi gini kan, cara mengitung kode biner :
Misal kode 10000111. Terdapat 8 karakter. Jika dengan perpangkatan berurutan dari 0, maka dihasilkan perpangkatan maksimal nya adala 7 .
10000111 = (1 * 27) + (0 * 26) +(0 * 25) +(0 * 24) +(0 * 23) +(1 * 22) +(1 * 21) +(1 * 20) = 128 + 0 + 0+ 0+ 0+ 4 + 2 + 1 = 135
uses crt;
begin
temp:=0;
kali:=1;
// c adalah besarnya pangkat dari 2 yang akan dihitung
c:=length(s)-1;
// akan dilakukan pengecekan string berurutan dari indeks
//string 1 sampai panjang string
for x:=1 to length(s) do
begin
// jika huruf yang ke s[x] adalah '1', maka :
if s[x]='1' then
begin
kali:=1;
if c=0 then
// jika c=0 (pangkat = 0) maka
kali:=1 else
begin
for j:=1 to c do
begin
// dilakukan perkalian sampai dengan pangkat c
kali:=kali*2;
end;
end;
temp:=temp+kali;
end;
c:=c-1;
end;
biner:=temp;
end;
var s:string;
begin
clrscr;
write('Masukkan kode biner : '); readln(s);
write('Hasil integer nya : ',biner(s));
readkey;
end.
Hasilnya :


Untuk yang ingin materi awal perkuliahan .. silahkan download link di bawah :
Di hari Kamis kemarin gue gak sempat minta soal nya. Jadi hari ke-2 ini gue dapat soal yang gak kepake. Soalnya adalah soal F. So, bagi kamu yang tadi ikut UAS dan mendapatkan soal nomor F ini akan gue share jawabannya.
Untuk soal-soal yang lain kalo udah dapat soalnya insya Allah akan gue share juga di sini.
Soal F :
Buatlah sebuah fungsi yang menerima parameter masukan 1 buah integer positif dan mengembalikan sebuah integer yang merupakan bilangan ganjil positif ke-n, contoh bilangan ganjil positif ke-1 = 1, ke-2=3, ke-7=13, dsb, dengan catatan :
- Dilarang menggunakan loop
- Dilarang menggunakan operator * (perkalian)
Contoh : ganjil(10) akan menghasilkan 19
Buatlah sebuah fungsi yang menerima sebuah parameter masukan sebuah string biner (basis 2), dan mengembalikannya dalam bentuk integer.
Contoh : ‘10000111’ (string) ==> 135 )
Jadi, ini loh listing programnya (kalo di soal disuruh functionnya aja, tapi ini gue share program lengkap supaya gak bingung).
Nomor 1 (menggunakan teknik rekursif) :
uses crt;
function ganjil(input:integer):integer;
var temp:integer;
begin
if (input=1) then
temp:=1 else
temp:=ganjil(input-1)+2;
ganjil:=temp;
end;
var input:integer;
begin
clrscr;
repeat
write('Masukkan angka : '); readln(input);
until (input>0);
writeln('Angka ganjil ke-',input,' adalah : ', ganjil(input));
readkey;
end.
Hasilnya :
Nomor 2 (menggunakan teknik string)
Jadi gini kan, cara mengitung kode biner :
Misal kode 10000111. Terdapat 8 karakter. Jika dengan perpangkatan berurutan dari 0, maka dihasilkan perpangkatan maksimal nya adala 7 .
10000111 = (1 * 27) + (0 * 26) +(0 * 25) +(0 * 24) +(0 * 23) +(1 * 22) +(1 * 21) +(1 * 20) = 128 + 0 + 0+ 0+ 0+ 4 + 2 + 1 = 135
uses crt;
begin
temp:=0;
kali:=1;
// c adalah besarnya pangkat dari 2 yang akan dihitung
c:=length(s)-1;
// akan dilakukan pengecekan string berurutan dari indeks
//string 1 sampai panjang string
for x:=1 to length(s) do
begin
// jika huruf yang ke s[x] adalah '1', maka :
if s[x]='1' then
begin
kali:=1;
if c=0 then
// jika c=0 (pangkat = 0) maka
kali:=1 else
begin
for j:=1 to c do
begin
// dilakukan perkalian sampai dengan pangkat c
kali:=kali*2;
end;
end;
temp:=temp+kali;
end;
c:=c-1;
end;
biner:=temp;
end;
var s:string;
begin
clrscr;
write('Masukkan kode biner : '); readln(s);
write('Hasil integer nya : ',biner(s));
readkey;
end.
Hasilnya :
Untuk yang ingin materi awal perkuliahan .. silahkan download link di bawah :
- Pertemuan 1
- Pertemuan 2 Konsep Algoritma
- Pertemuan 3 Konsep type data (vers.1)
- Pertemuan 4-8 4-8 (flowchart,looping, rekursif)
- Pertemuan 9 (larik/Array)
- Pertemuan 10 Versi 1 (pengurutan/sorting)
- Pertemuan 10 Revisi 2
- Pertemuan 10 Revisi 3
- Pertemuan 11 teknik searching atau download DISINI
- Pertemuan 12 Greedy knapsack Problem
- Pertemuan 12-13 Greedy, minimum spaning tree, south path problem
Comments