materi matakuliah bahasa c

56

Click here to load reader

Upload: izhan-nassuha

Post on 21-May-2015

3.679 views

Category:

Education


0 download

DESCRIPTION

BAHASA C/C++ 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 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.

TRANSCRIPT

Page 1: 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

Page 2: Materi matakuliah bahasa c

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

Page 3: Materi matakuliah bahasa c

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.

Page 4: Materi matakuliah bahasa c

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.

Page 5: Materi matakuliah bahasa c

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;

Page 6: Materi matakuliah bahasa c

// 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; }

Page 7: Materi matakuliah bahasa c

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

Page 8: Materi matakuliah bahasa c

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”).

Page 9: Materi matakuliah bahasa c

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

Page 10: Materi matakuliah bahasa c

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.

Page 11: Materi matakuliah bahasa c

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 (/*…….*/).

Page 12: Materi matakuliah bahasa c

/* 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

Page 13: Materi matakuliah bahasa c

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() */ }

Page 14: Materi matakuliah bahasa c

/* 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; }

Page 15: Materi matakuliah bahasa c

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;

Page 16: Materi matakuliah bahasa c

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

Page 17: Materi matakuliah bahasa c

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;

Page 18: Materi matakuliah bahasa c

/*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

Page 19: Materi matakuliah bahasa c

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; }

Page 20: Materi matakuliah bahasa c

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

Page 21: Materi matakuliah bahasa c

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; }

Page 22: Materi matakuliah bahasa c

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; }

Page 23: Materi matakuliah bahasa c

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();

Page 24: Materi matakuliah bahasa c

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; }

Page 25: Materi matakuliah bahasa c

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;

}

Page 26: Materi matakuliah bahasa c

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; }

Page 27: Materi matakuliah bahasa c

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

Page 28: Materi matakuliah bahasa c

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 */

Page 29: Materi matakuliah bahasa c

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 */

Page 30: Materi matakuliah bahasa c

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() */ }

Page 31: Materi matakuliah bahasa c

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.

Page 32: Materi matakuliah bahasa c

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() */ }

Page 33: Materi matakuliah bahasa c

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;

}

Page 34: Materi matakuliah bahasa c

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.

Page 35: Materi matakuliah bahasa c

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

Page 36: Materi matakuliah bahasa c

//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 :

Page 37: Materi matakuliah bahasa c

/*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-

Page 38: Materi matakuliah bahasa c

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

Page 39: Materi matakuliah bahasa c

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 }

Page 40: Materi matakuliah bahasa c

//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();

Page 41: Materi matakuliah bahasa c

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.

Page 42: Materi matakuliah bahasa c

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

Page 43: Materi matakuliah bahasa c

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

Page 44: Materi matakuliah bahasa c

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);

Page 45: Materi matakuliah bahasa c

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; }

Page 46: Materi matakuliah bahasa c

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.

Page 47: Materi matakuliah bahasa c

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;

Page 48: Materi matakuliah bahasa c

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

Page 49: Materi matakuliah bahasa c
Page 50: Materi matakuliah bahasa c

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; }

Page 51: Materi matakuliah bahasa c

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; }

Page 52: Materi matakuliah bahasa c

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

Page 53: Materi matakuliah bahasa c

- 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);

Page 54: Materi matakuliah bahasa c

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()

Page 55: Materi matakuliah bahasa c

{

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;

}

Page 56: Materi matakuliah bahasa c

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;

}