Sunday, 6 March 2016

Algoritma dan Pemrograman



MAKALAH MODUL
ALGORITMA DAN PEMROGRAMAN
Disusun untuk memenuhi Matakuliah Praktikum Algoritma dan Pemrograman



Oleh :
Cecep Ilham M
NPM : 1406025
Teknik Informatika “C”

SEKOLAH TINGGI TEKNOLOGI GARUT
Jln. Mayor Syamsu No.2 Telp/Fax. (0262)232773Garut 44151
TAHUN 2014/2015
KATA PENGANTAR

Alhamdulillah, puji syukur penulis ucapkan kehadirat Allah SWT berkat limpahan rahmat dan karunia-Nya Penulis dapat menyelesaikan makalah  yang membahas tentang “ALGORITMA DAN PEMROGRAMAN” Mata Kuliah Pratikum Algoritma dan Pemrograman.
Makalah ini dimaksudkan sebagai penjelasan ringkas dari materi algoritma dan pemrograman. Dengan membaca makalah ini, diharapkan pembaca dapat memahami dan mengerti serta dapat memahami.
Dengan sepenuh hati penulis menyadari dan merasakan betapa besar bantuan dari berbagai pihak manapun. Oleh karena itu, pada kesempatan ini penulis ingin menyampaikan rasa terima kasih yang setulus-tulusnya kepada yang terhormat.
1.      Bpk. Dr. H. Hilmi Aulawi M.T, selaku kepala STT-Garut.
2.      Kakak Leni, selaku Pembimbing Pratikum.
3.      Ikbal Muhammad Hikmat S.T, selaku pembimbing kami.
4.      Orang tua penulis yang telah memberikan dorongan dan doanya dalam penyusunan makalah ini.
5.      Serta semua pihak yang tidak dapat penulis sebutkan satu persatu yang telah memberikan bantuan kepada penulis sehingga terselesaikannya makalah ini.
Dalam penulisan makalah ini, penulis menyadari masih banyak terdapat kesalahan dan kekurangan. Untuk itu penulis sangat mengharapkan masukan dan saran demi kesempurnaan makalah ini. Demikianlah makalah ini penulis buat, semoga makalah ini dapat bermanfaat bagi semua yang membaca.



DAFTAR ISI

Kata pengantar
Daftar isi


MODUL I
ALGORITMA DAN PEMROGRAMAN DENGAN MENGGUNAKAN C++


A.    Pendahuluan Materi


B.     Soal Latihan


C.     Tugas Praktek

MODUL II
PEMROGRAMAN C DAN C++ MENGGUNAKAN APLIKASI CONSOLE


A.    Pendahuluan Materi


B.      






MODUL I
ALGORITMA DAN PEMROGRAMAN DENGAN
MENGGUNAKAN C++

A.    PENDAHULUAN MATERI
1.      Pengertian Program dan Pemrograman
Program merupakan runtunan atau himpunan instruksi(perintah) tertulis yang ditanamkan ke dalam komputer untuk menyelesaikan masalah.
Pemrograman merupakan pengerjaan penulisan instruksi oleh programmer untuk menyelesaikan suatu masalah.
Program
Komputer
 
Kompilasi
Masalah                                                                                                      Solusi/Hasil

           Tahapan Penyelesaian Masalah oleh Komputer
2.      Pengeritan Algoritma
Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun secara sistematis dan tidak tergantung pada bahasa pemrograman tertentu. Kata Logis merupakan kata kunci dalam algoritma. Langkah-langkah dalam algoritma harus logis (masuk akal dan mengikuti suatuuratan tertentu, tidak boleh melompat-lompat) serta harus dapat ditentukan bernilai salah atau benar.
3.      Aturan Penulisan Notasi Algoritma
Penulisan algoritma tidak tergantung dari spesifikasi bahasa pemrograman dan komputer yang mengeksekusinya melainkan bersifat umum tetapi notasi notasi algoritma dapat diterjemahkan ke dalam berbagai bahsa pemrograman.
Notasi algoritma dapat berupa :
·         Uraian kalimat deskriptif (narasi)
Intruksi pada algoritma dapat dituliskan dalam bahsa sehari-hari (B.Indonesia, B.Inggris, dsb). Tidak aturan yang baku untuk menuliskan algoritma dalam bentuk notasi ini, tetapi penulisan algoritma menggunakan notasi ini dapat menimbukan ambiguitas.
·         Bagai alir (flow chart)
Instruksi-instruksi pada Algoritma digambarkan secara grafis (menghasilkan sebuah bagan) menggunakan simbol-simbol tertentu dengan aturan sebagai berikut :
Simbol
Keterangan
Tanda Start (mulai) atau Tanda End (Selesai)

Proses

Operasi Input Output


Percabangan / Pengambilan Keputusan


Aliran Data
·         Pseudo-code
Penulisan teks algoritma dengan Pseudo-code menggunakan notasi-notasi tertentu yang mendekati bahasa pemrograman sehingga lebih mudah ditranslasikan kedalam bahasa pemrograman.
Aturan penulisan Algoritma :
·         Judul (Header)
Judul adalah bagian teks algoritma yang digunakan sebagai tempat mendefinisikan nama dengan menentukan apakah teks tersebut adalah program, prosedur, fungsi.




·         Kamus(Deklarasi)
Kamus adalah bagian teks algoritma sebagai tempat untuk mendefinisikan : Nama type, Nama konstanta, Nama variable, Nama fungsi, Nama prosedur.
·         Algoritma(deskripsi)
Algoritma merupakan bagian inti dari suatu algoritma yang berisi instruksi atau pemanggilan aksi yang telah didefinisakan.
B.     SOAL LATIHAN
Buatlah algoritma dalam bentuk pseudocode dan flowchart serta buatlah programnya aplikasi dengan output dilayar monitor sebagai berikut :
Input         : Nilai ke 1 = ...
                    Nilai ke 2 = ...
Output       : Nilai ke 1 + Nilai ke 2 = ...
                    Nilai ke 1 - Nilai ke 2 = ...
                    Nilai ke 1 * Nilai ke 2 = ...
                    Nilai ke 1 / Nilai ke 2 = ...
                    Nilai Rata Rata = ...
Jawaban :
START
NILAI 1
NILAI 2
Nilai Ke 1 + Nilai Ke 2 =…
Nilai Ke 1 - Nilai Ke 2 =…
Nilai Ke 1 * Nilai Ke 2 =…
Nilai Ke 1 / Nilai Ke 2 =…
Nilai Rata-rata =…

HASIL DARI + - */ dan rata
END
Flowchart
Psedocode








Input (nilai1, nilai2)
Hasil Nilai Ke 1 + Nilai Ke 2 =…     
Nilai Ke 1 - Nilai Ke 2 =…
Nilai Ke 1 * Nilai Ke 2 =…
Nilai Ke 1 / Nilai Ke 2 =…
         Nilai Rata-rata =…
Output hasil (+ - * / rata)

PProgram aplikasinya
#include <vcl.h>
#include <stdio.h>
#include <conio.h>
main ()
{
float a, b, penjumlahan, pengurangan, perkalian, pembagian, rata;
printf("nilai 1 =");scanf("%f",&a);
printf("nilai 2 =");scanf("%f",&b);
penjumlahan =a+b;
pengurangan =a-b;
perkalian =a*b;
pembagian =a/b;
rata = penjumlahan/2;
printf("\n %2.0f + %2.0f =%2.0f",a, b, penjumlahan);
printf("\n %2.0f - %2.0f =%2.0f",a, b, pengurangan);
printf("\n %2.0f *%2.0f =%2.0f",a, b, perkalian);
printf("\n %2.0f / %2.1f =%2.1f",a, b, pembagian);
printf("\n %2.0f + %2.0f / 2 =%2.0f",a, b, rata);
getch();
}




C.    TUGAS PRAKTEK
Algoritma Pseudocode dan flowchart membuat tempe goreng
Jawaban :
Pseudocode
Flowchart
Input (Tempe, terigu, minyak, bumbu, air)
Masukan terigu kedalam wadah
Campur bumbu dan air, aduk rata
Masukan tempe yang sudah di iris, aduk rata
Goreng dalam minyak yg sudah dipanaskan dengan api sedang sampai matang
Output (Tempe Goreng)

start
Input(tempe, terigu, minyak, bumbu, air)
Masukan terigu kedalam wadah

Campur bumbu halus, dan air, aduk rata
Masukan tempe yg sudah diiris, aduk rata
Goreng dalam minyak yg sudah di panaskan dengan api sedang sampai matang
Output ( Tempe goreng)
End






























MODUL II
PEMROGRAMAN C DAN C++ MENGGUNAKAN
APLIKASI CONSOLE


A.    PENDAHULUAN MATERI
1.      Tentang C dan C++
Bahasa C dikembangkan oleh Dennis Ritchie pada tahun 1972 di Laboratoria Bell yang ada di Murray Hill, New Jersey, USA.
Bahasa C++ diciptakan oleh Bjarne Stroustrup di AT&T Bell Laboratories awal tahun 1980-an berdasarkan C ANSI (American National Standard Institute). Symbol ++ merupakan operator C untuk operasi penaikan, muncul untuk menunjukkan bahwa C++ merupakan versi yang lebih canggih dari C.
C++ diciptakan untuk mendukang pemrograman berorientasi objek (OOP) yang tidak dimiliki C, sementara C merupakan bahasa Pemrograman yang menghasilakan program .EXE berukuran kecil, eksekusi yang cepat, interface  yang sederhana dengan bahasa lain dan fleksibilitas pemrograman tetapi tidak memiliki kemampuan OOP.
2.      Pengenalan C++
= prepocessor directive
Void main()
{
            Batang Tubuh Program Utama
}
Setiap program C++ mempunyai bentuk umum seperti dibawah, yaitu:







Penjelasan :
a)      Include
Include adalah salah satu pengarah prepocessor directive yang tersedia pada C++. Preprocessor selalu dijalankan terlebih dahulu pada saat prosese kompilasi terjadi. Bentuk umumnya :
·         #include<nama_file>
·         #include<iostream_h>
·         #include<conio.h>
·         #include<iomanip.h>
·         #include<math.h>
b)     Fungsi main ()
Fungsi ini menjadi awal dan akhir eksekusi program C++. Main adalah nama judul fungsi.
c)      Komentar
Komentar tidak pernah dicompile oleh compiler. Dalam C++ terdapat 2 jenis kemontar, yaitu:
Jenis 1 : /* Komentar anda diletakkan di dalam ini
                  Bisa mengapit lebih dari satu baris    */
Jenis 2 : // Komentar anda diletakkan disini (hanya bisa perbaris)
d)     Tanda Semicolon
Tanda semicolon “ ; “ digunakan untuk mengakhiri sebuah pernyataan. Setiap pernyataan harus diakhiri dengan sebuah tanda semicolon.
e)      Mengenal cout(dibaca : C out)
Pernyataan cout merupakan sebuah objek didalam C++, yang digunakan untuk mengarahkan data ke dalam standar output (cetak pada layar).
3.      Input dan Output
Dalam C++ input berarti membaca dari stream dan output berarti menulis ke stream.
Stream adalahsuatu logika device (peralatan logika) yang menghasilkan dan menerima informasi. Stream adalah nama umum untuk menampung aliran data (conoth : file, keyboard, mouse), maupun untuk keluaran (contoh : layar, printer).
Dasar pemahaman suatupemrograman adalah analisa suatu algoritma. Berikut ini adalah elemen dasar pemrograman, yaitu :
1)      Variable dan Tipe Data.
2)      Konstanta.
3)      Operator.
4)      Statement Input dan Output



4.      Fungsi Standar Input dan Output
Fungsi standar input (stdin) dari keyboard misalnya : scanf, getchar, gets, dsb. Sedangakan fungsi standar output (stdout) kelayar monitor misalnya : printf, puts, putchar, dsb. Contoh format penulisan salah satu fungsi stdio.h :
1.      Format string adalah deret karakter yang diawali dan diakhiri dengan (“), dimana didalamnya dapat berisi format specifier (%d, %s, %f).
2.      Item adalah nilai langsung atau referensi variabel yang berpasangan dengan format specifier.
3.      Add dalam scanf harus diisi nilai alamat dari variabel penampungnya dengan  menggunakan operator & (misalnya jika int a; maka &a menunjukan alamat memori variabel a).
C++ mempunyai teknik input dan output yang baru, yaitu : menggunakan stream. Header file untuk input dan output stream adalah iostream.h dan beberapa file lain, seperti strstrea.h, fstream.h, dan constrea.h.
5.      Tipe Data
Semua program berhubungan dengan suatu jenis informasi yang dapat ditampilkan dengan menggunakan jenis data dasar Bahasa Pemrograman C, berikut pengembangan yang dilakukan oleh berbagai perusahaan pembuat compiler, yaitu : teks (char), nilai integer (int, short int, long int), nilai floating point (float, double, long double), enumerated (enum), void dan pointer. Termasuk modifier unsigned yang dapat diterapkan pada char, int, short int dan long int.
·         Operator
Bahasa Pemrograman C mempunyai banyak operator, antara lain : operator bitwise (AND, OR dan XOR), operator shift (shift kiri(<<) dan shift kanan (>>), operator inkremen (++), dan dekremen (--), opertaro aritmetika (+, -, *, / dan %), dan operator assigment.
·         Escape Sequence
Karakter backslas (\) digunakan untuk menghasilkan escape sequence yang memungkinkan adanya representasi visual dari karakter-karakter non grafik  tertentu.
·         Preprocessor : #include dan #define
Preprocessor #include digunakan untuk memeanggil atau menambahkan file header (file unit) yang telah dibuat sebelumnya.
B.     TUGAS PRAKTEK
1.      Buatlah algoritma dengan pseudocode dan program untuk menghitung jumlah dua buah bilangan menggunakan pemrograman C++ dengan fasilitas console.
Masukan Nilai A : 3
Masukan Nilai B : 5
   Hasil dari C = A % B = 3
   Hasil dari D = A * B = 15
2.      Buatlah Program Aplikasi Untuk Mengetahui berat badan ideal (BBI) seseorang dengan rumus BBI = (Tinggi Badan – 100)*90%
Input data
            Nama Anda = ...
            Tinggi Badan = ...
Output data
            Berat Badan Ideal Anda Adalah = ...
3.      Buatlah algoritma psedocode dan program untuk menghitung
Luas alas = luas lingkaran = phi*r*2
Volume tabung = phi*r*2*t
Keliling lingkaran alas/tutup = 2*phi*r
Luas selimut = 2*phi*r*t
Luas permukaan tabung = 2*luas alas+luas selimut tabung
Luas permuakaan tabung = 2(phi*r*2)+2*phi*r*t = 2*phi*r(r+t)




Jawaban :
1.       
Pseudocode
flowchart
Input (a,b, hasil1, hasil2)
Hasil1= a*b
Hasil2= a/b
Output (hasil1,hasil2)
start
Input (a, b, hasil1, hasil2)
Hasil1 = a * b

Hasil2 = a / b
End
Output (hasil1, hasil2 )
















Listing Program
# include <vcl.h>
#include<stdio.h>
#include<conio.h>
main()
{
int a, b, hasil1, hasil2, NPM;
printf("masukan nilai a =");scanf("%d",&a);
printf("masukan nilai b =");scanf("%d",&b);
hasil1 = a / b;
hasil2 = a * b;
printf("\n hasil dari a / b = %d",hasil1);
printf("\n hasil dari a * b = %d",hasil2);
printf("\n\n");
printf("\nCreated By Delina Permatasari", NPM);
printf("\nNPM : 1406028", NPM);
getch();
}
2.       
Pseudocode
Flowchart
Input ( int = b,bbi
Char = a [20] )
bbi=(b-100)*90/100
output ( bbi )

START
INPUT(b, bbi)
Char a[20]
Bbi=(b-100)*90/100
Output(bbi)
End

Listing Program
#include<vcl.h>
#include<stdio.h>
#include<string.h>
#include<conio.h>
main()
{
printf("\t>>MENGETAHUI BERAT BADAN IDEAL<<\n");
printf("\n==========================================\n");
int b,bbi,NPM;
char a[20];
printf("Nama Anda = ");scanf("%s",&a);
printf("Tinggi Badan = ");scanf("%d",&b);
printf("\n------------------------------------------\n");
bbi=(b-100)*90/100;
printf("Berat Badan Ideal Anda=%d",bbi);
printf("\n------------------------------------------\n");
printf("\n\n");
printf("\nCreated By Delina Permatasari", NPM);
printf("\nNPM : 1406028", NPM);
printf("\n\n");
printf("tekan ENTER untuk keluar");
getch();
}
3.       
Pseudocode
flowchart
INPUT (r,t,phi,la,ll,vt,kl,ls,lpt)
Phi=3,14
Luasalas =phi*r*r;
Volumetabung =phi*r*r*t;
Kellilinglingkaran =2*phi*r;
Luasselimut =2*phi*r*t;
Luaspermukaan tabung =2*(luasalas+luasselimut);
OUTPUT(Luasalas, Volumetabung, Kelilinglingkaran, Luasselimut,Luaspermukaantabung, )
Start
Input (r, t, phi, la, ll, vt, kl, ls, lpt)
Phi = 3,14
LA = phi*r*r



VT = phi*r*r*t



KL = 2*phi*r



LPT = 2*(LA+LS)



OUTPUT (LA,VT,KL,LS,LPT)



End


Listing Program
#include<vcl.h>
#include<stdio.h>
#include<conio.h>
main()
{
printf("\t>>>>>RUMUS MATEMATIKA<<<<<\n");
printf("\n===========================================\n");
float r,t,phi,la,ll,vt,kl,ls,lpt,NPM;
phi=3.14;
printf("Masukan Jari-Jari =");scanf("%f",&r);
printf("Masukan Tinggi =");scanf("%f",&t);
printf("\n------------------------------------\n");
la=phi*r*r;
printf("Luas Alas=Luas lingkaran =%.2f",la);
printf("\n------------------------------------\n");
vt=phi*r*r*t;
printf("Volume Tabung =%.2f",vt);
printf("\n------------------------------------\n");
kl=2*phi*r*t;
printf("Keliling Lilingkaran Alas/Tutup =%.2f",kl);
printf("\n------------------------------------\n");
ls=2*phi*r*t;
printf("Luas Selimut =%.2f",ls);
printf("\n------------------------------------\n");
lpt=2*la+ls;
printf("Luas Permukaan Tabung =%.2f",lpt);
printf("\n\n");
printf("\nCreated By Delina Permatasari", NPM);
printf("\nNPM : 1406028", NPM);
printf("\n\n");
printf("Tekan Enter Untuk Keluar");
getch();
}



MODUL III
PENYELEKSIAN KONDISI DALAM PEMROGRAMAN
 C++
A.    PENDAHULUAN MATERI
Penyeleksian kondisi digunakan untuk menentukan alr suatu proses. Penyeleksian kondisi biasanya digunakan dalam program yang kompleks. Penyeleksian kondisi melibatkan beberapa operator dalam bahasa C++, yaitu : operator hubungan (perbandingan), logika dan bitwise. Fungsi seleksi tierdiri dari 3 tipe pernyataan yaitu :
·         Pernyataan If
·         Pernyataan If- Else
·         Pernyataan Switch
Operator-operator yang terkait dengan proses seleksi kondisi adalah operator logika dan relasional(hubungan)
1.      struktur kondisi “IF....”
·         Bentuk umum struktur kondisi if adalah :
If(kondisi){                         
                  Statement;
                  ...
                  Statement;
                  }
·         Jika lebih dari satu statement, maka harus menggunakan tanda ‘{‘ dan ‘}’.
2.      Struktur Kondisi “IF.....ELSE....”
·         Bentuk umumnya dalah sebagai berikut :
If(kondisi){
      Statement;
      }
Else{
      Statement;
      }



3.      Struktur Kondisi “IF....ELSE if....”
·         Bentuk umumnya adalah sebagai berikut :
If(kondisi 1)
Uji_Pekerjaan_Benar1;
Else if(kondisi2)
Uji_Pekerjaan_Benar2;
Else
Uji_Pekerjaan_Default;
·         Dalam statement ini, jika tidak ada ekspresi yang bernilai True, maka yang akan dieksekusi adalah pekerjaan default (biasanya berupa pesan atau keterangan)
4.      Struktur Kondisi “SWITCH.....CASE.....DEFAULT.....”
·         Bentuk umum dari struktur kondisi ini adalah :
Switch(kondisi)
{
Case 1 : pernyataan-1;
Break;
........
........
Case n : pernyataan-n;
Break;
Default : pernyataan-m;
}
B.     SOAL LATIHAN
#include<vcl.h>
#include<stdio.h>
#include<conio.h>
main()
{
char kode;
clrscr();
printf("masukkan kode barang [A..C] : " ); scanf("%c", &kode);
switch(kode)
{
case'A':
case'a':
puts("alat olah raga");
break;
case'B':
case'b':
puts("alat elektronik");
break;
case'C':
case'c':
puts("alat masak");
break;
default:
puts("anda salah memasukan kode");
break;
}
getch();
}
C.    TUGAS PRAKTEK
Buatlah algortma psedocode dan program dengan output berikut
Total belanja (input)
Bayar (input)
Diskon :
Kembali :
Jika belanja > 50 ribu maka diskon 10 %
Jika belanja < 50 ribu maka diskon 5%
Jika belanja < 50 ribu maka diskon 0%




Jawaban :
Pseudocode
Input(tb,  b, d,  k)
If tb>100000
d=b*0.15
else if tb>50000
d=b*0.1
else if tb<50000
d=0
k=b-(bt-d)
output ( b, k )
Flowchart
START
Input (tb,b,d,k)
tb>100000
d=tb*0.15
K=b(tb-d)
OUTPUT(d,k)
tb>50000
tb<=50000
END
d=tb*0.10
d=0
























Listing Program
#include<vcl.h>
#include<stdio.h>
#include<conio.h>
main()
{
int tb, b,npm;
float d, k;
printf("================================\n");
printf("|   MENGHITUNG TOTAL BELANJA  |\n");
printf("--------------------------------\n");
printf("Total Belanja : Rp. " );scanf("%d",&tb);
printf("Bayar : Rp. "  );scanf("%d",&b);
if(tb>100000)
{
d=tb*0.15;
}
else if(tb>50000)
{
d=tb*0.10;
}
else if(tb<=50000)
{
d=0;
}
k=b-(tb-d);
printf("--------------------------------\n");
printf("\nDiskon Rp. %1.2f  ", d);
printf("\nKembali Rp. %1.2f \n ", k);
printf("================================\n");
printf("|          TERIMA KASIH        |\n");
printf("================================\n");
printf("\n\n\nCreated by Delina Permatasari",npm);
printf("\nNPM : 1406029",npm);
getch();
}




MODUL IV
PERULANGAN DALAM PEMROGRAMAN C++

A.    PENDAHULUAN MATERI
Struktur pengulangan terdiri atas dua bagian :
·         Kondisi pengulangan yaitu ekspresi boolean yang harus dipenuhi untuk melaksanakan pengulangan.
·         Isi atau badan pengulangan yaitu satu atau lebih pernyataan (aksi) yang akan diulang.
Perintah atau notasi dalam struktur perulangan adalah :
1.      Pernyataan while
Pernyataan while merupakan salah satu pernyataan yang berguana untuk memproses suatupernyataan atau beberapa pernyataan beberapa kali. Bentuk umumnya :
While(kondisi)
{
            Pernyataan:
}
2.      Pernyataan do...while
Pernyataan do...while mirips eperti pernyataan while, hanya saja pada do...while pernyataan yang terdapat didalmanya minimal akan sekali dieksekusi. Bentuk umumnya :
Do
{
            Pernyataan:
{ while(kondisi):



3.      Pernyataan for
Pernyataan for diguankan untuk menghasilakn pengulangan (looping) beberapa kali tanpa penggunaan kondisi apapun. Bentuk umumnya :
For(inisialisasi;kondisi;perubahan)
{
            Statement;
}
4.      Pernyataan continue dan break
Pernyataan break akan selalu terlihat digunakan bila menggunakan pernyataan switch. Pernyataan ini juga digunakan dalam loop. Bila pernyataan ini dieksekusi, maka akan mengakhiri loop dan akan menghentikan itrasi pada saat tersebut.
Pernyataan continue digunakan untuk pergi kebagian awal dari blok loop untuk memulai iterasi berikutnya.
5.      Pernyataan go to
Pernyataan go to, diperlukan untuk melakukan suatu lompatan ke suatu berlabel yang ditandai dengan tanda “ : “. Bentuk umumnya :
Goto bawah;
            Pernyataan1:
            Pernyataan2:
Bawah:pernyataan3:
B.     SOAL LATIHAN
1.      Buatlah algoritma dan program untuk menghitung 10 deret bilangan genap dengan hasilnya :
2 + 4 + 6 + 8 + 10 + 12 + 14 + 16 + 18 + 20 = 110
2.      Buatlah algoritam dan program untuk menghitung 10 deret bilangan ganjil dengan hasilnya :
1 + 3 + 5 + 7 + 9 + 11 + 13 + 15 + 17 + 19 = 100
Jawaban :
1.      Listing Program
#include<vcl.h>
#include<stdio.h>
#include<conio.h>
main()
{
int i,jumlah;
printf ("\n\t\tJumlah 10 Deret Bilangan Ganjil\n");
printf("\t\t------------------------------- \n\n  ");
jumlah = 0;
for (i=1; i<=19; i=i+2)
 {
printf(" %d +", i);
jumlah = jumlah+i ;
 }
printf("Jumlah deret = %d \n",jumlah);
getch();
}
2.      Listing program
#include<vcl.h>
#include<stdio.h>
#include<conio.h>
main()
{
int i,jumlah;
printf ("\n\t\tJumlah 10 Deret Bilangan Genap\n");
printf("\t\t------------------------------- \n\n  ");
jumlah = 0;
for (i=2;i<=20;i=i+2)
 {
printf(" %d +", i);
jumlah = jumlah+i ;
 }
printf("Jumlah deret = %d \n",jumlah);
getch();
}



C.    TUGAS PRAKTEK
1.      Tuliskan algoritma dan program untuk menampilkan semua solusi bilangan bulat tidak negative dari persamaan berikut x+y+z=25 yang dalam hal ini, x>=0, y>=0, dan z>=0.
2.      Buatlah algoritma dan program untuk menampilan berapa banyak baris yang di minta user tapi dengan mengandakan setiap baris yang dicetak dilayar. Misalnya, jumlah baris yang diminta adalah 5 buatlah dengan tanda * dengan berbentuk piramida terbalik.
Jawaban :
1.       
Pseudocode
Listing Program
Input (x, y, z)
For x = 20 to 25 do
For y = 0 to 25 do
For z = 0 to 25 do
If x + y + z = 25
Output(x+y+z=25)
#include<vcl.h>
#include<stdio.h>
#include<iostream.h>
#include<conio.h>
main()
{
int x, y, z, npm;
clrscr();
printf(" Penyelesaian Persamaan X + Y + Z = 25\n");
printf("\n");
for(x=20; x<=25; x++)
{
  for(y=0; y<=25; y++)
  {
    for(z=0; z<=25; z++)
    {
    if(x + y + z == 25)
    printf("\n%d + %d + %d = 25 " , x, y, z, x+y+z);
    }
  }
}
printf("\n\nCreated by Delina Permatasari",npm);
printf("\nNPM : 1406029",npm);
getch();
}
2.       
Pseudocode
Listing Program
Input (a,b,c,v)
For a = 0 to v do
For b = 0 to a do
For c = 0 to a-v do
output(*)
#include<vcl.h>
#include<stdio.h>
#include<iostream.h>
#include<conio.h>
int main()
{
int a,b,c,v,npm;
printf("Banyaknya Baris : " ); scanf("%d", &v);
printf("\n");
for(a=0; a<v; a++)
{
for(b=0; b<a; b++)
{
printf(" ");
}
for(c=0; c>(a-v); c--)
{
printf(" *");
}
printf("\n");
}
printf("\n\n\nCreated by Delina Permatasari",npm);
printf("\nNPM : 1406029",npm);
getch();
}




MODUL V
LARIK (ARRAY) DAN POINTER

A.    PENDAHULUAN MATERI
1.      Larik (Array)
Larik merupakan sekumpulan data yang mempunyai nama dan tipe yang sama. Larik banyak digunakan pada operasi yang melibatkan indeks seperti pada statistik dan matriks.
Tipe data larik dapat berupa larik satu demensi, dua demensi, tiga demensi atau banyak dimensi.
Bentuk umum larik satu dimensi :
Tipe_larik nama_larik[ukuran]
Bentuk umum larik dua dimensi :
Tipe_larik nama_larik[ukuran1][ukuran2]
Perhatikan :
·         Tanda kurung[ ] digunakan untuk menunjukkan elemen larik
·         Perhitungan elemen larik dimulai dari 0, bukan 1
a)      Representasi Larik
Misalkan kita memiliki sekumpulan data ujian seorang siswa, ujian pertama bernilai 90, kemudian 95, 78, 85. Sekarang kita ingin menyusunnya sebagai suatu data kumpulan ujian seorang siswa. Dalam array kita menyusunnya sebagai berikut.
Ujian[0]=90;
Ujian[1]=95;
Ujian[2]=78;
Ujian[3]=85;
Empat pernyataan diatas memberikan nilai kepada array ujian. Tetapi sebeelum kita memberikan nilai kepada array, kita harus mendeklarasikannya terlebih dahulu.
b)     Menghitung Jumlah Elemen Array
Karena fungsi sizeof() mengembalikan jumlah byte yang sesuai dengan argumennya, maka operator tersebut dapat digunakan untuk menemukan jumlah elemen array, misalnya
Int array [ ]={26,7,82,166}
Cout<<sizeof(array)/sizeof(int);
Akan mengembalikan nilai 4, yaitu sama dengan jumlah elemen yang dimiliki larik.
c)      Melewatkan Array sebagai Argumen Fungsi
Larik dapat dikirim dan dikembalikan oleh fungsi. Pada saat larik dikirim ke dalam fungsi, nilai aktualnya dapat dimanipulasi.
2.      Pointer
Pointer merupakan sebuah variabel yang menyimpan alamat dari suatu data. Pointer digunakan untuk :
1.      Menunjuk pada data yang berbeda dan struktur data yang berbeda.
2.      Membuat variabel baru pada saat program kita sedang dieksekusi (dynamic memory allocation)
3.      Mengakses lokasi-lokasi yang berbeda dalam sebuah struktur data seperti sebuah array, string, ataupun struct.
B.     TUGAS PRAKTEK
1.      Diberikan Larik integer A yang berukuran  elemen. Elemen larik A sudah terurut menarik (dari kecilke besar). Tuliskan fungsi untuk menghitung jangkauan (range) nilai di dalam larik . jangkauan adalah selisih nilai terbesar dengan nilai terkecil.
2.      Sebuah peruahaan ayam goring dengan nama “Gerobak Fried Chicken” yang telah lumayan banyak pelanggannya ingin dbantu dibuatkan program untuk membantu kelancaran usahanya. “Gerobak Fried Chicken” mempunyai daftar harga ayam sebaga berikut :
Kode Jenis Harga
------------------------
D Dada  Rp.2500
P Paha   Rp.2000
S Sayap Rp.1500
------------------------
Buatlah Programnya dengan ketentuan:
1. setiap pembeli dikenakan pajak sebesar 10 % dari pembayaran
2. Banyak jenis potong dan banyak bel di inputkan
Jawaban :
1.      Listing Program
#include<vcl.h>
#include<conio.h>
#include<stdio.h>
main()
{
 int i, n, A[100], max, min, npm;
 npm=1406029;
 printf("Data : ");scanf("%d", &n);
 clrscr();
 for(i=0;i<n;i++)
 {
  printf("A[%d] = ", i);scanf("%d", &A[i]);
 }
 for(i=0;i<n;i++)
 {
  {
  if(A[i]>A[i])
    max=A[i];
  if(A[i]<A[i])
    min=A[i];
  }
  {
  if(A[i]>max)
   max=A[i];
  if(A[i]<min)
   min=A[i];
  }
 }
 printf("\nNilai Maksimum\t= %d", max);
 printf("\nNilai Minimum\t= %d", min);
 printf("\nRange\t\t= %d", max-min);
 printf("\n\n\n\nCreated By : Delina Permatasari");
 printf("\nNPM : %d", npm);
 getch();
}
2.      Listing Progarm
#include<vcl.h>
#include<stdio.h>
#include<conio.h>
int r[100], k[100], i, n[100], d=2500, p=2000, s=1500, pj;
int bj, jml[100], jb=0, tb;
char j_potong[100], *j[100];
banner()
{printf("\n  GEROBAK FRIED CHICKEN\n");}
unit()
{
 printf("  -----------------------\n");
 printf("  Kode Jenis Harga\n");
 printf("  -----------------------\n");
 printf("  D Dada\tRp. %d\n", d);
 printf("  P Paha\tRp. %d\n", p);
 printf("  S Sayap\tRp. %d\n", s);
 printf("  -----------------------\n");
}
order()
{
 banner();unit();
 printf("  Banyak Jenis\t: ");scanf("%d", &bj);
 for(i=1;i<=bj;i++)
 {
  printf("  Jenis Ke - %d\n", i);
  printf("  Jenis Potong [D/P/S]\t: ");scanf("%s", &j_potong[i]);
  printf("  Banyak Potong\t: ");scanf("%d", &r[i]);
 }
 for(i=1;i<=bj;i++)
 {
  if (j_potong[i]=='D' || j_potong[i]=='d')
  {j[i]="Dada";k[i]=2500;}
  else if (j_potong[i]=='P' || j_potong[i]=='p')
  {j[i]="Paha";k[i]=2000;}
  else if (j_potong[i]=='S' || j_potong[i]=='s')
  {j[i]="Sayap";k[i]=1500;}
  else {}
  jml[i]=r[i]*k[i];
 }
}
main()
{
 order();clrscr();banner();
 printf("  ----------------------------------------------------------------\n");
 printf("    No.\t Jenis\t\tHarga\t\tBanyak\t\tJumlah\n");
 printf("\t Potong\t\tSatuan\t\tBeli\t\tHarga\n");
 printf("  ----------------------------------------------------------------\n");
 for(i=1;i<=bj;i++)
 {
  jml[i]=r[i]*k[i];
 }
 for(i=1;i<=bj;i++)
 {
  printf("     %d\t  %s\t\t %d\t\t %d\t      Rp. %d\n", i, j[i], k[i], r[i], jml[i]);
 }
 printf("  ----------------------------------------------------------------\n");
 for(i=1;i<=bj;i++)
 {
  jb=jb+jml[i];
 }
 pj=0.1*jb;
 tb=jb+pj;
 printf("\t\t\t\t  Jumlah Bayar\t=     Rp. %d", jb);
 printf("\n\t\t\t\t  Pajak 10%%\t=     Rp. %d", pj);
 printf("\n\t\t\t\t  Total Bayar\t=     Rp. %d", tb);
 printf("\n\n\n\n\nCreated By : Delina Permatasari");
 printf("\nNPM : 1406029");
 getch();
}




MODUL IV
STRUKTUR DAN FUNGSI

A.    PENDAHULUAN MATERI
1.      Struktur
Suatu tipe data yang merupakan kumpulan dari tipe data lainnya, struktur terdiri dari data yang disebut field. field-field tersebut digabungkan menjadi satu tujuan untuk kemudahan dalam operasi.
Bentuk umumnya :
Tyedef struct{ tipe nama_field1:
                              tipe nama_field2:
                              tipe nama_field3:
                              .....
                            }nama_variabel:
Hal-hal yang diperhatikan :
·         Deklarasi struktur hanya mendefinisikan bentuk data, tidak mendeklarasikan variabel untuk mendeklarasikan variabel dengan struktur diatas, anda harus menyatakan : struct data_mhs mahasiswa;
Artinya : variabel mahasiswa adalah sebuah statement yang harus diakhriti defngan titik koma (;).
·         Bagian deklarasi struktur adalah statement yang harus diakhiri dengan titik koma (;).
2.      Fungsi
Fungsi (function) merupakan blok dari kode yang dirancang untuk melaksanakan tugas khusus.
Keguanan dari fungsi ini adalah untuk :
·         Mengurangi pengulangan penulisan program yang berulangan atau sama.
·         Program menjadi lebih terstruktur, sehingga mudah dipahami dan dapat lebih dikembangkan.
Fungsi-fungsi yang sudah kit akenal sebelumnya adalah fungsi main(), yang bersifat mutlak, karena fungsi ini program akan dimulai, sebagai contoh yang lainnya fungsi printf(), cout() yang mempunyai tugas untuk menampikan informasi atau data kelayar dan masih banyak lainnya.
Struktur Fungsi
Nama_fungsi(argumen)
{
... pernyataan / perintah;
... pernyataan / perintah;
... pernyataan / perintah;
}

Keterangan:
·         Nama fungsi, boelh dituliskan secara bebas dengan ketentuan, tidak menggunakan spasi dan nama-nama fungsi yang mempunyai arti sendiri.
·         Argumen, diletakan diantara tanda kurung “( )” yang terletak dibelakang nama fungsi. Argumen boleh diisi dengan suatu data atau dibiarkan kosong.
·         Pernyataan/perintah, diletakan diantara tanda kurung “( )”.
Pada pemanggilan sebuah fungsi, cukup dengan menuliskan nama fungsinya.
1.      Protite Fungsi
Sebuah fungsi tidak dapat dipanggil keculai sudah dideklarasikan, deklarasi fungsi dikenal dengansebuatan prototipe fungsi. Prototipe fungsi berupa :
a.       Nama fungsi
b.      Fipe nilai fungsi
c.       Jumlah dan tipe argumen
Dan diakhiri dengan titik koma, sebagaimana pada pendeklarasian variabel. Sebagai contoh:
·         Long kuadrat (long 1);
Pada contoh pertama, fungsi kuadrat ( ) mempunyai argumen bertipe long dan nilai balik bertipe long.
·         Void garis ( );
Pada contoh kedua, fungsi garis ( ) tidak memiliki argumen dan nilai baliknya tidak ada (void).
·         Double maks (double x, double y)
Pada contoh ketiga, fungsi maks ( ) mempunyai dua buah argumen, dengan masing-masing argumen bertipe double.
2.      Variabel Lokal Dan Variabel Eksternal
Variabel lokal adalah variabel yang didefinisikan dalam suatu fungasi tertentu, sehingga hanya dikenal dalam fungsi tersebut.dalam hal ini artinya suatu fungsi tidak akan mengenal variabel lokal dan fungsi lain.
Variabel eksternal adalah variabel yang bersifat global yang dapat dikenali oleh sluruh fungsi yang terdapat dalam program tersebut. Bariabel eksternal dideklarasikan diluar fungsi dan sejajar dengan prototipe fungsi serta pengarah kompiler.
3.      Parameter
Parameter adalah sarana komunikasi antar fungsi. Pengertian antar fungsi adalah antara fungsi dengan fungsi lain termasuk antara fungsi dengan fungsi utama.
Terdapat  dua macam bentuk parameter dalam hubungannya dengan penggunaan fungsi dalam program yaitu:
·         Parameter formal : parameter yang diberikan nilai. Parameter formal parameter yang terdapat dalam daftar parameter fungsi.
·         Parameter aktual : parameter yang memberikan nilai. Parameter fungsi dan digunakan untuk memberi nilai pada parameter formal.
a.       Cara melewatkan parameter
Cara melewatkan suatu parameter dalam Bahasa C++ ada dua cara yaitu :
1)      Pemanggilan secara Nilai(call by Value)
-          Call by value akan menyalin nilai dari parameter aktual ke parameter formal
-          Yang dikirimkan ke fungsi adalah nilai dari datarnya, bukan alamat memori letak dari datanya.
2)      Pemanggilan secara Referensi (call by Reference)
-          Pemanggilan secara Referensi merupakan upaya untuk melewatkan alamat dari suatu variabel ke dalam fungsi.
-          Yang dikirmkan ke fungsi adaladh alamat letak dari nilai datanya, bukan nilai datanya.
4.      Nilai Bawaan Untuk Argumen Fungsi
Salah satu keistimewaan C++ yang sangat bermanfaat dalam pemrograman adalah adanya kemampuan untuk menyetel nilai default Argumen fungsi.
5.      Rekursi
Merupakan suatu fungsi dapat memenggil fungsi yang merupakan dirinya sendiri. Penerapan rekursi diantaranya untuk menghitung nilai : xn
6.      Fungsi-Fungsi Bawaan C++
Anda dapat mengunakan fungsi-fungsi bawaan C++, misalkan fungsi-fungsi matematika, pengolah kata dan banyak lagi. Sebenarnya (mungkin tidak terasa bagi anda) main juga adalah fungsi, jadi tanpa anda sadari sebenarnya anda telah menggunakan fungsi. Untuk dapat menggunakan fungsi-fungsi tersebut anda harus meng-include file dimana fungsi tersebut didefinisikan.
Misalnya :
o   Fungsi-fungsi matematika, anda harus meng-include file math.h
o   Fungsi-fungsi pengolah sring dan karakter, anda harus meng-include file string.h
o   Fungsi clrscr(), getch(), getche() dalam file conio.h
B.     Tugas Praktikum
1.      PT.DINGIN DAMAI memberikan honor tetap kepada karyawan kontraknya sebesar Rp.1.000.000,- per bulan, dengan memperoleh tunjangan-tunjangan sebagai berikut:
Tunjangan Jabatan
Golongan
Persentase
1
5 %
2
10%
3
15%
Sebagai contoh : jka seorang karyawan tersebut dengan golongan 3, maka mendapatkan tunjangan sebesar 15% * Rp.1.000.000,-



Tunjangan Pendidikan
Kode
Pendidikan
Persentase
1
SMU
2,5%
2
D3
5%
3
S1
7,5%
Honor Lembur
Jumlah jam kerja normal sebanyak 8 jam kerja. Honor lembur diberikan jika jumlah jam kerja lebih dari 8 jam, maka kelebihan jam kerja tersebut dikalikan dengan honor lembur perjam sebesar Rp.25.000 untuk setiap kelebihan jam kerja perharinya
Layar Masukan
Program Hitung Honor Karyawan Kontrak
PT.DINGIN DAMAI
Nama Karyawan                : …<diinput>
NIP                                    : …<diinput>
Golongan                           : …<diinput>
Pendidikan(SMU/D3/S1)  : …<diinput>
Jumlah Kerja                      : …<diinput>
Output
DAFTAR GAJI KARYAWAN
PT. ANGIN RIBUT
No
Nama
Karyawan
Nip
Golong
an
Pendidik
an
Jumlah jam kerja
Uang lembur
Total Gaji
1.       
dst
...
...
Rp. ...
Rp. ...
Rp. ...
Rp. ...
Rp. ...
Gunakan Struktur, Array dan Fungsi
2.      Buat program tentang penyewaan penginapan kamar disuatu perhotelan dengan menggunakan java, dimana data yang disimpan:
a.       Data kamar yang berisi data jumlah kamar yang dimiliki oleh hotel tersebut, termasuk dari status dari kamar tersebut apakah terisi kosong atau di bookin. Kamar yang ada terdiri dari 3 jenis kamar, yaitu (harga sewanya Rp.175.000), double (harga sewanya Rp.225.000)dan suite (harga sewanya Rp.300.000) per malam
b.      Data penyewa yang berisi data tamu yang menginap dihotel tersebut, yag minimal menyimpan data no KTP/SIM, nama alamat atau no telepon.
c.       Data Room Service dimana tamu yang menginap di hotel tersebut memesan makanan ataupun lainnya, yang minimal menyimpan data makanan yang dipesan.
d.      Data transakasi, yang berisi proses transaksi antara penyewa dan pemilik hotel yang akan menyewakan kamar untuk disewa.
Adapun fasilitas / proses yan dimiliki oleh program ini adalah sebagai berikut:
a.       Dapat menampilkan data kamar beserta statusnya, termasuk memberikan summary berapa jumlah kamar yang terisi, yang kosong, dan yang di booking.
b.      Dapat menampilkan data penyewa termasuk kamar yang disewa. Juga dapat memberikan summary tentang penyewa yang sering menginap dihotel tersebut.
c.       Dapat menampilkan data makanan yang dipesan (room servis).juga dappat memberikan summary makanan apa yang disukai di hotel tersebut.
d.      Dapat mengetahui total transaksi yan dilakukan pada suatu waktu tertentu (perbulan atau pertahun tertentu)
e.       Tambahkan fasilitas lain akan memberikan nilai tambah.
Jawaban :
1.      Listing Program
#include<vcl.h>
#include<conio.h>
#include<stdio.h>
int i, k[40], l[40], n, p[40], tj[40], tp[40], gol[40], honor=1000000, nip[40], tot[40];
char *nama[40][15], *pend[40];
void banner()
{printf("\n\tNama       : Delina Permatasari");
 printf("\n\tNPM        : 1406029");
 printf("\n\tJurusan    : Teknik Informaika - C\n\n");
 printf("\n\t\t---------------------------------------------- ");
 printf("\n\t\t\t\tPT.DINGIN DAMAI       ");
 printf("\n\t\t---------------------------------------------- ");
}
void Layar1()
{
 for(i=0;i<n;i++)
 {
  clrscr();banner();
  printf("\n\n");
  printf("\tData Ke-%d\n", i+1);
  printf("\tNama Karyawan\t\t: ");scanf("%s",&nama[i][15]);
  printf("\tNIP\t\t\t: ");scanf("%d",&nip[i]);
  printf("\tGolongan\t\t: ");scanf("%d",&gol[i]);
  printf("\tPendidikan (SMU/D3/S1)\t: ");scanf("%d",&p[i]);
  printf("\tJumlah Jam Kerja\t: ");scanf("%d",&k[i]);
 }
}
void Layar2()
{
 for(i=0;i<n;i++)
 {
  printf(" | %d|   %s    |", i+1, &nama[i][15]);
  printf("  %d  |   %d\t", nip[i], gol[i]);
  printf("|   %s  |     %d     ", pend[i], k[i]);
  printf("| Rp.%d| Rp.%d|\n", l[i], tot[i]);
 }
}
void main()
{
 banner();
 printf("\n\n");
 printf("\tBanyak Data : ");scanf("%d",&n);
 Layar1();
 for(i=0;i<n;i++)
 {
  if(gol[i]==1){tj[i]=honor*5/100;}
  else if(gol[i]==2){tj[i]=honor*1/10;}
  else if(gol[i]==3){tj[i]=honor*15/100;}
  else {}
  if(p[i]==1){tp[i]=honor*25/1000;pend[i]="S M U";}
  else if(p[i]==2){tp[i]=honor*5/100;pend[i]=" D 3";}
  else if(p[i]==3){tp[i]=honor*75/1000;pend[i]=" S 1";}
  else {}
  l[i]=(k[i]-8)*25000;
  tot[i]=honor+tj[i]+tp[i]+l[i];
 }
 clrscr();
  banner();
 printf("\n\t\t\t      DAFTAR GAJI KARYAWAN       ");
 printf("\n");
 printf("\n ------------------------------------------------------------------------------");
 printf("\n|No|    Nama     | NIP | Golong | Pendidik |  Jumlah   |    Uang   |   Total   |");
 printf("|  |  Karyawan   |     |   an   |    an    | jam Kerja |   Lembur  |   Gaji    |");
 printf(" ------------------------------------------------------------------------------");
 Layar2();
 printf(" ------------------------------------------------------------------------------");
 printf("\n\n\n Created by Delina Permatasari");
 getch();
}
2.      Listing Program
#include<vcl.h>
#include<conio.h>
#include<stdio.h>
int i,p=0,pilih;double fds[2]={50000,20000},ds=15000;
char *j[3]={"Single","Double","Suite "},*s[3]={" Terisi","Dibooking"," Kosong"};
struct{char *status,*jenis; int harga;}kamar[40];
struct{char *nama,*alamat; double NoId,NoTelp; int ket;}penyewa[40];
struct{char *makan,*minum;}RS[20];
void bannerhotel()
{printf("\n\tNama       : Delina Permatasari");
 printf("\n\tNPM        : 1406029");
 printf("\n\tJurusan    : Teknik Informaika - C\n\n");
 printf("\n\t     +=================================================+\n");
 printf("\t     +          ===    SELAMAT DATANG     ===          +\n");
 printf("\t     +          ===          DI           ===          +\n");
 printf("\t     +          ===   HOTEL AIMI SAKURA   ===          +\n");
 printf("\t     +=================================================+\n\n");
}
void bannerdatapenyewa()
{
 printf("\n     +==================================================+\n");
 printf("     +          ===     DATA PENYEWA      ===           +\n");
 printf("     +          ===   HOTEL AIMI SAKURA   ===           +\n");
 printf("     +==================================================+\n\n");
}
void bannerdatakamar()
{
 printf("\n     +==================================================+\n");
 printf("     +          ===      DATA  KAMAR      ===           +\n");
 printf("     +          ===   HOTEL AIMI SAKURA   ===           +\n");
 printf("     +==================================================+\n\n");
}
void bannertransaksi()
{
 printf("\n     +==================================================+\n");
 printf("     +          ===    DATA  TRANSAKSI    ===           +\n");
 printf("     +          ===   HOTEL AIMI SAKURA   ===           +\n");
 printf("     +==================================================+\n\n");
}
void bannerrs()
{
 printf("\n     +==================================================+\n");
 printf("     +          ===     ROOM  SERVICE     ===           +\n");
 printf("     +          ===   HOTEL AIMI SAKURA   ===           +\n");
 printf("     +==================================================+\n\n");
}
void datapenyewa()
{
 penyewa[0].nama="Asri ";penyewa[0].alamat="Jakarta";penyewa[0].ket=2;
 penyewa[0].NoId=3205052012900001;penyewa[0].NoTelp=82322422522;
 penyewa[1].nama="Wahyu";penyewa[1].alamat="Cirebon";penyewa[1].ket=3;
 penyewa[1].NoId=3205050505850005;penyewa[1].NoTelp=85725950850;
 penyewa[2].nama="Meli ";penyewa[2].alamat="Sidoarjo";penyewa[2].ket=4;
 penyewa[2].NoId=3206062312910002;penyewa[2].NoTelp=87827888222;
 penyewa[4].nama="Vani ";penyewa[4].alamat="Garut";penyewa[4].ket=2;
 penyewa[4].NoId=3205050201930003;penyewa[4].NoTelp=81200100000;
 penyewa[6].nama="Yunus";penyewa[6].alamat="Bandung";penyewa[6].ket=3;
 penyewa[6].NoId=3204042802890004;penyewa[6].NoTelp=83823000123;
 penyewa[8].nama="Dila ";penyewa[8].alamat="Garut";penyewa[8].ket=2;
 penyewa[8].NoId=3205050106960001;penyewa[8].NoTelp=85662111234;
 penyewa[10].nama="Yadi ";penyewa[10].alamat="Depok";penyewa[10].ket=3;
 penyewa[10].NoId=3205051010900001;penyewa[10].NoTelp=81210310410;
 penyewa[11].nama="Aisyah";penyewa[11].alamat="Jakarta";penyewa[11].ket=5;
 penyewa[11].NoId=3205050501940004;penyewa[11].NoTelp=85721666909;
 penyewa[12].nama="Victor";penyewa[12].alamat="Semarang";penyewa[12].ket=4;
 penyewa[12].NoId=3202020810880002;penyewa[12].NoTelp=81381457233;
 penyewa[15].nama="Rahmayani";penyewa[15].alamat="Bogor";penyewa[15].ket=3;
 penyewa[15].NoId=3205050607900001;penyewa[15].NoTelp=82356231876;
 penyewa[17].nama="Nia  ";penyewa[17].alamat="Lampung";penyewa[17].ket=10;
 penyewa[17].NoId=3205051202920002;penyewa[17].NoTelp=82563753433;
 penyewa[19].nama="Alif ";penyewa[19].alamat="Maluku";penyewa[19].ket=14;
 penyewa[19].NoId=3205051208890001;penyewa[19].NoTelp=81267628972;
 penyewa[21].nama="Stefani";penyewa[21].alamat="Jakarta";penyewa[21].ket=4;
 penyewa[21].NoId=3205050404900004;penyewa[21].NoTelp=85333814351;
 penyewa[23].nama="Wilson";penyewa[23].alamat="Malang";penyewa[23].ket=3;
 penyewa[23].NoId=3203030802890001;penyewa[23].NoTelp=87833843641;
 penyewa[25].nama="Haitsam";penyewa[25].alamat="Depok";penyewa[25].ket=3;
 penyewa[25].NoId=3205050405910004;penyewa[25].NoTelp=85764413424;
 penyewa[26].nama="Dena ";penyewa[26].alamat="Yogyakarta\b";penyewa[26].ket=6;
 penyewa[26].NoId=3205052808900002;penyewa[26].NoTelp=85722745164;
 penyewa[28].nama="Khaiza";penyewa[28].alamat="Bandung";penyewa[28].ket=3;
 penyewa[28].NoId=3205052009900003;penyewa[28].NoTelp=82355401567;
 penyewa[30].nama="Caca ";penyewa[30].alamat="Garut";penyewa[30].ket=2;
 penyewa[30].NoId=3205050609950004;penyewa[30].NoTelp=82213849120;
 penyewa[35].nama="Fauzan";penyewa[35].alamat="Garut";penyewa[35].ket=2;
 penyewa[35].NoId=3205052211960004;penyewa[35].NoTelp=82333124769;
 penyewa[36].nama="Dini ";penyewa[36].alamat="Pontianak";penyewa[36].ket=8;
 penyewa[36].NoId=3205050709920002;penyewa[36].NoTelp=85647294723;
 penyewa[37].nama="Gofar";penyewa[37].alamat="Serang";penyewa[37].ket=5;
 penyewa[37].NoId=3203030611900004;penyewa[37].NoTelp=82185916400;
 penyewa[39].nama="Lintang";penyewa[39].alamat="Bandung";penyewa[39].ket=2;
 penyewa[39].NoId=3205053008890003;penyewa[39].NoTelp=82356277812;
}
void Kamar()
{
 kamar[0].jenis=j[0];kamar[20].jenis=j[1];
 kamar[1].jenis=j[0];kamar[21].jenis=j[2];
 kamar[2].jenis=j[1];kamar[22].jenis=j[0];
 kamar[3].jenis=j[2];kamar[23].jenis=j[1];
 kamar[4].jenis=j[1];kamar[24].jenis=j[2];
 kamar[5].jenis=j[0];kamar[25].jenis=j[1];
 kamar[6].jenis=j[0];kamar[26].jenis=j[0];
 kamar[7].jenis=j[1];kamar[27].jenis=j[1];
 kamar[8].jenis=j[0];kamar[28].jenis=j[2];
 kamar[9].jenis=j[2];kamar[29].jenis=j[2];
 kamar[10].jenis=j[2];kamar[30].jenis=j[0];
 kamar[11].jenis=j[2];kamar[31].jenis=j[2];
 kamar[12].jenis=j[1];kamar[32].jenis=j[0];
 kamar[13].jenis=j[0];kamar[33].jenis=j[2];
 kamar[14].jenis=j[1];kamar[34].jenis=j[1];
 kamar[15].jenis=j[2];kamar[35].jenis=j[2];
 kamar[16].jenis=j[0];kamar[36].jenis=j[0];
 kamar[17].jenis=j[1];kamar[37].jenis=j[0];
 kamar[18].jenis=j[0];kamar[38].jenis=j[1];
 kamar[19].jenis=j[2];kamar[39].jenis=j[1];
 kamar[0].status=s[1];kamar[20].status=s[2];
 kamar[1].status=s[0];kamar[21].status=s[1];
 kamar[2].status=s[0];kamar[22].status=s[2];
 kamar[3].status=s[2];kamar[23].status=s[1];
 kamar[4].status=s[1];kamar[24].status=s[2];
 kamar[5].status=s[2];kamar[25].status=s[1];
 kamar[6].status=s[0];kamar[26].status=s[0];
 kamar[7].status=s[2];kamar[27].status=s[2];
 kamar[8].status=s[0];kamar[28].status=s[0];
 kamar[9].status=s[2];kamar[29].status=s[2];
 kamar[10].status=s[0];kamar[30].status=s[0];
 kamar[11].status=s[1];kamar[31].status=s[2];
 kamar[12].status=s[0];kamar[32].status=s[2];
 kamar[13].status=s[2];kamar[33].status=s[2];
 kamar[14].status=s[2];kamar[34].status=s[2];
 kamar[15].status=s[0];kamar[35].status=s[0];
 kamar[16].status=s[2];kamar[36].status=s[1];
 kamar[17].status=s[0];kamar[37].status=s[0];
 kamar[18].status=s[2];kamar[38].status=s[2];
 kamar[19].status=s[1];kamar[39].status=s[0];
 for(i=0;i<40;i++)
 {
  if(kamar[i].jenis==j[0]) {kamar[i].harga=175000;}
  else if(kamar[i].jenis==j[1]) {kamar[i].harga=225000;}
  else if(kamar[i].jenis==j[2]) {kamar[i].harga=300000;}
 }
}
void roomservice()
{
 RS[0].makan="Ikan Bakar      ";RS[0].minum="Kopi Pagi     ";
 RS[1].makan="Nasi Kuning     ";RS[1].minum="Kopi Sore     ";
 RS[2].makan="Nasi Goreng     ";RS[2].minum="Tea Time(Sore)";
 RS[3].makan="Nasi Liwet      ";RS[3].minum="Jus Jeruk     ";
 RS[4].makan="Nasi Remes      ";RS[4].minum="Jus Strawberry";
 RS[5].makan="Sate Ayam       ";RS[5].minum="Jus Mangga    ";
 RS[6].makan="Sate Kambing    ";RS[6].minum="Jus Melon     ";
 RS[7].makan="Ayam Bakar      ";RS[7].minum="Jus Apel      ";
 RS[8].makan="Lumpia\t  ";RS[8].minum="Jus Sirsak    ";
 RS[9].makan="Seblak\t  ";RS[9].minum="Jus Belimbing ";
 RS[10].makan="Jagung Bakar    ";RS[10].minum="Jus Pisang    ";
 RS[11].makan="Mie Kocok       ";RS[11].minum="Teh Lemon     ";
 RS[12].makan="Rujak Buah      ";RS[12].minum="Teh Tarik     ";
 RS[13].makan="Bubur Ayam(Pagi)";RS[13].minum="Teh Apel      ";
 RS[14].makan="Pizza Sunda     ";RS[14].minum="Teh Strawberry";
 RS[15].makan="Martabak Coklat ";RS[15].minum="Milk Shake    ";
 RS[16].makan="Martabak K.Hijau";RS[16].minum="Cappucino     ";
 RS[17].makan="Martabak Kacang ";RS[17].minum="Es Cincau     ";
 RS[18].makan="Martabak Telor  ";RS[18].minum="Bandrek       ";
 RS[19].makan="Surabi\t  ";RS[19].minum="Bajigur       ";
}
void Penyewa()
{
 int a=0, b=0, c=0;
 bannerdatapenyewa();
 printf("  -----------------------------------------------");
 printf("-----------------------------------------------\n");
 printf(" | Nama Penyewa\t|   No.Identitas   | Kamar | Jenis  |");
 printf("  Alamat\t|    Telepon\t|  Keterangan\t|\n");
 printf(" |--------------|------------------|-------|--------|");
 printf("-----------|---------------|---------------|\n");
 Kamar();datapenyewa();
 char *top;
 for(i=0;i<40;i++)
 {
  if(kamar[i].status!=s[2])
  {
   printf(" | %s\t| %.0f |", penyewa[i].nama,penyewa[i].NoId);
   if(i>=0&&i<10){printf(" %d A |",101+i);}
   else if(i>=10&&i<20){printf(" %d B |",91+i);}
   else if(i>=20&&i<30){printf(" %d A |",181+i);}
   else{printf(" %d B |",171+i);}
   printf(" %s | %s\t|",kamar[i].jenis,penyewa[i].alamat);
   printf(" 0%.0f\t|    %d Malam\t|\n",penyewa[i].NoTelp,penyewa[i].ket);
   if(kamar[i].jenis==j[0]) {a=a+1;}
   else if(kamar[i].jenis==j[1]) {b=b+1;}
   else if(kamar[i].jenis==j[2]) {c=c+1;}
  }
  if(penyewa[i].ket>10){top=penyewa[i].nama;}
 }
 printf("  -----------------------------------------------");
 printf("-----------------------------------------------\n");
 if((a>b)&&(b>c))printf("\n  Kamar Favorit Penyewa\t: Single");
 else if((a>c)&&(c>b))printf("\n  Kamar Favorit Penyewa\t: Single");
 else if((b>c)&&(c>a))printf("\n  Kamar Favorit Penyewa\t: Double");
 else if((b>a)&&(a>c))printf("\n  Kamar Favorit Penyewa\t: Double");
 else if((c>a)&&(a>b))printf("\n  Kamar Favorit Penyewa\t: Suite");
 else printf("\n  Kamar Favorit Penyewa\t: Suite");
 printf("\n  Penyewa paling sering\t: %s",top);
}
void Datakamar()
{
 int jmld=0, jmlk=0, jmlt=0;
 clrscr();bannerdatakamar();
 printf("  ------------------------------------------------------\n");
 printf(" |  No\t| Kamar | Jenis  |    Status\t|  Harga/Malam\t|\n");
 printf(" |------|-------|--------|--------------|---------------|\n");
 Kamar();
 for(i=0;i<40;i++)
 {
  if(i>=0&&i<10){printf(" |  %d\t| %d A |", i+1, 101+i);}
  else if(i>=10&&i<20){printf(" |  %d\t| %d B |", i+1, 91+i);}
  else if(i>=20&&i<30){printf(" |  %d\t| %d A |", i+1, 181+i);}
  else{printf(" |  %d\t| %d B |", i+1, 171+i);}
  printf(" %s |   %s\t|", kamar[i].jenis, kamar[i].status);
  printf("  Rp.%d,-\t|\n",kamar[i].harga);
  if(kamar[i].status==s[1]) {jmld=jmld+1;}
  else if(kamar[i].status==s[2]) {jmlk=jmlk+1;}
  else if(kamar[i].status==s[0]) {jmlt=jmlt+1;}
 }
 printf("  ------------------------------------------------------\n");
 printf("\n  Kamar Dibooking : %d", jmld);
 printf("\n  Kamar Kosong    : %d", jmlk);
 printf("\n  Kamar Terisi    : %d", jmlt);
}
void Transaksi()
{
 bannertransaksi();unsigned long total_bayar[40], total_transaksi=0;
 printf("  ----------------------------------------------\n");
 printf(" | Nama Penyewa\t| Kamar | Jenis  | Total Bayar\t|\n");
 printf(" |--------------|-------|--------|--------------|\n");
 Kamar();datapenyewa();
 for(i=0;i<40;i++)
 {
  if(kamar[i].status!=s[2])
  {
   total_bayar[i]=penyewa[i].ket*kamar[i].harga;
   total_transaksi=total_transaksi+total_bayar[i];
   printf(" | %s\t|", penyewa[i].nama);
   if(i>=0&&i<10){printf(" %d A |",101+i);}
   else if(i>=10&&i<20){printf(" %d B |",91+i);}
   else if(i>=20&&i<30){printf(" %d A |",181+i);}
   else{printf(" %d B |",171+i);}
   printf(" %s |",kamar[i].jenis);
   printf(" Rp.%d\t|\n\r",total_bayar[i]);
  }
 }
 printf(" |-------------------------------|--------------|\n");
 printf(" |\t  Total Teransaksi\t | Rp.%d\t|\n",total_transaksi);
 printf("  ----------------------------------------------\n");
}
void RoomService()
{
 bannerrs();roomservice();
 printf("  -----------------------------------------------------------------------\n");
 printf(" |  No\t|     Makanan\t  |  Kode Pesan  |    Minuman\t |  Kode Pesan\t |\n");
 printf(" |------|-----------------|--------------|---------------|---------------|\n");
 for(i=0;i<20;i++)
 {
  printf(" |  %d\t| %s|   %d Fd.S\t | %s|    %d D.S\t |\n",i+1,RS[i].makan,101+i,RS[i].minum,201+i);
 }
 printf(" |------------------------|--------------|-------------------------------|\n");
 printf(" |\t\t\t  | Fd.s 101-108 |\t    @Rp.%.0f,-\t\t |\n", fds[0]);
 printf(" |\t   Harga\t  | Fd.s 109-120 |\t    @Rp.%.0f,-\t\t |\n", fds[1]);
 printf(" |\t\t\t  | D.s  201-220 |\t    @Rp.%.0f,-\t\t |\n", ds);
 printf("  -----------------------------------------------------------------------\n");
 printf("\n  Makanan Terfavorit\t: %s",RS[14].makan);
 printf("\n  Minuman Terfavorit\t: %s",RS[2].minum);
}
void main()
{
 do
 {
 clrscr();bannerhotel();
 printf("\t\t\t\tMENU\n\n");
 printf("\t\t\t   1. Data Kamar\n");
 printf("\t\t\t   2. Data Penyewa\n");
 printf("\t\t\t   3. Room Services\n");
 printf("\t\t\t   4. Data Transaksi\n");
 printf("\t\t\t   5. Selesai\n");
 printf("\n\t\t   Masukan Pilihan Anda : ");scanf("%d",&pilih);
 switch (pilih)
 {
  case 1 :{clrscr();Datakamar();getch();break;}
  case 2 :{clrscr();Penyewa();getch();break;}
  case 3 :{clrscr();RoomService();getch();break;}
  case 4 :{clrscr();Transaksi();getch();break;}
  case 5 :{exit(p);break;}
  default:{break;}
 }}while(pilih!=5);
}