LAPORAN PRAKTIKUM
APLIKASI PEMROGAMAN DENGAN BAHASA C
Oleh: Praktikan : Amalina Almas – Almas – 1510631160012 1510631160012
Dosen
: Ibrahim, ST.,MT.
Asisten
: 1. Aryo Jati Prabowo 2. Anggit Satrio Suwana
Program Studi Teknik Elektro Fakultas Teknik Universitas Singaperbangsa Karawang 2017
DAFTAR ISI DAFTAR ISI
2
Laporan Praktikum 1 Algoritma dan Flowchart
3
Laporan Praktikum 2 Dasaar Pemrogaman Bahasa C
14
Laporan Praktikum 3 Pengambilan Keputusan
25
Laporan Praktikum 4 Pengulangan Proses
46
Laporan Praktikum 6 Fungsi Matematika
57
Laporan Praktikum 7 Pointer
62
Laporan Praktikum 8 Array
67
Laporan Praktikum 9 String
75
Laporan Praktikum 10 Struktur
85
2
LAPORAN PRAKTIKUM 1 Algoritma dan Flowchart
A. TUJUAN
1. Mampu memahami persoalan 2. Mendesain penyelesaian persoalan ke dalam algoritma 3. Menotasikan algoritma yang sudah dibuat menggunakan notasi flowchart
B. DASAR TEORI
Beberapa langkah dalam proses pembuatan suatu program atau sof tware : 1. Mendefinisikan masalah dan menganalisanya Langkah awal yang harus dilakukan adalah mengidentifikasikan masalah antara lain tujuan dari pembuatan program, parameter-parameter yang digunakan, fasilitas apa saja yang akan disediakan oleh program. Kemudian menentukan metode atau algoritma apa yang akan diterapkan untuk menyelesaikan masalah tersebut dan terakhir menentukan bahasa program yang digunakan untuk pembuatan program. 2. Merealisasikan Merealisasikan dengan langkah-langkah berikut :
3
Algoritma
Algoritma adalah urutan langkah-langkah logika yang menyatakan suatu tugas dalam menyelesaikan suatu masalah atau problem. Contoh : Buat algoritma untuk menentukan apakah suatu bilangan merupakan bilangan ganjil atau bilangan genap. Algoritmanya : 1. Masukkan sebuah bilangan sembarang 2. Bagi bilangan tersebut dengan bilangan 2 3. Hitung sisa hasil bagi pada langkah 2. 4. Bila sisa hasil bagi sama dengan 0 maka bilangan itu adalah bilangan genap tetapi bila sisa hasil bagi sama dengan 1 maka bilangan itu adalah bilangan ganjil.
4
Dari contoh algoritma di atas tentang menentukan apakah suatu bilangan adalah bilangan ganjil atau bilangan genap, flowchart dari program adalah sebagai berikut :
5
C. Hasil Percobaan
1.1 Menghitung luas lingkaran dan mencetak hasilnya. Listing programnya adalah : #include main() { float r, L, phi=3.14; printf("Menghitung Luas Lingkaran\n"); printf("Masukkan nilai jari-jari = "); scanf("%f",&r); L=phi*r*r; printf("Luas Lingkaran = %2.2f",L); }
6
Keluaran yang dihasilkan dari program tersebut sebagai berikut :
Kesimpulan : Dalam percobaan menghitung luas lingkaran dengan bahasa C, harus mengetik program dengan tepat agar hasil yang diharapkan serta perhitungan yang diinginkan berjalan sesuai keinginan. Penentu format yang digunakan juga harus sesuai dengan kondisi yang dimasukkan. Kesalahan-kesalahan dalam praktikum dapat disebabkan oleh banyak factor seperti kurang teliti dalam menulis program ataupun salah menggunakan format.
7
1.2 Proses pengiriman e-mail, jika email tidak terkirim maka akan dilakukan proses pengiriman email lagi. Listing programnya adalah : #include main() { char a='t'; int n; while(a=='t'||a=='T') { printf("Pengiriman e-mail ke-"); scanf("%d",&n); printf("Apakah e-mail terkirim [y/t]?"); getchar(); a=getchar(); } printf("E-mail terkirim dengan %d percobaan",n); }
Keluaran yang dihasilkan dari program tersebut sebagai berikut :
8
Kesimpulan : Program tersebut menggunakan fungsi while karna memiliki dua kondisi untuk mencetak program yang diinginkan. Penulisan program dan ketepatan penggunaan format dalam membuat program adalah yang terpenting agar program dapat dijalankan sesuai keinginan.
1.3 Proses melakukan panggilan telepon, jika tidak diangkat maka akan dilakukan panggilan telepon lagi. Listing programnya adalah : #include 9
main() { char e='t'; int n; while(e=='t'||e=='T') { printf("Panggilan telepon ke-"); scanf("%d",&n); printf("Telepon dijawab atau tidak [y/t]?"); getchar(); e=getchar(); } printf("Telepon dijawab dengan %d percobaan",n); }
Keluaran yang dihasilkan dari program tersebut sebagai berikut :
10
Kesimpulan : Program dapat dijalankan sesuai perintah dengan penulisan yag tepat serta penempatan fungsi sesuai dan penggunaan yang benar. 1.4 Perusahaan daerah air minum menentukan tariff per m 3 air berdasarkan ketentuan sebagai berikut : Air (m3)
Tarif per m3
0-15
300
>15
650
Buatlah program yang membaca jumlah pemakaian air, untuk menghitung biaya yang harus dibayar dan menampilkan hasilnya di layar. Listing programnya : #include #include main() { int e, b, biaya; printf("Masukkan jumlah air yang digunakan (m3) : "); scanf("%d", &e); if(e>15) 11
{ biaya=e*650; printf("Biaya yang harus dibayar %d Rupiah", biaya); } else { biaya=e*300; printf("Biaya yang harus dibayar %d Rupiah", biaya); } return 0; }
Keluaran yang dihasilkan dari program tersebut sebagai berikut :
12
1.5 Buatlah program untuk menjumlahkan bilangan 1 sampai 10, tapi yang dijumlahkan bilangan ganjil saja. Listing programnya adalah : #include main() { int bilangan,i=0; for(bilangan=1; bilangan<=10; bilangan+=2) { printf("%d\n", bilangan); i=i+bilangan; } printf("Hasilnya = %d\n",i); }
Keluaran yang dihasilkan dari program tersebut sebagai berikut :
13
LAPORAN PRAKTIKUM 2 Dasar Program Bahasa C
A. TUJUAN
1. Mengenal sintaks dan fungsi-fungsi dasar dalam bahasa C 2. Mampu membuat flowchart untuk algoritma untuk memecahkan suatu masalah sederhana, selanjutnya mengimplementasikannya dalam bahasa C B. DASAR TEORI
Akar dari bahasa C adalah bahasa BCPL yang dikembangkan oleh Martin Richards pada tahun 1967. Bahasa ini memberikan ide kepada Ken Thompson yang kemudian mengembangkan bahasa yang disebut dengan B pada tahun 1970. Perkembangan selanjutnya dari bahasa B adalah bahasa C oleh Dennis Ritchie sekitar tahun 1970-an di Bell Telephone Laboratories Inc. (sekarang adalah AT&T Bell Laboratories). Bahasa C pertama kali digunakan pada komputer Digital Equipment Corporation PDP-11 yang menggunakan sistem operasi UNIX. Standar bahasa C yang asli adalah standar dari UNIX. Sistem operasi, kompiler C dan seluruh program aplikasi UNIX yang esensial ditulis dalam bahasa C. Kepopuleran bahasa C membuat versi-versi dari bahasa ini banyak dibuat untuk komputer mikro. Untuk membuat versi-versi tersebut menjadi standar, ANSI (American National Standards Institute) membentuk suatu komite (ANSI committee X3J11) pada tahun 1983 yang kemudian menetapkan standar ANSI untuk bahasa C. Standar ANSI ini didasarkan kepada standar UNIX yang diperluas. Proses Kompilasi dan Linking Program C
Proses dari bentuk source program, yaitu program yang ditulis dalam bahasa C hingga menjadi program yang executable ditunjukkan pada Gambar 1 di bawah ini.
14
Struktur Penulisan Program C
Program C pada hakekatnya tersusun atas sejumlah blok fungsi. Sebuah program minimal mengandung sebuah fungsi. Fungsi pertama yang harus ada dalam program C dan sudah ditentukan namanya adalah main(). Setiap fungsi terdiri atas satu atau beberapa pernyataan, yang secara keseluruhan dimaksudkan untuk melaksanakan tugas khusus. Bagian pernyataan fungsi (sering disebut tubuh fungsi) diawali dengan tanda kurung kurawal buka ({) dan diakhiri dengan tanda kurung kurawal tutup (}). Di antara kurung kurawal itu dapat dituliskan statemen-statemen program C. Namun pada kenyataannya, suatu fungsi bisa saja tidak mengandung pernyataan sama sekali. Walaupun fungsi tidak memiliki pernyataan, kurung kurawal haruslah tetap ada. Sebab kurung kurawal mengisyaratkan awal dan akhir definisi fungsi. Berikut ini adalah struktur dari program C
15
Bahasa C dikatakan sebagai bahasa pemrograman terstruktur karena strukturnya menggunakan fungsi-fungsi sebagai program-program bagiannya (subroutine). Fungsifungsi yang ada selain fungsi utama (main()) merupakan program-program bagian. Fungsi-fungsi ini dapat ditulis setelah fungsi utama atau diletakkan di file pustaka (library). Jika fungsi-fungsi diletakkan di file pustaka dan akan dipakai di suatu program, maka nama file judulnya (header file) harus dilibatkan dalam program yang menggunakannya dengan preprocessor directive berupa #include.
Pengenalan Fungsi-Fungsi Dasar a. Fungsi main()
Fungsi main() harus ada pada program, sebab fungsi inilah yang menjadi titik awal dan titik akhir eksekusi program. Tanda { di awal fungsi menyatakan awal tubuh fungsi dan sekaligus awal eksekusi program, sedangkan tanda } di akhir fungsi merupakan akhir tubuh fungsi dan sekaligus adalah akhir eksekusi program. Jika program terdiri atas lebih dari satu fungsi, fungsi main() biasa ditempatkan pada posisi yang paling atas dalam pendefinisian fungsi. Hal ini hanya merupakan kebiasaan. Tujuannya untuk memudahkan pencarian terhadap program utama bagi pemrogram. Jadi bukanlah merupakan suatu keharusan. b. Fungsi printf() .
Fungsi printf() merupakan fungsi yang umum dipakai untuk menampilkan suatu keluaran pada layar peraga. Untuk menampilkan tulisan
16
Selamat belajar bahasa C
misalnya, pernyataan yang diperlukan berupa: printf(“Selamat belajar bahasa C”);
Pernyataan di atas berupa pemanggilan fungsi printf() dengan argumen atau parameter berupa string. Dalam C suatu konstanta string ditulis dengan diawali dan diakhiri tanda petik-ganda ( ). Perlu juga diketahui pernyataan dalam C selalu diakhiri dengan tanda “
titik koma (;). Tanda titik koma dipakai sebagai tanda pemberhentian sebuah pernyataan dan bukanlah sebagai pemisah antara dua pernyataan. Tanda \ pada string yang dilewatkan sebagai argumen printf() mempunyai makna yang khusus. Tanda ini bisa digunakan untuk menyatakan karakter khusus seperti karakter baris-baru ataupun karakter backslash (miring kiri). Jadi karakter seperti \n sebenarnya menyatakan sebuah karakter. Contoh karakter yang ditulis dengan diawali tanda \ adalah: \”
menyatakan karakter petik-ganda
\\
menyatakan karakter backslash
\t
menyatakan karakter tab
Dalam bentuk yang lebih umum, format printf()
printf(“string kontrol”, daftar argumen);
dengan string kontrol dapat berupa satu atau sejumlah karakter yang akan ditampilkan ataupun berupa penentu format yang akan mengatur penampilan dari argumen yang terletak pada daftar argumen. Mengenai penentu format di antaranya berupa: %d
17
untuk menampilkan bilangan bulat (integer)
%f
untuk menampilkan bilangan titik-mengambang (pecahan)
%c
untuk menampilkan sebuah karakter
%s
untuk menampilkan sebuah string
Contoh: #include main( ) { printf(“No printf(“Nama printf(“Nilai printf(“Huruf
: %d\n”, 10); : %s\n”, “Ali”);
: %f\n”,80.5); : %c\n”,‘A’);
}
Pengenalan Praprosesor #include
#include merupakan salah satu jenis pengarah praprosesor (preprocessordirective). Pengarah praprosesor ini dipakai untuk membaca file yang di antaranya berisi deklarasi fungsi dan definisi konstanta. Beberapa file judul disediakan dalam C. File-file ini mempunyai ciri yaitu namanya diakhiri dengan ekstensi .h. Misalnya pada program #include menyatakan pada kompiler agar membaca file bernama stdio.h saat pelaksanaan kompilasi.
Bentuk umum #include: #include “namafile”
Bentuk pertama (#include ) mengisyaratkan bahwa pencarian file dilakukan pada direktori khusus, yaitu direktori file include. Sedangkan bentuk kedua (#include “namafile”) menyatakan bahwa pencarian file dilakukan pertama kali pada direktori aktif tempat program sumber dan seandainya tidak ditemukan pencarian akan dilanjutkan pada direktori lainnya yang sesuai dengan perintah pada sistem operasi.
18
Kebanyakan program melibatkan file stdio.h (file-judul I/O standard, yang disediakan dalam C). Program yang melibatkan file ini yaitu program yang menggunakan pustaka I/O (input-output) standar seperti printf().
19
Komentar dalam Program
Untuk keperluan dokumentasi dengan maksud agar program mudah dipahami di suatu saat lain, biasanya pada program disertakan komentar atau keterangan mengenai program. Dalam C, suatu komentar ditulis dengan diawali dengan tanda /* dan diakhiri dengan tanda */. Contoh : /* Tanda ini adalah komentar untuk multiple lines */ #include main() { printf(“Coba\n”);
//Ini komentar satu baris
}
C. HASIL PERCOBAAN
2.1 Mencetak kalimat dalam beberapa baris. Listing programnya adalah : #include main() { printf("Program Studi Teknik Elektro\n"); printf("Kampus UNSIKA Tahun 2013"); }
20
Hasil keluaran programnya sebagai berikut :
2.2 Mencetak kalimat dalam beberapa baris. Listing programnya adalah : #include main() { printf("Saya sekarang sedang makan\n"); printf("Kantin UNSIKA\n"); printf("Murah meriah\n"); printf("Cocok untuk kalangan mahasiswa\n"); } 21
Keluaran yang dihasilkan dari program tersebut sebagai berikut :
2.3 Memperbaiki program yang salah. Listing programnya adalah : #include main() { printf("Ternyata semester %d ini nilaiku jelek\n",4); printf("Matematika %c dan metode numerik %c\n",'B','D'); printf("oooo.......ternyata kuliah itu susah %s","sekali\n"); printf("Sepertinya %s rajin belajar minimal %d kali sehari","harus",8); } 22
Keluaran yang dihasilkan dari program tersebut sebagai berikut :
2.4 Mencetak kalimat dalam beberapa baris. Listing programnya adalah : #include main() { printf("Dalam membuat\"Program Komputer\"\n"); printf("Terdapat \\aturan\\aturan yang harus dipenuhi\n"); printf("Dalam menuliskan perintah-perintah dasar\n"); printf("Untuk itu \"Programmer\" harus menghafal aturan-aturan\n"); printf("yang berlaku"); } 23
Keluaran yang dihasilkan dari program tersebut sebagai berikut :
D. KESIMPULAN Kesalahan dalam menuliskan sebuah program dapat terjadi dengan adanya berbagai
macam factor, seperti kesalahan menulis, kesalahan menempatkan atau menggunakan sebuah fungsi ataupun kesalahan lainnya yang lebih sering disebabkan kurangnya ketelitian. Penggunaan penentu format pada sebuah program sangatlah penting karena kesalahan yang disebabkan oleh penentu format membuat program tidak akan terbaca sama sekali. Berbagai macam tanda \ pada string dapat digunakan untuk berbagai macam menyatakan karakter khusus yang tidak dapat berdiri sendiri pada sebuah program maupun dengan sebuah penentu format.
24
LAPORAN PRAKTIKUM 3 Pengambilan Keputusan
A. TUJUAN
1. Menjelaskan tentang operator kondisi (operator relasi dan logika) 2. Menjelaskan penggunaan pernyataan if 3. Menjelaskan penggunaan pernyataan if-else 4. Menjelaskan penggunaan pernyataan if dalam if 5. Menjelaskan penggunaan pernyataan else-if 6. Menjelaskan penggunaan pernyataan switch
B. DASAR TEORI
Untuk keperluan pengambilan keputusan, C menyediakan beberapa jenis pernyataan, berupa : Pernyataan if Pernyataan if -else, dan Pernyataan switch Pernyataan-pernyataan tersebut memerlukan suatu kondisi, sebagai basis dalam pengambilan keputusan. Kondisi umum yang dipakai berupa keadaan benar dan salah. Operator Relasi
Operator relasi biasa dipakai untuk membandingkan dua buah nilai. Hasil pembandingan berupa keadaan benar atau salah. Keseluruhan operator relasi pada C ditunjukkan pada Tabel 3-1
25
Operator
Makna
>
Lebih dari
>=
Lebih dari atau sama dengan
<
Kurang dari
<=
Kurang dari atau sama dengan
==
Sama dengan
!=
Tidak sama dengan
Operator Logika.
Operator logika biasa dipakai untuk menghubungkan ekspresi relasi. Keseluruhan operator logika ditunjukkan pada tabel 3-2.
Tabel 3-2. Operator logika Operator
Makna
&&
dan (AND)
||
atau (OR)
!
tidak (NOT)
Bentuk pemakaian operator && dan || adalah operand1 operator operand2
Pernyataan if
Pernyataan if mempunyai mempunyai bentuk umum : if (kondisi ) pernyataan;
26
Bentuk ini menyatakan :
Jika kondisi yang diseleksi adalah benar (bernilai logika = 1 ), maka pernyataan yang mengikutinya akan diproses.
Sebaliknya, jika kondisi yang diseleksi adalah tidak benar (bernilai logika = 0), maka pernyataan yang mengikutinya tidak akan diproses. diproses.
Mengenai kodisi harus ditulis diantara tanda kurung, sedangkan pernyataan dapat berupa sebuah pernyataan tunggal, pernyataan majemuk atau pernyataan kosong. Diagram alir dapat dilihat seperti gambar 3.1
Pernyataan if-else
Pernyataan if-else memiliki bentuk : if (kondisi) pernyataan-1; else pernyataan-2;
27
Diagram alir dapat dilihat seperti gambar 3.2.
Arti dari pernyataan if-else : if-else :
Jika kondisi benar, maka pernyataan-1 dijalankan.
Sedangkan bila kondisi bernilai salah, maka pernyataaan-2 yang dijalankan.
Masing-masing pernyataan-1 dan pernyataan-2 dapat berupa sebuah pernyataan tunggal, pernyataan majemuk ataupun pernyataan kosong. Contoh penggunaan pernyataan if-else if-else adalah untuk menyeleksi nilai suatu bilangan pembagi. Jika nilai bilangan pembagi adalah nol, maka hasil pembagian dengan nilai nol akan mendapatkan hasil tak berhingga. Jika ditemui nilai pembaginya nol, maka proses pembagian tidak akan dilakukan. dilakukan.
Pernyataan i f di di dalam i f
Di dalam suatu pernyataan if (atau if-else) if-else) bisa saja terdapat pernyataan if (atau if-else) yang lain. Bentuk seperti ini dinamakan sebagai nested if . Secara umum, bentuk dari pernyataan ini adalah sebagai berikut : 28
if (kondisi-1) if (kondisi-2) . . if(kondisi-n) pernyataan; else pernyataan; . . else pernyataan; else pernyataan;
Kondisi yang akan diseleksi pertama kali adalah kondisi yang terluar ( kondisi-1). Jika kondisi-1 bernilai salah, maka statemen else yang terluar (pasangan if yang
bersangkutan) yang akan diproses. Jika else (pasangannya tsb) tidak ditulis, maka penyeleksian kondisi akan dihentikan.
Jika kondisi-1 bernilai benar, maka kondisi berikutnya yang lebih dalam ( kondisi-2) akan diseleksi. Jika kondisi-2 bernilai salah, maka statemen else pasangan dari if yang bersangkutan yang akan diproses. Jika else (untuk kondisi-2) tidak ditulis, maka penyeleksian kondisi akan dihentikan.
Dengan cara yang sama, penyeleksian kondisi akan dilakukan sampai dengan kondisin, jika kondisi-kondisi sebelumnya bernilai benar.
Pernyataan else- if
Contoh implementasi nested if ini misalnya pembuatan sebuah program kalkulator sederhana. User memberikan masukan dengan format : operand1 operator operand2
Jenis operasi yang dikenakan bergantung pada jenis operator ang dimasukkan oleh user. Oleh karena itu program akan mengecek apakah operator berupa tanda ‘*’, ‘/’, ‘+’, ataukah tanda ‘-‘ . Jika operator berupa tanda ‘*’ maka operand1 akan dikalikan dengan operand2. 29
Jika operator berupa tanda ‘/’ maka operand1 akan dibagi dengan operand2. Jika operator berupa tanda ‘+’ maka operand1 akan dijumlahkan dengan operand2. Jika operator berupa tanda ‘-’ maka operand1 akan dikurangi dengan operand2. Kalau operator yang dimasukkan bukan merupakan salah satu dari jenis operator di atas, maka ekspresi tersebut tidak akan diproses, dan user akan mendapatkan pesan berupa : “Invalid operator !” Pernyataan switch
Pernyataan switch merupakan pernyataan yang dirancang khusus untuk menangani pengambilan keputusan yang melibatkan sejumlah alternatif, misalnya untuk menggantikan pernyataan if bertingkat. Bentuk umum pernyataan switch adalah : switch (ekspresi) { case konstanta-1: pernyataan-1; ...... break; case konstanta-2: . . . case konstanta-n: pernyataan-n; ....... break; default: ....... ....... break; }
dengan ekspresi dapat berupa ekspresi bertipe integer atau bertipe karakter. Demikian juga konstanta-1, konstanta-2 , konstanta-n dapat berupa konstanta integer atau karakter. Setiap
pernyataan-i (pernyataan-1, … , pernyataan-n ) dapat berupa pernyataan tunggal ataupun pernyataan jamak. Dalam hal ini urutan penulisan pernyataan case tidak berpengaruh. Proses penyeleksian berlangsung sebagai berikut : 30
pengujian pada switch akan dimulai dari konstanta-1. Kalau nilai konstanta-1 cocok dengan ekspresi maka pernyataan-1 dijalankan. Kata kunci break harus disertakan di bagian akhir setiap pernyataan case, yang akan mengarahkan eksekusi ke akhir switch. Kalau ternyata pernyataan-1 tidak sama dengan nilai ekspresi , pengujian dilanjutkan pada konstanta-2 , dan berikutnya serupa dengan pengujian pada konstanta-1. Jika sampai pada pengujian case yang terakhir ternyata tidak ada kecocokan, maka pernyataan yang mengikuti kata kunci default yang akan dieksekusi. Kata kunci default ini bersifat opsional. Tanda kurung kurawal tutup (}) menandakan akhir dari proses penyeleksian kondisi case.
C. HASIL PERCOBAAN
3.1 Penggunaan if-else bertingkat Listing programnya adalah : #include main() { float a, t, L; int bil; printf("1. Luas Segitiga\n"); printf("2. Luas Persegi Panjang atau Bujur Sangkar \n"); printf("Apa yang ingin anda cari : "); scanf("%d", &bil); if(bil==1) { printf("Masukkan alas & tinggi : "); scanf("%f", &a); scanf("%f", &t); L=0.5*a*t; printf("Luas Segitiga = %2.2f",L); } else if (bil==2) { 31
printf("Masukkan panjang & lebar : "); scanf("%f", &a); scanf("%f", &t); L=a*t; printf("Luas Persegi Panjang / Bujur Sangkar = %2.2f", L); } else { printf("Pilihan anda tidak sesuai"); } return 0; }
Listing program dengan switch case: #include main() { float a, t, L; int bil; printf("1. Luas Segitiga\n"); printf("2. Luas Persegi Panjang atau Bujur Sangkar \n"); printf("Apa yang ingin anda cari : "); scanf("%d", &bil); switch(bil) { case 1: printf("Masukkan alas & tinggi : "); scanf("%f", &a); scanf("%f", &t); L=0.5*a*t; printf("Luas Segitiga = %2.2f",L); break; case 2: printf("Masukkan panjang & lebar : "); scanf("%f", &a); scanf("%f", &t); 32
L=a*t; printf("Luas Persegi Panjang / Bujur Sangkar = %2.2f", L); break; } return 0; }
Hasil programnya adalah : 1. if-else bertingkat
33
2. switch case
Flowchart 3.1
34
Kesimpulan : switch case dengan if else bertingkat dapat membentuk sebuah program yang sama namun fungsi yang berbeda.
3.2 Penggunaan switch case Listing programnya adalah : #include main() { char a; printf("Masukkan nilai huruf = "); scanf("%c", &a); switch(a) 35
{ case 'A': printf("Nilai angka = 4"); break; case 'B': printf("Nilai angka = 3"); break; case 'C': printf("Nilai angka = 2"); break; case 'D': printf("Nilai angka = 1"); break; case 'E': printf("Nilai angka = 0"); break; } return 0; }
Hasil programnya adalah :
36
37
38
Flowchart 3.2 :
Kesimpulan : switch case dapat diguakan membuat program dengan kondiisi yang cukup banyak dengan tampilan yang lebih sederhana.
3.3 Penggunaan nested if Listing programnya adalah : #include 39
main() { double a, b, c; printf("Masukkan nilai huruf = "); scanf("%lf",&a); printf("Masukkan nilai huruf = "); scanf("%lf",&b); printf("Masukkan nilai huruf = "); scanf("%lf",&c); if(a
Hasil programnya adalah :
40
Flowchart 3.3 :
41
3.4 Percobaan 3.2 denngan if-else Listing programnya adalah : #include main() { char e; printf("Nilai Huruf : "); scanf("%c",&e); if(e=='A') printf("4"); else if (e=='B') printf("3"); else if (e=='C') printf("2"); else if (e=='D') printf("1"); else if (e=='E') printf("0"); else printf("Pilihan Tidak Sesuai"); }
Hasil percobaannya adalah :
42
43
44
Flowchart 3.4 :
45
LAPORAN PRAKTIKUM 4 Pengulangan Proses
A. TUJUAN
1. Menjelaskan proses pengulangan menggunakan pernyataan for 2. Menjelaskan proses pengulangan menggunakan pernyataan while 3. Menjelaskan proses pengulangan menggunakan pernyataan do-while B. DASAR TEORI
for Pernyataan for Mengulang suatu proses merupakan tindakan yang banyak dijumpai dalam pemrograman. Pada semua bahasa pemrograman, pengulangan proses ditangani dengan suatu mekanisme yang disebut loop. loop. Dengan menggunakan loop, loop, suatu proses yang berulang misalnya menampilkan tulisan yang sama seratus kali pada layar dapat diimpelementasikan dengan kode program yang pendek.
Pernyataan pertama yang digunakan untuk keperluan pengulangan proses adalah pernyataan for . Bentuk pernyataan ini : for (ungkapan1; ungkapan2; ungkapan3) pernyataan;
Kegunaan dari masing-masing ungkapan pada pernyataan for. pernyataan for.
Ungkapan1 : digunakan untuk memberikan inisialisasi terhadap variabel pengendali loop. loop.
Ungkapan2 : dipakai sebagai kondisi kondisi untuk keluar keluar dari loop. loop.
46
Ungkapan3 : dipakai sebagai pengatur kenaikan nilai variabel pengendali loop. loop. Ketiga ungkapan dalam for tersebut tersebut harus dipisahkan dengan tanda titik koma (;). Dalam hal ini pernyatan bisa berupa pernyataan tunggal maupun jamak. Jika pernyataannya berbentuk jamak, maka pernyataan-pernyataan tersebut harus diletakkan di antara kurung kurawal buka ({) dan kurung kurawal tutup (}), s ehingga formatnya menjadi :
for (ungkapan1; ungkapan2; ungkapan3) { pernyataan; pernyataan; . . . }
Pernyataan while
Pada pernyataan while, while, pengecekan terhadap loop dilakukan di bagian awal (sebelum t ubuh loop). Lebih jelasnya, bentuk pernyataan while adalah while adalah sebagai berikut : while (kondisi) pernyataan;
dengan pernyataan dapat berupa pernyataan tunggal, pernyataan majemuk ataupun pernyataan kosong. Proses pengulangan terhadap pernyataan dijelaskan pada gambar berikut :
47
Pernyataan do-while
Bentuk pernyataan do-while do pernyataan; while (kondisi)
Pada pernyataan do-while, tubuh loop berupa pernyataan,dengan pernyataan bisa berupa pernyataan tunggal, pernyataan majemuk ataupun pernyataan kosong. Pada pernyataan do, mula-mula pernyataan dijalankan. Selanjutnya, kondisi diuji. Sendainya kondisi bernilai benar, maka pernyataan dijalankan lagi, kemudian kondisi diperiksa kembali, dan seterusnya. Kalau kondisi bernilai salah pada saat dites, maka pernyataan tidak dijalankan lagi. Untuk lebih jelasnya dapat dilihat pada Gambar 4.3. Berdasarkan Gambar 5.3 terlihat bahwa tubuh loop minimal akan dijalankan sekali.
48
C. HASIL PERCOBAAN
4.1 Penggunaan pernyataan for Listing program: #include main() { int a,b,c=0; printf("Masukkan integer positif = "); scanf("%d", &b); for (a=1;a<=b;a++) { c=c+a; } printf("Jumlah 1 sampai 10 = %d",c); }
49
Hasil program :
Flowchart:
50
4.2 Penggunaan loop while Listing program: #include main() { char jawab = 'y'; int a=0, hasil=0, n=0; while(jawab=='y'||jawab=='Y') { 51
n=n+1; printf("Masukkan bilangan ke-%d : ",n); scanf("%d",&a); printf("Mau masukkan lagi [y/t] ?"); getchar(); jawab=getchar(); hasil+=a; } printf("Hasilnya = %d \n",hasil); }
Hasil program :
52
Flowchart :
4.3 Program menentukan integer acak Listing program : #include #include #include int main() { int b=1, angka, input, teb;
53
do { angka = rand(); } while(angka<=0 && angka>50); for(b=1;b<=5;b++) { printf("Masukkan angka tebakan anda ke-%d ?",b); scanf("%d",&input); if(input==angka) { printf("\nHebat angka %d berhasil anda tebak dalam %d kali tebakan \n\n", angka,b); break; } if(input<=angka) { printf("\nAngka anda lebih KECIL \n\n"); } if(input>=angka) {
54
printf("\nAngka anda lebih BESAR \n\n"); } } if(input!=angka) { printf("\nAngka Tidak Berhasil menebak angka ajaib = %d \n\n",angka); } }
Hasil program :
55
D. KESIMPULAN
Memahami program yang akan dibuat sangat mempengaruhi keberhasilan dari suatu program. Selain ketelitian, menempatkan fungsi yang akan digunakan sangat penting. Menetapkan fungsi untuk sebuah program agar lebih sederhana dan mudah dimengerti.
56
LAPORAN PRAKTIKUM 6 Fungsi Matematika
A. TUJUAN
1. Menjelaskan fungsi matematika dalam bahasa C. 2. Menerapkan fungsi-sungsi matematika yang terdapat dalam C dalam menyelesaikan permasalahan.
B. TEORI DASAR
Bahasa C menyediakan bawaan fungsi matematika yang terdapat dalam pustaka (library) : math.h . Agar fungsi matematika tersebut dapat digunakan dalam program maka fungsi
matematika harus disertakan dalam program melalui pernyataan: #include
Beberapa fungsi matematika yang terdapat dalam librar y math.h bahasa C yakni: Kegunaan
Fungsi
Menghitung nilai sinus sudut x yang dinyatakan dalam radian Sin(x) Menghitung nilai cosines sudut x yang dinyatakan dalam radian Cos(x) Menghitung nilai tangen sudut x yang dinyatakan dalam radian Tan(x) Menghitung nilai arcus sinus dari x yang harus bernilai diantara -1 Asin(x)
dan 1 Menghitung nilai arcus cosinus dari x yang harus bernilai diantara
Acos(x)
-1 dan 1 Menghitung nilai arcus tangen dari x
Atan(x) Menghitung nilai sinus hiperbolik dari x Sinh(x)
57
Menghitung nilai cosines hiperbolik dari x Cosh(x) Menghitung nilai tangent hiperbolik dari x Tanh(x) Menghitung nilai mutlak dari x Abs(x) Menghitung nilai logaritma natural dari x (yaitu ln x) Log(x) Menghitung nilai logaritma basis 10 dari x Log10(x) Menghitung nilai x pangkat y Pow(x,y) Menghitung nilai akar kuadrat dari x Sqrt(x) Menghitung nilai expoen dari x (yaitu ex) Exp(x)
C. HASIL PERCOBAAN
Listing program : #include #include main() { float v, y, y0, v0, t, g=9.8; printf("Ketinggian awal : "); scanf("%f", &y0); printf("Kecepatan awal : "); scanf("%f", &v0);
58
t = (v0+sqrt(v0*v0+2*g*y0))/g; v = sqrt(v0*v0+2*g*y0);
printf("\n Hasil : \n"); printf("Durasi benda diudara : %.2f g\n",t); printf("Kecepatan sebelum meyentuh tanah : %.2f m/s2\n",v); }
Hasil percobaan :
59
60
Flowchart :
Kesimpulan: Membuat program dengan melibatkan rumus-rumus pada dunia matematika maupun fisika tidaklah serumit yang dibayangkan. Cukup dengan ketelitian dan penggunaan symbol serta menuliskan rumus yang tepat dapat menyelesaikan berbagai kondisi yang melibatkan perhitungan matematika pada sebuah program.
61
LAPORAN PRAKTIKUM 7 POINTER
A. TUJUAN
1. Mengetahui konsep dari variabel pointer 2. Mengetahui penggunaan pointer array 3. Mengetahui penggunaan pointer string
B. TEORI DASAR Konsep Dasar Pointer
Variabel pointer sering dikatakan sebagai variabel yang menunjuk ke objek lain. Pada kenyataan yang sebenarnya, variebel pointer berisi alamat dari suatu objek lain (yaitu objek yang dikatakan ditunjuk oleh pointer).
Mendeklarasikan Variabel Pointer
Suatu variabel pointer dideklarasikan dengan bentuk sebagai berikut: Tipe*nama_variabel
Dengan tipe dapat berupa sembarang tipe yang sudah dibahas pada bab-bab sebelumnya, maupun bab-bab berikutnya. Adapun nama_variabel adalah nama dari variabel pointer.
Mengatur Pointer agar Menunjuk ke Variabel Lain
Agar suatu pointer menunjuk ke variabel lain, mula-mula pointer harus diisi dengan alamat dari variabel yang akan ditunjuk. Untuk menyatakan alamat dari suatu variabel, operator & (operator alamat, bersifat unary) bisa dipergunakan, dengan menempatkannya di depan nama variabel.
Mengakses Isi Suatu Variabel Melalui Pointer
Jika suatu variabel sudah ditunjuk oleh pointer, variabel yang ditunjuk oleh pointer tersebut dapat diakses melalui variabel itu sendiri (pengaksesan langsung) ataupun melalui pointer (pengaksesan tak langsung). 62
Pengaksesan tak langsung dilakukan dengan menggunakan operator indirection (tak langsung) berupa symbol *(bersifat unary). Mengakses dan Mengubah Isi Suatu Variabel Pointer
Contoh berikut memberikan gambaran tentang pengubahan isi suatu variabel secara tak langsung (yaitu melalui pointer). Mula-mula pd dideklarasikan sebagai pointer yang menunjuk ke suatu data bertipe float dan d sebagai variabel bertipe float. Selanjutnya d = 54.5; digunakan untuk mengisikan nilai 54,5 secara langsung ke var iabel d. Adapun pd= &d; digunakan untuk memberikan alamat dari d ke pd. Dengan demikian pd menunjuk ke variabel d. Sedangkan pernyataanberikutnya *pd= *pd + 10; ( atau : *pd+=10;) Merupakan instruksi untuk mengubah nilai variabel d secara tak langsung. Perintah di atas berarti “jumlahkan yang ditunjuk pd dengan 10 kemudian berikan ke yang ditunjuk oleh pd”, atau identik dengan pernyataan
d = d+10; akan tetapi seandainya tidak ada instruksi pd= &d; maka pernyataan *pd= *pd + 10; Tidak sama dengan d = d+10;
Pointer dan Array
Hubungan pointer dan array pada C sangatlah erat. Sebab sesungguhnya array secara internal akan diterjemahkan dalam bentuk pointer.
C. HASIL PERCOBAAN
7.1 Program mengetahui alamat suatu variabel Listing program : #include int main()
63
{ int alif = 5; float ba = 7.5; double ta = 17.777; printf("Isi variabel : \n"); printf("alif = %d\n", alif); printf("ba = %f\n", ba); printf("ta = %lf\n",ta); printf("\n"); printf("Alamat variabel : \n"); printf("alif = %p\n", &alif); printf("ba = %p\n", &ba); printf("ta = %p\n", &ta); return 0; }
Hasil program:
7.2 Progam mengakses array via pointer Listing program : #include int main() { 64
int tgl_lahir[] = {24, 6, 1965}; int*ptgl;
ptgl=tgl_lahir;//ptgl menunjuk ke array; //Menampilkan isi array via pointer int i; for(i=0; i
Hasil program :
Flowchart:
65
D. KESIMPULAN
Percobaan pointer berlandaskan dengan percobaan-percobaan sebelumnya. Percobaan pointer menekankan pointer yang seringkali tidak diketahui.
66
LAPORAN PRAKTIKUM 8 ARRAY
A. Tujuan
1. Menjelaskan tentang array berdimensi satu 2. Menjelaskan tentang array berdimensi dua 3. Menjelaskan tentang array berdimensi banyak 4. Menjelaskan tentang inisialisasi array tak berukuran. 5. Menjelaskan array sebagai parameter fungsi B. DASAR TEORI
Dalam beberapa literatur, array sering disebut (diterjemahkan) sebagai larik. Array adalah kumpulan dari nilai-nilai data bertipe sama dalam urutan tertentu yang menggunakan sebuah nama yang sama. Nilai-nilai data di suatu array disebut dengan elemen-elemen array. Letak urutan dari elemen-elemen array ditunjukkan oleh suatu subscript atau indeks. Array bisa berupa array berdimensi satu, dua, tiga atau lebih. Array berdimensi satu (onedimensional array) mewakili bentuk suatu vektor. Array berdimensi dua (two-dimensional array) mewakili bentuk dari suatu matriks atau table. Array berdimensi tiga (threedimensional array) mewakili bentuk suatu ruang.
Array Berdimensi Satu
Suatu array berdimensi satu dideklarasikan dalam bentuk umum berupa : tipe_data nama_var[ukuran]; dengan :
tipe_data : untuk menyatakan tipe dari elemen array, misalnya int, char, float .
nama_var : nama variabel array
ukuran
67
: untuk menyatakan jumlah maksimal elemen array.
Mengakses Elemen Array Berdimensi Satu
Pada C, data array akan disimpan dalam memori yang berurutan.
Elemen
pertama
mempunyai indeks bernilai 0. Jika variabel nilai_tes dideklarasikan sebagai array dengan 5 elemen, maka elemen pertama memiliki indeks sama dengan 0, dan elemen terakhir memiliki indeks 4. Bentuk umum pengaksesan array adalah sbb : Nama_var[indeks]
Inisialisasi Array Berdimensi Satu
Sebuah
array
dapat
diinisialisasi
sekaligus
pada
saat
dideklarasikan.
Untuk
mendeklarasikan array, nilai-nilai yang diinisialisasikan dituliskan di antara kurung kurawal ({}) yang dipisahkan dengan koma. Beberapa Variasi dalam Mendeklarasikan Array
Ada beberapa variasi cara mendeklarasikan sebuah array (dalam hal ini yang berdimensi satu), di antaranya adalah sebagai berikut :
int numbers[10];
int numbers[10] = {34, 27, 16};
int numbers[] = {2, -3, 45, 79, -14, 5, 9, 28, -1, 0};
char text[] = "Welcome to New Zealand.";
float radix[12] = {134.362, 1913.248};
double radians[1000];
Array Berdimensi Dua
68
Array berdimensi satu dapat disimpan pada sebuah array berdimensi dua. Pendeklarasian array berdimensi dua adalah sebagai berikut : int data_lulus[4][3]; Nilai 4 untuk menyatakan banyaknya baris dan 3 menyatakan banyaknya kolom. Gambar 10.1 memberikan ilustrasi untuk memudahkan pemahaman tentang array berdimensi dua.
Mengakses Elemen Array Berdimensi Dua
Array seperti data_lulus dapat diakses dalam bentuk data_lulus[indeks pertama, indeks kedua] :
data_lulus[0][1] = 540; merupakan instruksi untuk memberikan nilai 540 ke array data_lulus untuk indeks pertama = 0 dan indeks kedua bernilai 1.
printf(“%d”,data_lulus[2][0]);
69
merupakan perintah untuk menampilkan elemen yang memiliki indeks pertama = 2 dan indeks kedua = 0.
Array Berdimensi Banyak
C memungkinkan untuk membuat array yang dimensinya lebih dari dua. Bentuk umum pendeklarasian array berdimensi banyak : tipe nama_var[ukuran 1][ukuran2}…[ukuranN]; sebagai contoh : int data_huruf[2][8][8]; merupakan pendeklarasian array data_huruf sebagai array berdimensi tiga. Sama halnya dengan array berdimensi satu atau dua, array berdimensi banyak juga bisa diinisialisasi.
Array Sebagai Parameter
Array juga dapat dilewatkan sebagai parameter fungsi. Sebagai contoh ditujukan pada program sorting.c. Program digunakan untuk memasukkan sejumlah data, kemudian data tersebut diurutkan naik (ascending) dan dicetak ke layar. Untuk melakukan sorting (proses pengurutan data), cara yang dipakai yaitu metode buble sort (suatu metode pengurutan yang paling sederhana, dan memiliki kecepatan pengurutan yang sangat lambat). Algoritma pada metode pengurutan ini adalah sebagai berikut : 1. Atur i bernilai 0 2. Bandingkan x[i] dengan x[j], dg j berjalan dari i + 1 sampai dengan n-1. 70
3. Pada setiap pembandingan, jika x[i] > x[j], maka isi x[i] dan x[j] ditukarkan 4.
Bila i < (n – 1), ulangi mulai langkah 2.
Catatan: i
=
indeks array
x = nama array untuk menyimpan data n =
umlah data
Algoritma diatas berlaku untuk pengurutan menaik (ascending). Untuk pengurutan menurun (descending), penukaran dilakukan jika x[i] < x[j].
C. HASIL PERCOBAAN
8.1 Program membaca array karakter Listing program : #include main() { char tmp, kar[255]; int htg[255]; int a, b, c=0, n, cek; printf("Masukkan jumlah karakter : "); scanf("%d",&n); for(a=1;a<=n;a++) { printf("Masukkan karakter ke-%d\t: ",a); scanf("\n%c",&tmp); for(b=0;b<=c;b++) { cek=1; if(tmp==kar[b]) { cek=0; 71
htg[b]++; break; } } if(cek==1) { kar[c]=tmp; htg[c]=1; c++; } } printf("\n"); for(a=0;a
Hasil program:
Flowchart:
72
8.2 Program menggunakan inisialisasi array berdimensi dua Listing program : #include int main() { int huruf_A[8][8]= { {0, 1, 1, 1, 1, 1, 0, 0}, {0, 1, 0, 0, 0, 1, 0, 0}, {0, 1, 0, 0, 0, 1, 0, 0}, {1, 1, 1, 1, 1, 1, 1, 0}, {1, 1, 0, 0, 0, 0, 1, 0}, {1, 1, 0, 0, 0, 0, 1, 0}, {1, 1, 0, 0, 0, 0, 1, 0}, {0, 0, 0, 0, 0, 0, 0, 0} }; int i, j; 73
for(i=0; i<8; i++) { for(j=0; j<8; j++) if (huruf_A[i][j]==1) putchar('*'); else putchar(' '); printf("\n"); } return 0; }
Hasil program:
D. KESIMPULAN
Percobaan dengan array serta inisialisasi array membutuhkan ketelitian yang tinggi pada saat membuat program, beberapa kali kesalahan terjadi namun program tetap berjalan hanya saja tidak sesuai dengan output yang diinginkan.
74
LAPORAN PRAKTIKUM 9 STRING
A. TUJUAN
1. Menjelaskan tentang konsep string 2. Menjelaskan operasi I/O pada string. 3. Menjelaskan cara mengakses elemen string 4. Menjelaskan berbagai fungsi mengenai string
B. TEORI DASAR Konstanta dan Variabel String
String merupakan bentuk data yang biasa dipakai dalam bahasa pemrograman untuk keperluan menampung dan memanipulasi data teks, misalnya untuk menampung (menyimpan) suatu kalimat. Pada bahasa C, string bukanlah merupakan tipe data tersendiri, melainkan hanyalah kumpulan dari nilai-nilai karakter yang berurutan dalam bentuk array berdimensi satu.
Konstanta String
Suatu konstanta string ditulis dengan diawali dan diakhiri tanda petik ganda, misalnya:
“ABCDE”
Nilai string ini disimpan dalam memori secara berurutan dengan komposisi sebagai berikut:
75
Setiap karakter akan menempati memori sebesar 1 byte. Byte terakhir otomatis akan berisi karakter NULL (\0). Dengan mengetahui bahwa suatu string diakhiri nilai NULL, maka akhir dari nilai suatu string akan dapat dideteksi. Sebagai sebuah array karakter, karakter pertama dari nilai string mempunyai indeks ke-0, karakter kedua mempunyai indeks ke-1, dan seterusnya .
Variabel String
Variabel string adalah variabel yang dipakai utuk menyimpan nilai string. Misalnya : char name[15];
merupakan instruksi untuk mendeklarasikan variabel string dengan panjang maksimal 15 karakter (termasuk karakter NULL). Deklarasi tersebut sebenarnya tidak lain merupakan deklarasi array bertipe char Inisialisasi String
Suatu variabel string dapat diinisialisasi seperti halnya array yang lain. Namun tentu saja elemen terakhirnya haruslah berupa karakter NULL. Sebagai contoh : char name[] = {'R','A','N', 'I',’\0’};
yang menyatakan bahwa name adalah variabel string dengan nilai awal berupa string : “RANI” . Bentuk inisialisasi yang lebih singkat : char name[] = “RANI”; Pada bentuk ini, karakter NULL tidak perlu ditulis. Secara implisit akan disisipkan oleh kompiler. Perlu diperhatikan, bila name dideklarasikan sebagai string, penugasan (assignment) suatu string ke variabel string seperti name = “RINI”;
76
adalah tidak diperkenankan. Pengisian string ke variabel string akan dibahas pada sub bab berikutnya.
INPUT OUTPUT DATA STRING
Memasukkan Data String
Pemasukan data string ke dalam suatu variabel biasa dilakukan dengan fungsi gets() atau scanf(). #include gets(nama_array): atau #include scanf(“%s”,nama_array):
Perhatikan:
Nama_array adalah variabel beertipe array of char yang akan digunakan
untuk menyimpan string masukan.
Di depan Nama_array tidak perlu ada operator & (operator alamat), karenya nama_array tanpa kurung siku sudah menyatakan alamat yang ditempati oleh elemen pertama dari array tersebut.
Kalau memakai scanf(), data string masukan tidak boleh mengandung spasi.
Menampilkan Isi Variabel String
Untuk menampilkan isi variabel string, fungsi yang digunakn adalah puts() atau printf(). Bentuk umum pemakainnya adalah sebagai berikut: #inlude Puts(var_string); Atau printf(“%s”,var_string);
77
Dalam hal ini var_string adalah sebuah variabel yang berupa sebuah array of char . Fungsi puts() akan menampilkan isi dari var_string dan secara otomatis menambahkan karakter '\n' di akhir string. Sedangkan fungsi printf() akan menampilkan isi variabel string tanpa memberikan tambahan '\n'. Sehingga, agar kedua pernyataan di atas memberikan keluaran yang sama, maka pada pernyataan printf() dirubah menjadi : Printf(“%s\n”,var_string);
Fungsi-Fungsi Mengenai String
Berikut ini akan dibahas beberapa fungsi pustaka yang umumnya disediakan oleh kompiler C untuk mengoperasikan suatu nilai string. Fungsi-fungsi pustaka untuk operasi string, prototype-prototype nya berada di file judul string.h. Beberapa di antara fungsi pustaka untuk operasi string akan dibahas
di bawah ini. Fungsi strcpy() untuk Menyalin Nilai String
Bentuk pemakaian :
#include strcpy(tujuan, asal)
Fungsi ini dipakai untuk menyalin string asal ke variabel string tujuan termasuk karakter '\0'. Keluaran dari fungsi ini (return value) adalah string tujuan . Dalam hal ini, variabel tujuan haruslah mempunyai ukuran yang dapat digunakan untuk menampung seluruh karakter dari string asal.
Fungsi strlen() untuk Mengetahui Panjang Nilai String
Bentuk pemakaian : #include strlen(var_string);
78
Fungsi ini digunakan untuk memperoleh banyaknya karakter di dalam string yang menjadi argumennya (var_string). Keluaran dari fungsi ini adalah panjang dari var_string. Karakter NULL tidak ikut dihitung.
Fungsi strcat() untuk Menggabung Nilai String
Bentuk pemakaian : #include strcat(tujuan, sumber); Menggabungkan dua buah nilai string tidak dapat dilakukan dengan operator ‘+’, karena operator ini bukan operator untuk operasi string. Penggabungan dua buah nilai string dapat dilakukan dengan fungsi pustaka strcat() dengan menambahkan string sumber ke bagian akhir dari string tujuan . Keluaran dari fungsi ini adalah string tujuan.
Fungsi strcmp() untuk Membandingkan Dua Nilai String
Membandingkan dua nilai string juga tidak dapat digunakan dengan operator hubungan, karena operator tersebut tidak untuk operasi string. Membandingkan dua buah nilai string dapat dilakukan dengan fungsi pustaka strcmp(). Contoh bentuk pemakaian fungsi : #include
79
strcmp(str1, str2);
C. HASIL PERCOBAAN
9.1 Program kalimat palindrome Listing program: #include #include #include int main() { char a[100], b[100]; printf("Kalimat : "); gets (a); strcpy(b,a); strrev(b); if(strcmp(a,b)==0) printf("\nKata '%s' merupakan kata POLINDROM\n",&a); else printf("\nKata '%s' BUKAN PALINDROM\n",&a); getch(); }
Hasil program:
80
Flowchart:
81
9.2 Program mengurutkan nama Listing program: #include #define N 20 char nama [N][20]; int i, j, k, l; main() { int jml; char jumlah[10]; printf("Jumlah nama yang akan diurutkan = "); gets(jumlah); jml=atoi(jumlah); for(i=0;i
for(l=0;l<20;l++) { if(nama[i-1][l]nama[j][l]) { for(k=0;k<20;k++) { temp=nama[i-1][k]; nama[i-1][k]=nama[j][k]; nama[j][k]=temp; } break; } } } } }
Hasil Program :
83
D. KESIMPULAN
String memiliki banyak kegunaan lain seperti pada percobaan yang telah dilakukan, tidak hanya menampilkan sebuah kalimat saja pada sebuah program. Dengan menggunakan berbagai fungsi string sesuai dengan penggunaan yang diinginkan akan mendapatkan sebuah program yang lebih variatif.
84
LAPORAN PRAKTIKUM 10 STRUKTUR A. TUJUAN
1. Menjelaskan cara mendeklarasikan struktur 2. Menjelaskan cara menginisilisasi struktur 3. Menjelaskan cara mengakses elemen struktur 4. Menjelaskan pembentukan dan cara mengakses array dari struktur (ar ray of struct)
B. TEORI DASAR
Dalam struktur adalah pengelompokan variabel-variabel yang bernaung dalam satu nama yang sama. Berbeda dengan array yang berisi kumpulan variabel-variabel yang bertipe sama dalam satu nama, maka suatu struktur dapat terdiri atas variabel-variabel yang berbeda tipenya dalam satu nama struktur.struktur biasa dipakai untuk mengelompokkan beberapa informasi yang berkaitan menjadi sebuah. Variabel-variabel yang membentuk suatu struktur, selanjutnya disebut sebagai elemen dari struktur atau field. Dengan demikian dimungkinkan suatu struktur dapat berisi elemen-elemen data berbeda tipe seperti char, int, float, double, dll. Contoh sebuah struktur adalah informasi data tangga (date) yang berisi:
Day
Month
Year
Mendefinisikan & Mendeklarasikan Struktur
Suatu struktur didefinisikan dengan menggunakan kata kunci struct. Contoh pendefinisian sebuah tipe data struktur: Struct date{ Int mont; Int day; Int year; }; Struct date{ 85
Int month, day, year; }; Yang mendefinisikan sebuah tipe data struktur bernama date yang memiliki 3 buah elemen (field) berupa:
Day
Month
Year
Dalam mendefinisikan sebuah struktur, elemen yang terkandung di dalamnya bisa juga berupa sebuah struktur, contoh: Struct date{ Int moth, day, year; }; Struct person{ Char nae[30]; Struct date birthday; }; Struct person student;//deklarasi var student 86
Diagram struktur data dari variabel student dapat digambarkan sebagai berikut:
Elemen dari suatu variabel struktur dapat diakses dengan menyebutkan nama variabel struktur diikuti dengan operator titik (‘.’) dan nama dari elemen strukturnya. Cara penulisannya : Variabel_struktur.nama_field
Menginisialisasi Struktur
Sebuah struktur juga bisa di inisialisasikan pada saat dideklarasikan. Hal ini serupa dengan inisialisasi array, yaitu elemen-elemennya ditulis di dalam sepasang kurung kurawal(‘{}’) dengan masing-masing dipisahkan dengan koma.
Array dan Struktur
Elemen-elemen dari suatu array juga dapat berbentuk sebuah struktur. Misalnya array yang dipakai untuk menyimpan sejumlah data siswa(struct student). Array struktur berdimensi satu ini membentuk suatu table, dengan barisnya menunjukan elemen dari arraynya dan kolomnya menunjukan elemen dari struktur.
87
C. HASIL PERCOBAAN
10.1 Mendefinisikan sebuah struktur Listing program: #include main() { char nama [20]; float j, h, hbr, jbr; printf("Masukkan nama barang : "); scanf("%s",nama); printf("Masukkan jumlah barang : "); scanf("%f",&j); printf("Masukkan harga per barang : "); scanf("%f",&h); hbr=j*h; printf("\nJadi Barang yang dimasukkan adalah %s\n",nama); printf("Jumlah barang %2.2f dan total harganya adalah %2.2f\n",j , hbr); getch(); }
Hasil program:
Flowchart:
88
10.2 Program array of struct Listing program: #include #include
main ()
{ char na[40],p; float uts,uas,tgs,akh;
printf("======================================================= =================\n"); printf("
PROGRAM NILAI MAHASISWA\n");
printf("======================================================= =================\n"); printf("Masukan Nama Mahasiswa
: ");
gets(na); printf("Masukan Nilai Tugas
: ");
scanf("%f",&tgs); printf("Masukan Nilai UTS scanf("%f",&uts); 89
: ");
printf("Masukan Nilai UAS
: ");
scanf("%f",&uas); akh=tgs*0.2+uts*0.4+uas*0.4; if(akh>=81) { p='A'; } else if(71<=akh<=80) { p='AB'; } else if(65<=akh<=70) { p='B'; } else if(akh>=61) { p='BC'; } else if(akh>=56) { p='C'; } else if (akh>=40) { p='D'; } else { p='E'; }
printf("\n------------------------------------------------------\n"); 90
printf("
Data Nilai Mahasiswa");
printf("\n------------------------------------------------------\n"); printf("Nama printf("NILAI TUGAS
: %2.2f\n",tgs);
printf("NILAI UTS
: %2.2f\n",uts);
printf("NILAI UAS
: %2.2f\n",uas);
printf("NILAI AKHIR
: %2.2f\n",akh);
printf("NILAI HURUF
: %c\n",p);
return 0; }
Hasil program:
91
: %s\n",na);
10.3 Program pembuatan dan pengaksesan struktur Listing program: #include int main() { struct data_tanggal { int tahun; int bulan; int tanggal; }; //Deklarasi variabel struktur struct data_tanggal tanggal_lahir; //Pengaksesan anggota struktur tanggal_lahir.tanggal = 1; tanggal_lahir.bulan = 9; tanggal_lahir.tahun = 1964; printf("%d/%d/%d\n",tanggal_lahir.tanggal, tanggal_lahir.tahun); return 0; }
Hasil program:
92
tanggal_lahir.bulan,
Flowchart:
10.4 Program penetapan zodiac Listing program: #include struct zodiak { char nama[11]; int tgl_awal; 93
int bln_awal; int tgl_akhir; int bln_akhir; }; int main() { struct zodiak bintang = { "Sagitarius", 22, 11, 21, 12 }; int tgl_lhr, bln_lhr, thn_lhr; printf("Tanggal lahir anda (DD-MM-YYYY) : "); scanf("%d-%d-%d", &tgl_lhr, &bln_lhr, &thn_lhr); if((tgl_lhr>=bintang.tgl_awal && bln_lhr==bintang.bln_awal)||(tgl_lhr<=bintang.tgl_akhir && bln_lhr==bintang.bln_akhir)) printf("Bintang Anda adalah %s\n",bintang.nama); else printf("Bintang Anda bukanlah %s\n",bintang.nama); return 0; }
Hasil program:
94