Materi matakuliah bahasa c

5,725 views
5,439 views

Published on

BAHASA C/C++
Tujuan Instruksional
Umum :Setelah mengikuti praktikum ini peserta dapat menbuat program
dengan bahasa C++ dan mengkompilasi dengan menggunakan
gcc yang ada dilinux
Khusus :Setelah mengikuti praktikum ini:
1. Peserta menegerti tentang konsep pemrograman di C++
2. Peserta mengerti dan memahaimi perintah-perintah di C++
3. Peserta mengerti seleksi kondisi di C++
4. Peserta mengerti tentang struktur data di linux
5. Peserta dapat membuat programC++ sederhana

Pelatihan Bahasa C bertujuan untuk memberikan pengetahuan kepada peserta tentang
konsep dasar C yang diperlukan untuk membuat suatu program C. Diharapkan dengan
diketahuinya konsep-konsep dasar pemrograman C, peserta dapat menyelesaikan
suatu permasalahan dengan cara membuat program sendiri.
Konsep pemrograman meliputi konsep tipe bilangan, konsep pengulangan, konsep
pencabangan dan lain-lainnya. Semua akan dibahas pada bab-bab khusus.
Untuk dapat membuat program sendiri, pertama-tama tentulah masalah yang akan
dibuat programnya harus diketahui dan dipahami betul. Identifikasikan masukan dari
masalah tersebut, apakah berupa bilangan bulat, atau bilangan desimal, atau suatu
karakter.Setelah diketahui masukannya, lalu identifikasi lagi proses yang akan dibuat
dengan masukan tadi. Jika proses juga telah djabarkan, perlu diuraikan keluaran yang
akan dihasilkan oleh proses tadi.

Published in: Education
1 Comment
0 Likes
Statistics
Notes
  • Be the first to like this

No Downloads
Views
Total views
5,725
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
228
Comments
1
Likes
0
Embeds 0
No embeds

No notes for slide

Materi matakuliah bahasa c

  1. 1. BAHASA C/C++ Oleh : Dra. Wahyuni Z Imran , Msc Modul Mata kuliah Selengkapnya bisa di download gratis di website >> http://www.dagangku.com
  2. 2. Tujuan Instruksional: Tujuan Instruksional Umum :Setelah mengikuti praktikum ini peserta dapat menbuat program dengan bahasa C++ dan mengkompilasi dengan menggunakan gcc yang ada dilinux Khusus :Setelah mengikuti praktikum ini: 1. 2. 3. 4. 5. Peserta menegerti tentang konsep pemrograman di C++ Peserta mengerti dan memahaimi perintah-perintah di C++ Peserta mengerti seleksi kondisi di C++ Peserta mengerti tentang struktur data di linux Peserta dapat membuat programC++ sederhana
  3. 3. PENDAHULUAN Pelatihan Bahasa C bertujuan untuk memberikan pengetahuan kepada peserta tentang konsep dasar C yang diperlukan untuk membuat suatu program C. Diharapkan dengan diketahuinya konsep-konsep dasar pemrograman C, peserta dapat menyelesaikan suatu permasalahan dengan cara membuat program sendiri. Konsep pemrograman meliputi konsep tipe bilangan, konsep pengulangan, konsep pencabangan dan lain-lainnya. Semua akan dibahas pada bab-bab khusus. Untuk dapat membuat program sendiri, pertama-tama tentulah masalah yang akan dibuat programnya harus diketahui dan dipahami betul. Identifikasikan masukan dari masalah tersebut, apakah berupa bilangan bulat, atau bilangan desimal, atau suatu karakter.Setelah diketahui masukannya, lalu identifikasi lagi proses yang akan dibuat dengan masukan tadi. Jika proses juga telah djabarkan, perlu diuraikan keluaran yang akan dihasilkan oleh proses tadi. Lebih mudah lagi dapat dijabarkan melalui diagram di bawah ini: Masukan Proses Keluaran A C=A+B C B Gambar 1. Kemudian langkah-langkah penyelesaian masalah tersebut dapat diuraikan lebih rinci lagi menggunakan barisan-barisan tulisan yang menjabarkan langkah tadi dengan kata-kata. Deretan langkah-langkah tersebut dalam ilmu informatika disebut Algoritma. Algoritma dapat diuraikan dengan bahasa apa saja. Jika orang yang membuat algoritma ini berbahasa indonesia, maka algoritma dapat dituliskan dalam bahasa indonesia. Biasanya seorang pembuat program atau lebih dikenal dengan istilah programmer akan menulis algoritmanya dengan standart baku. Perubahan itu bertujuan agar semua orang, baik orang berbahasa indonesia, maupun orang berbahasa lain bisa mengerti langkah-langkah yang akan dilakukan. maka algoritma tersebut dirubah kedalam deretan langkah-langkah yang dituliskan dengan istilah-istilah yang telah baku di dalam ilmu informatika, sehingga terbentuklah pseudocode. Istilah ini tentunya menggunakan kosa kata bahasa inggris. Implementasi Pseudocode atau algoritma ke dalam bahasa pemrograman tertentu akan menjadi suatu program. Jika implentasi tersebut menggunakan bahasa C maka hasil yang terbentuk adalah program C. Lain lagi jika implementasi menggunakan bahasa Basic maka hasilnya berupa program Basic.
  4. 4. Bagaimana membedakan program C dengan program Basic dari nama filenya? Jawabannya adalah dengan melihat bagian ekstensi suatu file, jika program c maka file yang dibuat diberi nama xxxx.C. Sedangkan untuk program Basic, file yang dibuat diberi nama xxxx.BAS Singkatnya, langkah-langkah pembuatan program tadi dapat diuraikan sebagai berikut: -Masalah -Algoritma -Pseudo Code -Program Contoh: Seseorang ingin menghitung suatu penjumlahan dari dua bilangan A dan B dan hasil penjumlahannya akan disimpan dalam satu bilangan diberi nama C. Jenis bilangannya adalah bilangan bulat. Nilai dari A dan B telah ditentukan sebelumnya, yaitu A=5 dan B=10. Sebelum nilai-nilai tersebut ditampilkan, akan ditulis ” Hallo, Selamat Datang!”. Baru setelah itu, akan ditampilkan nilai A, nilai B dan nilai C. Ilustrasi proses pembuatan programnya dapat dilihat pada gambar 2 di bawah ini.
  5. 5. Algoritma ------ Kode Semu Deklarasikan variabel A adalah bilangan Bulat Deklarasikan variabel B adalah bilangan Bulat Deklarasikan variabel C adalah bilangan Bulat Cetak “Hallo, Selamat Datang !” Beri nilai A sama dengan 5 Beri nilai B sama dengan 10 Jumlahkan A dan B, simpan di C Cetak A, ganti baris Cetak B, ganti baris Cetak C, ganti baris - Set A integer and equal 5 Set B integer and equal 10 Set C integer Print “Hallo, Selamat Datang !” Calculat C equal A plusB Print A Print B Print C Gambar 2. Langkah pembuatan program MONITOR : Layar Tampilan Program C: int main() { int A=5; int B=10; int C; printf(“Hallo Selamat Datang!n”); C=A+B; printf(“ %d n”,A);printf(“ %d n”,B); printf(“ %d n”,C); getch(); return 0; Hallo Selamat Datang! 5 10 15 } Program C: }
  6. 6. // Program C /* Program #1 */ #include <stdio.h> #include <conio.h> int main() { int A, B, C; clrscr(); printf(“Hallo Selamat Datang!n”); A= 5; B=10; C=A+B; printf(“ %d n”,A); printf(“ %d n”,B); printf(“ %d n”,C); getch(); return 0; }
  7. 7. BAB I KONSEP DASAR C Bab ini memperkenalkan beberapa perjanjian cara pemberian nama dan cara deklarasi tipe data primitif seperti bilangan bulat, bilangan desimal dan karakter yang diperbolehkan dalam bahasa C. 1.1 IDENTIFIERS Identifier adalah bentuk paling sederhana dalam Program C, terdiri dari barisan huruf(„A‟….‟Z‟, „a‟…‟z‟,‟_‟) dan bilangan („0‟…‟9‟). Sebuah Identifier harus dimulai dari sebuah huruf. Dalam bahasa C, huruf besar berbeda dengan huruf kecil. Hal ini disebut dengan istilah case sensitive Contoh:  Cara penulisan yang benar : angka, Angka , ANGKA, n1, jumlah_angka, PajakPenjualan  Cara penulisan yang salah: 2angka, sepuluh%, Jumlah-Total Salah satu cara penulisan program yang baik, dilihat dari pemberian nama Identifier yang diskriptif. Dengan kata lain, dari membaca nama identifier saja sudah diketahui maksudnya. Aturan ini juga berlaku dalam pemberian nama identifier yang terdiri lebih dari satu kata. Karena dalamm bahasa C, huruf besar dan kecil diartikan sesuatu yang berbeda, maka identifier yang terdiri lebih dari satu kata dapat dituliskan dengan dimulai huruf besar untuk huruf pertama setiap katanya.  Contoh: Cara penulisan yang berbeda: pajak_penjualan, nama_depan, PajakPenjualan, NamaDepan 1.2 KEYWORDS/RESERVED WORDS Ada kumpulan nama Identifier yang disebut keywords atau reserved words, yang digunakan untuk membentuk bahasa C itu sendiri. Nama-nama ini dituliskan dengan huruf kecil. asm auto continue default float for new operator short signed try typedef
  8. 8. 1.3 TIPE DATA PRIMITIF Tipe data primitif ini dibagi menjadi 3 kategori; Bilangan bulat : int, short, long Bilangan desimal ; float, double Karakter: char Penggabungan Tipe data dengan penulisan identifier dalam sebuah program menyatakan suatu pendeklarasian variable tertentu.  tipe var; contoh : int angka; float x;  tipe var1,var2,var3; contoh : int a, b, c; char s, t; //variabel tunggal //variabel majemuk 1.3.1 Tipe Bilangan Bulat Tipe untuk bilangan bulat : int, short int, long int Kesanggupan masing-masing tipe ditentukan oleh jenis Hardware.  short int jangkauan nilai yang dapat diberikan pada variabel dengan tipe ini berkisar antara –32768 sampai dengan 32767. Jika jangkauan nilai yang diinginkan berkisar antara 0 sampai dengan 65535 maka tambahkan kata unsigned sebelum int.  long int jangkauan nilai ini lebih besar yaitu antara –231 sampai dengan 231-1 Cara pendeklarasiannya: int ANGKA = 50; short mulai = 1; unsigned int PotonganHarga=60000; long L1,L2,L3,L4=1000; 1.3.2 Tipe Karakter Karakter disimpan sebagai data numerik. Biasanya yang digunakan adalah standard ASCII. Cara penulisan konstanta karakter ditulis dengan tambahan tanda petik tunggal. Cara mendeklarasikannya : char ch=‟T‟; // pendeklarasian satu karakter dengan inisialisasi Deretan karakter akan membentuk suatu string. Penulisannya diapit tanda petik dua (“Sejahtera”).
  9. 9. Cara mendeklarasikannya : char s[10]=”Sejahtera” ; //pendeklarasian string ( deretan karakter) // dengan inisialisasi Escape (Control) Codes Kode kontrol terletak pada jangkauan 0 sampai 31 dan menyatakan informasi kontrol terminal atau informasi. Macam-macam kode kontrol dapat dilihat pada table berikut. Nama Kode C Deskripsi Newline „n‟ Karakter ganti baris. Sebagai tanda ganti baris baru pada file teks atau file ASCII Return „r‟ Akhir dari suatu input dari keyboard Horizontal tab „t‟ Pindah ke daerah tab berikutnya Backspace „b‟ Geser cursor ke kiri satu karakter. Biasanya system menghapus karakter sebelumnya. 1.3.3 Tipe bilangan desimal Tipe untuk bilangan desimal : float, double, long double  float Jangkauan nilai yang dapat diberikan pada variabel tipe ini berkisar antara 3.4E-38 sampat dengan 3.4E+38
  10. 10.  double dan long double Jangkauan nilai yang dapat diberikan pada variabel tipe ini berkisar antara 1.7E-308 sampat dengan 1.7E+308 Contoh: Cara pendeklarasiannya: float x= 0.21, z= 10e4; double Avogadro = 6.02e23; 1.3.4 Nama konstanta Dalam membuat program, seringkali diperlukan penulisan suatu konstanta, misalkan nilai  Nilai konstanta tidak akan berubah dalam suatu program. . Cara pendeklarasianya:  const double PI = 3.141592653589793 1.4 STANDARD INPUT OUTPUT Agar program menjadi iteraktif, kadang diperlukan input dari user. Ini dapat dilakukan dengan perintah scanf() atau gets(). Sedangkan untuk menampilkan data di layar monitor dapat dilakukan dengan perintah printf(). Fungsi-fungsi ini didefinisikan pada file stdio.h. Dalam penggunaan fungsi-fungsi di atas kadang diperlukan string kontrol yang gunanya untuk memformat kode. Macam-macam string kontrol Kode format %d %f %c %s kegunaannya Tampilkan bilangan bulat Tampilkan bilangan desimal Tampilkan sebuah karakter Tampilkan sebuah string 1.4.1 Fungsi scanf() Salah satu kegunaan scanf() adalah untuk mendapatkan input yang dimasukkan user melalui keyboard. Bentuk dasarnya yaitu: scanf(“string kontrol”, deretan argument) ; String kontrol dapat berisi salah satu dari kode format atau gabungan dari beberapa kode format, tergantung dari banyaknya deretan argument yang ada. Banyaknya kode format harus sama dengan banyaknya argument. Pada deretan argument, tanda & harus ada di setiap awal sebuah variabel yang akan menampung nilai yang diberikan melalui keyboard.
  11. 11. Contoh:  scanf(“%d”,&bilangan);  scanf(“%f %f “, &potongan, &jumlah); 1.4.2 Fungsi gets() Fungsi gets() akan memiliki argument berupa nama variabel yang bertipe string dan membaca deretan karakter dari keyboard sampai user menekan tombol ENTER.. ENTER tidak disimpan melainkan tanda akhir NULL („0‟). Contoh:  gets(str); // char str[10] 1.4.3 Fungsi printf() Fungsi printf() akan menampilkan output pada monitor. Bentuk dasarnya yaitu: printf(“string kontrol “, deretan argument); contoh:  printf( “%s %d”,”Ini adalah sebuah string”, 200);  printf( “Ini adalah sebuah string %d “,200); 1.5 CONTOH PROGRAM C SEDERHANA Dalam menulis program, sebaiknya diawali dengan pemberian penjelasan tentang tujuan. Hal ini dapat diletakkan dalam bentuk komentar. Pernyataan berupa komentar ditandai dengan tanda (/*…….*/).
  12. 12. /* Penjelasan tentang tujuan program, nama pembuat, tanggal pembuatan program dsb */ #include <stdio.h> #include <conio.h> /*Turbo C preprocessor */ int main() { /* deklarasi variabel yang digunakan */ int bilangan_bulat1, bilangan_bulat2 ; float bilangan_desimal1, bilangan_desimal2; /*input dari keyboard */ printf(“Masukkan input dari keyboard”); scanf(“%d”, &bilangan_bulat1); ……… /*proses*/ /*output ke monitor */ printf(“ Nilai bilangan_bulat1 = %d n“, bilangan_bulat1); getch(); return 0; /*untuk menampilkan screen output */ /*nilai balik fungsi main() */ } Latihan Bab 1 1. Apakah penulisan nama variabel di bawah ini benar menurut aturan bahasa C. Jika salah, perbaiki. a. McDonald b. O‟Brien c. 4_Score d. Is_Largest_int e. _mainprog f. A1B2C3 g. Giants h. 7th_inning 2. Tuliskan deklarasi C untuk variabel dan tipe data: a. Sebuah bilangan bulat N dengan nilai awal 5 b. Sebuah bilangan bulat 16-bit M dengan nilai awal 5
  13. 13. c. Sebuah bilangan bulat 32-bit L dengan nilai awal 600055 d. Sebuah karakter C dengan nilai awal „A‟ e. Dua bilangan bulat P dan Q . Nilai P tidak diinisialisasi sedangkan nilai Q bernilai awal 455 3. Berikan nilai desimal ASCII yang mewakili karakter a. „V‟ b. „6‟ c. „!‟ d. „~‟ e. „t‟ f. Tab g. BackSpace h. Carriage Return 4. Tentukan bentuk String yang memiliki deretan kode ASCII a. 66 121 116 101 b. 49 50 51 32 71 111 33 Latihan Pemahaman Program : Coba jabarkan langkah-langkah dalam program ini dan bagaimana hasil keluarannya. /* Program contoh penggunaan int dan unsigned int */ #include <stdio.h> #include <conio.h> /*Turbo C preprocessor */ int main() { /* deklarasi variabel yang digunakan */ int i; unsigned int j; clrscr() ; // bersihkan layar /*proses*/ j=60000; i=j; /*output ke monitor */ printf(“%d %u n“, i,j); getch(); /*untuk menampilkan screen output */ return 0; /*nilai balik fungsi main() */ }
  14. 14. /* Program penggunaan scanf */ #include <stdio.h> #include <conio.h> int main() { char nm[10]; int umur; printf(„Siapa nama Anda : ”); scanf(“%s”, nm); /*nama disimpan dalam variabel nm */ printf(“Berapa umur Anda”); scanf(“%d”, &umur); /*nilai disimpan dalam variabel umur*/ printf(“Umur saya %d tahun n”,umur); getch(); return 0; } /*Program#5 : Penulisan variabel char dan string */ int main() { char ch; char str[80]; /*deklarasi variabel bertipe karakter*/ /*deklarasi variabel bertipe string */ printf(“Ketikkan sembarang tomboln”); ch=getche(); /*baca satu karakter dari keyboard*/ printf(“Karakter yang diketik adalah %cn”,ch); printf(“Masukkan nama Anda dan akhiri dengan 0 : ”); gets(str); printf(“Hallo %sn”, str); getch(); return 0; }
  15. 15. BAB II OPERATOR 2.1 Operator Aritmatika Program komputer melakukan perhitungan dengan cara mengkombinasikan bilangan numeric dengan operator. Negasi (-) merupakan operator unary karena terdiri dari satu nilai numerik dan akan merubah tanda nilai tersebut. Sedangkan (+),(-),(*) dan (/) adalah operator binary karena memerlukan dua operand.  Misalkan dideklarasikan int M=6,N=8; double X=2.3, Y=6.7; (-M-N+2)*4 = (-14+2)*4 = -48 -X*Y = -15.41 Pada operator (/) terdapat perbedaan untuk tipe bilangan bulat dan bilangan desimal.  Pembagian bilangan bulat 17 / 5 = 3 (hasil pembagian/quotient) 17 % 5 = 2 (sisa hasil pembagian/remainder) 6.0 % 4 (tidak boleh)  Pembagian bilangan desimal 17.0 / 5 = 3.4 4.7 / 2 = 2.35 4.0 / 3 = 1.333333 2.2 Operator Assignment Operator ini berguna untuk memindahkan nilai variabel.  Int I = 3, SIZE = 40, K; K = I + SIZE; SIZE = 50;  K = I = 5; /*deklarasi
  16. 16. 2.3 Operator Compound Assignment Assignment dan operator aritmatik dapat digabungkan menggunakan operator compound Assingment . Variabel op= ekpresi -> dihitung sebagai -> variabel = variabel op ekspresi  Misal X = 14 dan Y = 3 Compound Assignment X += 5; Y += X-2 Y *= 2 Simple Assignment X=X+5 Y = Y + (X-2) Y=Y*2 result X bernilai 19 Y bernilai 15 Y bernilai 6 2.4 Operator Increment dan Decrement Format prefix :  ++X X = 5; Y = ++X * 10; Format postfix: ( increment ) -- X (decrement ) /* operasi ++ dilakukan dulu, jadi X bernilai 6 /* kemudian lakukan perkalian 6 * 10 X++ (increment) X-- (decrement)  X = 5; Y = X-- * 10; /* operasi X * 10 dilakukan terlebih dahulu /* jadi nilai Y = 50. Kemudian nilai X dikurang satu. /* Sekarang X bernilai 4 2.5 Operator Bitwise Operator ini beroperasi pada setiap bit dalam proses penyimpanan.  AND (&) : a = a&b setiap bit dari b diANDkan dengan padanan bit dari a, hasilnya disimpan di variabel a.  OR (|) a=a|b setiap bit dari b diORkan dengan bit padanannya dari a, hasilnya disimpan di variabel a  XOR (^) a=a^b
  17. 17. setiap bit dari b diXORkan dengan bit padanan dari a, hasilnya disimpan di variabel a  NOT (-) a=-a setiap bit di a dirubah (dari 1 menjadi 0 dan kebalikannya)  Geser Kiri (<<) a=a<<4 geser bit sebanyak 4 bit ke kiri, bergulung.  Geser Kanan (>>) a=a>>4 geser bit sebanyak 4 bit ke kanan, bergulung. 2.6 Operator Relational Operator ini berguna untuk membandingkan antara dua variabel, hasilnya berupa boolean (benar=1/salah=0).       Sama dengan (==) Tidak sama dengan (!=) Lebih besar dari (>) Lebih besar/sama dengan (>=) Lebih kecil dari (<) Lebih kecil/sama dengan (<=) 2.7 Operator Logical  AND (&&)  OR (||)  NOT (!) Contoh 2.1 /* Program merubah data tinggi seseorang dalam satuan feet, inch dan dirubah ke dalam satuan m, cm*/ #include <stdio.h> #include <conio.h> /*Turbo C preprocessor */ int main() { /* deklarasi variabel yang digunakan */ const float inch_ke_cm = 2.54; int totalInchi, feet,inch ; float m, cm;
  18. 18. /*input dari keyboard */ printf(“Masukkan ukuran tinggi Anda dalam satuan inchi”); scanf(“%d”, &totalInchi); /*proses*/ feet = totalInchi/12; inch = totalInchi%12; cm = inch_ke_cm * totalInchi; //konversi ke float m = cm/100; /*output ke monitor */ printf(“ Ukuran tinggi Anda = %d feet dan %d inchi “, feet,inch); printf(“ Ukuran tinggi Anda dalam satuan cm = %f n“, cm); printf(“ Ukuran tinggi Anda dalam satuan m = %f n“, m); getch(); return 0; /*untuk menampilkan screen output */ /*nilai balik fungsi main() */ } Jika program ini dijalankan: Masukkan ukuran tinggi Anda dalam satuan inchi 67 Ukuran tinggi Anda = 5 feet dan 7 inchi Ukuran tinggi Anda dalam satuan cm = 170.18 Ukuran tinggi Anda dalam satuan m = 1.7018
  19. 19. BAB III KONSEP PENGULANGAN 3.1 PENGULANGAN FOR (FOR_LOOP) Dalam pembuatan program, seringkali kita dihadapkan oleh masalah pengulangan. Proses yang berulang-ulang sebanyak n kali dalam bahasa C dapat dinyatakan dengan pernyataan for. Penulisan for dengan satu perintah tidak perlu menggunakan  for (inisialisasi; syarat pengulangan; perubah nilai cacah) pernyataan/perintah; Contoh 3.1 : #include <stdio.h> #include <conio.h> int main() { int i; for(i=0; i<=5; i++) printf("Langkah ke %d n", i); getch(); return 0; } Penulisan for dengan jumlah perintah lebih dari satu menggunakan tanda {}.  for (inisialisasi;syarat pengulangan;perubah nilai cacah) { pernyataan/perintah; pernyataan/perintah; pernyataan/perintah; } Contoh 3.2: #include <stdio.h> #include <conio.h> int main() { int i; int masukan; for(i=0; i<=5; i++) { printf("Masukkan bilangan Ke- %d ",i); scanf("%d",&masukan); printf("Masukkan Ke- %d adalah %d n",i,masukan); } getch(); return 0; }
  20. 20. Inisialisasi bisa terdiri lebih dari satu variabel.  for(inisialisasi1, inisialisasi2;syarat pengulangan; perubah nilai cacah) Contoh 3.3: #include <stdio.h> #include <conio.h> int main() { int i; int k; for(i=0, k=2; i<=5; i++) { k=k+i; printf("Nilai k = %d n", k); } getch(); return 0; } Untuk pengulangan tak berhingga  for( ; ; ) Contoh 3.4: #include <stdio.h> #include <conio.h> int main() { for( ; ; ) { char ch; printf("ntSelamat Datangnn"); printf("Jika ada mau keluar tekan 'Y' atau 'y' "); ch=getche(); if(ch=='Y'||ch=='y') break; } getch(); return 0; } Catatan: ch adalah variabel bertipe karakter , getche adalah fungsi built-in untuk menerima masukan berupa karakter kemudian ditampilkan ke layar break adalah pernyataan untuk memberhentikan proses. Apabila dalam suatu pengulangan terdapat didalamnya pengulangan lagi maka pengulangan demikian disebut nested for
  21. 21.  Nested for Contoh 3.5: #include <stdio.h> #include <conio.h> int main() { int i; int j; for(i=0; i<=5; i++) for(j=0; j<=3; j++) { printf(" Nilai i= %d dan j= %d n",i,j); } getch(); return 0; } 3.2. PENGULANGAN WHILE (WHILE_LOOP) Proses pengulangan lain dapat dinyatakan dengan perkataan WHILE. Bedanya dengan for terletak di perubah nilai cacah. Pada pernyataan while hanya diperlukan satu syarat saja.  while (syarat) pernyataan/perintah; Contoh 3.6: #include <stdio.h> #include <conio.h> int main() { int i; int j; i=0; while(i<5) { printf("Nilai Kurang dari Lima n"); } getch(); return 0; }  while (syarat) { pernyataan; pernyataan; }
  22. 22. Contoh 3.7: #include <stdio.h> #include <conio.h> int main() { int i; float bilangan; i=0; while(i<5) { printf("Masukkan suatu bilangan n"); scanf("%d",&bilangan); i++; } getch(); return 0; } 3.3. PENGULANGAN DO_WHILE (DO_WHILE LOOP) Pengulangan do_while meletakkan syarat setelah perintah-perintah yang ada. Berarti semua perintah yang terdapat didalam do_while akan diproses minimal satu kali, walaupun nantinya syarat yang diberikan tidak dipenuhi. Disinilah letak perbedaannya dengan pernyataan while. Pada while, jika syarat tidak dipenuhi, maka semua pernyataan didalamnya tidak akan diproses.  do { perintah/pernyataan; perintah/pernyataan; }while( syarat ); Contoh 3.8: #include <stdio.h> #include <conio.h> int main() { int i; float bilangan; i=0; do { printf("Masukkan suatu bilangan n"); scanf("%d",&bilangan); i++; }while(i<5) getch(); return 0; }
  23. 23. BAB IV KONSEP PENCABANGAN Selain proses pengulangan, dalam pembuatan program terdapat pula masalah untuk menentukan pilihan. Sebagai contoh, bagaimana menentukan suatu bilangan adalah bilangan genap atau bilangan ganjil. Cara penyelesaiannya yaitu dengan menggunakan konsep pencabangan. Bahasa C menyediakan pernyataan IF atau IFELSE, atau pernyataan SWITCH-CASE. 4.1. PENCABANGAN IF  if (syarat) perintah; Contoh 4.1 : #include <stdio.h> #include <conio.h> int main() { int a; a=4; if(a%2==0) printf("Nilai a adalah genap"); getch(); return 0; }  if (syarat) { perintah/pernyataan; perintah/pernyataan; } Contoh 4.2 0 #include <stdio.h> #include <conio.h> int main() { int a; int b; a=3,b=7; if(a > b) { printf("Nilai a lebih besar dari nilai b n"); printf("Selisih nilai mereka adalah %d n", a-b); } getch();
  24. 24. return 0; } 4.2. PENCABANGAN IF_ELSE  if(syarat) perintah; else perintah; Contoh: if(a%2!=0) printf(“Bilangan a adalah ganjiln”); else printf(“Bilangan a adalah genap”);  if (syarat) { perintah/pernyataan; perintah/pernyataan; } else { perintah/pernyataan; perintah/pernyataan; } Contoh 4.3. #include <stdio.h> #include <conio.h> int main() { float a, b, c, t, u ; a=9.0; b=4.0; c=2; if (a==b && c<=5) { t=a+b/5*c; printf("Nilai t = % f n",t); } else { u=(2-a/3)+(a*b-4); printf("Nilai u=%f n",u); } getch(); return 0; }
  25. 25.  if (syarat) if(syarat) perintah; else perintah; else if(syarat) perintah; else perintah; Contoh 4.4 : #include <stdio.h> #include <conio.h> int main() { int umur; printf("Berapa umurnya anda : "); scanf("%d", &umur); if (umur >40) if(umur<60) printf("Anda sudah tuan"); else printf("Anda termasuk manulan"); else if(umur<20) printf("Anda dalam masa remajan"); else printf("Anda sudah dewasan"); getch(); return 0; } 4.3. LOOP BREAKING Jika pernyataan break terdapat dalam suatu proses pengulangan, komputer akan segera memberhentikan proses pengulangan dan langsung ke luar loop menuju pernyataan selanjutnya. Contoh 4.5 : #include <stdio.h> #include <conio.h> int main() { int t; for(t=0;t<100;t++) { printf(“”%d”,t); if(t==10) break; } getch(); return 0; }
  26. 26. 4.4. PERNYATAAN CONTINUE Cara kerja pernyataan continue hampir sama dengan break, hanya saja pada continue proses tidak segera berhenti melainkan memaksa proses iterasi berikutnya dengan mengabaikan pernyataan berikutnya. Contoh 4.6 : #include <stdio.h> #include <conio.h> int main() { int x; for(x=0; x<100; x++) { if( x%2 ) continue; printf(“%d “, x); } getch(); return 0; } 4.6. PENCABANGAN SWITCH_CASE  switch(variabel) { case 1: pernyataan; break; case 2 : pernyataan; break; …. default: pernyataan; break; }  switch(variabel) { } case „a‟: pernyataan; break; case „b‟ : pernyataan; break; …. default: pernyataan; break;
  27. 27. Contoh 4.7 : #include <stdio.h> #include <conio.h> int main() { int angka; printf("Masukkan angka (1-7) "); scanf("%d",&angka); switch(angka) { case '1': printf("M I N G G U"); break; case '2': printf(" S E N I N "); break; case '3': printf("S E L A S A "); break; case '4': printf("R A B U "); break; case '5': printf("K A M I S "); break; case '6': printf("J U M A T "); break; case '7':printf("S A B T U "); break; default : printf(" ANDA SALAH MEMBERI ANGKA"); } getch(); return 0; } BAB V KONSEP ARRAY DAN STRING Pendeklarasian variabel pasti akan dijumpai saat pembuatan program. Untuk variabel yang jenisnya sama, seperti nomer registrasi pokok mahasisma, diperlukan pendeklarasian variabel yang banyak. Untuk memudahkan pembuat program maka disediakan pendeklarasian variabel dengan nama yang sama, hanya saja diberi indeks nomer dari 0 sampai bilangan tertentu. NRP[0], NRP[1], ......NRP[100]; 5.1. PENDEKLARASIAN ARRAY 1 DIMENSI Suatu nama variabel yang diberi indeks bilangan tertentu disebut dengan ARRAY. ARRAY adalah kumpulan data yang bertipe sama, dan diberi nama dengan ditambahkan indeks nomer.  Untuk menyatakan data suhu bertipe integer sebanyak 5 buah, cara biasa dapat dituliskan demikian
  28. 28.  int suhu1, suhu2, suhu3, suhu4, suhu 5 Hal ini tentu menyulitkan jika data yang ingin dituliskan banyak. Alternatif lain yang disediakan oleh bahasa pemrograman yaitu dengan menggunakan konsep ARRAY. Maka data suhu di atas dapat ditulis dengan cara lain yaitu:  int suhu[5] Artinya suhu1 bisa dipadankan dengan suhu[0], suhu 2 dipadankan dengan suhu[1] dan seterusnya. Perlu diingat, bahasa C memulai indeks dari 0 sampai nilai yang terdapat di dalam kurung siku dikurang satu. Dengan kata lain  int suhu[5] menyatakan adanya 5 variabel suhu yaitu suhu[0], suhu[1], suhu[2], suhu[3] dan suhu[4]. Variabel suhu[5] tidak terdefinisi karena indeksnya mulai dari 0. Semua tipe bilangan dapat dinyatakan dalam variabel ARRAY, misalnya tipe float  float berat_tepung[4] Deklarasi ini menyatakan ada 4 variabel bertipe float, dimulai dari berat_tepung[0], berat_ tepung[1], berat_ tepung[2], dan berat_ tepung[3]. Variabel berat_tepung[4] tidak terdefinisi. Untuk menyatakan string (deretan karakter ) digunakan variabel ARRAY bertipe karakter. Variabel ini digunakan untuk menyimpan nama atau informasi berupa karakter.  char nm[20] nm=”Indonesia”; Artinya, nm[0]=‟I‟, nm[1]=‟n‟ …, nm[8]=‟a‟, dan nm[9]=‟0‟. Di bawah ini ada contoh program: Contoh 5.1 /* Program menerima masukan dari keyboard nilai data berupa ARRAY tipe integer Berdimensi satu*/ #include <stdio.h> /*Turbo C preprocessor */ #include <conio.h> int main() { /* deklarasi variabel yang digunakan */
  29. 29. int suhu[5]; int i; int jumlah=0; /*input dari keyboard */ for(i=0;i<5;i++) { printf(“Masukkan suhu ke- %d ”, i); scanf(“%d”, &suhu[i]); } /*proses*/ for(i=0;i<5;i++) { jumlah=jumlah+suhu[i]; } /*output ke monitor */ clrscr(); Printf(“nn”); for(i=0;i<5;i++) { printf(“Nilai suhu ke- %d = %d n”, i , suhu[i]); } printf(“ Jumlah totalnya = %d “, jumlah); /* untuk menampilkan jumlah */ getch(); /*untuk menampilkan screen output */ return 0; /*nilai balik fungsi main() */ } Contoh 5.2 /* Program menerima masukan dari keyboard data berupa ARRAY tipe karakter Berdimensi satu*/ #include <stdio.h> #include <conio.h> /*Turbo C preprocessor */ int main() { /* deklarasi variabel yang digunakan */ char as[5]; char bs[5]; char cs[10]; int i; int j=0; int k=0; clrscr(); /*input dari keyboard */
  30. 30. printf("Masukkan 4 deretan karakter "); scanf("%s",&as); printf("Masukkan 4 deretan karakter "); scanf("%s",&bs); /*proses*/ for(i=0;i<8;i=i+2) { cs[i] =as[j++]; cs[i+1]=bs[k++]; } cs[8]='0'; /*output ke monitor */ printf("Tulisan cs = %s ", cs); getch(); return 0; } /*untuk menampilkan screen output */ /*nilai balik fungsi main() */
  31. 31. 5.2. PENDEKLARASIAN ARRAY 2 DIMENSI Array 2 dimensi diperlukan untuk permasalahan yang berbentuk tabel atau matriks. Misalkan akan disimpan data suhu di suatu tempat dengan ketentuan yaitu data suhu yang akan disimpan berupa data suhu pada pagi hari, suhu siang hari dan suhu malam hari. Data ini dipantau mulai dari hari senin sampai minggu. Jika hari senin dinyatakan dengan indeks 0 Jika hari senin dinyatakan dengan indeks 0 Jika hari selasa dinyatakan dengan indeks 1 diwakili dengan Jika hari rabu dinyatakan dengan indeks 2 BARIS Jika hari kamis dinyatakan dengan indeks 3 Jika hari jumat dinyatakan dengan indeks 4 Jika hari sabtudinyatakan dengan indeks 5 Jika hari minggu dinyatakan dengan indeks 6 Pagi diberi indeks 0 Siang diberi indeks 1 Malam diberi indeks 2 diwakili dengan KOLOM Maka array yang dapat menyimpan data dalam kasus ini berbentuk : ARRAY 2 DIMENSI Dan dideklarasikan dalam program seperti : float Suhu[7][3]; Contoh lain berupa Aplikasi dengan Matriks.
  32. 32. Contoh 5.3 /* Program menerima masukan dari keyboard nilai data berupa ARRAY tipe float berdimensi dua*/ #include <stdio.h> /*Turbo C preprocessor */ #include <conio.h> int main() { /* deklarasi variabel yang digunakan */ float suhu[7][3]; int i,j; int jumlah=0; /*input dari keyboard */ for(i=0;i<7;i++) for(j=0;j<3;j++) { printf(“Masukkan suhu hari- %d – saat %d ”, i,j); scanf(“%d”, &suhu[i][j]); } /*proses*/ for(i=0;i<7;i++) for(j=0;j<3;j++) { jumlah=jumlah+suhu[i][j]; } /*output ke monitor */ clrscr(); Printf(“nn”); for(i=0;i<7;i++) for(j=0;j<3;j++) { printf(“Nilai suhu hari- %d – saat % = %f n”, i , suhu[i][j]); } printf(“ Rata = %f “, jumlah/21); /* untuk menampilkan rata */ getch(); /*untuk menampilkan screen output */ return 0; /*nilai balik fungsi main() */ }
  33. 33. Contoh 5.4 /* Program Array 2-D*/ /* Penjumlahan Dua Matriks Bujur Sangkar */ #include <stdio.h> #include <math.h> int main () { int N; int i,j; float A[10][10]; float B[10][10]; float C[10][10]; clrscr(); printf("nntMasukkan Berapa Orde Matriks yang Anda Inginkan = "); scanf("%d",&N); printf("nntMasukkan Data Matriks pertaman"); for (i=0;i<N;i++) for (j = 0;j<N;j++) {printf("nMasukkan Angka Baris %d dan Kolom %d = ",i+1,j+1); scanf("%f",&A[i][j]); } printf("nntMasukkan Data Matriks Keduan"); for (i=0;i<N;i++) for (j=0;j<N;j++) {printf("nMasukkan Angka Baris %d dan Kolom %d = ",i+1,j+1); scanf("%f",&B[i][j]); } for (i=0;i<N;i++) for (j=0;j<N;j++) C[i][j] = A[i][j] +B[i][j]; printf("nntJumlah Data Kedua Matriks = n"); for (i=0;i<N;i++) for (j=0;j<N;j++) printf("%.0f",C[i][j]); getch (); return 0; }
  34. 34. Tugas 5: 1. Buatlah program yang dapat menerima 2 data berupa matriks berordo 3 x 3. Kemudian hitung persamaan di bawah ini : C=2*A+3*B Tampilkan semua matriks tersebut. 2. Sebuah Array 2 dimensi berukuran 5x5 berisi data jumlah siswa (bilangan bulat) pada kelas 1a, 1b, 1c, 1d dan 1e dari tahun 1996 – 2000. 1996 1997 1998 1999 2000 1a 25 26 32 30 26 1b 33 33 25 34 27 1c 35 34 35 32 28 1d 25 24 27 29 29 1e 25 24 28 30 30 Hitung jumlah siswa keseluruhan dari tahun 1996-2000. Hitung jumlah siswa pada tahun 2000.
  35. 35. BAB VI FUNGSI Akan dibuat suatu program untuk melakukan proses aljabar sederhana yaitu proses penjumlahan, pengurangan, perkalian maupun pembagian. Semua proses ini bisa dibuat dalam satu program seperti di bawah ini: Contoh 6.1 /*Program#1.1: Program Aritmatika sederhana (+,-,*,/) */ #include <stdio.h> #include<conio.h> int main() { float a,b,hasil; clrscr(); printf(“Masukkan bilangan a “); scanf(“%f”,&a); printf(“Masukkan bilangan b “); scanf(“%f”,&b); printf(“n======================================”); //proses penjumlahan hasil = a+b; printf(“nHasil penjumlahan %f dan %f adalah %f “, a,b,hasil); printf(“n---------------------------------------------------------------”); //proses pengurangan hasil = a-b; printf(“nHasil selisih %f dan %f adalah %f “, a,b,hasil); printf(“n---------------------------------------------------------------”); //Lanjut halaman berikutnya
  36. 36. //proses perkalian hasil = a*b; printf(“nHasil perkalian %f dg %f adalah %f “, a,b,hasil); printf(“n---------------------------------------------------------------”); //proses pembagian while(b==0) //Bilangan penyebut tidak boleh bernilai nol { printf(“nBilangan b tidak boleh 0n Masukkan bilangan b “); scanf(“%f”,&b); } hasil = a/b; printf(“nHasil %f dibagi %f adalah %f “, a,b,hasil); printf(“n======================================”); printf(“n SELESAI “); getch(); return 0; } //Akhir Program#1.1 Proses penjumlahan, pengurangan, perkalian maupun pembagian pada program sebelumnya masing-masing dapat dibuatkan dalam modul yang terpisah-pisah yang akan disebut sebagai fungsi. Tujuan dari pembuatan fungsi adalah untuk memudahkan pembuat program dalam mengembangkan programnya. Selain itu, dengan membuat fungsi ukuran program dapat diperkecil. Bagaimana membuat fungsi ??? 6.1 ATURAN PEMAKAIAN FUNGSI DALAM PROGRAM Hal yang perlu diperhatikan dalam proses pembuatan fungsi : 1. Pembuatan prototipe fungsi yang diletakkan sebelum penulisan program main 2. Pemanggilan fungsi di dalam program main 3. Penjabaran fungsi setelah program main selesai Silahkan perhatikan program 1.2 :
  37. 37. /*Program#1.2 Mencari nilai pangkat dari suatu bentuk x pangkat y */ #include <stdio.h> #include <conio.h> int pangkat (int x, int y); 1 //prototipe fungsi pangkat , // dengan parameter x,y dan syarat y>=0 int main() { } int bil1,bil2; 2 int nilaiPangkat; clrscr(); printf(”Masukkan dua bilangan sebagai a pangkat b ”); scanf(”%d%d”, &bil1 &bil2); nilaiPangkat=pangkat(bil1,bil2); // argumen bil1 dan bil2 printf(”nNilai %d pangkat %d adalah %d ”, bil1,bil2, nilaiPangkat); getch(); return 0; 3 int pangkat(int x,int y) //Penjabaran fungsi pangkat { int hasil=1; if (y==0) hasil = 1; else for (i=1;i<=y;i++) hasil = hasil*x; return hasil; } //Akhir Program#1.2 Pembuatan prototipe fungsi yang diletakkan sebelum penulisan program main merupakan pemberitahuan saat proses kompilasi, bahwa ada suatu fungsi bernama tertentu yang akan digunakan di dalam program main dengan bentuk seperti yang dituliskan. Pemanggilan fungsi di dalam program main berguna untuk memasukkan argumen tertentu pada posisi parameter agar diproses oleh fungsi kemudian hasilnya dikembalikan pada program main. Cara penulisann penjabaran fungsi setelah program main selesai harus sama dengan prototipenya, hanya saja tidak diakhiri oleh tanda (;) titik koma. Ini perlu selalu diingat!!. Di bagian sinilah terdapat semua proses yang diperlukan untuk menyelesaikan tujuan dari fungsi yang akan dibuat. Hindari penggunaan printf dalam fungsi yang bertujuan untuk mencari suatu nilai tertentu. Untuk fungsi-
  38. 38. fungsi yang bertujuan sebagai input ataupun sebagai output, silahkan gunakan printf. Di bawah ini diberikan contoh. Mari pusatkan kembali perhatian kita ke program pertama yaitu program perhitungan aljabar sederhana meliputi penjumlahan, pengurangan, perkalian maupun pembagian. Fungsi Penjumlahan dapat dibuat seperti : float tambah(float a, float b) { float hasil; hasil=a+b; return hasil; } Silahkan lanjutkan pembuatan fungsi untuk proses pengurangan, perkalian dan pembagian. Yang perlu diperhatikan untuk membuat suatu fungsi adalah: 1. Nama fungsi 2. Nilai balik fungsi 3. Parameter fungsi 4. Penulisan return Keterangan: - Nama fungsi adalah nama yang ingin diberikan untuk fungsi yang akan dibuat. Silahkan pilih nama untuk mewakili fungsi tersebut. Jika namanya terdiri dari dua kata maka jangan diberi spasi kosong. Contoh “fungsiTambah” (jangan ditulis “fungsi Tambah”). - Nilai balik fungsi adalah hasil keluaran yang diinginkan dari fungsi itu, apakah bertipe float, integer atau karakter, atau tidak ada nilai balik sama sekali. Jika fungsi tidak ada hasil keluarannya maka sebagai nilai balik fungsi tuliskan void. Selain itu tuliskan tipe data nilai balik yang diinginkan (bisa float, int, char atau double dll). Nilai balik dicirikan dengan penggunaan kata return. - Parameter fungsi adalah sesuatu yang dijadikan nilai masukan untuk fungsi tersebut. Untuk fungsi penjumlahan tentunya diperlukan dua buah bilangan yang akan dijumlahkan, maka disediakan dua parameter masukan. Dengan demikian program proses aljabar tadi bisa dirubah penulisannya sbb: /* Program#1.3: Program proses aljabar dalam bentuk modul-modul */ #include <stdio.h> #include <conio.h> //Prototipe Fungsi
  39. 39. float tambat(float a, float b); float kurang(float a, float b); float kali(float a, float b); float bagi(float a, float b); void garis(char ch); //Program Utama int main() { float bil1,bil2,hasil; clrscr(); printf(“Masukkan bilangan a “); scanf(“%f”,&bil1); printf(“Masukkan bilangan b “); scanf(“%f”,&bil2); garis(„=‟); //proses penjumlahan hasil = tambah(bil1,bil2); //pemanggilan fungsi tambah dengan 2 argumen printf(“nHasil penjumlahan %f dan %f adalah %f “,bil1,bil2,hasil); garis(„-‟); //proses pengurangan hasil = kurang(bil1,bil2); printf(“nHasil selisih %f dan %f adalah %f “,bil1,bil2,hasil); garis(„-‟); hasil = kali(bil1,bil2); printf(“nHasil perkalian %f dg %f adalah %f “,bil1,bil2,hasil); garis(„-‟); //proses pembagian while(bil2==0) { printf(“nBilangan b tidak boleh 0n Masukkan bilangan b “); scanf(“%f”,&bil2); } hasil = bagi(bil1,bil2); printf(“nHasil %f dibagi %f adalah %f “,bil1,bil2,hasil); garis(„=‟); printf(“n SELESAI “); getch(); return 0; } //Modul-modul yang akan digunakan dalam program utama //Fungsi Penjumlahan float tambah(float a, float b) { float hasil; hasil=a+b; return hasil; // hasil memberi nilai balik untuk fungsi tambah }
  40. 40. //Fungsi Pembagian float bagi(float a, float b) { float hasil; hasil=a/b; return hasil; // hasil memberi nilai balik untuk fungsi bagi } //Fungsi Pengurangan float kurang(float a, float b) { float hasil; hasil=a-b; return hasil; // hasil memberi nilai balik untuk fungsi kurang } //Fungsi Perkalian float kali(float a, float b) { float hasil; hasil=a*b; return hasil; //hasil memberi nilai balik untuk fungsi kali } //Fungsi Garis void garis(char ch) { static i; printf(“n”); for(i=1;i<50;i++)] { printf(“%c”,ch); } return; //tidak ada nilai balik untuk fungsi garis } 6.2. DIAGRAM PEMANGGILAN FUNGSI Program#1.4 mengilustrasikan jalannya proses pemanggilan suatu fungsi dalam program. Jika fungsi dipanggil maka proses akan dilanjutkan pada perintah perintah yang ada di dalam fungsi. Setelah selesai semua perintah di dalam fungsi, proses akan kembali ke program utama pada posisi satu baris dibawah pemanggilan fungsi tadi. Jelasnya dapat dilihat pada program#1.4 /* Program#1.4: #include<stdio.h> #include<conio.h> //Prototip fungsi void a(); */
  41. 41. void b(); //Program Utama int main() { clrscr(); printf(“ di main menu”) a(); printf(“sudah selesai menjalankan fungsi a()”); b(); printf(“sudah selesai menjalankan fungsi b()”); printf(“Program selesai”); getch(); return 0; } void a() { printf(“di dalam fungsi a()”); } void b() { printf(“di dalam fungsi b()”); } Coba jalankan program di atas ini, lihat hasilnya. TUGAS BAB VI: 1. Di bawah ini adalah suatu fungsi dengan nama luas_segitiga. Fungsi ini memiliki nilai balik berupa bilangan desimal berguna untuk memberi hasil perhitungan luas segitiga. Karena menghitung luas segitiga salah satunya diperlukan masukan berupa nilai alas dan nilai tinggi maka fungsi memerlukan dua parameter dengan tipe bilangan desimal. float luas_segitiga (float alas, float tinggi) { float luas; luas = (alas*tinggi)/2; return luas; } Buatlah program untuk dapat memanggil fungsi ini. Jika program telah sukses, tambahkan lagi fungsi menghitung luas lingkaran dan luas persegi panjang dan panggil fungsi-fungsi tersebut pada program utama. 2. Fungsi mencari nilai mutlak dari suatu bilangan. Fungsi pustaka abs(), diperoleh dari kata absolut yaitu mutlak, mengubah nilai apapun menjadi positif.
  42. 42. Bentuk dasar : int abs(int x) //Program Tugas1-2 #include <stdio.h> #include <conio.h> #include <math,h> int main() { int x= -1234; // variabel x clrscr(); // untuk membersihkan layar // cetak pada monitor printf(“nilai : %d, nilai mutlaknya %d n”,x,abs(x)); // tampilkan segera ke layar output getch(); return 0; } Buatlah fungsi anda sendiri yang prinsip kerjanya sama dengan fungsi abs() . Beri nama fungsi anda dengan nama yang berbeda dari fungsi pustakanya. 3. Lanjutkan program Tugas1-3 di bawah ini. /*Program Tugas1-3 Program Menjumlahkan angka 0 sampai 9 */ #include<stdio.h> #include<conio.h> // Prototip fungsi void prosesJumlah( int x); // Proses Penjumlahan 0-9 void tampilkan(); // Tampilkan jumlah akhirnya // Variabel global untuk menyimpan hasil penjumlahan int jumlah; int main() { int angka; jumlah=0; clrscr(); for(angka=0;angka<10;angka++) prosesJumlah(angka); tampil(); getch(); return 0; } void prosesJumlah(int x) { //Silahkan tulis perintah anda
  43. 43. Beri nama program xxyyyTug13.c 4. Buatlah program mencari nilai terbesar, nilai terkecil, jumlah total berbobot dari 3 bilangan desimal sembarang (a,b,c). Bentuk 3 fungsi yaitu: 1. Fungsi mencari nilai terbesar dari 3 bilangan tersebut 2. Fungsi mencari nilai terkecil dari 3 bilangan tersebut 3. Fungsi mencari jumlah total berbobot dari 3 bilangan tersebut Total = 3.5 a + 4.0 b + 2.5
  44. 44. BAB VII STRING Bab ini akan memperkenalkan bentuk fungsi pustaka yang berguna untuk membuat program dengan tipe data string. 7.1 FUNGSI strchr Fungsi strchr : fungsi untuk menemukan suatu karakter tertentu yang pertama muncul pada suatu deretan karakter. Contoh 7.1: /*Program contoh penggunaan strchr */ #include<stdio.h> #include<conio.h> #include<string.h> int main() { char string[15]; char *ptr, c='r'; strcpy(string,"This is a string"); ptr=strchr(string,c); if(ptr) printf("The character %c is at position %d n",c,ptr-string); else printf("The character was not foundn"); getch(); return 0; } 7.2 FUNGSI strcmp Fungsi strcmp : fungsi untuk membandingkan antara dua string Contoh 7.2: /*Program contoh penggunaan strcmp */ #include<stdio.h> #include<conio.h> #include<string.h> int main() { char *buf1="aaa", *buf2="bbb",*buf3="ccc"; int ptr; ptr = strcmp(buf2,buf1);
  45. 45. if(ptr>0) printf("Buffer2 is greater than buffer1 n"); else printf("Buffer2 is less than buffer1 n"); ptr=strcmp(buf2,buf3); if(ptr>0) printf("Buffer2 is greater than buffer3 n"); else printf("Buffer2 is less than buffer3 n"); getch(); return 0; }
  46. 46. BAB VIII POINTER Pada bab ini akan di bahas mengenai konsep pointer dalam pemrograman. Apa itu pointer? Pointer adalah suatu variabel khusus yang berisi data berupa alamat tertentu. Beda dengan variabel yang telah dipelajari sebelumnya, karena variabel yang telah dipelajari berisi suatu data yang berupa bilangan atau deretan karakter. Untuk apa data yang berupa alamat? Perlu diingat bahwa setiap byte di dalam memori komputer memiliki alamat tertentu. Pada komputer yang memiliki memori 640K, alamat memori dimulai dari 0 sampai dengan alamat memori tertinggi yaitu 655359. Variabel yang kita kenal sebelumnya juga disimpan di memori ini, walaupun tidak disebutkan alamatnya langsung. Untuk menunjuk ke suatu alamat memori secara langsung digunakanlah pointer ini. Jadi sebenarnya pointer itu isinya alamat. Contoh: Misalkan pint adalah variabel pointer, vint adalah variabel yang berisi data bilangan bulat dan vint berada pada alamat 0xFFF2. Maka pointer pint dapat diatur agar menunjuk ke variabel vint. Alamat memori 1000 Variabe di memori 1003 1001 *pint vint = 56 pint=&vint 1002 1003 56 1004 Gambar 4.1 8.1 PENULISAN VARIABEL DAN OPERATOR DARI POINTER Contoh 8.1 memberikan contoh penulisan deklarasi suatu pointer dan penggunaan operator pointer. Ada dua operator pointer yaitu tanda * dan tanda &. Tanda & adalah operator unary yang akan memberikan alamat dari operandnya. Operator * akan memberikan nilai yang ditunjuk oleh pointer tersebut pada alamat tertentu.
  47. 47. Contoh 8.1: #include<stdio.h> #include<conio.h> int main() { int *almt_bil, bil, nil; bil = 100; almt_bil=&bil; //dapatkan alamat bil nil=*almt_bil; // dapatkan isi dari variabel pada alamat tsb. printf(”%d”,nil); // tampilkan isi variabel pada alamat tsb. getch(); return 0; } Contoh 8 .2 adalah contoh program yang salah: Contoh 8.2: #include<stdio.h> #include<conio.h> int main() { Float x=10.1; Float y; Int *p; p = &x; y=*p; printf(”%f”,y); // tampilkan isi variabel y. getch(); return 0; } Porgram ini akan memberikan nilai yang salah, dikarenakan deklarasi p sebagai pointer yang menunjuk ke suatu nilai integer. Sehingga kompiler hanya mentrasfer 2 byte informasi ke y, padahal semestinya harus 4 byte untuk floating point. 8.2. BAGAIMANA MENULIS PERNYATAAN POINTER Contoh 8.3: #include<stdio.h> #include<conio.h> int main() { int x; int *p1,*p2; p1= &x; p2=p1;
  48. 48. printf(”%p”,p2); // tampilkan bentuk heksadesimal dari alamat x, bukan nilai x. getch(); return 0; } 8.3. ARITMATIKA POINTER Dalam bahasa C, operator yang disediakan untuk pointer hanya ada dua yaitu operator + dan operator -.Untuk jelasnya, asumsikan p1 adalah pointer yang menunjuk ke suatu nilat bertipe integer dengan alamat 3000. Kalau ditulis dalam program pernyataan seperti di bawah ini, p1++ ; maka isi dari p1 adalah 3002. Mengapa tidak 3001??? Karena setiap komputer menaikkan p1, maka komputer akan menunjuk ke bilangan integer berikutnya. Demikian juga untuk pengurangan p1--; akan merubah nilai p1 menjadi 2998, jika sebelumnya nilai p1 adalah 3000. Nilai kenaikkan suatu pointer ditentukan oleh tipe dasar nilai yang ditunjuk oleh pointer tersebut ( Gambar4.2). char *ch=3000; int *i=3000; ch 3000 ch+1 3001 ch+2 3002 ch+3 3003 ch+4 3000 ch+5 3001 Gambar 4.2 i i+1 i+2
  49. 49. BAB IX FILE INPUT OUTPUT Saat kita membuat program seringkali diperlukan proses penyimpanan data hasil proses ke suatu file maupun membacanya dari suatu file tertentu. Maka konsep ini diistilahkan dengan kata-kata file input output. Program yang menggunakan konsep ini akan dijalankan dalam lingkungan SHELL. Proses-proses yang dibahas pada bab ini meliputi proses menuliskan karakter ke suatu file, baca karakter dari file dan tampilkan ke layar monitor, gandakan file sumber ke file tujuan. Contoh 9.1: /*Tuliskan karakter ke suatu file */ #include <stdio.h> #include <stdlib.h> #include <conio.h> int main(int argc,char *argv[]) { FILE *fp; //pointer ke suatu file char ch; //variabel untuk menampung data berupa karakter/huruf clrscr(); //bersihkan layar if(argc!=2) //periksa apakah ada dua argumen ketika running program //c:namaprog namafile { printf("anda lupa menyertakan nama filen"); exit(1); } if((fp=fopen(argv[1],"w"))==NULL) //buka file namafile untuk menulis { printf("tidak dapat membuka filen"); exit(1); } do{ printf("Tulis karakter dan akhiri dengan $: "); ch=getchar(); //dapatkan satu karakter dari keyboard putc(ch,fp); //tuliskan satu karakter ke file } while (ch!='$'); getch(); fclose(fp); //tutup kembali file return 0; }
  50. 50. Contoh 9.2: /* Baca karakter dari file dan tampilkan ke layar monitor */ #include <stdio.h> #include <stdlib.h> #include <conio.h> int main(int argc,char *argv[]) { FILE *fp; char ch; clrscr(); if(argc!=2) { printf("anda lupa menyertakan nama file n"); exit(1); } if((fp=fopen(argv[1],"r"))==NULL) { printf("tidak dapat membuka file n"); exit(1); } ch=getc(fp); /*dapatkan satu karakter */ while(ch!=EOF){ putchar(ch); /*tampilkan ke layar monitor */ ch=getc(fp); //dapatkan satu karakter dari file } getch(); fclose(fp); return 0; }
  51. 51. Contoh 9.3: /*Gandakan file sumber ke file tujuan */ #include <stdio.h> #include <stdlib.h> #include <conio.h> int main(int argc,char *argv[]) { FILE *in,*out; char ch; clrscr(); if(argc!=3) { printf("anda lupa menyertakan 2 nama file n"); exit(1); } if((in=fopen(argv[1],"rb"))==NULL) { printf("tidak dapat membuka file sumber n"); exit(1); } if((out=fopen(argv[2],"wb"))==NULL) { printf("tidak dapat membuka file tujuan n"); exit(1); } /* baris di bawah ini melakukan proses ganda dari file sumber*/ while(!feof(in)) putc(getc(in),out); getch(); fclose(in); fclose(out); return 0; } Marilah kita lihat fungsi-fungsi pustaka yang digunakan untuk proses input output ini. 1. fopen() Memiliki fungsi: membuka stream dan menghubungkan stream dengan file FILE *fopen(char *Namafile, char *mode); Contoh: fp = fopen(”test”,”w”); - mode adalah string yang menyatakan status. fp adalah file pointer
  52. 52. - w mode untuk status tulis ke file test. Beberapa macam mode “r” – buka file teks untuk dibaca “w”- ciptakan file teks untuk ditulis ”a” – tambahkan data pada file teks yang ada ”rb”- buka file biner untuk dibaca ”wb”- ciptakan file biner untuk ditulis ”ab”- tambahkan data pada file biner yang ada 2. putc() Berguna untuk : menuliskan karakter ke suatu stream yang sebelumnya telah dibuka melalui fopen(). int putc(char ch, FILE *fp); 3. getc() Fungsi ini digunakan untuk membaca karakter dari suatu stream yang sebelunya telah dibuka melalui fopen() dalam status baca. 4. putchar() Fungsi ini akan menuliskan karakter ke layar monitor. 5. getchar() Fungsi ini akan mengambil karakter dari layar monitor. 6. fclose() Fungsinya: menutup suatu stream yang telah dibuka melalui fopen() Ingat ! setiapkali suatu file dibuka, maka file tersebut harus ditutup kembali sebelum program berakhir. int fclose(FILE *fp);
  53. 53. BAB X STRUKTUR Konsep Struktur adalah fasilitas yang disediakan untuk membentuk tipe data kita sendiri. Program c hanya memberikan tipe data dasar seperti integer, float dsb. Untuk database kita memerlukan tipe data yang merupakan gabungan dari beberapa tipe data dasar ini, maka tipe data tersebut bisa dibuat dengan fasilitas Struktur ini. Struktur adalah kumpulan variabel yang dinyatakan dengan satu nama, berguna untuk mengumpulkan data yang erat satu sama lainnya. Contoh data peserta, variabel yang diperlukan yaitu variabel untuk menyimpan nama peserta, nomer nrp, tanggal lahir, alamat dllnya. Bagaimana menuliskan bentuk struktur dalam suatu program?? Hal-hal yang diperlukan yaitu: Struktur definition : membentuk satu templet yang bisa digunakan untuk membangun variabel struktur. Struktur elemen: Variabel-variabel yang tergabung dalam satu struktur. Contoh: Data pegawai bisa dibuat dalam struktur: struct datapegawai{ char nama[20]; char alamat[20]; float gaji; }; Contoh 10.1 /*struct2.cpp */ /* Contoh program yang menggunakan bentuk structure */ #include <stdio.h> #include <conio.h> #include <math.h> struct { char nama[20]; char alamat[20]; float gaji; } pegawai1; float atof(); int main()
  54. 54. { clrscr(); printf("Nama Pegawai I : "); gets(pegawai1.nama); printf("Alamat Pegawai I : "); gets(pegawai1.alamat); /* scanf("%s",&pegawai1.alamat) */ printf("Gaji Pegawai I : "); gets(gj); pegawai1.gaji=atof(gj); printf("nnData yang telah anda ketikkan : "); printf("n%-20s%30s%10.2f",pegawai1.nama,pegawai1.alamat,pegawai1.gaji); printf("nnTekan sembarang tombol"); getch(); return 0; }
  55. 55. Contoh 10.2 /* Program struktur */ #include <stdio.h> #include <conio.h> #include <math.h> struct inventaris { char nobarang[8]; char namabarang[30]; int jumlah; float harga; float harga_total; }; struct inventaris barang[5]; int main() { int i; clrscr(); for(i=0; i<2; i++) { printf("nobarang : ");gets(barang[i].nobarang); printf("namabarang : ");gets(barang[i].namabarang); printf("jumlah : ");scanf("%d",&barang[i].jumlah); //fflush(stdio); printf("harga : ");scanf("%5.2f",&barang[i].harga); barang[i].harga_total=barang[i].harga*barang[i].jumlah; } /* display */ for(i=0; i<2; i++) { printf("nobarang : %s n",barang[i].nobarang); printf("namabarang :%s n ",barang[i].namabarang); printf("jumlah : %d n",barang[i].jumlah); printf("harga : %f n",barang[i].harga); printf("harga_total : %f n",barang[i].harga_total); } getch(); return 0; }

×