Selasa, 28 Maret 2017

KASUS WORKSHOP DIKTAT BAB V PERULANGAN/LOOP

KASUS WORKSHOP DIKTAT BAB V PERULANGAN/LOOP

Dalam kehidupan sehari-hari, sering kali kita temukan kegiatan yang dilakukan berulang-ulang. Dimulai pada kondisi tertentu, dilakukan langkah berulang, kondisi selesai. Sebagai contoh, untuk menghabiskan sepiring nasi (kondisi awal) kita suap satu sendok demi satu sendok. Setiap kali langkah makan satu sendok, banyaknya nasi dalam piring berukuran satu sendok. Kita berhenti makan apabila makanan yang ada dalam piring habis (kondisi selesai).

Kasus 5.1. Cetaklah bilangan 1 sampai 4 menggunakan perulangan.



Algoritma Cetak_Angka
{Mencetak angka 1, .., 4 ke piranti keluaran}
Deklarasi
i : integer
Deskripsi
i <- 1
while (i <= 4) do
write (i)
i <- i + 1
endwhile

Flowchart Kasus 5.1


Translasi Kasus 5.1

#include <iostream>
#include <string>

using namespace std;
class urut{
private:
int i;
public:
urut(){
   i =1;
}
void output();
};
void urut::output(){
   while (1)
   {
      cout << i << endl;      
 i =i+1;
      if (i>4) break;
   }
}
int main()
{
   urut t;
   t.output();
   return 0;

}

Hasil Kasus 5.1 




Kasus 5.2. Cetaklah bilangan ganjil dari 0 sampai 10 menggunakan perulangan (for, while – do, repeat – until).

Algoritma Cetak Ganjil
{Mencetak bilangan ganjil dari 0 sampai 10 ke piranti keluaran}
Deklarasi
i : integer
Deskripsi
i <- 1
repeat
write (i)
i <- i + 2
until (i > 10)

Flowchart Kasus 5.2



Translasi Kasus 5.2

#include <iostream>
#include <string>

using namespace std;
class ganjil{
private:
int i;
public:
ganjil(){
   i =1;
}
void output();
};
void ganjil::output(){
   while (!(i>10))
   {
      if (i % 2==0)
      {
      }
      else
      {
         cout << i << endl;      }
      i =i+1;
   }
}
int main()
{
   ganjil pendi;
   pendi.output();

   return 0;

}

Hasil Kasus 5.2




Kasus 5.3. Carilah rata-rata dari n bilangan bulat positif.



Algoritma mencari rata-rata
{Diberikan n data kemudian dicari rata-ratanya}
Deklarasi
i, n, jumlah, x : integer
rata : real
Deskripsi
read(n)
jumlah <- 0
for i <- 1 to n do
read(x)
jumlah <- jumlah + x
endfor
rata <- jumlah/n
write(rata)

Flowchart Kasus 5.3



Translasi Kasus 5.3

#include <iostream>
#include <string>

using namespace std;
class rta{
private:
string raptor_prompt_variable_zzyz;
   int n,i,x;
   float rata,jumlah;
public:
rta(){
   raptor_prompt_variable_zzyz ="Masukan N : ";
   cout << raptor_prompt_variable_zzyz << endl;
   cin >> n;
   jumlah =0;
   i =1;
}
void output();
};
void rta::output(){
   while (!(i>n))
   {
      raptor_prompt_variable_zzyz ="Masukan X : ";
      cout << raptor_prompt_variable_zzyz << endl;
      cin >> x;
      jumlah =jumlah+x;
      i =i+1;
   }
   rata =jumlah/n;
   cout << rata << endl;
}
int main()
{
   rta z;
   z.output();
   return 0;

}

Hasil Kasus 5.3



Kasus 5.4. Hitunglah rata-rata dari bilangan bulat positif, di mana banyak data ditentukan dari data yang dimasukkan.



Algoritma mencari rata-rata

{Diberikan data bilangan bulat positif kemudian dicari rata-ratanya}
Deklarasi
n, jumlah, x : integer
rata : real
Deskripsi
jumlah <- 0
read(x)
n <- 1
while (x>0) do
jumlah <- jumlah + x
read(x)
n <- n+1
endfor
rata <- jumlah/(n-1)
write(rata)

Flowchart Kasus 5.4



Translasi Kasus 5.4

#include <iostream>
#include <string>

using namespace std;
class rta{
private:
  string raptor_prompt_variable_zzyz;
   int x,data,n;
   float rata,jumlah;
public:
rta(){
   jumlah =0;
   raptor_prompt_variable_zzyz ="Masukan Jumlah Data : ";
   cout << raptor_prompt_variable_zzyz << endl;
   cin >> x;
   n =1;
}
void output();
};
void rta::output(){
   while (!(n>x))
   {
      raptor_prompt_variable_zzyz ="Masukan Nilai : ";
      cout << raptor_prompt_variable_zzyz << endl;
      cin >> data;
      if (data>0)
      {
         jumlah =jumlah+data;         
n =n+1;
      }
      else
      {
      }
   }
   rata =jumlah/(n-1);
   cout << rata << endl;
}
int main()
{
rta r;
r.output();
   return 0;

}

Hasil Kasus 5.4





Kasus 5.5. Tentukan nilai dari :
sampai selisih 2 suku tidak lebih dari 0.001. Tentukan pula nilai n terakhir.



Algoritma mencari jumlah deret
Deklarasi
n, jumlah, x : integer
rata : real
Deskripsi
jumlah <- 0
i <- 1
repeat
jumlah <- jumlah + (1/i)
i <- i+1
selisih <- (1/i)-(1/(i-1))
until abs(selisih) < 0.001
write(jumlah, i)

Flowchart Kasus 5.5



Translasi Kasus 5.5

#include <iostream>
#include <string>
#include <math.h>

using namespace std;
class selish{
private:
float selisih,i,jumlah;
public:
selish(){
   selisih =0;
   jumlah =0;
   i =1;
}
void output();
};
void selish::output(){
   while (1)
   {
      jumlah =1/i;
      i =i+1;
      selisih =1/(i-1)-1/i;
      if (selisih>=0,001) break;
   }
   cout << i << endl;   
   cout << jumlah << endl;
   cout << selisih << endl;
}
int main()
{
  selish s;
  s.output();
   return 0;
}

Hasil Kasus 5.5




Kasus 5.6. Carilah nilai dari n! ( n faktorial).



Algoritma mencari n faktorial
{Dicari n faktorial dengan masukan n}
Deklarasi
i, n : integer
faktorial : longint
Deskripsi
read(n)
faktorial <- 1
for i <- 1 to n do
faktorial <- faktorial * i
endfor
write(faktorial)

Flowchart Kasus 5.6



Translasi Kasus 5.6

#include <iostream>
#include <string>

using namespace std;
class faktor{
private:
string raptor_prompt_variable_zzyz;
   int n;
   int i;
   long faktorial;
public:
faktor(){
   raptor_prompt_variable_zzyz ="Masukan Angka : ";
   cout << raptor_prompt_variable_zzyz << endl;
   cin >> n;
   faktorial =1;
   i =1;
}
void output();
};
void faktor::output(){
   while (!(i>n))
   {
      faktorial =faktorial*i;
      i =i+1;
   }
   cout << faktorial << endl;
}
int main()
{
   faktor f;
   f.output();
   return 0;

}

Hasil Kasus 5.6




Kasus 5.7. Dengan menggunakan fungsi ln dan exp, buatlah fungsi untuk menghasilkan nilai xy.



Algoritma
Fungsi Pangkat(input x, y : integer)
{Menghitung nilai dari x pangkat y}
Deskripsi
pangkat <- exp(y*ln(x))

Flowchart Kasus 5.7



Translasi Kasus 5.7

#include <iostream>
#include <string>
#include <math.h>

using namespace std;
class pgkat{
private:
   string raptor_prompt_variable_zzyz;
   float x,y,pangkat;
public:
pgkat(){
   raptor_prompt_variable_zzyz ="Masukan Bilangan : ";
   cout << raptor_prompt_variable_zzyz << endl;
   cin >> x;
   raptor_prompt_variable_zzyz ="Akan Dipangkatkan Dengan : ";
   cout << raptor_prompt_variable_zzyz << endl;
   cin >> y;
   pangkat =exp(y*log(x));
}
void output();
};
void pgkat::output(){
   cout << "Hasil Pangkat : "<<pangkat << endl;
}
int main()
{
   pgkat z;
   z.output();
   return 0;
}

Hasil Kasus 5.7




Kasus 5.8. Hitunglah nilai dari xy dengan x bilangan real dan y bilangan bulat.



Algoritma Pangkat
{Diberikan masukan x dan y, dihitung nilai dari x pangkat y}
Deklarasi
x, y, i : integer { input }
pangkat : integer { output }
Deskripsi
read (x,y)
pangkat <- 1
for i <- 1 to y do
pangkat <- pangkat * x
enfor
write (pangkat)

Flowchart Kasus 5.8



Translasi Kasus 5.8

#include <iostream>
#include <string>

using namespace std;
class pgkat{
private:
   string raptor_prompt_variable_zzyz;
   int y,i;
   float x,pangkat;
public:
pgkat(){
   raptor_prompt_variable_zzyz ="Tulis Sebuah Bilangan : ";
   cout << raptor_prompt_variable_zzyz << endl;
   cin >> x;
   raptor_prompt_variable_zzyz ="Mau Dipangkatin Berapa : ";
   cout << raptor_prompt_variable_zzyz << endl;
   cin >> y;
   pangkat =1;
   i =1;
}
void output();
};
void pgkat::output(){
   while (!(i>y))
   {
      pangkat =pangkat*x;
      i =i+1;
   }
   cout << x<<" Pangkat "<<y<<" = "<<pangkat << endl;
}
int main()
{
pgkat k;
k.output();
   return 0;

}

Hasil Kasus 5.8




Kasus 5.9. Buatlah fungsi perkalian 2 bilangan bulat dengan menggunakan operator penjumlahan.



Algoritma
Fungsi kali(input a, b : integer) : integer
{ Menghitung hasil perkalian a dan b menggunakan Operator Penjumlahan }
Deklarasi
hasil, i : integer
Deskripsi
hasil <- 0
for i <- 1 to b do
hasil <- hasil + a
kali <- hasil

Flowchart Kasus 5.9



Translasi Kasus 5.9

#include <iostream>
#include <string>

using namespace std;
class pangkat{
private:
 string raptor_prompt_variable_zzyz;
   int hasil,a,b,i;
public:
pangkat(){
   raptor_prompt_variable_zzyz ="Masukan Bilangan : ";
   cout << raptor_prompt_variable_zzyz << endl;
   cin >> a;
   raptor_prompt_variable_zzyz ="Akan Dikali Dengan : ";
   cout << raptor_prompt_variable_zzyz << endl;
   cin >> b;
   hasil =0;
   i =1;
}
void output();
};
void pangkat::output(){
   while (!(i>b))
   {
      hasil =hasil+a;
      i =i+1;
   }
   cout << a<<" x "<<b<<" = "<<hasil << endl;
}
int main()
{
  pangkat x;
  x.output();
   return 0;

}

Hasil Kasus 5.9





Kasus 5.11. Diberikan deret Fibonacci sebagai berikut : 1, 1, 2, 3, 5, 8, … Buatlah fungsi yang menghitung suku ke-n dari deret Fibonacci dengan menggunakan cara rekursif.

Algoritma fungsi fibonacci 
Deklarasi
(n,a,b,c) : integer
Deskripsi
if (n = 1) or (n = 2) then fibonacci <- 1
else fibonacci <- fibonacci(n-1) + fibonacci(n-2)
endif
write (n,a,b,c)

Flowchart Kasus 5.11



Translasi Kasus 5.11

#include <iostream>
#include <string>

using namespace std;
 void fibonaci (int n,int a,int b,int c)
{

   if (n>0)
   {
      cout << c << endl;      
 c =a+b;
      a =b;
      b =c;
      fibonaci(n-1,a,b,c);
   }
   else
   {
   }
}
int main()
{
   string raptor_prompt_variable_zzyz;
   int n,a,b,c;

   a=0;   
   b =1;
   c =1;
   raptor_prompt_variable_zzyz ="Masukan Banyaknya Suku : ";
   cout << raptor_prompt_variable_zzyz << endl;
   cin >> n;
   cout<<endl;
   fibonaci(n,a,b,c);

   return 0;

}

Hasil Kasus 5.11









0 komentar:

Posting Komentar

Popular Posts

Diberdayakan oleh Blogger.