Anda di halaman 1dari 109

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 dalam proses pembuatan program


komputer :

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

“Bilangan “Bilangan
Genap” 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. Mahasiswa mampu menjelaskan dan menggunakan


fungsi untuk input data
2. Mahasiswa mampu menjelaskan dan menggunakan
fungsi untuk menampilkan/mencetak informasi
3. 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 Keterangan
%c Membaca sebuah karakter
%s Membaca sebuah string
% i atau Membaca sebuah integer
%d
%e atau Membaca sebuah bilangan real (bisa
%f dalam bentuk eksponensial)
%o Membaca sebuah integer oktal
%x Membaca sebuah integer hexadesimal
%u Membaca sebuah integer tak bertanda
l Awalan untuk membaca data long int
(misal %ld)
L Awalan untuk membaca data long
double (misal %Lf)
h 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, tinggi,
luas

Inputkan alas,
tinggi

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 untuk menginputkan,


menghitung dan menampilkan :
- luas persegi panjang
- luas bujur sangkar
- jumlah bayar barang

Roslina, M.I.T
21
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 Total Kawasan Keterangan


data bit
Char 8 -128 s/d 127 Karakter
Int 16 -32768 s/d 32767 Bilangan Integer
Float 32 3.4E-38 s/d 3.4E+38 Bilangan Real Presisi-
tunggal
Double 64 1.7E-308 s/d 1.7E+308 Bilangan Real Presisi-
ganda
Void 0 - 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 <nama_konstanta> <nilai>


 atau
- Menggunakan keyword const
- const <tipe_konstanta> <nama_konstanta> =
<nilai>;
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
yaitudibentuk dengan operator relasi dan/atau operator
logika.

Roslina, M.I.T
30
Buku Ajar Algoritma danPemrograman

Pernyataan if

Sintak:
t
if (kondisi) kondisi
pernyataan
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
if (kondisi) kondisi
pernyataan1
else y
pernyataan2
pernyataan pernyataan

Roslina, M.I.T
31
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 (else-
if). 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

Hasil=0

“Bilangan “Bilangan
Genap” 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 : %.2f\n",gapok);
printf("Tunjangan : %.2f\n",tjg);
printf("Gaji Kotor : %.2f\n",gk );
printf("PPh : %.2f\n",pph);
printf("Gaji Bersih : %.2f\n",gb );
getch();
}

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; Tampilkan
float rata2; jumlah, rata2
rata2=0,jumlah=0;
i=1;
clrscr();
do
{ 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 menggunakan
instruksi pengulangan for dan nested loop

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 N!
1 1
2 2
: :
: :
10 :

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 : tipe data array


Nama_var_array : nama variabel array
Ukuran : 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] : elemen ke-1 dari nilai
Nilai[2] : elemen ke-2 dari nilai

Dari contoh diatas array berdimensi satu dapat digambarkan


sebagai berikut:

int Nilai [5];

Nilai[0] Nilai[1] Nilai[2] Nilai[3] Nilai[4]


80 98 75 60 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<n;i++)
{
printf("Mahasiswa ke- %d : \n", i+1);
printf("Nama : "); scanf("%s", &nama[i]);
for(j=0;j<4;j++)
{
printf("Nilai Ke- %d :", j+1); scanf("%d",&nilai[j]);
}
}
/* tampilkan nilai mahasiswa */

printf("\tDaftar Nilai mahasiswa \n");


printf("No\tNama\t\tNilai1\tNilai2\tNilai3\tNilai4\tNilai
Rata\n");
for(i=0; i<n; i++)
{
printf("%d\t %s", i+1,nama);
for(j=0;j<4;j++)
{
printf("\t%7d",nilai[j]);

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<b;i++)
{
for(j=0;j<k;j++)
{
printf("Elemen matriks %d %d : ", i+1,j+1);
scanf("%d",&a[i][j]);
}
}
printf("Input Elemen Matriks B \n");
for (i=0;i<k;i++)
{
for(j=0;j<k;j++)
{
printf("Elemen matriks %d %d : ", i+1,j+1);
scanf("%d",&b[i][j]);
}
}
/*penjumlahan matriks*/
for (i=0;i<b;i++)
{
for(j=0;j<k;j++)

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<b;i++)
{
for(j=0;j<k;j++)
printf("%4d",a[i][j]);
printf("\n");
}
printf("\n");
printf(" + ");
printf("\n");
printf(" matriks B\n");
for (i=0;i<b;i++)
{
for(j=0;j<k;j++)
printf("%4d",b[i][j]);
printf("\n");
}
printf("\n");
printf(" = ");
printf("\n");
printf(" matriks C\n");
for (i=0;i<b;i++)
{
for(j=0;j<k;j++)
printf("%4d",c[i][j]);
printf("\n");
}
getch();

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 : Florence
Alamat : France
Telp : 1234876

Nama : Christine
Alamat : Hawai
Telp : 9876354

Nama : James
Alamat : Bangkok
Telp : 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 <conio.h>
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 <conio.h>
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<brs;i++)
{
for(j=0;j<klm;j++)
scanf("%d",&matriks[i][j]);
}
}

void jumlah_matriks(int matrika[][10],int matrikb[][10],int


matrikc[][10], int brs, int klm)
{
int i,j;
for (i=0;i<brs;i++)

Roslina, M.I.T
77
Buku Ajar Algoritma danPemrograman

{
for(j=0;j<klm;j++)
matrikc[i][j]=matrika[i][j]+matrikb[i][j];
}
for (i=0;i<brs;i++)

{
for(j=0;j<klm;j++)
printf("%4d",matrikc[i][j]);
printf("\n");
}
}
void kali_matriks(int matrika[][10],int matrikb[][10],int
matrikc[][10], int brs, int klm, int klmc)
{
int i, j, m;
for (i=0;i<brs;i++)
{
for(j=0;j<klmc;j++)
{
matrikc[i][j]=0;
for (m=0;m<klm;m++)

matrikc[i][j]=matrikc[i][j]+matrika[i][m]*matrikb[m][j];
}
}
for (i=0;i<brs;i++)

{
for(j=0;j<klmc;j++)
printf("%4d",matrikc[i][j]);
printf("\n");
}}

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 N!
1 1
2 2
: :
10 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 fungsi-
fungsi 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 <conio.h>
#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 <conio.h>
#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 <conio.h>
#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 <conio.h>
#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 dan
menampilkan hasilnya
#include <stdio.h>
#include <conio.h>
#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();
}

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 …….. RECORD

FIELD …….. FIELD

BYTE BYTE
(8 BIT) (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
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 : Pointer yang menunjuk kearah


memory yang akan ditempati data dari
file disk untuk fungsi fread() atau
fwrite()
Jum_byte : Jumlah byte yang akan dibaca atau
disimpan
n : Menentukan banyaknya blok data
berukuran jum_byte yang akan ditulis
atau dibaca.
Ptr_file : 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 TUNJANGAN TOTAL


POKOK 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

Anda mungkin juga menyukai