Modul ini membahas tentang pemrograman dasar bahasa C/C++, meliputi tujuan pembelajaran, konsep dasar seperti tipe data, input output, dan contoh program sederhana.
1. BAHASA C/C++
Oleh :
Dra. Wahyuni Z Imran , Msc
Modul Mata kuliah Selengkapnya bisa di download gratis di website >>
http://www.dagangku.com
2. Tujuan Instruksional:
Tujuan Instruksional
Umum
:Setelah mengikuti praktikum ini peserta dapat menbuat program
dengan bahasa C++ dan mengkompilasi dengan menggunakan
gcc yang ada dilinux
Khusus
:Setelah mengikuti praktikum ini:
1.
2.
3.
4.
5.
Peserta menegerti tentang konsep pemrograman di C++
Peserta mengerti dan memahaimi perintah-perintah di C++
Peserta mengerti seleksi kondisi di C++
Peserta mengerti tentang struktur data di linux
Peserta dapat membuat programC++ sederhana
3. PENDAHULUAN
Pelatihan Bahasa C bertujuan untuk memberikan pengetahuan kepada peserta tentang
konsep dasar C yang diperlukan untuk membuat suatu program C. Diharapkan dengan
diketahuinya konsep-konsep dasar pemrograman C, peserta dapat menyelesaikan
suatu permasalahan dengan cara membuat program sendiri.
Konsep pemrograman meliputi konsep tipe bilangan, konsep pengulangan, konsep
pencabangan dan lain-lainnya. Semua akan dibahas pada bab-bab khusus.
Untuk dapat membuat program sendiri, pertama-tama tentulah masalah yang akan
dibuat programnya harus diketahui dan dipahami betul. Identifikasikan masukan dari
masalah tersebut, apakah berupa bilangan bulat, atau bilangan desimal, atau suatu
karakter.Setelah diketahui masukannya, lalu identifikasi lagi proses yang akan dibuat
dengan masukan tadi. Jika proses juga telah djabarkan, perlu diuraikan keluaran yang
akan dihasilkan oleh proses tadi. Lebih mudah lagi dapat dijabarkan melalui diagram
di bawah ini:
Masukan
Proses
Keluaran
A
C=A+B
C
B
Gambar 1.
Kemudian langkah-langkah penyelesaian masalah tersebut dapat diuraikan lebih rinci
lagi menggunakan barisan-barisan tulisan yang menjabarkan langkah tadi dengan
kata-kata. Deretan langkah-langkah tersebut dalam ilmu informatika disebut
Algoritma. Algoritma dapat diuraikan dengan bahasa apa saja. Jika orang yang
membuat algoritma ini berbahasa indonesia, maka algoritma dapat dituliskan dalam
bahasa indonesia.
Biasanya seorang pembuat program
atau lebih dikenal dengan istilah programmer
akan menulis algoritmanya dengan standart baku. Perubahan itu bertujuan agar semua
orang, baik orang berbahasa indonesia, maupun orang berbahasa lain bisa mengerti
langkah-langkah yang akan dilakukan.
maka algoritma tersebut dirubah kedalam
deretan langkah-langkah yang dituliskan dengan istilah-istilah yang telah baku di
dalam ilmu informatika, sehingga terbentuklah pseudocode. Istilah ini tentunya
menggunakan kosa kata bahasa inggris.
Implementasi Pseudocode atau algoritma ke dalam bahasa pemrograman tertentu akan
menjadi suatu program. Jika implentasi tersebut menggunakan bahasa C maka hasil
yang terbentuk adalah program C. Lain lagi jika implementasi menggunakan bahasa
Basic maka hasilnya berupa program Basic.
4. Bagaimana membedakan program C dengan program Basic dari nama filenya?
Jawabannya adalah dengan melihat bagian ekstensi suatu file, jika program c maka
file yang dibuat diberi nama xxxx.C. Sedangkan untuk program Basic, file yang
dibuat diberi nama xxxx.BAS
Singkatnya, langkah-langkah pembuatan program
tadi dapat diuraikan sebagai
berikut:
-Masalah
-Algoritma
-Pseudo Code
-Program
Contoh:
Seseorang ingin menghitung suatu penjumlahan dari dua bilangan A dan B dan hasil
penjumlahannya akan disimpan dalam satu bilangan diberi nama C. Jenis bilangannya
adalah bilangan bulat. Nilai dari A dan B telah ditentukan sebelumnya, yaitu A=5 dan
B=10. Sebelum nilai-nilai tersebut ditampilkan, akan ditulis ” Hallo, Selamat
Datang!”. Baru setelah itu, akan ditampilkan nilai A, nilai B dan nilai C.
Ilustrasi proses pembuatan programnya dapat dilihat pada gambar 2 di bawah ini.
5. Algoritma
------
Kode Semu
Deklarasikan variabel A adalah bilangan Bulat
Deklarasikan variabel B adalah bilangan Bulat
Deklarasikan variabel C adalah bilangan Bulat
Cetak “Hallo, Selamat Datang !”
Beri nilai A sama dengan 5
Beri nilai B sama dengan 10
Jumlahkan A dan B, simpan di C
Cetak A, ganti baris
Cetak B, ganti baris
Cetak C, ganti baris
-
Set A integer and equal 5
Set B integer and equal 10
Set C integer
Print “Hallo, Selamat Datang !”
Calculat C equal A plusB
Print A
Print B
Print C
Gambar 2. Langkah pembuatan program
MONITOR : Layar
Tampilan
Program C:
int main()
{
int A=5;
int B=10;
int C;
printf(“Hallo Selamat Datang!n”);
C=A+B;
printf(“ %d n”,A);printf(“ %d n”,B);
printf(“ %d n”,C);
getch();
return 0;
Hallo Selamat Datang!
5
10
15
}
Program C:
}
6. // Program C
/* Program #1 */
#include <stdio.h>
#include <conio.h>
int main()
{
int A, B, C;
clrscr();
printf(“Hallo Selamat Datang!n”);
A= 5;
B=10;
C=A+B;
printf(“ %d n”,A);
printf(“ %d n”,B);
printf(“ %d n”,C);
getch();
return 0;
}
7. BAB I
KONSEP DASAR C
Bab ini memperkenalkan beberapa perjanjian cara pemberian nama dan cara deklarasi
tipe data primitif seperti bilangan bulat, bilangan desimal dan karakter yang
diperbolehkan dalam bahasa C.
1.1 IDENTIFIERS
Identifier adalah bentuk paling sederhana dalam Program C, terdiri dari barisan
huruf(„A‟….‟Z‟, „a‟…‟z‟,‟_‟) dan bilangan („0‟…‟9‟). Sebuah
Identifier harus
dimulai dari sebuah huruf. Dalam bahasa C, huruf besar berbeda dengan huruf
kecil. Hal ini disebut dengan istilah case sensitive
Contoh:
Cara penulisan yang benar :
angka, Angka , ANGKA, n1, jumlah_angka, PajakPenjualan
Cara penulisan yang salah:
2angka, sepuluh%, Jumlah-Total
Salah satu cara penulisan program yang baik, dilihat dari pemberian nama
Identifier yang diskriptif. Dengan kata lain, dari membaca nama identifier saja sudah
diketahui maksudnya. Aturan ini juga berlaku dalam pemberian nama identifier yang
terdiri lebih dari satu kata. Karena dalamm bahasa C, huruf besar dan kecil diartikan
sesuatu yang berbeda, maka identifier yang terdiri lebih dari satu kata dapat dituliskan
dengan dimulai huruf besar untuk huruf pertama setiap katanya.
Contoh:
Cara penulisan yang berbeda:
pajak_penjualan, nama_depan, PajakPenjualan, NamaDepan
1.2 KEYWORDS/RESERVED WORDS
Ada kumpulan nama Identifier yang disebut keywords atau reserved words, yang
digunakan untuk membentuk bahasa C itu sendiri. Nama-nama ini dituliskan
dengan huruf kecil.
asm
auto
continue
default
float
for
new
operator
short
signed
try
typedef
8. 1.3 TIPE DATA PRIMITIF
Tipe data primitif ini dibagi menjadi 3 kategori;
Bilangan bulat : int, short, long
Bilangan desimal ; float, double
Karakter: char
Penggabungan Tipe data dengan penulisan identifier dalam sebuah program
menyatakan suatu pendeklarasian variable tertentu.
tipe var;
contoh : int angka;
float x;
tipe var1,var2,var3;
contoh : int a, b, c;
char s, t;
//variabel tunggal
//variabel majemuk
1.3.1 Tipe Bilangan Bulat
Tipe untuk bilangan bulat : int, short int, long int
Kesanggupan masing-masing tipe ditentukan oleh jenis Hardware.
short int
jangkauan nilai yang dapat diberikan pada variabel dengan tipe ini berkisar antara
–32768 sampai dengan 32767. Jika jangkauan nilai yang diinginkan berkisar
antara 0 sampai dengan 65535 maka tambahkan kata unsigned sebelum int.
long int
jangkauan nilai ini lebih besar yaitu antara –231 sampai dengan 231-1
Cara pendeklarasiannya:
int ANGKA = 50;
short mulai = 1;
unsigned int PotonganHarga=60000;
long L1,L2,L3,L4=1000;
1.3.2 Tipe Karakter
Karakter disimpan sebagai data numerik. Biasanya yang digunakan adalah
standard ASCII. Cara penulisan konstanta karakter ditulis dengan tambahan tanda
petik tunggal.
Cara mendeklarasikannya :
char ch=‟T‟;
// pendeklarasian satu karakter dengan inisialisasi
Deretan karakter akan membentuk suatu string. Penulisannya diapit tanda petik
dua (“Sejahtera”).
9. Cara mendeklarasikannya :
char s[10]=”Sejahtera” ; //pendeklarasian string ( deretan karakter)
// dengan inisialisasi
Escape (Control) Codes
Kode kontrol terletak pada jangkauan 0 sampai 31 dan menyatakan informasi
kontrol terminal atau informasi.
Macam-macam kode kontrol dapat dilihat pada
table berikut.
Nama
Kode C
Deskripsi
Newline
„n‟
Karakter ganti baris. Sebagai tanda ganti
baris baru pada file teks atau file ASCII
Return
„r‟
Akhir dari suatu input dari keyboard
Horizontal tab
„t‟
Pindah ke daerah tab berikutnya
Backspace
„b‟
Geser cursor ke kiri satu karakter.
Biasanya system menghapus karakter
sebelumnya.
1.3.3 Tipe bilangan desimal
Tipe untuk bilangan desimal : float, double, long double
float
Jangkauan nilai yang dapat diberikan pada variabel tipe ini berkisar
antara 3.4E-38 sampat dengan 3.4E+38
10. double dan long double
Jangkauan nilai yang dapat diberikan pada variabel tipe ini berkisar
antara 1.7E-308 sampat dengan 1.7E+308
Contoh:
Cara pendeklarasiannya:
float x= 0.21, z= 10e4;
double Avogadro = 6.02e23;
1.3.4 Nama konstanta
Dalam membuat program, seringkali diperlukan penulisan suatu konstanta,
misalkan nilai Nilai konstanta tidak akan berubah dalam suatu program.
.
Cara pendeklarasianya:
const double PI = 3.141592653589793
1.4 STANDARD INPUT OUTPUT
Agar program menjadi iteraktif, kadang diperlukan input dari user. Ini dapat
dilakukan dengan perintah scanf() atau gets(). Sedangkan untuk menampilkan data
di layar monitor dapat dilakukan dengan perintah printf(). Fungsi-fungsi ini
didefinisikan pada file stdio.h. Dalam penggunaan fungsi-fungsi di atas kadang
diperlukan string kontrol yang gunanya untuk memformat kode.
Macam-macam string kontrol
Kode format
%d
%f
%c
%s
kegunaannya
Tampilkan bilangan bulat
Tampilkan bilangan desimal
Tampilkan sebuah karakter
Tampilkan sebuah string
1.4.1 Fungsi scanf()
Salah satu kegunaan scanf() adalah untuk mendapatkan input yang dimasukkan
user melalui keyboard. Bentuk dasarnya yaitu:
scanf(“string kontrol”, deretan argument) ;
String kontrol dapat berisi salah satu dari kode format atau gabungan dari
beberapa kode format, tergantung dari banyaknya deretan argument yang ada.
Banyaknya
kode format harus sama dengan banyaknya argument. Pada deretan
argument, tanda & harus ada di setiap awal sebuah variabel yang akan
menampung nilai yang diberikan melalui keyboard.
11. Contoh:
scanf(“%d”,&bilangan);
scanf(“%f %f “, &potongan, &jumlah);
1.4.2 Fungsi gets()
Fungsi gets() akan memiliki argument berupa nama variabel yang bertipe string
dan membaca deretan karakter dari keyboard sampai user menekan tombol
ENTER.. ENTER tidak disimpan melainkan tanda akhir NULL („0‟).
Contoh:
gets(str);
// char str[10]
1.4.3 Fungsi printf()
Fungsi printf() akan menampilkan output pada monitor. Bentuk dasarnya yaitu:
printf(“string kontrol “, deretan argument);
contoh:
printf( “%s %d”,”Ini adalah sebuah string”, 200);
printf( “Ini adalah sebuah string %d “,200);
1.5 CONTOH PROGRAM C SEDERHANA
Dalam menulis program, sebaiknya diawali dengan pemberian penjelasan tentang
tujuan. Hal ini dapat diletakkan dalam bentuk komentar. Pernyataan berupa komentar
ditandai dengan tanda (/*…….*/).
12. /* Penjelasan tentang tujuan program, nama pembuat,
tanggal pembuatan program dsb */
#include <stdio.h>
#include <conio.h>
/*Turbo C preprocessor */
int main()
{
/* deklarasi variabel yang digunakan */
int bilangan_bulat1, bilangan_bulat2 ;
float bilangan_desimal1, bilangan_desimal2;
/*input dari keyboard */
printf(“Masukkan input dari keyboard”);
scanf(“%d”, &bilangan_bulat1);
………
/*proses*/
/*output ke monitor */
printf(“ Nilai bilangan_bulat1 = %d n“, bilangan_bulat1);
getch();
return 0;
/*untuk menampilkan screen output */
/*nilai balik fungsi main() */
}
Latihan Bab 1
1. Apakah penulisan nama variabel di bawah ini benar menurut aturan bahasa C.
Jika salah, perbaiki.
a. McDonald
b. O‟Brien
c. 4_Score
d. Is_Largest_int
e. _mainprog
f. A1B2C3
g. Giants
h. 7th_inning
2. Tuliskan deklarasi C untuk variabel dan tipe data:
a. Sebuah bilangan bulat N dengan nilai awal 5
b. Sebuah bilangan bulat 16-bit M dengan nilai awal 5
13. c. Sebuah bilangan bulat 32-bit L dengan nilai awal 600055
d. Sebuah karakter C dengan nilai awal „A‟
e. Dua bilangan bulat P dan Q . Nilai P tidak diinisialisasi sedangkan
nilai Q bernilai awal 455
3. Berikan nilai desimal ASCII yang mewakili karakter
a. „V‟
b. „6‟
c. „!‟
d. „~‟
e. „t‟
f. Tab
g. BackSpace
h. Carriage Return
4. Tentukan bentuk String yang memiliki deretan kode ASCII
a. 66 121 116 101
b. 49 50 51 32 71 111 33
Latihan Pemahaman Program :
Coba jabarkan langkah-langkah dalam program ini dan bagaimana hasil keluarannya.
/* Program contoh penggunaan int dan unsigned int */
#include <stdio.h>
#include <conio.h>
/*Turbo C preprocessor */
int main()
{
/* deklarasi variabel yang digunakan */
int i;
unsigned int j;
clrscr() ; // bersihkan layar
/*proses*/
j=60000;
i=j;
/*output ke monitor */
printf(“%d %u n“, i,j);
getch();
/*untuk menampilkan screen output */
return 0;
/*nilai balik fungsi main() */
}
14. /* Program penggunaan scanf */
#include <stdio.h>
#include <conio.h>
int main()
{
char nm[10];
int umur;
printf(„Siapa nama Anda : ”);
scanf(“%s”, nm); /*nama disimpan dalam variabel nm */
printf(“Berapa umur Anda”);
scanf(“%d”, &umur);
/*nilai disimpan dalam variabel umur*/
printf(“Umur saya %d tahun n”,umur);
getch();
return 0;
}
/*Program#5 : Penulisan variabel char dan string */
int main()
{
char ch;
char str[80];
/*deklarasi variabel bertipe karakter*/
/*deklarasi variabel bertipe string */
printf(“Ketikkan sembarang tomboln”);
ch=getche(); /*baca satu karakter dari keyboard*/
printf(“Karakter yang diketik adalah %cn”,ch);
printf(“Masukkan nama Anda dan akhiri dengan 0 : ”);
gets(str);
printf(“Hallo %sn”, str);
getch();
return 0;
}
15. BAB II
OPERATOR
2.1 Operator Aritmatika
Program komputer melakukan perhitungan dengan cara mengkombinasikan
bilangan numeric dengan operator. Negasi (-) merupakan operator unary karena
terdiri dari satu nilai numerik dan akan merubah tanda nilai tersebut. Sedangkan
(+),(-),(*) dan (/) adalah operator binary karena memerlukan dua operand.
Misalkan dideklarasikan
int
M=6,N=8;
double X=2.3, Y=6.7;
(-M-N+2)*4 = (-14+2)*4 = -48
-X*Y = -15.41
Pada operator (/) terdapat perbedaan untuk tipe bilangan bulat dan bilangan
desimal.
Pembagian bilangan bulat
17 / 5 = 3 (hasil pembagian/quotient)
17 % 5 = 2 (sisa hasil pembagian/remainder)
6.0 % 4 (tidak boleh)
Pembagian bilangan desimal
17.0 / 5 = 3.4
4.7 / 2 = 2.35
4.0 / 3 = 1.333333
2.2 Operator Assignment
Operator ini berguna untuk memindahkan nilai variabel.
Int I = 3, SIZE = 40, K;
K = I + SIZE;
SIZE = 50;
K = I = 5;
/*deklarasi
16. 2.3 Operator Compound Assignment
Assignment dan operator aritmatik dapat digabungkan menggunakan operator
compound Assingment .
Variabel op= ekpresi -> dihitung sebagai -> variabel = variabel op ekspresi
Misal X = 14 dan Y = 3
Compound Assignment
X += 5;
Y += X-2
Y *= 2
Simple Assignment
X=X+5
Y = Y + (X-2)
Y=Y*2
result
X bernilai 19
Y bernilai 15
Y bernilai 6
2.4 Operator Increment dan Decrement
Format prefix :
++X
X = 5;
Y = ++X * 10;
Format postfix:
( increment )
-- X (decrement )
/* operasi ++ dilakukan dulu, jadi X bernilai 6
/* kemudian lakukan perkalian 6 * 10
X++ (increment)
X-- (decrement)
X = 5;
Y = X-- * 10;
/* operasi X * 10 dilakukan terlebih dahulu
/* jadi nilai Y = 50. Kemudian nilai X dikurang satu.
/* Sekarang X bernilai 4
2.5 Operator Bitwise
Operator ini beroperasi pada setiap bit dalam proses penyimpanan.
AND (&) :
a = a&b
setiap bit dari b diANDkan dengan padanan bit dari a, hasilnya disimpan
di variabel a.
OR (|)
a=a|b
setiap bit dari b diORkan dengan bit padanannya dari a, hasilnya disimpan
di variabel a
XOR (^)
a=a^b
17. setiap bit dari b diXORkan dengan bit padanan dari a, hasilnya disimpan di
variabel a
NOT (-)
a=-a
setiap bit di a dirubah (dari 1 menjadi 0 dan kebalikannya)
Geser Kiri (<<)
a=a<<4
geser bit sebanyak 4 bit ke kiri, bergulung.
Geser Kanan (>>)
a=a>>4
geser bit sebanyak 4 bit ke kanan, bergulung.
2.6 Operator Relational
Operator ini berguna untuk membandingkan antara dua variabel, hasilnya berupa
boolean (benar=1/salah=0).
Sama dengan (==)
Tidak sama dengan (!=)
Lebih besar dari (>)
Lebih besar/sama dengan (>=)
Lebih kecil dari (<)
Lebih kecil/sama dengan (<=)
2.7 Operator Logical
AND (&&)
OR (||)
NOT (!)
Contoh 2.1
/* Program merubah data tinggi seseorang dalam satuan feet, inch dan dirubah ke
dalam satuan m, cm*/
#include <stdio.h>
#include <conio.h>
/*Turbo C preprocessor */
int main()
{
/* deklarasi variabel yang digunakan */
const float inch_ke_cm = 2.54;
int totalInchi, feet,inch ;
float m, cm;
18. /*input dari keyboard */
printf(“Masukkan ukuran tinggi Anda dalam satuan inchi”);
scanf(“%d”, &totalInchi);
/*proses*/
feet = totalInchi/12;
inch = totalInchi%12;
cm = inch_ke_cm * totalInchi; //konversi ke float
m = cm/100;
/*output ke monitor */
printf(“ Ukuran tinggi Anda = %d feet dan %d inchi “, feet,inch);
printf(“ Ukuran tinggi Anda dalam satuan cm = %f n“, cm);
printf(“ Ukuran tinggi Anda dalam satuan m = %f n“, m);
getch();
return 0;
/*untuk menampilkan screen output */
/*nilai balik fungsi main() */
}
Jika program ini dijalankan:
Masukkan ukuran tinggi Anda dalam satuan inchi 67
Ukuran tinggi Anda = 5 feet dan 7 inchi
Ukuran tinggi Anda dalam satuan cm = 170.18
Ukuran tinggi Anda dalam satuan m = 1.7018
19. BAB III
KONSEP PENGULANGAN
3.1 PENGULANGAN FOR (FOR_LOOP)
Dalam pembuatan program, seringkali kita dihadapkan oleh masalah
pengulangan. Proses yang berulang-ulang sebanyak n kali dalam bahasa C
dapat dinyatakan dengan pernyataan for.
Penulisan for dengan satu perintah tidak perlu menggunakan
for (inisialisasi; syarat pengulangan; perubah nilai cacah)
pernyataan/perintah;
Contoh 3.1 :
#include <stdio.h>
#include <conio.h>
int main()
{
int i;
for(i=0; i<=5; i++) printf("Langkah ke %d n", i);
getch();
return 0;
}
Penulisan for dengan jumlah perintah lebih dari satu menggunakan tanda {}.
for (inisialisasi;syarat pengulangan;perubah nilai cacah)
{
pernyataan/perintah;
pernyataan/perintah;
pernyataan/perintah;
}
Contoh 3.2:
#include <stdio.h>
#include <conio.h>
int main()
{ int i;
int masukan;
for(i=0; i<=5; i++)
{
printf("Masukkan bilangan Ke- %d ",i);
scanf("%d",&masukan);
printf("Masukkan Ke- %d adalah %d n",i,masukan);
}
getch();
return 0;
}
20. Inisialisasi bisa terdiri lebih dari satu variabel.
for(inisialisasi1, inisialisasi2;syarat pengulangan; perubah nilai cacah)
Contoh 3.3:
#include <stdio.h>
#include <conio.h>
int main()
{ int i;
int k;
for(i=0, k=2; i<=5; i++)
{
k=k+i;
printf("Nilai k = %d n", k);
}
getch();
return 0;
}
Untuk pengulangan tak berhingga
for( ; ; )
Contoh 3.4:
#include <stdio.h>
#include <conio.h>
int main()
{
for( ; ; )
{
char ch;
printf("ntSelamat Datangnn");
printf("Jika ada mau keluar tekan 'Y' atau 'y' ");
ch=getche();
if(ch=='Y'||ch=='y') break;
}
getch();
return 0;
}
Catatan:
ch adalah variabel bertipe karakter ,
getche adalah fungsi built-in untuk menerima masukan berupa karakter
kemudian ditampilkan ke layar
break adalah pernyataan untuk memberhentikan proses.
Apabila dalam suatu pengulangan terdapat didalamnya pengulangan lagi maka
pengulangan demikian disebut nested for
21. Nested for
Contoh 3.5:
#include <stdio.h>
#include <conio.h>
int main()
{ int i;
int j;
for(i=0; i<=5; i++)
for(j=0; j<=3; j++)
{
printf(" Nilai i= %d dan j= %d n",i,j);
}
getch();
return 0;
}
3.2. PENGULANGAN WHILE (WHILE_LOOP)
Proses pengulangan lain dapat dinyatakan dengan perkataan WHILE. Bedanya
dengan for terletak di perubah nilai cacah. Pada pernyataan while hanya
diperlukan satu syarat saja.
while (syarat) pernyataan/perintah;
Contoh 3.6:
#include <stdio.h>
#include <conio.h>
int main()
{ int i;
int j;
i=0;
while(i<5)
{
printf("Nilai Kurang dari Lima n");
}
getch();
return 0;
}
while (syarat)
{
pernyataan;
pernyataan;
}
22. Contoh 3.7:
#include <stdio.h>
#include <conio.h>
int main()
{ int i;
float bilangan;
i=0;
while(i<5)
{
printf("Masukkan suatu bilangan n");
scanf("%d",&bilangan);
i++;
}
getch();
return 0;
}
3.3. PENGULANGAN DO_WHILE (DO_WHILE LOOP)
Pengulangan do_while meletakkan syarat setelah perintah-perintah yang ada.
Berarti semua perintah yang terdapat didalam do_while akan diproses minimal
satu kali, walaupun nantinya syarat yang diberikan tidak dipenuhi. Disinilah
letak perbedaannya dengan pernyataan while. Pada while, jika syarat tidak
dipenuhi, maka semua pernyataan didalamnya tidak akan diproses.
do
{
perintah/pernyataan;
perintah/pernyataan;
}while( syarat );
Contoh 3.8:
#include <stdio.h>
#include <conio.h>
int main()
{ int i;
float bilangan;
i=0;
do
{
printf("Masukkan suatu bilangan n");
scanf("%d",&bilangan);
i++;
}while(i<5)
getch();
return 0;
}
23. BAB IV
KONSEP PENCABANGAN
Selain proses pengulangan, dalam pembuatan program terdapat pula masalah untuk
menentukan pilihan. Sebagai contoh, bagaimana menentukan suatu bilangan adalah
bilangan genap atau bilangan ganjil. Cara penyelesaiannya yaitu dengan
menggunakan konsep pencabangan. Bahasa C menyediakan pernyataan IF atau IFELSE, atau pernyataan SWITCH-CASE.
4.1. PENCABANGAN IF
if (syarat) perintah;
Contoh 4.1 :
#include <stdio.h>
#include <conio.h>
int main()
{
int a;
a=4;
if(a%2==0) printf("Nilai a adalah genap");
getch();
return 0;
}
if (syarat)
{
perintah/pernyataan;
perintah/pernyataan;
}
Contoh 4.2
0
#include <stdio.h>
#include <conio.h>
int main()
{
int a;
int b;
a=3,b=7;
if(a > b)
{
printf("Nilai a lebih besar dari nilai b n");
printf("Selisih nilai mereka adalah %d n", a-b);
}
getch();
24. return 0;
}
4.2. PENCABANGAN IF_ELSE
if(syarat) perintah;
else perintah;
Contoh:
if(a%2!=0) printf(“Bilangan a adalah ganjiln”);
else printf(“Bilangan a adalah genap”);
if (syarat)
{
perintah/pernyataan;
perintah/pernyataan;
}
else
{
perintah/pernyataan;
perintah/pernyataan;
}
Contoh 4.3.
#include <stdio.h>
#include <conio.h>
int main()
{
float a, b, c, t, u ;
a=9.0;
b=4.0;
c=2;
if (a==b && c<=5)
{
t=a+b/5*c;
printf("Nilai t = % f n",t);
}
else
{
u=(2-a/3)+(a*b-4);
printf("Nilai u=%f n",u);
}
getch();
return 0;
}
25. if (syarat)
if(syarat) perintah;
else perintah;
else
if(syarat) perintah;
else perintah;
Contoh 4.4 :
#include <stdio.h>
#include <conio.h>
int main()
{ int umur;
printf("Berapa umurnya anda : ");
scanf("%d", &umur);
if (umur >40)
if(umur<60) printf("Anda sudah tuan");
else printf("Anda termasuk manulan");
else
if(umur<20) printf("Anda dalam masa remajan");
else printf("Anda sudah dewasan");
getch();
return 0;
}
4.3. LOOP BREAKING
Jika pernyataan break terdapat dalam suatu proses pengulangan, komputer
akan segera memberhentikan proses pengulangan dan langsung ke luar loop
menuju pernyataan selanjutnya.
Contoh 4.5 :
#include <stdio.h>
#include <conio.h>
int main()
{
int t;
for(t=0;t<100;t++)
{
printf(“”%d”,t);
if(t==10) break;
}
getch();
return 0;
}
26. 4.4. PERNYATAAN CONTINUE
Cara kerja pernyataan continue hampir sama dengan break, hanya saja pada
continue proses tidak segera berhenti melainkan memaksa proses iterasi
berikutnya dengan mengabaikan pernyataan berikutnya.
Contoh 4.6 :
#include <stdio.h>
#include <conio.h>
int main()
{
int x;
for(x=0; x<100; x++)
{
if( x%2 ) continue;
printf(“%d “, x);
}
getch();
return 0;
}
4.6. PENCABANGAN SWITCH_CASE
switch(variabel)
{
case 1: pernyataan;
break;
case 2 : pernyataan;
break;
….
default: pernyataan;
break;
}
switch(variabel)
{
}
case „a‟: pernyataan;
break;
case „b‟ : pernyataan;
break;
….
default: pernyataan;
break;
27. Contoh 4.7 :
#include <stdio.h>
#include <conio.h>
int main()
{ int angka;
printf("Masukkan angka (1-7) ");
scanf("%d",&angka);
switch(angka)
{
case '1': printf("M I N G G U");
break;
case '2': printf(" S E N I N ");
break;
case '3': printf("S E L A S A ");
break;
case '4': printf("R A B U ");
break;
case '5': printf("K A M I S ");
break;
case '6': printf("J U M A T ");
break;
case '7':printf("S A B T U ");
break;
default : printf(" ANDA SALAH MEMBERI ANGKA");
}
getch();
return 0;
}
BAB V
KONSEP ARRAY DAN STRING
Pendeklarasian variabel pasti akan dijumpai saat pembuatan program. Untuk variabel
yang jenisnya sama, seperti nomer registrasi pokok mahasisma, diperlukan
pendeklarasian variabel yang banyak. Untuk memudahkan pembuat program maka
disediakan pendeklarasian variabel dengan nama yang sama, hanya saja diberi indeks
nomer dari 0 sampai bilangan tertentu.
NRP[0], NRP[1], ......NRP[100];
5.1. PENDEKLARASIAN ARRAY 1 DIMENSI
Suatu nama variabel yang diberi indeks bilangan tertentu disebut dengan ARRAY.
ARRAY adalah kumpulan data yang bertipe sama, dan diberi nama dengan
ditambahkan indeks nomer.
Untuk menyatakan data suhu bertipe integer sebanyak 5 buah, cara biasa dapat
dituliskan demikian
28.
int suhu1, suhu2, suhu3, suhu4, suhu 5
Hal ini tentu menyulitkan jika data yang ingin dituliskan banyak. Alternatif lain yang
disediakan oleh bahasa pemrograman yaitu dengan menggunakan konsep ARRAY.
Maka data suhu di atas dapat ditulis dengan cara lain yaitu:
int suhu[5]
Artinya suhu1 bisa dipadankan dengan suhu[0], suhu 2 dipadankan dengan suhu[1]
dan seterusnya. Perlu diingat, bahasa C memulai indeks dari 0 sampai nilai yang
terdapat di dalam kurung siku dikurang satu. Dengan kata lain
int suhu[5]
menyatakan adanya 5 variabel suhu yaitu suhu[0], suhu[1],
suhu[2], suhu[3] dan suhu[4]. Variabel suhu[5] tidak terdefinisi karena
indeksnya mulai dari 0.
Semua tipe bilangan dapat dinyatakan dalam variabel ARRAY, misalnya tipe float
float berat_tepung[4]
Deklarasi ini menyatakan ada 4 variabel bertipe float, dimulai dari berat_tepung[0],
berat_ tepung[1], berat_ tepung[2], dan berat_ tepung[3]. Variabel berat_tepung[4]
tidak terdefinisi.
Untuk menyatakan string (deretan karakter ) digunakan variabel ARRAY bertipe
karakter. Variabel ini digunakan untuk menyimpan nama atau informasi berupa
karakter.
char nm[20]
nm=”Indonesia”;
Artinya, nm[0]=‟I‟, nm[1]=‟n‟ …, nm[8]=‟a‟, dan nm[9]=‟0‟.
Di bawah ini ada contoh program:
Contoh 5.1
/* Program menerima masukan dari keyboard nilai data berupa ARRAY tipe
integer
Berdimensi satu*/
#include <stdio.h>
/*Turbo C preprocessor */
#include <conio.h>
int main()
{
/* deklarasi variabel yang digunakan */
29. int suhu[5];
int i;
int jumlah=0;
/*input dari keyboard */
for(i=0;i<5;i++)
{
printf(“Masukkan suhu ke- %d ”, i);
scanf(“%d”, &suhu[i]);
}
/*proses*/
for(i=0;i<5;i++)
{
jumlah=jumlah+suhu[i];
}
/*output ke monitor */
clrscr();
Printf(“nn”);
for(i=0;i<5;i++)
{
printf(“Nilai suhu ke- %d = %d n”, i , suhu[i]);
}
printf(“ Jumlah totalnya = %d “, jumlah); /* untuk menampilkan jumlah */
getch();
/*untuk menampilkan screen output */
return 0;
/*nilai balik fungsi main() */
}
Contoh 5.2
/* Program menerima masukan dari keyboard data berupa ARRAY tipe karakter
Berdimensi satu*/
#include <stdio.h>
#include <conio.h>
/*Turbo C preprocessor */
int main()
{
/* deklarasi variabel yang digunakan */
char as[5];
char bs[5];
char cs[10];
int i;
int j=0;
int k=0;
clrscr();
/*input dari keyboard */
30. printf("Masukkan 4 deretan karakter ");
scanf("%s",&as);
printf("Masukkan 4 deretan karakter ");
scanf("%s",&bs);
/*proses*/
for(i=0;i<8;i=i+2)
{
cs[i] =as[j++];
cs[i+1]=bs[k++];
}
cs[8]='0';
/*output ke monitor */
printf("Tulisan cs = %s ", cs);
getch();
return 0;
}
/*untuk menampilkan screen output */
/*nilai balik fungsi main() */
31. 5.2. PENDEKLARASIAN ARRAY 2 DIMENSI
Array 2 dimensi diperlukan untuk permasalahan yang berbentuk tabel atau
matriks. Misalkan akan disimpan data suhu di suatu tempat dengan ketentuan yaitu
data suhu yang akan disimpan berupa data suhu pada pagi hari, suhu siang hari dan
suhu malam hari. Data ini dipantau mulai dari hari senin sampai minggu.
Jika hari senin dinyatakan dengan indeks 0
Jika hari senin dinyatakan dengan indeks 0
Jika hari selasa dinyatakan dengan indeks 1
diwakili dengan
Jika hari rabu dinyatakan dengan indeks 2
BARIS
Jika hari kamis dinyatakan dengan indeks 3
Jika hari jumat dinyatakan dengan indeks 4
Jika hari sabtudinyatakan dengan indeks 5
Jika hari minggu dinyatakan dengan indeks 6
Pagi diberi indeks 0
Siang diberi indeks 1
Malam diberi indeks 2
diwakili dengan
KOLOM
Maka array yang dapat menyimpan data dalam kasus ini berbentuk :
ARRAY 2 DIMENSI
Dan dideklarasikan dalam program seperti :
float Suhu[7][3];
Contoh lain berupa Aplikasi dengan Matriks.
32. Contoh 5.3
/* Program menerima masukan dari keyboard nilai data berupa ARRAY
tipe float berdimensi dua*/
#include <stdio.h>
/*Turbo C preprocessor */
#include <conio.h>
int main()
{
/* deklarasi variabel yang digunakan */
float suhu[7][3];
int i,j;
int jumlah=0;
/*input dari keyboard */
for(i=0;i<7;i++)
for(j=0;j<3;j++)
{
printf(“Masukkan suhu hari- %d – saat %d ”, i,j);
scanf(“%d”, &suhu[i][j]);
}
/*proses*/
for(i=0;i<7;i++)
for(j=0;j<3;j++)
{
jumlah=jumlah+suhu[i][j];
}
/*output ke monitor */
clrscr();
Printf(“nn”);
for(i=0;i<7;i++)
for(j=0;j<3;j++)
{
printf(“Nilai suhu hari- %d – saat % = %f n”, i ,
suhu[i][j]);
}
printf(“ Rata = %f “, jumlah/21); /* untuk menampilkan rata */
getch();
/*untuk menampilkan screen output */
return 0;
/*nilai balik fungsi main() */
}
33. Contoh 5.4
/* Program Array 2-D*/
/* Penjumlahan Dua Matriks Bujur Sangkar */
#include <stdio.h>
#include <math.h>
int main ()
{
int N;
int i,j;
float A[10][10];
float B[10][10];
float C[10][10];
clrscr();
printf("nntMasukkan Berapa Orde Matriks yang Anda
Inginkan = ");
scanf("%d",&N);
printf("nntMasukkan Data Matriks pertaman");
for (i=0;i<N;i++)
for (j = 0;j<N;j++)
{printf("nMasukkan Angka Baris %d dan Kolom %d =
",i+1,j+1);
scanf("%f",&A[i][j]);
}
printf("nntMasukkan Data Matriks Keduan");
for (i=0;i<N;i++)
for (j=0;j<N;j++)
{printf("nMasukkan Angka Baris %d dan Kolom %d =
",i+1,j+1);
scanf("%f",&B[i][j]);
}
for (i=0;i<N;i++)
for (j=0;j<N;j++)
C[i][j] = A[i][j] +B[i][j];
printf("nntJumlah Data Kedua Matriks = n");
for (i=0;i<N;i++)
for (j=0;j<N;j++)
printf("%.0f",C[i][j]);
getch ();
return 0;
}
34. Tugas 5:
1. Buatlah program yang dapat menerima 2 data berupa matriks berordo 3 x 3.
Kemudian hitung persamaan di bawah ini :
C=2*A+3*B
Tampilkan semua matriks tersebut.
2. Sebuah Array 2 dimensi berukuran 5x5 berisi data jumlah siswa (bilangan bulat)
pada kelas 1a, 1b, 1c, 1d dan 1e dari tahun 1996 – 2000.
1996
1997
1998
1999
2000
1a
25
26
32
30
26
1b
33
33
25
34
27
1c
35
34
35
32
28
1d
25
24
27
29
29
1e
25
24
28
30
30
Hitung jumlah siswa keseluruhan dari tahun 1996-2000.
Hitung jumlah siswa pada tahun 2000.
35. BAB VI
FUNGSI
Akan dibuat suatu program untuk melakukan proses aljabar sederhana yaitu proses
penjumlahan, pengurangan, perkalian maupun pembagian. Semua proses ini bisa
dibuat dalam satu program seperti di bawah ini:
Contoh 6.1
/*Program#1.1: Program Aritmatika sederhana (+,-,*,/) */
#include <stdio.h>
#include<conio.h>
int main()
{
float a,b,hasil;
clrscr();
printf(“Masukkan bilangan a “);
scanf(“%f”,&a);
printf(“Masukkan bilangan b “);
scanf(“%f”,&b);
printf(“n======================================”);
//proses penjumlahan
hasil = a+b;
printf(“nHasil penjumlahan %f dan %f adalah %f “, a,b,hasil);
printf(“n---------------------------------------------------------------”);
//proses pengurangan
hasil = a-b;
printf(“nHasil selisih %f dan %f adalah %f “, a,b,hasil);
printf(“n---------------------------------------------------------------”);
//Lanjut halaman berikutnya
36. //proses perkalian
hasil = a*b;
printf(“nHasil perkalian %f dg %f adalah %f “, a,b,hasil);
printf(“n---------------------------------------------------------------”);
//proses pembagian
while(b==0)
//Bilangan penyebut tidak boleh bernilai nol
{
printf(“nBilangan b tidak boleh 0n Masukkan bilangan b “);
scanf(“%f”,&b);
}
hasil = a/b;
printf(“nHasil %f dibagi %f adalah %f “, a,b,hasil);
printf(“n======================================”);
printf(“n
SELESAI
“);
getch();
return 0;
} //Akhir Program#1.1
Proses penjumlahan, pengurangan, perkalian maupun pembagian pada program
sebelumnya masing-masing dapat dibuatkan dalam modul yang terpisah-pisah yang
akan disebut sebagai fungsi. Tujuan dari pembuatan fungsi adalah untuk memudahkan
pembuat program dalam mengembangkan programnya. Selain itu, dengan membuat
fungsi ukuran program dapat diperkecil.
Bagaimana membuat fungsi ???
6.1 ATURAN PEMAKAIAN FUNGSI DALAM PROGRAM
Hal yang perlu diperhatikan dalam proses pembuatan fungsi :
1. Pembuatan prototipe fungsi yang diletakkan sebelum penulisan program main
2. Pemanggilan fungsi di dalam program main
3. Penjabaran fungsi setelah program main selesai
Silahkan perhatikan program 1.2 :
37. /*Program#1.2
Mencari nilai pangkat dari suatu bentuk x pangkat y */
#include <stdio.h>
#include <conio.h>
int pangkat (int x, int y);
1
//prototipe fungsi pangkat ,
// dengan parameter x,y dan syarat y>=0
int main()
{
}
int bil1,bil2;
2
int nilaiPangkat;
clrscr();
printf(”Masukkan dua bilangan sebagai a pangkat b ”);
scanf(”%d%d”, &bil1 &bil2);
nilaiPangkat=pangkat(bil1,bil2);
// argumen bil1 dan bil2
printf(”nNilai %d pangkat %d adalah %d ”, bil1,bil2, nilaiPangkat);
getch();
return 0;
3
int pangkat(int x,int y) //Penjabaran fungsi pangkat
{
int hasil=1;
if (y==0)
hasil = 1;
else
for (i=1;i<=y;i++) hasil = hasil*x;
return hasil;
}
//Akhir Program#1.2
Pembuatan prototipe fungsi yang diletakkan sebelum penulisan program main
merupakan pemberitahuan saat proses kompilasi, bahwa ada suatu fungsi
bernama tertentu yang akan digunakan di dalam program main dengan bentuk
seperti yang dituliskan.
Pemanggilan fungsi di dalam program main berguna untuk memasukkan argumen
tertentu pada posisi parameter agar diproses oleh fungsi kemudian hasilnya
dikembalikan pada program main.
Cara penulisann penjabaran fungsi setelah program main selesai harus sama
dengan prototipenya, hanya saja tidak diakhiri oleh tanda (;) titik koma. Ini perlu
selalu diingat!!. Di bagian sinilah terdapat semua proses yang diperlukan untuk
menyelesaikan tujuan dari fungsi yang akan dibuat. Hindari penggunaan printf
dalam fungsi yang bertujuan untuk mencari suatu nilai tertentu. Untuk fungsi-
38. fungsi yang bertujuan sebagai input ataupun sebagai output, silahkan gunakan
printf. Di bawah ini diberikan contoh.
Mari pusatkan kembali perhatian kita ke program pertama yaitu program
perhitungan aljabar sederhana meliputi penjumlahan,
pengurangan, perkalian
maupun pembagian.
Fungsi Penjumlahan dapat dibuat seperti :
float tambah(float a, float b)
{
float hasil;
hasil=a+b;
return hasil;
}
Silahkan lanjutkan pembuatan fungsi untuk proses pengurangan, perkalian dan
pembagian.
Yang perlu diperhatikan untuk membuat suatu fungsi adalah:
1. Nama fungsi
2. Nilai balik fungsi
3. Parameter fungsi
4. Penulisan return
Keterangan:
- Nama fungsi adalah nama yang ingin diberikan untuk fungsi yang akan dibuat.
Silahkan pilih nama untuk mewakili fungsi tersebut. Jika namanya terdiri dari
dua kata maka jangan diberi spasi kosong.
Contoh “fungsiTambah” (jangan ditulis “fungsi Tambah”).
-
Nilai balik fungsi adalah hasil keluaran yang diinginkan dari fungsi itu, apakah
bertipe float, integer atau karakter, atau tidak ada nilai balik sama sekali. Jika
fungsi tidak ada hasil keluarannya maka sebagai nilai balik fungsi tuliskan
void. Selain itu tuliskan tipe data nilai balik yang diinginkan (bisa float, int,
char atau double dll). Nilai balik dicirikan dengan penggunaan kata return.
-
Parameter fungsi adalah sesuatu yang dijadikan nilai masukan untuk fungsi
tersebut. Untuk fungsi penjumlahan tentunya diperlukan dua buah bilangan
yang akan dijumlahkan, maka disediakan dua parameter masukan.
Dengan demikian program proses aljabar tadi bisa dirubah penulisannya sbb:
/* Program#1.3:
Program proses aljabar dalam bentuk modul-modul */
#include <stdio.h>
#include <conio.h>
//Prototipe Fungsi
39. float tambat(float a, float b);
float kurang(float a, float b);
float kali(float a, float b);
float bagi(float a, float b);
void garis(char ch);
//Program Utama
int main()
{
float bil1,bil2,hasil;
clrscr();
printf(“Masukkan bilangan a “);
scanf(“%f”,&bil1);
printf(“Masukkan bilangan b “);
scanf(“%f”,&bil2);
garis(„=‟);
//proses penjumlahan
hasil = tambah(bil1,bil2); //pemanggilan fungsi tambah dengan 2 argumen
printf(“nHasil penjumlahan %f dan %f adalah %f “,bil1,bil2,hasil);
garis(„-‟);
//proses pengurangan
hasil = kurang(bil1,bil2);
printf(“nHasil selisih %f dan %f adalah %f “,bil1,bil2,hasil);
garis(„-‟);
hasil = kali(bil1,bil2);
printf(“nHasil perkalian %f dg %f adalah %f “,bil1,bil2,hasil);
garis(„-‟);
//proses pembagian
while(bil2==0)
{
printf(“nBilangan b tidak boleh 0n Masukkan bilangan b “);
scanf(“%f”,&bil2);
}
hasil = bagi(bil1,bil2);
printf(“nHasil %f dibagi %f adalah %f “,bil1,bil2,hasil);
garis(„=‟);
printf(“n
SELESAI
“);
getch();
return 0;
}
//Modul-modul yang akan digunakan dalam program utama
//Fungsi Penjumlahan
float tambah(float a, float b)
{
float hasil;
hasil=a+b;
return hasil; // hasil memberi nilai balik untuk fungsi tambah
}
40. //Fungsi Pembagian
float bagi(float a, float b)
{
float hasil;
hasil=a/b;
return hasil; // hasil memberi nilai balik untuk fungsi bagi
}
//Fungsi Pengurangan
float kurang(float a, float b)
{
float hasil;
hasil=a-b;
return hasil; // hasil memberi nilai balik untuk fungsi kurang
}
//Fungsi Perkalian
float kali(float a, float b)
{
float hasil;
hasil=a*b;
return hasil; //hasil memberi nilai balik untuk fungsi kali
}
//Fungsi Garis
void garis(char ch)
{
static i;
printf(“n”);
for(i=1;i<50;i++)]
{
printf(“%c”,ch);
}
return; //tidak ada nilai balik untuk fungsi garis
}
6.2. DIAGRAM PEMANGGILAN FUNGSI
Program#1.4
mengilustrasikan jalannya proses pemanggilan suatu fungsi dalam
program. Jika fungsi dipanggil maka proses akan dilanjutkan pada perintah perintah
yang ada di dalam fungsi. Setelah selesai semua perintah di dalam fungsi, proses akan
kembali ke program utama pada posisi satu baris dibawah pemanggilan fungsi tadi.
Jelasnya dapat dilihat pada program#1.4
/* Program#1.4:
#include<stdio.h>
#include<conio.h>
//Prototip fungsi
void a();
*/
41. void b();
//Program Utama
int main()
{
clrscr();
printf(“ di main menu”)
a();
printf(“sudah selesai menjalankan fungsi a()”);
b();
printf(“sudah selesai menjalankan fungsi b()”);
printf(“Program selesai”);
getch();
return 0;
}
void a()
{
printf(“di dalam fungsi a()”);
}
void b()
{
printf(“di dalam fungsi b()”);
}
Coba jalankan program di atas ini, lihat hasilnya.
TUGAS BAB VI:
1. Di bawah ini adalah suatu fungsi dengan nama luas_segitiga. Fungsi ini memiliki
nilai balik berupa bilangan desimal berguna untuk memberi hasil perhitungan luas
segitiga. Karena menghitung luas segitiga salah satunya diperlukan masukan
berupa nilai alas dan nilai tinggi maka fungsi memerlukan dua parameter dengan
tipe bilangan desimal.
float luas_segitiga (float alas, float tinggi)
{
float luas;
luas = (alas*tinggi)/2;
return luas;
}
Buatlah program untuk dapat memanggil fungsi ini.
Jika program telah sukses, tambahkan lagi fungsi menghitung luas lingkaran dan
luas
persegi panjang dan panggil fungsi-fungsi tersebut pada program utama.
2. Fungsi mencari nilai mutlak dari suatu bilangan.
Fungsi pustaka abs(), diperoleh dari kata absolut yaitu mutlak, mengubah nilai
apapun menjadi positif.
42. Bentuk dasar :
int abs(int x)
//Program Tugas1-2
#include <stdio.h>
#include <conio.h>
#include <math,h>
int main()
{
int x= -1234;
// variabel x
clrscr();
// untuk membersihkan layar
// cetak pada monitor
printf(“nilai : %d, nilai mutlaknya %d n”,x,abs(x));
// tampilkan segera ke layar output
getch();
return 0;
}
Buatlah fungsi anda sendiri yang prinsip kerjanya sama dengan fungsi abs() . Beri
nama fungsi anda dengan nama yang berbeda dari fungsi pustakanya.
3. Lanjutkan program Tugas1-3 di bawah ini.
/*Program Tugas1-3
Program Menjumlahkan angka 0 sampai 9 */
#include<stdio.h>
#include<conio.h>
// Prototip fungsi
void prosesJumlah( int x); // Proses Penjumlahan 0-9
void tampilkan();
// Tampilkan jumlah akhirnya
// Variabel global untuk menyimpan hasil penjumlahan
int jumlah;
int main()
{
int angka;
jumlah=0;
clrscr();
for(angka=0;angka<10;angka++) prosesJumlah(angka);
tampil();
getch();
return 0;
}
void prosesJumlah(int x)
{
//Silahkan tulis perintah anda
43. Beri nama program xxyyyTug13.c
4. Buatlah program mencari nilai terbesar, nilai terkecil, jumlah total berbobot dari 3
bilangan desimal sembarang (a,b,c). Bentuk 3 fungsi yaitu:
1. Fungsi mencari nilai terbesar dari 3 bilangan tersebut
2. Fungsi mencari nilai terkecil dari 3 bilangan tersebut
3. Fungsi mencari jumlah total berbobot dari 3 bilangan tersebut
Total = 3.5 a + 4.0 b + 2.5
44. BAB VII
STRING
Bab ini akan memperkenalkan bentuk fungsi pustaka yang berguna untuk membuat
program dengan tipe data string.
7.1 FUNGSI
strchr
Fungsi strchr : fungsi untuk menemukan suatu karakter tertentu yang pertama muncul
pada suatu deretan karakter.
Contoh 7.1:
/*Program contoh penggunaan strchr */
#include<stdio.h>
#include<conio.h>
#include<string.h>
int main()
{
char string[15];
char *ptr, c='r';
strcpy(string,"This is a string");
ptr=strchr(string,c);
if(ptr) printf("The character %c is at position %d n",c,ptr-string);
else
printf("The character was not foundn");
getch();
return 0;
}
7.2 FUNGSI
strcmp
Fungsi strcmp : fungsi untuk membandingkan antara dua string
Contoh 7.2:
/*Program contoh penggunaan strcmp */
#include<stdio.h>
#include<conio.h>
#include<string.h>
int main()
{
char *buf1="aaa", *buf2="bbb",*buf3="ccc";
int ptr;
ptr = strcmp(buf2,buf1);
45. if(ptr>0)
printf("Buffer2 is greater than buffer1 n");
else
printf("Buffer2 is less than buffer1 n");
ptr=strcmp(buf2,buf3);
if(ptr>0)
printf("Buffer2 is greater than buffer3 n");
else
printf("Buffer2 is less than buffer3 n");
getch();
return 0;
}
46. BAB VIII
POINTER
Pada bab ini akan di bahas mengenai konsep pointer dalam pemrograman. Apa itu
pointer? Pointer adalah suatu variabel khusus yang berisi data berupa alamat tertentu.
Beda dengan variabel yang telah dipelajari sebelumnya, karena variabel yang telah
dipelajari berisi suatu data yang berupa bilangan atau deretan karakter.
Untuk apa data yang berupa alamat? Perlu diingat bahwa setiap byte di dalam memori
komputer memiliki alamat tertentu. Pada komputer yang memiliki memori 640K,
alamat memori dimulai dari 0 sampai dengan alamat memori tertinggi yaitu 655359.
Variabel yang kita kenal sebelumnya juga disimpan di memori ini, walaupun tidak
disebutkan alamatnya langsung.
Untuk menunjuk ke suatu alamat memori secara
langsung digunakanlah pointer ini. Jadi sebenarnya pointer itu isinya alamat.
Contoh:
Misalkan pint adalah variabel pointer, vint adalah variabel yang berisi data bilangan
bulat dan vint berada pada alamat 0xFFF2.
Maka pointer pint dapat diatur agar menunjuk ke variabel vint.
Alamat
memori
1000
Variabe
di memori
1003
1001
*pint
vint = 56
pint=&vint
1002
1003
56
1004
Gambar 4.1
8.1 PENULISAN VARIABEL DAN OPERATOR DARI POINTER
Contoh 8.1 memberikan contoh penulisan deklarasi suatu pointer dan penggunaan
operator pointer. Ada dua operator pointer yaitu tanda * dan tanda &. Tanda & adalah
operator unary yang akan memberikan alamat dari operandnya. Operator * akan
memberikan nilai yang ditunjuk oleh pointer tersebut pada alamat tertentu.
47. Contoh 8.1:
#include<stdio.h>
#include<conio.h>
int main()
{
int *almt_bil, bil, nil;
bil = 100;
almt_bil=&bil;
//dapatkan alamat bil
nil=*almt_bil;
// dapatkan isi dari variabel pada alamat tsb.
printf(”%d”,nil); // tampilkan isi variabel pada alamat tsb.
getch();
return 0;
}
Contoh 8 .2 adalah contoh program yang salah:
Contoh 8.2:
#include<stdio.h>
#include<conio.h>
int main()
{
Float x=10.1;
Float y;
Int *p;
p = &x;
y=*p;
printf(”%f”,y); // tampilkan isi variabel y.
getch();
return 0;
}
Porgram ini akan memberikan nilai yang salah, dikarenakan deklarasi p sebagai
pointer yang menunjuk ke suatu nilai integer. Sehingga kompiler hanya mentrasfer 2
byte informasi ke y, padahal semestinya harus 4 byte untuk floating point.
8.2. BAGAIMANA MENULIS PERNYATAAN POINTER
Contoh 8.3:
#include<stdio.h>
#include<conio.h>
int main()
{
int x;
int *p1,*p2;
p1= &x;
p2=p1;
48. printf(”%p”,p2); // tampilkan bentuk heksadesimal dari alamat x,
bukan nilai x.
getch();
return 0;
}
8.3. ARITMATIKA POINTER
Dalam bahasa C, operator yang disediakan untuk pointer hanya ada dua yaitu
operator + dan operator -.Untuk jelasnya, asumsikan p1 adalah pointer yang
menunjuk ke suatu nilat bertipe integer dengan alamat 3000. Kalau ditulis
dalam program pernyataan seperti di bawah ini,
p1++ ;
maka isi dari p1 adalah 3002.
Mengapa tidak 3001???
Karena setiap komputer menaikkan p1, maka komputer akan menunjuk ke
bilangan integer berikutnya. Demikian juga untuk pengurangan
p1--;
akan merubah nilai p1 menjadi 2998, jika sebelumnya nilai p1 adalah 3000.
Nilai kenaikkan suatu pointer ditentukan oleh tipe dasar nilai yang ditunjuk
oleh pointer tersebut ( Gambar4.2).
char *ch=3000;
int *i=3000;
ch
3000
ch+1
3001
ch+2
3002
ch+3
3003
ch+4
3000
ch+5
3001
Gambar 4.2
i
i+1
i+2
49.
50. BAB IX
FILE INPUT OUTPUT
Saat kita membuat program seringkali diperlukan proses penyimpanan data hasil
proses ke suatu file maupun membacanya dari suatu file tertentu. Maka konsep ini
diistilahkan dengan kata-kata file input output. Program yang menggunakan konsep
ini akan dijalankan dalam lingkungan SHELL. Proses-proses yang dibahas pada bab
ini meliputi proses menuliskan karakter ke suatu file, baca karakter dari file dan
tampilkan ke layar monitor, gandakan file sumber ke file tujuan.
Contoh 9.1:
/*Tuliskan karakter ke suatu file */
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main(int argc,char *argv[])
{
FILE *fp; //pointer ke suatu file
char ch;
//variabel untuk menampung data berupa karakter/huruf
clrscr(); //bersihkan layar
if(argc!=2) //periksa apakah ada dua argumen ketika running program
//c:namaprog namafile
{
printf("anda lupa menyertakan nama filen");
exit(1);
}
if((fp=fopen(argv[1],"w"))==NULL) //buka file namafile untuk menulis
{
printf("tidak dapat membuka filen");
exit(1);
}
do{
printf("Tulis karakter dan akhiri dengan $: ");
ch=getchar(); //dapatkan satu karakter dari keyboard
putc(ch,fp); //tuliskan satu karakter ke file
} while (ch!='$');
getch();
fclose(fp); //tutup kembali file
return 0;
}
51. Contoh 9.2:
/* Baca karakter dari file dan tampilkan ke layar monitor */
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main(int argc,char *argv[])
{
FILE *fp;
char ch;
clrscr();
if(argc!=2)
{
printf("anda lupa menyertakan nama file n");
exit(1);
}
if((fp=fopen(argv[1],"r"))==NULL)
{
printf("tidak dapat membuka file n");
exit(1);
}
ch=getc(fp);
/*dapatkan satu karakter */
while(ch!=EOF){
putchar(ch); /*tampilkan ke layar monitor */
ch=getc(fp); //dapatkan satu karakter dari file
}
getch();
fclose(fp);
return 0;
}
52. Contoh 9.3:
/*Gandakan file sumber ke file tujuan */
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main(int argc,char *argv[])
{
FILE *in,*out;
char ch;
clrscr();
if(argc!=3)
{
printf("anda lupa menyertakan 2 nama file n");
exit(1);
}
if((in=fopen(argv[1],"rb"))==NULL)
{
printf("tidak dapat membuka file sumber n");
exit(1);
}
if((out=fopen(argv[2],"wb"))==NULL)
{
printf("tidak dapat membuka file tujuan n");
exit(1);
}
/* baris di bawah ini melakukan proses ganda dari file sumber*/
while(!feof(in)) putc(getc(in),out);
getch();
fclose(in);
fclose(out);
return 0;
}
Marilah kita lihat fungsi-fungsi pustaka yang digunakan untuk proses input output ini.
1. fopen()
Memiliki fungsi: membuka stream dan menghubungkan stream dengan file
FILE *fopen(char *Namafile, char *mode);
Contoh:
fp = fopen(”test”,”w”);
-
mode adalah string yang menyatakan status.
fp adalah file pointer
53. -
w mode untuk status tulis ke file test.
Beberapa macam mode
“r” – buka file teks untuk dibaca
“w”- ciptakan file teks untuk ditulis
”a” – tambahkan data pada file teks yang ada
”rb”- buka file biner untuk dibaca
”wb”- ciptakan file biner untuk ditulis
”ab”- tambahkan data pada file biner yang ada
2. putc()
Berguna untuk : menuliskan karakter ke suatu stream yang sebelumnya telah
dibuka melalui fopen().
int putc(char ch, FILE *fp);
3. getc()
Fungsi ini digunakan untuk membaca karakter dari suatu stream yang
sebelunya telah dibuka melalui fopen() dalam status baca.
4. putchar()
Fungsi ini akan menuliskan karakter ke layar monitor.
5. getchar()
Fungsi ini akan mengambil karakter dari layar monitor.
6. fclose()
Fungsinya: menutup suatu stream yang telah dibuka melalui fopen()
Ingat ! setiapkali suatu file dibuka, maka file tersebut harus ditutup kembali
sebelum program berakhir.
int fclose(FILE *fp);
54. BAB X
STRUKTUR
Konsep Struktur adalah fasilitas yang disediakan untuk membentuk tipe data kita
sendiri. Program c hanya memberikan tipe data dasar seperti integer, float dsb. Untuk
database kita memerlukan tipe data yang merupakan gabungan dari beberapa tipe data
dasar ini, maka tipe data tersebut bisa dibuat dengan fasilitas Struktur ini.
Struktur adalah kumpulan variabel yang dinyatakan dengan satu nama, berguna untuk
mengumpulkan data yang erat satu sama lainnya. Contoh data peserta, variabel yang
diperlukan yaitu variabel untuk menyimpan nama peserta, nomer nrp, tanggal lahir,
alamat dllnya.
Bagaimana menuliskan bentuk struktur dalam suatu program??
Hal-hal yang diperlukan yaitu:
Struktur definition : membentuk satu templet yang bisa digunakan untuk membangun
variabel struktur.
Struktur elemen: Variabel-variabel yang tergabung dalam satu struktur.
Contoh:
Data pegawai bisa dibuat dalam struktur:
struct datapegawai{
char nama[20];
char alamat[20];
float gaji;
};
Contoh 10.1
/*struct2.cpp */
/* Contoh program yang menggunakan bentuk structure */
#include <stdio.h>
#include <conio.h>
#include <math.h>
struct {
char nama[20];
char alamat[20];
float gaji;
} pegawai1;
float atof();
int main()
55. {
clrscr();
printf("Nama Pegawai I : ");
gets(pegawai1.nama);
printf("Alamat Pegawai I : ");
gets(pegawai1.alamat); /* scanf("%s",&pegawai1.alamat) */
printf("Gaji Pegawai I : ");
gets(gj);
pegawai1.gaji=atof(gj);
printf("nnData yang telah anda ketikkan : ");
printf("n%-20s%30s%10.2f",pegawai1.nama,pegawai1.alamat,pegawai1.gaji);
printf("nnTekan sembarang tombol");
getch();
return 0;
}