Download - Materi matakuliah bahasa c
BAHASA C/C++
Oleh : Dra. Wahyuni Z Imran , Msc
Modul Mata kuliah Selengkapnya bisa di download gratis di website >>
http://www.dagangku.com
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. Peserta menegerti tentang konsep pemrograman di C++ 2. Peserta mengerti dan memahaimi perintah-perintah di C++ 3. Peserta mengerti seleksi kondisi di C++ 4. Peserta mengerti tentang struktur data di linux 5. Peserta dapat membuat programC++ sederhana
P E N D A H U L U A N
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
A
B
Proses
C = A + B
Gambar 1.
Keluaran
C
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.
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.
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
MONITOR : Layar Tampilan
Gambar 2. Langkah pembuatan program
Program C: int main() {
int A=5; int B=10;
Hallo Selamat Datang! 5 10 15
Program C:
}
}
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;
// 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; }
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
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; //variabel tunggal
contoh : int angka; float x;
tipe var1,var2,var3; //variabel majemuk contoh : int a, b, c; char s, t;
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”).
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
Newline
Return
Horizontal tab
Backspace
Kode C
„\n‟
„\r‟
„\t‟
„\b‟
Deskripsi
Karakter ganti baris. Sebagai tanda ganti
baris baru pada file teks atau file ASCII
Akhir dari suatu input dari keyboard
Pindah ke daerah tab berikutnya
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
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
1.4.1 Fungsi scanf()
kegunaannya
Tampilkan bilangan bulat Tampilkan bilangan desimal
Tampilkan sebuah karakter Tampilkan sebuah string
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.
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 (/*…….*/).
/* Penjelasan tentang tujuan program, nama pembuat,
tanggal pembuatan program dsb */
#include <stdio.h> /*Turbo C preprocessor */ #include <conio.h>
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(); /*untuk menampilkan screen output */
return 0; /*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. 7
th_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
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> /*Turbo C preprocessor */
#include <conio.h>
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() */ }
/* 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; /*deklarasi variabel bertipe karakter*/ char str[80]; /*deklarasi variabel bertipe string */
printf(“Ketikkan sembarang tombol\n”); ch=getche(); /*baca satu karakter dari keyboard*/ printf(“Karakter yang diketik adalah %c\n”,ch);
printf(“Masukkan nama Anda dan akhiri dengan \0 : ”); gets(str); printf(“Hallo %s\n”, str);
getch(); return 0; }
2.1 Operator Aritmatika
BAB II OPERATOR
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; /*deklarasi
K = I + SIZE; SIZE = 50;
K = I = 5;
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 Simple Assignment
result
X += 5; Y += X-2 Y *= 2
X=X+5 Y = Y + (X-2) Y = Y * 2
X bernilai 19 Y bernilai 15 Y bernilai 6
2.4 Operator Increment dan Decrement
Format prefix : ++X ( increment ) -- X (decrement )
X = 5;
Y = ++X * 10; /* operasi ++ dilakukan dulu, jadi X bernilai 6 /* kemudian lakukan perkalian 6 * 10
Format postfix: 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
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> /*Turbo C preprocessor */ #include <conio.h>
int main() {
/* deklarasi variabel yang digunakan */ const float inch_ke_cm = 2.54; int totalInchi, feet,inch ; float m, cm;
/*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(); /*untuk menampilkan screen output */ return 0; /*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
3.1 PENGULANGAN FOR (FOR_LOOP)
BAB III KONSEP PENGULANGAN
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; }
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("\n\tSelamat Datang\n\n"); 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
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; }
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; }
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 IF- ELSE, 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();
return 0;
}
4.2. PENCABANGAN IF_ELSE
if(syarat) perintah; else perintah;
Contoh:
if(a%2!=0) printf(“Bilangan a adalah ganjil\n”);
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; }
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 tua\n"); else printf("Anda termasuk manula\n"); else
if(umur<20) printf("Anda dalam masa remaja\n"); else printf("Anda sudah dewasa\n");
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;
}
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; }
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
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 */
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(“\n\n”); 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> /*Turbo C preprocessor */
#include <conio.h>
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 */
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(); /*untuk menampilkan screen output */
return 0; /*nilai balik fungsi main() */ }
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 Jika hari rabu dinyatakan dengan indeks 2 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
diwakili dengan BARIS
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.
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(“\n\n”); 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() */ }
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("\n\n\tMasukkan Berapa Orde Matriks yang Anda
Inginkan = ");
scanf("%d",&N);
printf("\n\n\tMasukkan Data Matriks pertama\n");
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("\n\n\tMasukkan Data Matriks Kedua\n");
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("\n\n\tJumlah Data Kedua Matriks = \n");
for (i=0;i<N;i++) for (j=0;j<N;j++)
printf("%.0f",C[i][j]); getch ();
return 0;
}
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.
1a 1b 1c 1d 1e
1996 25 33 35 25 25 1997 26 33 34 24 24 1998 32 25 35 27 28 1999 30 34 32 29 30 2000 26 27 28 29 30
Hitung jumlah siswa keseluruhan dari tahun 1996-2000. Hitung jumlah siswa pada tahun 2000.
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
//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 0\n Masukkan bilangan b “);
scanf(“%f”,&b); }
hasil = a/b; printf(“\nHasil %f dibagi %f adalah %f “, a,b,hasil);
printf(“\n======================================”);
printf(“\n S E L E S A I “); 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 :
/*Program#1.2 Mencari nilai pangkat dari suatu bentuk x pangkat y */
#include <stdio.h> #include <conio.h> 1
int pangkat (int x, int y); //prototipe fungsi pangkat , // dengan parameter x,y dan syarat y>=0
int main() {
int bil1,bil2; int nilaiPangkat; clrscr();
2
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-
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
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 0\n Masukkan bilangan b “);
scanf(“%f”,&bil2); } hasil = bagi(bil1,bil2); printf(“\nHasil %f dibagi %f adalah %f “,bil1,bil2,hasil); garis(„=‟);
printf(“\n S E L E S A I “); 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 }
//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();
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.
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
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
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 found\n");
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);
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; }
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
1001
1002
1003
1004
Variabe
di memori
1003
56
*pint
vint = 56 pint=&vint
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.
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;
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
ch+1
ch+2
ch+3
ch+4
ch+5
3000
3001
3002
3003
3000
3001
Gambar 4.2
i
i+1
i+2
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 file\n"); exit(1);
}
if((fp=fopen(argv[1],"w"))==NULL) //buka file namafile untuk menulis
{ printf("tidak dapat membuka file\n"); 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; }
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; }
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
- 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);
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()
{
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("\n\nData yang telah anda ketikkan : ");
printf("\n%-20s%-
30s%10.2f",pegawai1.nama,pegawai1.alamat,pegawai1.gaji);
printf("\n\nTekan sembarang tombol");
getch();
return 0;
}
Contoh 10.2 /* Program struktur */
#include <stdio.h>
#include <conio.h>
#include <math.h>
struct inventaris
{
char nobarang[8];
char namabarang[30];
int jumlah;
float harga;
float harga_total;
};
struct inventaris barang[5];
int main()
{
int i;
clrscr();
for(i=0; i<2; i++) {
printf("nobarang : ");gets(barang[i].nobarang);
printf("namabarang : ");gets(barang[i].namabarang);
printf("jumlah : ");scanf("%d",&barang[i].jumlah);
//fflush(stdio);
printf("harga : ");scanf("%5.2f",&barang[i].harga);
barang[i].harga_total=barang[i].harga*barang[i].jumlah;
}
/* display */
for(i=0; i<2; i++)
{
printf("nobarang : %s \n",barang[i].nobarang);
printf("namabarang :%s \n ",barang[i].namabarang);
printf("jumlah : %d \n",barang[i].jumlah);
printf("harga : %f \n",barang[i].harga);
printf("harga_total : %f \n",barang[i].harga_total);
}
getch();
return 0;
}