24 Juni 2011

Home » » Jawaban UAS Praktikum Algoritma dan Pemrograman II (Soal F)

Jawaban UAS Praktikum Algoritma dan Pemrograman II (Soal F)

Hari Kamis-Jumat (23-24 Juni 2011) dilaksanakan UAS Praktikum Algoritma dan Pemrograman II. Di sini ujian terbagi menjadi 2 hari dan masing2 dibagi menjadi 2 shift. Dan tiap shift terdapat 2 bentuk soal. Bingung kan?

Jadi gini, 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 :

    1. 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
    2. 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 :

image

 

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 :

image

 

image

 

Oke. Udah pusing?? Aseek…

Untuk sementara itu dulu. Ntar kalo udah ada soal-soal lain ntar gue share deeeh. (kalo mood)

0 komentar: