Modul Algoritma Dan Pemrograman 2
Modul Algoritma Dan Pemrograman 2
Kata Pengantar
Selaga puji kepada Tuhan Yang Maha Esa, sehingga modul praktikum algoritma dan
pemrograman 2 dapat diselesaikan. Modul ini dibuat sebagai petunjuk praktikum
kepada mahasiswa yang megambil mata kuliah algoritma dan pemrograman 2 pada
Program Studi Teknik Informatika STITEK Bontang. Hasil dari dari praktikum
diharapkan mahasiswa mampu memahami algoritma dan dapat
mengimplemntasikannya dalam bentuk bahasa pemrograman.
Tim penyusun berterima kasih kepada semua pihak yang telah membantu dalam
penyelesaian modul praktikum ini. Modul ini masih jauh dari kesempurnaan oleh
karenanya dibutuhkan kritik dan saran yang membangun demi perbaikan modul
praktikum ini. Semoga modul praktikum ini dapat berguna dan bermanfaat dalam
proses pendidikan di Program Studi Teknik Informatika STITEK Bontang.
Tim Penyusun
ii
Modul Praktikum Algoritma dan Pemrograman 2
Daftar Isi
iii
Modul Praktikum Algoritma dan Pemrograman 2
A. TUJUAN
- Memahami dan membuat array dua dimensi dan multimensi menggunakan bahasa
pemrograman.
- Mendefinisikan dan membuat matriks dengan menggunakan tipe data array
B. DASAR TEORI
1. Pengertian Array
Array atau biasa disebut larik adalah koleksi data dimana setiap elemen memakai nama
yang sama dan bertipe sama dan setiap elemen diakses dengan membedakan indeks arraynya.
b. Jika penelusuran dilakukan per kolom per kolom (Column Major Order)
Untuk setiap kolom J = 1, 2, 3, 4
Telusuri elemen pada baris I = 1, 2, 3, 4, 5
J = 1, elemen yang diproses pada penelusuran : 12 67 12 21 10
J = 2, elemen yang diproses pada penelusuran : 45 15 7 56 15
J = 3, elemen yang diproses pada penelusuran : 16 15 0 13 1
J = 4, elemen yang diproses pada penelusuran : 9 1 3 19 9
int 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;
#include <iostream>
using namespace std;
int main()
{
int baris, kolom, matriks[3][4];
2
Modul Praktikum Algoritma dan Pemrograman 2
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int A[3][4], B[3][4], X[3][4], Y[3][4], C[3][4], i, j;
// Masukkan matriks A
for(i=0; i<3; i++)
{
for(j=0; j<4; j++)
{
cout << "input data matrik A[" << i+1 << "][" << j+1 << "] : ";
fflush(stdin); cin >> A[i][j];
}
cout << endl;
}
cout << endl;
// Masukkan matriks B
for(i=0; i<3; i++)
{
for(j=0; j<4; j++)
{
cout << "input data matrik B[" << i+1 << "][" << j+1 << "] : ";
fflush(stdin); cin >> B[i][j];
}
cout << endl;
}
3
Modul Praktikum Algoritma dan Pemrograman 2
X[i][j] = A[i][j] + B[i][j];
}
4. Array Multi-Dimensi
Array multi-dimensi merupakan array yang mempunyai ukuran lebih dari dua. Bentuk
pendeklarasian array sama saja dengan array dimensi datu maupun array dimesi dua.
Bentuk umumnya yaitu :
Tipe_array nama_array[ukuran1][ukuran2]...[ukuranN] ;
Contoh :
float X[2][4][3] ;
X[0][0][0] X[0][0][1] X[0][0][2] X[1][0][0] X[1][0][1] X[1][0][2]
X[0][1][0] X[0][1][1] X[0][1][2] X[1][1][0] X[1][1][1] X[1][1][2]
X[0][2][0] X[0][2][1] X[0][2][2] X[1][2][0] X[1][2][1] X[1][2][2]
X[0][3][0] X[0][3][1] X[0][3][2] X[1][3][0] X[1][3][1] X[1][3][2]
4
Modul Praktikum Algoritma dan Pemrograman 2
Contoh Program 1.4. Program array multi-dimensi
#include <iostream>
using namespace std;
int main()
{
int i, j, k;
static int data_huruf[2][8][8] = {
{
{1, 1, 1, 1, 1, 1, 1, 0},
{1, 1, 0, 0, 0, 0, 1, 0},
{1 ,1, 1, 1, 1, 1, 1, 0},
{0, 0, 0, 0, 1, 1, 1, 0},
{1, 0, 0, 0, 1, 1, 1, 0},
{1, 1, 1, 1, 1, 1, 1, 0},
{0, 0, 0, 0, 0, 0, 0, 0}
},
{
{1, 1, 0, 0, 0, 1, 1, 0},
{1, 1, 0, 0, 0, 1, 1, 0},
{1, 1, 0, 0, 0, 1, 1, 0},
{1, 1, 1, 1, 1, 1, 1, 0},
{1, 1, 1, 0, 0, 1, 1, 0},
{1, 1, 1, 0, 0, 1, 1, 0},
{1, 1, 1, 0, 0, 1, 1, 0},
{0, 0, 0, 0, 0, 0, 0, 0}
}
};
// Tampilkan huruf
for(i=0; i<2; i++)
{
for(j=0; j<2; j++)
{
for(k=0; k<2; k++)
{
if(data_huruf[i][j][k])
cout << '\xDB';
else
cout << " "; // spasi
}
cout << endl;
}
cout << endl;
}
}
C. LANGKAH PRAKTIKUM
1. Kerjakan semua contoh program sehingga dapat menampilkan output.
2. Modifikasi Contoh Program 1.2 menjadi program untuk menginput nilai (bilangan) ke
dalam array dimensi dua dan menampilkannya secara Column Major Order.
3. Modifikasi Contoh Program 1.2, sehingga user dapat bebas membuat matriks dengan ordo
yang diinginkan (jumlah baris dan kolom ditentukan user) dan user dapat
memasukkan isi dari matriks.
4. Modifikasi Contoh Program 1.3,menjadi program perkalian dua buah matriks.
5
Modul Praktikum Algoritma dan Pemrograman 2
D. TUGAS PRAKTIKUM
1. Dari langkah praktikum No. 2, cari elemen maksimum dari matriks yang sudah dibuat.
Elemen maksimum matriks dicari dengan menelusuri semua elemen matriks, mulai dari
elemen MAT[1,1] sampai elemen MAT[MaksBaris, MaksKolom].
2. Buat program untuk Transpose Matriks. Misal matriks ordo 2x1 menjadi matrik ordo 1x2.
6
Modul Praktikum Algoritma dan Pemrograman 2
A. TUJUAN
Mendefinisikan dan menggunakan tipe data record/struktur
B. DASAR TEORI
1. Pengertian Record/Struct
Seperti halnya Array, Record/Struct mempunyai sejumlah elemen yang disebut field. Kalau
semua elemen array harus mempunyai tipe data yang sama, maka tiap-tiap elemen pada
Record/Struct dapat memiliki tipe data yang berbeda dan akses individual / obyek dilakukan
dengan menyebut namanya (field)
Contoh :
struct data_tanggal
{ int tanggal;
int bulan;
int tahun;
};
struct data_rekan
{ char nama[21];
struct data_tanggal tgl_lahir;
} info_rekan;
7
Modul Praktikum Algoritma dan Pemrograman 2
Dari contoh diatas diagram struktur data:
nama
info_rekan tanggal
tgl_lahir bulan
tahun
Contoh program 2.1.
// Contoh variasi program mengakses elemen struktur
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
struct data_tanggal
{
int tanggal, bulan, tahun;
};
struct data_rekan
{
char nama[30];
struct data_tanggal tgl_lahir;
};
struct data_rekan info_rekan;
strcpy(info_rekan.nama, "Mr. Sumanto");
info_rekan.tgl_lahir.tanggal = 3;
info_rekan.tgl_lahir.bulan = 11;
info_rekan.tgl_lahir.tahun = 1968;
int main()
{
typedef struct {
char no_pendaftaran[9];
char nama_pasien[16];
float biaya;
} data_pasien;
data_pasien pasien;
cout << "No Pendaftaran : ";
cin >> pasien.no_pendaftaran;
cout << "Nama : ";
cin >> pasien.nama_pasien;
cout << "Biaya : ";
cin >> pasien.biaya;
8
Modul Praktikum Algoritma dan Pemrograman 2
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
typedef struct
{
char nomhs[12];
char nama[20];
float nilai;
} data_nilai;
data_nilai nilaimhs[10];
int i;
for(i=1; i<=2; i++)
{
cout << "Nama : "; cin >> nilaimhs[i].nama;
cout << "Nomhs : "; cin >> nilaimhs[i].nomhs;
cout << "Nilai : "; cin >> nilaimhs[i].nilai;
cout << endl;
}
for(i=1; i<=2; i++)
{
cout << "Nama : " << nilaimhs[i].nama << endl;
cout << "Nomhs : " << nilaimhs[i].nomhs << endl;
cout << "Nilai : " << nilaimhs[i].nilai << endl;
}
}
struct data_tgl
{
int tanggal, bulan, tahun;
};
int main()
{
struct data_tgl saat_proses = {13, 1, 1987};
cetak_info_tgl(saat_proses);
}
9
Modul Praktikum Algoritma dan Pemrograman 2
void cetak_info_tgl(struct data_tgl unit_tgl)
{
static char *nama_bln[] = {
"Kode bulan salah!", "Januari", "Februari", "Maret",
"April", "Mei", "Juni", "Juli", "Agustus", "September",
"Oktober", "November", "Desember"
};
struct koordinat
{
int x, y;
};
int main()
{
struct koordinat posisi = {21, 34};
cout << "x, y semula = " << posisi.x << ", " << posisi.y;
tukar_xy(&posisi);
cout << "\nx, y kini = " << posisi.x<< ", " << posisi.y << endl;
}
C. LANGKAH PRAKTIKUM
1. Kerjakan semua Contoh Program yang ada sehingga dapat menampilkan output.
2. Modifikasi Contoh Program 2.2 dan Contoh Program 2.3 sehinggadapat menginputkan
nama yang terdiri lebih dari satu kata (contoh : Bagus Pramono Perkasa)
D. TUGAS PRAKTIKUM
1. Buat program record yang dapat merekam data pegawai dan menghitung total gaji sesuai
hari kerjanya. Contoh output:
10
Modul Praktikum Algoritma dan Pemrograman 2
2. Buatlah program menu yang berisi data-data penduduk (nama, alamat, umur, agama, gol
darah, status..dll) yang disimpan dalam array dan dapat dilakukan penambahan data,
pencarian data, penampilan data dan penghapusan data.
11
Modul Praktikum Algoritma dan Pemrograman 2
A. TUJUAN
Mempraktekkan fungsi rekursif menggunakan bahasa pemrograman.
B. DASAR TEORI
1. Pengertian
Rekursif merupakan alat untuk memecahkan masalah dalam suatu fungsi atau procedure
yang memanggil dirinya sendiri.
Mengapa kita memerlukan rekursif? Karena ada beberapa kasus yang akan jauh lebih
mudah diselesaikan jika menggunakan rekursif. Secara teori semua masalah yang dapat
dipecahkan dengan rekursif dapat dipecahkan dengan tanpa rekursif. Meskipun dalam
kenyataan ini, rekursif sangat bermanfaat sebab beberapa masalah mempunyai solusi yang
sulit tanpa menggunakan rekursif.
Penggunaan rekursif kadang-kadang harus mengorbankan efisiensi dan kecepatan,
disamping itu ada masalah yang sering muncul dalam rekursif, yaitu eksekusi yang tidak
pernah berhenti, akibtanya memori tumpukan akan habis dan computer hank.
Pada dasarnya rekursif sering digunakan dalam perhitungan matematika, sebagai contoh
pertimbangan fungsi factorial dan juga bilangan Fibonacci
2. Faktorial
Salah satu contoh yang sering digunakan untuk menjelaskan rekursif adalah fungsi
fakorial. Fungsi factorial dari bilangan bulat positif n didefinisikan sebagai berikut:
n!= n.(n-1)!, jika n>1
n!= 1, jika n=0, 1
contoh :
3!= 3. 2!
3!= 3. 2. 1!
3!= 3. 2. 1!
3!= 6
Kita dapat menuliskan fungsi penghitung factorial seperti dibawah ini.
function Faktorial (input n:byte) : longint
deskripsi
if (n = 0) or (n = 1 ) then
return (1)
else
return (n * Faktorial (n-1))
Penjelasan:
Pada baris pertama dari fungsi diatas, nilai n dicek sama dengan 0 atau 1, jika ya, maka fungsi
mengembalikan nilai 1, jika tidak, fungsi mengembalikan nilai:
n * Faktorial (n -1)
Disinilah letak proses rekursif itu, perhatikan fungsi factorial ini memanggil dirinya sendiri
tetapi dengan parameter (n-1)
Cara lain untuk mendefiniskan fungsi tersebut sebagai berikut:
Dalam definisi ini, nilai 3! dieksprsikan sebagai 3 x 2!, dengan kata lain untuk
menghitung factorial 3, kita harus menghitung factorial lain yaitu factorial 2.
Jika definisi nilai 2!=2 x 1!
12
Modul Praktikum Algoritma dan Pemrograman 2
Factorial 1 didefinisikan dengan nilai 1.
Jadi jika factorial 3!= 3 x 2 x 1, yang mana secara pasti mempunyai nilai sama yang
diperoleh dari definisi tanpa rekursif.
3. Bilangan Fibonacci
Fungsi lain yang dapat diubah kebentuk rekursif adalah perhitungan Fibonacci. Bilangan
Fibonacci dapat didefinisikan sebagai berikut:
f(n) = f(n-1) + f(n-2) untuk n>2
f(1) = 1
f(2) = 1
berikut ini adalah barisan bilangan Fibonacci mulai dari n=1
1 1 2 3 5 8 13 21 34
Algoritma yang dipakai
Function Fibonacci (input n : integer) LongInt
Deklrasi
{tidak ada}
Deskripsi
If ((n==1)|| (n==2 ) Then
return (1)
Else
return (Fibonacci(n-1)+Fibonacci(n-2))
Endif
Contoh.
Untuk ukuran n= 4, proses perhitungan Fibonacci dapat dilakukan sebagai berikut:
f4 = f3+f2
f4 =(f2+f1) + f2
f4 = ((1+1) +1)
f4 = 3
Definisi rekursif harus tergantung kondisi, yang harus ada keadaan dimana kita dapat
menghentikannya. Selama eksekusi program pada semua program yang menggunakan rekursi,
sistem tersebut akan membangun suatu daftar nilai, yang disebut Stack (Tumpukan), sehingga
ketika rekursi tersebut berakhir, program tersebut dapat kembali kelokasi yang tepat unuk
melengkapi perhitungan tersebut yang untuk sementara telah dikesampingkan.
int main()
{
int bil1, bil2;
cout << "Masukkan bilangan pertama : "; cin >> bil1;
cout << "Masukkan bilangna kedua : "; cin >> bil2;
cout << "Faktor Persekutuan Terbesar : " << FPB(bil1, bil2) << endl;
}
13
Modul Praktikum Algoritma dan Pemrograman 2
int main()
{
int n;
cout << "Masukkan bilangan : "; cin >> n;
cout << "Faktorial " << n << " = " << faktorial(n) << endl;
}
int faktorial(int a)
{
int hasil;
if(a <= 1)
hasil = 1;
else
hasil = a * faktorial(a-1);
return hasil;
}
C. LANGKAH PRAKTIKUM
1. Kerjakan semua Contoh Program yang ada sehingga dapat menampilkan output.
D. TUGAS PRAKTIKUM
1. Buatlah program Fibonacci.
2. Berikut program menghitung deret menggunakan perulangan. Buatlah program untuk
menghitung deret tersebut menggunakan function Rekursi.
(deret S = 1+2+3+4+…+n)
#include <iostream>
using namespace std;
int main()
{
int S, n, i;
cout << "Masukkan n : "; cin >> n;
cout << "S(" << n << ") = ";
i = 1;
while(i <= n)
{
cout << i << " + ";
S = S + i;
i++;
}
cout << "\nS(" << n << ") = " << S << endl;
}
3. Buatlah program untuk menghitung deret menggunakan function Rekursi.
deret S = 3+9+27+71+…)
14
Modul Praktikum Algoritma dan Pemrograman 2
A. TUJUAN
Mempraktekkan dan membandingkan metode searching menggunakan tipe data array
B. DASAR TEORI
1. Pengertian
Searching dalam bahasa Indonesia kita sebut pencarian. Cara mengorganisir data, akan
banyak mempengaruhi efisiensi pencarian dalam menemukan suatu item ataupun informasi
dari data yang ada.
Contoh dalam kehidupan sehari-hari ;
- Mencari kata di kamus
- Mencari nomor telepon di buku telepon
Contoh dalam komputasi misalnya mencari suatu harga Y apakah ada dalam suatu data Array
yang berisi nilai-nilai tertentu. Array memungkinkan untuk menyimpan nilai yang bertipe
sama. Metode pencarian yang umum dalam array adalah Sequential Search dan Binary search.
Perbedaan dari kedua teknik ini terletak pada keadaan data.
15
Modul Praktikum Algoritma dan Pemrograman 2
Contoh Program 4.1. SeqSearch_BelumUrut_nonSentinel
/* SeqSearch_BelumUrut_nonSentinel
diasumsikan Array X sudah ada dan berisi data yang belum urut
nilai yang dicari adalah nilaiCari dan hanya ada satu
*/
#include <iostream>
using namespace std;
int main() {
int X[10] = {20, 50, 10, 30, 90, 60, 70, 80, 40, 100};
bool found;
int i, nilaiCari;
cout << "nilai yang dicari = "; cin >> nilaiCari;
found = false;
i = 0;
while((i < 10) & (!found))
{
if(X[i] == nilaiCari)
found = true;
else
i = i + 1;
}
if(found)
cout << nilaiCari << " ditemukan pada index array ke-" << i <<endl;
else
cout << nilaiCari << " tidak ada dalam Array tersebut" << endl;
}
Cara lain untuk Sequential Search pada data Array X[n], adalah dengan menyediakan satu
tempat setelah elemen terakhir, yaitu pada X[n+1] dan menyimpan harga yang dicari (misal y)
pada posisi tersebut. Nilai yang dicari pada posisi elemen terakhir tersebut dinamakan sentinel.
Proses pencarian sequential data belum terurut dengan sentinel :
pada dasarnya pencarian ini sama dengan proses pencarian sequential data belum terurut
tanpa sentinel yaitu melakukan pengulangan dari elemen ke-1 sampai dengan jumlah data.
pada setiap pengulangan, dibandingkan data ke-i dengan yang dicari,
apabila sama berarti data telah ditemukan,
perbedaannya dengan yang tanpa sentinel adalah ketika data ditemukan tapi data tersebut
adalah sentinel berarti data tidak ada.
int main()
{
int X[11] = {20, 50, 10, 30, 90, 60, 70, 80, 40, 100};
int i, nilaiCari;
cout << "Nilai yang dicari = "; cin >> nilaiCari;
X[10] = nilaiCari;
i=0;
while(X[i] != nilaiCari)
i = i + 1;
if(i > 9)
cout << "tidak ada " << nilaiCari << " dalam Array" << endl;
else
cout << nilaiCari << " ditemukan dalam Array pada index ke-" << i << endl;
16
Modul Praktikum Algoritma dan Pemrograman 2
Contoh Program 4.3. SeqSearch_BelumUrut_Sentinel{cara2}
/* SeqSearch_BelumUrut_Sentinel {cara 2}
diasumsikan Array X[0..10] sudah ada indeks ke 0..9 telah berisi data
yang belum terurut,nilai yang dicari adalah y dan hanya ada satu, y diletakkan
di index ke-10
*/
#include <iostream>
using namespace std;
int main()
{
int X[11] = {20, 50, 10, 30, 90, 60, 70, 80, 40, 100};
int i, nilaiCari;
bool found;
cout << "Nilai yang dicari = "; cin >> nilaiCari;
X[10] = nilaiCari;
found = false;
i=0;
while(!found)
{
if(X[i] == nilaiCari) found = true;
else i = i + 1;
}
if(i == 10)
cout << "tidak ada " << nilaiCari << " dalam Array" << endl;
else
cout << nilaiCari << " ditemukan dalam Array pada index ke-" << i << endl;
}
#include <iostream>
using namespace std;
int main()
{
int X[11] = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100};
int i, nilaiCari;
bool found;
#include <iostream>
using namespace std;
int main()
{
int X[11]={10,20,30,40,50,60,70,80,90,100};
int i, nilaiCari;
bool found;
X[10] = nilaiCari;
found = false;
i = 0;
while((!found) & (X[i] <= nilaiCari))
{
if(X[i] == nilaiCari) found = true;
else i = i + 1;
}
if(i == 10)
cout << "tidak ada " << nilaiCari << " dalam Array" << endl;
else {
if (found)
cout << nilaiCari << " ditemukan dalam Array pada index ke-" << i <<endl;
else
cout << "tidak ada " << nilaiCari << " dalam Array" << endl;
}
}
18
Modul Praktikum Algoritma dan Pemrograman 2
3. Binary Search
Binary Search digunakan pada Array yang elemen datanya sudah terurut.
1. Urutkan elemen-elemen Array
2. Cari elemen tengah denga mencari indeks tengahnya menggunakan rumus indektengah
(indekskiri + indekskanan) div 2
3. Bandingkan nilai yang dicari dengan elemen tengah tersebut
Jika sama berarti ketemu, maka pencarian selesai
Jika tidak sama namun {harga tengah ikut dibuang}
Jika nilai yang dicari < elemen tengah, maka dilakukan pembagian Array sebagai
berikut :
SubArray 1 dimulai dari indekskiri s/d indekskananbaru indekstengah-1
SubArray2 dimulai dari indekskiribaru indekstengah s/d indekskanan
Sehingga pencarian diteruskan ke SubArray1
Jika nilai yang dicari >elemen tengah, maka dilakukan pembagian Array sebagai
berikut:
SubArray1 dimulai dari indekskiri s/d indkeskananbaru indekstengah
SubArray2 dimulai dari indekskiribaru indekstengah+1 s/d indekskanan
Sehingga pencarian diteruskan keSubArray2
4. Ulangi langkah 2 dan 3, sampai didapat kesimpulan bahwa nilai yang dicari
“ditemukan” atau “tidak ditemukan”.
#include <iostream>
using namespace std;
int main()
{
int X[10] = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100};
int i, nilaiCari, j, k;
bool found;
found = false;
i = 0;
j = 10;
while((!found) & (i <= j))
{
k = (i + j) / 2;
if(nilaiCari == X[k])
found = true;
else
{
if(nilaiCari < X[k])
j = k - 1; // i tetap
else
i = k + 1; // j tetap
}
}
if(found)
cout << nilaiCari << " ditemukan dalam Array pada index ke-" << k << endl;
else
cout << "tidak ada " << nilaiCari << " dalam Array" << endl;
}
19
Modul Praktikum Algoritma dan Pemrograman 2
C. LANGKAH PRAKTIKUM
1. Kerjakan contoh-contoh program di atas, simpan untuk tiap-tiap program.
D. TUGAS PRAKTIKUM
1. Modifikasi contoh program di atas dengan : jumlah data diinput, elemen datanya diinput
dan ditampilkan (minimal satu contoh program).
2. Buatlah program untuk memodifikasi salah satu contoh program untuk menyisipkan
elemen yang dicari ke dalam data array jika elemen yang dicari tersebut tidak ada (asumsi
datanya sudah terurut).
20
Modul Praktikum Algoritma dan Pemrograman 2
A. TUJUAN
Mempraktekkan dan membandingkan metode sorting menggunakan tipe data array dan
algoritma rekursif
B. DASAR TEORI
1. Pengertian
Sorting (pengurutan) didefinisikan sebagai suatu proses untuk menyusun kembali
himpunan obyek menggunakan metode tertentu. Secara umum ada 2 jenis pengurutan data,
yaitu :
Pengurutan naik (ascending)
Dari data yang terkecil hingga yang paling besar
Pengurutan turun (descending)
Pengurutan data dari yang paling besar hingga yang paling kecil.
Tujuan pengurutan data adalah untuk lebih mempermudah proses pencarian data kelak di
kemudian hari. Pada pratikum ini, akan diberikan beberapa contoh metode pengurutan data
terutama pengurutan larik seperti pengurutan langsung (straight method). Metode pengurutan
langsung ini dapat dikelompokkan menjadi 3 metode, yaitu : penyisipan (insertion), seleksi
(selection) dan penukaran (exchange) / metode gelembung (bubble sort).
0 44 0 33 0 33 0 33
1 33 1 44 1 44 1 44
2 55 2 55 2 55 2 22
3 22 3 22 3 22 3 55
4 11 4 11 4 11 4 11
0 33 0 33 0 33
1 44 1 44 1 22
2 22 2 22 2 44
3 11 3 11 3 11
4 55 4 55 4 55
21
Modul Praktikum Algoritma dan Pemrograman 2
0 33 0 22
1 22 1 33
2 11 2 11
3 44 3 44
4 55 4 55
0 22 0 11
1 11 1 22
2 33 2 33
3 44 3 44
4 55 4 55
Contoh ilustrasi di atas ada lima data yang diurutkan yaitu {44,33,55,22,11}. Iterasi
pertama memindahkan nilai terbesar array ke puncak array. Iterasi kedua memindahkan nilai
terbesar kedua ke posisi kedua dari puncak. Iterasi ketiga memindahkan nilai terbesar ketiga,
dan seterusnya.
int main()
{
int data_size = 30;
int values[data_size], i;
bubble_sort(values, data_size);
22
Modul Praktikum Algoritma dan Pemrograman 2
Perhatian : Fungsi bubble_sort di atas mengurutkan nilai dari terendah ke tertinggi. Untuk
membalik urutan, cukup dengan mengubah perbandingan menjadi
if (array[i]>array[j]).
Langkah-langkah :
Langkah 1 : Baca array elemen yang akan diurutkan (n)
2 : Kerjakan langkah 3 sampai langkah 6 untuk i : 1 s/d n-1
3 : Tentukan elemen yang akan disisipkan (Temp = A [i] ; j = i-1;)
4 : Kerjakan langkah 5 selama temp <A [j] dan j >= 0;
5 : A [j+1]= A[j] ; j =j-1;
6 : Tempatkan elemen A [j+1] = Temp;
7 : Selesai
int main()
{
int k, data_size;
int values[20];
cout << "banyaknya data = "; cin >> data_size; // tidak > 20
23
Modul Praktikum Algoritma dan Pemrograman 2
Lanjutan Contoh Program 5.2. Straight Insertion Sort
// masukkan data sebanyak n
for(k=0; k<data_size; k++)
{
cout << "values[" << k << "] = ";
cin >> values[k];
}
// data yang belum diurutkan
cout << "data yang belum diurutkan : " << endl;
for(k=0; k<data_size; k++)
cout << values[k] << " ";
cout << endl;
straight_inst_sort(values, data_size);
// data yang telah diurutkan
cout << "data yang sudah diurutkan : " << endl;
for(k=0; k<data_size; k++)
cout << values[k] << " ";
getchar();
}
44 33 33 22
33 44 44 44
55 55 55 55
22 22 22 33
11 11 11 11
11 11 11 11
44 44 33 22
55 55 55 55
33 33 44 44
22 22 22 33
24
Modul Praktikum Algoritma dan Pemrograman 2
Program berikut, memakai selection sort untuk mengurutkan array yang berisi 30 nilai acak:
Contoh Program 5.3. Selection Sort
// Selection Sort
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
int data_size = 30;
int values[data_size], i;
selection_sort(values, data_size);
Perhatian: Fungsi selection_sort mengurutkan nilai dari terkecil ke terbesar. Untuk membalik
urutan, cukup dengan mengubah pembandingan menjadi if (array[current] < array[j])
25
Modul Praktikum Algoritma dan Pemrograman 2
Ilustrasi Mengurutkan array dengan shell sort
Jarak A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9]
Awal 24 46 11 26 57 38 27 20 17
Jarak = 9/2=4 24 46 11 26 57 38 27 20 17
24 38 11 26 57 46 27 20 17
24 38 11 26 57 46 27 20 17
24 38 11 20 57 46 27 26 17
24 38 11 20 17 46 27 26 57
17 38 11 20 24 46 27 26 57
Jarak = 4/2=2 17 38 11 20 24 46 27 26 57
11 38 17 20 24 46 27 26 57
11 20 17 38 24 46 27 26 57
11 20 17 38 24 46 27 26 57
11 20 17 38 24 46 27 26 57
11 20 17 38 24 46 27 26 57
11 20 17 38 24 26 27 46 57
11 20 17 26 24 38 27 46 57
11 20 17 26 24 38 27 46 57
11 20 17 26 24 38 27 46 57
Jarak = 2/2=1 11 20 17 38 24 26 27 46 57
11 20 17 38 24 26 27 46 57
11 17 20 38 24 26 27 46 57
11 17 20 38 24 26 27 46 57
11 17 20 38 24 26 27 46 57
11 17 20 24 38 26 27 46 57
11 17 20 24 26 38 27 46 57
11 17 20 24 26 38 27 46 57
11 17 20 24 26 27 38 46 57
11 17 20 24 26 27 38 46 57
11 17 20 24 26 27 38 46 57
Hasil 11 17 20 24 26 27 38 46 57
26
Modul Praktikum Algoritma dan Pemrograman 2
Program berikut, memakai shell sort untuk mengurutkan array yang diinput.
Contoh Program 5.4. Shell Sort
// Shell Sort
#include <iostream>
#include <stdio.h>
#define size 9
using namespace std;
int main()
{
int arr[size], i;
cout << "Enter the elements to be sorted : " << endl;
shell_sort(arr);
Perhatian: Fungsi shell_sort mengurutkan nilai terkecil ke terbesar. Untuk membalik urutan,
cukup dengan mengubah pembandingan menjadi if(array[i] < array[i+gap])
27
Modul Praktikum Algoritma dan Pemrograman 2
Setiapkali sorting dipanggil, ia membagi lebih jauh elemen-elemen ke dalam senarai yang lebih
kecil. Gambar berikut mengilustrasikan cara quick sort dapat mengurutkan array dengan 9
nilai.
Program berikut, QUICK.C, memakai quick sort untuk mengurutkan array yang berisi 100 nilai
acak :
low = first;
high = last;
list_separator = array[(first + last) / 2];
do {
while(array[low] < list_separator)
low++;
while(array[high] > list_separator)
high--;
28
Modul Praktikum Algoritma dan Pemrograman 2
Lanjutan Contoh Program 5.5. Quick Sort
int main()
{
int first = 0;
int last = data_size - 1;
int values[data_size], i;
// data yang belum diurutkan diambil dari hasil random
cout << "data yang belum urut : " << endl;
for(i = 0; i < data_size; i++)
{
values[i] = rand() % 100;
cout <<values[i] << " ";
}
cout << endl;
quick_sort(values, first, last);
// data yang sudah diurutkan
cout << "data yang sudah diurutkan : " << endl;
for(i = 0; i < data_size; i++)
cout << values[i] << " ";
getchar();
}
Perhatian: Fungsi quick_sort mengurutkan nilai dari terkecil ke terbesar. Untuk membalik
urutan, cukup dengan mengubah pembandingan pada dua pernyataan while menjadi :
while (array[low]>list_separator) low++;
while (array[high]<list_separator) high--;
C. LANGKAH PRAKTIKUM
1. Jalankan contoh program 6.1. Bubble Sort. Program tersebut sorting data dari terkecil ke
terbesar. Ubahlah menjadi sebuah program sorting data dari terbesar ke terkecil (simpan
dengan nama lain).
2. Jalankan contoh program 6.2 Straight Insertion Sort. Tambahkan perintah menampilkan
perubahan data tiap iterasi di fungsi straight_inst_sort. Tambahan perintahnya sbb :
for(k=0;k<size;k++)
cout << array[k]<< " ";
cout << endl;
29
Modul Praktikum Algoritma dan Pemrograman 2
D. TUGAS PRAKTIKUM
1. Buatlah program menu untuk memilih metode sorting yang digunakan. Contoh tampilan
output program : (mengurutkan 50 data acak/random)
Program Sorting
50 Data Acak Yang Akan Diurutkan :
25 30 12 11 35 60 97 95 45 39 30 12 24 45 50 32 96
95 25 11 25 30 12 11 35 60 97 95 45 39 30 12 24 45
50 32 96 95 25 11 25 30 12 11 35 60 97 95 45 39
Menu Pilihan :
1. Bubble Sort
2. Insertion Sort
3. Selection Sort
4. Shell Sort
5. Quick Sort
Pilihan : 1
Bubble Sort
50 Data Acak Yang Telah Diurutkan :
11 11 11 11 11 12 12 12 12 12 24 24 25 25 25 25 25
30 30 30 30 30 32 32 35 35 35 39 39 39 45 45 45 45
45 50 50 60 60 60 95 95 95 95 95 96 96 97 97 97
Lagi (y/t) ? __
30
Modul Praktikum Algoritma dan Pemrograman 2
A. TUJUAN
Memperkenalkan dan mempelajari konsep Pointer yang akan digunakan pada variabel
dinamis untuk memakai memori bebas selama eksekusi program
B. DASAR TEORI
1. Pengertian
Pointer banyak dilibatkan dalam pemrograman C++, misalnya untuk melewatkan string
dari suatu fungsi ke fungsi yang lain. Pointer cara yang digunakan untuk mengubah nilai suatu
variabel yang dilewatkan ke dalam suatu fungsi. Penerapan pointer yang paling umum yaitu
menciptakan variable dinamis, yang memungkinkan untuk memakai memori bebas (memori
yang belum dipakai) selama eksekusi program.
Variabel pointer sering disebut sebagai variabel yang menunjuk obyek lain, karena
variabel pointer atau pointer adalah variabel yang berisi alamat dari suatu obyek lain, yaitu
obyek yang ditunjuk oleh pointer. Suatu variabel pointer dideklarasikan dengan bentuk:
tipedata *nama_variabel;
Untuk mengatur pointer agar menunjuk ke variabel lain, mula-mula pointer harus diisi
dengan alamat dari variabel yang akan ditunjuk. Operator & digunakan untuk menyatakan
alamat variabel yang akan ditunjuk. Contoh : &x
Jika suatu varibel sudah ditunjuk oleh pointer, variabel yang ditunjuk oleh pointer
dapat diakses melalui variabel itu sendiri (pengaksesan langsung) atau melalui pointer
(pengaksesan tidak langsung). Operator indirection, berupa simbol * digunakan untuk
pengaksesan tidak langsung.Contoh :*px
Bentuk Umum :
tipedata *nama_pointer;
Contoh:
int *p;
float *nilai;
char *s;
*malloc(size_t size)
Contoh:
p=(int *)malloc(sizeof(int));
q=(int *)malloc(sizeof(int));
p q
*p=10 *q=20
p q
10 20
31
Modul Praktikum Algoritma dan Pemrograman 2
p=q
p
10
q
20
#include <iostream>
#include <malloc.h>
#include <stdlib.h>
using namespace std;
int main()
{
int *p, *q, *r;
int n = 10;
p = (int *)malloc(sizeof(int));
q = (int *)malloc(sizeof(int));
p = &n;
*q = 120;
r = p;
n = *q;
p = q;
32
Modul Praktikum Algoritma dan Pemrograman 2
Contoh Program 6.2. Contoh pemakaian pointer yang salah
// Contoh pemakaian pointer yang salah
#include <iostream>
using namespace std;
int main()
{
float *pu;
float nu;
int u = 1234;
pu = &u; // pernyataan ini salah
// sebab pu adalah pointer float padahal u bertipe int
nu = *pu;
cout << "u = " << u << endl;
cout << "nu = " << nu << endl;
}
int main()
{
static int tgl_lahir[] = {27, 8, 1977};
int *ptgl;
ptgl = tgl_lahir; // ptgl berisi alamat array
cout << "nilai yang ditunjuk oleh ptgl = " << *ptgl << endl;
cout << "nilai dari tgl_lahir[0] = " << tgl_lahir[0] << endl;
}
int main()
{
int x, y; // x & y bertipe int
int *px; // px pointer yang menunjuk objek bertipe int
x = 87;
px = &x; // px berisi alamat dari x
y = *px; // y berisi nilai yang ditunjuk px
33
Modul Praktikum Algoritma dan Pemrograman 2
Contoh Program 6.5. Contoh program pointer dan array
// Contoh pengaksesan isi array dengan pointer
#include <iostream>
using namespace std;
int main()
{
static int tgl_lahir[] = {27, 8, 1977};
int i;
int *ptgl;
int main()
{
char *pkota = "YOGYAKARTA"; /* pkota menunjuk konstanta string
"YOGYAKARTA" */
cout << pkota << endl;
}
Contoh Program 6.7.Program menukar isi dua string tanpa memakai pointer
// menukar isi dua string tanpa memakai pointer
#include <iostream>
#include <string.h>
#define panjang 20
using namespace std;
int main()
{
char namax[panjang];
cout << "semula : " << endl;
cout << "nama1 -> " << nama1 << endl;
cout << "nama2 -> " << nama2 << endl;
// penukaran string
strcpy(namax, nama1);
strcpy(nama1, nama2);
strcpy(nama2, namax);
34
Modul Praktikum Algoritma dan Pemrograman 2
Contoh Program 6.8.Program menukar isi dua string yang ditunjuk pointer
// menukar isi dua string yang ditunjuk pointer
#include <iostream>
using namespace std;
int main()
{
char *namax;
cout << "semula : " << endl;
cout << "nama1 -> " << nama1 << endl;
cout << "nama2 -> " << nama2 << endl;
Suatu pointer dapat menunjuk ke pointer lain dijelaskan dalam gambar berikut:
pointer pointer variabel
ptr2 ptr1 var_x
Perintah Keterangan
int var_x; var_xadalah variabel bertipe integer
int *ptr1; *ptr1 adalah variabel pointer yang menunjuk ke data bertipe int
int **ptr2; *ptr2adalah variabel pointer yang menunjuk ke pointer int
ptr1=&var_x; ptr1 menunjuk ke variabel var_x
ptr2=&ptr1; ptr2 menunjuk ke ptr1
Contoh Program 6.9. Program pointer menunjuk pointer
// pointer menunjuk pointer
#include <iostream>
using namespace std;
int main()
{
int var_x = 273; // variabel int
int *ptr1; // pointer int
int **ptr2; // pointer menunjuk pointer int
ptr1 = &var_x; // ptr1 berisi alamat dari var_x
ptr2 = &ptr1; // ptr2 berisi alamat dari ptr1
35
Modul Praktikum Algoritma dan Pemrograman 2
5. Pointer dan Fungsi
a. Pointer sebagai parameter fungsi
Penerapan pointer sebagai parameter diinginkan agar nilai suatu variabel internal
dapat diubah menjadi fungsi yang dipanggil.
Contoh panggilan Keterangan
void naikkan nilai (int*x,int*y) Variabel yang berkaitan dengan
{ parameter aktual dapat diubah
*x = *x+2;
nilainya, masing-masing dianaikan
*x = *x+2;
} sebesar 2
naikkan_nilai(&a,&b); Operator & berarti menyatakan alamat
variabel, sebab variabel fungsi dalam
pendefinisian berupa pointer.
int main()
{
int a=3;
int b=7;
cout << "semula : a = "<< a<< " b = " << b << endl;
naikkan_nilai(&a,&b);
cout << "kini : a = "<< a << " b = " << b << endl;
}
36
Modul Praktikum Algoritma dan Pemrograman 2
Contoh Program 6.11. Program fungsi dengan keluaran berupa pointer
int main()
{
int hr;
cout << "hari(1..7) : ";
cin >> hr;
cout << nama_hari(hr) << endl;
}
char *nama_hari(int n)
{
static char *hari[] = {
"kode hari salah", "senin","selasa", "rabu",
"kamis","jumat","sabtu","minggu"
};
return (n < 1 || n > 7) ? hari[0] : hari[n];
}
C. LANGKAH PRAKTIKUM
1. Jalankan contoh-contoh program di atas.
D. TUGAS PRAKTIKUM
1. Buatlah suatu program dengan menggunakan pointer untuk menampilkan tulisan atau
output :
Pemrograman Dasar Turbo C
Dasar Turbo C
Turbo C
2. Buatlah program untuk menukar isi tiga string tanpa pointer dan yang ditunjuk pointer
(modifikasi contoh program 6.7 dan 6.8). Misal :
nama1"hanif" nama1"zahira"
nama2"fathimah" menjadi nama2"hanif"
nama3"zahira" nama3"fathimah"
37
Modul Praktikum Algoritma dan Pemrograman 2
A. TUJUAN
Mengetahui teknik pemrograman yang melibatkan data yang disimpan dalam bentuk file.
B. DASAR TEORI
1. Struktur File
Kebanyakan program melibatkan media disk sebagai tempat untuk membaca atau
merekam data. Data sendiri disimpan dalam disk dalam bentuk suatu kesatuan yang disebut
file. Suatu file merupakan organisasi dari sejumlah record dapat terdiri dari satu atau
beberapa field dan setiap field terdiri dari satu ataua beberapa byte. Adapun byte merupakan
susunan dari 8 bit.
File
Record … Record
Byte … Byte
Masing-masing adalah
sebuah field
nama alamat
38
Modul Praktikum Algoritma dan Pemrograman 2
Keterangan mode :
r : Read only
w : Menyatakan file baru diciptakan. Operasi yang akan dilakukan adalah operasii
perekaman data. Jika file tersebut sudah ada, isi yang lama akan dihapus.
a : Membuka file yang ada pada disk dan operasi yang akan dilakukan adalah operasii
penambahan data pada file. Jika file belum ada, secara otomatis file akan dibuat .
r+ : Membuka file yang sudah ada, operasi yang dilakukan berupa pembacaan dan
penulisan.
w+ : Membuka file untuk pembacaan/penulisan. Jika file sudah ada, isinya akan dihapus.
a+ : Membuka file, operasi yang dilakukan berupa perekaman dan pembacaan. Jika file
sudah ada, isinya tak akan terhapus.
b. Menutup File
Untuk menutup file, deklarasi yang digunakan :
int fclose(FILE *pf);
int main()
{
FILE *pf; // pointer ke FILE
char kar;
39
Modul Praktikum Algoritma dan Pemrograman 2
Contoh program 7.2.
int main()
{
FILE *pf; // pointer ke file
char kar;
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int main()
{
FILE *pf; // ptr ke FILE
int nilai;
char jawab;
40
Modul Praktikum Algoritma dan Pemrograman 2
do {
cout << "\r\n Bilangan yang akan disimpan : ";
cin >> nilai; // baca nilai dari keyboard
cin.ignore();
putw(nilai, pf); // tulis bilangan ke file
cout<<" Memasukkan data lagi (Y/T)? : ";
jawab = getchar(); // baca jawaban dari keyboard
} while(jawab == 'y' || jawab == 'Y');
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
FILE *pf; // ptr ke file
int nilai;
int nomor = 0;
while(1)
{
nilai = getw(pf); // baca sebuah int dr file
if(feof(pf) != NULL)
break; // jika akhir file,keluar loop
cout << " " << ++nomor << ". " << nilai <<"\r\n";
}
fclose(pf); // tutup file
getchar();
}
41
Modul Praktikum Algoritma dan Pemrograman 2
Contoh program 7.5.
// menyimpan data bertipe struktur, dengan fwrite()
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
FILE *f_struktur;
char jawab;
struct data_pustaka
{
char judul[26];
char pengarang[20];
int jumlah;
} buku; // variabel buku bertipe struktur
do {
cout << " Judul buku : "; cin >> buku.judul;
cout << " Nama pengarang : "; cin >> buku.pengarang;
cout << " Jumlah buku : "; cin >> buku.jumlah;
cin.ignore();
fflush(stdin); // hapus isi penampung keyboard
fwrite(&buku, sizeof(buku), 1, f_struktur); // rekam sebuah data
struktur
cout << "\r\nMau merekam data lagi (Y/T) : ";
jawab = getchar();
}
while(jawab =='Y' || jawab =='y');
fclose(f_struktur); // tutup file
}
#include <iostream>
#include <iomanip>
#include <stdlib.h>
#define JUM_BLOK 1 // sebuah record
using namespace std;
int main()
{
FILE *f_struktur;
struct
{
char judul[26];
char pengarang[20];
int jumlah;
} buku; // variabel struktur
42
Modul Praktikum Algoritma dan Pemrograman 2
Lanjutan Contoh program 7.6.
cout << "\nDaftar buku :\n";
cout << "\nJudul" << setw(26) << "Pengarang" << setw(20) << "Jumlah\n";
#include <iostream>
#include <stdlib.h>
#define PANJANG 256
using namespace std;
int main()
{
FILE *f_teks;
char string[PANJANG];
char namafile[65];
cout << " " << string << "\r"; //tampilakan string ke layar
fclose(f_teks);
getchar();
}
43
Modul Praktikum Algoritma dan Pemrograman 2
Contoh program 7.8.
#include <iostream>
#include <stdlib.h>
#include <ctype.h>
#define PANJANG 256
using namespace std;
int main()
{
FILE *pf_input, *pf_output;
char string[PANJANG];
char namafile_inp[65], namafile_out[65];
44
Modul Praktikum Algoritma dan Pemrograman 2
Contoh program 7.9.
// menyimpan data yang diformat ke file, dengan fprint()
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
FILE *pformat;
char jawab;
struct
{
int x, y;
} koordinat;
if((pformat = fopen("KOORDINAT.DAT","w"))==NULL) //buka&ciptakan file
{
cout << "File tak dapat dibuat !!";
exit(1);
}
do {
cout << "\n Masukkan data koordinat (bilangan int)\r\n";
cout << " Format : Posisi X Posisi Y\r\n";
cout << " Contoh : 20 30 [ENTER]\r\n\n";
cin >> koordinat.x >> koordinat.y; cin.ignore();
fprintf(pformat, "%5d%5d\n", koordinat.x, koordinat.y); /* rekam ke
file */
cout << "\r\n Menyimpan data lagi (Y/T) : ";
jawab = getchar(); // baca tombol
}
while(jawab == 'Y'||jawab =='y');
fclose(pformat);
}
int main()
{
struct
{
int x, y;
} koordinat;
FILE *pkoord;
char kar; // menyimpan \n dari file
int kode; // memegang keluaran fungsi fscanf()
45
Modul Praktikum Algoritma dan Pemrograman 2
9. Pengaksesan File Biner Secara Acak
Untuk keperluan pengaksesan secara random (acak), fungsi yang digunakan adalah fseek( ).
Bentuk deklarasinya :
int fseek(FILE *ptr_file, long int offset, int posisi);
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
struct
{
char judul[26];
char pengarang[20];
int jumlah;
} buku; // variabel buku bertipe struktur
if(hasil_baca == 0)
{
cout << " Nomor record tak absah !!\r\n";
continue; // kembali ke while
}
cout << " Judul buku : " << buku.judul<<"\r\n";
cout << " Pengarang : " << buku.pengarang<<"\r\n";
cout << " Jumlah buku : " << buku.jumlah<<"\r\n";
cout << "\r\n Mau mencari informasi lagi (Y/T) : ";
ulang = getchar();
cout << endl;
}
fclose(pf);
}
46
Modul Praktikum Algoritma dan Pemrograman 2
Contoh program 7.12.
int main()
{
struct
{
char judul[26];
char pengarang[20];
int jumlah;
} buku; // variabel buku bertipe struktur
do {
cout << "\r\n Nomor record dari data yang ingin diubah : ";
cin >> nmr_record; cin.ignore();
ofset_byte = (nmr_record - 1) * sizeof(buku);
fseek(pf, ofset_byte, SEEK_SET);
hasil_baca = fread(&buku, sizeof(buku), SATU_RECORD, pf);
if(hasil_baca == 0)
cout<<" Nomor record tak absah !!\r\n";
else
{
cout << " Judul buku : " << buku.judul <<"\r\n";
cout << " Pengarang : " << buku.pengarang <<"\r\n";
cout << " Jumlah buku : " << buku.jumlah <<"\r\n";
cout << " Jumlah buku kini : "; cin >> buku.jumlah;
cin.ignore();
47
Modul Praktikum Algoritma dan Pemrograman 2
Bentuk deklarasinya :
it_open(char *filename, int mode);
it_close(int handle);
int main()
{
int file_inp, file_out;
long int byte_terbaca;
char string[PANJANG];
char namafile_inp[65], namafile_out[65];
48
Modul Praktikum Algoritma dan Pemrograman 2
Lanjutan Contoh program 7.13.
int main()
{
int kode;
char namafile[65];
kode = unlink(namafile);
if(kode == -1)
cout << " Gagal dalam menghapus !!file\r\n";
else
cout << " Ok.File sudah dihapus.\r\n";
getchar();
}
49
Modul Praktikum Algoritma dan Pemrograman 2
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int kode;
char namafilelama[65], namafilebaru[65];
if( kode == -1 )
cout<<" Gagal dalam mengganti nama file !!\r\n";
else
cout<<" Ok.Nama file sudah diganti !!\r\n";
getchar();
}
C. LANGKAH PRAKTIKUM
Buatlah tiga kelompok di plug Anda. Masing-masing kelompok menjalankan salah satu
nomor di bawah ini :
a. contoh program 7.1, 7.2, 7.7, 7.8, 7.13, 7.14 dan 7.15
b. contoh program 7.5, 7.6, 7.7, 7.8, 7.11, 7.12 dan 7.13
c. contoh program 7.3, 7.4, 7.9, 7.10, 7.13, 7.14, dan 7.15
D. TUGAS PRAKTIKUM
Dengan menggunakan metode penyimpanan dan pembacaan file per blok, buatlah sebuah
program untuk menyimpan dan membaca sebuah isi file yang bertipe struktur, sebagai
berikut:
struct NilaiProtek2 {
int nosiswa[5];
char nama[20];
int nilai[3];
};
Program Anda buat dengan ketentuan :
a. Buat 2 buah fungsi, yaitu fungsi untuk menuliskan ke file dan fungsi untuk membaca
sekaligus menampilkan ke layar isi dari file. Beri nama file tersebut dengan nama
“data.txt”
b. Banyaknya data nilai protek 2 yang disimpan ke file fleksibel (min. 10).
c. Buat program dalam bentuk tampilan menu sebagai berikut :
/// Program tulis dan baca dari file ///
/// MENU PILIHAN///
[1] Tulis ke file
[2] Baca dari file
[3] Keluar
===================
Masukkan Pilihan Anda [1..3] :
50