Anda di halaman 1dari 74

PEMROGRAMAN KOMPUTER (Bahasa C)

Disusun Oleh : Aga Sadewa, S.Kom

BAB I PENDAHULUAN

PENDAHULUAN
C adalah bahasa yang standar, artinya suatu program yang ditulis dengan versi bahasa C tertentu akan dapat dikompilasi dengan versi bahasa C yang lain dengan sedikit modifikasi. Standar bahasa C yang asli adalah standar dari UNIX. Patokan dari standar UNIX ini diambilkan dari buku yang ditulis oleh Brian Kerninghan dan Dennis Ritchie berjudul The C Programming Language, diterbitkan oleh Prentice-Hall tahun 1978. Deskripsi C dari kerninghan dan Ritchie ini kemudian dikenal secara umum sebagai K&R C. Bahasa C mempunyai struktur yang baik sehingga mudah untuk dipahami. C disebut dengan bahasa yang terstruktur karena menggunakan fungsi-fungsi sebagai program-program bagiannya. Struktur bahasa yang baik, selain mudah dipelajari, juga memudahkan dalam pembuatan program, memudahkan pelacakan kesalahan programdan akan menghasilkan dokumentasi program yang baik. I.1. Memulai dengan C Untuk memulai pemrograman C, yang pertama kali adalah membuka program C bila belum dijalankan. Umumnya cara untuk menjalankan program C adalah dengan melalui menu Start > Programs > Borland C/C++ > Borland C/C++. Pada saat pertama kali program C dijalankan, maka akan secara otomatis terbentuk sebuah form kosong yang siap untuk diproses lebih lanjut. Berikut penjelasan tentang fasilitas yang ada di C. Untuk membuka secara manual pilih menu File > New > Text Edit.

I.2. Tampilan Pembuka

I.3. Jendela utama C

I.4. Format file bahasa C (*.c) Untuk menyimpan file bahasa c File > Save, Simpan file tersebut dengan extension *.c. Untuk menjalankan program Debug > Run atau CTRL + F9.

Praktikum

1
A. Tujuan 2. Mengetahui struktur algoritma.

Pengenalan Algoritma

1. Mengenal algoritma pemrograman.

3. Mengetahui penulisan algoritma. 4. Mengetahui teks algoritma. 5. Mahasiswa mengetahui dan memahami mengenai algoritma serta pendeklarasiannya.

B. Dasar Teori 1. Pengertian Algoritma Algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun secara sistematis (Rinaldi Munir :2002). Algoritma adalah urutan logis pengambilan keputusan untuk pemecahan masalah (KBBI :1988). Algoritma adalah suatu himpunan hingga dari instruksi-instruksi yang secara jelas memperinci langkah-langkah proses pelaksanaan, dalam pemecahan suatu masalah tertentu, atau suatu kelas masalah tertentu, dengan dituntut pula bahwa himpunan instruksi tersebut dapat dilaksanakan secara mekanik (Team Gunadarma :1988). 2. Algoritma dalam kehidupan nyata. Menulis surat: 1. Mempersiapkan kertas dan amplop 2. Mempersiapkan alat tulis. 3. Mulai menulis 4. Memasukkan kertas ke dalam amplop

5. Amplop ditempeli perangko secukupnya 6. Pergi ke kantor pos untuk mengeposkan surat tsb. Memasak air dengan menggunakan kompor gas. 3. Struktur Algoritma Berurutan (sequence) : Langkah dikerjakan secara berurutan (sekuensial). Percabangan (selection): Langkah dekerjakan JIKA memenuhi kondisi tertentu. Pengulangan (iteration) : Langkah dikerjakan SELAMA memenuhi suatu kondisi tertentu. Konkuren (concurrent) : Beberapa langkah dikerjakan secara bersama. Catatan : langkah = instruksi

4. Penulisan Algoritma. Flowchart. Bentuk gambar / diagram yang mempunyai aliran satu atau dua arah secara sekuensial. Lambang flowchart :

Contoh :

Pseudo code Definisi : Bahasa terstruktur untuk menggambarkan logika algoritma. Bagian terstruktur (konstruksi dasar) adalah : a) SEQUENCE : berurutan melakukan satu langkah setelah langkah lainnya. Keyword yang umum dari SEQUENCE : Input : READ, OBTAIN, GET Output : PRINT, DISPLAY, SHOW Compute : COMPUTE, CALCULATE, DETERMINE Initialize : SET, INIT Add one : INCREMENT, BUMP b) IF-THEN-ELSE langkah. Bentuk Umum: IF condition THEN sequence 1 ELSE sequence 2 : percabangan (seleksi) pilihan dibuat diantara dua alternative

ENDIF Catatan: condition adalah pilihan biner (ya atau tidak) c) WHILE Bentuk Umum: WHILE condition sequence ENDWHILE d) Konstruksi tambahan: CASE : percabangan (generalisasi IF-THEN-ELSE) : pengulangan dengan uji kondisi di awal.

DO-WHILE : pengulangan dengan uji kondisi di akhir FOR : pengulangan dengan pencacah

Contoh : Algoritma dengan Pseudo-code 1. Masukkan / Read R 2. Pi 3.14 3. L Pi * R * R 4. Tulis / Print L

5. Teks Algoritma Judul Algoritma Bagian yang terdiri atas nama algoritma dan penjelasan tentang algoritma tersebut. Nama algoritma sebaiknya singkat, namn cukup untuk menggambarkan apa yang akan dilakukan oleh algoritma tersebut. Contoh : Algoritma Luas_Lingkaran { Menghitung luas lingkaran untuk ukuran jari-jari tertentu. Algoritma menerima masukan jari-jari lingkaran, menghitung luasnya, lalu cetak luasnya ke piranti keluaran } Deklarasi

Bagian untuk mendefinisikan semua nama yang dipakai di dalam algoritma. Nama tersebut dapat berupa nama terapan, nama peubah, nama tipe, nama prosedur dan nama fungsi. Contoh Deklarasi : Panjang = integer {tipe data bilangan bulat} Lebar = integer Luas = real {tipe data bilangan pecahan} Deskripsi Bagian ini berisi uraian langkah-langkah penyelesaian masalah. Langkah-langkah inidituliskan dengan notasi yang lazim dalam penulisan algoritma. Setiap langkah algoritma dibaca dari langkah paling atas hingga langkah paling bawah. Urutan penulisan menentukan urutan pelaksanaan perintah. Contoh deskripsi : Read (nama) Read (NIM) Read (nilai) If (nilai < 45) then Grade = E Else if (nilai >= 45) and (nilai < 60) then Grade = D Else if (nilai >= 60) and (nilai < 70) then Grade = C Else if (nilai >= 70) and (nilai < 80) then Grade = B Else Grade = A Write (nama) Write (NIM) Write (nilai)

C. Langkah Percobaan Soal : Tulislah algoritma untuk mencari luas segitiga jika masukan dari pengguna adalah alas dan tingginya. Rumus: L = a.t. Jawab : Pseudocode 1. Siapkan variabel L,a,t. 2. Masukan nilai a. 3. Masukan nilai t. 4. Proses L (a*t)/2. 5. Print L. Flowchart
Start

Dim L, a, t

Read a

Read t

L = a.t.

Write L

End

D. Latihan 1. Tulislah algoritma untuk mencari sisi miring dari suatu segitiga siku-siku jika diketahui panjang dua sisi yang membentuk sudut siku-siku. Rumus: c = (a2 + b2) 2. Tulislah algoritma untuk menampilkan teks Hello World sebanyak 100 kali.

Praktikum 2
A. Tujuan

Pengenalan Turbo C Struktur Dasar Bahasa C

1. Mengenal editor Turbo C seperti mengkompilasi program dan menjalankan program. 2. Mengetahui menu menu yang terdapat pada Turbo C. 3. Mengetahui struktur dasar pemrograman bahasa C dengan Turbo C. 4. Mahasiswa mengetahui dan memahami mengenai variable dan konstanta, serta pendeklarasiannya.

B. Dasar Teori 1. Editor Bahasa C Untuk mengkompilasi Program, Pilih menu Compile dengan menekan Alt + C kemudian Pilih Submenu Compile lalu tekan Enter. Akan ditampilkan hasil kompilasi Program, tekan sembarang tombol. Untuk menjalankan program, Pilih menu Run dengan menekan Alt + R Pilih submenu Run dan tekan Enter. Proses Kompilasi Linking dari program C dapat digambarkan sebagai berikut :

3. Struktur Dasar Bahasa C Bahasa C bersifat case-sensitive artinya huruf besar dan kecil dianggap berbeda. Jadi antara nim, NIM dan Nim dianggap berbeda.

4. Variable (identifier) a. Untuk mewakili suatu nilai tertentu di dalam proses program. b. Nilai dari suatu variable bisa diubah-ubah sesuai kebutuhan. c. Nama dari suatu variable dapat ditentukan sendiri oleh pemrogram dengan aturan : o Terdiri dari gabungan huruf dan angka dengan karakter pertama harus berupa huruf. o Tidak boleh mengandung spasi, Panjangnya bebas, tetapi hanya 32 karakter pertama yang terpakai. o Tidak boleh mengandung symbol-simbol khusus, kecuali garis bawah (underscore). Yang termasuk symbol khusus yang tidak diperbolehkan antara lain : $, ?, %, #, !, &, *, (, ), -, +, = dsb. Contoh penamaan variabel yang benar : NIM, a, x, nama_mhs, f3098, f4, nilai, budi, dsb. Contoh penamaan variable yang salah : %nilai_mahasiswa, 80mahasiswa, rata-rata, ada spasi, penting!, dsb o Deklarasi Variabel Contoh : int x; char y, huruf, nim[10]; float nilai; double beta; int array[5][4]; // Deklarasi x bertipe integer // Deklarasi variable bertipe char // Deklarasi variable bertipe float // Deklarasi variable bertipe double // Deklarasi array bertipe integer

char *p; o Deklarasi Konstanta

// Deklarasi pointer p bertipe char

Dalam bahasa C konstanta dideklarasikan menggunakan preprocessor #define. Contohnya : #define PHI 3.14 #define nim 0111500382 #define nama Sri Widhiyanti Variabelnya harus menggunakan operator alamat & Kode penentu format : %c : Membaca sebuah karakter %s : Membaca sebuah string %i, %d %f, %e %o : Membaca sebuah bilangan bulat (integer) : Membaca sebuah bilangan pecahan (real) : membaca sebuah bilangan octal

%x : Membaca sebuah bilangan heksadesimal %u : Membaca sebuah bilangan tak bertanda

C. Langkah Percobaan a. Untuk memulai dokumen baru tekan tombol Alt + F kemudian pilih submenu new b. Fungsi printf dan penentu format data #include <stdio.h> main() { printf(Nama Siswa : %s\n, Aditya); printf(N.I.M : %d\n, 12345);

printf(Nilai Ujian : %f Predikat : %s \n, 70.5, B); }

Hasil : Nama Siswa N.I.M Nilai Ujian : Aditya : 12345 : 70.500000 Predikat : B

c. Ketikkan program dibawah ini dan analisa

#include <stdio.h> #include <conio.h> void main() { clrscr(); layar printf(Nilai dari 9 + 4 = %i\n, 9 + 4); printf(Nilai dari 9 - 4 = %i\n, 9 - 4); printf(Nilai dari 9 * 4 = %i\n, 9 * 4); printf(Nilai dari 9 / 4 = %i\n, 9 / 4); getch(); } /* mencetak hasil 9 * 4 */ /* mencetak hasil 9 / 4 */ /* mencetak hasil 9 + 4 */ // untuk membersihkan

/* m

f. Perbedaan operator peningkatan ++ yang diletakkan di depan dan dibelakang operand #include <stdio.h> #include <conio.h> void main() { int x, nilai; clrscr(); x = 5; nilai = ++x; /* berarti x = x + 1; nilai = x; */

printf("nilai = %d, x = %d\n", nilai, x); nilai = x++; /* berarti nilai = x; nilai = x + 1; */

printf("nilai = %d, x = %d\n", nilai, x); getch(); }

Contoh Program 2 :

#include <stdio.h> #include <conio.h> void main() { int b, nilai; clrscr(); b=15; nilai = --b; printf("nilai = %d, b = %d\n", nilai, b); nilai = b--; printf("nilai = %d, b = %d\n", nilai, b); getch(); } /* berarti nilai = b; b = b + 1; */ /* berarti b = b - 1; nilai = b; */ // untuk membersihkan layar

D. Latihan 1. Buat program untuk menampilkan tulisan sebagai berikut : Selamat belajar TURBO C

2. Buat program untuk menampilkan tulisan sebagai berikut : Anda diundang rapat hari Jumat / pukul 14.00 WIB

3. Apa hasil dari program berikut : #include <stdio.h> main() { printf(%d lembar kertas\nper lembar %d, 5, 10); }

4. Dimana letak kesalahan program berikut ini ? Perbaiki kesalahannya ! Apa hasil keluarannya? #include [stdio.h] main{ } ( printf(\n %d Mawar %d Duri\n, 1, 1000); printf(\n Ada %s Ada %s \n, Gula, Semut); )

Praktikum 3
A. Tujuan

Input dan Output Menampilkan Data

1. Mahasiswa/i mengetahui cara menginput data melalui keyboard 2. Mahasiswa/i dapat menampilkan data yang telah di input ke layar monitor B. Dasar Teori Memasukkan data dan menampilkan data/informasi merupakan tindakan yang sering dilakukan dalam pemrograman. Penampilan data/informasi biasanya ditujukan ke piranti layar (monitor), sedangkan pemasukan data biasanya dilakukan melalui keyboard. 1. scanf() digunakan untuk menginput data berupa data numerik, karakter dan string secara terformat. Hal-hal yang perlu diperhatikan dalam pemakaian fungsi scanf() : Fungsi scanf() memakai penentu format Fungsi scanf() memberi pergantian baris secara otomatis Fungsi scanf() tidak memerlukan penentu lebar field 2. gets(), untuk memasukkan data bertipe karakter dan tidak dapat digunakan untuk memasukkan data numerik. Hal-hal yang perlu diperhatikan dalam pemakaian fungsi scanf() : . Harus diakhiri dengan penekanan tombol enter . Cursor secara otomatis akan pindah baris . Tidak memerlukan penentu format 3. getchar(), untuk membaca data yang bertipe karakter Hal-hal yang perlu diperhatikan dalam pemakaian fungsi getchar() : . Harus diakhiri dengan penekanan tombol enter . Karakter yang dimasukkan terlihat pada layar . Pergantian baris secara otomatis 4. getch() dan getche(), untuk membaca data karakter.

Hal-hal yang perlu diperhatikan dalam pemakaian fungsi getchar() : . Karakter yang dimasukkan tidak perlu diakhiri dengan penekanan tombol enter. . Tidak memberikan efek pergantian baris secara otomatis . Jika menggunakan fungsi getch() karakter yang dimasukkan tidak akan ditampilkan pada layar sehingga sering digunakan untuk meminta inputan berupa password. . Sedangkan pada getche() karakter yang dimasukkan akan ditampilkan pada layar. MENAMPILKAN DATA A. Menampilkan data ke layar monitor 1. Menggunakan fungsi printf(), puts(), dan putchar(). Fungsi printf() untuk menampilkan semua jenis data (numeric dan karakter) Fungsi puts() untuk menampilkan data string dan secara otomatis akan diakhiri dengan perpindahan baris. Fungsi putchar() untuk menampilkan sebuah karakter.

B. Mengatur tampilan bilangan pecahan (float). Bentuk umum : printf(%m.nf, argument); m n argument : menyatakan panjang range : menyatakan jumlah digit di belakang koma. : nilai atau variable yang akan ditampilkan.

Contoh : printf(%5.2f, nilai); artinya variable nilai akan ditampilkan sebanyak 5 digit dng 2 digit di belakang koma.

C. Langkah Percobaan /* Program inputan tipe data karakter/string */ #include <stdio.h> #include <conio.h> void main() {

char nama[20]; clrscr(); printf(Masukkan nama Anda : ); gets(nama); printf(Hello, Nama Anda adalah %s, nama); getch(); }

/* Program untuk menampilkan data berupa bilangan pecahan */ #include<stdio.h> #include<conio.h> void main() { float nilai; clrscr(); puts(Masukkan nilai Anda : ); scanf(%f, &nilai); printf(Anda memperoleh nilai %5.2f, nilai); printf(Apakah Anda telah puas mendapat nilai %6.4f ?, nilai); getch(); }

/* Program untuk menampilkan data berupa bilangan integer dan string */ #include <stdio.h> #include <conio.h> void main() { int umur; char nama[20];

clrscr(); puts(Masukkan nama Anda : ); puts(Masukkan umur Anda : ); gets(nama); scanf(%d, &umur); //tipe data string //tipe data integer

printf(Nama Anda : %s \n, nama); printf(Umur Anda : %d \n, umur); getch(); }

MEMASUKKAN BEBERAPA DATA SECARA BERSAMA-SAMA

a. Data dapat dimasukkan secara bersama-sama dalam satu baris. b. Setiap data dipisahkan oleh sebuah karakter. c. Karakter-karakter yang dapat bertindak sebagai pemisah data adalah : Koma () Garis hubung (-)

Titik dua (:) Spasi

#include <stdio.h> main() { int bil1,bil2,bil3; clrscr(); printf("Masukkan 3 buah bilangan bulat : "); scanf("%d-%d-%d",&bil1,&bil2,&bil3); printf("\nBilangan pertama : %3d",bil1); printf("\nBilangan kedua : %3d",bil2); printf("\nBilangan ketiga : %3d",bil3); getch(); }

Hasil : Masukkan 3 buah bilangan bulat : 12-24-48 Bilangan pertama Bilangan kedua Bilangan ketiga : 12 : 24 : 48

/* Program Hitung Gaji */ #include <stdio.h> main() { float gaji,tunj,GAJI; clrscr(); printf("Masukkan Gaji Pokok = Rp. "); scanf("%f",&gaji); tunj = 0.1 * gaji; GAJI = gaji + tunj; /* gaji total*/ printf("\nTunjangan = Rp. %6.2f",tunj); printf("\nGaji Total = Rp. %6.2f",GAJI); getch(); }

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 21

D. Latihan 1. Buatlah Program dalam Bahasa C untuk Menginput dan menampilkan biodata pribadi seseorang yang terdiri dari nama, tempat, tanggal lahir, alamat, nomor telepon, agama, dan jenis kelamin. 2. Nilai akhir dari pelajaran Bahasa C ditentukan oleh tiga nilai yaitu : Nilai Praktek Nilai UTS Nilai UAS bobot 20% bobot 30% bobot 50%

Buatlah program untuk menghitung nilai akhir !

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 22

Praktikum 4
A. Tujuan

Pengambilan Keputusan

1. Mahasiswa dapat memahami dan mengerti bagaimana memecahkan persoalan. Karena banyak persoalan yang memerlukan pengambilan keputusan. 2. Mahasiswa dapat mengimplementasikan pengambilan keputusan secara benar dan terstruktur.

B. Dasar Teori Bahasa C menyediakan beberapa jenis pernyataan berupa : Pernyataan if Pernyataan if-else Pernyataan switch

PERNYATAAN IF bentuk umum : if (kondisi) Pernyataan jika kondisi bernilai benar, maka pernyataan dikerjakan.

Kondisi harus ditulis diantara tanda kurung dan dapat berupa sembarang ungkapan, sedangkan pernyataan dapat berupa sebuah pernyataan tunggal, pernyataan kosong.

Operator relasi digunakan untuk membandingkan nilai dari dua buah ekspresi. Operator-operator yang dikenal Turbo C adalah :

OPERATOR < > == <=

ARTI Lebih kecil Lebih besar Sama dengan Lebih kecil sama dengan

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 23

>= !=

Lebih besar sama dengan Tidak sama dengan

PERNYATAAN IF-ELSE Bentuk umum : if (syarat1) pernyataan-1; else pernyataan2;

Jika kondisi benar maka pernyataan-1 dijalankan sedangkan bila kondisi salah maka pernyataan-2 yang akan dieksekusi.

PEMAKAIAN IF DIDALAM IF Di dalam suatu pernyataan if atau if-else bisa saja terdapat pernyataan if atau if-else yang lain. Bentuk seperti ini dinamakan sebagai nested if.

OPERATOR LOGIKA, menghubungkan dua buah ekspresi logika yaitu : && || ! (AND) (OR) (NOT)

PENGGUNAAN ELSE BERTINGKAT Bentuk umum : if (syarat1) pernyataan; else if (syarat2) pernyataan; else if (syarat3) pernyataan; else pernyataan;

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 24

Syarat IF diperiksa dari atas ke bawah. Jika sebuah syarat benar, pernyataan yang mengikutinya akan dikerjakan dan yang selanjutnya diabaikan. Jika tidak satupun syarat yang benar, ELSE terakhir akan dikerjakan. Jika ELSE terakhir tidak ada dan tidak ada syarat yang benar, maka tidak ada yang dikerjakan. OPERATOR KONDISI Bahasa C menyediakan operator yang tergolong sebagai operator ternary, yakni operator yang memiliki tiga buah operand dengan menggunakan simbol ?:. Bentuk penulisan operator ini adalah : kondisi ? ungkapan-1 : ungkapan-2 Jika kondisi bernilai benar, maka nilai ungkapan kondisi berupa nilai ungkapan-1 sedangkan jika kondisi bernilai salah, maka nilai ungkapan kondisi berupa nilai ungkapan-2

PERNYATAAN SWITCH Tangga if-else dapat dipakai untuk menguji beberapa syarat, tetapi kadang-kadang sulit. Cara lain adalah dengan pernyataan switch. Di dalam pernyataan switch, sebuah variabel secara berturut-turut diuji oleh daftar konstanta bilangan bulat atau konstanta karakter. Jika sesuai dengan sebuah konstanta, pernyataan yang mengikuti konstanta akan dikerjakan. Bentuk Umum : switch (variabel) { case konstanta1; pernyataan; break; case konstanta2; pernyataan; break; default pernyataan; }

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 25

Jika sebuah konstanta sesuai dengan isi variabel, pernyataan-pernyataan setelah case akan dikerjakan sampai ditemukan pernyataan break. Pernyataan setelah default akan dikerjakan jika tidak ada konstanta yang sesuai. Pernyataan default bersifat optional. Jika tidak ada default dan tidak ada konstanta yang sesuai, tidak ada yang dikerjakan. Ada tiga hal penting : 1. Switch hanya dapat memeriksa persamaan dengan sebuah konstanta, sedangkan IF dapat memeriksa syarat-syarat lain (lebih besar, lebih kecil, tidak sama dengan dan sebagainya) 2. Tidak ada dua konstanta yang sama didalam sebuah switch 3. Pernyataan switch lebih baik daripada tangga if-else

Pernyataan break di dalam switch bersifat optional. Break dipakai untuk menghentikan pelaksanaan pernyataan-pernyataan yang mengikuti sebuah konstanta. Jika break tidak ada, pernyataan pada case berikutnya akan dilaksanakan sampai ditemukan break atau akhir dari switch. Anda dapat membuat sebuah switch di dalam sebuah switch (nested switch)

C. Langkah Percobaan 1. PERNYATAAN IF main() { double beli, diskon; clrscr(); printf("Jumlah pembelian : Rp. "); scanf("%lf",&beli); diskon=0; if (beli >= 500000) diskon=0.05*beli; printf("\nBesarnya diskon Anda Rp. %10.2lf",diskon); getch(); }

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 26

Hasil : Jumlah pembelian : Rp. 500000 Besarnya diskon Anda Rp. 25000.00

Untuk pernyataan if yang diikuti dengan pernyataan majemuk, pernyataan if diapit dengan tanda { dan }.

2. PEMAKAIAN IF DIDALAM IF main() { float x,y; clrscr(); printf("Masukan nilai x dan y : "); scanf("%f %f", &x, &y); if (x>0) if (y>0) puts("Nilai x dan y positif"); else puts("Nilai x positif dan y negatif"); else puts("Nilai x negatif dan y bernilai positif atau negatif"); getch(); } Hasil : Masukan nilai x dan y : -12 -12 Nilai x negatif dan y bernilai positif atau negatif

3. OPERATOR LOGIKA main() { char nama[20]; int umur; clrscr(); printf("Nama Calon Pegawai : ");gets(nama);

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 27

printf("Umur

: ");scanf("%d",&umur);

if (umur>=20 && umur <=30) { printf("\nSelamat..., %s",&nama); printf("\n\nAnda Masuk Kategori Kenaikan Jabatan...!"); } else { printf("\nMaaf..., %s",&nama); printf("\n\nUmur Anda Tidak Masuk Kategori Kenaikan Jabatan...!"); } getch(); } Hasil : Nama Calon Pegawai : Aditya Umur : 31

Maaf..., Aditya Umur Anda Tidak Masuk Kategori Kenaikan Jabatan...!

4. PENGGUNAAN ELSE BERTINGKAT main() { int no_menu; clrscr(); printf("\n Menu Restaurant McA"); printf("\n============================"); printf("\n1. Nasi Goreng Informatika"); printf("\n2. Nasi Soto Ayam Internet"); printf("\n3. Gado-gado Disket"); printf("\n4. Bubur Ayam LAN"); printf("\n============================"); printf("\n\nMasukkan Pilihan Anda... :");scanf("%d",&no_menu);

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 28

if (no_menu==1) printf("\nPilihan No.1 Nasi Goreng Informatika Rp.5.000,-"); else if (no_menu==2) printf("\nPilihan No.2 Nasi Soto Ayam Internet Rp.7.000,-"); else if (no_menu==3) printf("\nPilihan No.3 Gado-gado Disket else if (no_menu==4) printf("\nPilihan No.4 Bubur Ayam LAN Rp.4.500,-"); Rp.4.500,-");

else printf("\nPilihan Anda tidak terdaftar pada menu...!"); getch(); } Hasil : Menu Restaurant Mc'A ======================================= 1. Nasi Goreng Informatika Rp. 5.000,2. Nasi Soto Ayam Internet Rp. 7.000,3. Gado-gado Disket 4. Bubur Ayam LAN Rp. 4.500,Rp. 4.000,-

======================================= Masukkan Pilihan Anda... :1 Pilihan No.1 Nasi Goreng Informatika Rp.5.000,-

5. OPERATOR KONDISI #include <stdio.h> main() { float nilai1, nilai2, maksimal; clrscr(); printf("Masukkan dua buah nilai : "); scanf("%f %f", &nilai1, &nilai2); maksimal=(nilai1 > nilai2) ? nilai1 : nilai2; printf("\nNilai terbesar adalah %4.0f", maksimal); getch(); }

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 29

6. PERNYATAAN SWITCH main() { int kelas; float harga,pajak; printf("\nHarga Barang : Rp. "); scanf("%f",&harga);

printf("\nMasukkan Jenis Kelas (1-4) : "); scanf("%d",&kelas); switch (kelas) { case 1 : printf("\n\nJenis Barang : Makanan"); printf("\nHarga Barang : Rp. %6.2f",harga); pajak = 0.1 * harga; printf("\nPajak break; case 2 : printf("\n\nJenis Barang : Pakaian, Sepatu"); printf("\nHarga Barang : Rp. %6.2f",harga); pajak = 0.15 * harga; printf("\nPajak break; case 3 : printf("\n\nJenis Barang : Mesin-mesin"); printf("\nHarga Barang : Rp. %6.2f",harga); pajak = 0.175 * harga; printf("\nPajak break; default : printf("\n\nPilihan Kelas salah...!"); } getch(); } : Rp. %6.2f",pajak); : Rp. %6.2f",pajak); : Rp. %6.2f",pajak);

Hasil :

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 30

Harga Barang

: Rp. 50000

Masukkan Jenis Kelas (1-4) : 2

Jenis Barang : Pakaian, Sepatu Harga Barang : Rp. 50000.00 Pajak : Rp. 7500.00

D. Latihan 1. Buat program untuk menentukan suatu bilangan GENAP atau GANJIL Input : Masukkan sebuah bilangan bulat : 6 Output : Nilai 6 habis dibagi 2 Karena itu termasuk sebagai bilangan GENAP

2. Buat program untuk menentukan hari dengan tampilan sebagai berikut : Menentukan Hari 1=SENIN 2=SELASA 3=RABU 4=KAMIS 5=JUMAT 6=SABTU 7=MINGGU

Masukkan Kode Hari (1-7) : 2 Hari RABU

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 31

E. Tugas

Perusahaan Susu ingin membuat sistem penjualan susu dengan tampilan sebagai berikut :

Masukkan Kode Susu (1-3) : 2 Masukkan Jumlah Pembelian : 5 Masukkan Ukuran (B/S/K) : S

Susu Indomilk Harga Susu Rp. 4000.00 Jumlah Pembelian Rp. 20000.00

Untuk daftar harga produk susu dapat dilihat pada tabel di bawah ini :

Kode Susu 1

Nama Produk Dancow

Ukuran B = Besar S = Sedang K = Kecil

Harga Rp. 10.000,Rp. 4.250,Rp. 2.100,Rp. 8. 500,Rp. 4.000,Rp. 2.025,Rp. 17.000,Rp. 14.500,Rp. 8.300,-

Indomilk

B = Besar S = Sedang K = Kecil

Sustacal

B = Besar S = Sedang K = Kecil

Buat program dengan menggunakan nested switch !

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 32

Praktikum 5&6
A. Tujuan

Pengulangan Proses

1. Mahasiswa dapat mengerti dan memahami penggunaan struktur perulangan While-do, Do - while dan For. 2. Mahasiswa dapat memecahkan masalah programming dengan menggunakan pengulangan proses

B. Dasar Teori 1. LOOP FOR Loop adalah pengulangan perintah-perintah sampai mencapai keadaan tertentu. Turbo C mempunyai 3 jenis loop, yaitu : for while do while

Bentuk umum Loop For : for (inisialisasi; syarat; penambahan) pernyataan;

Keterangan : Inisialisasi adalah pernyataan untuk menyatakan keadaan awal dari variabel kontrol. Syarat adalah ekspresi relasional yang menyatakan berhentinya pengulangan. Penambahan menyatakan perubahan variabel kontrol setiap terjadi pengulangan. Setiap bagian harus dipisahkan oleh tanda titik koma.

OPERATOR PENAMBAH DAN PENGURANG C mempunyai dua operator khusus yaitu penambah (++) dan pengurang (--), contoh : i ++ sama dengan i = i + 1 i -- sama dengan i = i 1

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 33

Operator penambah dan pengurang dapat dituliskan di depan atau dibelakang, tetapi mempunyai arti yang berbeda. Jika operator diletakkan di depan, C akan melakukan penambahan atau pengurangan sebelum memakai nilai operator. Jika diletakkan di belakang, C akan memakai nilai operator lalu menambah atau mengurangi variabel.

Contoh : x = 10 y = ++x hasil : 11 x = 10 y = x++ hasil : 10

VARIASI LOOP FOR Kita dapat memakai beberapa variabel kontrol di dalam loop for, contoh : main() { int x,y; clrscr(); for (x=0,y=0; x+y<=20; x++,++y) printf("%d\n",x+y); getch(); } Program di atas mencetak bilangan 0 sampai 20. Perhatikan pernyataan for di atas. Inisialisasi Syarat : x=0, y=0 : x+y <= 20

Penambahan : x++, y++

Tanda koma dipakai untuk memisahkan dua pernyataan di dalam sebuah bilangan. Misalnya di bagian inisialisasi ada pernyataan x=0 dan y=0. Tanda koma berarti lakukan ini dan ini.

LOOP TAK HINGGA Loop tak hingga dibuat dengan menghilangkan bagian syaratnya, contoh : main() { char ch;

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 34

clrscr(); printf("Ketikkan karakter-karakter : \n"); for (ch=' '; ; ) ch=getche(); }

Program tersebut meminta Anda mengetikkan sebuah huruf dan tidak akan berhenti. Untuk menghentikannya tekan tombol CTRL + BREAK

2. LOOP WHILE Bentuk umum : while (syarat) pernyataan;

Pernyataan pada loop while dapat berupa sebuah pernyataan atau blok pernyataan atau pernyataan kosong. Pernyataan akan diulang selama syarat benar, Loop while menyatakan bahwa pengulangan akan dilakukan terus selama syarat terpenuhi.

3. LOOP DO WHILE Loop for dan while akan mengecek syarat pengulangan pada awal loop. Loop do-while mngecek syaratnya pada akhir pengulangan. Loop do-while akan selalu dikerjakan minimal sekali. Loop do-while menyatakan bahwa pengulangan akan dilakukan selama syarat terpenuhi.

Bentuk umum : do { statemen; statemen; } while (syarat) Bentuk umum untuk loop do-while adalah pada rutin pemilihan menu, sebab menu selalu dikerjakan minimal sekali,

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 35

C. Langkah Percobaan 1. LOOP FOR main() { int i; clrscr(); for (i=1; i <=5 ; i++) printf("%d \n",i); getch(); }

Pada program tersebut : Inisialisasi Syarat :i=1 : i <= 5

Penambahan : i++ , artinya ditambah 1

Hasil : 1 2 3 4 5

Contoh : #include <math.h> main() { int i, kuadrat, jumlah; float akar; char garis[35] = "-------------------------------"; clrscr(); printf("Tabel Kuadrat dan Akar Kuadrat \n"); printf("%s\n",garis); printf("Bilangan Kuadrat Akar Kuadrat\n");

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 36

printf("%s\n",garis); for (i=1; i<=10; i++) { kuadrat = i * i; akar = sqrt(i); printf(" %2d } printf("%s\n",garis); getch(); } %3d %6.4f \n",i,kuadrat,akar);

2. VARIASI LOOP FOR main() { int x,y; clrscr(); for (x=0,y=0; x+y<=20; x++,++y) printf("%d\n",x+y); getch(); }

Program di atas mencetak bilangan 0 sampai 20. Perhatikan pernyataan for di atas. Inisialisasi Syarat Penambahan : x=0, y=0 : x+y <= 20 : x++, y++

3. LOOP BERSARANG main() { int i,j; clrscr(); for (i=1 ; i <= 3 ; i++) { for (j=1 ; j <= 5 ; j++ ) printf("*");

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 37

printf(" \n"); } getch(); }

4. LOOP WHILE main() { int i; clrscr(); i=1; while (i <= 5) { printf("STI&K\n"); i=i+1; } getch(); }

5. LOOP DO WHILE main() { int no_menu; do { clrscr(); printf("\n Menu Hari Ini "); printf("\n ------------------"); printf("\n 1. Nasi Goreng "); printf("\n 2. Nasi Soto Ayam "); printf("\n 3. Gado-Gado printf("\n 4. Bubur Ayam "); ");

printf("\n\n Masukkan pilihan Anda...! (0 = Selesai) ");

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 38

scanf("%d",&no_menu); switch (no_menu) {

case 1 : printf("\n Nasi Goreng Rp. 5000,-"); break; case 2 : printf("\n Nasi Soto Ayam Rp. 6000,-"); break; case 3 : printf("\n Gado-Gado break; case 4 : printf("\n Bubur Ayam break; case 0 : printf("\n Selesai.. Terima kasih..!"); break; default : printf("\n\n Pilihan Anda Salah...!"); } getch(); }while (no_menu != 0); } Rp. 3500,-"); Rp. 4000,-");

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 39

D. Latihan

1. Hitunglah nilai faktorial sebuah bilangan bulat positif, bila rumus untuk faktorial adalah : n (n!) = n*(n-1). Contoh : 3! = 3*2*1 = 6

2. Buat program untuk menampilkan keluaran sebagai berikut : 1 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 4 6 8 10 12 14 16 9 12 15 18 21 24 16 20 24 28 32 25 30 35 40 36 42 48 49 56 64 . 2 3 4 5 6 7 8

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 40

Praktikum 7&8
A. Tujuan

Array

Mahasiswa memahami dan dapat menerapkam array dalam memecahkan masalah pemrograman B. Dasar Teori Array merupakan kumpulan dari nilai-nilai data yang bertipe sama dalam urutan tertentu yang menggunakan nama yang sama. Letak atau posisi dari elemen array ditunjukkan oleh suatu index. Dilihat dari dimensinya array dapat dibagi menjadi Array dimensi satu, array dimensi dua dan array multi-dimensi.

1 ARRAY DIMENSI SATU Setiap elemen array dapat diakses melalui indeks. dari 0. Deklarasi Array Indeks array secara default dimulai

Bentuk umum : Tipe_array nama_array[ukuran]; Contoh :

2 ARRAY DIMENSI DUA Array dua dimensi merupakan array yang terdiri dari m buah baris dan n buah kolom. Bentuknya dapat berupa matriks atau tabel. Deklarasi array : Tipe_array nama_array[baris][kolom];

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 41

Untuk mengakses array, misalnya kita ingin mengisi elemen array baris 2 kolom 3 dengan 10 maka perintahnya adalah sbb : X[1][2] = 10; 3 ARRAY MULTI-DIMENSI Array multi-dimensi merupakan array yang mempunyai ukuran lebih dari dua. Bentuk pendeklarasian array sama saja dengan array dimensi satu maupun array dimensi dua. Bentuk umumnya yaitu : tipe_array nama_array*ukuran1+*ukuran2+*ukuranN+;

C. Langkah Percobaan /* Program untuk menginput nilai mahasiswa ke dalam array satu dimensi */ #include<stdio.h> #include<conio.h> void main(); { int index, nilai[10];

/* input nilai mahasiswa */ printf(Input nilai 10 mahasiswa : ); for(index=0; index < 10; index++) , printf(Mahasiswa %i : , index+1); scanf(%i, &nilai*index+); }

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 42

/* tampilkan nilai mahasiswa */ printf(Nilai mahasiswa yang telah diinput); for(index=0; index < 10; index++) , printf(%5.0i, nilai*index+); } getch(); }

Contoh aplikasi array satu dimensi : /* Program untuk menentukan jurusan & jenjang mahasiswa berdasarkan NIM*/ #include<stdio.h> #include<conio.h> #include<string.h> void main() { char jurusan[25], jenjang[10], nim[10], nama[20]; crlscr(); printf(Masukkan nama Anda : ); gets(nama); printf(Masukkan NIM Anda : ); gets(nim);

/***** cari jurusan *****/ switch(nim[2]) { case 1 : strcpy(jurusan, Teknik Informatika); break; case 2 : strcpy(jurusan, Sistem Informasi); break; case 3 : strcpy(jurusan, Teknik Komputer); break; case 4 : strcpy(jurusan, Komputerisasi Akuntansi); break; default : printf(Anda salah memasukkan NIM. Coba periksa lagi !); break; }

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 43

/***** cari jenjang *****/ if(nim*4+ == 5) { strcpy(jenjang, Strata-1); } else { if(nim*4+ == 3) { strcpy(jenjang,Diploma-3); } else printf(ANda salah memasukkan NIM. Coba periksa lagi !); } /***** tampilkan data mahasiswa *****/ printf( << Data Mahasiswa Universitas Budi Luhur >>); printf(Nama : %s, nama); printf(NIM : %s, nim); printf(Jurusan : %s, jurusan); printf(Jenjang : %s, jenjang); getch(); }

/* Program menginput nilai(bilangan) ke dalam array dimensi dua & menampilkannya */ #include<stdio.h> #include<conio.h> void main() { int baris, kolom, matriks[3][4]; crlscr();

// Input elemen array secara Row Major Order printf(Input elemen Array : \n);

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 44

for (baris=0; baris<3; baris++) { for (kolom=0; kolom<4; kolom++) { printf (matriks*%i+*%i+, baris+1, kolom+1); scanf (%i, &matriks*baris+*kolom+); } printf(\n); }

// Tampilkan elemen Array secara Row Major Order printf (Isi array : \n); for (baris=0; baris<3; baris++) { for (kolom=0; kolom<4; kolom++) { printf (%i, &matriks*baris+*kolom+); } printf (\n); } getch(); }

Contoh Program 2 : #include<stdio.h> /* Program penjumlahan matriks dua dimensi */ #include<conio.h> void main() { int A[3][4], B[3][4], X[3][4], Y[3][4], C[3][4], i, j; clrscr();

/******* Masukkan matriks A *******/ for(i=0;i<3;i++)

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 45

{ for(j=0;j<4;j++) { printf("input data matrik A[%i][%i] : ",i+1,j+1); fflush(stdin);scanf("%i",&A[i][j]); } }

/******** Masukkan matriks B ********/ for(i=0;i<3;i++) { for(j=0;j<4;j++) { printf("input data matrik B[%i][%i] : ",i+1,j+1); fflush(stdin);scanf("%i",&B[i][j]); } }

/******** Proses penjumlahan matriks A dan B ********/ for(i=0;i<3;i++) { for(j=0;j<4;j++) { X[i][j]=A[i][j]+B[i][j]; } }

/******** Cetak isi matriks A ********/ printf("\n matrik A\n"); for(i=0;i<3;i++) { for(j=0;j<4;j++) printf("%6i",A[i][j]);

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 46

printf("\n"); } printf("\n");

/******** Cetak isi matriks B *******/ printf("\n matrik B\n"); for(i=0;i<3;i++) { for(j=0;j<4;j++) printf("%6i",B[i][j]); printf("\n"); } printf("\n");

/******** Cetak hasil penjumlahan matriks A dan B *******/ printf("\n matrik penjumlahan A+B\n"); for(i=0;i<3;i++) { for(j=0;j<4;j++) printf("%6i",X[i][j]); printf("\n"); } printf("\n\n"); getch(); } Contoh aplikasi Array untuk menghitung invers suatu matriks dengan ukuran m x n dengan metode Gauss-Jordan :

/* MENGHITUNG INVERS MATRIKS DENGAN METODE GAUSS-JORDAN */ #include<stdio.h> #include<conio.h>

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 47

void main() { float p[20], a[20][20], t; int m, i, j, k, x; clrscr(); printf("\nMasukkan ukuran matriks : \n"); scanf("%d", &m); printf("\nMasukkan nilai elemen matriks yang akan diinvers); printf(\nsecara baris per baris\n");

/* Membaca matriks asli */ for(i=1; i<=m; i++) { printf("\n"); for(j=1; j<=m; j++) { printf("A(%d,%d)= ",i, j); scanf("%f", &a[i][j]); } }

/* Mencetak Matriks asli */ printf("\nMatriks asli : "); for(i=1; i<=m; i++) { printf("\n"); for(j=1; j<=m; j++) printf(" %.2f", a[i][j]); }

/* Proses inversi */ for(i=1; i<=m; i++)

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 48

{ p[i] = a[i][j]; a[i][j] = 1; for(j=1; j<=m; j++) { a[i][j] = a[i][j]/p[i]; } for(k=1; k<=m; k++) { if(k != i) { t = a[k][i]; a[k][i] = 0; for(x=1; x<=m; x++) a[k][x] = a[k][x] - a[i][x] * t; } } }

/* Mencetak matriks hasil inversi*/ printf("\n\nMatriks inversi : \n"); for(i =1; i <=m; i++) { for(j=1; j<=m; j++) printf(" %.1f", a[i][j]); printf(" \n"); } getch(); }

Contoh Program : #include stdio.h #include conio.h

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 49

void main() { int i, j, k; static int data_huruf[2][8][8] = { { { 1, 1, 1, 1, 1, 1, 1, 0 }, { 1, 1, 0, 0, 0, 0, 1, 0 }, { 1, 1, 0, 0, 0, 0, 0, 0 }, { 1, 1, 1, 1, 1, 1, 1, 0 }, { 0, 0, 0, 0, 1, 1, 1, 0 }, { 1, 0, 0, 0, 1, 1, 1, 0 }, { 1, 1, 1, 1, 1, 1, 1, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0 } },

{ { 1, 1, 0, 0, 0, 1, 1, 0 }, { 1, 1, 0, 0, 0, 1, 1, 0 }, { 1, 1, 0, 0, 0, 1, 1, 0 }, { 1, 1, 1, 1, 1, 1, 1, 0 }, { 1, 1, 1, 0, 0, 1, 1, 0 }, { 1, 1, 1, 0, 0, 1, 1, 0 }, { 1, 1, 1, 0, 0, 1, 1, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0 } } };

D. Latihan Buatlah program untuk menginput, menghitung dan mencetak perkalian matriks 3 x 3

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 50

Praktikum 9 &10
A. Tujuan

Fungsi

1. Mahasiswa dapat menjelaskan cara pemanggilan pada procedure tersarang. 2. Mahasiswa dapat menjelaskan cara fungsi memanggil dirinya sendiri (rekursif). 3. Mahasiswa membuat program fungsi. B. Dasar Teori Function adalah sebuah blok di dalam Turbo C++ Bentuk umum : tipe nama_function (deklarasi parameter) { pernyataan; pernyataan; }

deklarasi parameter Daftar tipe dan nama variabel yang akan menerima nilai pada saat function tersebut dipanggil. Setiap parameter dipisahkan oleh tanda koma. Jika function tidak mempunyai parameter daftar ini akan kosong. Jadi hanya tanda kurung saja.

Deklarasi parameter agak berbeda dengan deklarasi variabel. Pada deklarasi variabel, Anda dapat menyatakan sebuah tipe untuk beberapa variabel yang tipenya sama. Contoh : int a,b,c;

Tetapi pada deklarasi parameter Anda harus menyatakan setiap tipe dari parameter. Bentuk umum : f (tipe nama_var1, tipe nama_var2, , tipe nama_varn);

Contoh : f (int a, int b, int c);

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 51

Pernyataan Return Pernyataan return menyatakan dua hal : 1. Return mengakhiri jalannya function dan kembali ke program pemanggil 2. Menghasilkan sebuah nilai

Function jumlah() pada program di atas mempunyai 2 parameter yaitu : jumlah(a,b) jumlah(int x, int y)

Isi variabel a dan b dikirimkan ke function jumlah() dan diterima oleh x dan y. Namanya tidak harus sama, tetapi tipenya harus sama. Dalam hal ini semua bertipe int.

Perhatikan program : c=jumlah(a,b) return x+y

Function jumlah() menghasilkan x+y dan hasilnya dimasukkan ke variabel c. Yang penting, variabel penerima dan hasil function harus bertipe sama. Jika tipe tidak dinyatakan secara eksplisit, function tersebut menghasilkan nilai yang bertipe int.

Misalnya kita akan mengubah hasil function menjadi float, maka ada dua cara yang harus diperhatikan : 1. Function harus diberi tipe secara eksplisit 2. Sebelum function dipanggil untuk pertama kali, compiler harus diberitahu tipe function tersebut.

PROTOTIPE FUNCTION Prototipe function menyatakan 2 hal : 1. Tipe dari nilai yang dihasilkan function, agar compiler dapat menghasilkan kode yang benar untuk tipe nilai yang dihasilkan 2. Tipe dan banyaknya argumen yang dipakai oleh function.

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 52

Bentuk umum : Tipe nama_function(daftar parameter)

Biasanya prototipe diletakkan di awal program, dan harus ditemukan sebelum function tersebut dipanggil untuk pertama kalinya. Perhatikan baris 1 pada program di atas. Pernyataan tersebut adalah prototipe function. Pemanggilan function jumlah() ada di program c=jumlah(a,b) , jadi prototipe berada sebelum pemanggilannya.

Function yang tidak menghasilkan nilai dapat dideklarasikan sebagai tipe void. Hal ini dapat mencegah kesalahan yang tidak disengaja.

Jika Anda tidak menyatakan tipe void, Turbo C++ menganggap function tersebut menghasilkan nilai bilangan bulat.

Variabel yang dideklarasikan di dalam function dinamakan variabel lokal. Di dalam Turbo C++, sebuah variabel bersifat lokal terhadap sebuah blok, jadi lebih sempit dibandingkan dengan sebuah function. Sebenarnya sebuah function juga merupakan sebuah blok dan blok tersebut dapat memiliki blok yang lebih kecil lagi.

Variabel lokal hanya dapat dipakai di dalam blok dimana variabel tersebut di deklarasikan. Sebuah blok dimulai dengan tanda { dan diakhiri dengan tanda }. Variabel lokal dibuat pada saat blok tempat deklarasi variabel tersebut dijalankan. Jika blok tersebut sudah selesai dikerjakan, variabel lokal akan dibuang.

Variabel global dikenal di setiap bagian program. Variabel global akan menyimpan nilai yang ada di dalamnya, selama program dijalankan. Variabel global di deklarasikan di luar semua function.

perhatikan baris 2, variabel a di deklarasikan sebelum function main(). Sebenarnya variabel global boleh diletakkan disetiap tempat, sebelum pemakainnya yang pertama. Variabel global sebaiknya diletakkan di awal program.

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 53

Fungsi dalam Bahasa C dapat dipakai secara rekursi, dalam artian suatu fungsi dapat memanggil dirinya sendiri. Rekursi jarang dipakai, diantaranya disebabkan : Membuat fungsi sulit untuk dipahami Hanya cocok untuk persoalan tertentu saja Memerlukan stack dengan ukuran yang lebih besar.

C. Langkah Percobaan Ada dua cara untuk kembali ke program pemanggil : 1. Pada saat pernyataan terakhir dari function dijumpai (dijumpai tanda akhir function } ) Contoh : main() { clrscr(); hai(); } hai() { printf("Hai.. Apa kabar..?"); getch(); }

2. Dengan menggunakan pernyataan return. Pernyataan return juga dapat dipakai tanpa menghasilkan sebuah nilai. Contoh : main() { clrscr(); hai(); } hai() {

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 54

printf("Hai.. Apa kabar..?"); return; printf("\nBaik-baik saja kannn..?"); getch(); }

Pernyataan return pada program di atas akan mengakhiri function hai() sehingga program di bawahnya tidak dikerjakan

Function hai() pada program di atas hanya dapat mencetak Hai.. Apa kabar..?. Jika kita menginginkan function tersebut dapat mencetak pesan yang berlainan, kita harus mengubahnya menjadi seperti berikut : main() { clrscr(); hai("Haloo...!"); hai("Siapa nama kamu..?"); } hai(char pesan[20]) { printf("%s \n",pesan); getch(); }

Pada contoh di atas pemanggilan function hai() menggunakan argumen, yaitu Haloo...! dan Siapa nama kamu..?. Di dalam function hai() harus ada variabel yang menerima argumen tersebut. Dalam hal ini adalah pesan (dinamakan parameter). Sifat-sifat parameter sama seperti variabel lokal yang ada di dalam function. Tipe parameter harus sama dengan tipe argumen.

Untuk menghasilkan sebuah nilai, Anda harus menyatakan return beserta nilai yang dihasilkannya. Contoh : main()

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 55

{ int a,b,c; clrscr(); printf("Masukkan nilai A : "); scanf("%d",&a); printf("Masukkan nilai B : "); scanf("%d",&b); c=jumlah(a,b); printf("\n\nJumlah kedua bilangan tersebut adalah %4d",c); getch(); }

jumlah(int x, int y) { return x+y; } Cara mendeklarasikan function dengan suatu tipe, sama dengan deklarasi variabel, yaitu tipe mendahului nama function. Contoh : float jumlah(float x, float y); main() { float a,b,c; clrscr(); printf("Masukkan nilai A : "); scanf("%f",&a); printf("Masukkan nilai B : "); scanf("%f",&b); c=jumlah(a,b); printf("\n\nJumlah kedua bilangan tersebut adalah %4.1f",c); getch(); }

float jumlah(float x, float y) {

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 56

return x+y; } FUNCTION DENGAN TIPE VOID Contoh : void hai(); main() { clrscr(); hai(); getch(); }

void hai() { printf("Hai... Apa kabar?"); }

VARIABEL LOKAL Contoh : #include <math.h> float akar (float x); main() { float a,b; clrscr(); printf("Masukkan sebuah bilangan : "); scanf("%f",&a); b=akar(a); printf("\n\nAkar dari bilangan tersebut adalah %6.2f",b); getch(); }

float akar(float x) {

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 57

float y; if (x>=0) { y=sqrt(x); return y; } else return 0; }

VARIABEL GLOBAL Contoh : #include <stdio.h> int a; void f1(void); main() { clrscr(); printf("Masukkan nilai A adalah "); scanf("%d",&a); f1(); printf("\n\nNilai A sesudah pemanggilan function adalah %3d",a); getch(); }

void f1(void) { printf("\n\nNilai A di dalam function sebelum dijumlah adalah %3d",a); a+=5; printf("\n\nNilai A di dalam function sesudah dijumlah adalah %3d",a); } REKURSI Contoh : #include <stdio.h> int faktorial(int);

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 58

main() { clrscr(); int x; puts("Mencari Nilai Faktorial"); printf("Masukkan sebuah bilangan bulat positif : "); scanf("%d",&x); printf("Nilai faktorial dari %d = %d\n", x, faktorial (x)); getch(); }

int faktorial(int m) { if (m==1) return(1); else return(m*faktorial(m-1)); }

D. Latihan 1. Buat program untuk menghitung gaji harian PT. JAYA dengan ketentuan : a. Gaji pokok karyawan Rp. 2000/jam b. Bila karyawan bekerja lebih dari 7 jam/hari maka kelebihannya dihitung lembur yang besarnya 1.5 dari gaji pokok c. Untuk karyawan yang bekerja 8 jam/hari atau lebih akan mendapat tambahan uang makan sebesar Rp. 3500 d. Karyawan yang bekerja 9 jam/hari atau lebih akan mendapat uang transport lembur sebesar Rp. 4000

Program ini akan terdiri dari 5 buah fungsi : main(), pokok(), lembur(), makan() dan jasa() Input : NIP, Nama, Jumlah jam kerja Output : NIP, Nama, Gaji pokok, Lembur, Uang makan, Transport lembur

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 59

Praktikum 11 & 12
A. Tujuan

Pointer dan Struktur

1. Agar mahasiswa lebih memahami mengenai algoritma dari structure 2. Agar mahasiswa lebih memahami algoritma dari pointer 3. Mahasiswa dapat membuat tipe data pointer

B. Dasar Teori Pointer banyak dilibatkan dalam program C, misalnya untuk melewatkan string dari suatu fungsi ke fungsi yang lain. Penerapan pointer yang paling umum yaitu untuk menciptakan variabel dinamis yang memungkinkan untuk memakai memori bebas (memori yang belum dipakai) selama eksekusi program.

Variabel pointer sering dikatakan sebagai variabel yang menunjuk ke obyek lain. Pada kenyataan yang sebenarnya, variabel pointer berisi alamat dari suatu objek lain yaitu objek yang dikatakan ditunjuk oleh pointer. Sebagai contoh, px adalah pointer dan x adalah variabel yang ditunjuk oleh px. Jika px berada pada alamat memori (alamat awal) 1000, maka px akan berisi 1000.

Suatu variabel pointer dideklarasikan dengan bentuk : tipe *nama_variabel;

dengan tipe berupa sembarang tipe sedang nama_variabel adalah nama dari pointer.

Agar suatu pointer menunjujk ke variabel lain, mula-mula pointer harus diisi dengan alamat dari variabel yang akan ditunjuk. Untuk menyatakan alamat dari suatu variabel, operator & (operator alamat, yang bersifat unary) bisa digunakan dengan cara menempatkan operator di depan nama variabel.

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 60

Jika suatu variabel sudah ditunjuk pointer, variabel tersebut dapat diakses melalui variabel itu sendiri (dikatakan sebagai pengaksesan langsung) ataupun melalui pointer (dikatakan sebagai pengaksesan tidak langsung). Pengaksesan tak langsung dilakukan dengan menggunakan operator indirection berupa simbol * (bersifat unary).

POINTER dan ARRAY Hubungan antara pointer dan array pada C sangatlah erat, sebab sesunguhnya array secara internal akan diterjemahkan dalam bentuk pointer.

POINTER dan STRING Contoh program di bawah ini menggambarkan pertukaran dua string yang dilakukan melalui pertukaran isi array melalui pointer. Perhatikan bahwa dengan pointer, penyalinan isi arrray tidak perlu dilakukan. Sebagai efeknya bisa menghemat waktu eksekusi.

POINTER dan FUNGSI Pointer dan kaitannya dengan fungsi yang akan dibahas berikut meliputi : Pointer sebagai parameter fungsi Penerapan pointer sebagai parameter yaitu jika diinginkan agar nilai suatu variabel internal dapat diubah oleh fungsi yang dipanggil.

Pointer sebagai keluaran fungsi Suatu fungsi dapat dibuat agar keluarannya berupa pointer. Misalnya suatu fungsi menghasilkan keluaran berupa pointer yang menunjuk ke string.

STRUKTUR Struktur adalah koleksi dari variabel yang dinyatakan dengan sebuah nama dengan sifat setiap variabel dapat memiliki tipe yang berlainan. Struktur biasa dipakai untuk mengelompokkan beberapa informasi yang berkaitan menjadi sebuah kesatuan.

Deklarasi struktur : struct nama_tipe_struktur { tipe field-1; tipe field-2;

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 61

tipe field-n; } variabel_struktur1, ..., variabel struktur-n;

Masing masing tipe elemen struktur dapat berlainan. Adapun variabel struktur menyatakan bahwa variabel struktur yang dideklarasikan bisa lebih dari satu dan dipisahkan dengan tanda titik koma.

Misalnya : struct nama_tipe_struktur { tipe field-1; tipe field-2; tipe field-n; } variabel_struktur-1, ..., variabel_struktur-n

Contoh : struct data_tanggal { int tanggal; int bulan; int tahun; }; data_tanggal tgl_lahir; ATAU
struct data_tanggal { int tanggal; int bulan; int tahun; } tgl_lahir;

Dalam suatu struktur, elemen yang terkandung di dalamnya bisa juga berupa struktur, misalnya : struct data_tanggal { int tanggal; int bulan; int tahun; };

struct data_rekan { char nama[25]; struct data_tanggal tgl_lahir;

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 62

} info_rekan;

MENGAKSES ELEMEN STRUKTUR Elemen struktur dapat diakses dengan menggunakan bentuk : variabel_struktur.nama_field (antara variabel struktur dan nama field dipisahkan dengan tanda TITIK) Misalnya : info_rekan.tgl_lahir.tanggal = 30; tgl = info_rekan.tgl_lahir.tanggal; puts(info_rekan.nama);

Untuk menampilkan data : puts(info_rekan.nama);

ARRAY dengan STRUKTUR Penggunaan struktur sering dikaitkan dengan array. Array struktur adalah array yang dipakai untuk menyimpan data.

C. Langkah Percobaan Contoh : main() { int x, y; int *px; /* px pointer yang menunjuk objek bertipe int */ clrscr();

x=87; px=&x; y=*px; printf("Alamat x = %p", &x); printf("\nIsi px = %p", px); printf("\nIsi X = %d", x); printf("\nNilai yang ditunjuk oleh px = %d", *px);

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 63

printf("\nNilai y = %d",y); }

Hasil : Alamat x = FFCC Isi px Isi X = FFCC = 87

Nilai yang ditunjuk oleh px = 87 Nilai y = 87

Antara tipe pointer dan tipe objek yang akan ditunjuk oleh pointer haruslah sejenis. Contoh : Pemakaian pointer yang salah main() { float *pu; float nu; int u = 1234;

clrscr(); pu=&u; /* pernyataan ini salah karena tipe pu dan u berbeda */ nu = *pu; printf("Nilai u = %d", u); printf(\nNilai nu = %f", nu); }

Contoh program di bawah ini memberikan gambaran tentang pengubahan isi suatu variabel secara tak langsung. main() { float d, *pd; clrscr(); d=54.5; printf("Isi d semula = %g", d);

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 64

pd=&d; *pd = *pd + 10; /* identik dengan d = d + 10 */ printf("\nIsi d kini = %g", d); } Hasil : Isi d semula = 54.5 Isi d kini = 64.5

Contoh : main() { static int tgl_lahir[]={24, 12, 1970}; int i, *ptgl; clrscr();

ptgl = tgl_lahir; /* ptgl berisi alamat array */ for (i=0; i<3; i++) printf("Alamat ke-%d adalah %d\n",i, *(ptgl+i)); }

Hasil : Alamat ke-0 adalah 24 Alamat ke-1 adalah 12 Alamat ke-2 adalah 1970 char *nama1 = "CAT WOMAN"; char *nama2 = "BATMAN"; Contoh main() { char *namax; clrscr();

puts("Kata Semula :"); printf("Nama-1 : %s", nama1); printf("\nNama-2 : %s", nama2);

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 65

namax=nama1; /* penukaran string dengan pointer */ nama1=nama2; nama2=namax;

puts("\n\nKata Akhir :"); printf("Nama-1 : %s", nama1); printf("\nNama-2 : %s", nama2); }

Hasil : Kata Semula : Nama-1 : CAT WOMAN Nama-2 : BATMAN

Kata Akhir : Nama-1 : BATMAN Nama-2 : CAT WOMAN

Contoh : void rubah(int *x, int *y); main() { int a=3; int b=7; clrscr();

printf("Nilai semula : a= %d dan b= %d", a,b); rubah(&a, &b); printf("\nNilai akhir : a= %d dan b= %d", a,b); }

void rubah(int *x, int *y) { *x = *y + 2;

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 66

*y = *y + 2; }

Hasil : Nilai semula : a= 3 dan b= 7 Nilai akhir : a= 9 dan b= 9

Contoh : char *nama_bulan(int n); main() { int bl; char lagi;

do { clrscr(); printf("Bulan (1..12) : "); scanf("%d", &bl); printf("%s\n", nama_bulan(bl)); printf("Input lagi [y/t] : "); lagi=getch(); } while (lagi == 'y' || lagi == 'Y'); }

char *nama_bulan(int n) { static char *bulan[] = { "Kode bulan salah", "Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 67

}; return ((n<1 || n>12) ? bulan[0] : bulan[n]); }

Hasil : Bulan (1..12) : 4 April Input lagi [y/t] :

Contoh #include <stdio.h>

main() { int i,n; struct data_tanggal { int tanggal; int bulan; int tahun; };

struct data_rekan { char nama[30]; struct data_tanggal tgl_lahir; };

struct data_rekan info_rekan; clrscr(); printf("Nama Lengkap : "); gets(info_rekan.nama); printf("Tanggal Lahir : "); scanf("%d",&info_rekan.tgl_lahir.tanggal); printf("Bulan Lahir : "); scanf("%d",&info_rekan.tgl_lahir.bulan); printf("Tahun Lahir : "); scanf("%d",&info_rekan.tgl_lahir.tahun);

printf("\n\nNama lengkap : %s", info_rekan.nama);

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 68

printf("\nTanggal Lahir : %d-%d-%d", info_rekan.tgl_lahir.tanggal, info_rekan.tgl_lahir.bulan, info_rekan.tgl_lahir.tahun); getch(); }

Hasil : Nama Lengkap : Aditya Fajar Ramadhan Tanggal Lahir : 11 Bulan Lahir : 11 Tahun Lahir : 1978

Nama lengkap : Aditya Fajar Ramadhan Tanggal Lahir : 11-11-1978

Contoh : #include <stdio.h> #include <string.h> #include <ctype.h> #include <conio.h> #define maks 20

main() { struct data_tanggal { int tanggal; int bulan; int tahun; };

struct data_rekan {

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 69

char nama[21]; struct data_tanggal tgl_lahir; };

struct data_rekan info[maks]; char tombol; int i, jumlah = 0;

puts("DATA REKAN-REKAN : \n"); clrscr(); do { printf("Nama : "); gets(info[jumlah].nama); printf("Tanggal Lahir (mm-dd-yyyy) : "); scanf("%d-%d-%d", &info[jumlah].tgl_lahir.tanggal, &info[jumlah].tgl_lahir.bulan, &info[jumlah].tgl_lahir.tahun);

fflush(stdin); /* hapus sisa data dalam penampung keyboard */ jumlah ++; printf("\nMau memasukkan data lagi [y/t] ? "); tombol = toupper(getch()); while ( !(tombol == 'T' || tombol == 'Y')) tombol = toupper(getch()); printf("%c\n\n", tombol); }

while (tombol== 'Y'); puts("\nData Rekan : NAMA - TANGGAL LAHIR"); for(i=0; i<jumlah; i++) printf("\n%-21s %d-%d-%d", info[i].nama, info[i].tgl_lahir.tanggal, info[i].tgl_lahir.bulan,

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 70

info[i].tgl_lahir.tahun); getch(); }

Hasil : Nama : Ajeng Regita Tanggal Lahir (mm-dd-yyyy) : 13-03-1980

Mau memasukkan data lagi [y/t] ? Y

Nama : Aditya Fajar Tanggal Lahir (mm-dd-yyyy) : 11-11-1981

Mau memasukkan data lagi [y/t] ? T

Data Rekan : NAMA - TANGGAL LAHIR

Ajeng Regita Aditya Fajar

13-3-1980 11-11-1981

Contoh: Program menentukan bulan dengan menggunakan struktur dan fungsi void cetak_tanggal(int tg, int bl, int th);

main() { struct data_tanggal { int tanggal; int bulan; int tahun; };

struct data_tanggal proses = {12, 3, 1985};

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 71

cetak_tanggal(proses.tanggal, proses.bulan, proses.tahun); }

void cetak_tanggal(int tg, int bl, int th) { static char *nama_bulan[]= { "Kode bulan salah...!", "Januari", "Feburari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember" };

clrscr(); printf("%d %s %d", tg, nama_bulan[bl], th); }

Hasil : 12 Maret 1985

D. Latihan LATIHAN 1. Buat program dengan menggunakan pointer sehingga menghasilkan keluaran sebagai berikut : D ND AND LAND RLAND ORLAND BORLAND

2. Buat program untuk menentukan zodiak kelahiran dengan menggunakan Array dengan Struktur.

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 72

Bentuk keluaran : Tanggal Lahir Anda [tgl-bln-tahun] : 24-12-1970 Zodiak Anda adalah : CAPRICORN

3. Buat program untuk menyimpan data mahasiswa dengan menggunakan struktur. Bentuk tampilan masukan : NPM NAMA TGL LAHIR ALAMAT TELEPON : 10400570 : Muh. Rizki Putra : 09-19-1980 : Pamulang II : 7874528

Mau memasukkan data lagi [y/t] ?

Bentuk tampilan keluaran : 10400570 Muh. Rizky Putra 09-09-1980 Pamulang II/3 7875428

10400572 Pratama Sutisna 11-08-1978 Mp. Prapatan/25 7987555

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 73

Biografi Penulis

Aga Sadewa, Alumni UPN Veteran Jakarta asal Jawa Barat, tepatnya di Kota Depok. Lulus kuliah S1 Teknik Informatika Tahun 2009. Penulis dilahirkan di Bogor, April 1986. Lulusan SMA Negeri 106 Jakarta Tahun 2004. Semasa kuliah sangat menyukai dunia pendidikan, pemrograman, troubleshooting hardware dan software.

Penulis dapat dihubungi melalui email : agasadewa@yahoo.co.id / agasadewa@gmail.com Facebook : aga_lewatdoank@yahoo.com

Pemrograman Bahasa C Aga Sadewa,S.Kom

Page 74

Anda mungkin juga menyukai