PEMROGRAMAN I

(1)

by Eko Budi Setiawan, S.Kom Halaman - 1 DIKTAT MATA KULIAH PEMROGRAMAN I

IF

BAB I

PENGENALAN BAHASA C

Pendahuluan

Akar dari bahasa C adalah bahasa BCPL yang dikembangkan oleh Martin Richards pada tahun 1967. Bahasa ini memberikan ide kepada Ken Thompson yang keSmudian 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. 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.

Bahasa C adalah suatu bahasa pemrograman. Bahasa C termasuk sebagai bahasa pemrograman tingkat menengah, maksudnya bahasa C bisa dipelajari dengan lebih mudah karena mudah dimengerti tetapi mempunyai kemampuan yang tinggi.

Bahasa C bisa digunakan untuk merekayasa program untuk segala kebutuhan, baik untuk aplikasi bisnis, matematis atau bahkan game.

Semua bahasa mempunyai kelemahan atau kelebihan sendiri-sendiri. Begitu juga dengan bahasa C. Adapun sebagian kelebihan dari bahasa C adalah sebagai berikut :

a. Banyak memiliki operator untuk mengolah/memanipulasi data.

b. Bahasa C termasuk sebagai bahasa yang terstruktur sehingga program dapat lebih mudah dipahami atau dikembangkan.

c. Bahasa C lebih mudah dimengerti karena lebih mirip kepada bahasa manusia. d. Kecepatan eksekusi tinggi.

e. Mengenal data pointer.

Sedangkan kelemahan dari Bahasa C adalah :

a. Banyaknya operator atau cara penulisan program kadang menimbulkan kebingungan para pemakainya.


(2)

by Eko Budi Setiawan, S.Kom Halaman - 2 b. Perlunya ketelitian dalam penulisan program karena perintah (statement) dalam bahasa C bersifat

case sensitive (huruf kapital dan huruf kecil dibedakan).

Kekurangan-kekurangan tersebut akan banyak terjadi pada awal-awal mempelajari bahasa C. Tetapi setelah sering membuat program atau mempelajarinya maka kesulitan tersebut sedikit demi sedikit akan berkurang.

Proses Kompilasi dan Linking Program C

Proses dari bentuk source program, yaitu program yang ditulis dalam bahasa C hingga menjadi program executable ditunjukkan pada Gambar dibawah ini.

Gambar 1 Proses Kompilasi dari Program C

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 dimaksudnkan 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 kenyataanya, suatu fungsi bisa saja tidak mengandung pernyataan sama sekali. Walaupun fungsi tidak


(3)

by Eko Budi Setiawan, S.Kom Halaman - 3 memiliki pernyataan, kurung kurawal haruslah tetap ada. Sebah kurung kurawal mengisyaratkan awal dan akhir definisi fungsi. Berikut ini adalah struktur dari program C.

Main () {

statemen-statemen; Fungsi Utama

}

Fungsi_fungsi_lain () {

Statemen-statemen; Fungsi lain yang ditulis oleh

programmer }

Bahasa C dikatakan sebagai bahasa pemrograman terstuktur karena strukturnya menggunakan fungsi-fungsi sebagai program-program bagiannya. 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 { diawal fungsi menyatakan awal tubuh fungsi dan sekaligus awal eksekusi program, sedangkan tanda } diakhir fungsi merupakan akhir tubuh fungsi dan sekaligus adalah akhir eksekusi program. Jika program terdiri dari atas lebih dari satu fungsi, fungsi main () biasa ditempatkan pada posisi yang paling atas dalam pendefinisian fungsi. Hal ini hanya merupakankebiasaan. 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

Selamat datang di Teknik Informatika UNIKOM Misalnya, pernyataan yang diperlukan berupa :


(4)

by Eko Budi Setiawan, S.Kom Halaman - 4 Pernyataan diatas berupa pemanggilan fungsi printf() dengan argumen atau parameter berupa stri g. Dala C suatu ko sta ta stri g ditulis de ga diawali da diakhiri ta da petik ga da . 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 khusus. Tanda ini bisa digunakan untuk menyatakan karakter khusus seperti karakter baris-baru ataupun karakter backslash (miring kiri). Jadi karakter seperti \n sebenarnya untuk menyatakan sebuah karakter. Contoh karakter yang ditulis dengan diawali tanda \ adalah :

\ e yataka karakter petik ga da \\ menyatakan karakter backslash \t menyatakan karakter tab

Dalam bentuk yang lebih umum, format printf () pri tf stri g ko trol , daftar argu e ;

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 diantaranya berupa :

%d : untuk menampilkan bilangan bulat (integer)

%f : untuk menampilkan bilangan titik-mengambang (pecahan) %c : untuk menampilkan sebuah karakter

%s : untuk menampilkan sebuah string Contoh :

#include <stdio.h> main ()

{

printf (“No : %d\n”, 10); printf (“Nama : %f\n”,”Wenger”); printf (“Nilai : %f\n”, 80.5); printf (“Huruf : %c\n”,’A’); }


(5)

by Eko Budi Setiawan, S.Kom Halaman - 5 Untuk masuk kedalam lingkungan Turbo C 4.5, ada beberapa cara yang bisa dilakukan, cara yang bisa dilakukan, cara-cara berikut disusun dengan asumsi bahwa pemakai sedang memakai sistem operasi window.

1. Fasilitas Run dari start menu

a. Klik tombol start kemudian pilih menu Run

b. Pada menu Open, ketikan C:\TCWIN45\BIN\TCW.EXE c. Tekan tombol OK,tunggu sampai muncul program C.


(6)

by Eko Budi Setiawan, S.Kom Halaman - 1 DIKTAT MATA KULIAH PEMROGRAMAN I

IF

BAB II

FIRST PROGRAM

Pendahuluan

Untuk membuat program dalam C maka langkah pertama adalah memanggil program C seperti yang telah dijelaskan pada bab I. Tulis source code program berikut pada layar editornya.

/*

Program Ke – 1

Nama File : Lat1.CPP */

//Program Hello #include “stdio.h” #include <conio.h> main ()

{

clrscr();

printf (“ini program saya yang pertama\n”);

printf (“\nSaya Belajar Bahasa C\n Di \”UNIKOM\”\nBandung.”);

getch(); return 0; }

Setelah selesai menulis perintah tersebut simpan program tersebut dengan menekan tombol File -> Save As. Tulis nama file tanpa spasi. Jika telah ditulis tekan tombol Enter atau klik tombol OK. File-file tersebut berekstensi C atau CPP.

Untuk memeriksa apakah program yang telah ditulis itu bisa dimengerti oleh kompiler bahasa C, maka perlu dilakukan langkah Compile dengan cara menekan tombol Alt+F9. Jika masih ada kesalahan, maka akan diperlihatkan dibaris mana kesalahan penulisan program terjadi, perbaikilah program kemudian compile ulang sehingga muncul keterangan bahwa compile berhasil/sukses.


(7)

by Eko Budi Setiawan, S.Kom Halaman - 2 Gambar diatas adalah proses compile program, terlihat informasi jumlah baris, warnings, bahkan errors dari program yang anda buat. Jika program anda tidak bermasalah, maka informasi hasil compile tersebut akan tampak seperti diatas.

Proses compile hanya memeriksa program secara bahasa saja dan belum mengeksekusi/menjalankan programnya. Untuk menjalankan program maka tekan menu Run kemudian pilih sub menu Run atau dengan hotkey Ctrl+F9. Proses Run ini sebenarnya melakukan dua langkah yaitu proses compile dan menjalankan programnya.

Setelah proses run terjadi, maka akan tercipta suatu file yang berekstensi EXE yang mempunyai nama seperti nama file C nya. Suatu file EXE dapat langsung dijalankan disemua komputer walaupun di komputer tersebut tidak terdapat program C.

Program tersebut ketika dijalankan akan menghasilkan tulisan dilayar sebagai berikut :

Keterangan program Lat-1.CPP diatas adalah : Komentar

Pada baris ke-1, ditemukan tanda /* dan pada baris 4 ditemukan tanda */. Kedua tanda tersebut berpasangan yang berguna untuk menuliskan suatu komentar tentang program atau perintah-perintah. Komentar tidak mempengaruhi program karena komentar tidak dijalankan seperti perintah (statement). Komentar dengan menggunakan tanda /* berlaku sampai ditemukan tanda */. Cara lain untuk memberikan komentar adalah dengan memberikan tanda garis miring 2 kali. Komentar dengan tanda ini hanya berlaku pada 1 baris saja. Komentar bersifat opsional untuk mempermudah orang mengetahui fungsi dari suatu program atau suatu algoritma.

#include

Pada aris dite uka peri tah #i lude stdio.h da pada aris terdapat perintah #include <conio.h>. Kedua perintah tersebut digunakan untuk memanggil file header (include file) yang didalamnya terdapat perintah, fungsi atau prototype yang bisa digunakan dalam program yan dibuat. Jika perintah #include ini tidak ditulis, maka komputer tidak mengerti perintah-perintah yang ditulis. Header File

Nama file yang digunakan dalam #include seperti conio.h dan stdio.h, disebut sebagai header file karena ditempatkan di paling atas program. Extention H berarti header. Dalam file header ini,


(8)

by Eko Budi Setiawan, S.Kom Halaman - 3 terdapat fungsi atau prototipe yang bisa digunakan dalam program. Sebuah file header memiliki lebih dari 1 fungsi atau variabel global. File header stdio.h digunakan untuk penanganan input / output standar seperti penulisan ke layar, ke file atau pembacaan data dari keyboard atau file. File header stdio.h digunakan untuk penanganan ke layar seperti pengaturan warna, waktu jeda (delay), suara internal. Masih banyak file header standar selain stdio.h dan conio.h.

Fungsi main ()

Pada baris 8 terdapat pendeklarasian fungsi main(). Fungsi ini adalah suatu fungsi khusus yang akan dieksekusi pertama. Setiap program harus mempunyai fungsi main(). Fungsi main() diawali dengan tanda { yang menyatakan awal dari program dan diakhiri dengan tanda } yang menyatakan akhir dari program.

printf()

printf() adalah suatu fungsi yang berguna untuk menulis pesan ke layar. Pesan yang akan ditulis dalam diapit oleh tanda kutip. Pesan yang tertulis dapat diatur dengan mengatur format dari penulisannya. Fungsi printf() tidak hanya menulis pesan dalam 1 baris saja tetapi bisa lebih. Untuk berpindah baris maka gunakan perintah \n yang bera rti new line (baris baru). Penulisan \n boleh ditempatkan di depan, ditengah atau diakhir. U tuk e uliska ta da kutip aka harus digunakan tanda \ . Keterangan lebih lanjut akan diterangkan dalam bab-bab berikutnya.

Tanda ; (semikolon)

Setiap perintah harus diakhiri dengan tanda ;. Hilangnya tanda ; akan menyebabkan kesalahan kompile.

getch()

getch() adalah suatu fungsi yang berfungsi untuk pembacaan data sebuah karakter, sehingga program akan terdiam sampai pengguna menekan suatu tombol. Fungsi ini berada dalam file header conio.h sehingga perintah #i lude o io.h harus dituliska . Kalau peri tah get h tidak ditulis, maka program akan dikerjakan dengan cepat dan eksekusi tidak dapat terlihat.

return

return adalah perintah yang memberikan nilai kepada fungsinya. Setiap fungsi harus mempunyai nilai kembaliannya (return value).

Note

Jika eksekusi yang dilakukan cepat, untuk melihat hasil akhir dari eksekusi program dapat dilakukan dengan cara menekan Alt-F5 atau dengan memilih menu Window kemudian pilih sub menu User Screen.


(9)

by Eko Budi Setiawan, S.Kom Halaman - 4

Contoh Program

/*

Program Ke - 2

Nama File : Lat2.CPP */ //Program Data_Diri #include <stdio.h> #include <conio.h> main () { clrscr();

printf ("Nama Lengkap : Turbo C\n"); printf ("Nama Panggilan : C\n");

printf ("Tempat, Tanggal Lahir : Bandung, 1 Januari 1991\n"); printf ("\nSaya Belajar Bahasa C\nDi \"UNIKOM\" Bandung\n"); printf("Untuk membuka Turbo C silahkan run

C:\\TCWIN45\\BIN\\TCW.EXE\n");

printf ("Nilai : %d\n", 10); printf ("Indeks : %c\n",'A'); getch();

return 0; }

/*Program aritmetika

Nama File :aritmatika.cpp */ #include <stdio.h> #include <conio.h> void main() { clrscr();

printf("Nilai dari 9+4 adalah=%i\n",9+4); printf("Nilai dari 9*4 adalah=%i\n",9*4); printf("Nilai dari 9-4 adalah=%i\n",9-4); printf("Nilai dari 9-10 adalah=%i\n",9-10); printf("Nilai dari 9-(-2) adalah=%i\n",9-(-2)); getch();

}

/*

Program operator

Nama File: operator.cpp */

#include <stdio.h> #include <conio.h> main()

{

int x=20, y=8,z; float w;

clrscr();

printf("X = %d dan Y = %d\n",x,y); w=float(x)/y;

printf("X / Y = %3.1f\n",w); printf("X %% Y = %d\n",x%y); x+=2;


(10)

by Eko Budi Setiawan, S.Kom Halaman - 5 x++;

printf("Nilai X setelah X++ : %i\n",x); printf("Nilai Y : %d\n",y++);

printf("Nilai Y setelahnya : %d\n",y); z=++x;

printf("Nilai Z : %d\n",z); getch();

return 0; }

/*

program berhitung nama file :hitung.cpp */

#include <stdio.h> #include <conio.h> main()

{ clrscr();

int B,C,D,E; float A,Z;

printf("Masukkan nilai B : ");scanf("%d",&B); printf("Masukkan nilai C : ");scanf("%d",&C); printf("Masukkan nilai D : ");scanf("%d",&D); printf("Masukkan nilai E : ");scanf("%d",&E); Z=float(C)/D;

printf("Nilai C/D adalah :%f\n",Z); A=B+Z+E;

printf("Hasil perhitungan A=B+C/D+E : %f",A); getch();

return 0; }


(11)

by Eko Budi Setiawan, S.Kom Halaman - 6 Tugas

1. Printout tampilan program dari keempat source code diatas !

2. Cetak kalimat dalam beberapa baris, dengan tampilan sebagai berikut :

Hello... .. saya turbo

... do you know me ? 1

..2 ...3

3. Menghitung penjumlahan 1024+4096 dan mencetak hasilnya

4. Mengisi 2 variabel int, menjumlahkan kedua isi variabel tersebut dan cetak hasilnya !

5. Mengisi nilai sebuah variabel float, mengalikan isi variabel tersebut dengan 50 dan cetak hasilnya 6. Berapakah nilai jawaban yang ditampilkan oleh program dibawah ini :

#include <stdio.h> #include <conio.h> main ()

{

clrscr();

int jawab, hasil; jawab=100;

hasil=jawab-10;

printf ("jawabannya adalah %d\n",hasil+6); getch();

return 0; }

7. Apakah output dari program dibawah ini

#include <stdio.h> #include <conio.h> main ()

{

clrscr();

int value1, value2, sum; value1=35;

value2=18;

sum=value1+value2;

printf("Jumlah dari %d dan %d adalah %d\n", value1, value2,sum); getch();

return 0; }

8. Program dibawah ini tidak berhasil dicompile karena masih teradapat beberapa kesalahan. Temukan kesalahannya. Selanjutnya tampilkan keluaran setelah program ini berhasi dijalankan.

main () {

int jumlah;

//PERHITUNGAN HASIL jumlah=25+37-19;


(12)

by Eko Budi Setiawan, S.Kom Halaman - 7 //TAMPILKAN HASIL

Printf(“Berapa hasil perhitungan dari 35+37-19 ?\n);

Printf(“Jawabannya adalah %d\n” jumlah);

}

9. Program dibawah ini seharusnya menampilkan keluaran sebagai berikut : c * c = 25,000000

Namun, belum berhasil karena masih ada beberapa kesalahan. Temukan kesalahan-kesalahan dalam program tersebut !

#include <Studio.h> Main ()

{

float a, b, c; a=3;

b=4.0; c=a*a+b*b

printf(“c * c = %d, c); getch();

return 0; }

Jawaban di buat berupa source code dan print out tampilan programnya, beserta kesimpulan hasil praktikum..

Kirim jawaban anda (*.doc) via e-mail ke ekobudisetiawan@ymail.com

Subject : Nama-NIM-Kelas-TC1


(13)

by Eko Budi Setiawan, S.Kom Halaman - 1 DIKTAT MATA KULIAH PEMROGRAMAN I

IF

BAB IV

INPUT DAN OUTPUT

Input Data

Umumnya suatu program mempunyai proses pemasukan data. Dalam program berbahasa C, pemasukan data dapat dilakukan dengan perintah scanf. Fungsi scanf merupakan fungsi yang dapat digunakan untuk memasukan berbagai jenis data, tergantung dengan format penentunya. Format-format penentu tipe data yang umum dipakai adalah :

Format Kegunaan

%c Digunakan untuk pemasukan data bertipe char %i atau %d Digunakan untuk pemasukan data bertipe int, char.

%f Digunakan untuk pemasukan data berupa bi;angan pecahan

%u Digunakan untuk pemasukan data berupa unsigned int atau unsigned char

%s Digunakan untuk pemasukan data berupa string

Bentuk umum penggunaan fungsi scanf adalah

scanf (“format”,&namavariabel);

Contoh :

int i,jam,menit,detik; unsigned int j;

float f;

char nama[60]; scanf(“%i”,&i); scanf(“%u”,&j); scanf(“%f”,&f);

scanf(“%i %i %i”,&jam,&menit,&detik); scanf(“%s”,nama);


(14)

by Eko Budi Setiawan, S.Kom Halaman - 2

Fungsi scanf() kurang begitu bagus jika dipakai untuk pembacaan string. Karena data yang tersimpan adalah hanya sampai menemukan spasi, maksudnya jika kita mengisikan 2 buah kata dengan pemisah spasi, maka data yang masuk ke variabel tersebut hanyalah kata yang pertama. Oleh karena itu, pembacaan data bertipe string biasanya menggunakan

perintah gets() yang bentuk umumnya adalah :

gets(namavariabel);

Contoh :

gets(nama); gets(alamat);

Untuk pembacaan data bertipe char, selain dengan menggunakan scanf() dengan format %c, bisa juga dengan menggunakan fungsi getch() atau getche(). Perbedaan dari getch() dan getche() adalah getch() digunakan untuk membaca data bertipe char tanpa menampilkannya di layar, dan getche() digunakan untuk membaca data bertipe char dengan menampilkan data karakternya di layar.

Contoh :

#include <stdio.h> #include <conio.h> main()

{

char a,b;

printf(“Masukan Huruf pertama : “); a=getch();

printf(“Masukan Huruf kedua : “); b=getche();

printf(“Data yang dimasukan adalah %c dan %d\n”,a,b);

getch(); return 0; }


(15)

by Eko Budi Setiawan, S.Kom Halaman - 3

Output Data

Untuk output data, perintah yang bisa dipakai adalah printf(). Untuk menampilkan data dengan fungsi printf(), kita harus mengatur format tampilannya, dengan format-format penentu. Untuk menentukan panjang medan yang disediakan bagi tampilan data, maka sesudah tanda % dalam penentu format dapat disisipi dengan bilangan bulat yang menyatakan panjang medan.

Untuk data yang berupa bilangan bulat, misalnya pada :

printf (“Abad %4d”, 20);

Ket :

%4d menyatakan medan untuk menampilkan bilangan 20 adalah sepanjang 4 karakter.

printf (“Abad %4d”, 20);

A b a d 2 0

Untuk data yang berupa bilangan real, spesifikasi medannya berupa

m.n

Ket :

m = panjang medan n = jumlah digit pecahan

Contoh :

printf (“Harga:Rp %8.2 f\n”, 500.0);

%8.2f menyatakan panjang medan dari bilangan real yang akan ditampilkan adalah 8 karakter dengan jumlah digit pecahan 2 buah.

printf (“Harga:Rp %8.2 f\n”, 500.0);


(16)

by Eko Budi Setiawan, S.Kom Halaman - 4

Jika hanya jumlah digit pecahan yang perlu ditentukan, panjang medan tak perlu disertakan, misal :

printf (“%.2f\n”, 600.0);

printf (“%.2f\n”, 7500.25);

hasilnya :

600.00 7500.25

Untuk data yang berupa string, contoh :

printf (“%12s”, “Bahasa C”);

maka akan ditampilkan sebagai berikut

B a h a s a C

Tampak dalam berbagai jenis data diatas, penentu format yang mengandung panjang medan, secara default akan menampilkan data dalam bentuk rata kanan terhadap panjang medan yang diberikan. Untuk data string yang biasanya dikehendaki untuk ditampilkan dalam bentuk rata kiri, maka sesudah tanda % pada penentu format %s perlu disisipkan tanda – (minus), contoh :

printf (“%-12s”, “Bahasa C”);

menyatakan bahwa string akan ditampilkan dalam medan dengan panjang 12 karakter dan diatur rata kiri. Sehingga tampilan diatas berubah menjadi :


(17)

by Eko Budi Setiawan, S.Kom Halaman - 5

Untuk lebih jelas perhatikan program di bawah ini.

#include <stdio.h> #include <conio.h> main()

{

int a=25000;

unsigned int b=50000; float c=12345.678;

char nama[50]="Universitas Komputer Indonesia"; char alamat[10]="Bandung";

clrscr();

printf("Penampilan data tanpa di format\n"); printf("Nilai a : %d\n",a);

printf("Nilai b : %u\n",b); printf("Nilai c : %f\n",c);

printf("String : %s %s\n",nama,alamat);//rata kanan printf("\nPenampilan data setelah di format\n"); printf("\n");

printf("Nilai a : %8d\n",a); printf("Nilai b : %8u\n",b); printf("Nilai c : %11.2f\n",c);

printf("String 1: %40s %10s\n",nama,alamat);//rata kanan printf("String 2: %-40s %-10s\n",nama,alamat);//rata kiri getch();

return 0; }


(18)

by Eko Budi Setiawan, S.Kom Halaman - 6

Contoh Kasus :

Di suatu perusahaan, data penggajian dihitung dengan ketentuan sebagai berikut : Gaji Pokok : Rp. 5000000

Gaji Lembur/jam : Rp. 5000

Total Gaji Lembur : Lama Lembur * Gaji Lembur/jam Gaji Kotor : Gaji Pokok + Total Gaji Lembur

Pajak : 10%

Gaji Bersih : Gaji Kotor - Pajak

Data yang diinputkan adalah : Nama Pegawai, Lama Lembur.

Program ke-1 (tanpa memformat tampilan data) #include <stdio.h>

#include <conio.h> main()

{

int jamlembur;

long int gajipokok=500000,gajikotor,totalgajilembur; float pajak,gajibersih;

char nama[50];

printf("Nama Pegawai : ");gets(nama);

printf("Lama Lembur : ");scanf("%i",&jamlembur); totalgajilembur=(long int)5000*jamlembur;

gajikotor=gajipokok+totalgajilembur; pajak=0.1*gajikotor;

gajibersih=gajikotor-pajak; clrscr();

printf("Hasil Perhitungan\n"); printf("Nama Pegawai : %s\n",nama);

printf("Gaji Pokok : Rp. %li\n",gajipokok); printf("Lama Lembur : %i jam\n",jamlembur);

printf("Total Gaji Lembur : Rp. %li\n",totalgajilembur); printf("Gaji Kotor : Rp. %li\n",gajikotor);

printf("Pajak (10%%) : Rp. %f\n",pajak); printf("Gaji Bersih : Rp. %f\n",gajibersih); getch();

return 0; }


(19)

by Eko Budi Setiawan, S.Kom Halaman - 7

Program ke-2 (dengan memformat tampilan data) #include <stdio.h>

#include <conio.h> main()

{

int jamlembur;

long int gajipokok=500000,gajikotor,totalgajilembur; float pajak,gajibersih;

char nama[50]; clrscr();

printf("Nama Pegawai : ");gets(nama);

printf("Lama Lembur : ");scanf("%i",&jamlembur); totalgajilembur=(long int)5000*jamlembur;

gajikotor=gajipokok+totalgajilembur; pajak=0.1*gajikotor;

gajibersih=gajikotor-pajak; clrscr();

printf("Hasil Perhitungan\n");

printf("Nama Pegawai : %s\n",nama);

printf("Gaji Pokok : Rp. %10li\n",gajipokok); printf("Lama Lembur : %i jam\n",jamlembur);

printf("Total Gaji Lembur : Rp. %10li\n",totalgajilembur); printf("Gaji Kotor : Rp. %10li\n",gajikotor);

printf("Pajak (10%%) : Rp. %10.0f\n",pajak); printf("Gaji Bersih : Rp. %10.0f\n",gajibersih); getch();

return 0; }


(20)

(21)

by Eko Budi Setiawan, S.Kom Halaman - 9

TUGAS !

1. Contoh Kasus :

Di suatu perusahaan, data penggajian dihitung dengan ketentuan sebagai berikut : Gaji Pokok : Rp. 5.000.000

Gaji Lembur/jam : Rp. 5.000

Total Gaji Lembur : Lama Lembur * Gaji Lembur/jam Gaji Kotor : Gaji Pokok + Total Gaji Lembur

Pajak : 10%

Gaji Bersih : Gaji Kotor - Pajak

Data yang diinputkan adalah : Nama Pegawai, Lama Lembur.

Buat program untuk menghitung besarnya gaji bersih dengan ketentuan diatas,,

2. Buat program untuk menghitung Luas dan Keliling Bujur Sangkar dengan panjang sisi diinputkan dari keyboard.

3. Buatlah program untuk mengkonversi suhu dari Celcius ke Fahrenheit dengan rumus F = C * 1.8+ 32

Input : Suhu dalam celcius Output : Suhu dalam Fahrenheit


(22)

by Eko Budi Setiawan, S.Kom Halaman - 1 DIKTAT MATA KULIAH PEMROGRAMAN I

IF

BAB IX

STRING & MATH

Tujuan

1. Menjelaskan tentang konsep string 2. Menjelaskan operasi I/O

3. Menjelaskan cara mengkases elemen string 4. Menjelaskan berbagai fungsi mengenai string

Dasar Te ori

String merupakan bentuk data yang biasa dipakai dalam bahasa pemrograman keperluan menampung dan memanipulasi data teks. Misalnya untuk menampung (menyimpan) suatu kalimat. Pada bahasa pemrograman C, string bukanlah sebagai tipe data tersendiri, melainkan hanya jenis khusus dari array. String ditulis dengan diawali dan diakhiri tanda petik ganda dan nilai string selalu diakhiri dengan tanda NULL (\0).

Misal ya : ABCDE

1. Konstanta String

Ko sta ta ABCDE disimpan dalam memory secara berurutan, dengan komposisi sebagai berikut :

Setiap karakter akan menempati memory sebesar 1 byte. Byte terakhir secara otomatis akan berisi karakter NULL (\0).


(23)

by Eko Budi Setiawan, S.Kom Halaman - 2

2. Variabel String

Variabel string adalah variabel yang digunakan untuk menyimpan string. Misal :

char nama[15];

merupakan instruksi untuk mendeklarasikan variabel string dengan panjang maksimal 15 karakter.

Inisialisa si Stri ng

Cara untuk menginisialisasi string, dapat dilakukan dengan salah satu cara dibawah ini :

char nama[]=”ini adalah string”;

char nama2[]={„i‟,‟n‟,‟i‟,‟‟,‟s‟,‟t‟,‟r‟,‟i‟,‟n‟,‟g‟,‟\0‟};

char nama3[5]=”ACER”;

char nama4[5]={„A‟,‟C‟,‟E‟,‟R‟};

Untuk mengisi suatu string caranya adalah :

stcpy (nama, “Ini string”); nama5=”Ini juga string”;

Coba diperhatikan, untuk string yang dideklarasikan sebagai sebuah array karakter, pengisian nilainya adalah dengan menggunakan suatu perintah strcpy yang berguna untuk mengisikan suatu string ke string lain. Pengisiannya tidak boleh langsung. Tetapi jika string dideklarasikan sebagai sebuah pointer karakter, maka pengisiannya boleh diisikan secara langsung.

Input D ata String dari Ke yboard

Untuk memasukan data string kedalam suatu variabel dapat dilakukan dengan 2 jenis perintah/fungsi :

a.gets (nama_array)


(24)

by Eko Budi Setiawan, S.Kom Halaman - 3

Keterangan :

- nama_array adalah variabel bertipe array_of_char

- Pada isntruksi scanf(), didepan nama_array boleh diberikan operator &, boleh tidak.

- Prototype gets() ada pada file stdio.h

- gets() akan membaca seluruh karakter yang diketik sampai penekanan ENTER. Tidak ada pengecekan terhadap batasan dari array. Jika string yang dimasukan melebihi ukuran array, sisa string berikutnya akan ditempatkan sesudah bagian terakhir dari array. Hal ini akan menimbulkan kejadian yang tidak diinginkan, seperti berubahnya isi variabel.

Output Data Stri ng ke Layar

Untuk menampilkan isi variabel string ke layar, dapat dilakukan dengan 2 jenis perintah / fungsi :

a.puts(var_string);

b.printf(“%s”,var_string);

yang perlu diperhatikan adalah :

- var_string adalah berupa array of char

- puts()se ara oto atis e a ahka karakter \ ’ di akhir stri g

Fungsi-f ungsi Str ing

Merupakan kumpulan fungsi-fungsi pustaka string yang berada pada file string.hgets dan puts

Fungsi gets digunakan untuk membaca data berupa string dari keyboard. Fungsi puts digunakan untuk menampilkan suatu string ke layar (monitor)

#include <stdio.h> main()

{


(25)

by Eko Budi Setiawan, S.Kom Halaman - 4 printf("Masukan Sebuah string:");gets(string);

puts(string); return 0; }

strlen

Fungsi strlen digunakan untuk mengetahui panjang suatu string.

Contoh program :

#include <stdio.h> #include <string.h> int main(void)

{

char string[80]; int panjang;

printf("Masukan String: ");gets(string); panjang=strlen(string);

printf("Panjang String adalah %i karakter\n",panjang); return 0;

}

strcpy dan strncpy

Fungsi strcpy adalah untuk menyalin isi suatu string ke string lain.

Fungsi strncpy berfungsi untuk menyalin isi suatu string ke string lain sebanyak n karakter.


(26)

by Eko Budi Setiawan, S.Kom Halaman - 5 Contoh program :

#include <stdio.h> #include <conio.h> #include <string.h> main()

{

char string[31];

char str1[31] = "Universitas Komputer Indonesia"; char str2[31];

strcpy(string, str1);

printf("Isi String : %s\n", string); strncpy(str2,str1,15);

str2[15]='\0';// menutup string printf("Isi Str2 : %s",str2); getch();

return 0; }

strcmp dan strncmp

Fungsi strcmp digunakan untuk membandingkan 2 buah string secara case sensitive Fungsi strncmp digunakan untuk membandingkan 2 buah string sebanyak n buah karakter secara case sensitive.

Fungsi strcmpi digunakan untuk membandingkan 2 buah string secara insensitive

Fungsi strncmpi digunakan untuk membandingkan 2 buah string sebanyak n buah karakter secara insensitive.

Semua fungsi tersebut akan menghasilkan sebuah nilai integer yang mempunyai ketentuan :

- Nilai return akan lebih dari 0 (>0) ketika string1 lebih besar dari string2 - Nilai terurn akan sama dengan 0 (==0) ketika string1 sama dengan string2


(27)

by Eko Budi Setiawan, S.Kom Halaman - 6

- Nilai return akan kurang dari 0 (<0) ketika string1 lebih kecil dari string2 Contoh Program

#include <stdio.h> #include <conio.h> #include <string.h> main()

{

char str1[5]="ABCD",str2[5]="abcd",str3[5]="BCDE",str4[5]="BCda"; int hasil;

hasil=strcmp(str1,str2); printf("Hasil STRCMP : \n");

if(hasil==0) printf("String1 sama dengan String2\n"); else if(hasil>0) printf("String1 lebih besar dari String2\n"); else if(hasil<0) printf("String1 lebih kecil dari String2\n"); hasil=strcmpi(str1,str2);

printf("\nHasil STRCMPI : \n");

if(hasil==0) printf("String1 sama dengan String2\n"); else if(hasil>0) printf("String1 lebih besar dari String2\n"); else if(hasil<0) printf("String1 lebih kecil dari String2\n"); hasil=strncmp(str3,str4,3);

printf("\nHasil STRNCMP : \n");

if(hasil==0) printf("String3 sama dengan String4\n"); else if(hasil>0) printf("String3 lebih besar dari String4\n"); else if(hasil<0) printf("String3 lebih kecil dari String4\n"); hasil=strncmpi(str3,str4,3);

printf("\nHasil STRNCMPI : \n");

if(hasil==0) printf("String3 sama dengan String4\n"); else if(hasil>0) printf("String3 lebih besar dari String4\n"); else if(hasil<0) printf("String3 lebih kecil dari String4\n"); getch();

return 0; }


(28)

by Eko Budi Setiawan, S.Kom Halaman - 7  strcat dan strncat

Fungsi strcat adalah untuk menggabungkan 2 buah string

Fungsi strncat berfungsi untuk menggabungkan 2 buah string sebanyak n karakter

#include <stdio.h> #include <conio.h> #include <string.h> main()

{

char str1[80];

char str2[15]="Universitas ";

char str3[20]="Komputer Indonesia"; clrscr();

strcpy(str1,str2); strcat(str1,str3);

printf("Hasil penggabungan dengan STRCAT : %s\n",str1); strcpy(str1,str2);

strncat(str1,str3,8);

printf("Hasil penggabungan dengan STRNCAT : %s\n",str1); getch();

return 0; }

strlwr dan strupr

Fungsi strlwr berguna untuk mengubah isi string menjadi huruf kecil. Fungsi strupr berguna untuk mengubah isi string menjadi kapital


(29)

by Eko Budi Setiawan, S.Kom Halaman - 8 #include <stdio.h>

#include <conio.h> #include <string.h> main()

{

char str1[80]="Universitas Komputer Indonesia"; clrscr();

printf("Normal : %s\n",str1); strupr(str1);

printf("UpperCase : %s\n",str1); strlwr(str1);

printf("LowerCase : %s\n",str1); getch();

return 0; }

strrev

Fungsi strrev berguna untuk membalikan urutan string (reverse) Contoh program :

#include <stdio.h> #include <conio.h> #include <string.h> main()

{

char str1[80]="Universitas Komputer Indonesia"; clrscr();

printf("Normal : %s\n",str1); strrev(str1);

printf("Reverse : %s\n",str1); getch();


(30)

by Eko Budi Setiawan, S.Kom Halaman - 9 }

strset dan strnset

Fungsi strset berguna untuk mengganti isi suatu string dengan suatu karakter tertentu

Fungsi strnset berguna untuk mengganti isi suatu strin fdengan suatu karakter tertentu sebanyak n buah data.

Contoh program :

#include <stdio.h> #include <conio.h> #include <string.h> main()

{

char str1[31]="Universitas Komputer Indonesia"; clrscr();

strnset(str1,'A',12);

printf("Setelah strnset 12 : %s\n",str1); strset(str1,'x');

printf("Setelah strset : %s\n",str1); getch();

return 0; }

gotoxy

#include <stdio.h> main()

{

gotoxy(1,1);printf("Halo\n"); gotoxy(2,2);printf("Selamat"); gotoxy(3,4);printf("belajar"); gotoxy(6,5);printf("di UNIKOM"); }


(31)

by Eko Budi Setiawan, S.Kom Halaman - 10 Math

Dibawah ini akan diberikan beberapa fungsi dasar penggunakan fungsi matematika yang sering digunakan. Fu gsi ath i i e ggu aka pustaka dari ath.h

sqrt

sqrt digunakan untuk menghitung akar dari suatu bilangan  sin, cos, tan

digunakan dalam perhitungan trigonometri  pow

digunakan untuk menghitung pangkat

#include <stdio.h> #include <conio.h> #include <math.h> main()

{

float h_sin,h_cos,h_tan; int sudut=30;

int x,y;

float akar,pangkat; x=3;

y=4;

h_sin=sin(sudut*M_PI/180); h_cos=cos(sudut*M_PI/180); h_tan=tan(sudut*M_PI/180); akar=sqrt(y);

pangkat=pow(x,y);

printf("Sin %i adalah = %.3f",sudut,h_sin); printf("\nCos %i adalah = %.3f",sudut,h_cos); printf("\nTan %i adalah = %.3f",sudut,h_tan); printf("\n");

printf("\nAkar dari %i adalah = %g",y,akar);

printf("\n%i pangkat %i adalah = %g",x,y,pangkat); getch();

return 0; }


(32)

by Eko Budi Setiawan, S.Kom Halaman - 1 DIKTAT MATA KULIAH PEMROGRAMAN I

IF

BAB V

PENGAMBILAN KEPUTUSAN

Tujuan

1. Menjelaskan tentang operator kondisi (operator relasi dan logika) 2. Menjelaskan penggunaan pernyataan if

3. Menjelaskan penggunaan pernyataan if – else 4. Menjelaskan penggunaan if dalam if

5. Menjelaskan penggunaan pernyataan else-if 6. Menjelaskan penggunaan pernyataan switch

Dasar Teori

Pengambilan keputusan diperlukan jika ada dua atau lebih kondisi yang harus dipilih salah satu. Pernyataan-pernyataan yang dapat digunakan dalam pengamblan keputusan adalah :

a. Pernyataan if b. Pernyataan if-else c. Pernyataan switch

Pernyataan-pernyataan diatas memerlukan suatu kondisi  dibentuk dengan operator relasi dan/atau operator logika.

1. Operator Relasi


(33)

by Eko Budi Setiawan, S.Kom Halaman - 2

Contoh :

2. Operator Logika

Bentuk operator logika adalah :

Prioritas dalam pengambilan keputusan untuk operator logika dan relasi :

Operator-operator yang biasa digunakan dalam operasi logika, dapat dilihat ditabel di bawah ini :


(34)

by Eko Budi Setiawan, S.Kom Halaman - 3

Pernyataan if

Syntax :

Penjelasan :

 Jika kondisi benar, maka pernyataan dilakukan

 Pernyataan bisa satu statement atau beberapa statement

 Jika per ataa lebih dari satu,gu aka ta da { da } u tuk per ataa -pernyataan itu

Pernyataan if-else

Syntax

Penjelasan

Jika kondisi benar maka pernyataan 1 dilakukan Jika kondisi salah maka pernyataan 2 dilakukan


(35)

by Eko Budi Setiawan, S.Kom Halaman - 4

Untuk lebih jelasnya, perhatikan perintah berikut : #include <conio.h>

#include <stdio.h> main()

{

int Nilai;

printf("Nilai : ");scanf("%i",&Nilai); if(Nilai>=50)

printf("Selamat Anda Lulus."); else

printf("Maaf,, Anda Tidak Lulus."); getch();

return 0; }

Perintah diatas hanya mempunyai ke u gki a aitu ketera ga “ela at A da Lulus”

jika ilai lebih besar dari atau sa a de ga 5 da ketera ga Maaf,, A da Tidak Lulus”, ketika

nilai yang diinputkan lebih kecil dari 50.

Jika perintah yang akan dieksekusi ketika kondisi tercapai lebih dari 1 perintah, maka perintah-perintah tersebut harus diblok dengan tanda kurung kurawal { }. Contoh :

#include <stdio.h> #include <conio.h> main()

{

int Nilai;

printf("Nilai : ");scanf("%i",&Nilai); if(Nilai>=50)

{

printf("Anda Hebat!\n");

printf("Selamat Anda Lulus."); }

else {

printf("Maaf. Anda Tidak Lulus.");

printf("Perbaiki semester depan yah!."); }

getch(); return 0; }

Perhatikan juga contoh program dibawah ini : #include <stdio.h>

#include <conio.h> main()

{

int a,b;

printf("Masukan A : ");scanf("%i",&a); printf("Masukan B : ");scanf("%i",&b); if(a==b)


(36)

by Eko Budi Setiawan, S.Kom Halaman - 5 else

if(a>b)

printf("Isi Variabel A lebih besar dari B"); else

if(a<b)

printf("Isi Variabel A lebih kecil dari B"); getch();

return 0; }

Program diatas akan meminta anda untuk memasukan nilai variabel A dan B, kemudian program akan memeriksa apakah variabel A sama dengan B, atau A lebih besar dari B, dan A lebih kecil dari B.

Contoh Kasus :

Disebuah universitas penilaian yang dipakai adalah : Nilai Akhir = 20 % * tugas + 30 % * uts + 50 % * uas

Diluar nilai diatas, maka index adalah X (index tidak diketahui). Data yang diinputkan adalah : tugas, uts, uas.

#include <stdio.h> #include <conio.h> main()

{

int tugas,uts,uas; float nilaiakhir; char index;

printf("Nilai Tugas : ");scanf("%i",&tugas); printf("Nilai UTS : ");scanf("%i",&uts); printf("Nilai UAS : ");scanf("%i",&uas); nilaiakhir=0.2*tugas+0.3*uts+0.5*uas;

printf("Nilai Akhir : %6.2f\n",nilaiakhir); if(nilaiakhir>=80)

index='A'; else

if(nilaiakhir>=68) index='B';

else

if(nilaiakhir>=56) index='C';

else


(37)

by Eko Budi Setiawan, S.Kom Halaman - 6 index='D';

else

if(nilaiakhir>=0) index='E'; else

index='X';

printf("Index : %c\n",index); getch();

return 0; }

Perintah switch

case - default

Selain perintah if – else, perintah yang digunakan untuk percabangan adalah switch – case. Bentuk dasar dari perintah tersebut adalah :

switch(ekspresi) {

case kondisi1:perintah1;break; case kondisi2:perintah2:break; default : perintah3;

}

Cara kerja perintah diatas adalah : Jika ekspresi sa a de ga ko disi , maka perintah 1 akan dieksekusi dan kemudian keluar dari switch, dan jika ekspresi sama dengan kondisi2 maka perinta 2 yang akan dieksekusi dan kemudian keluar dari switch, dan jika tidak 1 kondisi pun yang sama dengan ekspresi maka perintah 3 (perintah default) yang akan dieksekusi. Perintah default kalau tidak diperlukan bisa dihilangkan.

Untuk lebih jelas, perhatikan perintah dibawah ini. switch (index)

{

case 'A':printf("Keterangan : Bagus Sekali\n");break; case 'B':printf("Keterangan : Bagus\n");break;

case 'C':printf("Keterangan : Cukup\n");break; case 'D':printf("Keterangan : Kurang\n");break;

case 'E':printf("Keterangan : Kurang Sekali\n");break; default :printf("Keterangan : Index Tak Diketahui\n"); }

Ketera ga progra di atas adalah jika i de = A aka ketera ga Bagus Sekali, jika

i de = B aka ketera ga Bagus, jika i de = C aka ketera ga Cukup, jika i de = D aka ketera ga Kura g, jika i de = E aka ketera ga Kurang Sekali, dan jika index bukan A – E, maka keterangan adalah Index Tidak Diketahui.


(38)

by Eko Budi Setiawan, S.Kom Halaman - 7

Pernyataan if-else dengan banyak kondisi

Jika kondisi yang harus diperiksa lebih dari 1 kondisi, maka hanya if-else lah yang bisa dipakai. Operator-operator logika yang dipakai adalah operator && (and), dan operator || (or). Contoh :

if((index=='A')||(index=='B')||(index=='C')) printf("Selamat Anda Lulus");

else

if((index=='D')||(index=='E'))

printf("Anda Tidak Lulus. Lebih giat lagi belajar!"); Perintah di atas akan menampilkan string “Selamat Anda Lulus” ketika index

berisi A, B atau C, dan akan menampilkan keterangan “Anda Tidak Lulus. Lebih giat lagi

belajar!” ketika index berisi D atau E.

Untuk lebih jelas, buatlah program untuk mengatasi kasus dibawah ini. Di sebuah perusahaan bus, tabel harga dapat dilihat dalam tabel dibawah ini.

KELAS

EKSEKUTIF (1) BISNIS (2) EKONOMI (3)

JUR

USAN

JAKARTA (1) 70000 40000 10000 YOGYA (2) 80000 50000 20000 SURABAYA (3) 90000 60000 30000

Karena sekarang masa promosi, maka khusus untuk surabaya-eksekutif dan yogya-ekonomi mendapatkan diskon sebesar 10 %. Buatlah program dengan data yang dimasukan adalah jenis kelas, tujuan dan banyak tiket yang dibeli. Data yang ingin ditampilkan adalah harga tiket dan total tiket, diskon dan besar pembayaran.


(39)

by Eko Budi Setiawan, S.Kom Halaman - 8 Pilih Jurusan :

1. Jakarta 2. Yogya 3. Surabaya

Jurusan yang anda pilih : 2 [input] Pilih Kelas :

1. Eksekutif 2. Bisnis 3. Ekonomi

Kelas yang anda pilih : 3 [input] Banyak Tiket : 5 [input]

Harga Tiket : Rp. 20000 [output] Total Tiket : Rp. 100000 [output] Diskon : Rp. 10000 [output]

Bayar : Rp. 90000 [output] #include <stdio.h>

#include <conio.h> main()

{

int kodejurusan,kodekelas,banyaktiket; long int hargatiket,total;

float diskon,bayar;

printf("Pilih Jurusan :\n"); printf("---\n");

printf("1. Jakarta\n2. Yogya\n3. Surabaya\n"); printf("---\n");

printf("Jurusan yang dipilih : ");scanf("%i",&kodejurusan); printf("Pilih Kelas :\n");

printf("---\n");

printf("1. Eksekutif\n2. Bisnis\n3. Ekonomi\n"); printf("---\n");

printf("Kelas yang dipilih : ");scanf("%i",&kodekelas); printf("Banyak Tiket : ");scanf("%i",&banyaktiket); if((kodejurusan==1)&&(kodekelas==1))

hargatiket=70000; else

if((kodejurusan==1)&&(kodekelas==2)) hargatiket=40000;

else

if((kodejurusan==1)&&(kodekelas==3)) hargatiket=10000;


(40)

by Eko Budi Setiawan, S.Kom Halaman - 9 if(kodejurusan==2)

{

if(kodekelas==1) hargatiket=80000; else if(kodekelas==2) hargatiket=50000; else if(kodekelas==3) hargatiket=20000; }

else

if(kodejurusan==3) {

switch (kodekelas) {

case 1:hargatiket=90000;break; case 2:hargatiket=60000;break; case 3:hargatiket=30000;

} }

printf("Harga Tiket : Rp. %li\n",hargatiket); total=banyaktiket*hargatiket;

printf("Total Tiket : Rp. %li\n",total); if(((kodejurusan==3)&&(kodekelas==1))|| ((kodejurusan==2)&&(kodekelas==3))) diskon=0.1*total;

else diskon=0;

printf("Diskon 10%% : Rp. %.0f\n",diskon); bayar=total-diskon;

printf("Bayar : Rp. %.0f\n",bayar); getch();

return 0; }


(41)

by Eko Budi Setiawan, S.Kom Halaman - 10

TUGAS !

1. Buat program untuk membandingkan 2 buah bilangan, kemudian tentukan bilangan yang terbesar dari kedua bilangan tersebut.

Contoh :

Bilangan yang pertama = 5 Bilangan yang kedua = 2 Output

Bilangan yang terbesar adalah 5

2. Buat program untuk menginputkan sebuah bilangan, keudian cetak layar ke bilangan tersebut dan beri komentar apakah bilangan tersebut ganjil atau genap.

Contoh :

Input = 15

Output = Bilangan yang diinputkan adalah 15

Bilangan tersebut adalah bilangan ganjil

3. Dengan menggunakan pernyataan else – if, buatlah program kalkulator sederhana untuk mendapatkan tampilan hasil sebagai berikut :

Masukan bilangan pertama : 5

Masukan bilangan kedua : 3

Menu Matematika

=============================== 1. Penjumlahan

2. Pengurangan 3. Pembagian 4. Perkalian

Masukan menu pilihan anda : 4 Hasil Operasi dari 5 x 3 adalah = 15 ===============================

Nilai Tambah : program bisa mengecek pembagian dengan nol, yaitu jika bilangan kedua adalah nol, maka tidak dilakukan proses pembagian, namun ditampilkan pesan kesalahannya (division by zero)

Note Jawaban di buat berupa source code dan print out tampilan programnya, beserta kesimpulan hasil praktikum..

Kirim jawaban anda (*.doc) via e-mail ke ekobudisetiawan@ymail.com

Subject Mail & Nama File : Nama-NIM-Kelas-TC4


(42)

by Eko Budi Setiawan, S.Kom Halaman - 1 DIKTAT MATA KULIAH PEMROGRAMAN I

IF

BAB VI

PERULANGAN (LOOP)

Pendahuluan

Untuk memahami mengenai fungsi perulangan, coba lihatlah kasus sebagai berikut : Buatlah suatu program untuk menampilkan angka dari 1 sampai dengan 5. Maka untuk kasus tersebut program yang dibuat adalah sebagai berikut :

#include <stdio.h> #include <conio.h> main()

{

printf(“1\n”);

printf(“2\n”);

printf(“3\n”);

printf(“4\n”);

printf(“5\n”);

getch(); return 0; }

Program diatas telah memenuhi yang diinginkan, tetapi jika bilangan yang akan ditampilkan misalkan dari 1 sampai 1000, maka sangatlah merepotkan jika harus menulis angka 1 sampai dengan 1000 secara manual. Oleh karena itu, disemua bahasa pemrograman terdapat suatu mekanisme yang bernama loop (perulangan).

Ada beberapa jenis perulangan yang dapat dilakukan oleh bahasa pemrograman C, yaitu : 1. For

2. While 3. Do While 4. Label


(43)

by Eko Budi Setiawan, S.Kom Halaman - 2

Perulangan for

Perulangan for mempunyai bentuk umum seperti berikut :

for(inisialisasi counter; kondisi perulangan; pengatur) {

statement; }

Inisialisasi counter : digunakan untuk memberikan inisialisasi terhadap variabel pengendali loop

Kondisi perulangan : dipakai sebagai kondisi untuk keluar dari loop Pengatur : dipakai sebagai pengatur kenaikan nilai variabel

pengendali loop

Contoh berikut ini akan menampilkan angka 1 sampai dengan 100, kemudian menampilkan angka 10 turun sampai 0 dengan perubahan nilanya adalah 0.5

#include <stdio.h> #include <conio.h> main()

{

int i; float f;

for (i=1;i<=100;i++)

printf(“%i\n”,i);

for (f=10;f>=0;f-=0.5)

printf(“%6.2f\n”,f); getch();

return 0; }

Contoh lain :


(44)

by Eko Budi Setiawan, S.Kom Halaman - 3

Perulangan while

Bentuk umum dari while adalah seperti berikut : while (kondisi)

{

perintah; perintah; }

Cara kerja dari perulangan while mirip dengan perulangan for. Tetapi dalam perulangan while ini, tidak ada jaminan bahwa program akan masuk kedalam perulangan. Ini dikarenakan pemeriksaan kondisinya dilakukan diawal perulangan.

#include <stdio.h> #include <conio.h> main()

{

int i; float f; i=1;

while (i<=1000) {

printf(“%i\n”,i); i++;

} f=10;

while (f>=0) {

printf(“%6.2f\n”,f); f=f-0.5;

} getch(); return 0; }


(45)

by Eko Budi Setiawan, S.Kom Halaman - 4

Perulangan do-while

Bentuk umum dari while adalah seperti berikut : do

{

perintah; perintah; }

while (kondisi);


(46)

by Eko Budi Setiawan, S.Kom Halaman - 5

Cara kerja dari perulangan do while mirip dengan perulangan while. Tetapi dalam perulangan do while ini, pengecekan kondisi dilakukan diakhir loop. Sehingga program pasti dapat masuk ke perulangan ini minimal 1 kali.

#include <stdio.h> #include <conio.h> main() { int i; float f; i=1; do {

printf(“%i\n”,i); i++;

} while (i<=1000); f=10;

do {

printf(“%6.2f\n”,f); f=f-0.5;

} while (f>=0); getch();

return 0; }

Perulangan denan label

Perulangan dengan menggunakan teknik label, merupakan teknik perulangan yang paling awal dikenal, biasanya ada dalam pemrograman berbahasa assembly. Tetapi perulangan seperti ini tidak dianjurkan untuk dipakai karena bisa membuat struktur program menjadi tak teratur.

Untuk lebih jelas, perhatikan contoh program dibawah ini. #include <stdio.h> #include <conio.h> main() { int i; i=0; awal: i=i+1; printf("%i\n",i); if(i<10) goto awal; else goto akhir;

printf("Perintah ini tak akan dieksekusi\n"); printf("Perintah ini juga tak akan dieksekusi\n"); akhir:

getch(); return 0;


(47)

by Eko Budi Setiawan, S.Kom Halaman - 6 }

Program diatas akan menampilkan angka 1 sampai 10. Perhatikan perintah dibawah ini :

printf("Perintah ini tak akan dieksekusi\n"); printf("Perintah ini juga tak akan dieksekusi\n");

Perintah tersebut tidak akan pernah dieksekusi, karena ketika program telah mencapai nilai 10, maka akan melewatkan perintah tersebut dan langsung loncat (go to) kebagian akhir yang ditandai dengan perintah akhir :.

Contoh program :

//menentukan total pembelian minuman #include<stdio.h> #include <conio.h> main() { int jumlah,kode; float harga,total; double bayar; char kar;

printf("kode Jenis Harga\n"); printf("1 Milo Rp 10.000\n"); printf("2 Kopi Rp. 5000\n"); printf("3 Coca Cola Rp 2500\n"); printf("4 Orange Juice Rp 2000\n"); total=0;

do {

printf("Masukkan kode minuman : "); scanf("%d",&kode);

printf("Masukkan jumlah pesanan :"); scanf("%d",&jumlah);

if(kode==1)

harga = (float) 10000*jumlah; else if(kode==2)

harga = (float)5000*jumlah; else if(kode==3)

harga = (float)2500*jumlah; else if(kode==4)

harga = (float)2000*jumlah; total=total+harga;

printf("Mau menambah pesanan ? (Y/T) "); scanf("%s",&kar);

} while(kar=='Y'); if(total > 100000)

bayar=total-(0.15*total); else

bayar=total;

printf("\nHarga yang harus dibayar = %10.2f\n",bayar); getch();

return 0; }


(48)

by Eko Budi Setiawan, S.Kom Halaman - 7 //contoh program yang kedua

#include <stdio.h> main()

{

char kar;

int jumkar = 0, jumspasi = 0;

printf("Masukkan sebuah kalimat dan akhiri dengan ENTER."); printf("Saya akan menghitung jumlah karakter ");

printf("pada kalimat tersebut.\n"); while((kar = getchar()) != '\n') {

jumkar++;

if (kar == ' ') jumspasi++; }

printf("\nJumlah karakter = %d", jumkar); printf("\nJumlah SPASI = %d\n\n", jumspasi); }

//program triangular #include <stdio.h> main()

{

int n, jumlah = 0; for (n=1; n<=10; n++)

jumlah = jumlah + n;

printf("Jumlah 10 triangular adalah %d\n", jumlah); }

//program triangular2 #include <stdio.h> main()

{

int n, bil, jumlah = 0;

printf("Masukkan bilangan triangular : "); scanf("%d", &bil);

printf("\nTABEL PENJUMLAHAN TRIANGULAR\n\n"); printf("%3s%10s\n\n","n","Jumlah");

for (n=1; n<=bil; n++) {

jumlah = jumlah + n;

printf("%3d %7d\n", n, jumlah); }


(49)

by Eko Budi Setiawan, S.Kom Halaman - 8 #include <stdio.h> #include <conio.h> #include <math.h> main() { int no_mn; float sisi1,sisi2,sisimrg; float rad,kel,ls; float pjg,lbr,tng,vol,luass; clrscr(); no_mn=0;

while(no_mn != 4) {

printf("\n Fungsi Yang ingin anda pakai\n"); printf(" ---\n");

printf("\n1. Menghitung Sisi Miring Suatu Segitiga\n"); printf("2. Menghitung Keiling dan Luas Lingkaran\n"); printf("3. Menghitung Volume, Luas Selimut Balok\n"); printf("4. Keluar\n");

printf("\n ---\n");

printf(" Masukan No Pilihan : ");scanf("%d",&no_mn); clrscr();

if(no_mn==1) {

printf("Sisi 1 = ");scanf("%f",&sisi1); printf("Sisi 2 = ");scanf("%f",&sisi2); sisimrg=sqrt((sisi1*sisi1)+(sisi2*sisi2)); printf("\nHasil Perhitungan :\n");

printf("Sisi Miringnya = %.2f\n",sisimrg); }

else

if(no_mn==2) {

printf("Radius = ");scanf("%f",&rad); kel=3.14*2*rad;

ls=3.14*rad*rad;

printf("\nHasil Perhitungan :\n");

printf("Keliling Lingkarannya = %.2f\n",kel); printf("Luas Lingkarannya = %.2f\n",ls); }

else

if(no_mn==3) {

printf("Panjang = ");scanf("%f",&pjg); printf("Lebar = ");scanf("%f",&lbr); printf("Tinggi = ");scanf("%f",&tng); vol=pjg*lbr*tng;

luass=2*((pjg*lbr)+(lbr*tng)+(pjg*tng)); printf("\nHasil Perhitungan :\n");

printf("Volume Baloknya = %.2f\n",vol); printf("Luas Selimut Baloknya = %.2f\n",luass); }

else

if(no_mn==4) {

printf("\nKeluar Program Sampai Jumpa\n"); printf(" Terima Kasih... \n"); }

} getch(); return 0; }


(50)

by Eko Budi Setiawan, S.Kom Halaman - 9

TUGAS !

Tugas

1. Buatlah program untuk menampilkan semua bilangan genap yang terletak antara 20 sampai dengan 120, dengan menggunakan for.

2. Buat program untuk menghitung faktorial. Contoh output :

Tentukan bilangan faktorial = 5

Hasil perhitungan 5 faktorial adalah = 120

3. Buatlah program untuk menampilkan tabel hasil faktorial dari suatu bilangan yang diinputkan (tampilan bilangan rata kanan) :

Contoh output :

Masukan bilangan faktorial = 7

4. Buatlah program untuk menjumlahkan bilangan ganjil dan genap dari bilangan yang di inputkan oleh user. Banyaknya bilangan, ditentukan terlebih dahulu. Contoh :

Data yang diinputkan = 4

Data ke 1 = 3

Data ke 2 = 10

Data ke 3 = 2

Data ke 4 = 5

Hasil Akhir :

Jumlah bilangan ganjil adalah = 8 Jumlah bilangan genap adalah = 12

Note Kerjakan semua contoh diatas kemudian compile.

Jawaban di buat berupa source code dan print out tampilan programnya, beserta kesimpulan hasil praktikum..

Kirim jawaban anda (*.doc) via e-mail ke ekobudisetiawan@ymail.com

Subject Mail & Nama File : Nama-NIM-Kelas-TC5 Deadli e : Ju at 23 Oktober 2009


(51)

by Eko Budi Setiawan, S.Kom Halaman - 10

Tugas Besar Sebelum UTS

1. Buatlah program untuk menjumlahkan bilangan ganjil dan genap dari bilangan yang di inputkan oleh user. Banyaknya bilangan, ditentukan terlebih dahulu. Contoh :

Data yang diinputkan = 4

Data ke 1 = 3

Data ke 2 = 10

Data ke 3 = 2

Data ke 4 = 5

Hasil Akhir :

Jumlah bilangan ganjil adalah = 8 Jumlah bilangan genap adalah = 12

2. Buatlah program untuk menghitung jumlah deret dan faktorial dari bilangan yang diinputkan oleh user.

Masukan Jumlah Nilai (n) = 6 Hasil Perhitungannya adalah : ==============================

Jumlah dari 1 + 2 + 3 + 4 + 5 + 6 = 21 6! = 720

3. Buatlah program untuk menampilkan bintang sesuai dengan jumlah baris yang di inputkan oleh user.

Banyaknya Baris = 5

Hasil yang diinginkan adalah ============================ 1 : *

2 : ** 3 : *** 4 : **** 5 : *****

4. Sedangkan untuk soal dibawah ini, buatlah program untuk menampilkan bintang sesuai dengan contoh dibawah ini.

Banyaknya Baris = 5

Hasil yang diinginkan adalah ============================ *

** *** **** ***** **** *** ** *


(52)

by Eko Budi Setiawan, S.Kom Halaman - 11 5. Buatlah program untuk menampilkan total penjumlahan dari inputan yang dibatasi nilai awal

dan akhirnya oleh user.

Masukan Nilai Awal = 5

Masukan Nilai Akhir = 10

===============================

Totalnya adalah = 5 + 6 + 7 + 8 + 9 + 10 = 45

6. Buatlah program untuk menampilkan tabel perkalian m x n dengan inputan nilainya diinputkan oleh user. (dibatasi dari 2 sampai 10). Jika user menginputkan nilai lebih dari 10

ta pilka ketera ga Nilai a g dii putka tidak boleh lebih besar dari

Masukan Nilai (2-10) = 5 TABEL PERKALIAN

1 2 3 4 5

---

1 | 1 2 3 4 5

2 | 2 4 6 8 10

3 | 3 6 9 12 15

4 | 4 8 12 16 20

5 | 5 10 15 20 25

7. Buatlah program untuk menghitung jumlah saldo yang sudah ditambahkan dengan bunga yang diinputkan oleh user dalam jangka waktu yang telah ditentukan

Masukan Saldo Awal = 100000

Masukan Besarnya Bunga (%) = 10 Masukan jangka waktu (bulan) = 5 ======================================== Hasil Perhitungan :

Saldo bulan ke-1 = 110000 Saldo bulan ke-2 = 121000 Saldo bulan ke-3 = 133100 Saldo bulan ke-4 = 146410 Saldo bulan ke-5 = 161051

8. Buatlah program untuk menghitung jumlah waktu yang diperlukan untuk memenuhi jumlah saldo yang diinginkan oleh user setelah ditambahkan bunga.

Masukan Saldo Awal = 100000

Masukan Besarnya Bunga (%) = 15 Masukan Jumlah Saldo Akhir = 150000 ======================================== Hasil Perhitungan :

Saldo bulan ke-1 = 115000 Saldo bulan ke-2 = 132250 Saldo bulan ke-3 = 152088


(53)

by Eko Budi Setiawan, S.Kom Halaman - 12 9. Buatlah program untuk menentukan bilangan yang terbesar dari 5 data yang diinputkan oleh

user.

Masukan sembarang bilangan bulat ================================

Data ke 1 = 2

Data ke 2 = 5

Data ke 3 = 6

Data ke 4 = 4

Data ke 5 = 3

Bilangan terbesar adalah = 6

10.Buatlah program untuk membalik posisi dari angka yang diinputkan oleh user. Masukan bilangan yang akan dibalik = 4032

======================================== Hasil Pembalikannya adalah = 2304

Note Jawaban di buat dalam bentuk makalah yang berupa source code dan printout tampilan programnya.. diwajibkan untuk menunjukkan informasi NIM di program yang sudah di Compile..


(54)

by Eko Budi Setiawan, S.Kom Halaman - 1 DIKTAT MATA KULIAH PEMROGRAMAN I

IF

BAB VII

FUNCTION

Tu j u a n

1. Menjelaskan tentang prinsip dasar fungsi

2. Menjelaskan tentang parameter formal dan parameter aktual D a s a r T e o r i

Fungsi adalah suatu bagian dari program yang dirancang untuk melaksanakan tugas tertentu dan letaknya dipisahkan dari program yang menggunakannya. Elemen utama dari program bahasa C berupa fungsi-fungsi, dalam hal ini program dari bagasa C dibentuk dari kumpulan fungsi pustaka (standar) dan fungsi yang dibuat sendiri oleh pemrogram. Fungsi banyak digunakan pada program C dengan tujuan :

a. Program menjadi terstruktur, sehingga mudah dipahami dan mudah dikembangkan. Dengan memisahkan langkah-langkah detail kesatu atau lebih fungsi-fungsi, maka fungsi utama ( main()) menjadi lebih pendek, jelas dan mudah dimengerti.

b. Dapat mengurangi pengulangan (duplikasi) kode. Langkah-langkah program yang sama dan dipakai berulang-ulang diprogram dapat dituliskan sekali saja secara terpisah dalam bentuk fungsi-fungsi. Selanjutnya bagian program yang membutuhkan langkah-langkah ini tidak perlu selalu menuliskannya, tetapi cukup memanggil fungsi-fungsi tersebut. D a s a r F u n g s i

Fungsi standar C yang mengemban tugas khusus contohnya adalah :

a.printf (), yaitu untuk menampilkan informasi atau data ke layar

b.scanf (), yaitu untuk membaca kode tombol yang diinputkan

Pada umumnya fungsi memerlukan nilai masukan atau parameter yang disebut sebagai

argumen. Nilai masukan ini akan diolah oleh fungsi. Hasil akhir fungsi berupa sebuah nilai (disebut sebagai return value atau nilai keluaran fungsi). Oleh karena itu, fungsi sering


(55)

by Eko Budi Setiawan, S.Kom Halaman - 2

Penggamabaran sebagai kotak gelap diantaranya menjelaskan bahwa bagian dalam fungsibersifat probadi bagi fungsi. Tidak ada suatu pernyataan diluar fungsi yang bisa mengakses bagian dalam fungsi, selain melalui parameter (atau varianel eksternal). Bentuk umum dari definisi sebuah fungsi adalah sebagai berikut :

tipe-keluaran-fungsi namafungsi (deklarasi argumen) {

tubuh fungsi }

Keterangan :

 tipe-keluaran-fungsi, dapat berupa salah satu tipe data C, misalnya char atau

int. Jika penentu tipe tidak disebutkan, maka dianggap bertipe int (secara default).  tubuh fungsi berisi deklarasi variabel (jika ada) dan statemen-statemen yang akan

melakukan tugas yang akan diberikan kepada fungsi yang bersangkutan. Tubuh fungsi ini ditulis didalam tanda kurung kurawal buka dan kurung kurawal tutup.

Sebuah fungsi yang sederhana bisa saja tidak mengandung parameter sama sekali dan tentu saja untuk keadaan ini deklarasi parameter juga tidak ada. Contoh :

int inisialisasi() {

return(0); }

inisialisasi() {

return(0); }


(56)

by Eko Budi Setiawan, S.Kom Halaman - 3

Pada fungsi diatas :

 tipe keluaran fungsi tidak disebutkan, berarti keluaran fungsi bertipe int.  Inisialisasi adalah nama fungsi

 Tanda () sesudah nama fungsi menyatakan bahwa fungsi tak memiliki parameter  Tanda { dan } adalah awal dan akhir fungsi

 return(0) merupakan sebuah pernyataan dalam tubuh fungsi.

M e m b e r i k a n N i l a i K e l u a r a n F u n g s i

Suatu fungsi dibuat untuk maksud menyelesaikan tugas tertentu. Suatu fungsi dapat hanya melakukan suatu tugas saja tanpa memberikan suatu hasil keluiaran atau melakukan suatu tugas dan kemudian memberikan hasil keluaran. Fungsi yang hanya melakukan suatu tugas saja tanpa memberikan hasil keluaran misalnya adalah fungsi untuk menampilkan hasil dilayar.

Dalam tubuh fungsi, pernyataan yang digunakan untuk memberikan nilai keluaran fungsi berupa return. Sebagai contoh, pada fungsi inisialisasi() diatas terdapat pernyataan

return (0);

merupakan pernyataan untuk memberikan nilai keluaran fungsi berupa nol.

Hasil Eksekusi : x = 0


(57)

by Eko Budi Setiawan, S.Kom Halaman - 4

Program diatas sekaligus menjelaskan bahwa suatu fungsi cukup didefinisikan satu kali tetatpi bisa digunakan beberapa kali. Pada keadaan semacam ini, seandainya tubuh fungsi mengandung banyak pernyataan, maka pemakaian fungsi dapat menghindari duplikasi kode dan tentu saja menghemat penulisan program maupun kode dalam memori.

Misalnya pada saat pernyataan

x = inisialisasi ();

dijalankan, mula-mula eksekusi akan diarahkan ke fungsi inisialisasi (), selanjutnya suatu nilai keluaran (hasil fungsi) akhir fungsi diberikan ke x. Proses yang serupa, dilakukan untuk pernyataan

y = inisialisasi ();

Bagi suatu fungsi, jika suatu pernyataan return dieksekusi, maka eksekusi terhadap fungsi akan berakhir dan nilai pada parameter return akan menjadi keluaran fungsi. Untuk fungsi yang tidak memiliki pernyataan return, tanda } pada bagian akhir fungsi akan menyatakan akhir eksekusi fungsi.

Dibawah ini diberikan contoh sebuah fungsi yang mengandung dua buah pernyataan return. Fungsi digunakan untuk memperoleh nilai minimum diantara 2 buah nilai yang menjadi parameternya.

int minimum(int x, int y) {

if (x < y) return(x); else

return(y); }

Pada fungsi diatas terdapat dua buah parameter berupa x dan y. Oleh karena itu fungsi juga mengandung bagian untuk mendeklarasikan parameter, yang menyatakan x dan y bertipe int. Adapun penentuan nilai keluaran fungsi dilakukan pada tubuh fungsi, berupa pernyataan

if (x < y)

return(x); else

return(y);

yang menyatakan :

 jika x < y maka nilai keluaran fungsi adalah sebesar nilai x


(58)

by Eko Budi Setiawan, S.Kom Halaman - 5 F u n g s i D e n g a n K e l u a r a n B u k a n I n t e ge r

Untuk fungsi yang mempunyai keluaran bertipe bukan integer, maka fungsi haruslah didefinisikan dengan diawali tipe keluaran fungsinya (ditulis didepan nama fungsi). Sebagai contoh untuk menghasilkan nilai terkecil diantara dua buah nilai real, maka definisinya berupa :

float minimum(float x, float y) {

if (x < y) return(x); else

return(y); }

Perhatikan, didepan nama minimum diberikan tipe keluaran fungsi berupa float. Seluruh parameter sendiri juga didefinisikan dengan tipe float.

Khusus untuk fungsi yang dirancang tanpa memberikan nilai keluaran (melainkan hanya menjalankan suatu tugas khusus) biasa didefinisikan dengan diawali kata kunci void (didepan nama fungsi).

P r o t o t i p e F u n g s i

Prototipe fungsi digunakan untuk menjelaskan kepada kompiler mengenai :  Tipe keluaran fungsi

 Jumlah parameter

 Tipe dari masing-masing parameter

Bagi kompiler, informasi dalam prototipe akan dipakai untuk memeriksa keabsahan (validitas) parameter dalam pemanggilan fungsi. Salah satu keuntungannya adalah, kompiler akan melakukan konversi seandainya antara tipe parameter dalam fungsi dan parameter saat pemanggilan fungsi tidak sama, atau akan menunjukkan kesalahan bila jumlah parameter dalam definisi dan saar oemanggilan berbeda.

Contoh prototipe fungsi :

float jumlah (float x, float y);

atau


(59)

by Eko Budi Setiawan, S.Kom Halaman - 6

Penjelasannya adalah sebagai berikut :

Untuk fungsi yang tidak memiliki argumen (contoh program void.c), maka deklarasinya adalah :

Catatan :

 Untuk fungsi-fungsi pustaka, prototipe dari fungsi-fungsi berada di file-file judulnya (header file). Misalnya fungsi pustaka printf() dan scanf() prototipenya berada pada file dengan nama stdio.h

 Untuk fungsi pustaka pencantuman pada prototipe fungsi dapat dilakukan dengan menggunakan #include

P a r a m e t e r F o r m a l d a n P a r a m e t e r Ak t u a l

Parameter formal adalah variabel yang ada pada daftar parameter dalam definisi fungsi. Pada coontoh program diatas misalnya, maka dalam fungsi jumlah() variabel x dan y dinamakan sebagai parameter formal. Adapun parameter aktual adalah parameter (tidak selalu berupa variabel) yang dipakai dalam pemanggilan fungsi.

Pada pernyataan : x = jumlah (a,b) y = jumlah (20.1, 45.6)


(1)

by Eko Budi Setiawan, S.Kom

Halaman - 7

{

FILE *pf;

char nama[20];

pf=fopen("coba.txt","r");

if(pf==NULL)

{

printf("File gagal dibuka\n");

}

while (fgets(nama,6,pf))

printf("%s\n",nama);

fclose(pf);

}

6. Mengganti nama file

#include <stdio.h>

#include <stdlib.h>

#define PJG 65

main()

{

int kode;

char namafilelama[PJG], namafilebaru[PJG];

printf("Nama file yang akan diganti : ");

gets(namafilelama);

printf("Nama file yang baru : ");

gets(namafilebaru);

kode = rename(namafilelama, namafilebaru);

if(kode == 0)

printf("Nama file sudah diganti\n");

else

printf("Gagal dalam mengganti nama\n");

}

7. Menghapus file

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

#define PJG 65

main()

{

int kode;

char namafile[PJG];

printf("Nama file yang akan dihapus : ");

gets(namafile);

kode = remove(namafile);

if(kode == 0)

printf("File sudah dihapus\n");

else

printf("Gagal dalam menghapus file\n");

}


(2)

by Eko Budi Setiawan, S.Kom

Halaman - 8 Sistem Informasi Pelanggan PLN

#include <stdio.h> #include <conio.h> #define maks 500 struct PLN{

char nama[21],alamat[45]; int no_pel;

long int meteran_lalu,meteran_skrg,daya,beban,tot_byr,kurang; };

PLN pel[maks]; int bd=0; void tambah(); void tampil(); void urut_no(); void simpan_file(); main()

{

gotoxy(30,8);printf("SELAMAT DATANG DI....");

gotoxy(22,10);printf("PT. PERUSAHAAN LISTRIK NEGARA (PERSERO)"); gotoxy(25,12);printf("DATA PELANGGAN PT. PLN DISTRIBUSI"); gotoxy(30,14);printf("JAWA BARAT DAN BANTEN");

gotoxy(51,24);printf("'' Tekan Sembarang Tombol ''"); getch();

int pil; FILE *f;

int banyak=0; clrscr();

f=fopen("data.pln","rb"); if(f!=NULL)

{

while((bd<maks)&&(fread(&pel[bd],sizeof(PLN),1,f)==1)) {

bd++; banyak++; }

fclose(f); if(bd==maks)

{

gotoxy(20,8);printf("DATA DI MEMORI PENUH,LAKUKAN BACKUP FILE\n"); }

} else {

gotoxy(30,8);printf("FILE GAGAL DI BACA..!!\n"); }

gotoxy(22,12);printf("Terdapat %d Record, Di File Data Base PLN \n",banyak); gotoxy(26,14);printf("Distribusi Jawa Barat dan Banten");

gotoxy(34,24);printf("''Tekan Sembarang tombol, untuk melanjutkan''");getch(); do

{

clrscr();

gotoxy(36,6);printf("MENU PILIHAN");

gotoxy(22,8);printf("=========================================="); gotoxy(24,10);printf("1. Tambah Data Pelanggan");

gotoxy(24,11);printf("2. Tampil Data Pelanggan");

gotoxy(24,12);printf("3. Pengurutan Berdasarkan No Pelanggan"); gotoxy(24,13);printf("4. Simpan Data Ke File Data Base"); gotoxy(24,14);printf("5. Keluar Program");

gotoxy(22,16);printf("=========================================="); gotoxy(38,18);printf("Pilihan : ");scanf("%d",&pil);

if(pil==1) tambah(); else

if(pil==2) tampil(); else

if(pil==3)

urut_no(); else


(3)

by Eko Budi Setiawan, S.Kom

Halaman - 9 simpan_file();

}while (pil!=5); clrscr();

gotoxy(25,8);printf("This Program Is Turn Off....!!!"); gotoxy(30,10);printf("Hatur Nuhuun...!!!");

gotoxy(27,12);printf("Tos Nganggo I'eu Program"); gotoxy(32,14);printf("Press any key...");getch();

return 0; }

void tambah() {

int pil2; if (bd<maks) {

awal: clrscr();

gotoxy(24,2);printf("Pemasukan Data Pelanggan PLN ke-%d",bd+1); gotoxy(18,4);printf("============================================="); gotoxy(20,6);printf("Nomor Pelanggan : ");scanf("%d",&pel[bd].no_pel); if((pel[bd].no_pel<1000)||(pel[bd].no_pel>9999))

{

clrscr();

gotoxy(26,10);printf("Data Yang Dimasukan Salah...."); gotoxy(29,12);printf("4 Digit ( 1000 - 9999 )"); getch();

goto awal; }

else {

goto akhir; }

akhir:

gotoxy(20,7);printf("Nama Pelanggan : ");fflush(stdin);gets(pel[bd].nama); gotoxy(20,8);printf("Alamat Pelanggan : ");fflush(stdin);gets(pel[bd].alamat);

gotoxy(20,9);printf("Stand Meteran Bulan Lalu :

");scanf("%li",&pel[bd].meteran_lalu);

gotoxy(20,10);printf("Stand Meteran Bulan Sekarang :

");scanf("%li",&pel[bd].meteran_skrg);

pel[bd].kurang=pel[bd].meteran_skrg-pel[bd].meteran_lalu; daya:

gotoxy(20,11);printf("Besarnya Daya Yang digunakan :"); gotoxy(24,13);printf("1. 900 Watt");

gotoxy(24,14);printf("2. 1.300 Watt"); gotoxy(24,15);printf("3. 2.200 Watt"); gotoxy(24,16);printf("4. 3.300 Watt"); gotoxy(24,17);printf("5. 6.600 Watt"); gotoxy(24,18);printf("6. 13.600 Watt");

gotoxy(20,20);printf("Masukan No Pilihan Daya : ");scanf("%d",&pil2); if((pil2<1)||(pil2>6))

{

gotoxy(20,22);printf(" Pilihan Hanya 1-6...!! \n");getch(); clrscr();

goto daya; }

else {

goto dy; }

dy:

if(pil2==1) {

pel[bd].daya=900; pel[bd].beban=28000; }

else

if(pil2==2) {

pel[bd].daya=1300; pel[bd].beban=30000; }


(4)

by Eko Budi Setiawan, S.Kom

Halaman - 10 if (pil2==3)

{

pel[bd].daya=2200; pel[bd].beban=35000; }

else

if (pil2==4) {

pel[bd].daya=3300; pel[bd].beban=40000; }

else

if (pil2==5) {

pel[bd].daya=6600; pel[bd].beban=45000; }

else

if (pil2==6) {

pel[bd].daya=13600; pel[bd].beban=60000; }

pel[bd].tot_byr=(500*(pel[bd].meteran_skrg-pel[bd].meteran_lalu)+pel[bd].beban); bd++;

clrscr();

gotoxy(30,8);printf("Data Disimpan Di Memori");

gotoxy(22,10);printf("Sebelum Keluar Program Simpan Data dulu.."); gotoxy(28,13);printf("AGAR DATA TIDAK HILANG...!!");

} else {

gotoxy(22,10);printf("Data Penuh,Penambahan Data Dibatalkan"); }

gotoxy(34,24);printf("''Tekan sembarang tombol, untuk melanjutkan''");getch(); }

void tampil() {

int i; if (bd>0) {

for(i=0;i<bd;i++) {

clrscr();

gotoxy(30,2);printf("Data Pelanggan PLN");

gotoxy(10,3);printf("=============================================================" );

gotoxy(30,5);printf("Pelanggan PLN Ke-%d",i+1);

gotoxy(16,7);printf("Nomor Pelanggan : %d",pel[i].no_pel); gotoxy(16,8);printf("Nama Pelanggan : %s",pel[i].nama); gotoxy(16,9);printf("Alamat Pelanggan : %s",pel[i].alamat); gotoxy(16,10);printf("Daya Yang Digunakan : %li Watt",pel[i].daya); gotoxy(16,11);printf("Biaya Beban : Rp. %li",pel[i].beban); gotoxy(16,12);printf("Pemakaian : %li kWh",pel[i].kurang);

gotoxy(16,13);printf("Total Bayar Bulan Sekarang : Rp.

%li",pel[i].tot_byr); i++; if (i<bd) {

gotoxy(31,15);printf("Pelangan PLN Ke-%d",i+1);

gotoxy(16,17);printf("Nomor Pelanggan : %d",pel[i].no_pel); gotoxy(16,18);printf("Nama Pelanggan : %s",pel[i].nama); gotoxy(16,19);printf("Alamat Pelanggan : %s",pel[i].alamat); gotoxy(16,20);printf("Daya Yang Digunakan : %li Watt",pel[i].daya); gotoxy(16,21);printf("Biaya Beban : Rp. %li",pel[i].beban); gotoxy(16,22);printf("Pemakaian : %li kWh",pel[i].kurang);

gotoxy(16,23);printf("Total Bayar Bulan Sekarang : Rp.

%li",pel[i].tot_byr);

gotoxy(34,25);printf("''Tekan sembarang tombol, untuk melanjutkan''"); getch();


(5)

by Eko Budi Setiawan, S.Kom

Halaman - 11 }

else {

gotoxy(34,25);printf("''Tekan sembarang tombol, untuk melanjutkan''"); getch();

} } } else {

clrscr();

gotoxy(22,8);printf("Data Tidak Ditemukan di File Data Base"); gotoxy(32,10);printf("PT. PLN (PERSERO)");

gotoxy(25,12);printf("DISTRIBUSI JAWA BARAT DAN BANTEN"); }

}

void urut_no() {

clrscr(); int i,j; PLN temp; if (bd>1)

{

for(i=0;i<bd-1;i++) {

for(j=i+1;j<bd;j++) {

if(pel[i].no_pel>pel[j].no_pel) {

temp=pel[i]; pel[i]=pel[j]; pel[j]=temp; }

} }

gotoxy(24,10);printf("Pengurutan Berdasarkan No Pelanggan"); gotoxy(30,12);printf("TELAH DILAKSANAKAN..!!");

} else {

gotoxy(22,10);printf("Pengurutan Data dibatalkan, DATA KURANG..!! \n"); }

gotoxy(34,24);printf("''Tekan sembarang tombol, untuk melanjutkan''"); getch();

}

void simpan_file() {

FILE*f; int i; clrscr();

f=fopen("data.pln","wb"); if(f!=NULL)

{

for(i=0;i<bd;i++)

fwrite(&pel[i],sizeof(PLN),1,f); fclose(f);

gotoxy(16,8);printf("Penyimpanan data selesai, File Disimpan di Data Base"); gotoxy(32,10);printf("PT. PLN (PERSERO)");

gotoxy(25,12);printf("DISTRIBUSI JAWA BARAT DAN BANTEN"); }

else {

gotoxy(28,8);printf("Penyimpanan Data Gagal"); gotoxy(32,10);printf("PT. PLN (PERSERO)");

gotoxy(25,12);printf("DISTRIBUSI JAWA BARAT DAN BANTEN"); }

gotoxy(34,24);printf("''Tekan sembarang tombol, untuk melanjutkan''"); getch();


(6)

Pemrograman I

FlashBack & Pembahasan Tugas