Operator Dan Penanganan Input Output
Operator Dan Penanganan Input Output
A. Pendahuluan
1. Deskripsi Singkat
Secara umum, tujuan kegiatan belajar 3 ini adalah untuk memberikan pengetahuan,
keterampilan, dan sikap kepada dosen dan mahasiswa tentang konsep dasar teknologi
informasi.
Secara khusus, tujuan kegiatan belajar 1 ini adalah agar peserta mampu: (1)
menjelaskan berbagai opertator, (2) menjelaskan operasi input output, (3memilih operator,
dan (4) menuliskan ekspresi, operasi input output dalam pemrograman C.
2. Panduan Belajar
Proses pembelajaran untuk materi modul 1 kegiatan belajar 3 dapat berjalan dengan
lancar apabila Anda mengikuti langkah-langkah belajar sebagai berikut:
1. Pahami dulu kegiatan penting dalam program pelatihan ini dengan memperhatikan isi
capaian pembelajaran setiap kegiatan belajar.
2. Lakukan kajian terhadap setiap materi dalam kegiatan belajar, agar memudahkan proses
pembelajaran.
3. Pelajari dahulu kegiatan belajar 3 yang setiap akhir kegiatan belajar menyelesaikan
tugas yang harus dikerjakan secara langsung.
4. Keberhasilan program pembelajaran ini tergantung dengan kesungguhan Anda dalam
mengerjakan setiap tugas dalam kegiatan belajar.
5. Bila Anda menemukan kesulitan, silahkan hubungi instruktur pembimbing atau fasilitator
yang mengajar modul ini.
B. Inti
1. Capaian Pembelajaran Matakuliah
Setelah mengikuti seluruh tahapan pada kegiatan belajar, peserta mampu memahami
prinsip dasar dan lingkungan pemrograman C serta Cara menulis Algoritma.
2. Pokok Materi
a. Operator
b. Penanganan Input dan Output berformat
c. Penanganan Input dan Output tidak berformat
3. Uraian Materi
a. Operator
Sebelum masuk ke jenis-jenis operator di dalam bahasa C, terdapat
istilah operand dan operator. Operand adalah nilai asal yang dipakai dalam sebuah proses
operasi. Sedangkan Operator adalah instruksi yang diberikan untuk mendapatkan hasil dari
proses tersebut.
Biasanya operator berupa karakter matematis atau perintah singkat sederhana. Sebagai
contoh, pada operasi: 10 + 2. Angka 10 dan 2 disebut sebagai operand, sedangkan tanda
tambah (karakter +) adalah operator.
1) Operator Aritmatika
Operator aritmatika adalah operator yang biasa kita temukan untuk operasi
matematika. Aritmatika sendiri merupakan cabang ilmu matematika yang membahas
perhitungan sederhana, seperti kali, bagi, tambah dan kurang (kabataku). Selain
keempat operasi tersebut, bahasa C juga memiliki operasi modulo division, atau
operator % yang dipakai untuk mencari sisa hasil bagi. Tabel berikut merangkum
operator aritmatika dalam bahasa pemrograman C :
Operator Penjelasan Contoh
+ Penambahan a=5+2
– Pengurangan a=5–2
* Perkalian a=5*2
+ Positif (plus) +5
– Negatif (min) -3
Mengapa hasilnya tetap 2? Ini terjadi karena bahasa C melihat tipe data
operand yang dipakai. Di sini operand nya adalah 8 dan 3 yang merupakan integer
(angka bulat). Agar operasi pembagian menghasilkan nilai float, kedua operand
harus ditulis dalam format pecahan, yakni 8.0 dan 3.0. Berikut hasilnya:
Gambar 4. Contoh 4 Program Penggunaan Operator Aritmatika
Sekarang hasilnya sudah sesuai, dimana 8.0 / 3.0 adalah 2.666667. Untuk
memformat tampilan akhir misalnya menjadi 2.66, bisa menggunakan berbagai
teknik yang di bahas pada pembahasan tipe data float.
Operator increment dan decrement adalah sebutan untuk operasi seperti a++,
dan a--. Ini sebenarnya penulisan singkat dari operasi a = a + 1 serta a = a – 1.
Di sini kita mengisi angka 5 sebagai nilai awal untuk variabel a dan b. Hasilnya,
setelah operasi a++ dan ++b, kedua variabel sama-sama berisi angka 6. Artinya
variabel a dan b akan bertambah 1 angka. Hal yang sama juga berlaku di decrement:
Jika yang dibandingkan berupa karakter, hasilnya dilihat dari urutan karakter
ASCII. Dalam tabel ASCII, karakter ‘A’ memiliki nomor urut yang lebih rendah
daripada ‘B’, sehingga ‘A’ > ‘B’ adalah false (0). Dalam prakteknya, operasi
perbandingan baru ‘berguna’ dalam percabangan kode program seperti struktur IF.
Berikut contohnya:
Gambar 11. Contoh 3 Program Operator Perbandingan atau Relasional
Di awal kode program user untuk menginput sebuah angka. Angka ini
kemudian disimpan ke dalam variabel a hasil dari perintah scanf(“%d”,&a). Pada
baris 10, kita melakukan sebuah operasi perbandingan: if (a % 2 == 0)? Yakni apakah
a habis dibagi 2? Jika anda ragu dengan tanda %, itu adalah operator modulus yang
pernah kita bahas dalam tutorial operator aritmatika. Kondisi di atas hanya akan
true (1) jika a diisi dengan angka genap. Jika ini yang terjadi, jalankan
perintah printf(“%d adalah angka genap \n”,a). Jika hasilnya false,
jalankan printf(“%d adalah angka ganjil \n”,a). Inilah salah satu penerapan dari
operasi perbandingan / relasi.
Operator logika dipakai untuk menghasilkan nilai boolean true atau false dari 2
kondisi atau lebih.
Operator && hanya akan menghasilkan 1 jika kedua operand bernilai 1, selain itu
hasilnya 0.
Operator || hanya akan menghasilkan 0 jika kedua operand bernilai 0, selain itu
hasilnya 1.
Operator ! Akan membalikkan logika, !0 menjadi 1, !1 menjadi 0.
Juga bisa menggabungkan lebih dari satu operasi seperti contoh berikut:
Gambar 13. Contoh 2 Program Operator Lgoika atau Boolean
Untuk operasi seperti ini, akan diproses dari kiri ke kanan, kecuali ditemukan
tanda kurung maka itulah yang akan diproses terlebih dahulu.
Nilai boolean true (1) dan false (0) ini biasanya di dapat dari hasil operasi
perbandingan. Inilah praktek yang sering dibuat untuk operator logika, berikut
contohnya :
Di baris 7, operasi (5 > 4) && (10 > 9) akan diproses menjadi 1 && 1, hasilnya 1.
Di baris 10, operasi (15 <= 15) && (15 < 15) akan diproses menjadi 1 && 0,
hasilnya 0.
Di baris 13, operasi (‘a’== ‘a’) || (‘a’ == ‘b’) akan diproses menjadi 1 || 0,
hasilnya 1.
Di baris 16, operasi (10 > 7) && (‘duniailkom’ == ‘duniailkom’) akan diproses
menjadi 1 && 1, hasilnya 1.
Sama seperti operasi perbandingan, operasi logika ini akan banyak dipakai
pada percabangan kode program, misalnya untuk bisa login seseorang harus
memiliki username DAN password yang sesuai. Jika salah satu saja tidak terpenuhi,
maka tidak bisa login.
5) Operator Bitwise
Bitwise adalah operator khusus untuk menangani operasi logika bilangan biner
dalam bentuk bit. Bilangan biner sendiri merupakan jenis bilangan yang hanya terdiri
dari 2 jenis angka, yakni 0 dan 1. Jika nilai asal yang dipakai bukan bilangan biner,
akan dikonversi secara otomatis oleh compiler C menjadi bilangan biner. Misalnya 7
desimal = 0111 dalam bilangan biner. Bahasa C mendukung 6 jenis operator bitwise.
Daftar lengkapnya dapat dilihat pada tabel berikut :
| OR 10 | 12 1010 | 11001110 14
a = 10110101
b = 01101100
--------
Dan dari hasil printf, terlihat bahwa hasilnya adalah 36 (dalam bentuk desimal).
Di baris 15 terdapat operasi | (OR), hasilnya akan bernilai 0 jika kedua bit bernilai 0,
selain itu nilai bit akan di set menjadi 1. Berikut cara perhitungan bitwise “or”:
a = 10110101
b = 01101100
--------
Di baris 18 terdapat operasi ^ (XOR), hasilnya akan bernilai 1 jika salah satu
dari kedua variabel bernilai 1 (namun tidak keduanya). Dengan kata lain jika kedua
bit berlainan, hasilnya 1 tapi kalau sama-sama 0 atau sama-sama 1, hasilnya 0.
Berikut cara perhitungan bitwise “xor”:
a = 10110101
b = 01101100
--------
Di baris 21, operasi ~ atau not, yang akan membalikkan nilai bit sebuah
variabel dari 0 menjadi 1, dan 1 menjadi nol. Namun perhitungan bit not ini sedikit
membingungkan karena jika kita hanya membalikkan seluruh bit saja, hasilnya tidak
sesuai dengan apa yang dihitung oleh compiler C:
a = 10110101
--------
Dari hasil menjalankan program, dapat dilihat bahwa ~a = -182, dari manakah
datangnya angka -182?
Ini berkaitan dengan cara compiler bahasa C menyimpan angka biner (dan juga
hampir semua bahasa pemrograman komputer modern). Angka biner di dalam
bahasa C disimpan dalam format “Two’s complement”.
Di baris 24, terdapat operator shift right “>>” dimana bahasa C akan menggeser
posisi bit dalam variabel a ke kanan sebanyak 1 tempat. Berikut proses yang terjadi:
a = 10110101 = 181
Operator shift right menggeser nilai biner variabel a ke arah kanan, sehingga
digit paling kanan akan dihapus. Operator shift right ini akan menghasilkan nilai
asal / 2. Dalam contoh kita, hasilnya adalah 180/2 = 90 (dibulatkan). Setiap
penggeseran 1 tempat ke kanan akan membagi 2 nilai asal.
Di baris 27 adalah operator shift left “<<” dimana nilai variabel b akan digeser
sebanyak 2 digit ke kiri. Berikut proses yang terjadi:
b = 01101100 = 108
Ketika hasil pergeseran ke kiri, digit paling kanan akan diisi angka 0. Setiap
penggeseran 1 tempat ke kiri akan mengkali 2 nilai asal. Karena variabel b berisi
desimal 108, maka hasil dari << 2 sama dengan 108 * 2 = 216, 216 * 2 = 432.
6) Operator Lainnya
Operator Lainnya ini adalah kelompok operator khusus yang tidak termasuk ke
dalam kelompok sebelumnya, diantaranya adalah operator sizeof dan operator
ternary ” ? : “.
Operator mod (singkatan dari modulo atau modulus) dipakai untuk mencari
nilai sisa pembagian. Operator mod perlu penjelasan tersendiri terutama bagi yang
baru pertama kali belajar bahasa pemrograman komputer. Operator ini terdengar
asing tapi sebenarnya cukup sederhana. Sebagai contoh:
8) Operator Assignment
a = 500;
Berarti “memasukkan nilai 500 ke dalam variabel a”. Dalam bahasa pseudo
code (jika anda membaca buku tentang algoritma), ini biasa ditulis dengan simbol
panah ke kiri:
a <- 500
+= a += b a=a+b
-= a -= b a=a–b
*= a *= b a=a*b
/= a /= b a=a/b
%= a %= b a=a%b
|= a |= b a=a|b
^= a ^= b a=a^b
Kode diatas artinya, kita menjalankan perintah printf dengan 3 buah argumen.
Argumen pertama berupa “teks1”, argumen kedua adalah teks2, dan argumen ketiga
dengan nama teks3. Jika ada argumen ke-4, kita tinggal menambahkannya di bagian
belakang, misalnya seperti ini:
Inilah yang dimaksud dengan penulisan argumen. Kembali kepada kode program
sebelumnya, terdapat perintah berikut:
Kode %f akan digantikan dengan isi dari variabel nilai_ip. Yang hasilnya menjadi:
Intinya adalah, kode % nantinya akan diganti dengan isi variabel yang ada di
argumen kedua dari fungsi printf. Akan tetapi, kenapa kodenya beda-beda? Ada %i,
ada %f dan %c, apa maksudnya? ini merupakan kode variabel untuk fungsi printf.
Selanjutnya di dalam teks ada kode %f, ini akan berpasangan dengan argumen
ketiga, begitu seterusnya hingga akhir teks. Penulisan isi variabel dibahasa pascal
misalnya, kita tinggal menulis isi variabel tanpa harus pusing dengan kode tipe data,
seperti:
write("Harga bakwan",harga);
Perintah scanf, atau lebih tepatnya function scanf() adalah perintah bahasa C untuk
menerima masukan ke dalam program, yakni sebagai sarana input dari pengguna. Dengan
menggunakan perintah scanf, kita bisa membuat program yang lebih interaktif, yakni
meminta data dari user / pengguna. Data ini nantinya bisa disimpan ke dalam variabel dan
diolah lebih lanjut untuk kemudian ditampilkan kembali.
Sama seperti printf, perintah scanf juga merupakan function yang butuh beberapa
argumen. Berikut format dasar penggunaan fungsi scanf:
scanf(kode_format,
&nama_variabel_penampung)
Bagian kode_format adalah format untuk tipe data inputan. Kode format ini sama
seperti yang dipakai untuk fungsi printf, misalnya kode “%d” untuk tipe data integer,
atau “%c” untuk tipe data char.
Sama seperti printf, fungsi scanf juga bukan bagian dari inti bahasa C, tapi berasal dari
library stdio.h. Karena itu kode #include <stdio.h> harus ditulis agar bisa menggunakan
perintah scanf. Silahkan lihat contoh kode program bahasa C untuk penggunaan perintah
scanf:
Gambar 26. Contoh 1 Program dengan scanf
Di awal kode program, didefinisikan 1 buah variabel harga yang diset sebagai int.
Artinya, variabel harga hanya bisa diisi dengan angka bulat.
Selanjutnya terdapat baris printf(“Masukkan harga barang: “). Ini digunakan untuk
menampilkan teks sebagai keterangan agar pengguna menginput sesuatu.
Terakhir, nilai dari variabel harga ini kita tampilkan kembali dengan
perintah printf(“Harga barang adalah: %d”, harga). Coba jalankan, bagaimana hasilnya.
Hal yang juga harus menjadi catatan, ketika karakter yang diinput bukan angka, bahasa
C akan mengkonversi karakter tersebut. Misalnya diinput angka 5500.25 (pecahan), yang
akan di ambil hanya angka 2500 saja. Karena variabel harga hanya bisa menampung angka
bulat. Sebagai contoh kedua, kita akan buat kode program untuk menampung 3 inputan
sekaligus:
Gambar 27. Contoh 2 Program dengan scanf
Kode program ini mirip seperti sebelumnya, hanya saja kali ini kita membuat 3 variabel
bertipe int, float dan char. Setelah itu terdapat 3 perintah scanf untuk menerima input
untuk ketiga variabel ini. Akan tetapi, jika anda menjalankan kode program diatas, terdapat
1 masalah. Ketika kita menekan tombol enter setelah menginput angka untuk
variabel nilai_ip, program langsung berakhir tanpa sempat berhenti untuk menerima input
untuk variabel huruf. Hal ini terjadi karena karakter “Enter” akan dibaca sebagai inputan
untuk variabel huruf yang di set sebagai char. Solusinya, tambahkan 1 spasi di dalam
baris scanf(“%c”,&huruf) menjadi:
scanf(" %c",&huruf);
Trik ini akan mengatasi masalah karakter “Enter” yang langsung terinput ke variabel
huruf. Berikut perubahan kode programnya:
Gambar 28. Contoh 3 Program dengan scanf
1. Gets()
Fungsi gets() berisiko bagi pengguna karena tidak melakukan pemeriksaan terikat
array Hail itu bisa membuat buffer overflow, yang dapat dihindari dengan menggunakan
fgets(). fgets() memastikan bahwa tidak lebih dari batas maksimum karakter yang dibaca.
Perhatikan contoh berikut :
2. Put()
Fungsi puts() sangat mirip dengan fungsi printf(). Fungsi puts() digunakan untuk
mencetak string di konsol yang sebelumnya dibaca dengan menggunakan gets() atau
scanf()fcunftion. Fungsi puts() mengembalikan nilai integer yang mewakili jumlah karakter
yang dicetak di konsol. Karena, ia mencetak karakter baris baru tambahan dengan string,
yang memindahkan kursor ke baris baru di konsol, nilai integer yang dikembalikan oleh
puts() akan selalu sama dengan jumlah karakter yang ada dalam string ditambah 1.
Berikut cara mendeklarasikan fungsi puts() :
a. Diskusikanlah apa perbedaan penanganan input dan output berformat dan tidak
berformat!
C. Penutup
1. Rangkuman
Operator adalah instruksi yang diberikan untuk mendapatkan hasil dari proses tersebut.
Operand adalah nilai asal yang dipakai dalam sebuah proses operasi.
Ungkapan-ungkapan yang berisikan beberapa operator akan mengeksekusi operasi
mereka berdasarkan pengurutan pengutamaan bawaan terkecuali ditentukan secara
eksplisit dengan menambahkan tanda kurung.
1. Tes Formatif
1. Jika diberikan A=5 dan B=20, maka tentukanlah hasil dari ekspresi berikut :
a. A*5-B
b. A-2*B
c. B Mod 5
2. Susunlah algoritma untuk Menghitung tinggi layangan berdasarkan sudut tali (elevasi)
dan panjang tali terulur. Implementasikan dalam bahasa C!
Untuk menghitung berapa tinggi sebuah layangan, kita perlu mengetahui berapa
panjang tali terulur dan berapa sudut antara tali dan daratan tanah (sudut elevasi).
Kedua nilai ini akan digunakan untuk menghitung tinggi layangan dari tanah daratan,
tentu saja kita berasumsi bahwa tali dianggap lurus, artinya lengkung tali yang terulur
diabaikan.
Kita tahu, bahwa formula yang bisa digunakan untuk menghitung tinggi layangan dari
tanah dengan mengetahui nilai sudut dan panjang tali terulur adalah formula mencari
tinggi sebuah segitiga siku-suka dengan mengetahui sudut elevasi dan panjang sisi
miring, perhaitkan penjelasan berikut ini:
Apabila sisi miring dan sudut α diketahui, maka kita dapat mencari DEPAN atau tinggi
dari segitiga melalui cara:
Tinggi = sin α * MIRING
Catatan: dalam bahasa C, untuk mencari nilai sinus suatu sudut, nilai sudutnya harus
dalam radian, bukan dalam derajat. Sehingga apabila sudut dalam derajat yang
diketahui maka kita harus mengkonversi sudut dalam derajat ke nilai sudut dalam
radian, sebagai berikut:
1 derajat = 180/π = 0.0174533
Sehingga apabila x derajat, kita tinggal kalikan dengan nilai tersebut untuk memperoleh
nilai radian:
Radian = 180/π * sudut derajat
Radian = 180/π * x, dimana x adalah sudut dalam derajat
Dengan demikian untuk mencari tinggi layangan langkah-langkahnya adalah sebagai
berikut:
- baca nilai panjang tali, misal y
- baca nilai sudut derajat, misal x
- konversi sudut derajat x ke radian dengan cara:
rad = 180/π * x
- hitung tinggi dengan cara:
Tinggi = sin rad * y
- tampilkan informasi
Daftar Pustaka
Utama:
Mike McGrath. 2015. Coding for Beginners. Leamington Spa. Easy Step Limited.
Dan Gookin. 2014. Beginning Programming with C for Dummies. New Jersey. John Wiley & Sons.
www.tutorialspoint.com
www.javatpoint.com
www.programiz.com
Kunci Jawaban
1. Hasil ekspresi jika diberikan A=5 dan B=20 :
a. A-2*B 5*5-20= 25-20=5
b. B Mod 5 = 20 Mod 5=0
2. Menghitung tinggi layangan berdasarkan sudut tali (elevasi) dan panjang tali terulur
Analisis Kebutuhan Input Tampilan:
kebutuhan: Ketikkan Panjang Tali Terulur (dalam meter) : XXX
Ketikkan Sudut Tali dgn Tanah (dalam derajat: XX
Kebutuhan Output Tampilan:
Panjang Tali Terulur (dalam meter) : XXX meter
Sudut Tali dgn Tanah (dalam derajat : XX derajat
Tinggi layangan (dalam meter) : XXX meter
Konstanta Konstanta bilangan phi bernilai 3.14, beri nama PHI = 3.14
Variabel - variabel untuk menyimpan nilai panjang tali, beri nama
tali, bertipe double
- variabel untuk menyimpan nilai sudut tali dalam
derajat, beri nama sudut bertipe double
- variabel untuk menyimpan nilai tinggi layangan, beri
nama tinggi bertipe double
- variabel untuk menyimpan nilai sudut dalam radian,
beri nama radian bertipe double
Proses - rumus untuk mengkonversi sudut dalam derajat ke
dlam sudut dalam radian:
radian = 180/PHI * sudut
- rumus untuk menghitung tinggi layangan:
tinggi = (sin(radian)) * tali
Algoritma {Menghitung tinggi layangan berdasarkan sudut tali (elevasi) dan panjang tali terulur }
Deklarasi
Konstanta
PHI = 3.14
Variabel
tali, sudut, radian, tinggi: real/double
Deskripsi:
Start
write(‘Program untuk menghitung tinggi layangan’)
write(‘Ketikkan panjang tali dalam meter: ‘)
read(tali)
write(‘Ketikkan sudut tali dalam derajat: ‘)
Read(sudut)
radian <- sudut/180 * PHI
tinggi <- (sin(radian)) * tali
write(‘Panjang tali terulur : ‘, tali, ‘meter’)
write(‘Sudut tali dengan daratan : ‘, sudut,’ derajat’)
write(‘Tinggi layangan dari daratan: ‘, tinggi, ‘ meter’)
Stop
Implementasi /*
Nama File: layang2.c
C
Menghitung tinggi layangan berdasarkan sudut tali (elevasi) dan panjang tali
terulur
*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//konstanta PHI
#define PHI 3.14
main()
{
//rumus mencari tinggi segitiga siku2
//sin a = t/m
//t = (sin a)*m
//t adalah tinggi
//m adalah panjang tali
}
MODUL2