Halo, saya Langit,…

Mungkin sebelum saya memulai pembahasan pada artikel kali ini izinkan saya mencurahkan keinginan dan harapan saya tentang blog ini ke depannya.

Jujur, saya sangat bingung saat saya bergabung dengan team ini karena materinya cukup random. Sebagai modul untuk pembelajaran sangat lah kurang karena berdasarkan materi yang di-publish sangat-sangat kurang urut. Bahkan sebagai pemanasan saya sudah terbawa arus saat mencoba mem-publish 2 artiel, dengan tema yang cukup random. Rencana untuk ke depannya dengan bergabungnya saya di team adalah untuk melengkapi materi-materi yang bersifat fundamental terkait dengan programming dan komputasi. Milestone by Langit W. Azvisena

Pada artikel kali ini saya akan kembali membahas salah satu materi fundamental pada pemrograman yaitu adalah Tipe Data. Tipe data secara umum pada programming.

Sedikit disclimer saya sebelumnya team kami telah mempublish artikel tentang tipedata namun cukup sepesifik yaitu Tipedata pada Database. Dalam konteks programming artikel tersebut cukup spesifik, namun dalam konteks database masih cukup umum. 

Mengapa demikian? 

Karena masing-masing DBMS memiliki karakteristiknya masing-masing, terkait limit memory yang disediakan atau mungkin terkait dengan jenis tipe data turunannya yang khusus.

Jadi apa maksud dari Tipe data secara umum pada programming?

Seperti yang telah anda ketahui bahwa bahasa pemrograman itu cukup banyak jenisnya : JavaScript, PHP, Python, Java, Go, Rust, Ruby dan masih banyak lagi. Dari berbagai macam bahasa pemrograman tentunya memiliki tipe data dan bisa jadi ada tipe data yang hanya dimiliki oleh suatu programming language tertentu. Tipe data secara umum pada programming adalah tipe data yang ada di semua bahasa pemrograman. 

Pengertian Tipe Data Secara Umum Beserta dengan Jenis dan Contohnya

Apakah yang dimaksud dengan Tipe Data?

Tipe Data adalah suatu konsep mendasar pada programming yang bertujuan untuk mendefinisikan suatu data identitas jenisnya. Beberapa bahasa pemrograman dalam mendefinisikan tipe data terdapat pada variabelnya, sehingga akses pada variabel tersebut menjadi terbatas, misalkan hanya dapat menyimpan data sesuai dengan tipe data yang didefinisikan, atau membatasi operation yang akan dilakukan oleh program atau sistem yang sedang di-develop.

Bagi bahasa pemrograman yang tidak mendefinisikan variabelnya, misalkan PHP, JavaScript, Python dan lain-lain, biasanya tipe data dapat tercermin kan dari data yang didefinisikan.

PHP

<?php 
$variableString = ""; 
$variableInteger = 12; 
?>

JS

let variableString = ""; 
let variableInteger = 0; 

Apa saja jenis-jesis Tipe data?

Jujur, saat saya menulis artikel ini saya lupa apakah saya pernah mendapatkan knowledge bahwa tipe data dikelompokkan menjadi 2. Namun ya apa boleh buat info berikut menjadi +1 knowledge pada statistik saya. Berikut adalah jenis-jenis tipe data yang dikelompokkan menjadi 2 yaitu : 

A. Tipe Data Primitif

Tipe data Primitif  (Primitive Data Types), adalah tipe data yang memiliki sifat mendasar (basic) atau bisa ditemukan di mayoritas bahasa pemrograman.

Berikut beberapa contoh tipe data primitif :

  1. Integer (Int), adalah tipe data untuk merepresentasikan data berupa bilangan bulat yang tentu saja memiliki batas maksimum dan minimum bergantung dengan programming language dan infrastruktur yang mendukungnya. Bilangan bulat meliputi 0, 674 (positif), dan -12 (minus).
  2. Float / Double, adalah tipe data untuk merepresentasikan data berupa bilangan pecahan, misalnya 1.4, 1.5. Perbedaan Float dan Double adalah size maksimal panjang data yang dapat ditampung, yaitu lebih besar Double.
  3. Character (Char), adalah tipe data yang merepresentasikan data dapat berupa huruf, angka, ataupun simbol yang berdiri sendiri atau berjumlah tunggal.
  4. Boolean (Bool), Tipe data yang  hanya memiliki 2 nilai yaitu true (benar) atau false (salah). Biasanya di terapkan pada variabel yang menyimpan data berupa status, misalkan isDelete, isValid, isActive dan lain sebagainya.

Sekali lagi saya ingatkan Tipe data Primitif tidaklah ditinggalkan, justru karena primitif atau lebih tepatnya bersifat mendasar secara default telah terdaftar pada mayoritas proramming language.

B. Tipe Data Komposit 

Berikutnya, setelah ditemukannya api muncullah 1 kelompok Tipe data lainnya yaitu Non Primitive Data Type / Tipe data Kompleks atau bisa disebut juga dengan Tipe data Komposit. Tipe data Komposit adalah tipe data yang memiliki fitur lebih advance atau bisa dikatakan merupakan turunan dari tipe data primitif.

Berikut beberapa contoh tipe data komposit atau tipe data non primitif :

  1. Array

    Array adalah suatu tipe data terstruktur berupa koleksi (collection) namun dalam bentuk yang sederhana karena dapat hanya menampung beberapa data dengan tipe data yang sama. Pada Array masing-masing data yang tersimpan di dalam nya memiliki identitas yang disebut dengan index, yang menarik dari index adalah menerapkan konsep bilangan kardinal yaitu dimulai dari 0.

    Bagi saya pengertian ini “dapat hanya menampung beberapa data dengan tipe data yang sama.” tidak lah sepenuhnya benar. Pengertian itu benar jika anda pengguna C, C++, C#, Java atau semacamnya yang perlu mendefinisikan tipe data di setiap variabel nya. Namun bagi pengguna JavaScript, PHP dan semacamnya yang tidak perlu mendefinisikan tipe data di varibale maka, dalam mendefinisikan array dapat dilakukan dengan cara free style, misalkan berikut :

    Java Script

    let dataArray = ['Ayam', 1, 'kucing', 'Piranha', 12, '43'];
    console.log(dataArray[0]) //hasil output : Ayam

    Java

    int[] dataArray = new int[]{1, 12, 23, 36, 5};
    System.out.println(dataArray[1]); //hasil output : 12

    Meski begitu, namun sudah sewajarnya array digunakan untuk menyimpan data-data dengan tipe data yang sejenis, karena jika anda ingin menyimpan beberapa data dengan tipe data yang berbeda akan lebih baik menggunakan Struct.

  2. Struct

    Struct / Structure adalah suatu variabel kompleks yang memungkinkan untuk menyimpan variabel lain di dalam nya, atau singkatnya struct merupakan kumpulan dari beberapa variabel yang menjadi bagian dari suatu variabel. Misalkan dalam JavaScirpt :

    let player = {
    id : "#87293",
    name : "Ren",
    class : "Knight",
    level : 16
    }

    Berdasarkan code javascript di variabel player memiliki 4 buah sub variabel yaitu id, name, class dan level. Untuk memanggil masing-masing data pada sub variabel nya dapat dilakukan dengan cara berikut :

    console.log(player.name) //hasil output : Ren
    console.log(player.id) //hasil output : #87293
    console.log(player.level) //hasil output : 16

    Sampai di sini bisa dimengerti kan ya?

    Selain itu ada juga developer yang memahami bahwa Struct adalah tipe data koleksi (colleciton) yang memiliki costumable index atau singkatnya merupakan array yang memiliki spesial atau costumable index. Hal tersebut juga tidak bisa disalah karena dalam memanggil tiap-tiap nilai dari masing-masing variabel mirip dengan cara memanggil tiap data di array hanya saja lebih dinamis.

    Istilah Struct sebenarnya berasal dari bahasa pemrograman C dan C++, di beberapa programming language lainnya masing-masing memiliki nama yang berbeda. Misalkan :

    • PHP : Associative Array
    • Java Script : Object
    • Python : Dictionary

    Kalau di lihat dari cara pendeklarasiannya hampir mirip, namun secara manfaat, fungsional dan hasil memiliki konsep yang sama.

    Jika anda menjadi developer ke depannya maka Anda akan merasa kan kemudahan penggunaan Struct saat meng-handle data.

  3. String

    String (Str), adalah tipe data untuk merepresentasikan data berupa teks, ya, sesuai dengan namanya bisa diartikan bahwa String adalah tipe data yang terdiri dari rangkaian karakter. Berbeda dengan tipe data character yang hanya dapat menyimpan 1 karakter saja, String lebih kompleks karena memungkinkan untuk dapat menyimpan 1 atau lebih karakter.

    Justru yang menurut saya paling flexible adalah String karena tipe data apa pun dapat diconvert menjadi plain text dan dimuat dalam variabel yang memiliki tipe data STRING. Terkait variable yang di convert menjadi STRING akan kehilangan fungsionalnya.

    Bahkan dengan tipe data String dapat memungkinkan menyimpan source code. Oleh sebab itu input text biasanya dilengkapi dengan restriction spesial karakter yang merepresentasikan suatu sintak bahasa pemrograman.

    Java

    String textString = "kind of string…";
    System.out.println(textString); //hasil output : kind of string…

    Kotlin

    val textString:String = "another string too…"
    println(); //hasil output : another string too…

    Python

    textString = "Hello World"
    print(textString); //hasil output : Hello World

  4. Interface

    Interface adalah tipedata berupa cetak biru yang bentuknya mirip dengan class dan isinya mendaeklarasikan sekumpulan abstrasi dari method atau function, berfungsi sebagai template method atau function untuk di implementasikan dalam mendefinisikan function di dalam class.

    Dalam Object Oriented programmang, Interface menerapkan polymorphysm sehingga memungkinkan suatu abstraksi dapat diimplementasikan dalam beberapa bentuk.

    Terkait interface, jujur saya tidak pernah menggunakan interface dalam native coding tanpa framwork, jadi mohon maaf saya tidak bisa menyediakan contohnya. Namun berikut contoh interface saat saya menggunakan Framwork Springboot dengan bahasa permrogramman Kotlin :

    Kotlin (Springboot)

    interface BookService {
    fun getAllBooks(): List<Book>
    fun getBookById(id: Long): Book?
    fun createBook(book: Book): Book
    fun updateBook(id: Long, book: Book): Book?
    fun deleteBook(id: Long): Boolean
    }

    Dari code di atas tidak dapat ditampilkan hasilnya karena interface tersebut digunakan sebagai template function yang akan diimplementasikan pada class BookServiceImplement.

Apakah fungsi Tipe data?

Berikut beberapa fungsi dari Tipe data pada programming :

  • Fungsi tipedata adalah untuk memberikan identitas (mengklasifikasikan) atau mendefinisikan jenis data yang dapat disimpan pada suatu variable atau constanta.
  • Memungkinkan mengatur batas jumalh character / digit atau panjang data yang berdampak pada alokasi memori yang disediakan untuk suatu data tersebut, hal tersebut bisa menjadi restriction atau limitasi jumlah data tabg disimpan.
  • Dari segi keamanan, tipe data memungkinkan menjadi sebuah validator dari suatu proses dalam programming. Misal : operasi aritmaika, logic, action yang bersifat transactional save, store, dan read data. Dengan begitu proses akan berhenti, sehingga tidak terjadi anomaly data.

Fan Fact Story :

Cerita berikut adalah pengalaman desainer kita yaitu Sastrika Arya semasa SD di kelas 4 yang secara paksa kami coba korelasikan supaya bisa disisipkan ke artikel ini. Cerita ini hanyalah hiburan fun fact saja jika tidak dibaca pun tidak berpengaruh dengan pengetahuan mengenai tipe data jadi anda dapat melewatkannya, namun jika anda tertarik untuk membaca anda dapat membuka dengan button di bawah ini.

Jadi beberapa tahun yang lalu saat Arya masih duduk di bangku SD, Arya sempat belajar tentang LibreOffice lebih tepatnya Calc. Bagi rekan-rekan pengguna spreadsheet apps, di situ lah dimana implementasi tipe data sangat-sangat diterapkan karena memang memudahkan dalam mengolah data-data yang memeungkian untuk dikalkulasi atau dalam bentuk statistik.

Berdasarkan cerita Arya itu adalah hari pertama kelas nya belajar spreadsheet apps dan karena jumlah siswa dan tidak imbang maka sebagai siswa buangan Arya pun menggunakan 1 komputer untuk ber-3 dengan rekan sekelasnya yaitu : Mahardika & Lumiya, yang seharusnya ideal untuk 2 siswa saja.

Lanjut dalam praktik, mereka membuat table lalu mencoba menginputkan teks, angka ke dalam field. hasilnya seperti pada gambar di bawah ini.

Saat mengisi each field nya seorang siswa bernama Lumiya memberikan saran untuk 

"Menurut gua, cukup field nya cukup lebar kan? Kalo di isi 'five' kayanya masih muat!" ~Lumiya

"Okay, got it." Mahardika dan Arya menjawab.

Setelah selesai mengisi field nya, penjelasan guru pun berlanjut ke operasi aritmetika yaitu perkalian yang melibatkan lebih dari 1 field, yaitu price dan amount. Tidak perlu main tebak-tebakan sudah pasti reken-rekan pembaca tau apa yang terjadi.

Hasil penjumlahan menampilkan. error berikut :

Error #VALUE! saat operasi aritmatika pada LibreOffice calc

Kerena mendapatkan error Arya pun angkat tangan meminta bantuan untuk melakukan trouble shooting pada spreadsheet merkea. 

Ya, tentu saja gurunya memperbaiki error nya, dan merespon dengan nada sedikit jengkel karena mengetahui root cause yang cukup,… lol.. ya… heehehe.

Error #VALUE! saat operasi aritmatika pada LibreOffice calc

"Haduh…" Gumam si guru sambil memperbaiki the error nya.

Namun penjelasan baku yang mereka dapat adalah

"Harus angka…"~Guru Komputer menjawab dengan bad mood vibes

"Ya, mana gua tau an***… Kalo udah bisa gak sekolah gua. Langsung kerja jadi Astronot."~Arya (Gumam Arya jika waktu bercertia kasus ini ke saya.)

Saya sih sependapat dengan Arya, menang apa yang diharapkan dari bocah 8 Tahun yang pertama kali menggunakan spreadsheet. Mungkin harap gurunya adalah di hari pertama belajar spreadsheet siswanya sudah pada jago query language…

Okay, aku rasa sudah cukup aku jelaskan dengan artikel ini ya, terkait penyebab errornya. Jadi operasi Aritmatika tidak bisa dilakukan karena tipedatanya tidak sama, jadi error jika saya coba tulis dengan pesoudocode :

price = 1000;
amount = 'five';

total = price*amount;
total = 1000*'five';

result *Error : #VALUE!

Meskipun kenyataannya, ya… sebagai ruler writer o_o kita bisa atur suka-suka, peseudocode diatas menjadi dalam bentuk javascript sehingga bisa mengeluarkan hasil yang benar (bernilai 5000).

let numberOption = {
zero:0,
one:1,
two:2,
three:3,
four:4,
five:5,
six:6,
seven:7,
eight:8,
nine:9,
}

let price = 1000;
let amount = 'five';
let amountNumber = null;
if(amount != ''){
amountNumber = numberOption[amount];
}else{
amountNumber = numberOption.zero;
}

total = price*amountNumber;
//total = 1000*5; //aritematic process
//total = 5000; //result
console.log(total); // output : 5000

Meskipun kita tidak bisa rewrite code di spreadsheet apps atau melakuakn Reverse Engineering ke source code aplikasi pengolahan angka tersebut. Kami masih memiliki kemungkinan menerapkan pesudocode di atas dengan tipe data ENUM jika berusrusan dengan database, membuat option dengan tipe data dictionary di python, atau menerapkan Formual Nested IF() di Excel untuk membuat option untuk menghandle error diatas. Karena scope nya tidak besar, ya sebatas pembelajaran untuk anak SD.

Sebelum saya menulis code itu berdasarkan cara kerja otaknya, Arya. Mohon maaf sebelumnya. Saya rasa cukup jelas ya, terkait perbaikan dari error yang dilakukan Arya di spreadsheet.

Selanjutnya berdasarkan certia dari Arya, hal-hal menyenangkan pun mulai terjadi.

"Koblok…" terdengan suara seorang siswa yang nyeletuk, memecah keheningan dan mengubah mood dari guru komputer yang jengkel menjadi sedikit tersenyum.

Seisi kelas pun meresponse dengan ketawa kecil dan beberapa menahan tawa.

Lalu kegiatan belajar dan mengajar pun berlanjut, hingga jam pun berakhir. Dari lab komputer, seluruh siswa pun kembali ke kelas untuk melanjutkan pelajaran yang lain.

Saat keluar dari lab komputer ternyata ada siswa yang telah menunggu Arya di depan lab komputer. Siswa itu mengatakan

"Koblok…" sambil cekikikan.

Arya yang tidak mau meladeni nya pun mecoba melipir menjauh dari sumber suara. Kata Arya, dia seakan ingin mecoba nemutup kedua telinganya. Namun Arya tetap berusaha menjauh dengan pandangan ke bawah dan agak kabur.

Lalu si pintar dan tengil karena seorang anak dari keluarga yang terpandang (#kata Arya) bernama Brandon pun mulai mencemooh Arya. 

"Koblok… manusia purba." ~Brandon

Dengan cekikikan dan nada yang merendahkan Arya.

"Koblok… emang lu… =angka*huruf" ~Brandon berkata ke beberapa teman sekelasnya sambil nunjuk-nunjuk ke Arya.

"lho hasilnya kok, hahahaha… Koblok" ~Brandon

"hahahaha… Koblok banget… asli…" ~Brandon masih tertawa, terbahak-bahak

Ejekan itu pun berlanjut hingga Arya berada di kelas 6, Arya the fooliest icon of speardsheet

Kami mempublish cerita ini tidak bermaksud untuk menghina atau menjelek-jelekkan pihak yang pernah konflik dengan Arya, semua karakter pun kami samarkan namanya.

Meskipun saya sebenarnya se7 dengan Brandon yang menggunakan Arya sebagai representasi ke goblogan, terbukti dengan this cover article tertang tipe data ini mengapa menggunakan ilustrasi Majo no Leona, teaching mode.

"I try to represent my anger on it, as a curse" ~Arya

"It’s never work, dude!" ~ Langit

"Let see… Leona, Chant the spell…" ~Arya






Afterword :

Saya "Langit", sekalu leader dari LANGIT TUTORIAL, menulis cerpen spesial ini untuk mengapresiasi ke *oblokkan Arya yang bisa menghibur stress dari siswa paling pintar (yang merupakan cerminan dari ‘Ing ngarso sung tulodo’ dalam dunia pendidikan) di kelasnya.

Saya tidak tau persis apa yang dirasakan si Arya di saat itu, yang tentunya dia sebagai seorang pengidap dyslexia disorder, dan hingga kini masih mengalami kesusahan dalam baca dan tulis.

Namun ingat, kArya is no limit. Jadi extra content fun fact story dilengkapi dengan game asset ini, ide dan desaign nya berasal dari Arya.

Coba bayangkan jika kesalahan yang arya buat assat menginputkan asset game berupa semacam magic / skill untuk summoning undead pada field untuk content artikel. ~there’s be a nice gimmick.

Kami rasa itu sebanding dengan kesalahan yang dilakukan Arya di kelas spreadsheet, ya sangat *oblok dan lucu. 😀

Karena Arya == *oblok, jadi aku rasa jika si siswa paling pintar sekelas Arya itu atau segenap orang yang menertawakan Arya saat melakukan salah input data, maka device yang mereka gunakan akan terbang. ~fly to the ceiling, my lovely devices…

Jadi saya mohon dengan sangat, bagi rekan-rekan yang membaca fun fact story ini, jangan pernah kalian coba menrendahkan seseorang, karena kalian tidak tau seberapa jauh batas seseorang dapat menahan cemoohan semacam itu dalam waktu yang cukup…, dan didukugan sosial yang kuat. Hal semacam itu mungkin berdampak secara metal, atau mungkin pada fantasy world dapat direpresentasikan dengan kata "curse" yang pasti pada korbanya atau bahkan pada pelakunya.

Thanks to :

Sastrika Arya
Original Author & Art Design of Fanfact Story

Leona Teluki
Witch Model

Ar Ma
Role Writer & Coder

Background Music Credit
Ghostpocalypse – 5 Apotheosis by Kevin MacLeod

Demikian artikel pembahasan tipe data pada programming secara umum kali ini. Terkait pembahasan tipe data yang lebih spesifik berdasarkan bahasa pemrogramannya mungkin akan kami bahasa di artikel lain jika ada kesempatan, atau jika rekan-rekan coders yang berkenan untuk berbagi ilmunya dapat menambahkan di kolom komentar terkait tipe data yang belum kami sebutkan, atau tipe data baru yang dikembangkan di masa depan.

Mohon maaf atas segala kekurangan, mungkin jika ada yang berinisiatif untuk menambahkan silahkan bisa melalui kolom komentar.

Sekian dari kami terima kasih.

~Semoga Bermanfaat~


 

Leave a Reply

Your email address will not be published. Required fields are marked *