Overview • • • •
Pengenalan Pemrograman (Lanjutan) Dasar Pemrograman (Data)
Deskripsi Tujuan Referensi Materi – – – – –
Pertemuan 02
Algoritma & Pemrograman I IF-UTAMA
Ver/Rev : 1/0
II - 1
Algoritma & Pemrograman I IF-UTAMA
Deskripsi 1. 2. 3. 4.
Ver/Rev : 1/0
Ver/Rev : 1/0
II - 2
Tujuan
• Pada pertemuan ini akan dibahas mengenai pemrograman terstruktur, bahasa C/C++ sebagai tool pemrograman terstruktur, serta representasi data
Algoritma & Pemrograman I IF-UTAMA
Pemrograman Terstruktur Bahasa C++ Identifier Data Ekspresi
II - 3
Algoritma & Pemrograman I IF-UTAMA
Setelah mengikuti dan mempelajari materi ini mahasiswa diharapkan dapat : Mengetahui apa pemrograman terstruktur dan dapat membedakannya dengan pemrograman yang lain Mengetahui tahapan pembuatan program terstruktur Mengenal Bahasa C/C++ sebagai tool pemrograman terstruktur Mengetahui dan menggunakan Representasi data
Ver/Rev : 1/0
II - 4
Referensi 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Algoritma & Pemrograman I IF-UTAMA
Sugiyono, Ir., “Pemrograman Terstruktur untuk Pelajar & Mahasiswa”, Panji Gumilang Press, Kuningan, 2005 Wahana Komputer, “Seri Buku Pintar – Menjadi Seorang Programmer Komputer” Andi, Yogyakarta, 2006 http://lecturer.ukdw.ac.id/anton/algoritmaTI.php, Tanggal Akses : 23 Agustus 2007 http://lecturer.ukdw.ac.id/anton/algostrukdat1.php, Tanggal Akses : 23 Agustus 2007 Herianto, “Presentasi Pemrograman Terstruktur.ppt”,Pertemuan 1 Mata Kuliah Pemrograman Terstruktur, Teknik Informatika, ITS http://www.lcusd.net/lchs/dclausen/,Tanggal Akses : 13 Agustus 2007 www.nvcc.edu/home/joney/CH01%20INTRODUCTION%20TO%20STRUCTURED% 20DESIGN.PPT, Tanggal Akses : 13 Agustus 2007 Yatini B., Indra;Nasution, Erliansyah, “Algoritma & Struktur Data dengan C++, Graha Ilmu,Yogyakarta, 2005 (bab 1) Deitel, H.M. and Deitel, P.J., “C++ How to Program, 2nd Edition”, Prentice Hall, 1994 (Bab 19) Deitel, H.M. and Deitel, P.J., “C How to Program, 4nd Edition”, Prentice Hall, 2004 (bab 10) Kadir, Abdul, “Pemrograman C++ Membahas Pemrograman Berorientasi Objek Menggunakan Turbo C++ dab Borland C++”, Andi, Yogyakarta, 2003 (bab 11) Shalahuddi, M.;A. S., Rosa, “ C++ dan Java dari Nol Menjadi Andal”, Informatika, 2007 [Bab 2] www.ilmukomputer.com Ver/Rev : 1/0
II - 5
Pemrograman Terstruktur
Algoritma & Pemrograman I IF-UTAMA
Ver/Rev : 1/0
II - 6
1
Definisi •
Ide Dasar
Pemrograman Terstruktur adalah program dimana jika suatu proses telah mencapai titik tertentu, maka proses selanjutnya tidak boleh kembali ke proses sebelumnya, kecuali untuk proses looping. A way of programming that uses only three basic patterns of logic (Simple sequence control structure, IF-THEN-ELSE control structure, and DO-WHILE control structure), referred to as control structures Deitel : a disciplined approach to writing a programs that are clearer than unstructured programs, easier to test and debug and easier to modify
•
•
Algoritma & Pemrograman I IF-UTAMA
Ver/Rev : 1/0
II - 7
• •
– Sequence program yang tidak memiliki lompatan. Baris program dijalankan secara normal (lurus) satu per-satu dari atas ke bawah – Selection program yang memiliki pilihan apakah harus menjalankan baris program sesuai dengan urutannya atau melompati sejumlah baris program tersebut – Looping program yang juga mengandung pilihan apakah akan mengulangi program yang sudah pernah dijalankan sebelumnya atau tidak
Algoritma & Pemrograman I IF-UTAMA
Tujuan •
• • • •
• • • •
Easier to read Easier to debug Easier to understand Easier to maintain
To allow programmers to work as a team To reduce testing time To increase programming productivity To increase clarity by reducing the programs complexity To decrease maintenance and effort
• Algoritma & Pemrograman I IF-UTAMA
Ver/Rev : 1/0
Ver/Rev : 1/0
II - 8
Kriteria
To make computer programs – – – –
Jumlah baris program semakin lama semakin besar Menghindari penggunaan GOTO untuk melompat ke bagian program tertentu. Untuk mengatasinya
II - 9
• • • •
Algoritma & Pemrograman I IF-UTAMA
Struktur programnya; jelas dan tegas Fasilitas penulisan kode program; jelas dan tegas Statemen untuk kebutuhan Selection dan Looping; lengkap Fasilitas menyatakan berbagai type data (struktur data); lengkap dan tegas Fasilitas pemberian komentar; lengkap Fasilitas instruksi yang tersedia (operasi arithmatik/matematik, string, …); lengkap Fasilitas modular (baik internal maupun eksternal); lengkap Fasilitas debugging; mudah dan jelas
Ver/Rev : 1/0
II - 10
The Process of Structured Programming
(Program Development Life Cycle – PDLC) 1. 2. 3. 4. 5. 6.
Analysis, Input Specification Output Algorithm Design Processing User Interface Design Code the program Test the program – Desk check – Run the program, using sample data – Debug the program (all paths) • Categorizing errors • Identifying and Correcting Errors 7. Interpretation 8. Documentation 9. Implement the New System 10. Evaluate the New System
Algoritma & Pemrograman I IF-UTAMA
Ver/Rev : 1/0
Bahasa C++ Synatx Error Compiler Error Run Time Error Logic Error
II - 11
Algoritma & Pemrograman I IF-UTAMA
Ver/Rev : 1/0
II - 12
2
Sejarah
Prinsip Kerja C++
++ 1980 dibuat oleh Bjarrne Stroustrup 1998 distandarisasi oleh International Standard Organization (ISO) dan American National Standards Institute (ANSI)
Algoritma & Pemrograman I IF-UTAMA
Ver/Rev : 1/0
II - 13
Algoritma & Pemrograman I IF-UTAMA
Struktur Bahasa C++ #include
Preprocessor Directive
Fungsi lain()
Prototipe fungsi
Deklarasi variabel global;
Pendeklarasian variable global Fungsi/program utama
<Tipe Data/void> Fungsi Lain() { Deklarasi Variabel Lokal; Statemen-statemen; }
Fungsi lain
Pendeklarasian variable lokal Isi fungsi/program Utama
Pendeklarasian variable lokal Isi fungsi lain
Ver/Rev : 1/0
II - 14
Kelebihan
<Tipe Data/void> main() { Deklarasi Variabel Lokal; Statemen-statemen; }
Algoritma & Pemrograman I IF-UTAMA
Ver/Rev : 1/0
II - 15
• • • • • • •
Merupakan Compiler Banyak fasilitas untuk memanipulasi operator dan fungsi Tersedia hampir disemua jenis komputer Bersifat portabel Banyak fasilitas untuk memanipulasi operator dan fungsi Struktur penulisan bahasa yang terstruktur. Bahasa tingkat tinggi yang mempunyai kemampuan seperti bahasa tingkat rendah (seperti dapat memanipulasi data dalam bentuk bit). • Dibandingkan dengan bahasa tingkat tinggi lainya bahasa C++ mempunyai kecepatan eksekusi yang cepat. • Mendukung bahasa pemrograman berorientasi obyek • Kode yang ditulis menggunakan C++ bersifat reusable
Algoritma & Pemrograman I IF-UTAMA
Ver/Rev : 1/0
II - 16
Kekurangan • Karena bahasa ini sangat fleksibel maka bagi pemula bahasa C++ akan sangat membingungkan. • Bahasa C++ masih tergantung pada operating-sistemnya. Hal ini yang kemudian memicu terciptanya bahasa JAVA, bahasa multiplatform.
Algoritma & Pemrograman I IF-UTAMA
Ver/Rev : 1/0
II - 17
Nama/Identifier
Algoritma & Pemrograman I IF-UTAMA
Ver/Rev : 1/0
II - 18
3
Definisi
Definisi (cont)
Sesuatu yang dipakai sebagai identifikasi : – Type, sesuai dengan definisi type. – Tempat penyimpanan, untuk mengacu harga yang disimpan (isi)nya. – Fungsi, untuk meminta hasilnya. – Prosedur, untuk memanggil prosedur yang bersangkutan – Modul program, algoritma, dsb.
• Suatu pengenal atau pengidentifikasi data yang kita deklarasikan agar kompiler dapat mengenalinya • Terdiri dari : – Konstanta nilai yang disimpan dalam identifier tetap/konstan – Variabel nilai yang disimpan dalam identifier dapat berubah-ubah
Semua nama harus didefinisikan dalam KAMUS
Algoritma & Pemrograman I IF-UTAMA
Ver/Rev : 1/0
II - 19
Algoritma & Pemrograman I IF-UTAMA
Konstanta
Ver/Rev : 1/0
II - 20
Konstanta Karakter Ecape
• Cara Pendeklarasian (kecuali karakter Escape) – const = ; – Tipe_data nama_konstanta = nilai konstanta; – # define ; • Bentuk : – Konstanta Numerik Integer (ex : 43, 123, -123, dll) – Konstanta Numerik Pecahan (ex : -123.0,0.75, 12.34e29, 12.34e-29, dll) – Konstanta Karakter (ex : ‘a’, ‘b’, dll) – Konstanta String (ex : “Danang”, “Keren”) – Konstanta Karakter Escape(next slide)
Algoritma & Pemrograman I IF-UTAMA
Ver/Rev : 1/0
II - 21
Algoritma & Pemrograman I IF-UTAMA
Variabel • •
•
• • • • •
Ver/Rev : 1/0
II - 22
Aturan Penamaan Identifier
Cara Pendeklarasian <Tipe_data> ; Lingkup Variabel – Variabel Lokal/Otomatis (dikenali/ hanya dapat digunakan di satu blok fungsi saja) – Variabel Global/Eksternal (dikenali/dapat digunakan di seluruh blok program) – Variabel Statis (Variabel yang menempati ruang memori komputer secara permanen), cara pendeklarasian : static tipe_data nama_variabel; – Variabel Register(Variabel biasa yang berada di memori komputer dan disimpan di register CPU), cara pendeklarasian : register tipe_data nama_variabel;
Algoritma & Pemrograman I IF-UTAMA
Ver/Rev : 1/0
II - 23
Algoritma & Pemrograman I IF-UTAMA
Nama harus Interpretatif (mencerminkan nilai instrinsik atau fungsi yang dikandungnya). Cari nama yang sederhana untuk variabel yang digunakan dalam waktu singkat serta hindari salah ejaan dan imbuhan yang tidak berarti. Hindari memilih nama-nama lucu yang kurang berarti atau tidak berhubungan dengan permasalahan. Hindari memilih nama yang terlalu mirip Hindari menggunakan huruf ”I” kecil, ”L” kecil dan ”O” kecil, agar tidak rancu dengan penulisan angka 1 (satu) dan 0 (nol) C dan C++ bersifat Case sensitive (huruf besar dan kecil dibedakan) Harus dimulai dengan huruf alfabet dan tidak boleh berupa atau diawali angka, simbol dan kata kunci Tanda underscore “_” digunakan untuk memisahkan nama yang terdiri dari 2 kata atau lebih Panjang nama variabel & konstanta tidak dibatasi, namun hindari penamaan yang terlalu panjang untuk mempercepat proses pembuatan progam Ver/Rev : 1/0
II - 24
4
Jenis • Tipe Data Dasar – – – –
Tipe Data
Bilangan Logik/Boolean Bilangan Bulat Bilangan Real Karakter
• Tipe Data Bentukan – Type bentukan adalah type yang dibentuk (diberi nama) dari beberapa objek, jadi merupakan sekumpulan elemen bertype dasar atau bertype yang sudah dikenal.
Type : String – Konstanta : ‘SAYA’ Pepaya’
Algoritma & Pemrograman I IF-UTAMA
Ver/Rev : 1/0
II - 25
Algoritma & Pemrograman I IF-UTAMA
Angka
Huruf
Algoritma & Pemrograman I IF-UTAMA
int, long int, short int, unsigned int, signed int, unsigned char
Tipe char
float, double, long int
float double
long double
void (tidak digunakan dalam algoritma) II - 27
Rentang
4 byte
-2147483648 s.d. 2147483648
%ld
-3.4x10-4932
%Lf
Bilangan real
%hd
Bilangan bulat
Bilangan bulat
short int
1 byte
-128 s.d. 127
signed char
1 byte
-128 s.d. 127
Bilangan bulat
-32768 s.d. 32767
Bilangan bulat
signed int/signed 2 byte short int
Algoritma & Pemrograman I IF-UTAMA
Ver/Rev : 1/0
%c %s
2 byte
-32768 s.d. 32767
4 byte
-2147483648 s.d. 2147483648
4 byte
-3.4x10-38 s.d.
8 byte
void
0 1 byte
Algoritma & Pemrograman I IF-UTAMA
Format Keterangan
s.d. 3.4x104932
Format
-128 s.d. 127
%d atau %e
Keterangan Karakter ASCI string Bilangan bulat Platform Win32
%f
Bilangan real
-1.7x10-308 s.d. 1.7x10308
%lf
Bilangan real
-
-
Tek bertipe
True/false
-
Tipe logika (C++ di atas versi 4.5)
Ver/Rev : 1/0
II - 28
Tipe Modifikasi (2)
Ukuran
10 byte
Ukuran
bool
Tipe Data Modifikasi (1) Tipe
Rentang
1 byte
3.4x1038
bool
Ver/Rev : 1/0
long int
II - 26
Tipe Data Dasar
Bilangan double Pecahan (Real) Karakter char (character) char ….[jumlah huruf] Kata (String)
Logika (boolean) Tanpa Nilai
‘Buah
Ver/Rev : 1/0
Tipe Data Dasar Bilangan Bulat (integer)
‘Aku sedang belajar’
Tipe
Ukuran
signed long 4 byte /signed long int unsigned char
II - 29
1 byte
Rentang
Keterangan
-2147483648 s.d. 2147483687
Bilangan bulat
0 s.d. 255
Bilangan bulat
unsigned int 2 byte /unsigned short int
0 s.d. 65535
unsigned long 4 byte /unsigned long int
0 s.d. 429467295
Algoritma & Pemrograman I IF-UTAMA
Form at
Ver/Rev : 1/0
%u
Bilangan bulat Bilangan bulat
II - 30
5
Tipe Data Bentukan
Tipe Data Bentukan • Union, cara pendeklarasiannya adalah : union{ ; ; ……… ; }; ex : union Tanggal {
• Kata/String , cara pendeklarasiannya adalah :
char [jumlah huruf] ex : char Kata[50]; • Struktur/Record, cara pendeklarasiannya adalah : struct{ ; ; ……… ; }; ex : struct {
int i; int j; };
int Hari; int Bulan; int Tahun; } Tanggal; Algoritma & Pemrograman I IF-UTAMA
Ver/Rev : 1/0
II - 31
Algoritma & Pemrograman I IF-UTAMA
Tipe Data Bentukan
• enum (Enumerasi), cara pendeklarasiannya adalah : enum{ data 1, data2, ………, data n } ; ex : enum{Senin,Selasa,Rabu,Kamis,Jum’at,Sabtu,Minggu} Hari; • Typedef, cara pendeklarasiannya adalah : typedef ; ex : typedef unsigned char Byte; typedef char[255] String; • Array (dibahas lebih lanjut pada pertemuan 6, 7 & 9) • File (dibahas lebih lanjut pada pertemuan 14 & 15) • List/Pointer (dibahas lebih lanjut pada Pemrograman II)
struct{ int/unsigned : <panjang bit-field 1>; int/unsigned : <panjang bit-field 2>; ……… int/unsigned : <panjang bit-field n>; };
ex : struct { unsigned bit_0:1; unsigned bit_1:1; … unsigned bit_7:1; } Info_bit; Ver/Rev : 1/0
II - 32
Tipe Data Bentukan
• Struktur Bit-field, cara pendeklarasiannya adalah :
Algoritma & Pemrograman I IF-UTAMA
Ver/Rev : 1/0
II - 33
Algoritma & Pemrograman I IF-UTAMA
Ver/Rev : 1/0
II - 34
Sifat Operator • Sifat Operator – Unary (Melibatkan sebuah operand, ex : -1) – Binary (Melibatkan dua buah operand, ex: 1+2) – Ternary (Melibatkan tiga buah atau lebih operand, ex (a>b)?a:b)
Operator
• Jenis Operator dalam Algoritma Next Slide
Algoritma & Pemrograman I IF-UTAMA
Ver/Rev : 1/0
II - 35
Algoritma & Pemrograman I IF-UTAMA
Ver/Rev : 1/0
II - 36
6
Operator Boolean Operator And Or Xor Not EQ NEQ
Algoritma & Pemrograman I IF-UTAMA
Operator Aritmatika Operator * + / Div Mod
Arti Hasil Dan Boolean Atau Boolean Eksklusive Or Boolean Negasi Boolean Ekivalensi Boolean Negasi dari Boolean Ekivalensi
Ver/Rev : 1/0
Abs ^ atau ** II - 37
Algoritma & Pemrograman I IF-UTAMA
ο &
Algoritma & Pemrograman I IF-UTAMA
Arti Tambah satu karakter di akhir string Tambah satu karakter di awal string Konkatenasi/penggabungan String
Ver/Rev : 1/0
Hasil Integer/Real Integer/Real Integer/Real Integer/Real Integer Integer Integer > 0 Integer/Real
Ver/Rev : 1/0
II - 38
Jenis Operator dalam C/C++
Konstruksi/Tipe Bentukan Operator •
Arti Kali Tambah Kurang Bagi Bagi Sisa pembagian bulat Nilai absolut Pangkat
• • • • • • •
Hasil String String String
II - 39
Operator Assigment (=) Operator Aritmatika (*, /, %, +, -) Operator Biner/Bitwise (<<, >>, &, |, ^, ~) Operator Logika (&&, ||,!) Operator Perbandingan/Relasi (==, !=, >, >=, <, <=) Operator Unary (-,+, ++, --, ~, !, &, *, sizeof) Operator Assigment Kombinasi/Majemuk (+=, -=, *=, /=, %=, <<=, >>=, &=, |=, ^=)
Algoritma & Pemrograman I IF-UTAMA
Ver/Rev : 1/0
II - 40
Definisi • Suatu rumus “perhitungan”, yang terdiri dari operan dan operator (harus didefinisikan untuk mengoperasikan operator ber-TYPE tertentu). Hasil “perhitungan” adalah harga dengan domain yang memenuhi type operator yang bersangkutan.
Ekspresi
Ekspresi Biner • Ekspresi biner dapat dituliskan dalam 3 macam notasi, yaitu: – Notasi Infix (biasa dipakai sehari-hari) : operan1 operator operan2 – Notasi Prefix : operator operan1 operan2 – Notasi Suffix/Polish : operan1 operan2 operator
Algoritma & Pemrograman I IF-UTAMA
Ver/Rev : 1/0
II - 41
Algoritma & Pemrograman I IF-UTAMA
Ver/Rev : 1/0
II - 42
7
Ekspresi Logik Ekspresi True AND True True AND False False AND True False AND False NOT False True EQ True True EQ False False EQ False False EQ True
Algoritma & Pemrograman I IF-UTAMA
Hasil True False False False True True False True False
Ekspresi True OR True True OR False False OR True False OR False NOT True True XOR False True XOR True False XOR True False XOR False
Ekspresi Aritmatika Hasil True True True False False True False True False
Ver/Rev : 1/0
Ekspresi 1*9 5+3*2 1/2 12 > 12 12 >= 12 15 < 14
Hasil 9 11 0.5 False True False
Ekspresi 10 MOD 2 10 DIV 3 1 + 7 DIV 3 1. / 3. 10. / 5. 2^2
Hasil 0 3 2 0.333 2. 4
II - 43
Algoritma & Pemrograman I IF-UTAMA
Ver/Rev : 1/0
II - 44
II - 45
Algoritma & Pemrograman I IF-UTAMA
Ver/Rev : 1/0
II - 46
Perbandingan Algoritma & Bahasa C/C++
Algoritma & Pemrograman I IF-UTAMA
Ver/Rev : 1/0
Studi Kasus Diskusi soal-soal di tutorial
Algoritma & Pemrograman I IF-UTAMA
Ver/Rev : 1/0
II - 47
8