Daimus Programming

programming guide & tutorial; lastest programming news; free e-learning materials

Array Multidimensi

Array multidimensi adalah sekumpulan data dengan tipe yang sama yang memiliki beberapa subskrip. Array multidimensi dalam bahasa pemrograman mirip dengan konsep matriks dalam matematika.

Syntax Pendeklarasian Array

Syntax
identifier : array[1..3,1..3] of tipe_data;

Keterangan :

  • identifier : nama variabel/type dari array
  • [1..3,1..3] : panjang array
  • tipe_data : tipe data dari array

Contoh Array Multidimensi

Source Code
program matriks;
    var 
        m : array[1..3,1..3] of integer;
        i,j : integer;
    begin
        writeln('Memasukan Nilai Mariks');
        for i:=1 to 3 do
        begin
            for j:=1 to 3 do
            begin
                write('Baris ke-',i,'. Kolom ke-',j,' : ');
                readln(m[i,j]);
            end;
        end;
        writeln();
        writeln('Menampilkan Nilai Matriks');
        for i:=1 to 3 do
        begin
            for j:=1 to 3 do
                write(m[i,j],'  ');
            writeln();
        end;
        readln();
    end.
Memasukan Nilai Matriks
Baris ke-1. Kolom ke-1 : 1
Baris ke-1. Kolom ke-2 : 2
Baris ke-1. Kolom ke-3 : 3
Baris ke-2. Kolom ke-1 : 4
Baris ke-2. Kolom ke-2 : 5
Baris ke-2. Kolom ke-3 : 6
Baris ke-3. Kolom ke-1 : 7
Baris ke-3. Kolom ke-2 : 8
Baris ke-3. Kolom ke-3 : 9

Menampilkan Nilai Matriks
1 2 3
4 5 6
7 8 9
root@USER-PC:~$ |

Pengertian Array / Larik

Array atau Larik adalah sekumpulan nilai dengan tipe data yang sama dan dinyatakan dalam satu identifier yang sama. Sehingga memungkinkan banyak data disimpan dalam satu variabel tanpa harus membuat satu variabel untuk satu nilai. Konsep array pada bahasa pemrograman terinspirasi oleh vektor dan matriks pada matematika. Pengaksesan data pada array tidak sama dengan variabel biasa, data-data pada array ditandai dengan indeks. Indeks ini yang menentukan posisi suatu data pada array.

Array Satu Dimensi

Array satu dimensi adalah array yang hanya memiliki satu indeks. Atau dengan kata lain array jenis ini hanya memiliki satu baris dan n buah kolom. Misalkan array x adalah variabel yang menyimpan 10 data nilai ujian kelas 12, maka pernyataan tersebut dapat diilustrasikan sebagai berikut

x = 87, 90, 78, 98, 70, 83, 85, 80, 91, 75

Syntax Pendeklarasian Array

Pendeklarasian array pada bahasa pemrograman pascal adalah sebagai berikut

Syntax
var 
    larik = array[x .. y] of integer;

Keterangan :

  • larik : nama array, dapat diubahsuai sesuai keinginan.
  • array : mendeklarasikan bahwa variabel yang dibuat adalah array.
  • [x..y] : merupakan panjang array, dimana x adalah indeks pertama dan y adalah indeks terakhir. sehingga panjang array larik adalah x s/d y
  • integer : adalah tipe data yang digunakan dalam array larik.

Contoh Penggunaan Array

Source Code
program programLarik;
var 
    larik : array[1 .. 10] of integer;
    i : integer;
    begin
        writeln('Memasukan Nilai Array 1 sd 10');
        for i := 1 to 10 do 
        begin
            write('Array Indeks ke-',i,' : ');
             readln(larik[i]);
         end;
         writeln('Menampilkan Nilai Array 1 sd 10');
         for i := 1 to 10 do 
        writeln('Array Indeks ke-',i,' : ',larik[i]);
        readln();
    end.
Memasukan Nilai Array 1 - 10 :
Array Indeks ke-1 : 12
Array Indeks ke-2 : 34
Array Indeks ke-3 : 67
Array Indeks ke-4 : 90
Array Indeks ke-5 : 11
Array Indeks ke-6 : 44
Array Indeks ke-7 : 89
Array Indeks ke-8 : 39
Array Indeks ke-9 : 89
Array Indeks ke-10 : 32
Menampilkan Nilai Array 1 - 10 :
Array Indeks ke-1 : 12
Array Indeks ke-2 : 34
Array Indeks ke-3 : 67
Array Indeks ke-4 : 90
Array Indeks ke-5 : 11
Array Indeks ke-6 : 44
Array Indeks ke-7 : 89
Array Indeks ke-8 : 39
Array Indeks ke-9 : 89
Array Indeks ke-10 : 32
root@USER-PC:~$ |

Fungsi

Pengertian Fungsi

Fungsi merupakan subprogram yang dapat melakukan tugas tertentu. Fungsi dalam bahasa permograman pascal hampir sama dengan prosedur, hanya saja fungsi memiliki nilai balik.

Syntax Fungsi

Syntax
function nama_fungsi(parameter): return_type;
const 
    // Konstanta Lokal
var
    // Variabel Lokal
begin
    // Statement
end;

Contoh Fungsi

Source Code
program contohFungsi;
    function penjumlahan(a, b: integer): integer;
    begin
        penjumlahan := a + b;
    end;
    begin
        writeln(penjumlahan(46,25));
        readln();
    end.
71
root@USER-PC:~$ |

Cangkupan Variabel

Cangkupann variabel (Variable Scope) adalah istilah yang merujuk apakah suatu variabel dapat digunakan atau tidak. Cangupan variabel dibagi menjadi variabel global dan variabel lokal. Variabel global dideklarasikan pada struktur inti, sehingga dapat dipakai dan diubah nilainya oleh main program maupun subprogram. Sedangkan variabel lokal adalah variabel yang dideklarasikan dalam subprogram, sehingga hanya subprogram tersebut yang dapat memakai variabel tersebut.

Ilustrasi cangkupan variabel.
Ilustrasi cangkupan variabel. VIA : WIKI.FREEPASCAL.ORG

Ilustrasi tersebut dapat dijabarkan sebagai berikut.

  • Seluruh komponen program dapat menggunakan variabel global A, B, C
  • Variabel A dalam prosedur alpha menggantikan variabel global A
  • Fungsi beta1 dan beta2 dapat menggunakan variabel VCR, Betamax dan cassette
  • Beta1 tidak dapat menggunakan variabel FailureToo, dan beta2 tidak dapat menggunakan variabel Failure
  • Hanya prosedur alpha yang dapat menggunakan variabel F dan G
  • Prosedur beta dapat memanggil prosedur alpha dan beta
  • Fungsi beta1 dapat memanggil fungsi beta2 dan beta1

Pengertian Prosedur

Prosedur dalam bahasa pemrograman pascal berperan sebagai subprogram. Keberadaan prosedur sebagai subprogram dapat membantu menghndari redundant (penulisan kode secara berulang-ulang). Dengan adanya prosedur, kita tidak perlu mengetik ulang kode untuk suatu perintah yang sama.

Syntax Prosedur dalam Pascal

Syntax
procedure nama_prosedur;
const  
    // Konstanta Lokal
var    
    // Konstanta Lokal
begin
    // Statement
end;

Untuk memanggil prosedur, kita hanya perlu menyebut nama prosedur (dan diikuti parameter jika diminta).

Syntax
nama_prosedur;

Parameter

Parameter memungkinkan untuk bertukar nilai antara prosedur dan main program. Parameter dapat dibedakan menjadi dua macam.

Passed by Value

Parameter passed by value merupakan penerimaan searah. Maksudnya si pengirim dan penerima merupakan variabel yang berdiri sendiri, sehingga ketika salah satu mengalami perubahan nilai, maka hal tersebut tidak akan mempengaruhi variabel lain.

Source Code
program passedbyref;
procedure myprocedure(a:integer);
begin
    a := 46;
    writeln('Set nilai A = 46');
end;
var x:integer=99;
begin
    writeln('Variabel X = ',x);
    myprocedure(x);
    writeln('Variabel X = ',x);
    readln();
end.
Variabel X = 99
Set nilai A = 46
Variabel X = 99
root@USER-PC:~$ |
Passed by Reference

Parameter passed by reference merupakan kebalikan dari parameter passed by value. Jika salah satu variabel mengalami perubahan nilai, maka variabel lain yang terkait juga akan mengalami perubahan nilai yang sama.

Source Code
program passedbyref;
procedure myprocedure(var a:integer);
begin
    a := 46;
    writeln('Set nilai A = 46');
end;
var x:integer=99;
begin
    writeln('Variabel X = ',x);
    myprocedure(x);
    writeln('Variabel X = ',x);
    readln();
end.
Variabel X = 99
Set nilai A = 46
Variabel X = 46
root@USER-PC:~$ |

Perulangan/Looping

Komputer memiliki kelebihan tidak akan merasa lelah atau bosan karena mengerjakan pekerjaan yang sama secara berulang-ulang. Perulangan adalah instruksi yang diberikan kepada komputer untuk melakukan suatu task secara berulang-ulang berdasarkan parameter tertentu atau sampai suatu kondisi terpenuhi.

Macam-Macam Bentuk Perulangan

For Do

For Do adalah bentuk perulangan yang menggunakan counter sebagai indikator dijalankan atau dihentikannya sebuah perulangan. Perulangan bentuk ini ada yang menaik, artinya counter dimulai dari angka tertentu dan akan bertambah ketika suatu task selesai dijalankan. Ada juga yang menurun, maksudnya setiap suatu perulangan selesai counter akan berkurang satu.

Syntax
(* Perulangan Menaik *)
for i:=m to n  do
    statement;
    
(* Perulangan Menurun *)
for i:=m downto n  do
    statement;

Contoh Soal

Buatlah perulangan untuk mencetak teks "Lorem ipsum dolor sit amet." sebanyak sepuluh kali.

Source Code
program lipsum;
    var
        i:integer;
    begin
        for i:=1 to 10 do
            writeln(i,' : Lorem ipsum dolor sit amet.');
        readln();
    end.
1 : Lorem ipsum dolor sit amet.
2 : Lorem ipsum dolor sit amet.
3 : Lorem ipsum dolor sit amet.
4 : Lorem ipsum dolor sit amet.
5 : Lorem ipsum dolor sit amet.
6 : Lorem ipsum dolor sit amet.
7 : Lorem ipsum dolor sit amet.
8 : Lorem ipsum dolor sit amet.
9 : Lorem ipsum dolor sit amet.
10 : Lorem ipsum dolor sit amet.
root@USER-PC:~$ |

While Do

Perulangan bentuk while do akan menjalankan pernyataan selama suatu kondisi bernilai benar. Pengecekan kondisi akan dilakukan pada awal perulangan.

Syntax
while (kondisi) do
begin
    statement;
end;

Contoh Soal

Buatlah perulangan yang menampilkan hasil penjumlahan 1 - 10.

Source Code
program whileLoop;
    var 
        i,j:integer;
    begin
        i := 1;
        while (i <= 10) do
        begin
            write(i,' + ',j,' = ');
            j := j + i;
            write(j);
            writeln();
            inc(i);
        end;
        readln();
    end.
1 + 0 = 1
2 + 1 = 3
3 + 3 = 6
4 + 6 = 10
5 + 10 = 15
6 + 15 = 21
7 + 21 = 28
8 + 28 = 36
9 + 36 = 45
10 + 45 = 55
root@USER-PC:~$ |

Repeat Until

Repeat until adalah bentuk perulangan yang mirip dengan while loop. Hanya saja bentuk ini melakukan pengecekan kondisi pada akhir perulangan, sehingga bentuk ini setidaknya akan melakukan satu kali perulangan.

Syntax
repeat 
    statement;
until (kondisi);

Contoh Soal

Buatlah perulangan yang menampilkan bilangan kelipatan dua yang kurang dari 50.

Source Code
program repeatUntil;
    var 
        i:integer;
    begin
        i := 2;
        repeat 
            writeln(i);
            i := i * 2; 
        until (i >= 50);
        readln();
    end.
2
4
8
16
32
root@USER-PC:~$ |

Pengertian Percabangan

Percabangan dikenal juga sebagai perkondisian atau decision making. Percabangan dilakukan untuk menentukan alur program berdasarkan kondisi/syarat tertentu.

Bentuk-Bentuk Perkondisian

Pengkondisian dalam pascal dapat dilakukan dengan beberapa cara, pada dasarnya perkondisian dibagi menjadi dua bentuk, yakni if dan switch. Bentuk if masih bisa dikembangkan lagi menjadi beberapa bentuk, berikut macam-macam bentuk perkondisian.

If Then

Perkondisian menggunakan if dilakukan dengan menyeleksi suatu kondisi, jika kondisi tersebut bernilai benar, maka statement akan dijalankan. Namun jika kondisi bernilai salah, maka statement akan diabaikan dan program akan menjalankan code selanjutnya.

Syntax
if (kondisi) then
    statement;

Contoh Soal

Buatlah suatu perkondisian dengan ketentuan jika total belanja lebih dari sama dengan 100000 maka akan mendapat cashback 25000.

Source Code
program programCashback;
    var totalHarga:longint;
        cashback :longint= 0;
    begin
        write('Masukan Total Harga : ');
        readln(totalHarga);
        if (totalHarga >= 100000) then
            cashback := 25000;
        writeln();
        writeln('Total Belanja : ', totalHarga);
        writeln('Cash Back : ', cashback);
        readln();
    end.
Masukan Total Harga : 120000

Total Belanja : 120000
Cash Back : 25000
root@USER-PC:~$ |

If Then Else

Bentuk perkondisian if else bekerja dengan cara menyeleksi suatu kondisi, jika kondisi benar maka akan dijalankan statement pada blok if, namun jika kondisi tersebut salah, maka program akan menjalankan pernyataan pada blok else.

Syntax
if (kondisi) then
    statement
else 
    statement;

Contoh Soal

Buatlah perkondisian dengan ketentuan jika nilai mahasiswa lebih dari 65, maka dinyatakan LULUS, namun jika kurang dari sama dengan 65 mahasiswa dinyatakan GAGAL.

Source Code
program luluskahAku;
    var
        nilai:integer;
        status:string;
    begin
        write('Masukan Nilai : ');
        readln(nilai);
        if (nilai > 65) then
            status := 'LULUS'
        else
            status := 'GAGAL';
        writeln('Anda Dinyatakan ',status,'! Dengan Nilai = ', nilai);
        readln();
    end.
Masukan Nilai : 46
Anda Dinyatakan GAGAL! Dengan Nilai = 46
root@USER-PC:~$ |

If Then Else If Then

Perkondisian ini tak ubahnya seperti perkondisian diatas, jika kondisi bernilai benar, maka akan dijalankan statement pada blok if, namun jika salah, program akan melakukan perkondisian lagi. Dalam perkondisan kedua akan diseleksi suatu kondisi, jika bernilai benar, maka pernyataan pada blok if akan dieksekusi begitu seterusnya.

Syntax
if (kondisi) then
    statement1
else if (kondisi) then
    statement2
else if (kondisi) then
    statement3
else
    statement4;

Contoh Soal

Suatu daerah mengalami krisis makanan, pemerintah setempat bermaksud memberi bantuan makanan sesuai dengan usia dengan ketentuan:

  • Usia 0 - 5 tahun mendapat jatah susu formula dan biskuit bayi.
  • Usia 6 - 14 tahun mendapat susu formula, nasi, sayur dan daging sapi.
  • Usia 15 - 50 tahun mendapat susu kedelai, nasi, sayur dan daging ayam.
  • Usia > 50 tahun mendapat susu kalsium, nasi, sayur dan daging sapi.

Source Code
program bantuanMakanan;
    var
        usia:byte;
        bantuan:string;
    begin
        write('Masukan Usia : ');
        readln(usia);
        if (usia <= 5) then
            bantuan := 'BISKUIT BAYI + SUSU FORMULA'
        else if (usia <= 14) then
            bantuan := 'NASI, SAYUR, DAGING SAPI + SUSU FORMULA'
        else if (usia <= 50) then
            bantuan := 'NASI, SAYUR, DAGING AYAM + SUSU KEDELAI'
        else 
            bantuan := 'NASI, SAYUR, DAGING SAPI + SUSU KALSIUM';
        writeln();
        writeln('Usia Anda = ', usia);
        writeln('Anda Berhak Mendpaat Bantuan = ', bantuan);
        readln();
    end.
Masukan Usia : 20

Usia Anda = 20
Anda Berhak Mendapat Bantuan = NASI, SAYUR, DAGING AYAM + SUSU KEDELAI
root@USER-PC:~$ |

Jenis perkondisian ini ditujukan untuk banyak kondisi, jika kondisi sudah terlampau banyak, dapat menggunakan alternatif lain, yakni dengan menggunakan bentuk case.

Case

Bentuk percabangan ini kegunaannya sama dengan bentuk if then else if then, yakni digunakan untuk menyeleksi kejadian dengan banyak kondisi. Namun jika dibandingkan, bentuk case memiliki syntax yang lebih sederhana.

Syntax
case (ekspresi) of
    kondisi1 : statement1;
    kondisi2 : statement2;
    kondisin : statementn;
end;

Contoh Soal

Buatlah soal untuk mengkonversi nilai dalam bentuk angka menjadi bentuk abjad dengan ketentuan

  • 0 - 40 = D
  • 41 - 60 = C
  • 61 - 80 = B
  • 81 - 100 = A
Source Code
program nilaikuApa;
    var 
        nilai:integer;
        nilaiCh:char;
    begin
        write('Masukan Nilai Anda (0-100) : ');
        readln(nilai);
        case (nilai) of
            0..40 : nilaiCh := 'D';
            41..60 : nilaiCh := 'C';
            61..80 : nilaiCh := 'B';
            81..100 : nilaiCh := 'A';
        end;
        writeln('Nilai Anda Adalah = ', nilaiCh);
        readln();
    end.
Masukan Nilai Anda (0-100) : 90
Nilai Anda Adalah = A
root@USER-PC:~$ |

Perkondisian Bersarang

Perkondisian bersarang (nested decison making) dapat dibayangkan sebagai perkondisian yang terletak didalam perkondisian lain. Perkondisan pada bagian dalam dapat berbentuk if then ataupun if then else.

Syntax
if (kondisi) then
    begin
        if (kondisi2) then
            statement;
    end;
    

Contoh Soal

Buatlah perkondisian bersarang untuk menentukan apakah suatu bilangan termasuk bilangan POSITIF dan atau bilangan GENAP, atau bukan keduanya.

Source Code
program seleksiBil;
    var 
        bil:integer;
    begin
        write('Masukan Bilangan : ');
        readln(bil);
        if (bil > 0) then
            begin
                writeln('Bilangan POSITIF');
                if (bil mod 2 = 0) then
                    writeln('Bilangan GENAP');
            end
        else
                writeln('Bukan bilangan POSITIF maupun GENAP');
       readln();        
    end.
Masukan Bilangan : 12
Bilangan POSITIF
Bilangan GENAP
root@USER-PC:~$ |

Dalam posting sebelumnya telah kita pelajari tentang variabel, input output dan operator pada bahasa pemrograman pascal. Hari ini kita akan belajar menerapkannya pada program penghitung luas bangun datar. Bangun datar yang akan kita hitung luasnya meliputi persegi, persegi panjang, segitiga dan lingkaran.

Program Penghitung Luas Persegi

Luas persegi dapat didapatkan dengan rumus sisi2. Untuk mencarinya kita dimudahkan dengan adanya fungsi kuadrat yang sudah disediakan pascal. Langkah-langkah pembuatannya adalah sebagai berikut.

  1. Mendefinisikan nama program.
  2. Mendeklarasikan variabel sisi dan luas dengan tipe data real.
  3. Memasukan code readln untuk meminta input nilai variabel sisi
  4. Menghitung luas dengan rumus sisi2.
  5. Menampilkan hasilnya pada layar.
Source Code
program luasPersegi;
    var
        sisi,luas:real;
    begin
        write('Masukan Panjang Sisi : ');
        readln(sisi);
        luas := sqr(sisi);
        writeln('Luas Persegi Adalah : ',luas:0:2);
        readln();
    end.
Program Penghitung Luas Persegi dengan Pascal.
Output Program : Penghitung Luas Persegi dengan Pascal.

Program Penghitung Luas Persegi Panjang

Menghitung luas bangun datar persegi panjang prinsipnya adalah sama dengan luas persegi. Hanya saja rumus yang kita terapkan menyesuaikan dengan bangun datar tersebut. Langkah-langkah membuat program menghitung luas persegi panjang adalah sebagai berikut.

  1. Mendefinisikan nama program.
  2. Mendeklarasikan variabel panjang, lebar dan luas dengan tipe data real.
  3. Memasukan code readln untuk meminta input nilai variabel panjang dan lebar
  4. Menghitung luas dengan rumus panjang * lebar
  5. Menampilkan hasilnya pada layar.
Source Code
program luasPersegiPanjang;
    var
        panjang,lebar,luas:real;
    begin
        write('Masukan Panjang : ');
        readln(panjang);
        write('Masukan Lebar : ');
        readln(lebar);
        luas := panjang * lebar;
        writeln('Luas Persegi Panjang Adalah : ',luas:0:2);
        readln();
    end.
Program Penghitung Luas Persegi Panjang dengan Pascal.
Output Program : Penghitung Luas Persegi Panjang dengan Pascal.

Program Penghitung Luas Segitiga

Langkah-langkah menghitung luas segitiga menggunakan pascal adalah sebagai berikut.

  1. Mendefinisikan nama program.
  2. Mendeklarasikan variabel alas, tinggi dan luas dengan tipe data real.
  3. Memasukan code readln untuk meminta input nilai variabel alas dan tinggi
  4. Menghitung luas dengan rumus alas * tinggi / 2
  5. Menampilkan hasilnya pada layar.
Source Code
program luasSegitiga;
    var
        alas,tinggi,luas:real;
    begin
        write('Masukan Alas : ');
        readln(alas);
        write('Masukan Tinggi : ');
        readln(tinggi);
        luas := alas * tinggi / 2;
        writeln('Luas Segitiga Adalah : ',luas:0:2);
        readln();
    end.
Program Penghitung Luas Segitiga dengan Pascal.
Output Program : Penghitung Luas Segitiga dengan Pascal.

Program Penghitung Luas Lingkaran.

Sama halnya dengan program penghitung bangun datar diatas, pada program penghitung luas lingkaran, kita hanya perlu merubah rumus dan variabel yang diperlukan. Langkah-langkah pembuatannya adalah sebagai berikut.

  1. Mendefinisikan nama program.
  2. Mendeklarasikan nilai konstanta pi.
  3. Mendeklarasikan variabel jari2 dan luas dengan tipe data real.
  4. Memasukan code readln untuk meminta input nilai variabel jari2.
  5. Menghitung luas dengan rumus pi * sqr(jari2).
  6. Menampilkan hasilnya pada layar.
Source Code
program luasLingkaran;
    const
        pi = 3.14159265358979323846;
    var
        jari2,luas:real;
    begin
        write('Masukan Jari-Jari : ');
        readln(jari2);
        luas := pi * sqr(jari2);
        writeln('Luas Lingkaran Adalah : ',luas:0:2);
        readln();
    end.
Program Penghitung Luas Lingkaran dengan Pascal.
Output Program : Penghitung Luas Lingkaran dengan Pascal.

Bahasa pemrograman pascal menyediakan fungsi-fungsi standar aritmatika, misalnya fungsi pembulatan, fungsi pangkat dan lain sebagainya. Sehingga dengan adanya fungsi ini akan lebih memudahkan karena tidak perlu dibuat secara manual. Fungsi-fungsi standar tersebut meliputi

Fungsi Deskripsi Operand Hasil Operand Contoh
abs Mencari absolut Real, Integer Real, Integer abs(67) = 67
arctan Mencari invers tangent Real, Integer Real arctan(90) = 1.56
cos Mencari cosines Real, Integer Real cos(90) = -0.45
exp Exponen Real, Integer Real exp(4) = 54.6
ln Natural logarithm Real, Integer Real ln(12) = 2.48
round Membulatkan ke bilangan terdekat Real Integer round(46.12) = 46
sin Mendapatkan sines Real, Integer Real sin(180) = -0.80
sqr Mencari pangkat 2 Real, Integer Real, Integer sqr(5) = 25
sqrt Mencari akar 2 Real, Integer Real, Integer sqrt(25) = 5
trunc Membulatkan ke bilangan dibawahnya Real, Integer Integer trunc(25.97) = 25

Selain fungsi diatas, bahasa pemrograman pascal juga menyediakan fungsi tambahan untuk tipe data integer dan char. Fungsi-fungsi tersebut ialah

Fungsi Deskripsi Operand Hasil Operand Contoh
chr Mengkonversi kode ASCII menjadi karakter Integer Char chr(90) = Z
ord Mengkonversi karakter menjadi kode ASCII Integer, Char Integer ord('A') = 65
pred Predecessor Integer, Char Integer, Char ord('X') = W
succ Successor Integer, Char Integer, Char succ('9') = 8