Alpro tutor
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,076
On Slideshare
1,076
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
16
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. BAB III VARIABEL, IDENTIFIER DAN TIPE DATA Pertemuan Minggu III Alokasi Waktu : 2 Jam Pertemuan Standar Kompetensi : Mahasiswa dapat membuat program komputer sederhana dengan menggunakan bahasa C Kompetensi Dasar : Memahami penamaan variabel dan macam-macam tipe data, operator dalam bahasa C Indikator : Mahasiswa dapat memahami konsep variabel dalam bahasa C. Mahasiswa memahami berbagai macam tipe data dalam bahasa C 1.1. IDENTIFIER Semua angka dan huruf yang digunakan dalam program komputer disimpan didalam unit memori. Secara konseptual, lokasi memori didalam unit memori dianalogikan seperti kamar-kamar yang terdapat dalam sebuah hotel. Layaknya kamar hotel setiap memori dalam unit memori memiliki nomor kamar yang berbeda antara satu dengan yang lain. Sebelum muculnya bahasa pemrograman tingkat tinggi seperti C, lokasi memori secara individu di ketahui dari alamatnya, sebagai contoh untuk menyimpan nilai integer 10 dan 100 dalam unit memori di simpan dalam alamat memori 1652 dan 2548. dari ilustrasi diatas maka muncul suatu algoritma untuk menginisialiasai nilai tersebut di dalam unit memori sebagai berikut : Letakkan nilai 100 pada lokasi memori 2548 Letakkan nilai 10 pada lokasi memori 1652 10 10 Gambar 3.1 Penempatan Nilai pada Memori Komputer 165 254 Dalam bahasa tingkat tinggi penempatan suatu nilai dalam alamat memori tertentu diwakili oleh sebuah nama yang diambil dari bahasa alami. Penamaan simbol yang mewakili alamat memori disebut sebagai variabel. Menganalogikan dengan sebuah komplek perumahan, konsep variabel ini serupa dengan pemasangan papan nama pemiliki rumah nomor sekian. Dalam kehidupan sehari-hari penunjukan sebuah rumah akan lebih mudah dengan menunjuk nama pemiliknya misalnya rumah Bapak Hadi atau rumah Bapak Eko dari pada menyebutkan nomor rumahnya misalnya rumah nomor 365A atau rumah noor 101B. Dengan menggunakan variabel ini maka proses penyimpanan nilai 10 dan 100 di dalam unit memori menjadi sebagai berikut: N1 = 10 N2 = 100 1
  • 2. N1 dan N2 adalah nama variabel yang diberikan oleh programer untuk menyinpan nilai 10 dan 100 ke dalam memori yang lokasinya berada pada 1652 dan 2548. Dengan konsep penamaan ini maka seorang programer tidak perlu tahu dimana tepatnya nilai-nilai tersebut disimpan, seorang programer hanya perlu untuk mengetahui tentang nama-nama yang sudah di deklarasikan untuk digunakan pada saat pengembangan program selanjutnya. Analogi dalam bahasa matematika seperti x = y + z. x, y, dan z adalah nama-nama yang diberikan untuk mewakili nilai tertentu yang diwakilinya. Identifier (Pengenal) merupakan nama yang biasa digunakan untuk suatu peubah (variable), konstanta, fungsi, atau obyek lain yang didefinisikan oleh pemrogram. Ketika menggunakan identifier dalam program, perlu identifikasi awal untuk masing-masing variabel tersebut. Aturan yang berlaku untuk penamaan identifier adalah:  Pengenal harus diawali dengan huruf (A .. Z, a .. z) atau karakter garis bawah ( _ ).  Selanjutnya dapat berupa huruf, angka (0 .. 9), karakter garis bawah, atau simbol seperti dolar ($), %, dll.  Pengenal tidak boleh mengandung spasi  Panjang pengenal boleh terdiri lebih dari 32 karakter, akan tetapi hanya 32 karakter pertama yang dianggap berarti.  Contoh: Jumlah jumlah nilai2 total_per_bulan harga_jual$ Karakter garis-bawah biasa digunakan untuk memudahkan pembacaan terhadap suatu pengenal, terutama yang terdiri lebih dari satu kata, karena nama suatu pengenal tidak boleh dipisahkan spasi. Untuk menghindari kesalahan, pengenal tidak boleh menggunakan nama yang tergolong sebagai kata kunci (seperti main), dan sebaiknya tidak menggunakan pengenal yang digunakan untuk nama fungsi, konstanta, variabel atau obyek lain yang digunakan oleh pustaka-pustaka bahasa pemrograman. Contoh idenfier yang dijadaikan pustaka oleh bahasa pemrograman C. Tabel 3.1 Contoh pustaka C No Bahasa C 1 Case 2 Enum 3 Class 4 Const 5 Catch 1.2. PEUBAH (VARIABLE) Peubah atau variabel dalam program digunakan untuk menyimpan suatu nilai, dan nilai yang ada padanya dapat diubah-ubah selama eksekusi program berlangsung. Peubah yang akan digunakan dalam program harus dideklarasikan terlebih dahulu. Pengertian deklarasi disini berarti memesan memori dan menentukan jenis data yang dapat disimpan di dalamnya. Bentuk umum pendeklarasian suatu peubah adalah: tipe nama_peubah; 2
  • 3. Pada pendeklarasian peubah, daftar-peubah dapat berupa sebuah peubah atau beberapa peubah yang dipisahkan dengan tanda koma, contoh: int jumlah; float harga_per_satuan, total_harga; Pernyataan deklarasi yang pertama menyatakan bahwa jumlah adalah nama peubah/vaiabel dan tipe dari perubah terseut adaah int (integer = digunakan untuk menyimpan bilangan bulat), sedangkan pernyataan kedua menyatakan bahwa harga_per_satuan dan total_harga adalah nama peubah yang bertipe float (untuk menyimpan bilangan pecahan), tanda koma (,) diperuntukan sebagai pemisah anatar peubah. Pendeklarasian peubah dalam baris ke dua di atas dapat dideklarasikan menjadi sebagai berikut: float harga_per_satuan; float total_harga; 1.3. TIPE DATA Pada umumnya, program komputer bekerja dengan memanipulasi obyek (data di dalam memori. Obyek akan diprogram bermacam-macam jenis atau tipenya, misalnya nilai numeric, karakter, string, dan rekaman (record). Suatu tipe menyatakan pola penyajian data dalam komputer. tipe data dikelompokan menjadi dua macam. Tipe dasar dan tipe bentukan. Tipe dasar adalah tipe yang dapat langsung dipakai, sedangkan tipe bentukan dibentuk dari tipe dasar atau dari tipe bentukan lain yang sudah didefinisikan. (Munir:2001) 1.3.1. Tipe Dasar Dalam dunia pemrograman yang termasuk tipe dasar adalah: bilangan logika, bilangan bulat, bilangan riil, dan karakter. Bilangan Logika Bilangan logika dinyatakan dalam bentuk angka biner yaitu 1 dan 0. bilangan ini kemudian diterjemahkan kedalam bahasa pemrograman 1 jika pernyataan tersebut bernilai benar (true) dan 0 jika pernyataan tersebut bernilai salah (false). Dalam pemrograman tipe untuk menyatakan bilangan logika dinyatakan dengan boolean. Jika a dan b adalah suatu peubah (variabel) yang bertipe boolean, maka hasil operasi a dan b dengan operator boolean tersebut diberikan oleh tabel kebenaran berikut Tabel 3.2. Hasil Operasil dari Tipe Data Bolean No A B A and b A or b 1 True True True True 2 False True False True 3 True False False True 4 False False False False Bilangan Bulat Bilangan bulat adalah bilangan yang tidak mengandung pecahan desimal, seperti 1, 2, 5, 78, 445, -87, dan sebagainya. tipe untuk menyatakan bilangan bulat dinyatakan dengan integer (int). Rentang nilai tipe data integer adalah dari minus tak hingga sampai plus tak hingga. Akan tetapi dalam implementasinya tipe ini mempunyai keterbatasan digit bilangan. Ketika suatu data diimplementasikan bertipe integer maka data tersebut tidak boleh mengandung bilangan pecahan. 3
  • 4. Pada kompilator Turbo Pascal tipe integer dapat direpresentasian ke dalam 4 macam tipe, yaitu byte, shortint, word, integer, dan longint. Tabel 3.3. Daftar variasi tipe bilangan bulat (integer) No Tipe Rentang Nilai Format 1 Byte 0 . . . 255 Unsigned 8 bit 2 Shortint -128 . . . 127 Signed 8 bit 3 Word 0 . . . 65535 Unsigned 16 bit 4 Integer -23768 . . . 32767 Signed 16 bit 5 Longint -2147483648 . . . 2147483647 Signed 32 bit Sebagai contoh, dua buah peubah X dan Y masing-masing didefinisikan bertipe byte dan integer dalam Pascal. Var X : byte Y : integer Sebagai konsekuensi pendifinisian tipe X dan Y, maka peubah X tidak dapat dioperasikan untuk nilainilai diatas 255 atau dibawah 0. begitu juga peubah Y tidak dapat bekerja pada nilai-nilai diatas 32767. Bilangan Riil Bilangan riil adalah bilangan yang mengandung nlai pecahan, misalnya 3,56 , 100,6 , 100 E-6 dan sebagainya. Tipe untuk menyatakan bilangan riil dinyatakan dengan real untuk bahasa pascal dan float untuk bahasa C. Sebagai contoh pada kompilator turbo pascal bilangan riil direpresentasikan dengan 4 macam tipe yaitu real, single, double, dan extended. Tabel 3.4. Daftar variasi tipe bilangan floating point (float) No Tipe 1 Real 2 Single 3 Double 4 Extended Rentang Nilai Format 18 6 byte 1.5 x 10-45 . . . 3.4 x 1038 4 byte 2.9 x 10 5.0 x 10 -39 . . . 1.7 x 10 -324 308 . . . 1.7 x 10 3.4 x 10-4932... 1.1 x 104932 8 byte 10 byte Karakter Karakter adalah huruf alfabet, tanda baca, simbol, dan angka. Tipe untuk menyatakan karakter dengan char. Tetapan untuk data bertipe karakter harus diapit oleh tanda petik tunggal contoh, ’h’, ’Y’, dan sebagainya, ’9’ adalah karakter akan tetapi 9 adalah bertipe integer atau riil. 1.3.2. Tipe Bentukan Tipe bentukan adalah tipe yang didefinisikan sendiri oleh programmer. Tipe bentukan disusun oleh satu oleh lebih tipe dasar. Tipe bentukan diantaranya String dan Rekaman (record) String String adalah deretan karakter dengan panjang deretan yang tertentu jumlahnya. Contohnya ’Jurusan Teknik Elektro’, ’G 2345 HB’. Tipe untuk menyatakan string adalah string atau char [ .. .]. 4
  • 5. Rekaman Rekaman disusun oleh satu atau lebih field. Tiap field menyimpan data dari tipe dasar tertentu atau dari tipe bentukan lain yang sudah didefinisikan sebelumnya. Nama rekaman idefinisika oleh programmer sendiri. Tipe untuk menyatakan rekaman adalah record atau typedef. Contoh pendefinisian rekaman dalam bahasa pascal Type matakuliah : record < Kode_MK : string, Nama_MK : string, Nilai : char > Contoh pendefinisian rekaman dalam bahasa C Typedef struct { int NIM; char nama[25]; int Nilai; } Mahasiswa; Penggunaan berbagai macam tipe data Contoh 3.1 #include <stdio.h> #include <conio.h> main( ) { int a = 3; int b = 3; int c = a + b; printf (“Hasil dari penjumlahan antara a dan b adalah : %d”,c); } Pada program 3.1 semua data direpresentasikan dengan tipe integer. Variable yang bertipe integer hanya dapat menampung data dalam bentuk bilangan bulat, jika variable tersebut di berikan nilai 3.5 maka nilai decimal dibelangan angka 3 yaitu 0.5 tidak akan pernah diperhitungkan. Coba saja???. Contoh 3.2 #include <stdio.h> #include <conio.h> main( ) { float n1 = 2.5; int n2 = 2; float n3 = n1 * n2; printf (“Hasil dari perkalian antara n1 dan n2 adalah : %f”,n3); } Pada program 3.2 variabel – variablenya menggunakan tipe data integer dan float. N1 bertipe float, dengan tipe data ini maka varibel tersebut dapat menampung nilai decimal. N3 juga bernilai float, dengan memberikan tipe data float pada n3 maka hasil perkalian antara n1 dan n2 dapat menghasilkan nilai yang tepat, jika n3 diberi tipe integer kira-kira apa yang dihasilkan???. Contoh 3.3 #include <stdio.h> #include <conio.h> main( ) { 5
  • 6. printf(“Nama siswa : %sn, “Feddy”); printf(“NIM : %dn”, 10029); printf(“Nilai : %f Predikat : %cn”, 86.6, ‘A’); } Program 3.3 mendemonstrasikan penggunaan berbagai macam tipe data yang digunakan secara bersamaan dalam sebuah program, perlu dijadikan perhatian khusus setiap tipe data mempunyai symbol masing-masing dimana data tersebut akan ditampilkan sesuai dengan tipe datanya. Int (integer)  %d Float (floating point)  %f Char (character)  %c dsb…….. 1.4. OPERATOR DAN FUNGSI MATEMATIKA Mengenal operator dan fungsi matematika dalam memahami konsep pemrograman terstruktur merupakan hal mendasar dalam memahami konsep pemrograman secara keseluruhan. Beberapa buku pemrograman akan mengawali contoh programnya dengan membuat program Hello World atau dengan program aritmatika sederhana. Berikut daftar operator aritmatika yang digunakan dalam pemrograman bahasa C Tabel 3.5. Simbol Operator Aritmatika dalam C Simbol Arti + Penambahan - Pengurangan * Perkalian / Pembagian % Sisa Hasil Bagi (Modulus) ++ Increment -- Decrement Beberapa operasi matematika yang agak komplek oleh C dibuatkan beberapa fungsi sehingga pengguna tinggal memanfaatkan fungsi tersebut dalam pemerograman, beberapa fungsi matematika yang disediakan oleh C : Tabel 3.6 Fungsi matematika yang disediakan C Fungsi Arti Pow() Fungsi untuk kuadrat Abs() Fungsi untuk mendapatkan nilai absolut Log() Fungsi untuk mendapatkan nilai logaritma Sqrt() Fungsi untuk mendapatkan nilai akar kuadrat Sin() Fungsi untuk mendapatkan nilai Sinus Cos() Fungsi untuk mendapatkan nilai Cosinus 6
  • 7. Fungsi untuk mendapatkan nilai tangen Tan() Bentuk operator lain yang dikenal dalam pemrograman C adalah operator relasional dan operator logika. Operator relasional melambangkan hubungan antara dua entitas, Entitas tersebut bisa berupa variabel, konstanta maupun fungsi, Nilai dari kedua hubungan tersebut hanya bernilai dua yaitu TRUE atau FALSE. Adapun Operator operasional dalam pemrograman berbentuk sebagai berikut : Tabel 3.7. Simbol Operator Relasional yang digunakan dalam C Operator Arti > Lebih Besar >= Lebih Besar atau Sama Dengan < Lebih Kecil <= Lebih Kecil atau Sama Dengan == Sama Dengan != Tidak Sama Dengan Operator tersebut akan mempunyai dua nilai True atau False jika digunakan dalam operasi matematika, sebagai contoh 3 > 1 : True , 5 < 8 : True , 3==5 : False , 3!=5 : True Operator logika juga merupakan operator yang menyatakan kondisi True atau False dengan kondisi logika tertentu. Adapun operator lagika dalam pemrograman berbentuk sebagai berikut : Tabel 3.8. Simbol Operator Logika dalam C Operator Arti && Logika AND || Logika OR ! Logika NOT Pengayaan Latihan 3.1 #include <stdio.h> #include <conio.h> main() { int roti = 5; int kalori = 125; /* Calories per cookie */ int total_dimakan = 0; /* Total cookies eaten */ int dimakan = 2; /* Number to be eaten */ roti = roti - dimakan; /* Subtract number eaten from cookies */ total_dimakan = total_dimakan + dimakan; printf("nSay telah memakan %d roti. Terdapat %d roti yang tersisa",dimakan, roti); dimakan = 3; /* New value for cookies to be eaten */ roti = roti - dimakan; /* Subtract number eaten from cookies */ total_dimakan = total_dimakan + dimakan; printf("nSaya telah memakan %d. Sekarang terdapat %d roti yang tersisan",dimakan, roti); printf("nTotal energy yang dikonsusi adalah %d calories.n",total_dimakan*kalori); 7
  • 8. } Latihan 3.2 #include <stdio.h> #include <conio.h> main( ) { /* Menghitung volume silender */ float radius, height, volume; radius 2.5; height 16.0; volume 3.1416 * radius * radius * height; printf("n Volume silender tersebut adalah %f", volume); getch(); } Latihan 3.3 #include <stdio.h> main( { int sum; sum = 25; printf("nThe number stored in sum is %d.",sum); sum = sum + 10; printf (" nThe number now stored in sum is %d.", sum) ; getch(); } Latihan 3.4 #include <stdio.h> #include <conio.h> main( ) { clrscr(); printf(“ 3 < 5 bernilai : %dn”, 3 < 5); printf(“15 >= 3 * 5 bernilai : %dn”, 15 >= 3 * 5); printf(“ 8 = = 7bernilai : %dn”, 8= =7); printf(“11<=5+4 bernilai : %dn”, 11<=5+4); getch(); } Latihan 3.5 #include <stdio.h> #include <conio.h> main( ) { int x, y; x = 5; y = 2; printf("%d ", x/y); /* akan menampilkan angka 2 */ printf(''%d ", x%y); /* akan menampilkan angka 1, 1 adalah sisa dari hasil bagi*/ } 8
  • 9. Latihan 3.6 #include <stdio.h> #include <conio.h> main() { puts("LOGIKA AND"); printf("hasil AND dari 1 AND 1 = %dn",1 && 1); printf("hasil AND dari 1 AND 0 = %dn",1 && 0); printf("hasil AND dari 0 AND 1 = %dn",0 && 1); printf("hasil AND dari 0 AND 0 = %dn",0 && 0); printf("nn"); puts("LOGIKA OR"); printf("hasil OR dari 1 OR 1 = %dn",1 || 1); printf("hasil OR dari 1 OR 0 = %dn",1 || 0); printf("hasil OR dari 0 OR 1 = %dn",0 || 1); printf("hasil OR dari 0 OR 0 = %dn",0 || 0); getch(); } Latihan 3.7 #include <stdio.h> #include <conio.h> main(void) { float x, y, kuadrat, akar; x = 10; y = 9; kuadrat=pow(x); akar=sqrt(y); printf(“Hasil kuadrat dari 10 = %f”,kuadrat); printf(“Hasil akar kuadrat dari 9 = %f,akar); } 9
  • 10. BAB IV PROSES PEMILIHAN DALAM PEMROGRAMAN Pertemuan Minggu IV Alokasi Waktu : 4 Jam Pertemuan Standar Kompetensi : Mahasiswa dapat membuat program komputer sederhana dengan menggunakan bahasa C Kompetensi Dasar : Memahami program komputer yang mengandung unsur Pemilihan Indikator : Mahasiswa dapat memahami struktur pemrograman if, if else, nested if, swith case. : Mahasiswa dapat membuat program dengan melibatkan struktur pemilihan 1.1. STRUKTUR IF - ELSE Penyeleksian kondisi digunakan untuk mengarahkan perjalanan suatu proses. Penyeleksian kondisi dapat diibaratkan sebagai katup atau kran yang mengatur jalannya air. Bila katup terbuka maka air akan mengalir dan sebaliknya bila katup tertutup air tidak akan mengalir atau akan mengalir melalui tempat lain. Fungsi penyeleksian kondisi penting artinya dalam penyusunan bahasa C, terutama untuk program yang kompleks (Achmad Solichin) C menyediakan kata kunci if else untuk menyeleksi kondisi pernyataan, jika pernyataan tersebut bernilai benar atau sesuai dengan kondisi yang dinginkan maka pernyataan tersebut akan dijalankan. Sebaliknya jika penyataan yang di periksa tidak sesuai dengan kondisi maka pernyataan tersebut tidak dijalankan atau menjalankan penyataan yang lain. Hari ini Hujan? Gambar 4.1 Ya Diagram Alir Struktur Pemilihan Suatu Kondisi Tidak Pernyataan 1 Pernyataan 2 1. Pernyataan 1 : Membawa Payung 2. Pernyataan 2 : Berangkat Sekolah Pada gambar di atas peryataan tersbut mengisyaratkan bahwa Jika hari ini Hujan maka, Saya akan membawa payung dan akan berangkat sekolah Jika hari ini tidak hujan maka saya berangkat sekolah. Pernyataan tersebut mengisyaratkan ada sebuah kondisi yang harus di periksa sebelum melakukan aktivitas selanjutnya. Contoh lain dalam kehidupan sehari-hari dimana kita diharuskan memeriksa suatu kondisi tertentu unutk membuat keputusan selanjutnya. 1. Jika Andi mendapatkan nilai >= 70 maka Andi Lulus 1
  • 11. 2. Jika Andi mendapatkan nilai < 70 maka Andi tidak lulus Pernyataan tersebut di atas jika diterjemahkan dalam algoritma pemrograman menjadi If Nilai >= 70 --------- >(Ekspresi) Lulus ---------- >(Pernyataan 1) Else Tidak Lulus ---- >(Pernyataan 2) Dalam hal ini ekspresi yang pertama yaitu Apakah Nilai yang di periksa >= 70, jika Nilai yang di periksa semisal 80 maka pernyataan tersebut benar adanya maka pernyataan LULUS akan dieksekusi. Jika nilai yang diperiksa semisal 65 maka pernyataan Tidak Lulus akan dieksekusi. Pada contoh diatas blok program dari if else hanya di isi oleh masing-masing satu peryataan. Berikut merupakan struktur if else dengan pernyataan yang lebih dari satu If (Kondisi Pemilihan) --------- > (Ekspresi) { (Blok Pernyataan 1) } Else { (Blok Pernyataan 2) } Berikut adalah contoh algortima dengan melibatkan lebih dari satu pernyataan untuk tiap bloknya If Nilai >= 85 --------- >(Ekspresi) { Lulus ------ > (Blok Pernyataan 1) Dengan predikat sangat memuaskan } Else { Tidak Lulus ------ > (Blok Pernyataan 2) Mengulang Semester Depan } Program yang melibatkan suatu kondisi pemilihan juga dapat dibuat secara bertingkat, pemeriksaan kondisi bertingkat juga dapat dilakukan dengan melibatkan operator logika seperti operator AND (&&) dan operator OR ( | | ), sebagai contoh perhatikan pernyataan dibawah ini Jika Mahasiwa mempunyai nilai lebih dari atau sama dengan 85 Maka Mahasiswa tersebut mendapat nilai A Jika Mahasiswa mempunyai nilai antara 70 sampai 85 Maka Mahasiswa tersebut mendapat nilai B Jika Mahasiswa mempunyai nilai antara 60 sampai 70 Maka Mahasiswa tersebut mendapat nilai C Jika diperhatikan ada beberapa rentang nilai seperti 70 sampai 85, 60 sampai 70 yang harus di periksa untuk mendapatkan kesimpulan yang benar, berikut adalah algoritma untuk mengevaluasi pernyataan diatas if (nilai >= 85 ) { Nilai A } if else ( (nilai >= 70 ) && (nilai < 85) ) { Nilai B 2
  • 12. } if else ( (nilai >= 60 ) && (nilai < 07) ) { Nilai C } Contoh 4.1 #include <stdio.h> #include <conio.h> main() { int nilai; printf("Masukan Nilai Anda : "); scanf("%d",&nilai); if (nilai < 70) printf("Tidak Lulus"); else printf("Lulus"); getch(); } Pada contoh 4.1 memperlihatkan suatu pemilihan kondisi sederhana, yaitu hanya tersedia dua pilihan “Jika tidak ini maka itu”. Program pada contoh 4.1 akan menguji angka yang dimasukan oleh pengguna, masukan tersebut ditampung di dalam variable nilai. Pada tahap selanjutnya program akan menguji variable nilai, jika nilai mempunyai harga dibawah 70 maka dilayar computer akan muncul pernyataan “tidak lulus” akan tetapi jika anda memasukan angka diatas 70 maka dilayar computer akan muncul pernyataan “lulus”. Contoh 4.2 #include <stdio.h> #include <conio.h> main() { int hari; printf("Masukan Angka Untuk Mewakili Hari : "); scanf("%d",&hari); if (hari==1) { printf("Senin"); } if (hari==2) { printf("Selasa"); } if (hari==3) { printf("Rabu"); 3
  • 13. } if (hari==4) { printf("Kamis"); } getch(); } Pada contoh 4.2 program menyatakan struktur setiap if yang mempunyai blok program, setiap struktur if dipisahkan oleh pasangan tanda kurung kurawal. Program ini akan menyeleksi setiap angka yang pengguna masukan, ketika angka yang dimasukan sesuai dengan salah satu kondisi yang ada maka tulisan Senin, Selasa, dst akan ditampilkan pada layar computer. 1.2. STRUKTUR SWITCH - CASE Bahasa C juga menyediakan keyword Switch – Case untuk menyederhanakan pemrograman if else. Keyword ini menjadikan struktur pemrograman if – else menjadi lebih mudah dalam melakukan pemilihan suatu kondisi. Berikut adalah bentuk umum dari sikntaks switch case switch (menu) { case 1: Anda Memilih menu Pertama Break case 2 : Anda Memilih menu kedua break case 3 : Anda Memilih menu ketiga break default : Pilihan Anda Salah } Pada pemrograman diatas keyword Switch Case mempunyai struktur pemilihan yang berpedoman pada jumlah case yang menjadi pemilihan. Berikut adalah contoh penggunaan dari switch case untuk melakukan proses pemilihan Contoh 4.3 #include <stdio.h> #include <conio.h> main() { int menu; clrscr(); puts("Menu Menghitung Luas Bangunn"); puts("1. Luas Bangun Persegi Panjangn"); puts("2. Luas Bangun Lingkarann"); puts("3. Luas Bangun Segitigan"); puts("4. Keluar Program.....n"); printf("Masukan Angka (1-3) untuk memilih menu : "); scanf("%d", &menu); 4
  • 14. switch (menu) { case 1: printf("Program untuk break; case 2: printf("Program untuk break; case 3: printf("Program untuk break; case 4: printf("Keluar Program"); break; menghitung luas Persegi Panjang"); menghitung luas Lingkaran"); menghitung luas Lingkaran"); } getch(); } Program yang melibatkan suatu kondisi pemilihan juga dapat dibuat secara bertingkat atau yang lebih dikenal dengan istilah if else bersarang (nested). Gambar dibwah ini menunjukan diagram alir proses pengeksekusian blok pernyataan yang menggunakan if else bersarang. if(i) { if(j) Pernyataan_1(); if(k) Pernyataan_2(); else Pernyataan_3(); /* Kondisi else yang berhubungan dengan if(k) */ } else Pernyataan_4(); /* associated with if(i) */ Pemilihan_1? Tidak Ya Pernyataan 1 Gambar 4.2 Diagram Alir Struktur Pemilihan Suatu Kondisi Bersarang Ya Pemilihan_2? Pernyataan 4 Tidak Pernyataan 3 Pernyataan 2 Diagram Alir pemilihan kondisi bersarang tersebut menunjukan bahwa suatu kondisi mula-mula akan diperiksa pada pemilihan_1 jika bernilai benar maka pernyataan 1 akan dieksekusi, akan tetapi jika salah pernyataan 2 yang akan dieksekusi. Jika pemeriksaan pada kondisi pemilihan 1 bernilai benar maka kondisi tersebut juga akan diperiksa pada pemilihan 2, jika kondisi yang dipriksa bernilai benar maka 5
  • 15. pernyataan 3 akan dieksekusi apabila kondisi yang diperiksa bernilai salah maka penrnyataan 4 yang akan dieksekusi. Contoh 4.4 #include <stdio.h> #include <conio.h> main() { int nilai=75; if (nilai>=80) { printf("Lulusn"); if (nilai >=95) { printf("Anak Jenius"); } else { printf("Anak Pandai"); } } else { printf("Belum Lulusn"); printf("Mengulang Tahun depan"); } getch(); } Pengayaan Latihan 4.1 #include <stdio.h> #include <conio.h> main() { int mi, pasta, sikat, jml1, jml2, jml3, total; float bayar; puts("Harga Mi Instran Persatuan Rp. 800"); puts("Harga Pasta Gigi Persatuan Rp. 1000"); puts("Harga Sikat Gigi Persatuan Rp. 1500"); puts("Masukan jumlah yang barang yang ingin Anda beli"); puts("Bila tidak ingin membeli masukan angka nol (0)"); printf("Berapa jumlah Mi Instan Yang ingin Anda Beli : "); scanf("%d",&mi); printf("Berapa jumlah Pasta Gigi Yang ingin Anda Beli : "); scanf("%d",&pasta); printf("Berapa jumlah Sikat Gigi Yang ingin Anda Beli : "); scanf("%d",&sikat); jml1 = 800 * mi; 6
  • 16. jml2 = 1000 * pasta; jml3 = 1500 * sikat; total = jml1 + jml2 + jml3; if (total > 10000) { bayar = 0.9 * total; printf("Total Bayar = %.0f",bayar); } if (mi > 5) { bayar = total - 800; printf("Total Bayar = %.0f",bayar); } if (total > 10000) && (mi > 5) { bayar = (0.9 * total) - 800; printf("Total Bayar = %.0f",bayar); } getch(); } Latihan 4.2 #include <stdio.h> #include <conio.h> main() { int angka; printf("Masukan Sembarang Angka untuk di uji: "); scanf("%d",&angka); if(angka%2 == 0) { printf("nBilangan Yang Anda Masukan Angka Genap"); if((angka/2)%2 == 0) { printf("nHasil Bagi Dua dari bilangan tersebut juga Genap"); } else { printf("nHasil Bagi Dua dari bilangan tersebut Angka Ganjil"); } } else { printf("Bilangan Yang Anda Masukan Angka Ganjil"); } getch(); } Latihan 4.3 7
  • 17. #include <stdio.h> #include <conio.h> int main(void) { char letter = 0; /* Stores a character */ printf("Enter an uppercase letter:"); /* Prompt for input */ scanf("%c", &letter); /* Read a character */ if(letter >= 'A') /* Is it A or greater? */ if(letter <= 'Z') /* and is it Z or lower? */ { /* Jika yang Anda Masukan Huruf Besar */ letter = letter - 'A'+ 'a'; /* Convert from upper- to lowercase */ printf("You entered an uppercase %cn", letter); } else /* Jika yang Anda Masukan Huruf Kecil*/ printf("Try using the shift key, Bud! I want a capital letter.n"); getch(); } 8
  • 18. BAB V PROSES PENGULANGAN DALAM PEMROGRAMAN Pertemuan Minggu V dan VI Alokasi Waktu : 4 Jam Pertemuan Standar Kompetensi : Mahasiswa dapat membuat program komputer sederhana dengan menggunakan bahasa C Kompetensi Dasar : Memahami program komputer yang mengandung unsur Pengulangan (looping) Indikator : Mahasiswa dapat memahami struktur program bahasa C yang mengandung unsur do while, while do, for : Mahasiswa dapat membuat program dengan melibatkan struktur pengulangan Proses pengulangan pada suatu program merupakan salah satu kekuatan yang dimiliki ketika kita mengembangan suatu program komputer. Proses pengulangan merupakan suatu proses yang dilakukan oleh komputer secara berulang-ulang hingga kondisi yang diinginkan terpenuhi. Dalam beberapa buku proses pengulangan diistilahkan sebagai proses looping atau kalang. Bahasa C mempunyai tiga struktur untuk melakukan proses pengulangan yaitu struktur while do, do while, dan for. Pernyataan 1 Periksa Logika? Tidak Gambar 5.1 Diagram Alir Struktur Pengulangan (looping) Umum Ya Pernyataan 2 Tambahkan angka 1 untuk looping Pernyataan 3 Sebelum membahas lebih jauh tentang proses looping, terlebih dahulu akan dibahas mengenai operator decrement (--) dan operator increment (++). Operator decrement adalah operator dimana variabel yang dirujuk akan melakukan pengurangan secara otomatis satu angka untuk seitap kali proses looping. Operator increment adalah sebaliknya akan menambah angka satu pada variable yang dirujuk setiap kali proses looping. Pada pemakaiannya operator ini dapat dituliskan dibelakang ataupun di depan sebuah variabel yang dirujuk sebagai contoh Int i; i ++ , i-- penulisan setelah variabel ++ i , -- I penulisan sebelum variabel 1
  • 19. Penerapan kedua operator diatas akan dibahas lebih lanjut dalam penggunaannya dalam proses pengembagan program dengan melibatkan proses looping. Tiga struktur ini mempunyai karakteristik masing-masing, untuk struktur for dan while do proses pengulangan mengisyaratkan untuk mengevaluasi kondisi masukan terlebih dahulu kemudian baru menjalankan pernyataan yang sesuai dengan kondisi yang terpenuhi. Berikut adalah struktur umum dari for 1.1. LOOPING DENGAN MENGGUNAKAN STRUKTUR FOR for (batas awal ; batas akhir ; increment/decrement) { } Batas awal mengisyaratkan bahwa proses pengulangan dimulai pada angka 1, 2,atau 3, batas akhir mengisyaratkan batas atas dari suatu kondisi dimana proses pengulangan harus berhenti. increment/decrement adalah proses untuk melakukan penambahan/pengurangan satu demi satu saat melakukan proses pengulangan. Berikut adalah contoh penggunaan stuktur for dalam pemrograman Contoh 5.1. #include <stdio.h> #include <conio.h> main() { int digit; for (digit=1; digit<=10; digit++) { printf(“%d”n,digit); printf(“nSelesain”); } getch(); } Program diatas akan mengeluarkan output program sebagai berikut: 1 2 3 4 5 6 7 8 9 10 Selesai Looping for mengisyaratkan bahwa program akan menampilkan angka di layar monitor dengan dimulai dengan angka 1 melaui perintah digit=1, kemudian digit akan berangsur – angsur meningkat setiap kelipatan 1 melalui perintah digit++, sedangkan perintah digit<= 10 mengisyratkan kapan berakhirnya proses looping, dalam hal ini dinyatakan proses looping berhenti pada angka 10, karena angka yang lebih dari 10 yaitu 11 keatas mempunyai logika yang salah dari pernyataan digit <= 10. Kata Selesai akan di cetak pada layar 2
  • 20. monitor ketika logika program digit < = 10 bernilai salah yang berarti akan keluar dari proses looping. Kemdian program akan berlanjut secara sequence mengerjakan instruksi berikutnya yang dalam hal ini adalah intruksi printf(“nSelesain”), dimana perintah tersebut memerintahkan program untuk menampilkan kata Selesai dilayar monitor. Berikut adalah diagram alir dari contoh program diatas digit = 1 Digit <= 10 Tidak Ya Gambar 5.2 Diagram Alir Struktur Program Penulisan Angka 1 – 10 (looping) printf(“%d”n,digit); Tambahkan angka 1 ke variable digit untuk looping printf(“nSelesain”) ; Contoh 5.2. #include <stdio.h> #include <conio.h> main() { int jumlah, counter, i; jumlah = 0; printf("Masukan angka yang akan anda hitung jumlah deretnya : "); scanf("%d",&counter); for (i=1; i<=counter; i++) jumlah = jumlah + i; printf("Total Jumlah Deret = %d",jumlah); getch(); } Pada contoh 2 diatas program akan menghitung jumlah deret dari nilai yang dimasukan, semisal nilai yang dimasukan adalah 10 maka program akan melakukan proses penjumlahan yang berulang sebagai berikut; bertama variable jumlah bernilai 0, pada instruksi jumlah = jumlah + I menyatakan proses perhitungan sebagai berikut jumlah = 0 + 1 untuk proses looping yang pertama. Hasil dari perhitungan tersebut di simpan dalam variable jumlah, sehingga variable jumlah yang semula 0 sekarang bernilai 1. Program berlanjut untuk looping yang kedua, instruksi jumlah = jumlah + I sekarang menyatakan proses perhitungan jumlah = 1 + 2, varibel jumlah dari proses looping yang bertama mengakibatkan variable tersebut menyimpan angka 1 dan i pada proses looping yang kedua bernilai 2. Proses looping yang kedua akan disimpan dalam variable jumlah sehingga yang tadinya bernilai 1 pada proses looping yang kedua 3
  • 21. akan bernilai 3. Demikian proses looping terus berlanjut hingga kondisi i <= 10 terpenuhi sebagai akhir dari looping. 1.2. LOOPING DENGAN MENGGUNAKAN STRUKTUR WHILE– DO Pernyataan while do pada C umumnya di ekspresikan dalam bentuk umum sebagai berikut : while (ekspresi) pernyataan ; ekpresi yang dikandung di dalam tanda kurung akan di uji seperti halnya ekpresi pada struktur pemrograman if – else. Jika ekepresi tersebut bernilai benar maka pernyataan di bawah struktur while akan dijalankan, jika sebaliknya maka pernyataan tersebut tidak akan pernah dijalankan. Berikut adalah proses yang dijalankan oleh computer ketika untuk menguji while do statement. Uji ekspresi yang diberikan Jika ekspresi bernilai benar / true /1 maka a. Jalankan pernyataan b. kembali ke langkah 1 untuk kembali menguji eksprsi setelah menjalankan pernyataan else (jika ekspresi yang diuji bernilai salah / false / 0 maka keluar dari proses looping while do statement Diagram alir struktur while do adalah sebagi berikut: Pernyataan 1 Periksa Logika? Gambar 5.3 Diagram Alir while – do Struktur looping Tidak Ya Pernyataan 2 Tambahkan angka 1 untuk looping Pernyataan 3 Diagram Alir untuk teknik looping dengan menggunakan struktur while – do sama dengan pola yang digunakan pada teknik looping dengan struktur for. Kedua pola looping ini akan menguji kondisi pengulangan terlebih dahulu sebelum mengekeskusi pernyataan yang terdapat dalam looping, lainnya halnya denga teknik looping dengan struktur do – while. Contoh 5.3. #include <stdio.h> #include <conio.h> main() { 4
  • 22. int jumlah, counter, i; jumlah = 0; i = 1; printf("Masukan angka yang akan anda hitung jumlah deretnya : "); scanf("%d",&counter); while (i <= counter) { jumlah = jumlah + i; i++; } printf("Total Jumlah Deret = %d",jumlah); getch(); } Pada program contoh 5.3 program terlebih dahulu akan menginisialiasi variable jumlah = 0, dan i = 1, program akan menampilkan perintah pada layar monitor kepada pengguna untuk memasukan angka yang akan dihitung jumlah deretnya, angka yang dimasukan oleh pengguna akan ditangkap oleh variable counter. Pada instruksi selanjutnya program akan menguji dengan struktur pengulangan while do. Pernyataan while (i <= counter) mengisyaratkan pengecekan apakah I yang bernilai 1 yang diketahui pada saat inisialisasi awal akan dibandingkan dengan nilai yang tertera pada variable counter. Sebagai contoh pengguna memasukan angka 10, melalui pernyataan while akan diuji apakah 1 <= 10. Ketika logika dalam pernyataan tersebut bernilai benar maka instruksi jumlah = jumlah + i akan dijalankan, dari insruksi ini akan didapatkan hasil penjumlahan dari deret angka 1 sampai 10. Instruksi i++ mengisyaratkan varibel i melakukan proses increment dengan menambahkan nilai 1 setiap loopingnya. Sebagai contoh pada proses looping ke dua i akan bernilai 2, nilai ini kemudian akan dimasukan dalam pernyataan while (i <= counter) yang selanjutnya akan diuji apakah 2 <= 10, logika pernyataan tersebut masih bernilai benar maka program akan menjalankan instruksi dibawahnya. Instruksi i++ akan menyebabkan i bertambah dari 2 menjadi 3, nilai 3 tersebut kemudian diperiksa lagi dalam pernyataan while (i <= counter), demikian seterusnya hingga logika while (i <= counter) bernilai salah, sebagai contoh 11 <= 10. Ketika logika pernyataan bernilai salah maka proses loopig akan berakhir dan program akan mengeksekusi instruksi printf("Total Jumlah Deret = %d",jumlah). 1.3. LOOPING DENGAN MENGGUNAKAN STRUKTUR DO-WHILE Teknik pemrograman yang dijelaskan diatas yaitu while do dan for, keduanya akan memeriksa suatu kondisi pengulangan di awal program, for (ekspresi) ….. …… …….. while (ekspresi) ….. …… …….. Sedangkan struktur do while akan memeriksa kondisi pengulangan pada akhir program, do ………. ………. ………. While (ekspresi) Struktur ini akan memungkinkan program untuk di jalankan minimal sekali sebelum pernyataan dari program tersebut di periksa oleh kondisi while, jika kondisi yang diperiksa bernilai benar maka pernyataan diatas while akan di jalankan kembali hingga kondisi salah tercapai. Diagram alir struktur do while adalah sebagi berikut: Pernyataan 1 Pernyataan 2 Tambahkan angka 1 untuk looping 5
  • 23. Gambar 5.4 Diagram Alir Struktur looping do – while Contoh 5.4 #include <stdio.h> #include <conio.h> main() { int counter, jumlah, i; jumlah = 0; i = 1; printf("Masukan angka: "); scanf("%d",&counter); do { jumlah = jumlah + i; printf("n%d",jumlah); i++; } while (i <= counter); getch(); } Contoh 5.5 #include <stdio.h> #include <conio.h> main() { int counter,i; i = 1; printf("Masukan Angka : "); scanf("%d",&counter); while(i <= counter) { printf("nBelajar Pemrograman"); i++; 6
  • 24. } getch(); } Contoh 5.6 #include <stdio.h> #include <conio.h> main() { int counter,i; i = 1; printf("Masukan Angka : "); scanf("%d",&counter); do { printf("nBelajar Pemrograman"); i++; } while(i <= counter); getch(); } Program contoh 5.5. dan 5.6 memperlihatkan perbedaan penggunaan teknik pengulangan while do dan do while. Dua program tersebut akan mengeluarkan hasil yang sama ketika kita memasukan angka lebih dari 0, akan tetapi ketika kita berikan angka 0 baru terlihat perbedaan yang mencolok tentang penggunaan kedua teknik looping tersebut. Pengayaan Latihan 5.1 #include <stdio.h> #include <conio.h> main() { int n, count = 1; float x, average, sum = 0; printf("Berapa Angka yang Akan di hitung? " ) ; scanf ("%d", &n) ; while (count <= n) { printf (" x = "); scanf("%f", &x); sum += x; ++count; } average = sum/n; printf("nRata-ratanya adalah %fn", average); 7
  • 25. getch(); } Latihan 5.2 #include <stdio.h> #include <conio.h> main() { int n, count, loops, loopcount; float x, average, sum; /* read i n the number of l i s t s */ printf ("How many lists ? " ); scanf ("%d", &loops); /* outer loop (process each l i s t of numbers */ for (loopcount = 1; loopcount <= loops; ++loopcount) { /* initialize and read in a value for n */ sum = 0; printf ( " n List number %dnHow many numbers? ", loopcount); scanf ("%d", &n) ; /* read i n the numbers */ for (count = 1; count <= n; ++count) { printf ( " x = " ); scanf ( "%f", &x); sum += x; } /* end inner loop */ /* calculate the average and display the answer */ average = sum/n; printf ("nThe average i s %fn", average) ; } /* end outer loop */ getch(); } 8
  • 26. BAB VI PEMROGRAMAN FUNGSI Pertemuan Minggu VII dan VIII Alokasi Waktu : 4 Jam Pertemuan Standar Kompetensi : Mahasiswa dapat membuat program komputer sederhana dengan menggunakan bahasa C Kompetensi Dasar : Memahami program komputer yang mengandung unsur procedure dan fungsi Indikator : Mahasiswa dapat memahami struktur program bahasa C yang mengandung unsur procedure dan fungsi : Mahasiswa dapat membuat program dengan melibatkan struktur procedure dan fungsi Dalam topic-topik sebelumnya kita telah memanfaatkan fungsi yang telah didefinisikan oleh C didalam Pustaka (library) C itu sendiri, seprti sqrt (), pow (), dsb. Salah satu keunngulan pemrograman bahasa C adalah bahwa seorang programmer dapat membuat Fungsi sendiri sesuai dengan kebutuhan program aplikasi yang akan dikebangkan. Analogi fungsi adalah seperti halya kita …… Suatu fungsi dapat diakses atau dipanggil dengan menuliskan nama fungsinya pada main program (fungsi main ( ) ). Gambar dibawah ini mengilustrasikan program yang terdiri dari beberapa fungsi yang terkait antara satu dengan yang lain. Gambar 6.1 Diagram fungsi Struktur pemanggilan main() { function1(); …… fungtion2(); function1() { …… return; } function3() { function3(); …… function4(); ………. return; } } function2() { } …… return; function4() { …… return; } Di beberapa literature ada yang membedakan antara pengertian fungsi dan procedure. Procedure diartikan sebagai suatu bagian program yang menjalankan tugas tertentu yang kemudian dipanggil oleh fungsi utama. Fungsi juga merupakan bagian dari program yang menjalankan tugas tertentu akan tetapi fungsi mempunyai nilai yang akan di kembalikan ke fungsi utama ketika di panggil. Secara umum struktur penamaan sebuah procedure dan fungsi adalah sebagai berikut: void Nama_prosedure (void) : struktur umum penamaan prosedure int nama_fungsi (tipe_data parameter) : struktur umum penamaan fungsi 1
  • 27. proses pendeklarasian fungsi ini biasanya terletak setelah penulisan library program, dibawah ini merupakan salah satu cara pendeklarasian fungsi atau procedure #include <conio.h> #include <math.h> #include <stdio.h> ……… int fungsi1 (int a, int b) Void prosedure1 (void) …….. Main() { ……………….. ……………….. } 6.1. PROSEDURE Procedure lebih merupakan sebuah fungsi yang tidak memiliki parameter keluaran. Procedure hanya digunakan untuk memecah program sehingga lebih mudah dalam pengelolaan dan pengembangan selanjutnya. Procedure lebih ditekankan pada pemecahan tugas yang lebih spesifik untuk menyederhanakan program dan mempermudah penanganan saat terjadi kesalahan. Contoh dibawah ini akan menjelaskan penerapan procedure dalam suatu program yang bertujuan untuk mempermudah pengelolaan program. Contoh 6.1 #include <stdio.h> #include <conio.h> void luas(void); void keliling(void); main() { printf("Program Bangun Persegi Panjang"); luas(); keliling(); getch(); } void luas(void) { int luasan, lebar, panjang; lebar = 3; panjang = 4; luasan = panjang * lebar; printf("nLuas nya adalah : %d",luasan); } void keliling(void) { int kelilingan, lebar, panjang; 2
  • 28. lebar = 3; panjang = 4; kelilingan = (2*panjang) + (2*lebar); printf("nKelilingnya adalah : %d",kelilingan); } Pada contoh 1.6 diatas bahwa program perhitungan persegi panjang yang menentukan luas dan keliling dibagi menjadi tiga bagian program, bagian pertama adalah fungsi utama yaitu fungsi main(), bagian kedua adalah procedure luas yang didefinisikan sebagai void luas (void), bagian ketiga adalah prosudure keliling yang didefinisikan sebagai void keliling (void). Pada contoh 6.1 jika kita akan menambahkan suatu proses perhitungan lain terkait dengan persegi panjang semisal menghitung sisi diagonal persegi panjang, kita hanya perlu menambahkan deklarasi baru dibawah deklarasi procedure yang sudah ada, selanjutnya tinggal mendeskripsikan prosedure tersebut seperti pada deskripsi procedure luas dan keliling yang sudah ada. Contoh 6.2 #include <stdio.h> #include <conio.h> void luas(void); void keliling(void); void diagonal(void); main() { printf("Program Bangun Persegi Panjang"); luas(); keliling(); diagonal(); getch(); } void luas(void) { int luasan, lebar, panjang; lebar = 3; panjang = 4; luasan = panjang * lebar; printf("nLuas nya adalah : %d",luasan); } void keliling(void) { int kelilingan, lebar, panjang; lebar = 3; panjang = 4; kelilingan = (2*panjang) + (2*lebar); 3
  • 29. printf("nKelilingnya adalah : %d",kelilingan); } void diagonal(void) { int lebar, panjang, diagonal lebar = 3; panjang = 4; diagonal = sqrt( (lebar*lebar) + (panjang*panjang) ); printf(“nPanjang diagonal adalah : %d”,diagonal); } 6.2. FUNGSI Procedure yang kita dipelajari di atas adalah bentuk paling sederhana dari sebuah fungsi. Fungsi biasanya mempunyai parameter masukan atau keluaran yang nantinya akan dikeluarkan pada saat fungsi tersebut di panggil, masih dengan program yang telah dikembangkan pada contoh 6.1, pada contoh dibawah ini program tersebut akan dimodifikasi dengan menggunakan fungsi. Contoh 6.2 #include <stdio.h> #include <conio.h> int luas(int x, int y); main() { int panjang, lebar, luasan; printf("Program Bangun Persegi Panjang"); printf("nMasukan Panjangnya : "); scanf("%d",&panjang); printf("nMasukan Lebarnya : "); scanf("%d",&lebar); luasan = luas(panjang,lebar); printf("nLuas Persegi Panjang : %d",luasan); getch(); } int luas(int x, int y) { int hit_luas; hit_luas = x * y; return(hit_luas); } Pada program contoh 6.2 jika diperhatikan ada penulisan tipe data dan parameter yang digunakan dalam pendeklarasian fungsinya. Fungsi dideklarasikan didahului dengan tipe data yang akan dikembalikan kemudian didalam tanda kurung juga berisi variable dan tipe data yang akan diproses pada saat pemanggilan fungsi : int luas(int x, int y). 4
  • 30. Pada pendeskrisian fungsi luas diatas lebih ditekankan pada proses bagaimana menghitung luas dengan melibatkan parameter yang ada, pada contoh diatas juga didapatkan keyword return yang menyatakan pengembalian dari suatu proses ketika fungsi tersebut di panggil pada fungsi yang lain. Jika ingin menambahkan suatu fungsi lagi terkait dengan perhitungan persegi panjang adalah sebagai berikut Contoh 6.3 #include <stdio.h> #include <conio.h> int luas(int x, int y); int keliling(int x, int y); main() { int panjang, lebar, luasan, kel; printf("Program Bangun Persegi Panjang"); printf("nMasukan Panjangnya : "); scanf("%d",&panjang); printf("nMasukan Lebarnya : "); scanf("%d",&lebar); luasan = luas(panjang,lebar); kel = keliling(panjang,lebar); printf("nLuas Persegi Panjang : %d",luasan); printf("nKeliling Persegi Panjang : %d",kel); getch(); } int luas(int x, int y) { int hit_luas; hit_luas = x * y; return(hit_luas); } int keliling(int x, int y) { int hit_keliling; hit_keliling = (2*x) + (2*y); return(hit_keliling); } Pada contoh 6.3 terlihat ketika ingin menambahkan suatu fungsi, kita tinggal nenambahkan deklarasi fungsi dibawah deklarasi fungsi yang terdahulu, selanjutnya dideskripsikan dibawah deskripsi fungsi yang sudah ada dalam hal ini deskripsi fungsi untuk menghitung luas. Pengayaan Latihan 6.1 5
  • 31. #include <stdio.h> #include <conio.h> int kabisat(int th); main() { int tahun; printf("Masukan Tahun : "); scanf("%d",&tahun); kabisat(tahun); getch(); } int kabisat(int th) { if(th%4==0) printf("Kabisat"); else printf("Bukan Kabisat"); return(th); } Latihan 6.2 #include <stdio.h> #include <conio.h> int fak(int fk); main() { int nilai,ft; printf("Masukan Nilai: "); scanf("%d",&nilai) printf("Nilai Faktorial dari %d adalah %d",nilai,fak(nilai)); getch(); } int fak(int fk) { int i,f; if(fk==0) { f=1; } if(fk > 0) { f=1; for (i=1; i<=fk; i++) { f=f*i; 6
  • 32. } return(f); } } 7
  • 33. BAB VII PEMROGRAMAN ARRAY DAN STRING Pertemuan Minggu IX dan X Alokasi Waktu : 4 Jam Pertemuan Standar Kompetensi : Mahasiswa dapat membuat program komputer sederhana dengan menggunakan bahasa C Kompetensi Dasar : Memahami program komputer yang menggunakan struktur Larik (Array) Indikator : Mahasiswa dapat memahami struktur program bahasa C yang mengandung Array : Mahasiswa dapat membuat program dengan melibatkan struktur Array Pada pemrograman yang sesungguhnya terkada kita membutuhkan suatu blok data yang mempunyai karakteristik yang sama. Seperti di ilustrasikan tentang konsep variable dengan menganalogikan penamaan alamat pada sebuah kamar hotel, array di analogikan pada aktifitas pemesanan beberapa kamar hotel yang akan kita isi sesuai dengan kebutuhan si pemesan. Pada konsep pemrograman bahasa C array didefinisikan sebagai berikut: Tipe data nama_array [panjang_array] Tipe data merupakan batasan dari variable tentang format data apa yang dapat dimanipulasi untuk variable tersebut, nama_array merupakan nama variable yang dijadikan sebagai bentuk array, dan panjang_array adalah jumlah maksimum data yang dapat di tamping dalam variable array tersebut. Berikut adalah contoh format penulisan variable array int nim [10] char nama [30] Pada contoh int nim [10] diartikan sebagai sebuah variable dengan nama nim yang bertipe integer dengan kemampuan maksimum data yang dapat ditampung sebesar 10 digit. Demikian juga untuk contoh char nama [30] mengindikasikan bahwa variable array nama bertipe char yang mampu menampung data sebanyak 30 character (huruf). Hal yang perlu diperhatikan bahwa penulisan batas maksimum daya tamping sebuah array di tulis dengan tanda kurung kotak [ ]. Pemrograman Array dibagi menjadi dua kelempok besar yaitu array satu dimensi dan array multi dimensi. Pada pembahasan kali ini hanya akan di dibahas lebih mendalam tentang array 1 dimensi dan array 2 dimensi. 7.1. ARRAY 1 DIMENSI Seperti dicontohkan pada penulisan variable array diatas, contoh tersebut mengacu pada sintak atau aturan penulisan untuk array 1 dimensi. Dimana array tersebut hanya berbentuk 1 kolom atau pun baris. Berikut adalah ilustrasi dari penerapan array 1 dimensi Contoh 7.1 #include <stdio.h> #include <conio.h> /* Program menghitung nilai rata-rata */ main() { 1
  • 34. int n1, n2, n3, n4, n5; float rata; printf("Masukan nilai untuk n1, n2, n3, n4 dan n5n"); scanf("%d %d %d %d %d", &n1, &n2, &n3, &n4, &n5); rata = (n1+n2+n3+n4+n5) / 5; printf("Nilai rata-ratanya = %f ",rata); getch(); } Pada program contoh 7.1 diatas mengilustrasikan bahwa untuk dapat membuat rata-rata nilai dari sekian data kita harus menyiapkan sekian variable sesuai dengan jumlah data yang akan kita kalkulasi, tentu hal ini tidak akan menjadi masalah jika data yang akan kita hitung dalam rentang satuan, bagaimana jika data yang akan kita kalkulasi sebanyak 100 bahkan 1000 buah data, tentu saja program pada contoh 7.1 menjadi tidak sangat efektif. Array salah satunya digunakan untuk mengelola blok data sehingga lebih mudah dalam memanfaatkannya. Contoh 7.2 berikut akan mengilustrasikan manfaat penggunaan array untuk memperbaiki efektifitas dari program contoh 7.1 Contoh 7.2 #include <stdio.h> #include <conio.h> /* Program menghitung nilai rata-rata dengan array*/ main() { int n[10]; int data, i,sum; float rata; printf("Berapa data yang akan Anda hitung "); scanf("%d",&data); sum =0; for (i=0; i<data; i++) { printf("data ke-%d ",i+1); scanf("%d",&n[i]); sum = sum + n[i]; } rata = sum/data; printf("Nilai rata-ratanya = %.2f",rata); getch(); } Pada contoh 7.2 terlihat bahwa pemrograman array terkait erat dengan teknik pemrograman looping. Penggunaan Teknik looping disini diperuntukan untuk menjalankan proses pemasukan (inisialisasi) data secara otomatis terkait dengan jumlah data yang aka dikalkulasi secara dinamis. Pada contoh 7.2 Teknik looping yang digunakan adalah dengan menggunakan struktur for akan tetapi pada dasarnya bisa diganti dengan teknik looping yang lain. Cara kerja Struktur array adalah sebagai berikut: 1. Ketika pengguna memasukan angka kedalam program, angka tersebut ditangkap oleh variable data yang bertipe integer. 2. Kemudian program berlanjut mengesekusi baris berikutnya yaitu menginisialisasi (pemberian nilai awal) pada variable sum dengan nilai nol (0). 2
  • 35. 3. Program berlanjut ke struktur looping dimana proses looping akan dimulai dari angka ke 0 dan berakhir pada nilai yang dikandung pada variable data dengan proses penambahan angka 1 setiap perputaran looping yang ditandai dengan pernyataan i++. Proses looping akan berhenti ketika nilai yang terkadung dalam variable i sudah lebih besar atau sama dengan nilai yang terkandung dalam variable data. 7.2. ARRAY 2 DIMENSI Struktur array 2 dimensi mengisyaratkan bahwa susunan data yang dibentuk menyerupai table yaitu akan terdiri dari baris dan kolom. Pada konsep pemrograman bahasa C array 2 dimensi didefinisikan sebagai berikut: Tipe data nama_array [panjang_baris] [panjang_kolom] Array 2 dimensi termasuk dalam kategori array multidimensi, lebih jauh tentang array multidimensi pada penjabarannya kita dapat membuat array 3 dimensi, 4 dimensi dst, array multidimensi didefinisikan sebagai berikut: Tipe data nama_array [dimensi 1] [dimensi 2][dimensi 3] array 3 dimesi Tipe data nama_array [dimensi 1] [dimensi 2][dimensi 3][dimensi 4] array 4 dimesi Pada pokok bahasan ini akan lebih ditekankan pada array dua dimensi yang akan diilustrasikan dengan pemrograman matrik. Contoh program dibawah ini akan menampilkan susunan angka yang berbentuk baris dan kolom. Contoh 7.3 #include <stdio.h> #include <conio.h> main(void) { int t, i, num[3][4]; for(t=0; t<3; ++t) for(i=0; i<4; ++i) num[t][i] = (t*4)+i+1; /* now print them out */ for(t=0; t<3; ++t) { for(i=0; i<4; ++i) printf("%3d", num[t][i]); printf("n"); } getch(); } Ketika di jalankan maka output dari program adalah sebagai berikut: Gambar 7.1 Output program array 2 dimensi 3
  • 36. Pada gambar 7.1 menampilkan susunan angka yang berpola, dalam gambar tersebut dapat terlihat susunan table yang terdiri dari bari dan kolom. Berikut adalah ilustrasi dari hasil keluaran program diatas 1 2 3 4 Baris 1 5 6 7 8 Baris 2 9 10 11 12 Baris 3 Kol 1 Kol 2 Kol 3 Kol 4 Program contoh 7.3 mengilustrasikan pembuatan table yang terdiri dari 3 baris dan 4 kolom. Pendeklarasian variable num[3][4] mengyatakan bahwa keluaran akan dibentuk kedalam table 3 x 4. Sebagai catatan bahwa array 2 dimensi mempunyai default nilai koordinat untuk kiri atas adalah (0,0) yang berarti bahwa table dimulau dari baris ke 0 dan kolom ke 0. Proses pembentukan tampilan adalah sebagai berikut: 1. Looping dimulai pada baris ke 0 yang dinyatakan dengan nilai t=0, dalam ini terjadi proses looping dimulai pada loop terluar yaitu pada loop for(t=0; t<3; ++t). 2. Program secara sequence mengeksekusi baris berikutnya yaitu pernyataan for(i=0; i<4; ++i). pada loop kedua ini I dimulai dengan angka 0 yang menyatakan kolom ke 0. Sampai pada tahap ini program sudah memegang nilai indeks yaitu di 0,0. 3. Program secara sequence mengeksekusi baris berikutnya yaitu pernyataan printf("%3d", num[t][i]). Pernyataan tersebut merupakan sutau perintah untuk menampilkan angka sesuai dengan hasil perhitungan pada pernyataan num[t][i] = (t*4)+i+1. num[t][i] adalah variable bertipe array 2 dimensi yang akan menampatkan angka dari hasil perhitungan susai dengan nomor indeksnya. Pada perhitungan awal variable num[t][i] bernilai 1 (satu) yang mempunyai indeks di (0,0) (lihat gambar 7.1). posisi tersebut menyatakan bahwa nilai 1 berada pada baris ke 0 dan kolom ke 0. 4. Setelah mencetak angka 1 program masih berjalan pada proses loop ke 2 yaitu pada posisi loop for(i=0; i<4; ++i). pada loop ini variable i mengalami proses increament dari i= 0 menjadi i=1. Proses looping yang kedua ini akan merubah harga indeks dari posisi elemen menjadi (0,1), sehingga nilai 2 hasil dari perhitungan (t*4)+i+1 yang ditampung pada variable num[t][i] akan ditempatkan pada posisi baris ke nol dan kolom 1. 5. Setelah mencetak angka 2 program masih berjalan pada proses loop ke 2 yaitu pada posisi loop for(i=0; i<4; ++i). pada loop ini variable i mengalami proses increament dari i= 1 menjadi i=2. Proses looping yang kedua ini akan merubah harga indeks dari posisi elemen menjadi (0,2), sehingga nilai 3 hasil dari perhitungan (t*4)+i+1 yang ditampung pada variable num[t][i] akan ditempatkan pada posisi baris ke nol dan kolom 2. Proses looping pada baris ke 0 akan berakhir setelah i bernilai 3 atau dari logika loop yang dimaksud jika I < 4 maka loop akan berakhir 6. Setelah baris pertama terpenuhi yaitu baris ke 0, maka proses looping akan melompat ke loop yang terluar yaitu loop for(t=0; t<3; ++t). pada bagian ini proses looping akan berlanjut pada variable t (lihat keterangan no 1), variable t yang semula bernilai 0 akan berubah menjadi 1 melalui proses increament ++t. pada proses ini pengeksekusian program hanya melakukan proses increament nilai t selajutnya program secara sequence mengeksekusi baris berikutnya yaitu pada loop for(i=0; i<4; ++i). 7. Pada tahap ini proses looping akan terjadi pada loop for(i=0; i<4; ++i), pada tahap kedua ini variable I akan mengalai proses dari awal dengan I bernilai 0. Hanya saja pada tahap ini program memegang 4
  • 37. indeks dengan nilai (1,0), yang merujuk pada t=1 yang menyatakan baris ke 1, dan I=0 yang menyatakan kolom ke 0. 8. Program secara sequence mengeksekusi baris berikutnya yaitu pernyataan printf("%3d", num[t][i]) (lihat keterangan no 3). Pada perhitungan ini variable num[t][i] bernilai 5 (lima) yang mempunyai indeks di (1,0) (lihat gambar 7.1). posisi tersebut menyatakan bahwa nilai 5 berada pada baris ke 1 dan kolom ke 0. 9. Setelah mencetak angka 5 program masih berjalan pada proses loop ke 2 yaitu pada posisi loop for(i=0; i<4; ++i). pada loop ini variable i mengalami proses increament dari i= 0 menjadi i=1. Proses looping yang kedua ini akan merubah harga indeks dari posisi elemen menjadi (1,1), sehingga nilai 6 hasil dari perhitungan (t*4)+i+1 yang ditampung pada variable num[t][i] akan ditempatkan pada posisi baris ke 1 dan kolom ke 1. Proses looping pada baris ke 1 akan berakhir setelah i bernilai 3 atau dari logika loop yang dimaksud jika I < 4 maka loop akan berakhir 10. Proses akan kembali seperti pada keterangan no. 6 yang akan merubah harga t dari 1 menjadi 2. Proses di looping terluar akan berakhir ketiga harga berlogika kurang dari 3 (t<3) atau t bernilai 2. 7.3. STRING String merupakan tipe data bentukan dari tipe data dasar yaitu char. Tipe char hanya mengijinkan untuk pembacaan 1 huruf (character), dengan memanfaatkan array maka kita dapat menampung beberapa karakter yang membentuk suatu kesatuan kata atau bahkan kalimat dengan menggunakan tipe data char, berikut sintaks penulisan tipe bentukan string dalam bahasa C. char nama[20]; char alamat[50]; dalam pembuatan variable string aturan umum dalam pembuatan variable yaitu mencantumkan tipe data di depan variable masih tetap berlaku, hanya saja setelah nama variable harus diikuti tanda kurung kotak dengan disertai angka didalamnya. Sebagai contoh dua varibel diatas mengandung arti bahwa variable nama dengan tipe char dapat menampung character/huruf sebanyak 20, demikian juga dengan variable alamat yang mempunyai tipe char dengan huruf maksimal yang dapat ditampung sebanyak 50 huruf. Terdapat Beberapa aturan yang perlu dicermati dalam melakukan inisialisasi awal pada variable string, aturan dalam melakukan inisialisasi awal tersebut diantaranya sebagai berikut: char saying[ ] = "This is a string." 2. char str[40] = "Feddy Setio Pribadi" 1. Inisialisasi dengan kurung kotak kosong Inisialisasi dengan kurung kotak terdifinisi Contoh 7.4. #include <stdio.h> #include <conio.h> int main(void) { char nama[80], alamat[80]; puts("Ketikan Nama Anda Lalu Tekan Enter"); puts("nLalu Ketikan Alamat Anda kemudian tekan Enter"); gets(nama); gets(alamat); printf("nNama Anda %s dengan Alamat %s",nama,alamat); 5
  • 38. getch(); } String mempunyai kajian tersendiri dalam pemrograman, C menyediakan library (string.h) yang berisi tentang fungsi-fungsi untuk melakukan manipulasi terhadap string. Berikut adalah contoh program yang menyajikan proses manipulasi yang dapat dilakukan pada string Contoh 7.5. #include <stdio.h> #include <string.h> #include <conio.h> main() { char s1[80], s2[80]; puts("Ketikan Sebuah Kata Lalu Tekan Enter"); puts("nKetikan Sebuah Kata kemudian tekan Enter"); gets(s1); gets(s2); printf("lengths: %d %dn", strlen(s1), strlen(s2)); if(!strcmp(s1, s2)) printf("The strings are equaln"); strcat(s1, s2); printf ("%sn", s1); strcpy(s1, "This is a test.n"); printf(s1); if(strchr("hello", 'e')) printf("e is in hellon"); if(strstr("hi there", "hi")) printf("found hi"); getch(); } Pada contoh 7.5 perhatikan sintaks program pada bagian include, fungsi-fungsi manipulasi string seperti strlen, strcmp, strcpy, strcat, dll terkandung dalam library <string.h>, oleh karena itu ketika kita akan melakukan manipulasi string dengan fungsi-fungsi tersebut maka terlebih dahulu kita harus menyertakan #include <string.h> pada bagain deklarsai library. Pengayaan Latihan 7.1 #include <stdio.h> #include <conio.h> main() { char str1[] = "To be or not to be"; char str2[] = ",that is the question"; 6
  • 39. int count = 0; /* Stores the string length */ while (str1[count] != '0') /* Increment count till we reach the string */ count++; /* terminating character. */ printf("nThe length of the string "%s" is %d characters.", str1, count); count = 0; /* Reset to zero for next string */ while (str2[count] != '0') /* Count characters in second string */ count++; printf("nThe length of the string "%s" is %d characters.n", str2, count); getch(); } Latihan 7.2 #include <conio.h> #include <stdio.h> void misteri(char *s); main() { char string[] ="naufal"; printf("Sebelum proses %sn",string); misteri(string); printf("Setelah proses %s",string); getch(); } void misteri(char *s) { while (*s != '0') { if (*s >= 'a' && *s <= 'z') *s -=32; s++; } } 7
  • 40. BAB VIII PEMROGRAMAN POINTER Pertemuan Minggu XI dan XII Alokasi Waktu : 4 Jam Pertemuan Standar Kompetensi : Mahasiswa dapat membuat program komputer sederhana dengan menggunakan bahasa C Kompetensi Dasar : Memahami program komputer yang menggunakan struktur Pointer Indikator : Mahasiswa dapat memahami struktur program bahasa C yang mengandung Pointer : Mahasiswa dapat membuat program dengan melibatkan Pointer pointer adalah variabel yang menyimpan alamat memori. Alamat ini adalah lokasi obyek lain (biasanya variabel lain) di memori. Misalnya, jika satu variabel berisi alamat dari variabel lain, variabel pertama dikatakan menunjuk ke variable kedua. Analogy konsep pointer adalah ketika kita ingin berkenalan dengan seseoarang akan tetapi kita tidak dapat menyapanya secara langsung maka biasanya kita akan bertanya kepada teman atau sahabatnya yang kebetulan kita kenal. Orang yang kita tanya perihal seseorang yang ingin kita ketahui identitasnya adalah seorang Pointer (Penunjuk). Analogy yang lain ketika kita ingin berkunjung ke suatu alamat akan tetapi kita tidak tahu di daerah mana alamat tersebut berada maka kita akan bertanya kepada orang yang kita anggap tahu tentag alamat tersebut, orang yang memberikan penjelasan tentang perihal alamat yang kita tanyakan itulah yang kita sebuat dengan Pointer. Poiter adalah variabel yang berisi alamat memori variabel lain dan secara tidak langsung menunjuk ke variabel tersebut. Sebagai contoh Andi berteman dengan Budi, lalu anda ingin mengetahui jumlah keluarga Budi untuk keperluan sensus penduduk. Anda tidak mengetahui alamat Budi, tetapi anda mengenal Andi. Untuk mencari jumlah keluarga Budi, maka pertama-tama anda pergi ke rumah Andi, misalnya di rumah No. 8321. Sesampai di Andi, Andi membaritahukan kepada anda bahwa alamat Budi ada pada alamat 9821. Kemudian anda pergi ke rumah Budi lalu mencatat jumlah keluarga yang dimiliki Budi yaitu lima orang (misalkan). Dalam contoh di atas, Andi bertindak sebagai pointer. Andi tidak memberitahukan jumlah keluarga Budi, tetapi Andi memberitahu alamat Budi, di alamat 9821 (alamat Budi) itulah Anda mengetahui jumlah keluarga Budi. Jika alamat dari ditunjukkan dengan simbol & dan isi dari ditunjukkan dengan symbol *, maka hubungan analogi di atas adalah: Jika variabel akan menjadi penunjuk, itu harus dinyatakan sebagai demikian. Sebuah deklarasi pointer terdiri dari jenis dasar, *, dan nama variabel. Bentuk umum untuk mendeklarasikan variabel pointer Tipe *nama_variabel ketika Anda menyatakan pointer brtipe int *, maka compiler mengasumsikan bahwa semua alamat yang akan ditunjuk oleh varibel pointer tersebut menunjuk ke sebuah variable yang betipe integer. 1
  • 41. Contoh 8.1 #include <stdio.h> #include <conio.h> main() { int x = 99; int *p1, *p2; p1 = &x; p2 = p1; /* print the value of x twice */ printf("Values at p1 and p2: %d % dn", *p1, *p2); /* print the address of x twice */ printf("Addresses pointed to by p1 and p2: %p %p", p1, p2); getch(); } Contoh 8.2 #include <stdio.h> #include <conio.h> main() { int U = 3; int v; int *pu; /* pointer t o an integer */ int *pv; /* pointer t o an integer */ pu = &U; /* assign address of U t o pu */ v = *pu; /* assign value of U t o v */ pv = &v; /* assign address of v t o pv */ printf("nu=%d &u=%X pu=%X *pu=%d", U, &U, pu, *pu); printf("nnv=%d &v=%X pv=%x *pv=%d", v, &v, pv, *pv); getch(); } Pada program diatas menyatakan pointer *s digunakan sebagai penunjuk variable kata yang berbentuk array dan bertipe char. Pointer *s ini digunakan sebagai argument fungsi hitung yang akan mengembalikan nilai integer apabila fungsi hitung tersebut dipanggil. Dengan kata lain fungsi hitung akan memberikan nilai berupa angka dari suatu masukan yang diberikan pada variable kata yang berupa sederet char (string). Contoh 8.3 2
  • 42. #include <stdio.h> #include <conio.h> void tukar(int *a, int *b); main() { int x,y; printf("Masukan nilai ke 1: "); scanf("%d",&x); printf("Masukan nilai ke 2: "); scanf("%d",&y); tukar(&x,&y); printf ("Setelah ditukarkan Nilai ke 1 %dn",x); printf ("Setelah ditukarkan Nilai ke 2 %d",y); getch(); } void tukar(int *a, int *b) { int smt; smt = *a; *a = *b; *b = smt; } Contoh 8.4 #include <stdio.h> #include <conio.h> main() { int number = 0; /* A variable of type int initialized to 0 */ int *pointer = NULL; /* A pointer that can point to type int */ number = 10; printf("nnumber's address: %p", &number); /* Output the address */ printf("nnumber's value: %dnn", number); /* Output the value */ pointer = &number; /* Store the address of number in pointer */ printf("pointer's address: %p", &pointer); /* Output the address */ printf("npointer's size: %d bytes", sizeof(pointer)); /* Output the size */ printf("npointer's value: %p", pointer); /* Output the value (an address) */ printf("nvalue pointed to: %dn", *pointer); /* Value at the address */ getch(); } Contoh 8.5 #include <stdio.h> 3
  • 43. #include <conio.h> void funct1 (int U, int v); /* function prototype */ void funct2 (int *pu, int *pv); /* function prototype */ main () { int u = 1; int v = 3; printf ( "n Before calling functl : u=%d v=%d", u, v); funct1 (u, v); printf ( "n After calling functl : u=%d v=%d", u, v); printf ("nn Before calling funct2: u=%d v=%d", u, v) ; funct2(&u, &v); printf ("n After calling funct2: u=%d v=%d", u, v); getch(); } void funct1 (int U, int v) { U = 0; v = 0; printf ( " n Within functl : u=%d v=%d", U, v); return; } void funct2 (int *pu, int *pv) { *pu = 0; *pv = 0; printf ("n Within funct2: *pu=%d *pv=%d", *pu, *pv) ; return; } Pengayaan Latihan 8.1 #include <stdio.h> #include <conio.h> int hitung(char *s); main() { char kata[80]; printf("Masukan Sebuah Kata : n"); scanf("%s",&kata); printf("%d",hitung(kata)); getch(); } int hitung(char *s) 4
  • 44. { int i=0; for (;*s!='0'; *s++) i++; return(i); } Latihan 8.2 #include <conio.h> #include <stdio.h> #include <stdlib.h> #define size 10 void push(int i); int pop(void); int *tos, *p1, stack[size]; main() { int value; p1 = stack; tos = stack; do { printf("Enter value: "); scanf("%d", &value); if(value != 0) push(value); else {printf("value on top is %dn", pop()); printf("Alamat Memori %pn",(p1+1));} } while(value != -1); getch(); } void push(int i) { p1++; if(p1 == (tos+size)) { printf("Stack Overflow.n"); exit(1); } *p1 = i; } int pop(void) { if(p1 == tos) { printf("Stack Underflow. n"); exit(1); } p1--; return *(p1+1); } 5
  • 45. BAB IX PEMROGRAMAN STRUKTUR Pertemuan Minggu XIII Alokasi Waktu : 2 Jam Pertemuan Standar Kompetensi : Mahasiswa dapat membuat program komputer sederhana dengan menggunakan bahasa C Kompetensi Dasar : Memahami program komputer yang menggunakan struktur (struct) Indikator : Mahasiswa dapat memahami struktur program bahasa C yang mengandung struct : Mahasiswa dapat membuat program dengan melibatkan struct Struktur adalah kumpulan dari beberapa variable, mungkin juga dari beberapa tipe data yang berbeda. Variable-variabel ini dibundle dalam satu kelompok kemudian di berinama varibel alias untuk mewakili nama dari kelompok tersebut. Struktur digunakan untuk membantu mengelola data yang komplek, khususnya dalam program yang relative besar. Salah satu contoh dari struktur adalah pencatatan daftar gaji. Seorang pekerja digambarkan oleg sekumpulan attribute seperti nama, alamat, nomor identitas, dan gajinya. Contoh lain adalah sebuah titik. Titik mempunyai sepasang koordinat misalnya koordinat titik Y dan titik X pada system koordinat kartesian. Sebagai contoh kita akan membuat sebuah struktur untuk menggambarkan sebuah titik dengan pasangan koordinatnya. Titik tersebut mempunyai nilai koodinat X dan Y yang masing-masing bertipe integer sebagai contoh titik Z (4,3). Dua koordinat tersebut dapat ditempatkan didalam satu struktur yang dideklarasikan sebagai berikut struct titik { int x; int y; } Sintaks umum penulisan structure adalah penyertaan keyword struct, terdapat variable anggota yang diapit dengan tanda kurung kurawal, berikut adalah bentuk umumnya struct tag { member 1; member 2; ..... member m; }; Kata kunci struct merupakan awal dari pendeklarasian sebuah struktur, tag adalah nama dari struct yang dimaksud. Tag dengan tipe struct tersebut selanjutnya dapat digunakan sebagai tipe data dari suatu variable. Berikut adalah contoh lain dari pembuatan struct. Struct account { int no_acc; char nama[80]; 1
  • 46. float balance; } Berikut cara menggunakan struct yang telah didefinisikan di atas struct titik pt; struct account akun; Pernyataan diatas merupakan pendefinisian dari sebuah variable dengan nama pt dengan tipe data struct titik. Program dibawah ini menggabarkan proses pendefinisian variable dan pemasukan data pada variable anggota dari struct titik. Contoh 9.1 #include <stdio.h> #include <conio.h> struct titik { int x; int y; }; main() { struct titik tk; int a, b; tk.x=2; tk.y=3; a =4; b = 5; printf("%d %d",tk.x,tk.y); printf("%d %d",a,b); getch(); } Contoh 9.1 mendemonstrasikan Operator titik ( . ) yaitu merupakan operator yang digunakan untuk mengakses variable anggota dari struct sebagai contoh tk.x berarti bahwa variable tk akan mengakses variable anggota x yang terdapat pada struct titik. Dalam program tersebut juga disertakan cara inisialisasi yang biasa dilakukan pada variable a dan b yang dideklarasikan pada fungsi main(). Contoh 9.2 #include <stdio.h> #include <conio.h> main() { struct 2
  • 47. { int a; int b; } x, y; x.a = 10; y = x; /* assign one structure to another */ printf("%d", y.a); getch(); } Contoh 9.3 #include <stdio.h> #include <conio.h> main() { /* Structure declaration */ struct horse { int age; int height; char name[20]; char father[20]; char mother[20]; }; struct horse My_first_horse; /* Structure variable declaration */ /* Initialize the structure variable from input data */ printf("Enter the name of the horse: " ); scanf("%s", My_first_horse.name ); /* Read the horse's name */ printf("How old is %s? ", My_first_horse.name ); scanf("%d", &My_first_horse.age ); /* Read the horse's age */ printf("How high is %s ( in hands )? ", My_first_horse.name ); scanf("%d", &My_first_horse.height ); /* Read the horse's height */ printf("Who is %s's father? ", My_first_horse.name ); scanf("%s", My_first_horse.father ); /* Get the father's name */ printf("Who is %s's mother? ", My_first_horse.name ); scanf("%s", My_first_horse.mother ); /* Get the mother's name */ /* Now tell them what we know */ printf("n%s is %d years old, %d hands high,", My_first_horse.name, My_first_horse.age, My_first_horse.height); printf(" and has %s and %s as parents.n", My_first_horse.father, My_first_horse.mother ); getch(); } 3