Kamis, 03 April 2014

SubPerogram kasus 5.6

Membuat fungsi yang menghitung suku ke-n dari deret Fibonacci dengan menggunakan cara rekursif :




SubPemrograman kasus 5.5

Membuat fungsi faktorial secara rekursif untuk mencari n! :




SubProgram kasus 5.4

Membuat fungsi perkalian 2 bilangan bulat dengan menggunakanoperator penjumlahan :





Subprogram kasus 5.2

Membuat fungsi yang menentukan nilai terbesar dari 2 bilangan bulat :




SubProgram 4.1

mencentak bilangan 1 - 4



Membuat Algoritma Mencetak Bilangan Dari 1 Sampai 9
  • Algoritma mencetak bilangan dari 1 sampai 9
  • Naik :



  • Turun :




  • C++ dan Raptornya :
*perulangan menggunakan for naik 1-9 :

#include <cstdlib>
#include <iostream>

using namespace std;

class vindy{
          private:
                  int x;
          public:
                 vindy();
                 void proses();
                 };
         
    vindy::vindy(){
                   cout<<"menghitung nilai perulangan for 1-9";
                   cout<<endl;
                   cout<<"vindy arista yuliani";
                   }
                  
    void vindy::proses(){
         for(x=1;x<=9;x++)
         cout<<x<<endl;
         }

int main(int argc, char *argv[])
{
    vindy v;
    v.proses();
    cout<<endl;
        
    system("PAUSE");
    return EXIT_SUCCESS;
}

hasil : 
Flowchart :


*perulangan menggunakan for turun 9-1 :


*perulangan while naik 1-9 :

*perulangan while turun 9-1 :

*perulanagn Repeat until naik :

*perulangan Repeat until turun :



Kasus 4.8

Algoritma

1. Analisisnya
Menghitunglah axb dengan metode penjumlahan
2. Identifikasi
Input :a,b,jumlah
Output :jumlah
3. Algoritmanya
Deklarasi
a,b,jumlah ( dalam integer )

  • Flowchart :
  • C++ :

Kasus 4.7

Algoritma

1. Analisisnya
Menghitung nilai dari dengan x bilangan real dan y bilangan bulat.
2. Identifikasi
Input : x,y,i
Output : hasil
3. Algoritmanya
Deklarasi :
int x, y, i;int pangkat = 1;
Deskripsinya :
for (i = 1; i<=y; i++)
pangkat *= x;

  • Flowchart :
  • C++ :

Kasus 4.4

Algoritma

1. Analisisnya
Menghitung rata-rata dari integer positif
2. Identifikasi
Input : n,jumlah,ratarata
Output : hasil
3. Algoritmanya
Deklarasi :
int n = 1, jumlah = 0, x;
float rata;
Deskripsinya :
while (x>0)
rata = (float)jumlah/(n-1);

  • Flowchart :
  • C++ :

Kasus 4.3


Algoritma

1. Analisisnya
Menccari nilai rata-rata dari n bilangan bulat posititf
2. Identifikasi
Input : i,n,jumlah,x
Output : hasil
3. Algoritmanya
Deklarasi :
i,n,jumlah,x ( integer )
Deskripsinya :
for(i=1; i<=n; i++)
  • Flowchart :

Kasus 4.2

Algoritma

1. Analisisnya
Mencetaklah bilangan ganjil dari 0 - 10
2. Identifikasi
Output : hasil
3. Algoritmanya
Deskripsinya :
i =1;
while (!(i>10))
cout << i << endl;
i =i+2

  • Flowchart :
  • C++ :

Kasus 4.1

Algoritma


1. Analisisnya
Mencetaklah bilangan 1 sampai 4

2. Identifikasi
Output : hasil
3. Algoritmanya
Deskripsinya :
for(int C=1;C<5;C++)


  • Flowchart :
  • C++ :

Minggu, 30 Maret 2014

KASUS ALPRO MINGGU KE 2

Kasus 2.1

Algoritma :
1. Analisis :
Menghitung jumlah dari 3 bilangan bulat


2. Identifikasi :
Input : a, b,c
Output : jumlah

3. Algoritmanya
Deklarasi
a,b,c ( dalam integer )
jumlah ( integer )
Deskripsinya :
jumlah = a+b+c

Flowchart :
C++ :

Kasus 2.2

Algoritma
1. Analisis :
Menghitung hasil kali dari 2 buah bilangan

2. Identifikasi :
Input : a, b
Output : jumlah 

3. Algoritmanya
Deklarasi :
a,b ( dalam integer )
jumlah ( integer )
Deskripsinya :
jumlah = a*b

Flowchart :
C++ :

Kasus 2.3

Algoritma
1. Analisis :
Menghitung konversi dari m ke cm dan inci

2. Identifikasi :
Input : m
Output :cm dan inci

3. Algoritmanya
Deklarasi :
m,cm, inci ( dalam real )
Deskripsinya :
cm = m*100
inci = m*100/2.54

Flowchart :
C++ :

5.5 Sorting By Diminishing Increment

soal
diberi satu set acak memerintahkan nomor n mengurutkan mereka ke dalam urutan non-menurun menggunakan kerang mengurangi metode penyisipan kenaikan.

deskripsi :
1. membangun array a [1 ... n] elemen n
2. mengatur ukuran kenaikan inch ke n
3. sedangkan ukuran kenaikan lebih besar dari satu melakukan
a) menurunkan inci dengan faktor 2
b) untuk semua rantai inci yang akan diurutkan pada kesenjangan inc lakukan
b.1 menentukan posisi k dari anggota kedua rantai saat ini
b.2 sementara ujung rantai saat ini belum mencapai, lakukan
2a. menggunakan mekanisme penyisipan untuk menempatkan x = a [k] di tempat
2.b bergerak ke atas rantai yang sekarang dengan meningkatkan k oleh inch

5.4 Sorting By insertion

Algoritma
1. membangun sebuah array [1 .. n] elemen n.
2. menemukan minimum dan meletakkannya di tempat untuk bertindak sebagaisentinel :
3. sementara masih ada unsur-unsur yang akan dimasukkan di bagian memerintahkan melakukan
a.Pilih x elemen berikutnya untuk dimasukkan
b.sementara x kurang dari sebelumnya unsur melakukan
c.insert x pada posisi saat ini

for i:=2 to n do
begin {search for x's position then insert it}
j:=1; x:=a[i];
while x>a[j] do j:=j+1
for k:= i down to j+1 do a[k]:= a[k-1];
a[j]:=x
end

C++ :

#include <iostream.h>
void main()
{
int data[100];
int a,b,c,d,x;
int temp;


cout<<"PROGRAM SORTING DATA "<<endl;
cout<<"---------------------------------------------"<<endl;
cout<<"Masukkan jumlah data : ? ";cin>>x;


for(d=1;d<=x;d++)
{
cout<<"Data ke-"<<d<<" = ";cin>>data[d];
}
cout<<"\nData Sebelum Diurutkan \n";
for(d=1;d<=x;d++){
cout<<"\t"<<data[d];
}
for(a=0;a<x;a++){
for(b=0;b<x;b++)
if(data[b]>= data[b+1])
{
temp=data[b];
data[b]=data[b+1];
data[b+1]=temp;
}
}
cout<<"\n\nData setelah diurutkan :\n";
for(c=0;c<x;c++)
cout<<"\t"<<data[c];
cout<<"\n\n---------------------------------------------"<<endl
}
system("PAUSE");
return EXIT_SUCCESS;
}

5.3 sorting by exchange

soal
diberikan urutan yang tidak beraturan dari kumpulan nilai n gunakan urutan dengan emnggunakan sorting by exchange

penyelesaian :
Bubble Sort (Gelembung) merupakan metode pertukaran yang alur logikanya mirip dengan gelembung yaitu dengan cara membandingkan indeks Array yang pertama dengan indeks Array berikutnya secara terus menerus dan bergantian. Namun cara ini kurang efektif karena meskipun data sudah terurut proses perulangan yang terjadi akan terus berlangsung sampai batas perulangan itu berakhir. Ini adalah contoh alur alogaritmanya dalam kode program.

for (c=0; c<7; c++)
{ for (x=0; x<7; x++)
{if (menu[x]menu[x+1])
{term=menu[x];
menu[x]=menu[x+1];
menu[x+1]=term;
}
else {
menu[x]=menu[x];
}}}


Selection Sort (Maksimum/Minimum) merupakan metode pertukaran yang mencari nilai Maksimum/Minimum sekelompok data array yang nantinya nilai yang paling ujung akan diisolasikan dan tidak disertakan pada proses selanjutnya. Perhatikan contoh code berikut ini.

for(y=0; y<9; y++)
{max=0;
for (x=1; x<=b; x++)
{ if (A[x]>A[max])
{
max=x;
} }
if (A[max]>A[b])
{ term=A[b];
A[b]=A[max];
A[max]=term;
b--;
} else
{
b--;
}}


Insertion Sort (Sisip) meripakan metode pengurutan dengan cara menyisipkan nilai pada array pada posisi yang tepat. Untuk lebih jelasnya silakan lihat code dibawah ini.

for (k=1; k<9; k++)
{
term=L[k];
j=k-1;
while (term<=L[j])
{
L[j+1]=L[j];
j--;
}
if ((term >= L[j]) || (j=1))
{
L[j+1]=term;
}
else
{
L[j+1]=L[j];
L[j]=term;
}
}


5.2 sorting by selection

algoritmanya{}
Selection Sort
Algoritma ini mudah diterjemahkan ke dalam program computer tetapi memiliki kekurangan yaitu sort dengan menggunakan metode Seleksi membutuhkan ruang di memori untuk meyimpan 2 daftar lengkap.
Jika memiliki satu daftar nama dan meletakkan dalam urutan berdasarkan huruf bisa menggunakan pemdekatan umum sebagai berikut :
1. Temukan atau cari nama yang pertama kali datang dalam urutan huruf dan tulis di sheet kedua
2. Tandai nama yang keluar dari daftar asli
3. Lanjutkan perputaran ini sampai semua nama di daftar semula telah di coret dan ditulis di daftar kedua dimana di bagian daftar yang kedua ini nama-nama sudah terurut berdasarkan huruf

C++ :

#include <iostream.h>
#include <conio.h>

int data[100],data2[100];
int n;

void tukar(int a,int b)
{
int t;
t = data[b];
data[b] = data[a];
data[a] = t;
}

void bubble_sort()
{
for(int i=1;i<n;i++)
{
for(int j=n-1;j>=i;j–)
{
if(data[j]<data[j-1]) tukar(j,j-1);
}
}
cout<<”bubble sort selesai!”<<endl;
}

void exchange_sort()
{
for (int i=0; i<n-1; i++)
{
for(int j = (i+1); j<n; j++)
{
if (data [i] > data[j]) tukar(i,j);
}
}
cout<<”exchange sort selesai!”<<endl;
}

void selection_sort()
{
int pos,i,j;
for(i=0;i<n-1;i++)
{
pos = i;
for(j = i+1;j<n;j++)
{
if(data[j] < data[pos]) pos = j;
}
if(pos != i) tukar(pos,i);
}
cout<<”selection sort selesai!”<<endl;
}

void insertion_sort()
{
int temp,i,j;
for(i=1;i<n;i++)
{
temp = data[i];
j = i -1;
while(data[j]>temp && j>=0)
{
data[j+1] = data[j];
j–;
}
data[j+1] = temp;
}
cout<<”insertion sort selesai!”<<endl;
}

void QuickSort(int L, int R)
{
int i, j;
int mid;

i = L;
j = R;
mid = data[(L+R) / 2];

do
{
while (data[i] < mid) i++;
while (data[j] > mid) j–;

if (i <= j)
{
tukar(i,j);
i++;
j–;
};
} while (i < j);

if (L < j) QuickSort(L, j);
if (i < R) QuickSort(i, R);
}

void Input()
{
cout<<”Masukkan jumlah data = “; cin>>n;
for(int i=0;i<n;i++)
{
cout<<”Masukkan data ke-”<<(i+1)<<” = “; cin>>data[i];
data2[i] = data[i];
}
}

void Tampil()
{
cout<<”Data : “<<endl;
for(int i=0;i<n;i++)
{
cout<<data[i]<<” “;
}
cout<<endl;
}

void AcakLagi()
{
for(int i=0;i<n;i++)
{
data[i] = data2[i];
}
cout<<”Data sudah teracak!”<<endl;
}

void main()
{
int pil;
clrscr();
do
{
clrscr();
cout<<”Program Sorting Komplit!!!”<<endl;
cout<<”*********************************************”<<endl;
cout<<” 1. Input Data”<<endl;
cout<<” 2. Bubble Sort”<<endl;
cout<<” 3. Exchange Sort”<<endl;
cout<<” 4. Selection Sort”<<endl;
cout<<” 5. Insertion Sort”<<endl;
cout<<” 6. Quick Sort”<<endl;
cout<<” 7. Tampilkan Data”<<endl;
cout<<” 8. Acak Data”<<endl;
cout<<” 9. Exit”<<endl;
cout<<” Pilihan Anda = “; cin>>pil;
switch(pil)
{
case 1:Input(); break;
case 2:bubble_sort(); break;
case 3:exchange_sort(); break;
case 4:selection_sort(); break;
case 5:insertion_sort(); break;
case 6:QuickSort(0,n-1);
cout<<”quick sort selesai!”<<endl;
break;
case 7:Tampil(); break;
case 8:AcakLagi(); break;
}
getch();
}while(pil!=9);
}


5.1 the two way merge

algoritma {
}
if a[m]<b[n] then a[m+1]:=b[n+1]:=a[m];
i:=1;
j:=1;
nm:= n+m;
for k:= 1 to nm dobegin {merge next element }
if a[i]<b[j] thenbeginc[k]:=a[i];
i:=i+1end elsebeginc[k]:=b[j];
j:=j+1end
end

C++ :

#include <iostream>

int data[100];

void mergeSort(int awal, int mid, int akhir)
{
cout<<endl;
int temp[100], tempAwal = awal, tempMid = mid, i = 0;
while(tempAwal < mid && tempMid < akhir)
{
if(data[tempAwal] < data[tempMid])
temp[i] = data[tempAwal],tempAwal++;
else
temp[i] = data[tempMid],tempMid++;
i++;
}
while(tempAwal < mid)
temp[i] = data[tempAwal],tempAwal++,i++;
while(tempMid < akhir)
temp[i] = data[tempMid],tempMid++,i++;
for(int j=0,k=awal;j<i,k<akhir;j++,k++);
cout<<data[k]<<' '<<temp[j]<<endl, data[k] = temp[j];
}


void merge(int awal, int akhir)
if(akhir-awal != 1)
{
int mid = (awal+akhir)/2;
merge(awal, mid);
merge(mid, akhir);
mergeSort(awal, mid, akhir);
}}

int main()
{
int n;
cout<<"Masukan banya data = ";cin>>n;
cout<<"Masukan data yang akan di susun = ";
for(int i=0;i<n;i++)
cin>>data[i];
merge(0,n);
for(int i=0;i<n;i++)
cout<<data[i]<<' ';
return 0;
}

TUGAS Ebook ALPRO MINGGU 4

4.1 array order reversal
soal
mengatur ulang elemen dalam array sehingga muncul urutan terbaik

deskripsi :
1. membangun sebuah array a[a....n] dari n elemen yang akan dilindungi
2. menghitung r jumlah pertukaran yang diperlukan untuk memesan array
3. sementara masih ada pasang elemen array untuk ditukar
(a) menukar elemen i dengan elemen [n-i + 1]
4. mengembalikan array dilindungi undang-undang

4.2 array counting or histogramming

soal
diberi satu set sebuah tanda ujian siswa (dalam kisaran 0 hingga 100) membuat hitungan jumlah siswa yang mungkin diperoleh masing-masing tanda

deskripsi :
1. meminta dan membaca jumlah n tanda untuk diproses
2. memberi inisial semua elemen yang akan di hitung array [0...100]
3. sementara masih ada yang akan di peroses, untuk melakukan perulangan
(a) membaca tanda berikutnya m
(b) menambahkan 1 perhitungan di lokasi m didalam array
4. tuliskan output nilai frekuensi perhitungan


4.3 finding the maximum number in a set

soal
menemukan nilai maksimun a dari nilai n

deskripsi :
1. membangun sebuah array a[1....n] dimana elemen n>=1
2. berikan nilai maksimum sementara max untuk elemen pertama array
3. sementara kurang dari n elemen array telah di anggap
(a) jika elemen selanjutnya elemen maksimum max maka itu nilai maksimun
4. menuliskan nilai maksimum dari n elemen array

4.4 removal of duplicates from an ordered array

soal
menghapus semua duplikat dari perintah array

deskripsi :
1. membangun array a[1 ... n] dari elemen n
2. mengatur indeks pengulangan i=2 untuk memungkinkan terminasi yang benar
3. membandingkan pasangan berurutan dari elemen sehingga duplikat ditemui kemudian menetapkan elemen tertinggi penhitungan j
4. sementara semua pasangan belum diperiksa lakukan
(a) jika pasangan selanjutnya tidak duplikasi lakukan
(a.1) tambahkan 1 perhitungan element tertinggi j
(a.2) kemudian pindahkan elemen dari pasangan ke posisi array tentukan dari elemen perhitungan array tertinggi.

4.5 partitioning an array

soal
diberikan perintah array dalam bentuk acak dari n elemen. mambagi elemen menjadi
dua bagian sedemikian rupa sehingga elemen <= x berada di salah satu bagian dalam
elemen >x berada di bagian.

deskripsi:
1. membangun array a[1 ... n] dan nilai pembagi dari x.
2. pindahkan 2 pembagi terhadap satu sama lain sampai sepasang salah ditempatkan elemen dalam perhitungan memungkinkan untuk kasus-kasus khusus x berada di luar kisaran nilai array
3. sedangkan jika dua perhitungan belum pernah bertemu atau menyeberang melakukan
(a) bertukar pasangan yang salah perhitungan dan memperpanjang kedua perhitungan ke dalam oleh salah satu elemen
(b) memperpanjang partisi kiri sementara elemen kurang dari atau sama dengan x
(c) memperpanjang partisi yang benar sementara elemen lebih besar dari x
4. tampilkan perhitungan indeks p and perhitungan array

4.7 longest monotone subsequence

soal
{given a set of n distinct numbers find the length of the longest monotoneincreasing subsequence}
diberi satu set n nomor yang berbeda menemukan panjang monoton terpanjang meningkatkan subsequence

desskripsi :
1. membangun array a[1 ... n] dari elemen n
2. mengatur kondisi awal untuk subsequence mengakhiri di posisi pertama
3. untuk sisa (n-1) posisi array lakukan
(a) jika elemen saat ini kurang maksimal di set terpanjang sebelumnya kemudian
(a.1) mencari posisi dan nilai maksimum antara pendahulu
(a.2) memperbarui posisi dan panjang maksimum jika diperlukan jika tidak
Update posisi panjang lain dari maksimum dan panjang maksimum terjauh
4. tampilkan panjang tetap terpanjangdari subsequen

Sabtu, 29 Maret 2014

TUGAS SAP ALPRO MINGGU KE 4

  • Membuat Tabel Perkalian
1. Analisis :
Membuat tabel Perkalian

2. Identifikasi
Output : Tabel Perkalian

C++ :

  • Membuat diamond dengan perulangan 

Analisis :
Membuat Diamond dengan perulangan

Identifikasi
Input : nilai n
output : diamond

Algoritma :
Deklarasi
int i, n, odd{50};
const char spasi = 177;
const char diamond = ' * ';

C++ :

TUGAS KELOMPOK ALPRO MINGGU KE 4

Simulasi Pembelian Bahan Bakar

1. Deklarasi :
Liter : Integer
Uang : Integer

2. Deskripsi :
Read (liter);
Options Liter
1. 1 liter 6500
2. 2 liter 13000
3. 3 liter 19500
End (select)
write (L)

C++:

class Fuel {
Public :
void input();
void process ();
void output ();
Private :
int output;
int liter;
};

void Fuel :: input (){
cout<<"Enter The Price of Fuel : " ;
cin>>output;
cout<<"type of fuel : "; cin>>output;
}

void Fuel :: process(){
output = liter * money
}

void Fuel :: output (){
cout<<"The Output Of The Process : "<<result;
}

int main(int argc, char * argv []) {
Fuel X;
X input ();
X process ();
X output ();
System ("pause");
Return exit_succes;
}/* Import to jeliot : */
{Public class fuel

void static void input ();
void static void process();
void static void output ();

private int output;
private int liter;
};
Public void input();{
system.out.print ("Enter the Price of fuel")
output=input.readint();
system.out.print("type of fuel");
output=input.readint();
}
Public void process(){
output=liter * money
}
Public void output(){
syetem.out.print("output of the process : " + result);
}

Public static void main(){
X = new fuel ();
X.input();
X.process();
X.output();
}}

TUGAS INDIVIDU ALPRO MINGGU KE 4 

1. Bilangan Habis Dibagi 3 dan 5

1. Deklarasi :
i : integer (bilangan 1 - 100)

2. Deskripsi :
Read (i)
i <- 1 - 100
for (int i=1; i<=100; 1++)
if(i mod 3==0)
Write
Else (i mod 5==0)
Write i

  • Flowchart :
  • C++ :

2. Algoritma Penjumlahan Deret Pecahan

soal:
Algoritma untuk menghitung nilai dari 1 - 1/2 + 1/3 - 1/4 +....+ 1/n

algoritma:
{Menjumlahkan deret dengan bentuk pecahan 1-1/2+1/3-1/4+…1/n. Nilai n dibaca, ditentukan terlebih dahulu, algoritma menghitung hasil penjumlahan dan mencetak hasil jumlah}

Deklarasi :
jumlah : real {jumlah deret}
n : integer {penyebut pada suku terakhir, n >0}
i : integer {suku ke-i}
p : integer {penyebut suku ke-i}
Deskripsi :
read(n)
jumlah ← 0
i ← 1 {suku pertama}
p ← 1 {penyebut suku pertama}
while p ≤ n do
if i mod 2 = 1 then {suku ke-i ganjil}
jumlah ← jumlah + 1/p
else
jumlah ← jumlah – 1/p
endif
i ← i+1 {tinjau suku berikutnya}
p ← p + 1 {tinjau penyebut suku berikutnya}
endwhile
{p > n}
write(jumlah)

3. Nilai Terkecil Terbesar dan Jumlah Semua Bilangan Positif

Algoritma Nilai Terkecil Terbesar dan Jumlah Semua Bilangan Positif. menentukan nilai terkecil, terbesar, dan jumlah semua bilangan positif yang dimasukkan.

algoritma
{algoritma menerima inputan sebuah bilangan bulat, menentukan bilangan terkecil, bilangan terbesar, dan menghitung jumlah semua bilangan bulat positif, menampilkan hasil penjumlahan bilangan bulat positif}

Deklarasi :
x,y : integer {data yang dibaca}
n : integer {banyak data masukan, >0}
min : integer {data terkecil/minimum}
maks : integer {data terbesar/maksimum}
i : integer {pencacah pengulangan}
jumlah : real {jumlah bilangan positif}

Deskripsi :
read(n)
read(x) {baca data pertama}
min ← x {asumsikan min adalah data pertama}
maks ← y {asumsikan maks adalah data terakhir}
for i ← 2 to n do {lanjutkan dengan ke-2 sampai ke-n}
read(x)
if x < min then
min ← x
if y > maks then
maks ← y
endif
while (x > 0) do
jumlah ← jumlah + x
read(x)
n ← n + 1
write(‘positif’)
endfor
jumlah ← x + 1
write(min)
write(maks)
write(jumlah)

TUGAS DISKUSI ALPRO MINGGU 2

Tabungan ATM 


  • Analisis : Periksa buku tabungan salah satu anggota kelompok. Lakukan detail transaksi pengambilan uang tabungan termasuk detail isian dalam formulir transaksi. Pisahkan algoritma penulisan angka menjadi ejaan :
  • Misal anda mengambil uang sebesar 300.000 akan tertulis sebagai ‘Tiga ratus ribu rupiah” Tulislah menggunakan huruf miring (italic) bila pernyataan tertentu boleh berada pada deretan lain. Sementara urutan yang HARUS berada pada urutan tertentu tulis dalam huruf tegak (biasa)

  • Flowchart :





Selasa, 25 Maret 2014

Refleksi minggu ke 5 ALPRO

kami mendapat masalah, karena ada teman kami yang belum mengerjakan tugas dengan lengkap, hasilnya kami membuat perjanjian :

  • hari kamis untuk mengerjakan tugas minggu 1 yang belum di kerjakan
  • hari jum'at untuk mengerjakan tugas minggu 2 yang belum di kerjakan
  • hari sabtu untuk mengerjakan tugas minggu 3 yang belum di kerjakan 
  • hari minggu untuk mengerjakan tugas minggu 4 yang belum di kerjakan
  • hari senin - rabu untuk mengerjakan tugas minggu 5 yang belum di kerjakan
Mr. Wahyu pujiono menjelaskan tentang heratif us Rekursif.

  • kami mendapat kuis :) pada jam 20:00 harus sudah di kirim jika lebih dari jam itu tidak di terima :(
hal yang belum saya pahami :
cara menggunakan rekursif dengan baik dan benar,

usaha yang saya lakukan :
bertanya kepada teman dan kakak tingkat lalu berlatih lagi dikost :)


Refleksi minggu ke 4 ALPRO

hari ini kami bettle sokoban, meskipun kelompok saya awalnya beruntung dalam permainan itu tapi pada akhirnya kalah juga, tapi setidaknya kami sudah berusaha :D

  •  apa yang anda peroleh?
hari ini saya belajar perulangan (loop)
perulangan for,
perulangan while,
perulangan do while.
mengetahui tentang penyelesaian deret fibonacci.

  • apa yang tidak dipahami :
jujur saja saya belum mengerti membuat perulangan di raptor, atau membuat flowchatnya, dan masih kurang paham coding dengan menggunakan class.

  • usaha apa yang anda lakukan untuk mengatasinya :
mengulang kembali materi tentang perulangan disemester 1, membuka catatan semester satu browsing di google, balajar otodidak dengan lebih rajin dan kalo udah menttok tanya teman atau kakak tinggat yang mengerti, :)


Sabtu, 22 Maret 2014

TUGAS EBOOK MINGGU KE 3 ALPRO

1. finding the square root of a number

soal :
mencari akar persamaan kuadrat ,,,

analisis :
persamaan kuadrat adalah persamaan dengan bentuk umum ax^2 + bx + c dengan a tidak sama dengan 0. jika b^2 - 4ac < 0 maka akan diperoleh akar imajiner.
input : koefien a, b, c bilangan real.
proses : ada tiga alternatif pilihan dari harga b^2 - 4ac yaitu harganya 0 positif atau negatif
output : nilai akar berdasarkan rumus.
algoritma :
{menghitung akar persamaan kuadrat ax^2 + bx + c = 0}

deklarasi :
read (a, b, c)
disk <-b*b - 4*a*c
if (a=0 then write (bukan persamaan kuadrat)
else if disk > 0 then
x1<= b + sqrt(diks)/2*a
x2<= b - sqrt(diks)/2*a
else if disk = 0 then
x1<= b/2 *a
x2<=x1
else write (akar imajiner)
end if
write (x1,x2)
  • Flowchart :

  • C++ :

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

using namespace std;

int main(int argc, char *argv[])
{
    int a,b,c;
    long disk;
    float x1,x2;
          cout<<" koefisien pangkat dua : ";cin>>a;
          cout<<" koefisien pangkat satu : ";cin>>b;
          cout<<" koefisien pangkat nol : ";cin>>c;
if(a==0){
         cout<<"tentukan persamaan kuadrat|n";
         cout<<"harga akarnya adalah : "<<-c/b;}
else {
     disk=b*b-4*a*c;
if(disk>0){
           x1=-b+sqrt(disk)/(2*a);
           x2=-b-sqrt(disk)/(2*a);
           cout<<"diskriminan : "<<disk<<endl;
           cout<<"x1 : "<<x1<<endl;
           cout<<"x2 : "<<x2<<endl;
} else
cout<<" akar imajiner"<<endl;
}

system("PAUSE");
return EXIT_SUCCESS;
}


2. the smallest divisor of an integer

masalah
Di berikan sebuah n integer kemudian memikirkan algoritma untuk menentukan pembagi terkecil selain angka 1.

input dan output
X=integer (input)
R=integer
D= integer
Kpk = integer (output)

algoritma
Menetukan pembagi terkecil dari sebuah bilangan
Deklarasi
X=integer
R= integer
D=integer
Deskripsi
Read x
R ß sqrt (x);
D ß 3
If (n ! = n) then kpk =2
Else
While (n mod d ≤ 0) and (d < r) do
D ß d + 2
If (n mod :: 0) then kpk. D
Else then kpk=1
End while

test data
X= 25
R= 5
If(x! =x)
Kpk =2
While x mod <> 0 end (d < r)
Kpk = d+2

  • C++ :
#include <cstdlib>
#include <iostream>
#include <math.h>

using namespace std;

      Friend istream& operator >> (istream&, terkecil&);
      Friend ostream& operator >> (ostream&, terkecil&);
public;
       void kpk ();
private ;
        int x,n,d,k;
};
  Istream& operator >> (istream& in, terkecil& a)}
           Cout <<"masukan bilangan"; in >> a,x;}
  Ostream& operator << (ostream out. Terkecil& b)}
           Out << "hasilnya " << b.k <<endl; }
Terkecil::terkecil (){
                   Cout <<"mencari kpk " ; }
void terkecil :: kpk (){
     If (n! =n) k= 3;
Else while (n % d<) 0 && d < r ){
     D=d+2
If (n % d :: 0 ) k=d;
Else k = 1;}
Int main (){
    terkecil m;
    Cin >>m ;
    m.FPB ();
    cout <<m ;

system("PAUSE");
return EXIT_SUCCESS;
}


3. the greatest common divisor of two integer

soal
masalah
Di berikan 2 integer positif tidak atau bukan nol n & m, pola algoritma untuk mencari pembagi yang paling besar.

input dan output
M= integer (input)
N =integer
Gcd= integer (output)
R= integer
D= integer

algoritma
Read m,n
While (m <0) do
R ß n mod m
N ß m
End while
Gcd ß m
Write = (gcd)

test data
M= 36 n= 28
N= 28 m=8
R=36 % 28 gcd = 8
R= 8
  • C++ :
Class gcd {
Friend ostream& operator << (ostream. Gcd&);
Friend istream& operator >> (istream. Gcd&);
Public;
Int hitung gcd (int ,int);
Private ;
Int x,y;
};
Int gcd :: hitung gcd (int ,(int d)
{ int r;
While ( d> 0);
R = c % d;
D= d;
D= r;
}
Return ( r );
}
(istream& operation >> (istream& in, gcd& a){
Cout << “ inputkan bilangan petama ;” ;
In >> a.x;
Cout << “ inputkan bilangan kedua ; “ ;
In >> a.x;
Return in; }

Ostream& operation << istream& out , gcd& a){
Out << “gcd ‘ << a.c << “.” << a. x << );”;
Out << a.hitung gcd (a.x, a.y);
Return out;
}
Void main (){
Gcd run;
Cin >> run ;
Cout << run ;
Getch ();
}



4. generating prime numbers

soal
Setiap integer bisa di ekspresikan ke dalam hasil bilangna atau angka. Prima pola algoritma untuk memperhitungkan semua factor prima dan sebuah integer.

input dan output
A= integer
R= integer
I= integer
X=integer
X=integer

algoritma
A ß x div y
R ß x mod x
I ß 0
While ( r =0) or (a > y) do
If ( I :: 0) then
I= i+1
X [i] ß y
Y ß a
If r > I then
[i] = r
End while

test data
X=16
Y= 2
Q =16/2 =8
R=16%2=6
While (r-o) ll (Q > y) do
If (r ==0) I = [+1]
X [i] =2
X=8
  • C++ :
Class prima {
Friend ostream& operator << (ostream& prima&);
Friend istream& operator >>(istream& prima7);
Public;
Void prima ();
Prima ();
Private;
Int + [50],I,n;
Int Q,R,S;
};
Void prima :: prima (){
Q= n/5;
R=n%5;
I=0;
While ((r=0) ll(Q >5)0{
If (r==0){
If(r==0){
R= i+1;
F(i)=5;
N= Q; }
Else{
Q = n/5;
R= n % 5 ;}
}
If ( n> 1){
I= I + 1
F [i]=n }
}}


5. Computing The Prime Factors Of An Integer

Algoritma

1. Analisis :
Program Mencari Faktorial Bilangan Prima

2. Identifikasi :
Input : batas bilangan
Output : hasil faktorial bilangan prima

3. Algoritmanya
Deklarasi :
a (Integer)
Deskripsinya :
while (!(a<=2))
if (a%2==0)
else

  • Flowchart :
  • C++ :


6. Generating Of Pseudo Random Numbers

Algoritma
1. Analisis :
Program Mencari Bilangan Acak

2. Identifikasi :
Input : angka acak
Output : bilangan acak
3. Algoritmanya
Deklarasi :
a,b,c,d,e,f (Integer)
Deskripsinya :
b = 2175;
c = 721;
d = a+1;
e = 1234;
f = ((c*e)+b)%d;

  • Flowchart :
  • C++ :

7. Raising A Number To A Large Power

Algoritma
1. Analisis :
Program Menghitung Bilangan Berpangkat Sampai N

2. Identifikasi :
Input : bilangan dan batas angka
Output : hasil perpangkatan

3. Algoritmanya
Deklarasi :
a,b,c,hasil (Integer)
Deskripsinya :
while (1)
if ( b>=0 )
c = 1;
while ( !(c>b))
c = c+1;

  • Flowchart :
  • C++ :

8. Computing The Nth Fibonacci Number
Algoritma
1. Analisis :
Program Menghitung jumlah fibonacci n

2. Identifikasi :
Input : banyak baris fibonacic
Output : jumlah deret

3. Algoritmanya
Deklarasi :
int i,c;
int a = 0;
int b = 1;
int masuk;
int jumlah = 1;

  • Flowchart :
  • C++ :