MODUL I
OPERASI I/O Mengetahui struktur operasi input & output pada C++
MENAMPILKAN DATA(INFORMASI) KE LAYAR Fungsi : Printf( ) Puts( ) Putchar( )
printf( ) Prinf(“string kontrol”, argumen1, argumen2,….. ) String kontrol berupa keterangan yang akan ditampilkan beserta penentu format (seperti %d,%f,dll). Argumen adalah data yang akan ditampilkan ke layar yang dapat berupa variabel, konstanta, bahkan ungkapan. Misalnya : Printf(“%d”,20); Printf(“%d” ,20); // argumen berupa konstanta konstant a
Printf(“%d”,a); // argumen berupa variabel Printf(“%d”,a+20); Printf(“%d” ,a+20); // argumen argu men berupa ungkapan
PENENTU FORMAT
CONTOH # include main() { unsigned int segment_grafik=0xB800; float x=251000.0; printf(“Nilai segment grafik(Oktal) printf(“Nilai segment grafik(desimal) printf(“Nilai segment grafik(Hesadesimal) Printf(“ \nFormat e adalah = %e\ n”,x); printf(“Format f adalah = %f \n ”,x); printf(“Format g adalah = %g \ n”,x);
}
:%o\ n”, segment_grafik); :%u\ n”, segment_grafik); :%x\ n”, segment_grafik);
PUTS() & PUTCHAR() Fungsi put() digunakan untuk menampilkan data string ke layar. Sifat fungsi ini secara otomatis akan diakhiri dengan \n (pindah baris). Berbeda dengan fungsi putchar() yang khusus untuk menampilkan sebuah karakter dan tidak diakhiri dengan perpindahan baris contoh : Puts(“Belajar bahasa pemrograman terstruktur”); Putchar(„A‟);
DATA MASUKAN FROM KEYBOARD Untuk input data digunakan fungsi :
scanf(), getch(), getche() Scanf() Scanf(“String Kontrol”, Daftar Argumen)
Untuk penentu format bentuknya sama seperti printf() sedangkan untuk daftar argumen haruslah berupa alamat yang ditambahkan tanda & (operator alamat)
Contoh : luas Lingkaran #include #define pi 3.141593 main() { float radius,keliling,luas; printf("Masukkan jari-jari lingkaran :"); scanf("%f",&radius); keliling=2*pi*radius; luas=0.5*pi*radius*radius; puts("DATA LINGKARAN :"); printf("Jari-jari = %g\n",radius); printf("Keliling = %g\n",keliling); printf("Luas = %g\n",luas); }
GETCH() & GETCHE() Fungsi getch() digunakan untuk membaca sebuah karakter dengan sifat karakter yang dimasukkan tak perlu diakhiri dengan ENTER, disamping itu, karakter yang dimasukkan tak akan ditampilkan pada layar Sedangkan fungsi getche() karakter yang dimasukkan akan ditampilkan pada layar.
Contoh karakter #include #include main() { char huruf1,huruf2; printf("Masukkan sebuah karakter :"); huruf1=getche(); //karakter yang dimasukkan akan terlihat dilayar printf("\n Karakter yang anda masukkan adalah = %c",huruf1); printf("\nMasukkan sebuah karakter lagi:"); huruf2=getch(); //karakter yang dimasukkan tidak terlihat dilayar printf("\n Karakter yang anda masukkan adalah = %c",huruf2); getch(); }
LATIHAN (60 menit) 1. Buat program menghitung luas segitiga 2. Buat Program untuk konversi suhu dari °C ke F 3. Buat Program konversi dari jam ke detik & detik ke jam
TROUBLESHOOTING
Implementasi : /* Konversi jarak dari mil ke kilometer */ #include /* definisi printf, scanf */ #include KM_PER_MIL 1.609 /*konstanta konversi */ int main(void) { double mil, /*input: jarak dalam mil*/ km; /*output: jarak dalam km*/ /* memasukkan jarak dalam mil */ printf(“Masukkan jarak dalam mil : “); scanf(“%lf”, &mil);
/* konversi jarak ke kilometer */ km = KM_PER_MIL * mil; /* tampilkan jarak dalam kilometer */ printf(“Hasil konversi adalah %lf kilometer. \ n”, km);
return(0);
}
Contoh hasil runing program : Masukkan jarak dalam mil : 10.00 Hasil konversi adalah 16.090000 kilometer
CASE 1
Problem : Suatu dealer minyak menampung minyak jualannya di dalam drum-drum. Sementara semua pembeli selalu membeli minyak dengan membawa wadah yang sama berupa jerigen. Pemilik dealer agak kesulitan untuk menghitung harga minyak yang dibeli oleh pembeli, karena pembeli selalu membeli minyak dengan satuan jerigen (misalnya 3 jerigen, atau 3.5 jerigen), sementara harga jual yang diketahui adalah rupiah per drum, yaitu 100.000 rupiah per drum. Diketahui bahwa 1 jerigen isinya sama dengan 1/20 drum. Bisakah anda membantu pemilik dealer untuk memudahkan perhitungan harga total minyak yang dijual ke setiap pembeli?
CASE 2 Anda seorang agen penukaran uang. Pelanggan yang datang ke anda biasanya membawa uang dalam satuan besar (misalnya, 2 buah 100.000 atau 3 buah 50.000 atau 5 buah 20.000). Dan mereka ingin menukarkan uangnya dalam pecahan yang lebih kecil (misalnya, 1000 atau 500 atau 100 atau 50). Komisi yang diberikan kepada anda adalah 10% dari uang yang ditukarkan. Komputasikan berapa komisi Anda dan berapa jumlah lembaran/pecahan uang yang diterima pelanggan anda!
Struktur Kontrol
Struktur kontrol kombinasi instruksiinstruksi menjadi satu unit logik yang memiliki satu titik masuk dan satu titik keluar. Instruksi-instruksi dalam program diorganisasikan menjadi 3 macam struktur kontrol, yaitu :
Urutan Percabangan (if dan switch) Perulangan
Kondisi
Suatu ekspresi yang menghasilkan nilai false (0) atau true (1) Menggunakan operator relasional <, >, <=, >=, ==, !=
Menggunakan operator logika &&, ||, !
Presedensi Operator Function calls !, +, -, & (operator unary) *, /, % +, <, <=, >=, > ==, != && || =
IF dengan satu alternatif
Struktur if dibentuk dari pernyataan if dan sering digunakan untuk menyeleksi suatu kondisi kondisi tunggal. Bila proses yang diseleksi terpenuhi atau nilai benar, maka pernyataan yang ada di dalam blok if akan diproses dan dikerjakan. Bentuk umum struktur kondisi if adalah:
IF dengan satu alternatif F
T x != 0
produk=produk*x
Bentuk : if (kondisi) statementsT;
IF dengan satu alternatif
Contoh 1 : if (x!=0) produk=produk *x;
Contoh 2 : if (x!=0) { produk=produk *x; printf(“x!=0\ n”) ; }
Korting 1 #include Main() { double tot_pemb, korting; Printf(“Total Pembelian : Rp”); sacnf(“lf”,&tot_pemb); korting=0; // tentukan nilai awal variabel korting; if(tot_pemb>=50000) korting=0.5*tot_pemb; printf(“Besarnya Korting : Rp%2lf \n”,korting); }
IF dengan dua alternatif Dalam struktur kondisi if...else minimal terdapat dua pernyataan. Jika kondisi yang diperiksa bernialai benar atau terpenuhi maka pernyataan pertama yang dilaksanakan dan jika kondisi yang diperiksa bernilai salah maka pernyataan yang kedua yang dilaksanakan.
IF dengan dua alternatif
F
T x != 0
p=p*(1+x)
Bentuk :
p=p*(2+x)
if (kondisi) statementsT; else statementsF;
IF dengan dua alternatif Contoh : if (x%2==0) { p=p*(2+x); printf(“x bilangan genap\ n”);
} else { p=p*(1+x); printf(“x bilangan ganjil\ n”);
}
Korting 2 #include Main() { double tot_pemb,korting; printf(“Total Pembelian : Rp”); scanf(“%If”,&tot_pemb); korting=0; if(tot_pemb>=50000) korting=0.5*tot_pemb; else korting=0; printf(“Besarnya Korting : Rp %.2If \n”,korting); }
Bilangan Ganjil & Genap #include Main() { int bil; printf(“Masukkan Sebuah Bilangan Bulat :”); scanf(“%d”,&bil); if(bil % 2=0) { printf(“Nilai %d tidak habis dibagi 2\n”,bil); puts(“Karena termasuk bilangan GANJIL”); } else { printf(“Nilai %d habis dibagi 2\n”,bil); puts(“Karena termasuk bilangan GENAP”); } }
Operator Kondisi Operator kondisi memiliki tiga buah operand. Operator tersebut dinamakan sebagai operator kondisi dengan simbol ?... Bentuk ungkapan yang menggunakan operator ini: Kondisi ? ungkapan-1 : ungkapan-2
1. Jika kondisi bernilai benar, maka nilai ungkapan kondisi berupa nilai ungkapan-1. 2. Jika kondisi bernilai salah, mak nilai ungkapan kondisi berupa nilai ungkapan-2.
Nilai maks dua bilangan #include Main() { float nilai1,nilai2,maks; printf(“Masukkan dua buah nilai.”) scanf(“%f%f”,&nilai1,&nilai2); //Tentukan maks maks=(nilai>nilai2)?nilai1:nilai2; printf(“Nilai terbesar=%g\n”,maks); }
IF bersarang (banyak alternatif) F
F
x>0
x<0
T
T
numpos+=1
numneg+=1 numzero+=1
Bentuk : if (kondisi1) statements1; else if (kondisi2) statements2; : : else if (kondisin) statementsn; else statementse;
Grade Nilai #include #include
else if((nil>=60)&&(nil<=75)) grade=„C‟;
Main() { float nil; char grade;
else if((nil>=45)&&(nil<=59)) grade=„D‟; else puts(“Input salah!!!”);
clrscr(); //bersihkan layar printf(“Input suatu nilai:”);scanf(“%f”,&nil); if(nil>85) grade=„A‟; else if(nil>76)&&(nil<=85)) grade=„B‟;
printf(“Grade = %c”,grade); //Tampilkan Grade }
Switch (banyak alternatif) Struktur ini digunakan untuk menyelesaikan kondisi yang memiliki sejumlah alternatif. Diantaranya untuk menggantikan pernyataan if bertingkat di atas.
Switch (banyak alternatif) Bentuk : switch (controlling expression) { case n1: statement n1; break; case n2: statement n2; break; : case nn: statement nn; break; default: statementd; }
Tampil hari #include Main() { int kd_hari; //Tampilkan Menu Pilihan dan input kode hari puts(“Menentukan hari\n”); puts(“1 = SENIN 3 = RABU 5 = JUM‟AT 7 = MINGGU”); puts(“2 =SELASA 4 = KAMIS 6 = SABTU”); printf(“\nMasukkan kode hari (1..7):”); scanf(“%d”,&kd_hari); switch(kd_hari) { case 1:puts(“Hari Senin”); break; case 2:puts(“Hari Selasa”) break; case 3:puts(“Hari Rabu”) break;
case 4:puts(“Hari Kamis”) break; case 5:puts(“Hari Jum‟at”) break; case 6:puts(“Hari Sabtu”) break; case 7:puts(“Hari Minggu”) break; default: puts(“Kode yang anda masukkan salah!!!”); } }
Barang 1 #include #include #include main() { char kode; clrscr(); cout<<"Masukkan Kode Barang [A..C] : "; cin>>kode; switch(kode) { case 'A' : cout<<"Alat Olah Raga"; break; case 'B' : cout<<"Alat Elelktronik"; break; case 'C' : cout<<"Alat Masak"; break; default: cout<<"Anda Salah Memasukan kode"; break; } getch(); }
Barang 2 #include #include #include main() { char kode; clrscr(); cout<<"Masukkan Kode Barang [A..C] : "; cin>>kode; switch(kode) { case 'A' : case 'a' : cout<<"Alat Olah Raga"; break; case 'B' : case 'b' : cout<<"Alat Elelktronik"; break; case 'C' : case 'c' : cout<<"Alat Masak"; break; default: cout<<"Anda Salah Memasukan kode"; break; } getch();
Case 1 Masalah : Tagihan air Analisis : Konstanta biaya_langganan 7000 per_1_meter 50 per_1_meter_lebih 100 keterlambatan 2000 pajak 0.1 jatah_normal 2000 tgl_bayar 20 Input : long int sebelum long int sekarang char tgl_skr Output : long int tagihan long int penggunaan Formula : penggunaan = sekarang – sebelum; tagihan = biaya_langganan + penggunaan * per_1_meter + keterlambatan;
Design Algoritma : 1. Menampilkan instruksi kepada user 2. Mendapatkan data: sebelum, sekarang, tgl_bayar 3. Menghitung penggunaan listrik 4. Menghitung biaya pemakaian listrik 5. Menghitung denda keterlambatan 6. Menghitung tagihan total 7. Menampilkan tagihan dan penggunaan
Structure Chart : Program Tagihan Listrik
Tampilkan instruksi kepada user Mendapatkan data Menghitung penggunaan listrik
Menampilkan penggunaan & tagihan
Menghitung biaya penggunaan listrik Menghitung denda
Menghitung tagihan total
Latihan 1 1. Implementasikan sebuah program yang menerima input IPK (dalam range 0.0 sampai 4.0) dan menghasilkan output berupa
IPK 0.0 – 0.99
Keterangan Lulus Tidak Lulus
1.0 – 1.99
Mengulang
2.0 – 2.99
Baik
3.0 – 3.49
Sangat Baik
3.5 – 4.00
Sempurna
“keterangan lulus”.
Latihan 2 2. Implementasikan program yang menerima input berupa koordinat x dan y dari suatu titik pada bidang cartesian, serta menghasilkan output berupa posisi kuadran dari titik input.
Latihan 3 2. Implementasikan program untuk menghitung Nilai Maks dan Min 3 Buah Bilangan
Latihan 4 2. Implementasikan program untuk menghitung Persamaan Kuadrat
Tent: X1 dan X2
MODUL III
Struktur Perulangan : WHILE, FOR dan DO WHILE Memberikan pemahaman mengenai struktur perulangan dan implementasinya dalam bahasa C menggunakan while, for dan do while, sehingga mahasiswa dapat memanfaatkan struktur perulangan tersebut dalam menyelesaikan persoalan pemrograman.
Struktur Perulangan
Struktur Perulangan struktur kontrol yang mengulang eksekusi sekumpulan langkah dalam program. Kumpulan langkah yang dikerjakan berulang-ulang disebut juga dengan loop body .
Struktur Perulangan
Untuk menentukan perlu tidaknya struktur loop, serta bentuk loop apa yang dipilih, perlu dijawab pertanyaan-pertanyaan berikut: 1. Adakah langkah-langkah dalam program yang perlu dikerjakan berulang-ulang? 2. Jika jawaban dari pertanyaan nomor 1 adalah ada, pertanyaan selanjutnya, apakah bisa diketahui sebelumnya berapa kali langkahlangkah tersebut harus dikerjakan? 3. Jika jawaban dari pertanyaan nomor 2 adalah tidak, bagaimana kita bisa mengetahui berapa kali langkah-langkah tersebut harus dikerjakan?
Statement WHILE
JumlahPegawai <7
Salah
Benar Masukkan data Hitung gaji Tampilkan gaji Tambah JumlahPegawai dengan 1
Bentuk : while (kondisi perulangan) statement
Contoh 1 (Karakter) # include #define ENTER „\r‟ main() { char kar ; int jumlah = 0 , jumspasi = 0; puts (“ Masukkan sebuah kalimat dan akhiri dengan ENTER.”) while ((kar = getche())!=ENTER) { jumkar++; } printf(“\nJumlah Karakter=%d”,Jumkar); printf(“\nJumlah Spasi=%d”,Jumspasi); }
Contoh 2 (Honor) #include main() { Int jam; Double honor; Float gaji; JumlahPegawai=0; while (JumlahPegawai < 7) { printf(“Jumlah jam > “);scanf(“%d”, &jam); printf(“Honor per jam > “);scanf(“%lf”, &honor); gaji = jam * honor; printf(“Gaji adalah Rp. %6.2f \n”, gaji); JumlahPegawai= JumlahPegawai +1; } }
Keterangan
Jika kondisi perulangan bernilai :
Benar : statement dalam “loop body” dijalankan Salah : statement dalam “loop body” tidak
dijalankan
Variable Pengontrol Perulangan (pada contoh sebelumnya adalah JumlahPegawai) harus :
Diinisialisasi contoh: JumlahPegawai=0; Ditest contoh: JumlahPegawai < 7 Diubah contoh: JumlahPegawai += 1;
Statement FOR Bentuk : for (inisialisasi variabel perulangan; test variabel perulangan; ubah variabel perulangan ) Statement;
Contoh 3(Gaji) #include main () { Int jam; Double honor; Float gaji; TotalGaji=0; for (JumlahPegawai=0; JumlahPegawai < 7; JumlahPegawai += 1) { printf(“Jumlah jam > “); scanf(“%d”, &jam); printf(“Honor per jam > “); scanf(“%lf”, &honor); gaji = jam * honor; printf(“Gaji adalah Rp. %6.2f \n”, gaji); JumlahPegawai= JumlahPegawai +1; TotalGaji=TotalGaji+ gaji; } printf(“Semua pegawai telah diproses\n”); printf(“Total gai adalah Rp %8.2f \n”, TotalGaji); }
Contoh 4 (Nilai) # include # include main() { int i=jsis float nil,tot rata; clrscr(); tot=0; print f(“Masukkan jumlah siswa : “ );scane f(%d”,&jsis); print f(“Masukkan nilai-nilai siswa sebagai berikut :\n\n “ ); for (1=i<=jsis;i++) { print f(“%d.”i)scane f(“%f‟,&nil); Tot =tot+nil; } rata=tot/jsis; print f(“Total nilai = %g\n”,tot); print f(“\nRata-rata Kelas = %g”,rata); Getch(); }
Statement DO WHILE
Satu bentuk perulangan di mana statement dalam “body loop”
dieksekusi paling tidak satu kali atau lebih. Bentuk : do {
Statement;
} while (kondisi perulangan);
Statement DO WHILE
do { printf(“Masukkan huruf antara A sampai E > “); scanf(“%c”, % HurufPilihan); } while (HurufPilihan < „A‟ || HurufPilihan > „E‟);
Contoh 5 .Korting # include # include
main() { int i=1,y=5; char brg [25]; float jml,tot 1,tot2=0; float harga,diskon,disc ; gotaxy(4,2);print f(“ ) gotaxy(4,3);print f(“ No. Nama Barang Harga Jml Total Harga ) gotaxy(4,4);print f(“- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - ) do { gotoxy(4,y);print f(“ gotoxy(6,y);print f(“%d.”,i): gotoxy(11,y);scan f(“%s,&brg);fflush(stdi); gotoxy(31,y); scan f(“%f”,&harga); gotoxy(43,y); scan f(“%f”,&jml); tot1=jml*harga ; gotoxy(50,y);print f(“%.2f”,tot1); tot2+=tot1; y++; i++; }
While (getch()!=27 ); //Sampai penekanan tombol ESC gotoxy(4,y);print f (“- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ) gotoxy(35,y+1);print f(“Total :Rp “); gotoxy(50,y+1);print f(“%.21f”,tot2); gotoxy(35,y+1);print f(“Diskon : “);scanf(“%f”,&disc); Diskon=(disc/100)*tot2; gotoxy(17,y+4);print f(“Total yang harus dibayar : Rp”); gotoxy(50,y+4);print f(“%.21f,tot2-diskon); gotoxy(44,y,+5);print f(“ “); }
Nested Loop
Dalam suatu loop bisa terkandung loopyang lain . Loop yang terletak didalam loop bisa disebut dengan Nested Loop .salah satu contoh nestet loop misalnya pada Permasalahan untuk membuat tabel perkalian .loop luar digunakan untuk mengatur Baris , sedangkan loop luar untuk mencetak satu deret hasil perkalian dalam suatu baris
# include # define MAKS
8
main() { itn brs,koh,h_kali; for(brs = 1;brs<=MAKS;brs++) { for(kol = 1;kol<=MAKS;kol++) { h_kali = brs*kol; print f (“%2d”,h_kali); } print f(“\n”); } }
LATIHAN 1 1. Tuliskan program yang menghasilkan output sebagai berikut : 0 1 2 3 4 5 6
1 2 4 8 16 32 64
Latihan 2 3. Buatlah program yang menampilkan tabel perkalian untuk bilangan 0 sampai dengan 9!
Latihan 3 3. Tuliskan perulangan yang menampilkan output berikut : 0 0 0 0 0 0 0
1 1 2 1 2 1 2 1
3
Latihan 4
Perhatikan potongan program berikut! Tunjukkan nilai odd dan sum pada setiap iterasi, dengan nilai n=8! sum=0 for (odd=1; odd
Latihan 5 Buatlah program yang menampilkan 10 nilai mhs dengan gradenya masing2. hitung rata IPK dan berapa besarnya SKS yang dapat ditempuh sesuai dengan IPK.
MODUL IV
ARRAY
Mampu memahami pembentukan dan suatu array
pemrosesan
PENGERTIAN ARRAY
Array merupakan kumpulan dari nilai-nilai data yang bertipe sama dalam urutan tertentu yang menggunakan menggunakan nama yang sama. Letak atau posisidari elemen array ditunjukkan oleh suatu index. index. Array ada 3 macam, yaitu : Array Berdimensi Satu
Bentuk umum dari array berdimensi satu adalah :
Tipe nama_var[ukura nama_var[ukuran]; n]; Dengan tipe adalah jenis data elemen array, sedangkan ukuran untuk menyatakan jumlah maksimal elemen array. Contoh program :
Contoh 1. Array Satu Dimensi #include #include #devine MAKS
5
main() { Int I; float tot_nil,rata,maks,min; float nilai[MAKS]; char jwb; do { clrscr(); for(i=0;i
} tot_nil=0; maks=nilai[0] min+nilai[0]; for(i=0;imaks) maks=nilai if(nilai[i]
rata = tot_nil/MAKS; printf(“\n\nNilai Terbesar = %g\ n”, n”, maks); printf( “Nilai Terendah = %g \ n”,min); n”,min); printf(“Nilai rata-rata = %g\ n”,rata); n”,rata); printf(“\n\ nApakah nApakah Ingin Input data lagi? [y/t]”);
jwb=getche(); } while(jwb==„Y‟Iijwb==„y‟);
}
Hasil Eksekusi :
Dalam program tersebut, variable nilai adalah sebuah array dengan jumlah 8 elemen. Indeks array dimulai dari 0-7. sehingga proses input dimulai dari nilai [0]. Dengan array, proses pencarian nilai maksimum atau minimum akan lebih mudah seperti pada program ini. Nilai akan dibandingkan mulai nilai ke-0 sampai nilai ke-7, setelah akhir pengulangan maka nilai tersebut akan diketahui. Begitu juga untuk mencari total nilai. Hasil eksekusi ptgram akan ditampilkan : Nilai ke-1 : 67 Nilai ke-2 : 98 Nilai ke-3 : 87.5 Nilai ke-4 : 73 Nilai ke-5 : 60 Nilai Terbesar = 98 Nilai Terendah = 60 Nilai rata-rata = 77.1 Apakah ingin input data lagi? [y/t]
Contoh 2 Array Karakter #include”stdio.h” #include”conio.h” #include”string.h”
main () { char jur[25],jenjang[10],nim[7],nama[25]; printf(“Masukkan nama anda: “);gets(nama); printf(“Masukkan NIM anda: “);gets(nim);
switch(nim[3]) { case „0‟:strcpy(jur,”Elektronika”);
break; case‟1‟:strcpy(jur,”Sitem Tenaga”);
break; case‟2‟:strcpy(jur,”T.Komputer & Informatika”);
break; case „3‟:strcpy(jur,”D3 Elektronika”)
break; default: printf(“\ nAnda salah memasukkan NIM. Coba periksa lagi !!”);
break; }
if(nim[2]== „1‟) strcpy(jenjang,”Strata-1”);
else if(nim[3]==„3‟) strcpy(jenjang,”Diploma-3”);
else printf(“\ nAnda salah memasukkan NIM. Coba periksa lagi !!”); printf(“\<>\n\ n”); printf(“Nama :%s\ n”,nama); printf(“NIM :%s\ n”,nim); printf(“Jurusan : %s\ n”,jur); printf(“Jenjang :%s\ n”,jenjang);
getch(); }
Hasil eksekusi :
Masukkan nama anda : Erna Yunita Masukkan NIM anda : 0412901 <> Nama NIM Jurusan Jenjang
:Erna Yunita :0412901 :T.Komputer & Informatika :Strata-1
Array Dua Dimensi
Array dua dimensi merupakan array yang terdiri dari m buah baris dan n buah kolom. Bentuknya dapat berupa matriks atau tabel. Misal ada variable x[3][4], berarti variable x memiliki jumlah data maksimal 3 dan panjang karakter sebanyak 4 atau 4 kolom pada matriks. Contoh berikut ini penerapan array dua dimensi pada suatu string.
Contoh 3 array dua dimensi #include #include #define maks 5 #define panjang 20 main() { static char nama[maks][panjang]; //mendeklarasikan var bersifat statis int i,j,jum_dt; char temp[panjang]; for(i=0;i
gets(nama[i]); } for(i=0;0)
{ strcyp(temp,nama[i]); strcyp(nama[i],nama[j]; ` strcyp(nama[i],temp); } puts(“\nData Setelah Diurutkan: \ n”); for(i=0;i string kedua maka lakukan proses pertukaran string menggunakan strcpy(). Fungsinya untuk meyalin suatu string ke variable tujuan
Hasil dari eksekusi :
Nama ke-1
: Ahmad Sugemblung
Nama ke-2
: Zainal Abidin
Nama ke-3
: Zein Alfarouq
Nama ke-4
: Erna Yunita
Nama ke-5
: Adi Sutjipto
Data Setelah Diurutkan : Nama ke-1
: Adi sujipto
Nama ke-2
: Ahmad Sugemblung
Nama ke-3
: Erna Yunita
Nama ke-4
: Zainal Abidin
Nama ke-5
: Zein Alfarouq
Array Multidimensi
Array multi dimensi merupakan array yang mempunyai ukuran lebih dari dua . Bentuk pendeklarasian array sama saja dengan array dimensi satu maupun dua. Misalnya variable: char nama[5][3][15]. Berarti ada suatu data sebanyak 5 buah. Dalam tiap data tersebut ada 3 data lagi yang panjangnya 15.
Contoh 4 Array 3 dimensi #include main()
{ int I,j; char nama[5][3][15]={ “Adi”,”Budi”,”Candra”, “Erni”,”Fatimah”,”Goedono”, “Henri”,”Ipung”,”John”, “Kiki”,”Lukas”,”Mike”, “Nono”,”Ogut”,”Puspa”
}; for(i=0;i<5;i++) { printf(“Nama-nama di Kelas %d adalah:\ n”,i+1);
for(j=0;j<3;j++) printf(“-->%\ n”,nama[i][j]); } {
Hasil Eksekusi Nama-nama di Kelas 1 adalah : --> Adi --> Budi --> Candra Nama-nama di Kelas 2 adalah : --> Erni --> Fatimah --> Geodono Nama-nama di Kelas 3 adalah : --> Henri --> Ipung --> John Nama-nama di Kelas 4 adalah : --> Kiki --> Lukas --> Mike Nama-nama di Kelas 5 adalah : --> Nono --> Ogut --> Puspa
Latihan
Buat program untuk mencari nilai x tersebut. Misalkan dalam suatu array 4, 6, 1, 3, 9.. Jika ingin dicari nilai 1 maka outputnya adalah 2 karena angka 1 terletak pada indeks ke-2, tetapi jika tidak ditemukan maka tampilkan pesan kesalahan.
MODUL 5
STRUKTUR
Mampu mengetahui dan memehami tentang suatu struktur
Materi:
Struktur yaitu pengelompokan dari variabel-variabel yang bernaung dalam satu nama yang sama. Struktur biasa dipakai untuk mengelompokkan beberapa informasi yang berkaitan dengan sebuah kesatuan, atau biasanya disebut dengan record. Mendeklarasikan struktur Cara mendeklarasikan struktur adalah dengan menggunakan kata kunci struct. Contoh : struct struktur _psd{ char kode[5]; char nama[30]; int unit; float harga; }; Struct struktur _psd persediaan_pusat, persediaan cabang;
Struktur tersebut diberi nama struktur_psd yang memepunyai lima buah elemen, yaitu kode [5] dan nama [30] bertipe char, sedangkan unit bertipe int dan harga bertipe float. Struktur_psd merupakan nama tipe data struktur dari lima elemen tersebut, bukan nama dari suatu variabel struktur. Sedangkan persediaan_pusat dan persediaan_cabang merupakan variabel-variabel yang mempunyai tipe data struktur_psd. Cara lain untuk mendeklarasikan struktur sebagai berikut: struct struktur_psd{ char kode[5]; char nama[30]; int unit; float harga; }persediaan_pusat,persediaan_cabang
Untuk deklarasi seperti di atas, sebenarnya kata struktur_psd dapat juga tidak dituliskan.
Ada juga penulisan struktur sperti di bawah ini : type struct{ char kode[5]; char nama[20]; int jml; float harga; }psd; psd persediaan_barang; //pendefenisian nama variabel baru Dengan menggunakan “typedef”, struktur psd didefinisikan kembali dengan nama baru tanpa menggunakan kata “struct” di awal nama baru tersebut.
Contoh 1.akses elemen struktur
# include main() { struct{ float jari; float keliling; float luas; }lingkaran; //nama variabel terstruktur printf(“Masukkan Jari-jari Lingkaran: ” );scanf(“%f”,&lingkaran jari-jari); lingkaran.keliling = 2*3.14259*lingkaran.jari; lingkaran.luas = 3.14259*lingkaran.jari*lingkaran.jari; printf(“Keliling Lingkaran=%g\ n”,lingkaran.keliling); printf(“Luas Lingkaran =%g\ n”,lingkaran.luas); }
Hasil eksekusi program adalah: Masukkan Jari-jari Lingkaran : 7 Keliling Lingkaran = 43.9963 Luas Lingkaran = 153.987
Contoh 2. #include main() { struct tgl{ unsigned int hari; unsigned int bulan; unsigned int tahun; }; struct alamat{ char jalan[30]; char kotap[20]; }; struct{ char nama[40]; struct tgl masuk; struct alamat tinggal; float gaji; }karyawan={
“Dimas Kurniasandi”,
//nama karyawan
12, //hari tgl masuk 11, // bulan tgl masuk 85, //tahun tgl masuk “Jl. Kedondong 56” //jalan alamat tinggal “Lumajang” //kota alamat tinggal 500000 //gaji karyawan }; printf(“ \n\n DATA KARYAWAN \ n”); printf(“ \n----------------------------------------\n\ n”); printf(“Nama Karyawan :%s\ n”,karyawan.nama); printf(“Tanggal Masuk :%2d-%2d-%2d\ n”,karyawan.masuk,hari, karyawan.masuk.bulan,karyawan.masuk.tahun); printf(“Alamat :%s\ n”,karyawan.tinggal.jalan); printf(“ %s\ n”,karyawan.tinggal.kota); printf(“Gaji Per Bulan : Rp %.2f\ n”,karyawan.gaji); }
Pada program tersebut, variabel karyawan merupakan struktur yang berisi struktur lain. Yaitu struktur tgl dan struktur alamat. Jadi, elemen lahir pada karyawan memiliki 3 elemen, yaitu elemen dari struktur tgl (hari, bulan, tahun ). Sedangkan elemen tinggal memiliki 2 elemen yaitu elemen dari struktur alamat (jalan dan kota). Hasilnya dapat dilihat pada tampilan di bawah ini: DATA KARYAWAN ---------------------------------------Nama Karyawan : Dimas Kurniasandi Tanggal Masuk : 12-11-85 Alamat : Jl. Kedondong 56 Lumajang Gaji Per Bulan : Rp 500000.00
Latihan 1. Buatlah program struktur untuk menghitung luas dan keliling segitiga
Latihan 2. Buatlah struktur untuk identifikasi KTP dan KTM masing-masing
CONTOH 3. #include Main() { int I; Struct{ char nim[8]; char nama[15]; float nilai[10]; }mahasiswa; Cout<<“Masukan NIM Cout<<“Masukkan Nama Cout<>”Masukkan Nilai
:’; cin<>mahasiswa.nam; :”; cin>>mahasiswa.nilai;
// tampilkan hasil Cout<<“ NIM anda adalah Cout<< NAMA Anda adalah Cout<< NILAI anda adalah
GETCH(); }
: “<
Latihan 3 Buatlah program struktur untuk database penjualan terdiri atas: - Kode barang - Nama barang - jumlah barang - harga barang - Tanggal pembelian - discount
MODUL VI
FUNGSI
Mampu mengenal struktur pemrograman menggunakan fungsi
Defenisi Fungsi
Fungsi adalah bagian program (subprogram/subrutin) yang dapat dipanggil berkali-kali. Contoh fungsi yang sudah terdapat dalam pustaka:
cos(), strcmp(), gets()
Kita dapat membuat fungsi sendiri dengan bentuk: tipe_data nama_fungsi ( parameter_kalau_ada) // header { ... // implementasi } tipe_data adalah tipe dari nilai yang dikembalikan (return value) oleh fungsi.
Struktur Fungsi
Fungsi untuk mengkonversi suhu dalam Celcius ke Fahrenheit float C_ke_F(float C) { float F; F = 1.8*C+32.0; return F; }
Fungsi untuk menghitung kecepatan dari jarak dan waktu tempuh double Hitung_Kecepatan(double Jarak, double Waktu) { return Jarak/Waktu; }
Contoh 1 #include float C_ke_F(float C) { float F; F = 1.8*C+32.0; return F; } main() { float Suhu_C, Suhu_F; // definisikan variabel cout << "Isikan nilai Suhu C = "; // tampilkan tulisan cin >> Suhu_C; // isikan nilai Suhu C Suhu_F = C_ke_F(Suhu_C); // hitung nilai Suhu F cout << "Temperatur " << Suhu_C << " C = " << Suhu_F << " F" << endl; }
Sebuah fungsi mungkin tidak mempunyai nilai kembalian ( return value) prosedur Prosedur dipergunakan untuk bagian program (langkah-langkah) yang berulangkali dijalankan di dalam program. Prosedur juga dapat dipergunakan untuk memotong-motong program agar menjadi bagian-bagian yang lebih kecil.
Contoh 2 #include float Suhu_C, Suhu_F; // definisikan variabel float C_ke_F(float C) { float F; F = 1.8*C+32.0; return F; } void Mengisi_Input() { cout << "Isikan nilai Suhu C = "; // tampilkan tulisan cin >> Suhu_C; // isikan nilai Suhu C } void Mengkonversi() { Suhu_F = C_ke_F(Suhu_C); // hitung nilai Suhu F } void Menampilkan_Hasil() { cout << "Temperatur " << Suhu_C << " C = " << Suhu_F << " F" << endl; } main() { Mengisi_Input(); Mengkonversi(); Menampilkan_Hasil(); }
VARIABEL DI DALAM FUNGSI #include int A = 5; void Fungsi1() { int A = 99; cout << "Di dalam fungsi 1, A = " << A << endl; } void Fungsi2() { int A = 0; cout << "Di dalam fungsi 2, A = " << A << endl; } main() { cout << "Di program utama, A = " << A << endl; Fungsi1(); Fungsi2(); cout << "Di program utama lagi, A = " << A << endl; }
VARIABEL SEBAGAI PARAMETER DALAM FUNGSI
Apabila sebuah variabel dilewatkan ke dalam fungsi melalui parameter (dengan cara biasa), maka
• nilai variabel akan dikopikan ke dalam
parameter
• nilai variabel asli tidak berubah,
meskipun di dalam fungsi parameter tersebut diubah nilainya.
#include void Kuadrat(int X) { X = X*X; } main() { int P = 2; cout << "Sebelum fungsi dipanggil, P = " << P << endl; Kuadrat(P); cout << "Setelah fungsi dipanggil, P = " << P << endl; }
Apabila nilai variabel asli hendak diubah di dalam fungsi, maka penulisan variabel di dalam fungsi diberi awalan simbul bintang (*) dan pada pemanggilan fungsi diberi awalan simbul ampersand (&).
#include void Kuadrat(int *X) { *X = *X**X; } main() { int P = 2; cout << "Sebelum fungsi dipanggil, P = " << P << endl; Kuadrat(&P); cout << "Setelah fungsi dipanggil, P = " << P << endl; }
Dengan cara yang sama seperti biasa, hanya pada pemanggilan fungsi diberi awalan simbul ampersand (&). Ini hanya berlaku untuk C++, tidak untuk C.
#include void Kuadrat(int &X) { X = X*X; } main() { int P = 2; cout << "Sebelum fungsi dipanggil, P = " << P << endl; Kuadrat(P); cout << "Setelah fungsi dipanggil, P = " << P << endl; }
Contoh: Program penukaran nilai dua buah variabel #include void Tukarkan(int &Angka1, int &Angka2) { int temp = Angka1; Angka1 = Angka2; Angka2 = temp; } main() { int X = 1, Y = 99; cout << "Sebelum ditukarkan: " << "X = " << X << ", Y = " << Y << endl; Tukarkan(X, Y); cout << "Setelah ditukarkan: " << "X = " << X << ", Y = " << Y << endl; }
NILAI DEFAULT PADA PARAMETER FUNGSI Nilai default = nilai parameter jika tidak diberikan pada saat
pemanggilan fungsi.
#include int HitungDiskon(int Harga, int Diskon = 10) { return Harga*Diskon/100; } main() { int H = 1000, D = 25; cout << "Diskon 1 = Rp " << HitungDiskon(H,D) << endl; cout << "Diskon 2 = Rp " << HitungDiskon(H) << endl; }
OVERLOADING SATU FUNGSI Overloading adalah pendefinisikan banyak fungsi dengan nama sama tetapi
dengan parameter yang berbeda. Contoh: Fungsi untuk pertukaran data antar 2 bilangan bulat dan antar 2 karakter. #include void Tukarkan(int &Angka1, int &Angka2) { int temp = Angka1; Angka1 = Angka2; Angka2 = temp; } void Tukarkan(char &Karakter1, char &Karakter2) { char temp = Karakter1; Karakter1 = Karakter2; Karakter2 = temp; } main() { int X = 1, Y = 99; char C1 = 'A', C2 = 'B'; cout << "Sebelum : X = " << X << ", Y = " << Y << ", C1 = " << C1 <<", C2 = " << C2 << endl; Tukarkan(X, Y); Tukarkan(C1, C2); cout << "Sesudah : X = " << X << ", Y = " << Y << ", C1 = " << C1 <<", C2 = " << C2 << endl; }
Overloading juga dapat dilakukan untuk fungsi dengan nama
yang sama tetapi dengan jumlah parameter yang berbeda. Contoh: Fungsi untuk menghitung luas persegi panjang dan lingkaran. #include float HitungLuas(float P, float L) { return P*L; } float HitungLuas(float R) { return 3.14159*R*R; } main() { float Luas, Panjang, Lebar, Radius; cout << "Panjang segiempat = "; cin >> Panjang; cout << "Lebar segiempat = "; cin >> Lebar; cout << "Radius lingkaran = "; cin >> Radius; Luas = HitungLuas(Panjang, Lebar); cout << "Luas segiempat = " << Luas << endl; Luas = HitungLuas(Radius); cout << "Luas lingkaran = " << Luas << endl; }
Contoh latihan 1 #include void judul(){ printf("Program Mencari Penjumlahan dan Pengurangan\n"); printf("dari printf("dari 2 buah bilangan\n"); printf("-------------------------------------------\n"); } jumlah(int jumlah(int a, int b){ return(a + b); } int selisih(int selisih(int a , int b) return(a - b); void main{ int bil1,bil2,bil3,bil4 bil1,bil2,bil3,bil4 prlntf("nilai a : ");scanf("%d",&bil1); prlntf("nilai b : ");scanf("%d",&bil2); bil3=jumlah(bil1,bil2); bil4=selisih(bil1,bil2) printf("\n\n hasil : \n"); printf("\t %2d + %2d = %2d\n", bil1,bil2,bil3) bil1,bil2,bil3) printf("\t %2d - %2d = %2d\n", bil1,bil2,bil4); getche();
Contoh latihan 2 (rekursif) #include #include long faktorial(int); void main(){ int n; clrscr(); printf("Program Faktorial:\n"); printf("------------------\n"); printf("N = "); scanf("%d", &n); printf("Result: "); printf("%d! = %ld\n", n, faktorial(n)); getch(); } long faktorial(int n){ if(n == 0) return(1); else return(n * faktorial(n-1)); }
Contoh latihan 3(array & Fungsi) #include #include #include void BacaData(int n, int []); void TampilData(int n, int x[]); void main() { int data1[10], data2[15]; clrscr(); randomize(); //untuk membangkitkan bil. acak BacaData(10, data1); printf("\nData : \n"); TampilData(10, data1); getch();
clrscr(); BacaData(15, data2); printf("\nData : \n"); TampilData(15, data2); getch(); } void BacaData(int n, int x[]) { int i, j; printf("Proses Baca Data Secara RANDOM: \n"); for(i = 0; i < n; i++) { x[i] = random(20); printf("Data ke -%2d : %d\n", i+1, x[i]); } } void TampilData(int n, int x[]) { int i, j; for(i = 0; i < n; i++) printf("%5d", x[i]); }
Contoh latihan 4(struktur & Fungsi) #include #include struct Mahasiswa { char nim[10]; char nama[25]; float ip; }; void BacaData(Mahasiswa &mhs); void TampilData(Mahasiswa mhs); void main() { Mahasiswa mhs[2];
int i; clrscr(); BacaData(mhs[0]); BacaData(mhs[1]); clrscr(); cout << "Data Mahasiswa yang Anda Masukkan:\n"; cout << "----------------------------------\n"; TampilData(mhs[0]); TampilData(mhs[1]); getch(); } void BacaData(Mahasiswa &mhs) { cout << "Nim : "; cin >> mhs.nim; cout << "Nama : "; cin >> mhs.nama; cout >> "IP : "; cin >> mhs.ip; } void TampilData(Mahasiswa mhs) { cout << "Nim : " << mhs.nim << endl; cout << "Nama : " << mhs.nama << endl; cout << "IP : " << mhs.ip; }
LATIHAN
Buatlah program untuk menghitung luas dan keliling lingkaran dengan menggunakan fungsi. Fungsi yang harus dibuat adalah luas() untuk menghitung luas lingkaran dan keliling() untuk menghitung keliling lingkaran. Buatlah program dengan menggunakan rekursif untuk menghitung nilai suku fibonanci ke –n. di mana : Fibo(n) = Fibo(n-1) + Fibo(n-2) Fibo(1) = 1; Fibo(2) = 1
LATIHAN 2
Buatlah program untuk menghitung proses pada perpustakaan rakyat pedesaan, menyewakan 3 golongan buku, yaitu A, B dan C. Harga sewa buku per 7 hari adalah: ---------------------------------------------Golongan Harga Sewa per 7 hari ---------------------------------------------A Rp. 200 B Rp. 250 C Rp. 150 ----------------------------------------------
LATIHAN 3. Jika
meminjam lebih dari 7 hari, maka setiap harinya didenda sebesar Rp. 100 Buatlah program untuk menghitung pembayarannya. Buatlah fungsi untuk menghitung harga sewa. Buatlah fungsi untuk menghitung denda. Buatlah fungsi untuk menghitung total bayar.
Bentuk
rancangan masukan
Perpustakaan Rakyat Pedesaan ---------------------------Nama Peminjam : .............. Golongan Buku[A/B/C] : ... Lama Peminjaman : ...