1. Alokasi Secara Berdampingan (Contiguous Allocation)
Metode ini menempatkan setiap berkas pada satu himpunan blok yang berurut di dalam disk. Alamat disk menyatakan sebuah urutan linier. Dengan urutan linier ini maka head disk hanya bergerak jika mengakses dari sektor terakhir suatu silinder ke sektor pertama silinder berikutnya. Waktu pencarian (seek time) dan banyak disk seek yang dibutuhkan untuk mengakses berkas yang di alokasi secara berdampingan ini sangat minimal. Contoh dari sistem operasi yang menggunakan contiguous allocation adalah IBM VM/ CMS karena pendekatan ini menghasilkan performa yang baik.
Contiguous allocation dari suatu berkas diketahui melalui alamat dan panjang disk (dalam unit blok) dari blok pertama. Jadi, misalkan ada berkas dengan panjang n blok dan mulai dari lokasi b maka berkas tersebut menempati blok b, b+1, b+2, ..., b+n-1. Direktori untuk setiap berkas mengindikasikan alamat blok awal dan panjang area yang dialokasikan untuk berkas tersebut. Terdapat dua macam cara untuk mengakses berkas yang dialokasi dengan metode ini, yaitu:
• Sequential access, sistem berkas mengetahui alamat blok terakhir dari disk dan membaca blok berikutnya jika diperlukan.
• Direct access, untuk akses langsung ke blok i dari suatu berkas yang dimulai pada blok b, dapat langsung mengakses blok b+i.
Kesulitan dari metode alokasi secara berdampingan ini adalah menemukan ruang untuk berkas baru. Masalah pengalokasian ruang disk dengan metode ini merupakan aplikasi masalah dari dynamic storage-allocation (alokasi tempat penyimpanan secara dinamik), yaitu bagaimana memenuhi permintaan ukuran n dari daftar ruang kosong. Strategi-strategi yang umum adalah first fit dan best fit. Kedua strategi tersebut mengalami masalah fragmentasi eksternal, dimana jika berkas dialokasi dan dihapus maka ruang kosong disk terpecah menjadi kepingan-kepingan kecil. Hal ini akan menjadi masalah ketika banyak kepingan kecil tidak dapat memenuhi permintaan karena kepingan-kepingan kecil tidak cukup besar untuk menyimpan berkas, sehingga terdapat banyak ruang yang terbuang.
Masalah yang lain adalah menentukan berapa banyak ruang yang diperlukan untuk suatu berkas. Ketika berkas dibuat, jumlah dari ruang berkas harus ditentukan dan dialokasikan. Jika ruang yang dialokasikan terlalu kecil maka berkas tidak dapat diperbesar dari yang telah dialokasikan. Untuk mengatasi hal ini ada dua kemungkinan. Pertama, program pengguna dapat diakhiri dengan pesan error yang sesuai. Lalu, pengguna harus mengalokasikan tambahan ruang dan menjalankan programnya lagi, tetapi hal ini cost yang dihasilkan lebih mahal. Untuk mengatasinya, pengguna dapat melakukan estimasi yang lebih terhadap ruang yang harus dialokasikan pada suatu berkas tetapi hal ini akan membuang ruang disk. Kemungkinan yang kedua adalah mencari ruang kosong yang lebih besar, lalu menyalin isi dari berkas ke ruang yang baru dan mengkosongkan ruang yang sebelumnya. Hal ini menghabiskan waktu yang cukup banyak. Walau pun jumlah ruang yang diperlukan untuk suatu berkas dapat diketahui, pengalokasian awal akan tidak efisien. Ukuran berkas yang bertambah dalam periode yang lama harus dapat dialokasi ke ruang yang cukup untuk ukuran akhirnya, walau pun ruang tersebut tidak akan digunakan dalam waktu yang lama. Hal ini akan menyebabkan berkas dengan jumlah fragmentasi internal yang besar.
Untuk menghindari hal-hal tersebut, beberapa sistem operasi memodifikasi skema metode alokasi secara berdampingan, dimana kepingan kecil yang berurut dalam ruang disk diinisialisasi terlebih dahulu, kemudian ketika jumlah ruang disk kurang besar, kepingan kecil yang berurut lainnya, ditambahkan pada alokasi awal. Kejadian seperti ini disebut perpanjangan. Fragmentasi internal masih dapat terjadi jika perpanjangan-perpanjangan ini terlalu besar dan fragmentasi eksternal masih menjadi masalah begitu perpanjangan-perpanjangan dengan ukuran yang bervariasi dialokasikan dan didealokasi.
2. Alokasi Secara Berangkai (Linked Allocation)
Metode ini menyelesaikan semua masalah yang terdapat pada contiguous allocation. Dengan metode ini, setiap berkas merupakan linked list dari blok-blok disk, dimana blok-blok disk dapat tersebar di dalam disk. Setiap direktori berisi sebuah penunjuk (pointer) ke awal dan akhir blok sebuah berkas. Setiap blok mempunyai penunjuk ke blok berikutnya. Untuk membuat berkas baru, kita dengan mudah membuat masukan baru dalam direktori. Dengan metode ini, setiap direktori masukan mempunyai penunjuk ke awal blok disk dari berkas. Penunjuk ini diinisialisasi menjadi nil (nilai penunjuk untuk akhir dari list) untuk menandakan berkas kosong. Ukurannya juga diset menjadi 0. Penulisan suatu berkas menyebabkan ditemukannya blok yang kosong melalui sistem manajemen ruang kosong (free-space management system), dan blok baru ini ditulis dan disambungkan ke akhir berkas. Untuk membaca suatu berkas, cukup dengan membaca blok-blok dengan mengikuti pergerakan penunjuk.
Metode ini tidak mengalami fragmentasi eksternal dan kita dapat menggunakan blok kosong yang terdapat dalam daftar ruang kosong untuk memenuhi permintaan pengguna. Ukuran dari berkas tidak perlu ditentukan ketika berkas pertama kali dibuat, sehingga ukuran berkas dapat bertambah selama masih ada blok-blok kosong.
Metode ini tentunya mempunyai kerugian, yaitu metode ini hanya dapat digunakan secara efektif untuk pengaksesan berkas secara sequential (sequential-access file). Untuk mencari blok ke-i dari suatu berkas, harus dimulai dari awal berkas dan mengikuti penunjuk sampai berada di blok ke-i. Setiap akses ke penunjuk akan membaca disk dan kadang melakukan pencarian disk (disk seek). Hal ini sangat tidak efisien untuk mendukung kemampuan akses langsung (direct-access) terhadap berkas yang menggunakan metode alokasi link. Kerugian yang lain dari metode ini adalah ruang yang harus disediakan untuk penunjuk. Solusi yang umum untuk masalah ini adalah mengumpulkan blok-blok persekutuan terkecil dinamakan clusters dan mengalokasikan cluster-cluster daripada blok. Dengan solusi ini maka, penunjuk menggunakan ruang disk berkas dengan persentase yang sangat kecil. Metode ini membuat mapping logikal ke fisikal blok tetap sederhana, tetapi meningkatkan disk throughput dan memperkecil ruang yang diperlukan untuk alokasi blok dan management daftar kosong (free-list management). Akibat dari pendekatan ini adalah meningkatnya fragmentasi internal, karena lebih banyak ruang yang terbuang jika sebuah cluster sebagian penuh daripada ketika sebuah blok sebagian penuh. Alasan cluster digunakan oleh kebanyakan sistem operasi adalah kemampuannya yang dapat meningkatkan waktu akses disk untuk berbagai macam algoritma.
Masalah yang lain adalah masalah daya tahan metode ini. Karena semua berkas saling berhubungan dengan penunjuk yang tersebar di semua bagian disk, apa yang terjadi jika sebuah penunjuk rusak atau hilang. Hal ini menyebabkan berkas menyambung ke daftar ruang kosong atau ke berkas yang lain. Salah satu solusinya adalah menggunakan linked list ganda atau menyimpan nama berkas dan nomor relatif blok dalam setiap blok, tetapi solusi ini membutuhkan perhatian lebih untuk setiap berkas.
Variasi penting dari metode ini adalah penggunaan file allocation table (FAT), yang digunakan oleh sistem operasi MS-DOS dan OS/2. Bagian awal disk pada setiap partisi disingkirkan untuk menempatkan tabelnya. Tabel ini mempunyai satu masukkan untuk setiap blok disk, dan diberi indeks oleh nomor blok. Masukkan direktori mengandung nomor blok dari blok awal berkas. Masukkan tabel diberi indeks oleh nomor blok itu lalu mengandung nomor blok untuk blok berikutnya dari berkas. Rantai ini berlanjut sampai blok terakhir, yang mempunyai nilai akhir berkas yang khusus sebagai masukkan tabel. Blok yang tidak digunakan diberi nilai 0. Untuk mengalokasi blok baru untuk suatu berkas hanya dengan mencari nilai 0 pertama dalam tabel, dan mengganti nilai akhir berkas sebelumnya dengan alamat blok yang baru. Metode pengalokasian FAT ini dapat menghasilkan jumlah pencarian head disk yang signifikan, jika berkas tidak di cache. Head disk harus bergerak dari awal partisi untuk membaca FAT dan menemukan lokasi blok yang ditanyakan, lalu menemukan lokasi blok itu sendiri. Kasus buruknya, kedua pergerakan terjadi untuk setiap blok. Keuntungannya waktu random akses meningkat, akibat dari head disk dapat mencari lokasi blok apa saja dengan membaca informasi dalam FAT.
3. Alokasi Dengan Indeks (Indexed Allocation)
Metode alokasi dengan berangkai dapat menyelesaikan masalah fragmentasi eksternal dan pendeklarasian ukuran dari metode alokasi berdampingan. Bagaimana pun tanpa FAT, metode alokasi berangkai tidak mendukung keefisiensian akses langsung, karena penunjuk ke bloknya berserakan dengan bloknya didalam disk dan perlu didapatkan secara berurutan. Metode alokasi dengan indeks menyelesaikan masalah ini dengan mengumpulkan semua penunjuk menjadi dalam satu lokasi yang dinamakan blok indeks (index block). Setiap berkas mempunyai blok indeks, yang merupakan sebuah larik array dari alamat-alamat disk-blok. Direktori mempunyai alamat dari blok indeks. Ketika berkas dibuat, semua penunjuk dalam blok indeks di set menjadi nil. Ketika blok ke-i pertama kali ditulis, sebuah blok didapat dari pengatur ruang kosong free-space manager dan alamatnya diletakkan ke dalam blok indeks ke-i.
Metode ini mendukung akses secara langsung, tanpa mengalami fragmentasi eksternal karena blok kosong mana pun dalam disk dapat memenuhi permintaan ruang tambahan. Tetapi metode ini dapat menyebabkan ada ruang yang terbuang. Penunjuk yang berlebihan dari blok indeks secara umum lebih besar dari yang terjadi pada metode alokasi berangkai.
Mekanisme untuk menghadapi masalah berapa besar blok indeks yang diperlukan sebagai berikut:
• Linked scheme: untuk berkas-berkas yang besar, dilakukan dengan menyambung beberapa blok indeks menjadi satu.
• Multilevel index: sebuah varian dari representasi yang berantai adalah dengan menggunakan blok indeks level pertama menunjuk ke himpunan blok indeks level kedua, yang akhirnya menunjuk ke blok-blok berkas.
• Combined scheme: digunakan oleh sistem BSD UNIX yaitu dengan menetapkan 15 penunjuk dari blok indeks dalam blok indeksnya berkas. 12 penunjuk pertama menunjuk ke direct blocks yang menyimpan alamat-alamat blok yang berisi data dari berkas. 3 penunjuk berikutnya menunjuk ke indirect blocks. Penunjuk indirect blok yang pertama adalah alamat dari single indirect block, yang merupakan blok indeks yang berisi alamat-alamat blok yang berisi data. Lalu ada penunjuk double indirect block yang berisi alamat dari sebuah blok yang berisi alamat-alamat blok yang berisi penunjuk ke blok data yang sebenarnya.
Data yang dibaca dari atau ditulis ke tape dalam suatu group karakter disebut block.
Suatu block adalah jumlah terkecil dari data yang dapat ditransfer antara secondary memory dan primary memory pada saat akses. Sebuah block dapat terdiri dari satu atau lebih record. Sebuah block dapat merupakan physical record. Diantara 2 block terdapat ruang yang kita sebut sebagai Gap (interblock gap). Bagian dari tape yang menunjukkan data block dan interblock gap.
Panjang masing-masing gap adalah 0.6 inch. Ukuran block dapat mempengaruhi jumlah data/record yang dapat disimpan dalam tape.
Keuntungan penggunaan magnetic tape :
1. Panjang record tidak terbatas
2. Density data tinggi
3. Volume penyimpanan datanya besar dan harganya murah
4. Kecepatan transfer data tinggi
5. Sangat efisien bila semua/kebanyakan record dari sebuah tape file memerlukan pemrosesan seluruhnya (bersifat serial / sequential).
Keterbatasan penggunaan magnetic tape :
1. Akses langsung terhadap record lambat.
2. Masalah lingkungan
3. Memerlukan penafsiran terhadap mesin.
4. Proses harus sequential (bersifat SASD).
Untuk menuliskan kode VHDL secara efisien, sangatlah penting untuk mengetahui tipe-tipe data yang diperbolehkan, bagaimana, serta kapan penggunaannya. Artikel berikut dan beberapa artikel mendatang akan membahas tipe-tipe data apa saja yang terdapat dalam kode VHDL.
Tipe Data Standar
Kode VHDL mengandung sederetan tipe-tipe data yang telah ditentukan melalui aturan standar IEEE 1076 dan IEEE 1164. Untuk lebih jelas, beberapa tipe data telah tercantum ke dalam masing-masing jenis library/packages yaitu :
a. Package standard of library std. Tipe data yang masuk jenis ini adalah tipe bit, boolean, integer, dan real.
b. Package std_logic_1164 of library ieee. Tipe data yang masuk jenis ini adalah std_logic dan std_ulogic.
c. Package std_logic_arith of library ieee. Tipe data yang masuk ke dalam library ini adalah signed, unsigned serta beberapa konversi fungsi, seperti conv_integer(p), conv_unsigned(p, b), conv_signed(p, b), and conv_std_logic_vector(p, b).
Perhatikan, berikut beberapa aturan tipe data std dalam VHDL:
a. Tipe data Boolean : True, False
b. Tipe data Integer : berisi 32 bit integer (mulai dari -2.147.483.647 s/d +2.147.483.647)
b. Tipe data natural : adalah bilangan non negatif dari integer (mulai dari 0 s.d +2,147,483,647)
Tipe Data Pengguna
Selain tipe data yang telah ditentukan secara baku oleh aturan IEEE, ternyata VHDL juga memperbolehkan pengguna (user) untuk menentukan tipe data yang diinginkan. Ada 2 kategori untuk tipe data yang bisa ditentukan sendiri oleh user yaitu:
1. Tipe Integer
a. Tipe integer yang memiliki jangkauan -2.147.483.647 s/d +2.147.483.647 (mirip dengan tipe data standar)
b. Tipe natural yang memiliki jangkauan 0 s/d +2.147.483.647 (mirip dengan tipe data standar)
c. Tipe my_integer yang memiliki jangkauan -32 s/d 32 (tipe data yang ditentukan sendiri oleh user)
d. Tipe nilai_murid yang memiliki jankauan 0 s/d 100 (tipe data yang ditentukan sendiri oleh user)
2. Tipe enumerated
a. Tipe bit yaitu ‘0’ dan ‘1’
b. Tipe my_logic yaitu ‘0’, ‘1’, dan ‘Z’ (ditentukan sendiri oleh user)
c. Tipe keadaan yaitu idle, stop, backward, forward (ditentukan sendiri oleh user)
d. Tipe warna misalnya merah, hijau, putih (ditentukan sendiri oleh user)
Artikel ini merupakan kelanjutan dari artikel sebelumnya, “Mengenal VHDL”. Untuk kali ini, tulisan ini akan membahas sekelumit tentang satu kesatuan atau yang lebih dikenal dengan entity. Entity ini merupakan salah satu contoh bentuk satu kesatuan dan terpisah dengan bagian yang lain. Untuk selengkapnya, beberapa uraian berikut akan menjelaskan tentang entity serta hal-hal yang terkait di dalamnya.
Definisi Entity
Entity memberikan arti tentang bagaimana sebuah bagian rancangan dideskripsikan di VHDL dalam hubungannya dengan model VHDL lain dan juga memberikan nama untuk model tersebut. Di dalam entity juga diperbolehkan untuk mendefinisikan beberapa parameter yang mengambil model menggunakan hierarki. Kerangka dasar untuk sebuah entity digambarkan sebagai berikut :
entity
….
entity
Misalkan sebuah entity diberi nama “test”, maka kerangka entity tersebut akan menjadi :
entity test is
end entity test;
atau
entity test is
end test;
Ports
Sebuah cara atau metode untuk menghubungkan entity secara bersama adalah menggunakan PORTS. Hal ini didefinisikan bahwa entity menggunakan metode sebagai berikut:
port (
…list of port declarations…
);
Deklrasi port ini mendefinisikan jenis dari koneksi dan arah yang sesuai. Misalnya, deklarasi port untuk sebuah input bit adalah 1, maka digambarkan sebagai berikut :
in1 : in bit;
Dan jika model tersebut memiliki 2 input (in1 dan in2) dan satu output (out1), maka deklarasi ports dapat digambarkan berikut:
port (
in1, in2 : in bit;
out1 : out bit
);
Dengan menngunakan ports maka titik koneksi diantara entities akan berlangsung dengan efektif dalam hal proses koneksi entities satu sama lain. Selain itu, dengan menggunakan ports akan menjadikan sinyal yang ada menjadi efektif serta cocok digunakan dalam model VHDL.
Generics
Jika sebuah contoh memiliki sebuah parameter, maka contoh tersebut dapat didefinisikan menggunakan generics. Deklarasi umum dari generics ditunjukan berikut:
generic (
…list of generic declarations…
);
Pada beberapa kasus dari generics, deklarasinya mirip dari sebuah constant dengan bentuk yang ditunjukkan sebagai berikut:
param1 : integer := 4;
Misalnya saja sebuah model yang memiliki 2 generics (gain(integer) dan time_delay(time)), keduanya dapat didefinisikan dalam sebuah entity sebagai berikut:
generic (
gain : integer := 4;
time_delay : time = 10 ns
);
Constants
Selain hal-hal yang disebutkan di atas, contoh spesifik constant dapat dideklarasikan menggunakan metode sebelumnya sebagai berikut:
constant : rpullup : real := 1000.0;
Contoh Entity
Untuk menggambarkan keseluruhan sebuah entity, ports dan generics dapat digunakan secara bersama. Maka inilah sebuah contoh bentuk entity yang lengkap, mengacu dengan beberapa contoh sebelumnya :
entity test is
port (
in1, in2 : in bit;
out1 : out bit
);
generic (
gain : integer := 4;
time_delay : time := 10 ns
);
constant : rpullup : real := 1000.0;
end entity test;
Tulisan ini akan mengulas sekelumit tentang kode yang sering digunakan di dalam FPGA. Kode tersebut adalah VHDL (Very high speed integrated Hardwere Description Language). Tulisan ini dan beberapa tulisan mendatang akan membahas konsep penting dalam VHDL serta aturan penulisan (syntax) kode tersebut. Konsep serta syntax banyak diperlukan untuk mengerti bagaimana rancangan VHDL sebagai bagian dari pemrograman FPGA. Dalam kebanyakan kasus, keputusan memilih dan menggunakan kode VHDL daripada kode Verilog atau SystemC, sangat tergantung pada pilihan perancang itu sendiri dan lebih kepada ketersediaan software pendukung serta kebutuhan perusahaan.
Lebih dari satu dekade, terjadi perdebatan panjang yang tek berkesudahan diantara komunitas pengguna VHDL dengan Verilog. Mereka berdebat mengenai kode mana yang terbaik untuk digunakan dan kode apa yang lebih lengkap dalam hal aturan penulisannya. Memang diantara kedua kode tersebut memiliki perbedaan yang cukup signifikan. Namun secara filosofi konsep, perbedaan dasar dari VHDL dengan Verilog adalah mengenai konteks dari kedua bahasa itu sendiri. Verilog berasal dari tradisi “bottom-up” yang telah sering digunakan dalam industri IC dalam hal rancangan dasar IC. Sedangkan kode VHDL dikembangkan lebih kepada persepektif “top-down”. Tentu saja, banyak perbedaan umum dan luas dalam konteks saat ini. Namun, secara jelas dan nyata, perbedaannya dapat terlihat pada syntax dasar dan metode dari kedua kode tersebut.
Selanjutnya, tanpa menurunkan kualitas tulisan dengan membahas perbedaan diantara VHDL dan Verilog, satu hal penting tentang keunggulan VHDL adalah kemampuannya untuk menggunakan gabungan level dari model yang memiliki arsitektur yang berbeda seperti ditunjukkan sebagai berikut :
Hal tersebut memang bukanlah keunikan atau ciri khas VHDL. Namun, pada kenyataannya kode Verilog juga memiliki konsep sama walaupun hanya terdapat dalam sebuah “module”. Meskipun demikian, keungulan itu secara eksplisit didefinisikan dalam VHDL dan secara praktis digunakan bersama oleh rancangan multi-level dalam VHDL. Pembagian sebuah model ke dalam beberapa bagian juga merupakan keuggulan lain dari VHDL. Misalnya, bagian interface (dalam VHDL dikenal sebagai “entity’) dan bagian kelakuan atau behaviour (dalam VHDL dikenal sebagai “architecture”). Bagian-bagian tersebut adalah pendekatan praktis yang luar biasa untuk bentuk model yang memiliki multiple behaviour dalam sebuah interface. Selain itu bentuk model tersebut memungkinkan terjadi pertukaran dan implementasi multiple secara terus menerus. Hal inilah salah satu pembeda VHDL dengan Verilog.
Selanjutnya, tulisan mendatang akan menggambarkan beberapa kunci penting dari VHDL, yang akan dimulai dari definisi dari sebuah model dasar menggunakan entities dan architecture, membahas pentingnya tipe-tipe variabel, review terhadap metode bersama encapsulation, sekuensial, dan kelakuan (behaviour). Bagian terakhir akan memberikan pengenalan dasar terhadap jenis-jenis data yang dibutuhkan dalam VHDL.
Didalam pilihan membawa kisah dan cerita tersendiri, ketika hati telah memilih terdapat tanggung jawab yang harus siap kita hadapi...
Berat pasti, kadang jatuh, dan tak temukan tempat kembali, semuakan menjadi kisah dan cerita kita nanti...
Dalam pilihan tak mengenal kata menyesal karena kamus hidup mengajarkan bila jalan yang kita tempuh adalah salah kan tetap terlihat salah, maka siapkan hatimu untukk pilihanmu...
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
struct datasiswa
{
char nama[25];
char npm[15];
float nilai;
int tgllhr;
}siswa;
main()
{
cout<<"\t= Program Untuk Menginputkan Data Mahasiswa ="<<endl;
cout<<"\nMasukkan Nama : ";
gets(siswa.nama);
cout<<"Masukan NPM : ";
cin>>siswa.npm;
cout<<"Masukkan Nilai : ";
cin>>siswa.nilai;
cout<<"Masukkan Tgl Lahir : ";
cin>>siswa.tgllhr;
cout<<"\nTekan Sembarang tombol untuk mencetak...!!!!";
getch();
clrscr();
cout<<"Nama : "<<siswa.nama<<endl;
cout<<"NPM : "<<siswa.npm<<endl;
cout<<"Nilai : "<<siswa.nilai<<endl;
cout<<"Tanghal lahir : "<<siswa.tgllhr<<endl;
getch();
1. Isalpha merupakan fungsi yang akan melakukan analisis apabila karakter adalah alphabetic.Fungsi Isalpha() akan mengembalikan nilai selain nol bila ch merupakan huruf alphabetic.Bila tidak, maka nol akan dikembalikan.Simbol yang menunjukkan huruf alphabet dapat beraneka ragam dari satu bahasa ke bahasa lainnya.Untuk bahasa Inggris, symbol ini merupakan huruf besar dan huruf kecil dari A sampai Z.
Fungsi-fungsi yang berhubungan dengan Isalpha adalah isalnum(), iscntrl(), isdidgit(), isgraph(), isprint(), ispunct, dan issapce().
2. Isalnum merupakan fungsi yang melakukan analisis apabila karakter adalah alphanumeric.Fungsi Isalnum akan mengembalikan nilai selain nol bila argumennya huruf alphabet atau digit.Bila karakter bukan alphanumeric maka 0 akan dikembalikan.
Fungsi-fungsi yang berhubungan dengan fungsi Isalnum adalah isalpha(), isdigit(), isgraph(), isprint(), ispunct, isspace().
3. Isdigit akan melakukan analisis apabila karakter adalah sebuah decimal digit.Fungsi isdigit adalah untuk mengembalikan nilai selain nol bila ch merupakan sebuah digit , yaitu nol sampai 9.Bila sebaliknya maka 0 akan diberikan.
Fungsi-fungsi yang berhubungan dengan Isdigit() adalah isalnum(), isalpha(), iscntrl, isgraph(), isprint(), ispunct(), dan isspace().
4. Iscntrl merupakan fungsi yang akan melakukan analisis apabila karakter adalah sebuah control karakter.Fungsi iscntrl akan mengembalikan nilai selain nol apabila berada antara 0 dan 0x1F atau apabila ch sama dengan 0x7F (DEL);namun apabila sebaliknya maka 0 akan dikembalikan.
Fungsi-fungsi yang berhubungan dengan Iscntrl adalah isalnum(), isalpha(), isdigit(), isgraph(), isprint(), ispunct(), dan isspace().
5. Isgraph merupakan fungsi yang akan melakukan analisis apabila karakter memiliki representasi grafik.Fungsi isgraph akan mengembalikan nilai selain nol bila ch merupakan semua karakter selain space.Bila karakter merupakan sebuah space (spasi) maka nol akan dikembalikan.Meskipun karakter ini merupakan implementasi dependen, namun mereka biasanya berada pada range 0x21 sampai 0x7E.
Fungsi-fungsi yang berhubungan dengan isgraph() adalah isanum(), isalpha(), iscntrl(), isdigit(), isprint(), ispunct(), dan isspace().
6. Islower merupakan fungsi yang akan melakukan analisis apabila karakter adalah sebuah lowercase letter.Fungsi islower akan mengembalikan nilai selain nol apabila ch merupakan huruf kecil,namun apabila ch merupakan huruf besar maka nol akan dikembalikan.
Fungsi yang berhubungan dengan islower adalah isupper()
Contoh :
7. Isupper merupakan fungsi yang akan melakukan analisis apabila karakter adalah sebuah uppercase alphabetic.Fungsi isupper akan mengembalikan nilai selain nol apabila ch merupakan huruf besar,namun apabila ch merupakan huruf kecil maka nol akan dikembalikan.
Fungsi yang berhubungan dengan isupper adalah islower().
8. Ispunct Memeriksa apakah parameter c adalah karakter tanda baca. Untuk tujuan fungsi ini, sebuah karakter tanda baca adalah setiap karakter grafis (seperti dalam isgraph) yang tidak alfanumerik (seperti dalam isalnum).
9. Toupper berguna untuk mengkonversi parameter untuk merubah menjadi huruf besar nya jika variabel c adalah huruf kecil dan memiliki setara huruf besar. Jika tidak ada konversi tersebut adalah mungkin, nilai yang dikembalikan adalah c tidak berubah.
Dalam lokal default C, huruf kecil adalah setiap dari: abcdefghijklmnopqrstu vwxyz, yang menerjemahkan masing-masing untuk: ABCDEFGHIJKLMNOPQRSTU VWXY Z.
10. Isprint Memeriksa apakah parameter c adalah karakter yang dapat dicetak. Sebuah karakter yang dapat dicetak adalah setiap karakter yang bukan merupakan karakter kontrol.
Untuk set karakter standar ASCII, karakter kontrol adalah kode-kode ASCII 0x00 (Nul) dan 0x1F (AS), ditambah 0x7f (DEL). Selain daripada itu,merupakan karakter yang dapat dicetak semua namun, implementasi compiler spesifik dalam platform tertentu dapat menentukan karakter kontrol tambahan di set karakter (di atas 0x7f).
isgraph mengembalikan nilai true untuk kasus-kasus yang sama seperti isprint kecuali untuk karakter spasi (seperti ''), yang kembali dengan kodisi benar ketika diperiksa dengan isprint tapi salah saat diperiksa dengan isgraph.
11. Isspace merupakan fungsi yang akan melakukan analisis apabila karakter adalah sebuah spase/tab.Fungsi isspace akan mengembalikan nilai selain nol apabila ch bukan merupakan spasi,namun apabila ch merupakan karakter spasi maka nol akan dikembalikan.
12. Tolower berguna untuk mengkonversi parameter untuk merubah menjadi huruf kecil nya jika variabel c adalah huruf besar dan memiliki setara huruf besar. Jika tidak ada konversi tersebut adalah mungkin, nilai yang dikembalikan adalah c tidak berubah.
Dalam lokal default C, huruf kecil adalah setiap dari: abcdefghijklmnopqrstu vwxyz, yang menerjemahkan masing-masing untuk: ABCDEFGHIJKLMNOPQRSTU VWXY Z.
13. Isgraph Memeriksa apakah parameter c adalah karakter dengan representasi grafis. Karakter dengan representasi grafis semua karakter daripada dapat dicetak (sebagaimana ditentukan oleh isprint) kecuali untuk karakter spasi (seperti ''), yang tidak dianggap karakter isgraph.