INTRODUCTION TO C – PART 2
Pada Cyber Article “Intro To C Part 1” telah dibahas mengenai dasar struktur pemrograman dan juga dasar input, output. Pada cyber article kali ini akan membahas lanjutan materi tersebut yaitu berbagai tipe data dalam C, syntax format specifier, cara lain dalam melakukan input dan output, perbedaannya dengan cara yang sudah dibahas pada part 1.
Tipe data pada C beserta besarnya memori yang dibutuhkan dan format specifiernya
Type | Size (bytes) | Format Specifier | Min value |
Max Value |
int | 4 | %d, %i | -2147483648 | 2147483647 |
char | 1 | %c | -128 | 127 |
float | 4 | %f | 1.175494e-38 | 3.402823e+38 |
double | 8 | %lf | 2.225074e-308 | 1.797693e+308 |
unsigned int | 4 | %u | 1 | 4294967295 |
short | 2 | %hd | -32768 | 32767 |
unsigned short |
2 | %hu | 1 | 65535 |
long | 8 | %ld, %li | -2147483648 | 2147483647 |
unsigned long | 4 | %lu | 1 | 4294967295 |
long long | 8 | %lld, %lli | -9223372036854775808 | 9223372036854775807 |
unsigned long long | 8 | %llu | 1 | 18446744073709551615 |
signed char | 1 | %c | -128 | 127 |
unsigned char | 1 | %c | 1 | 255 |
Untuk cara penggunaannya kurang lebih sama dengan penggunaan int pada artikel “Intro To C Part 1”, yaitu:
- Buat sebuah variabel penampung dengan tipe data yang diinginkan
- menggunakan format specifier yang sesuai dengan tipe data variabel, hubungkan dengan variabel yang telah dibuat.
Contoh penggunaannya sebagai berikut:
(sebagai catatan disini saya memakai online compiler (https://onlinegdb.com/FAVjySWKF) agar bisa dijalankan juga oleh teman-teman sekalian)
Sekilas char dan unsigned char itu mirip, tetapi ada perbedaan yaitu unsigned char bisa menampung sebuah karakter dengan ascii dari 1-255 sedangkan char bisa menampung sebuah karakter dari 127-128.
Penggunaan format specifier sebetulnya tidak sebatas sebagai pembeda antar tipe data, tetapi juga bisa untuk memberikan aturan kepada hasil yang ingin ditampilkan, sebagai contoh di atas. “%f” digunakan untuk menampilkan hasil inputan ke dalam variabel float1, default syntax pada format specifier adalah %[-][width][.][precision][formatSpecifier]. Untuk [-], [.], [precision] itu sifatnya opsional. Pada contoh diatas, apabila tidak menspecify [-],[width], [.], [precision], maka defaultnya akan menampilkan 6 angka dibelakang koma (%.6f). jika kita ingin menspecify jumlah angka yang ditampilkan dan berapa angka dibelakang koma yang diinginkan maka kita dapat menambahkan detail format specifiernya.
Sekilas jika dilihat float dan double memiliki fungsi yang sama yaitu untuk menampilkan tipe data yang berkoma (floating point), namun double memiliki akurasi yang lebih akurat dibandingkan dengan float, double memiliki akurasi 15 angka di belakang koma, sedangkan float 7 angka dibelakang koma.
Untuk string sebenarnya tidak ada tipe data string pada C, tetapi hanya sebuah array dari karakter. Pada saat membuat variabel array dari karakter, kita perlu menspecify jumlah karakter maksimum yang bisa ditampung, dan untuk format specifier-nya menggunakan %s. Detail format specifier-nya seperti contoh di atas, kita bisa menentukan jumlah dari karakter string yang ingin dicetak dengan menuliskan sejumlah angka setelah %s, dan [-] untuk menentukan apakah string inputan berada di posisi paling kiri atau tidak.
Jika diperhatikan pada contoh-contoh diatas terdapat “\n”, yang menjadi pertanyaan, apakah itu? Itu dikenal dengan escape sequence, ada beberapa escape sequence pada C yaitu:
\n | untuk menambahkan baris baru (add new line) |
\t | untuk menambahkan tab (add tab) |
\’ | untuk menampilkan ‘ |
\” | untuk menampilkan “ |
\\ | untuk menampilkan \\ |
\v | untuk vertical alignment |
Contoh penggunaannya sebagai berikut:
(contoh code dapat dicoba pada https://onlinegdb.com/M7AlDQXMq, Disclaimer: Jawaban latihan ada di sana)
Sebagai tambahan, tadinya kita hanya bisa menginputkan string hanya sampai inputan bertemu dengan spasi (space). Jika ingin menginput sebuah kalimat utuh sampai enter (new line) ditekan, kita bisa memanfaatkan escape sequence pada format specifier yaitu dengan menuliskan [^\n] sebagai gantinya dari %s yang tadinya kita buat. dengan demikian kita bisa menginput character sampai kita menuliskan “\n” atau enter. Sebagai catatan, jika kita menginputkan lebih banyak dari jumlah maksimal array dari character, yang disimpan hanya sebanyak maksimal jumlah yang sudah di assign pada array tersebut.
Sebagai gambaran apakah teman-teman sekalian sudah mengerti tentang tipe data dan escape sequence. Coba untuk mengerjakan soal latihan berikut ini, diminta untuk mengoutputkan syntax berikut dan gantilah ”namamu” sesuai dengan nama kamu:
#include <stdio.h>
int main(){ char nama[50]; printf(“hello namamu, welcome to cyber article”, %s); return 0; } |
Sampai disini kita sudah membahas berbagai tipe data pada C dan cara menginput juga outputnya. Sebenarnya masih ada cara lain untuk menginput dan mengoutput character atau array dari character selain menggunakan function scanf() dan juga printf() yang mengharuskan memakai format identifier, cara lain untuk menginput adalah dengan menggunakan getchar(), gets() dan untuk mengeluarkan output bisa dengan putchar(), puts().
Contoh code-nya bisa dilihat di https://onlinegdb.com/mFqOOSkfkn. Sebagai catatan jika kita memakai gets akan menampilkan warning bahwa penggunaan gets tidak disarankan karena akan mengambil semua character yang diinputkan jadi cenderung tidak aman digunakan, dan disarankan untuk memakai scanf() dengan format specifier yang spesifik pada character tertentu saja yang ingin diinputkan.
Contoh penggunaan getchar() dan putchar(). getchar() sebenarnya jarang digunakan untuk mengambil sebuah character saja lalu di ouput melainkan lebih ke mengambil “\n” pada saat menginput sebuah array dari character karena harus berakhiran spasi atau “\n” disitulah getchar() paling sering digunakan untuk “memakan” spasi atau “\n” agar code setelahnya tidak terdampak akibat menginput “\n” atau spasi.
Referensi:
- https://www.programiz.com/c-programming/c-data-types
- https://learn.microsoft.com/en-us/cpp/c-language/cpp-integer-limits?view=msvc-170
- https://www.geeksforgeeks.org/c-prgram-print-range-basic-data-types-without-library-function-constant/
- https://www.programiz.com/c-programming/c-data-types
- https://www.freecodecamp.org/news/format-specifiers-in-c/
- https://aticleworld.com/format-specifiers-in-c/
- https://www.tutorialspoint.com/c_standard_library/c_function_gets.
- https://aticleworld.com/format-specifiers-in-c/