Struktur Kode Pemrograman Dasar C
Struktur Kode Pemrograman Dasar C
1.1 Pendahuluan
1
• Menulis program
• Melakukan testing dan debugging
• Melakukan dokumentasi
• Melakukan pemeliharaan
Definisi Algoritma
• Pola pikir yang terstruktur yang berisi tahap-tahap penyelesaian masalah untuk
diimplementasikan dalam pemrograman
• Biasanya dalam program terdapat tiga struktur program:
• Struktur Urut
• Struktur Keputusan
• Struktur Perulangan
1.2 Sejarah Bahasa C
Kelebihan Bahasa C
2
Kelemahan C
• Banyaknya operator serta flesibilitas penulisan program kadang-kadang
membingungkan pemakai.
• Bagi pemula pada umumnya akan kesulitan menggunakan pointer.
Komponen C
Komponen bahasa c terdiri dari berbagai macam standar library (header file):
• Stdio.h
• Conio.h
Struktur Program C
Untuk dapat memahami bagaimana suatu program ditulis, maka struktur dari
program harus dimengerti terlebih dahulu. Struktur dari program C dapat dilihat sebagai
kumpulan dari sebuah atau lebih fungsi-fungsi. Berikut ini adalah stuktur dari program
C:
main()
{
statemen-statemen; //fungsi utama
}
fungsi_fungsi_lain()
{
statemen-statemen; // fungsi-fungsi lain
}
contoh:
#include<stdio.h>
main()
{
printf(“HALLO C”);
}
Keterangan:
• stdio.h, header standard input output karena ada printf
• main(), program utama
• {}, awal program dan akhir program
• printf(“HALLO C”); mencetak tulisan Hallo C di layar monitor
Preprosesor #include
#include merupakan satu jenis pengarah preprosesor yang dipakai untuk
membaca file yang dinamakan file judul (header file), yaitu file yang berisi
deklarasi fungsi dan definisi konstanta
3
Contoh:
– #include <stdio.h>
– #include <conio.h>
Prepocessor
• Stdio.h akan memanggil fungsi : printf (), Scanf ()
• Scanf.h akan memanggil fungsi : clrscr(), putch(), getch() dll
Editor
DISK
Preprocessor
.h
.obj
Compiler .out
(UNIX)
.exe
Linker (MS)
Loader
Primary Memory
CPU
4
BAB II
DASAR-DASAR PEMROGRAMAN
A. INT, LONG
Digunakan untuk menyatakan bilangan bulat. Seperti pada char, perubah tipe
signed (-) dan unsigned (+) dapat ditambahkan.
Rentang nilai int mulai -32.768 sampai 32.767
Rentang nilai long mulai -2.147.483.648 sampai 2.147.483.647
Contoh deklarasi int :
– int nilai, total ; atau
– int nilai = 90 ;
B. FLOAT, DOUBLE
Menyatakan bilangan pecahan/real, maupun eksponensial. Dalam keadaan
default, bilang floating point dianggap bertipe double.
Rentang nilai float mulai 1.7E-38 sampai 3.4 E+38
Rentang nilai double mulai 3.4E-308 sampai 1,7E+308
C. CHAR
Adalah sembarang huruf, angka, tanda baca tunggal. Ada 2 (dua) macam char,
yaitu :
1. signed
Mendeklarasikan char bertanda, digunakan untuk nilai negative.
Rentang nilai mulai 0 sampai 255.
2. unsigned
Mendeklarasikan char tidak bertanda, untuk nilai positif.
5
Rentang nilai mulai -128 sampai 127
contoh deklarasi char :
– char letter = ‘A’ ;
– unsigned char number = 245 ;
– signed char value = -71 ;
D. VOID
2.2 Variabel
6
– Selanjutnya dapat berupa huruf, digit (0..9) atau karakter garis bawah
atau tanda dollar ($)
– Panjang pengenal bebas, tetapi hanya 32 karakter pertama yang akan
terpakai. Contoh penamaan variabel yang benar :
NIM, a, x, nama_mhs, f3098, f4, nilai, budi, dsb.
Contoh penamaan variable yang salah :
%nilai_mahasiswa, 80mahasiswa, rata-rata, ada spasi, penting!, dsb
– Pengenal tidak boleh menggunakan nama yang tergolong sebagai kata-
kata cadangan (reserved words) seperti int, if, while dan sebagainya
Contoh:
int var_bulat1;
float var_pecahan1, var_pecahan2;
nama_variabel = nilai;
Contoh:
int var_bulat = 10;
double var_pecahan = 10.5;
Latihan 2.1
/* ---------------------------------------*/
/* Program : Variabel.c */
/* Program Contoh Variabel */
/* ----------------------------------------*/
#include "stdio.h"
#include "conio.h"
main()
{
float gaji,tunj;
gaji = 20000;
tunj = 0.1 * gaji;
GAJI = gaji + tunj;
printf("\nGaji Pokok = Rp. %f",gaji);
printf("\nTunjangan = Rp. %f",tunj);
printf("\nGaji Total = Rp. %f",GAJI);
7
getch();
clrscr();
}
Hasil :
Gaji Pokok = Rp. 20000.000000
Tunjangan = Rp. 2000 .000000
Gaji Total = Rp. 22000 .000000
2.3 KONSTANTA
Pengertian konstanta adalah:
Konstanta menyatakan nilai tetap. Berbeda dengan variabel, suatu konstanta
tidak dideklarasikan namun memiliki tipe. Penulisan konstanta mempunyai aturan
tersendiri, sesuai dengan tipe masing-masing. Konstanta dapat bernilai integer,
pecahan, karakter dan string. Contoh konstanta : 50; 13; ‘A’; ‘Bahasa C’
Konstanta sering dipakai dalam rumus-rumus fisika dan matematika. Contoh :
phi (p) yang mempunyai nilai 3.14268. Phi sering dipakai untuk rumus-rumus yang
berhubungan dengan lingkaran.
Konstanta menyatakan nilai yang tetap
– karakter :‘A’ dan ‘@’
– integer : –1 dan 32767
– real (float dan double) : 27.5f (untuk tipe float) atau
27.5 (untuk tipe double) dan 2.1e+5 (maksudnya 2,1 x 105 )
– string : "Pemrograman Dasar C"
Contoh
#include<stdio.h>
main()
{
int A=1;
float B=2.0;
char C='A';
char D[10]="Test";
printf("%d\n",A);
printf("%f\n",B);
printf("%c\n",C);
printf("%s\n",D);
}
Hasil:
1
2.000000
A
Test
MENDEFINISIKAN KONSTANTA
8
Suatu konstanta dapat diberi nama. Pendefinisiannya dilakukan dengan menggunakan
pengarah preprocessor #define.
LATIHAN 2.2:
#include <stdio.h>
#define phi 3.14
main()
{
float radius, keliling, luas;
radius = 20;
clrscr();
keliling = 2 * phi * radius;
luas = 0.5 * phi * radius * radius;
printf("Data Lingkaran : \n");
printf("Jari-jari = %f\n", radius);
printf("Keliling = %f\n", keliling);
printf("Luas = %f\n", luas);
getch();
}
Hasil:
Data Lingkaran :
Jari-jari = 20.000000
Keliling = 125.599998
Luas = 628.000000
2.4. OPERATOR
Operator atau tanda operasi adalah suatu tanda atau simbol yang digunakan untuk
suatu operasi tertentu.
1. Operator ARITMATIKA
___________
Operator ¦ Maksud
-------------------+--------------------------------------------
* ¦ Perkalian
/ ¦ Pembagian
% ¦ Pembagian modulus (pembagian sisa)
- ¦ Pengurangan
+ ¦ Pertambahan
-------------------+--------------------------------------------
Contoh Program
#include<stdio.h>
main()
{
int a,b,c;
9
a=2;
b=3;
c=a+b;
printf("%d",c);
}
2. Operator UNARY
______________
Operator ¦ Maksud
-------------------+----------------------------------------------
- ¦ Unary minus
++ ¦ Peningkatan dengan penambahan nilai 1
-- ¦ Penurunan dengan pengurangan nilai 1
(type) ¦ Cast
sizeof ¦ Ukuran dari operand dalam byte
! ¦ Unary NOT
& ¦ Menghasilkan alamat memory operand
* ¦ Menghasilkan nilai pengenal dialamatnya
~ ¦ Komplemen satu
-------------------+----------------------------------------------
Keterangan
Operator ++ dan -- :
Operator ini banyak dijumpai di statemen perulangan yang berbentuk sebagai
berikut :
for(i=1;i<=10;i=i+1)
dapat ditulis dengan operator ++ sebagai berikut :
for(i=1;i<=10;i++)
Operator ++ dan -- yang digunakan di suatu ungkapan akan berarti lain jika ditulis
sebelum atau sesudah operandnya.
Contoh
X=5;
A=X++;
Hasil
X=6 dan A=5
X=5;
A=++X;
Hasil
X=6 dan A=6
3. Operator PENGERJAAN
10
Operator Pengerjaan Digunakan untuk memindahkan nilai dari suatu ungkapan ke
suatu pengenal.
____________
¦ Operator ¦ Contoh ¦ Maksud ¦
+ ---------------+----------------------+----------------------+
¦ = ¦ A=B+C ¦ Mengerjakan B+C ke A|
¦ += ¦ A+=1 ¦ A=A+1 |
¦ -+ ¦ A-+B ¦ A=A+B |
¦ *= ¦ A*=B ¦ A=A*B |
¦ /= ¦ A/=B ¦ A=A/B |
¦ %= ¦ A%=B ¦ A=A%B |
+=============+======================+=========================+
Contoh :
Misalnya variabel I dan J adalah variabel-variabel type integer dengan nilai awal
keduanya adalah 10. Maka
I+=3; artinya : I=I+3;
I=10+3;
I=13;
I/=J-8; artinya : I=I/(J-8);
I=10/(10-8);
I=5;
dan seterusnya.
4. Operator HUBUNGAN
Operator Hubungan digunakan untuk menunjukkan hubungan antara dua buah
operand
______________
Operator ¦ Maksud
-------------------+----------------------------------------------
< ¦ Lebih kecil dari
<= ¦ Lebih kecil atau sama dengan
> ¦ Lebih besar dari
>= ¦ Lebih besar atau sama dengan
== ¦ Sama dengan
!= ¦ Tidak sama dengan
-------------------+----------------------------------------------
5. Operator LOGIKA
11
Operator Logika digunakan untuk membandingkan logika hasil dari operator-
operator hubungan.
_____________
Hubungan LOGIKA
X ¦ Y ¦ X&&Y ¦ X||Y ¦ !X
----------+---------+-------------+-----------+----------
0 ¦ 0 ¦ 0 ¦ 0 ¦ 1
0 ¦ 1 ¦ 0 ¦ 1 ¦ 1
1 ¦ 0 ¦ 0 ¦ 1 ¦ 0
1 ¦ 1 ¦ 1 ¦ 1 ¦ 0
==========+=========+=============+===========+==========
TUGAS
1. Buatlah Algoritma dan program untuk menghitung luas dan keliling lingkaran.
– Rumus luas=phi*r*r, sedangkan keliling= 2*phi*r dimana r adalah jari-
jari dan dimasukkan melalui keyboard. (phi=3.14)
Algoritma:
– Masukkan jari-jari
– Luas = phi*r*r
– Kelling = 2*phi*r
– Tampilkan luas
– Tampilkan keliling
12
BAB III
INPUT DAN OUTPUT
13
scanf("%c", &huruf ); /* membaca sebuah karakter */
printf("Masukkan nim Anda : ");
scanf("%s", &nim ); /* membaca sebuah string */
printf("Masukkan sebuah bilangan pecahan : ");
scanf("%f", &nilai ); /* membaca sebuah bilangan float */
printf("\nNilai variable yang Anda masukkan adalah :\n");
printf("jumlah = %d\n", jumlah );
printf("huruf = %c\n", huruf );
printf("nim = %s\n", nim );
printf("nilai = %f\n", nilai );
getch();
}
gets()
♦ Fungsi gets() digunakan untuk memasukkan data bertipe karakter dan tidak dapat
digunakan untuk memasukkan data numerik.
♦ Harus diakhiri dengan penekanan tombol enter.
♦ Cursor secara otomatis akan pindah baris.
♦ Tidak memerlukan penentu format
Contoh :
/* Program inputan tipe data karakter/string */
#include “stdio.h“
#include “conio.h“
void main()
{
char nama[20];
clrscr();
printf(“Masukkan nama Anda : “);
gets(nama);
printf(“Hello, Nama Anda adalah %s“, nama);
getch();
}
getchar()
♦ Fungsi getchar() digunakan untuk membaca data yang bertipe karakter
♦ Harus diakhiri dengan penekanan tombol enter
♦ Karakter yang dimasukkan terlihat pada layar
♦ Pergantian baris secara otomatis
getch() dan getche()
♦ Fungsi getch() dan getche() digunakan untuk membaca data karakter.
♦ Karakter yang dimasukkan tidak perlu diakhiri dengan penekanan tombol enter.
♦ Tidak memberikan efek pergantian baris secara otomatis
14
♦ Jika menggunakan fungsi getch() karakter yang dimasukkan tidak akan
ditampilkan pada layer sehingga sering digunakan untuk meminta inputan berupa
password.
♦ Sedangkan pada getche() karakter yang dimasukkan akan ditampilkan pada layar.
Contoh :
#include “stdio.h”
#include “conio.h”
void main()
{
char huruf1, huruf2;
printf(“Masukkan sebuah karakter : “);
huruf1 = getche(); // karakter yang dimasukkan akan terlihat di layar
printf(“\nKarakter yang Anda masukkan adalah %c\n”, huruf1);
printf(“\nMasukkan sebuah karakter lagi : “);
huruf2 = getch(); // karakter yang dimasukkan tidak terlihat di layar
printf(“\nKarakter yang Anda masukkan adalah : %c, huruf2);
getch();
}
3.2. MENAMPILKAN HASIL DI LAYAR
Untuk menampilkan hasil adalah semua prosesnya dilakukan oleh fungsi-fungsi.
Fungsi-fungsi ini prototypenya berada di file header stdio.h dan conio.h, seperti
putchar(), puts(), printf(), dan fprintf().
Fungsi printf()
Penentu format
%d untuk menampilkan bilangan bulat
%f untuk menampilkan bilangan pecahan
%c untuk menampilkan sebuah karakter
%s untuk menampilkan sebuah string
Fungsi scanf()
scanf(“%f”,&radius); c = getchar();
Penentu format
%c membaca sebuah karakter
%s membaca sebuah string (dibahas pada bab vii)
%i atau %d membaca sebuah integer desimal
%e atau %f membaca sebuah bilangan real (bisa dalam bentuk eksponensial)
%o membaca sebuah integer oktal
%x membaca sebuah integer heksadesimal
l awalan untuk membaca data long int (misal : %ld) atau untuk membaca data double
(misal : %lf) 15
L awalan untuk membaca data long double (misal : %Lf)
Contoh Listing Program :
Contoh :
#include<stdio.h>
main()
{
int X=123;
float Y=123.4567;
printf("%d",X);
printf("%f",Y);
}
TUGAS
1. Buatlah tampilan untuk menginput dan menampilkan biodata pribadi seseorang yang
terdiri dari nama, tempat, tanggal lahir, alamat, nomor telepon, agama dan jenis
kelamin.
16
BAB IV
PENGAMBILAN KEPUTUSAN
kondisi salah
benar
Statemen
Latihan 4.1
#include “stdio.h”
#include “conio.h”
17
void main()
{ float nilai;
printf(“Masukan nilai yang didapat : “);
scanf(“%f”, &nilai);
if(nilai > 65)
printf(“\n SELAMATANDA LULUS !!!!\n”);
getch();
}
langkah program :
• Masukkan Nilai Anda : ....
• Misal 65
• Apa yang dihasilkan?
• Apakah nilai lebih besar dari 65 ?
• Jika nilai lebih besar dari 65
• Maka
• Tampilkan hasil...
• Selamat, Anda Lulus
• end
Latihan 4.2
#include “stdio.h”
#include “conio.h”
main()
{
double beli, diskon;
printf("Jumlah pembelian : Rp. "); scanf("%lf",&beli);
diskon=0;
if (beli >= 50000)
diskon=0.05*beli;
printf("\nBesarnya diskon Anda Rp. %10.2lf",diskon);
getch();
clrscr();
Langkah program:
Latihan 4.3
#include “stdio.h”
#include “conio.h”
main()
{
int JumlahAnak;
18
float GajiKotor,Tunjangan,PersenTunjangan=0.2;
printf("GajiKotor ?");
scanf("%f",&GajiKotor);
printf("Jumlah Anak ?");
scanf("%d",&JumlahAnak);
if(JumlahAnak>2)PersenTunjangan=0.3;
Tunjangan=PersenTunjangan*GajiKotor;
printf("\nBesarnya Tunjangan=Rp %2.2f\n",Tunjangan);
getch();
clrscr();
}
Langkah Program:
• Jika jumlah anak >2 maka akan mendapat tunjangan =0.3 persen
dari gaji kotor
• Tampilkan hasil besarnya tunjangan= .....
• Jika jumlah anak <2 maka akan mendapat tunjangan=0.2 persen dari
gaji kotor
• Tampilkan hasil besarnya tunjangan= .......
• end
Contoh :
#include "stdio.h"
main()
{
int jumlahanak;
float gajikotor,tunjangan,potongan;
float persentunjangan=0.2;
float persenpotongan=0.05;
printf("gajikotor ?");
scanf("%f",&gajikotor);
printf("jumlah anak ?");
scanf("%d",&jumlahanak);
if(jumlahanak > 2)
{
persentunjangan =0.3;
persenpotongan = 0.07;
}
19
printf("\nbesarnya potongan=Rp %10.2f\n",potongan);
getch();
clrscr();
}
Langkah Program:
• Masukkan Gaji Kotor: ....
• 200000
• Masukkan Jumlah Anak:..
• 2
• Apa yang dihasilkan?
• Jika jumlah anak >2 maka akan mendapat tunjangan =0.3 persen
dari gaji kotor dan persen potongan sebesar 0.07
• Tampilkan hasil besarnya tunjangan= .....
• Tampilkah hasil besarnya potongan
• Jika jumlah anak <2 maka akan mendapat tunjangan=0.2 persen dari
gaji kotor
• potongan sebesar 0.05
• Tampilkan hasil besarnya tunjangan= .....
• Tampilkah hasil besarnya potongan
• end
C. Bentuk if-else
salah
kondisi
benar
statemen-1 statemen-2
20
Contoh 1 :
#include<stdio.h>
main()
{
float A,B;
if(B==0)
printf("%f dibagi dengan 0 adalah TAK BERHINGGA\n",A);
else
printf("%f dibagi dengan %f adalah %f\n",A,B,A/B);
}
Contoh 2:
#include <stdio.h>
#include <conio.h>
void main()
{
int Nilai;
printf("Masukkan Nilai Anda :");scanf("%d",&Nilai);
if (Nilai>60)
{
printf("Selamat, Anda Lulus");
}
else
{
printf("Maaf, Anda Belum Berhasil");
}
getch();
}
langkah program :
• Masukkan Nilai Anda : ....
• Misal 65
• Apa yang dihasilkan?
• Apakah nilai lebih besar dari 65 ?
• Jika nilai lebih besar dari 65
• Maka
• Tampilkan hasil...
• Selamat, Anda Lulus
• Jika nilai lebih kecil dari 65
• Maka
• Tampilkan Hasil....
• Maaf, Anda Belum Berhasil
• end
Latihan 4.4
#include "stdio.h"
#include "conio.h"
main()
{
21
char nama[20];
int umur;
clrscr();
printf("Nama Calon Pegawai : ");gets(nama);
printf("Umur : ");scanf("%d",&umur);
if (umur>=20 && umur <=30)
{
printf("\nSelamat..., %s",&nama);
printf("\n\nAnda Masuk Kategori Kenaikan Jabatan...!");
}
else
{
printf("\nMaaf..., %s",&nama);
printf("\n\nUmur Anda Tidak Masuk Kategori Kenaikan
Jabatan...!");
}
getch();
}
Hasil program :
Tampilan hasil
• Maaf..., Aditya
• Umur Anda Tidak Masuk Kategori Kenaikan Jabatan...!
Keterangan :
Syarat IF diperiksa dari atas ke bawah. Jika sebuah syarat benar,
pernyataan (statemen) yang mengikutinya akan dikerjakan dan yang
selanjutnya diabaikan. Jika tidak satupun syarat yang benar, ELSE
terakhir akan dikerjakan. Jika ELSE terakhir tidak ada dan tidak ada
syarat yang benar, maka tidak ada yang dikerjakan.
Contoh 1:
22
#include<stdio.h>
#include<conio.h>
#include<math.h>
main()
{
float A,B,C,D,X1,X2;
clrscr();
Masukkan nilai a ?4
Masukkan nilai b ?4
Masukkan nilai c ?1
Contoh 2 :
#include<stdio.h>
main()
{
int kd;
printf("masukkan kode hari:");
23
scanf("%d",&kd);
if(kd==0)
printf("minggu\n");
else if(kd==1)
printf("senin\n");
else if(kd==2)
printf("selasa\n");
else if(kd==3)
printf("rabu\n");
getch();
}
Latihan 4.5
#include<stdio.h>
main()
{
int no_menu;
clrscr();
printf("\n Menu Restaurant X’ Net Indonesia");
printf("\n============================");
printf("\n1. Nasi Goreng Informatika");
printf("\n2. Nasi Soto Ayam Internet");
printf("\n3. Gado-gado Disket");
printf("\n4. Bubur Ayam LAN");
printf("\n============================");
printf("\n\nMasukkan Pilihan Anda... :");scanf("%d",&no_menu);
if (no_menu==1)
printf("\nPilihan No.1 Nasi Goreng Informatika Rp.5.000,-");
else if (no_menu==2)
printf("\nPilihan No.2 Nasi Soto Ayam Internet Rp.7.000,-");
else if (no_menu==3)
printf("\nPilihan No.3 Gado-gado Disket Rp.4.500,-");
else if (no_menu==4)
printf("\nPilihan No.4 Bubur Ayam LAN Rp.4.500,-");
else printf("\nPilihan Anda tidak terdaftar pada menu...!");
getch();
}
Hasil :
Menu Restaurant X’ Net Indonesia
=====================================
1. Nasi Goreng Informatika Rp. 5.000,-
2. Nasi Soto Ayam Internet Rp. 7.000,-
3. Gado-gado Disket Rp. 4.500,-
4. Bubur Ayam LAN Rp. 4.000,-
=====================================
Masukkan Pilihan Anda... :1
Pilihan No.1 Nasi Goreng Informatika Rp.5.000,-
E. Statemen Switch
Pernyataan switch adalah pernyataan yang digunakan untuk menjalankan salah
satu pernyataan dari beberapa kemungkinan pernyataan, berdasarkan nilai dari sebuah
24
ungkapan dan nilai penyeleksi. Atau digunakan untuk pengambilan keputusan berganda
dengan menguji ungkapan bernilai bulat.
switch(kondisi){
case konstanta1:
statemen-statemen;
break;
case konstata2:
statemen-statemen;
break;
.
.
default:
statemen-statemen;
}
Keterangan :
Contoh 1:
#include<stdio.h>
#include<conio.h>
main()
{
int Pilih;
float Sisi, Jari, Tinggi;
clrscr();
printf("<<MENU>>\n");
printf("\n");
25
printf("1. Menghitung Isi Kubus\n");
printf("2. Menghitung Luas Lingkaran\n");
printf("3. Menghitung Isi Silinder\n");
printf("\n");
printf("Pilih Nomor(1-3) ?");
scanf("%d",&Pilih);
printf("\n");
switch(Pilih){
case 1:
printf("Panjang sisi Kubus ?");
scanf("%f",&Sisi);
printf("Isi Kubus=%f\n",Sisi*Sisi*Sisi);
break;
case 2:
printf("Jari-jari Lingkaran ?");
scanf("%f",&Jari);
printf("Luas Lingkaran=%f\n",3.14*Jari*Jari);
break;
case 3:
printf("Jari-Jari Lingkaran ?");
scanf("%f",&Jari);
printf("Tinggi Silinder ?");
scanf("%f",&Tinggi);
printf("Isi Silinder=%f\n",3.14*Jari*Jari*Tinggi);
break;
}
getch();
}
<<MENU>>
Pilih Nomor(1-3) ?3
Jari-Jari Lingkaran ?2
Tinggi Silinder ?4
Isi Silinder=50.240000
Contoh 2:
#include<stdio.h>
main(){
int kd;
printf("masukkan kode hari:");
scanf("%d",&kd);
switch(kd)
{
case 0:
printf("minggu\n");
break;
case 1:
26
printf("senin\n");
break;
case 2:
printf("selasa\n");
break;
default:
printf("bukan hari\n");
}
}
Latihan 4.6
#include<stdio.h>
main()
{
int kelas;
float harga,pajak;
clrscr();
printf("\nHarga Barang : Rp. "); scanf("%f",&harga);
printf("\nMasukkan Jenis Kelas (1-4) : "); scanf("%d",&kelas);
switch (kelas)
{
case 1 :
printf("\n\nJenis Barang : Makanan");
printf("\nHarga Barang : Rp. %6.2f",harga);
pajak = 0.1 * harga;
printf("\nPajak : Rp. %6.2f",pajak);
break;
case 2 :
printf("\n\nJenis Barang : Pakaian, Sepatu");
printf("\nHarga Barang : Rp. %6.2f",harga);
pajak = 0.15 * harga;
printf("\nPajak : Rp. %6.2f",pajak);
break;
case 3 :
printf("\n\nJenis Barang : Mesin-mesin");
printf("\nHarga Barang : Rp. %6.2f",harga);
pajak = 0.175 * harga;
printf("\nPajak : Rp. %6.2f",pajak);
break;
default :
printf("\n\nPilihan Kelas salah...!");
}
27
getch();
}
Hasil :
• Harga Barang : Rp. 50000
• Masukkan Jenis Kelas (1-4) : 2
Tampilkan
• Jenis Barang : Pakaian, Sepatu
• Harga Barang : Rp. 50000.00
• Pajak : Rp. 7500.00
TUGAS
1. Buatlah Struktur program hari dengan ketentuan input kode hari 1-7, 1 untuk kode
hari SENIN, 2 untuk kode hari SELASA, 3 untuk kode hari RABU, 4 untuk kode
hari KAMIS, 5 untuk kode hari JUM’AT, 6 untuk kode hari SABTU dan 7 untuk
kode hari MINGGU. Jika kode yang diinput tidak dikenal maka, proses program akan
berhenti dan akan menampilkan dilayar berupa (Kode yang Anda masukkan salah).
28
BAB V
PERULANGAN
Pernyataan While
• Sintak
while(kondisi)
pernyataan;
• Selama kondisi benar maka pernyataan dikerjakan
• Jika kondisi salah keluar loop
29
Proses perulangan akan dilakukan jika kondisi yang diseleksi di statemen while
masih bernilai benar, dan perulangan akan dihentikan jika kondisinya sudah bernilai
salah.
Contoh:
void main()
{ int x;
x = 1; /* awal variabel */
while (x <= 10) /* Batas akhir perulangan */
{ printf(“%d BAHASA C\n“, x);
x ++; /* variabel x ditambah dengan 1 */
}
getch();
}
Latihan 5.1 :
#include<stdio.h>
#include<conio.h>
#include<math.h>
main()
{
int i;
clrscr();
printf("*** TABEL SINUS DAN COSINUS DALAM SATUAN DERAJAT
***\n");
printf("%5s%12s%12s\n"," X"," Sinus(X)"," Cosinus(X)");
printf("%5s%12s%12s\n","----","---------","-----------");
i=0;
while(i<=360)
{
printf("%3d %11.5f %11.5f\n",i,sin(i/57.2958),cos(i/57.2958));
i+=30;
}
30
getch();
}
Hasil :
*** TABEL SINUS DAN COSINUS DALAM SATUAN DERAJAT ***
X Sinus(X) Cosinus(X)
---- --------- -----------
0 0.00000 1.00000
30 0.50000 0.86603
60 0.86603 0.50000
90 1.00000 0.00000
120 0.86603 -0.50000
150 0.50000 -0.86602
180 0.00000 -1.00000
210 -0.50000 -0.86603
240 -0.86602 -0.50000
270 -1.00000 -0.00000
300 -0.86603 0.50000
330 -0.50000 0.86602
360 -0.00000 1.00000
Perbedaan utama antara statemen do while dengan statemen while adalah letak
kondisi yang akan diseleksinya. Untuk while kondisi yang diseleksi terletak di awal
pernyataan
lingkup perulangan while, kondisinya harus benar dahulu.
benar
kondisi
31
salah
end
Contoh:
#include "stdio.h"
#include "conio.h"
void main()
{ int x;
x = 1;
do
{ printf("%d BAHASA C\n", x);
x ++;
}
while(x <= 10);
getch();
}
Latihan 5.2
#include "stdio.h"
#include "conio.h"
main ()
{
/* Kamus : */
int N;
int i;
/* Program */
printf ("Nilai N >0 = "); /* Inisialisasi */ scanf ("%d", &N);
i = 1; /* First Elmt */
printf ("Print i dengan REPEAT: \n");
do
{
printf ("%d \n", i); /* Proses */
i++; /* Next Elmt */
}
while (i <= N); /* Kondisi pengulangan */
getch();
clrscr();
}
Latihan 5.3 :
#include <stdio.h>
#include <conio.h>
32
#include <math.h>
main()
{
int i,x;
printf(" X 1/X X^2 X^3\n");
printf("---------------------------\n");
x=1;
do
{
printf("%5d %8.5f",x,1.0/x);
i=2;
do
{
printf("%8.0f",pow(x,i));
i++;
}
while(i<=3);
printf("\n");
x++;
}while(x<=10);
getch();
}
Hasil :
X 1/X X^2 X^3
-----------------------------
1 1.00000 1 1
2 0.50000 4 8
3 0.33333 9 27
4 0.25000 16 64
5 0.20000 25 125
6 0.16667 36 216
7 0.14286 49 343
8 0.12500 64 512
9 0.11111 81 729
10 0.10000 100 1000
Struktur perulangan for biasa digunakan untuk mengulang suatu proses yang telah
diketahui jumlah perulangannya. Dari segi penulisannya, struktur perulangan for
tampaknya lebih efisien karena susunannya lebih simpel dan sederhana.
Bentuk umum perulangan for adalah sebagai berikut :
for(Awal;Akhir;Peningkatan)statemen;
33
Keterangan :
• Awal adalah suatu ungkapan yang memeberikan nilai awal suatu variabel
untuk perulangannya (misal i=0).
• Akhir adalah suatu ungkapan yang menunjukkan suatu kondisi yang harus
dipenuhi supaya perulangan masih dapat terus dilakukan (misalnya i<=20 berarti
perulangan akan tetap terus dilakukan selama nilai variabel i masih lebih kecil atau
sama dengan 20).
• Peningkatan adalah suatu ungkapan yang merubah nilai-nilai variabel
pengontrol perulangan seetiap saat perulangan dilakukan (misal i++ berarti nilai i
ditambah dengan 1 setiap saat perulangan dilakukan)
Contoh 1:
bil = 10
#include <stdio.h>
main(){
int bil;
for(bil=10; bil<=100;bil+= 10)
printf("%d\n", bil);
} salah
bil <=100
benar
Cetak bil
bil = bil + 10
Contoh 2:
#include<stdio.h>
#include<conio.h>
main()
{
int i;
clrscr();
for(i=0;i<=5;i++)
printf("selamat pagi Indonesia\n");
getch();
}
34
selamat pagi Indonesia
Berikut ini akan diberikan beberapa contoh prulangan dengan statemen for dan
variasinya.
1. Perulangan Positif
Merupakan perulangan yang peningkatannya positif untuk variabel pengontrol
perulangannya (misal i++)
Contoh 1 :
#include<stdio.h>
main()
{
int i;
for(i=-2;i<=3;i++)printf("%d\n",i);
}
Keterangan :
Program diatas variabel i dimulai dari -2 dan perulangan dihentikan setelah nilai 3
dengan peningkatan nilai 1, sehingga variabel akan bernilai -2,-1,0,1,2, dan 3.
Contoh 2 :
#include<stdio.h>
main()
{
int i;
for(i=0;i<=10;i+=3)printf("%d\n",i);
}
Keterangan :
Program diatas dimulai dari i=0 dan diakhiri nilai i<=10 dengan peningkatan 3
2. Perulangan Negatip
Contoh :
#include<stdio.h>
main()
{
int i;
for(i=5;i<=0;i--)printf("%d\n",i);
}
35
float x,rata,total=0;
clrscr();
//menanyakan banyak dari data
printf("Banyaknya Data ?");
scanf("%d",&n);
printf("\n");
//memasukkan masing-masing data dari nilai i=1 ke i=n
for(i=1;i<=n;i++)
{
printf("Data ke %3d ?",i);
scanf("%f",&x);
total=total+x;
}
rata=total/n;
printf("\n");
printf("Banyaknya Data =%3d\n",n);
printf("Total Nilai Data =%f\n",total);
printf("Rata-rata Nilai Data =%f\n",rata);
getch();
}
Data ke 1 ?2
Data ke 2 ?3
Data ke 3 ?3
Banyaknya Data = 3
Total Nilai Data =8.000000
Rata-rata Nilai Data =2.666667
Keterangan :
Banyaknya perulangan adalah sebanyak n kali dan n adalah banyaknya data.
int i;
clrscr();
i=3;
for(;i<=5;i++)
printf("%d\n",i);
getch();
}
36
main()
{
int i;
clrscr();
for(i=1;i<=5;)
{
printf("%d\n",i);
i++;
}
getch();
}
6. Perulangan tanpa nilai awal, akhir, dan peningkatan
Contoh :
#include<stdio.h>
#include<conio.h>
main()
{
int i;
clrscr();
for(;;)
printf("Perulangan tanpa berhenti\n",i);
getch();
}
37
BAB VI
FUNGSI
38
– Digunakan untuk menambahkan string sumber ke bagian akhir dari
string tujuan.
– Bentuk umum : strcat(tujuan, sumber);
– strupr()
– Digunakan untuk mengubah setiap huruf dari suatu string menjadi huruf
capital.
– Bentuk umum : strupr(string);
– strlwr()
– Digunakan untuk mengubah setiap huruf dari suatu string menjadi huruf
kecil semua.
– Bentuk umum : strlwr(string);
Contoh :
#include "stdio.h"
#include "conio.h"
#include "string.h"
void main()
{ char nama[25];
strcpy(nama, "Muhammad Rosyid Al farabi");
printf("\nNama : %s", nama);
printf("\nBanyaknya karakter nama Anda adalah : %i", strlen(nama));
getch();
clrscr();
}
Latihan 6.1
#include "stdio.h"
#include "conio.h"
#include "string.h"
void main()
{
char satu[30] = "Fakultas Teknik";
char dua[30] = "Universitas Islam Attahiriyah";
clrscr();
strcat(satu, dua);
printf("Hasil penggabungannya : %s\n", satu);
printf("\nJika diubah menjadi huruf kapital semua :\n");
printf("%s", strupr(satu));
printf("\nJika diubah menjadi huruf kecil semua :\n");
printf("%s", strlwr(satu));
39
getch();
clrscr();
}
BAB VII
ARRAY
Contoh:
#include "stdio.h"
#include "conio.h"
void main()
{
int index;
int nilai[10];
40
printf("Input nilai 10 mahasiswa : ");
for(index=0; index < 10; index++)
{
printf("\nMahasiswa %i : ", index+1);
scanf("%i", &nilai[index]);
}
Latihan 7.1 :
/* File program : Array String */
#include <stdio.h>
void main()
{
int i,j;
char hari[][10] = {
"Minggu", "Senin",
"Selasa", "Rabu",
"Kamis", "Jumat",
"Sabtu"
};
/* Tampilkan data*/
for (i=0;i<7;i++)
printf ("%s\n", hari[i]);
getch();
clrscr();
}
41
Latihan7.2
Array dua dimensi merupakan array yang terdiri dari m buah baris dan n buah
kolom. Bentuknya dapat berupa matriks atau tabel.
Deklarasi array :
Tipe_array nama_array[baris][kolom];
Contoh :
42
Int X[3][4];
Contoh :
#include <stdio.h>
void main()
{
int baris,kolom;
int bil[3][5] = {
{1, 2, 35, 7, 10},
{6, 7, 4, 1, 0},
{2,4,8,10,12}
};
for(baris = 0; baris < 3; baris++ )
for(kolom = 0; kolom < 5; kolom++ )
getch();
clrscr();
}
Hasil
0 1 2 3 4
0 1 2 35 7 10
1 6 7 4 1 0
2 2 4 8 10 12
Deklarasi array pada bahasa C tidak sama dengan bahasa-bahasa lain. Biasanya setiap
dimensi dipisahkan oleh tanda koma, tetapi bahasa C meletakan setiap dimensi di dalam kurung
siku.
Contoh :
main()
{
43
int i,j;
int b[3] [5];
clrscr();
for(i=1; i<=3; i++)
{
for(j=1; j<=5; j++)
{
b[i] [j] = i*j;
printf("%3d", b[i] [j]);
}
printf("\n");
}
getch();
}
Array 2 dimensi disimpan di dalam matriks yang tersusun menjadi baris dan kolom.
Index pertama menunjukkan barisnya dan index kedua menunjukkan kolomnya. Ukuran array
di dalam memori yaitu : total byte = baris * kolom * ukuran dari tipe. Untuk array di atas
total byte = 3*5*2 = 30 byte
nama terdiri dari 10 elemen dengan panjang maksimum 25 karakter. Untuk membaca data
string, Anda dapat memakai fungsi gets(). Misalnya, Anda ingin membaca nama ketiga, maka
gets(nama[3]);
Contoh :
main()
{
char nama[10] [25];
float nilai[10], jumlah, rata;
int data,i;
clrscr();
printf("Banyaknya data : "); scanf("%d",&data);
for (i=1; i<=data; i++)
{
printf("Nama Mahasiswa : "); scanf("%s",&nama[i]);
printf("Nilai : "); scanf("%f",&nilai[i]);
jumlah += nilai[i];
}
clrscr();
printf("\nDaftar Nilai Ujian Bahasa C");
printf("\n==================================");
printf("\nNama Mahasiswa Nilai");
printf("\n==================================");
for (i=1; i<=data; i++)
44
{
printf("\n %-25s %5.1f", nama[i], nilai[i]);
}
printf("\n==================================");
rata= jumlah / data;
printf("\nRata-rata adalah %5.2f ", rata);
getch();
}
A B C D E \0
Setiap karakter akan menempati memori sebesar 1 byte
Byte terakhir otomatis akan berisi karakter NULL (\0)
8.3 Variabel String
Variabel string adalah variabel yang dipakai utuk menyimpan nilai string
– char name[15];
45
Deklarasi tersebut sebenarnya tidak lain merupakan deklarasi array bertipe char
46
Fungsi puts() akan menampilkan isi dari var_string dan secara otomatis
menambahkan karakter '\n' di akhir string
Sedangkan fungsi printf() akan menampilkan isi variabel string tanpa
memberikan tambahan '\n'
8.7 Mengakses Elemen String
Variabel string merupakan bentuk khusus dari array bertipe char
Elemen dari variabel string dapat diakses seperti halnya pengaksesan elemen
pada array
Contoh:
#include <stdio.h>
#define MAKS 256
main()
{
int i, jumkar = 0;
char teks[MAKS];
puts("Masukkan suatu kalimat (maks 255 karakter).");
puts("Saya akan menghitung jumlah karakternya.\n");
fgets(teks, sizeof teks, stdin); //masukan dr keyboard
for(i=0; teks[i]; i++)
jumkar++;
printf("\nJumlah karakter = %d\n", jumkar);
}
Latihan 8.1
#include <stdio.h>
#define MAKS 30
main(){
int i;
char asal[] = “Saya menyukai bahasa C”;
char hasil[MAKS];
i=0;
while (asal[i] != ‘\0’){
hasil[i] = asal[i];
i++;
}
hasil[i] = ‘\0’; /* beri karakter NULL */
printf(“Isi hasil : %s\n”, hasil);
}
47
8.8 Fungsi-Fungsi Mengenai String
Fungsi strcpy() untuk Menyalin Nilai String
Fungsi strlen() untuk Mengetahui Panjang Nilai String
Fungsi strcat() untuk Menggabung Nilai String
Fungsi strcmp() untuk Membandingkan Dua Nilai String
Fungsi strchr() untuk Mencari Nilai Karakter dalam String
BAB IX
POINTER
Variabel pointer sering dikatakan sebagai variabel yang menunjuk ke obyek lain.
Variabel pointer berisi alamat dari suatu obyek lain. Sebagai contoh, px adalah variabel
pointer dan x adalah variabel yang ditunjuk oleh px. Kalau x berada pada alamat
memori (alamat awal) 1000, maka px akan berisi 1000
zzzz px
1000
px = &x;
address
?
1000
x
48
Bentuk Umum:
tipe *nama_variabel
Contoh :
int *px;
px = &x;
y = *px;
Contoh:
#include <stdio.h> Alamat x = 0012FF78
main() Isi px = 0012FF78
{ Isi x = 87
int y, x = 87; Nilai px = 87
int *px; Nilai y = 87
px = &x;
y = *px;
printf("Alamat x = %p\n", &x);
printf("Isi px = %p\n", px);
printf("Isi x = %d\n", x);
printf("Nilai px = %d\n", *px);
printf("Nilai y = %d\n", y);
}
Analisa
Pada program di atas, dua pernyataan
px = &x;
y = *px;
px = &x;
49
• namun terdapat pernyataan
y = *px;
Contoh
Mengakses dan Mengubah isi Suatu Variabel Pointer
#include <stdio.h>
main()
{
float d = 54.5f, *pd;
printf("Isi d mula-mula = %g\n", d);
pd = &d;
*pd += 10;
printf("Isi d sekarang = %g\n", d);
}
Hasil :
Isi p1 sebelum ditambah adalah 65494
Isi p1 sesudah ditambah adalah 65496
Isi p2 sebelum dikurangi adalah 65494
Isi p2 sesudah dikurangi adalah 65492
Isi p2 sesudah ditambah dengan 5 adalah 65502
Keterangan :
Variabel a bertipe int, variabel p1 dan p2 adalah pointer yang
menunjuk ke variabel int
Pernyataan p1 ++ menyebabkan p1 bertambah dengan 2 sebab variabel
integer berukuran 2 byte juga dengan p2-- akan berkurang 2
50
Pernyataan p2=p2+5 menunjuk ke 5 elemen berikutnya sesuai dengan
tipe int
Contoh :
char nama[20], *p1;
p1=nama;
Variabel p1 berisi alamat dari elemen pertama dari variabel nama. Didalam bahasa C,
nama array tanpa index sama dengan alamat dari awal array. Pernyataan p1=nama
sama dengan p1=&nama[1]
Pernyataan p2=str[4] artinya p2 akan menunjuk elemen ke empat dari nama, cara
lainnya adalah :
p1=nama;
p2=*(p1+4);
Array dapat ditunjuk dengan index-nya dan dengan alamat. Penunjukan dengan alamat
akan lebih cepat daripada penunjukan dengan index-nya. Biasanya program C lebih
mementingkan kecepatan sehingga dipilih penggunaan alamat.
Contoh :
/* menggunakan index array */
main()
{
char str[80];
int i;
clrscr();
printf("Masukkan string dalam huruf besar : "); gets(str);
printf("String dalam huruf kecil : ");
for(i=0; str[i]; i++) printf("%c",tolower(str[i]));
getch();
}
/* menggunakan pointer */
#include <stdio.h>
#include <ctype.h>
main()
{
char str[80], *p;
clrscr();
printf("Masukkan string dalam huruf besar : "); gets(str);
printf("String dalam huruf kecil : ");
p=str;
while (*p) printf("%c",tolower(*p++));
getch();
}
51
Nama array tanpa index adalah pointer ke elemen pertama dari array. Fungsi string yang
mempunyai parameter berupa string hanya mengirimkan alamatnya bukan stringnya sendiri.
Contoh :
#include <stdio.h>
main()
{
char s[80];
char *p;
int i;
clrscr();
printf("Masukkan dua buah kalimat : "); gets(s);
for (i=0; s[i] && s[i] != '.'; i++);
p=&s[i+1];
printf("Kalimat keduanya adalah : \n");
printf(p);
getch();
}
Keterangan :
Pada pengulangan FOR akan berhenti jika pada string tersebut
ditemukan karakter titik atau null
Pernyataan p=&s[i+1], akan menunjuk ke karakter sesudah titik atau
null. Misalnya karakter kelima adalah titik, maka p akan menunjuk
ke karakter ke enam. Pernyataan tersebut dapat diganti dengan
p=&s[i]+1
ARRAY POINTER
Pernyataan int *x[10] mendeklarasikan array x yang berisi pointer integer. Untuk
mengisi elemen keempat dengan alamat dari variabel a yang bertipe int, pakailah :
x[4] =&a, sedangkan untuk memperoleh isi variabel a adalah : *x[4]
Contoh :
main()
{
char *menu[] = {
"Nasi Goreng + Telur Mata Sapi\n",
"Bistik Ayam\n",
"Soto Ayam Madura\n",
"Gado-gado\n"
};
int no_menu;
clrscr();
printf("Masukkan menu pilihan Anda (1-4) : "); scanf("%d",&no_menu);
printf("\nMenu yang Anda minta adalah : \n");
printf("%s",menu[no_menu-1]);
getch();
}
52
DAFTAR PUSTAKA
Inggriani Liem, “Contoh Program Kecil Dalam Bahasa C”, Institut Teknologi Bandung,
2003.
53
54