Selasa, 07 Januari 2020

LARIK/ARRAY

BAGIAN AWAL
Pree Test
1. Sebutkan perbedaan antara fungsi DO dan WHILE dalam struktur Kontrol pengulangan C/C++
2. Bagaimana instruksi WHILE dijalankan oleh program
3. Bagaimana instruksi DO dijalankan oleh program
4. Bagaimana instruksi DO-WHILE dijalankan oleh program
Jawab :
1. DO merupakan fungsi yang dilakukan ketika fungsi WHILE terpenuhi, sedangkan WHILE merupakan kondisi/syarat agar fungsi DO bisa dijalankan.
2. Instruksi WHILE digunakan ketika kondisi perulangan belum diketahui.
3. Instruksi DO dijalankan ketika kondisi WHILE terpenuhi.
4. DO-WHILE terlebih dahulu menjalankan intruksi lalu menjalankan kondisi pada fungsi WHILE, jika kondisi terpenuhi maka intruksi akan dijalankan lagi. Pada loop DO-WHILE paling tidak akan terjadi satu kali intruksi.


BAGIAN POKOK
A. Pembahasan
Variabel laarik atau biasa disebut array adalah tipe struktur yang terdiri dari sejumlah komponen yang sejenis, suatu array memiliki jumlah komponen yang tetap banyaknya komponen dalam suatu larik/array ditujukan oleh index untuk membedakan antara komponen yang satu dengan yang lainnya. Variable array dalam bahasa C/C++ dapat digolongkan menjadi 3 :
1. Array dimensi satu
2. Array dimensi dua
3. Array dimensi tiga
Dalam pemrograman : Array adalah variable sejenis yang berderet sedemikian rupa sehingga alamatnya saling bersambung dan berhubungan satu dengan yang lainnya.
1. Array dimensi satu
Diilusikan bahwa terdapat satu buah aray dengan dimensi satu dengan jumlah elemennya sebanyak 7 elemen.








Dari ilustrasi array diatas makan terdapat :
7 buah elemen
7 buah kolom
7 buah sel
Deklarasi array adalah tipe-data nama_variabel[jumlah elemen] contoh deklarasi array int A[7]. Dengan int adalah Tipe data A Nama array, dan [7] adalah Elemen array.
int A[7]

 A[0]    A[1]          A[2]          A[3]          A[4]         A[5]        A[6]







Untuk mengakses nilai array dapat dilihat berikut ini
Nama_array[index]
Untuk memberikan nilai pada array
2. Array dimensi dua
Ilustrasi array berdimensi lebih dari satu
Struktur array diatas mempuyai satu demensi, sehingga elemen arraynya disebut elemen array berdimensi satu, dan berikut ini akan dijelaskan tentang array berdimensi dua.
Sebagai contoh sebuauh matriks B berukuran 2x3 dapat didelarasikan sebagai berikut :
int n[2][3]={{2,4,1},{3,5,7,}}; yang akan mempunyai struktur sebagai berikut :
           0     1          2
2 4 1
3 5 7
0
1
Beberapa operasi pada array
Memperoleh bilangan terbesar
Mencari suatu data pada array
Megurutkan data

3. Array dimensi tiga
Larik/array tiga dimensi dapat dibayangkan sebgai kumpulan larik/array dua dimensi seperti diilusikan sebuah larik/array tiga dimensi yang terdiri atas empat baris, dua kolom dan tiga lapis :
Int a[4][2][3];//4 baris, 2 kolom, 3 lapis
Dimensi pertama untuk baris, dimensi kedua untuk kolom, dan dimensi ketiga untuk lapis. Kita akan mengentri data dilakukan selapis demi selapis dan pada suatu lapis dilakukan sebaris demi sebaris. Kita akan mengentri data larik selapis demi selapis dengan perintah for(i=0;i<3;i++) Pada masing masing lapis data dientri sebaris demi sebaris :
for(i=0;i<3;i++) // control lapis
for(b=0;b<4;b++) // control baris
Pada masing masing baris data dientri sekolom demi sekolom :
for(i=0;i<3;i++) // control lapis
for(i=0;i<3;i++) // control baris
for(i=0;i<3;i++) // control kolom
B. Praktikum
#include<iostream>
using namespace std;
int main(){
int bnda[2][8][8]={
{{0,1,1,1,1,1,0,0},
{0,1,0,0,0,1,0,0},
{0,1,0,0,0,1,0,0},
{1,1,1,1,1,1,1,0},
{1,1,0,0,0,0,1,0},
{1,1,0,0,0,0,1,0},
{1,1,0,0,0,0,1,0},
{0,0,0,0,0,0,0,0},
},
{{1,1,1,1,1,1,0,0},
{1,0,0,0,0,1,0,0},
{1,0,0,0,0,1,0,0},
{1,1,1,1,1,1,1,0},
{1,1,0,0,0,0,1,0},
{1,1,0,0,0,0,1,0},
{1,1,1,1,1,1,1,0},
{0,0,0,0,0,0,0,0}
}
};

int i,j,k;
for(i=0;i<2;i++){
for(j=0;j<8;j++){
for(k=0;k<8;k++){
if(bnda[i][j][k]==1)
cout<<'\xDB';
else
cout<<'\x20';

}cout<<endl;
}
}
return 0;
}
Hasil running

Dari hasil running diatas dapat dinyatakan bahwa int  [2][8][8] menjadi index lapis, kolom, dan baris yang angkanya dimasukan pada int I,j,k dengan menggunakan perintah for dan if then else yang bila if = 1 maka yang tampil semua angka 1 dan begitu juga nilai 0, dan \xDB menjadi output angka 1 dan \x20 menjadi output 0 yang kemudian membentuk huruf A dan B.
C. Latihan
1.
a. Saat dilakukan proses kompilasi tidak terjadi eror.


b. Saat dijankan program hanya menampilkan angka 0.

c. Untuk mengubah program menjadi dinamis hanya mengubah variable I dan j menjadi angaka 4.

Diubah menjadi :

Hasil running :


2. Sebelum diperbaiki
#include<iostream.h>
#include<conio.h>
int i,x;
int matriks_A [2][2],matriks_B [2][2],matriks_C [2][2]; char ulang;
main()
{
cout<<"\nPenjumlahan 2 matriks ordo2x2 \n\n"; do{
cout<<"\n%%%%%%%%%% PENGISIAN MATRIK A %%%%%%%%%%\n";
cout<<"\Data matriks A \n"; for (i=0;i<2;i+1)
{
for (x=0;x<2;x+2)
{
cout<<"["<<x<<"]["<<e<<"]" : ";
cin>>matriks_A[][];
}
}
cout<<"\n%%%%%%%%%% PENGISIAN MATRIK B %%%%%%%%%%\n";
cout<<"\Data matriks B \n"; for (i=0;i<2;i++)
{
for (x=0;x<2;x++)
{
cout<<"["<<i<<"]["<<x<<"]" : ";
cin>>matriks_B[][];
}
}
cout<<" ========\ HASIL PENJUMLAHAN A+B =======";
cout<<"\nMatriks A + Matriks B : "<<endl; for(i=0;i<2;i++)
{
for (x=0;x<2;x++)
{
matriks_C[][]=matriks_A[][] + matriks_B[][]; cout<<"\t"<<matriks_C[][];
}
cout<<endl;
}
cout<<"\n.++BILA INGIN MELAKUKAN PERHITUNGAN LAGI++.\n ";
cout<<"\nHitung lagi?[y/t]";cin>>lagi;
}while(lagi!='t');
cout<<"\n\nTerima kasih\n\n"<<break; getch();
}

Setelah diperbaiki :
#include<iostream>
#include<conio.h>
using namespace std;
int i,x;
int matriks_A [2][2],matriks_B [2]  [2],matriks_C [2][2]; char lagi;
main()
{
cout<<"\nPenjumlahan 2 matriks ordo2x2 \n\n"; do{
cout<<"\n%%%%%%%%%% PENGISIAN MATRIK A %%%%%%%%%%\n";
cout<<"Data matriks A \n"; for (i=0;i<2;i++)
{
for (x=0;x<2;x++)
{
cout<<"["<<i<<"]["<<x<<"] : ";
cin>>matriks_A[i][x];
}
}
cout<<"\n%%%%%%%%%% PENGISIAN MATRIK B %%%%%%%%%%\n";
cout<<"Data matriks B \n"; for (i=0;i<2;i++)
{
for (x=0;x<2;x++)
{
cout<<"["<<i<<"]["<<x<<"] : ";
cin>>matriks_B[i][x];
}
}
cout<<".++++++ HASIL PENJUMLAHAN A+B ++++++.";
cout<<"\nMatriks A + Matriks B : "<<endl; for(i=0;i<2;i++)
{
for (x=0;x<2;x++)
{
matriks_C[i][x]=matriks_A[i][x] + matriks_B[i][x]; cout<<"\t"<<matriks_C[i][x];
}
cout<<endl;
}
cout<<"\n.++BILA INGIN MELAKUKAN PERHITUNGAN LAGI++.\n ";
cout<<"\nHitung lagi?[y/t]";cin>>lagi;
}while(lagi!='t'); cout<<"\n\nTerima kasih\n\n"; getch();
}
Hasil runiing :

Dari hasil running diatas akan menghasilkan tampilan input atau output yang diinginkan sesuai inputan yang kita masukkan. Pada program tersebut kita hamya perlu menambah, mengurangi, dan merevisi jika ada yang salah atau eror.

D. Pos Test
1. Buatlah program untuk mengurutkan semua elemen array dari kecil ke besar
Pseudocode
Baca (data[6],I,j,k)
Cetak(“Program mengurutkan angka dari terkecil ke terbesar”)
For i=0 to 6 do
Cetak ("Input data ke-",(i+1),": ")
Masukan (data[i])
Endfor
Cetak ("Data sebelum diurutkan  : ")
For i=0 to 6 do
Cetak(‘data[i]’)(“ “)
For i=0 to 6 do
For j=0 to 6 do
if (data[i]>data[j])
k=data[i]
data[i]=data[j]
data[j]=k
Endif
Endfor
Endfor
For a=1 to 6 do
Cetak (data[i],” “)
Endfor
Selesai
Flowchart
Script C++
#include<iostream>
using namespace std;
int main()
{
int data[6];
int i,j,k;
cout<<"Program Mengurutkan Angka dari Terkecil ke Terbesar\n";
for(i=0;i<6;i++)
{
cout<<"Input Data Ke-"<<(i+1)<<" : ";
cin>>data[i];
}
cout<<"\nData Sebelum Diurutkan : \n";
for(i=0;i<6;i++)
{
cout<<data[i]<<" ";
}
cout<<"\n";

for(i=0;i<6;i++)
{
for(j=i+1;j<6;j++)
{
if(data[i]>data[j])
{
k=data[i];
data[i]=data[j];
data[j]=k;
}
}
}
cout<<"\nData setelah diurutkan : \n";
for(i=0;i<6;i++)
{
cout<<data[i]<<" ";
}
}
Hasil running :
Dari hasil running diatas ini menampilkan  program mengurutkan angka dari terkecil ke terbesar menggunakan larik/array. Ketika kita menjalankan program kita harus menginput angka angka
terlebih dahulu untuk diurutkan, setelah itu akan muncul output pengurutan dari terkecil ke terbesar.

2. Buatlah program untuk mengurutkan semua elemen array dari besar ke kecil
Pseudocode :
Baca (bil[6],I,j,k)
Cetak(“Program mengurutkan angka dari terkecil ke terbesar”)
For i=0 to 6 do
Cetak ("bilangan [",(i+1),"] : ")
Masukan (bil[i])
Endfor
Cetak (" sebelum diurutkan  : ")
For i=0 to 6 do
Cetak(‘bil[i]’)(“ “)
For i=0 to 6 do
For j=0 to 6 do
if (bil[i]<bil[j])
k=bil[i]
bil[i]=bil[j]
bil[j]=k
Endif
Endfor
Endfor
For a=1 to 6 do
Cetak (bil[i],” “)
Endfor
Selesai
Flowchart
Script C++
#include<iostream>
#include<conio.h>
using namespace std;
int main()
{
    int bil[6];
    int i,j,k;
    cout<<"Program Mengurutkan Angka dari Terbesar ke Terkecil\n";
    for(i=0;i<6;i++)
    {
        cout<<"bilangan ["<<i+1<<"] : ";
        cin>>bil[i];
    }
    cout<<"\nSebelum Diurutkan : \n";
    for(i=0;i<6;i++)
    {
        cout<<bil[i]<<" ";
    }
    getch();
    for(i=0;i<6;i++)
    {
        for(j=i+1;j<6;j++)
        {
            if(bil[i]<bil[j])
            {
                k=bil[i];
                bil[i]=bil[j];
                bil[j]=k;
            }
        }
    }
    cout<<"\n\nHasil Pengurutan : \n";
    for(i=0;i<6;i++)
    {
        cout<<bil[i]<<" ";
    }
    getch();
}
Hasil running :

Dari hasil running diatas, program ini sama dengan program pada no 1, akan tetapi mengurutkan dari terbesar ke terkecil. Kode programnya pun hampir sama dengan yang tadi Cuma berbeda tanda saja.

3. Buatlah program perkalian untuk matrik 2x3 dikalikan 3x3
Flowchart

Pseudocode
Baca (i,j)
Baca (p[2][3],q[3][3],r[3][3])
Cetak (“Data matriks A”)
For i=0 to 2 do
For j=0 to 3 do
Cetak ("[",i,"][",j,”] : ”)
Masukan (p[i][j])
Endfor
Endfor
Cetak (“Data matriks B”)
For i=0 to 3 do
For j=0 to 3 do Cetak ("[",i,"][",j,”] : ”)
Masukan (q[i][j])
Endfor
Endfor
Cetak (“HASIL PERKALIAN : ”)
For i=0 to 3 do For j=0 to 3 do
r[i][j]=p[i][j] * q[i][j]
Cetak (p[i][j]," ")
Endfor
Endfor
Selesai
Script C++
#include<iostream>
#include<conio.h>
using namespace std;
int i,j;
int p[2][3],q[3][3],r[3][3];
main()
{
cout<<"Data matriks A \n"; for (i=0;i<2;i++)
{
for (j=0;j<3;j++)
{
cout<<"["<<i<<"]["<<j<<"] : ";
cin>>p[i][j];
}
}
cout<<"Data matriks B \n";
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
{
cout<<"["<<i<<"]["<<j<<"] : ";
cin>>q[i][j];
}
}
cout<<"\nHASIL PERKALIAN : "<<endl;
for(i=0;i<3;i++)
{
for (j=0;j<3;j++)
{
r[i][j]=p[i][j] * q[i][j]; cout<<r[i][j]<<" ";
}
cout<<endl;
}
getch();
}
Hasil running :

Hasil program tersebut menampilkan matriks ber ordo 2x3 dan 3x3. Kia harus menginput terlebih dahulu angka angka kedalam matriksnya untuk membentuk suatu matriks yang diinginkan, baik matriks 2x3 ataupun matriks 3x3.

4. Buatlah program array dalam menambahkan elemen dan menghitung jumlah serta rata-rata nilai elemen array
Flowchart

Pseudocode :
Baca (i,n,nilai[10])
Baca (rata, total=0)
Cetak (“Masukan jumlah data : ”) Masukan (n)
For i=0 to n do
Cetak (" Nilai ke-",(i+1),": ")
Masukan (nilai[n])
total=total+nilai[n]
Endfor
rata=total / n
Cetak (" Nilai total :",total)
Cetak (" Rata-rata :",rata)
Selesai
Script C++
#include <iostream>
#include <conio.h>
using namespace std;
int main ()
{
    int i,n,nilai[10];
    float rata,total=0;
    cout<<" Masukan jumlah data :"; cin>>n;
    for (i=0; i<n; i++)
    {
        cout<<" Nilai ke-"<<(i+1)<<": ";
        cin>>nilai[n];
        total=total+nilai[n];
    }
    rata = total/n;
    cout<<" Nilai total :"<<total<<endl;
    cout<<" Rata-rata :"<<rata;
    getch();
}
Hasil running

Hasil running program ini menampilkan sebuah hitungan rata-rata menggunakan aray. Kita tinggal memasukkan nilai yang akan dirata-ratakan pada ‘masukan jumlah data’ dan masukan nilai atau angka di bagian ‘Nilai ke-’

E. Tugas Mandiri
1. Buatlah program dengan tampilan contoh sebgai berikut :
Pseudocode
Baca (p,q)
Baca (nilai[10],r,jml)
Baca (rata,total)
Cetak ("Jumlah nilai yang dimasukan : ") Masukan (r)
For q=1 to r  do
Cetak (“Nilai ke-”,q,”= ”)
Masukan (nilai[q]) Total=total+nilai[q]
Endfor
Rata=total/r
Cetak (“Frekuensi nilai yang dimasukan adalah : ”)
For p=1 to r do
Jml=0
For q=1 to r do
If (nilai[p]=nilai[q])
Jml++
Endif
Endfor
If (nilai[p]!=nilai[p-1])
Cetak (“Nilai ”,nilai[p],”= ”,jml,” siswa”)
Endfor
Cetak(“Nilai rata-rata = ”,rata)
Selesai
Flowchart

Script C++
#include <iostream>
#include <conio.h>
using namespace std;
int main ()
{
    int p,q;
    int nilai[10],r,jml;
    float rata,total;
    cout<<"Jumlah nilai yang dimasukan : "; cin>>r;
    for (q=1;q<=r;q++)
    {
        cout<<"Nilai ke-"<<q<<"= ";
        cin>>nilai[q];
        total=total+nilai[q];
    }
    rata=total/r;
    cout<<"Frekuensi nilai yang dimasukkan adalah :"<<endl;
    for (p=1;p<=r;p++)
    {
        jml=0;
        for (q=1;q<=r;q++)
        {
            if (nilai[p]==nilai[q])
            jml++;
        }
        if (nilai[q]!=nilai[p-1])
        cout<<"Nilai "<<nilai[p]<<"= "<<jml<<" Siswa"<<endl;
    }
    cout<<"Nilai rata-rata = "<<rata;
    getch();
}
Hasil running

Program ini menampilkan masukan/inputan nilai dari siswa, dan menentukan berapa siswa yang mendapatkan nilai tersebut. Selain itu, program juga menampilkan  nilai rata rata dari jumlah nilai  siswa.




2. Buatlah program menggunakan array dimensi 3 dallam membuat tampilan 3 dimensi berbentuk benda
Flowchart

Pseudocode ;
Baca (benda[2][8][20]={
{{0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0},
{0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0},
{0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0},
{0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0},
{0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0}
},
{{0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0},
{0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0},
{0,0,0,1,0,0,1,0,0,1,1,1,0,0,0,1,0,0,0,0},
{0,0,0,1,0,0,1,0,0,1,1,1,0,0,0,1,0,0,0,0},
{0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,1,0,0,0,0},
{0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,1,0,0,0,0},
{0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,1,0,0,0,0},
{0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0}
}
})
Baca (p,q,r)
for p=0 to 2 do
for q=0 to 8 do
for r=0 to 20 do
if (benda[p]q][r]=1)
Cetak ('\xDB')
else
Cetak ('\x20')
Endfor
Endfor
Endfof
Selesai

Script C++
#include <iostream>
#include <conio.h>
using namespace std;
int main (){
int benda[2][8][20]={
{{0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0},
{0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0},
{0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0},
{0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0},
{0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0}
},
{{0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0},
{0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0},
{0,0,0,1,0,0,1,0,0,1,1,1,0,0,0,1,0,0,0,0},
{0,0,0,1,0,0,1,0,0,1,1,1,0,0,0,1,0,0,0,0},
{0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,1,0,0,0,0},
{0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,1,0,0,0,0},
{0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,1,0,0,0,0},
{0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0}
}
};
int p,q,r;
for (p=0;p<2;p++)
    {
        for (q=0;q<8;q++)
        {
            for (r=0;r<20;r++)
            if (benda[p][q][r]==1)
            cout<<'\xDB';
            else
            cout<<'\x20'; cout<<endl;
        }
    }
    getch();
}


Hasil running


dari hasilrunning diatas sama seperti pada praktikum sebelumnya yang dimana \xDB untuk output 1 dan \x20 menjadi output 0. Yang kemudian dengab sedemikian rupa membentuk rumah.

BAGIAN AKHIR
Kesimpulan
Dari praktikum ini saya dapatmengetahui fungsi fungsi dari larik/array. Pada praktikum ini juga saya mengenal bagaimana caranya membentuk matriks berordo 2x3 dan 3x3. Saya juga dapat medapatkan lebih banyak lagi bahasa pemrograman pada C/C++ dan saya dari praktikum iini juga dapat menambahkan skill saya dalam mengcoding di bahasa C/C++.