Pages

Subscribe:

Friday, May 02, 2008

Bagaimana SQL Injections Menembus Server?

Penulis pernah di tanya oleh seorang Admin server sebuah site trading online di Jakarta, dia agak sedikit heran ketika mengetahui servernya jebol padahal dia hanya membuka port 80 dan sudah terpasang IDS (Intrusion Detection System) seperti Snort dan Snare di servernya dan anehnya ini juga tidak terdeteksi sama sekali oleh logger webserver (biasanya webserver memiliki file log untuk setiap link yang di request client). Karena kebetulan penulis sendiri yang menjebol situs tersebut maka penulis sampaikan bahwa sekuriti server tidak hanya berkaitan dengan masalah konfigurasi server, blocking port dan monitoring/detection intruder saja. Ada permasalahan yang lebih berbahaya dari sekedar setingan hardware yaitu masalah software atau aplikasi yang di gunakan baik di server maupun di halaman web. Aplikasi pengaman apapun (termasuk penggunaan enkripsi dan chipper key) tidak menjamin bahwa server itu akan aman. Di sini memang di tuntut pengetahuan dan informasi akan bugs yang berkembang saat itu.

Setiap menit, jam dan hari semakin banyak bermunculan bugs-bugs terbaru dengan model dan tipe yang berbeda-beda. Kadang hal ini tidak di sadari oleh kita bahwa bugs tersebut ternyata juga ada di server yang kita pakai. Kesibukan dan konsentrasi yang terpecah belah kadang memang membuat kita lengah dan tidak menyadari kemungkinan-kemungkinan jebolnya server yang kita setting. Seperti contoh kasus di atas juga merupakan hal yang tidak di ketahui secara sadar oleh si admin sendiri bahwa ternyata seorang hacker dengan hanya memanfaatkan aplikasi web yang di gunakan dalam sebuah website pun mampu menjebol server tersebut dan merebut akses shell command di dalam server target tanpa mengalami kesulitan. Dan kadang dengan kemampuan yang expert di programming seorang hacker pun mampu menjebol firewall yang terpasang di server target, hal ini telah di buktikan sendiri oleh penulis dengan hanya bermodalkan bugs dan script khusus, penulis bisa mendapatkan hosting-hosting berfirewall bagus baik dari operating sistem Linux, BDS (OpenBSD dan FreeBSD), Debian dan sebagainya.

Kembali ke topik di atas, kebetulan untuk server yang penulis jebol adalah jenis NT server yang memanfaatkan connectivity database seperti ODBC dan SQL yang tidak menggunakan input validation script untuk mengontrol command database yang di masukan (di injeksikan) ke dalam server. Berbicara tentang injection tentu pembaca pernah mendengar juga tentang SQL Injections yang berita-nya sangat ramai di bicarakan di milis dan site-site sekuriti. Bukan basa-basi bugs ini hampir mengenai seluruh server-server berbasiskan NT terutama untuk server NT yang memanfaatkan koneksi ke database untuk web page-nya.

Oke untuk mempermudah pemahaman para pembaca, di sini Penulis akan memberikan contoh kasus sederhana. Dulu jaman pertama kalinya bugs VP-ASP (Software Management untuk pembayaran online), Anda mungkin mengetahui tentang penggunaan karakter single quote (‘) dengan penambahan OR (logical operator) dan tanda sama dengan (=) di antara single quote tersebut.

Login: ‘ OR ‘’=’

Password: ‘ OR ‘’=’

Sedikit menganalisa, misal ketika input box untuk login dan password di isi seperti dalam contoh di atas apa yang akan terjadi jika script yang memproses input tersebut seperti di bawah ini.

var sql = "select * from users where username = '" + username + "' and password = '" + password + "'";

Untuk beberapa site yang tidak menerapkan sistem validasi input yang secure akan mengakibatkan seorang user bisa masuk baik sebagai admin atau user biasa tanpa membutuhkan login dan password yang sebenarnya. Mengapa? Karena ketika input itu di proses di sistem yang terjadi operasi tersebut di anggap valid.

var sql = "select * from users where username = '’ OR ‘’=’' and password = '’ OR ‘’=’';

Nah tamatlah sudah riwayatmu kini hehe…hehe..

Oke mungkin contoh di atas masih di anggap sangat sederhana, sekarang kalau misalnya saya melakukan action yang lebih ekstrim dari itu?

Username: '; drop table users--

Password:

Apa yang akan terjadi? Saya yakin Anda juga tahu bahwa command tersebut akan menghapus seluruh data di tabel users, coba kita analisa lagi.

var sql = "select * from users where username = '’; drop table users—

Nah apa yang akan Anda perbuat jika yang terjadi adalah seperti command di atas ini? Di sini karakter titik koma (;) menutup command pertama dan kemudian command drop menjadi command berikutnya yang akan di eksekusi oleh sistem dan selanjutnya karakter double minus (--) menutup command-command berikutnya untuk tidak di eksekusi. Yahh klo sudah begini tamatlah sudah data Anda. Paling banter Anda akan di pecat dari perusahaan dan di maki-maki bos Anda karena tidak becus bekerja.

SQL Injections tidak hanya bereaksi di dalam input box saja, dalam sebuah URL pun bisa di aplikasikan. Ini tergantung kemahiran Anda dalam melihat celah dari ketidak-secure-an site tersebut. Tentu di perlukan juga pengetahuan tentang command SQL dan beberapa eksperimen kecil untuk meriching kode di antara variabel-variabel yang ada di site tersebut.

Jadi di mana letak kesalahannya?

Dalam hal ini Microsoft sangat merespon tragedi SQL Injection, bahkan mereka sudah membuat patch-nya. Tapi sekali lagi ini tidak hanya masalah patching saja tapi juga di tuntut kehati-hatian Anda dalam merancang isi web itu sendiri. Solusinya yaa buatlah beberapa fungsi validasi input yang mampu mematikan command-command abnormal yang bisa mempengaruhi atau membuat server bereaksi.

Hanya seperti itu saja? He..hehe… pertanyaan yang sangat menohok tapi nggak papa lah.

Jika Anda mendapatkan bugs ini pada NT server maka beruntunglah Anda karena akses di luar database pun sanggup di lakukan. Seperti apa? Seperti command shell, registry, dan messaging product. Yaa sedikit tentang pengetahuan tentang sistem menjadi mutlak untuk perlu di ketahui agar Anda bisa mendapatkan akses granted administator tentu dengan dukungan kreatifitas dan mungkin jika perlu dukungan kemampuan programming yang Anda kuasai. Coba lihat beberapa command sistem yang bisa Anda manfaatkan untuk mendapatkan akses lebih banyak di server target (NT).

xp_cmdshell, xp_startmail, xp_sendmail, sp_makewebtask

xp_regaddmultistring, xp_regdeletekey, xp_regdeletevalue, xp_regenumkeys, xp_regenumvalues, xp_regread

xp_regremovemultistring, xp_regwrite

xp_availablemedia, xp_dirtree, xp_enumdsn, xp_loginconfig

xp_makecab, xp_ntsec_enumdomains

xp_terminate_process

Anda tertarik? Jika iya, saya sangat menyarankan Anda untuk mencari bahan-bahannya di internet. Tidak ada guru yang lebih baik selain pengalaman dan pengalaman tanpa usaha juga hal yang tidak mungkin. Okeh, Keep the spirits to be the best of the best and remember which nobody perfect, but you should try to be perfect.

Administrasi System Dalam Linux

Apa itu Administrasi Sistem?

Sebuah sistem komputer tidak akan dapat bekerja dengan baik jika salah satu dari ketiga komponen ini dihilangkan: hardware, software, brainware. Hardware adalah bagian komputer yang ada secara fisik. Software adalah kode-kode instruksi yang dijalankan pada hardware yang bersangkutan. Sedangkan brainware adalah manusia yang bertugas untuk mengoperasikan sistem komputer. Administrasi sistem adalah aspek yang berkaitan erat pada faktor brainware tersebut.Seorang sysadmin bertugas untuk menjaga agar sebuah sistem dapat tetap berjalan sesuai dengan fungsinya. Jika ada masalah pada sistem tersebut, dia berkewajiban untuk memperbaikinya. Setiap sistem komputer membutuhkan sysadmin, mulai dari komputer pribadi sampai ke mainframe berukuran besar. Semuanya tetap membutuhkan sysadmin. Jika anda adalah satu-satunya pengguna di komputer anda, anda adalah sysadmin bagi komputer anda sendiri. Anda semua adalah seorang sysadmin mungkin tanpa kesadaran anda sendiri.

Linux memiliki beragam fasilitas untuk mengotomatisasi seluruh kegiatannya. Hal ini tentunya sangat memudahkan seorang administrator. Administrator tidak perlu melakukan pekerjaan yang berulang-ulang secara manual, pekerjaan yang demikian dapat diserahkan kepada sistem Linux. Dengan perintah yang tepat, sistem akan dapat melakukan tugasnya tanpa perlu diperintah ulang.

Konsep User dan Permission

Linux adalah sistem operasi multiuser. Artinya, sebuah sistem Linux dapat dipakai oleh lebih dari satu orang sekaligus. Seorang pengguna Linux memiliki sebuah direktori pribadi (home directory) untuk menyimpan file-filenya. Umumnya ia tidak diperkenankan untuk memodifikasi isi direktori selain home directory-nya. Pada kebanyakan sistem Linux, home directory user abc biasanya diletakkan di /home/abc. Pada Linux, setiap file dimiliki oleh seorang user dan sebuah group. Hak akses baca, tulis, dan execute untuk user dan group juga dapat dibatasi. Hal ini akan mempermudah administrasi sistem karena user tidak akan dapat mengubah konfigurasi sistem seenaknya, berbeda dengan sistem operasi yang tidak didesain sebagai sistem operasi multiuser seperti halnya Windows.Pada Linux (dan sistem UNIX lainnya) ada sebuah account yang memiliki hak mutlak pada sistem tersebut, account tersebut secara tradisional disebut 'root'. Account ini bisa melakukan apa saja pada Linux tanpa mempedulikan hak akses. Account ini umumnya hanya digunakan untuk keperluan administrasi, dan tidak digunakan untuk keperluan sehari-hari. Mengapa account root tidak baik digunakan untuk keperluan sehari-hari? Program pada sebuah sistem operasi (Linux ataupun bukan Linux) mungkin memiliki bug atau kesalahan pemrograman.

Dengan menjalankan program sebagai root, bug tersebut memiliki kemungkinan untuk dapat merusak seluruh sistem. Sedangkan jika program tersebut tidak dijalankan sebagai root, maka kerusakan hanya akan terjadi pada file milik user yang bersangkutan. Selain itu manusia adalah makhluk yang suka melakukan kesalahan, dengan account root, kesalahan tersebut akan dapat merusak sistem, sedangkan jika dilakukan oleh user biasa, kesalahan tersebut hanya akan berakibat fatal pada file yang dimiliki oleh user yang bersangkutan. Itulah sebabnya mengapa virus software hampir tidak pernah menjangkiti Linux, karena para penggunanya hanya menggunakan account 'root' untuk hal-hal yang benar-benar memerlukan 'root'. Sebaliknya, pada sistem operasi single user seperti DOS, Windows atau MacOS, setiap user adalah 'root', dapat anda bayangkan kekacauan yang terjadi pada masa itu jika sistem operasi tersebut digunakan oleh beberapa orang.

Struktur Direktori dari Linux

Sebuah filesystem pada Linux dibagi menjadi banyak direktori. Hal ini akan memudahkan sysadmin karena file yang anda cari akan berada di dalam direktori sesuai dengan fungsi dan kegunaannya.Berikut ini adalah beberapa lokasi direktori yang penting untuk diketahui oleh seorang sysadmin:

/bin: berisi program yang esensial, yang berguna jika partisi /usr tidak terhubungkan

/boot: berisi file-file yang penting untuk booting Linux, seperti halnya kernel Linux

/usr: berisi file-file program dan data yang diperlukan untuk menjalankan program yang

bersangkutan, file di dalam hirarki ini dapat dibuat menjadi read-only

/var: berisi file-file yang dinamik seperti email, file log dan sebagainya.

/etc: berisi file konfigurasi dari program

/mnt: berisi mount point dari partisi lainnya di sistem komputer anda, pada Linux Mandrake

misalnya, /mnt/DOS_hda1 adalah isi drive C: pada sistem operasi DOS/Windows

/dev: berisi device, seperti /dev/ttyS0 adalah port serial pada komputer anda, atau /dev/fd0

adalah floppy disk.

/home: berisi home direktori dari user pada sistem anda

/sbin: berisi program-program yang esensial untuk sysadmin

/root: adalah home directory dari user 'root', tidak disimpan di bawah direktori /home

karena kemungkinan direktori tersebut belum di-mount.

Memonitor Keadaan Sistem

Seorang administrator sistem harus mengetahui apa saja yang sedang terjadi pada sistem anda. Hal-hal yang umum untuk diketahui adalah:Proses apa saja yang sedang berjalan pada saat tersebut, dan juga detilnya seperti pemilik proses, pemakaian CPU, pemakaian memori dan sebagainya. Untuk mendapatkan informasi ini, seorang sysadmin dapat menggunakan perintah ps, pstree, gtop atau ktop. Siapa saja yang sedang login pada saat itu. Informasi ini dapat didapat dari perintah who. Siapa saja yang memasuki sistem beberapa waktu terakhir. Dapat dilihat dari perintah last Melihat keadaan ruang harddisk. Dapat dilihat dari output perintah df. Melihat kapan user tertentu terakhir login. Dapat dilihat dari perintah finger atau last.

Memonitor File-file Log

Linux memiliki mekanisme untuk mencatat kejadian-kejadian penting. Kejadian-kejadian tersebut dicatat ke file-file log tertentu. Pada kebanyakan distribusi Linux, biasanya file log disimpan di dalam direktori /var/log atau /var/adm. Fasilitas pencatatan tidak menulis kejadian pada sebuah file, tapi ke beberapa file sesuai dengan kategorinya. Sebagai contoh pada distribusi RedHat atau Mandrake terdapat file-file di bawah ini:

/var/log/cron, mencatat semua kegiatan cron (utilitas untuk menjalankan program secara periodik)

/var/log/httpd/*, mencatat akses ke web server

/var/log/maillog, mencatat segala hal yang berhubungan dengan email

/var/log/messages, mencatat segala hal yang tidak termasuk pada file log lainnya.

/var/log/news/*, mencatat segala hal yang berhubungan dengan news server

/var/log/samba/*, mencatat hal-hal yang berhubungan dengan file server samba

/var/log/secure, mencatat hal-hal yang berhubungan dengan keamanan sistem

/var/log/spooler, mencatat hal-hal yang berhubungan dengan pencetakan

/var/log/xferlog, mencatat transfer file melalui FTP.

File-file yang penulis sebutkan di atas adalah file teks biasa, dan dapat dilihat dengan menggunakan utilitas teks biasa, misalnya gunakan perintah tail -f /var/log/messages untuk melihat perkembangan pada sistem anda.

Memperbaiki Keamanan Sistem

Mungkin tugas yang paling berat dari seorang sysadmin, terutama yang bertanggung jawab untuk sistem yang terhubungkan pada Internet adalah masalah keamanan sistem. Untuk ini seorang sysadmin dituntut untuk memiliki kesadaran lebih tinggi dalam masalah keamanan. Sistem operasi Linux berkembang dengan kecepatan yang sangat tinggi, berbeda dengan sistem operasi lain yang closed source. Terkadang, hanya beberapa menit setelah masalah keamanan ditemukan, sudah dibuatkan patch-nya. Supaya seorang sysadmin mendapat informasi secepat mungkin, ia harus secara periodik mencek tatus keamanan dari vendor Linux yang dia gunakan.

Berikut adalah halaman security dari beberapa vendor Linux:

RedHat Linux, http://www.redhat.com/support/updates.html

Linux Mandrake, ttp://www.linux-mandrake.com/en/security.php3

Caldera OpenLinux, http://support.calderasystems.com/

Debian GNU/Linux, http://www.debian.org/security/

SuSE Linux, http://www.suse.de/security/index.html

LinuxPPC, http://www.linuxppc.com/security/

YellowDog, http://www.yellowdoglinux.com/resources/errata.shtml

Utilitas Interaktif untuk Administrasi Sistem Beberapa distribusi Linux menyertakan utilitas untuk mempermudah konfigurasi sistem. Utilitas ini sangat mempermudah bagi anda yang cuma ingin memakai Linux, dan tidak punya banyak waktu untuk melakukan konfigurasi. Berikut adalah daftar utilitas tersebut untuk beberapa distribusi terkemuka.

RedHat Linux: linuxconf

Linux Mandrake: linuxconf atau drakxconf

SuSE Linux: yast

Caldera OpenLinux: coas atau lisa

Utilitas tersebut berguna bagi anda yang baru memakai Linux atau yang tidak punya banyak waktu. Namun bagi anda yang ingin melakukan kustomisasi terhadap sistem, mungkin akan lebih berguna jika anda langsung mengedit file konfigurasi dari program yang anda kustomisasi.Sebuah sistem komputer, tetap membutuhkan perhatian dari manusia supaya dapat berjalan dengan baik. Mungkin sistem tersebut tetap dapat berjalan tanpa harus mendapatkan perhatian penuh dari manusia, namun jika terjadi masalah pada sistem tersebut, peranan manusia tetap diperlukan. Manusia yang bertugas untuk menangani hal ini disebut administrator sistem atau system administrator, disingkat menjadi sysadmin atau admin saja. Dalam artikel ini akan dibahas mengenai administrator sistem dan tugas-tugas apa saja yang harus dilakukannya.

*****Akhirnya********

aku pernah merasakan dibohongi
aku pernah merasakan disakiti
dicaci,dihina dan tak dihargai
bahkan mungkin lebih dari itu
sakit rasanya hati aku
hingga aku berfikir
semua tak adil padaku
hingga aku benar2 benci pada semuanya
tak ada semangat untuk hidup
bahkan mungkin saat itu juga aku ingin pergi
namun akhirnya aku sadar
tuhan masih menyayangiku
aku mengerti,tuhan sedang mengujiku
akhirnya,kumencoba tetap tegar
kutau aku dijalan yang benar
dan kuyakin tuhan bersamaku
dan akhirnya waktulah yang menjawab
dan sekarang kubisa bernafas lega
ternyata kebenaran akan slalu menang!!!!

___Saat Cinta Berakhir___+

Tak sanggup ku tuk menangis
Menahan kepergianmu dalam sepi
Walau takkan bertemu lagi
Kuharap kau masih mengingatku
Tanpa sepatah kata kau melangkah jauh
Mungkin bila sudah saatnya
Aku akan kembali disisimu
Kembali menuai cinta kita yang tertunda
Mimpiku seakan tak sempurna
Apa cinta kita harus berakhir?
Sedih, hampa, semua jadi satu
Merobek hati....
Saat kepergianmu
Saat cinta kita harus berakhir
Semoga cinta kita abadi
Selamanya....

waktu cinta telah pergi

hidup terus berputar
dan tak mungkin aku memintanya berhenti
walaupun itu hanya sejenak
kadang kita tak bisa menyalakan waktu
mengapa kau pergi dan meninggalkan aku
mungkin saja waktu bisa berhenti
mungkin tak akan ku sia2kan diriku bersamamu
kepergianmu yang tak mungkin kembali
kau tinggalkan aku sendiri yang menjaga cinta kita
jika memang hidup harus berputar
biarlah berputar dan meninggalkan kita
sebab kita disini tak pernah bisa selamanya abadi.

♥♥♥ " TaNgiSAn CiNta" ♥♥♥

Ku tau semua ini akan terjadi
Bodohnya masih ku pertanyakan
Cinta ini pada mu
Pagiku tak seindah dulu
Pagiku menangis tersedu
Andai tak ada pagi
Mungkin ku tak seperti ini
Ingin rasanya ku berlari
Mengarungi jejak yang tak pasti
Karna kau yang tak akan pernah kumiliki
Cinta…dengarlah tangisan ini
Memanggilmu saat kau tertidur
Menemani saat kau terjaga
Salahkah aku mencintai cinta
Yg tak mungkin terbalas
biarkan aku menangis
Karma jarum jam kejam mengiris

^^Haruskan,,,,,,,,,,,,,,,,,,,,,,???^^

Detik berganti menit ...
menit berganti jam...
jam berganti hari...
hari berganti minggu..
minggu berganti bulan.

Itulah waktu demi waktu
yang telah kujalani
tanpa sosokmu disisiku
Begitu berat hari-hari yang kulalui
untuk dapat menghapus bayangmu
dari kehidupanku.........
Entah mengapa setiap aku mendengar
suara jarum**jam yang berdetik
seakan-akan selalu mengingatkanku
pada dirimu.........
Setiap desiran angin yagn berhembus
seolah-olah aku merasakan helaan napasmu
dan setiap aku menatap mentari pagi,aku seakan-akan
menyaksikan seulas senyummu tersungging untukku
Bagaimana aku dapat melupakan dirimu?
bagaimana aku dapat menghapus bayang**mu?
jika....................
hari-hari yang kulalui selalu
mengingatkanku pada sosokmu..........
Atau.......................
Haruskah aku menghentikan jarum** jam yang berdetik??
haruskah aku menghambat desiran angin yagn berhembus??
dan....haruskah aku menenggelamkan mentari yang bersinar??
Agar.......................
Aku dapat melupakan semua
yang ada......pada.....dirimu......

MaaF

tidak kusangka
tidak kuduga
tidak kupercaya
kata" itu keluar dari bibir mu lagi
setelah kian lama berlalu
kini kamu mengucapkannya lagi
aku tak bisa banyak kata
hannya terdiam melihat
tapi kamu terus memaksa
memaksa diri ku untuk berkata
atas semua perkataan
yang kamu lontarkan kepada ku
sesungguhnya
berat bibir ini untuk berkata
tapi tidak ada jalan lain
selain harus menjawab nya
maaf kan aku
aku masih belum mencintain dirimu
sebab aku tak mau kamu nantinya sakit hati
karena hatiku masih mencintain orang lain
walau cintaku tak mungkin terwujud
tapi hatiku masih memikirkan nya
masih merindukan nya
dan masih menyimpan dengan utuh wajah nya
jadi maaf kan lah aku
bukan makasud ku untuk menyakitimu
kuharap kamu bisa mengerti
dengan apa yang ku katakana

ANDAI WAKTU DAPAT KEMBALI

Begitu sesak ku jelajah hari-hari
Malam inginku bawa berlari
Dan siang inginku ku usung pergi
Tuhan… Bawa aku beranjak
Aku tak mau disini
Tuhan lepaskan aku
Aku ingin pergi dari semua ini
Aku menyadari sepenuhnya
Aku tak pantas di sini
Mereguk danau kesemuan
Aku tak pantas memeluki bahagia ini
Aku tak punya hati lagi tuk mencinta
Akar jiwaku tlah rapuh
Sungguh tak berartinya hidupku
Hanya berlumur salah dan khilafku
Andai saja waktu bisa kembali
Tak’ kan mungkin ku temui semua ini
Mungkin saat ini
Aku t’lah tersenyum lepas menatap bahagiaku..

Belajar C dari tingkat dasar !

BAB I :

Bentuk dasar :

-------------

void main(){

//disini badan program diproses

}

#include

int main()

{

printf("Oh_gayo lagi Nembak Pake sniffer\n");

return 0;

}

Hasil keluarannya tampak dimonitor anda:

----------------------------------------

oh_gayo lagi Nembak Pake sniffer

Perhatikan :

#include <--- #include untuk membuka file header/library file stdio.h yang dibutuhkan oleh fungsi printf (kita harus sertakan)

int main() { <--- ini adalah fungsi utama pada saat program dijalankan

<--- pada saat kita mengcompile suatu program selalu fungsi ini yang dijalankan

printf(" test \n"); <--- fungsinya untuk mencetak text kelayar , \n artinya turun baris

return 1; <--- nilai yang dikembalikan oleh fungsi utama bernilai true

}

note

tanda { = pembuka

} = penutup

1 : true

0 : false

Apakah anda bisa membayangkan hasil dari source code ini..

--------------------------------------------------------

int main()

{

printf("Mr.Gayo\n");

printf("----------\n");

printf("Renjana Administrator\n");

printf("Komunity Crot Crew");

return 0;

}

Bermain dengan tipe data :

------------------------

Apakah tipe data itu ?

Tipe data adalah jenis tipe dari suatu variable

contoh : abc ->> merupakan string

a ->> merupakan character

1,2,3,... ->> merupakan bilangan integer

1.001 ->> merupakan bilangan desimal (berkoma)

dll

nah didalam bahasa C terdapat tipe-tipe data yang menampung sesuai dengan data anda. Ada pun tipe data tersebut adalah sebagai berikut :

Type ³ Length ³ Range

------------------------------------------------------------------

unsigned char ³ 8 bits ³ 0 to 255

char ³ 8 bits ³ -128 to 127

enum ³ 16 bits ³ -32,768 to 32,767

unsigned int ³ 16 bits ³ 0 to 65,535

short int ³ 16 bits ³ -32,768 to 32,767

int ³ 16 bits ³ -32,768 to 32,767

unsigned long ³ 32 bits ³ 0 to 4,294,967,295

long ³ 32 bits ³ -2,147,483,648 to 2,147,483,647

float ³ 32 bits ³ 3.4 * (10**-38) to 3.4 * (10**+38)

double ³ 64 bits ³ 1.7 * (10**-308) to 1.7 * (10**+308)

long double ³ 80 bits ³ 3.4 * (10**-4932) to 1.1 * (10**+4932)

nah kira-kira jenis tipe data apa yang kita gunakan , itu tergantung dari kebutuhan saat kita membuat program!

contoh pemakaian sebagai berikut :

--------------------------------

Bermain dengan tipe data

#include

int main()

{

int angka; // int = tipe data , angka = merupakan variabel penampung

angka=1;

printf("nilai dari angka : %d\n", angka);

angka=5;

printf("nilai dari angka : %d\n", angka);

angka=-8;

printf("nilai dari angka : %d\n", angka);

return 0;

}

contoh lain :

------------

#include

int main()

{

int a = 2;

float x = 17.1, y = 8.95, z;

char c;

c = (char)a + (char)x;

c = (char)(a + (int)x);

c = (char)(a + x);

c = a + x;

z = (float)((int)x * (int)y);

z = (float)((int)(x * y));

z = x * y;

return 0;

}

note : tanda // artinya komentar yang anda sisipkan jika hanya untuk satu baris jika lebih anda bisa mengunakan

seperti ini :

/*

komentarnya disini

*/

Apa yang terdapat dalam tanda itu tidak akan dieksekusi (dijalankan/running) oke!, gimana sekarang tidak terlalu sulit bukan? :p

Program mengenal tipe data

--------------------------

#include

int main()

{

int a; /* simple integer type */

long int b; /* long integer type */

short int c; /* short integer type */

unsigned int d; /* unsigned integer type */

char e; /* character type */

float f; /* floating point type */

double g; /* double precision floating point */

a = 1023;

b = 2222;

c = 123;

d = 1234;

e = 'X';

f = 3.14159;

g = 3.1415926535898;

printf("a = %d\n", a); /* decimal output */

printf("a = %o\n", a); /* octal output */

printf("a = %x\n", a); /* hexadecimal output */

printf("b = %ld\n", b); /* decimal long output */

printf("c = %d\n", c); /* decimal short output */

printf("d = %u\n", d); /* unsigned output */

printf("e = %c\n", e); /* character output */

printf("f = %f\n", f); /* floating output */

printf("g = %f\n", g); /* double float output */

printf("\n");

printf("a = %d\n", a); /* simple int output */

printf("a = %7d\n", a); /* use a field width of 7 */

printf("a = %-7d\n", a); /* left justify in field of 7 */

c = 5;

d = 8;

printf("a = %*d\n", c, a); /* use a field width of 5 */

printf("a = %*d\n", d, a); /* use a field width of 8 */

printf("\n");

printf("f = %f\n", f); /* simple float output */

printf("f = %12f\n", f); /* use field width of 12 */

printf("f = %12.3f\n", f); /* use 3 decimal places */

printf("f = %12.5f\n", f); /* use 5 decimal places */

printf("f = %-12.5f\n", f); /* left justify in field */

return 0;

}

PERHATIKAN TABLE berikut ini

# Category ³ Operator ³ What it is (or does)

---------------------------------------------------------------------------

1. Highest ³ () ³ Function call

³ [] ³ Array subscript

³ -> ³ C++ indirect component selector

³ :: ³ C++ scope access/resolution

³ . ³ C++ direct component selector

---------------------------------------------------------------------------

2. Unary ³ ! ³ Logical negation (NOT)

³ ~ ³ Bitwise (1's) complement

³ + ³ Unary plus

³ - ³ Unary minus

³ ++ ³ Preincrement or postincrement

³ -- ³ Predecrement or postdecrement

³ & ³ Address

³ * ³ Indirection

³ sizeof ³ (returns size of operand, in bytes)

³ new ³ (dynamically allocates C++ storage)

³ delete ³ (dynamically deallocates C++ storage)

---------------------------------------------------------------------------

3. Multipli- ³ * ³ Multiply

cative ³ / ³ Divide

³ % ³ Remainder (modulus)

---------------------------------------------------------------------------

4. Member ³ .* ³ C++ dereference

access ³ ->* ³ C++ dereference

---------------------------------------------------------------------------

5. Additive ³ + ³ Binary plus

³ - ³ Binary minus

---------------------------------------------------------------------------

6. Shift ³ << ³ Shift left

³ >> ³ Shift right

---------------------------------------------------------------------------

7. Relational ³ < ³ Less than

³ <= ³ Less than or equal to

³ > ³ Greater than

³ >= ³ Greater than or equal to

---------------------------------------------------------------------------

8. Equality ³ == ³ Equal to

³ != ³ Not equal to

---------------------------------------------------------------------------

9. ³ & ³ Bitwise AND

---------------------------------------------------------------------------

10. ³ ^ ³ Bitwise XOR

---------------------------------------------------------------------------

11. ³ | ³ Bitwise OR

---------------------------------------------------------------------------

12. ³ && ³ Logical AND

---------------------------------------------------------------------------

13. ³ || ³ Logical OR

---------------------------------------------------------------------------

14. Conditional³ ?: ³ (a ? x : y means "if a then x, else y")

---------------------------------------------------------------------------

15. Assignment ³ = ³ Simple assignment

³ *= ³ Assign product

³ /= ³ Assign quotient

³ %= ³ Assign remainder (modulus)

³ += ³ Assign sum

³ -= ³ Assign difference

³ &= ³ Assign bitwise AND

³ ^= ³ Assign bitwise XOR

³ |= ³ Assign bitwise OR

³ <<= ³ Assign left shift

³ >>= ³ Assign right shift

---------------------------------------------------------------------------

16. Comma ³ , ³ Evaluate

---------------------------------------------------------------------------

contoh programnya

-----------------

#include

int main()

{

char mask;

char number[6];

char and, or, xor, inv, index;

number[0] = 0X00;

number[1] = 0X11;

number[2] = 0X22;

number[3] = 0X44;

number[4] = 0X88;

number[5] = 0XFF;

printf(" nmbr mask and or xor inv\n");

mask = 0X0F;

for (index = 0 ; index <= 5 ; index++)

{

and = mask & number[index];

or = mask | number[index];

xor = mask ^ number[index];

inv = ~number[index];

printf("%5x %5x %5x %5x %5x %5x\n",

number[index], mask, and, or, xor, inv);

}

printf("\n");

mask = 0X22;

for (index = 0 ; index <= 5 ; index++)

{

and = mask & number[index];

or = mask | number[index];

xor = mask ^ number[index];

inv = ~number[index];

printf("%5x %5x %5x %5x %5x %5x\n",

number[index], mask, and, or, xor, inv);

}

return 0;

}

BAB II : Perulangan

Terkadang sangat melelahkan jika kita mencetak sebuah kata "hello world " sebanyak 1000 kali dengan adanya perulangan semua jadi simple! macam-macam perulangan yang terdapat pada Bahaca c :

1.for

2.while

3.do-while

contoh pemakaian sebagai berikut :

--------------------------------

1. for (awal ;kondisi ;akhir)

{

}

Perhatikan soure code dibawah ini

contoh :

#include

int main()

{

int angka;

for(angka = 0 ; angka < angka =" angka">

printf("gayo ganteng lo\n");

return 0;

}

/* Outputnya : mencetak gayo ganteng sebanyak seribu kali (perhatikan kondisinya)

Jika bernilai True (benar) maka statement didalam { } akan dijalankan

Jika bernilai False kondisi didalam perulangan tidak akan dijalankan

*/

2.while

contoh pemakaian sebagai berikut :

--------------------------------

awal =0;

while (kondisi) {

awal=awal+1; /// variabel awal akan bertambah sesuai dengan dengan kondisi didalam = while(kondisi)

}

contoh :

#include

int main()

{

int index;

index = 0;

while (index <>

{

printf("mr.Udien\n");

index = index + 1;

}

return 0;

}

3.do-while

contoh pemakaian sebagai berikut :

--------------------------------

awal =0;

do{

awal=awal+1

}while(kondisi)

contoh :

#include

int main()

{

int index;

index = 0;

do

{

printf("oh_gayo\n");

index = index + 1;

} while (index <>

return 0;

}

note :

awal=awal+1; /// dapat ditulis dengan awal+=1; (ini sama saja artinya)

nilai awal selalu ditambah dengan angka satu, contoh :

int main()

{

int x = 0, y = 2, z = 1025;

float a = 0.0, b = 3.14159, c = -37.234;

x = x + 1;

x++;

++x;

z = y++;

z = ++y;

y = y - 1;

y--;

--y;

y = 3;

z = y--;

z = --y;

a = a + 12;

a += 12;

a *= 3.2;

a -= b;

a /= 10.0;

a = (b >= 3.0 ? 2.0 : 10.5 );

if (b >= 3.0)

a = 2.0;

else

a = 10.5;

c = (a > b ? a : b);

c = (a > b ? b : a);

return 0;

}

Gimana dengan konstanta suatu nilai :

kita dapat menggunakan #DEFINE

Contoh :

#define START 0

#define ENDING 9

#define MAX(A,B) ((A)>(B)?(A):(B))

#define MIN(A,B) ((A)>(B)?(B):(A))

int main()

{

int index, mn, mx;

int count = 5;

for (index = START ; index <= ENDING ; index++)

{

mx = MAX(index, count);

mn = MIN(index, count);

printf("Max is %d and min is %d\n", mx, mn);

}

return 0;

}

BAB III : Kondisi

Kondisi sangat perlu sebagai pembatas atau pengecekan suatu nilai, ada 2 bentuk penulisan kondisi :

1. if

2. switch -case

1. if(kondisi) {

}

if(kondisi ){

}else{

if(kondisi){

}else{

}

}

contoh pemakaian sebagai berikut :

--------------------------------

a = 4;

if (a <>

if (a <>

//akan mengeksekusi didalam sini

}

if (a <>

//akan mengeksekusi didalam sini Jika kondisinya berlaku benar

}else{ //selain itu

//akan mengeksekusi didalam sini jika Kondisinya berlaku salah

}

1. switch-case

contoh pemakaian sebagai berikut :

--------------------------------

awal = 4;

swicth(awal){

case '1' : printf("ini angka 1"); break;

case '2' : printf("ini angka 2"); break;

case '3' : printf("ini angka 3"); break;

case '4' : printf("ini angka 4"); break;

default : printf("angka tersebut tidak ada");

}

perhatikan source diatas

pertama kali awal=4

sewaktu masuk kedalam kondisi swith(kondisi)

apakah 4 termasuk didalam switch

jika terdapat maka baris : printf("ini angka 4"); //akan dijalankan

jika tidak terdapat maka akan lompat ke default : printf("angka tersebut tidak ada");

coba sekarang anda rubah awal =1;

apa yang terjadi ? // pikirkan sendiri :p

Contoh lain:

operand =ADD;

switch (operand) {

case MULTIPLY: x *= y; break;

case DIVIDE: x /= y; break;

case ADD: x += y; break;

case SUBTRACT: x -= y; break;

case INCREMENT2: x++;

case INCREMENT1: x++; break;

case EXPONENT:

case ROOT:

case MOD: printf("Not done\n"); break;

default: printf("Bug!\n");

exit(1);

}

contoh kombinasinya :

-------------------

#include

int main()

{

int index;

for(index = 1 ; index < index =" index">

{

if ((index >= 32) && (index <= 39))

printf("%5d\n", index);

}

return 0;

}

atau bentuk begini

#include

int main()

{

int index;

index = 1;

do

{

printf("nilai sekarang %2d",index);

if (index == 3)

printf(" ini sama dengan 3.");

if (index == 7)

printf(" ini sama dengan 7.");

printf("\n");

index = index + 1;

} while (index <>

return 0;

}

----- pikirkan kembali bentuk seperti dibawah ini ----------------

#include

#define OPTION_1 /* This defines the preprocessor control */

#define PRINT_DATA /* If this is defined, we will print */

#ifndef OPTION_1

int count_1 = 17; /* This exists if OPTION_1 is not defined */

#endif

int main()

{

int index;

#ifndef PRINT_DATA

printf("No results will be printed with this version of "

" the program IFNDEF.C\n");

#endif

for (index = 0 ; index <>

{

#ifdef PRINT_DATA

printf("In the loop, index = %d", index);

#ifndef OPTION_1

printf(" count_1 = %d", count_1); /* This may be printed */

#endif

printf("\n");

#endif

}

return 0;

}

// apakah anda bisa membayangkannya ? apa maksud dari #ifndef - #endif

?

contoh Mengenal enum

contoh pemakaian sebagai berikut :

--------------------------------

#include

int main()

{

enum {WIN, TIE, BYE, LOSE, NO_SHOW} result;

enum {SUN, MON, TUE, WED, THU, FRI, SAT} days;

result = WIN;

printf(" WIN = %d\n", result);

result = LOSE;

printf(" LOSE = %d\n", result);

result = TIE;

printf(" TIE = %d\n", result);

result = BYE;

printf(" BYE = %d\n", result);

result = NO_SHOW;

printf("NO_SHOW = %d\n\n", result);

for(days = MON ; days <>

printf("The day code is %d\n", days);

return 0;

}

BAB IV : fungsi

Bayangkan jika program anda sekarang dalam baris yang sangat panjang, merepotkan sekali bukan nah dengan fungsi kita dapat menyederhakan sebuah program menjadi jelas dan mudah di baca

okeh.. kita mulai lagi.

contoh pemakaian sebagai berikut :

--------------------------------

#include

void writename(); // ini sebuah fungsi

void writename() // ini sebuah fungsi bernama writename()

{

printf("Oh_gayo\n");

}

int main()

{

int index;

for(index = 0 ; index < index =" index">

writename(); // panggil fungi yang bernama writename();

return 0;

}

contoh lain ;

#include

int tempcalc(int centtemp);

int main()

{

int count;

int farenheit; /* temperature farenheit */

int centigrade; /* temperature centigrade */

printf("Table Farenheit temperature \n\n");

for(count = -2 ; count <= 12 ; count = count + 1)

{

centigrade = 10 * count;

farenheit = tempcalc(centigrade);

printf(" C =%4d F =%4d ", centigrade, farenheit);

if (centigrade == 0)

printf(" Freezing point of water");

if (centigrade == 100)

printf(" Boiling point of water");

printf("\n");

} /* akhir dari perulangan*/

return 0;

}

int tempcalc(int centtemp)

{

int faren;

faren = 32 + (centtemp * 9)/5;

return (faren);

}

note :

ingat , didalam sebuah program terdapat yang namanya variabel local dan grobal, jika kita ingin melempar sebuah varibel kesuatu fungsi maka kita dapat melakukan hal sebagai berikut

model passing by value

----------------------

void fungsi (int tampung){

printf("%d",tampung); /// disini nilai 5 akan tercetak dari operan

dibawah

}

void main(){

int a=5;

cetak(a); ///lempar variabel a ke fungsi cetak diatas

}

gimana jika kita ingin melempar sebuah 2 buah varibel

void fungsi (int tampung, float tampung1){

printf("%d",tampung); /// disini nilai 5 akan tercetak dari operan dibawah

printf("%f",tampung1); /// disini nilai 4.5 akan tercetak dari operan dibawah

}

void main(){

int a=5;

float b=4.5

cetak(a,b); ///lempar variabel a ke fungsi cetak diatas

}

model passing by pointer

------------------------

void testing(int &a){

printf("%d",*a);

}

void main(){

int a=5;

testing(&a);

}

perhatikan tipe data yang anda lemparkan ,,, dia harus di tampung didalam tipe yang sama (jika memungkinkan)

contoh kombinasi :

#include

void header(void);

void square(int number);

void ending(void);

int sum; /* ini global variable */

int main(void)

{

int index; // ini local variabel

header(); /* ini memanggil fungsi header */

for (index = 1 ; index <= 7 ; index++)

square(index); /* ini memanggil fungsi square */

ending(); /* ini memanggil fungsi ending */

return 0;

}

void header(void) /* ini fungsi header */

{

sum = 0; /* inisialisasi dari sum=0 */

printf("ini adalah header dari square program\n\n");

}

void square(int number) /* ini fungsi square */

{

int numsq;

numsq = number * number;

sum += numsq;

printf("nilai square %d adalah %d\n", number, numsq);

}

void ending(void) /* ini fungsi ending */

{

printf("\njumlah dari square adalah %d\n", sum);

}

/* ouputnya

ini adalah header dari square program

nilai square 1 adalah 1

nilai square 2 adalah 4

nilai square 3 adalah 9

nilai square 4 adalah 16

nilai square 5 adalah 25

nilai square 6 adalah 36

nilai square 7 adalah 49

jumlah dari square adalah :140

*/

BAB V: Mengenal Array

Array adalah kumpulan tipe data yang sejenis, kita dapat mendeklarasikan Array kedalam berbagai Dimensi

tampung[5]; // 1 Dimensi

tampung[5][5]; // 2 Dimensi

tampung[5][5][3]; // 3 Dimensi

...

.......

dan seterusnya

cara pendeklarasian :

int tampung[5];

float tampung[5];

char tampung[20];

int tampung[5][5];

angka 5 menjelaskan bawah kita mempunyai 5 data didalam variabel tampung cara pengisian langsung ;

int tampung[5] ={1,2,3,4,5};

float tampung[5] = { 1.0.2.0.3.0.4.0.5.0};

char tampung[5] = {'a','b','c','d','e'};

contoh pemakaian sebagai berikut :

--------------------------------

#include

#include

char my_string[20] = "C hebat!";

int main()

{

int index;

printf("%s\n", my_string);

for (index = 0 ; my_string[index] ; index = index + 1)

printf("%c", my_string[index]);

printf("\n");

for(index = strlen(my_string) ; index > 0 ; index = index - 1)

printf("%c", my_string[index - 1]);

printf("\n");

return 0;

}

contoh lain :

#include

#include

int main()

{

int index;

char stuff[20], *pt;

strcpy(stuff, "This is a neat test.");

pt = stuff;

for(index = 0 ; index <>

{

printf("A character is ---> %c\n", *pt);

pt++;

}

return 0;

}

#include

#include

int main()

{

int index;

char string1[6], string2[6], string3[6], all_three[18];

strcpy(string1, "one"); //mencopy string "one" kedalam varibel

string1

strcpy(string2, "two"); //idem

strcpy(string3, "three"); // idem

strcpy(all_three, string1);

strcat(all_three, " "); // mengosongkan isi variabel all_tree;

strcat(all_three, string2); // gabungkan isinya

strcat(all_three, " ");

strcat(all_three, string3);

for(index = 0 ; index < index =" index">

printf("hasil stringnya ---> %s\n", all_three);

return 0;

}

#include

int main()

{

int index, array1[10], array2[10], arrays[10];

for(index = 0 ; index < index =" index">

{

array1[index] = 2 + 2 * index;

array2[index] = 10 * (index + 1);

}

for(index = 0 ; index < index =" index">

arrays[index] = array1[index] + array2[index];

for(index = 0 ; index < index =" index">

printf("%4d %4d + %4d = %4d\n", (index + 1), array1[index],

array2[index], arrays[index]);

return 0;

}

Contoh penggunaan Array 2 Dimensi

--------------------------------

#include

int main()

{

int i, j;

int big[8][8], large[25][12];

for (i = 0 ; i <>

for (j = 0 ; j <>

big[i][j] = i * j; /* perkalian tables */

for (i = 0 ; i <>

for (j = 0 ; j <>

large[i][j] = i + j; /* penambahan tabel*/

big[2][6] = large[24][10] * 22;

big[2][2] = 5;

big[big[2][2]][big[2][2]] = 177; /* big[5][5] = 177; */

for (i = 0 ; i <>

{

for (j = 0 ; j <>

printf("%5d ", big[i][j]);

printf("\n");

}

return 0;

}

BAB VI: Bermain dengan file

untuk bermain dengan file kita harus mendeklarasikannya terlebih dahulu;

contoh;

FILE *ptrfile ; //pointer penunjuk kesebuah file

ptrfile = fopen(outfilename, "w"); /// membuka suatu file ,ditampung disebuah ptrfile

fclose (outfilename); // menutup kembali file yang barusan dibuka

perhatikan tanda "w " , itu disebut dengan modus

modus sangat perlu jika kita bermain dengan file :

r ³ Open for reading only

w ³ Create for writing

³ If a file by that name already exists, it will be overwritten.

a ³ Append; open for writing at end of file, or create for

³ writing if the file does not exist.

r+ ³ Open an existing file for update (reading and writing)

w+ ³ Create a new file for update (reading and writing).

³ If a file by that name already exists, it will be overwritten.

a+ ³ Open for append; open for update at the end of the file, or

³ create if the file does not exist.

contoh :

#include

int main()

{

FILE *infile, *outfile, *printer;

char infilename[25], outfilename[25];

int c;

printf("Enter input file name ----> ");

scanf("%s", infilename);

infile = fopen(infilename, "r");

printf("Enter output file name ---> ");

scanf("%s", outfilename);

outfile = fopen(outfilename, "w");

printer = fopen("PRN", "w");

do

{

c = getc(infile);

if (c != EOF)

{

putchar(c);

putc(c, outfile);

putc(c, printer);

}

} while (c != EOF);

fclose(printer);

fclose(infile);

fclose(outfile);

return 0;

}

contoh lain :

#include

int main()

{

FILE *infile;

char *c, infilename[25], inputline[100];

int line = 1;

printf("Enter input file name ----> ");

scanf("%s", infilename);

infile = fopen(infilename, "r");

printf("%5d", line);

do

{

c=fgets(inputline, 100, infile); /* baca perbaris */

if (c != NULL)

{

printf("%5d %s", line, inputline);

line++;

}

} while (c != NULL);

fclose(infile);

return 0;

}

#include

int main()

{

FILE *fp1;

char oneword[100], filename[25];

char *c;

printf("Enter filename -> ");

scanf("%s", filename); /* baca nama file */

fp1 = fopen(filename, "r");

if (fp1 == NULL)

{

printf("File doesn't exist\n");

exit (1);

}

else

{

do

{

c = fgets(oneword, 100, fp1); /* baca perbaris dari file*/

if (c != NULL)

printf("%s", oneword); /* tampilkan dimonitor */

} while (c != NULL); /* ulangi sampai ketemu NULL

*/

}

fclose(fp1);

return 0;

}

BAB IX: Mengenal struct

struct dalah kumpulan dari berbagai tipe data menjadi satu.

cara pendeklarasian :

struct nama{

int a;

float b ; // berbeda bisa dijadikan dalam 1 struct;

char z;

};

contoh pemakaian sebagai berikut :

--------------------------------

struct nama{

int a;

float b ;

char z;

};

void main() {

nama.a =5;

nama.b =4.0;

nama.z = 'a';

}

contoh lain berupa Array of struct

#include

#include

struct

{

char what[25];

int legs, arms;

} object[6];

int main()

{

int index;

strcpy(object[0].what, "human being");

object[0].legs = 2;

object[0].arms = 2;

strcpy(object[1].what, "dog");

object[1].legs = 4;

object[1].arms = 0;

strcpy(object[2].what, "television set");

object[2].legs = 4;

object[2].arms = 0;

strcpy(object[3].what, "chair");

object[3].legs = 4;

object[3].arms = 2;

strcpy(object[4].what, "centipede");

object[4].legs = 100;

object[4].arms = 0;

strcpy(object[5].what, "spider");

object[5].legs = 6;

object[5].arms = 0;

for(index = 0 ; index <>

{

printf("A %s has %d legs and %d arms.\n", object[index].what,

object[index].legs, object[index].arms);

}

return 0;

}

contoh kombinasinya , menggunakan pointer:

#include

#include

struct

{

char what[25];

int legs, arms;

} object[6], *point;

int main()

{

int index;

strcpy(object[0].what, "human being");

object[0].legs = 2;

object[0].arms = 2;

strcpy(object[1].what, "dog");

object[1].legs = 4;

object[1].arms = 0;

strcpy(object[2].what, "television set");

object[2].legs = 4;

object[2].arms = 0;

strcpy(object[3].what, "chair");

object[3].legs = 4;

object[3].arms = 2;

strcpy(object[4].what, "centipede");

object[4].legs = 100;

object[4].arms = 0;

strcpy(object[5].what, "spider");

object[5].legs = 6;

object[5].arms = 0;

point = object;

for(index = 0 ; index <>

{

printf("A %s has %d legs and %d arms.\n", point->what,

point->legs, point->arms);

point++;

}

return 0;

}

#include

#include

struct child

{

char initial;

int age;

int grade;

} *boy, *girl;

int main()

{

boy = (struct child *)malloc(sizeof(struct child));

boy->initial = 'R';

boy->age = 15;

boy->grade = 75;

girl = (struct child *)malloc(sizeof(struct child));

girl->age = boy->age - 1;

girl->grade = 82;

girl->initial = 'H';

printf("%c is %d years old and got a grade of %d\n",

girl->initial, girl->age, girl->grade);

printf("%c is %d years old and got a grade of %d\n",

boy->initial, boy->age, boy->grade);

return 0;

}

#include

#include

struct child

{

char initial;

int age;

int grade;

} *kids[12];

int main()

{

int index;

for (index = 0 ; index <>

{

kids[index] = (struct child *)malloc(sizeof(struct child));

kids[index]->initial = 'A' + index;

kids[index]->age = 16;

kids[index]->grade = 84;

}

kids[3]->age = kids[5]->age = 17;

kids[2]->grade = kids[6]->grade = 92;

kids[4]->grade = 57;

*kids[10] = *kids[4]; /* Structure assignment */

for (index = 0 ; index <>

printf("%c is %d years old and got a grade of %d\n",

kids[index]->initial, kids[index]->age,

kids[index]->grade);

return 0;

}

BAB X: Program Penekanan tombol keybord

#include

#include

int main()

{

char input_char;

printf("Hit any key - to stop hit a $\n");

do

{

input_char = getch();

printf("Input character is %c, numerical value is %3d\n",

input_char, input_char);

} while (input_char != '$');

return 0;

}

contoh lain

#include

#include

char storage[80];

int main()

{

char c;

int index = 0;

printf("Tekan sembarang character, keluar dari program tekan X\n");

do

{

c = getch(); /* ambil sebuah character */

if (index <>

{

storage[index] = c;

index++;

}

putchar(c); /* tampilkan hit key */

} while (c != 'X');

storage[index] = 0;

printf("%s\n", storage);

printf("\nAkhir dari program.\n");

return 0;

}

Waw... asik juga berkomunikasi dengan komputer dikala suntuk!

ini adalah dasar-dasar pemprograman C. kembangkan lagi sesuai kreatifitas dan imajinasi anda. semoga kita tidak hanya menjadi script kidde terus!, yang tahunya hanya mengcompile dan binggung jika terjadi error :)) .

NOTE : Semua program ini dibuat dan dicompile dengan Borland C 3.1.

Pemberitahuan :

---------------

1. Artikel ini dimaksudkan untuk bahan pelajaran siapa saja yang ingin mengembangkan pengetahuan programming .

2. Dilarang mempublis tanpa mengikutsertakan nama penulis, dengan harapan ingin dianggap Hacker ato apalah ?

3. Jika ada pertanyaan kirimkan ke Email penulis

4. Mohon Maaf jika ada salah kata2 renjana@hackermail.com