Buku Ajar Algoritma dan Pemrograman
BAB I DASAR ALGORITMA DAN NOTASI ALGORITMA Kompetensi Umum : Mahasiswa mampu memahahami dan menidentifikasi masalah serta mampu menyelesaikan masalah dengan menggunakan notasi algoritma Kompetensi Khusus : 1. Mahasiswa Mampu memahami suatu permasalahan 2. Mahasiswa Mampu menyusun langkah-langkah penyelesaian masalah dengan menggunakan algoritma deskriptif, flowchart dan pseudo code 3. Mahasiswa Mampu menerjemahkan Algoritma kedalam Bahasa Pemrograman C DASAR TEORI Tanpa kita sadari kegiatan kita sehari-hari sebenarnya merupakan contoh algoritma, yaitu kegiatan yang kita lakukan terurut atau tersusun mulai dari kita bangun tidur dipagi hari sampai kita tidur kembali dimalam hari. Contoh lain misalnya proses memasak nasi goreng, mulai dari mempersiapkan peralatan, memasak nasi, menyiapkan bumbu, menghidupkan kompor, letakkan wajan dikompor, tuang minyak ke wajan, tumis bumbu, masukkan nasi, tambahkan kecap, penyedap, aduk rata sampai matang, matikan kompor dan hidangkan nasi goreng. Urutan kegiatan tersebut kedalam bidang ilmu informatika yang dikenal dengan istilah Algoritma, kemudian urutan kegiatan tersebut diterjemahkan kedalam bahasa pemrograman komputer. Program komputer merupakan urutan instruksi-instruksi yang Roslina, M.I.T
1
Buku Ajar Algoritma danPemrograman
kita berikan kepada komputer untuk membantu kita dalam menyelesaikan suatu permasalahan atau pekerjaan. Sebelum kita membuat program, kita perlu menyusun langkah-langkah penyelesaian masalah secara sistematis dan logis, agar program yang dibuat menjadi terstruktur dan terdokumentasi dengan baik. Berdasarkan keterangan diatas dapat didefenisikan Algoritma adalah urutan langkah-langkah penyelesaian suatu masalah atau kegiatan yang tersusun secara sistematis dan logis. Logis maksudnya urtan kegiatan yang dilakukan sesuai dengan kaidah atau aturan-aturan yang berlaku atau dapat diterima oleh akal sehat kita. Gambar 1.1 menujukkan alur penyelesaian masalah mulai dari mengidentifkasi masalah atau kegiatan, menulis atau menyusun algoritma dan menterjemahkan algoritma kedalam bahasa pemrograman. Masalah
Algoritma
Pemrograman
Gambar 1.1 : Langkah-Langkah Penyelesaian Masalah Langkah-langkah komputer :
dalam
proses
pembuatan
program
1. Mendefinisikan masalah dan menganalisanya Langkah awal yang harus dilakukan adalah mengidentifikasikan masalah antara lain tujuan dari pembuatan program, parameter-parameter yang digunakan, fasilitas apa saja yang akan disediakan oleh program. Kemudian menentukan metode atau algoritma yang akan diterapkan untuk menyelesaikan
Roslina, M.I.T
2
Buku Ajar Algoritma danPemrograman
masalah tersebut dan terakhir menentukan bahasa pemrograman yang digunakan untuk pembuatan program.
2. Menyusun langkah-langkah kegiatan pembuatan program. Setelah masalah atau kegiatan didefenisikan maka ditetapkan urutan kegiatan yang akan dilakukan dalam proses pembuatan program seperti pada Gambar 1.2. Start
Disain Algoritma
Menulis Program
Uji Coba Program
Dokumentasi Program
Stop Gambar 1.2 : Diagram Alir Penyelesaian Masalah
Roslina, M.I.T
3
Buku Ajar Algoritma danPemrograman
NOTASI ALGORITMA Secara umum Algoritma memilki bentuk dasar yaitu : - Algoritma Sekuensial Semua langkah-langkah harus dilakukan secara runtut dari mulai sampai akhir dan tidak boleh dibolak-balik urutannya. - Algoritman Percabangan Algoritma untuk memilih salah satu dari beberapa pilihan, sehingga langkah yang dilakukan sesuai dengan kondisi yang terpenuhi. - Algoritma Perulangan Terdapat satu atau lebih langkah kegiatan yang dilakukan secara terus menerus sampai kondisinya tidak terpenuhi lagi. Untuk menyajikan algoritma dapat kita tulis dalam bentuk yaitu : a. Deskriftif Menulis atau menyusun langkah-langkah penyelesaian masalah atau kegiatan dengan cara menguraikannya dengan menggunakan bahasa formal. b. Flowchart Menulis atau menyusun langkah-langkah penyelesaian masalah atau kegiatan dengan menggunakan diagram (simbol-simbol flowchart). c. Pseudo Code Menulis atau menyusun langkah-langkah penyelesaian masalah atau kegiatan mirip atau mendekati bahasa pemrograman yang digunakan.
Roslina, M.I.T
4
Buku Ajar Algoritma danPemrograman
ALGORITMA DALAM BENTUK DESKRIPTIF Contoh : Buat algoritma untuk menentukan apakah suatu bilangan merupakan bilangan ganjil atau bilangan genap. Algoritmanya : a. mulai b. Masukkan sebuah bilangan sembarang c. Bagi bilangan tersebut dengan bilangan 2 d. Hitung sisa hasil bagi pada langkah 2. e. Bila sisa hasil bagi sama dengan 0 maka bilangan itu adalah bilangan genap tetapi bila sisa hasil bagi sama dengan 1 maka bilangan itu adalah bilangan ganjil. f. Selesai ALGORITMA DALAM BENTUK FLOWCHART Flow-chart atau bagan alir adalah suatu skema/gambar yang memperlihatkan urutan instruksi/kegiatan dan hubungan antar proses beserta instruksinya. Gambaran ini dinyatakan dengan symbol. Dengan demikian setiap simbol menggambarkan proses tertentu. Sedangkan antara proses digambarkan dengan garis penghubung. Contoh Simbol-simbol Flowchart terlihat pada gambar 1.3.
Roslina, M.I.T
5
Buku Ajar Algoritma danPemrograman
Gambar 1.3 : Simbol Flowchart
Contoh algoritma di atas tentang menentukan apakah suatu bilangan adalah bilangan ganjil atau bilangan genap, flowchartnya adalah sebagai berikut :
Roslina, M.I.T
6
Buku Ajar Algoritma danPemrograman
Start
Hasil=0 Bilangan=17
Hasil=Bilangan %2
t Hasil=0
y “Bilangan Genap”
“Bilangan Ganjil”
Stop
Roslina, M.I.T
7
Buku Ajar Algoritma danPemrograman
ALGORITMA DALAM BENTUK PSEUDO CODE Pseudocode digunakan untuk mewakili urutan-urutan proses dari program. Pseudo berarti imitasi dihubungkan dengan instruksi yang ditulis dalam bahasa komputer. Contoh algoritma dalam bentuk Pseudocode : Start Hasil=0 Bilangan = 17 Hasil=Bilangan%2 If (hasil=0) Print “Bilangan Genanp Else Print “Bilangan Ganjil” end MENTERJEMAHKAN ALGORITMA KEDALAM BAHASA PEMROGRAMAN. Dalam buku ini kita menggunakan Bahasa Pemrograman C. Struktur Bahasa Pemrograman C Pemrograman C terseusun dari sejumlah blok fungsi. Sebuah program minimal terdiri dari sebuah fungsi. Setiap fungsi terdiri dari satu atau beberapa pernyataan. Bentuk Umum Struktur Program C : Pengarah praprocessor Nama-fungsi (daftar parameter) { Tubuh fungsi }
Roslina, M.I.T
8
Buku Ajar Algoritma danPemrograman
Pengenalan Fungsi Fungsi merupakan statemen yang membangun sebuah program C. Fungsi dapat memiliki bagian pernyataan fungsi yang diawali dengan kurung kurawal buka ({) dan diakhiri dengan kurung kurawal tutup (}) dan ada juga fungsi yang tidak memiliki bagian pernyataan seperti fungsi main (). Contoh fungsi : Main() Printf() Scanf() Praprocessor Praprocessor dipakai untuk membaca file yang dinamakan dengan file-judul (header file), yaitu file yang berisi deklarasi fungsi dan defenisi konstanta. File ini mempunyai ciri yaitu namanya diakhiri dengan extension .h. Contoh #include<stdio.h> memberikan pernyataan pada kompiler agar membaca file bernama stdio.h pada saat pelaksanaan kompilasi. Penulisan Program C merupakan bahasa pemrograman yang memberikan kebebasan dalam penulisan program dengan catatan penulisannya harus konsisten (disarankan penulisan program menggunakan huruf kecil) dan mudah dipahami, kalau terjadikesalahan mudah ditelusuri. Contoh beberapa bentuk penulisan program : #include<stdio.h> main() { printf(“Selamat Belajar\n”); printf(“Turbo C\n”); }
Roslina, M.I.T
9
Buku Ajar Algoritma danPemrograman
atau : #include<stdio.h> main(){ printf(“Selamat Belajar\n”); printf(“Turbo C\n”); } Komentar Program Komentar program diperlukan untuk memberikan keterangan dalam program, agar mudah dipahami. Komentar program diwali dengan tanda /* dan diakhiri dengan tanda */ Contoh : Awal komentar /* Program contoh1 Dibuat oleh : Team */ Akhir komentar #include<stdio.h> main() { printf(“Selamat Belajar\n”); printf(“Turbo C\n”); } RANGKUMAN Algoritma adalah urutan langkah-langkah penyelesaian suatu masalah atau kegiatan yang tersusun secara sistematis dan logis. Notasi algoritma terdiri dari tiga bentuk yaitu deskriptif, flowchart dan pseudo code. Dalam penyelesaian suatu masalah atau kegiatan diawali dengan identifikasi atau menentukan masalah, menyusun alagoritma dan menterjemahkan algoritma kedalam bahasa pemrograman.
Roslina, M.I.T
10
Buku Ajar Algoritma danPemrograman
LATIHAN 1. Algoritma dan program untuk menjumlahkan dan mengalikan 2 buah bilangan dan mencetak hasilnya Algoritma : Start
A, B, C, D
A=45 B=25
Tampilkan Nilai A dan B
C= A+B D=A * B
Tampilkan Nilai C dan D Roslina, M.I.T
11
Stop
Buku Ajar Algoritma danPemrograman
Program : #include<stdio.h> main() { int A,B,C, D; A=45; B=25; clrscr(); printf("Nilai A : %d \n",A); printf("Nilai B : %d \n",B); C=A + B; D=A * B; printf("\n Hasil Penjumlahan A dengan B = %d \n",C); printf("\n Hasil Penjumlahan A dengan B = %d \n",D); getch(); } 2. Algoritma dan program untuk menukarkan isi dua buah variabel dan menampilkan hasilnya Algoritma :
Roslina, M.I.T
12
Buku Ajar Algoritma danPemrograman
Start
A, B, C
A=20 B=50
Tampilkan Nilai A dan B C=A A=B B=C
Tampilkan Nilai A dan B
Stop
Roslina, M.I.T
13
Buku Ajar Algoritma danPemrograman
Program : #include<stdio.h> main() { int A,B,C; A=20; B=50; clrscr(); printf("Nilai A sebelum Ditukar : %d \n",A); printf("Nilai B sebelum Ditukar : %d \n",B); C=A; A=B; B=C; printf("\n Nilai A setelah Ditukar : %d \n",A); printf("Nilai B setelah Ditukar : %d \n",B); getch(); }
TUGAS : Buatlah algoritma dan program untuk menghitung Keliling, Luas Lingkaran dan menampilkan hasilnya.
Roslina, M.I.T
14
Buku Ajar Algoritma danPemrograman
BAB 2 PROGRAM INPUT DAN OUTPUT Kompetensi Umum : Mahasiswa mampu membuat program input output dengan menggunakan fungsi input dan fungsi output Kompetensi Khusus: 1. 2. 3.
Mahasiswa mampu menjelaskan dan menggunakan fungsi untuk input data Mahasiswa mampu menjelaskan dan menggunakan fungsi untuk menampilkan/mencetak informasi Mahasiswa mampu menjelaskan dan menggunakan penentu format data
LANDASAN TEORI Untuk menghasilkan sesuatu kita pasti memerlukan bahan untuk diproses contoh pada perusahaan yang bergerak dalam produksi, maka untuk menghasilkan suatu produk diperlukan bahan baku untuk diproses sehingga menghasilkan produk jadi. Begitu juga halnya dalam pemrograman komputer untuk menghasilkan output atau informasi diperlukan data untuk diolah. Input data dilakukan melalui keyboard lalu diproses dan menghasilkan output melalui piranti output seperti monitor atau printer. Program Input Data diinputkan melalui keyboard saat eksekusi program berlangsung. Fungsi yang digunakan untuk input data yaitu : scanf(), getch() dan getche().
Roslina, M.I.T
15
Buku Ajar Algoritma danPemrograman
a. scanf() Fungsi ini digunakan untuk menginputkan berbagai jenis tipe data dengan menggunakan penentu format data seperti pada tabel 2.1. 2.1 Daftar penentu format data Kode %c %s % i atau %d %e atau %f %o %x %u l L h
Keterangan Membaca sebuah karakter Membaca sebuah string Membaca sebuah integer Membaca sebuah bilangan real (bisa dalam bentuk eksponensial) Membaca sebuah integer oktal Membaca sebuah integer hexadesimal Membaca sebuah integer tak bertanda Awalan untuk membaca data long int (misal %ld) Awalan untuk membaca data long double (misal %Lf) Awalan untuk membaca data short int (misal %hd)
b. getch() dan getche() fungsi getch() digunakan untuk membaca sebuah karakter, dengan sifat karakter yang diinputkan tidak perlu diakhiri dengan ENTER dan karakter yang diinputkan tidak akan ditampilkan di layar. Sedangkan fungsi getche() kegunaannya sama dengan fungsi getch(), perbedaannya karakter yang diinputkan ditampilkan di layar.
Roslina, M.I.T
16
Buku Ajar Algoritma danPemrograman
Program Output Untuk menampilkan output/informasi digunakan fungsi printf(), puts() dan putchar(). a. printf() Fungsi printf() digunakan untuk menampilkan berbagai jenis tipe data. Fungsi printf() sama dengan fungsi scanf() menggunakan penentu format. b. puts() Fungsi puts() digunakan khusus untuk manampilkan string yang ditampilkan secara otomatis akan diakhiri dengan \n (pindah baris) c. putchar() Fungsi putchar() digunakan khusus untuk menampilkan sebuah karakter ke layar, akan tetapi tidak diakhir dengan pindah baris. RANGKUMAN Informasi atau output merupakan hasil pengolahan data. Fungsi yang digunakan untuk menginputkan data digunakan fungsi scanf(), puts() dan putchar. Sedangkan fungsi untuk menampilkan informasi atau output digunakan fungsi printf(),getch() dan getche(). LATIHAN 1.
Algoritma dan program menginputkan sejumlah nilai, menghitung nilai total dan nilai rata-rata
Roslina, M.I.T
17
Buku Ajar Algoritma danPemrograman
Flowchart : Start
Nl1,nl2,nl3,nl4, nl5,total,rata2
Inputkan nl1, nl2 ,nl3, nl4, nl5
total=nl1 + nl2 + nl3 + nl4 + nl5 rata2=total/5
Tampilkan total, rata2
Stop
Roslina, M.I.T
18
Buku Ajar Algoritma danPemrograman
Program : #include <stdio.h> main() { int nl1, nl2,nl3,nl4,nl5; float total, rata2; clrscr(); printf("Inputkan Nilai 1 : "); scanf("%d", &nl1); printf("Inputkan Nilai 2 : "); scanf("%d", &nl2); printf("Inputkan Nilai 3 :" ); scanf("%d", &nl3); printf("Inputkan Nilai 4 :" ); scanf("%d", &nl4); printf("Inputkan Nilai 5 :" ); scanf("%d", &nl5); total=nl1+nl2+nl3+nl4+nl5; rata2=total/5; printf("\nNilai Total = %f\n",total); printf("Nilai Rata-Rata = %f\n",rata2); getch(); }
Roslina, M.I.T
19
Buku Ajar Algoritma danPemrograman
2. Algoritma dan program untuk menghitung luas segitiga Start
Alas, luas
tinggi,
Inputkan tinggi
alas,
Luas =0.5 * alas * tinggi
Tampilkan luas
Stop
Program : #include<stdio.h> main() { int alas,tinggi; float luas; clrscr();
Roslina, M.I.T
20
Buku Ajar Algoritma danPemrograman
printf("Inputkan Alas Segitga : "); scanf("%d",&alas); printf("Inputkan Tinggi Segitga :”); scanf("%d",&tinggi); luas=0.5*alas*tinggi; printf("Luas Segitiga = %.2f\n",luas ); getch (); }
TUGAS Buat algoritma dan program menghitung dan menampilkan : - luas persegi panjang - luas bujur sangkar - jumlah bayar barang
Roslina, M.I.T
21
untuk
menginputkan,
Buku Ajar Algoritma danPemrograman
BAB 3 TIPE DATA, OPERATOR DAN EKSPRESI Kompetensi Umum : Mahasiswa mampu menjelaskan dan menggunakan tipe data, variabel, konstanta dan operator dalam program Kompetensi Khusus : 1. Mahasiswa mampu Menjelaskan dan menggunkan tipe data dasar (jenis dan jangkauannya) 2. Mahasiswa mampu Menjelaskan dan menggunakan Variabel 3. Mahasiswa mampu Menjelaskan dan menggunakan konstanta 4. Mahasiswa mampu Menjelaskan dan menggunakan berbagai jenis operator DASAR TEORI Tipe Data Seperti penjelasan sebelumnya untuk memroduksi produk tidak hanya satu jenis bahan baku yang diperlukan melainkan membutuhkan berbagai jenis bahan baku. Begitu juga dalam membangun program juga diperlukan berbagai jenis tipe data untuk diolah sehingga menghasilkan informasi atau output yang bermanfaat. Data menggambarkan suatu nilai yang bisa dinyatakan dalam bentuk konstanta atau variabel. Konstanta menyatakan suatu nilai yang tetap dan variabel menyatakan nilai yang dapat diubah-ubah selama eksekusi program berlangsung.
Roslina, M.I.T
22
Buku Ajar Algoritma danPemrograman
Jenis tipe data : 1. Bilanga bulat (integer) Tipe data integer terdiri dari bilangan bulat tanpa pecahan atau tidak ada angka dibelakang koma 2. Bilangan real presisi-tunggal. Tipe data ini bilangan bulat mengandung pecahan atau memiliki angka dibelakang koma 3. Bilangan real presisi-ganda. Sama seperti real presisi-tunggal bedanya pada jangkauan atau kapasitas daya tampung data. 4. Karakter Tipe data ini terdiri dari satu huruf atau lebih. 5. Tak bertipe Terdiri dari data yang tidak bertipe. Pada tabel 3.1 menunjukkan tipe data, total bit dan kawsan dari suatu tipe data. Tabel 3.1 Daftar tipe data Tipe data Char Int Float
Total bit 8 16 32
Kawasan
Keterangan
-128 s/d 127 -32768 s/d 32767 3.4E-38 s/d 3.4E+38
Double
64
1.7E-308 s/d 1.7E+308
Void
0
-
Karakter Bilangan Integer Bilangan Real Presisitunggal Bilangan Real Presisiganda Tak bertipe
Roslina, M.I.T
23
Buku Ajar Algoritma danPemrograman
Variabel Variabel merupakan label yang diberikan kepada sebuah data yang digunakan untuk menyimpan suatu nilai dalam program, dan nilai tersebut dapat diubah-ubah selama eksekusi program berlangsung. Syarat memberi nama variabel : - Gabungan huruf dan angka, dan harus diawali dengan huruf. - Tidak boleh mengandung spasi, titik dan simbol khusus kecuali underscore ( _ ). a. Deklarasi variabel Varibel yang digunakan dalam program harus dideklarasikan terlebih dahulu, yaitu pemesanan memori dan penentuan jenis data yang bisa disimpan dalam variabel tersebut. Bentuk umum deklarasi variabel : Tipe nama-variabel Pada deklarasi variabel, nama-variabel dapat terdiri dari satu variabel atau beberapa variabel yang dipisahkan dengan tanda koma (,). Contoh : int R ; float nilai, nilai_total, ipk; b. Memberikan nilai variabel Bentuk umum memberikan nilai ke suatu variabel : variabel=nilai Roslina, M.I.T
24
Buku Ajar Algoritma danPemrograman
Contoh : R=10; nilai=70.5; ipk=3.4; c. inisialisasi variabel Merupakan pemberian nilai awal terhadap suatu variabel. Adakalanya dalam pembuatan program, setelah variabel dideklarasikan langsung diberi nilai awal. Contoh : int total; atau int total=0; total=0;
Konstanta Konstanta menyatakan nilai tetap. Tidak perlu dideklarasikan, dan mempunyai tipe data. Aturan penulisan: - Konstanta karakter : diawali dan diakhiri dengan tanda petik tunggal, Contoh : „A‟ dan „@‟. - Konstanta integer : ditulis dengan angka (tanpa tanda petik) tanpa mengandung pemisah ribuan dan tak mengandung bagian pecahan. Contoh : –1 dan 32767. - Konstanta real (float dan double) bisa mengandung pecahan (dengan tanda berupa titik) dan nilainya bisa ditulis dalam bentuk eksponensial (menggunakan tanda e), contohnya : 27.5f (untuk tipe float) atau 27.5 (untuk tipe double) dan 2.1e+5 (maksudnya 2,1 x 105). - Konstanta string merupakan deretan karakter yang diawali dan diakhiri dengan tanda petik-ganda (“). Contoh: “Program Dasar”. - Menggunakan keyword #define
Roslina, M.I.T
25
Buku Ajar Algoritma danPemrograman
-
#define atau Menggunakan keyword const const = ; Contoh: #define PI 3.14159 atau : const float PI = 3.14159;
Operator Operator merupakan simbol atau karakter yang digunakan untuk melakukan suatu operasi atau manipulasi data seperti pada tabel 3.2, tabel 3.3, tabel 3.4 dan tabel 3.5 merupakan tabel operasi matematika, operasi logika dan lain sebagainya. Tabel 3.2 Opeartor Arimatika Operator Operasi * Perkalian / Pembagian % Sisa pembagian + Penjumlahan Pengurangan Tabel 3.3 Operator penaikan dan penurunan Operator Operasi ++ Penaikan -Penurunan Operator relasi Operator relasi (hubungan) biasa dipakai untuk membandingkan dua buah nilai. Hasil perbandingan berupa keadaan benar atau salah.
Roslina, M.I.T
26
Buku Ajar Algoritma danPemrograman
Tabel 3.4 Operator Relasi Operator Operasi > Besar dari >= Besar dari atau sama dengan < Kurang dari <= Kurang dari atau sama dengan == Sama dengan != Tidak sama dengan Operator Logika Biasa digunakan untuk menghubungkan ungkapan relasi Tabel 3.5 Operator Logika Operator Operasi && Dan (AND) || Atau (OR) ! Tidak (NOT) RANGKUMAN Dalam menghasilkan informasi atau output, data yang diolah terdiri dari berbagai jenis tipe data yaitu bilangan bulat integer Bilanga bulat (integer), Bilangan real presisi-tunggal, Bilangan real presisi-ganda, Karakter dan Tak bertipe. Untuk menyimpan data diperlukan memory yang diberi label dengan nama variabel. Dalam pengolahan data diperlukan berbagai jenis operator yaitu operator aritmatika, operator penaikan penurunan, operator relasi dan operator logika. Memberi nilai variabel dapat dilakukan dengan memberi nilai langsung atau menggunakan keyword #define dan const.
Roslina, M.I.T
27
Buku Ajar Algoritma danPemrograman
LATIHAN Algoritma dan program penggunaan operator Algoritma :
Start
Hasil, a, b, c
Inputkan a, b, c
Hasil= a % b
Tampilkan hasil, a-b, b*c, a/c, a+b*c
Stop
Roslina, M.I.T
28
Buku Ajar Algoritma danPemrograman
Program : #include <stdio.h> main() { int a, b, c; float hasil; printf("Masukkan nilai a = "); scanf("%d", &a); printf("Masukkan nilai b = "); scanf("%d", &b); printf("Masukkan nilai c = "); scanf("%d", &c); printf("\n"); hasil=a%b; printf("Sisa hasil bagi : a % b = %.2f\n", hasil); printf("Hasil pengurangan : a - b = %d\n", a-b); printf("Hasil perkalian : b * c = %d\n", b * c); printf("Hasil pembagian : a / c = %.2f\n",a/c); printf("Hasil operasi : a + b * c = %d\n", a + b * c); getch(); }
TUGAS a. Buatlah algoritma dan program untuk menghitung polynomial di bawah ini : 2
3x – 5x + 6 dengan nilai x merupakan masukan dari user. b. Buatlah algoritma dan program untuk mengkonversi suhu dari Celcius ke Fahrenheit dengan rumus : F = C * 1.8 + 32
Roslina, M.I.T
29
Buku Ajar Algoritma danPemrograman
BAB 4 PEMILIHAN DENGAN INSTRUKDI IF DAN SWITCH Kompetensi Umum : Mahasiswa mampu membuat program dengan menggunakan instruksi pemilihan if dan switch Kompetensi Khusus : 1. Mahasiswa mampu menggunaan pernyataan if 2. Mahasiswa mampu menggunaan pernyataan if-else 3. Mahasiswa mampu menggunaan pernyataan if dalam if 4. Mahasiswa mampu menggunaan pernyataan switch DASAR TEORI Dalam kehidupan, kita pernah dihadapkan kepada beberapa pilihan yang harus diputuskan pilihan mana yang harus diambil. Contohnya pada saat seseorang memasuki perguruan tinggi, karena merasa kawatir tidak lulus maka tes diberbagi perguruan tinggi. Setelah pengumuman ternyata lulus pada tiga perguruan tinggi, maka saat itu dia harus memutuskan satu perguruan tinggi yang harus dia ikuti dan hampir tidak mungkin dia mengikuti ketiga perguruan tinggi tersebut. Sama halnya dengan pembuatan program, pengambilan keputusan diperlukan jika ada dua atau lebih kondisi yang harus dipilih salah satu. Pernyataan-pernyataan yang dapat digunakan dalam pengambilan keputusan adalah : - Pernyataan if - Pernyataan if-else - Pernyataan switch...case Pernyataan-pernyataan diatas memerlukan suatu kondisi yaitudibentuk dengan operator relasi dan/atau operator logika.
Roslina, M.I.T
30
Buku Ajar Algoritma danPemrograman
Pernyataan if Sintak: t if (kondisi) pernyataan
kondisi
y pernyataan
Keterangan : - Jika kondisi benar maka pernyataan dilakukan. - Pernyataan bisa satu statement atau beberapa statement - Jika pernyataan lebih dari satu gunakan tanda „{„ dan „}‟ untuk mengelompokkan pernyataan2 itu Pernyataan if-else Sintak:
t kondisi
if (kondisi) pernyataan1 else pernyataan2
y pernyataan
Roslina, M.I.T
31
pernyataan
Buku Ajar Algoritma danPemrograman
Keterangan : - Jika kondisi benar maka pernyataan1 dilakukan. - Jika kondisi salah maka pernyataan2 dilakukan. Nested -if Di dalam pernyataan if (atau if-else) bisa terdapat pernyataan if (atau if-else) yang lain. Bentuk umum: if(kondisi-1) if(kondisi-2) : if(kondisi-n) pernyataan else pernyataan; : else pernyataan; else pernyataan;
Pernyataan Switch-Case Digunakan sebagai pengganti pernyataan if bertingkat (elseif). Ketika sebuah switch digunakan, - Bahasa C akan menilai ekspresi switch, kemudian berpindah ke case yang pilihan dari pemilih sesuai dengan nilai dari ekspresi. - Program mengeksekusi statement yang diminta dari point sebuah case sampai statement break dibaca, kemudian
Roslina, M.I.T
32
Buku Ajar Algoritma danPemrograman
pindah ke statement awal setelah membaca akhir dari struktur switch. - Jika tidak ada case yang sesuai, maka blok default akan dieksekusi.
Roslina, M.I.T
33
Buku Ajar Algoritma danPemrograman
Bentuk umum : switch(ekspresi) { case selector-1: blok 1 statemen ; ......... Break; case selector -2: blok 2 statemen; ......... Break; case selector -n: blok n statemen; ......... Break; default : blok default statemen; ........... Break; }
RANGKUMAN Pernyataan yang digunakan untuk pengambilan keputusan adalah : - Pernyataan if - Pernyataan if-else - Pernyataan switch...case
Roslina, M.I.T
34
Buku Ajar Algoritma danPemrograman
LATIHAN 1. Algoritma dan program untuk menentukan suatu bilangan genap dan bilangan ganjil Algoritma : Start
Hasil=0, Bil
Input Bil
Hasil=Bil % 2
T Hasil=0 y “Bilangan Genap”
“Bilangan Ganjil”
Roslina, M.I.T
35 Stop
Buku Ajar Algoritma danPemrograman
Program : #include<stdio.h> main() { int Bil; float Hasil=0; clrscr(); printf("Inputkan Sebuah Bilangan : "); scanf("%d",&Bil); Hasil=Bil % 2; if(Hasil==0) printf("%d adalah Bilangan Genap\n", Bil); else printf("%d adalah Bilangan Ganjil\n",Bil); getch (); } 2. Program untuk menhitung nilai akhir suatu matakuliah #include<stdio.h> main() { float absen,tugas,mid,uas,na; char nh; clrscr(); printf("Input nilai kehadiran : "); scanf("%f" ,&absen); printf("Input nilai Tugas : "); scanf("%f" ,&tugas); printf("Input nilai mid : "); scanf("%f" ,&mid); printf("Input nilai UAS :" ); scanf("%f" ,&uas); na=0.1*absen+0.2*tugas+0.3*mid+0.4*uas; printf("Nilai Akhir = %.2f\n",na); if (na>=80 && na<=100)
Roslina, M.I.T
36
Buku Ajar Algoritma danPemrograman
nh='A'; if (na>=70 && na<=79) nh='B'; if (na>=60 && na<=69) nh='C'; if (na>=50 && na<=59) nh='D'; if (na>=10 && na<=49) nh='E'; printf("Nilai Huruf = %c\n",nh); if (na>=60) printf("Anda Lulus\n" ); else printf("Anda tidak lulus\n"); getch(); } 3. Program untuk menghitung diskon dan jumlah bayar harga barang #include <stdio.h> main() { float j,h,hbrg,diskon,jb; clrscr(); printf("Inputkan Jumlah Barang :"); scanf("%f",&j); printf("Inputkan Harga Barang :"); scanf("%f",&h); hbrg=j*h; printf("Jumlah Harga Barang = %.2f\n",hbrg); if (hbrg>=500000) {
Roslina, M.I.T
37
Buku Ajar Algoritma danPemrograman
diskon=0.5*hbrg; jb=hbrg-diskon; } if (hbrg<500000) { diskon=0.2*hbrg; jb=hbrg-diskon; } printf("Jumlah Diskon = %.2f\n",diskon); printf("JumlaH Bayar = %.2f\n",jb); getch(); }
TUGAS a. Buatlah algoritma dan program untuk menghitung determinan dan mencari akar-akar dari persamaan 2
kuadrat : ax + bx + c = 0 , dengan ketentuan sbb : 2
D = b - 4ac Jika D = 0 , maka terdapat 2 akar real yang kembar, yaitu : x1 = x2 = -b / 2a Jika D > 0 , maka terdapat 2 akar real yang berlainan, yaitu : x1 = (-b + sqrt(D)) / 2a x2 = (-b - sqrt(D)) / 2a Jika D < 0 , maka terdapat 2 akar imaginair yang berlainan, yaitu : x1 = -b / 2a + (sqrt(-D) / 2a) i x2 = -b / 2a - (sqrt(-D) / 2a) i Input : a, b, c
Roslina, M.I.T
38
Buku Ajar Algoritma danPemrograman
Output : Nilai Determinan dan nilai akar-akar persamaan (x1& x2). Ketentuan : - untuk mencari akar dari x, gunakan : sqrt(x) yang didefinisikan pada <math.h>. b.
Buatlah algoritma dan program untuk menampilkan menu dan melakukan proses sbb : Menu : 1. Keliling lingkaran dengan rumus Kel=3.14*r*r 2. Menghitung luas lingkaran dengan rumus luas = 3.14 2
*r 3. Menghitung volume silinder. Dengan rumus vol = 2
3.14 * r * t Ketentuan : gunakan switch-case c. Buat program untuk mencetak kwitansi pemesanan makanan pada restoran fast food. Data input : Nama Paket, jumlah paket Output : KWITANSI PEMBAYARAN MAKANAN Nama Paket : Jumlah Paket : Harga/Paket : Jumlah Harga : PPn (10%) : Jumlah Bayar : Terima Kasih Atas Kunjungan Anda Dengan ketentuan : Nama Paket Harga/Paket 1 15000 2 20000 3 22500 4 25000 5 27500 Roslina, M.I.T
39
Buku Ajar Algoritma danPemrograman
Jumlah harga=jumlah paket * Harga/Paket PPn = 10% * Jumlah harga Jumlah Bayar = Jumlah harga + PPn d. Modifikasi Program berikut dengan menggunakan instruksi switch..case #include<stdio.h> main() { char nip[9], nama[15]; int gol,st; float gapok,tjg,gk,pph,gb; clrscr(); printf("DAFTAR GAJI PEGAWAI\n"); printf("Inputkan NIP Pegawai : "); scanf("%s" ,&nip); printf("Inputkan Nama Pegawai : "); scanf("%s" ,&nama); printf("Inputkan Golongan (1-4) : "); scanf("%d" ,&gol); printf("Inputkan Status (1=Maried,2=single): "); scanf("%d" ,&st); if (gol==1) gapok=900000; if (gol==2) gapok=1250000; if (gol==3) gapok=1750000; if (gol==4) gapok=2500000; if (st==1) tjg=0.25*gapok; if (st==2)
Roslina, M.I.T
40
Buku Ajar Algoritma danPemrograman
tjg=0.05*gapok; gk=gapok+tjg; pph=0.1*gapok; gb=gk-pph; printf("Gaji Pokok printf("Tunjangan printf("Gaji Kotor printf("PPh printf("Gaji Bersih getch(); }
: %.2f\n",gapok); : %.2f\n",tjg); : %.2f\n",gk ); : %.2f\n",pph); : %.2f\n",gb );
BAB 5 PENGULANGAN WHILE DAN DO..WHILE Kompetensi Umum : Mahasiswa mampu membuat program menggunakan instruksi pengulangan while dan do..while Kompetensi Khusus: - Mahasiswa mampu menjelaskan dan menggunakan proses pengulangan pernyataan while
Roslina, M.I.T
41
Buku Ajar Algoritma danPemrograman
- Mahasiswa mampu menjelaskan dan menggunakan proses pengulangan pernyataan do..while - Mahasiswa mampu menjelaskan dan menggunakan pernyataan break - Mahasiswa mampu menjelaskan dan menggunakan pernyataan continue DASAR TEORI Dalam pekerjaan sehari-hari, kita sering melaksanakan suatu kegiatan yang sama secara berulang-ulang seperti mencetak satu surat dalam jumlah yang banyak, mencetak slip gaji pegawai berulang-ulang setiap bulannya. Begitu juga dalam membuat program ada satu atau beberapa baris atau sintaks program yang diulang untuk menghasilkan suatu informasi atau output. Pernyataan yang digunakan untuk pengulangan baris program tersebut adalah while, do..while dan for. Pernyataan while Pada pernyataan ini, pengecekan kondisi pengulangan dilakukan di bagian awal blok pengulangan (loop), apabila kondisi tidak benar maka pernyataan di dalam blok loop tidak dikerjakan sama sekali.
Bentuk umum :
while(kondisi) pernyataan; Contoh : bil = 1; while (bil <= 15) { printf("%d\n", bil);
Roslina, M.I.T
42
Buku Ajar Algoritma danPemrograman
bil = bil + 3; } Output dari program diatas adalah : 1 4 7 10 13 Pernyataan do-while Pada pernyataan ini, pengecekan kondisi loop dilakukan di bagian akhir blok pengulangan. Walupun kondisi tidak benar maka pernyataan didalam blok loop pasti dijalankan minimal 1 kali. Bentuk umum : do { pernyataan; } while(kondisi); Contoh potongan program : bil = 1; do { printf("%d\n", bil); bil = bil + 3; } while (bil <= 15); Output yang dihasilkan adalah : 1 4 7 10 13
Roslina, M.I.T
43
Buku Ajar Algoritma danPemrograman
Pernyataan break Berfungsi untuk keluar dari blok pengulangan (loop) dalam instruksi while dan do-while. Juga berfungsi untuk keluar dari blok switch. Bentuk Umum : Pada loop: while(kondisi) { break; } statement-x; Pada switch: switch (ekspresi) {..... case konstanta-2: pernyataan-2; break; ..... } Pernyataan Continue Berfungsi untuk melanjutkan proses pengulangan Bentuk umum : while(kondisi) { continue; } statemen-x;
Roslina, M.I.T
44
Buku Ajar Algoritma danPemrograman
RANGKUMAN Pernyataan yang digunakan untuk pengulangan satu atau beberapa baris program adalah while dan do..while. untuk menghentikan proses pengulangan digunakan pernyataan break dan untuk melanjutkan proses pengulangan digunakan pernyataan continue. LATIHAN 1. Algoritma dan program penggunaan looping do..while untuk menghitung jumlah dan nilai rata-rata
Roslina, M.I.T
45
Buku Ajar Algoritma danPemrograman
Start
i, jumlah, angka, rata2
Input angka i++ Jumlah =jumlah + angka
y
t i<=5
Rata2=jumlah/5 #include<stdio.h> main() { int i,jumlah,angka; float rata2; rata2=0,jumlah=0; i=1; clrscr(); do {
Tampilkan jumlah, rata2
Stop
Roslina, M.I.T
46
Buku Ajar Algoritma danPemrograman
printf("inputkan bilangan : "); scanf("%d",&angka); i++; jumlah=jumlah+angka; } while(i<=5); rata2=jumlah/5; printf("\n\nJumlah angka = %.2f\n",jumlah); printf("\nRata-rata = %.2f",rata2); getch(); } 2. Program menghitung harga total pembelian #include<stdio.h> main() { int jumlah,kode; float harga,total; double bayar; char kar; printf("kode Jenis Harga\n"); printf("1 Milo Rp 10.000\n"); printf("2 Kopi Rp. 5000\n"); printf("3 Coca Cola Rp 2500\n"); printf("4 Orange Juice Rp 2000\n"); total=0; do { printf("Masukkan kode minuman : \n"); scanf("%d",&kode); printf("Masukkan jumlah pesanan "); scanf("%d",&jumlah); if(kode==1) harga = 20000*jumlah;
Roslina, M.I.T
47
Buku Ajar Algoritma danPemrograman
else if(kode==2) harga = 15000*jumlah; else if(kode==3) harga = )10000*jumlah; else if(kode==4) harga = 5000*jumlah; total=total+harga; printf("Mau menambah pesanan ? (Y/T)\n"); scanf("%s",&kar); } while(kar=='Y'); if(total > 100000) bayar=total-(0.15*total); else bayar=total; printf("\nHarga yang harus dibayar = %10.2f\n",bayar); getch();} TUGAS 1. Buat algoritma dan program untuk menampilkan semua bilangan genap yang terletak antara 20 sampai dengan 200, dengan menggunakan while dan do..while 2. Buat program untuk menghitung jumlah bilangan ganjil dan bilangan genap serta hitung total bilangan ganjil dan bilangan genap tersebut dari n buah bilangan yang diinputkan. 3. Buat algoritma dan program untuk menampilkan hasil perkalian bilangan dari 1 sampai dengan 100 4. Buatkan program untuk menampilkan bilangan ganjil dan bilangan genap kecil dari 40 5. Buatkan program untuk menampilkan bilangan kelipatan 20 kecil dari 300
Roslina, M.I.T
48
Buku Ajar Algoritma danPemrograman
6. Buatkan program untuk menampilkan output berikut : 1 1 1 2 1 3 2 1 2 2 2 3
Roslina, M.I.T
49
Buku Ajar Algoritma danPemrograman
BAB 6 PENGULANGAN (LOOP) FOR DAN NESTED LOOP Kompetensi Umum : Mahasiswa mampu membuat program instruksi pengulangan for dan nested loop
menggunakan
Kompetensi Khusus : 1. Mahasiswa mampu menjelaskan dan menggunakan proses pengulangan pernyataan for 2. Mahasiswa mampu menjelaskan menggunakan loop di dalam loop (nested loop) 3. Mahasiswa mampu Menjelaskan penggunaan exit() untuk menghentikan eksekusi program DASAR TEORI Pembahasana kali ini melanjutkan pembahasan pada bab sebelumnya tentang pernyataan pengulangan. Selain pernyataan while dan do..while bahasa C juga menyediakan pernyataan for dalam proses pengulangan. Pernyataan for Pernyataan ini digunakan untuk membuat proses pengulangan dengan menentukan jumlah pengulangan di awal blok pengulangan. Bentuk umum : for(ungkapan1; ungkapan2; ungkapan3) pernyataan;
Roslina, M.I.T
50
Buku Ajar Algoritma danPemrograman
Keterangan : - Ungkapan1: digunakan untuk memberikan inisialisasi terhadap variabel pengendali loop. - Ungkapan2: dipakai sebagai kondisi untuk keluar dari loop. - Ungkapan3: dipakai sebagai pengatur kenaikan nilai variabel pengendali loop. Contoh : for (bil = 1; bil <= 15; bil += 3) printf("%d\n", bil); Output yang dihasilkan potongan program tersebut adalah : 1 4 7 10 13 Pernyataan for( ; ; ) Dalam program, Kadang-kadang dijumpai adanya pernyataan for yang tidak mengandung bagian ungkapan yang lengkap (beberapa ungkapan dikosongkan). Hal ini disebabkan ungkapan-ungkapan tersebut sudah di-inisialisasi di luar for atau dapat dikerjakan di dalam blok loop itu sendiri. Contoh : for (bil=10;bil<=60;bil++) dapat diganti menjadi : bil=10; for( ; ; )
Roslina, M.I.T
51
Buku Ajar Algoritma danPemrograman
{ bil++; if(bil==60) break; }
Nested-loop Nested loop merupkan suatu pengulangan yang terdapat di dalam blok loop lain. Kondisi ini hampir sama dengan nested-if (dalam blok if terdapat blok if llain). Bentuk umum : for(ungkapan1; ungkapan2; ungkapan3) { for(ungkapan4; ungkapan5; ungkapan6) { for(ungkapan-x; ungkapan-y; ungkapan-z) { Pernyataan1; . . } Pernyataan-n; . } Pernyataan-m; . }
Roslina, M.I.T
52
Buku Ajar Algoritma danPemrograman
Pernyataan exit() Pernyataan ini digunakan untuk keluar dari program. Biasa disertakan pada program yang menggunakan looping dengan for, while atau do-while. Fungsi ini didefinisikan dalam file stdlib.h. Bentuk umum : exit(); Contoh: #include<stdio.h> #include<stdlib.h> main() { puts(“Tekan ESC untuk menghentikan program.”); for( ; ; ) if(getch()==27) exit(0); getch(); }
RANGKUMAN Selain pernyataan while dan do while juga ada pernyataan for yang digunakan dalam proses pengulangan. Pernyataan for menempatakan pengecekan kondisi pengulangan diawal blok loop. Seperti pada struktur kontrol terdapat nested if maka pada pengulangan juga terdapat nested loop.
Roslina, M.I.T
53
Buku Ajar Algoritma danPemrograman
LATIHAN 1. Pemakaian break untuk keluar dari looping #include <stdio.h> main() { char kar; printf("Ketik sembarang kalimat"); printf(" dan akhiri dengan ENTER\n\n"); for ( ; ; ) { kar = getchar(); if(kar == '\n') break; } printf("Selesai\n"); getch(); } 2. Loop for tersarang untuk membuat tabel perkalian 1s/d 10 #include <stdio.h> main() { int baris, kolom, hasil_kali; for (baris = 1; baris <= 10; baris++) { for (kolom = 1; kolom <= 10; kolom++) { hasil_kali = baris * kolom; printf ("%2d", hasil_kali); }
Roslina, M.I.T
54
Buku Ajar Algoritma danPemrograman
printf("\n"); /* pindah baris */ } getch(); }
TUGAS Buat algoritma dan program untuk menampilkan output berikut : 1. * * * * * * * * * * * * * * *
2. N 1 2 : : 10
N! 1 2 : : :
Roslina, M.I.T
55
Buku Ajar Algoritma danPemrograman
BAB 7 ARRAY DIMENSI 1 Tujuan Instruksinal Umum : Mahasiswa mampu membuat program menggunakan variabel array dimensi satu Tujuan Instruksinal khusus : 1. Mahasiswa mampu menjelaskan array berdimensi satu 2. Mahasiswa mampu menjelaskan deklarasi dan akses variabel array dimensi satu DASAR TEORI Dalam membuat program kita pasti berhubungan dengan penyimpanan data. Untuk menyimpan data digunakan pengenal atau identifier. Masalah yang terjadi adalah kita seringkali memerlukan penyimpan data yang sama namun jumlahnya banyak, seperti gaji pegawai dalam satu perusahaan. Data yang disimpan adalah gaji, namun jumlahnya lebih dari satu. Biasanya untuk menyimpan satu nilai diperlukan satu variabel namun kalau untuk menyimpan 10 nilai maka diperlukan 10 variabel, bayangkan kalau dlam perusahaan tersebut terdapat 1000 orang karyawan, tentu diperlukan 1000 variabel gaji, hal ini tidak efektif dalam pendeklarasian variabel dan tidak efisien dalam penggunaan memory. Untuk mengatasi masalah tersebut bahasa C menyediakan fasilitas untuk mendeklarasikan variabel yang mampu menampung banyak data yang dikenal dengan istilah Array (Larik). Array (larik) merupakan kumpulan data dengan setiap elemen data menggunakan nama dan tipe data yang sama. Setiap elemen dapat diakses dan dibedakan dengan indeks array. Jenis-jenis array : - Array dimensi 1
Roslina, M.I.T
56
Buku Ajar Algoritma danPemrograman
- Array dimensi dua - Array dimensi banyak - Array tak berukuran Array Dimensi 1 Array berdimensi satu memiliki ketentuan sebagai berikut: - Setiap elemen array dapat diakses melalui indeks. - Indeks array secara default dimulai dari 0. - Deklarasi Array Bentuk umum : Tipe_array nama_var_array[ukuran];
Keterangan : Tipe Nama_var_array Ukuran
: tipe data array : nama variabel array : menentukan jumlah maksimal elemen array
Deklarasi array Deklarasi variabel array sama dengan deklarasi variabel biasa dengan menuliskan tipe data dan diikuti dengan nama variabel array. Bentu Umum : float nilai[10] Mengakses elemen array Data array akan disimpan dalam memori pada lokasi yang berurutan.
Roslina, M.I.T
57
Buku Ajar Algoritma danPemrograman
Untuk mengakses sebuah elemen dalam array, atau mengakses sebagian elemen dari array, kita dapat menggunakan penomoran yang disebut sebagai index atau subscript. Index atau Subscript diberikan kepada tiap anggota array, agar program dapat mengakses anggota dari array. Index dimulai dari nol dan kemudian akan terus bertambah sampai list value dari array tersebut berakhir. Contoh elemen pertama mempunyai indeks bernilai 0 dan seterusnya. Bentuk umum : Nama_var_array[indeks] Contoh : Nilai[1] Nilai[2]
: elemen ke-1 dari nilai : elemen ke-2 dari nilai
Dari contoh diatas array berdimensi satu dapat digambarkan sebagai berikut: int Nilai [5]; Nilai[0] 80
Nilai[1] 98
Nilai[2] 75
Nilai[3] 60
Nilai[4] 90
RANGKUMAN Array (larik) merupakan kumpulan data dengan setiap elemen data menggunakan nama dan tipe data yang sama. Setiap elemen dapat diakses dan dibedakan dengan indeks array. Array terdiri dari : - Array dimensi 1
Roslina, M.I.T
58
Buku Ajar Algoritma danPemrograman
- Array dimensi dua - Array dimensi banyak - Array tak berukuran
LATIHAN 1. Program array dimensi 1 untuk menyimpan sejumlah data nilai #include <stdio.h> #define maks 7 main() { int j; float total, rata2; float nilai[maks]; /* deklarasi array*/ /* input data nilai */ for ( j= 0; j < maks; j++) { printf(“Nilai ke- %d : “, j); scanf(“%f”, &nilai[ j ]); } /* Menghitung total nilai */ total=0; for ( j= 0; j < maks; j++) total=total+nilai[j]; /* Hitung rata-rata */ rata2=total/maks; /* Cetak total dan rata-rata */ printf (“ Nilai total = %.2f\n”,total); printf (“ Nilai rata-rata = %.2f\n”,rata2); getch(); }
Roslina, M.I.T
59
Buku Ajar Algoritma danPemrograman
2. Menginput data kedalam variable array #include <stdio.h> main() { char nama[15]; int i,j,n,jumlah,nilai[4]; float nrata; jumlah=0; clrscr(); /* input nilai mahasiswa */ printf("Inputkan Jumlah mahasiswa : "); scanf("%d",&n); for(i=0; i
Roslina, M.I.T
60
Buku Ajar Algoritma danPemrograman
jumlah=jumlah+nilai[j]; } nrata=jumlah/4; printf("\t%.2f",nrata); printf("\n"); } getch(); } TUGAS 1. Modifikasi program pada latihan no. 2 untuk tampilan output seperti di bawah ini: No. Nilai Total Rata-rata 1. 85 85 85.00 2. 95 180 90.00 3. 60 240 80.00 4. 80 320 80.00 5. 50 370 74.00 6. 100 470 78.33 Nilai maks = 100 Nilai min = 50 Nilai rata-rata = 78.33 Nilai terbaik adalah nilai ke = 6 2. Buat algoritma dan program untuk menginputkan dan menampilkan nama bulan dalam setahun.
Roslina, M.I.T
61
Buku Ajar Algoritma danPemrograman
BAB 8 ARRAY DIMENSI 2 ATAU BANYAK Kompetensi Umum : Mahasiswa mampu membuat program menggunakan variabel array dimensi dua. Kompetensi Khusus : 1. Menjelaskan dan menggunakan array berdimensi dua 2. Menjelaskan deklarasi/akses variabel array dimensi 2 atau banyak DASAR TEORI Array dimensi dua merupakan array yang terdiri dari m buah baris dan n buah kolom. Bentuknya dapat berupa matriks atau tabel. Deklarasi array Bentuk Umum : Tipe_array nama_array[baris][kolom]; Contoh : Int X[3][4];
Akses elemen array Untuk mengakses elemen array, misalnya kita ingin mengisi elemen array baris 2 kolom 3 dengan nilai 10 maka perintahnya adalah sebagai berikut :
Roslina, M.I.T
62
Buku Ajar Algoritma danPemrograman
X[1][2] = 10;
Array Dimensi Banyak Array multi-dimensi merupakan array yang mempunyai ukuran lebih dari dua. Bentuk pendeklarasian array sama saja dengan array dimensi satu maupun array dimensi dua. Bentuk umum : tipe_array nama_array[ukuran1][ukuran2]…[ukuranN]; Contoh : float X[2][4][3];
RANGKUMAN Array dimensi dua merupakan array yang terdiri dari m buah baris dan n buah kolom. Bentuknya dapat berupa matriks atau tabel. LATIHAN 1. Program menginput nilai(bilangan) ke dalam array dimensi dua dan menampilkannya #include <stdio.h> main()
Roslina, M.I.T
63
Buku Ajar Algoritma danPemrograman
{ int i,j,matriksA[3][3]; clrscr(); /* input elemen array dimensi 2 */ printf("Input Elemen Array Dimensi 2\n\n"); for(i=0; i<3;i++) { for(j=0;j<3;j++) { printf("Elemen Matriks [%d][%d] : ", i,j); scanf("%d",&matriksA[i][j]); } } /* tampilkan elemen array dimensi 2 */ printf("\n\tTampilan Elemen Array Dimensi 2\n\n\t"); for(i=0; i<3;i++) { for(j=0;j<3;j++) { printf("%4d", matriksA[i][j]); } printf("\n\n\t"); } getch(); } 2. Program penjumlahan matriks dua dimensi dan menampilkannya
Roslina, M.I.T
64
Buku Ajar Algoritma danPemrograman
#include<stdio.h> main() { int i,j,b,k,l,m; int a[5][5],b[5][5],c[5][5]; clrscr(); printf("Inputkan Jumlah Baris Matriks A=baris Matriks B : "); scanf("%d",&b); printf ("Inputkan Jumlah Kolom Matriks A = Kolom Matriks B: "); scanf("%d",&k); printf("Input Elemen Matriks A \n"); for (i=0;i
Roslina, M.I.T
65
Buku Ajar Algoritma danPemrograman
{ c[i][j]=a[i][j] + b[i][j]; } } clrscr(); printf(" matriks A\n"); for (i=0;i
Roslina, M.I.T
66
Buku Ajar Algoritma danPemrograman
} TUGAS 1. Buatlah algoritma dan program untuk menginput, menghitung dan menampilkan hasil pengurangan dan perkalian matriks 3 x 3 2. Buat algoritma dan program dengan menggunakan array multidemensi untuk menampilkan buku alamat seperti output berikut : Nama Alamat Telp
: Florence : France : 1234876
Nama Alamat Telp
: Christine : Hawai : 9876354
Nama Alamat Telp
: James : Bangkok : 6758994
Roslina, M.I.T
67
Buku Ajar Algoritma danPemrograman
BAB 9 PROSEDUR DAN FUNGSI Kompetensi Umum : Mahasiswa mampu membuat program prosedur dan fungsi Kompetensi Khusus : 1. Mahasiswa mampu menjelaskan prinsip dasar fungsi 2. Mahasiswa mampu membuat program prosedural 3. Mahasiswa mampu menggunakan parameter formal dan parameter aktual 4. Mahasiswa mampu menjelaskan dan menggunakan fungsi rekursi DASAR TEORI Fungsi merupakan suatu bagian dari program yang berfungsi untuk mengerjakan suatu tugas tertentu dan letaknya terpisah dari program yang memanggilnya. Fungsi merupakan elemen utama dalam bahasa C karena bahasa C sendiri terbentuk dari kumpulan fungsi-fungsi. Dalam setiap program bahasa C, minimal terdapat satu fungsi yaitu fungsi main(). Keuntungan penggunaan fungsi dalam program yaitu program akan memiliki struktur yang jelas dan juga akan menghindari penulisan bagian program yang sama. Dalam bahasa C fungsi dapat dibagi menjadi dua, yaitu fungsi pustaka atau fungsi yang telah tersedia dalam bahasa C dan fungsi yang didefinisikan atau dibuat oleh programmer. Tujuan penggunaan fungsi: - Program menjadi terstruktur, sehingga mudah dipahami dan mudah dikembangkan. - Mengurangi pengulangan kode (duplikasi kode)
Roslina, M.I.T
68
Buku Ajar Algoritma danPemrograman
Dasar fungsi Pada umumnya fungsi memerlukan input (masukan) yang dinamakan sebagai argumen atau parameter. Masukan ini selanjutnya diolah oleh fungsi. Hasil akhir fungsi berupa sebuah nilai yang disebut sebagai nilai keluaran fungsi atau nilai balik fungsi). Fungsi yang tidak memiliki nilai balik dikenal sebagai prosedur. Tugas khusus dari fungsi terdapat pada fungsi standard, misalnya getch() bertugas untuk membaca kode tombol dan printf() bertugas untuk menampilkan informasi atau data ke layar. Bentuk umum fungsi : Tipe nama_fungsi(daftar parameter) Deklarasi parameter { Tubuh fungsi } Memberikan nilai akhir fungsi \Pernyataan yang digunakan untuk memberikan nilai akhir fungsi di dalam tubuh fungsi adalah pernyataan return. Contoh program : /* program fungsi yang mengandung argumen untuk mencari nilai minimum */ #include <stdio.h> main() { int a, b, hasil; a=25; b=84;
Roslina, M.I.T
69
Buku Ajar Algoritma danPemrograman
hasil=min(a, b); printf(“nilai terkecil = %d\n”, hasil); printf(“nilai terkecil = %d\n”, min(11, 9); getch(); } /* Fungsi minimum */ min(x, y) int x, y; { if (x < y ) return(x); else return(y);} Fungsi dengan nilai keluaran bertipe selain integer Fungsi yang nilai keluarannya selain tipe integer, perlu dilakukan langkah-langkah seperti berikut : - Fungsi harus dideklarasikan diawal program sebelum digunakan, yang diakhiri dengan titik koma (;) - Fungsi didefenisikan dengan diawali tipe fungsi Contoh : /* program fungsi bertipe selain integer untuk mencari nilai maximum */ #include <stdio.h> float maks(float,float); /* deklarasi fungsi*/ main() { float a, b, hasil; a= 35.6; b=65.9; hasil=maks(a, b); printf(“nilai maximum = %.2f\n”, hasil); printf(“nilai terkecil = %.2f\n”,maks(11, 9); getch();
Roslina, M.I.T
70
Buku Ajar Algoritma danPemrograman
} /* Fungsi maximum */ float maks(float x, float y) { if (x> y ) return(x); else return(y); }
Parameter formal dan parameter aktual Parameter formal adalah variabel yang ada pada daftar parameter dalam defenisi fungsi. Sedangkan parameter aktual adalah parameter yang dipakai dalam pemanggilan fungsi.
Rekursi Rekursi merupakan fungsi yang memanggil dirinya sendiri. Contoh program :
Roslina, M.I.T
71
Buku Ajar Algoritma danPemrograman
/* Program Rekursi untuk mencari bilangan faktorial */ #include <stdio.h> int faktorial(int); main() { int n, hasil; puts(“MENCARI BILANGAN FAKTORIAL n!”); printf(“Masukkan Sebuah bilangan : “); scanf(“%d”, &n); hasil=faktorial(n); printf(“Faktorial dari %d = %d\n”, n, hasil); getch(); } int faktorial(int m) { if (m==1) return(1); else return(m*faktorial(m-1)); } PROSEDUR Seperti halnya Fungsi, Prosedur merupakan suatu bagian dari program yang dimaksudkan untuk mengerjakan suatu tugas tertentu dan letaknya terpisah dari program yang memanggilnya. Perbedaanya adalah, Fungsi juga dideklarasikan seperti variabel, dan mengembalikan nilai fungsi ke pemanggilnya. Sedangkan Prosedur tidak dideklarasikan seperti variabel dan tidak mengembalikan nilai tertentu, tapi dapat memberikan hasil yang ada di dalam prosedur itu. Prosedur juga sering disebut dengan fungsi tanpa tipe.
Roslina, M.I.T
72
Buku Ajar Algoritma danPemrograman
RANGKUMAN Fungsi merupakan blok program yang dibentuk untuk melaksanakan suatu tugas khusus. Tujuan penggunaan fungsi: - Program menjadi terstruktur, sehingga mudah dipahami dan mudah dikembangkan. - Mengurangi pengulangan kode (duplikasi kode) Fungsi yang tidak memiliki nilai balik dikenal sebagai prosedur. Dan fungsi yang memanggil dirinya sendiri disebut rekursi. LATIHAN 1. Program fungsi yang mengandung argumen untuk mencari kuadrat #include <stdio.h> float kuadrat(float); main() { float a,hasil; clrscr(); printf("Inputkan Sebuah Bilangan = "); scanf("%f",&a); hasil=kuadrat(a); printf("Kuadrat bilangan %.2f = %.2f\n", a, hasil); getch(); } /* Fugsi radian */ float kuadrat(float x) {
Roslina, M.I.T
73
Buku Ajar Algoritma danPemrograman
float k; k=x*x; return(k); } 2. Program fungsi yang mengandung argumen untuk mencari hasil penjumlahan 2 buah variabel #include <stdio.h> #include float tambah(float x, float y); // prototype fungsi tambah() void main() { float a, b, c; printf("A = "); scanf("%f", &a); printf("B = "); scanf("%f", &b); c = tambah(a,b); // pemanggilan fungsi tambah() printf("A + B = %.2f", c); getch(); } float tambah(float x, float y) // Definisi fungsi { return (x+y); // Nilai balik fungsi } 3. Program fungsi dan prosedur #include <stdio.h> #include int VolumeBalok (int, int, int) ; /* Deklarasi fungsi */ main () { LuasLingkaran(); /* Pemanggilan prosedur*/
Roslina, M.I.T
74
Buku Ajar Algoritma danPemrograman
VolumeBalok(2,3,4); /* Pemanggilan fungsi */ printf("\nVolume Balok = %2.2f",Volume); getch(); return 0; } void LuasLingkaran() /* Blok prosedur*/ { int r; /* variabel lokal */ float Luas; /* variabel lokal */ r=10; Luas = 3.14*r*r; printf("Luas Lingkaran = %2.2f",Luas); } void VolumeBalok(int p,int l,int t) /* Blok fungsi */ { Volume = p*l*t; } 4. Program Fungsi untuk penjumlahan dan perkalian matriks #include<stdio.h> void input_matriks(int matrik[][], int, int); void jumlah_matriks(int matrika[][],int matrikb[][],int matrikc[][], int, int); void kali_matriks(int matrika[][],int matrikb[][],int matrikc[][], int, int, int); main() { int pilih,brs,klm,klmc,i,j,m; int matrika[10][10],matrikb[10][10],matrikc[10][10]; pilih=0;
Roslina, M.I.T
75
Buku Ajar Algoritma danPemrograman
while (pilih<=2) { clrscr(); printf("MENU PILIHAN\n "); printf("\n 1. Menjumlahkan 2 buah matriks\n "); printf(" 2. Mengalikan 2 buah matriks\n "); printf("\nInputkan Pilihan Anda (1-2) : "); scanf("%d",&pilih); switch(pilih) { case 1 : { puts("Penjumlahan Matriks"); printf("Inputkan Jumlah Baris Matriks A = matriks B: "); scanf("%d",&brs); printf("Inputkan Jumlah Kolom Matriks A = Matriks B: "); scanf("%d",&klm); puts("Data Matriks A"); input_matriks(matrika,brs,klm); puts("Data Matriks B"); input_matriks(matrikb,brs,klm); puts("Hasil Penjumlahan Matriks"); jumlah_matriks(matrika,matrikb,matrikc,brs,klm); break; } case 2 : { puts("Perkalian 2 buah Matriks"); printf("Inputkan Jumlah Baris Matriks A : "); scanf("%d",&brs); printf("Inputkan Jumlah Kolom Matriks A = baris Matriks B: "); scanf("%d",&klm); printf("Inputkan Jumlah Kolom Matriks B : ");
Roslina, M.I.T
76
Buku Ajar Algoritma danPemrograman
scanf("%d",&klmc); puts("Data Matriks A"); input_matriks(matrika,brs,klm); puts("Data Matriks B"); input_matriks(matrikb,klm,klmc); puts("Hasil Perkalian Matriks"); kali_matriks(matrika,matrikb,matrikc,brs,klm,klmc); break; } default : printf("\nPilihan Anda Salah "); } getch(); } } void input_matriks(int matriks[][10], int brs, int klm) { int i, j; for (i=0;i
void jumlah_matriks(int matrika[][10],int matrikb[][10],int matrikc[][10], int brs, int klm) { int i,j; for (i=0;i
Roslina, M.I.T
77
Buku Ajar Algoritma danPemrograman
{ for(j=0;j
Roslina, M.I.T
78
Buku Ajar Algoritma danPemrograman
TUGAS 1. Buat algoritma dan program untuk menampilkan bilangan faktorial dari 1 sampai 10 output berikut dengan menggunakan fungsi. N 1 2 : 10
N! 1 2 : 3628800
2. Buat algoritma dan program untuk mendefinisikan sebuah fungsi radian() yang berfungsi untuk mengkonversi besaran sudut dari derajat ke radian dengan rumus sebagai berikut : rad = drjt / 180.0f * PI. Fungsi tersebut memiliki sebuah parameter yaitu derajat yang akan dikonversi, dan memiliki sebuah return value berupa hasil konversi dalam radian. 3. Buat program menggunakan prosedur untuk mengitung isi kubus, luas lingkaran dan isi silinder. Dengan rumus : Isi kubus =sisi3 Luas lingkaran = 3.14 r2 Isi silinder=3.14r2t Output yang diinginkan dalam bentuk menu pilihan seperti berikut : MENU PILIHAN 1. Menghitung Isi Kubus 2. Menghitung Luas Lingkaran 3. Menghitung Isi Silinder Inputkan Pilihan Anda (1-3) :
Roslina, M.I.T
79
Buku Ajar Algoritma danPemrograman
BAB 10 OPERASI STRING Kompetensi Umum : Mahasiswa mampu membuat program menggunak fungsifungsi string Kompetensi Khusus: 1. Menjelaskan konsep string 2. Menjelaskan dan menggunakan operasi I/O pada string. 3. Menjelaskan dan menggunakan cara akses elemen string 4. Menjelaskan dan menggunakan fungsi-fungsi string DASAR TEORI Nilai suatu string merupakan nilai-nilai karakter yang berurutan dalam bentuk array dimensi satu. String merupakan data yang biasa dipakai untuk menampung dan memanipulasi teks yang ditulis di dalam tanda petik ganda. Konstanta string Konstanta string yang ditulis diawali dan diakhiri tanda petik ganda serta diakhiri dengan karakter NULL, contoh kata : INFORMATIKA Konstanta string diatas disimpan dalam memori secara berurutan dengan komposisi seperti berikut : I
N
F
O
R
M
A
T
I
K
A
\0
Setiap karakter menempati memori sebesar 1 byte, byte terakhir secara otomatis berisi karakter NULL (\0).
Roslina, M.I.T
80
Buku Ajar Algoritma danPemrograman
Variabel string Variabel string merupakan variabel yang digunakan untuk menyimpan nilai string, contoh : char nama[20]; Merupakan instruksi untuk mendeklarasikan variabel string dengan panjang maksimal 20 karakter termasuk karakter NULL. Input dan tampil data string Input data string ke dalam suatu variabel biasanya dilakukan dengan memakai fungsi gets() dan scanf(). Pada fungsi scanf() pemasukkan data string tidak boleh pakai spasi dan pembacaan data tidak perlu menggunakan operator alamat (&), karena nama array tanpa kurung siku sudah merupakan alamat. Sedangkan untuk menampilkan isi variabel string ke layar digunakan fungsi puts( ) dan printf( ). Contoh Program : /* Program input data string */ #include<stdio.h> main() { char nama[20]; printf(“Ketikan Nama Anda :”); gets(nama); printf(“Halo, %s, Selamat Belajar Operasi String \n”, nama); getch(); } Fungsi string Fungsi string digunakan untuk memanipulasi string. Jenis-jenis fungsi string :
Roslina, M.I.T
81
Buku Ajar Algoritma danPemrograman
-
-
-
-
-
-
strcpy() Bentuk umum : strcpy(tujuan, asal). Untuk menyalin string asal ke variabel tujuan strlen() Untuk menghitung jumlah karakter dalam string (karakter NULL tidak dihitung) strcat() Bentuk umum : strcpy(tujuan, sumber). Untuk menambahkan string sumber ke akhir string tujuan strcmp() Bentuk umum : var_int =strcmp(str1, str2). Untuk membandingkan string str1 dengan string str2 strlwr() Bentuk umum : strlwr(string_x). Untuk mengubah huruf kapital dalam string_x menjadi huruf kecil. strupr() Bentuk umum : strupr(string_x). Untuk mengubah setiap huruf kecil dalam string_x menjadi huruf kapital.
RANGKUMAN String merupakan data yang biasa dipakai untuk menampung dan memanipulasi teks. Contoh jenis-jenis fungsi string adalah: - strcpy() - strlen() - strcat() - strcmp() - strlwr() - strupr()
Roslina, M.I.T
82
Buku Ajar Algoritma danPemrograman
LATIHAN 1. Program Membalikan kalimat #include <stdio.h> #include <string.h> #define MAKS 256 main() { char kalimat[MAKS]; int i=0,pjg=0; clrscr(); printf("Masukkan kalimat yang akan dibalik : "); gets(kalimat); pjg=strlen(kalimat); printf("Panjang karakter yang diinputkan = %d\n",pjg); for (i=pjg;i>=0;i--) { printf("%c",kalimat[i]); } getch(); } 2. Menghitung jumlah karakter . #include <stdio.h> #define MAKS 256 main() { int i, jumkar = 0; char teks[MAKS]; puts("Masukkan suatu kalimat (maks 255 karakter).");
Roslina, M.I.T
83
Buku Ajar Algoritma danPemrograman
//masukan dari keyboard gets(teks); for(i=0; teks[i]; i++) jumkar++; printf("\nJumlah karakter = %d\n", jumkar); } 3. Menyalin sebuah string masukan. #include<stdio.h> #define MAKS 50 main() { int i; char asli[] = "Saya Mahasiswa Potensi Utama"; char salinan[MAKS]; i=0; while(asli[i] != '\0') { salinan[i]=asli[i]; i++; } salinan[i]='\0'; printf("Isi salinan adalah : %s\n",salinan); } 4. Menyalin isi string2 ke string1 menggunakan fungsi strcpy(). #include<stdio.h> #include<string.h> main() { char str1[80];
Roslina, M.I.T
84
Buku Ajar Algoritma danPemrograman
char str2[]="ABCDE"; strcpy(str1,str2); printf("Isi string 1 adalah : %s\n",str1); printf("Isi string 2 adalah : %s\n",str2); } 5. Menghitung jumlah karakter dari suatu string masukan menggunakan fungsi strlen(). #include <stdio.h> #include <string.h> #define MAKS 256 main() { char kal[MAKS]; printf("Masukkan kalimat yang akan dihitung panjangnya :\n"); gets(kal); printf("\nPanjang string tsb = %d karakter\n", strlen(kal)); } 6. Menggabungkan isi string1 dengan string2 menggunakan fungsi strcat(). #include<stdio.h> #include<string.h> main() { char s1[15], s2[15], s3[15], s4[15]; clrscr(); s1="POTENSI";
Roslina, M.I.T
85
Buku Ajar Algoritma danPemrograman
s2="UTAMA"; s3=strcat(s1,s2); s4="MEDAN"; printf("%s",strcat(s3,s4)); getch(); } 7. Membandingkan isi string1 dengan string2 menggunakan fungsi strcmp(). #include<stdio.h> #include<string.h> main() { char str1[]="ABcde"; char str2[]="ABCDE"; int hasil; hasil=strcmp(str1,str2); if(hasil==0) printf("String 1 sama dengan String 2\n"); else if(hasil < 0) printf("String 1 lebih kecil dari String 2\n"); else printf("String 1 lebih besar dari String 2\n"); }
TUGAS 1. Buat program untuk membalik string masukan. Input : string masukan Output : hasil pembalikan string masukan (Petunjuk : gunakan fungsi strlen() untuk mendapatkan panjang kalimat)
Roslina, M.I.T
86
Buku Ajar Algoritma danPemrograman
2. Buat program untuk menghasilkan output seperti berikut : PROGRAM PROGRA PROGR PROG PRO PR P
Roslina, M.I.T
87
Buku Ajar Algoritma danPemrograman
BAB 11
PRE-DEFINED FUNCTION MATEMATIKA DAN KONVERSI TIPE DATA. Kompetensi Umum : Mahasiswa mampu membuat program menggunakan fungsi matematika dan fungsi konversi data Kompetensi Khusus : 1. Menjelaskan dan menggunakan fungsi Matematika 2. Menjelaskan dan melakukan cara mengkonversi Tipe data DASAR TEORI Dalam bahasa C fungsi dapat dibagi menjadi dua, yaitu fungsi pustaka atau fungsi yang telah tersedia dalam bahasa C dan fungsi yang didefinisikan atau dibuat oleh programmer. Dalam bab ini kita membahas penggunaan fungsi yang telah tersedia dalam bahasa C yaitu fungsi operasi matematika dan fungsi konversi tipe data. Fungsi Operasi Matematika Fungsi Operasi Matematika yaitu fungsi pustaka atau fungsi yang telah tersedia dalam bahasa C yaitu fungsi yang tersimpan dalam file header <math.h> dan <stdlib.h>. Fungsi-fungsi tersebut diantaranya adalah : -
sqrt() Digunakan untuk menghitung akar dari sebuah bilangan. Bentuk umum : sqrt(bilangan);
Roslina, M.I.T
88
Buku Ajar Algoritma danPemrograman
-
-
-
-
-
pow() Digunakan untuk menghitung pemangkatan suatu bilangan. Bentuk umum : pow(bilangan, pangkat); sin(), cos(), tan() Masing-masing digunakan untuk menghitung nilai sinus, cosinus dan tangens dari suatu sudut. Bentuk umum : sin(sudut); cos(sudut); tan(sudut); div() Digunakan untuk menghitung hasil pembagian dan sisa pembagian. Bentuk umum : div_t div(int x, int y) Strukturnya : typedef struct { int qout; // hasil pembagian int rem // sisa pembagian } div_t; max() Digunakan untuk menentukan nilai maksimal dari dua buah bilangan. Bentuk umum : max(bilangan1, bilangan2); min() Digunakan untuk menentukan bilangan terkecil dari dua buah bilangan. Bentuk umum : min(bilangan1, bilangan2);
Fungsi Konversi Tipe data Fungsi ini digunakan untuk mengkonversi data string ke tipe data numerik (angka) contoh fungsi konversi tipe data :
Roslina, M.I.T
89
Buku Ajar Algoritma danPemrograman
-
-
atof() Digunakan untuk mengkonversi nilai string menjadi bilangan bertipe double. Bentuk umum : atof(char x); atoi() Digunakan untuk mengkonversi nilai string menjadi bilangan bertipe integer. Bentuk umum : atoi(char x);
RANGKUMAN Dalam bahasa C fungsi dapat dibagi menjadi dua, yaitu fungsi pustaka atau fungsi yang telah tersedia dalam bahasa C dan fungsi yang didefinisikan atau dibuat oleh programmer. Fungsi yang telah didefinisikan, seperti fungsi operasi matematika dan fungsi konversi tipe data
LATIHAN 1. Program Menghitung x Pangkat y dan menampilkan hasilnya. #include <stdio.h> #include #include <math.h> main() { int x, y; float z; clrscr(); printf(“Menghitung x pangkat y\n”); printf(“x = “); scanf(“%i”, &x); printf(“y = “); scanf(“%i”, &y);
Roslina, M.I.T
90
Buku Ajar Algoritma danPemrograman
printf(“ %i dipangkatkan dengan %i adalah %7.2lf”, x, y, pow(x, y)); getch(); clrscr(); printf(“Menghitung akar suatu bilangan z\n”); printf(“z = “); scanf(“%f”, &z); printf(“Akar dari %f adalah %7.2lf”, z, sqrt(z)); getch(); } 2. Program Menghitung nilai sinus, cosinus dan tangent #include <stdio.h> #include #include <math.h> main() { float sudut; clrscr(); printf(“Menghitung nilai sinus, cosinus dan tangens\n”); printf(“Masukkan sudut : “); scanf(“%f”, &sudut); printf(“Nilai sinus %.2f derajat adalah %.3f”, sudut, sin(sudut)); printf(“Nilai cosinus %.2f derajat adalah %.3f”, sudut, cos(sudut)); printf(“Nilai tangens %.2f derajat adalah %.3f”, sudut, tan(sudut)); getch(); } 3. Program Menghitung sisa dan hasil pembagian x dan y berikut hasil tampilannya. #include <stdio.h>
Roslina, M.I.T
91
Buku Ajar Algoritma danPemrograman
#include #include <math.h> main() { int x, y; div_t hasil; clrscr(); printf(“Menghitung sisa dan hasil pembagian x dengan y\n”); printf(“x = “); scanf(“%i”, &x); printf(“y = “); scanf(“%i”, &y); hasil = div(x,y); printf(“\n\n %3i div %3i = %3i sisa %3i”, x, y, hasil.quot, hasil.rem); getch(); } 4. Program Menentukan bilangan terbesar dan terkecil berikut hasil tampilannya. #include <stdio.h> #include #include <math.h> main() { int x, y, z; clrscr(); printf(“Menentukan bilangan terbesar dan terkecil\n”); printf(“X = “); scanf(“%i”, &x); printf(“Y = “); scanf(“%i”, &y); printf(“Z = “); scanf(“%i”, &z); printf(“\nBilangan terbesar : %i”, max(max(x, y), z)); printf(“\nBilangan terkecil : %i”, min(min(x, y), z));
Roslina, M.I.T
92
Buku Ajar Algoritma danPemrograman
getch(); } 5. Program Mengkonversikan Tipe data menampilkan hasilnya #include <stdio.h> #include #include <math.h> main() { char x[4] = “100”, y[5] =”10.3”; int a; float b; clrscr(); a = atoi(x); b = atof(y); printf(“Semula A = %s B = %s\n”, x,y); printf(“Setelah dikonversi A = %i B = %.2f”, a,b); getch(); }
dan
TUGAS 1. Modifikasi program pada soal no. 2 untuk menghitung sinus, cosinus dan tangen dalam satuan radian, sehingga output yang dihasilkan dalam satuan derajat. Agar hasil dalam derajat maka sudut harus dibagi dengan 180/3.14. 2. Buat program untuk menghitung akar pangkat dua dari suatu bilangan.
Roslina, M.I.T
93
Buku Ajar Algoritma danPemrograman
BAB 12 OPERASI FILE Kompetensi Umum : Mahasiswa mampu membuat program untuk pengolahan data atau manipulasi file Kompetensi Khusus : 1. Mahasiswa mampu menjelaskan struktur file 2. Mahasiswa mampu menjelaskan tahap-tahap operasi pada file 3. Mahasiswa mampu menjelaskan dan menggunakan fungsi untuk penyimpanan dan pembacaan file DASAR TEORI Secara konvensional data dalam suatu organisasi atau perusahaan disimpan dalam lemari arsip yang bertujuan pada suatu saat data tersebut dapat diambil dan diolah kembali. Begitu juga dalam pemrograman menggunakan media disk sebagai tempat untuk menyimpan data agar data tersebut diambil kembali untuk diproses seperti baca, tambah edit dan hapus data. Data sendiri disimpan dalam disk dalam suatu kesatuan yang disebut file. Suatu file merupakan organisasi dari sejumlah record. Masing-masing record dapat terdri dari satu atau beberapa field dan setiap field terdiri dari satu atau beberapa byte data. Satu byte data terdiri dari 8 bit data. Struktur data dari fle ditunjukkan pada gambar 12.1
Roslina, M.I.T
94
Buku Ajar Algoritma danPemrograman
FILE
RECORD
……..
FIELD
BYTE (8 BIT)
RECORD
……..
BYTE (8 BIT)
Gambar 12.1 : Struktur File Tahapan operasi fle Operasi file pada dasarnya meliputi tiga tahapan : 1. Membuka atau Mengaktifkan file 2. Melaksanakan proses file 3. Menutup file
Membuka / Mengaktifkan file Sebelum file dapat diakses (dibaca atau ditulisi), pertama sekali file harus diaktifkan terlebih dulu. Untuk keperluan ini fungsi yang digunakan yaitu fopen(). Bentuk umum : FILE *fopen(char *namafile, char *mode);
Roslina, M.I.T
95
FIELD
Buku Ajar Algoritma danPemrograman
Keterangan : nama file : menyatakan nama dari file yang akan diaktifkan mode : jenis operasi yang akan dilakukan terhadap file. Proses atau operasi file Jenis-jenis operasi file adalah : - r : menyatakan file hanya akan dibaca, jika file belum ada maka tidak akan berhasil. - w: menyatakan bahwa file baru diciptakan. Jika file tersebut sudah ada dalam disk, isinya yang lama akan terhapus. - a : untuk membuka file yang sudah ada untuk ditambah dengan data, jika file belum ada akan dibuat yang baru. - r+ : sama dengan “r” , selain file dapat dibaca, file juga dapat ditulisi. - w+ : sama dengan “w”, selain file dapat ditulis, file juga dapat dibaca. - a+ : sama dengan “w”, selain file dapat ditulis, file juga dapat dibaca. Menutup file Apabila suatu file sudah selesai diproses, file perlu ditutup. Hal ini sangat penting terutama jika melakukan pemrosesan file yang jumlahnya lebih dari satu. Untuk menutup file, fungsi yang digunakan adalah fclose(). Bentuk umum : Int fclose(FILE *pf); Fungsi fclose() menghasilkan keluaran berupa nol jika operasi penutupan file berhasil dilakukan.
Roslina, M.I.T
96
Buku Ajar Algoritma danPemrograman
File Biner dan File Teks File biner adalah file yang pola penyimpanan di dalam disk berbentuk biner, yaitu seperti bentuk pada memori komputer. Misalnya data bertipe int selalu akan menempati ruang 2 byte, berapapun nilainya. Sedangkan file teks merupakan file yang pola penyimpanannya dalam bentuk karakter. Bilangan bertipe int bisa saja menempati 1 byte, 2 byte dan sebagainya, tergantung dari nilai bilangan. Sebagai contoh, bilangan 54 akan disimpan dalam 2 byte (berupa karakter 5 dan 4), tetapi bilangan 123 memerlukan 3 byte. File seperti ini bisa dilihat dalam editor bertipe text (disimpan sebagai file dengan ekstensi .TXT). Penambahan yang perlu dilakukan untuk menentukan jenis operasi file mode teks atau biner adalah dengan menambahkan t untuk mode teks dan b untuk mode biner pada jenis operasi filenya. Contoh : "rt" : mode file adalah teks dan file hendak dibaca "rt+” : mode file adalah teks dan file bisa dibaca dan ditulis. Bisa juga ditulis : "r+t" "rb" : mode file adalah biner dan file hendak dibaca. Operasi Penyimpanan dan Pembacaan File Per Blok Merupakan proses yang dilakukan untuk menyimpan atau membaca data file dalam bentuk kesatuan blok (byte), seperti untuk menyimpan data bertipe float atau data bertipe struct (Struktur) digunakan fungsi fread() dan fwrite(). Bentuk umum : int fread(void *buffer, int n, FILE *ptr_file);
Roslina, M.I.T
97
Buku Ajar Algoritma danPemrograman
int fwrite(void *buffer, int jum_byte, int n, FILE *ptr_file); Keterangan : Buffer
:
Jum_byte
:
n
:
Ptr_file
:
Pointer yang menunjuk kearah memory yang akan ditempati data dari file disk untuk fungsi fread() atau fwrite() Jumlah byte yang akan dibaca atau disimpan Menentukan banyaknya blok data berukuran jum_byte yang akan ditulis atau dibaca. Berupa pointer ke File yang berisi nilai keluaran dari fopen()
RANGKUMAN File merupakan kumpulan record yang tersimpan secara permanen di dalam disk. File dapat dimanipulasi seperti tambah, edit, hapus dan tampil data. Operasi file pada dasarnya meliputi tiga tahapan yaitu : 1. Membuka atau Mengaktifkan file 2. Melaksanakan proses file 3. Menutup file
Roslina, M.I.T
98
Buku Ajar Algoritma danPemrograman
LATIHAN 1. Menciptakan dan mengisi file dengan data karakter dari keyboard #include<stdio.h> #include<stdlib.h> main() { FILE *pf; char kar; //membuka file pf=fopen("COBA.TXT","a"); if(pf==NULL) { printf("File tidak bisa dibuka\n"); exit(1); } printf("Ketikkan apa saja, akhiri dengan ENTER.\n"); printf("Program akan membaca perkarakter"); printf(" dan menyimpannya dalam file COBA.TXT\n\n"); //memasukkan karakter per karakter while((kar = getchar()) != '\n') fputc(kar,pf); //menutup file fclose(pf); getch(); } 2. Membaca isi file dan menambah isinya #include<stdio.h> #include<stdlib.h> main()
Roslina, M.I.T
99
Buku Ajar Algoritma danPemrograman
{ FILE *pd; char kar; //Buka file pd=fopen("COBA.TXT","r+"); if(pd==NULL) { printf("File tidak dapat dibuka \n"); exit(1); } //Baca karakter per karakter sampai ketemu End Of FIle while((kar=fgetc(pd)) != EOF) fputchar(kar); while((kar=getchar()) != '\n') fputc(kar,pd); fclose(pd); //tutup file } 3. Menulis data pada file bertipe biner #include<stdio.h> #include<stdlib.h> main() { FILE *pf; int i,data,nilai; pf=fopen("data.dat","wb"); if(pf==NULL) { printf("File tidak bisa dibuka\n"); exit(1); }
Roslina, M.I.T
100
Buku Ajar Algoritma danPemrograman
printf("Masukkan banyaknya data\n"); scanf("%d",&data); for(i=1;i<=data;i++) { printf("data yang disimpan : "); scanf("%d",&nilai); _putw(nilai,pf); } printf("\nOke. Data sudah disimpan di file\n"); fclose(pf); } 4. Membaca isi file biner menggunakan getw() #include <stdio.h> #include <stdlib.h> main() { FILE *pf; /* ptr ke file */ int nilai, nomor = 0; /* Buka file biner untuk dibaca */ if((pf=fopen("data.DAT","rb")) == NULL) { printf("File gagal dibuka.\n"); exit(1); } printf("Isi file data.DAT : \n"); while(1) /* file berhasil dibuka */ { nilai = _getw(pf); /* Baca sebuah int dr file */ if (feof(pf) != 0) break; /*Jika akhir file, keluar loop*/ printf("%2d. %d \n", ++nomor, nilai); /* Tampilkan ke layar */ }
Roslina, M.I.T
101
Buku Ajar Algoritma danPemrograman
fclose(pf); /* Tutup file */ } 5. Membaca isi file teks #include<stdio.h> #include<stdlib.h> #include<string.h> main() { FILE *pf; char nama[20]; pf=fopen("coba.txt","r"); if(pf==NULL) { printf("File gagal dibuka\n"); exit(1); } while (fgets(nama,6,pf)) printf("%s\n",nama); fclose(pf); } 6. Mengganti nama file #include <stdio.h> #include <stdlib.h> #define PJG 65 main() { int kode; char namafilelama[PJG], namafilebaru[PJG]; printf("Nama file yang akan diganti : "); gets(namafilelama); printf("Nama file yang baru : ");
Roslina, M.I.T
102
Buku Ajar Algoritma danPemrograman
gets(namafilebaru); kode = rename(namafilelama, namafilebaru); if(kode == 0) printf("Nama file sudah diganti\n"); else printf("Gagal dalam mengganti nama\n"); } 7. Menghapus file #include <stdio.h> #include <stdlib.h> #define PJG 65 main() { int kode; char namafile[PJG]; printf("Nama file yang akan dihapus : "); gets(namafile); kode = remove(namafile); if(kode == 0) printf("File sudah dihapus\n"); else printf("Gagal dalam menghapus file\n"); } 8. Program untuk Input, Tambah dan Tampil data #include<stdio.h> void input(void); void tambah(void); void tampil (void); main() {
Roslina, M.I.T
103
Buku Ajar Algoritma danPemrograman
int pilih; pilih=1; do { clrscr(); printf("MENU PILIHAN\n "); printf("\n 1. Input Data\n "); printf(" 2. Tambah Data\n "); printf(" 3. Tampil Data\n "); printf(" 4. Selesai\n "); printf("\nInputkan Pilihan Anda (1-4) : "); scanf("%d",&pilih); switch(pilih) { case 1 : {input(); break;} case 2 : {tambah(); break;} case 3 : {tampil(); break;} case 4 : break; default : printf("\nPilihan Anda Salah "); } } while (pilih<4); getch(); }
Roslina, M.I.T
104
Buku Ajar Algoritma danPemrograman
void input(void) { FILE *fmhs; char ok; struct { char nama[20]; char t_lhr[20]; int umur; char gender[10]; }mhs; if((fmhs=fopen("mahasiswa.dat","wb"))==NULL) { puts("file tidak dapat diciptakan"); exit(1); } do { clrscr(); puts("Simpan Biodata Mahasiswa"); printf("Nama : "); scanf("%s",&mhs.nama); printf("Tempat Lahir : "); scanf("%s",&mhs.t_lhr); printf("Umur : "); scanf("%d",&mhs.umur); printf("Jenis Kelamin : "); scanf("%s",&mhs.gender); fwrite(&mhs, sizeof(mhs), 1, fmhs); printf("merekam data lagi (Y/T)? : "); ok=getche();
Roslina, M.I.T
105
Buku Ajar Algoritma danPemrograman
} while (ok=='Y' || ok =='y'); fclose(fmhs); getch(); } void tambah() { FILE *fmhs; char ok; struct { char nama[20]; char t_lhr[20]; int umur; char gender[10]; }mhs; if((fmhs=fopen("mahasiswa.dat","ab"))==NULL) { puts("file tidak dapat diciptakan"); exit(1); } do { clrscr(); puts("Simpan Biodata Mahasiswa"); printf("Nama : "); scanf("%s",&mhs.nama); printf("Tempat Lahir : "); scanf("%s",&mhs.t_lhr);
Roslina, M.I.T
106
Buku Ajar Algoritma danPemrograman
printf("Umur : "); scanf("%d",&mhs.umur); printf("Jenis Kelamin : "); scanf("%s",&mhs.gender); fwrite(&mhs, sizeof(mhs), 1, fmhs); printf("merekam data lagi (Y/T)? : "); ok=getche(); } while (ok=='Y' || ok =='y'); fclose(fmhs); getch(); } void tampil(void) { FILE *fmhs; struct { char nama[20]; char t_lhr[20]; int umur; char gender[10]; }mhs; if((fmhs=fopen("mahasiswa.dat","rb"))==NULL) { puts("file tidak dapat diciptakan"); exit(1); } clrscr(); printf ("\t\tBiodata Mahasiswa\n\n"); printf("Nama\t\tTempat Lahir\tUmur\t\tJenis Kelamin\n"); while(fread(&mhs,sizeof(mhs),1,fmhs)==1)
Roslina, M.I.T
107
Buku Ajar Algoritma danPemrograman
printf("%s\t\t%s\t\t%d\t\t%s\n",mhs.nama,mhs.t_lhr, mhs.umur,mhs.gender); fclose(fmhs); getch(); } TUGAS Buat algoritma dan program untuk menyimpan dan menampilkan data dari file pegawai dengan data input : Nama, NIP, Golongan. Output yang diinginkan seperti berikut : DAFTAR GAJI PEGAWAI NO
NAMA
NIP
GOLONGAN
GAJI POKOK
TUNJANGAN
TOTAL GAJI
TOTAL
Dengan ketentuan gaji pokok didapatkan berdasarkan golongan. Golongan Gaji Pokok 1 1750000 2 2000000 3 2500000 4 3000000 Tunjangan didapatkan 25% dari gaji pokok.
Roslina, M.I.T
108
Buku Ajar Algoritma danPemrograman
DAFTAR REFERENSI
1. Abdul Kadir, 2002, Pemrograman Dasar Turbo C Untuk IBM PC, Andi Yogyakarta 2. Antonius Rahmat C, 2010, Algoritma dan Pemrograman dengan Bahasa C, Konsep, Teori dan Implementasi, Andi Yogyakarta 3. Kelley A. Pohl, I., 1995 Abook on C : Programming in C, 3rd ed, Benyamin/Cummings Publishing Company 4. Rinaldi M, 2000, Algoritma dan Pemrograman dalam Bahasa Pascal dan C, Informatika Bandung
Roslina, M.I.T
109