Anda di halaman 1dari 26

PEMROGRAMAN DASAR I

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;

printf("Masukkan jumlah deret fibonanci = ");


scanf("%d",&jumlah);
for(i=2; i < jumlah; i++) {
fibo[i] = fibo[i-1] + fibo[i-2];
printf("%5d", fibo[i]);
}
printf("\n\n");
}
TIPE VARIABEL STATIC

#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 };

printf("nilai maksimum dari data1[] adalah %d\n",


findmax(data1, 6));
printf("nilai maksimum dari data2[] adalah %d\n", Passing parameter
findmax(data2, 6)); Menggunakan array
}
int findmax(int nilai[], int jml_data)
{
int terbesar, i;

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

• Buatlah program untuk menyimpan dan menampilkan data tersebut


• Tampilkan angka genap saja
• Tampilkan angka terbesar
• Tampilkan urut dari kecil
• Tampilkan rata2-nya
• Tampilkan nilai tengahnya
TUGAS-7.2

• Buatlah program untuk mengurutkan data


dengan urutan naik (ascending) yang dimasukan
melalui keyboard. Program juga menanyakan
banyaknya data yang dimasukkan.
• Input : jumlah data (n), data ke-1 s/d data ke-n,
• Output : Tampilan data dalam keadaan terurut.
TUGAS-7.3
(BILANGAN PRIMA)
• Bilangan prima juga dapat dihasilkan dengan suatu algoritma yang dikenal sebagai
Sieve of Erastosthenes. Buatlah program untuk mengimplementasikan algoritma
tersebut.
• Algoritma Sieve of Erastosthenes, untuk menampilkan semua bilangan prima antara
1 sampai n.
• Langkah 1: Definisikan suatu array P untuk bilangan bulat. Set semua elemen
menjadi 0, yaitu array berindeks dari 0 sampai n.
• Langkah 2: Set i sama dengan 2.
• Langkah 3: Bila i>n, algoritma selesai.
• Langkah 4: Bila Pi adalah nol, maka i adalah bilangan prima.
• Langkah 5: Untuk semua nilai bulat positif j, yaitu i x j<n, set Pi x j menjadi 1.
• Langkah 6: Tambahkan 1 pada i dan lanjutkan ke Langkah 3.
Start

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>

#define MAX 46349


0 1 2 3 4 5 6 7 8 9
void main()
0 0 0 0 1 0 1 0 1 1
{
static int P[MAX];
long int i,j;

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

Tabel Kode Hari:


0 1 2 3 4 5 6
Sabtu Minggu Senin Selasa Rabu Kamis Jumat

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

• 28-05-88 Sabtu Legi


• 28 + 02 + 88 + 22 = 140 % 7 = 0
RINGKASAN
• Telah dipelajari:
• Penggunaan variable array
• Satu dimensi, dua dimensi, tiga dimensi,
• array tak berukuran dan parameter array,
• Deklarasi variabel array,
• Variabel static.
SEKIAN DAN TERIMA KASIH

• 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.

Anda mungkin juga menyukai