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
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
3. Ubah isi variabel hurufku pada baris-8 menjadi hurufku=97. Jalankan dan
catat perubahannya.
= %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);
2. Jalankan program.
3. Tambah pernyataan berikut di baris-13. Jalankan dan catat hasilnya.
printf("Ukuran long long long int = %ld bytes",sizeof(c));
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().
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.
10
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.
11
12
13
14
15
16
17
18
19
20
21
22
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
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.
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;
}
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;
}
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;
}
/* pemanggilan rekursif */
29