A. Pengenalan Array dan String
Array merupakan koleksi data dimana setiap elemen memakai nama dan tipe yang sama serta setiap elemen diakses dengan membedakan indeks array-nya. Berikut adalah contoh variable bernama c yang mempunyai lokasi memori yang semuanya bertipe int.
C[0] -45C[1] 6
C[2] 0
C[3] 72
C[4] 1543
C[5] 43
C[6] 4
Masing-masing nilai dalam setiap lokasi mempunyai identitas berupa nama c dan nomor indeks yang dituliskan di dalam tanda kurung ‘[..]’. sebagai contoh, 72 adalah nilai dari c[3].
Deklarasi ArrayVariable array dideklarasikan dengan mencantumkan tipe dan nama variable yang diikuti dengan banyaknya lokasi memori yang ingin dibuat. Dengan demikian, deklarasi untuk variable array c di atas adalah :
int c[7];
Perlu diperhatikan bahwa C++ secara otomatis menyediakan lokasi memori yang sesuai dengan yang dideklarasikan, dimana nomor indeks selalu dimulai dari 0. Nilai suatu variable array dapat juga diinisialisasi secara langsung pada saat deklarasi, misalnya;
Int c[7] = {-45, 0, 6, 72, 1543, 43, 4}
Berarti setiap lokasi memori dari variable array c langsung diisi dengan nilai-nilai yang dituliskan didalam tanda kurung kurawal.
Banyaknya lokasi memori dapat secara otomatis disediakan sesuai degan banyaknya nilai yang akan dimasukkan, seperti contoh berikut yang tentunya membuat variable array dengan 10 lokasi memori:
Int x []={10, 15 12, 5, 13, 9, 6, 17, 25, 31};
Untuk memperjelas gambaran anda tentang array perhatikan contoh aplikasi variable array, yaitu program untuk menghitung jumlah setiap elemen dalam suatu array.
Sebagai gambaran dari program tersebut, dapat dibuat sebuah algoritma sebagai berikut:
- Tentukan elemen array sebanyak yang diinginkan (dalam hal ini, elemen array tersebut berjumlah 12 buah)
- Tentukan nilai awal indeks, batas akhir indeks dan kenaikannya (dalam hal ini, nilai awal indeks adalah 0, batas akhir indeks adalah jumlah elemen array diatas yaitu 12 dikurangi dengan 1, kenaikannya adalah 1)
- Lakukan perulangan sesuai dengan langkah 2
- Lakukan penjumlahan masing-masing elemen array sampai batas akhir indeks terpenuhi
- Tampilkan penjumlahan semua elemen array
- Selesai.
Contoh Program array
/*Program :array1.cpp*/
#include
#define SIZE 12
main()
{
int a[SIZE]={1, 3, 5, 4, 7, 2, 99, 16, 45, 67, 89, 45};
int indeks, total =0;
for(indeks=0; indeks<=SIZE-1; indeks++)
total += a[indeks];
printf(“nTotal setiap elemen array adalah %d”,total);
return 0;
}
Bila program diatas dijalankan, akan muncul hasil :
Total setiap elemen array adalah 383
Adapun keterangan dari program diatas adalah sebagai berikut :
Hasil penjumlahan setiap elemen array diperoleh dari jumlah data atau elemen array sebanyak 12 buah yang sudah didefinisikan pada awal program yaitu #define SIZE 12. Kemudian setiap elemen array dari a[0] yang berisi data, a[1] yang berisi data 3 di jumlahkan sampai dengan a[11] yang berisi data 45. Proses penjumlahan dilakukan pada loop dimulai dari 0 sampai data yang terakhir atau elemen terakhir.
Array Dimensi Satu
Bentuknya :
Tipe nama_var[ukuran];
Dengan :
Tipe : menyatakan jenis elemen array (int, char, unsigned, dan lain-lain)
Ukuran : menyatakan jumlah maksimal elemen array
Contoh :
Float nilai_ujian[5];
Pada turbo C++ array disimpan dalam memori secara berurutan. Elemen pertama berindeks nol digambarkan sebagai berikut :
Nilai_ujian[0]
Nilai_ujian[1]
Nilai_ujian[2]
Nilai_ujian[3]
Nilai_ujian[4]
Masing-masing berbentuk float dan berjumlah 5 elemen.
Selain itu, deklarasi array juga dapat berupa :
Static int bulan[12]={1,2,3,4,5,6,7,8,9,10,11,12}
Sesuai dengan deklarasi array diatas, maka isi variable array telah ditentukan yaitu :
Bulan[0] bernilai 1
Bulan[1] bernilai 2
Bulan[2] bernilai 3
Bulan[3] bernilai 4
Bulan[4] bernilai 5
Bulan[5] bernilai 6
Bulan[6] bernilai 7
Bulan[7] bernilai 8
Bulan[8] bernilai 9
Bulan[9] bernilai 10
Bulan[10] bernilai 11
Bulan[11] bernilai 12
Untuk memperjelas tentang array dimensi satu, perhatikan maslah berikut ini :
Misalkan Anda diminta membuat algoritma dan program untuk menampilkan bilangan dari 1 sampai bilangan 10, dengan pangkatnya masing-masing. Adapun batas nilai maksimal yang disimpan adalah 100.
Sesuai yang telah Anda pelajari , bahwa bilangan 1 pangkatnya adalah 1. Hasil ini diperoleh dari 1*1, kemudian bilangan 2 pangkatnya adalah 4, hasil ini diperoleh dari 2*2 sampai bilangan 10 yang pangkatnya adalah 100, hasil ini diperoleh dari 10*10.
Algoritma dari permasalahan diatas adalah berikut ini :
1. Tentukan elemen array untuk menampung nilai perkalian
2. Tentukan nilai awal indeks, batas akhir indeks dan kenaikannya (dalam hal ini , nilai awal indeks adalah 0, batas akhir indeks adalah 10, dan kenaikannya adalah 1)
3. Lakukan perulangan sesuai langkah 2
4. Nilai awal indeks ditambah dengan 1
5. Lakukan perkalian masing-masing elemen array sampai batas akhir indeks terpenuhi.
6. Tampilkan perkalian semua elemen array
7. Selesai .
Contoh program array dimensi satu
/*Program :array2.cpp*/
#include
int main()
{
int square[100];
int i; /*loop index*/;
int k; /*the integer*/
/*calculate the squares */
for (i=0; i<10; i++)
{
k= i+1;
square[i]=k*k;
printf(“nPangkat dari %d adalah %d “, k, square[i]);
}
return 0;
}
Bila program dijalankan akan muncul hasil :
Pangkat dari 1 adalah 1
Pangkat dari 2 adalah 4
Pangkat dari 3 adalah 9
Pangkat dari 4 adalah 16
Pangkat dari 5 adalah 25
Pangkat dari 6 adalah 36
Pangkat dari 7 adalah 49
Pangkat dari 8 adalah 64
Pangkat dari 9 adalah 81
Pangkat dari 10 adalah 100
Penjelasan :
Dari program diatas, Anda dapat melihat ada 10 buah elemen yang masing-masing nilainya akan dipangkatkan, mulai dari 1 sampai 10. Dimana dalam memori sudah dipesan tempat sebanyak 100.
Sedangkan apabila array akan dikirim ke sebuah fungsi caranya adalah hanya dengan mencantumkan nama array tanpa diikuti dengan tanda apapun, seperti contoh berikut :
int c[5] = {-45, 0, 6, 72, 1543};
—
—
JUMLAH (c, 5)
—-
Dalam contoh diatas, yang memanggil fungsi JUMLAH dengan mengirimkan argument berupa variable array c dan sebuah konstanta 5. Perhatikan bahwa variable array ditulis hanya c tanpa notasi tambahan apapun. Deklarasi variable array yang menjadi parameter dari suatu fungsi dituliskan dengan nama variable array yang diikuti dengan tanda kurung [], tanpa menuliskan banyaknya lokasi memori yang diinginkan.
ARRAY DIMENSI DUA
Struktur array yang dibahas diatas mempunyai satu dimensi, sehingga variabelnya disebut variable array berdimensi satu. Pada bagian ini ditunjukkan array berdimensi lebih dari satu, yang sering disebut dengan array berdimensi dua.
Sebagai contoh, sebuah matrik B berukuran 2 X 3 dapat dideklarasikan dalam C seperti berikut : int B[2][3] = {[2, 4, 1}, {5, 3, 7}}; yang menempati lokasi memori dengan susunan sebagai berikut :
0 1 2
0 2 4 1
1 5 3 7
Dan definisi variable untuk setiap elemen tersebut adalah :
0 1 2
0 b[0][0] b[0][1] b[0][2]
1 b[1][0] b[1][1] b[1][2]
Sebagai implementasi dari keterangan diatas, perhatikan program berikut ini :
Contoh Program array dimensi dua
/*Program :array2.cpp*/
#include
void printArray(int[][3]);
main()
{ int matrik1[2][3] = {{1, 2, 3},{4, 5, 6}};
int matrik2[2][3] = {1, 2, 3, 4, 5};
int matrik3[2][3] = {{1, 2},{4}};
printArray (matrik1);
printArray (matrik2);
printArray (matrik3);
return 0; }
void printArray (int a[][3])
{ int i,j;
for (i=0; i<=1; i++)
{ for (j=0; j<=2; j++)
printf(“%d”,a[i][j]);;
printf(“n”);
}
}
Bila program diatas dijalankan, akan mucul hasil :
123
456
123
450
120
400
Penjelasan :
Dari program diatas untuk matrik 1, penulisannya adalah 123 456, sedangkan pada matrik 2 penulisannya adalah 123 450. 0 disini mempunyai arti tempat yang disediakan untuk data kolom ke 3 dan baris ke 2 tidak diisi. Sedangkan matrik 3 penulisannya adalah 120 400. Dari matrik 3 disini kita bisa melihat bahwa pada baris pertama kolom ketiga data tidak diisi dan dianggap 0 dan pada baris kedua kolom kedua dan ketiga juga tidak diisi juga diisi 0.
Dalam program tersebut, juga digunakan fungsi untuk menampung hasil penjumlahan matrik.
Perhatikan contoh lain :
Int datasiswa[4][3];
Deklarasi diatas digunakan untuk mendeklarasikan suatu data siswa yang berbentuk demikian :
No Nama Kelas Jumlah Siswa
Tahun 1989 Tahun 1990 Tahun 1991
1 Kelas 1 50 55 49
2 Kelas 2 60 60 55
3 Kelas 3 56 56 56
4 Kelas 4 49 50 54
Dari deklarasi diatas maka angka empat [4] menyatakan jumlah kelas, dan angka indek [3] menyatakan tahun.
Data siswa [0][2] adalah Kelas 1 dan jumlah siswa tahun 1990 yaitu 55. Atau jumlah siswa kelas 1 pada tahun 1990 adalah 55.
Bentuk data siswa dapat juga digambarkan sebagai berikut :
1 2 3
1 50 55 49
2 60 60 55
3 56 56 56
4 49 50 54
Array ini dapat pula diberi nilai tetap dengan static seperti pada array dimensi satu. Deklarasinya adalah sebagai berikut :
Static int jumlah [4][3]=
{
50, 55, 49,
60, 60, 55,
56, 56, 56,
49, 50, 54
};
ARRAY DIMENSI BANYAK
Array ini seperti array dimensi dua tetapi dapat memiliki ukuran yang lebih besar. Sebenarnya array dimensi banyak ini tidak terlalu sering digunakan, tetapi sewaktu-waktu kalau dimensi yang dibutuhkan banyak, maka array ini sangat memegang peranan yang penting.
Contoh dengan menggunakan array dan string
uses wincrt;var x : array[1..3] of string;
a : integer;
beginfor a := 1 to 3 do begin
write('input ', a, ' : ');
readln(x[a]);
end;
writeln;
write('output : ');
for a := 1 to 3 do
write(x[a],' ');
end. Contoh menyimpan bilangan genap dalam suatu array uses wincrt;var genap : array[1..100] of integer;
a, b, jum : integer;
begina := 0;
b := 2;
write('Jumlah bilangan genap : ');readln(jum);
while a <> jum do begin
inc(a);
genap[a] := b;b := b + 2;
end;
writeln;
writeln('Hasil yang disimpan di array : ');
for b := 1 to jum do
writeln('Bilangan genap ke-',b,' : ',genap[b]);
end. B. ITERAKTIF & REKURSIF
#include <stdio.h>
#include <conio.h>
int Perkalian(int bilangan1, int bilangan2)
{
int pro=0;
for (int i=bilangan2;i>=1;i–)
{
pro+=bilangan1;
}
return (pro);
}
int main(void)
{
int x,y,N;
scanf(“%d %d”,&x,&y);
N = Perkalian(x,y);
printf(“Hasil : %d”,N);
getch();
return (0);
}
Rekursif merupakan sebuah proses yang terjadi apabila dalam sebuah fungsi terdapat sebuah instruksi yang memanggil (calling) fungsi itu sendiri.
Contoh program:
#include<stdio.h>
void hitung(int n);
main()
{
int N, fact;
scanf(“%i”, &N);
fact= hitung(N);
printf(“%i”, fact);
}
void hitung()
{
int x,y;
if(n==0);
return(1);
x=n-1;
y=hitung(x);
return(n*y);
}
Perbedaan dan Persamaan Rekursif dan Iteratif :
a. Persamaan
Sama-sama merupakan bentuk perulangan.
Dilakukan pengecekan kondisi terlebih dahulu sebelum mengulang.
b. Perbedaan
1) Iteratif menggunakan FOR, WHILE, DO-WHILE sedangkan rekursif hanya menggunakan IF.
Kelebihan metode rekursif:
Solusi sangatlah efisien.
Dapat memecahkan masalah yang sulit dengan tahapan yang mudah dan singkat.
Kekurangan metode rekursif:
Sulit dipahami.
Perlu stack besar (stack overflow).
Manfaat Fungsi Rekursif Pada C++
Pada pembahasan-pembahasan sebelumnya, telah dibahas tentang fungsi. Tapi pada saat saya presentasi ada sebuah pertanyaan “Apa saja manfaat menggunakan Fungsi Rekursi?”. Karena saya hanya tahu manfaat fungsi tapi bukan fungsi rekursif saya mencoba menjawabnya. dan jawaban saya adalah “Karena fungsi rekursi ini mirip dengan perulangan, jadi kelebihan/manfaatnya yaitu pada penghematan penulisan listing program jika dibandingkan dengan looping/perulangan”.
Tapi setelah cari-cari akhirnya saya mendapatkan manfaat fungsi rekursif serta perbandingannya dengan looping/perulangan:
REKURSIF ITERATIF
Perulangan rekursif merupakan salah satu metode didalam pemrograman yang mana dalam sebuah fungsi terdapat intruksi yang memanggil fungsi itu sendri, atau lebih sering disebut memanggil dirinya sendiri. Perulangan iteratif merupakan perulangan yang melakukan proses perulangan terhadap sekelompok intruksi. Perulangan dilakukan dalam batasan syarat tertentu. Ketika syarat tersebut tidak terpenuhi lagi maka perulangan aka terhenti.
Kelebihan perulangan rekursif
Sangat mudah untuk melakukan perulangan dengan batasan yang luas dalam artian melakukan perulangan dalam skala yang besar
Dapat melakukan perulangan dengan batasan fungsi
Kelebihan perulangan iteratif
Mudah dipahami dan mudah dilakukan debuging ketika ada perulangan yang salah
Dapat melakukan nested loop atau yang disebut dengan looping bersarang
Proses lebih singkat karena perulangan terjadi pada kondisi yang telah disesuaikan
Jarang terjadi overflow karena batasan dan syarat perulangan yang jelas
Kekurangan perulangan rekursif
Tidak bisa melakukan nested loop atau looping bersarang
Biasanya membuat fungsi sulit untuk dipahami, hanya cocok untuk persoalan tertentu saja
Memerlukan stack yang lebih besar, sebab setiap kali fungsi dipanggil, variabel lokal dan parameter formal akan ditempatkan ke stack dan ada kalaya akan menyebabkan stack tak cukup lagi (Stack Overum)
Proses agak berbelit-belit karena terdapat pemangilan fungsi yang berulang-ulang dan pemanggilan data yang ditumpuk
Kelemahan perulangan iterative
Tidak dapat menggunakan batasan berupa fungsi
Perulangan dengan batasan yang luas akan menyulitkan dalam pembuatan program perulangan itu sendiri
Perbedaan dan Persamaan Rekursif dan Iteratif :
Persamaan
- Sama-sama merupakan bentuk perulangan.
- Dilakukan pengecekan kondisi terlebih dahulu sebelum mengulang.
Perbedaan
- Iteratif menggunakan FOR, WHILE, DO-WHILE sedangkan rekursif hanya menggunakan IF.
- Iteratif dapat berjalan pada program yang terdiri dari prosedur (Tidak terdapat fungsi) sedangkan rekursif merupakan fungsi.
Best Casino | Oklahomacasinoguru
BalasHapusBest online 룰렛사이트 casino, sports 룰렛 배당 betting and 맥스 벳 slots games. The casino is located in the suburb 일본 야구 분석 사이트 of Kingston, Ontario. dafabet It has been on the