Algoritma & Pemrograman I Ver/Rev : 1/0 IF-UTAMA
II - 1
Pengenalan Pemrograman (Lanjutan)
Dasar Pemrograman (Data)
Pertemuan 02
Algoritma & Pemrograman I Ver/Rev : 1/0
IF-UTAMA II - 2
Overview
• Deskripsi
• Tujuan
• Referensi
• Materi
– Pemrograman Terstruktur
– Bahasa C++
– Identifier
– Data
– Ekspresi
Algoritma & Pemrograman I Ver/Rev : 1/0
IF-UTAMA
II - 3
Deskripsi
• Pada
pertemuan
ini
akan
dibahas
mengenai
pemrograman
terstruktur,
bahasa
C/C++
sebagai
tool
pemrograman
terstruktur,
serta
representasi data
Algoritma & Pemrograman I Ver/Rev : 1/0
IF-UTAMA
II - 4
Tujuan
Setelah mengikuti dan mempelajari materi ini
mahasiswa diharapkan dapat :
1. Mengetahui apa pemrograman terstruktur dan
dapat membedakannya dengan pemrograman
yang lain
2. Mengetahui
tahapan
pembuatan
program
terstruktur
3. Mengenal
Bahasa
C/C++ sebagai
tool
pemrograman terstruktur
4. Mengetahui dan menggunakan Representasi
data
Referensi
1. Sugiyono, Ir., “Pemrograman Terstruktur untuk Pelajar & Mahasiswa”, Panji Gumilang Press, Kuningan, 2005
2. Wahana Komputer, “Seri Buku Pintar – Menjadi Seorang Programmer Komputer” Andi, Yogyakarta, 2006
3. http://lecturer.ukdw.ac.id/anton/algoritmaTI.php, Tanggal Akses : 23 Agustus 2007
4. http://lecturer.ukdw.ac.id/anton/algostrukdat1.php, Tanggal Akses : 23 Agustus 2007
5. Herianto, “Presentasi Pemrograman
Terstruktur.ppt”,-6. Pertemuan 1 Mata Kuliah Pemrograman Terstruktur, Teknik Informatika, ITS 7. http://www.lcusd.net/lchs/dclausen/,Tanggal Akses : 13 Agustus 2007 8. www.nvcc.edu/home/joney/CH01%20INTRODUCTION%20TO%20STRUCTURED%
20DESIGN.PPT, Tanggal Akses : 13 Agustus 2007
9. Yatini B., Indra;Nasution, Erliansyah, “Algoritma & Struktur Data dengan C++, Graha Ilmu,Yogyakarta, 2005 (bab 1)
10. Deitel, H.M. and Deitel, P.J., “C++ How to Program, 2nd Edition”, Prentice Hall, 1994 (Bab 19)
11. Deitel, H.M. and Deitel, P.J., “C How to Program, 4nd Edition”, Prentice Hall, 2004 (bab 10)
12. Kadir, Abdul, “Pemrograman C++ Membahas Pemrograman Berorientasi Objek Menggunakan Turbo C++ dab Borland C++”, Andi, Yogyakarta, 2003 (bab 11) 13. Shalahuddi, M.;A. S., Rosa, “ C++ dan Java dari Nol Menjadi Andal”, Informatika,
Algoritma & Pemrograman I Ver/Rev : 1/0 IF-UTAMA
II - 7
Definisi
• Pemrograman Terstruktur adalah program dimana jika suatu proses telah mencapai titik tertentu, maka proses selanjutnyatidak 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-WHILEcontrol 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 Ver/Rev : 1/0
IF-UTAMA
II - 8
Ide Dasar
• Jumlah baris program semakin lama semakin besar • Menghindari penggunaan GOTO untuk melompat ke
bagian program tertentu. Untuk mengatasinya – 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 Ver/Rev : 1/0
IF-UTAMA
II - 9
Tujuan
•
To make computer programs
– 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 Ver/Rev : 1/0
IF-UTAMA
II - 10
Kriteria
• 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
The Process of Structured Programming
(
Program Development Life Cycle – PDLC
)
1. Analysis, 2. Specification 3. Algorithm Design
4. User Interface Design
5. Code the program
6. 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
Input Output Processing
Synatx Error Compiler Error Run Time Error Logic Error
Algoritma & Pemrograman I Ver/Rev : 1/0 IF-UTAMA
II - 13
Sejarah
1980 dibuat oleh Bjarrne Stroustrup 1998 distandarisasi oleh International Standard Organization (ISO) dan American National Standards Institute (ANSI)
++
Algoritma & Pemrograman I Ver/Rev : 1/0
IF-UTAMA
II - 14
Prinsip Kerja C++
Algoritma & Pemrograman I Ver/Rev : 1/0
IF-UTAMA
II - 15
Struktur Bahasa C++
Fungsi lain
Pendeklarasian variable lokal Isi fungsi lain
<Tipe Data/void> Fungsi Lain() {
Deklarasi Variabel Lokal; Statemen-statemen; }
Fungsi/program utama Pendeklarasian variable lokal Isi fungsi/program Utama <Tipe Data/void> main()
{
Deklarasi Variabel Lokal; Statemen-statemen; }
Pendeklarasian variable global Deklarasi variabel global;
Prototipe fungsi Fungsi lain()
Preprocessor Directive #include<header file>
Algoritma & Pemrograman I Ver/Rev : 1/0
IF-UTAMA
II - 16
Kelebihan
• 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
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,
Algoritma & Pemrograman I Ver/Rev : 1/0 IF-UTAMA
II - 19
Definisi
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.
Semua nama harus didefinisikan dalam KAMUS
Algoritma & Pemrograman I Ver/Rev : 1/0
IF-UTAMA
II - 20
Definisi (cont)
• 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
Algoritma & Pemrograman I Ver/Rev : 1/0
IF-UTAMA
II - 21
Konstanta
• Cara Pendeklarasian (kecuali karakter Escape)
– const <tipe_data> <nama_konstanta> = <nilai konstanta>;
– Tipe_data nama_konstanta = nilai konstanta; – # define <nama_konstanta> <nilai konstanta>; • 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 Ver/Rev : 1/0
IF-UTAMA
II - 22
Konstanta Karakter Ecape
Variabel
• Cara Pendeklarasian
<Tipe_data> <nama_variabel>; • 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_datanama_variabel;
– Variabel Register(Variabel biasa yang berada di memori komputer dan disimpan di register CPU), cara pendeklarasian :
register tipe_datanama_variabel;
Aturan Penamaan Identifier
• Nama harus Interpretatif (mencerminkan nilai instrinsik ataufungsi 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
Algoritma & Pemrograman I Ver/Rev : 1/0 IF-UTAMA
II - 25
Tipe Data
Algoritma & Pemrograman I Ver/Rev : 1/0
IF-UTAMA
II - 26
Jenis
• Tipe Data Dasar
– 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’ ‘Aku sedang belajar’ ‘Buah Pepaya’
Algoritma & Pemrograman I Ver/Rev : 1/0
IF-UTAMA
II - 27
Tipe Data Dasar
Angka
Bilangan Bulat
(integer)
Bilangan
Pecahan (Real)
int, long int, short int, unsigned int, signed int, unsigned char float, double, long double
Huruf
Karakter
(character)
Kata (String)
charchar ….[jumlah huruf]
Logika
(boolean)
bool
Tanpa Nilai
void
(tidak digunakan dalam algoritma)Algoritma & Pemrograman I Ver/Rev : 1/0
IF-UTAMA
II - 28
Tipe Data Dasar
Platform Win32 -2147483648 s.d. 2147483648 4 byte Tipe logika (C++ di atas versi 4.5) -True/false 1 byte bool Tek bertipe -0 void Bilangan real %lf -1.7x10-308 s.d. 1.7x10308 8 byte double Bilangan real %f -3.4x10-38 s.d. 3.4x1038 4 byte float Bilangan bulat %d atau %e -32768 s.d. 32767 2 byte int Karakter ASCI string %c %s -128 s.d. 127 1 byte char Keterangan Format Rentang Ukuran Tipe
Tipe Data Modifikasi (1)
Bilangan real %Lf -3.4x10-4932 s.d. 3.4x104932 10 byte long double Bilangan bulat -32768 s.d. 32767 2 byte signed int/signed short int Bilangan bulat -128 s.d. 127 1 byte signed char Bilangan bulat %hd -128 s.d. 127 1 byte short int Bilangan bulat %ld -2147483648 s.d. 2147483648 4 byte long int Keterangan Format Rentang Ukuran Tipe
Tipe Modifikasi (2)
Bilangan bulat -2147483648 s.d. 2147483687 4 byte signed long /signed long intBilangan bulat 0 s.d. 429467295 4 byte unsigned long /unsigned long int
Bilangan bulat %u 0 s.d. 65535 2 byte unsigned int /unsigned short int
Bilangan bulat 0 s.d. 255 1 byte unsigned char Keterangan Form at Rentang Ukuran Tipe
Algoritma & Pemrograman I Ver/Rev : 1/0 IF-UTAMA
II - 31
Tipe Data Bentukan
• Kata/String , cara pendeklarasiannya adalah : char <nama string> [jumlah huruf] ex : char Kata[50];
• Struktur/Record, cara pendeklarasiannya adalah : struct{
<tipe data 1> <nama data 1>; <tipe data 2> <nama data 2>; ………
<tipe data n> <nama data n>; }<nama struktur>; ex : struct { int Hari; int Bulan; int Tahun; } Tanggal;
Algoritma & Pemrograman I Ver/Rev : 1/0
IF-UTAMA
II - 32
Tipe Data Bentukan
• Union, cara pendeklarasiannya adalah :
union{
<tipe data 1> <nama data 1>;
<tipe data 2> <nama data 2>;
………
<tipe data n> <nama data n>;
}<nama union>;
ex : union Tanggal
{
int i;
int j;
};
Algoritma & Pemrograman I Ver/Rev : 1/0
IF-UTAMA
II - 33
Tipe Data Bentukan
• Struktur Bit-field, cara pendeklarasiannya adalah :
struct{
int/unsigned <nama data 1> : <panjang bit-field 1>; int/unsigned <nama data 2> : <panjang bit-field 2>; ………
int/unsigned <nama data n> : <panjang bit-field n>; }<nama bit-field>; ex : struct { unsigned bit_0:1; unsigned bit_1:1; … unsigned bit_7:1; } Info_bit;
Algoritma & Pemrograman I Ver/Rev : 1/0
IF-UTAMA
II - 34
Tipe Data Bentukan
• enum (Enumerasi), cara pendeklarasiannya adalah : enum{ data 1, data2, ………, data n } <nama enum>; ex :
enum{Senin,Selasa,Rabu,Kamis,Jum’at,Sabtu,Minggu} Hari; • Typedef, cara pendeklarasiannya adalah :
typedef <tipe data> <nama alias>; 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)
Operator
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)
Algoritma & Pemrograman I Ver/Rev : 1/0 IF-UTAMA
II - 37
Operator Boolean
Operator
Arti
Hasil
And
Dan
Boolean
Or
Atau
Boolean
Xor
Eksklusive Or Boolean
Not
Negasi
Boolean
EQ
Ekivalensi
Boolean
NEQ
Negasi dari
Boolean
Ekivalensi
Algoritma & Pemrograman I Ver/Rev : 1/0
IF-UTAMA
II - 38
Operator Aritmatika
Operator
Arti
Hasil
*
Kali
Integer/Real
+
Tambah
Integer/Real
-
Kurang
Integer/Real
/
Bagi
Integer/Real
Div
Bagi
Integer
Mod
Sisa pembagian
Integer
bulat
Abs
Nilai absolut
Integer > 0
^ atau **
Pangkat
Integer/Real
Algoritma & Pemrograman I Ver/Rev : 1/0
IF-UTAMA
II - 39
Konstruksi/Tipe Bentukan
Operator Arti Hasil
• Tambah satu karakter di String
akhir string
ο Tambah satu karakter di String
awal string
& Konkatenasi/penggabungan String String
Algoritma & Pemrograman I Ver/Rev : 1/0
IF-UTAMA
II - 40
Jenis Operator dalam
C/C++
• Operator Assigment (=) • Operator Aritmatika (*, /, %, +, -) • Operator Biner/Bitwise (<<, >>, &, |, ^, ~) • Operator Logika (&&, ||,!)
• Operator Perbandingan/Relasi (==, !=, >, >=, <, <=) • Operator Unary (-,+, ++, --, ~, !, &, *, sizeof)
• Operator Assigment Kombinasi/Majemuk (+=, -=, *=, /=, %=, <<=, >>=, &=, |=, ^=)
Ekspresi
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 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 Ver/Rev : 1/0 IF-UTAMA
II - 43
Ekspresi Logik
Ekspresi Hasil Ekspresi Hasil True AND True True True OR True True True AND False False True OR False True False AND True False False OR True True False AND False False False OR False False
NOT False True NOT True False
True EQ True True True XOR False True True EQ False False True XOR True False False EQ False True False XOR True True False EQ True False False XOR False False
Algoritma & Pemrograman I Ver/Rev : 1/0
IF-UTAMA
II - 44
Ekspresi Aritmatika
Ekspresi
Hasil
Ekspresi
Hasil
1 * 9
9
10 MOD 2
0
5 + 3 * 2
11
10 DIV 3
3
1/2
0.5
1 + 7 DIV 3 2
12 > 12
False
1. / 3.
0.333
12 >= 12
True
10. / 5.
2.
15 < 14
False
2 ^ 2
4
Algoritma & Pemrograman I Ver/Rev : 1/0
IF-UTAMA
II - 45
Perbandingan Algoritma &
Bahasa C/C++
Algoritma & Pemrograman I Ver/Rev : 1/0
IF-UTAMA
II - 46