Dalam menuliskan sebuah program, kita seringkali megalami kesulitan dalam menentukan tipe data apakah yang harus kita gunakan. Kesalahan dalam memilih tipe data yang sesuai dengan kebutuhan kita, dapat berakibat fatal bagi program yang kita bangun atau mungkin program kita dapat berjalan namun tidak dapat menghasilkan output atau hasil seperti yang kita harapkan.
Oleh karena itu, kita harus fokus dan memahami dengan baik tipe data yang akan kita gunakan berdasarkan data data yang kita kehendaki. Sehingga setiap program yang kita buat dan kita compile dapat bekerja bebagaimana mestinya.
Pada kesempatan kali ini, saya akan memaparkan analisis saya tentang “TIPE DATA” yang juga merupakan laporan resmi saya (Sander Antonius Balisa) dalam mata kuliah Praktek Algoritma.
Percobaan
1. Membuat program yang menampilkan variabel sebagai berikut
var_bulat = 32767
var_pecahan1 = 339.2345678f
var_pecahan2 = 3.4567e+40
var_karakter = ‘S’
Jawab
Pada kasus percobaan ini, kita harus mengetahui dengan baik karakteristik tipe data masing masing dan jangkauan yang disanggupi oleh tipe data tersebut. Dalam percobaan diatas, saya membuat suatu program seperti yang tertera dibawah ini.
Dapat dilihat dari detail code pada gambar diatas, saya menggunakan 4 tipe data untuk menampilkan kasus percobaan diatas. Saya masih tetap menggunakan header “<stdio.h>” sebab saya hanya menggunakan perintah perintah untuk input dan output standar.
Analisis
1.) Pada baris ke-5 saya menggunakan tipe data integer (int) karena data yang ingin saya tampilkan adalah bilangan bulat yang tergolong kecil yaitu hanya 5 digit saja.
2.) Pada baris ke-6 saya menggunakan tipe data float sebab data yang ingin saya tampilkan adalah suatu bilangan yang tergolong pecahan atau bilangan desimal yang mengandung nilai dibelakang komanya. Dan data ini berkisar diantara 1,7×10^-38 sampai 3.4×10^+38.
3.) Pada baris ke-7 saya menggunakan tipe data double sebab data yang ingin saya tampilkan adalah bilanan pecahan yang melebihi 3.4×10^+38 sehingga menggunakan tipe data atau mendeklarasikannya sebagai sebuah float adalah kesalahan dan ketika di deklarasikan sebagai float, variabel tersebut tidak akan cukup untuk menampung data sebanyak itu.
4.) Pada baris ke-8 saya menggunakan tipe data character (char) , sebab data yang saya kehendaki hanyalah satu karakter saja.
Note:
a.) Pada baris ke-13 saya memanggil data b yang bertipe float dengan mematasi jumlah digit dibelakang komanya yaitu 7 digit dan setelah memanggil saya ikutkan menulis satu karakter f untuk memenuhi permintaan kasus yang dihadapi.
b.) Pada baris ke-16, saya memanggil data tipe double dengan huruf e dibelakang simbol persen. Hal ini dikarenakan saya ingin menampilkannya denagan format perpangkatan 10 yang disimbolkan dengan huruf e.
Apabila program diatas kita compile / running , kita akan memperoleh hasil sebagai berikut :
2.) Membuat program untum mencetak hasil sbb.
a % b
a – b
a + b
a / d
a / d * d + a % d
a % d / d * a – c
Jika diketahui variabel variabelnya sebagai berikut :
int a = 12, b = 2, c = 3, d = 4;
Adapun detail code program diatas dapat dilihat pada list / gambar dibawah ini.
Pada program diatas dapat dianalisis sebagai berikut :
1.) Pada program diatas, setiap variabel di deklarasikan sebagai bilangan bulat / integer sebab hasil yang diharapkan adalah bilangan bulat tanpa pecahan.
2.) Pada operasi tunggal, kita langsung memasukkan bilangan yang akan kita proses.
3.) Baris 12 adalah formula untuk operasi modulus. Dimana operasi ini menunjukkan sisa hasil bagi dari sebuah bilangan yang dibagi.
4.) Baris ke-13 adalah formula untuk operasi pengurangan.
5.) Baris ke-14 adalah formula untuk operasi penjumlahan.
6.) Baris ke-14 adalah formula untuk operasi pembagian.
7.) Baris ke-17 dan 18 adalah implementasi dari operasi gabungan.
Hierarki setiap operasi Aritmatika pada kasus ini
a. Baris ke-12 merupakan jenis operasi modulus, yang disimbolkan dengan karakter persen (%). Operator mod (singkatan dari modulo atau modulus) dipakai untuk mencari nilai sisa pembagian. Operasi ini memberikan sisa hasil bagi dari suatu pembagian. Dalam kasus diatas , a yang bernilai 12 di moduluskan dengan b yang bernilai 2 maka akan menghasilkan 0 sebab 12 jika dibagi 2 maka tidak bersisa sehingga modulusnya adalah 0.
b. Baris ke-13 merupakan jenis operasi pengurangan , yang disimbolkan dengan minus (-). Yang terkadang disebut juga sebagai operasi selisih. Operasi ini mencari pengurangan dari nilai pertama dsengan nilai kedua.
c. Baris ke-14 merupakan jenis operasi penjumlahan , yang biasanya disimbolkan dengan tanda plus (+) yang dapat diartikan sebagai pengabungan nilai pertama dengan nilai kedua.
d. Baris ke-15 merupakan jenis operasi pembagian yag disimbolkan dengan slash (/) yang dapat diartikan sebagai pembagian tanpa sisa dua buah bilangan.
e. Operasi aritmatika perkalian biasanya disimbolkan dengan (*) yang merupakan perkalian dua buah bilangan.
NOTE :
Pada operasi gabungan, tidak perlu diberikan tanda kurung untuk memperjelas operasi yang berlangsung karena system akan secara otomatis mendahulukan operasi perkalian dan pembagian serta modulus dan setelahnya untuk operasi penjumlahan dan pengurangan. Kecuali, jika kiita ingin memberikan pengecualian khusus misalnya kita ingin sistem melakukan perhitungan pada penjumlahan / pengurangan terlebih dahulu.
Jika kita meng-compile program diatas, kita akan mendapatkan hasil keluaran output pada terminal Text Editor kita sebagai berikut.
3.) Membuat program untuk menghitung diskriman dari sebuah persamaan kuadrat dengan nilai a, b, dan c yang diinputkan.
Algoritma :
- Mulai
- Mendeklarasikan variabel a, b, c, d;
- Memasukkan input nilai a, b, dan c.
- Mengeksekusi/mengkalkulasikan nilai d, dimana :
d = b * b – 4 * a * c
- Menampilkan nilai d
- Selesai.
Pada kasus ini, kita menggunakan formula mencari rumus diskriman. Dan kita perlu menggunakan perintah “scanf()” untuk menginput nilai dari setiap variabel yang digunakan selama program berjalan. Adapun kasus tersebut dapat dibuatkan program sebagai berikut.
Untuk detail dari kode diatas dapat dilihat secara mendetail pada gambar / list dibawah ini.
Dari gambar diatas dapat dianalisis sebagai berikut.
a.) Setiap variabel diatas dideklarasikan sebagai bilangan bulat karena pada umumnya persamaan sebuah kurva persamaan fungsi kuadrat.
b.) Baris ke-6 sampai ke-11 adalah perintah untuk menginput dan mengisi variabel dengan nilai tertentu.
c.) Baris ke- 13 merupakan proses mengkalkulasikan diskriminan dengan rumus diskriminan sebuah persamaan kuadrat.
d.) Baris ke – 15 sampai ke – 22 merupakan kemungkinan yang akan keluar. (Opsional /hanya pelengkap).
e.) Baris ke-24 merupakan perintah untuk mencetak atau menampilkan hasilnya.
4. Membuat point kedua dan ketiga dan mengubah tipe datanya menjadi float.
Pada point kedua dan ketiga kita mendeglarasikan setiapa variabel diatas dengan bilangan bulat / integer. Lalu Apa jadinya jika kita mendeglarasikannya atau mengubah tipe variabelnya menjadi float / pecahan ???.
Let’s try it.
Apakah semuanya berjalan dengan baik dan dapat running seperti semula ???
Tentu saja tidak !!!. Jika kita mengubahnya menjadi seperti gambar diatas maka akan muncul tampilan peringatan problem sebagai berikut :
Bagaimana dengan point 3 jika kita mengubahnya juga menjadi tipe data float ???
Apakah point 3 jika tipe datanya diubah menjadi float dapat di compile ???
Jawabannya : YA !!! Tentu saja. Dengan tampilan sebagai berikut.
Timbul pertanyaan. Mengapa point ke-2 memiliki problem jika tipe datanya diubah menjadi float sedangkan point ketiga tetap dapat di compile tanpa adanya peringatan problem ??? AYO ANALISIS
Masalah utama yang menjadi penyebab adanya error tersebut adalah pada operasi perhitungan “MODULUS” yang kita gunakan. Mengapa demikian ??? Karena pada perhitungan modulus, hasil yang dikeluarkan selamanya adalah tipe data integer atau bilangan bulat. Perintah modulus akan menampilkan sisa dari suatu fungsi pembagian. Jadi tidak akan mungkin perintah modulus untuk menghasilkan bilangan bulat. Sehingga system tidak memperkenankan jika variabelnya diubah menjadi tipe data float karena hasil yang dihasilkan harus dalam bilangan bulat saja.
Hasil operasi modulus tidak akan pernah ditampilkan berupa bilangan bulat misalnya 0.33, 0.55, dsb.
Jika kita seandainya mengubah fungsi modulus menjadi fungsi oprator yang lain misalnya perkalian maka sistem tersebut dapat dijalankan dengan normal dan tidak terdapat peringatan problem.
Soal
1.) Brapakah hasil dari program berikut ini.
#include <stdio.h>
int main()
{
int a = 22;
a = a + 5;
a = a – 2;
printf(“a = %d \n”, a);
}
Jawab
Hasil dari program diatas adalah ” a = 25 “
2.) Berapakan nilai x jika pernyataan pernyataanberikut dijalankan, apabila x bertipe int.
(1). x = ( 2 + 3 ) – 10 * 2;
(2). x = (2 + 3) – (10 * 2);
(3). x = 10 % 3 * 2 + 1;
Jawab
Hasil dari pernyataan pernyataan diatas adalah
Hasil dari persamaan x1 = -15
Hasil dari persamaan x2 = -15
Hasil dari persamaan x3 = 3
3.) Nyatakan dalam bentuk pernyataan
y = bx2 + 0.5x – c
y = 0,3 x z / 2a
Jawab
Persamaan diatas dapat dinyatakan sebagai berikut :
y1 = (b*x*x) + (0.5*x) – c;
y2 = (0.3*x*z)/(2*a);
Contoh hasil percobaan kode tersebut untuk membuktikan kebenarannya .
4.) Apakah hasil eksekusi dari program berikut ini :
#include <stdio.h>
int main()
{
char kar = ‘A’;
kar = kar + 32;
printf(“%c \n”, kar);
}
Jawab
Hasil dari running kode diatas adalah “a” karena pada ASCI table huruf A (Kapital) berada / memiliki kode decimal yaitu 65 yang jika dijumlahkan oleh sebuah bilangan bulat maka akan menghasilkan karakter yang merupakan penjumlahan antara kode decimal ASCI karakter tersebut dengan bilangan yang dijumlahkan.
Dalam kasus diatas A merupakan karakter untuk kode 65 sehingga jika dijumlahkan dengan 32 akan menghasilkan angka/ kode 97 yang merupakan kode ASCI untuk a (huruf kecil).
Recent Comments