LAPORAN PRAKTIKUM
LAPORAN PRAKTIKUM
APLIKASI PEMROGAMAN DENGAN
APLIKASI PEMROGAMAN DENGAN
BAHASA C
BAHASA C
Oleh: Oleh: Praktikan : Amalina Almas
Praktikan : Amalina Almas – – 1510631160012 1510631160012
Dosen
Dosen : : Ibrahim, Ibrahim, ST.,MT.ST.,MT. Asisten
Asisten : : 1. 1. Aryo Aryo Jati Jati PrabowoPrabowo 2. Anggit Satrio Suwana 2. Anggit Satrio Suwana
Program Studi Teknik Elektro
Program Studi Teknik Elektro
Fakultas Teknik
Fakultas Teknik
DAFTAR ISI
DAFTAR ISI
DAFTAR
DAFTAR ISI ISI 22
Laporan
Laporan Praktikum Praktikum 1 1 Algoritma Algoritma dan dan Flowchart Flowchart 33 Laporan
Laporan Praktikum Praktikum 2 2 Dasaar Dasaar Pemrogaman Pemrogaman Bahasa Bahasa C C 1414 Laporan
Laporan Praktikum Praktikum 3 3 Pengambilan Pengambilan Keputusan Keputusan 2525 Laporan
Laporan Praktikum Praktikum 4 4 Pengulangan Pengulangan Proses Proses 4646 Laporan
Laporan Praktikum Praktikum 6 6 Fungsi Fungsi Matematika Matematika 5757 Laporan
Laporan Praktikum Praktikum 7 7 Pointer Pointer 6262 Laporan
Laporan Praktikum Praktikum 8 8 Array Array 6767 Laporan
Laporan Praktikum Praktikum 9 9 String String 7575 Laporan
LAPORAN PRAKTIKUM 1
LAPORAN PRAKTIKUM 1
Algoritma dan Flowchart
Algoritma dan Flowchart
A.
A. TUJUANTUJUAN 1.
1. Mampu memahami persoalanMampu memahami persoalan 2.
2. Mendesain penyelesaian persoalan ke dalam algoritmaMendesain penyelesaian persoalan ke dalam algoritma 3.
3. Menotasikan algoritma yang sudah dibuat menggunakan notasi flowchartMenotasikan algoritma yang sudah dibuat menggunakan notasi flowchart
B.
B. DASAR TEORIDASAR TEORI
Beberapa langkah dalam proses pembuatan suatu program atau sof
Beberapa langkah dalam proses pembuatan suatu program atau sof tware :tware : 1.
1. Mendefinisikan masalah dan menganalisanyaMendefinisikan masalah dan menganalisanya
Langkah awal yang harus dilakukan adalah mengidentifikasikan masalah antara Langkah awal yang harus dilakukan adalah mengidentifikasikan masalah antara lain tujuan dari pembuatan program, parameter-parameter yang digunakan, fasilitas lain tujuan dari pembuatan program, parameter-parameter yang digunakan, fasilitas apa saja yang akan disediakan oleh program. Kemudian menentukan metode atau apa saja yang akan disediakan oleh program. Kemudian menentukan metode atau algoritma apa yang akan diterapkan untuk menyelesaikan masalah tersebut dan algoritma apa yang akan diterapkan untuk menyelesaikan masalah tersebut dan terakhir menentukan bahasa program
terakhir menentukan bahasa program yang digunakan untuk pembuatan program.yang digunakan untuk pembuatan program. 2.
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.
Dari contoh algoritma di atas tentang menentukan apakah suatu bilangan adalah bilangan ganjil atau bilangan genap, flowchart dari program adalah sebagai berikut :
C. Hasil Percobaan
1.1 Menghitung luas lingkaran dan mencetak hasilnya. Listing programnya adalah :
#include<stdio.h> main()
{
float r, L, phi=3.14;
printf("Menghitung Luas Lingkaran\n"); printf("Masukkan nilai jari-jari = "); scanf("%f",&r);
L=phi*r*r;
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.
1.2 Proses pengiriman e-mail, jika email tidak terkirim maka akan dilakukan proses pengiriman email lagi.
Listing programnya adalah :
#include<stdio.h> 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); }
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.
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); }
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 m3 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<stdio.h> #include<math.h> main() { int e, b, biaya;
printf("Masukkan jumlah air yang digunakan (m3) : "); scanf("%d", &e);
{
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; }
1.5 Buatlah program untuk menjumlahkan bilangan 1 sampai 10, tapi yang dijumlahkan bilangan ganjil saja.
Listing programnya adalah :
#include<stdio.h> main()
{
int bilangan,i=0;
for(bilangan=1; bilangan<=10; bilangan+=2) { printf("%d\n", bilangan); i=i+bilangan; } printf("Hasilnya = %d\n",i); }
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.
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
Bahasa C dikatakan sebagai bahasa pemrograman terstruktur karena strukturnya menggunakan fungsi-fungsi sebagai program-program bagiannya (subroutine). Fungsi-fungsi yang ada selain Fungsi-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()
.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:
%f untuk menampilkan bilangan titik-mengambang (pecahan)
%c untuk menampilkan sebuah karakter
%s untuk menampilkan sebuah string Contoh: #include <stdio.h> main( ) { : %d\n”, 10); printf(“No printf(“Nama : %s\n”, “Ali”); printf(“Nilai : %f\n”,80.5); printf(“Huruf : %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 <stdio.h> menyatakan pada kompiler agar membaca file bernama stdio.h saat pelaksanaan kompilasi.
Bentuk umum #include:
#include “namafile”
Bentuk pertama (#include <namafile>) 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.
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().
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 <stdio.h> main()
{
//Ini komentar satu baris printf(“Coba\n”);
}
C. HASIL PERCOBAAN
2.1 Mencetak kalimat dalam beberapa baris. Listing programnya adalah :
#include<stdio.h> main()
{
printf("Program Studi Teknik Elektro\n"); printf("Kampus UNSIKA Tahun 2013"); }
Hasil keluaran programnya sebagai berikut :
2.2 Mencetak kalimat dalam beberapa baris. Listing programnya adalah :
#include<stdio.h> main()
{
printf("Saya sekarang sedang makan\n"); printf("Kantin UNSIKA\n");
printf("Murah meriah\n");
Keluaran yang dihasilkan dari program tersebut sebagai berikut :
2.3 Memperbaiki program yang salah. Listing programnya adalah :
#include<stdio.h> 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");
Keluaran yang dihasilkan dari program tersebut sebagai berikut :
2.4 Mencetak kalimat dalam beberapa baris. Listing programnya adalah :
#include<stdio.h> 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");
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.
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
Operator
Operator MaknaMakna
>
> Lebih dariLebih dari >=
>= Lebih Lebih dari dari atau atau sama sama dengandengan <
< Kurang Kurang daridari <=
<= Kurang dari atau sama denganKurang dari atau sama dengan ==
== Sama Sama dengandengan !=
!= Tidak Tidak sama sama dengandengan
Operator Logika. Operator Logika.
Operator logika biasa dipakai untuk menghubungkan ekspresi relasi. Keseluruhan operator Operator logika biasa dipakai untuk menghubungkan ekspresi relasi. Keseluruhan operator logika ditunjukkan pada tabel 3-2.
logika ditunjukkan pada tabel 3-2.
Tabel 3-2. Operator logika Tabel 3-2. Operator logika Operator
Operator MaknaMakna &&
&& dan dan (AND)(AND) |||| atau atau (OR)(OR) !
! tidak tidak (NOT)(NOT)
Bentuk pemakaian operator && dan || adalah Bentuk pemakaian operator && dan || adalah
operand1 operator operand2 operand1 operator operand2
Pernyataan Pernyataan
if
if
PernyataanPernyataan if if mempunyai bentuk umum : mempunyai bentuk umum : if (kondisi )
if (kondisi ) pernyataan; pernyataan;
Bentuk ini menyatakan : Bentuk ini menyatakan :
Jika kondisi yang diseleksi adalah benar (bernilai logikaJika kondisi yang diseleksi adalah benar (bernilai logika = 1= 1), maka pernyataan yang), maka pernyataan yang mengikutinya akan diproses.
mengikutinya akan diproses.
Sebaliknya, jika kondisi yang diseleksi adalah tidak benar (bernilai logikaSebaliknya, jika kondisi yang diseleksi adalah tidak benar (bernilai logika = = 00),), maka
maka pernyataan yang mengikutinya tidak akan d pernyataan yang mengikutinya tidak akan diproses.iproses.
Mengenai kodisi harus ditulis diantara tanda kurung, sedangkan pernyataan dapat berupa Mengenai kodisi harus ditulis diantara tanda kurung, sedangkan pernyataan dapat berupa sebuah pernyataan tunggal, pernyataan majemuk atau pernyataan kosong. Diagram alir dapat sebuah pernyataan tunggal, pernyataan majemuk atau pernyataan kosong. Diagram alir dapat dilihat seperti gambar 3.1
dilihat seperti gambar 3.1
Pernyataan
Pernyataan
if-else
if-else
PernyataanPernyataan
if-else
if-else
memiliki bentuk : memiliki bentuk : if (kondisi) if (kondisi) pernyataan-1; pernyataan-1; else else pernyataan-2; pernyataan-2;Diagram alir dapat dilihat seperti gambar 3.2. Diagram alir dapat dilihat seperti gambar 3.2.
Arti dari pernyataan
Arti dari pernyataan if-elseif-else : :
Jika kondisi benar, makaJika kondisi benar, maka pernyataan-1pernyataan-1 dijalankan. dijalankan.
Sedangkan bila kondisi bernilai salah, makaSedangkan bila kondisi bernilai salah, maka pernyataaan-2pernyataaan-2 yang dijalankan. yang dijalankan. Masing-masing
Masing-masing pernyataan-1pernyataan-1 dan dan pernyataan-2pernyataan-2 dapat berupa sebuah pernyataan dapat berupa sebuah pernyataan tunggal, pernyataan majemuk ataupun pernyataan kosong.
tunggal, pernyataan majemuk ataupun pernyataan kosong. Contoh penggunaan pernyataan
Contoh penggunaan pernyataan if-elseif-else adalah untuk menyeleksi nilai suatu bilangan adalah untuk menyeleksi nilai suatu bilangan pembagi. Jika
pembagi. Jika nilai nilai bilangan pembagi bilangan pembagi adalah adalah nol, maka nol, maka hasil hasil pembagian dengan pembagian dengan nilai nilai nolnol akan mendapatkan hasil tak berhingga. Jika ditemui nilai pembaginya nol, maka proses akan mendapatkan hasil tak berhingga. Jika ditemui nilai pembaginya nol, maka proses pembagian tidak akan dilakukan
pembagian tidak akan dilakukan..
Pernyataan
Pernyataan
iif f
di dalam di dalamiif f
Di dalam suatu pernyataanDi dalam suatu pernyataan if if (atau (atau if-elseif-else) bisa saja terdapat pernyataan) bisa saja terdapat pernyataan if if (atau (atau if-else)if-else) yang lain. Bentuk seperti ini dinamakan sebagai
yang lain. Bentuk seperti ini dinamakan sebagai nested if nested if . Secara umum, bentuk . Secara umum, bentuk daridari pernyataan ini adalah sebagai berikut :
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 kondisi-n, 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 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 pernyataanif
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 :
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<stdio.h>
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) {
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<stdio.h>
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);
L=a*t;
printf("Luas Persegi Panjang / Bujur Sangkar = %2.2f", L); break;
}
return 0; }
Hasil programnya adalah : 1. if-else bertingkat
2. switch case
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<stdio.h>
main() {
char a;
printf("Masukkan nilai huruf = "); scanf("%c", &a);
{ 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; }
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<stdio.h>
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<c) if(a<c) { printf("Terkecil %2.lf",a); } else { printf("Terkecil %2.lf",c); } else if(b<c) printf("Terkecil %2.lf",b); else printf("terkecil %2.lf",c); return 0; }
3.4 Percobaan 3.2 denngan if-else Listing programnya adalah :
#include<stdio.h> 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"); }
Flowchart 3.4 : Flowchart 3.4 :
LAPORAN PRAKTIKUM 4
LAPORAN PRAKTIKUM 4
Pengulangan Proses
Pengulangan Proses
A. A. TUJUANTUJUAN 1.1. Menjelaskan proses pengulangan menggunakan pernyataan for Menjelaskan proses pengulangan menggunakan pernyataan for 2.
2. Menjelaskan proses pengulangan menggunakan pernyataan whileMenjelaskan proses pengulangan menggunakan pernyataan while 3.
3. Menjelaskan proses pengulangan menggunakan pernyataan do-whileMenjelaskan proses pengulangan menggunakan pernyataan do-while B.
B. DASAR TEORIDASAR TEORI Pernyataan
Pernyataan
fo
for r
Mengulang suatu proses merupakan tindakan yang banyak dijumpai dalam pemrograman. Mengulang suatu proses merupakan tindakan yang banyak dijumpai dalam pemrograman. Pada semua bahasa pemrograman, pengulangan proses ditangani dengan suatu mekanisme Pada semua bahasa pemrograman, pengulangan proses ditangani dengan suatu mekanisme yang disebut
yang disebut looploop. Dengan menggunakan. Dengan menggunakan looploop, suatu proses yang berulang misalnya, suatu proses yang berulang misalnya menampilkan tulisan yang sama seratus kali pada layar dapat diimpelementasikan dengan menampilkan tulisan yang sama seratus kali pada layar dapat diimpelementasikan dengan kode program yang pendek.
kode program yang pendek.
Pernyataan pertama yang digunakan untuk keperluan pengulangan proses adalah pernyataan Pernyataan pertama yang digunakan untuk keperluan pengulangan proses adalah pernyataan for
for . Bentuk pernyataan ini :. Bentuk pernyataan ini :
for (ungkapan1; ungkapan2; ungkapan3) for (ungkapan1; ungkapan2; ungkapan3)
pernyataan pernyataan;;
Kegunaan dari masing-masing ungkapan pada pernyataan Kegunaan dari masing-masing ungkapan pada pernyataan for. for.
Ungkapan1 : digunakan untuk memberikan inisialisasi terhadap variabel pengendaliUngkapan1 : digunakan untuk memberikan inisialisasi terhadap variabel pengendali
loop loop..
Ungkapan3 : dipakai sebagai pengatur kenaikan nilai variabel pengendaliUngkapan3 : dipakai sebagai pengatur kenaikan nilai variabel pengendali looploop. Ketiga. Ketiga
ungkapan dalam
ungkapan dalam for for tersebut harus dipisahkan dengan tanda titik koma (;). Dalam hal tersebut harus dipisahkan dengan tanda titik koma (;). Dalam hal ini pernyatan bisa berupa pernyataan tunggal maupun jamak. Jika pernyataannya ini pernyatan bisa berupa pernyataan tunggal maupun jamak. Jika pernyataannya berbentuk
berbentuk jamak, jamak, maka maka pernyataan-pernyataan pernyataan-pernyataan tersebut tersebut harus harus diletakkan diletakkan di di antaraantara kurung kurawal buka ({) dan kurung kurawal tutup (}), s
kurung kurawal buka ({) dan kurung kurawal tutup (}), s ehingga formatnya menjadi :ehingga formatnya menjadi :
for (ungkapan1; ungkapan2; ungkapan3) for (ungkapan1; ungkapan2; ungkapan3) { { pernyataan; pernyataan; pernyataan; pernyataan; .. .. .. } } Pernyataan
Pernyataan
while
while
Pada pernyataanPada pernyataan whilewhile, pengecekan terhadap loop dilakukan di bagian awal (sebelum t, pengecekan terhadap loop dilakukan di bagian awal (sebelum t ubuhubuh loop). Lebih jelasnya, bentuk pernyataan
loop). Lebih jelasnya, bentuk pernyataan whilewhile adalah sebagai berikut : adalah sebagai berikut :
while (kondisi) while (kondisi)
pernyataan; pernyataan;
dengan pernyataan dapat berupa pernyataan tunggal, pernyataan majemuk ataupun dengan pernyataan dapat berupa pernyataan tunggal, pernyataan majemuk ataupun pernyataan
pernyataan kosong. kosong. Proses Proses pengulangan pengulangan terhadap terhadap pernyataan pernyataan dijelaskan dijelaskan pada pada gambargambar berikut :
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.
C. HASIL PERCOBAAN 4.1 Penggunaan pernyataan for
Listing program: #include<stdio.h> 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); }
Hasil program :
4.2 Penggunaan loop while Listing program:
#include<stdio.h> main()
{
char jawab = 'y'; int a=0, hasil=0, n=0;
while(jawab=='y'||jawab=='Y') {
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 :
Flowchart :
4.3 Program menentukan integer acak Listing program : #include<stdlib.h> #include<math.h> #include<time.h> int main() {
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) {
printf("\nAngka anda lebih BESAR \n\n"); }
}
if(input!=angka) {
printf("\nAngka Tidak Berhasil menebak angka ajaib = %d \n\n",angka); }
}
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.
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<math.h>
Beberapa fungsi matematika yang terdapat dalam library math.h bahasa C yakni:
Fungsi Kegunaan
Sin(x)
Menghitung nilai sinus sudut x yang dinyatakan dalam radian
Cos(x)
Menghitung nilai cosines sudut x yang dinyatakan dalam radian
Tan(x)
Menghitung nilai tangen sudut x yang dinyatakan dalam radian
Asin(x)
Menghitung nilai arcus sinus dari x yang harus bernilai diantara -1 dan 1
Acos(x)
Menghitung nilai arcus cosinus dari x yang harus bernilai diantara -1 dan 1
Atan(x)
Menghitung nilai arcus tangen dari x
Sinh(x)
Cosh(x)
Menghitung nilai cosines hiperbolik dari x
Tanh(x)
Menghitung nilai tangent hiperbolik dari x
Abs(x)
Menghitung nilai mutlak dari x
Log(x)
Menghitung nilai logaritma natural dari x (yaitu ln x)
Log10(x)
Menghitung nilai logaritma basis 10 dari x
Pow(x,y)
Menghitung nilai x pangkat y
Sqrt(x)
Menghitung nilai akar kuadrat dari x
Exp(x)
Menghitung nilai expoen dari x (yaitu ex)
C. HASIL PERCOBAAN Listing program : #include<stdio.h> #include<math.h> main() { float v, y, y0, v0, t, g=9.8; printf("Ketinggian awal : "); scanf("%f", &y0); printf("Kecepatan awal : "); scanf("%f", &v0);
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); }
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.
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).
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<stdio.h> int main()
{ 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<stdio.h> int main()
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<sizeof(tgl_lahir)/sizeof(int);i++) printf("%d\n",*(ptgl+i)); return 0; } Hasil program : Flowchart:
D. KESIMPULAN
Percobaan pointer berlandaskan dengan percobaan-percobaan sebelumnya. Percobaan pointer menekankan pointer yang seringkali tidak diketahui.
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 (one-dimensional array) mewakili bentuk suatu vektor. Array berdimensi dua (two-(one-dimensional array) mewakili bentuk dari suatu matriks atau table. Array berdimensi tiga (three-dimensional 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
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 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.
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
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<stdio.h> 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;
htg[b]++; break; } } if(cek==1) { kar[c]=tmp; htg[c]=1; c++; } } printf("\n"); for(a=0;a<c;a++) {
printf("Frekuensi yang muncul pada karakter %c adalah %2d\n", kar[a], htg[a]); }
}
Hasil program:
8.2 Program menggunakan inisialisasi array berdimensi dua Listing program : #include<stdio.h> 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;
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.
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:
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
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<stdio.h> gets(nama_array): atau #include<stdio.h> 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<stdio.h> Puts(var_string); Atau
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 <string.h> 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 <string.h> strlen(var_string);
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 <string.h> 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 StringMembandingkan 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 :
strcmp(str1, str2);
C. HASIL PERCOBAAN
9.1 Program kalimat palindrome Listing program: #include<stdio.h> #include<conio.h> #include<string.h> 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();
}
9.2 Program mengurutkan nama Listing program: #include<stdio.h> #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<jml;i++) {
printf("\nNama ke-%d : ",i+1); gets(&nama[i][0]);
}
bubble(jml);
printf("\nNama Sesudah Diurutkan: "); for(i=0;i<jml;i++)
{
printf("\nNama ke-%d : %-20s",i+1,&nama[i][0]); } } bubble(n) int n; { char temp; for(i=1;i<=n;i++) { for(j=i;j<n;j++) {
for(l=0;l<20;l++) { if(nama[i-1][l]<nama[j][l]) { break; } 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 :
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
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{
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; };
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.
C. HASIL PERCOBAAN
10.1 Mendefinisikan sebuah struktur Listing program: #include<stdio.h> 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:
10.2 Program array of struct Listing program: #include<stdio.h> #include<math.h> 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);
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");
printf(" Data Nilai Mahasiswa");
printf("\n---\n"); printf("Nama : %s\n",na);
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;
}
10.3 Program pembuatan dan pengaksesan struktur Listing program: #include<stdio.h> 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.bulan, tanggal_lahir.tahun); return 0; } Hasil program:
Flowchart:
10.4 Program penetapan zodiac Listing program: #include<stdio.h> struct zodiak { char nama[11]; int tgl_awal;
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;
}