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 :
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
[image:2.595.167.440.280.543.2]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
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 :
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’); }
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.
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.
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
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
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;
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();
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;
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
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);
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);
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);
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 :
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;
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();
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();
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
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
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)
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.h
gets 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()
{
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
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
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();
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.
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();
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");
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);
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
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
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
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)
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
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,
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
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;
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();
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
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
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 :
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;
by Eko Budi Setiawan, S.Kom Halaman - 4
Perulangan do-while
Bentuk umum dari while adalah seperti berikut :
do {
perintah; perintah; }
while (kondisi);
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:
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();
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); }
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"); }
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
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 ============================ *
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
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..
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
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() {
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
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
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 j