Вы находитесь на странице: 1из 89

Algorithm and Programming

Hands on Lab

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

i|Page 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, email 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.

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

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: DoWhile, 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

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

1|Page

Chapter 01 IDE dan Instruksi I/O

2|Page

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

3|Page

1.4.

Tipe data No 1. 2. 3. 4. Tipe Data Char Int Float Double Ukuran 1 byte 2 byte 4 byte 8 byte Range (Jangkauan) -128 s/d 127 -32768 s/d 32767 - 3.4E-38 s/d 3.4E+38 - 1.7E-308 s/d 1.7E+308 Format
%c %d %f %lf

Keterangan Karakter/string Integer/bilangan bulat Float/bilangan pecahan Pecahan presisi ganda

Contoh deklarasinya:
char NIM[11]; int age;

Contoh penggunaannya:
scanf(%s,NIM); scanf(%d,&age);

Note : Untuk pemakaian sintaks scanf, apabila data yang diinput adalah array of character / string, maka tanda & dapat dihilangkan

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; }

4|Page %x %f %lf %e %c %s %d %ld %u

Hexadecimal integer Float (bilangan pecahan) Double float Float tipe exponent menggunakan e Karakter String Bilangan bulat (integer) Long integer Unsigned integer

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);

b. gets: untuk meminta inputan berupa kata atau kalimat sampai akhir line \n (menekan tombol enter).
#include<stdio.h> int main(){ char name[25]; char addr[50]; printf(Name : );gets(name); printf(Addr : );gets(addr); printf(\n); printf(Data youve inputed : \n); printf(Name : %s \n,name); printf(Addr : %s \n,addr); return 0; }

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(Youve inputed this grade = %c \n,grade); }

5|Page

1.5.2. Output a. printf: digunakan untuk menampilkan suatu keluaran pada konsol (layar).
#include <stdio.h> int main(){ int value=69; printf(I love C language.. =) \n); printf(Value = %d \n,value); getchar(); return 0; }

Berikut beberapa variasi format untuk menampilkan string:


%s %Ns %-Ns %N.Ms

: menampilkan seluruh karakter pada string. : menampilkan semua karakter rata kanan dengan lebar N posisi. : menampilkan semua karakter rata kiri dengan lebar N posisi. : 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 \t \f \v \n \r \b \' \\ \0 \a \c \" (Horizontal) Tab Form Feed Vertical Tab New Line Feed (LF) Carriage Return (CR) Backspace Single quote (grave accent) Back slash (solidus) null (C string terminator) Alert (beep sound) or New line break for CSS2 content continuation (UNIX) Double quote

Description

Unicode \u0009 \u000c \u000B \u000a \u000d \u0008 \u0027 \u005c \u0000 \u0007 Tidak ada \u0022

6|Page

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


#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; }

);

c. puts: menampilkan nilai string dengan disertai line feed atau escape sequence ganti baris (\n).
#include <stdio.h> int main() { puts(I love C language.. =)); puts(Lets study C language ); return 0; }

Pahami definisi algoritma, jika perlu carilah sumber-sumber di internet untuk mendukung pengetahuan Anda.

7|Page 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

8|Page 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; }

9|Page

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!! getchar(); return 0; } %c %c Algorithm !!!",1,3);

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 }

10 | P a g e

Chapter 02 Operasi Aritmatika

11 | P a g e 2.1 Operasi-operasi aritmatika Dalam bahasa C, terdapat beberapa macam operasi aritmatika, contohnya adalah:

Simbol + * / % ++ --

Fungsi Penjumlahan Pengurangan Perkalian Pembagian Modul us Increment Decrement day + 1

Contoh

numOfCake 3 hour * 60 minute / 60 Number % 2 i++ atau ++i 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.

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;

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; }

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; }

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; }

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; }

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; 4. Apakah a = a/a; sama hasilnya dengan menggunakan a += 2. 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.

18 | P a g e 2.2.3. Latihan 3 Try it Yourself Apakah code ini benar?

int a = 6; int b = 7; int c = a +++ b;

Berapakah nilai a, b, dan c? Dan mengapa? References: http://www.cppreference.com/wiki/operator_precedence

19 | P a g e

Chapter 03 Struktur Kendali Pemilihan

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.
if (expression) <statement>

Jika digunakan dengan lebih dari 1 statement yang harus dijalankan ketika kondisi bernilai benar
if (expression) { <block of statements> }

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>

21 | P a g e

Jika digunakan dengan lebih dari 2 statement atau lebih yang harus dijalankan
if (expression) { <Block of statements> } else { <Block of statements> }

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
if (expression) { <block of statements> } else if(expression) <block of statements>

Jika digunakan dengan lebih dari 2 statement atau lebih yang harus dijalankan
if (expression) { <block of statements> } else if(expression) { <block of statements> }

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.

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:
scanf(%d, &x); //input 9

if( x == 9 ) printf(Yang diinput adalah angka sembilan); else printf(Angka Lainnya);

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:

23 | P a g e

scanf(%d, &x); //kita input 9 if( x == 9 ) printf(Yang diinput adalah angka sembilan); else //<tambahkan code disini> printf(Angka Lainnya);

Kemudian pada potongan program di atas, tambahan kode yang harus ditambahkan adalah:
scanf(%d, &x); //kita input 9 if( x == 9 ) printf(Its nine); else //dapat ditempel menjadi else if if( x == 6 ) printf(Hey, ini angka enam); else printf(Angka Lainnya);

Jadi secara lengkap, format penulisan if secara lengkap adalah


if (expression) { <block of statements> } else if(expression) { <block of statements> } else { <block of statements> }

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:
switch( expression ) { case constant-expression1 [case constant-expression2 [case constant-expression3 [default }

: : : :

statements1; statements2;] statements3;] statements4;]

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:
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); }

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
}

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.
int number; scanf(%d,&number); switch(number){ case 1 case 2 } : printf(one!\n); break; : printf(two!\n); break;

default : printf(Not one or two);

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:
<expression> ? <statement if true> : <statement if false>

Contoh :
scanf("%d",&x); //input 3 (x == 3 ) ? printf("yes, its three!\n") : printf("hm,..its the another\n");

26 | P a g e 3.4. Latihan 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:

3.1.1. Latihan 1Pemahaman konsep.

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 pilihanexit.

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).

28 | P a g e

Chapter 04 Struktur Kendali Perulangan

29 | P a g e 4.1. Struktur kendali perulangan

Dalam bahasa C, terdapat beberapa macam struktur kendali perulangan, diantaranya for, dowhile, 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
for ([initialization] ; [condition] ; [increment/decrement]) <statement>

Jika terdiri lebih dari 1 statement yang dijalankan dalam perulangan


for (initialization; condition; increment/decrement) { <block of statements> }

Contoh:
for ( int i = 0; i < 5; i++) { printf(Value of i is = %d , i); printf(Loop number %d, (i+1)); }

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.

30 | P a g e 4.1.2. DoWhile

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.
do{ <block statement> }while (expression);

Contoh:
int i = 0; do{ printf(Value of i is %d, i); i++; }while (i < 5);

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.
while (expression) { <block statement> }

Contoh:
int i = 0; while (i < 5){ printf(Value of i is %d, i); i++; }

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 1. Apakah perbedaan mendasar antara for dan dowhile? 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 kata Jalan. Kemudian program akan menampilkan daftar barang yang bisa dipesan oleh customer. panjang alamat minimal 1 karakter, maksimal 50 karakter dan harus mengandung

4.3.1. Latihan 1 Pemahaman konsep.

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 o o Validasikan inputan hanya bisa N atau Y(case sensitive). Jika user memilih N, maka program akan meminta ulang data customer. Jika user menekan Y, maka program selesai.

Rancangan Layar Awal Program

Rancangan Layar Program menampilkan data hasil inputan

Rancangan Layar Akhir Program

33 | P a g e

Chapter 05 Array

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 data_type array_name[size];

Contoh:
char nama[26]; 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
int list[5] = {2,1,3,7,8};

Contoh di atas berarti program akan memasukkan angka 2, 1, 3, 7 dan 8 ke dalam sebuah array dengan nama list.

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:
int variabel[x][y] = { {1, 2, ..., n}, {1, 2, ..., n}, ... dst };

Dalam hal ini jumlah array yang dapat digunakan adalah mulai dari index [0][0] sampai dengan index [x-1][y-1]. Contoh:
int matrix[3][3] = { {11, 12, 13}, {21, 22, 23}, {32, 31, 33}, };

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.

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:
int a = 5; int b = 3; int *p; p = &a; b = *p; //1 //2

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:
int *ap[10];

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].

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.

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

39 | P a g e Rancangan Layar Dengan Giliran Pemain O

Rancangan Layar Jika Posisi Telah Diisi

Rancangan Layar Jika Permainan Seri

40 | P a g e Rancangan Layar Jika Pemain X Menang

Rancangan Layar Jika Pemain O Menang

41 | P a g e

Chapter 06 Function

42 | P a g e

6.1.

Deklarasi Variabel Lokal


int main() { data_type variable_name; }

Contoh:
int main() { char nama[25]; int usia; }

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


#include <stdio.h> //<inisialisasi variabel global disini> int main(){ return 0; }

Contoh:
#include <stdio.h> char name[25]; int age; int coba() { age = age + 5; return age; } int main(){ return 0; }

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 int char float pointer Initialiser 0 '\0' 0 NULL

6.6.

Structure Fungsi
<return type> FunctionName (Argument1, Argument2, Argument3) { Statement1; Statement2; Statement3; }

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:
int fungsiJumlah (int a,int b) { return a+b; }

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

44 | P a g e

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] : ); }

atau jika mau tetap dipaksakan tetapi sangat tidak disarankan.


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; }

6.7.

Latihan 1. Cobalah return pointer. 2. Buatlah fungsi untuk menambahkan, mengurangkan. 3. Dapatkah fungsi mereturn string (array of char)?

6.7.1. Latihan 1Pemahaman konsep.

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 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 o Nama yang diinput minimal 2 karakter dan maksimal 25 karakter. User hanya dapat memasukkan huruf L untuk memilih laki-laki atau huruf P untuk memilih Perempuan untuk memilih jenis kelaminnya. Pemrogramannya. Karena Hadi sangat menyukai game tersebut, maka dia membuat game Coepoe

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 masingmasing harga ikan dengan ketentuan sebagai berikut: Index 0 1 2 3 4 5 6 7 8 9 Nama Ikan Guppy Blue Apple Snail Guppy Yellow Snake Snail Flag Fish Clown Fish Tuna Tiger Shark White Shark Whale Harga Ikan $30 $40 $50 $60 $70 $80 $90 $100 $110 $120

5 jenis pancingan beserta masingmasing harga pancingan dengan ketentuan sebagai berikut: Index 0 1 2 3 4 Nama Pancingan Fishing Pole Advanced Fishing Rod Advanced Fishing Pole Ultimate Fishing Rod Ultimate Fishing Pole Harga Pancingan $ 300 $ 600 $ 900 $ 1200 $ 1500

Jenis umpan beserta harga umpan, yaitu: Index 0 Nama Umpan Green Big Worm Harga Umpan $5

o o o o

Jenis pancingan awal yang dimiliki oleh pemain adalah Fishing Rod. Level pemain = 1 Uang pemain = 1000 Total umpan = 10

46 | P a g e Program mempunyai 5 menu utama: o o o o o 1. Lihat Profile Pemain 2. Pancing Ikan 3. Jual Ikan 4. Belanja / Upgrade Perlengkapan Memancing 5. Keluar akan menampilkan level, uang, nama, jenis kelamin, jenis

Jika user memilih menu Lihat Profile Pemain (tekan tombol 1), maka program 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.

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 o o o A. Upgrade Pancingan B. Beli Umpan C. Kembali Ke Menu Utama 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

48 | P a g e 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)

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)

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)

51 | P a g e Rancangan Layar Submenu Upgrade Pancingan (Lanjutan)

Rancangan Layar Submenu Beli Umpan (Tekan Tombol B)

52 | P a g e

Chapter 07 Build-In Function

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() abs() acos() asin() atan() atexit() atof() atoi() atol() ceil()
atoi () isdigit()

clock() cosh() ctime() div() exit() fabs() floor() fmod() getchar() getenv()

isalnum() isalpha() isdigit() isgraph() ispunct() isspace() isupper() kbhit() log10() log2()

log() memcmp() modf() pow() putchar() putenv() puts() rand() remove() rename()

sinh() sqrt() srand() strcat() strcmp() strerror() time() tolower() toupper()

: ascii to integer / mengubah ascii menjadi integer : 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


#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; } //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

54 | P a g e int angka = rand()%(10-1 +1) + 1 jadi: angka = rand() % 10 + 1 7.3. Latihan 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

7.3.1. Latihan 1 Pemahaman konsep.

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 o Minta user untuk menginput kata yang mau dicari. 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

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)

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)

58 | P a g e

Chapter 08 Rekursif

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 # 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; }

Perlu diperhatikan!!!! Fungsi rekursif harus memiliki setidaknya 1 kondisi yang digunakan untuk keluar dari proses pengulangan pemanggilan fungsi tersebut (biasanya disebut dengan basecase). 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; }

60 | P a g e 8.3. Latihan 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
2

8.3.1. Latihan 1Pemahaman konsep.

adalah

sebuah
2

deret

matematika.

Contoh,

(a+b) 2

akan

menghasilkan (a

+ 2ab + b ). Untuk mempermudah pembelajaran tentang

polinom tersebut, ia membuat sebuah program rekursif. Program tersebut dibuat dengan ketentuan sebagai berikut: Pertama kali program dijalankan, minta user 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 1 4 3 6 2 3 4 1 1 1 1 -> -> -> (a+b)2 = a2 + 2ab + b2 (a+b)3 = a3 + 3a2b + 3ab2 + b3 (a+b)4 = a4 + 4a3b + 6a2b2 + 4ab3 + b4 untuk menginput pangkat polinom sebagai pangkat. Validasikan pangkat yang diinput minimal 1 dan

Hitung dan tampilkan hasil perhitungan dari masing-masing suku bilangan dalam deret tersebut.

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

62 | P a g e

Chapter 09 Operasi File

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. #include <stdio.h> int main() { FILE *in; }

9.3.

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

#include <stdio.h> int main(){ FILE *in; in = fopen(baca.txt, r); //r=baca, w=tulis, a=tambah }

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+

64 | P a g e 9.5. Menutup file int fclose(FILE *a_file); #include <stdio.h> int main() { FILE *in; in = fopen(baca.txt, r); //r=baca, w=tulis, a=tambah fclose(in); }

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 }

65 | P a g e 9.6. Latihan 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 ratarata 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 ratarata, dan banyak bermain. Program terdiri dari 5 menu yaitu: o o o o o Lihat record Tambah record pemain Tambah pemain Hapus pemain Simpan record dan keluar

9.6.1. Latihan 1 Pemahaman konsep.

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:

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

67 | P a g e Rancangan Layar Menu Lihat Record

Rancangan Layar Menu Tambah Record Pemain

Rancangan Layar Menu Tambah Pemain

68 | P a g e Rancangan Layar Menu Hapus Pemain

69 | P a g e

Chapter 10 Sorting

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)

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.

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

Lanjutkan dengan membandingkan nilai 2 index selanjutnya

Karena nilai index di depan index [1] lebih besar, maka kedua nilai ditukar dengan langkah yang sama seperti sebelumnya

Cek kembali urutan angka, apakah sudah berurutan secara ascending, bila belum, langkah kembali diulangi dari index terakhir

73 | P a g e 10.2. Bubble sort Code 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]); }

Swap code (fungsi tukar)


Fungsi inilah yang dipakai untuk pertukaran dua data.
void swap(int *x,int *y) { int temp; temp = *x; *x = *y; *y = temp; }

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]); }

74 | P a g e

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; }

10.3. Latihan 10.3.1. Latihan 1Pemahaman 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 o o o o o 1. List film 2. Sort ascending berdasarkan jam tayang 3. Sort descending berdasarkan nama film 4. Tambah daftar film 5. Pesan tiket 6. Keluar

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^^ 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. Jika user memilih menu Pesan Tiket, maka: o

76 | P a g e Rancangan Layar Awal

Rancangan Layar Menu List Film

Rancangan Layar Menu Sort Ascending Berdasarkan Jam Tayang

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

78 | P a g e

Chapter 11 String

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. #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; }

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; }

80 | P a g e

11.2.3. Fungsi strrev


Digunakan untuk membalikkan string. Contoh: #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; }

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: strcmp (string1, string2);

Nilai yang dikembalikan ada 3: ( <0 ( >0 ), nilai ascii string1 lebih kecil dari nilai ascii string2 ), nilai ascii string1 lebih besar dari nilai ascii string2 ( == 0 ), kedua string sama

11.2.5. Fungsi strlen


Menghitung panjang suatu string. Contoh: strlen (string);

Nilai yang dikembalikan adalah jumlah karakter string tersebut.

81 | P a g e

11.2.6. Fungsi tolower


Digunakan untuk menjadikan huruf besar menjadi huruf kecil tambahkan include <ctype.h> Contoh: #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; }

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: strcpy (string2, string1); Mengcopy string1 ke string2

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 o o o o o 1. Input the String 2. Length of the String 3. Reverse the String 4. Uppercase the String 5. Lowercase the String 6. Exit 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:

Jika user memilih menu Input the String (menu 1), maka: o

83 | P a g e 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)

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)

Вам также может понравиться