• Tidak ada hasil yang ditemukan

Modul Pelatihan Olimpiade Komputer Created By : Taufik Amran,S.kom Tahun 2008

N/A
N/A
Protected

Academic year: 2019

Membagikan "Modul Pelatihan Olimpiade Komputer Created By : Taufik Amran,S.kom Tahun 2008"

Copied!
8
0
0

Teks penuh

(1)

“PEMBAHASAN KHUSUS TIPE DATA LANJUTAN

Tipe dasar sudah cukup untuk dapat dipakai memproses sebagian besar data

yang ada, namun tipe dasar tidak cukup untuk memproses banyak data,

apalagi data yang memiliki struktur tertentu. Untuk menyelesaikan persoalan

pengolahan data tertentu, suatu tipe data baru dapat dibentuk berdasarkan

tipe data dasar (primitif).

*) I. Tipe Enum

Tipe enum adalah suatu tipe yang elemennya didefinisikan sendiri satu per

satu. Dalam representasinya sebenarnya tipe enum ini adalah sebuah integer

yang diberi nama. Dalam Pascal tipe ini didefinisikan dengan cara menyebut

elemen-elemennya:

type

hari = (senin, selasa, rabu, kamis, jumat, sabtu, minggu);

warna = (merah, kuning hijau);

Tipe enum tidak bisa dibaca (dengan readln) atau ditulis (dengan writeln), tipe

jenis ini hanya bisa

diberi nilai dengan assignment.

*) II. Tipe Enumerasi

Tipe enumerasi adalah tipe yang elemen-elemennya bisa disebutkan satu

persatu (bisa dicacah),

integer, enum, dan karakter adalah contoh tipe enumerasi. Tipe real tidak bisa

dicacah satu persatu,

tipe string juga tidak bisa dicacah satu per satu.

*) III. Subtipe Integer

Integer memiliki range tertentu sesuai dengan jumlah bit yang dipakai oleh

integer. Terkadang dalam kasus tertentu hanya diperlukan subrange (sebagian

range) integer, misalnya untuk mengolah data jam yang berbasis 60

(seksadesimal), yang diperlukan hanyalah angka dari 0 sampai 59, angka di

luar itu sifatnya tidak valid. Subtipe integer didefinisikan dengan menyebutkan

(2)

type jam = 1..12;

menit = 0..59;

detik = 0..59;

*) IV. Tipe SET (himpunan)

Tipe himpunan adalah tipe yang bisa menerima himpunan nilai yang

masing-masing elemennya adalah tipe enumerasi. Perhatikan: tidak semua bahasa

pemrograman prosedural memiliki tipe SET.

Deklarasi tipe himpunan adalah:

type

hari = (senin, selasa, rabu, kamis, jumat, sabtu, minggu);

setkar = set of char;

harihari = set of hari;

Operasi yang tersedia untuk himpunan meliputi: gabungan (union), irisan

(intersection), dan pengurangan elemen himpunan, serta pengecekan

Tipe set tidak bisa dibaca dan ditulis secara langsung menggunakan

read/readln/write/writeln.

*) V. Tabel Berdimensi Satu (Array)

Jenis variabel yang telah diberikan hanya bisa digunakan untuk menyimpan

sebuah nilai saja. Dalam banyak kasus kita perlu menyimpan banyak nilai yang

serupa untuk diproses, misalnya data nilai mahasiswa dalam suatu kelas untuk

dihitung rata-ratanya. Tabel adalah tipe data yang dapat menampung sejumlah

data dengan tipe sejenis, jumlah data yang dapat disimpan dibatasi oleh

kemampuan kompilator dan komputer. Deklarasi tabel integer yang

Var tabint : array [1..100] of integer;

Dengan deklarasi semacam itu sebuah tabel yang terdiri dari 100 elemen

integer dibentuk, dan dapat

diakses melalui indeksnya (antara 1 sampai 100, inklusif). Untuk mengakses

elemen tabel ke-n

gunakan sintaks: tabint[n].

Tabel dapat diproses menggunakan loop (biasanya loop for, karena indeks

(3)

berikut akan menjumlahkan seluruh elemen tabel integer yang dideklarasikan

di atas (jumlah dan i

bertipe integer):

Jumlah := 0;

for i:=1 to 100 do jumlah := jumlah + tabint[i];

writeln('Jumlah elemen tabel adalah:', jumlah);

Array Dimensi

Adalah bentuk tipe data terstruktur yang terdiri dari sejumlah komponen-komponen yang mempunyai komponen-komponen data yang sama. Banyak komponen-komponen dalam Larik/Array disebut indeks( nilai Indeks adalah Ordinal).

PEMBAGIAN ARRAY TERBAGI ATAS

1. Array Tidak Berdimensi Array Satu

a. Array Type Sederhana Bu

1. Type NamaTipeArray = Array [Nilaiawal..NilaiAkhir] oftipe data; Var VarArray : NamaTipeArray;

2. Var NamaArray : Array [Nilaiawal..NilaiAkhir]of tipe Data; 3 Array dengan tipe Data Skalar;

Contoh

1. Type Tangka =Array[1..100] of byte;

Var angka = Tangka;

2. Var Angka = Array [1..50] of shortint;

{Program Array dimensi Satu} uses crt;

type infomenu = array[1..5] of string[30];

var dafmenu : infomenu; i,PILIH : byte; dafmenu[4]:='PICEL LOTONG '; dafmenu[5]:='SATE ';

writeln(' menu kafe koe'); writeln(' ==============');

WRITELN(DAFMENU[1]) ELSE

IF PILIH=2 THEN

WRITELN(DAFMENU[2]);

READLN; end.

(4)

Type NamaTipe = ( Kons1,Kons2,Kons3, KonsN) ;

Var Namavar = Array [NilaiAwal..NilaiAkhir] of NamaTipe;

Contoh :

Type Thari = (Minggu, Senin,Selasa, Rabu,Kamis,Jum’at,Sabtu); Var JumlahJam : Array [1..24] of Thari;

Kesimpulan Program Singkat Diatas

1. Tipe Data diatas mempunyai konstanta ada 7 (Minggu, Senin,Selasa, Rabu,Kamis,Jum’at,Sabtu )

2. Variabel data mempunyai Jumlah Jam 1,2,3 …24 Jam untuk 1 hari =24 Jam (1 s/d 24), jadi maksimal elemen yang dimiliki oleh Variabel Array hanya 24.

3. Masing-masing Elemen Array ( 1 S/D 24 ) hanya memilki nilai 7 (Minggu, Senin,Selasa, Rabu,Kamis,Jum’at,Sabtu )

c. Array dengan Type Data Sub Range

Bu :

Type NamaTipe = NilaiAwal..NilaiAkhir;

Var NamaArray : Array [NamaTipe] of Tipe Data;

1.Const NamaKons1 = Nilaiterkecil; NamaKonst2 = Nilaiterbsear; 2. Array Dimesi Dua/ Banyak

(5)

Type NamaTP =Array[Awalbaris..AkhirBaris,AwalKolom..AkhirKolom] of Tipe Data ;

Var NamaArray : NamaTP;

Type Jumlah = array [1..5.1..5] of Byte; Var Angka = Jumlah;

{Program Arrray Dimensi Dua} uses crt;

type Tangka = array[1..5,1..2] of byte; var Dafangka: Tangka;

i,PILIH : byte; begin

clrscr;

Dafangka[1,1]:=100; Dafangka[1,2]:=150; Dafangka[2,1]:=40;

Dafangka[2,2]:=50; Dafangka[3,1]:=60; Dafangka[3,2]:=80; Dafangka[4,1]:=120; Dafangka[4,2]:=140; Dafangka[5,1]:=250; Dafangka[5,2]:=350;

for i:=1 to 5 do begin

for J:=1 to 2 do begin

WRITELN(DAFANGKA[I,J]:5); END;

(6)

Hasil program

100(B1, K1) 150 (B1,K2) 40 (B2, K1) 50 (B2,K2) 60 (B3, K1) 80 (B3,K2) 120(B4, K1) 140 (B4,K2)

250(B5, K1) 350 (B5,K2)

*) VI. String

Dalam Pascal String dapat dianggap sebagai tipe data dasar, namun dalam

kebanyakan bahasa String hanyalah tipe data array of character. String dapat

menampung serangkaian huruf dan angka. Suatu literal integer dapat ditulis

seperti biasa: 5 atau 6, sedangkan literal string harus ditulis dengan diapit

tanda kutip tunggal, seperti ini:

'ini string' Jika ada tanda kutip di dalam string, digunakan dua kutip tunggal,

jadi untuk menuliskan string “don't do that”, harus seperti ini:

'don''t do that'

*) VII. Operasi Terhadap String

Ada beberapa operasi untuk string, namun yang akan dibahas di bagian ini

hanyalah instruksi penambahan atau konkatenasi string. String dapat

digabungkan seperti ini:

program concat_string;

var s1, s2, s3 : string

begin

s1:= 'hello';

Tim Olimpiade Komputer Indonesia

Konsep Dasar Pemrograman Prosedural 41

s2:='world';

s3:= s1 + ' '+ s2;

writeln(s3);

end.

Nilai string s3 adalah 'hello world' yang merupakan gabungan dari string s1,

spasi, dan string s2. Sebuah karakter bisa juga digabung atau disambungkan

dengan sebuah karakter:

var

(7)

c:char;

begin

writeln('Masukkan sebuah huruf:'); readln(c);

s:= 'Huruf yang Anda masukkan adalah '+c;

writeln(s);

end.

Operasi terhadap string yang lain dilakukan dengan menggunakan

fungsi-fungsi string yang tergantung pada kompilator Pascal. Fungsi-fungsi-fungsi string

yang tersedia untuk FreePascal dapat

dilihat pada buku FreePascal.

*) VIII. String sebagai Array of Character

String sebenarnya adalah tabel berdimensi satu dengan elemennya berupa

karakter, indeks ke-0 tabel berisi panjang string saat ini, dan indeks ke 1 dan

seterusnya berisi data karakter yang ada pada

string. Pada string seperti ini:

s := 'hello';

maka s[1] = 'h', s[2]='e', dst. Sedangkan ord(s[0]) akan berisi panjang string

yaitu 5. Pengaksesan

panjang string melalui elemen ke-0 tidak disarankan, karena tergantung pada

implementasi Pascal, elemen string sebaiknya hanya diakses mulai dari

elemen 1 sampai panjang string.

*) IX. Tabel Berindeks Banyak (Tabel Multi Dimensi)

Terkadang kita perlu memiliki tabel dengan dimensi lebih dari satu. Matriks

merupakan salah satu contoh tabel dengan banyak dimensi (tabel multi

dimensi). Tabel multi dimensi dipandang oleh

semua bahasa yang mengenal tipe data tabel satu dimensi, karena tabel dua

dimensi bisa dipandang

sebagai tabel dari tabel.

Dalam Pascal, tipe tabel multi dimensi dapat dideklarasikan seperti ini:

var

matriks : array [1..4, 1..5] of integer;

untuk dimensi yang lebih dari dua, tambahkan koma setelah 1..5 dan

(8)

dimensi berikutnya dan seterusnya.

alternatif lain adalah:

var

matriks : array [1..4] of array [1..5] of integer;

Pengaksesan elemen tabel dilakukan dengan memberikan indeks baris dan

kolom:

matriks[baris, kolom] := nilai;

atau:

matriks[baris][kolom] := nilai;

Pemrosesan tabel multi dimensi umumnya dilakukan dengan nested loop. Hal

yang perlu diperhatikan dalam pemrosesan tabel dengan loop adalah bahwa

indeks tabel tidak boleh lebih dari yang sudah dideklarasikan. Tabel

berdimensi dua bisa dipandang sebagai matriks, tabel berdimensi tiga dapat

dipandang sebagai ruang. Tabel dengan dimensi lebih dari tiga tidak

Referensi

Dokumen terkait

Alamat Email : diharto72 pada domain gmail.com atau diharto pada domain staff.unnes.ac.id. Pangkat/Golongan/Ruang :

Angka c ommunalities terkecil yaitu indikator kesopanan pelayanan sebesar 0,237, yang berarti hanya 23,7% varians dari indikator kesopanan di dalam pelayanan dapat dijelaskan

Berdasarkan pengertian dan unsur-unsur citizen jurnalims di atas dapat disimpulkan bahwa media massa sebagai salah satu sarana untuk mendapatkan informasi bagi

Oleh karena itu, dalam review ini pengarang akan membahas tentang potensi ikan gabus dalam mempercepat proses penyembuhan luka ditinjau dari senyawa biokimia yang

Cost analysis bertujuan untuk memperkirakan besarnya sumber daya yang dibutuhkan untuk keadaan atau penyakit tertentu dan digunakan untuk membandingkan pengaruh dari suatu

Manfaat penelitian ini adalah untuk mengetahui ciri – ciri anak autis sehingga orang tua dapat mengetahui gejala anak autis sejak dini dan dapat merancang media edukasi

menunjukkan bahwa variabel Kepribadian (X1) berpengaruh negatif tetapi signifikan terhadap Kinerja Pegawai (Y) dan variabel Orientasi Kerja (X2) tidak berpengaruh

Prosedur ini bertujuan untuk memastikan kemudahan pembelajaran yang disediakan sentiasa dalam keadaan baik untuk digunakan dan penambahbaikan kualiti sistem