Chapter 3

TYPE, NAMA, NILAI DAN INPUT/OUTPUT

3.1. Type

Type adalah pola representasi suatu data dalam komputer. Gunanya untuk mendefinisikan objek yang akan diprogram. Adatype dasar (yang diasumsikan ada) dan type bentukan, biasanya type bentukan dibentuk dari type dasar. Type tidak menentukan alokasi memori di komputer, tetapi hanya mendefinisikan pola struktur informasi. Program bekerja dengan memanipulasi data di dalam memori.  Objek yang akan di program bermacam-macam tipenya,  antara lain nilai karakter, integer, string dan lainnya.

Mendefinisikan TYPE berarti :

  1. Menentukan nama type dalam kamus
  2. Definisi domain harga yang dapat dipunyai oleh nama tsb.
  3. Konvensi atau perjanjian tentang penulisan konstanta bertype tsb.
  4. Operator yang dapat dioperasikan terhadap objek bertype tsb.

Ada type dasar yang sudah diberikan dan dan siap dipakai, ada type bentukan yang dibentuk dari type dasar atau dari type bentukan/komposisi yang sudah dibuat.

1.   Type Dasar

Type dasar yang tersedia dalam suatu bahasa adalah type yang sudah didefinisikan oleh pemroses bahasa. Karena sudah didefinisikan, maka pemrogram dapat memakai nama type dan semua operator yang tersedia, dan mentaati domain nilai yang disimpan dalam type tersebut. Tipe dasar dalam algoritma adalah bilangan logika, bilangan bulat, bilangan riil dan karakter.

a.   Bilangan logika/Boolean

Nama tipe bilangan logika adalah Boolean. Bilangan logika mengenal dua buah nilai, yakni benar (true) atau salah (false).  Operasi-operasi yang dapat dilakukan terhadap tipe Boolean dikenal  dengan operator logika (not, and, or, xor)

a

Not a

True

False

False

True

a

b

a   and b

a   or b

a   xor b

True

True

True

True

False

True

False

False

True

True

False

True

False

True

True

False

False

False

False

False

cara mudah mengingat hasil operasi operator Boolean adalah untuk operator and hanya bernilai benar jika a dan b keduanya bernilai benar, untuk operator or hanya bernilai false jika a dan b keduanya bernilai false, sedangkan untuk operator xor akan bernilai benar jika a dan b saling berlawanan nilai kebenarannya.

b.   Bilangan bulat/Integer

Nama tipe data bilangan bulat adalah integer.   Operasi yang dapat dilakukan pada bilangan bulat adalah operasi aritmatika (*, +, -, /, div, mod) dan operasi perbandingan (<, >, ≥, ≤, =, ≠).

  1. Bilangan riil/Real

Bilangan riil adalah bilangan yang mengandung pecahan decimal.   Baik tipe bilangan bulat dan bilangan riil, keduannya juga dinamakan tipe numeric (angka).  Nama tipe bilangan riil adalah real.  Operasi yang dapat dilakukan pada bilangan riil adalah operasi aritmatika (*, +, -, /), operasi perbandingan (<, >, ≥, ≤, =, ≠). Dalam notasi algoritmik, operator relasional kesamaan tidak berlaku untuk bilangan riil, untuk harga riil harus didefinisikan suatu bilangan kecil ε yangmenyatakan ketelitian perhitungan, termasuk yang disebut dengan “kesamaan”.

Pada bahasa pemrograman yang nyata, operator kesamaan bilangan riil mungkin dapat dipakai dengan “baik”, namun harus hati-hati dan sangat spesifik untuk implementasi bahasa tertentu. Dengan alasan ini, pada notasi algoritmik operator kesamaan bilangan riil dianggap tidak ada.

d.   Karakter/Character

Yang termasuk ke dalam karakter adalah huruf-huruf alphabet, tanda baca, angka ‘0’, ‘1’,…,’9’, dan karakter-karakter khusus seperti ‘&’,’^’, dan sebagainya.  Nama tipe untuk karakter adalah char. Operasi yang dapat dilakukan pada karakter  adalah operasi aritmatika (+) dan operasi perbandingan (<, >, ≥, ≤, =, ≠).

2.  Type Bentukan

Type bentukan adalah suatu TYPE yang dirancang/dibentuk (dan diberi nama) dari beberapa komponen bertype tertentu, jadi merupakan sekumpulan elemen bertype dasar atau bertype yang sudah dikenal. Type bentukan dibuat/didefinisikan karena perancang program memutuskan bahwa keseluruhan (hasil komposisi) komponen type tersebut mempunyai sebuah makna semantik Ada relasi yang persis antara satu elemen dengan yang lain. Operasi terhadap komponen (elemen) bertipe dasar dilakukan seperti yang didefinisikan pada tipe dasar. Operasi terhadap keseluruhan tipe mungkin didefinisikan atau tidak.

Ada tiga macam tipe bentukan :  string, tipe dasar yang diberikan nama dengan nama tipe baru, dan rekaman /record.

  1. String

String adalah deretan karakter dengan panjang tertentu. Nama tipe string adalah string.  Operasi yang dapat dilakukan pada string adalah operasi aritmatika (+) dan operasi perbandingan (<, >, ≥, ≤, =, ≠).

2.  Tipe dasar yang diberikan nama dengan nama tipe baru

Pemrogram dapat memberi nama baru untuk tipe dasar dengan kata kunci type.

Contoh :

Type

BilBulat = Integer

BilBulat adalah tipe bilangan bulat yang sama dengan tipe integer.  Apabila mempunyai sebuah peubah yang bernama p dan bertipe BilBulat, peubah p tersebut sama saja bertipe integer.

3.  Rekaman /record

Rekaman disusun oleh satu atau lebih field,  tiap field menyimpan dari tipe dasar tertentu atau dari tipe bentukan yang lain yang sudah didefinisikan  sebelumnya.  Nama rekaman ditentukan oleh pemrogram.  Karena strukturnya disusun oleh field-field, maka rekaman dinamakan juga tipe terstruktur (structure type).

field1

field2

….

field   N

Contoh.

Titik dalam koordinat kartesian dinyatakan sebagai (x,y), dengan x adalah nilai absis dalam arah sumbu x dan y adalah nilai ordinat dalam arah sumbu y, x dan y anggota R.  Kita dapat menyatakan titik sebagai tipe bentukan dengan x dan y sebagai nama fieldnya.

x

y

Cara menuliskan tipe Titik :

Type Titik : record <x:real, y:real>

Record menyatakan bahwa Titik adalah tipe rekaman.  Jika dideklarasikan P adalah peubah bertipe Titik, maka cara mengacu tiap field pada A adalah

P.x

P.y

3.2.  Nama

Dalam sebuah teks algoritmik adalah sesuatu yang dipakai sebagai identifikasi :

  1. Modul program, algoritma, skema program dsb.
  2. Fungsi
  3. Prosedur
  4. Type
  5. Tempat penyimpanan, supaya harga yang disimpan dapat diacu isinya. Dalam beberapa bahasa pemrograman, nama tempat penyimpanan ini seringkali disebut sebagai nama variabel karena isinya dapat diubah-ubah lewat instruksi program.
  6. Konstanta, yaitu suatu harga yang tetap dan tidak boleh diubah nilainya

Karena adanya bermacam-macam nama tersebut, maka dalam suatu teks algoritma dikenal nama program, nama skema, nama fungsi, nama prosedur, nama type, nama variabel dan nama konstanta. Semua nama dalam program harus unik, artinya suatu nama hanya didefinisikan satu kali (dipakai sebagai salah satu nama tersebut) satu kali saja. Namun sebuah nama, misalnya nama variabel boleh dipakai berkali-kali dalam beberapa instruksi.

Semua nama yang dipakai dalam suatu teks algoritma harus sudah didefinisikan pada salah satu bagian teks algoritma. Tatacara penamaan yang dipakai dalam notasi algoritmik tidak seketat dalam bahasa pemrogaman yang misalnya membatasi jumlah dan jenis karakter serta case sensitive, (huruf kecil dan kapital dibedakan). Namun sebaiknya nama yang dipakai tidak membingungkan, misalnya, dalam teks algoritmik, nama tidak dibedakan dari penulisan dengan huruf kecil/kapital (tidak case sensitive) atau memakai simbol operator sebagai bagian dari nama. Setiap bahasa pemrograman mempunyai aturan yang ketat dalam mendefinisikan nama.  Untuk menjaga ketaatasasan, maka algoritma dalam buku ini memiliki aturan penulisan nama sebagai berikut :

  1. Nama harus dimulai dengan huruf alphabet, tidak boleh dimulai dari angka, spasi, atau karakter khusus lainnya;
  2. Huruf besar atau huruf kecil tidak dibedakan.  Jadi, suatu nama yang ditulis dalam huruf besar atau huruf kecil dianggap sama;
  3. Karakter penyusun nama hanya boleh alphabet, angka, dan “_” (underscore).
  4. Nama tidak boleh mengandung operator aritmatika, operator relasional, tanda baca, dan karakter khusus lainnya.
  5. Karakter-karakter di dalam nama tidak boleh dipisah dengan spasi.  Spasi dapat diganti dengan “_”.
  6. Panjang nama tidak dibatasi.

3.3.  Nilai, Ekspresi, Input & Output

Komputer mampu melakukan operasi aritmetika dan logika terhadap nilai yang disimpan di memori. Di dalam program, nilai disimpan dalam suatu nama “variabel”, sehingga dengan mengacu kepada nama, dapat dilakukan operasi yang diinginkan. Nilai yang disimpan juga dapat diperoleh dari hasil pembacaan dari piranti masukan, serta dapat dikomunikasikan ke dunia luar melalui piranti keluaran. Pada bagian ini dijelaskan notasi yang dipakai untuk mendefinisikan dan melakukan manipulasi nilai.

Nilai (Harga)

Nilai atau harga adalah suatu besaran bertype yang telah dikenal.

Harga dalam suatu algoritma dapat diperoleh dari :

  1. Isi suatu nama, yaitu nama informasi atau nama konstanta
  2. Hasil perhitungan suatu ekspresi
  3. Hasil yang dikirim suatu fungsi
  4. Konstanta bernama atau tanpa diberi nama yang dipakai langsung

Harga dapat dimanipulasi:

  1. Diisikan ke NAMA informasi (nama variabel) yang mempunyai type sesuai dengan harga tersebut dengan instruksi “assignment”
  2. Diacu saja dari suatu nama, untuk dipakai dalam perhitungan atau ekspresi
  3. Dibandingkan, sesuai dengan operator pembanding yang tersedia
  4. Dituliskan ke piranti keluaran (layar, printer, menyalakan signal, …)
  5. Dipakai dalam ekspresi , tergantung typenya

Pengisian Nilai

Suatu nama konstanta secara otomatis akan mempunyai harga tetap yang terdefinisi pada saat nama konstanta tersebut didefinisikan dalam kamus. Jadi menyebutkan nama konstanta secara otomatis akan memakai harga yang didefinisikan pada kamus tersebut. Tidak demikian halnya dengan nama informasi. Suatu nama informasi dapat dipakai dalam ekspresi jika harganya telah terdefinisi. Ada dua cara untuk mengisi suatu nama informasi dengan harga, yaitu dengan:

  1. Assignment, atau
  2. Dibaca dari suatu piranti masukan

1.  Assignment

Assignment adalah instruksi primitif algoritmik untuk menyimpan harga pada suatu nama informasi yang isinya boleh bervariasi (“variabel”), dengan perkataan lain adalah memberikan harga pada suatu nama variabel. Dengan pemberian harga ini, harga lama yang disimpan tidak lagi berlaku, yang berlaku adalah harga paling akhir yang diberikan.

<nama1> ← <nama2>       { harga dari nama1 disalin ke nama2 }

{ harga nama1 sama dengan harga nama2 setelah instruksi ini }

<nama> ← <konstanta>    {harga konstanta diisikan ke nama}

<nama> ← <ekspresi>      { hasil perhitungan ekspresi diisikan ke nama }

Dengan syarat :

  1. Bagian kiri dan bagian kanan tanda pemberian      harga (← ) bertype sama
  2. <nama> dan <nama1> (bagian kiri      tanda ← ) harus merupakan nama informasi, tidak boleh nama konstanta,      type, fungsi atau prosedur
  3. Nama yang tertulis di bagian kanan tanda ←      (misalnya nama2 atau nama konstanta atau nama yang dipakai dalam ekspresi)      boleh berupa nama informasi, nama fungsi, nama konstanta
  4. Semua nama yang dipakai dalam assignment      tidak boleh berupa nama type atau nama prosedur.

2.  Input/read

Selain dengan assignment, suatu harga dapat diisikan ke suatu nama informasi melalui pembacaan harga tersebut dari piranti masukan (keyboard, mouse, scanner, dsb). Disebut “dibaca”, karena arah dari pengisian harga yaitu seakan-akan komputer “membaca” harga yang diberikan pengguna. Pemberian harga dari piranti masukan ini mencakup konsep “menerima nilai” dari piranti masukan apapun, misalnya menerima nilai besaran temperatur dari sebuah sensor temperatur yang dihhubungkan dengan komputer di suatu ruangan.

Algoritma

Input/ Read (list-nama)

Dengan syarat :

  1. list nama adalah satu atau lebih nama informasi
  2. nama yang muncul pada list-nama hanya boleh berupa nama informasi, dan tidak boleh nama lain (nama konstanta, type, fungsi atau prosedur)

3.   Output/Write

Suatu harga yang disimpan dalam memori komputer (diacu berkat definisi nama informasi (variabel), nama konstanta atau konstanta) harus dapat dikomunikasikan ke dunia luar untuk diinterpretasikan oleh pemakai program. Dalam hal ini, harga harus dapat dituliskan ke suatu piranti keluaran, misalnya layar, printer. Instruksi algortimik yang disediakan untuk menuliskan nama informasi adalah instruksi penulisan output atau write. Instruksi output atau write tidak mengubah nilai yang disimpan.

Algoritma

Output/Write (<list-nama>) { semua harga yang tersimpan dalam setiap nama yang ada pada list-nama akan dituliskan pada piranti keluaran sesuai dengan urutan penulisan nama. Perhatikan bahwa yang dituliskan ke piranti keluaran hanya harga yang disimpan saja }

Output/Write (<konstanta>) { harga konstanta dituliskan ke piranti keluaran }

Output/Write (<ekspresi>)  { harga hasil perhitungan ekspresi dituliskan ke piranti keluaran }

Output/Write (<list-nama>, <konstanta>, <ekspresi>) {yang dituliskan ke piranti keluaran adalah semua harga sesuai dengan urutan penulisan nama, konstanta, ekspresi }

Dengan syarat :

  1. list nama adalah satu atau lebih nama : boleh nama informasi, nama konstanta atau hasil pemanggilan/aplikasi fungsi. Khusus untuk pemanggilan Fungsi, lihat pemakaian fungsi.
  2. nama-nama dalam list-nama tidak boleh berupa nama type atau prosedur
  3. nama yang akan dituliskan sudah terdefinisi harganya. Jika suatu nama informasi, didefinisikan dengan assignment atau instruksi input

4.  Ekspresi

Ekspresi suatu “rumus perhitungan”, yang terdiri dari operan dan operator. Operator yang dituliskan harus didefinisikan untuk mengoperasikan operan bertype tertentu. Hasil perhitungan adalah harga dengan domain yang memenuhi type operator yang bersangkutan. Operan harus mempunyai harga, karena itu dapat berupa konstanta, nama (dalam hal ini yang dipakai dalam perhitungan adalah harga yang dikandung nama ybs.), hasil pengiriman suatu fungsi atau merupakan suatu ekspresi.

  1. Ekspresi uner adalah ekspresi dengan operator      uner, yaitu operator yang hanya membutuhkan satu operan.
  2. Ekspresi biner adalah ekspresi dengan operator biner (membutuhkan dua operan)

Ekspresi meliputi Boolean, Numerik, karakter dan String.

Leave a Reply