about C Languages

634 views

Published on

describes about the philosophy of C Languages and its examples program

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
634
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
16
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

about C Languages

  1. 1. Bahasa Pemrograman C dalam Pendekatan Praktis Ir. S.N.M.P. Simamora, MT. snmpsimamora@telkom.net Program studi Teknik Komputer Bandung 2008 Abstrak Sebuah Perangkat Lunak Bahasa Pemrograman terdiri dari dua elemen utama yakni translator (translating-generator) dan kode (script/bahasa pemrograman). Dalam layer-layer perangkat lunak pada skema sebuah Sistem Komputer, Perangkat Lunak Bahasa Pemrograman terletak pada layer ke-2 setelah layer Perangkat Lunak Sistem Operasi. Salah satu contoh Perangkat Lunak Bahasa Pemrograman adalah C Programming Language Applications, yakni Turbo C++ dan Bahasa Pemrograman C. Perangkat Lunak Bahasa Pemrograman ini tergolong pada jenis translator compiler, yang berarti terdiri dari dua proses penerjemahan, yakni kompilasi dan linking. Dengan demikian aplikasi yang dibangun menggunakan Bahasa Pemrograman C berbentuk executed-code atau executable- program. Seperti juga dikenal dalam bahasa pemrograman lain, Bahasa Pemrograman C juga mengenal input-stream / output-stream, logical-flow tree scheme, array, dan tipe data. Kekuatan Bahasa Pemorgaman C dibandingkan bahasa pemrograman lain terletak pada kelebihannya yang bisa mendekati layer mesin (low-level ) dan layer user (high-level). Kata kunci: compiler, linker, input-stream, output-stream, array, tipe data. I. Konsep Dasar Pemrograman Kapabilitas sebuah bahasa pemrograman dapat dinilai dari aspek berikut ini: a. Input-stream / output-stream, yakni aliran pemrosesan untuk menampilkan output-value ke monitor, atau output-devices lain seperti printer atau speaker. Demikian juga untuk melakukan capturing pada input-value yang dimasukan user (input-by user). b. Pemroses Arithmatika, yakni melakukan proses tambah, proses kurang, proses kali, proses bagi, dan proses modulus. Disamping itu juga melakukan proses komputasi lain seperti: matematika dasar, trigonometri, pergeseran bit, konversi sistem basis bilangan dasar, dsb. c. Pohon Aliran Proses Logika, yakni melakukan proses pengolahan if-then else, proses looping (proses repetisi), do..while, dan switch (select-case). d. Pengolahan array, yakni kemampuan untuk mengolah runtunan proses yang direpresentasikan dalam sebuah blok tipe data yang sama yang berurutan sampai urutan ke-sekian yang dimulai dari indeks ke-0. e. Sisi back-end, yakni sisi atau elemen yang bertanggung jawab dalam simpanan data yang di-capture dari sisi atau elemen front-end pada sebuah aplikasi sistem informasi atau Perangkat Lunak Aplikasi. Seperti telah diketahui bahwa sebuah aplikasi sistem informasi terdiri dri tiga elemen utama yakni: 1
  2. 2. Front-End: pada sisi ini, program aplikasi yang biasa digunakan seperti VB6, PHP Script, ASP Script, DELPHI, PERL. Umumnya elemen front-end bertugas untuk meng-capture input-value yang diberikan oleh end-user serta untuk menampilkan berupa output-value sebagai hasil pengolahan yang dilakukan. Middle-End: pada sisi ini, program aplikasi yang biasa digunakan adalah Perangkat Lunak Sistem Operasi, yang umumnya bertugas untuk melakukan proses interkoneksi antar- perangkat lunak, atau dengan perangkat keras. Back-End: sisi ini lebih bertanggung jawab pada proses simpanan data, umumnya program aplikasi yang digunakan seperti: MySQL, SQL Server, dan Ms.Access. Bahasa Pemrograman C tergolong dalam sebuah bahasa pemrograman yang diterjemahkan dengan translator jenis compiler, dengan ciri-ciri sebagai berikut: a. Terdiri dari dua proses translating, yakni proses kompilasi dan proses linking. b. Mengenal object-code (*.obj) c. Menerjemahkan baris source-code sekaligus sebelum memberikan konfirmasi ada/tidak-nya kesalahan ’coding’. d. Selalu menghasilkan executed-code (*.exe atau *.com) e. Dalam setiap menjalankan hasil program aplikasi, yang dibutuhkan hanyalah executed-code; sedangkan source-code tidak dibutuhkan lagi, dengan demikian dalam aspek keamanan ’croping-data’ terhadap source-code terjamin aman. Pada kesempatan kali ini, translator yang digunakan adalah Turbo C v3.0, yang diproduksi oleh Borland Inc. Gambar 1 Skema Proses Penerjemahan Turbo C v3.0 Misalkan: hallo.c #include<stdio.h> main() { printf("Selamat Pagi, Indonesia."); return 0; } Jika hallo.c diproses oleh compiler, maka dihasilkan file baru yang disebut hallo.obj; dan oleh Linker diproses menjadi file baru yang bernama hallo.exe, untuk menjalankan aplikasi program cukup dengan memanggil hallo.exe melalui antar-muka MSDOS Prompt, dengan mengetikkan hallo pada prompt yang aktif. Contoh lain ditunjukkan sebagai berikut: itung.c #include<stdio.h> main() { printf("2 * 3 = %i", 2*3); return 0; } 2
  3. 3. Terlihat pada itung.c, untuk menampilkan hasil perhitungan 2 * 3 ditampilkan dengan “%i”, i dimaksudkan untuk tipe data integer. Berikut itung.c dimodifikasi untuk mendapatkan bilangan pecahan, sebagai berikut: itung1.c #include<stdio.h> main() { printf("2 * 3 = %f", 2.0*3.0); return 0; } Contoh berikut menampilkan hasil perhitungan arithmatika untuk empat proses dasar ditambah dengan proses pembagian bersisa (modulus): tambah.c #include<stdio.h> main() { int a=2; printf("%i",a); printf(" + 3 = "); printf("%i",a+3); return 0; } Alternatif lain dapat dimodifikasi tambah.c menjadi sebagai berikut: tambah1.c #include<stdio.h> main() { int a=3; printf("%i + 3 = ",a); printf("%i",a+3); return 0; } Atau dengan modifikasi berikut ini: tambah2.c #include<stdio.h> main() { int a=3; printf("%i + 5 = %i",a,a+5); return 0; } Terlihat bahwa setiap akan menampilkan isi variabel yang terdeklarasikan, harus menggunakan ”%” diikuti dengan tipe data yang digunakan. Selanjutnya, isi variabel a akan ditetapkan berdasar masukan dari end-user, seperti ditunjukkan pada sintaks berikut ini: tambah3.c #include<stdio.h> main() { int a; 3
  4. 4. printf("Isikan variabel a: "); scanf("%i",&a); printf("%i + 5 = %i",a,a+5); return 0; } Selanjutnya berikut untuk operasi pengurangan: kurang.c #include<stdio.h> main() { int a=2; printf("%i",a); printf(" - 3 = "); printf("%i",a-3); return 0; } Alternatif lain sebagai berikut: kurang1.c #include<stdio.h> main() { int a=5,z; z=a-3; printf("%i - 3 = %i",a,z); return 0; } Bentuk sintaks lain dapat juga dituliskan sebagai berikut: kurang2.c #include<stdio.h> main() { float a,z; printf("Masukkan nilai a: "); scanf("%f",&a); z=a-3; printf("%f - 3 = %f",a,z); return 0; } Perhatikan bahwa kurang2.c menggunakan bilangan pecahan bukan bilangan bulat (integer). Berikut untuk contoh proses aritmatika pembagian: bagi.c #include<stdio.h> main() { int a=6,z; z=a/3; printf("%i / 3 = %i",a,z); return 0; } Namun bagaimana bila sintaks berikut ini: bagi1.c 4
  5. 5. #include<stdio.h> main() { int a=7,z; z=a/3; printf("%i / 3 = %i",a,z); return 0; } Terlihat bahwa hasilnya adalah bilangan bulat, 2, padahal 7 ÷ 3 seharusnya 2.33, oleh sebab itu digunakan tipe data float (“%f”) bukan tipe data integer (“%i”), seperti terlihat pada sintaks berikut ini: bagi2.c #include<stdio.h> main() { float a=7,z; z=a/3; printf("%f / 3 = %f",a,z); return 0; } Oleh sebab itu dalam setiap operasi arithmatika pembagian dibiasakan menggunakan tipe data pecahan (float). bagi3.c #include<stdio.h> main() { float a,z; printf("Masukkan nilai a: "); scanf("%f",&a); z=a/3; printf("%f / 3 = %f",a,z); return 0; } Contoh lain dapat ditunjukkan pada sintaks berikut ini: bagi3a.c #include<stdio.h> main() { int a,x=12,z; printf("Masukkan a: "); scanf("%d",&a); z=(x/3)-a; printf("(%d / 3) - %d = %d",x,a,z); return 0; } Berikut adalah perhitungan kombinasi antara proses pembagian dan perkalian menggunakan bilangan pecahan (floating-point): kurang3a.c #include<stdio.h> main() { float a,x=15,z; printf("Masukkan nilai a: "); scanf("%f",&a); 5
  6. 6. z=(x/3)*a; printf("(%f / 3) * %f = %f",x,a,z); return 0; } Selanjutnya untuk pembagian bersisa menggunakan tanda ’%’, misalkan dituliskan sebuah ekspresi sebagai berikut: 7%3, maka hasilnya sama dengan 1. Berdasar algoritma matematik sederhana 7 ÷ 3 = 2 1 , artinya: 3 Hasil bagi: 2 Pembagi: 3 Yang dibagi: 7 Sisa bagi: 1 Dengan demikian bila sebuah bilangan pecahan ditunjukkan sebagai berikut: 4 5 9 ; sisa bagi = 4 4 5 11 ; sisa bagi = 4 12 12 ; sisa bagi = 12 71 12 12 17 ; sisa bagi = 12 8 5 ; sisa bagi = 5 9 Hal ini dapat dibangun dengan sintaks sebagai berikut: modulus.c #include<stdio.h> main() { int a=7,z; z=a%3; printf("%i / 3 = %i",a,z); return 0; } Terlihat tipe data yang digunakan haruslah bilangan bulat (integer); lalu bagaimana bila tipe data integer dengan tanda ’%d’: modulus1.c #include<stdio.h> main() { int a=10,z; z=a%3; printf("%d / 3 = %d",a,z); return 0; } Alternatif lain dapat dituliskan sebagai berikut: modulus2.c #include<stdio.h> main() { int a,z; printf("Masukkan yang dibagi: "); scanf("%d",&a); z=a%3; printf("%d / 3 = %d",a,z); 6
  7. 7. return 0; } Sintaks berikut ini untuk mengukur keliling sebuah papan ukuran meter dalam ukuran feets (kaki): meter2ft.c #include<stdio.h> main() { float p,l,z; printf("Masukkan panjang (meter): "); scanf("%f",&p); printf("Masukkan lebar (meter): "); scanf("%f",&l); z=2*(p+l)*3.25; printf("Data papan:n"); printf("panjang: %f",p); printf("mn"); printf("lebar: %f",l); printf("mn"); printf("Keliling papan = %f",z); printf("ft."); return 0; } Dengan demikian disimpulkan bahwa 1 ft = 3.25m. II. Pohon Logika Blok Statement Pemrograman 2.1 if-then Misalkan: jika isi variabel a<7, maka akan ditampilkan sebuah string: ‘Isi a lebih kecil dari 7.’. ifthe.c #include<stdio.h> main() { int a=4; if(a<7) { printf("Isi a lebih kecil dari 7."); } return 0; } Alternatif lain sebagai berikut: ifthen1.c #include<stdio.h> main() { int a; printf("Isikan nilai a: "); scanf("%i",&a); if(a<7) { printf("Isi a lebih kecil dari 7."); } return 0; } 7
  8. 8. 2.2 if-then-else Pohon logika ini memberi alternatif lain pencabangan dibandingkan pohon logika if..then, misalkan: apabila isi variabel a<7, maka akan ditampilkan sebuah string: ‘Isi variabel a lebih kecil dari 7.’; selain itu (bila tidak memenuhi pra-kondisi sebelumnya) akan ditampilkan string lain: ‘Isi variabel a lebih besar atau sama dengan 7’. ifthelse.c #include<stdio.h> main() { int a=7; if(a<7) { printf("Isi a lebih kecil dari 7."); } else { printf("Isi a lebih besar atau sama dengan 7."); } return 0; } Alternatif yang lain dapat juga menggunakan sintaks berikut ini: ifelse1.c #include<stdio.h> main() { int a; printf("Isikan nilai a: "); scanf("%i",&a); if(a<7) { printf("Isi a lebih kecil dari 7."); } else { printf("Isi a lebih besar atau sama dengan 7."); } return 0; } 2.3 for…i Proses looping digunakan untuk melakukan proses perulangan (naik atau turun) sebanyak n kali berdasar nilai yang ditetapkan pada statement perulangan; lebih jelasnya sebagai berikut: Menampilkan sebuah string sebanyak 7 kali: for1.c #include<stdio.h> main() { int i,a=7; for(i=0;i<a;i++) { printf("Kasihilah sesamamu manusia.n"); } return 0; } Menampilkan sebuah string sebanyak yang diinginkan oleh end-user: fori.c #include<stdio.h> main() 8
  9. 9. { int a,i; printf("Berapa kali ditampilkan?: "); scanf("%i",&a); for(i=0;i<a;i++) { printf("Kasihilah sesamamu manusia.n"); } return 0; } Modifikasi lain dapat ditunjukkan sintaks berikut ini: foria.c #include<stdio.h> main() { int a,i; printf("Berapa kali ditampilkan?: "); scanf("%i",&a); for(i=0;i<a;i++) { printf("Ke-%i",i+1); printf(" Kasihilah sesamamu manusia.n"); } return 0; } Menampilkan string berbeda berdasar deret urutan yang ditampilkan; jika urutan genap, tampilkan: ’ Kasihilah sesamamu manusia.’; jika ganjil ditampilkan: ’Selamat Datang di Tigalingga’. forib.c #include<stdio.h> main() { int a,i,z; printf("Berapa kali ditampilkan?: "); scanf("%i",&a); for(i=0;i<a;i++) { z=i+1; printf("Ke-%i",z); if(z%2==0) { printf(" Kasihilah sesamamu manusia.n"); } else { printf(" Selamat Datang di Tigalingga.n"); } } return 0; } Perhatikan bahwa forib.c menggunakan kombinasi pohon logika ’if-then-else’ untuk memisahkan deret genap dan deret ganjil. Sepanjang biaya belanja di atas Rp 500.00 yang membayar adalah Narason, di bawahnya yang akan membayar adalah Auwma; namun duit yang tersedia hanyalah Rp 5,500.00 for1c.c #include<stdio.h> main() { int i,a=5500; 9
  10. 10. for(i=a;i>100;i-=100) { a=a-100; if(a>500) { printf("Narason ma na margarar.n"); } else { printf("Auwma ma na margarar.n"); } } return 0; } Pada sintaks for1c.c ini perulangan dilakukan sebanyak 5500÷100 = 55 kali. Menampilkan Deret Bilangan Ganjil dbgan.c #include<stdio.h> main() { int i,a; printf("Deret Ganjil sebelum bilangan?: "); scanf("%i",&a); for(i=0;i<a;i++) { if(i%2!=0) { printf("%i",i); printf(" "); } } return 0; } Menampilkan Deret Bilangan Kelipatan 3 lipat3.c #include<stdio.h> main() { int i,a; printf("Kelipatan 3 sebelum bilangan?: "); scanf("%i",&a); for(i=1;i<a;i++) { if(i%3==0) { printf("%i",i); printf(" "); } } return 0; } Menampilkan Deret Bilangan Genap dbgen.c #include<stdio.h> main() { int i,a; printf("Deret Genap sebelum bilangan?: "); scanf("%i",&a); for(i=0;i<a;i++) { if(i%2==0) { 10
  11. 11. printf("%i",i); printf(" "); } } return 0; } 2.4 do...while Prinsip pohon logika ini adalah mengerjakan atau terus mengeksekusi statement selama pra-kondisi terpenuhi. Misalkan, tampilkan string ‘Selamat Datang di Silindoeng!’ selama isi variabel a>7. Berikut sintaks pemrogramannya: dowhile.c #include<stdio.h> main() { int a=10; do { printf("Selamat Datang di Silindoeng!"); a=a-3; printf("n"); } while (a>3); return 0; } Pada sintaks ini, string ditampilkan sebanyak 3 kali; dengan alasan di-kunci pada kondisi a=a-2, padahal a di-set dengan isi 10, dengan demikian akan terisi variabel a dengan nilai: 8,6,4,2,0,... namun karena ditetapkan string hanya ditampilkan bila isi a > 3, sehingga prasyarat isi variabel a terpenuhi untuk nilai: 8,6,4. 2.5 while Pohon logika ini prinsipnya hampir sama dengan do...while, yang membedakan hanya prioritas yang dieksekusi atau dikerjakan adalah selama prasyarat terpenuhi sebelum statement dikerjakan. while.c #include<stdio.h> main() { int a=10; while (a>3) { printf("Selamat Datang di Silindoeng!"); a=a-3; printf("n"); } return 0; } Sintaks lain dapat ditunjukkan sebagai berikut: while1.c #include<stdio.h> main() { int duit=700; while (duit>100) { duit-=100; 11
  12. 12. printf("%i",duit); printf("n"); } printf("Selesai.."); return 0; } 2.6 switch Prinsip pohon logika ini adalah menyeleksi sebuah blok statement sepanjang prasyarat suatu kondisi terpenuhi. Misalkan bila isi variabel a berisi nilai 7, maka akan dieksekusi string: ’Hati-hati gunakan tanganmu’. switch.c #include<stdio.h> main() { int a=3; switch (a) { case 1: printf("Hari ini akan hujan"); break; case 2: printf("Selamat Datang di Tigabalata!"); break; case 3: printf("Isi vaiabel a adalah 3."); break; case 4: printf("Kasihilah sesamamu manusia."); break; case 5: printf("Isi vaiabel a adalah 5."); break; case 6: printf("Isi vaiabel a adalah 6."); break; case 7: printf("Hati-hati gunakan tanganmu."); break; } return 0; } Berikut sintaks yang dimodifikasi untuk menetapkan isi variabel a dari end-user: switch1.c #include<stdio.h> main() { int a; printf("Pilih angka 1 s.d 7: "); scanf("%i",&a); switch (a) { case 1: printf("Hari ini akan hujan"); break; case 2: printf("Selamat Datang di Tigabalata!"); break; 12
  13. 13. case 3: printf("Isi vaiabel a adalah 3."); break; case 4: printf("Kasihilah sesamamu manusia."); break; case 5: printf("Isi vaiabel a adalah 5."); break; case 6: printf("Isi vaiabel a adalah 6."); break; case 7: printf("Hati-hati gunakan tanganmu."); break; default: printf("Maaf, di luar yang ditetapkan.."); } return 0; } III. Larik (Array) Larik atau array adalah sejumlah deretan data, apakah alphanumerik atau alphabetikal, yang dimulai dengan indeks ke-0 dengan tipe data yang sama. Biasanya digunakan untuk mengekompokkan suatu data. Misalkan: A = ’s’,’i’,’m’,’a’,’m’,’o’,’r’,’a’; Bedakan dengan: A = {1,2,3,4,5,6,7}; dan A = {‘1’m’2’,’3’,’4’,’5’,’6’,’7’}; larik.c #include<stdio.h> main() { int i; char A[8]={'s','i','m','a','m','o','r','a'}; for(i=0;i<8;i++) { printf("%c",A[i]); } return 0; } Contoh lain: larik1.c #include<stdio.h> main() { int i; char A[8]={'1','2','3','4','5','6','7','8'}; printf("{"); for(i=0;i<8;i++) { printf("%c",A[i]); } 13
  14. 14. printf("}"); return 0; } Berikut adalah sebuah contoh untuk menampilkan masukan yang diberikan oleh end-user: masukan.c #include<stdio.h> void main() { int N,i,a[100]; printf("Memasukkan bilangan sebanyak? (maks.100): "); scanf("%i",&N); for(i=0;i<N;i++) { printf("Bilangan ke-%i: ",i+1); scanf("%i",&a[i]); } printf("nBilangan yang dimasukkan: "); for(i=0;i<N;i++) { printf("%i ",a[i]); } } Karena menggunakan keyword void main(), maka tidak perlu di akhir sintaks dituliskan return 0; disebabkan void main() tidak mengembalikan nilai kepada fungsi. Contoh lain dapat ditunjukkan sebagai berikut: larik2.c #include<stdio.h> main() { int i; char a[10]; a[0]='s'; a[1]='i'; a[2]='m'; a[3]='a'; a[4]='m'; a[5]='o'; a[6]='r'; a[7]='a'; printf("Menampilkan isi larik: "); for(i=0;i<8;i++) { printf("%c",a[i]); } return 0; } Terlihat pada larik2.c, masing-masing elemen larik dideklarasikan pada badan program; artinya sama saja dengan deklarasi berikut: char a[10]={‘s’,‘i’,‘m’,‘a’,‘m’,‘o’,‘r’,‘a’}; Pada sintaks berikut akan menampilkan pengerjaan perhitungan rata-rata bilangan yang dimasukkan oleh end-user, dimana banyak bilangannya juga ditentukan oleh end-user. Algoritma sederhananya sebagai berikut: i. Tentukan elemen array untuk menampung bilangan 14
  15. 15. ii. Tentukan nilai awal indeks, batas akhir indeks dan kenaikannya (dalam hal ini , nilai awal indeks adalah 0, batas akhir indeks adalah N bilangan yang dimasukkan oleh end-user, dan kenaikannya adalah 1) iii. Lakukan perulangan sebanyak N bilangan yang ditentukan. iv. Nilai awal indeks ditambah dengan 1 v. Set isi var total=0 vi. Lakukan penjumlahan akumulasi terhadap setiap bilangan yang dimasukkan, tampungkan ke var total sampai batas akhir indeks terpenuhi. vii. Tampilkan nilai rata-rata bilangan yang dimasukkan. viii. Selesai. rata2.c #include<stdio.h> main() { int i,N; float a[100],tot=0,rata2; printf("Berapa bilangan? (maks.100): "); scanf("%i",&N); for(i=0;i<N;i++) { printf("Bilangan ke-%i: ",i+1); scanf("%f",&a[i]); tot=tot+a[i]; } rata2=tot/N; printf("nRata-rata = %f",rata2); return 0; } Daftar Pustaka: Miles, R., "Introduction to C Programming", Department of Computer Science, University of Hull, England, 2001. Simamora, S.N.M.P., ”Tuntunan Praktis Bahasa Pemrograman C++”, Departemen Sistem Komputer, Fak. Teknik, ITHB, Bandung, 2002. Simamora, S.N.M.P., ”Kapabilitas Bahasa Pemrograman C sebagai Antar-muka pada Perangkat Keras Komputer”, Pangalengge Educations, 2003. 15

×