Anda di halaman 1dari 34

Diktat Praktikum

Algoritma dan Pemrograman C/C++


Edisi II
Oleh:
Dr. Darmawan Hidayat, MT.
Dr. Bambang Mukti Wibawa, M.S.

Diktat praktikum ini hanya digunakan di dalam lingkungan


Program studi Teknik Elektro Universitas Padjadjaran
Semester Ganjil 2016/2017

PROGRAM STUDI TEKNIK ELEKTRO


UNIVERSITAS PADJADJARAN
2016

DAFTAR POKOK BAHASAN


1. Pengenalan C
a. Katakunci dan pegenal (Keywords and Identifier)
b. Variabel dan konstanta (Variables and Constants)
c. Tipe data (Data Types)
d. Input/Output
e. Operator pemrograman C (Programming Operators)
f. Contoh program
2. Keputusan dan perulangan (Decision and Loops)
a. Pemrograman if...else
b. Perulangan for...
c. Perulangan do...while
d. Instruksi breakdan continue
e. Pernyataan switch...case
f. Lompatan goto
g. Contoh keputusan dan perulangan
3. Fungsi
a. Pengenalan fungsi (Functions Introduction)
b. Fungsi dari pengguna (C User-defined Functions)
c. Tipe fungsi (Function Types)
d. Rekursi (Programming recursion)
e. Storage Class
f. Contoh fungsi (Function Examples)
4. Larik dan string (Arrays and Strings)
a. Pengenalan larik (Arrays Introduction)
b. Larik multidimensi (Multi-dimensional Arrays)
c. Larik dan fungsi (Arrays & Functions)
d. Pemrograman string (Programming Strings)
e. Fungsi string (String Functions)
f. Contoh string (String Examples)
5. Pointer
a. Pengenalan pointer (Pointers Introduction)
b. Pointer dan larik (Pointers And Arrays)
c. Pointer dan fungsi (Pointers And Functions)
d. Alokasi memeori dinamik (Dynamic Memory Allocation)
e. Contoh pointer (Pointer Examples)
6. Struktur dan gabungan (Structure & Union)
a. Pengenalan struktur (Structure Introduction)
b. Struktur dan pointer (Structures and Pointers)
c. Struktur dan fungsi (Structure and Function)
d. Pemrograman gabungan (Programming Unions)
e. Contoh struktur (Structure Examples)
7. File I/O
i

a. File Input/Output
b. Contoh pemrograman file
8. Akses port USB (Interfacing)
a. Komunikasi serial
b. Port USB
c. Baca-tulis port USB
d. Peraga LED/7-segmen/motor stepper via port USB

ii

KATA PENGANTAR
Bahasa C telah menjadi Bahasa pemrograman standar yang banyak digunakan
oleh para akademisi dan praktisi karena Bahasa C memiliki beberapa keunggulan
seperti: 1. Bahasa C tersedia hampir di semua jenis computer, 2. Kode bahasa C
sifatnya adalah portable Aplikasi yang ditulis dengan bahasa C untuk suatu komputer
tertentu dapat digunakan di komputer lain hanya dengan sedikit modifikasi, 4. Proses
executable program bahasa C lebih cepat, 5. Bahasa C juga dianggap sebagai bahasa
tingkat menengah, dan 8. Bahasa C mampu menggabungkan kemampuan bahasa
tingkat tingkat tinggi dengan bahasa tingkat tingkat rendah .
Forum Pendidikan Tinggi Teknik Elektro Indonesia (FORTEI)
merekomendasikan agar dalam kurikulum prodi Teknik Elektro disertakan pengetahuan
(body of knowledge) pemrograman dalam bentuk Pemecahan Masalah dengan Bahasa
C yang disertai dengan praktikum dengan bobot sebanyak 3 6 SKS. Sejalan dengan
rekomendasi tersebut kurikulum Prodi TE Unpad memberikan pemrograman Bahasa C
sebanyak 5 SKS (4 SKS perkuliahan dan 1 SKS praktikum) yang termuat dalam mata
kuliah dan praktikum Algoritma dan Pemrograman pada Semester I.
Untuk keperluan praktikum, Prodi TE telah menyusun diktat tuntunan praktikum
yang bersifat tuntunan step-by-step dan tutorial untuk belajar Bahasa C. Tujuan
instruksional Algoritma dan Pemrograman ini adalah setelah mengikuti praktikum,
mahasiswa diharapkan mampu menuliskan program Bahasa C untuk pemecahan
masalah matematika dan antarmuka perangkat keras antara komputer dan perangkat
eksternal secara benar.
Diktat Praktikum Edisi I ini terdiri dari tujuh modul, memperkenalkan dasar-dasar
Bahasa C, problem solving dan pemrograman antarmuka antara komputer dengan
trainer kit melalui protokol komunikasi serial UART RS-232. Perbaikan dan
penyempurnaan terus dilakukan oleh prodi pada diktat ini. Semoga diktat praktikum ini
dapat memberikan banyak manfaat. Terima kasih.
Agustus 2016
Dr. Darmawan Hidayat, M.T.
Dr. Bambabng Mukti Wibawa, M.S.

iii

TATA TERTIB
1. Praktikan wajib datang dan melakukan praktikum sesuai dengan jadwal yang telah
ditentukan.
2. Praktikan yang datang terlambat lebih dari 15 menit tidak diperkenankan mengikuti
praktikum
3. Praktikan wajib menyerahkan Laporan Pendahuluan dan Laporan Akhir pada awal
praktikum
4. Praktikan harus memakai kemeja (non jaket), rapi, dan memakai sepatu (non sandal)
5. Praktikan yang tidak masuk lebih dari dua kali dianggap gugur
6. Praktikan dilarang melakukan kegiatan yang mengganggu aktivitas praktikum
7. Kejadiankejadian luar biasa atau kerusakan alat harus segera dilaporkan kepada
dosen/asisten.
8. Kerusakan alat selama praktikum yang disebabkan oleh praktikan menjadi tanggung
jawab praktikan
9. Praktikan berhak dikeluarkan dari laboratorium apabila melanggar hal hal tersebut
di atas
10. Halhal lain yang belum tercantum di atas ditentukan kemudian

iv

MODUL I Pendahuluan
1.1 Pokok Bahasan
Pokok bahasan: Pendahuluan
1. Katakunci dan pengenal (Keywords and Identifier)
2. Variabel dan konstanta (Variables and Constants)
3. Tipe data (Data Types)
4. Input/Output
5. Operator pemrograman C (Programming Operators)

1.2 Tujuan
TIK: Setelah mengikuti praktikum dengan pokok bahasan Pengenalan Bahasa C,
mahasiswa diharapkan mengetahui dan memahami konsep-konsep dasar pemrograman
C dengan cara mampu membuat program C yang sederhana, mampu menggunakan
statement input dan output yang sederhana, mengenal tipe-tipe data dalam C, dan
mampu memilih serta menggunakan berbagai macam operator

1.3 Percobaan
1.3.1 Membuat program sederhana dalam C
1. Ketik program berikut

2. Simpan file dengan nama Modul01-01


3. Jalankan program dan catat tampilannya.
4. Hapus tanda // di depan printf() di baris-6 menjadi seperti berikut dan catat
perubahannya.
//printf("Prodi Teknik Elektro Unpad"); // mencetak isi kutipan

5. Tambahkan serangkai \n di baris-5 seperti berikut dan amati dan catat


perubahannya.

6. Tambahkan serangkai \n di depan printf() pada baris-5 seperti berikut dan amati
dan catat perubahannya.
printf("\nProdi Teknik Elektro Unpad"); // mencetak isi kutipan

7. Ganti semua kalimat diantara tanda /* ... */ di baris-5 menjadi berikut amati dan
catat perubahannya.
/* output ke monitor */
8. Lakukan hal yang sama pada kalimat yang diawali dengan tanda // pada baris-6.
9. Ubah pernyataan main() di baris-3 menjadi Main(). Amati dan catat perubahannya.
10. Hapus tanda titik koma ; di baris-5. Amati dan catat perubahannya.
11. Gantilah ungkapan "Belajar Pemrograman C\n" di baris-5 dengan
ungkapan Belajar Pemrograman C\n
12. Hapus ungkapan return 0; di baris-8
13. Tambahkan dua ungkapan berikut di baris-7 dan -8.
printf("\n\n\n");
printf("Terima Kasih");
14. Beri tanda // di awal baris-2 menjadi //#include <conio.h>
15. Hapus ungkapan getch(); di baris-7. Amati dan catat perubahannya.
16. Buat kesimpulan untuk setiap perubahan-perubahan yang diamati

1.3.2 Deklarasi dan mencetak variabel


1. Ketik dan simpan program berikut dengan nama Modul01-02
2. jalankan hingga sukses program berikut.

3. Ubah nilai jumlah_barang=-135. Jalankan dan amati.


4. Ubah nilai ungkapan %d menjadi %u di baris-10. Jalankan dan amati.
5. Ubah baris-9 dan baris-10 menjadi tambahan berikut. Jalankan dan catat hasilnya.

1.3.3 Manipulasi variabel dengan tipe char


1. Ketik dan simpan program berikut dengan nama Modul01-03.
2. Jalankan program.

3. Ubah isi variabel hurufku pada baris-8 menjadi hurufku=97. Jalankan dan
catat perubahannya.

1.3.4 Manipulasi variabel bertipe float


1. Ketik dan simpan program berikut dengan nama Modul01-04.
2. Jalankan program.
3. Ubah baris-6 menjadi float nilai=-849.245e+2; Jalankan dan catat
hasilnya.

1.3.5 Mencetak variabel string


1. Ketik dan simpan program berikut dengan nama Modul01-05.
2. Jalankan program berikut.
3. Ubah baris-6 menjadi float char namaku[4]="Teknik Elektro";
Jalankan dan catat hasilnya.
4. Ubah baris-6 menjadi float char namaku[40]="Teknik Elektro";
Jalankan dan catat hasilnya.
5. Ubah baris-6 menjadi float char namaku[]="Teknik Elektro";
Jalankan dan catat hasilnya.

1.3.6 Operasi input/output bilangan bertipe integer


1. Ketik dan simpan program berikut dengan nama Modul01-06.
2. Jalankan program.
3. Hapus tanda & baris-7 menjadi scanf(%d, nilai); Jalankan dan catat
hasilnya.

1.3.7 Operasi input/output dan manipulasi data bertipe integer


1. Ketik dan simpan program berikut dengan nama Modul01-07.
2. Jalankan program berikut.
3. Ubah pernyataan baris-2 menjadi scanf("%d %d",&nilai2,&nilai1);
jalankan dan catat hasilnya.

1.3.8 Operasi input/output dan perkalian dua bilangan bertipe riil


1. Ketik dan simpan program berikut dengan nama Modul01-08.
2. Jalankan program.
3. Tambahkan di baris-10 pernyataan berikut. Jalankan dan catat hasilnya.
printf("Hasil operasi dengan format 12.2

= %12.2f",hasil_kali);

1.3.9 Mencari nilai ASCII dari suatu karakter yang dimasukkan pengguna
1. Ketik dan simpan program berikut dengan nama Modul01-09.
2. Jalankan program berikut.
3. Tambahkan di baris-9 pernyataan berikut. Jalankan dan catat hasilnya.
printf("Nilai ASCII dari %c = %d",c,c);

1.3.10 Operasi input/output dan opeasi sisa dan hasil pembagian


1. Ketik dan simpan program berikut dengan nama Modul01-10.
2. Jalankan program.
3. Ubah ungkapan di baris-7 dan baris-9 pernyataan berikut. Jalankan dan catat
hasilnya.
scanf("%f",&pembilang);
scanf("%f",&penyebut);

1.3.11 Menghitung ukuran variabel menggunakan operator sizeof


1. Ketik dan simpan program berikut dengan nama Modul01-11.
2. Jalankan program.
3. Tambah pernyataan berikut di baris-13. Jalankan dan catat hasilnya.
printf("Ukuran char e = %d byte\n",sizeof(e));
4. Ubah ungkapan deklarasi variabel di baris-8 seperti berikut. Jalankan dan catat
hasilnya.
char d, e[14];

1.3.12 Operator pengubah ukuran variabel long


1. Ketik dan simpan program berikut dengan nama Modul01-12.
7

2. Jalankan program.
3. Tambah pernyataan berikut di baris-13. Jalankan dan catat hasilnya.
printf("Ukuran long long long int = %ld bytes",sizeof(c));

1.3.13 Program C untuk operasi penukaran isi dua variabel


1. Ketik dan simpan program berikut dengan nama Modul01-13.
2. Jalankan program.
3. Hapus baris-12. Jalankan dan catat hasilnya.

1.4 Tugas Pendahuluan


1.4.1 Lengkapi tiap pernyataan berikut dengan isian yang tepat
a. Program C mulai eksekusi pada fungsi

b. Tanda . adalah awal dari tubuh fungsi dan tanda . adalah akhir dari
fungsi.
c. Setiap pernyataan diakhiri dengan tanda .
d. Fungsi standar .. digunakan untuk menampilkan informasi ke monitor.
e. Serangkai lepas \n menyatakan karakter .., yang menyebabkan kursor pindah
ke awal baris baru di monitor.
f. Fungsi standar .. digunakan untuk membaca data dari keyboard.
g. Penentu pengubah . digunakan di dalam scanf() untuk menandakan nilai
masukan bertipe integer dan di dalam printf() untuk menandakan nilai keluaran
berupa integer.
h. Setiap kali sebuah nilai baru diisikan ke suatu lokasi memori sehingga menimpa
nilai sebelumnya disebut
i. Ketika suatu nilai dibaca dari suatu lokasi memori, nilai di lokasi tersebut
dipertahankan; proses ini disebut.
j. Pernyataan digunakan untuk membuat keputusan.

1.4.2 Nyatakan pernyataan berikut benar atau salah. Jika benar jelaskan
mengapa.
a. Fungsi print() selalu memulai pencetakan di awal baris baru.
b. Komentar menyebabkan computer akan mencetak teks yang diapit oleh /* dan */
ketika program dijalankan.
c. Serangkai lepas \n ketika digunakan di dalam printf() akan menyebabkan posisi
kursor akan berada di awal baris baru.
d. Seluruh variabel harus dideklarasikan sebelum digunakan.
e. Seluruh variabel harus diberikan tipenya ketika dideklarasikan.
f. Bahasa C akan menganggap sama variabel number dengan NuMbEr.
g. Definisi variabel dapat muncul dimana saja di dalam tubuh fungsi.
h. Semua argument yang mengikuti string control format di dalam fungsi printf() harus
didahului dengan simbol (&).
i. Operator sisa (%) dapat digunakan hanya untuk operan integer.
j. Operator aritmatika *, /, %, + dan semuanya memiliki tingkat prioritas yang sama.
k. Nama variabel berikut adalah sama:
thisisasuperduperlongname1234567
9

thisisasuperduperlongname1234568
l. Program untuk mencetak keluaran berupa tiga baris harus mengandung tiga
pernyataan printf().

1.4.3 Temukan dan koreksi kesalahan-kesalahan di dalam tiap pernyataan


berikut.
a. printf( "Jumlahnya adalah %d\n", &jum );
b. scanf( "%d%d", &nilai1, nilai2 );
c. if ( c < 7 );{
printf( "Nilai c kurang dari 7\n" );
}
d. if ( c => 7 ) {
printf( "Nilai c sama dengan atau kurang dari 7\n" );
}

1.4.4 Tuliskan pernyataan (atau komentar) untk melakukan tugas berikut.


a.
b.
c.
d.
e.

Nyatakan bahwa sebuah program akan menghitung perkalian tiga buah integer.
Tentukan variabel x, y, z dan hasil bertipe int.
Beri string yang meminta pengguna untuk memasukkan tiga buah integer.
Baca tiga buah integer dari keyboard dan simpan di dalam variabel x, y, dan z.
Hitung perkalian tiga integer yang berada di variabel x, y dan z dan isikan hasil
perkalian ke variabel hasil.
f. Cetak string Hasil perkalian adalah = yang disertai dengan integer variabel hasil.

1.4.5 Dengan menggunakan pernyataan yang ditulis pada 1.4.4., tuliskan


program lengkap yang menghitung perkalian tiga buah integer.

10

MODUL II Keputusan dan Perulangan


2.1 Pokok Bahasan
Pokok bahasan: Keputusan dan perulangan (Decision and Loops)
Sub Pokok bahasan:
1. Pemrograman if...else
2. Perulangan for...
3. Perulangan do...while
4. Instruksi break dan continue
5. Pernyataan switch...case
6. Lompatan goto

2.2 Tujuan
TIK: Setelah mengikuti praktikum dengan pokok bahasan keputusan dan perulangan
mahasiswa mampu menuliskan program C untuk perhitungan matematika dan logika
menggunakan perintah-perintah uji kondisi dan perulangan dengan benar.

2.3 Percobaan
2.3.1 Mengecek suatu bilangan adalah genap atau ganjil
1. Ketik dan simpan program berikut dengan nama Modul02-01.
2. Jalankan program.

3. Ubah baris-10 menjadi seperti berikut. Jalankan dan perbaiki programnya.


if((nilai%2)==1)

11

2.3.2 Mengecek huruf vokal atau konsonan


1. Ketik dan simpan program berikut dengan nama Modul02-02.
2. Jalankan program.

3. Ubah baris-10 menjadi seperti berikut. Jalankan dan perbaiki programnya.


if(!(c=='a'||c=='A'||c=='e'||c=='E'||c=='i'||c=='I'||c=='o'||c=='O'||c
=='u'||c=='U'))

2.3.3 Menghitung bilangan terbesar di antara tiga bilangan


1. Ketik dan simpan program berikut dengan nama Modul02-03.
2. Jalankan program.

2.3.4 Menghitung akar-akar persamaan kuadrat


1. Ketik dan simpan program berikut dengan nama Modul02-04.
2. Jalankan program.

12

2.3.5 Mengecek tahun kabisat


1. Ketik dan simpan program berikut dengan nama Modul02-05.
2. Jalankan program.
/* Mengecek tahun termasuk kabisat atau bukan */
#include <stdio.h>
#include <conio.h>
main()
{
int tahun;
printf("Masukkan suatu tahun = ");
scanf("%d",&tahun);
if(tahun%4 == 0)
{
if( tahun%100 == 0) /*mengecek abad*/
{
if ( tahun%400 == 0)
printf("%d adalah tahun kabisat",tahun);
else
printf("%d adalah bukan tahun kabisat",tahun);
}
else
printf("%d adalah tahun kabisat",tahun);
}
else

13

printf("%d adalah bukan tahun kabisat",tahun);


getch();
return 0;
}

2.3.6 Mengecek suatu bilangan bernilai positif atau negatif


1. Ketik dan simpan program berikut dengan nama Modul02-06.
2. Jalankan program.

2.3.7 Mengecek suatu karakter adalah alphabet atau bukan


1. Ketik dan simpan program berikut dengan nama Modul02-07.
2. Jalankan program.
/* Program untuk mengecek suatu karakter
adalah alphabet atau bukan */
#include <stdio.h>
#include <conio.h>
main()
{
char karakter;
printf("Masukkan sebuah karakter = ");
scanf("%c",&karakter);
if((karakter>='a'&& karakter<='z')||(karakter>='A' &&
karakter<='Z'))
printf("%c adalah alfabet.",karakter);
else
printf("%c bukan alfabet.",karakter);
getch();
return 0;
}

14

2.3.8 Menghitung jumlah dari bilangan asli


1. Ketik dan simpan program berikut dengan nama Modul02-08.
2. Jalankan program.

3. Ubah baris-15 seperti berikut lalu jalankan dan amati hasilnya.


cacah++;

2.3.9 Menghitung faktorial


1. Ketik dan simpan program berikut dengan nama Modul02-09.
2. Jalankan program.
3. Masukkan nilai 200 sebagai input dan amati keluarannya.

15

2.3.10 Program untuk menghasilkan tabel perkalian


1. Ketik dan simpan program berikut dengan nama Modul02-10.
2. Jalankan program.
/* Program untuk menghitung tabel perkalian hingga 10*/
#include <stdio.h>
#include <conio.h>
main()
{
int n, i;
printf("Masukkan bilangan bulat untuk tabel perkalian = ");
scanf("%d",&n);
for(i=1;i<=10;++i)
{
printf("%d * %d = %d\n", n, i, n*i);
}
getch();
return 0;
}

2.3.11 Menampilkan deret Fibonacci


1. Ketik dan simpan program berikut dengan nama Modul02-11.
2. Jalankan program.
/* Menampilkan deret Fibonacci hingga bentuk ke-n
dimana n dimasukkan oleh pengguna */
#include <stdio.h>
#include <conio.h>
main()
{

16

int count, n, t1=0, t2=1, display=0;


printf("Enter number of terms: ");
scanf("%d",&n);
printf("Fibonacci Series: %d+%d+", t1, t2); /* dua suku
pertama*/
count=2;
/* count=2 karena dua suku pertama sudah
ditampilkan*/
while (count<n)
{
display=t1+t2;
t1=t2;
t2=display;
++count;
printf("%d+",display);
}
getch();
return 0;
}

2.3.12 Menghitung FPB (HCF) dari dua bilangan


1. Ketik dan simpan program berikut dengan nama Modul02-12.
2. Jalankan program.
/* Program untuk menghitung FPB*/
#include <stdio.h>
#include <conio.h>
main()
{
int nilai1, nilai2, i, fpb;
printf("Masukkan dua integer = ");
scanf("%d %d", &nilai1, &nilai2);
for(i=1; i<=nilai1 || i<=nilai2; ++i)
{
if(nilai1%i==0 && nilai2%i==0) /*mengecek apakah i faktor
bersama*/
fpb=i;
}
printf("FPB dari %d dan %d adalah %d", nilai1, nilai2, fpb);
getch();
return 0;
}

2.3.13 Program untuk menampilkan KPK (LCM) dari dua bilangan


1. Ketik dan simpan program berikut dengan nama Modul02-13.
2. Jalankan program.

17

2.3.14 Menghitung jumlah digit dari suatu integer


1. Ketik dan simpan program berikut dengan nama Modul02-14.
2. Jalankan program.

2.3.15 Program untuk membalikkan suatu bilangan


1. Ketik dan simpan program berikut dengan nama Modul02-15.
2. Jalankan program.

18

2.3.16 Menghitung pangkat dari suatu bilangan


1. Ketik dan simpan program berikut dengan nama Modul02-16.
2. Jalankan program.

2.3.17 Program untuk mengecek apakah suatu bilangan palindrome


1. Ketik dan simpan program berikut dengan nama Modul02-17.
2. Jalankan program.

19

2.3.18 Mengecek apakah suatu bilangan termasuk prima atau bukan


1. Ketik dan simpan program berikut dengan nama Modul02-18.
2. Jalankan program.

20

2.3.19 Menampilkan bilangan-bilangan prima di antara dua interval


1. Ketik dan simpan program berikut dengan nama Modul02-19.
2. Jalankan program.

21

2.3.20 Program untuk mengecek bilangan Armstrong


153 = 1*1*1 + 5*5*5 + 3*3*3 // 153 is an Armstrong number.
12 is not equal to 1*1*1+2*2*2 // 12 is not an Armstrong number.

1. Ketik dan simpan program berikut dengan nama Modul02-20.


2. Jalankan program.
/*Program untuk mengecek bilangan Armstrong*/
#include <stdio.h>
#include <conio.h>
main()
{
int n, n1, rem, num=0;
printf("Masukkan sebuah nilai integer positif : ");
scanf("%d", &n);
n1=n;
while(n1!=0)
{
rem=n1%10;
num+=rem*rem*rem;
n1/=10;
}
if(num==n)
printf("%d adalah bilangan Armstrong.",n);
else
printf("%d bukan bilangan Armstrong.",n);
getch();
return 0;
}

2.3.21 Menampilkan bilangan Armstrong di antara dua interval


1. Ketik dan simpan program berikut dengan nama Modul02-21.
2. Jalankan program.

22

2.3.22 Menampilkan faktor-faktor dari suatu bilangan


1. Ketik dan simpan program berikut dengan nama Modul02-22.
2. Jalankan program.

2.3.23 Membuat kalkulator sederhana


1. Ketik dan simpan program berikut dengan nama Modul02-23.
23

2. Jalankan program.
/*Membuat kalkulator sederhana*/
#include <stdio.h>
#include <conio.h>
main()
{
char operasi;
float num1,num2;
printf("Pilih operator + atau - atau * atau / = ");
scanf("%c",&operasi);
printf("Enter two operands: ");
scanf("%f%f",&num1,&num2);
switch(operasi) {
case '+':
printf("%.1f + %.1f = %.1f",num1, num2, num1+num2);
break;
case '-':
printf("%.1f - %.1f = %.1f",num1, num2, num1-num2);
break;
case '*':
printf("%.1f * %.1f = %.1f",num1, num2, num1*num2);
break;
case '/':
printf("%.1f / %.1f = %.1f",num1, num2, num1/num2);
break;
default:
/*Jika operator bukan +, -, * or /, tampilkan pesan error*/
printf("Error! operator is not correct");
break;
}
getch();
return 0;
}

24

MODUL III Fungsi


3.1 Pokok Bahasan
Pokok bahasan: Fungsi
Sub Pokok bahasan:
1. Pengenalan fungsi
2. Fungsi buatan
3. Tipe fungsi
4. Rekursi
5. Kelas penyimpanan (Storage Class)

3.2 Tujuan
Setelah mengikuti parkatikum dengan pokok bahasan fungsi mahasiswa akan dapat
memecahkan program besar yang kompleks menjadi program-program modular yang
lebih kecil dengan benar (C3)

3.3 Percobaan
3.3.1 Menampilkan bilangan prima di antara interval dengan menggunakan
fungsi buatan
1. Ketik dan simpan program berikut dengan nama Modul03-01.
2. Jalankan program.

/*Menampilkan bilangan prima di antara interval*/


#include <stdio.h>
#include <conio.h>
main()
{
int cek_prima(int num); /*prototipe fungsi*/
int n1,n2,i,flag;
printf("Masukkan dua bilangan interval = ");
scanf("%d %d",&n1, &n2);
printf("Bilangan prima antara %d dan %d adalah = ", n1, n2);
for(i=n1+1;i<n2;++i)
{
flag=cek_prima(i);
if(flag==0)
printf("%d ",i);
}
getch();

25

return 0;
}
int cek_prima(int num) /*fungsi buatan utk bilangan prima*/
{
int j,flag=0;
for(j=2;j<=num/2;++j)
{
if(num%j==0)
{
flag=1;
break;
}
}
return flag;
}

3.3.2 Mengecek bilangan prima atau Armstrong dengan menggunakan fungsi


buatan
1. Ketik dan simpan program berikut dengan nama Modul03-02.
2. Jalankan program.
/*Mengecek bilangan prima atau Armstrong dengan menggunakan fungsi
buatan*/
#include <stdio.h>
#include <conio.h>
int prima(int n); /*prototipe fungsi*/
int armstrong(int n);
main()
{
char c;
int n,temp=0;
printf("Masukkan sebuah nilai integer positif = ");
scanf("%d",&n);
printf("Tekan P untuk cek Prima dan A untuk cek Armstrong = ");
c=getche();
if (c=='p' || c=='P')
{
temp=prima(n);
if(temp==1)
printf("\n%d adalah bilangan PRIMA.", n);
else
printf("\n%d bukan PRIMA.", n);
}
if (c=='a' || c=='A')
{
temp=armstrong(n);
if(temp==1)
printf("\n%d adalah bilangan ARMSTRONG.", n);
else
printf("\n%d bukan bilangan ARMSTRONG.",n);
}
getch();

26

return 0;
}
int prima(int n)
{
int i, flag=1;
for(i=2; i<=n/2; ++i)
{
if(n%i==0)
{
flag=0;
break;
}
}
return flag;
}
int armstrong(int n)
{
int num=0, temp, flag=0;
temp=n;
while(n!=0)
{
num+=(n%10)*(n%10)*(n%10);
n/=10;
}
if (num==temp)
flag=1;
return flag;
}

3.3.3 Menampilkan bilangan prima di antara interval dengan menggunakan


fungsi buatan
1. Ketik dan simpan program berikut dengan nama Modul03-03.
2. Jalankan program.
/*Menampilkan bilangan prima di antara interval */
#include <stdio.h>
#include <conio.h>
int cek_prima(int n); /*prototipe fungsi*/
main()
{
int n1,n2,i,flag;
printf("Masukkan dua bilangan interval = ");
scanf("%d %d",&n1, &n2);
printf("Bilangan prima di antara %d dan %d adalah = ", n1, n2);
for(i=n1+1;i<n2;++i)
{
flag=cek_prima(i);
if(flag==0)
printf("%d ",i);
}
getch();
return 0;

27

}
int cek_prima(int num) /*fungsi buatan*/
{
int j,flag=0;
for(j=2;j<=num/2;++j){
if(num%j==0){
flag=1;
break;
}
}
return flag;
}

3.3.4 Mengecek apakah suatu bilangan dapat diungkapkan sebagai jumlah dari
dua bilangan prima
1. Ketik dan simpan program berikut dengan nama Modul03-04.
2. Jalankan program.
/*Mengecek apakah suatu bilangan dapat diungkapkan
sebagai jumlah dari dua bilangan prima*/
#include <stdio.h>
#include <conio.h>
int prima(int n); /*prototipe fungsi*/
main()
{
int n, i, flag=0;
printf("Enter a positive integer: ");
scanf("%d",&n);
for(i=2; i<=n/2; ++i)
{
if (prima(i)!=0)
{
if ( prima(n-i)!=0)
{
printf("%d = %d + %d\n", n, i, n-i);
flag=1;
}
}
}
if (flag==0)
printf("%d tidak dapat dinyatakan sebagai jumlah dua bilangan
prima.",n);
getch();
return 0;
}
int prima(int n)
/*Fungsi untuk cek bil. prima*/
{
int i, flag=1;
for(i=2; i<=n/2; ++i)
if(n%i==0)

28

flag=0;
return flag;
}

3.3.5 Menghitung jumlah dari bilangan asli dengan menggunakan rekursi


Penjumlahan 1+2+3+4+5 = 15

1. Ketik dan simpan program berikut dengan nama Modul03-05.


2. Jalankan program.
/*Menghitung jumlah dari bilangan
asli dengan menggunakan rekursi*/
#include <stdio.h>
#include <conio.h>
int tambah(int n); /*prototipe fungsi*/
main()
{
int n;
printf("Masukkan sebuah integer positif = ");
scanf("%d",&n);
printf("Jumlah = %d",tambah(n));
getch();
return 0;
}
int tambah(int n)
{
if(n!=0)
return n+tambah(n-1);
}

/* pemanggilan rekursif */

3.3.6 Menghitung faktorial menggunakan rekursi


1. Ketik dan simpan program berikut dengan nama Modul03-06.
2. Jalankan program.

/*Menghitung faktorial menggunakan rekursi*/


#include <stdio.h>
#include <conio.h>
int faktorial(int n); /*prototipe fungsi*/
main()
{
int n;
printf("Masukkan sebuah integer positif = ");
scanf("%d",&n);
printf("Faktorial dari %d = %ld", n, faktorial(n));
getch();
return 0;

29

Anda mungkin juga menyukai