PERULANGAN

Ciri-Ciri Perulangan
    1. Kapan perulangan tersebut akan dimulai
    2. Kapan perulangan berhenti
    3. Berapa kali perulangan itu berulang


Macam-Macam Perulangan
1. Perulangan For
    -Perulangan for merupakan perulangan yang sudah jelas dan sudah ditentukan berapa kali perulangan tersebut akan berulang
    -Penulisan agoritma perulangan for
        for i<= awal to akhir do
        write (i)
    -Penulisan sintak di C++
        for(i=awal; i<=akhir; i++){
            aksi;
        }

2. Perulangan While
    -Perulangan while merupakan perulangan yang belum diketahui atau tidak jelas berapa kali perulangan tersebut akan berulang.
    -Penulisan algoritma 
        i=0
        while(i<=4)
            write(i)
            i=i+1
        end while

3. Perulangan Do-while
    -Perulangan do while sama dengan perulangan while
    -Perbedaan : perulangan do-while akan melakukan perulangan sebanyak 1 kali dulu, kemudian mengecek kondisi yang ada pada kurung while
    -Penulisan algoritma
        i=1
        repeat
            write(i)
        i=i+1
        until(i>4)
    
  

LATIHAN
1. Hitunglah nilai dari 1-1/2+1/3-1/4+...+1/n
    Jawab:
        a. Algoritma
            Deklarasi :
                hasil, total, a : float
                n                   : integer
            Deskripsi
                read(n)
                for i<=to n do
                    hasil <=0
                    total <=0
                    a <= -1
                    a <=(a*(-1))
                    total <=a/i
                    hasil <=hasil+total
                    if(i==1) then write total
                    else write "+" total
                end if
                end for
                write(hasil)
    
    b. Program
            #include <iostream>
            using namespace std;

            class hitung{
        friend ostream& operator<<(ostream&, const hitung&);
        friend istream& operator>>(istream&, hitung&);
            public:
        proses();
        float hasil;
            private:
        int n;
        float total, a;
            };

            hitung::proses(){
        hasil=0;
        total=0;
        a=-1;
        for(int i=1; i<=n; i++){
    a=a*(-1);
    total=a/i;
    hasil=hasil+total;
    if(i==1){
    cout<<"("<<total<<")";
    }
        }
            }

            istream& operator>>(istream& cin, hitung& masukan){
        cout<<"Masukkan nilai n : ";
        cin>>masukan.n;
        return cin;
            }

            ostream& operator<<(ostream& out, const hitung& keluaran){
        out<<" = "<<keluaran.hasil;
        return out;
            }

            int main(){
        hitung deret;
        cin>>deret;
        deret.proses();
        cout<<deret;
        return 0;
            }
            



WORKSHOP BAB 5
1. Buatlah translasi dalam bahasa C untuk algoritma mengkonversi nilai angka menjadi nilai huruf. Apakah diperlukan modifikasi algoritma?
Jawab:
Tidak perlu mengubah algoritma, hanya saja perlu mengubah sintak dasar cout menjadi printf dan cin menjadi scanf

a. Analisis : memasukkan integer angka dari 1 sampai 7, kemudian akan ditentukan hari apa yang sesuai

b. Algoritma
    Deklarasi :
        hari_ke : integer
        hari       : string

    Deskripsi
        read(hari_ke)
        pilih(hari_ke)untuk
            1 : hari <= "SENIN"
            2 : hari <= "SELASA"
            3: hari <= "RABU"
            4: hari <= "KAMIS"
            5: hari <= "JUMAT"
            6: hari <= "SABTU"
            7: hari <= "MINGGU"
        end pilih
        write(hasil)

c. Flowchart

d. Program
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>

    int main(){
int hari_ke;
char hari;
printf("--------------------");
printf("\n  MENENTUKAN HARI  ");
printf("\n--------------------");
printf("\nMasukkan hari ke-");
scanf("%d", &hari_ke);
printf("Hari ke- %d", hari_ke);
printf(" adalah %c", hari);
switch(hari_ke){
case 1 : hari=printf("SENIN"); break;
case 2 : hari=printf("SELASA"); break;
case 3 : hari=printf("RABU"); break;
case 4 : hari=printf("KAMIS"); break;
case 5 : hari=printf("JUMAT"); break;
case 6 : hari=printf("SABTU"); break;
case 7 : hari=printf("MINGGU"); break;
default : hari=printf("ERROR"); break;
}
return 0;
    }


2. Buatlah algoritma dan program untuk menghitung nilai dari permutasi dan ombinasi n buah bola yang diambil r bola
Jawab:
a. Program
    #include <iostream>
    using namespace std;

    int faktorial(int n){
    int i, jumlah=1;
    for(i=1; i<=n; i++){
    jumlah=jumlah*i;
    }
    return jumlah;
    }

    int main(){
int n, r ,a, permutasi, kombinasi;
cout<<"-------------------------------------------------"<<endl;
cout<<"  MENGHITUNG NILAI dari PERMUTASI dan KOMBINASI  "<<endl;
cout<<"-------------------------------------------------"<<endl;
cout<<"Masukkan nilai n : ";
cin>>n;
cout<<"Masukkan nilai r : ";
cin>>r;
a=n-r;
permutasi = faktorial(n) / faktorial(a);
kombinasi = faktorial(n) / faktorial(a) * faktorial(r);
cout<<"Hasil permutasi = "<<permutasi<<endl;
cout<<"Hasil kombinasi = "<<kombinasi<<endl;
return 0;
    }
  

Komentar