Anda di halaman 1dari 68

LEMBAR PENGESAHAN

Judul Praktikum : LATIHAN DASAR PEMROGRAMAN KOMPUTER BAHASA C++
Mata Kuliah : Pemrograman Komputer
Kode Mata Kuliah : RTT 207
Untuk Mahasiswa PS : Teknik Telekomunikasi
Jurusan : Teknik Elektro
Semester : 2 (genap)
Tahun Akademik : 2008/2009
Alokasi Waktu Kuliah : Praktikum 3 jam
Jumlah SKS : 2
Nama Penulis : Drs. Yoyok Heru P.I., M.T.
NIP. : 19680708 199403 1 002
Pangkat/Golongan : Penata Tk. I / IIID
Jabatan : Lektor
Instansi : Jurusan Teknik Elektro Politeknik Negeri Malang

Menyetujui, Malang, Juni 2009
Ketua Jurusan, Penulis,


Ir. TUNDUNG SUBALI PATMA, M.T. Drs. Yoyok Heru P.I., M.T.
NIP. 19590424 198803 1 002 NIP. 19680708 199403 1 002

Mengetahui,
Pembantu Direktur I,



LUCHIS RUBIANTO, LRSC, MMT.
NIP. 19660906 199203 1 003


YHPI -> hal : 1
KATA PENGANTAR


Segala puji dan syukur disampaikan kepada Allah SWT, atas limpahan rahmat, karunia
dan cahaya petunjuk-Nya yang tiada tara, sehingga buku praktikum “LATIHAN DASAR
PEMROGRAMAN KOMPUTER DENGAN BAHASA C++” untuk matakuliah Pemrograman
Komputer Program Studi Teknik Telekomunikasi dapat terselesaikan. Sholawat dan salam
semoga tetap terkunjuk pada junjungan Nabi Agung Muhammad SAW, keluarga, sahabat,
thabiit, dan thabiin, dengan ghirroh perjuangan yang tinggi dan keikhlasan yang mendalam
dalam memberantas kebodohan dan menegakkan kebenaran di muka bumi ini.
Buku ajar ini dimaksudkan untuk membantu dan memfasilitasi peserta didik dalam
mempelajari pemrograman komputer khususnya menggunakan bahasa C++. Salah satu
faktor yang menentukan keberhasilan sebuah pembelajaran di kelas adalah buku ajar oleh
karena itu keberadaan dan pemberdayaan buku ini menjadi penting dan merupakan salah satu
rujukan dalam menempuh matakuliah pemrograman computer. Sistem yang ditekankan dalam
buku ini lebih ditekankan pada proses latihan dasar dalam membuat program, dengan tujuan
membangkitkan daya nalar dan logika Mahasiswa.
Penulis berharap semoga buku ini dapat bermanfaat bagi mahasiswa program studi T.
Telekomunikasi yang menempuh matakuliah Pemrograman Komputer maupun semua
pembaca buku ini. Terimaksih bagi siapa saja yang sudi memberikan saran dan kritik atas
penulisan buku ini, karena kami yakin bahwa masih banyak kekurangan alam penuisan buku
ini.


Malang, Agustus 2009


Penulis

YHPI -> hal : 2
DAFTAR ISI


LEMBAR PENGESAHAN
KATA PENGANTAR 1
DAFTAR ISI 2
PENDAHULUAN 4
PRAKTIKUM I (STRUKTUR PROGRAM, I/O, BRANCHING IF ... ELSE...,
DAN OPERATOR AND, OR, XOR, DAN BITWISE) 7
I.1. Tujuan 7
I.2. Teori Dasar 7
I.2.1. Struktur Program C++ 7
I.2.2. Penggunaan Output Cout 8
I.2.3. Penggunaan Input Cin 8
I.2.4 Percabangan If …. Else….. 8
I.2.5 Operator And, Or, Xor, Dan Bitwise (Geser Kiri Dan Geser Kanan) 9
I.3 LATIHAN PROGRAM 9
I.3.1 Menentukan resultan Gaya dari dua buah input Gaya dan sudut terhadap
horizontal 10
I.3.2. Menentukan bilangan terbesar dari tiga input bilangan 10
I.3.3 Logika and dan or dari dua buah input bilangan 11
I.3.4 Logika and, or, dan xor, dan juga logika bitwise (geser kiri dan kanan) 11
I.4 SOAL (UJI KEMAMPUAN) 12
PRAKTIKUM II (LOOPING FOR..., WHILE...., DAN DO...... WHILE()) 13
II.1. Tujuan 13
II.2. Teori Dasar Perulangan Atau Looping 13
II.2.1. Perulangan Dengan For 13
II.2.2. Perulangan Dengan While 13
II.2.3. Perulangan Dengan Do ..... While 14
II.3. LATIHAN PROGRAM 15
II.4. SOAL (UJI KEMAMPUAN) 16
PRAKTIKUM III (VARIABEL ARRAY) 16
III.1. Tujuan 17
III.2. Teori Dasar Variabel Array 17
III.3. Latihan Program 18
III.3.1 Melatih logika array, menghitung nilai pangkat 3, dan menghitung
masing-masing nilai faktorialnya 18
III.3.2 Menentukan nilai terbesar dan nilai terkecil dari sejumlah data yang
diinputkan => perhatikan caranya! 19
III.4. SOAL (UJI KEMAMPUAN), 20
PRAKTIKUM IV (SORTIR DATA) 21
IV.1. Tujuan 21
IV.2. Teori Dasar Teknik Sortir Data 21
IV.3. LATIHAN PROGRAM 23
IV.4. SOAL (UJI KEMAMPUAN) 25
PRAKTIKUM V (MATRIK) 26
V.1. Tujuan 26
V.2. Teori Dasar 26
V.2.1. Penjumlahan Dan Pengurangan Matrik 26
V.2.2. Perkalian Matrik 26
V.2.2. Invers Matrik 27
V.2.3. Penyelesaian Persamaan Linier dengan Matrik 30
V.3. LATIHAN PROGRAM 31
V.3.1. Menjumlah dua buah matrik, dengan ordo masing-masing diinputkan,
kemudian mencek persyaratan ordo dua matrik tersebut, dan nilai
YHPI -> hal : 3
masing-masing elemen matrik diinputkan 31
V.3.2. Menentukan invers matrik dengan metode Reduksi gauss-Jordan,
dengan ordo diinputkan, kemudian mencek persyaratan ordo matrik
tersebut, dan nilai masing-masing elemen matrik bersiafat variatif 33
V.4. SOAL (UJI KEMAMPUAN) 35
PRAKTIKUM VI (STRING) 36
VI.1. Tujuan 36
VI.2. Teori Dasar String 36
VI.3. LATIHAN PROGRAM 37
VI.4. SOAL (UJI KEMAMPUAN) 39
PRAKTIKUM VII (KONVERSI BILANGAN) 40
VII.1. Tujuan 40
VII.2. Teori Dasar Konversi Bilangan 40
VII.3. LATIHAN PROGRAM 41
VII.4. SOAL (UJI KEMAMPUAN) 42
PRAKTIKUM VIII (STRUKTUR FUNGSI) 43
VIII.1. Tujuan 43
VIII.2. Teori Dasar Fungsi 43
VIII.3. LATIHAN PROGRAM 43
VIII.4. SOAL (UJI KEMAMPUAN) 45
PRAKTIKUM IX (OOP, STRUKTUR DAN CLASS) 46
IX.1. Tujuan 46
IX.2. Teori Dasar 46
IX.2.1 Variabel Obyek atau dikenal sebagai OOP (Object – Oriented Programming) 46
IX.2.2. STRUKTUR dan CLASS 47
IX.3. LATIHAN PROGRAM 47
IX.4. SOAL (UJI KEMAMPUAN) 50
PRAKTIKUM X (VARIABEL PUBLIC, PRIVATE, DAN OVERLOADING OPERATOR) 51
X.1. Tujuan 51
X.2. Teori Dasar Public, Private, dan Overloading operator 51
X.3. LATIHAN PROGRAM 51
X.4. SOAL (UJI KEMAMPUAN) 53
PRAKTIKUM XI (SISTEM FILE) 54
XI.1. Tujuan 54
XI.2. Teori Dasar Sistem File 54
XI.3. LATIHAN PROGRAM 55
XI.4. SOAL (UJI KEMAMPUAN) 56
PRAKTIKUM XII (SISTEM FILE LANJUTAN) 58
XI.1. Tujuan 58
XI.2. Teori Dasar Sistem File Lanjutan 58
XI.3. LATIHAN PROGRAM 58
XI.4. SOAL (UJI KEMAMPUAN) 62
PRAKTIKUM XIII dan XIV (PRESENTASI) 63
PRAKTIKUM XV (GRAFIK) 64
XV.1. Tujuan 64
XV.2. Teori Dasar Grafik 64
XV.3. LATIHAN PROGRAM 65
XV.4. SOAL (UJI KEMAMPUAN) 67
PRAKTIKUM XVI, XVII, DAN XVIII (PRESENTASI PROYEK) 68
YHPI -> hal : 4
PENDAHULUAN

Dasar Pemikiran Menggunakan Bahasa C++
Hingga saat ini, bahasa C masih digunakan untuk mengembangkan berbagai jenis
permasalahan pemrograman, dari level operating system (unix, linux, ms dos, dsb), aplikasi
perkantoran (spreadsheet), aplikai industri (interfacing, robot, …) bahkan sampai
pengembangan sistem pakar (expert system). Kompiler C juga telah tersedia di semua jenis
platform komputer, mulai dari Macintosh, UNIX, PC, Micro PC, sampai super komputer. C bisa
disebut bahasa pemrograman tingkat menengah (middle level programming language). Artinya
adalah kemampuan mengakses fungsi-fungsi dan perintah-perintah dasar bahasa
mesin/hardware (machine basic instruction set). Semakin tinggi tingkat bahasa pemrograman
(misalnya: java, delphi, visual basic,…), semakin mudahlah bahasa pemrograman dipahami
manusia, namun membawa pengaruh semakin berkurang kemampuan untuk mengakses
langsung instruksi dasar bahasa mesin. Demikian juga sebaliknya dengan bahasa
pemrograman tingkat rendah (misalnya: assembler), yang semakin sulit dipahami manusia dan
hanya berisi perintah untuk mengakses bahasa mesin. Dalam perspektif mudahnya dipahami
manusia, C bisa digolongkan dalam bahasa tingkat tinggi, namun C juga menyediakan
kemampuan yang ada pada bahasa tingkat rendah, misalnya operasi bit, operasi byte,
pengaksesan memori, dsb.
Ada beberapa dasar pemikiran yang melandasi penggunaan bahasa C sebagai bahasa
pemrograman di program studi T. Telekomunikasi Jurusan Tek. Elektro Politeknik Negeri
Malang, antara lain,
1. C adalah bahasa pemrograman yang paling populer saat ini
Dengan banyaknya programmer bahasa C, membawa pengaruh semakin mudahnya kita
menemukan pemecahan masalah yang kita dapatkan ketika menulis program dalam bahasa
C. Pengaruh positif lain adalah semakin banyaknya kompiler yang dikembangkan untuk
berbagai platform (berpengaruh ke portabilitas).
2. C adalah bahasa pemrograman yang memiliki portabilitas tinggi
YHPI -> hal : 5
Program C yang kita tulis untuk satu jenis platform, bisa kita kompile dan jalankan di platform
lain dengan tanpa ataupun hanya sedikit perubahan. Ini bisa diwujudkan dengan adanya
standarisasi ANSI untuk C (multi platform).
3. C adalah bahasa pemrograman dengan kata kunci (keyword) sedikit
Kata kunci disini adalah merupakan fungsi ataupun kata dasar yang disediakan oleh kompiler
suatu bahasa pemrograman. Hal ini membawa pengaruh semakin mudahnya kita menulis
program dengan C. Pengaruh lain dari sedikitnya kata kunci ini adalah proses eksekusi
program C yang sangat cepat.
4. C adalah bahasa pemrograman yang fleksibel
Dengan menguasai bahasa C, kita bisa menulis dan mengembangkan berbagai jenis
program mulai dari operating system, word processor, graphic processor, spreadsheets,
ataupun kompiler untuk suatu bahasa pemrograman.
5. C adalah bahasa pemrograman yang bersifat moduler
Program C ditulis dalam routine yang biasa dipanggil dengan fungsi. Fungsi-fungsi yang
telah kita buat, bisa kita gunakan kembali (reuse) dalam program ataupun aplikasi lain.

YHPI -> hal : 6
PRAKTIKUM I
STRUKTUR PROGRAM, I/O, BRANCHING IF ... ELSE...,
DAN OPERATOR AND, OR, XOR, DAN BITWISE


Asumsi:
Mahasiswa dianggap sudah pernah menempuh matakuliah Algoritma, sehingga pelajaran
dasar tentang algoritma dan struktur dasar pemrograman sudah dipahami.

I.1 TUJUAN
Tujuan latihan program pertemuan pertama ini adalah,
1. Mahasiswa mampu menuliskan dan menggunakan perintah output
2. Mahasiswa mampu menuliskan dan menggunakan perintah input
3. Mahasiswa mampu mengimplementasikan percabangan dasar if.... else.....
4. Mahasiswa mampu menggunakan operator and, or, Xor, dan bitwise dalam program.

I.2 TEORI DASAR
I.2.1 Struktur Program C++
Secara umum struktur program C++ adalah,
a. Blok baris komentar,
Baris komentar digunakan untuk mempermudah pemahaman dari statemen program,
ini tidak dieksekusi oleh program. Simbol yang digunakan untuk komentar ada dua
yaitu,
- komentar lebih dari satu baris menggunakan: /*…………komentar ………….*/
- komentar hanya satu baris menggunakan: //…….komentar
b. Blok baris include directive, baris ini diawali dengan tanda #,
#include directive adalah instruksi kompiler untuk memasukkan file yang diapit oleh
tanda <>, ke dalam surce file program.
Contoh : #include <iostream.h>, tujuannya memasukkan semua fungsi dasar yang
sudah disediakan di dalam iostream.h, sehingga fungsi-fungsi tersebut dikenal di dalam
program.
c. Blok baris deklarasi fungsi, sebuah fungsi didefinisikan dengan sebuah nama dan
dideklarasikan dengan sebuah type data. Kemudian nanti diimplementasikan dalam
sebuah function body,
contohnya adalah :
YHPI -> hal : 7
long pangkat(int a, int b); -> artinya kita mendefinisikan fungsi dengan nama
“pangkat”, dan mendeklarasikan dengan tipe data “long”, dengan parameter “a dan
b” masing-masing mempunyai tipe “int”.
d. Blok baris program utama, biasanya di awali dengan nama fungsi main(), di dalam blok
program utama bisa berisi deklarasi variabel, perintah-perintah program, fungsi buatan
dan defalut,….

I.2.2 Penggunaan output cout
cout akan mencetak semua komentar yang diapit oleh tanda petik dan mencetak nilai dari
variabel,
contoh:

output cuplikan program di atas adalah:


I.2.3 Penggunaan input cin
Perintah cin, dalam program menyebabkan program berhenti dan menunggu user
memasukkan sebuah nilai. Nilai yang dimasukkan akan di simpan pada variabel,
Contoh:

output cuplikan program di atas adalah:
, kursor berhenti disini dan meminta user untuk memasukkan
bilangan bulat, setelah ditekan enter niali tersebut akan
disimpan dengan nama variabel bil

I.2.4 Percabangan If …. else…..
Pernyataan if selalu diikuti oleh syarat logika dan berada di dalam tanda kurung mempunyai
dua cabang, yang pertama untuk kondisi syarat logika benar dan yang kedua untuk kondisi
syarat logika salah. Di tunjukkan oleh diagram alir berikut:
Nilainya adalah :_
cout<<”Nilainya adalah :”;
cin>>bil;
Nilainya adalah: 10
cout<<”Nilainya adalah :”;
a=10;
cout<<a;
YHPI -> hal : 8

Contoh penulisan:



Output cuplikan di atas adalah:


I.2.5 Operator and, or, Xor, dan bitwise (geser kiri dan geser kanan)
Ada dua bentuk penulisan operator and dan or yaitu,
a. Penulisan operator matematis, operator and dituliskan &, dan operator or dituliskan |
b. Penulisan sebagai syarat logika, and dituliskan &&, dan or dituliskan ||
Operator ini sebenarnya merupakan pembuktian dari materi digital tentang logika and, or, xor,
dan geser kiri maupun geser kanan,
Contoh : 5 and 6 akan mepunyai hasil -> 4,
Bukti : 5 mempunyai bilangan biner (101)
2
, dan 6 mempunyai bilangan biner (110)
2
, sehingga
101
110
------- and
(100)
2
-> (4)
10
Kemudian, 5 or 6 mempunyai hasil -> 7,
Bukti : 5 mempunyai bilangan biner (101)
2
, dan 6 mempunyai bilangan biner (110)
2
, sehingga
101
110
------- or
(111)
2
-> (7)
10

Coba anda buktikan pernyaan di bawah ini :
a. 3 and 4 = 0
b. 3 or 4 = 7
bilangan ini lebih dari 5
bil=10;
if (bil>5)
{cout <<”bilangan ini lebih dari 5”;
}
else
{cout<<”bilangan ini kurang dari 5”;
}
YHPI -> hal : 9
c. 5 Xor 4 = 1
d. 5 bitnya digeser kekiri sebayak 2 = 20
e. 5 bitnya digeser kekiri sebayak 2 = 1

I.3 LATIHAN PROGRAM :
Mahasiswa wajib mengerjakan latihan program ini, dengan cara menuliskan masing-
masing listing program pada editor C++, menyimpannya (sesuaikan nama file dengan
yang diminta), setelah itu menjalankan program, kemudian mempelajari proses logika
dilanjutkan dengan membandingkan antara output hasil logika terhadap output hasil
running komputer.

I.3.1 Menentukan resultan Gaya dari dua buah input Gaya dan sudut terhadap horizontal

*listing program
//latih1_1.cpp
//Menentukan nilai resultan dari dua gaya
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
#include<math.h>
void main()
{ clrscr();
int f1,f2,sd1,sd2;
float f1x,f2x,f1y,f2y,R;
cout<<"Masukkan gaya pertama : ";
cin>>f1;
cout<<"Sudut terhadap horizontal : ";
cin>>sd1;
cout<<"Masukkan gaya kedua : ";
cin>>f2;
cout<<"Sudut terhadap horizontal : ";
cin>>sd2;
f1x=f1*cos(sd1*3.14/180);
f1y=f1*sin(sd1*3.14/180);
f2x=f2*cos(sd2*3.14/180);
f2y=f2*sin(sd2*3.14/180);
R=sqrt(pow(f1x+f2x,2)+pow(f1y+f2y,2));
cout<<"Nilai resultan Gaya adalah : "<<R;
getch();
}

1.3.2 Menentukan bilangan terbesar dari tiga input bilangan

*listing program
//latih1_2.cpp
//program mencari bilangan terbesar dari tiga input
YHPI -> hal : 10
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
void main()
{ clrscr();
int bil1,bil2,bil3;
cout<<"Masukkan bilangan pertama : ";
cin>>bil1;
cout<<"Masukkan bilangan kedua : ";
cin>>bil2;
cout<<"Masukkan bilangan ketiga : ";
cin>>bil3;
if (bil1>bil2 && bil1>bil3) cout<<"yang terbesar adalah bilangan
pertama";
else if (bil2>bil3) cout<<"yang terbesar adalah bilangan kedua";
else cout<<"yang terbesar adalah bilangan ketiga";
getch();
}

I.3.3 Logika and dan or dari dua buah input bilangan

*listing program
//latih1_3.cpp
//operator logika,
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
#include<math.h>
void main()
{ clrscr();
int bil1,bil2;
cout<<"Masukkan bilangan pertama : ";
cin>>bil1;
cout<<"Masukkan Bilangan kedua : ";
cin>>bil2;
hasil_or=bil1 | bil2;
hasil_and=bil1 & bil2;
cout<<"bil1 di orkan bil2 = "<<hasil_or<<endl;
cout<<"bil1 di andkan bil2 = "<<hasil_and<<endl;
getch();
}

I.3.4 Logika and, or, dan xor, dan juga logika bitwise (geser kiri dan kanan)

*listing program

//latih1_4.cpp
//operator logika, bitwise
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
YHPI -> hal : 11
#include<math.h>
void main()
{ clrscr();
int bil1,bil2,has_or,has_and,has_xor,ges_kr,ges_kn;
cout<<"Masukkan bilangan pertama : ";
cin>>bil1;
cout<<"Masukkan Bilangan kedua : ";
cin>>bil2;
has_or=bil1 | bil2;
has_and=bil1 & bil2;
has_xor=bil1 ^ bil2;
cout<<bil1<<" or "<<bil2<<” = ”<<has_or<<endl;
cout<< bil1<<" and "<<bil2<<” = ”<<has_and<<endl;
cout<< bil1<<" Xor "<<bil2<<” = ”<<has_xor<<endl<<endl<<endl;
cout<<"masukkan bilangan lagi : ";
cin>>bil1;
cout<<"bitnya digeser : ";
cin>>bil2;
ges_kr=bil1<<bil2;
ges_kn=bil1>>bil2;
cout<<bil1<<" bitnya digeser kekiri sebanyak "<<bil2<<" =
"<<ges_kr<<endl;
cout<<bil1<<" bitnya digeser kekanan sebanyak "<<bil2<<" =
"<<ges_kn<<endl;
getch();
}


I.4 SOAL (UJI KEMAMPUAN),
Kerjakan setiap soal pada buku anda dengan cara membuat flowchart dan listing
program, masing-masing soal simpan dengan nama file SOALI_1.cpp, dan
SOALI_2 .cpp!
1. Buat program menghitung nilai pengganti R seri dan paralel, dengan banyaknya hambatan
variativ (inputkan), dan nilai masing-masing hambatan juga variativ (diinputkan).
2. Buat logika and, or, xor, dan geser kiri, geser kanan. Khusus untuk karakter alpabet ambil
kode asciinya.

YHPI -> hal : 12
PRAKTIKUM II
LOOPING FOR..., WHILE...., DAN DO...... WHILE()


II.1. TUJUAN
Materi pertemuan kedua dititik beratkan pada perulangan (looping), adapun tujuan latihan
program pertemuan kedua ini adalah,
1. Mahasiswa mampu menggunakan perulangan dengan for
2. Mahasiswa mampu menggunakan perulangan dengan while (syarat logika)..........
3. Mahasiswa mampu menggunakan perulangan dengan do ...... while (syarat logika)

II.2. TEORI DASAR
PERULANGAN atau Looping
Perulangan atau disebut Looping bertujuan mengulangi blok perintah sebanyak yang
dibutuhkan, filter banyaknya perulangan ditentukan oleh syarat logika, selama syarat logika
tersebut bernilai logika benar maka blok perintah tersebut akan diulang, dan akan berhenti jika
syarat logika bernilai salah.
II.2.1. Perulangan dengan for
Perulangan for biasanya digunakan untuk jumlah iterasi yang sudah pasti karena
increamentnya harus bernilai bulat, bentuk umum pernyataan for adalah,
for (inisialisasi; syarat perulangan; perubahan nilai counter)
{ .........................
Blok perintah
.........................
}

Contoh :



Output cuplikan program di atas:



II.2.2. Perulangan dengan while
Perulangan while merupakan bentuk pengulangan mirip dengan for, namun bentuknya lebih
sederhana, dan jumlah iterasinya bisa tidak langsung diketahui secara pasti,
1. Selamat Belajar C++
2. Selamat Belajar C++
3. Selamat Belajar C++
4. Selamat Belajar C++
for (i=1; i<5; i++)
{ cout<<i;
cout<<”. Selamat Belajar C++”<<endl;
}
YHPI -> hal : 13
karena increamentnya bisa bernilai floating point. Bentuk umum pernyataan while adalah:


While (syarat kondisi)
{ .........................
Blok perintah
.........................
}



Contoh :



Output cuplikan program di atas:


II.2.3. Perulangan dengan do ..... while
Perulangan do .... while merupakan bentuk pengulangan mirip dengan while, namun do ....
while memiliki syarat logika diletakkan setelah blok pernyataan, sehingga blok pernyataan
akan dieksekusi sebelum mendapat filter dari syarat logika dan akan diulang terus menerus
selama syarat logika benar. Bentuk umum pernyataan do ..... while adalah:


do
{ .........................
Blok perintah
.........................
} While (syarat kondisi)



Contoh :


i=1;
{ cout<<i;
cout<<”. Selamat Belajar C++”<<endl;
i=i+0.1; //dapat juga ditulis i++;
} while( i<1.4)
1.0. Selamat Belajar C++
1.1. Selamat Belajar C++
1.2. Selamat Belajar C++
1.3. Selamat Belajar C++
i=1;
while( i<1.4)
{ cout<<i;
cout<<”. Selamat Belajar C++”<< endl;
i=i+0.1; //dapat juga ditulis i++;
}
S y a r a t
k o n d i s i
B l o k
p e r n y a t a a n
T r u e
f a l s e
Syarat kondisi
Blok pernyataan
True
False
YHPI -> hal : 14
Output cuplikan program di atas:




II.3. LATIHAN PROGRAM,
II.3.1 Listing program ini Menampilkan bilangan dari 1-20, dengan tampilan setiap
bilangan yang habis dibagi dengan 5 diberi komentar ”bilangan ini habis dibagi 5”.

*listing program
//latih2_1.cpp
//program menampilan bilangan yang habis dibagi 5 mulai 1-20
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
void main()
{
int i;
for(i=1;i<=20;i=i+1)
{ cout<<i;
if(i%5==0) cout<<" -> "<<"bilangan ini habis dibagi 5"<<endl;
else cout<<endl;
}
getch();
}

II.3.2. Membuat deret bilangan faktorial sesuai dengan input bilangan

*listing program
//latih2_2.cpp
//program menampilan bilangan fakorial
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
void main()
{ clrscr();
int i=1,bil,j;
long int fak;
cout<<"Masukkan deret bilangan yang akan difaktorialkan :";
cin>>bil;
for(i=1;i<=bil;i+=1)
{cout<<i<<" ! = ";
fak=1;
for(j=1;j<=i;j+=1)
fak=fak*j;
1.0. Selamat Belajar C++
1.1. Selamat Belajar C++
1.2. Selamat Belajar C++
1.3. Selamat Belajar C++
YHPI -> hal : 15
cout<<fak<<endl;
}
getch();
}


II.3.3. Menghitung nilai kapasitansi pengganti paralel

//latih2_3.cpp
//program menghitung nilai kapasitansi pengganti paralel
#include <stdlib.h>
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
#include <math.h>

void main()
{
int i,jd;
float temp=0,cp,c;
cout<<" Menghitung nilai kapasitansi pengganti hubungan paralel"<<endl;
cout<<"jumlah kapasitor :";
cin>>jd;
i=1;
while (i<=jd)
{
cout<<i<<". Nilai kapasitansi kapasitor ke "<<i<<" :";
cin>>c;
temp=temp+1/c;
i=i+1;
}
cp=1/temp;
cout<<"Nilai kapasitansi pengganti paralel adalah : "<<cp;
getche();
}


II.4. SOAL (UJI KEMAMPUAN),
Kerjakan setiap soal di bawah ini dengan membuat flowchart dan listing
program, masing-masing soal simpan dengan nama file SOALII_1.cpp, dan
SOALII_2.cpp
1. Buatlah deret bilangan fibonanci dengan masukan bilangan pertama dan bilangan kedua,
dengan jumlah deret variatif (berdasarkan input)
2. Buat deret bilangan prima dengan bilangan awal dan jumlah deret variatif (sesuai dengan
input)


YHPI -> hal : 16
PRAKTIKUM III
VARIABEL ARRAY


III.1. TUJUAN
Pada dasarnya sebuah variabel hanya mampu menampung sebuah nilai, dengan
menggunakan variabel array maka variabel tersebut mampu menampung lebih dari satu nilai,
tujuan dari pertemuan ini adalah,
1. Mahasiswa mampu membedakan antara variabel tunggal dengan variabel array
2. Mahasiswa mampu menggunakan variabel array dalam mendesain sebuah program

II.2. TEORI DASAR
VARIABEL ARRAY
Variabel array adalah sebuah variabel yang mampu menampung data lebih dari satu nilai,
karena di dalam variabel tersebut diberi indeks yang berfungsi sebagai pemembeda antara
satu dengan yang lain. Salah satu teknik buffering adalah dengan cara menggunakan variabel
array. Struktur variabel array secara umum adalah:
nama_variabel[indeks]
contoh :


Jika cuplikan program di atas di jalankan dengan masukan berikut,



Bandingkan dengan contoh berikut:

Int bil[5],i,j;
for (i=1; i<=3; i++)
{ cout<<i;
cout<<”. Masukkan sebuah bilangan”;
cin>>bil[i]
}
cout<<”Nilai dari variabel bil adalah : ”;
for i=1; i<=3; i++) cout<<setw(5)<<bil[i];
1. Masukkan sebuah bilangan : 5 (inputkan)
2. Masukkan sebuah bilangan : 4 (inputkan)
3. Masukkan sebuah bilangan : 8 (inputkan)
Nilai dari variabel bil adalah: 8 8 8
Int bil,i;
for (i=1; i<=3; i++)
{ cout<<i;
cout<<”. Masukkan sebuah bilangan”;
cin>>bil
}
cout<<”Nilai dari variabel bil adalah : ”;
for (i=1; i<=3; i++) cout<<setw(5)<<bil;
YHPI -> hal : 17
Jika cuplikan program di atas di jalankan dengan masukan berikut,




III.3. LATIHAN PROGRAM,
III.3.1 Melatih logika array, dengan mengimplementasikan input bilangan secara variatif
sesuai dengan jumlah data yang dimasukkan, kemudian menghitung nilai pangkat
3, dan menghitung masing-masing nilai faktorialnya.

*listing program
//latih3_1.cpp
//Array dimensi satu
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
#include<iomanip.h>
#include<math.h>
void main()
{ clrscr();
int bil[10]; //deklarasi variable array dimensi satu
int i,jd,j;
float bp,fak;
cout<<"Masukkan jumlah data : ";
cin>>jd;
i=1;
while (i<=jd)
{ cout<<"Input data(anggka) ke "<<i<<" : ";
cin>>bil[i]; // input untuk variabel array
i=i+1;
}
/* Tampilan header */
cout<<endl<<endl<<endl;
cout<<"============================================"<<endl;
cout<<setiosflags(ios::left)<<setw(5)<<"No.";
cout<<setiosflags(ios::left)<<setw(15)<<"Bilangan (X)";
cout<<setiosflags(ios::left)<<setw(15)<<"X^3";
cout<<setiosflags(ios::left)<<setw(15)<<"X!"<<endl;
cout<<"============================================"<<endl;
i=1;
do
{ cout<<setiosflags(ios::left)<<setw(5)<<i;
cout<<setiosflags(ios::left)<<setw(15)<<bil[i];
bp=pow(bil[i],5);
cout<<setiosflags(ios::left)<<setw(15)<<bp;
1. Masukkan sebuah bilangan : 5 (inputkan)
2. Masukkan sebuah bilangan : 4 (inputkan)
3. Masukkan sebuah bilangan : 8 (inputkan)
Nilai dari variabel bil adalah: 5 4 8
YHPI -> hal : 18
fak=1;
for(j=1;j<=bil[i];j++)
fak=fak*j;
cout<<setiosflags(ios::left)<<setw(15)<<fak<<endl;
i++;
}while (i<=jd);


getch();
}


III.3.2 Menentukan nilai terbesar dan nilai terkecil dari sejumlah data yang diinputkan =>
perhatikan caranya!

*listing program

//latih3_2.cpp
//Array dimensi satu ,menentukan nilai terkecil dan nilai terbesar

#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
#include<iomanip.h>

#ifdef __cplusplus

int max (int value1, int value2);

int max(int value1, int value2)
{
return ( (value1 > value2) ? value1 : value2);
}
int min (int value1, int value2);

int min(int value1, int value2)
{
return ( (value1 < value2) ? value1 : value2);
}

#endif

void main()
{ clrscr();
int i,jd,bil[10],j,ntt,ntk;
cout<<"Masukkan jumlah data : ";
cin>>jd;
i=1;
while (i<=jd)
YHPI -> hal : 19
{ cout<<"Input data(anggka) ke "<<i<<" : ";
cin>>bil[i];
i=i+1;
}
/* Tampilan header */
cout<<endl<<endl<<endl;
clrscr();
cout<<"==========Data Yang diinputkan tadi adalah =========="<<endl;
i=1;
while (i<=jd)
{ cout<<"data ke "<<i<<" -> "<<bil[i]<<endl;
i=i+1;
}
//proses max dan min
i=1;
ntt=bil[1];
ntk=bil[1];
while (i<=jd-1)
{
ntt=max(ntt,bil[i+1]);
ntk=min(ntk,bil[i+1]);
i=i+1;
}
cout<<endl<<endl<<endl;
cout<<"================================="<<endl;
cout<<"Nilai terbesar (maximum) dari data diatas adalah : "<<ntt<<endl;
cout<<"Nilai terkecil (minimum) dari data diatas adalah : "<<ntk<<endl;

getch();
}


III.4. SOAL (UJI KEMAMPUAN),
Kerjakan setiap permasalahan dengan membuat flowchart dan listing program,
masing-masing simpan dengan nama file SOAL3_1.cpp, dan SOAL3_2.cpp
1. Inputkan sejumlah bilangan, dengan jumlah deret yang diinputkan, masukkan data secara
variatif, kemudian tentukan nilai tengahnya dari data tersebut.
2. Inputkan sejumlah bilangan, dengan jumlah deret yang diinputkan, kelompokkan data
sesuai dengan tingkat kemiripan data.


YHPI -> hal : 20
PRAKTIKUM IV
SORTIR DATA



IV.1. TUJUAN
Mengurutkan (sorting) data dari kecil ke besar atau sebaliknya sangat dibutuhkan dalam
merangking, mengelompokkan, maupun teknik pencarian data. Adapun tujuan dari pertemuan
ini adalah,
1. Mahasiswa mampu menyusun algoritma pensortiran data dengan metode insertion sot,
selection sort, dan exchange sort.
2. Mahasiswa mampu mengimplementasikan salah satu metode pensortiran data dalam
menrancang program.


IV.2. TEORI DASAR
TEKNIK SORTIR DATA
Dua hal yang dapat mempengaruhi kecepatan Algoritma Sortir yaitu, jumlah operasi
perbandingan yang dilakukan, dan jumlah operasi pemindahan data yang dilakukan. Proses
sortir data harus diperhatikan jumlah pemindahan data atau data movement yang dilakukan.
Hal ini penting karena pada proses sortir, isi data input akan berubah menjadi data output yang
sudah terurut. Oleh karena itu teknik pemindahan data yang dilakukan jelas akan
mempengaruhi kecepatan Algoritma.
Secara umum ada 3 teknik utama yang dapat dilakukan dalam melakukan Sortir. Ketiga teknik
tersebut adalah :
1. Sortir Penyisipan atau Insertion Sort, dengan algoritma sebagai berikut:
YHPI -> hal : 21

2. Sortir Pemilihan atau Selection Sort, mempunyai algoritma sebagai berikut,

3. Sortir Penukaran atau Exchange Sort, secara logika mempunyai algoritma berikut,
Keterangan:
i : adalah variabel counter
jum_dat : adalah jumlah data keseluruhan
x : variabel temporer sebagai buffer data
sementara
a : vaiabel buffering data (dalam bentuk
array)
Keterangan:
i ,k,j : adalah variabel counter
jum_dat : adalah jumlah data keseluruhan
x : variabel temporer sebagai buffer data
sementara
a : vaiabel buffering data (dalam bentuk
array)
YHPI -> hal : 22


Masing-masing teknik pensortiran data tersebut secara logika mempunyai beberapa kelebihan
dan kekurangan.


IV.3. LATIHAN PROGRAM,
IV.3.1. Mensortir data atau mengurutkan data, menggunakan metode penyisipan, yaitu
mensortir/mengurutkan data dengan membuffer data untuk hasil sortir dan
kemudian disisipi oleh data hasil seleksi berikutnya.

*listing program

//latih4_1.cpp
//sortir data metode penyisipan
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
#include<iomanip.h>
#include<math.h>
void main()
{ clrscr();
int k,i,jd,bil[10],j,temp;
float bp,fak;
cout<<"Masukkan jumlah data : ";
cin>>jd;
i=1;
while (i<=jd)
{ cout<<"Input data(anggka) ke "<<i<<" : ";
cin>>bil[i];
Keterangan:
I,j : adalah variabel counter
jum_dat : adalah jumlah data
keseluruhan
temp : variabel temporer sebagai buffer
data sementara
a : vaiabel buffering data (dalam bentuk
array)
YHPI -> hal : 23
i=i+1;
}
/* Tampilan header */
cout<<endl<<endl<<endl;
clrscr();
cout<<"==========Data sebelum disortir=========="<<endl;
i=1;
while (i<=jd)
{ cout<<"data ke "<<i<<" -> "<<bil[i]<<endl;
i=i+1;
}

//proses sortir data
for (i=2;i<=jd;i++)
{ temp=bil[i];
bil[0]=temp;
k=i-1;
while (temp<bil[k])
{ bil[k+1]=bil[k];
k=k-1;
}
bil[k+1]=temp;
}
cout<<endl<<endl<<endl;
cout<<"==========Data sesudah disortir=========="<<endl;
for(i=1;i<=jd;i+=1)
cout<<"data ke "<<i<<" -> "<<bil[i]<<endl;

getch();
}


IV.3.2. Mensortir data atau mengurutkan data, menggunakan metode penukaran, yaitu
mensortir/mengurutkan data dengan cara menukar hasil seleksi.


*listing program

//latih4_2.cpp
// sortir data metode penukaran
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
#include<iomanip.h>
#include<math.h>
void main()
{ clrscr();
int i,jd,bil[10],j,temp;
float bp,fak;
cout<<"Masukkan jumlah data : ";
YHPI -> hal : 24
cin>>jd;
i=1;
while (i<=jd)
{ cout<<"Input data(anggka) ke "<<i<<" : ";
cin>>bil[i];
i=i+1;
}
/* Tampilan header */
cout<<endl<<endl<<endl;
clrscr();
cout<<"==========Data sebelum disortir=========="<<endl;
i=1;
while (i<=jd)
{ cout<<"data ke "<<i<<" -> "<<bil[i]<<endl;
i=i+1;
}
//proses sortir data
i=1;j=1;
do
{ for(j=i+1;j<=jd;j++)
if (bil[i]>bil[j])
{ temp=bil[i];
bil[i]=bil[j];
bil[j]=temp;
}
i=i+1;
}while (i<=jd);
cout<<endl<<endl<<endl;
cout<<"==========Data sesudah disortir=========="<<endl;
for(i=1;i<=jd;i+=1)
cout<<"data ke "<<i<<" -> "<<bil[i]<<endl;

getch();
}


IV.4. SOAL (UJI KEMAMPUAN),
Kerjakan setiap permasalahan dengan membuat flowchart dan listing program,
masing-masing simpan dengan nama file SOAL4_1.cpp, dan SOAL4_2.cpp !
1. Inputkan sejumlah bilangan, dengan jumlah deret yang diinputkan, Sortirlah data secara
ascending atau descending, sesuai dengan pilihan yang diinputkan menggunakan metode
penyisipan!
2. Inputkan sejumlah bilangan, dengan jumlah deret yang diinputkan, Sortirlah data secara
ascending atau descending, sesuai dengan pilihan yang diinputkan menggunakan metode
pemilihan !
3. Buat kesimpulan kelebihan dan kekurangan dari ketiga metode sortir data tersebut!
YHPI -> hal : 25
PRAKTIKUM V
MATRIK



V.1. TUJUAN
Selain sebagai buffering biasa, variabel array juga bisa diaplikasikan untuk membuffer operasi
matrik, tujuan dari praktikum kelima ini adalah,
1. Mahasiswa mampu mengimplementasikan variabel array dalam buffering input data
matrik.
2. Mahasiswa mampu mengimplementasikan variabel array dalam buffering operasi
penjumlahan matrik.
3. Mahasiswa mampu mengimplementasikan variabel array dalam buffering operasi
perkalian matrik.
4. Mahasiswa mampu mengimplementasikan variabel array dalam buffering operasi invers
matrik.
5. Mahasiswa mampu mendesain sebuah program untuk menyelesaikan sebuah
persamaan linier dengan metode matrik.


V.2. TEORI DASAR
V.2.1. PENJUMLAHAN DAN PENGURANGAN MATRIK
Jumlalh dua matriks A dan B (ditulis A + B) adalah matriks yang didapat dengan menjumlahkan
setiap elemen A dengan elemen B yang bersesuaian (dengan syarat A dan B harus
mempunyai ordo sama). Kesimpulan penjumlahan matrik mempunyai syarat bahwa matrik
yang dijumlahkan harus mempunyai ordo yang sama, dan berlaku hukum komutatif.

Pengurangan matrik secara prinsip sama dengan penjumlahan matrik.


V.2.2. PERKALIAN MATRIK
Perkalian matrik mempunyai beberapa syarat diantaranya adalah, tidak berlaku hukum
komutatif, dan jumlah kolom matrik pertama harus sama dengan jumlah baris matrik kedua.
Perkalian antara k suatu skalar dengan A suatu matriks, maka dihasilkan kA adalah matriks
yang diperoleh dengan mengalikan setiap elemen A dengan k.

YHPI -> hal : 26
Perkalian antara dua matriks A dan B terdefinisi, dapat dioperasikan jika jumlah kolom A =
jumlah baris B, dengan hasil suatu matriks C yang berukuran < baris
matrik A
x kolom
matrik B
>,
Dengan aturan sebagai berikut,

Contoh,
a.
matirk dan matrik , dengan melakukan perkalian,


b.


V.2.2. INVERS MATRIK
Ada dua cara mencari invers matriks yaitu:
1. Menggunakan rumus,

det(A) : determinan matrik A
adj(A) : adjoin matrik A
Determinan Matrik berordo 2 x 2, Misal A = maka det(A)= det
= ad – bc,
Determinan Matriks berordo 3 x 3 misalnya,
, ,
Determinan Matriks melalui cara di atas, diperoleh dengan menjumlahkan hasil kali pada
panah-panah yang mengarah ke kanan dan mengurangkan hasil kali panah-panah yang
mengarah ke kiri. Maka det(A) = acf + bfg + cdh – ceg – afh – bdi.
YHPI -> hal : 27
Adjoin diperoleh dari transpose kofaktor matrik A, misalnya matrik tersebut dapat dibentuk
matriks baru, misalnya matriks C yang elemennya kofaktor adalah :

dengan masing-masing elemen kofaktor diperoleh dari:
A
1,1
= +[A
22
.A
33
– A
23
.A
32
]; A
12
= -[A
21
.A
33
– A
23
.A
31
]; A
13
=+[A
21
.A
32
– A
22
.A
31
]
A
2,1
= +[A
12
.A
33
– A
13
.A
32
]; A
22
= -[A
11
.A
33
– A
13
.A
31
]; A
23
=+[A
11
.A
32
– A
12
.A
31
]
A
3,1
= +[A
12
.A
23
– A
13
.A
22
]; A
32
= -[A
11
.A
23
– A
13
.A
21
]; A
13
=+[A
11
.A
22
– A
12
.A
21
]
Adj(A) = C
T
=










33 23 13
32 22 12
31 21 11
A A A
A A A
A A A



2. Menggunakan metode Reduksi Gauss-Jordan matriks, ada beberapa syarat yang harus
dipenuhi, yaitu:
a) Matrik membentuk bujur sangkar (baris dan kolom harus sama)
b) Matrik memiliki bentuk eselon baris
c) Entri bukan nol pertama dalam setiap baris adalah satu-satunya entri bukan nol dalam
kolom yang bersangkutan,
d) Matrik harus singular, artinya tidak ada kesamaan dalam setaip barisnya atau kesamaan
dalam setiap kolomnya
e) tidak ada elemen dalam satu baris atau dalam satu kolom mempunyai nilai nol.
Adapun langkah-langkanya adalah,
- Pasang matrik identitas dibelakang matirk sumber, dengan baris dan kolom sama
dengan matrik sumber
- Arahkan matrik sumber menjadi matrik identitas, dan matrik identitas menjadi matrik
baru (menjadi invers matrik sumber), dengan cara:
a. Tentukan elemen 1,1 menjadi poros, sehingga baris pertama menjadi baris poros
b. Bagi semua elemen baris poros dengan nilai elemen 1,1 (poros), sehingga elemen
poros akan bernilai 1
c. Semua elemen kolom dalam poros tersebut menjadi elemen target pereduksi
(pengurang) sebanyak kelipatan masing-masing elemen baris poros terhadap baris
masing-masing elemen target, reduksi ini bertujuan merubah nilai kolom poros
menjadi nol.
d. Ulangi komponen a-c untuk poros elemen 2,2 kemudian 3,3 danseterusnya.
YHPI -> hal : 28
Contoh, misal kita mempunyai matrik A dengan nilai berikut,

Penyelesaian:
- Langkah 1, tuliskan matrik identitas dibelakang matrik A,
1 0 0
0 1 0
0 0 1
2 2 1
3 2 0
3 3 1
− − −
− −
Karena kebetulan elemen poros sudah bernilai 1 maka sudah tidak ada perubahan
nilainya.
- Langkah 2, elemen kolom poros pertama yaitu elemen A
2,1
sudah bernilai nol sehingga
tidak perlu ada reduksi, berikutnya adalah elemen kolom poros ke dua, sehingga nilai
masing-masing elemen barisnya akan berubah menjadi :
-1 berubah menjadi : -1 – (-1 * 1)-> 0
-2 berubah menjadi : -2 – (-1 * 3)-> 1
-2 berubah menjadi : -2 – (-1 * 3)-> 1
0 berubah menjadi : 0 – (-1 * 1)-> 1
0 berubah menjadi : 0 – (-1 * 0)-> 0
1 berubah menjadi : 1 – (-1 * 0)-> 1
sehingga matriknya akan menjadi:
1 0 1
0 1 0
0 0 1
1 1 0
3 2 0
3 3 1
− −
- Langkah 3, tentukan elemen 2,2 menjadi poros, sehingga baris ke dua menjadi baris
poros, bagi masing-masing elemen baris poros dengan nilai elemen poros, sehingga
nilainya akan berubah manjadi :
0 berubah menjadi : 0/(-2) -> 0
-2 berubah menjadi : -2/(-2) -> 1
-3 berubah menjadi : -3/(-2) -> 3/2
0 berubah menjadi : 0/(-2) -> 0
1 berubah menjadi : 1/(-2) -> -1/2
0 berubah menjadi : 0/(-2) -> 0
sehingga matriknya akan menjadi:
poros
baris poros
elemen target
YHPI -> hal : 29
1 0 1
0 1/2 0
0 0 1
1 1 0
3/2 1 0
3 3 1


- Langkah 4, sama seperti langkah 2, akan diperoleh matrik yang bernilai,
2 - 1 2 -
0 1/2 0
0 3/2 - 1
1 0 0
3/2 1 0
3/2 - 0 1

- Langkah 5, sama dengan langkah 3 dan 4, diperoleh matrik,
2 - 1 2 -
3 1 - 3
3 - 0 2 -
1 0 0
0 1 0
0 0 1

Sehingga diperoleh bahwa invers matrik A->A
-1
adalah,
2 - 1 2 -
3 1 - 3
3 - 0 2 -
1
=

A

V.2.3. Penyelesaian Persamaan Linier dengan Matrik,
Perhatikan sistem persamaan linier berikut :
a
11
x
1
+ a
12
x
2
+a
13
x
3
+ ... a
1n
x
n
= b
1
;
a
21
x
1
+ a
22
x
2
+a
23
x
3
+ ... a
2n
x
n
= b
2
;
.
.
a
n1
x
1
+ a
n2
x
2
+a
n3
x
3
+ ... a
nn
x
n
= b
n
;
Dengan menggunakan matriks persamaan di atas dapat dibuat dalam bentuk matriks :

YHPI -> hal : 30

Jika kedua ruas persamaan matriks dikalikan dengan invers matriks A, maka akan diperoleh :
A
-1
*A*x=A
-1
*b, dan
A
-1
*A = I; I * x =A
-1
* b -> x= A
-1
* b


V.3. LATIHAN PROGRAM,
V.3.1. Menjumlah dua buah matrik, dengan ordo masing-masing diinputkan,
kemudian mencek persyaratan ordo dua matrik tersebut, dan nilai
masing-masing elemen matrik diinputkan,

*listing program

//latih5_1.cpp
//penjumlahan matrik dengan ordo dinamik
#include <iostream.h>
#include <conio.h>
#include <iomanip.h>
#include <stdio.h>
#include <stdlib.h>

void main()
{ int a[5][5],b[5][5],c[5][5];
int i,j,bar_a,kol_a,bar_b,kol_b,x=2,y,x2;
char atem[6],btem[6];
int put;
do
{ clrscr();

/* Proses input ordo matrik */
cout<<"Input Jumlah Baris matrik A :";
scanf("%d",&bar_a);
cout<<"Input Jumlah kolom matrik A :";
scanf("%d",&kol_a);
cout<<"Input Jumlah Baris matrik B :";
scanf("%d",&bar_b);
cout<<"Input Jumlah Baris matrik B :";
scanf("%d",&kol_b);
if (bar_a==bar_b && kol_a==kol_b)
YHPI -> hal : 31
put=0;
else
put=1;
} while(put==1);

/* Proses Input Data matrik */
cout<<"\n Masukkan Nilai natrik :"<<endl;
for (i=1;i<=bar_a;i++)
for (j=1;j<=kol_a;j++)
{ cout<<"A["<<i<<","<<j<<"] = ";
cin.getline(atem,sizeof(atem));
cout<<"B["<<i<<","<<j<<"] = ";
cin.getline(btem,sizeof(btem));
a[i][j] = atoi(atem);
b[i][j] = atoi(btem);
cout<<endl;
}

/* Proses Penjumlahan matrik */
for (i=1;i<=bar_a;i++)
for (j=1;j<=kol_a;j++)
{ c[i][j]=a[i][j]+b[i][j];
}

/* Proses Menampilkan hasil Penjumlahan matrik */
y=wherey();//mengambil posisi baris kursor dan nilainya disimpan pada y
gotoxy(x+5,y+1);
cout<<"A + B =";
x=wherex()+1; //mengambil posisi kolom dan nilainya + 1 disimpan di x

x2=x-2;
for (i=1;i<=bar_a;i++)
for (j=1;j<=kol_a;j++)
{ gotoxy(x+3*(j-1),y+2*(i-1));
cout<<a[i][j];
}
x=wherex();
gotoxy(x+5,y+1);cout<<"+";
x=wherex()+5;
for (i=1;i<=bar_a;i++)
for (j=1;j<=kol_a;j++)
{ gotoxy(x+3*(j-1),y+2*(i-1));
cout<<b[i][j];
}
y=wherey()+5;
gotoxy(x2,y+1);cout<<"=";
for (i=1;i<=bar_a;i++)
for (j=1;j<=kol_a;j++)
{ gotoxy(x2+3*(j),y+2*(i-1));
cout<<c[i][j];
YHPI -> hal : 32
}

getche();
}


V.3.2. Menentukan invers matrik dengan metode Reduksi gauss-Jordan, dengan
ordo diinputkan, kemudian mencek persyaratan ordo matrik tersebut, dan
nilai masing-masing elemen matrik bersiafat variatif (diinputkan),

//latih5_2.cpp
//Menentukan nilai invers matrik !
#include <iostream.h>
#include <conio.h>
#include <iomanip.h>
#include <stdio.h>
#include <stdlib.h>

void main()
{ float a[10][10],b[10][10],c[10][10],d;
int i,ii,j,jj,bar_a,kol_a,bar_b,kol_b,x=2,y,x2,k;
char atem[10],btem[10];
int put;
do
{ clrscr();

/* Proses input ordo matrik */
cout<<"Input Jumlah Baris matrik A :";
scanf("%d",&bar_a);
cout<<"Input Jumlah kolom matrik A :";
scanf("%d",&kol_a);
if (bar_a==kol_a)
put=0;
else
{
put=1;
cout<<"Maaf Jumlah baris harus sama dengan jumlah kolom (tekan enter untuk
memasukkan data kembali), OK!";
getche();
}
} while(put==1);

/* Proses Input Data matrik */
cout<<"\n Masukkan Nilai natrik :"<<endl;

for (i=1;i<=bar_a;i++)
for (j=1;j<=kol_a;j++)
{ cout<<"A["<<i<<","<<j<<"] = ";
cin.getline(atem,sizeof(atem));
YHPI -> hal : 33
a[i][j] = atoi(atem);
c[i][j] = a[i][j];
if (i==j)
b[i][j] =1;
else
b[i][j]=0;
cout<<endl;
}

/* Proses Menampilkan bentuk matrik */
clrscr();
cout<<"======== Matrik A bernilai :===============";
y=wherey()+5;//mengambil posisi baris kursor dan nilainya disimpan pada y
gotoxy(x+7,y);
x=wherex()+1; //mengambil posisi kolom dan nilainya + 1 disimpan di x
x2=x-2;
for (i=1;i<=bar_a;i++)
for (j=1;j<=kol_a;j++)
{ gotoxy(x+3*(j-1),y+2*(i-1));
cout<<a[i][j];
}
y=wherey()-((wherey()-y)/2);
gotoxy(5,y);
cout<<"A =";
getche();

// proses reduksi Metode Gauss-Jordan
for (i=1;i<=bar_a;i++)
for (j=i;j<=i;j++)
{ if (a[i][j]!=1)
{ for (k=1;k<=kol_a;k++)
{ b[i][k]=b[i][k]/c[i][j];
a[i][k]=a[i][k] /c[i][j]; //merubah nilai poros menjadi satu
}
for (k=1;k<=kol_a;k++)
c[i][k]=a[i][k];
}
for (ii=1;ii<=bar_a;ii++)
if (ii!=j)
if (a[ii][j]!=0)
{
d=a[ii][j];
for (jj=1;jj<=kol_a;jj++)
{
b[ii][jj]=b[ii][jj]-(d*b[i][jj]);
a[ii][jj]=a[ii][jj]-(d*a[i][jj]);
}
for (jj=1;jj<=kol_a;jj++)
c[ii][jj]=a[ii][jj];
}
YHPI -> hal : 34
}

/* Proses Menampilkan hasil invers matrik */
clrscr();
y=wherey()+10;//mengambil posisi baris kursor dan nilainya disimpan pada y
gotoxy(x+1,y);
x=wherex()+15; //mengambil posisi kolom dan nilainya + 1 disimpan di x
x2=x-2;
for (i=1;i<=bar_a;i++)
for (j=1;j<=kol_a;j++)
{ gotoxy(x+8*(j-1),y+2*(i-1));
cout<<setw(4)<<setprecision(2)<<b[i][j];
}
y=wherey()-((wherey()-y)/2);
gotoxy(5,y);
cout<<"invers matirk A =";

gotoxy(50,30);
getche();
}



V.4. SOAL (UJI KEMAMPUAN),
Kerjakan setiap permasalahan dengan membuat flowchart dan listing program,
masing-masing simpan dengan nama file SOAL5_1.cpp, SOAL5_2.cpp, dan
Soal5_3.cpp
1. Buat program untuk menentukan nilai invers dari suatu matrik dengan metode 1!
2. Buat program perkalian dua buah matrik, dengan input ordo, dan pengecekan syarat ordo.
Kemudian inputkan anggota masing-masing matrik.
3. Buat program untuk menentukan nilai persamaan linier, dengan masing-masing koefisien
diinputkan!


YHPI -> hal : 35
PRAKTIKUM VI
STRING


VI.1. TUJUAN
Data string bisa berupa sekumpulan angka, campuran antara angka dengan huruf,
sekumpulan huruf, dan campuran angka, huruf, dengan karakter khusus, tujuan dari praktikum
keenam ini adalah,
1. Mahasiswa mampu membedakan tipe data string, karakter, atau angka.
2. Mahasiswa mampu mengimplementasikan fungsi operasi string untuk mendesain
sebuah program .


VI.2. TEORI DASAR
STRING
String adalah tipe data yang merupakan kumpulan dari sebuah karakter, string dapat berupa
konstanta atau variabel. Penulisan ekspresi string diapit oleh tanda petik (”...”), sebagai contoh,
cout<<”bahasa ProgramC++”;. Setiap karakter menempati memori sebesar 1 byte. Prototipe
string terdapat pada file header <stdlib.h> dan <string.h>.
Beberapa fungsi operasi string:

No Fungsi Pemakaian Keterangan
1 strlen(str) str=strlen(”Indonesia”) Hasilnya adalah variabel str bernilai 9,
Fungsi ini digunakan untuk menghitung
panjang string dari variabel str
2 strcat(str1,str2) strcat(a,”RAYA”) Hasilnya adalah variabel a bernilai ”RAYA”
jika nilai awal a adalah kosong->””,
Fungsi ini digunakan untuk menggabungkan
nilai dari variabel str1 dengan nilai dari
variabel str2
3 strcmp(str1,str2) a=strcmp(”A”,”D”) Hasilnya adalah variabel a bernilai -3,
Fungsi ini digunakan untuk membandingkan
string str1 dengan str2 dengan hasil,
- negatif jika str1<str2 (kode ASCII)
- nol jiak str1=str2
- positif jika str1>str2
4 stricmp(str1,str2) a=stricmp(”a”,”A”) Hasilnya adalah variabel a bernilai 0,
Fungsi ini sama dengan strcmp tetapi untuk
YHPI -> hal : 36
stricmp tidak membedakan huruf besar atau
huruf kecil.
5 strupr(str) str=”indonesia”;
strupr(str);
Hasilnya adalah variabel str bernilai
”INDONESIA”,
Fungsi ini digunakan untuk mengubah nialai
variabel str menjadi huruh kapital.
6 strlwr(str) str=”INDONESIA”;
strlwr(str);
Hasilnya adalah variabel str bernilai
”indonesia”,
Fungsi ini digunakan untuk mengubah nialai
variabel str menjadi huruh kecil.
7 strrev(str) str=”1234”
strrev(str)
Hasilnya adalah variabel str bernilai ”4321”,
Fungsi ini digunakan untuk membalik nilai
string variabel str.
8 atoi(val) a=atoi(”500”) Hasilnya adalah variabel a bernilai 500 buksn
”500”,
Fungsi ini digunakan untuk memgkonversikan
nilai angka dengan tipe string menjadi nilai
angka bertipe numerik



VI.3. LATIHAN PROGRAM,
VI.3.1. Memasukkan sebuah data dengan type data string menggunakan cin,
kemudaian jalankan program dan inputkan dengan kata tanpa spasi, coba
jalan lagi program tadi kemudian masukkan dua buah kata dengan spasi,
perhatikan hasilnya, dan bandingkan.

*listing program

//latih6_1.cpp
//Input data Type ==String== tanpa space
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
#include<iomanip.h>
#include<math.h>
void main()
{ clrscr();
char nama[10];
cout<<"masukkan sebuah nama orang : ";
cin>>nama; //masukkan data string simpan dalam variable nama
YHPI -> hal : 37
cout<<endl<<endl<<endl;
cout<<"nama yang anda masukkan adalah : "<<nama;

getch();
}


VI.3.2. Memasukkan sebuah data dengan type data string menggunakan cin.get,
kemudaian jalankan program dan inputkan dengan kata tanpa spasi, coba
jalan lagi program tadi kemudian masukkan dua buah kata dengan spasi,
perhatikan hasilnya, dan bandingkan.

*listing program

//latih6_2.cpp
//Input data Type ==String==
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
#include<iomanip.h>
#include<math.h>
void main()
{ clrscr();
char nama[20];
cout<<"masukkan sebuah nama orang : ";
cin.get(nama,20);// bisa juga ditulis cin.get(nama,sizeof(nama))
cout<<endl<<endl<<endl;
cout<<"nama yang anda masukkan adalah : "<<nama;

getch();
}



VI.3.3. Memasukkan sebuah data dengan type data string menggunakan gets,
kemudaian jalankan program dan inputkan dengan kata tanpa spasi, dan
implementasi array pada string. Perhatikan pola dan bentuknya!

*listing program

//latih6_3.cpp
//Input data Type ==String== lebih dari satu input + array dua dimensi
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<iostream.h>
#include<iomanip.h>
#include<string.h>

YHPI -> hal : 38
main()
{ clrscr();
int jd,i,j;
char nim[5][20],nama[5][20],alm[5][20],jds[5];

cout<<"Masukkan jumlah data : ";
gets(jds);
jd=atoi(jds);
for(i=1;i<=jd;i++)
{
cout<<i<<". N I M = ";
gets(&nim[i-1][0]);
cout<<" Nama = ";
gets(&nama[i-1][0]);
cout<<" Alamat = ";
gets(&alm[i-1][0]);

}

clrscr();
cout<<endl<<endl<<endl;
cout<<"Data yang anda masukkan tadi adalah "<<endl;
cout<<"========================================================"<<endl;
cout<<setw(5)<<setiosflags(ios::left)<<"No.";
cout<<setw(15)<<setiosflags(ios::left)<<"N I M";
cout<<setw(20)<<setiosflags(ios::left)<<"Nama";
cout<<setw(20)<<setiosflags(ios::left)<<"Alamat"<<endl;
cout<<"========================================================"<<endl;
for(j=1;j<=jd;j++)
{ cout<<setw(5)<<setiosflags(ios::left)<<j;
cout<<setw(15)<<setiosflags(ios::left)<<&nim[j-1][0];
cout<<setw(20)<<setiosflags(ios::left)<<&nama[j-1][0];
cout<<setw(20)<<setiosflags(ios::left)<<&alm[j-1][0]<<endl;
}

getch();
}

VI.4. SOAL (UJI KEMAMPUAN),
Kerjakan setiap permasalahan dengan membuat flowchart dan listing program,
masing-masing simpan dengan nama SOAL6_1a, SOAL6_1b), dan SOAL6_1c
VI.4.1. Buat program untuk mensortir data bertipe string dengan metode penyisipan
VI.4.2. Buat program untuk mensortir data bertipe string dengan metode penukaran
VI.4.3. Buat program untuk mensortir data bertipe string dengan metode pemilihan


YHPI -> hal : 39
PRAKTIKUM VII
KONVERSI BILANGAN


VII.1. TUJUAN
Secara umum sistem bilangan yang digunakan dalam proses komputerisasi (interfacing,
mikroprosesor, pengolahan citra, dan pengolahan data) adalah, bilangan biner, bilangan octal,
bilangan desimal, dan sistem bilangan heksadesimal. Tujuan dari praktikum ketujuh ini adalah,
1. Mahasiswa mampu mengkonversikan bilangan biner ke desimal atau sebailknya, heksa
ke desimal atau sebaliknya, biner ke heksadesimal atau sebaliknya, ...
2. Mahasiswa mampu menyusun algoritma untuk konversi bilangan.
3. Mahasiswa mampu mengimplementasikan algoritma konversi bilangan dalam membuat
sebuah program


VII.2. TEORI DASAR
Konversi Bilangan
Sistem bilangan yang umum digunakan oleh manusia adalah sistem biilangan desimal, yaitu
sistem bilangan yang menggunakan 10 macam symbol untuk mewakili suatu besaran. Sistem
ini banyak digunakan karena manusia mempunyai sepuluh jari untuk dapat membantu
perhitungan. Lain halnya dengan komputer, sistem bilangan yang digunakan oleh komputer
adalah bilangan biner, yang terdiri dari dua symbol yaitu 0 dan 1. Karena logika di komputer
diperoleh dari bentuk elemen dua keadaan yaitu off (tidak ada arus) dan on (ada arus),
sehingga memanfaatkan pengkodean system bilangan biner.
Konversi bilangan adalah suatu proses dimana satu system bilangan dengan basis tertentu
akan dijadikan bilangan dengan basis yang lain.

1. Konversi dari bilangan desimal ke biner
Yaitu dengan cara membagi bilangan desimal dengan dua kemudian diambil sisa
pembagiannya.
Contoh :

43 (10) = …..(2)
43 : 2 = 21 + sisa 1
21 : 2 = 10 + sisa 1
10 : 2 = 5 + sisa 0
5 : 2 = 2 + sisa 1
2 : 2 = 1 + sisa 0 101011(2) ditulis dari bawah ke atas
YHPI -> hal : 40

2. Konversi bilangan Desimal ke Oktal
Yaitu dengan cara membagi bilangan desimal dengan 8 kemudian diambil sisa
pembagiannya
Contoh :
385 ( 10 ) = ….(8)
385 : 8 = 48 + sisa 1
48 : 8 = 6 + sisa 0
601 )
3. Konversi bilangan Desimal ke Hexadesimal
Yaitu dengan cara membagi bilangan desimal dengan 16 kemudian diambil sisa
pembagiannya
Contoh :
1583 ( 10 ) = ….(16)
1583 : 16 = 98 + sisa 15
96 : 16 = 6 + sisa 2
62F (16)


VII.3. LATIHAN PROGRAM,
VII.3.1 Mengkonversikan bilangan desimal ke dalam bilangan biner.

*listing program

//latih7_1.cpp
//mengkonversikan bilangan desimal ke biner
#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <iomanip.h>
#include <string.h>


void main()
{ int bildes,shb,hb;
char shbs[1],kshb[20];
clrscr();
cout<<"Masukkan sebuah bilangan Desimal : ";
cin>>bildes;
strcpy(kshb,"");
YHPI -> hal : 41
do
{ hb=bildes/2;
shb= bildes % 2;
itoa(shb,shbs,10);
strcat(kshb,shbs);
bildes=hb;
}while (bildes>1);
itoa(hb,shbs,10);
strcat(kshb,shbs);
strrev(kshb);
cout<<"konversi ke bilangan dasar dua (biner) = "<<kshb;
getche();
}


VII.4. SOAL (UJI KEMAMPUAN),
Kerjakan setiap permasalahan dengan membuat flowchart dan listing program,
masing-masing simpan dengan nama file SOAL7_1, SOAL7_2, dan SOAL7_3.
1. Buat program konversi bilangan desimal ke dalam bilangan hexadesimal.
2. konversi bilangan hexa ke dalam bilangan biner,
3. konversi bilangan biner ke dalam bilangan hexadesimal,


YHPI -> hal : 42
PRAKTIKUM VIII
STRUKTUR FUNGSI


VIII.1. TUJUAN
Pembuatan fungsi dalam sebuah program bertujuan menghindari penulisan subroutin yang
berulang-ulang, sehingga akan memperkecil kapasitas memori, dan juga mempermudah
penggunaan. Tujuan dari praktikum kedelapan ini adalah,
1. Mahasiswa mampu menyusun routin kegiatan dalam sebuah fungsi
2. Mahasiswa mampu mengimplementasikan fungsi ke dalam sebuah desain program

VIII.2. TEORI DASAR
Fungsi
Fungsi berisi sejumlah parameter yang dikemas dalam sebuah nama. Nama ini selanjutnya
dapat dipanggil beberapa kali di beberapa tempat dalam program. Tujuan pembuatan sebuah
fungsi adalah: mempermudah pengembangan program, dan menghemat kapasitas program
jika terdapat suatu rutin yang sama di ualang-ulang pada tempat yang berbeda. Struktur fungsi
adalah sebagai berikut:
deklarasi fungsi()
main()
{ penggunaan fungsi()
.............................
.............................
............................
}
Isi dari fungsi()
{ .........................
.........................
.........................
}


VIII.3. LATIHAN PROGRAM :
VIII.3.1. Implementasi fungsi tanpa nilai kembalian (return), perhatikan pola dan
penggunaanya!

*listing program

//latih8_1.cpp
//fungsi tanpa nilai kembalian (return)
YHPI -> hal : 43
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <iomanip.h>

void garis();
void main()
{ cout<<setiosflags(ios::left);
garis();
cout<<setw(40)<<"Nama Alamat Tgl Lahir"<<endl;
garis();
cout<<setw(40)<<"didik Malang 27-01-1980"<<endl;
getche();
}
void garis()
{ cout<<"============================================"<<endl;
}


VIII.3.2. Implementasi fungsi dengan nilai kembalian (return value), implementasi
bilangan pangkat dua
*listing program

//latih8_2.cpp
//fungsi dengan nilai kembalian (return value)
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <iomanip.h>

long kuadrat(int i);
void main()
{ int k;
clrscr();
cout<<"nilai kuadrat dari 9 adalah:";
cout<<kuadrat(9);
getche();
}

long kuadrat(int i)
{ long x;
x=i*i;
return(x);
}


VIII.3.3. Implementasi fungsi dengan nilai kembalian (return value), untuk perpangkatan.

*listing program
//latih8_3.cpp
YHPI -> hal : 44
//fungsi pangkat

#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <iomanip.h>

long pang(int bildas,int bilpang);
void main()
{ int bd,bp;
clrscr();
cout<<"Input bilangan Dasar :";cin>>bd;
cout<<"Input bilangan pangkat :";cin>>bp;
cout<<bd<<" pangkat : "<<bp<<" = ";
cout<<pang(bd,bp);
getche();
}

long pang(int bildas,int bilpang)
{ long x;
int i;
x=1;
for (i=1;i<=bilpang;i++)
x=x*bildas;
return(x);
}

VIII.4. SOAL (UJI KEMAMPUAN)
Kerjakan setiap permasalahan dengan membuat flowchart dan listing program,
masing-masing simpan dengan nama SOAL8_1, dan SOAL8_2
1. Buat implementasi fungsi untuk meletakkan tulisan ke posisi yang dikehendaki
2. buat fungsi nilai faktorial dari suatu bilangan (ada return value dan non return value)

YHPI -> hal : 45
PRAKTIKUM IX
OOP, STRUKTUR DAN CLASS


IX.1. TUJUAN
Pemrograman berorientasi objek merupakan paradigma pemrograman yang semua data dang
fungsi dibungkus dalam kelas-kelas atau obyek-obyek. Tujuan dari praktikum kesembilan ini
adalah,
1. Mahasiswa mampu membandingkan pemrograman antara logika terstrukur dengan
logika berorientasi obyek.
2. Mahasiswa mampu menyusun permasalahan dalam struktur dan kelas.
3. Mahasiswa mampu mendesain sebuah program dengan memanfaatkan struct dan
class sebagai elemen OOP.

IX.2. TEORI DASAR
IX.2.1 Variabel Obyek atau dikenal sebagai OOP (Object – Oriented
Programming)
C++ mempunyai keistimewaan, yaitu bahasa ini mendukung pemrograman yang berorientasi
objek atau OOP (Object Oriented Programming). Yang di maksud dengan objek disini
sebenarnya mencerminkan pola kerja manusia dalam kehidupan sehari-hari. Sebuah objek
dapat diibaratkan sebagai departemen-departemen di dalam sebuah institusi pendidikan.
Contoh departemen :
1. akademik
2. personalia
3. kemahasiswaan
4. perawatan
5. jurusan
6. dan yang lain
Pembagian departemen institusi pendidikan merupakan upaya untuk memudahkan
pengoperasian kerja institusi. Sebagai gambaran, jika anda seorang KABAG AKADEMIK di
Kantor Pusat ingin mengetahui data tentang biodata dari seorang mahasiswa, apa yang anda
lakukan? Langkah yang anda tempuh pasti tidak datang secara langsung ke ruang
kemahahasiswaan dan mencari data pada berkas-berkas yang ada pada departemen tersebut.
Untuk memudahkan tugas anda, anda cukup mengutus sekretaris anda untuk meminta
informasi dari departemen kemahasiswaan sesuai yang anda butuhkan. Masalah bagaimana
dan siapa yang mencarikan laporan yang diperlukan bukanlah menjadi urusan anda. Analogi
dengan hal ini, kalau seseorang bermaksud menggunakan objek, ia cukup mengirim suatu
pesan ke objek dan objek itu sendiri yang akan menanganinya.
YHPI -> hal : 46
Sebuah gambaran tentang objek yang berisi data dan fungsi yang memanipulasi data dapat
dilihat pada gambar di bawah ini :

Adapun gambar yang melukiskan hubungan antar objek yang menganalogikan struktur di
institusi :




IX.2.2. STRUKTUR dan CLASS
Dalam C++ Struct dan class mempunyai penulisan yang sama. Secara konsep class
merupakan struktur data dari obyek atau elemen dasar dari OOP. Deklarasi class dan struct
memiliki anggota dengan akses public kecuali jika dinyatakan lain. C ++ tidak membedakan
nama class dan nama tag, paling tidak dari sudut pandang pemprogram dan tetap menerima
deklarasi structure. Kompatibilitas C ++ tidak sebatas pada perbedaan nama class dan nama
type karena C++ masih memerlukan definisi type POD (Plain Old Data). C++ mendefinisikan
POD Type sebagai objek suatu class yang tidak mempunyai userdefined constructor, anggota
protected maupun private, tidak memiliki base class dan tidak memiliki fungsi virtual.
Struktur bertujuan untuk mengelompokkan sejumlah data dengan tipe yang berlainan, sebagai
contoh:
struct data_biodata
{ char nama[30];
YHPI -> hal : 47
int tanggal_lahir;
int bulan_lahir;
int thn_lahir;
char hobi[20];
}
contoh calss:

class biodata
{ static :
int th_lahir;
public:
void umur();
}


IX.3. LATIHAN PROGRAM :
IX.3.1. Mengimplementasikan type struct dalam data -> biodata, perhatikan pola
dan cara penggunaanya!

*listing program

//latih9_1.cpp
//Implementasi Struktur

#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <iomanip.h>

struct biodata
{ char nim[15];
char nama[30];
char alamat[35];
char hoby[30];
};
void main()
{ clrscr();
int i,jd;
biodata data[10];
cout<<"Input Jumlah data : ";
scanf("%d",&jd);
cout<<endl<<endl<<endl;
cout<<"=====Input data ========"<<endl;
for(i=1;i<=jd;i++)
YHPI -> hal : 48
{ cout<<i<<". Nim : ";
cin.getline(data[i].nim,sizeof(data[i].nim));
cout<<" Nama : ";
cin.getline(data[i].nama,sizeof(data[i].nama));
cout<<" Alamat : ";
cin.getline(data[i].alamat,sizeof(data[i].alamat));
cout<<" Kegemaran : ";
cin.getline(data[i].hoby,sizeof(data[i].hoby));
}
cout<<"\n \n \n";
cout<<"===========OUT PUT DATA ============"<<endl<<endl;
cout<<"N I M Nama Alamat Hobby"<<endl;
cout<<"================================================"<<endl;
for(i=1;i<=jd;i++)
{ cout<<setw(10)<<data[i].nim;
cout<<setw(20)<<data[i].nama;
cout<<setw(20)<<data[i].alamat;
cout<<setw(20)<<data[i].hoby<<endl;
}

getche();
}



IX.3.2. Mengimplementasikan type class dalam data -> biodata, perhatikan polanya!

*listing program
//latih9_2.cpp
//implementasi class & public variabel

#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <iomanip.h>

class biodata
{ public:
char nim[15];
char nama[30];
char alamat[35];
char hoby[30];
};
void main()
{ clrscr();
int i,jd;
biodata data[10];
cout<<"Input Jumlah data : ";
scanf("%d",&jd);
cout<<endl<<endl<<endl;
YHPI -> hal : 49
cout<<"=====Input data ========"<<endl;
for(i=1;i<=jd;i++)
{ cout<<i<<". Nim : ";
cin.getline(data[i].nim,sizeof(data[i].nim));
cout<<" Nama : ";
cin.getline(data[i].nama,sizeof(data[i].nama));
cout<<" Alamat : ";
cin.getline(data[i].alamat,sizeof(data[i].alamat));
cout<<" Kegemaran : ";
cin.getline(data[i].hoby,sizeof(data[i].hoby));
}
cout<<"\n \n \n";
cout<<"=======================OUT PUT DATA ==========================";
cout<<endl<<endl;
cout<<"N I M Nama Alamat Hobby"<<endl;
cout<<"==============================================================";
cou<<endl;
for(i=1;i<=jd;i++)
{ cout<<setw(10)<<setiosflags(ios::left)<<data[i].nim;
cout<<setw(20)<<setiosflags(ios::left)<<data[i].nama;
cout<<setw(20)<<setiosflags(ios::left)<<data[i].alamat;
cout<<setw(20)<<setiosflags(ios::left)<<data[i].hoby<<endl;
}


getche();
}

IX.4. SOAL(UJI KEMAMPUAN)
Kerjakan setiap permasalahan dengan membuat flowchart dan listing program,
masing-masing simpan dengan nama SOAL9_1.cpp, dan SOAL9_2.cpp
1. Buat program dengan basis struct seperti latih9_1.cpp, dengan mensortir NIM secara
ascending.
2. Buat program dengan basis class seperti latih9_2.cpp, dengan mensortir NIM secara
ascending.


YHPI -> hal : 50
PRAKTIKUM X
VARIABEL PUBLIC, PRIVATE, DAN OVERLOADING OPERATOR


X.1. TUJUAN
Variabel mempunyai luas cakupan, yang dibedakan antara variabel lokal disebut dengan
private dan variabel global disebut dengan public. Tujuan dari praktikum kesepuluh ini adalah,
1. Mahasiswa mampu membedakan antara variabel yang bersifat private dan variabel
yang bersifat public.
2. Mahasiswa mampu mengimplementasikan variabel private dan public dalam struc
maupun class untuk mendesain sebuah program.
3. Mahasiswa mampu menggunakan overloading operator dalam sebuah program.

X.2. TEORI DASAR
Public, Private, dan Overloading operator
Yang dimaksud denga public adalah anggota class (variabel) yang dideklarasikan public dapat
diakses diluar class tersebut atau bersifat global. Sedangkan private berarti anggota class
(variabel) yang dideklarasikan private tidak dapat diakses diluar class tersebut atau bersifat
lokal. Overloading bertujuan memudahkan operasi terhadap data, khususnya yang melibatkan
obyek. Sebagai contoh matrik A + matrik B, secara aturan dasar operasi penjumlahan tersebut
tidak dapat dillakukan, tetapi dengan menggunakan metode overloading maka operai ini dapat
dilakukan.

X.3. LATIHAN PROGRAM :
X.3.1. Mengimplementasikan class dengan menggunakan public, private dan
overloading operator, perhatikan secara sungguh-sungguh polanya!

*listing program

//latih10_1.cpp
//implementasi class, (public + private variabel), overloading operator

#include <iostream.h>
#include <conio.h>
#include <iomanip.h>
#include <stdlib.h>

class matrik
{ private:
int jumbar;
int jumkol;
long int mat[10][10];
public:
YHPI -> hal : 51
matrik();
void inputmatrik();
void tampilmatrik();
matrik operator + (matrik);
};
// nilai awal obyek matrik
matrik::matrik()
{ jumbar=0;
jumkol=0;
int i,j;
for(i=0;i<10;i++)
for(j=0;j<10;j++)
mat[i][j]=0;
}
// input anggota matrik+jumlah ordo
void matrik::inputmatrik()
{ int i,j;
do { cout<<" Input jumlah baris :";
cin>>jumbar;
} while(jumbar>10);
do { cout<<" Input jumlah kolom :";
cin>>jumkol;
} while(jumkol>10);
// input data
for (i=0;i<jumbar;i++)
for (j=0;j<jumkol;j++)
{ cout<<"Matrik ["<<i+1<<","<<j+1<<"] : ";
cin>>mat[i][j];
}
}
//menampilkan matrik :
void matrik::tampilmatrik()
{ int i,j;
cout<<setiosflags(ios::right);
for (i=0;i<jumbar;i++)
{ for (j=0;j<jumkol;j++)
cout<<setw(8)<<mat[i][j];
cout<<endl;
}
}
// operasi penjumlahan dua matrik
matrik matrik::operator + (matrik m2)
{ int i,j;
matrik hasil;

//cek jumlah ordo matrik1 dan matrik2
if ((jumbar != m2.jumbar) || (jumkol != m2.jumkol))
{ cout<<"\noperasi penjumlahan "<<endl;
cout<<"jumlah ordo matrik 1 dan matrik 2 tidak sama \n";
getche();
YHPI -> hal : 52
exit(1);
}
//proses penjumlahan
hasil.jumbar=jumbar;
hasil.jumkol=jumkol;
for (i=0;i<jumbar;i++)
for (j=0;j<jumkol;j++)
hasil.mat[i][j]=mat[i][j]+m2.mat[i][j];
return(hasil);
}

//program utama
void main()
{ clrscr();
matrik matA;
cout<<"Matrik A :"<<endl;
matA.inputmatrik();

matrik matB;
cout<<"\n Matrik B :"<<endl;
matB.inputmatrik();

matrik matJumlah;

matJumlah=matA + matB;

cout<<"\n \nHasil penjumlahan matrik A dan matrik B :"<<endl;
matJumlah.tampilmatrik();

getche();
}

X.4. SOAL (UJI KEMAMPUAN)
Kerjakan setiap permasalahan dengan membuat flowchart dan listing program,
masing-masing simpan dengan nama SOAL10_1
1. Buat program menentukan perkalian 2 buah matrik dengan menggunakan bentuk obyek +
overloading operator seperti contoh latih10_1.cpp
YHPI -> hal : 53
PRAKTIKUM XI
SISTEM FILE

XI.1. TUJUAN
Penyimpanan data secara permanen sangat dibutuhkan, untuk keperluan ini kita harus
memmahami konsep filing dalam secundary strorage. Tujuan dari praktikum kesebelas ini
adalah,
1. Mahasiswa mampu membedakan antara penyimpanan data secara permanen dengan
penyimpanan data sementara.
2. Mahasiswa mampu membedakan antara tipe data teks, biner dan tak berbentuk
3. Mahasiswa mampu mengimplementasikan sistem file untuk menyimpan data kedalam
media penyimpanan permanen ke dalam sebuah program

XI.2. TEORI DASAR
Sistem File
Data yang disimpan dalam variabel siaftnya hanya sementara, artinya data itu masih tersimpan
saat program dalam keadaaan running, tetapi jika program dalam keadaan off atau computer
mati maka data tersebut akan hilang. Untuk kebutuhan tertentu diperlukan penyimpanan data
secara permanen yang diletakkan ke dalam file. Terdapat tiga operasi dasar system file data
yaitu:
a. Mengaktifkan file atau menciptakan file
b. Memproses file (Membaca atau menulis data ke dalam file)
c. Menutup file
Dalam Bahasa C++ file header untuk perintah-perintah yang berkaitan dengan operasi file
adalah fstream.h. Modus dalam operasi file adalah fstream diikuti dengan:
a. ios::in untuk mengaktifkan file operasi baca data dari disk,
b. ios ::out untuk mengaktifkan file operasi tulis data ke disk sifatnya buat data baru,
c. ios::app untuk mengaktifkan file operasi tulis data ke disk sifatnya menambah data,
d. ios::beg untuk menentukan posisi awal file,
e. ios::end untuk menentukan posisi akhir file.
f. Ios::binary untuk operasi file dengan data bertipe biner.
g. Ios::cur untuk operasi file menunjukkan letak posisi data sekarang pada suatu file
Contoh penggunaan: fstream fbiodata(“c:\\biodata.txt”,ios::out)
Selain cara diatas terdapat bentuk lain yang disediakan oleh C++, yaitu
a. ofstream untuk mengaktifkan file operasi tulis data ke disk sifatnya buat data baru,
b. ifstream untuk mengaktifkan file operasi baca data dari disk,
YHPI -> hal : 54
untuk bahasa C standart ada statemen sendiri, sehingga bahasa C dikatakan kaya akan
environment.
Fungsi-fungsi yang berkaitan dengan operasi file:
No. Fungsi Keterangan
1 close() Menutup file
2 good() Memeriksa keberhasilan operasi file, bernilai true jika
operasi file berhasil.
3 eof() Memeriksa akhir file, nilai true jika akhir file ditemui
4 fail() Memeriksa kesalahan (gagal perangkat keras, gagal
baca/tulis, file tidak ditemukan), akan bernilai true jika
terdapat kesalahan.
5 bad() Memeriksa operasi yang tidak absah (hampir sama dengan
fail), akan bernilai true jika di jumpai ketidak absahan.



XI.3. LATIHAN PROGRAM :
XI.3.1. Membuat file data teks baru dan secara otomatis menyimpan data yang dituliskan
ke disk lewat perintah objek ofstream


*listing program
//latih11_1.cpp
//men create file data text
#include <fstream.h>
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
void main()
{ ofstream buatfile("coba.txt");
clrscr();
buatfile<<" ini percobaan menuliskan data"<<endl;
buatfile<<" 1. belajar c++"<<endl;
buatfile<<" 2. belajar menulis data ke file"<<endl;
buatfile.close();
}


XI.3.2. Membuat file data teks baru dan menyimpan data kedalam disk dari input data
(cin, gets, scanf, atau yang lain)


*listing program

//latih11_2.cpp
YHPI -> hal : 55
#include <fstream.h>
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
void main()
{ ofstream buatfile;
buatfile.open("data1.txt");
int i,jd;
char nim[13],nama[25],alm[30],jkel[15];
cout<<"jumlah data :";
scanf("%d",&jd);
cout<<endl<<endl;
cout<<"masukan bio data kelas 1D! : "<<endl;
for (i=1;i<=jd;i++)
{
cout<<i<<". Nomor induk : "; cin.getline(nim,sizeof(nim));
cout<<" Nama : "; cin.getline(nama,sizeof(nama));
cout<<" Alamat : "; cin.getline(alm,sizeof(alm));
cout<<" Jenis kelamin: "; cin.getline(jkel,sizeof(jkel));
buatfile<<nim<<nama<<alm<<jkel<<endl;
}
buatfile.close();
}


XI.3.3. Membaca file data teks dengan objeck –ifstream-, membaca file data hasil
eksekusi dari latih11_2.cpp

*listing program

//latih11_3.cpp
#include <fstream.h>
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
void main()
{ clrscr();
ifstream bacafile;
bacafile.open("data1.txt");
int i,jd;
char nim[13],nama[25],alm[30],jkel[15];
cout<<endl<<endl;
cout<<"hasil pembacaan file data1.txt adalah: "<<endl;
i=1;
while (bacafile)
{
bacafile.getline(nim,sizeof(nim));
bacafile.getline(nama,sizeof(nama));
bacafile.getline(alm,sizeof(alm));
bacafile.getline(jkel,sizeof(jkel));
YHPI -> hal : 56

cout<<i<<". Nomor induk : " <<nim<<endl;
cout<<" Nama : " <<nama<<endl;
cout<<" Alamat : " <<alm<<endl;
cout<<" Jenis kelamin: " <<jkel<<endl;
i=i+1;
}
getche();
bacafile.close();
}

XI.4. SOAL (UJI KEMAMPUAN)
Kerjakan setiap permasalahan dengan membuat flowchart dan listing program,
masing-masing simpan dengan nama SOAL11_1, SOAL11_2
1. Gunakan operasi file (tulis data ke disk) untuk permasalahan pelanggan baru pengguna
jasa telephon kabel (PT. TELKOM) dengan data sebagai berikut:
Nama, alamat, pekerjaan, alamat kantor,
Kemudian memberikan data no.telephon yang masih tersedia pada area tersebut,
kemudian includkan ke data di atas.
2. Gunakan operasi file (baca data dari disk) untuk mengedit data no. 1 dengan proses
pencarian berdasarkan no. Telephon



YHPI -> hal : 57
PRAKTIKUM XII
(PERTEMUAN KEDUA BELAS)


XII.1. TUJUAN
Penyimpanan data secara permanen dibutuhkan kestabilan dan kompatibilitas yang memadai,
untuk itu dibutuhkan kemampuan yang cukup. Tujuan dari praktikum kedua belas ini adalah,
1. Mahasiswa mampu mengimplementasikan sistem file yang kompatibel dan stabil untuk
kebutuhan penyimpanan data.
2. Mahasiswa mampu merancang sebuah program yang berisi input data, penyimpanan
data, pencarian data, dan mendesain sebuah laporan.


XII.2. TEORI
Sistem File Lanjutan


XII.3. LATIHAN PROGRAM :
XII.3.1. Mengimplementasikan rekam file data, baca file data, tambah file data, laporan,
dalam bentuk menu, => perhatikan bahwa contoh ini adalah sistem yang sangat
lemah dan kurang kompatibel, (contohnya adalah semua input tidak boleh ada
space, jika dilanggar maka sistem kacau)


*listing program

//latih12_1.cpp
#include <stdio.h>
#include <math.h>
#include <iostream.h>
#include <iomanip.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <ctype.h>

float dk, ek,Ryy0;
FILE *kel, *msk, *msknl, *fopen();
int Io;
char nim[13],pil;


void biodata()
{ char pilih;
YHPI -> hal : 58
char nama[30],nim[13],jur[15];
if (msk==fopen("biodata.txt","r")==NULL)
msk=fopen("biodata.txt","a+");
else
msk=fopen("biodata.txt","w");
do
{ clrscr();
cout<<" Nomer Induk Mahasiswa : ";scanf("%13s",&nim);
cout<<" Nama Mahasiswa : ";scanf("%30s",&nama);
cout<<" Jurusan : ";scanf("%15s",&jur);
cout<<"==================================="<<endl;
cout<<"A. Rekam data B. Keluar"<<endl;
cout<<"pilihan :";pilih=getch();
switch (pilih)
{ case 'a' :
case 'A' : {
fprintf(msk,"%13s %30s %15s \n",nim,nama,jur);
}

}

} while (pilih=='a' || pilih=='A');
fprintf(msk,"%13s %30s %15s \n",nim,nama,jur);
fclose(msk);
}

void nilai()
{ int pilih,na,i;
char nama[30],nim[13],jur[15];
char namanl[30],nimnl[13],jurnl[15],mtkliah[20],skor[1];
if (msk==fopen("biodata.txt","r")==NULL)
msk=fopen("biodata.txt","r");
else
cout<<"file biodata tidak ditemukan";
if (msknl==fopen("nilai.txt","r")==NULL)
msknl=fopen("nilai.txt","a+");
else
msknl=fopen("nilai.txt","w");

do
{ clrscr();
cout<<" Nomer Induk Mahasiswa : ";scanf("%13s",&nimnl);
cout<<" Nama Mahasiswa : ";scanf("%30s",&namanl);
cout<<" Jurusan : ";scanf("%15s",&jurnl);
cout<<" Matakuliah : ";scanf("%20s",&mtkliah);
cout<<" Nilai Huruf : ";scanf("%1s",&skor);
cout<<"==================================="<<endl;
cout<<"A. Rekam data dan lanjut B. Simpan dan Keluar"<<endl;
cout<<"pilihan :";pilih=getch();
switch (pilih)
YHPI -> hal : 59
{ case 'a' :
case 'A' : {
fprintf(msknl,"%13s %30s %15s %20s %1s
\n",nimnl,namanl,jurnl,mtkliah,skor);
}
}

} while (pilih=='a' || pilih=='A');
fprintf(msknl,"%13s %30s %15s %20s %1s
\n",nimnl,namanl,jurnl,mtkliah,skor);
fclose(msknl);
}

void laporan()
{ char namanl[30],nimnl[13],jurnl[15],mtkliah[20],skor[1],**skorp;
int n,banding,skora,i,na,skA,skB,skC,skD;
if (msknl==fopen("nilai.txt","r")==NULL)
msknl=fopen("nilai.txt","r");
else
{ cout <<"File nilai Tak Dapat dibuka";
exit(1);
}
n=1;
i=1;
clrscr();
while (fscanf(msknl,"%13s %30s %15s %20s
%1s",&nimnl,&namanl,&jurnl,&mtkliah,&skor)!=EOF)
{ banding=strcmp(nim,nimnl);
if (banding==0 && n==1)
{ cout<<"Nomer induk : "<<nimnl<<endl;
cout<<"Nama Mahasiswa : "<<namanl<<endl;
cout<<"Jurusan : "<<jurnl<<endl;

cout<<"======================================================"<<endl;
cout<<"nomer Matakuliah Nilai Huruf Nilai Angka
"<<endl;

cout<<"======================================================"<<endl;
n=n+1;
}
if (banding==0 && n>=1)
{
cout<<setw(3)<<i<<setw(20)<<mtkliah<<setw(12)<<skor;

if (strcmp(skor,"a")==0|| strcmp(skor,"A")==0) na=4;
else
if (strcmp(skor,"b")==0 || strcmp(skor,"B")==0) na=3;
else
if (strcmp(skor,"c")==0 || strcmp(skor,"C")==0) na=2;
else
YHPI -> hal : 60
if (strcmp(skor,"d")==0 || strcmp(skor,"D")==0) na=1;
else
na=0;
cout<<setw(13)<<na<<endl;
i=i+1;
}
}
fclose(msknl);
}

void main()
{

clrscr();
do
{ clrscr();
cout<<" MENU PILIHAN"<<endl;
cout<<"======================"<<endl;
cout<<"A. ISI BIODATA MAHASISWA"<<endl;
cout<<"B. ISI DATA NILAI"<<endl;
cout<<"C. REPORT NILAI (KHS)"<<endl;
cout<<"D. KELUAR"<<endl;
cout<<"======================"<<endl;
cout<<"\n Pilihan Anda :";
pil=getch();
switch (pil)
{ case 'a':
case 'A' :{
biodata();
break;
}
case 'b' :
case 'B' : { nilai();
break;}
case 'c' :
case 'C' : { clrscr();
cout<<"Nomer induk : ";
scanf("%13s",&nim);
laporan();
getche();
break;
}
}
} while (pil=='a' || pil=='A' || pil=='b' || pil=='B' || pil=='c' ||
pil=='C');

}


YHPI -> hal : 61
XII.4. Soal (UJI KEMAMPUAN)
Kerjakan setiap permasalahan dengan membuat flowchart dan listing program, masing-
masing simpan dengan nama SOAL12_1, SOAL12_2. Perbaikilah sistem diatas sehingga
menjadi stabil, langkah yang diambil:
1. pola tetap dengan menggunakan kombinasi perintah yang tepat
2. ubah pola ke dalam structur atau kelas

YHPI -> hal : 62
PRAKTIKUM XIII
(PERTEMUAN KETIGA BELAS)

DAN

PRAKTIKUM XIV
(PERTEMUAN KEEMPAT BELAS)

Presentasi

selesaikan pekerjaan pertemuan ke duabelas, bagi menjadi 4 kelompok dan
presentasikan!




YHPI -> hal : 63
PRAKTIKUM XV
GRAFIK

XV.1. TUJUAN
Selain mode teks tampilan sebuah program dapat di tampilkan dalam mode grafik. Tujuan dari
praktikum kelima belas ini adalah,
1. Mahasiswa mampu membedakan antara tampilan mode teks dengan tampilan mode
grafik.
2. Mahasiswa mampu mengimplementasikan pola grafik klasik ke dalam sebuah desain
program

XV.2. TEORI
Grafik
C ++ menyediakan pemrosesan grafik dibawah sistem windows dan sistem dos, untuk grafik di
bawah sistem windows tidak di bahas dalam buku ajar ini (akan diberikan pada C++ builder).
Sistem grafik komputer terdiri dari system pasif dan interaktif, yang dimaksud dengan pasif
adalah sistem dimana operator tidak bisa berinteraksi secara langsung dengan gambar yang
dibangkitkan, sedangkan sistem grafik komputer interaktif (interactive Computer Graphics)
adalah sistem yang memungkinkan operator untuk berdialog langsung dengan apa yang
terlihat pada layar computer. Grafik di bawah system DOS tergolong system grafik pasif, ada
beberapa syarat yang harus dipenuhi jika kita akan membuat program grafik, antara lain:
1. tersedia driver card adapter, yang sesuai (file yang berextensi BGI)
2. Tersedia file pengatur font (file berekstensi CHR)
3. Tersedia file header graphics
4. menginisialisasi grafik


struktur dasar :
#include <graphics.h>
#……
.
.
void main()
{
// deklarasi variabel driver card dan variabel mode grafik, misal:
int drv,md;
// inisialisasi grafik, misal
YHPI -> hal : 64
drv=VGA;
md=VGAMED;
initgraph(drv,md,”.\BGI”);
…….
……..
}

Keterangan:
Initgraph(Nama Driver, Mode Grafik, Keberadaan directory BGI)
- Nama driver harus sesuai dengan Kartu Video yang digunakan
- Mode grafik menyesuaikn dengan kartu video (baca buku grafik !)
- Letak direktori BGI harus ditulis dengan jelas, tanda c:\\ salah satu menunjukkan adanya
escape sequence

Perintah/sintaks dasar grafik, dikenal dengan output grafik primitive/klasik :
Line, circle, rectangle, linerel, lineto, ellipse, arc, pieslice, ……
(lebih jelas baca buku !)

TRIK-> jika menggunakan C++ sistem windows (Borland C++ Ver 5.0) maka untuk
menjalankan grafik lakukan script berikut di command dos:
bcc <namafile.cpp> <graphics.lib>


XV.3. LATIHAN PROGRAM :
XV.3.1. Mengimplementasikan mode grafik kedalam animasi Gerak melingkar beraturan

*listing program

#include <graphics.h>
#include <alloc.h>
#include <dos.h>
#include <math.h>
#include <stdio.h>
#include <conio.h>
void main()
{ clrscr();
int pgrk,mode,ukur;
void *tmpt;
float i,ux,uy,x,y;

pgrk=DETECT;
YHPI -> hal : 65
initgraph(&pgrk,&mode,".\\bgi");
setcolor(3);
circle(getmaxx()/2,getmaxy()/2,80);
setcolor(4);
setfillstyle(1,4);
pieslice(50,50,0,360,10);
ukur=imagesize(40,40,60,60);
tmpt=malloc(ukur);
getimage(40,40,60,60,tmpt);
putimage(40,40,tmpt,XOR_PUT);
settextstyle(SANS_SERIF_FONT,HORIZ_DIR,5);
outtextxy(50,50,"Gerak Melingkar Beraturan");
i=0;
do
{ ux=80*cos(i/180*3.14);
uy=80*sin(i/180*3.14);
x=getmaxx()/2+ux-10;
y=getmaxy()/2+uy-10;
putimage(x,y,tmpt,XOR_PUT);
delay(10);
putimage(x,y,tmpt,XOR_PUT);
i=i+1;
if (i>360) i=0;
}while (!kbhit());
getche();
closegraph();
}


XV.3.2. Mengimplementasikan mode grafik kedalam animasi Gerakkan jarum detik pada
sebuah Jam

*listing program
#include <graphics.h>
#include <alloc.h>
#include <dos.h>
#include <math.h>
#include <stdio.h>
#include <conio.h>
void main()
{ clrscr();
int pgrk,mode,ukur;
void *tmpt;
float i,ux,uy,x,y,x0,y0;

pgrk=DETECT;
initgraph(&pgrk,&mode,".\\bgi");
setcolor(3);
circle(getmaxx()/2,getmaxy()/2,80);
setcolor(4);
YHPI -> hal : 66
settextstyle(SANS_SERIF_FONT,HORIZ_DIR,5);
outtextxy(50,50,"Gerak JARUM JAM DETIK");
i=0;
x0=getmaxx()/2;
y0=getmaxy()/2;
do
{ ux=80*cos(i/180*3.14);
uy=80*sin(i/180*3.14);
x=getmaxx()/2+ux;
y=getmaxy()/2+uy;
setlinestyle(0,0,0);
setcolor(3);
circle(getmaxx()/2,getmaxy()/2,80);

setcolor(5);
setlinestyle(0,0,3);
line(x0,y0,x,y);
delay(700);
setcolor(0);
line(x0,y0,x,y);
i=i+5;
if (i>360) i=0;
}while (!kbhit());
getche();
closegraph();
}


XV.4. Soal (UJI KEMAMPUAN)
Kerjakan setiap permasalahan dengan membuat flowchart dan listing program, masing-
masing simpan dengan nama SOAL15_1.:
1. Buat grafik dengan bentuk menyerupai pesawat terbang, kemudian buat grafik menyerupai
awan, berikutnya jalankan pesawat seolah-olah terbang di antara awan. (gunakan logika
XOR)


YHPI -> hal : 67
XVI. PRAKTIKUM KEENAM BELAS + TUJUH BELAS + DELAPAN BELAS

Buat sebuah proyek dengan kriteria program seperti di bawah ini!
1. Memuat fungsi
2. Memuat struct dan class
3. Terdapat operasi file
4. Gunakan grafik bila diperlukan
Contoh permasalahan yang layak dijadikan proyek,
1. Interferensi dua buah Gelombang vertikal maupun horizontal (tunjukkan dalam grafik)
2. Polarisasi Gelombang Elektromagnetik
3. Dll.....
Setiap Mahasiswa wajib mempresentasikan hasil karyanya!










SELAMAT BEKERJA, SEMOGA KITA MENJADI
MANUSIA YANG BERGUNA DUNIA DAN AKHIRAT