Selasa, 11 Oktober 2016

Analisis Algoritma

Procedure push_stack_array (1/0 top : integer, 1/0 stack : larik_stack, input elemen : integer)
Kamus : {prototype}
     Function penuh (input top: integer)→bolean
Algiritma :
     If (not penuh(top)) then
         Input (elemen)
          Top ← top + 1
           Stack (top) ← elemen
Else
     Output (“stack penuh”)
Endif

Endprocedure

a.  Oprasi pengisian

sintaks
jumlah
Input (elemen)
1
Top ← top + 1
1
Stack (top) ← elemen
1
total
n

     b.  Oprasi penjumlahan

sintaks
jumlah
Top ← top + 1
1
total
1


Total waktu = T1 + T2 = 3a + b

Analisis algoritma penjumlahan deret



Algoritma
Program Penjumlahanderet
{menjumlahkan deret 1+2+3+...+N
N adalah bilangan bulat positf , Nilai N dibaca terlebih dahulu}

Deklarasi
 i, n,jumlah :  integer
Algoritma
  Read(n)
 Jumlah 0
I 1
Repeat
Jumlah jumlah + i
I i +1
Until i > n
Write(jumlah)
Analisis
Sintak
Jumlah
I←1
1
Jumlah 0
1
Jumlah jumlah + i
n
I i + 1
n
total
2 + 2n




           b.    Operasi Penjumlahan
Sintak
Jumlah
Jumlah : Jumlah + i
n
I : i + 1
n
Total
2n

Total Waktu = t1 + t2  
                    = (2+2n)m + (2n)t

Analisis Algoritma Menghitung Faktorial nila 1 sampai 5 Menggunakan For


Procedure Menghitung Faktorial(input bilangan 1 sampai 5 : byte, output hasil faktorial : byte)

Deklarasi

  bulat, awal, faktor : byte
Algoritma

  input(bulat)
  while bulat>=6 or bulat<0 do
     input(bulat)
  endwhile
  faktor-->1
  for awal-->1 to bulat do
     faktor-->faktor*awal
  endfor
  output(faktor)

Oprasi Pengisian
  • input(bulat)            <jumlah : 1>
  • faktor-->1              <jumlah : 1>
  • awal-->1                <jumlah : n>
  • faktor-->faktor*awal    <jumlah : n>  
    Total(C(n)) : 2+2n
    Cop         : a

Opresai Pembanding ">="
  • bulat>=6                <jumlah : 1>
    Total(C(n)) : 1
    Cop         : b


Operasi Pembanding "<"
  • bulat<0                 <jumlah : 1>
    Total(C(n)) : 1
    Cop         : c


Operasi Perkalian
  • faktor-->faktor*awal    <jumlah : n>   
    Total(C(n)) : n
    Cop         : d

Operasi Pengeluaran
  • Output(faktor)          <jumlah : 1>
    Total(C(n)) : 1
    Cop         : e
 


T(n) = Cop . C(n)
     = (2+2n)a+b+c+nd+e 

Analisis Algoritma Login Sederhana



Algoritma
Program Login_Sederhana
{I.S: User memaukan Username dan Password}
{F.S: Membandingkan apakah Username dan Password cocok dengan yang disimpan di dalam program}

Deklarasi
     usr, pwd, user, pass = string
     u, i, n = integer
Algoritma
     user <- “analisis”
     pass <- “12045”
     n <- 3
u <- 1
     while u <= n do
           input(“Username : ”,usr)
           if usr = user then
                output(“Username cocok, silahkan masukan password”)
                i <- 1
                while i <= n do
                     input(“Password : ”,pwd)
                     if pwd = pass then
                           output(“Password cocok. Login Berhasil”)
                     else
                           output(“Password salah ulangi kembali”)
                           i <- i + 1
                     endif
                endwhile
               
                if i > n then
                     output(“Masukan Password sudah lebih dari ”,n,” kali”)
                endif

           else
                output(“Username salah ulangi kembali”)
                u <- u + 1
           endif
     endwhile

     if u > n then
           output(“Masukan Username sudah lebih dari ”,n,” kali”)
     endif


Analisis
          a .   Pengisian Nilai
Sintak
Jumlah
u <- 1
1
i <- 1
1
i <- i + 1
n
u <- u + 1
n
n <- 3
1
user <- “analisis”
1
pass <- “12045”
1
Total
5+2n

           b.    Operasi Penjumlahan
Sintak
Jumlah
i <- i + 1
n
u <- u + 1
n
Total
2n

          c.     Operasi perbandingan
Sintak
Jumlah
u <= n
n+1
i <= n
n+1
u > n
1
i > n
1
usr = user
n
pwd = pass
n
Total
2+2n+2(n+1)

Jadi total kebutuhan waktu eksekusi algoritma Login Sederhana:
Total Waktu = t1 + t2 + t3
                    = (5+2n)a + (2n)b + (2+2n+2(n+1))c