PERTEMUAN 7
VARIABEL ARRAY
SIGIT WASISTA
PENS (www.pens.ac.id)
ethol.pens.ac.id
2021
MOTIVASI
• Penggunaan variabel sebelumnya adalah
menggunakan nama tunggal sehingga satu nama
hanya berisi satu data, hal tersebut akan tidak
mendukung pengembangan pemrograman yang
melibatkan banyak data, penyelesaiannya adalah
menggunakan variabel array, dimana satu nama
variabel dapat menyimpan banyak data.
VARIABEL ARRAY
• TUJUAN:
• Mempelajari penggunaan variable array satu dimensi, dua
dimensi, tiga dimensi, array tak berukuran dan parameter
array.
• TEORI:
• Suatu array adalah kumpulan dari beberapa nilai yang
mempunyai tipe yang sama, misalkan integer semua, float
semua dan sebagainya.
• Untuk membedakan antara nilai satu dengan lainnya
digunakan suatu subscritpt, yang sering disebut index.
• Suatu variable array dapat digunakan untuk menyimpan
beberapa nilai dengan tipe sama, contohnya variable
bilangan[n], maka dapat menyimpan beberapa nilai dengan
index mulai 0 sampai n-1 yaitu bilangan[0], bilangan[1], …
bilangan[n-1]. Nilai subscript dapat berupa konstanta,
variabel dan ekspresi integer.
DEKLARASI VARIABEL ARRAY
#include <stdio.h>
#include <conio.h> Mendeklarasikan 10 indeks
int main()
{
int nilai[10];
int indeks;
nilai[0]=197;
nilai[2]=-100;
nilai[5]=350;
nilai[3]=nilai[0]+nilai[5];
nilai[9]=nilai[5]/10;
--nilai[2];
for (indeks=0; indeks<10; ++indeks)
printf("nilai[%d] = %d\n", indeks, nilai[indeks]);
}
DERET FIBONANCI
#include <stdio.h>
int main() i=0 i=1 i=2 i=3 i=4
{
int fibo[100], i, jumlah;
0 1 1 2 3
fibo[0] = 0;
fibo[1] = 1;
#include <stdio.h>
int main()
{
static int nilai_nilai[10]={0, 1, 4, 9, 16};
/* nilai lainnya diisi nol dengan sendirinya */
int i;
for (i=0; i<10; i++)
printf("nilai_nilai[%d] = %d\n", i, nilai_nilai[i]);
getch();
}
FUNGSI MENENTUKAN NILAI MAKSIMUM
DARI SEJUMLAH DERET BILANGAN
#include <stdio.h>
int findmax(int[], int);
int main()
{
static int data1[] = { 5, 34, 56, -12, 3, 19 };
static int data2[] = { 1, -2, 34, 207, 93, -12 };
terbesar = nilai[0];
for(i = 1; i < jml_data; ++i )
if(nilai[i] > terbesar) terbesar = nilai[i];
return terbesar;
}
MENCETAK HURUF A DENGAN POLA
KARAKTER TERTENTU MENJADI 8X
#include <stdio.h>
int main()
{
int i,j;
static int A[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},
{0,0,0,0,0,0,0,0}};
for (i=0; i<8; i++) {
for (j=0; j<8; j++)
if(A[i][j]) putchar('\xDB'); else putchar(' ');
puts("");
}
}
MENCETAK HURUF A & B DENGAN POLA
KARAKTER TERTENTU MENJADI 8X
int main()
{ /* Tampilkan huruf */
int i,j,k;
for (i=0; i<2; i++) {
static int data_huruf[2][8][8]={
for (j=0; j<8; j++) {
{{0,1,1,1,1,1,0,0},
for (k=0; k<8; k++)
{0,1,0,0,0,1,0,0},
if (data_huruf[i][j][k])
{0,1,0,0,0,1,0,0},
putchar('\xDB');
{1,1,1,1,1,1,1,0},
{1,1,0,0,0,0,1,0}, else
{1,1,0,0,0,0,1,0}, putchar(' ');
{1,1,0,0,0,0,1,0}, puts("");
{0,0,0,0,0,0,0,0} }
}, puts("");
{{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}}
};
KONVERSI DASAR BILANGAN DESIMAL
int main()
{
static char digit_dasar[16] = {
'0','1','2','3','4','5','6','7','8','9',
'A','B','C','D','E','F');
int konversi[64];
long int bilangan;
int digit_ke, dasar, indeks=0;
printf("Bilangan yang dikonversikan : ");
scanf("%ld", &bilangan);
printf("Dasar bilangan : ");
scanf("%d", &dasar);
do {
konversi[indeks]=bilangan % dasar;
++indeks;
bilangan/=dasar;
} while (bilangan!=0);
printf("Angka konversi : ");
for (--indeks; indeks>=0; --indeks) {
digit_ke=konversi[indeks];
printf("%c", digit_dasar[digit_ke]);
}
}
TUGAS-7.1
• Diketahui tabel angka sbb:
1 2 3 4 5 6 7 8
7 8 4 2 9 3 1 6
Max=46349
i=2
P(i)=0
J=i*i
P(j)=1
J=j+i
J<max
PROGRAM BILANGAN PRIMA
ALGORITMA SIEVE OF ERASTOSTHENES
#include<stdio.h>
for(i=2;i<MAX;i++) {
1 1 1 1 1 1 1 1 1 1
if(P[i]==0)
for(j=i*i;j<MAX;j+=i) { P[j]=1;
}
}
0 1 2 3 4 5 6 7 8 9
for(i=2;i<MAX;i++) {
1 0 1 0 1 1 1 0 1 0
if(P[i]==0)
printf("%8d",i);
}
}
BUJURSANGKAR AJAIB
(ORDO GANJIL)
8 1 6 17 24 1 8 15
(0,2)
(0,0) (0,1) (0,2)
23 5 7 14 16
3 5 7 4 6 13 20 22
(1,0) (1,1) (1,2)
10 12 19 21 3
4 9 2 (3,4)
(2,0) (2,1) (2,2) 11 18 25 2 9
(4,3)
FLOWCHART BUJURSANGKAR AJAIB
START
Ordo = ?
Validasi: N
Ordo harus Ordo>=3 and Ordo <=19
Antara 3 s/d 19
Dan ganjil
Y
Ordo % 2 != 0
Y
A
A B
Tengah=Ordo/2
baris=0 Y
kolom=Tengah baris<0 baris=ordo-1
Angka=1
Ajaib[baris][kolom]=Angka Y
kolom=ordo Kolom=0
Baris--
Kolom++
Angka++ Angka>ordo
B
ORDO 7X7
30 39 48 1(0,3) 10 19 28
38 47 7 9 18 27 29
46 6 8 17 26 35 37
5 14 16 25 34 36 45
13 15 24 33 42 44 4
21 23 32 41 43 3 12
22 31 40 49 2 11 20
ORDO 9X9
47 58 69 80 1 12 23 34 45
57 68 79 9 11 22 33 44 46
67 78 8 10 21 32 43 54 56
77 7 18 20 31 42 53 55 66
6 17 19 30 41 52 63 65 76
16 27 29 40 51 62 64 75 5
26 28 39 50 61 72 74 4 15
36 38 49 60 71 73 3 14 25
37 48 59 70 81 2 13 24 35
TUGAS-7.4
• Buatlah program untuk mengisi bujursangkar ajaib
dibawah ini:
• Masukkan Ordo: 3
Ordo 5x5
8 1 6
17 24 1 8 15
3 5 7
23 5 7 14 16
4 9 2 4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
TUGAS-7.5
MENGHITUNG NAMA HARI
Buatlah program untuk menentukan nama hari, menggunakan formula dan tabel seperti dibawah
ini:
Formula:
Kode Hari = (Tanggal + Kode Bulan + Tahun + Tahun/4 ) % 7
Tabel Kode Bulan:
Jan Feb Mar Apr Mei Jun Jul Agt Sep Okt Nop Des
1/0 4/3 4 0 2 5 0 3 6 1 4 6
Contoh tampilan:
Input:
Masukkan tanggal (dd-mm-yy) : 17-08-45
Output:
Tanggal tersebut adalah hari Jumat.
CONTOH:
• 17-08-45
• 17 + 03 + 45 + 11 = 76 % 7 = 6
• 6 => Hari Jumat
• 17-12-89
• Karena Hesti tidak dirumah,
• Saya ambil cucian ke rumah Susi.
• Karena materi sudah semuah,
• Maka cukup sekian dan terimakasi...^_^
TERIMA KASIH
• Semoga kita diberi oleh Allah SWT ampunan,
perlindungan keselamatan, kesehatan badan, ilmu yang
bermanfaat dan rejeki yang barakah,
• Sampai jumpa dipekan depan, dalam link Zoom yang
sama,
• Wassalamualaikum Warahmatullahi Wabarakatuh.