Algorithm

89
Algorithm and Programming Hands on Lab January 2011 For the latest information, please see bluejack.binus.ac.id

Transcript of Algorithm

Page 1: Algorithm

Algorithm and Programming

Hands on Lab

January 2011

For the latest information, please see bluejack.binus.ac.id

Page 2: Algorithm

i | P a g e

Information in this document, including URL and other Internet Web site references, is

subject to change without notice. This document supports a preliminary release of software

that may be changed substantially prior to final commercial release, and is the proprietary

information of Binus University.

This document is for informational purposes only. BINUS UNIVERSITY MAKES NO

WARRANTIES, EITHER EXPRESS OR IMPLIED, AS TO THE INFORMATION IN THIS

DOCUMENT.

The entire risk of the use or the results from the use of this document remains with the

user. Complying with all applicable copyright laws is the responsibility of the user. Without

limiting the rights under copyright, no part of this document may be reproduced, stored in

or introduced into a retrieval system, or transmitted in any form or by any means

(electronic, mechanical, photocopying, recording, or otherwise), or for any purpose, without

the express written permission of Binus University.

Binus University may have patents, patent applications, trademarks, copyrights, or other

intellectual property rights covering subject matter in this document. Except as expressly

provided in any written license agreement from Binus University, the furnishing of this

document does not give you any license to these patents, trademarks, copyrights, or other

intellectual property.

Unless otherwise noted, the example companies, organizations, products, domain names, e-

mail addresses, logos, people, places and events depicted herein are fictitious, and no

association with any real company, organization, product, domain name, email address,

logo, person, place or event is intended or should be inferred.

© 2011 Binus University. All rights reserved.

The names of actual companies and products mentioned herein may be the trademarks of

their respective owners.

Page 3: Algorithm

ii | P a g e

Table of Contents

OVERVIEW ..................................................................................................... iii

SYSTEM REQUIREMENT .................................................................................... iv

Chapter 01 – IDE dan Instruksi I/O .................................................................... 1

Chapter 02 – Operasi Aritmatika ...................................................................... 10

Chapter 03 – Struktur Kendali Pemilihan ........................................................... 20

Chapter 04 – Struktur Kendali Perulangan ......................................................... 30

Chapter 05 – Array ......................................................................................... 36

Chapter 06 – Function .................................................................................... 45

Chapter 07 – Built-in Function ......................................................................... 58

Chapter 08 – Rekursif ..................................................................................... 64

Chapter 09 – Operasi File ................................................................................ 68

Chapter 10 – Sorting ...................................................................................... 75

Chapter 11 – String ........................................................................................ 82

Page 4: Algorithm

iii | P a g e

OVERVIEW

Chapter 01

• IDE dan Intruksi Dasar Input/Output

Chapter 02

• Operasi Aritmatika : Penjumlahan, Pengurangan, Perkalian, Pembagian dan Modulus

Chapter 03

• Struktur Kendali Pemilihan : If, If – Else, If – Else If dan Switch Case

• Ternary Operator

Chapter 04

• Struktur Kendali Perulangan: Do…While, While… dan For

Chapter 05

• Array : Array 1 Dimensi, 2 Dimensi dan N-Dimensi

Chapter 06

Function : Call By Value dan Call By References

Chapter 07

• Build-In Function

Chapter 08

• Fungsi Rekursif

Chapter 09

• Operasi File : Baca dan Tulis File

Chapter 10

• Sorting : Bubble Sort

Chapter 11

• String : Input/Output dan Fungsi dalam Header “String.h”

Page 5: Algorithm

iv | P a g e

SYSTEM REQUIREMENT

Hardware:

o Minimum:

1.6 GHz CPU, 192 MB RAM, 1024x768 display, 5400 RPM hard disk

o Recommended:

2.2 GHz, 384 MB, 1280x1024 display, 7200 RPM or higher.

o On Windows Vista:

2.4 GHz CPU, 768 MB RAM

Software:

o Microsoft Visual Studio 2008 Express Edition (Visual C++)

o 1.3 GB of available disk space for the full install

Page 6: Algorithm

1 | P a g e

Chapter 01

IDE dan Instruksi I/O

Page 7: Algorithm

2 | P a g e

1.1. Definisi Algoritma

Secara etimologis, Algoritma berasal dari kata Al Khwarizmi / algorism yang dalam

bahasa Arab berarti proses menghitung menggunakan angka. Tetapi, dalam pengertian

lain, algoritma adalah urutan langkah-langkah logis penyelesaian masalah yang disusun

secara sistematis.

1.2. Definisi Pseudocode

Pseudocode adalah kode-kode yang dapat kita mengerti yang nantinya akan diolah dan

diubah ke dalam suatu bahasa pemrograman. Selain itu, pseudocode dapat juga diartikan

sebagai cara untuk menuliskan sebuah algoritma secara high-level (level tingkat tinggi).

Untuk penulisan, pseudocode biasanya dituliskan dengan kombinasi bahasa manusia dan

notasi matematika dan biasanya sebuah pseudocode tidak terlalu detail jika dibandingkan

dengan kode program.

Isu-isu detail dalam kode program yang sifatnya teknis tidak dibahas di dalam

pseudocode.

1.3. Contoh Pseudocode

Contoh pseudocode untuk meminta inputan nama dan mencetaknya:

1. Read Nama

2. Print Nama

Dalam bahasa C kita dapat mengubahnya menjadi:

char nama[100];

scanf(“%s”, nama); fflush(stdin); //Read Nama

printf(“nama = %s”, nama); //Print Nama

Page 8: Algorithm

3 | P a g e

1.4. Tipe data

No Tipe

Data Ukuran

Range

(Jangkauan) Format Keterangan

1. Char 1 byte -128 s/d 127 %c Karakter/string

2. Int 2 byte -32768 s/d 32767 %d Integer/bilangan bulat

3. Float 4 byte - 3.4E-38 s/d 3.4E+38 %f Float/bilangan pecahan

4. Double 8 byte - 1.7E-308 s/d 1.7E+308 %lf Pecahan presisi ganda

Contoh deklarasinya:

char NIM[11];

int age;

Contoh penggunaannya:

scanf(“%s”,NIM);

scanf(“%d”,&age);

1.5. Input/Output

Dalam bahasa C, operasi input output dapat ditemukan dalam header (stdio.h).

Stdio merupakan singkatan dari standard input output.

1.5.1. Input

a. scanf: untuk meminta inputan data dari keyboard.

#include<stdio.h>

int main()

{

char ID[11];

int age;

printf(“ID = ”); scanf(“%s”,ID);

printf(“Age = ”); scanf(“%d”,&age);

printf(“Hi! Binusian!! \n”);

printf(“Your ID = %s \n”,ID);

printf(“Your Age = %d \n”,age);

return 0;

}

Note :

Untuk pemakaian sintaks scanf, apabila data yang diinput adalah array of

character / string, maka tanda „&‟ dapat dihilangkan

Page 9: Algorithm

4 | P a g e

%x Hexadecimal integer

%f Float (bilangan pecahan)

%lf Double float

%e Float tipe exponent menggunakan e

%c Karakter

%s String

%d Bilangan bulat (integer)

%ld Long integer

%u Unsigned integer

b. gets: untuk meminta inputan berupa kata atau kalimat sampai akhir line “\n”

(menekan tombol enter).

c. getchar: untuk memasukkan sebuah nilai karakter ke variabel yang bertipe

karakter.

#include<stdio.h>

int main(){

char grade;

printf(“Your grade : ”);

grade=getchar();

printf(“You‟ve inputed this grade = %c \n”,grade);

}

#include<stdio.h>

int main(){

char name[25];

char addr[50];

printf(“Name : ”);gets(name);

printf(“Addr : ”);gets(addr);

printf(“\n”);

printf(“Data you‟ve inputed : \n”);

printf(“Name : %s \n”,name);

printf(“Addr : %s \n”,addr);

return 0;

}

Note :

Anda dapat menggunakan “[^\n]” untuk menggantikan gets.

Dengan scanf ini akan mengambil sampai karakter “\n”.

Karakter “\n” tidak diambil. (dibaca : ambil sampai negasi “\n”).

Contoh : scanf(“%[^\n]”, &variable);

Page 10: Algorithm

5 | P a g e

1.5.2. Output

a. printf: digunakan untuk menampilkan suatu keluaran pada konsol (layar).

Berikut beberapa variasi format untuk menampilkan string:

%s : menampilkan seluruh karakter pada string.

%Ns : menampilkan semua karakter rata kanan dengan lebar N posisi.

%-Ns : menampilkan semua karakter rata kiri dengan lebar N posisi.

%N.Ms : menampilkan rata kanan hanya M karakter pertama saja dengan lebar

N posisi.

*untuk format pencetakan (%s, %d, %c, dan lainnya. ), perhatikan format yang

sudah ada pada input-scanf.

Escape

Sequence Description Unicode

\t (Horizontal) Tab \u0009

\f Form Feed \u000c

\v Vertical Tab \u000B

\n New Line Feed (LF) \u000a

\r Carriage Return (CR) \u000d

\b Backspace \u0008

\' Single quote (grave accent) \u0027

\\ Back slash (solidus) \u005c

\0 null (C string terminator) \u0000

\a Alert (beep sound) or New line break for CSS2 content \u0007

\c continuation (UNIX) Tidak ada

\" Double quote \u0022

#include <stdio.h>

int main(){

int value=69;

printf(“I love C language.. =) \n”);

printf(“Value = %d \n”,value);

getchar();

return 0;

}

Page 11: Algorithm

6 | P a g e

b. putchar: menampilkan 1 karakter dan tidak mengandung escape sequence “\n”.

c. puts: menampilkan nilai string dengan disertai line feed atau escape sequence

ganti baris (“\n”).

Pahami definisi algoritma, jika perlu carilah sumber-sumber di internet untuk

mendukung pengetahuan Anda.

#include <stdio.h>

int main()

{

puts(“I love C language.. =)”);

puts(“Let‟s study C language “);

return 0;

}

#include <stdio.h>

int main()

{

char a;

printf(“a = ”);

scanf(“%c”,&a);

fflush(stdin);

printf(“Data you have inputed : ”);

putchar(„\n‟);

putchar(a);

return 0;

}

Page 12: Algorithm

7 | P a g e

1.6. Latihan

1.6.1 Latihan 1 – Pengenalan IDE

IDE yang kita gunakan adalah Visual Studio 2008 C++ Express Edition yang dapat

diunduh gratis di situs Microsoft.

How to launchVisual Studio 2008 C++ Express?

Shortcut:

a) Tekan WIN + R.

b) Ketik VCExpress

Page 13: Algorithm

8 | P a g e

1.6.2. Latihan 2 – Follow step by step

Perbaikilah listing program di bawah ini dengan benar sehingga jika dijalankan

listing program akan menghasilkan program dibawah ini!

Output:

Question :

#incude stdio.>

//step 1 invalid preprocessor command 'incude‟ change it to include

//step 2 expected a filename, found 'identifier‟ change it to <stdio.h>

int main()

{

char name[25]="Sky";

printf(\t\t===========================\n");

//step 3 newline in constant add “ after printf(

printf("\t\t%%Welcome to Bina Nusantara%\n");

//step 4 output shows that we need to add % behind to print % (%% = %)

printf("\t\t===========================\n");

printf("\n\r======================================================");

printf("\nWish u have a cool\excellent programming skill, %s!!! \n",

ame);

//step 5 'ame' : undeclared identifier change it to name

pritf("======================================================\n");

//step 6 'pritf': identifier not found change it to printf

printf("\n\nPress ENTER to exit!! %c %c Algoritm !!!",1,3);

gethar();

//step 7 „gethar‟: identifier not found change it to getchar

return 0;

}

Page 14: Algorithm

9 | P a g e

1.6.7. Latihan 3 – Try Your Self – Make it Zero Errors

Cobalah perbaiki code dibawah ini!

int main()

{

char name[100]

printf("\tBina Nusantara Library System\t");

printf("\t\tt\t*-*-*-*-*-*-*-*-*\n\n");

printf("Please enter your name : ");

scanf("[\n]",name);

flush(stdin);

printf("nnHi! %s, This is a quote for you.....\n\n",name);

getchar();

printf("%c "Trying to forget someone you love is like trying to

remember someone you never knew"\n\n",3);

prinf("Press Enter to other quotes...\n\n");

getchrr();

printf("%c \\"Eventually, all the pieces will fall into place. Until

then.. laugh at the confusion, live for the moment, and know

that everything happens for the reason\"\n\n",3);

printf("%c \If everything happened when and how we wanted it to,

nothing would be worth waiting for..\"\n\",3);

getchar();

printf("Welcome to C languange... Good Luck!!!!);

getchar();

return 0

}

Answer: #include<stdio.h>

int main()

{

char name[25]="Sky";

printf("\t\t===========================\n");

printf("\t\t%%Welcome to Bina Nusantara%%\n");

printf("\t\t===========================\n");

printf("\n\r======================================================");

printf("\nWish u have a cool\\excellent programming skill, %s!!!\n"

,name);

printf("======================================================\n");

printf("\n\nPress ENTER to exit!! %c %c Algorithm !!!",1,3);

getchar();

return 0;

}

Page 15: Algorithm

10 | P a g e

Chapter 02

Operasi Aritmatika

Page 16: Algorithm

11 | P a g e

2.1 Operasi-operasi aritmatika

Dalam bahasa C, terdapat beberapa macam operasi aritmatika, contohnya adalah:

Simbol Fungsi Contoh

+ Penjumlahan day + 1

- Pengurangan numOfCake –3

* Perkalian hour * 60

/ Pembagian minute / 60

% Modul us Number % 2

++ Increment i++ atau ++i

-- Decrement i-- atau --i

2.1.1. Penjumlahan

int hasil;

int a = 6, b = 3;

hasil = a + b;

maka nilai hasil yang tercetak adalah 9.

Anda juga dapat melakukan penjumlahan dengan cara:

hasil += a;

dimana setara dengan

hasil = hasil + a;

2.1.2. Pengurangan

int hasil;

int a = 6, b = 3;

hasil = a - b;

maka nilai hasil yang tercetak adalah 3.

Page 17: Algorithm

12 | P a g e

Anda juga dapat melakukan penjumlahan dengan cara:

hasil -= a;

dimana setara dengan

hasil = hasil - a;

2.1.3. Perkalian

int hasil;

int a=6, b = 3;

hasil = a * b;

maka nilai hasil yang tercetak adalah 18.

Anda juga dapat melakukan penjumlahan dengan cara:

hasil *= a;

dimana setara dengan

hasil = hasil * a;

2.1.4. Pembagian

int hasil;

int a=6, b = 3;

hasil = a / b;

maka nilai hasil yang tercetak adalah 2.

Anda juga dapat melakukan penjumlahan dengan cara:

hasil /= a;

dimana setara dengan

hasil = hasil / a;

Page 18: Algorithm

13 | P a g e

2.1.5. Modulus/Modulo

Biasanya digunakan untuk menentukan menentukan nilai sisa dari suatu pembagian.

Umumnya modulus/modulo digunakan untuk menentukan suatu nilai merupakan

bilangan ganjil atau genap.

contoh:

angka % 2 == 0 (bilangan genap)

jika

angka % 2 != 0 (bilangan ganjil)

2.1.6. Increment

a. Preincrement (++<variabel>)

Preincrement berfungsi untuk menambahkan sebuah variabel sebanyak satu

point (variabel + 1) sebelum menjalankan suatu proses, seperti memasukkan isi

variabel tersebut ke dalam variabel lain atau proses pencetakan variabel ke dalam

konsol.

Contoh:

#include <stdio.h>

int main()

{

int number=3;

int beforeIncrement;

int afterIncrement;

printf("Initial number : %d\n\n",number);

//pada bagian ini, nilai number ditambah 1 terlebih dahulu

//nilai disimpan ke dalam beforeIncrement

beforeIncrement = ++number;

//nilai number yang sudah ditambah disimpan ke //dalam afterIncrement

afterIncrement = number;

printf("Number before increment : %d\n",beforeIncrement);

printf("Number after increment : %d",afterIncrement);

getchar();

return 0;

}

Page 19: Algorithm

14 | P a g e

b. Postincrement (<variabel>++)

Postincrement berfungsi untuk menambahkan sebuah variabel sebanyak satu

point (variabel + 1) setelah menjalankan suatu proses, seperti memasukkan isi

variabel tersebut ke dalam variabel lain atau proses pencetakan variabel ke dalam

konsol.

Contoh:

#include <stdio.h>

int main()

{

int number=3;

int beforeIncrement;

int afterIncrement;

printf("Initial number : %d\n\n",number);

//pada bagian ini, nilai number disimpan ke dalam

//beforeIncrement

//lalu number ditambah 1;

beforeIncrement = number++;

//nilai number yang sudah ditambah disimpan ke dalam

//afterIncrement

afterIncrement = number;

printf("Number before increment : %d\n",beforeIncrement);

printf("Number after increment : %d",afterIncrement);

getchar();

return 0;

}

Page 20: Algorithm

15 | P a g e

2.1.7. Decrement

a. Predecrement (--<variabel>)

Predecrement berfungsi untuk mengurangi sebuah variabel sebanyak satu point

(variabel - 1) sebelum menjalankan suatu proses, seperti memasukkan isi variabel

tersebut ke dalam variabel lain atau proses pencetakan variabel ke dalam konsol.

Contoh:

#include <stdio.h>

int main()

{

int number=3;

int beforedecrement;

int afterdecrement;

printf("Initial number : %d\n\n",number);

//pada bagian ini, nilai number dikurang 1 terlebih

//dahulu

//nilai disimpan ke dalam beforedecrement

beforedecrement = --number;

//nilai number yang sudah dikurang disimpan ke

//dalam afterdecrement

afterdecrement = number;

printf("Number before decrement : %d\n",beforedecrement);

printf("Number after decrement : %d",afterdecrement);

getchar();

return 0;

}

Page 21: Algorithm

16 | P a g e

b. Postdecrement (<variabel>--)

Postdecrement berfungsi untuk mengurangi sebuah variabel sebanyak satu point

(variabel - 1) setelah menjalankan suatu proses, seperti memasukkan isi variabel

tersebut ke dalam variabel lain atau proses pencetakan variabel ke dalam konsol.

Contoh:

#include <stdio.h>

int main()

{

int number=3;

int beforeDecrement;

int afterDecrement;

printf("Initial number : %d\n\n",number);

//pada bagian ini, nilai number disimpan ke dalam

//beforeDecrement

//lalu number dikurang 1;

beforeDecrement = number--;

//nilai number yang sudah dikurang disimpan ke dalam

//afterDecrement

afterDecrement = number;

printf("Number before Decrement : %d\n", beforeDecrement);

printf("Number after Decrement : %d",afterDecrement);

getchar();

return 0;

}

Page 22: Algorithm

17 | P a g e

2.2. Latihan

2.2.1. Latihan 1 – Pemahaman Konsep.

1. Apa perbedaan antara i++ dan ++i?

2. Apa perbedaan antara i-- dan –-i?

3. Apakah a = a+2; sama hasilnya dengan menggunakan a += 2.

4. Apakah a = a/a; sama hasilnya dengan menggunakan a /= a;

5. Untuk urutan, manakah yang nilai presedensinya lebih tinggi

contoh: * lebih tinggi dari +

a. Bagaimana dengan / dan * ?

b. Bagaimana dengan + dan / ?

c. Bagaimana dengan * dan %?

d. Bagaimana dengan % dan +?

e. Bagaimana dengan () dan +?

2.2.2. Latihan 2 – Code it.

Buatlah sebuah program sederhana, yang menghasilkan aplikasi berikut ini:

1. Pada awal program, program akan meminta user untuk memasukkan inputan

berupa angka untuk menit.

2. Kemudian program akan menampilkan:

a. Inputan menit yang telah diubah ke satuan detik dengan format pesan

“[detik] seconds, or equal to”.

Detik = inputan menit * 60

b. Inputan menit yang dimasukkan user dengan format pesan

“[menit] minutes, or equal to”

c. Inputan menit yang telah diubah ke satuan jam dengan format pesan

“[jam] hours”

Jam = menit / 60.

Page 23: Algorithm

18 | P a g e

2.2.3. Latihan 3 – Try it Yourself

Apakah code ini benar?

Berapakah nilai a, b, dan c?

Dan mengapa?

References:

http://www.cppreference.com/wiki/operator_precedence

int a = 6;

int b = 7;

int c = a +++ b;

Page 24: Algorithm

19 | P a g e

Chapter 03

Struktur Kendali Pemilihan

Page 25: Algorithm

20 | P a g e

3.1. Struktur kendali pemilihan

Dalam bahasa C, terdapat beberapa macam struktur kendali pemilihan, diantaranya

adalah if, else, else if, dan switch case.

3.1.1 If

If digunakan untuk melakukan pengecekan atau menyeleksi apakah suatu kondisi

terpenuhi atau tidak.

Berikut ini cara penggunaan struktur kendali pemilihan if:

Jika digunakan dengan hanya 1 statement yang harus dijalankan ketika kondisi

bernilai benar.

Jika digunakan dengan lebih dari 1 statement yang harus dijalankan ketika kondisi

bernilai benar

3.1.2. Else dan else if

a. Else

Else digunakan untuk melakukan pengecekan terhadap suatu kondisi selain

kondisi yang telah dicek sebelumnya.

Jika digunakan dengan 1 statement yang harus dijalankan

if (expression)

{

<block of statements>

}

else

<statement>

if (expression)

{

<block of statements>

}

if (expression)

<statement>

Page 26: Algorithm

21 | P a g e

Jika digunakan dengan lebih dari 2 statement atau lebih yang harus dijalankan

b. Else if

Else if digunakan untuk melakukan pengecekan terhadap beberapa kondisi selain

dari kondisi yang telah dicek sebelumnya.

Jika digunakan dengan hanya 1 statement yang harus dijalankan

Jika digunakan dengan lebih dari 2 statement atau lebih yang harus dijalankan

Untuk memudahkan mengingat, dapat dikatakan else if adalah extensifikasi

dari else, karena pada else if dapat dilakukan pengecekan kondisi lain selain

dari kondisi yang telah dicek sebelumnya.

if (expression)

{

<block of statements>

}

else if(expression)

{

<block of statements>

}

if (expression)

{

<block of statements>

}

else if(expression)

<block of statements>

if (expression)

{

<Block of statements>

}

else

{

<Block of statements>

}

Page 27: Algorithm

22 | P a g e

Perhatikan langkah-langkah berikut ini:

1. Ketika kita menemukan kondisi berupa boolean expression yang kita cek

dengan menggunakan operator < (lebih kecil), > (lebih besar), <= (lebih

kecil sama dengan), >= (lebih besar sama dengan), atau == (sama dengan).

Maka kita akan menghasilkan hasil berupa true atau false (boolean).

Perhatikan code berikut:

Maka yang tercetak adalah: “Yang diinput adalah angka sembilan”.

2. Dengan menggunakan kode program di atas dan mengganti inputan

dengan menginput angka 6.

Maka yang tercetak adalah: “Angka Lainnya”.

3. Kita dapat saja mengubah sedikit kode program pada potongan program di

atas, kita dapat saja membuat agar ketika kita menginput angka 6 dan

menampilkan pesan “Hey, ini angka enam”, dengan cara seperti berikut

ini:

scanf(“%d”, &x); //input “9”

if( x == 9 )

printf(“Yang diinput adalah angka sembilan”);

else

printf(“Angka Lainnya”);

Page 28: Algorithm

23 | P a g e

Kemudian pada potongan program di atas, tambahan kode yang harus

ditambahkan adalah:

Jadi secara lengkap, format penulisan if secara lengkap adalah

if (expression)

{

<block of statements>

}

else if(expression)

{

<block of statements>

}

else

{

<block of statements>

}

scanf(“%d”, &x); //kita input 9

if( x == 9 )

printf(“It’s nine”);

else //dapat ditempel menjadi else if

if( x == 6 )

printf(“Hey, ini angka enam”);

else

printf(“Angka Lainnya”);

scanf(“%d”, &x); //kita input 9

if( x == 9 )

printf(“Yang diinput adalah angka sembilan”);

else

//<tambahkan code disini>

printf(“Angka Lainnya”);

Page 29: Algorithm

24 | P a g e

3.2. Pemilihan dengan menggunakan switch case

3.2.1 Switch Case tanpa Break

Switch Case digunakan untuk menyeleksi suatu kumpulan syarat (case) tertentu

terhadap suatu variabel/expression.

Format:

Dapat terlihat pada format di atas expression dimaksudkan adalah suatu variabel,

kondisi atau pernyataan logika yang ingin dicek kebenarannya.

Case adalah syarat atau kondisi penyeleksian suatu expression, bila expression yang

dicek ternyata sesuai dengan suatu case, maka statement akan dijalankan.

Contoh:

Keterangan:

Type casting = proses untuk mengubah suatu variabel dengan tipe data tertentu

menjadi tipe data yang lain. Misalnya mengubah bilangan float

menjadi bilangan int, bilangan long menjadi double dan sebagainya.

Dalam potongan program di atas dapat dilihat salah satu contoh type casting yaitu:

(char) = type casting suatu variabel menjadi tipe data char

char character;

character = (char) getchar(character);

switch(character)

{

case „a‟ : case „i' : case „u‟ : case „e‟ : case „o‟ :

printf(“Vocal character”);

default :

printf(“Consonant character”);

}

}

switch( expression )

{

case constant-expression1 : statements1;

[case constant-expression2 : statements2;]

[case constant-expression3 : statements3;]

[default : statements4;]

}

Page 30: Algorithm

25 | P a g e

3.2.2 Switch Case dengan Break

Penggunaan switch case pada pembahasan ini, sebenarnya sama saja dengan

pembahasan sebelumnya tetapi ditambahkan dengan keyword break.

Fungsi break dalam switch case dimaksudkan agar ketika pengecekan berhasil dan

proses masuk ke salah satu case, maka dengan keyword break, statement lain yang

dideklarasikan di bawah statement tersebut tidak lagi dijalankan (keluar dari

block statement switch).

Keyword break ini, tidak hanya dapat digunakan dalam swith case saja, tetapi dapat

digunakan dengan fungsi-fungsi lain atau proses lain.

Untuk melihat perbedaannya hilangkanlah sintax break (break pada case 1).

3.3. Ternary Operator ( ? : )

Ternary operator adalah suatu operator yang dapat digunakan untuk melakukan

pengecekan seperti halnya struktur kendali if, else dan switch case. Operator ini akan

mengecek apakah expression yang dideklarasikan di sebelah kiri operator “?” bernilai

benar atau salah, jika benar/salah maka akan dijalankan statement yang sesuai.

Format:

Contoh :

scanf("%d",&x); //input 3

(x == 3 ) ? printf("yes, it‟s three!\n") : printf("hm,..it‟s the

another\n");

<expression> ? <statement if true> : <statement if false>

int number;

scanf(“%d”,&number);

switch(number){

case 1 : printf(“one!\n”); break;

case 2 : printf(“two!\n”); break;

default : printf(“Not one or two”);

}

}

Page 31: Algorithm

26 | P a g e

3.4. Latihan

3.1.1. Latihan 1–Pemahaman konsep.

1. Apakah perbedaan mendasar antara switch dan if?

2. Apa saja syarat-syarat penggunaan if?

3. Bolehkan default dihilangkan?

3.1.2. Latihan 2 – Code it.

Winy, seorang mahasiswi jurusan Teknik Informatika, ditugaskan oleh dosen

Aljabar Linear untuk membuat sebuah program sederhana untuk menghitung

determinan matriks. Program tersebut dibuat dengan ketentuan sebagai berikut:

Awal program dijalankan, ditampilkan menu seperti berikut:

1. Matriks 2x2

2. Matriks 3x3

Ketik "exit" untuk keluar

Minta user untuk menginput pilihan. Validasikan pilihan yang dapat diinput

berupa karakter ‟1‟,‟2‟, atau kata ‟exit‟.

Jika user memilih menu Matriks 2x2 (input ‟1‟) atau Matriks (input ‟2‟), Minta

user untuk menginput elemen matriks buah bilangan. Validasikan elemen

matriks yang diinput minimal 0 dan maksimal 9.

Setelah masing-masing elemen matriks diinput, tampilkan matriks tersebut.

1. Contoh tampilan matriks 2x2:

2. Contoh tampilan matriks 3x3:

Kemudian, hitung dan tampilkan nilai determinan matriks tersebut, dengan

rumus:

1. Untuk Matriks 2x2:

determinan = (a*d) – (b*c)

2. Untuk Matriks 3x3:

determinan = (a*e*i + b*f*g + c*d*h) - (c*e*g + b*d*i + a*f*h)

Program akan berulang hingga user memasukkan pilihan“exit”.

Page 32: Algorithm

27 | P a g e

Rancangan Layar Awal Program

Rancangan Layar Menu Matriks 2x2

Rancangan Layar User Memilih Menu 2.

Note : untuk pertemuan selanjutnya salinlah (copy)code Anda ke

vcexpress. Selain itu, biasakan juga untuk menulis code dengan indentation (tab).

Page 33: Algorithm

28 | P a g e

Chapter 04

Struktur Kendali Perulangan

Page 34: Algorithm

29 | P a g e

4.1. Struktur kendali perulangan

Dalam bahasa C, terdapat beberapa macam struktur kendali perulangan, diantaranya for,

do…while, while.

4.1.1. For

For digunakan untuk mengulang suatu statement yang dideklarasikan berdasarkan

suatu kondisi atau syarat tertentu.

Format penggunaan For:

Jika hanya 1 statement yang dijalankan dalam perulangan

Jika terdiri lebih dari 1 statement yang dijalankan dalam perulangan

Contoh:

Pada potongan program di atas, kedua statement yang terdapat didalam for akan

dijalankan selama kondisi i < 5 terpenuhi.

Dalam hal ini, awalnya nilai i adalah 0 dan ketika proses dilakukan, nilai i akan

ditambahkan satu point (increment i++), dan proses dilakukan terus.

for ( int i = 0; i < 5; i++)

{

printf(“Value of i is = %d“ , i);

printf(“Loop number %d”, (i+1));

}

for (initialization; condition; increment/decrement)

{

<block of statements>

}

for ([initialization] ; [condition] ; [increment/decrement])

<statement>

Page 35: Algorithm

30 | P a g e

4.1.2. Do…While

Do...While digunakan untuk mengulan suatu statement yang dideklarasikan sesudah

keyword Do dan setelah menjalankan statement tersebut, dilakukan pengecekan

terhadap expression yang diberikan, apakah bernilai benar/salah.

Jika bernilai benar, maka statement tesebut akan diulang kembali.

Jika bernilai salah, maka statement tersebut hanya akan dijalankan satu kali tanpa

dilakukan pengulangan.

Contoh:

Pada potongan program di atas, program akan menjalankan terlebih dahulu kedua

statement di dalam do kemudian dilakukan pengecekan apakah nilai i < 5, jika benar,

maka program akan kembali mengulang kedua statement tersebut.

4.1.3. While

While digunakan untuk mengulang suatu statement selama expression yang diberikan

didalamnya bernilai benar, jika bernilai salah, maka statement yang dideklarasikan di

dalamnya tidak akan diulang.

Contoh:

int i = 0;

while (i < 5){

printf(“Value of i is %d“, i);

i++;

}

while (expression) {

<block statement>

}

int i = 0;

do{

printf(“Value of i is %d“, i);

i++;

}while (i < 5);

do{

<block statement>

}while (expression);

Page 36: Algorithm

31 | P a g e

Pada potongan program di atas, program akan melakukan pengecekan terlebih dahulu

apakah nilai i < 5, jika benar, maka program akan mengulang kedua statement yang

terdapat di dalam while.

4.2. Operator Logika

Jika operator hubungan membandingkan hubungan antara dua buah operand, maka

operator logika digunakan untuk membandingkan logika hasil dari operator-operator

hubungan.

Operator logika ada tiga macam, yaitu:

a) &&: Logika AND (dan)

b) ||: Logika OR (atau)

c) !: Logika NOT (ingkaran)

4.3. Latihan

4.3.1. Latihan 1 – Pemahaman konsep.

1. Apakah perbedaan mendasar antara for dan do…while?

2. Kapan kita menggunakan while, dan kapan kita menggunakan do… while?

3. Bisakah kita memasukan break atau continue?

4.3.2. Latihan 2 – Code it.

Pipi Shop adalah toko yang menjual alat-alat kosmetik seperti bedak, eye

shadow, lip gloss, mascara, dan eye liner. Anda diminta membuat program untuk

mendata data customer dan barang apa saja yang dibeli oleh customer.

Program tersebut memiliki ketentuan sebagai berikut:

Pada awal program dijalankan, program akan meminta inputan nama.

Validasikan panjang nama minimal 1 karakter dan maksimal 20

karakter.

Program akan meminta inputan alamat. Validasikan panjang alamat

minimal 1 karakter, maksimal 50 karakter dan harus mengandung

kata “Jalan”.

Kemudian program akan menampilkan daftar barang yang bisa dipesan oleh

customer.

Page 37: Algorithm

32 | P a g e

Program akan meminta user menginput nama barang. Validasikan user hanya

bisa menginput nama barang yang ada di daftar barang (tidak case

sensitive (huruf besar dan kecil disamakan)).

Program akan meminta user menginput banyak pesanan. Validasikan banyak

pesanan minimal 1 dan maksimal 100.

Program akan meminta user menginput nomor kartu kredit. Validasikan

nomor kartu kredit harus terdiri dari 14 digit.

Program akan menampilkan data – data yang telah diinput oleh user.

Program akan meminta user untuk melanjutkan program atau mengulang

program dengan ketentuan sebagai berikut:

o Validasikan inputan hanya bisa “N” atau “Y”(case sensitive).

o Jika user memilih “N”, maka program akan meminta ulang data customer.

o Jika user menekan “Y”, maka program selesai.

Rancangan Layar Awal Program

Rancangan Layar Program menampilkan data hasil inputan

Rancangan Layar Akhir Program

Page 38: Algorithm

33 | P a g e

Chapter 05

Array

Page 39: Algorithm

34 | P a g e

5.1. Teori Dasar Array

Array adalah suatu tipe data terstruktur yang bertipe data sama dan berjumlah

tetap (berdasarkan apa yang ditentukan) dan diberi suatu nama tertentu (sesuai

variabel).

Elemen-elemen array tersusun secara berurutan. Susunan tersebut membuat

array memiliki alamat yang bersebelahan/berdampingan dalam memori sesuai

dengan besar pemakaian memori tipe data yang digunakan.

Namun, perlu diingat, walaupun elemen-elemennya tersusun secara berurutan, array

tetap dapat diakses secara acak di dalam memori.

Array juga dapat berupa array 1 dimensi, 2 dimensi, bahkan n-dimensi.

Ilustrasi array 1 dimensi

5.2. Deklarasi Array

Contoh:

Contoh diatas berarti anda memesan tempat di memori komputer sebanyak 26

tempat dengan indeks yang dapat digunakan dari index 0 sampai index 25.

5.2.1 Inisialisasi Array 1D

Untuk memasukkan suatu nilai ke dalam sebuah array, dapat dilakukan dengan

beberapa cara, salah satu caranya adalah

Contoh di atas berarti program akan memasukkan angka 2, 1, 3, 7 dan 8 ke dalam

sebuah array dengan nama list.

int list[5] = {2,1,3,7,8};

char nama[26];

data_type array_name[size];

Page 40: Algorithm

35 | P a g e

5.2.2. Initializing Multidimensional Arrays

Untuk membuat array yang multidimensi (contohnya pada penggunaan array dalam

konsep matrix).

Dapat dilakukan inisialisasi dengan cara:

Dalam hal ini jumlah array yang dapat digunakan adalah mulai dari index [0][0]

sampai dengan index [x-1][y-1].

Contoh:

Contoh di atas berarti program akan memasukkan kumpulan angka yang

berjumlah 9 tersebut ke dalam array matrix yang akan menghasilkan:

Matrix [0][0] = 11

Matrix [0][1] = 12

Matrix [0][2] = 13

Matrix [1][0] = 21

Matrix [2][0] = 32

Matrix [2][2] = 33

Dan seterusnya.

Matrix yang dapat digunakan adalah mulai dari index [0][0] sampai dengan

[2][2] yang bila dihitung akan berjumlah 9 buah.

int matrix[3][3] =

{

{11, 12, 13},

{21, 22, 23},

{32, 31, 33},

};

int variabel[x][y] =

{

{1, 2, ..., n},

{1, 2, ..., n},

...

dst

};

Page 41: Algorithm

36 | P a g e

5.3. Pointer dan Array

Pointer adalah suatu variabel yang berisi alamat memori dari suatu variabel lain. Pointer

dilambangkan dengan operator “*” dan biasanya digunakan untuk memanipulasi isi

variabel di dalam memori.

Contoh penggunaannya adalah:

Pada potongan program di atas dapat dilihat bahwa terdapat 3 buah variabel yaitu a, b dan

pointer p. Variabel a bernilai 5, variabel b bernilai 3.

Pada //1 p menerima alamat dari a, dalam hal ini operator “&” digunakan untuk

mengambil alamat dari variabel a, jadi setelah statement //1 dijalankan maka pointer p

akan memiliki alamat dari a.

Untuk mengambil nilai dari alamat yang dipegang oleh pointer p dapat dilakukan dengan

cara seperti statement //2. Dengan memanggil *p maka nilai dari variabel a (alamat

yang dipegang oleh p) akan diambil, dari contoh di atas nilai tersebut diberikan ke

variabel b.

Seperti penggunaan array dalam sebuah variabel, sebuah pointer juga dapat

menggunakan array. Seperti contoh berikut ini:

Dari contoh di atas dapat dilihat bahwa variabel ap adalah sebuah kumpulan variabel

yang dapat menyimpan 10 alamat dari variabel lain.

Index dari pointer tersebut dimulai dari *ap[0] sampai dengan *ap[9].

int *ap[10];

int a = 5;

int b = 3;

int *p;

p = &a; //1

b = *p; //2

Page 42: Algorithm

37 | P a g e

5.4. Latihan

5.3.1. Latihan 1 – Pemahaman konsep.

1. Pada index ke berapa suatu array dimulai? Apakah 1 atau 0?

2. Apakah ada array 3 dimensi? Jika ada, apa fungsinya?

5.3.2. Latihan 2 – Code it.

Anda mempunyai teman yang merupakan seorang mahasiswa jurusan Teknik

Informatika. Anda diminta oleh teman anda untuk membantunya dalam

membuat sebuah aplikasi permainan bernama “XO Table” yang mempunyai

ketentuan sebagai berikut:

Tabel permainan memiliki ukuran 3x3 kotak dimana setiap kotak pada tabel

dapat diisi dengan suatu simbol (”X” atau ”O”).

Untuk menjalankan permainan ini diperlukan 2 orang pemain, dimana salah

satu dari pemain akan menggunakan symbol ”X” dan pemain lainnya akan

menggunakan simbol ”O”.

Pada permainan ini, setiap pemain akan menentukan suatu posisi dalam tabel

yang masih kosong untuk diberi tanda sesuai dengan simbol pemain tersebut.

Pada program ini user akan diminta untuk memasukkan koordinat X dan Y

dari posisi simbol yang akan dimasukkan tersebut dengan ketentuan sebagai

berikut:

o Pertama kali program akan meminta user untuk memasukkan koordinat

X. Validasikan koordinat X yang dimasukkan minimal 1 dan

maksimal 3.

o Kemudian program akan meminta user untuk memasukkan koordinat Y.

Validasikan koordinat Y yang dimasukkan minimal 1 dan maksimal

3.

o Validasikan jika user memasukkan simbol pada tabel permainan dengan

posisi koordinat X dan kordinat Y yang sudah diisi oleh simbol

(baik simbol ”X” maupun simbol ”O”), tampilkan pesan “Posisi

telah diisi..”.

Kedua pemain akan bergantian untuk giliran jalan, dan giliran untuk pertama

kali diberikan pada pemain ”X”.

Untuk memenangkan permainan ini, salah satu pemain harus menyusun

simbol yang sama secara berurutan (sejumlah 3 buah) baik secara

vertikal, horizontal, maupun diagonal.

Page 43: Algorithm

38 | P a g e

Bila semua kotak yang tesedia dalam tabel telah diisi dan tidak ada

pemain yang berhasil membuat simbolnya berurutan, maka

permainan dinyatakan seimbang/seri.

Di akhir program, tampilkan hasil permainan. Jika salah satu pemain menang,

maka tampilkan pesan “Selamat, pemain “<X/O>” menang!!”. Jika

permainan berakhir dengan keadaan seri, tampilkan pesan “Permainan

seri...”

Jika permainan telah selesai maka program akan meminta konfirmasi untuk

melanjutkan permainan atau tidak.

Rancangan Layar Awal

Rancangan Layar Dengan Giliran Pemain X

Page 44: Algorithm

39 | P a g e

Rancangan Layar Dengan Giliran Pemain O

Rancangan Layar Jika Posisi Telah Diisi

Rancangan Layar Jika Permainan Seri

Page 45: Algorithm

40 | P a g e

Rancangan Layar Jika Pemain X Menang

Rancangan Layar Jika Pemain O Menang

Page 46: Algorithm

41 | P a g e

Chapter 06

Function

Page 47: Algorithm

42 | P a g e

6.1. Deklarasi Variabel Lokal

Contoh:

Bila anda menggunakan bahasa C, maka setiap variabel HARUS diletakan dibawah tanda

kurung kurawal ({) (top of a block).

6.2. Ruang Lingkup Variabel Lokal

Variabel lokal hanya berfungsi di dalam blok saja. Jika kita perhatikan pada contoh di

atas, maka variabel tersebut hanya berlaku pada blok int main saja.

6.3. Deklarasi Variabel Global

Contoh:

#include <stdio.h>

char name[25];

int age;

int coba()

{

age = age + 5;

return age;

}

int main(){

return 0;

}

#include <stdio.h>

//<inisialisasi variabel global disini>

int main(){

return 0;

}

int main()

{

char nama[25];

int usia;

}

int main()

{

data_type variable_name;

}

Page 48: Algorithm

43 | P a g e

6.4. Ruang Lingkup Variabel Global

Variabel global ini akan berlaku pada semua fungsi yang ada dalam contoh di atas,

variabel age dapat digunakan dalam fungsi coba dan fungsi utamanya yaitu main.

6.5. Inisialisasi Variabel Global

Data Type Initialiser

int 0

char '\0'

float 0

pointer NULL

6.6. Structure Fungsi

return type: tipe data yang dipakai ketika suatu fungsi mengembalikan nilai, dapat

berupa int, char, float, dan tipe data lain kecuali void karena void

menyatakan bahwa fungsi tersebut tidak mengembalikan nilai.

argument/function paramenter: suatu variabel yang digunakan untuk menerima suatu

nilai yang dikirimkan ke dalam suatu fungsi oleh

fungsi lain.

Contoh:

perlu diingat, untuk void, tidak perlu menggunakan keyword return.

int fungsiJumlah (int a,int b)

{

return a+b;

}

<return type> FunctionName (Argument1, Argument2, Argument3……)

{

Statement1;

Statement2;

Statement3;

}

Page 49: Algorithm

44 | P a g e

atau jika mau tetap dipaksakan tetapi sangat tidak disarankan.

6.7. Latihan

6.7.1. Latihan 1–Pemahaman konsep.

1. Cobalah return pointer.

2. Buatlah fungsi untuk menambahkan, mengurangkan.

3. Dapatkah fungsi mereturn string (array of char)?

6.7.2. Latihan 2 – Code it.

“Fish a fish” adalah sebuah game memancing ikan yang sedang terkenal

dikalangan teman– teman Hadi. Pada saat kuliah, Hadi diberikan tugas membuat

sebuah game berbasiskan console oleh dosen Algorima dan Pemrogramannya.

Karena Hadi sangat menyukai game tersebut, maka dia membuat game “Coepoe

Fish a fish” untuk memenuhi tugas tersebut.

Sebagai temannya yang baik, bantulah Hadi dalam pembuatan program tersebut

dengan ketentuan sebagai berikut:

Pertama kali program dijalankan, program akan meminta user untuk

melakukan registrasi yang meliputi nama serta jenis kelamin.

Validasikan:

o Nama yang diinput minimal 2 karakter dan maksimal 25 karakter.

o User hanya dapat memasukkan huruf “L” untuk memilih laki-laki atau

huruf “P” untuk memilih Perempuan untuk memilih jenis kelaminnya.

void menu ()

{

printf(“Sky SkyDinning”);

printf(“1. Fisherman Calmanary\n”);

printf(“2. Chicken Snow with Almond\n”);

printf(“3. Exit and choose other special menu”\n);

printf(“select any [1..3] : “);

return;

}

void menu ()

{

printf(“Sky SkyDinning”);

printf(“1. Fisherman Calmanary\n”);

printf(“2. Chicken Snow with Almond\n”);

printf(“3. Exit and choose other special menu”\n);

printf(“select any [1..3] : “);

}

Page 50: Algorithm

45 | P a g e

Daftar dari Nama Ikan, Jenis Pemancingan dan Jenis Umpan yang ada dalam

program adalah sebagai berikut:

o 10 nama ikan beserta masing–masing harga ikan dengan ketentuan

sebagai berikut:

o 5 jenis pancingan beserta masing–masing harga pancingan dengan

ketentuan sebagai berikut:

Index Nama Pancingan Harga Pancingan

0 Fishing Pole $ 300

1 Advanced Fishing Rod $ 600

2 Advanced Fishing Pole $ 900

3 Ultimate Fishing Rod $ 1200

4 Ultimate Fishing Pole $ 1500

o Jenis umpan beserta harga umpan, yaitu:

Index Nama Umpan Harga Umpan

0 Green Big Worm $ 5

o Jenis pancingan awal yang dimiliki oleh pemain adalah Fishing Rod.

o Level pemain = 1

o Uang pemain = 1000

o Total umpan = 10

Index Nama Ikan Harga Ikan

0 Guppy Blue $30

1 Apple Snail $40

2 Guppy Yellow $50

3 Snake Snail $60

4 Flag Fish $70

5 Clown Fish $80

6 Tuna $90

7 Tiger Shark $100

8 White Shark $110

9 Whale $120

Page 51: Algorithm

46 | P a g e

Program mempunyai 5 menu utama:

o 1. Lihat Profile Pemain

o 2. Pancing Ikan

o 3. Jual Ikan

o 4. Belanja / Upgrade Perlengkapan Memancing

o 5. Keluar

Jika user memilih menu Lihat Profile Pemain (tekan tombol „1‟), maka

program akan menampilkan level, uang, nama, jenis kelamin, jenis

pancingan, serta total umpan yang dimiliki dan telah ditentukan oleh program

sebelumnya.

o Jika pada saat registrasi user memasukkan ”L”, maka tampilkan Jenis

Kelamin adalah ”Laki-Laki”.

o Jika pada saat regisrasi user memasukkan ”P”, maka tampilkan Jenis

Kelamin adalah ”Perempuan”.

Jika user memilih menu Pancing Ikan (tekan tombol „2‟), maka:

o Program akan melakukan random angka dari 0 sampai 9. Hasil random

tersebut akan menentukan index ikan mana yang terpancing.

o Tampung dan hitung jumlah ikan yang tertangkap serta kurangi

total umpan pemain.

o Jika total umpan sama dengan 0, maka pemain tidak bisa memilih

menu Pancing Ikan sampai dengan total umpan terisi kembali.

Jika user memilih menu Jual Ikan (tekan tombol „3‟), maka:

o Program akan menampilkan jumlah ikan yang telah berhasil ditangkap

oleh pemain.

o Apabila user mengetikkan kata “JUAL” (tidak case sensitive), maka

program akan menghitung total jual ikan dan menambahkannya dengan

uang pemain dengan ketentuan sebagai berikut:

Total jual ikan = jual ikan * harga ikan

o Apabila user memasukkan kata “EXIT” (tidak case sensitive), maka

program akan kembali ke menu utama.

Page 52: Algorithm

47 | P a g e

Jika user memilih menu Belanja / Upgrade Perlengkapan Memancing

(tekan tombol „4‟), maka program akan menampilkan 3 submenu antara lain:

o A. Upgrade Pancingan

o B. Beli Umpan

o C. Kembali Ke Menu Utama

o Jika user memilih submenu Upgrade Pancingan (tekan tombol „A‟),

maka:

Tampilkan 5 jenis pancingan beserta masing – masing harga

pancingan yang sudah ditentukan sebelumnya.

Minta user untuk memasukkan nomer pancingan yang diinginkan.

Validasikan agar nomer pancingan yang bisa diinput minimal 1 dan

maksimal 5.

Validasikan juga pemain hanya bisa mengupgrade pancingannya

apabila uang pemain lebih besar daripada harga pancingan.

Jika kondisi tersebut telah terpenuhi, kurangi uang pemain sesuai

dengan harga pancingan.

Kemudian ubah level pemain sesuai dengan nomer pancingan yang

telah dipilih. Berilah keterangan pada setiap perubahan level.

“Ket : Sukses Meningkatkan Level.,” akan muncul jika nomer

pancingan yang dibeli lebih besar dari level pemain.

“Ket : Level Tidak Berubah.,” akan muncul jika nomer pancingan

yang dibeli sama dengan level pemain.

“Ket : Level Menurun.,” akan muncul jika nomer pancingan

yang dibeli lebih kecil dari level pemain.

o Jika user memilih submenu Beli Umpan (tekan tombol „B‟), maka:

Tampilkan jenis umpan beserta harga umpan yang telah ditentukan

sebelumnya.

Kemudian minta user untuk memasukkan jumlah umpan yang ingin

dibeli. Validasikan inputan minimal 0 dan maksimal sama dengan

uang pemain / 5.

Total umpan akan bertambah sesuai dengan banyaknya jumlah umpan

yang dibeli.

Uang pemain berkurang sebanyak:

Uang Pemain = Uang – Jumlah Umpan * Harga Umpan

Page 53: Algorithm

48 | P a g e

o Jika user memilih submenu Kembali Ke Menu Utama (tekan tombol „C‟),

program akan kembali ke menu sebelumnya (menu utama).

Jika user memilih menu Keluar (tekan tombol „5‟), maka program selesai.

Rancangan Layar Pertama Kali Program Dijalankan

Rancangan Layar Menu Utama Program

Rancangan Layar Menu Lihat Profile Pemain(Tekan Tombol „1‟)

Page 54: Algorithm

49 | P a g e

Rancangan Layar Menu Pancing Ikan (Tekan Tombol „2‟)

Rancangan Layar Jika Total Umpan Sama Dengan 0

Rancangan Layar Menu Jual Ikan (Tekan Tombol „3‟)

Page 55: Algorithm

50 | P a g e

Rancangan Layar Jika User Mengetikkan Kata “JUAL”

Rancangan Layar Menu Belanja/Upgrade Perlengkapan Memancing

(Tekan Tombol „4‟)

Rancangan Layar Submenu Upgrade Pancingan (Tekan Tombol „A‟)

Page 56: Algorithm

51 | P a g e

Rancangan Layar Submenu Upgrade Pancingan (Lanjutan)

Rancangan Layar Submenu Beli Umpan (Tekan Tombol „B‟)

Page 57: Algorithm

52 | P a g e

Chapter 07

Build-In Function

Page 58: Algorithm

53 | P a g e

7.1. Build-in Function Basic

C language memiliki banyak sekali build-in function. Tetapi, beberapa yang akan

dijelaskan di bawah ini adalah fungsi-fungsi yang wajib dimengerti. Terutama fungsi

yang di bold.

abort() clock() isalnum() log() sinh()

abs() cosh() isalpha() memcmp() sqrt()

acos() ctime() isdigit() modf() srand()

asin() div() isgraph() pow() strcat()

atan() exit() ispunct() putchar() strcmp()

atexit() fabs() isspace() putenv() strerror()

atof() floor() isupper() puts() time()

atoi() fmod() kbhit() rand() tolower()

atol() getchar() log10() remove() toupper()

ceil() getenv() log2() rename()

atoi () : ascii to integer / mengubah ascii menjadi integer

isdigit() : mengecek apakah merupakan digit atau bukan. Jika iya return true.

tolower() : mengubah karakter case huruf menjadi kecil. Contoh „A‟ -> „a‟.

toupper() : mengubah karakter case huruf menjadi besar. Contoh „a‟ -> „A‟.

7.2. Build-in function Example

Untuk fungsi build-in random

//1: untuk membuat hasil random tidak berulang, jika srand(time(NULL))

dihilangkan, maka random akan menghasilkan angka berulang.

Cobalah anda hilangkan dan recompile.

Rumus random yang perlu diingat:

int angka = rand() % (max-min + 1) + min

Jika random 1-10 maka

#include <time.h>

#include <stdlib.h>

#include <stdio.h>

int main(){

srand(time(NULL)); //1

int number = rand()%10+1;

printf(“Randomed Number : %d\n”,number);

return 0;

}

Page 59: Algorithm

54 | P a g e

int angka = rand()%(10-1 +1) + 1

jadi: angka = rand() % 10 + 1

7.3. Latihan

7.3.1. Latihan 1 – Pemahaman konsep.

Pakailah fungsi toupper dan tolower untuk membuat program yang menghasilkan

output sebagai berikut:

Program meminta 3 kali inputan (gunakan looping)

input:

1. ABCDEFG //inputan ke-1.

2. bCd // inputan ke-2.

3. efgHIJ // inputan ke-3.

output:

1. AbCdEfG

2. BcD

3. EfGhIj

1. Apa fungsi dari build-in function (strcmp, strcpy) ?

2. Sebutkan 10 fungsi build-in yang pernah kalian pakai?

3. Apakah printf itu build-in function?

4. Apa itu atoi dan apa itu itoa?

7.3.2. Latihan 2 – Code it.

“String Manipulator” adalah sebuah program yang dapat memanipulasi string

sesuai dengan kemauan user. User dapat menggunakan program ini untuk

belajar mengenai fungsi dalam library “String.h”.

Berikut adalah deskripsi dari program tersebut:

Pada awal program, user akan diminta untuk menginput sebuah string.

Validasikan panjang dari string tersebut harus antara 5 dan 30 karakter.

Program terdiri dari 7 menu:

1. Input new string

2. Reverse the string

3. Uppercase the string

Page 60: Algorithm

55 | P a g e

4. Check alphabet in the string

5. Checking word in the string

6. Split the string

7. Exit

Jika user memilih menu ”Input new string” (menu ‟1‟), maka Minta user

untuk menginput string baru. Validasikan panjang dari string tersebut

antara 5 dan 30 karakter.

• Jika user memilih menu Reverse the string (menu ‟2‟), maka tampilkan

string dengan urutan yang dibalik.

Jika user memilih menu Uppercase the string(menu ‟3‟), maka tampilkan

string dengan huruf kapital

Jika user memilih menu ”Check alphabet in the string” (menu ‟4‟), maka

program akan mencari huruf dalam string tersebut dan akan menampilkan

jumlah huruf yang terdapat dalam string tersebut.

Jika user memilih menu ”Checking word in the string” (menu ‟5‟), maka:

o Minta user untuk menginput kata yang mau dicari.

o Jika kata yang dicari ditemukan, maka tampilkan pesan ”[word] is

found”.

o Jika kata yang dicari tidak ditemukan, maka tampilkan pesan ”[word] is

not found”.

Jika user memilih menu Split the string (menu ‟6‟), maka program akan

menampilkan kata yang ada dalam kalimat tersebut, dipisahkan dengan

spasi.

Jika user memilih menu Exit (menu ‟7‟), maka program akan berakhir.

Rancangan Layar Awal Program

Page 61: Algorithm

56 | P a g e

Rancangan Layar Main Menu

Rancangan Layar menu Input new String (Menu „1‟)

Rancangan Layar memilih menu Input new String (Lanjutan)

Rancangan Layar menu Reverse the String (Menu „2‟)

Page 62: Algorithm

57 | P a g e

Rancangan Layar menu Uppercase the String (Menu „3‟)

Rancangan Layar menu Check alphabet in the string (Menu „4‟)

Rancangan Layar menu Checking word in the string (Menu „5‟)

Rancangan Layar menu Checking word in the string (Lanjutan)

Rancangan Layar menu Split the String (Menu „6‟)

Page 63: Algorithm

58 | P a g e

Chapter 08

Rekursif

Page 64: Algorithm

59 | P a g e

8.1. Definisi Rekursif

Fungsi rekursif adalah sebuah fungsi yang memanggil dirinya sendiri, dalam hal ini

suatu fungsi memanggil dirinya sendiri dengan memanggil nama dari fungsi

tersebut. Rekursif akan berfungsi dengan sangat baik pada program yang bersifat

“Devide and Conquer”.

8.2. Contoh fungsi rekursif

Perlu diperhatikan!!!!

Fungsi rekursif harus memiliki setidaknya 1 kondisi yang digunakan untuk keluar dari

proses pengulangan pemanggilan fungsi tersebut (biasanya disebut dengan base-

case).

Jika tidak fungsi ini akan memanggil dirinya sendiri sampai terjadi runtime stack

overflows.

Contoh di atas setara dengan code dibawah ini dengan iteration (perulangan biasa)

int factorial(unsigned int number){

int f = 1;

while(number < 0)

f *= number--;

return f;

}

# include<stdio.h>

int factorial(unsigned int number)

{

if (number <= 1) return 1;

return number * factorial(number - 1);

}

int main()

{

int x = 5;

printf("Factorial of %d is %d",x,factorial(x));

return 0;

}

Page 65: Algorithm

60 | P a g e

8.3. Latihan

8.3.1. Latihan 1–Pemahaman konsep.

1. Apa arti devide and conquer, carilah definisinya!

2. Fungsi rekursif biasanya dipakai untuk menambah readability dari

pemahaman program. Apa arti readability disini?

3. Carilah contoh kasus yang hanya bisa diselesaikan hanya dengan rekursif.

8.3.2. Latihan 2 – Code it.

Pada mata kuliah Kalkulus I, William mempelajari tentang polinom (a+b)n.

Polinom (a+b)n adalah sebuah deret matematika. Contoh, (a+b)2 akan

menghasilkan (a2 + 2ab + b2). Untuk mempermudah pembelajaran tentang

polinom tersebut, ia membuat sebuah program rekursif. Program tersebut dibuat

dengan ketentuan sebagai berikut:

Pertama kali program dijalankan, minta user untuk menginput pangkat

polinom sebagai pangkat. Validasikan pangkat yang diinput minimal 1 dan

maksimal 9.

Kemudian, minta user untuk menginput bilangan a. Validasikan bilangan a

yang diinput minimal 0 dan maksimal 9.

Setelah itu, minta user untuk menginput bilangan b. Validasikan bilangan b

yang diinput minimal 0 dan maksimal 9.

Hitung dan tampilkan deret hasil perhitungan (a+b)n sesuai inputan dari user.

Contoh:

(a+b)5 = 1(a5*b0) + 5(a4*b1) + 10(a3*b2) + 10(a2*b3) + 5(a1*b4) + 1(a0*b5)

Konstanta didapatkan dari segitiga pascal.

Contoh:

1

1 1

1 2 1 -> (a+b)2 = a2 + 2ab + b2

1 3 3 1 -> (a+b)3 = a3 + 3a2b + 3ab2 + b3

1 4 6 4 1 -> (a+b)4 = a4 + 4a3b + 6a2b2 + 4ab3 + b4

Hitung dan tampilkan hasil perhitungan dari masing-masing suku

bilangan dalam deret tersebut.

Page 66: Algorithm

61 | P a g e

Hitung dan tampilkan hasil penjumlahan dari setiap hasil perhitungan suku

bilangan.

Program akan menanyakan ”Ingin mengulang [y/t] ?”, tekan ‟Y‟ atau ‟y‟

untuk untuk mengulang program dari awal dan tekan „T‟ atau „t‟ untuk keluar

dari program.

Rancangan Layar Awal Program Meminta Inputan Dari User

Rancangan Layar Akhir Program

Page 67: Algorithm

62 | P a g e

Chapter 09

Operasi File

Page 68: Algorithm

63 | P a g e

9.1. Teori dasar file.

Dengan menggunakan file operation, Anda dapat mengakses file. File yang diakses

adalah file berjenis flat file (berformat text).

Contoh:

memberlist.txt

9.2. Contoh deklarasi file.

9.3. Membuka file

9.4. Mode pada file operation

r - open for reading

w - open for writing (file need not exist)

a - open for appending (file need not exist)

r+ - open for reading and writing, start at beginning

w+ - open for reading and writing (overwrite file)

a+ - open for reading and writing (append if file exists)

Anda juga dapat membuka file secara binary, gunakan “r+b” atau “rb+”

#include <stdio.h>

int main(){

FILE *in;

in = fopen(“baca.txt”, “r”); //r=baca, w=tulis, a=tambah

}

FILE *fopen(const char *filename, const char *mode);

#include <stdio.h>

int main()

{

FILE *in;

}

Page 69: Algorithm

64 | P a g e

9.5. Menutup file

Isilah file baca.txt dengan:

Bina

Sky

Network

World

International

#include <stdio.h> int main(){ FILE *in, *out; //in untuk input, out untuk output char temp[25]; in = fopen(“baca.txt”, “r”); //r=baca, w=tulis, a=tambah if(!in) //cek apakah open file berhasil { perror(“File not found”); //cetak error. getchar(); return 1; //return error condition; } while(!feof(in)){ //cek apakah sudah mencapai akhir file fscanf(in,“%s,”,temp); printf(“Hasil baca : %s\n”,temp); } fclose(in); out = fopen(“coba.txt”,”w”); //1 fprintf(out,”Code selesai tercetak”); //2 fclose(out); //3 }

#include <stdio.h>

int main()

{

FILE *in;

in = fopen(“baca.txt”, “r”); //r=baca, w=tulis, a=tambah

fclose(in);

}

int fclose(FILE *a_file);

Page 70: Algorithm

65 | P a g e

9.6. Latihan

9.6.1. Latihan 1 – Pemahaman konsep.

1. Carilah kesimpulan dari code sebelumnya. (code pada contoh secara

keseluruhan).

2. Apa fungsi code //1?

3. Apa fungsi code //2?

4. Apa fungsi code //3?

5. Apakah fungsi fclose boleh dihilangkan?

9.6.2. Latihan 2 – Code it.

Anda sebagai seorang programmer dari suatu software house diminta oleh

seorang client untuk membuat sebuah program untuk mencatar list score rata-

rata dari sebuah game DotA dengan ketentuan seperti berikut:

Pertama kali program dijalankan, program akan membaca isi dari file

soal10.txt yang akan digunakan untuk mencatat nama pemain, skor rata-

rata, dan banyak bermain.

Program terdiri dari 5 menu yaitu:

o Lihat record

o Tambah record pemain

o Tambah pemain

o Hapus pemain

o Simpan record dan keluar

Jika user memilih menu Lihat record (tekan tombol „1‟), maka tampilkan

nama pemain, average score, dan banyak bermain yang didapat dari file

soal10.txt.

Jika user memilih menu Tambah record Pemain (tekan tombol „2‟), maka:

o Minta inputan nama pemain. Validasikan panjang karakter nama pemain

minimal 1 dan maksimal 10 karakter.

o Minta inputan nilai pemain. Validasikan nilai tersebut minimal 0 dan

maksimal 100.

o Jika nama pemain tidak ada dalam list pemain, maka tampilkan pesan

“Nama <nama pemain> tidak ditemukan!”

o Jika nama pemain ada dalam list pemain, maka average score dari

pemain tersebut akan berubah dengan rumus:

Page 71: Algorithm

66 | P a g e

Average score baru =

((average score lama x banyak bermain) + nilai pemain ) / (banyak bermain+1)

Jika user memilih menu Tambah Pemain (tekan tombol „3‟), maka:

o Minta inputan nama pemain yang mau ditambah. Validasikan panjang

karakter minimal 1 dan maksimal 10.

o Daftar nama pemain akan bertambah dengan nama pemain yang baru

dengan average score dan banyak bermain 0. Kemudian tampilkan pesan

“Berhasil memasukkan pemain baru..”

Jika user memilih menu Hapus pemain (tekan tombol „4‟), maka:

o Minta inputan nama pemain yang ingin dihapus. Validasikan panjang

karakter nama tersebut minimal 1 dan maksimal 10.

o Jika nama pemain yang ingin dihapus tidak ada dalam daftar pemain,

maka tampilkan pesan ”Nama <nama pemain> tidak ditemukan!”

o Jika nama pemain yang ingin dihapus ada dalam daftar pemain, maka

hapuslah nama pemain tersebut dari daftar pemain beserta data-datanya

dan tampilkan pesan ”Nama <nama pemain> sudah dihapus..”

Jika user memilih menu Simpan record dan keluar (tekan tombol „5‟),

maka daftar nama pemain akan disimpan dalam file soal10.txt dan program

selesai.

Rancangan Layar Menu Utama

Page 72: Algorithm

67 | P a g e

Rancangan Layar Menu Lihat Record

Rancangan Layar Menu Tambah Record Pemain

Rancangan Layar Menu Tambah Pemain

Page 73: Algorithm

68 | P a g e

Rancangan Layar Menu Hapus Pemain

Page 74: Algorithm

69 | P a g e

Chapter 10

Sorting

Page 75: Algorithm

70 | P a g e

10.1. Teori dasar Bubble Sort

Bubble sort adalah salah satu teknik sorting yang sederhana dalam algoritma.

Sorting menggunakan bubble sort menggunakan perbandingan di antara dua data.

Untuk lebih jelasnya perhatikan simulasi di bawah ini, simulasi sorting dilakukan

secara ascending order (mulai dari nilai terkecil ke nilai terbesar):

Siapkan variabel bernama

“temp” Dan kumpulan data

yang ingin di sorting

dimasukkan ke dalam

sebuah variabel berarray sejumlah data yang tersedia

Bandingkan dua data yang

terdapat dalam variabel

berarray tersebut di mulai

dari index array paling belakang

Cek apakah index terakhir

lebih besar atau lebih kecil

dari index kedua terakhir,

jika lebih besar maka tukar

kedua data, jika tidak

diabaikan, dalam kasus

gambar di samping, dua nilai

diabaikan (tidak ditukar)

Page 76: Algorithm

71 | P a g e

Lanjutkan dengan

membandingkan dua nilai selanjutnya.

Karena nilai dari index di

depannya lebih besar, maka

kedua nilai ditukar

Nilai 10 dari index [2]

disimpan terlebih dahulu ke

variabel “temp” agar nilai

tidak hilang pada saat penukaran nilai

Nilai 30 dipindahkan ke

index [2].

Sehingga variabel dengan

index [2] bernilai 30 sekarang.

Page 77: Algorithm

72 | P a g e

Nilai 10 yang sudah

disimpan di temp, kemudian

dipindahkan dalam variabel

dengan index [1], dalam hal

ini penukaran nilai sudah selesai

Cek kembali urutan angka,

apakah sudah berurutan

secara ascending, bila

belum, langkah kembali diulangi dari index terakhir

Karena nilai index di depan

index [1] lebih besar, maka

kedua nilai ditukar dengan

langkah yang sama seperti

sebelumnya

Lanjutkan dengan

membandingkan nilai 2 index selanjutnya

Page 78: Algorithm

73 | P a g e

10.2. Bubble sort Code

Swap code (fungsi tukar)

Fungsi inilah yang dipakai untuk pertukaran dua data.

Final Code:

#include <stdio.h>

#include <stdlib.h>

const int MAX_ELEMENTS = 10;

void swap(int *x,int *y){

int temp;

temp = *x;

*x = *y;

*y = temp;

}

void bublesort(int list[], int n){

int i,j;

for(i=0;i<(n-1);i++)

for(j=0;j<(n-(i+1));j++)

if(list[j] > list[j+1])

swap(&list[j],&list[j+1]);

}

void printlist(int list[],int n){

int i;

for(i=0;i<n;i++)

printf("%d\t",list[i]);

}

void swap(int *x,int *y)

{

int temp;

temp = *x;

*x = *y;

*y = temp;

}

void bublesort(int list[], int n)

{

int i,j;

for(i=0;i<(n-1);i++)

for(j=0;j<(n-(i+1));j++)

if(list[j] > list[j+1]) //dibandingkan

swap(&list[j],&list[j+1]);

}

Page 79: Algorithm

74 | P a g e

10.3. Latihan

10.3.1. Latihan 1–Pemahaman konsep.

1. Carilah contoh coding sorting yang lain, merge sort, quick sort, bubble

sort with flag!

2. Mana yang lebih cepat merge sort, bubble sort, atau quick sort?

3. Apa fungsi dari sorting?

10.3.2. Latihan 2 – Code it.

XXII membuka sebuah cabamg baru bernama “Layar Tancep suka-suka” dan

anda ditunjuk sebagai kepala IT untuk usaha tersebut. Tugas pertama anda

sebagai kepala bidang IT adalah untuk membuat sebuah aplikasi

menggunakan bantuan file dengan ketentuan sebagai berikut:

Pertama kali program dijalankan, program akan membaca file soal11.txt.

Pada jadwal tersebut terdapat mengenai jadwal film yang akan diputar,

waktu pemutaran, dan jumlah kursi yang tersisa.

Program memiliki 6 pilihan, yaitu:

o 1. List film

o 2. Sort ascending berdasarkan jam tayang

o 3. Sort descending berdasarkan nama film

o 4. Tambah daftar film

o 5. Pesan tiket

o 6. Keluar

int main(){

int list[MAX_ELEMENTS];

int i = 0;

// generate random numbers and fill them to the list

for(i = 0; i < MAX_ELEMENTS; i++ ){

list[i] = rand();

}

printf("The list before sorting is:\n");

printlist(list,MAX_ELEMENTS);

// sort the list

bublesort(list,MAX_ELEMENTS);

// print the result

printf("The list after sorting using bubble sorting

algorithm:\n");

printlist(list,MAX_ELEMENTS);

return 0;

}

Page 80: Algorithm

75 | P a g e

Jika user memilih menu List film (tekan tombol „1‟), maka program akan

menampilkan list layar tancep dengan format nomor, nama film, jam

tayang, dan jumlah kursi yang kosong yang masing-masing didapatkan

dari file soal11.txt

Jika user memilih menu Sort ascending berdasarkan jam tayang

(tekan tombol „2‟), maka list film akan disorting secara ascending

berdasarkan jam tayang. Kemudian tampilkan pesan “Silahkan melihat

List Film di Menu „1‟ ”

Jika user memilih menu Sort descending berdasarkan nama film

(tekan tombol „3‟), maka list film akan disorting secara descending

berdasarkan nama film. Kemudian tampilkan pesan “Silahkan melihat List

Film di Menu „1‟ ”.

Jika user memilih menu Tambah daftar film (tekan tombol „4‟), maka:

o Minta inputan nama film yang baru. Validasikan panjang karakter

nama film tersebut minimal 1 dan maksimal 10 karakter.

o Minta inputan jam tayang. Validasikan jam tersebut minimal 0 dan

maksimal 23.

o Minta inputan menit tayang. Validasikan menit tersebut minimal 0

dan maksimal 59.

o Kemudian tampilkan pesan “Berhasil menambah film baru^^”

Jika user memilih menu Pesan Tiket, maka:

o Minta inputan nama film yang mau dipesan. Validasikan panjang

inputan minimal 1 dan maksimal 10 karakter.

o Jika nama film yang mau dipesan tidak ada dalam list film, maka

tampilkan pesan “Film tidak ditayangkan di Layar Tancep”

o Jika nama film yang mau dipesan ada dalam list film, maka minta

inputan jumlah tiket yang mau dipesan. Validasikan jumlah tiket

minimal 1 dan maksimal jumlah kursi kosong film tersebut.

o Kemudian tampilkan pesan “Pemesanan berhasil^^”

Jika user memilih menu Keluar (tekan tombol „6‟), maka program selesai.

Page 81: Algorithm

76 | P a g e

Rancangan Layar Awal

Rancangan Layar Menu List Film

Rancangan Layar Menu Sort Ascending Berdasarkan Jam Tayang

Page 82: Algorithm

77 | P a g e

Rancangan Layar Menu Sort Descending Berdasarkan Nama Film

Rancangan Layar Jika User Memilih Menu Tambah Daftar Film

Rancangan Layar Jika User Memilih Menu Pesan Tiket

Page 83: Algorithm

78 | P a g e

Chapter 11

String

Page 84: Algorithm

79 | P a g e

11.1. Teori dasar string.h

Pada header “string.h”, terdapat banyak sekali fungsi-fungsi build-in yang berguna.

Berikut ini akan dibahas fungsi-fungsi header “string.h” yang dapat digunakan dan

akan sering Anda jumpai untuk menyelesaikan masalah-masalah ujian Anda nanti.

11.2. Penjelasan detail build-in function string.h

11.2.1. Fungsi strstr

Digunakan untuk mengambil bagian dari suatu String.

11.2.2. Fungsi strtok

Digunakan untuk memisahkan String berdasarkan karakter tertentu.

#include <string.h>

#include <stdio.h>

int main()

{

char input[16] = "abc,defghi";

char *ptr;

ptr= strtok(input, ","); //indeks yang ke3 <karakter „,‟>

diganti NULL

if (ptr) // nilai selain 0 atau NULL adalah TRUE

printf("%s\n", ptr);

ptr = strtok(NULL, ",");

if (ptr)

printf("%s\n", ptr);

getchar ();

return 0;

}

#include <stdio.h>

#include <string.h>

int main ()

{

char *str1 = “Algorithm and Programming”;

char *str2 = “Algo”,

char *ptr;

ptr = strstr (str1, str2);

printf (“Result = %s\n”, ptr);

getchar ();

return 0;

}

Page 85: Algorithm

80 | P a g e

11.2.3. Fungsi strrev

Digunakan untuk membalikkan string.

Contoh:

11.2.4. Fungsi strcmp / strcmpi

Membandingkan 2 string:

strcmp: tanpa membedakan huruf besar kecil.

strcmpi: membedakan huruf besar huruf kecil.

Fungsi strcmpi (i = ignore case).

Contoh:

Nilai yang dikembalikan ada 3:

( < 0 ), nilai ascii string1 lebih kecil dari nilai ascii string2

( == 0 ), kedua string sama

( > 0 ), nilai ascii string1 lebih besar dari nilai ascii string2

11.2.5. Fungsi strlen

Menghitung panjang suatu string.

Contoh:

Nilai yang dikembalikan adalah jumlah karakter string tersebut.

strlen (string);

strcmp (string1, string2);

#include <string.h>

#include <stdio.h>

int main()

{

char *word = "maya";

printf("Before strrev(): %s\n", word);

strrev(word);

printf("After strrev() : %s\n", word);

getchar ();

return 0;

}

Page 86: Algorithm

81 | P a g e

11.2.6. Fungsi tolower

Digunakan untuk menjadikan huruf besar menjadi huruf kecil

tambahkan include <ctype.h>

Contoh:

11.2.7. Fungsi toupper

Digunakan untuk mengubah huruf kecil menjadi huruf besar

Cara kerjanya sama dengan tolower.

11.2.8. Fungsi strcpy

Digunakan untuk mengcopy string ke dalam string lain.

Contoh:

Mengcopy string1 ke string2

strcpy (string2, string1);

#include <string.h>

#include <stdio.h>

#include <ctype.h>

int main()

{

int length, i;

char *string = "ThIs IS A StRiNg";

length = strlen(string);

for (i=0; i<length; i++) //harus per index

string[i] = tolower(string[i]); //yang huruf

kecil, tetap

printf("%s\n",string);

getchar ();

return 0;

}

Page 87: Algorithm

82 | P a g e

11.3. Latihan

11.3.1. Latihan 1 – Pemahaman konsep.

1. Carilah dan pahamilah fungsi-fungsi lain di string.h

2. Bagaimana cara memakai strlwr dan strupr?

3. Apa fungsi dari strlwr, dan strupr?

11.3.2. Latihan 2 – Code it.

Buatlah sebuah program yang digunakan untuk mengubah sebuah string

dengan menggunakan fungsi dalam library “string.h”. Berikut adalah deskripsi

dari program tersebut:

Pada awal program, program akan menampilkan string yang ada

Program terdiri dari 6 menu:

o 1. Input the String

o 2. Length of the String

o 3. Reverse the String

o 4. Uppercase the String

o 5. Lowercase the String

o 6. Exit

Jika user memilih menu “Input the String” (menu „1‟), maka:

o Minta user untuk menginput string baru. Validasikan panjang dari

string tersebut adalah antara 5 dan 50 karakter.

Jika user memilih menu “Length of the String” (menu „2‟), maka:

o Validasikan apakah string sudah dimasukkan atau belum. Jika string

belum dimasukkan, maka tampilkan pesan “String are not inputed

yet...”.

o Jika string sudah dimasukkan, maka tampilkan panjang dari string

tersebut.

Jika user memilih menu “Reverse the String” (menu „3‟), then:

o Validasikan apakah string sudah dimasukkan atau belum. Jika string

belum dimasukkan, maka tampilkan pesan “String are not inputed

yet...”.

o Jika string sudah dimasukkan, maka balik urutan string tersebut dan

tampilkan ke layar.

Jika user memilih menu “Uppercase the String” (menu „4‟), then:

Page 88: Algorithm

83 | P a g e

o Validasikan apakah string sudah dimasukkan atau belum. Jika string

belum dimasukkan, maka tampilkan pesan “String are not inputed

yet...”.

o Jika string sudah dimasukkan, maka ubah string tersebut menjadi

huruf kapital dan tampilkan ke layar.

Jika user memilih menu “Lowercase the String” (menu „5‟), then:

o Validasikan apakah string sudah dimasukkan atau belum. Jika string

belum dimasukkan, maka tampilkan pesan “String are not inputed

yet...”.

o Jika string sudah dimasukkan, maka ubah string tersebut menjadi

huruf kecil dan tampilkan ke layar.

Jika user memilih menu “Exit” (menu „6‟), then program will ends.

Rancangan Layar Main Menu

Rancangan Layar Jika User Memilih Menu Input the String Menu

(Menu „1‟)

Rancangan Layar Jika User Memilih Menu Length of the String (Menu „2‟)

Page 89: Algorithm

84 | P a g e

Rancangan Layar Jika User Memilih Menu Reverse the String (Menu „3‟)

Rancangan Layar Jika User Memilih Menu Uppercase the String

(Menu „4‟)

Rancangan Layar Jika User Memilih Menu Lowercase the String

(Menu „5‟)